diff --git a/playground.js b/playground.js
index f94a763c..205423e9 100644
--- a/playground.js
+++ b/playground.js
@@ -29003,6 +29003,7 @@ var
     SCOPE_SUPER = 64,
     SCOPE_DIRECT_SUPER = 128,
     SCOPE_CLASS_STATIC_BLOCK = 256,
+    SCOPE_CLASS_FIELD_INIT = 512,
     SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK;
 
 function functionFlags(async, generator) {
@@ -29113,15 +29114,16 @@ Parser.prototype.parse = function parse () {
 
 prototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 };
 
-prototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 && !this.currentVarScope().inClassFieldInit };
+prototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 };
 
-prototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 && !this.currentVarScope().inClassFieldInit };
+prototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 };
 
 prototypeAccessors.canAwait.get = function () {
   for (var i = this.scopeStack.length - 1; i >= 0; i--) {
-    var scope = this.scopeStack[i];
-    if (scope.inClassFieldInit || scope.flags & SCOPE_CLASS_STATIC_BLOCK) { return false }
-    if (scope.flags & SCOPE_FUNCTION) { return (scope.flags & SCOPE_ASYNC) > 0 }
+    var ref = this.scopeStack[i];
+      var flags = ref.flags;
+    if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT)) { return false }
+    if (flags & SCOPE_FUNCTION) { return (flags & SCOPE_ASYNC) > 0 }
   }
   return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction
 };
@@ -29129,8 +29131,7 @@ prototypeAccessors.canAwait.get = function () {
 prototypeAccessors.allowSuper.get = function () {
   var ref = this.currentThisScope();
     var flags = ref.flags;
-    var inClassFieldInit = ref.inClassFieldInit;
-  return (flags & SCOPE_SUPER) > 0 || inClassFieldInit || this.options.allowSuperOutsideMethod
+  return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod
 };
 
 prototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 };
@@ -29138,10 +29139,13 @@ prototypeAccessors.allowDirectSuper.get = function () { return (this.currentThis
 prototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) };
 
 prototypeAccessors.allowNewDotTarget.get = function () {
-  var ref = this.currentThisScope();
-    var flags = ref.flags;
-    var inClassFieldInit = ref.inClassFieldInit;
-  return (flags & (SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK)) > 0 || inClassFieldInit
+  for (var i = this.scopeStack.length - 1; i >= 0; i--) {
+    var ref = this.scopeStack[i];
+      var flags = ref.flags;
+    if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) ||
+        ((flags & SCOPE_FUNCTION) && !(flags & SCOPE_ARROW))) { return true }
+  }
+  return false
 };
 
 prototypeAccessors.inClassStaticBlock.get = function () {
@@ -30068,11 +30072,9 @@ pp$8.parseClassField = function(field) {
 
   if (this.eat(types$1.eq)) {
     // To raise SyntaxError if 'arguments' exists in the initializer.
-    var scope = this.currentThisScope();
-    var inClassFieldInit = scope.inClassFieldInit;
-    scope.inClassFieldInit = true;
+    this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER);
     field.value = this.parseMaybeAssign();
-    scope.inClassFieldInit = inClassFieldInit;
+    this.exitScope();
   } else {
     field.value = null;
   }
@@ -30214,6 +30216,8 @@ pp$8.parseExport = function(node, exports) {
       { this.checkExport(exports, node.declaration.id, node.declaration.id.start); }
     node.specifiers = [];
     node.source = null;
+    if (this.options.ecmaVersion >= 16)
+      { node.attributes = []; }
   } else { // export { x, y as z } [from '...']
     node.declaration = null;
     node.specifiers = this.parseExportSpecifiers(exports);
@@ -30237,6 +30241,8 @@ pp$8.parseExport = function(node, exports) {
       }
 
       node.source = null;
+      if (this.options.ecmaVersion >= 16)
+        { node.attributes = []; }
     }
     this.semicolon();
   }
@@ -31816,9 +31822,10 @@ pp$5.parseProperty = function(isPattern, refDestructuringErrors) {
 };
 
 pp$5.parseGetterSetter = function(prop) {
-  prop.kind = prop.key.name;
+  var kind = prop.key.name;
   this.parsePropertyName(prop);
   prop.value = this.parseMethod(false);
+  prop.kind = kind;
   var paramCount = prop.kind === "get" ? 0 : 1;
   if (prop.value.params.length !== paramCount) {
     var start = prop.value.start;
@@ -31841,9 +31848,9 @@ pp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startP
     prop.kind = "init";
   } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) {
     if (isPattern) { this.unexpected(); }
-    prop.kind = "init";
     prop.method = true;
     prop.value = this.parseMethod(isGenerator, isAsync);
+    prop.kind = "init";
   } else if (!isPattern && !containsEsc &&
              this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" &&
              (prop.key.name === "get" || prop.key.name === "set") &&
@@ -31855,7 +31862,6 @@ pp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startP
     this.checkUnreserved(prop.key);
     if (prop.key.name === "await" && !this.awaitIdentPos)
       { this.awaitIdentPos = startPos; }
-    prop.kind = "init";
     if (isPattern) {
       prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));
     } else if (this.type === types$1.eq && refDestructuringErrors) {
@@ -31865,6 +31871,7 @@ pp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startP
     } else {
       prop.value = this.copyNode(prop.key);
     }
+    prop.kind = "init";
     prop.shorthand = true;
   } else { this.unexpected(); }
 };
@@ -32040,7 +32047,7 @@ pp$5.checkUnreserved = function(ref) {
     { this.raiseRecoverable(start, "Cannot use 'yield' as identifier inside a generator"); }
   if (this.inAsync && name === "await")
     { this.raiseRecoverable(start, "Cannot use 'await' as identifier inside an async function"); }
-  if (this.currentThisScope().inClassFieldInit && name === "arguments")
+  if (!(this.currentThisScope().flags & SCOPE_VAR) && name === "arguments")
     { this.raiseRecoverable(start, "Cannot use 'arguments' in class field initializer"); }
   if (this.inClassStaticBlock && (name === "arguments" || name === "await"))
     { this.raise(start, ("Cannot use " + name + " in class static initialization block")); }
@@ -32153,6 +32160,9 @@ var pp$4 = Parser.prototype;
 pp$4.raise = function(pos, message) {
   var loc = getLineInfo(this.input, pos);
   message += " (" + loc.line + ":" + loc.column + ")";
+  if (this.sourceFile) {
+    message += " in " + this.sourceFile;
+  }
   var err = new SyntaxError(message);
   err.pos = pos; err.loc = loc; err.raisedAt = this.pos;
   throw err
@@ -32176,8 +32186,6 @@ var Scope = function Scope(flags) {
   this.lexical = [];
   // A list of lexically-declared FunctionDeclaration names in the current lexical scope
   this.functions = [];
-  // A switch to disallow the identifier reference 'arguments'
-  this.inClassFieldInit = false;
 };
 
 // The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.
@@ -32247,7 +32255,7 @@ pp$3.currentScope = function() {
 pp$3.currentVarScope = function() {
   for (var i = this.scopeStack.length - 1;; i--) {
     var scope = this.scopeStack[i];
-    if (scope.flags & SCOPE_VAR) { return scope }
+    if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK)) { return scope }
   }
 };
 
@@ -32255,7 +32263,8 @@ pp$3.currentVarScope = function() {
 pp$3.currentThisScope = function() {
   for (var i = this.scopeStack.length - 1;; i--) {
     var scope = this.scopeStack[i];
-    if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW)) { return scope }
+    if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) &&
+        !(scope.flags & SCOPE_ARROW)) { return scope }
   }
 };
 
@@ -34609,7 +34618,7 @@ pp.readWord = function() {
 // [walk]: util/walk.js
 
 
-var version = "8.14.0";
+var version = "8.14.1";
 
 Parser.acorn = {
   Parser: Parser,
diff --git a/playground.js.map b/playground.js.map
index 1e1cb2f9..b9794d38 100644
--- a/playground.js.map
+++ b/playground.js.map
@@ -1 +1 @@
-{"version":3,"file":"playground.js","sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/@scratch/paper/dist/paper-full.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/lodash.bindall/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/react-redux/es/utils/PropTypes.js","webpack:///./node_modules/react-redux/es/utils/warning.js","webpack:///./node_modules/react-redux/es/components/Provider.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/react-redux/es/utils/Subscription.js","webpack:///./node_modules/react-redux/es/components/connectAdvanced.js","webpack:///./node_modules/react-redux/es/utils/shallowEqual.js","webpack:///./node_modules/react-redux/es/utils/isPlainObject.js","webpack:///./node_modules/react-redux/es/utils/verifyPlainObject.js","webpack:///./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack:///./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack:///./node_modules/react-redux/es/connect/mapStateToProps.js","webpack:///./node_modules/react-redux/es/connect/mergeProps.js","webpack:///./node_modules/react-redux/es/connect/verifySubselectors.js","webpack:///./node_modules/react-redux/es/connect/selectorFactory.js","webpack:///./node_modules/react-redux/es/connect/connect.js","webpack:///./node_modules/react-redux/es/index.js","webpack:///./node_modules/classnames/index.js","webpack:///./src/components/color-picker/color-picker.css?97d7","webpack:///./src/components/paint-editor/paint-editor.css?033d","webpack:///./node_modules/intl-format-cache/lib/index.js","webpack:///./node_modules/react-intl/lib/index.es.js","webpack:///./src/components/font-dropdown/font-dropdown.css?9b69","webpack:///./src/components/fixed-tools/fixed-tools.css?b3a2","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./src/components/mode-tools/mode-tools.css?6d08","webpack:///./node_modules/keymirror/index.js","webpack:///./node_modules/lodash-es/_root.js","webpack:///./node_modules/lodash-es/_Symbol.js","webpack:///./node_modules/lodash-es/_getRawTag.js","webpack:///./node_modules/lodash-es/_objectToString.js","webpack:///./node_modules/lodash-es/_baseGetTag.js","webpack:///./node_modules/lodash-es/_overArg.js","webpack:///./node_modules/lodash-es/_getPrototype.js","webpack:///./node_modules/lodash-es/isObjectLike.js","webpack:///./node_modules/lodash-es/isPlainObject.js","webpack:///./node_modules/redux/es/createStore.js","webpack:///./node_modules/redux/es/utils/warning.js","webpack:///./node_modules/redux/es/combineReducers.js","webpack:///./node_modules/redux/es/bindActionCreators.js","webpack:///./node_modules/redux/es/compose.js","webpack:///./node_modules/redux/es/applyMiddleware.js","webpack:///./node_modules/redux/es/index.js","webpack:///./node_modules/parse-color/index.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/minilog/lib/common/transform.js","webpack:///./node_modules/lodash.omit/index.js","webpack:///./node_modules/intl-messageformat/index.js","webpack:///./src/components/scrollable-canvas/scrollable-canvas.css?6697","webpack:///./src/components/color-button/color-button.css?7e14","webpack:///./src/playground/playground.css?ce20","webpack:///./src/components/color-button/no-fill.svg","webpack:///./node_modules/intl-relativeformat/index.js","webpack:///./src/components/dropdown/dropdown.css?f334","webpack:///./node_modules/react-intl-redux/lib/index.js","webpack:///./src/components/color-button/mixed-fill.svg","webpack:///./node_modules/react-responsive/dist/react-responsive.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/react-popover/build/platform.js","webpack:///./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./src/components/bit-brush-mode/brush.svg","webpack:///./src/components/bit-line-mode/line.svg","webpack:///./src/components/bit-oval-mode/oval.svg","webpack:///./src/components/bit-rect-mode/rectangle.svg","webpack:///./src/components/bit-eraser-mode/eraser.svg","webpack:///./src/components/box/box.jsx","webpack:///./src/components/brush-mode/brush.svg","webpack:///./src/components/eraser-mode/eraser.svg","webpack:///./node_modules/react-popover/index.js","webpack:///./src/components/button/button.css?d675","webpack:///./src/components/tool-select-base/tool-select-base.css?0b6a","webpack:///./src/components/forms/slider.css?4d01","webpack:///./src/components/labeled-icon-button/labeled-icon-button.css?e69a","webpack:///./src/components/forms/label.css?46bc","webpack:///./src/components/forms/input.css?fde7","webpack:///./node_modules/css-vendor/lib/prefix.js","webpack:///./node_modules/is-in-browser/dist/module.js","webpack:///./node_modules/react-popover/build/utils.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/minilog/lib/web/index.js","webpack:///./node_modules/symbol-observable/es/index.js","webpack:///./src/components/input-group/input-group.css?f818","webpack:///./src/components/fixed-tools/icons/send-back.svg","webpack:///./src/components/fixed-tools/icons/send-front.svg","webpack:///./src/components/mode-tools/icons/delete.svg","webpack:///./src/components/paint-editor/icons/bitmap.svg","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/minilog/lib/web/formatters/util.js","webpack:///./node_modules/intl-messageformat/lib/utils.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/react-intl-redux/lib/components/IntlProvider.js","webpack:///./node_modules/symbol-observable/es/ponyfill.js","webpack:///./node_modules/lodash-es/_freeGlobal.js","webpack:///../locale-data/index.js (ignored)","webpack:///./src/containers/paper-canvas.css?6f87","webpack:///./src/components/bit-fill-mode/fill.svg","webpack:///./src/components/bit-select-mode/marquee.svg","webpack:///./node_modules/react-style-proptype/src/index.js","webpack:///./src/components/button-group/button-group.css?0101","webpack:///./src/components/color-picker/icons/eye-dropper.svg","webpack:///./src/components/color-picker/icons/fill-horz-gradient-enabled.svg","webpack:///./src/components/color-picker/icons/fill-radial-enabled.svg","webpack:///./src/components/color-picker/icons/fill-solid-enabled.svg","webpack:///./src/components/color-picker/icons/fill-vert-gradient-enabled.svg","webpack:///./src/components/color-picker/icons/swap.svg","webpack:///./src/components/fill-mode/fill.svg","webpack:///./src/components/line-mode/line.svg","webpack:///./src/components/loupe/loupe.css?35aa","webpack:///./src/components/dropdown/dropdown-caret.svg","webpack:///./src/components/fixed-tools/icons/group.svg","webpack:///./src/components/fixed-tools/icons/redo.svg","webpack:///./src/components/fixed-tools/icons/send-backward.svg","webpack:///./src/components/fixed-tools/icons/send-forward.svg","webpack:///./src/components/fixed-tools/icons/undo.svg","webpack:///./src/components/fixed-tools/icons/ungroup.svg","webpack:///./src/components/mode-tools/icons/copy.svg","webpack:///./src/components/mode-tools/icons/paste.svg","webpack:///./src/components/mode-tools/icons/curved-point.svg","webpack:///./src/components/mode-tools/icons/flip-horizontal.svg","webpack:///./src/components/mode-tools/icons/flip-vertical.svg","webpack:///./src/components/mode-tools/icons/straight-point.svg","webpack:///./src/components/bit-oval-mode/oval-outlined.svg","webpack:///./src/components/bit-rect-mode/rectangle-outlined.svg","webpack:///./src/components/oval-mode/oval.svg","webpack:///./src/components/rect-mode/rectangle.svg","webpack:///./src/components/reshape-mode/reshape.svg","webpack:///./src/components/select-mode/select.svg","webpack:///./src/components/text-mode/text.svg","webpack:///./src/components/bit-text-mode/text.svg","webpack:///./src/components/paint-editor/icons/zoom-in.svg","webpack:///./src/components/paint-editor/icons/zoom-out.svg","webpack:///./src/components/paint-editor/icons/zoom-reset.svg","webpack:///./node_modules/scratch-l10n/src/locale-data/en.js","webpack:///./node_modules/scratch-l10n/src/locale-data/af.js","webpack:///./node_modules/scratch-l10n/src/locale-data/am.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ar.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ast.js","webpack:///./node_modules/scratch-l10n/src/locale-data/az.js","webpack:///./node_modules/scratch-l10n/src/locale-data/be.js","webpack:///./node_modules/scratch-l10n/src/locale-data/bn.js","webpack:///./node_modules/scratch-l10n/src/locale-data/bg.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ca.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ckb.js","webpack:///./node_modules/scratch-l10n/src/locale-data/cs.js","webpack:///./node_modules/scratch-l10n/src/locale-data/cy.js","webpack:///./node_modules/scratch-l10n/src/locale-data/da.js","webpack:///./node_modules/scratch-l10n/src/locale-data/de.js","webpack:///./node_modules/scratch-l10n/src/locale-data/el.js","webpack:///./node_modules/scratch-l10n/src/locale-data/eo.js","webpack:///./node_modules/scratch-l10n/src/locale-data/es.js","webpack:///./node_modules/scratch-l10n/src/locale-data/et.js","webpack:///./node_modules/scratch-l10n/src/locale-data/eu.js","webpack:///./node_modules/scratch-l10n/src/locale-data/fa.js","webpack:///./node_modules/scratch-l10n/src/locale-data/fi.js","webpack:///./node_modules/scratch-l10n/src/locale-data/fil.js","webpack:///./node_modules/scratch-l10n/src/locale-data/fr.js","webpack:///./node_modules/scratch-l10n/src/locale-data/fy.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ga.js","webpack:///./node_modules/scratch-l10n/src/locale-data/gd.js","webpack:///./node_modules/scratch-l10n/src/locale-data/gl.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ha.js","webpack:///./node_modules/scratch-l10n/src/locale-data/he.js","webpack:///./node_modules/scratch-l10n/src/locale-data/hi.js","webpack:///./node_modules/scratch-l10n/src/locale-data/hu.js","webpack:///./node_modules/scratch-l10n/src/locale-data/hr.js","webpack:///./node_modules/scratch-l10n/src/locale-data/hy.js","webpack:///./node_modules/scratch-l10n/src/locale-data/id.js","webpack:///./node_modules/scratch-l10n/src/locale-data/is.js","webpack:///./node_modules/scratch-l10n/src/locale-data/it.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ja.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ka.js","webpack:///./node_modules/scratch-l10n/src/locale-data/kk.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ko.js","webpack:///./node_modules/scratch-l10n/src/locale-data/km.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ku.js","webpack:///./node_modules/scratch-l10n/src/locale-data/lt.js","webpack:///./node_modules/scratch-l10n/src/locale-data/lv.js","webpack:///./node_modules/scratch-l10n/src/locale-data/mi.js","webpack:///./node_modules/scratch-l10n/src/locale-data/mn.js","webpack:///./node_modules/scratch-l10n/src/locale-data/nl.js","webpack:///./node_modules/scratch-l10n/src/locale-data/nb.js","webpack:///./node_modules/scratch-l10n/src/locale-data/nn.js","webpack:///./node_modules/scratch-l10n/src/locale-data/nso.js","webpack:///./node_modules/scratch-l10n/src/locale-data/or.js","webpack:///./node_modules/scratch-l10n/src/locale-data/pl.js","webpack:///./node_modules/scratch-l10n/src/locale-data/pt.js","webpack:///./node_modules/scratch-l10n/src/locale-data/qu.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ro.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ru.js","webpack:///./node_modules/scratch-l10n/src/locale-data/sl.js","webpack:///./node_modules/scratch-l10n/src/locale-data/sk.js","webpack:///./node_modules/scratch-l10n/src/locale-data/sr.js","webpack:///./node_modules/scratch-l10n/src/locale-data/sv.js","webpack:///./node_modules/scratch-l10n/src/locale-data/sw.js","webpack:///./node_modules/scratch-l10n/src/locale-data/th.js","webpack:///./node_modules/scratch-l10n/src/locale-data/tr.js","webpack:///./node_modules/scratch-l10n/src/locale-data/tn.js","webpack:///./node_modules/scratch-l10n/src/locale-data/uk.js","webpack:///./node_modules/scratch-l10n/src/locale-data/uz.js","webpack:///./node_modules/scratch-l10n/src/locale-data/vi.js","webpack:///./node_modules/scratch-l10n/src/locale-data/xh.js","webpack:///./node_modules/scratch-l10n/src/locale-data/zh.js","webpack:///./node_modules/scratch-l10n/src/locale-data/zu.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node/self.js (ignored)","webpack:///./node_modules/acorn/dist/acorn.mjs","webpack:///./node/extend.js (ignored)","webpack:///./node_modules/minilog/lib/common/minilog.js","webpack:///./node_modules/microee/index.js","webpack:///./node_modules/minilog/lib/common/filter.js","webpack:///./node_modules/minilog/lib/web/console.js","webpack:///./node_modules/minilog/lib/web/formatters/color.js","webpack:///./node_modules/minilog/lib/web/formatters/minilog.js","webpack:///./node_modules/minilog/lib/web/array.js","webpack:///./node_modules/minilog/lib/web/localstorage.js","webpack:///./node_modules/minilog/lib/web/jquery_simple.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/intl-messageformat/lib/main.js","webpack:///./node_modules/intl-messageformat/lib/core.js","webpack:///./node_modules/intl-messageformat/lib/es5.js","webpack:///./node_modules/intl-messageformat/lib/compiler.js","webpack:///./node_modules/intl-messageformat/node_modules/intl-messageformat-parser/index.js","webpack:///./node_modules/intl-messageformat/node_modules/intl-messageformat-parser/lib/parser.js","webpack:///./node_modules/intl-messageformat/lib/en.js","webpack:///./lib/locales (ignored)","webpack:///./node_modules/intl-relativeformat/lib/main.js","webpack:///./node_modules/intl-relativeformat/lib/core.js","webpack:///./node_modules/intl-relativeformat/lib/diff.js","webpack:///./node_modules/intl-relativeformat/lib/es5.js","webpack:///./node_modules/intl-relativeformat/lib/en.js","webpack:///./lib/locales (ignored)?f12b","webpack:///./src/containers/paper-canvas.css","webpack:///./src/components/scrollable-canvas/scrollable-canvas.css","webpack:///./src/components/button/button.css","webpack:///./src/components/tool-select-base/tool-select-base.css","webpack:///./node_modules/react-style-proptype/src/css-properties.js","webpack:///./src/components/button-group/button-group.css","webpack:///./node_modules/parse-color/node_modules/color-convert/index.js","webpack:///./node_modules/parse-color/node_modules/color-convert/conversions.js","webpack:///./node_modules/react-popover/build/index.js","webpack:///./node_modules/css-vendor/lib/index.js","webpack:///./node_modules/css-vendor/lib/supported-property.js","webpack:///./node_modules/css-vendor/lib/camelize.js","webpack:///./node_modules/css-vendor/lib/supported-value.js","webpack:///./node_modules/react-popover/node_modules/debug/src/browser.js","webpack:///./node_modules/react-popover/node_modules/debug/src/debug.js","webpack:///./node_modules/react-popover/node_modules/ms/index.js","webpack:///./node_modules/lodash.throttle/index.js","webpack:///./node_modules/lodash.throttle/node_modules/lodash.debounce/index.js","webpack:///./node_modules/lodash._getnative/index.js","webpack:///./node_modules/react-popover/build/layout.js","webpack:///./node_modules/react-popover/build/on-resize.js","webpack:///./node_modules/react-popover/build/tip.js","webpack:///./src/components/color-button/color-button.css","webpack:///./src/components/forms/slider.css","webpack:///./src/components/labeled-icon-button/labeled-icon-button.css","webpack:///./src/components/color-picker/color-picker.css","webpack:///./src/components/input-group/input-group.css","webpack:///./src/components/forms/label.css","webpack:///./src/components/loupe/loupe.css","webpack:///./src/components/dropdown/dropdown.css","webpack:///./src/components/forms/input.css","webpack:///./src/components/fixed-tools/fixed-tools.css","webpack:///./src/components/font-dropdown/font-dropdown.css","webpack:///./src/components/mode-tools/mode-tools.css","webpack:///./src/components/paint-editor/paint-editor.css","webpack:///./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack:///./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack:///./node_modules/react-intl-redux/lib/components/Provider.js","webpack:///./src/playground/playground.css","webpack:///./node_modules/scratch-render-fonts/src/index.js","webpack:///./node_modules/scratch-render-fonts/src/NotoSans-Medium.ttf","webpack:///./node_modules/scratch-render-fonts/src/SourceSerifPro-Regular.otf","webpack:///./node_modules/scratch-render-fonts/src/handlee-regular.ttf","webpack:///./node_modules/scratch-render-fonts/src/Knewave.ttf","webpack:///./node_modules/scratch-render-fonts/src/Griffy-Regular.ttf","webpack:///./node_modules/scratch-render-fonts/src/Grand9K-Pixel.ttf","webpack:///./node_modules/scratch-render-fonts/src/Scratch.ttf","webpack:///./src/log/log.js","webpack:///./src/lib/format.js","webpack:///./src/lib/modes.js","webpack:///./src/helper/item.js","webpack:///./src/helper/group.js","webpack:///./src/helper/compound-path.js","webpack:///./src/helper/math.js","webpack:///./src/helper/selection.js","webpack:///./src/helper/guides.js","webpack:///./src/helper/bitmap.js","webpack:///./src/helper/view.js","webpack:///./src/helper/layer.js","webpack:///./src/helper/undo.js","webpack:///./src/reducers/undo.js","webpack:///./src/reducers/selected-items.js","webpack:///./src/reducers/hover.js","webpack:///./src/reducers/clipboard.js","webpack:///./src/reducers/format.js","webpack:///./src/reducers/view-bounds.js","webpack:///./src/reducers/zoom-levels.js","webpack:///./src/containers/paper-canvas.jsx","webpack:///./src/components/scrollable-canvas/scrollable-canvas.jsx","webpack:///./src/lib/touch-utils.js","webpack:///./src/containers/scrollable-canvas.jsx","webpack:///./src/lib/gradient-types.js","webpack:///./src/lib/make-color-style-reducer.js","webpack:///./src/reducers/fill-style.js","webpack:///./src/helper/style-path.js","webpack:///./src/reducers/modes.js","webpack:///./src/components/button/button.jsx","webpack:///./src/components/tool-select-base/tool-select-base.jsx","webpack:///./src/lib/messages.js","webpack:///./src/components/bit-brush-mode/bit-brush-mode.jsx","webpack:///./src/helper/bit-tools/brush-tool.js","webpack:///./src/containers/bit-brush-mode.jsx","webpack:///./src/components/bit-line-mode/bit-line-mode.jsx","webpack:///./src/helper/bit-tools/line-tool.js","webpack:///./src/containers/bit-line-mode.jsx","webpack:///./src/lib/color-style-proptype.js","webpack:///./src/lib/cursors.js","webpack:///./src/reducers/eye-dropper.js","webpack:///./src/reducers/cursor.js","webpack:///./src/helper/selection-tools/scale-tool.js","webpack:///./src/helper/selection-tools/rotate-tool.js","webpack:///./src/helper/selection-tools/move-tool.js","webpack:///./src/helper/selection-tools/bounding-box-tool.js","webpack:///./src/helper/selection-tools/nudge-tool.js","webpack:///./src/helper/bit-tools/oval-tool.js","webpack:///./src/components/bit-oval-mode/bit-oval-mode.jsx","webpack:///./src/containers/bit-oval-mode.jsx","webpack:///./src/helper/bit-tools/rect-tool.js","webpack:///./src/components/bit-rect-mode/bit-rect-mode.jsx","webpack:///./src/containers/bit-rect-mode.jsx","webpack:///./src/components/bit-fill-mode/bit-fill-mode.jsx","webpack:///./src/reducers/fill-mode-gradient-type.js","webpack:///./src/helper/bit-tools/fill-tool.js","webpack:///./src/containers/bit-fill-mode.jsx","webpack:///./src/components/bit-eraser-mode/bit-eraser-mode.jsx","webpack:///./src/containers/bit-eraser-mode.jsx","webpack:///./src/helper/selection-tools/selection-box-tool.js","webpack:///./src/helper/bit-tools/select-tool.js","webpack:///./src/components/bit-select-mode/bit-select-mode.jsx","webpack:///./src/containers/bit-select-mode.jsx","webpack:///./src/components/button-group/button-group.jsx","webpack:///./src/helper/blob-tools/broad-brush-helper.js","webpack:///./src/helper/blob-tools/segment-brush-helper.js","webpack:///./src/helper/blob-tools/blob.js","webpack:///./src/components/brush-mode/brush-mode.jsx","webpack:///./src/containers/brush-mode.jsx","webpack:///./src/reducers/eraser-mode.js","webpack:///./src/components/eraser-mode/eraser-mode.jsx","webpack:///./src/containers/eraser-mode.jsx","webpack:///./src/reducers/color-index.js","webpack:///./src/reducers/modals.js","webpack:///./src/components/color-button/color-button.jsx","webpack:///./src/components/forms/slider.jsx","webpack:///./src/components/labeled-icon-button/labeled-icon-button.jsx","webpack:///./src/components/color-picker/color-picker.jsx","webpack:///./src/containers/color-picker.jsx","webpack:///./src/components/input-group/input-group.jsx","webpack:///./src/components/forms/label.jsx","webpack:///./src/components/color-indicator.jsx","webpack:///./src/containers/color-indicator.jsx","webpack:///./src/containers/fill-color-indicator.jsx","webpack:///./src/helper/hover.js","webpack:///./src/helper/tools/fill-tool.js","webpack:///./src/components/fill-mode/fill-mode.jsx","webpack:///./src/containers/fill-mode.jsx","webpack:///./src/helper/snapping.js","webpack:///./src/reducers/stroke-width.js","webpack:///./src/reducers/stroke-style.js","webpack:///./src/components/line-mode/line-mode.jsx","webpack:///./src/containers/line-mode.jsx","webpack:///./src/helper/tools/eye-dropper.js","webpack:///./src/components/loupe/loupe.jsx","webpack:///./src/helper/order.js","webpack:///./src/components/forms/buffered-input-hoc.jsx","webpack:///./src/components/dropdown/dropdown.jsx","webpack:///./src/components/forms/input.jsx","webpack:///./src/lib/layout-constants.js","webpack:///./src/lib/hide-label.js","webpack:///./src/components/fixed-tools/fixed-tools.jsx","webpack:///./src/reducers/text-edit-target.js","webpack:///./src/reducers/layout.js","webpack:///./src/containers/fixed-tools.jsx","webpack:///./src/hocs/copy-paste-hoc.jsx","webpack:///./src/reducers/brush-mode.js","webpack:///./src/reducers/bit-brush-size.js","webpack:///./src/reducers/bit-eraser-size.js","webpack:///./src/reducers/fill-bitmap-shapes.js","webpack:///./src/lib/fonts.js","webpack:///./src/components/font-dropdown/font-dropdown.jsx","webpack:///./src/reducers/font.js","webpack:///./src/containers/font-dropdown.jsx","webpack:///./src/components/forms/live-input-hoc.jsx","webpack:///./src/components/mode-tools/mode-tools.jsx","webpack:///./src/containers/mode-tools.jsx","webpack:///./src/helper/tools/oval-tool.js","webpack:///./src/components/oval-mode/oval-mode.jsx","webpack:///./src/containers/oval-mode.jsx","webpack:///./src/helper/tools/rect-tool.js","webpack:///./src/components/rect-mode/rect-mode.jsx","webpack:///./src/containers/rect-mode.jsx","webpack:///./src/helper/selection-tools/point-tool.js","webpack:///./src/helper/selection-tools/handle-tool.js","webpack:///./src/helper/selection-tools/reshape-tool.js","webpack:///./src/components/reshape-mode/reshape-mode.jsx","webpack:///./src/containers/reshape-mode.jsx","webpack:///./src/helper/selection-tools/select-tool.js","webpack:///./src/components/select-mode/select-mode.jsx","webpack:///./src/containers/select-mode.jsx","webpack:///./src/containers/stroke-color-indicator.jsx","webpack:///./src/components/stroke-width-indicator.jsx","webpack:///./src/containers/stroke-width-indicator.jsx","webpack:///./src/helper/tools/text-tool.js","webpack:///./src/components/text-mode/text-mode.jsx","webpack:///./src/components/bit-text-mode/bit-text-mode.jsx","webpack:///./src/containers/text-mode.jsx","webpack:///./src/components/paint-editor/paint-editor.jsx","webpack:///./src/hocs/keyboard-shortcuts-hoc.jsx","webpack:///./src/hocs/selection-hoc.jsx","webpack:///./src/hocs/undo-hoc.jsx","webpack:///./src/hocs/update-image-hoc.jsx","webpack:///./src/containers/paint-editor.jsx","webpack:///./src/reducers/color.js","webpack:///./src/reducers/fill-mode.js","webpack:///./src/reducers/scratch-paint-reducer.js","webpack:///./src/index.js","webpack:///./node_modules/scratch-l10n/src/supported-locales.mjs","webpack:///./node_modules/scratch-l10n/src/locale-data.mjs","webpack:///./node_modules/scratch-l10n/src/index.mjs","webpack:///./node_modules/scratch-l10n/locales/paint-editor-msgs.js","webpack:///./src/playground/reducers/intl.js","webpack:///./src/playground/reducers/combine-reducers.js","webpack:///./src/playground/playground.jsx"],"sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 261);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/*!\n * Paper.js v0.12.7 - The Swiss Army Knife of Vector Graphics Scripting.\n * http://paperjs.org/\n *\n * Copyright (c) 2011 - 2020, Jürg Lehni & Jonathan Puckey\n * http://juerglehni.com/ & https://puckey.studio/\n *\n * Distributed under the MIT license. See LICENSE file for details.\n *\n * All rights reserved.\n *\n * Date: Thu Dec 1 12:02:03 2022 -0800\n *\n ***\n *\n * Straps.js - Class inheritance library with support for bean-style accessors\n *\n * Copyright (c) 2006 - 2020 Jürg Lehni\n * http://juerglehni.com/\n *\n * Distributed under the MIT license.\n *\n ***\n *\n * Acorn.js\n * https://marijnhaverbeke.nl/acorn/\n *\n * Acorn is a tiny, fast JavaScript parser written in JavaScript,\n * created by Marijn Haverbeke and released under an MIT license.\n *\n */\n\nvar paper = function(self, undefined) {\n\nself = self || require('./node/self.js');\nvar window = self.window ? self.window : self,\n\tdocument = self.document;\n\nvar Base = new function() {\n\tvar hidden = /^(statics|enumerable|beans|preserve)$/,\n\t\tarray = [],\n\t\tslice = array.slice,\n\t\tcreate = Object.create,\n\t\tdescribe = Object.getOwnPropertyDescriptor,\n\t\tdefine = Object.defineProperty,\n\n\t\tforEach = array.forEach || function(iter, bind) {\n\t\t\tfor (var i = 0, l = this.length; i < l; i++) {\n\t\t\t\titer.call(bind, this[i], i, this);\n\t\t\t}\n\t\t},\n\n\t\tforIn = function(iter, bind) {\n\t\t\tfor (var i in this) {\n\t\t\t\tif (this.hasOwnProperty(i))\n\t\t\t\t\titer.call(bind, this[i], i, this);\n\t\t\t}\n\t\t},\n\n\t\tset = Object.assign || function(dst) {\n\t\t\tfor (var i = 1, l = arguments.length; i < l; i++) {\n\t\t\t\tvar src = arguments[i];\n\t\t\t\tfor (var key in src) {\n\t\t\t\t\tif (src.hasOwnProperty(key))\n\t\t\t\t\t\tdst[key] = src[key];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dst;\n\t\t},\n\n\t\teach = function(obj, iter, bind) {\n\t\t\tif (obj) {\n\t\t\t\tvar desc = describe(obj, 'length');\n\t\t\t\t(desc && typeof desc.value === 'number' ? forEach : forIn)\n\t\t\t\t\t.call(obj, iter, bind = bind || obj);\n\t\t\t}\n\t\t\treturn bind;\n\t\t};\n\n\tfunction inject(dest, src, enumerable, beans, preserve) {\n\t\tvar beansNames = {};\n\n\t\tfunction field(name, val) {\n\t\t\tval = val || (val = describe(src, name))\n\t\t\t\t\t&& (val.get ? val : val.value);\n\t\t\tif (typeof val === 'string' && val[0] === '#')\n\t\t\t\tval = dest[val.substring(1)] || val;\n\t\t\tvar isFunc = typeof val === 'function',\n\t\t\t\tres = val,\n\t\t\t\tprev = preserve || isFunc && !val.base\n\t\t\t\t\t\t? (val && val.get ? name in dest : dest[name])\n\t\t\t\t\t\t: null,\n\t\t\t\tbean;\n\t\t\tif (!preserve || !prev) {\n\t\t\t\tif (isFunc && prev)\n\t\t\t\t\tval.base = prev;\n\t\t\t\tif (isFunc && beans !== false\n\t\t\t\t\t\t&& (bean = name.match(/^([gs]et|is)(([A-Z])(.*))$/)))\n\t\t\t\t\tbeansNames[bean[3].toLowerCase() + bean[4]] = bean[2];\n\t\t\t\tif (!res || isFunc || !res.get || typeof res.get !== 'function'\n\t\t\t\t\t\t|| !Base.isPlainObject(res)) {\n\t\t\t\t\tres = { value: res, writable: true };\n\t\t\t\t}\n\t\t\t\tif ((describe(dest, name)\n\t\t\t\t\t\t|| { configurable: true }).configurable) {\n\t\t\t\t\tres.configurable = true;\n\t\t\t\t\tres.enumerable = enumerable != null ? enumerable : !bean;\n\t\t\t\t}\n\t\t\t\tdefine(dest, name, res);\n\t\t\t}\n\t\t}\n\t\tif (src) {\n\t\t\tfor (var name in src) {\n\t\t\t\tif (src.hasOwnProperty(name) && !hidden.test(name))\n\t\t\t\t\tfield(name);\n\t\t\t}\n\t\t\tfor (var name in beansNames) {\n\t\t\t\tvar part = beansNames[name],\n\t\t\t\t\tset = dest['set' + part],\n\t\t\t\t\tget = dest['get' + part] || set && dest['is' + part];\n\t\t\t\tif (get && (beans === true || get.length === 0))\n\t\t\t\t\tfield(name, { get: get, set: set });\n\t\t\t}\n\t\t}\n\t\treturn dest;\n\t}\n\n\tfunction Base() {\n\t\tfor (var i = 0, l = arguments.length; i < l; i++) {\n\t\t\tvar src = arguments[i];\n\t\t\tif (src)\n\t\t\t\tset(this, src);\n\t\t}\n\t\treturn this;\n\t}\n\n\treturn inject(Base, {\n\t\tinject: function(src) {\n\t\t\tif (src) {\n\t\t\t\tvar statics = src.statics === true ? src : src.statics,\n\t\t\t\t\tbeans = src.beans,\n\t\t\t\t\tpreserve = src.preserve;\n\t\t\t\tif (statics !== src)\n\t\t\t\t\tinject(this.prototype, src, src.enumerable, beans, preserve);\n\t\t\t\tinject(this, statics, null, beans, preserve);\n\t\t\t}\n\t\t\tfor (var i = 1, l = arguments.length; i < l; i++)\n\t\t\t\tthis.inject(arguments[i]);\n\t\t\treturn this;\n\t\t},\n\n\t\textend: function() {\n\t\t\tvar base = this,\n\t\t\t\tctor,\n\t\t\t\tproto;\n\t\t\tfor (var i = 0, obj, l = arguments.length;\n\t\t\t\t\ti < l && !(ctor && proto); i++) {\n\t\t\t\tobj = arguments[i];\n\t\t\t\tctor = ctor || obj.initialize;\n\t\t\t\tproto = proto || obj.prototype;\n\t\t\t}\n\t\t\tctor = ctor || function() {\n\t\t\t\tbase.apply(this, arguments);\n\t\t\t};\n\t\t\tproto = ctor.prototype = proto || create(this.prototype);\n\t\t\tdefine(proto, 'constructor',\n\t\t\t\t\t{ value: ctor, writable: true, configurable: true });\n\t\t\tinject(ctor, this);\n\t\t\tif (arguments.length)\n\t\t\t\tthis.inject.apply(ctor, arguments);\n\t\t\tctor.base = base;\n\t\t\treturn ctor;\n\t\t}\n\t}).inject({\n\t\tenumerable: false,\n\n\t\tinitialize: Base,\n\n\t\tset: Base,\n\n\t\tinject: function() {\n\t\t\tfor (var i = 0, l = arguments.length; i < l; i++) {\n\t\t\t\tvar src = arguments[i];\n\t\t\t\tif (src) {\n\t\t\t\t\tinject(this, src, src.enumerable, src.beans, src.preserve);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\textend: function() {\n\t\t\tvar res = create(this);\n\t\t\treturn res.inject.apply(res, arguments);\n\t\t},\n\n\t\teach: function(iter, bind) {\n\t\t\treturn each(this, iter, bind);\n\t\t},\n\n\t\tclone: function() {\n\t\t\treturn new this.constructor(this);\n\t\t},\n\n\t\tstatics: {\n\t\t\tset: set,\n\t\t\teach: each,\n\t\t\tcreate: create,\n\t\t\tdefine: define,\n\t\t\tdescribe: describe,\n\n\t\t\tclone: function(obj) {\n\t\t\t\treturn set(new obj.constructor(), obj);\n\t\t\t},\n\n\t\t\tisPlainObject: function(obj) {\n\t\t\t\tvar ctor = obj != null && obj.constructor;\n\t\t\t\treturn ctor && (ctor === Object || ctor === Base\n\t\t\t\t\t\t|| ctor.name === 'Object');\n\t\t\t},\n\n\t\t\tpick: function(a, b) {\n\t\t\t\treturn a !== undefined ? a : b;\n\t\t\t},\n\n\t\t\tslice: function(list, begin, end) {\n\t\t\t\treturn slice.call(list, begin, end);\n\t\t\t}\n\t\t}\n\t});\n};\n\nif (typeof module !== 'undefined')\n\tmodule.exports = Base;\n\nBase.inject({\n\tenumerable: false,\n\n\ttoString: function() {\n\t\treturn this._id != null\n\t\t\t?  (this._class || 'Object') + (this._name\n\t\t\t\t? \" '\" + this._name + \"'\"\n\t\t\t\t: ' @' + this._id)\n\t\t\t: '{ ' + Base.each(this, function(value, key) {\n\t\t\t\tif (!/^_/.test(key)) {\n\t\t\t\t\tvar type = typeof value;\n\t\t\t\t\tthis.push(key + ': ' + (type === 'number'\n\t\t\t\t\t\t\t? Formatter.instance.number(value)\n\t\t\t\t\t\t\t: type === 'string' ? \"'\" + value + \"'\" : value));\n\t\t\t\t}\n\t\t\t}, []).join(', ') + ' }';\n\t},\n\n\tgetClassName: function() {\n\t\treturn this._class || '';\n\t},\n\n\timportJSON: function(json) {\n\t\treturn Base.importJSON(json, this);\n\t},\n\n\texportJSON: function(options) {\n\t\treturn Base.exportJSON(this, options);\n\t},\n\n\ttoJSON: function() {\n\t\treturn Base.serialize(this);\n\t},\n\n\tset: function(props, exclude) {\n\t\tif (props)\n\t\t\tBase.filter(this, props, exclude, this._prioritize);\n\t\treturn this;\n\t}\n}, {\n\nbeans: false,\nstatics: {\n\texports: {},\n\n\textend: function extend() {\n\t\tvar res = extend.base.apply(this, arguments),\n\t\t\tname = res.prototype._class;\n\t\tif (name && !Base.exports[name])\n\t\t\tBase.exports[name] = res;\n\t\treturn res;\n\t},\n\n\tequals: function(obj1, obj2) {\n\t\tif (obj1 === obj2)\n\t\t\treturn true;\n\t\tif (obj1 && obj1.equals)\n\t\t\treturn obj1.equals(obj2);\n\t\tif (obj2 && obj2.equals)\n\t\t\treturn obj2.equals(obj1);\n\t\tif (obj1 && obj2\n\t\t\t\t&& typeof obj1 === 'object' && typeof obj2 === 'object') {\n\t\t\tif (Array.isArray(obj1) && Array.isArray(obj2)) {\n\t\t\t\tvar length = obj1.length;\n\t\t\t\tif (length !== obj2.length)\n\t\t\t\t\treturn false;\n\t\t\t\twhile (length--) {\n\t\t\t\t\tif (!Base.equals(obj1[length], obj2[length]))\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar keys = Object.keys(obj1),\n\t\t\t\t\tlength = keys.length;\n\t\t\t\tif (length !== Object.keys(obj2).length)\n\t\t\t\t\treturn false;\n\t\t\t\twhile (length--) {\n\t\t\t\t\tvar key = keys[length];\n\t\t\t\t\tif (!(obj2.hasOwnProperty(key)\n\t\t\t\t\t\t\t&& Base.equals(obj1[key], obj2[key])))\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\tread: function(list, start, options, amount) {\n\t\tif (this === Base) {\n\t\t\tvar value = this.peek(list, start);\n\t\t\tlist.__index++;\n\t\t\treturn value;\n\t\t}\n\t\tvar proto = this.prototype,\n\t\t\treadIndex = proto._readIndex,\n\t\t\tbegin = start || readIndex && list.__index || 0,\n\t\t\tlength = list.length,\n\t\t\tobj = list[begin];\n\t\tamount = amount || length - begin;\n\t\tif (obj instanceof this\n\t\t\t|| options && options.readNull && obj == null && amount <= 1) {\n\t\t\tif (readIndex)\n\t\t\t\tlist.__index = begin + 1;\n\t\t\treturn obj && options && options.clone ? obj.clone() : obj;\n\t\t}\n\t\tobj = Base.create(proto);\n\t\tif (readIndex)\n\t\t\tobj.__read = true;\n\t\tobj = obj.initialize.apply(obj, begin > 0 || begin + amount < length\n\t\t\t\t? Base.slice(list, begin, begin + amount)\n\t\t\t\t: list) || obj;\n\t\tif (readIndex) {\n\t\t\tlist.__index = begin + obj.__read;\n\t\t\tvar filtered = obj.__filtered;\n\t\t\tif (filtered) {\n\t\t\t\tlist.__filtered = filtered;\n\t\t\t\tobj.__filtered = undefined;\n\t\t\t}\n\t\t\tobj.__read = undefined;\n\t\t}\n\t\treturn obj;\n\t},\n\n\tpeek: function(list, start) {\n\t\treturn list[list.__index = start || list.__index || 0];\n\t},\n\n\tremain: function(list) {\n\t\treturn list.length - (list.__index || 0);\n\t},\n\n\treadList: function(list, start, options, amount) {\n\t\tvar res = [],\n\t\t\tentry,\n\t\t\tbegin = start || 0,\n\t\t\tend = amount ? begin + amount : list.length;\n\t\tfor (var i = begin; i < end; i++) {\n\t\t\tres.push(Array.isArray(entry = list[i])\n\t\t\t\t\t? this.read(entry, 0, options)\n\t\t\t\t\t: this.read(list, i, options, 1));\n\t\t}\n\t\treturn res;\n\t},\n\n\treadNamed: function(list, name, start, options, amount) {\n\t\tvar value = this.getNamed(list, name),\n\t\t\thasValue = value !== undefined;\n\t\tif (hasValue) {\n\t\t\tvar filtered = list.__filtered;\n\t\t\tif (!filtered) {\n\t\t\t\tvar source = this.getSource(list);\n\t\t\t\tfiltered = list.__filtered = Base.create(source);\n\t\t\t\tfiltered.__unfiltered = source;\n\t\t\t}\n\t\t\tfiltered[name] = undefined;\n\t\t}\n\t\treturn this.read(hasValue ? [value] : list, start, options, amount);\n\t},\n\n\treadSupported: function(list, dest) {\n\t\tvar source = this.getSource(list),\n\t\t\tthat = this,\n\t\t\tread = false;\n\t\tif (source) {\n\t\t\tObject.keys(source).forEach(function(key) {\n\t\t\t\tif (key in dest) {\n\t\t\t\t\tvar value = that.readNamed(list, key);\n\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\tdest[key] = value;\n\t\t\t\t\t}\n\t\t\t\t\tread = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn read;\n\t},\n\n\tgetSource: function(list) {\n\t\tvar source = list.__source;\n\t\tif (source === undefined) {\n\t\t\tvar arg = list.length === 1 && list[0];\n\t\t\tsource = list.__source = arg && Base.isPlainObject(arg)\n\t\t\t\t? arg : null;\n\t\t}\n\t\treturn source;\n\t},\n\n\tgetNamed: function(list, name) {\n\t\tvar source = this.getSource(list);\n\t\tif (source) {\n\t\t\treturn name ? source[name] : list.__filtered || source;\n\t\t}\n\t},\n\n\thasNamed: function(list, name) {\n\t\treturn !!this.getNamed(list, name);\n\t},\n\n\tfilter: function(dest, source, exclude, prioritize) {\n\t\tvar processed;\n\n\t\tfunction handleKey(key) {\n\t\t\tif (!(exclude && key in exclude) &&\n\t\t\t\t!(processed && key in processed)) {\n\t\t\t\tvar value = source[key];\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tdest[key] = value;\n\t\t\t}\n\t\t}\n\n\t\tif (prioritize) {\n\t\t\tvar keys = {};\n\t\t\tfor (var i = 0, key, l = prioritize.length; i < l; i++) {\n\t\t\t\tif ((key = prioritize[i]) in source) {\n\t\t\t\t\thandleKey(key);\n\t\t\t\t\tkeys[key] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tprocessed = keys;\n\t\t}\n\n\t\tObject.keys(source.__unfiltered || source).forEach(handleKey);\n\t\treturn dest;\n\t},\n\n\tisPlainValue: function(obj, asString) {\n\t\treturn Base.isPlainObject(obj) || Array.isArray(obj)\n\t\t\t\t|| asString && typeof obj === 'string';\n\t},\n\n\tserialize: function(obj, options, compact, dictionary) {\n\t\toptions = options || {};\n\n\t\tvar isRoot = !dictionary,\n\t\t\tres;\n\t\tif (isRoot) {\n\t\t\toptions.formatter = new Formatter(options.precision);\n\t\t\tdictionary = {\n\t\t\t\tlength: 0,\n\t\t\t\tdefinitions: {},\n\t\t\t\treferences: {},\n\t\t\t\tadd: function(item, create) {\n\t\t\t\t\tvar id = '#' + item._id,\n\t\t\t\t\t\tref = this.references[id];\n\t\t\t\t\tif (!ref) {\n\t\t\t\t\t\tthis.length++;\n\t\t\t\t\t\tvar res = create.call(item),\n\t\t\t\t\t\t\tname = item._class;\n\t\t\t\t\t\tif (name && res[0] !== name)\n\t\t\t\t\t\t\tres.unshift(name);\n\t\t\t\t\t\tthis.definitions[id] = res;\n\t\t\t\t\t\tref = this.references[id] = [id];\n\t\t\t\t\t}\n\t\t\t\t\treturn ref;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tif (obj && obj._serialize) {\n\t\t\tres = obj._serialize(options, dictionary);\n\t\t\tvar name = obj._class;\n\t\t\tif (name && !obj._compactSerialize && (isRoot || !compact)\n\t\t\t\t\t&& res[0] !== name) {\n\t\t\t\tres.unshift(name);\n\t\t\t}\n\t\t} else if (Array.isArray(obj)) {\n\t\t\tres = [];\n\t\t\tfor (var i = 0, l = obj.length; i < l; i++)\n\t\t\t\tres[i] = Base.serialize(obj[i], options, compact, dictionary);\n\t\t} else if (Base.isPlainObject(obj)) {\n\t\t\tres = {};\n\t\t\tvar keys = Object.keys(obj);\n\t\t\tfor (var i = 0, l = keys.length; i < l; i++) {\n\t\t\t\tvar key = keys[i];\n\t\t\t\tres[key] = Base.serialize(obj[key], options, compact,\n\t\t\t\t\t\tdictionary);\n\t\t\t}\n\t\t} else if (typeof obj === 'number') {\n\t\t\tres = options.formatter.number(obj, options.precision);\n\t\t} else {\n\t\t\tres = obj;\n\t\t}\n\t\treturn isRoot && dictionary.length > 0\n\t\t\t\t? [['dictionary', dictionary.definitions], res]\n\t\t\t\t: res;\n\t},\n\n\tdeserialize: function(json, create, _data, _setDictionary, _isRoot) {\n\t\tvar res = json,\n\t\t\tisFirst = !_data,\n\t\t\thasDictionary = isFirst && json && json.length\n\t\t\t\t&& json[0][0] === 'dictionary';\n\t\t_data = _data || {};\n\t\tif (Array.isArray(json)) {\n\t\t\tvar type = json[0],\n\t\t\t\tisDictionary = type === 'dictionary';\n\t\t\tif (json.length == 1 && /^#/.test(type)) {\n\t\t\t\treturn _data.dictionary[type];\n\t\t\t}\n\t\t\ttype = Base.exports[type];\n\t\t\tres = [];\n\t\t\tfor (var i = type ? 1 : 0, l = json.length; i < l; i++) {\n\t\t\t\tres.push(Base.deserialize(json[i], create, _data,\n\t\t\t\t\t\tisDictionary, hasDictionary));\n\t\t\t}\n\t\t\tif (type) {\n\t\t\t\tvar args = res;\n\t\t\t\tif (create) {\n\t\t\t\t\tres = create(type, args, isFirst || _isRoot);\n\t\t\t\t} else {\n\t\t\t\t\tres = new type(args);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (Base.isPlainObject(json)) {\n\t\t\tres = {};\n\t\t\tif (_setDictionary)\n\t\t\t\t_data.dictionary = res;\n\t\t\tfor (var key in json)\n\t\t\t\tres[key] = Base.deserialize(json[key], create, _data);\n\t\t}\n\t\treturn hasDictionary ? res[1] : res;\n\t},\n\n\texportJSON: function(obj, options) {\n\t\tvar json = Base.serialize(obj, options);\n\t\treturn options && options.asString == false\n\t\t\t\t? json\n\t\t\t\t: JSON.stringify(json);\n\t},\n\n\timportJSON: function(json, target) {\n\t\treturn Base.deserialize(\n\t\t\t\ttypeof json === 'string' ? JSON.parse(json) : json,\n\t\t\t\tfunction(ctor, args, isRoot) {\n\t\t\t\t\tvar useTarget = isRoot && target\n\t\t\t\t\t\t\t&& target.constructor === ctor,\n\t\t\t\t\t\tobj = useTarget ? target\n\t\t\t\t\t\t\t: Base.create(ctor.prototype);\n\t\t\t\t\tif (args.length === 1 && obj instanceof Item\n\t\t\t\t\t\t\t&& (useTarget || !(obj instanceof Layer))) {\n\t\t\t\t\t\tvar arg = args[0];\n\t\t\t\t\t\tif (Base.isPlainObject(arg)) {\n\t\t\t\t\t\t\targ.insert = false;\n\t\t\t\t\t\t\tif (useTarget) {\n\t\t\t\t\t\t\t\targs = args.concat([{ insert: true }]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t(useTarget ? obj.set : ctor).apply(obj, args);\n\t\t\t\t\tif (useTarget)\n\t\t\t\t\t\ttarget = null;\n\t\t\t\t\treturn obj;\n\t\t\t\t});\n\t},\n\n\tpush: function(list, items) {\n\t\tvar itemsLength = items.length;\n\t\tif (itemsLength < 4096) {\n\t\t\tlist.push.apply(list, items);\n\t\t} else {\n\t\t\tvar startLength = list.length;\n\t\t\tlist.length += itemsLength;\n\t\t\tfor (var i = 0; i < itemsLength; i++) {\n\t\t\t\tlist[startLength + i] = items[i];\n\t\t\t}\n\t\t}\n\t\treturn list;\n\t},\n\n\tsplice: function(list, items, index, remove) {\n\t\tvar amount = items && items.length,\n\t\t\tappend = index === undefined;\n\t\tindex = append ? list.length : index;\n\t\tif (index > list.length)\n\t\t\tindex = list.length;\n\t\tfor (var i = 0; i < amount; i++)\n\t\t\titems[i]._index = index + i;\n\t\tif (append) {\n\t\t\tBase.push(list, items);\n\t\t\treturn [];\n\t\t} else {\n\t\t\tvar args = [index, remove];\n\t\t\tif (items)\n\t\t\t\tBase.push(args, items);\n\t\t\tvar removed = list.splice.apply(list, args);\n\t\t\tfor (var i = 0, l = removed.length; i < l; i++)\n\t\t\t\tremoved[i]._index = undefined;\n\t\t\tfor (var i = index + amount, l = list.length; i < l; i++)\n\t\t\t\tlist[i]._index = i;\n\t\t\treturn removed;\n\t\t}\n\t},\n\n\tcapitalize: function(str) {\n\t\treturn str.replace(/\\b[a-z]/g, function(match) {\n\t\t\treturn match.toUpperCase();\n\t\t});\n\t},\n\n\tcamelize: function(str) {\n\t\treturn str.replace(/-(.)/g, function(match, chr) {\n\t\t\treturn chr.toUpperCase();\n\t\t});\n\t},\n\n\thyphenate: function(str) {\n\t\treturn str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n\t}\n}});\n\nvar Emitter = {\n\ton: function(type, func) {\n\t\tif (typeof type !== 'string') {\n\t\t\tBase.each(type, function(value, key) {\n\t\t\t\tthis.on(key, value);\n\t\t\t}, this);\n\t\t} else {\n\t\t\tvar types = this._eventTypes,\n\t\t\t\tentry = types && types[type],\n\t\t\t\thandlers = this._callbacks = this._callbacks || {};\n\t\t\thandlers = handlers[type] = handlers[type] || [];\n\t\t\tif (handlers.indexOf(func) === -1) {\n\t\t\t\thandlers.push(func);\n\t\t\t\tif (entry && entry.install && handlers.length === 1)\n\t\t\t\t\tentry.install.call(this, type);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\toff: function(type, func) {\n\t\tif (typeof type !== 'string') {\n\t\t\tBase.each(type, function(value, key) {\n\t\t\t\tthis.off(key, value);\n\t\t\t}, this);\n\t\t\treturn;\n\t\t}\n\t\tvar types = this._eventTypes,\n\t\t\tentry = types && types[type],\n\t\t\thandlers = this._callbacks && this._callbacks[type],\n\t\t\tindex;\n\t\tif (handlers) {\n\t\t\tif (!func || (index = handlers.indexOf(func)) !== -1\n\t\t\t\t\t&& handlers.length === 1) {\n\t\t\t\tif (entry && entry.uninstall)\n\t\t\t\t\tentry.uninstall.call(this, type);\n\t\t\t\tdelete this._callbacks[type];\n\t\t\t} else if (index !== -1) {\n\t\t\t\thandlers.splice(index, 1);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\tonce: function(type, func) {\n\t\treturn this.on(type, function handler() {\n\t\t\tfunc.apply(this, arguments);\n\t\t\tthis.off(type, handler);\n\t\t});\n\t},\n\n\temit: function(type, event) {\n\t\tvar handlers = this._callbacks && this._callbacks[type];\n\t\tif (!handlers)\n\t\t\treturn false;\n\t\tvar args = Base.slice(arguments, 1),\n\t\t\tsetTarget = event && event.target && !event.currentTarget;\n\t\thandlers = handlers.slice();\n\t\tif (setTarget)\n\t\t\tevent.currentTarget = this;\n\t\tfor (var i = 0, l = handlers.length; i < l; i++) {\n\t\t\tif (handlers[i].apply(this, args) == false) {\n\t\t\t\tif (event && event.stop)\n\t\t\t\t\tevent.stop();\n\t\t\t\tbreak;\n\t\t   }\n\t\t}\n\t\tif (setTarget)\n\t\t\tdelete event.currentTarget;\n\t\treturn true;\n\t},\n\n\tresponds: function(type) {\n\t\treturn !!(this._callbacks && this._callbacks[type]);\n\t},\n\n\tattach: '#on',\n\tdetach: '#off',\n\tfire: '#emit',\n\n\t_installEvents: function(install) {\n\t\tvar types = this._eventTypes,\n\t\t\thandlers = this._callbacks,\n\t\t\tkey = install ? 'install' : 'uninstall';\n\t\tif (types) {\n\t\t\tfor (var type in handlers) {\n\t\t\t\tif (handlers[type].length > 0) {\n\t\t\t\t\tvar entry = types[type],\n\t\t\t\t\t\tfunc = entry && entry[key];\n\t\t\t\t\tif (func)\n\t\t\t\t\t\tfunc.call(this, type);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tstatics: {\n\t\tinject: function inject(src) {\n\t\t\tvar events = src._events;\n\t\t\tif (events) {\n\t\t\t\tvar types = {};\n\t\t\t\tBase.each(events, function(entry, key) {\n\t\t\t\t\tvar isString = typeof entry === 'string',\n\t\t\t\t\t\tname = isString ? entry : key,\n\t\t\t\t\t\tpart = Base.capitalize(name),\n\t\t\t\t\t\ttype = name.substring(2).toLowerCase();\n\t\t\t\t\ttypes[type] = isString ? {} : entry;\n\t\t\t\t\tname = '_' + name;\n\t\t\t\t\tsrc['get' + part] = function() {\n\t\t\t\t\t\treturn this[name];\n\t\t\t\t\t};\n\t\t\t\t\tsrc['set' + part] = function(func) {\n\t\t\t\t\t\tvar prev = this[name];\n\t\t\t\t\t\tif (prev)\n\t\t\t\t\t\t\tthis.off(type, prev);\n\t\t\t\t\t\tif (func)\n\t\t\t\t\t\t\tthis.on(type, func);\n\t\t\t\t\t\tthis[name] = func;\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tsrc._eventTypes = types;\n\t\t\t}\n\t\t\treturn inject.base.apply(this, arguments);\n\t\t}\n\t}\n};\n\nvar PaperScope = Base.extend({\n\t_class: 'PaperScope',\n\n\tinitialize: function PaperScope() {\n\t\tpaper = this;\n\t\tthis.settings = new Base({\n\t\t\tapplyMatrix: true,\n\t\t\tinsertItems: true,\n\t\t\thandleSize: 4,\n\t\t\thitTolerance: 0\n\t\t});\n\t\tthis.project = null;\n\t\tthis.projects = [];\n\t\tthis.tools = [];\n\t\tthis._id = PaperScope._id++;\n\t\tPaperScope._scopes[this._id] = this;\n\t\tvar proto = PaperScope.prototype;\n\t\tif (!this.support) {\n\t\t\tvar ctx = CanvasProvider.getContext(1, 1) || {};\n\t\t\tproto.support = {\n\t\t\t\tnativeDash: 'setLineDash' in ctx || 'mozDash' in ctx,\n\t\t\t\tnativeBlendModes: BlendMode.nativeModes\n\t\t\t};\n\t\t\tCanvasProvider.release(ctx);\n\t\t}\n\t\tif (!this.agent) {\n\t\t\tvar user = self.navigator.userAgent.toLowerCase(),\n\t\t\t\tos = (/(darwin|win|mac|linux|freebsd|sunos)/.exec(user)||[])[0],\n\t\t\t\tplatform = os === 'darwin' ? 'mac' : os,\n\t\t\t\tagent = proto.agent = proto.browser = { platform: platform };\n\t\t\tif (platform)\n\t\t\t\tagent[platform] = true;\n\t\t\tuser.replace(\n\t\t\t\t/(opera|chrome|safari|webkit|firefox|msie|trident|atom|node|jsdom)\\/?\\s*([.\\d]+)(?:.*version\\/([.\\d]+))?(?:.*rv\\:v?([.\\d]+))?/g,\n\t\t\t\tfunction(match, n, v1, v2, rv) {\n\t\t\t\t\tif (!agent.chrome) {\n\t\t\t\t\t\tvar v = n === 'opera' ? v2 :\n\t\t\t\t\t\t\t\t/^(node|trident)$/.test(n) ? rv : v1;\n\t\t\t\t\t\tagent.version = v;\n\t\t\t\t\t\tagent.versionNumber = parseFloat(v);\n\t\t\t\t\t\tn = { trident: 'msie', jsdom: 'node' }[n] || n;\n\t\t\t\t\t\tagent.name = n;\n\t\t\t\t\t\tagent[n] = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\tif (agent.chrome)\n\t\t\t\tdelete agent.webkit;\n\t\t\tif (agent.atom)\n\t\t\t\tdelete agent.chrome;\n\t\t}\n\t},\n\n\tversion: \"0.12.7\",\n\n\tgetView: function() {\n\t\tvar project = this.project;\n\t\treturn project && project._view;\n\t},\n\n\tgetPaper: function() {\n\t\treturn this;\n\t},\n\n\texecute: function(code, options) {\n\t\t\tvar exports = paper.PaperScript.execute(code, this, options);\n\t\t\tView.updateFocus();\n\t\t\treturn exports;\n\t},\n\n\tinstall: function(scope) {\n\t\tvar that = this;\n\t\tBase.each(['project', 'view', 'tool'], function(key) {\n\t\t\tBase.define(scope, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tget: function() {\n\t\t\t\t\treturn that[key];\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tfor (var key in this)\n\t\t\tif (!/^_/.test(key) && this[key])\n\t\t\t\tscope[key] = this[key];\n\t},\n\n\tsetup: function(element) {\n\t\tpaper = this;\n\t\tthis.project = new Project(element);\n\t\treturn this;\n\t},\n\n\tcreateCanvas: function(width, height) {\n\t\treturn CanvasProvider.getCanvas(width, height);\n\t},\n\n\tactivate: function() {\n\t\tpaper = this;\n\t},\n\n\tclear: function() {\n\t\tvar projects = this.projects,\n\t\t\ttools = this.tools;\n\t\tfor (var i = projects.length - 1; i >= 0; i--)\n\t\t\tprojects[i].remove();\n\t\tfor (var i = tools.length - 1; i >= 0; i--)\n\t\t\ttools[i].remove();\n\t},\n\n\tremove: function() {\n\t\tthis.clear();\n\t\tdelete PaperScope._scopes[this._id];\n\t},\n\n\tstatics: new function() {\n\t\tfunction handleAttribute(name) {\n\t\t\tname += 'Attribute';\n\t\t\treturn function(el, attr) {\n\t\t\t\treturn el[name](attr) || el[name]('data-paper-' + attr);\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\t_scopes: {},\n\t\t\t_id: 0,\n\n\t\t\tget: function(id) {\n\t\t\t\treturn this._scopes[id] || null;\n\t\t\t},\n\n\t\t\tgetAttribute: handleAttribute('get'),\n\t\t\thasAttribute: handleAttribute('has')\n\t\t};\n\t}\n});\n\nvar PaperScopeItem = Base.extend(Emitter, {\n\n\tinitialize: function(activate) {\n\t\tthis._scope = paper;\n\t\tthis._index = this._scope[this._list].push(this) - 1;\n\t\tif (activate || !this._scope[this._reference])\n\t\t\tthis.activate();\n\t},\n\n\tactivate: function() {\n\t\tif (!this._scope)\n\t\t\treturn false;\n\t\tvar prev = this._scope[this._reference];\n\t\tif (prev && prev !== this)\n\t\t\tprev.emit('deactivate');\n\t\tthis._scope[this._reference] = this;\n\t\tthis.emit('activate', prev);\n\t\treturn true;\n\t},\n\n\tisActive: function() {\n\t\treturn this._scope[this._reference] === this;\n\t},\n\n\tremove: function() {\n\t\tif (this._index == null)\n\t\t\treturn false;\n\t\tBase.splice(this._scope[this._list], null, this._index, 1);\n\t\tif (this._scope[this._reference] == this)\n\t\t\tthis._scope[this._reference] = null;\n\t\tthis._scope = null;\n\t\treturn true;\n\t},\n\n\tgetView: function() {\n\t\treturn this._scope.getView();\n\t}\n});\n\nvar CollisionDetection = {\n\tfindItemBoundsCollisions: function(items1, items2, tolerance) {\n\t\tfunction getBounds(items) {\n\t\t\tvar bounds = new Array(items.length);\n\t\t\tfor (var i = 0; i < items.length; i++) {\n\t\t\t\tvar rect = items[i].getBounds();\n\t\t\t\tbounds[i] = [rect.left, rect.top, rect.right, rect.bottom];\n\t\t\t}\n\t\t\treturn bounds;\n\t\t}\n\n\t\tvar bounds1 = getBounds(items1),\n\t\t\tbounds2 = !items2 || items2 === items1\n\t\t\t\t? bounds1\n\t\t\t\t: getBounds(items2);\n\t\treturn this.findBoundsCollisions(bounds1, bounds2, tolerance || 0);\n\t},\n\n\tfindCurveBoundsCollisions: function(curves1, curves2, tolerance, bothAxis) {\n\t\tfunction getBounds(curves) {\n\t\t\tvar min = Math.min,\n\t\t\t\tmax = Math.max,\n\t\t\t\tbounds = new Array(curves.length);\n\t\t\tfor (var i = 0; i < curves.length; i++) {\n\t\t\t\tvar v = curves[i];\n\t\t\t\tbounds[i] = [\n\t\t\t\t\tmin(v[0], v[2], v[4], v[6]),\n\t\t\t\t\tmin(v[1], v[3], v[5], v[7]),\n\t\t\t\t\tmax(v[0], v[2], v[4], v[6]),\n\t\t\t\t\tmax(v[1], v[3], v[5], v[7])\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn bounds;\n\t\t}\n\n\t\tvar bounds1 = getBounds(curves1),\n\t\t\tbounds2 = !curves2 || curves2 === curves1\n\t\t\t\t? bounds1\n\t\t\t\t: getBounds(curves2);\n\t\tif (bothAxis) {\n\t\t\tvar hor = this.findBoundsCollisions(\n\t\t\t\t\tbounds1, bounds2, tolerance || 0, false, true),\n\t\t\t\tver = this.findBoundsCollisions(\n\t\t\t\t\tbounds1, bounds2, tolerance || 0, true, true),\n\t\t\t\tlist = [];\n\t\t\tfor (var i = 0, l = hor.length; i < l; i++) {\n\t\t\t\tlist[i] = { hor: hor[i], ver: ver[i] };\n\t\t\t}\n\t\t\treturn list;\n\t\t}\n\t\treturn this.findBoundsCollisions(bounds1, bounds2, tolerance || 0);\n\t},\n\n\tfindBoundsCollisions: function(boundsA, boundsB, tolerance,\n\t\tsweepVertical, onlySweepAxisCollisions) {\n\t\tvar self = !boundsB || boundsA === boundsB,\n\t\t\tallBounds = self ? boundsA : boundsA.concat(boundsB),\n\t\t\tlengthA = boundsA.length,\n\t\t\tlengthAll = allBounds.length;\n\n\t\tfunction binarySearch(indices, coord, value) {\n\t\t\tvar lo = 0,\n\t\t\t\thi = indices.length;\n\t\t\twhile (lo < hi) {\n\t\t\t\tvar mid = (hi + lo) >>> 1;\n\t\t\t\tif (allBounds[indices[mid]][coord] < value) {\n\t\t\t\t\tlo = mid + 1;\n\t\t\t\t} else {\n\t\t\t\t\thi = mid;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn lo - 1;\n\t\t}\n\n\t\tvar pri0 = sweepVertical ? 1 : 0,\n\t\t\tpri1 = pri0 + 2,\n\t\t\tsec0 = sweepVertical ? 0 : 1,\n\t\t\tsec1 = sec0 + 2;\n\t\tvar allIndicesByPri0 = new Array(lengthAll);\n\t\tfor (var i = 0; i < lengthAll; i++) {\n\t\t\tallIndicesByPri0[i] = i;\n\t\t}\n\t\tallIndicesByPri0.sort(function(i1, i2) {\n\t\t\treturn allBounds[i1][pri0] - allBounds[i2][pri0];\n\t\t});\n\t\tvar activeIndicesByPri1 = [],\n\t\t\tallCollisions = new Array(lengthA);\n\t\tfor (var i = 0; i < lengthAll; i++) {\n\t\t\tvar curIndex = allIndicesByPri0[i],\n\t\t\t\tcurBounds = allBounds[curIndex],\n\t\t\t\torigIndex = self ? curIndex : curIndex - lengthA,\n\t\t\t\tisCurrentA = curIndex < lengthA,\n\t\t\t\tisCurrentB = self || !isCurrentA,\n\t\t\t\tcurCollisions = isCurrentA ? [] : null;\n\t\t\tif (activeIndicesByPri1.length) {\n\t\t\t\tvar pruneCount = binarySearch(activeIndicesByPri1, pri1,\n\t\t\t\t\t\tcurBounds[pri0] - tolerance) + 1;\n\t\t\t\tactiveIndicesByPri1.splice(0, pruneCount);\n\t\t\t\tif (self && onlySweepAxisCollisions) {\n\t\t\t\t\tcurCollisions = curCollisions.concat(activeIndicesByPri1);\n\t\t\t\t\tfor (var j = 0; j < activeIndicesByPri1.length; j++) {\n\t\t\t\t\t\tvar activeIndex = activeIndicesByPri1[j];\n\t\t\t\t\t\tallCollisions[activeIndex].push(origIndex);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar curSec1 = curBounds[sec1],\n\t\t\t\t\t\tcurSec0 = curBounds[sec0];\n\t\t\t\t\tfor (var j = 0; j < activeIndicesByPri1.length; j++) {\n\t\t\t\t\t\tvar activeIndex = activeIndicesByPri1[j],\n\t\t\t\t\t\t\tactiveBounds = allBounds[activeIndex],\n\t\t\t\t\t\t\tisActiveA = activeIndex < lengthA,\n\t\t\t\t\t\t\tisActiveB = self || activeIndex >= lengthA;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tonlySweepAxisCollisions ||\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\tisCurrentA && isActiveB ||\n\t\t\t\t\t\t\t\tisCurrentB && isActiveA\n\t\t\t\t\t\t\t) && (\n\t\t\t\t\t\t\t\tcurSec1 >= activeBounds[sec0] - tolerance &&\n\t\t\t\t\t\t\t\tcurSec0 <= activeBounds[sec1] + tolerance\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (isCurrentA && isActiveB) {\n\t\t\t\t\t\t\t\tcurCollisions.push(\n\t\t\t\t\t\t\t\t\tself ? activeIndex : activeIndex - lengthA);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (isCurrentB && isActiveA) {\n\t\t\t\t\t\t\t\tallCollisions[activeIndex].push(origIndex);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isCurrentA) {\n\t\t\t\tif (boundsA === boundsB) {\n\t\t\t\t\tcurCollisions.push(curIndex);\n\t\t\t\t}\n\t\t\t\tallCollisions[curIndex] = curCollisions;\n\t\t\t}\n\t\t\tif (activeIndicesByPri1.length) {\n\t\t\t\tvar curPri1 = curBounds[pri1],\n\t\t\t\t\tindex = binarySearch(activeIndicesByPri1, pri1, curPri1);\n\t\t\t\tactiveIndicesByPri1.splice(index + 1, 0, curIndex);\n\t\t\t} else {\n\t\t\t\tactiveIndicesByPri1.push(curIndex);\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < allCollisions.length; i++) {\n\t\t\tvar collisions = allCollisions[i];\n\t\t\tif (collisions) {\n\t\t\t\tcollisions.sort(function(i1, i2) { return i1 - i2; });\n\t\t\t}\n\t\t}\n\t\treturn allCollisions;\n\t}\n};\n\nvar Formatter = Base.extend({\n\tinitialize: function(precision) {\n\t\tthis.precision = Base.pick(precision, 5);\n\t\tthis.multiplier = Math.pow(10, this.precision);\n\t},\n\n\tnumber: function(val) {\n\t\treturn this.precision < 16\n\t\t\t\t? Math.round(val * this.multiplier) / this.multiplier : val;\n\t},\n\n\tpair: function(val1, val2, separator) {\n\t\treturn this.number(val1) + (separator || ',') + this.number(val2);\n\t},\n\n\tpoint: function(val, separator) {\n\t\treturn this.number(val.x) + (separator || ',') + this.number(val.y);\n\t},\n\n\tsize: function(val, separator) {\n\t\treturn this.number(val.width) + (separator || ',')\n\t\t\t\t+ this.number(val.height);\n\t},\n\n\trectangle: function(val, separator) {\n\t\treturn this.point(val, separator) + (separator || ',')\n\t\t\t\t+ this.size(val, separator);\n\t}\n});\n\nFormatter.instance = new Formatter();\n\nvar Numerical = new function() {\n\n\tvar abscissas = [\n\t\t[  0.5773502691896257645091488],\n\t\t[0,0.7745966692414833770358531],\n\t\t[  0.3399810435848562648026658,0.8611363115940525752239465],\n\t\t[0,0.5384693101056830910363144,0.9061798459386639927976269],\n\t\t[  0.2386191860831969086305017,0.6612093864662645136613996,0.9324695142031520278123016],\n\t\t[0,0.4058451513773971669066064,0.7415311855993944398638648,0.9491079123427585245261897],\n\t\t[  0.1834346424956498049394761,0.5255324099163289858177390,0.7966664774136267395915539,0.9602898564975362316835609],\n\t\t[0,0.3242534234038089290385380,0.6133714327005903973087020,0.8360311073266357942994298,0.9681602395076260898355762],\n\t\t[  0.1488743389816312108848260,0.4333953941292471907992659,0.6794095682990244062343274,0.8650633666889845107320967,0.9739065285171717200779640],\n\t\t[0,0.2695431559523449723315320,0.5190961292068118159257257,0.7301520055740493240934163,0.8870625997680952990751578,0.9782286581460569928039380],\n\t\t[  0.1252334085114689154724414,0.3678314989981801937526915,0.5873179542866174472967024,0.7699026741943046870368938,0.9041172563704748566784659,0.9815606342467192506905491],\n\t\t[0,0.2304583159551347940655281,0.4484927510364468528779129,0.6423493394403402206439846,0.8015780907333099127942065,0.9175983992229779652065478,0.9841830547185881494728294],\n\t\t[  0.1080549487073436620662447,0.3191123689278897604356718,0.5152486363581540919652907,0.6872929048116854701480198,0.8272013150697649931897947,0.9284348836635735173363911,0.9862838086968123388415973],\n\t\t[0,0.2011940939974345223006283,0.3941513470775633698972074,0.5709721726085388475372267,0.7244177313601700474161861,0.8482065834104272162006483,0.9372733924007059043077589,0.9879925180204854284895657],\n\t\t[  0.0950125098376374401853193,0.2816035507792589132304605,0.4580167776572273863424194,0.6178762444026437484466718,0.7554044083550030338951012,0.8656312023878317438804679,0.9445750230732325760779884,0.9894009349916499325961542]\n\t];\n\n\tvar weights = [\n\t\t[1],\n\t\t[0.8888888888888888888888889,0.5555555555555555555555556],\n\t\t[0.6521451548625461426269361,0.3478548451374538573730639],\n\t\t[0.5688888888888888888888889,0.4786286704993664680412915,0.2369268850561890875142640],\n\t\t[0.4679139345726910473898703,0.3607615730481386075698335,0.1713244923791703450402961],\n\t\t[0.4179591836734693877551020,0.3818300505051189449503698,0.2797053914892766679014678,0.1294849661688696932706114],\n\t\t[0.3626837833783619829651504,0.3137066458778872873379622,0.2223810344533744705443560,0.1012285362903762591525314],\n\t\t[0.3302393550012597631645251,0.3123470770400028400686304,0.2606106964029354623187429,0.1806481606948574040584720,0.0812743883615744119718922],\n\t\t[0.2955242247147528701738930,0.2692667193099963550912269,0.2190863625159820439955349,0.1494513491505805931457763,0.0666713443086881375935688],\n\t\t[0.2729250867779006307144835,0.2628045445102466621806889,0.2331937645919904799185237,0.1862902109277342514260976,0.1255803694649046246346943,0.0556685671161736664827537],\n\t\t[0.2491470458134027850005624,0.2334925365383548087608499,0.2031674267230659217490645,0.1600783285433462263346525,0.1069393259953184309602547,0.0471753363865118271946160],\n\t\t[0.2325515532308739101945895,0.2262831802628972384120902,0.2078160475368885023125232,0.1781459807619457382800467,0.1388735102197872384636018,0.0921214998377284479144218,0.0404840047653158795200216],\n\t\t[0.2152638534631577901958764,0.2051984637212956039659241,0.1855383974779378137417166,0.1572031671581935345696019,0.1215185706879031846894148,0.0801580871597602098056333,0.0351194603317518630318329],\n\t\t[0.2025782419255612728806202,0.1984314853271115764561183,0.1861610000155622110268006,0.1662692058169939335532009,0.1395706779261543144478048,0.1071592204671719350118695,0.0703660474881081247092674,0.0307532419961172683546284],\n\t\t[0.1894506104550684962853967,0.1826034150449235888667637,0.1691565193950025381893121,0.1495959888165767320815017,0.1246289712555338720524763,0.0951585116824927848099251,0.0622535239386478928628438,0.0271524594117540948517806]\n\t];\n\n\tvar abs = Math.abs,\n\t\tsqrt = Math.sqrt,\n\t\tpow = Math.pow,\n\t\tlog2 = Math.log2 || function(x) {\n\t\t\treturn Math.log(x) * Math.LOG2E;\n\t\t},\n\t\tEPSILON = 1e-12,\n\t\tMACHINE_EPSILON = 1.12e-16;\n\n\tfunction clamp(value, min, max) {\n\t\treturn value < min ? min : value > max ? max : value;\n\t}\n\n\tfunction getDiscriminant(a, b, c) {\n\t\tfunction split(v) {\n\t\t\tvar x = v * 134217729,\n\t\t\t\ty = v - x,\n\t\t\t\thi = y + x,\n\t\t\t\tlo = v - hi;\n\t\t\treturn [hi, lo];\n\t\t}\n\n\t\tvar D = b * b - a * c,\n\t\t\tE = b * b + a * c;\n\t\tif (abs(D) * 3 < E) {\n\t\t\tvar ad = split(a),\n\t\t\t\tbd = split(b),\n\t\t\t\tcd = split(c),\n\t\t\t\tp = b * b,\n\t\t\t\tdp = (bd[0] * bd[0] - p + 2 * bd[0] * bd[1]) + bd[1] * bd[1],\n\t\t\t\tq = a * c,\n\t\t\t\tdq = (ad[0] * cd[0] - q + ad[0] * cd[1] + ad[1] * cd[0])\n\t\t\t\t\t\t+ ad[1] * cd[1];\n\t\t\tD = (p - q) + (dp - dq);\n\t\t}\n\t\treturn D;\n\t}\n\n\tfunction getNormalizationFactor() {\n\t\tvar norm = Math.max.apply(Math, arguments);\n\t\treturn norm && (norm < 1e-8 || norm > 1e8)\n\t\t\t\t? pow(2, -Math.round(log2(norm)))\n\t\t\t\t: 0;\n\t}\n\n\treturn {\n\t\tEPSILON: EPSILON,\n\t\tMACHINE_EPSILON: MACHINE_EPSILON,\n\t\tCURVETIME_EPSILON: 1e-8,\n\t\tGEOMETRIC_EPSILON: 1e-7,\n\t\tTRIGONOMETRIC_EPSILON: 1e-8,\n\t\tKAPPA: 4 * (sqrt(2) - 1) / 3,\n\n\t\tisZero: function(val) {\n\t\t\treturn val >= -EPSILON && val <= EPSILON;\n\t\t},\n\n\t\tisMachineZero: function(val) {\n\t\t\treturn val >= -MACHINE_EPSILON && val <= MACHINE_EPSILON;\n\t\t},\n\n\t\tclamp: clamp,\n\n\t\tintegrate: function(f, a, b, n) {\n\t\t\tvar x = abscissas[n - 2],\n\t\t\t\tw = weights[n - 2],\n\t\t\t\tA = (b - a) * 0.5,\n\t\t\t\tB = A + a,\n\t\t\t\ti = 0,\n\t\t\t\tm = (n + 1) >> 1,\n\t\t\t\tsum = n & 1 ? w[i++] * f(B) : 0;\n\t\t\twhile (i < m) {\n\t\t\t\tvar Ax = A * x[i];\n\t\t\t\tsum += w[i++] * (f(B + Ax) + f(B - Ax));\n\t\t\t}\n\t\t\treturn A * sum;\n\t\t},\n\n\t\tfindRoot: function(f, df, x, a, b, n, tolerance) {\n\t\t\tfor (var i = 0; i < n; i++) {\n\t\t\t\tvar fx = f(x),\n\t\t\t\t\tdx = fx / df(x),\n\t\t\t\t\tnx = x - dx;\n\t\t\t\tif (abs(dx) < tolerance) {\n\t\t\t\t\tx = nx;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (fx > 0) {\n\t\t\t\t\tb = x;\n\t\t\t\t\tx = nx <= a ? (a + b) * 0.5 : nx;\n\t\t\t\t} else {\n\t\t\t\t\ta = x;\n\t\t\t\t\tx = nx >= b ? (a + b) * 0.5 : nx;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn clamp(x, a, b);\n\t\t},\n\n\t\tsolveQuadratic: function(a, b, c, roots, min, max) {\n\t\t\tvar x1, x2 = Infinity;\n\t\t\tif (abs(a) < EPSILON) {\n\t\t\t\tif (abs(b) < EPSILON)\n\t\t\t\t\treturn abs(c) < EPSILON ? -1 : 0;\n\t\t\t\tx1 = -c / b;\n\t\t\t} else {\n\t\t\t\tb *= -0.5;\n\t\t\t\tvar D = getDiscriminant(a, b, c);\n\t\t\t\tif (D && abs(D) < MACHINE_EPSILON) {\n\t\t\t\t\tvar f = getNormalizationFactor(abs(a), abs(b), abs(c));\n\t\t\t\t\tif (f) {\n\t\t\t\t\t\ta *= f;\n\t\t\t\t\t\tb *= f;\n\t\t\t\t\t\tc *= f;\n\t\t\t\t\t\tD = getDiscriminant(a, b, c);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (D >= -MACHINE_EPSILON) {\n\t\t\t\t\tvar Q = D < 0 ? 0 : sqrt(D),\n\t\t\t\t\t\tR = b + (b < 0 ? -Q : Q);\n\t\t\t\t\tif (R === 0) {\n\t\t\t\t\t\tx1 = c / a;\n\t\t\t\t\t\tx2 = -x1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tx1 = R / a;\n\t\t\t\t\t\tx2 = c / R;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar count = 0,\n\t\t\t\tboundless = min == null,\n\t\t\t\tminB = min - EPSILON,\n\t\t\t\tmaxB = max + EPSILON;\n\t\t\tif (isFinite(x1) && (boundless || x1 > minB && x1 < maxB))\n\t\t\t\troots[count++] = boundless ? x1 : clamp(x1, min, max);\n\t\t\tif (x2 !== x1\n\t\t\t\t\t&& isFinite(x2) && (boundless || x2 > minB && x2 < maxB))\n\t\t\t\troots[count++] = boundless ? x2 : clamp(x2, min, max);\n\t\t\treturn count;\n\t\t},\n\n\t\tsolveCubic: function(a, b, c, d, roots, min, max) {\n\t\t\tvar f = getNormalizationFactor(abs(a), abs(b), abs(c), abs(d)),\n\t\t\t\tx, b1, c2, qd, q;\n\t\t\tif (f) {\n\t\t\t\ta *= f;\n\t\t\t\tb *= f;\n\t\t\t\tc *= f;\n\t\t\t\td *= f;\n\t\t\t}\n\n\t\t\tfunction evaluate(x0) {\n\t\t\t\tx = x0;\n\t\t\t\tvar tmp = a * x;\n\t\t\t\tb1 = tmp + b;\n\t\t\t\tc2 = b1 * x + c;\n\t\t\t\tqd = (tmp + b1) * x + c2;\n\t\t\t\tq = c2 * x + d;\n\t\t\t}\n\n\t\t\tif (abs(a) < EPSILON) {\n\t\t\t\ta = b;\n\t\t\t\tb1 = c;\n\t\t\t\tc2 = d;\n\t\t\t\tx = Infinity;\n\t\t\t} else if (abs(d) < EPSILON) {\n\t\t\t\tb1 = b;\n\t\t\t\tc2 = c;\n\t\t\t\tx = 0;\n\t\t\t} else {\n\t\t\t\tevaluate(-(b / a) / 3);\n\t\t\t\tvar t = q / a,\n\t\t\t\t\tr = pow(abs(t), 1/3),\n\t\t\t\t\ts = t < 0 ? -1 : 1,\n\t\t\t\t\ttd = -qd / a,\n\t\t\t\t\trd = td > 0 ? 1.324717957244746 * Math.max(r, sqrt(td)) : r,\n\t\t\t\t\tx0 = x - s * rd;\n\t\t\t\tif (x0 !== x) {\n\t\t\t\t\tdo {\n\t\t\t\t\t\tevaluate(x0);\n\t\t\t\t\t\tx0 = qd === 0 ? x : x - q / qd / (1 + MACHINE_EPSILON);\n\t\t\t\t\t} while (s * x0 > s * x);\n\t\t\t\t\tif (abs(a) * x * x > abs(d / x)) {\n\t\t\t\t\t\tc2 = -d / x;\n\t\t\t\t\t\tb1 = (c2 - c) / x;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar count = Numerical.solveQuadratic(a, b1, c2, roots, min, max),\n\t\t\t\tboundless = min == null;\n\t\t\tif (isFinite(x) && (count === 0\n\t\t\t\t\t|| count > 0 && x !== roots[0] && x !== roots[1])\n\t\t\t\t\t&& (boundless || x > min - EPSILON && x < max + EPSILON))\n\t\t\t\troots[count++] = boundless ? x : clamp(x, min, max);\n\t\t\treturn count;\n\t\t}\n\t};\n};\n\nvar UID = {\n\t_id: 1,\n\t_pools: {},\n\n\tget: function(name) {\n\t\tif (name) {\n\t\t\tvar pool = this._pools[name];\n\t\t\tif (!pool)\n\t\t\t\tpool = this._pools[name] = { _id: 1 };\n\t\t\treturn pool._id++;\n\t\t} else {\n\t\t\treturn this._id++;\n\t\t}\n\t}\n};\n\nvar Point = Base.extend({\n\t_class: 'Point',\n\t_readIndex: true,\n\n\tinitialize: function Point(arg0, arg1) {\n\t\tvar type = typeof arg0,\n\t\t\treading = this.__read,\n\t\t\tread = 0;\n\t\tif (type === 'number') {\n\t\t\tvar hasY = typeof arg1 === 'number';\n\t\t\tthis._set(arg0, hasY ? arg1 : arg0);\n\t\t\tif (reading)\n\t\t\t\tread = hasY ? 2 : 1;\n\t\t} else if (type === 'undefined' || arg0 === null) {\n\t\t\tthis._set(0, 0);\n\t\t\tif (reading)\n\t\t\t\tread = arg0 === null ? 1 : 0;\n\t\t} else {\n\t\t\tvar obj = type === 'string' ? arg0.split(/[\\s,]+/) || [] : arg0;\n\t\t\tread = 1;\n\t\t\tif (Array.isArray(obj)) {\n\t\t\t\tthis._set(+obj[0], +(obj.length > 1 ? obj[1] : obj[0]));\n\t\t\t} else if ('x' in obj) {\n\t\t\t\tthis._set(obj.x || 0, obj.y || 0);\n\t\t\t} else if ('width' in obj) {\n\t\t\t\tthis._set(obj.width || 0, obj.height || 0);\n\t\t\t} else if ('angle' in obj) {\n\t\t\t\tthis._set(obj.length || 0, 0);\n\t\t\t\tthis.setAngle(obj.angle || 0);\n\t\t\t} else {\n\t\t\t\tthis._set(0, 0);\n\t\t\t\tread = 0;\n\t\t\t}\n\t\t}\n\t\tif (reading)\n\t\t\tthis.__read = read;\n\t\treturn this;\n\t},\n\n\tset: '#initialize',\n\n\t_set: function(x, y) {\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\treturn this;\n\t},\n\n\tequals: function(point) {\n\t\treturn this === point || point\n\t\t\t\t&& (this.x === point.x && this.y === point.y\n\t\t\t\t\t|| Array.isArray(point)\n\t\t\t\t\t\t&& this.x === point[0] && this.y === point[1])\n\t\t\t\t|| false;\n\t},\n\n\tclone: function() {\n\t\treturn new Point(this.x, this.y);\n\t},\n\n\ttoString: function() {\n\t\tvar f = Formatter.instance;\n\t\treturn '{ x: ' + f.number(this.x) + ', y: ' + f.number(this.y) + ' }';\n\t},\n\n\t_serialize: function(options) {\n\t\tvar f = options.formatter;\n\t\treturn [f.number(this.x), f.number(this.y)];\n\t},\n\n\tgetLength: function() {\n\t\treturn Math.sqrt(this.x * this.x + this.y * this.y);\n\t},\n\n\tsetLength: function(length) {\n\t\tif (this.isZero()) {\n\t\t\tvar angle = this._angle || 0;\n\t\t\tthis._set(\n\t\t\t\tMath.cos(angle) * length,\n\t\t\t\tMath.sin(angle) * length\n\t\t\t);\n\t\t} else {\n\t\t\tvar scale = length / this.getLength();\n\t\t\tif (Numerical.isZero(scale))\n\t\t\t\tthis.getAngle();\n\t\t\tthis._set(\n\t\t\t\tthis.x * scale,\n\t\t\t\tthis.y * scale\n\t\t\t);\n\t\t}\n\t},\n\tgetAngle: function() {\n\t\treturn this.getAngleInRadians.apply(this, arguments) * 180 / Math.PI;\n\t},\n\n\tsetAngle: function(angle) {\n\t\tthis.setAngleInRadians.call(this, angle * Math.PI / 180);\n\t},\n\n\tgetAngleInDegrees: '#getAngle',\n\tsetAngleInDegrees: '#setAngle',\n\n\tgetAngleInRadians: function() {\n\t\tif (!arguments.length) {\n\t\t\treturn this.isZero()\n\t\t\t\t\t? this._angle || 0\n\t\t\t\t\t: this._angle = Math.atan2(this.y, this.x);\n\t\t} else {\n\t\t\tvar point = Point.read(arguments),\n\t\t\t\tdiv = this.getLength() * point.getLength();\n\t\t\tif (Numerical.isZero(div)) {\n\t\t\t\treturn NaN;\n\t\t\t} else {\n\t\t\t\tvar a = this.dot(point) / div;\n\t\t\t\treturn Math.acos(a < -1 ? -1 : a > 1 ? 1 : a);\n\t\t\t}\n\t\t}\n\t},\n\n\tsetAngleInRadians: function(angle) {\n\t\tthis._angle = angle;\n\t\tif (!this.isZero()) {\n\t\t\tvar length = this.getLength();\n\t\t\tthis._set(\n\t\t\t\tMath.cos(angle) * length,\n\t\t\t\tMath.sin(angle) * length\n\t\t\t);\n\t\t}\n\t},\n\n\tgetQuadrant: function() {\n\t\treturn this.x >= 0 ? this.y >= 0 ? 1 : 4 : this.y >= 0 ? 2 : 3;\n\t}\n}, {\n\tbeans: false,\n\n\tgetDirectedAngle: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn Math.atan2(this.cross(point), this.dot(point)) * 180 / Math.PI;\n\t},\n\n\tgetDistance: function() {\n\t\tvar args = arguments,\n\t\t\tpoint = Point.read(args),\n\t\t\tx = point.x - this.x,\n\t\t\ty = point.y - this.y,\n\t\t\td = x * x + y * y,\n\t\t\tsquared = Base.read(args);\n\t\treturn squared ? d : Math.sqrt(d);\n\t},\n\n\tnormalize: function(length) {\n\t\tif (length === undefined)\n\t\t\tlength = 1;\n\t\tvar current = this.getLength(),\n\t\t\tscale = current !== 0 ? length / current : 0,\n\t\t\tpoint = new Point(this.x * scale, this.y * scale);\n\t\tif (scale >= 0)\n\t\t\tpoint._angle = this._angle;\n\t\treturn point;\n\t},\n\n\trotate: function(angle, center) {\n\t\tif (angle === 0)\n\t\t\treturn this.clone();\n\t\tangle = angle * Math.PI / 180;\n\t\tvar point = center ? this.subtract(center) : this,\n\t\t\tsin = Math.sin(angle),\n\t\t\tcos = Math.cos(angle);\n\t\tpoint = new Point(\n\t\t\tpoint.x * cos - point.y * sin,\n\t\t\tpoint.x * sin + point.y * cos\n\t\t);\n\t\treturn center ? point.add(center) : point;\n\t},\n\n\ttransform: function(matrix) {\n\t\treturn matrix ? matrix._transformPoint(this) : this;\n\t},\n\n\tadd: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn new Point(this.x + point.x, this.y + point.y);\n\t},\n\n\tsubtract: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn new Point(this.x - point.x, this.y - point.y);\n\t},\n\n\tmultiply: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn new Point(this.x * point.x, this.y * point.y);\n\t},\n\n\tdivide: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn new Point(this.x / point.x, this.y / point.y);\n\t},\n\n\tmodulo: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn new Point(this.x % point.x, this.y % point.y);\n\t},\n\n\tnegate: function() {\n\t\treturn new Point(-this.x, -this.y);\n\t},\n\n\tisInside: function() {\n\t\treturn Rectangle.read(arguments).contains(this);\n\t},\n\n\tisClose: function() {\n\t\tvar args = arguments,\n\t\t\tpoint = Point.read(args),\n\t\t\ttolerance = Base.read(args);\n\t\treturn this.getDistance(point) <= tolerance;\n\t},\n\n\tisCollinear: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn Point.isCollinear(this.x, this.y, point.x, point.y);\n\t},\n\n\tisColinear: '#isCollinear',\n\n\tisOrthogonal: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn Point.isOrthogonal(this.x, this.y, point.x, point.y);\n\t},\n\n\tisZero: function() {\n\t\tvar isZero = Numerical.isZero;\n\t\treturn isZero(this.x) && isZero(this.y);\n\t},\n\n\tisNaN: function() {\n\t\treturn isNaN(this.x) || isNaN(this.y);\n\t},\n\n\tisInQuadrant: function(q) {\n\t\treturn this.x * (q > 1 && q < 4 ? -1 : 1) >= 0\n\t\t\t&& this.y * (q > 2 ? -1 : 1) >= 0;\n\t},\n\n\tdot: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn this.x * point.x + this.y * point.y;\n\t},\n\n\tcross: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn this.x * point.y - this.y * point.x;\n\t},\n\n\tproject: function() {\n\t\tvar point = Point.read(arguments),\n\t\t\tscale = point.isZero() ? 0 : this.dot(point) / point.dot(point);\n\t\treturn new Point(\n\t\t\tpoint.x * scale,\n\t\t\tpoint.y * scale\n\t\t);\n\t},\n\n\tstatics: {\n\t\tmin: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tpoint1 = Point.read(args),\n\t\t\t\tpoint2 = Point.read(args);\n\t\t\treturn new Point(\n\t\t\t\tMath.min(point1.x, point2.x),\n\t\t\t\tMath.min(point1.y, point2.y)\n\t\t\t);\n\t\t},\n\n\t\tmax: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tpoint1 = Point.read(args),\n\t\t\t\tpoint2 = Point.read(args);\n\t\t\treturn new Point(\n\t\t\t\tMath.max(point1.x, point2.x),\n\t\t\t\tMath.max(point1.y, point2.y)\n\t\t\t);\n\t\t},\n\n\t\trandom: function() {\n\t\t\treturn new Point(Math.random(), Math.random());\n\t\t},\n\n\t\tisCollinear: function(x1, y1, x2, y2) {\n\t\t\treturn Math.abs(x1 * y2 - y1 * x2)\n\t\t\t\t\t<= Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2))\n\t\t\t\t\t\t* 1e-8;\n\t\t},\n\n\t\tisOrthogonal: function(x1, y1, x2, y2) {\n\t\t\treturn Math.abs(x1 * x2 + y1 * y2)\n\t\t\t\t\t<= Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2))\n\t\t\t\t\t\t* 1e-8;\n\t\t}\n\t}\n}, Base.each(['round', 'ceil', 'floor', 'abs'], function(key) {\n\tvar op = Math[key];\n\tthis[key] = function() {\n\t\treturn new Point(op(this.x), op(this.y));\n\t};\n}, {}));\n\nvar LinkedPoint = Point.extend({\n\tinitialize: function Point(x, y, owner, setter) {\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._owner = owner;\n\t\tthis._setter = setter;\n\t},\n\n\t_set: function(x, y, _dontNotify) {\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tif (!_dontNotify)\n\t\t\tthis._owner[this._setter](this);\n\t\treturn this;\n\t},\n\n\tgetX: function() {\n\t\treturn this._x;\n\t},\n\n\tsetX: function(x) {\n\t\tthis._x = x;\n\t\tthis._owner[this._setter](this);\n\t},\n\n\tgetY: function() {\n\t\treturn this._y;\n\t},\n\n\tsetY: function(y) {\n\t\tthis._y = y;\n\t\tthis._owner[this._setter](this);\n\t},\n\n\tisSelected: function() {\n\t\treturn !!(this._owner._selection & this._getSelection());\n\t},\n\n\tsetSelected: function(selected) {\n\t\tthis._owner._changeSelection(this._getSelection(), selected);\n\t},\n\n\t_getSelection: function() {\n\t\treturn this._setter === 'setPosition' ? 4 : 0;\n\t}\n});\n\nvar Size = Base.extend({\n\t_class: 'Size',\n\t_readIndex: true,\n\n\tinitialize: function Size(arg0, arg1) {\n\t\tvar type = typeof arg0,\n\t\t\treading = this.__read,\n\t\t\tread = 0;\n\t\tif (type === 'number') {\n\t\t\tvar hasHeight = typeof arg1 === 'number';\n\t\t\tthis._set(arg0, hasHeight ? arg1 : arg0);\n\t\t\tif (reading)\n\t\t\t\tread = hasHeight ? 2 : 1;\n\t\t} else if (type === 'undefined' || arg0 === null) {\n\t\t\tthis._set(0, 0);\n\t\t\tif (reading)\n\t\t\t\tread = arg0 === null ? 1 : 0;\n\t\t} else {\n\t\t\tvar obj = type === 'string' ? arg0.split(/[\\s,]+/) || [] : arg0;\n\t\t\tread = 1;\n\t\t\tif (Array.isArray(obj)) {\n\t\t\t\tthis._set(+obj[0], +(obj.length > 1 ? obj[1] : obj[0]));\n\t\t\t} else if ('width' in obj) {\n\t\t\t\tthis._set(obj.width || 0, obj.height || 0);\n\t\t\t} else if ('x' in obj) {\n\t\t\t\tthis._set(obj.x || 0, obj.y || 0);\n\t\t\t} else {\n\t\t\t\tthis._set(0, 0);\n\t\t\t\tread = 0;\n\t\t\t}\n\t\t}\n\t\tif (reading)\n\t\t\tthis.__read = read;\n\t\treturn this;\n\t},\n\n\tset: '#initialize',\n\n\t_set: function(width, height) {\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\treturn this;\n\t},\n\n\tequals: function(size) {\n\t\treturn size === this || size && (this.width === size.width\n\t\t\t\t&& this.height === size.height\n\t\t\t\t|| Array.isArray(size) && this.width === size[0]\n\t\t\t\t\t&& this.height === size[1]) || false;\n\t},\n\n\tclone: function() {\n\t\treturn new Size(this.width, this.height);\n\t},\n\n\ttoString: function() {\n\t\tvar f = Formatter.instance;\n\t\treturn '{ width: ' + f.number(this.width)\n\t\t\t\t+ ', height: ' + f.number(this.height) + ' }';\n\t},\n\n\t_serialize: function(options) {\n\t\tvar f = options.formatter;\n\t\treturn [f.number(this.width),\n\t\t\t\tf.number(this.height)];\n\t},\n\n\tadd: function() {\n\t\tvar size = Size.read(arguments);\n\t\treturn new Size(this.width + size.width, this.height + size.height);\n\t},\n\n\tsubtract: function() {\n\t\tvar size = Size.read(arguments);\n\t\treturn new Size(this.width - size.width, this.height - size.height);\n\t},\n\n\tmultiply: function() {\n\t\tvar size = Size.read(arguments);\n\t\treturn new Size(this.width * size.width, this.height * size.height);\n\t},\n\n\tdivide: function() {\n\t\tvar size = Size.read(arguments);\n\t\treturn new Size(this.width / size.width, this.height / size.height);\n\t},\n\n\tmodulo: function() {\n\t\tvar size = Size.read(arguments);\n\t\treturn new Size(this.width % size.width, this.height % size.height);\n\t},\n\n\tnegate: function() {\n\t\treturn new Size(-this.width, -this.height);\n\t},\n\n\tisZero: function() {\n\t\tvar isZero = Numerical.isZero;\n\t\treturn isZero(this.width) && isZero(this.height);\n\t},\n\n\tisNaN: function() {\n\t\treturn isNaN(this.width) || isNaN(this.height);\n\t},\n\n\tstatics: {\n\t\tmin: function(size1, size2) {\n\t\t\treturn new Size(\n\t\t\t\tMath.min(size1.width, size2.width),\n\t\t\t\tMath.min(size1.height, size2.height));\n\t\t},\n\n\t\tmax: function(size1, size2) {\n\t\t\treturn new Size(\n\t\t\t\tMath.max(size1.width, size2.width),\n\t\t\t\tMath.max(size1.height, size2.height));\n\t\t},\n\n\t\trandom: function() {\n\t\t\treturn new Size(Math.random(), Math.random());\n\t\t}\n\t}\n}, Base.each(['round', 'ceil', 'floor', 'abs'], function(key) {\n\tvar op = Math[key];\n\tthis[key] = function() {\n\t\treturn new Size(op(this.width), op(this.height));\n\t};\n}, {}));\n\nvar LinkedSize = Size.extend({\n\tinitialize: function Size(width, height, owner, setter) {\n\t\tthis._width = width;\n\t\tthis._height = height;\n\t\tthis._owner = owner;\n\t\tthis._setter = setter;\n\t},\n\n\t_set: function(width, height, _dontNotify) {\n\t\tthis._width = width;\n\t\tthis._height = height;\n\t\tif (!_dontNotify)\n\t\t\tthis._owner[this._setter](this);\n\t\treturn this;\n\t},\n\n\tgetWidth: function() {\n\t\treturn this._width;\n\t},\n\n\tsetWidth: function(width) {\n\t\tthis._width = width;\n\t\tthis._owner[this._setter](this);\n\t},\n\n\tgetHeight: function() {\n\t\treturn this._height;\n\t},\n\n\tsetHeight: function(height) {\n\t\tthis._height = height;\n\t\tthis._owner[this._setter](this);\n\t}\n});\n\nvar Rectangle = Base.extend({\n\t_class: 'Rectangle',\n\t_readIndex: true,\n\tbeans: true,\n\n\tinitialize: function Rectangle(arg0, arg1, arg2, arg3) {\n\t\tvar args = arguments,\n\t\t\ttype = typeof arg0,\n\t\t\tread;\n\t\tif (type === 'number') {\n\t\t\tthis._set(arg0, arg1, arg2, arg3);\n\t\t\tread = 4;\n\t\t} else if (type === 'undefined' || arg0 === null) {\n\t\t\tthis._set(0, 0, 0, 0);\n\t\t\tread = arg0 === null ? 1 : 0;\n\t\t} else if (args.length === 1) {\n\t\t\tif (Array.isArray(arg0)) {\n\t\t\t\tthis._set.apply(this, arg0);\n\t\t\t\tread = 1;\n\t\t\t} else if (arg0.x !== undefined || arg0.width !== undefined) {\n\t\t\t\tthis._set(arg0.x || 0, arg0.y || 0,\n\t\t\t\t\t\targ0.width || 0, arg0.height || 0);\n\t\t\t\tread = 1;\n\t\t\t} else if (arg0.from === undefined && arg0.to === undefined) {\n\t\t\t\tthis._set(0, 0, 0, 0);\n\t\t\t\tif (Base.readSupported(args, this)) {\n\t\t\t\t\tread = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (read === undefined) {\n\t\t\tvar frm = Point.readNamed(args, 'from'),\n\t\t\t\tnext = Base.peek(args),\n\t\t\t\tx = frm.x,\n\t\t\t\ty = frm.y,\n\t\t\t\twidth,\n\t\t\t\theight;\n\t\t\tif (next && next.x !== undefined || Base.hasNamed(args, 'to')) {\n\t\t\t\tvar to = Point.readNamed(args, 'to');\n\t\t\t\twidth = to.x - x;\n\t\t\t\theight = to.y - y;\n\t\t\t\tif (width < 0) {\n\t\t\t\t\tx = to.x;\n\t\t\t\t\twidth = -width;\n\t\t\t\t}\n\t\t\t\tif (height < 0) {\n\t\t\t\t\ty = to.y;\n\t\t\t\t\theight = -height;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar size = Size.read(args);\n\t\t\t\twidth = size.width;\n\t\t\t\theight = size.height;\n\t\t\t}\n\t\t\tthis._set(x, y, width, height);\n\t\t\tread = args.__index;\n\t\t}\n\t\tvar filtered = args.__filtered;\n\t\tif (filtered)\n\t\t\tthis.__filtered = filtered;\n\t\tif (this.__read)\n\t\t\tthis.__read = read;\n\t\treturn this;\n\t},\n\n\tset: '#initialize',\n\n\t_set: function(x, y, width, height) {\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\treturn this;\n\t},\n\n\tclone: function() {\n\t\treturn new Rectangle(this.x, this.y, this.width, this.height);\n\t},\n\n\tequals: function(rect) {\n\t\tvar rt = Base.isPlainValue(rect)\n\t\t\t\t? Rectangle.read(arguments)\n\t\t\t\t: rect;\n\t\treturn rt === this\n\t\t\t\t|| rt && this.x === rt.x && this.y === rt.y\n\t\t\t\t\t&& this.width === rt.width && this.height === rt.height\n\t\t\t\t|| false;\n\t},\n\n\ttoString: function() {\n\t\tvar f = Formatter.instance;\n\t\treturn '{ x: ' + f.number(this.x)\n\t\t\t\t+ ', y: ' + f.number(this.y)\n\t\t\t\t+ ', width: ' + f.number(this.width)\n\t\t\t\t+ ', height: ' + f.number(this.height)\n\t\t\t\t+ ' }';\n\t},\n\n\t_serialize: function(options) {\n\t\tvar f = options.formatter;\n\t\treturn [f.number(this.x),\n\t\t\t\tf.number(this.y),\n\t\t\t\tf.number(this.width),\n\t\t\t\tf.number(this.height)];\n\t},\n\n\tgetPoint: function(_dontLink) {\n\t\tvar ctor = _dontLink ? Point : LinkedPoint;\n\t\treturn new ctor(this.x, this.y, this, 'setPoint');\n\t},\n\n\tsetPoint: function() {\n\t\tvar point = Point.read(arguments);\n\t\tthis.x = point.x;\n\t\tthis.y = point.y;\n\t},\n\n\tgetSize: function(_dontLink) {\n\t\tvar ctor = _dontLink ? Size : LinkedSize;\n\t\treturn new ctor(this.width, this.height, this, 'setSize');\n\t},\n\n\t_fw: 1,\n\t_fh: 1,\n\n\tsetSize: function() {\n\t\tvar size = Size.read(arguments),\n\t\t\tsx = this._sx,\n\t\t\tsy = this._sy,\n\t\t\tw = size.width,\n\t\t\th = size.height;\n\t\tif (sx) {\n\t\t\tthis.x += (this.width - w) * sx;\n\t\t}\n\t\tif (sy) {\n\t\t\tthis.y += (this.height - h) * sy;\n\t\t}\n\t\tthis.width = w;\n\t\tthis.height = h;\n\t\tthis._fw = this._fh = 1;\n\t},\n\n\tgetLeft: function() {\n\t\treturn this.x;\n\t},\n\n\tsetLeft: function(left) {\n\t\tif (!this._fw) {\n\t\t\tvar amount = left - this.x;\n\t\t\tthis.width -= this._sx === 0.5 ? amount * 2 : amount;\n\t\t}\n\t\tthis.x = left;\n\t\tthis._sx = this._fw = 0;\n\t},\n\n\tgetTop: function() {\n\t\treturn this.y;\n\t},\n\n\tsetTop: function(top) {\n\t\tif (!this._fh) {\n\t\t\tvar amount = top - this.y;\n\t\t\tthis.height -= this._sy === 0.5 ? amount * 2 : amount;\n\t\t}\n\t\tthis.y = top;\n\t\tthis._sy = this._fh = 0;\n\t},\n\n\tgetRight: function() {\n\t\treturn this.x + this.width;\n\t},\n\n\tsetRight: function(right) {\n\t\tif (!this._fw) {\n\t\t\tvar amount = right - this.x;\n\t\t\tthis.width = this._sx === 0.5 ? amount * 2 : amount;\n\t\t}\n\t\tthis.x = right - this.width;\n\t\tthis._sx = 1;\n\t\tthis._fw = 0;\n\t},\n\n\tgetBottom: function() {\n\t\treturn this.y + this.height;\n\t},\n\n\tsetBottom: function(bottom) {\n\t\tif (!this._fh) {\n\t\t\tvar amount = bottom - this.y;\n\t\t\tthis.height = this._sy === 0.5 ? amount * 2 : amount;\n\t\t}\n\t\tthis.y = bottom - this.height;\n\t\tthis._sy = 1;\n\t\tthis._fh = 0;\n\t},\n\n\tgetCenterX: function() {\n\t\treturn this.x + this.width / 2;\n\t},\n\n\tsetCenterX: function(x) {\n\t\tif (this._fw || this._sx === 0.5) {\n\t\t\tthis.x = x - this.width / 2;\n\t\t} else {\n\t\t\tif (this._sx) {\n\t\t\t\tthis.x += (x - this.x) * 2 * this._sx;\n\t\t\t}\n\t\t\tthis.width = (x - this.x) * 2;\n\t\t}\n\t\tthis._sx = 0.5;\n\t\tthis._fw = 0;\n\t},\n\n\tgetCenterY: function() {\n\t\treturn this.y + this.height / 2;\n\t},\n\n\tsetCenterY: function(y) {\n\t\tif (this._fh || this._sy === 0.5) {\n\t\t\tthis.y = y - this.height / 2;\n\t\t} else {\n\t\t\tif (this._sy) {\n\t\t\t\tthis.y += (y - this.y) * 2 * this._sy;\n\t\t\t}\n\t\t\tthis.height = (y - this.y) * 2;\n\t\t}\n\t\tthis._sy = 0.5;\n\t\tthis._fh = 0;\n\t},\n\n\tgetCenter: function(_dontLink) {\n\t\tvar ctor = _dontLink ? Point : LinkedPoint;\n\t\treturn new ctor(this.getCenterX(), this.getCenterY(), this, 'setCenter');\n\t},\n\n\tsetCenter: function() {\n\t\tvar point = Point.read(arguments);\n\t\tthis.setCenterX(point.x);\n\t\tthis.setCenterY(point.y);\n\t\treturn this;\n\t},\n\n\tgetArea: function() {\n\t\treturn this.width * this.height;\n\t},\n\n\tisEmpty: function() {\n\t\treturn this.width === 0 || this.height === 0;\n\t},\n\n\tcontains: function(arg) {\n\t\treturn arg && arg.width !== undefined\n\t\t\t\t|| (Array.isArray(arg) ? arg : arguments).length === 4\n\t\t\t\t? this._containsRectangle(Rectangle.read(arguments))\n\t\t\t\t: this._containsPoint(Point.read(arguments));\n\t},\n\n\t_containsPoint: function(point) {\n\t\tvar x = point.x,\n\t\t\ty = point.y;\n\t\treturn x >= this.x && y >= this.y\n\t\t\t\t&& x <= this.x + this.width\n\t\t\t\t&& y <= this.y + this.height;\n\t},\n\n\t_containsRectangle: function(rect) {\n\t\tvar x = rect.x,\n\t\t\ty = rect.y;\n\t\treturn x >= this.x && y >= this.y\n\t\t\t\t&& x + rect.width <= this.x + this.width\n\t\t\t\t&& y + rect.height <= this.y + this.height;\n\t},\n\n\tintersects: function() {\n\t\tvar rect = Rectangle.read(arguments),\n\t\t\tepsilon = Base.read(arguments) || 0;\n\t\treturn rect.x + rect.width > this.x - epsilon\n\t\t\t\t&& rect.y + rect.height > this.y - epsilon\n\t\t\t\t&& rect.x < this.x + this.width + epsilon\n\t\t\t\t&& rect.y < this.y + this.height + epsilon;\n\t},\n\n\tintersect: function() {\n\t\tvar rect = Rectangle.read(arguments),\n\t\t\tx1 = Math.max(this.x, rect.x),\n\t\t\ty1 = Math.max(this.y, rect.y),\n\t\t\tx2 = Math.min(this.x + this.width, rect.x + rect.width),\n\t\t\ty2 = Math.min(this.y + this.height, rect.y + rect.height);\n\t\treturn new Rectangle(x1, y1, x2 - x1, y2 - y1);\n\t},\n\n\tunite: function() {\n\t\tvar rect = Rectangle.read(arguments),\n\t\t\tx1 = Math.min(this.x, rect.x),\n\t\t\ty1 = Math.min(this.y, rect.y),\n\t\t\tx2 = Math.max(this.x + this.width, rect.x + rect.width),\n\t\t\ty2 = Math.max(this.y + this.height, rect.y + rect.height);\n\t\treturn new Rectangle(x1, y1, x2 - x1, y2 - y1);\n\t},\n\n\tinclude: function() {\n\t\tvar point = Point.read(arguments);\n\t\tvar x1 = Math.min(this.x, point.x),\n\t\t\ty1 = Math.min(this.y, point.y),\n\t\t\tx2 = Math.max(this.x + this.width, point.x),\n\t\t\ty2 = Math.max(this.y + this.height, point.y);\n\t\treturn new Rectangle(x1, y1, x2 - x1, y2 - y1);\n\t},\n\n\texpand: function() {\n\t\tvar amount = Size.read(arguments),\n\t\t\thor = amount.width,\n\t\t\tver = amount.height;\n\t\treturn new Rectangle(this.x - hor / 2, this.y - ver / 2,\n\t\t\t\tthis.width + hor, this.height + ver);\n\t},\n\n\tscale: function(hor, ver) {\n\t\treturn this.expand(this.width * hor - this.width,\n\t\t\t\tthis.height * (ver === undefined ? hor : ver) - this.height);\n\t}\n}, Base.each([\n\t\t['Top', 'Left'], ['Top', 'Right'],\n\t\t['Bottom', 'Left'], ['Bottom', 'Right'],\n\t\t['Left', 'Center'], ['Top', 'Center'],\n\t\t['Right', 'Center'], ['Bottom', 'Center']\n\t],\n\tfunction(parts, index) {\n\t\tvar part = parts.join(''),\n\t\t\txFirst = /^[RL]/.test(part);\n\t\tif (index >= 4)\n\t\t\tparts[1] += xFirst ? 'Y' : 'X';\n\t\tvar x = parts[xFirst ? 0 : 1],\n\t\t\ty = parts[xFirst ? 1 : 0],\n\t\t\tgetX = 'get' + x,\n\t\t\tgetY = 'get' + y,\n\t\t\tsetX = 'set' + x,\n\t\t\tsetY = 'set' + y,\n\t\t\tget = 'get' + part,\n\t\t\tset = 'set' + part;\n\t\tthis[get] = function(_dontLink) {\n\t\t\tvar ctor = _dontLink ? Point : LinkedPoint;\n\t\t\treturn new ctor(this[getX](), this[getY](), this, set);\n\t\t};\n\t\tthis[set] = function() {\n\t\t\tvar point = Point.read(arguments);\n\t\t\tthis[setX](point.x);\n\t\t\tthis[setY](point.y);\n\t\t};\n\t}, {\n\t\tbeans: true\n\t}\n));\n\nvar LinkedRectangle = Rectangle.extend({\n\tinitialize: function Rectangle(x, y, width, height, owner, setter) {\n\t\tthis._set(x, y, width, height, true);\n\t\tthis._owner = owner;\n\t\tthis._setter = setter;\n\t},\n\n\t_set: function(x, y, width, height, _dontNotify) {\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._width = width;\n\t\tthis._height = height;\n\t\tif (!_dontNotify)\n\t\t\tthis._owner[this._setter](this);\n\t\treturn this;\n\t}\n},\nnew function() {\n\tvar proto = Rectangle.prototype;\n\n\treturn Base.each(['x', 'y', 'width', 'height'], function(key) {\n\t\tvar part = Base.capitalize(key),\n\t\t\tinternal = '_' + key;\n\t\tthis['get' + part] = function() {\n\t\t\treturn this[internal];\n\t\t};\n\n\t\tthis['set' + part] = function(value) {\n\t\t\tthis[internal] = value;\n\t\t\tif (!this._dontNotify)\n\t\t\t\tthis._owner[this._setter](this);\n\t\t};\n\t}, Base.each(['Point', 'Size', 'Center',\n\t\t\t'Left', 'Top', 'Right', 'Bottom', 'CenterX', 'CenterY',\n\t\t\t'TopLeft', 'TopRight', 'BottomLeft', 'BottomRight',\n\t\t\t'LeftCenter', 'TopCenter', 'RightCenter', 'BottomCenter'],\n\t\tfunction(key) {\n\t\t\tvar name = 'set' + key;\n\t\t\tthis[name] = function() {\n\t\t\t\tthis._dontNotify = true;\n\t\t\t\tproto[name].apply(this, arguments);\n\t\t\t\tthis._dontNotify = false;\n\t\t\t\tthis._owner[this._setter](this);\n\t\t\t};\n\t\t}, {\n\t\t\tisSelected: function() {\n\t\t\t\treturn !!(this._owner._selection & 2);\n\t\t\t},\n\n\t\t\tsetSelected: function(selected) {\n\t\t\t\tvar owner = this._owner;\n\t\t\t\tif (owner._changeSelection) {\n\t\t\t\t\towner._changeSelection(2, selected);\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t);\n});\n\nvar Matrix = Base.extend({\n\t_class: 'Matrix',\n\n\tinitialize: function Matrix(arg, _dontNotify) {\n\t\tvar args = arguments,\n\t\t\tcount = args.length,\n\t\t\tok = true;\n\t\tif (count >= 6) {\n\t\t\tthis._set.apply(this, args);\n\t\t} else if (count === 1 || count === 2) {\n\t\t\tif (arg instanceof Matrix) {\n\t\t\t\tthis._set(arg._a, arg._b, arg._c, arg._d, arg._tx, arg._ty,\n\t\t\t\t\t\t_dontNotify);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tthis._set.apply(this,\n\t\t\t\t\t\t_dontNotify ? arg.concat([_dontNotify]) : arg);\n\t\t\t} else {\n\t\t\t\tok = false;\n\t\t\t}\n\t\t} else if (!count) {\n\t\t\tthis.reset();\n\t\t} else {\n\t\t\tok = false;\n\t\t}\n\t\tif (!ok) {\n\t\t\tthrow new Error('Unsupported matrix parameters');\n\t\t}\n\t\treturn this;\n\t},\n\n\tset: '#initialize',\n\n\t_set: function(a, b, c, d, tx, ty, _dontNotify) {\n\t\tthis._a = a;\n\t\tthis._b = b;\n\t\tthis._c = c;\n\t\tthis._d = d;\n\t\tthis._tx = tx;\n\t\tthis._ty = ty;\n\t\tif (!_dontNotify)\n\t\t\tthis._changed();\n\t\treturn this;\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\treturn Base.serialize(this.getValues(), options, true, dictionary);\n\t},\n\n\t_changed: function() {\n\t\tvar owner = this._owner;\n\t\tif (owner) {\n\t\t\tif (owner._applyMatrix) {\n\t\t\t\towner.transform(null, true);\n\t\t\t} else {\n\t\t\t\towner._changed(25);\n\t\t\t}\n\t\t}\n\t},\n\n\tclone: function() {\n\t\treturn new Matrix(this._a, this._b, this._c, this._d,\n\t\t\t\tthis._tx, this._ty);\n\t},\n\n\tequals: function(mx) {\n\t\treturn mx === this || mx && this._a === mx._a && this._b === mx._b\n\t\t\t\t&& this._c === mx._c && this._d === mx._d\n\t\t\t\t&& this._tx === mx._tx && this._ty === mx._ty;\n\t},\n\n\ttoString: function() {\n\t\tvar f = Formatter.instance;\n\t\treturn '[[' + [f.number(this._a), f.number(this._c),\n\t\t\t\t\tf.number(this._tx)].join(', ') + '], ['\n\t\t\t\t+ [f.number(this._b), f.number(this._d),\n\t\t\t\t\tf.number(this._ty)].join(', ') + ']]';\n\t},\n\n\treset: function(_dontNotify) {\n\t\tthis._a = this._d = 1;\n\t\tthis._b = this._c = this._tx = this._ty = 0;\n\t\tif (!_dontNotify)\n\t\t\tthis._changed();\n\t\treturn this;\n\t},\n\n\tapply: function(recursively, _setApplyMatrix) {\n\t\tvar owner = this._owner;\n\t\tif (owner) {\n\t\t\towner.transform(null, Base.pick(recursively, true), _setApplyMatrix);\n\t\t\treturn this.isIdentity();\n\t\t}\n\t\treturn false;\n\t},\n\n\ttranslate: function() {\n\t\tvar point = Point.read(arguments),\n\t\t\tx = point.x,\n\t\t\ty = point.y;\n\t\tthis._tx += x * this._a + y * this._c;\n\t\tthis._ty += x * this._b + y * this._d;\n\t\tthis._changed();\n\t\treturn this;\n\t},\n\n\tscale: function() {\n\t\tvar args = arguments,\n\t\t\tscale = Point.read(args),\n\t\t\tcenter = Point.read(args, 0, { readNull: true });\n\t\tif (center)\n\t\t\tthis.translate(center);\n\t\tthis._a *= scale.x;\n\t\tthis._b *= scale.x;\n\t\tthis._c *= scale.y;\n\t\tthis._d *= scale.y;\n\t\tif (center)\n\t\t\tthis.translate(center.negate());\n\t\tthis._changed();\n\t\treturn this;\n\t},\n\n\trotate: function(angle ) {\n\t\tangle *= Math.PI / 180;\n\t\tvar center = Point.read(arguments, 1),\n\t\t\tx = center.x,\n\t\t\ty = center.y,\n\t\t\tcos = Math.cos(angle),\n\t\t\tsin = Math.sin(angle),\n\t\t\ttx = x - x * cos + y * sin,\n\t\t\tty = y - x * sin - y * cos,\n\t\t\ta = this._a,\n\t\t\tb = this._b,\n\t\t\tc = this._c,\n\t\t\td = this._d;\n\t\tthis._a = cos * a + sin * c;\n\t\tthis._b = cos * b + sin * d;\n\t\tthis._c = -sin * a + cos * c;\n\t\tthis._d = -sin * b + cos * d;\n\t\tthis._tx += tx * a + ty * c;\n\t\tthis._ty += tx * b + ty * d;\n\t\tthis._changed();\n\t\treturn this;\n\t},\n\n\tshear: function() {\n\t\tvar args = arguments,\n\t\t\tshear = Point.read(args),\n\t\t\tcenter = Point.read(args, 0, { readNull: true });\n\t\tif (center)\n\t\t\tthis.translate(center);\n\t\tvar a = this._a,\n\t\t\tb = this._b;\n\t\tthis._a += shear.y * this._c;\n\t\tthis._b += shear.y * this._d;\n\t\tthis._c += shear.x * a;\n\t\tthis._d += shear.x * b;\n\t\tif (center)\n\t\t\tthis.translate(center.negate());\n\t\tthis._changed();\n\t\treturn this;\n\t},\n\n\tskew: function() {\n\t\tvar args = arguments,\n\t\t\tskew = Point.read(args),\n\t\t\tcenter = Point.read(args, 0, { readNull: true }),\n\t\t\ttoRadians = Math.PI / 180,\n\t\t\tshear = new Point(Math.tan(skew.x * toRadians),\n\t\t\t\tMath.tan(skew.y * toRadians));\n\t\treturn this.shear(shear, center);\n\t},\n\n\tappend: function(mx, _dontNotify) {\n\t\tif (mx) {\n\t\t\tvar a1 = this._a,\n\t\t\t\tb1 = this._b,\n\t\t\t\tc1 = this._c,\n\t\t\t\td1 = this._d,\n\t\t\t\ta2 = mx._a,\n\t\t\t\tb2 = mx._c,\n\t\t\t\tc2 = mx._b,\n\t\t\t\td2 = mx._d,\n\t\t\t\ttx2 = mx._tx,\n\t\t\t\tty2 = mx._ty;\n\t\t\tthis._a = a2 * a1 + c2 * c1;\n\t\t\tthis._c = b2 * a1 + d2 * c1;\n\t\t\tthis._b = a2 * b1 + c2 * d1;\n\t\t\tthis._d = b2 * b1 + d2 * d1;\n\t\t\tthis._tx += tx2 * a1 + ty2 * c1;\n\t\t\tthis._ty += tx2 * b1 + ty2 * d1;\n\t\t\tif (!_dontNotify)\n\t\t\t\tthis._changed();\n\t\t}\n\t\treturn this;\n\t},\n\n\tprepend: function(mx, _dontNotify) {\n\t\tif (mx) {\n\t\t\tvar a1 = this._a,\n\t\t\t\tb1 = this._b,\n\t\t\t\tc1 = this._c,\n\t\t\t\td1 = this._d,\n\t\t\t\ttx1 = this._tx,\n\t\t\t\tty1 = this._ty,\n\t\t\t\ta2 = mx._a,\n\t\t\t\tb2 = mx._c,\n\t\t\t\tc2 = mx._b,\n\t\t\t\td2 = mx._d,\n\t\t\t\ttx2 = mx._tx,\n\t\t\t\tty2 = mx._ty;\n\t\t\tthis._a = a2 * a1 + b2 * b1;\n\t\t\tthis._c = a2 * c1 + b2 * d1;\n\t\t\tthis._b = c2 * a1 + d2 * b1;\n\t\t\tthis._d = c2 * c1 + d2 * d1;\n\t\t\tthis._tx = a2 * tx1 + b2 * ty1 + tx2;\n\t\t\tthis._ty = c2 * tx1 + d2 * ty1 + ty2;\n\t\t\tif (!_dontNotify)\n\t\t\t\tthis._changed();\n\t\t}\n\t\treturn this;\n\t},\n\n\tappended: function(mx) {\n\t\treturn this.clone().append(mx);\n\t},\n\n\tprepended: function(mx) {\n\t\treturn this.clone().prepend(mx);\n\t},\n\n\tinvert: function() {\n\t\tvar a = this._a,\n\t\t\tb = this._b,\n\t\t\tc = this._c,\n\t\t\td = this._d,\n\t\t\ttx = this._tx,\n\t\t\tty = this._ty,\n\t\t\tdet = a * d - b * c,\n\t\t\tres = null;\n\t\tif (det && !isNaN(det) && isFinite(tx) && isFinite(ty)) {\n\t\t\tthis._a = d / det;\n\t\t\tthis._b = -b / det;\n\t\t\tthis._c = -c / det;\n\t\t\tthis._d = a / det;\n\t\t\tthis._tx = (c * ty - d * tx) / det;\n\t\t\tthis._ty = (b * tx - a * ty) / det;\n\t\t\tres = this;\n\t\t}\n\t\treturn res;\n\t},\n\n\tinverted: function() {\n\t\treturn this.clone().invert();\n\t},\n\n\tconcatenate: '#append',\n\tpreConcatenate: '#prepend',\n\tchain: '#appended',\n\n\t_shiftless: function() {\n\t\treturn new Matrix(this._a, this._b, this._c, this._d, 0, 0);\n\t},\n\n\t_orNullIfIdentity: function() {\n\t\treturn this.isIdentity() ? null : this;\n\t},\n\n\tisIdentity: function() {\n\t\treturn this._a === 1 && this._b === 0 && this._c === 0 && this._d === 1\n\t\t\t\t&& this._tx === 0 && this._ty === 0;\n\t},\n\n\tisInvertible: function() {\n\t\tvar det = this._a * this._d - this._c * this._b;\n\t\treturn det && !isNaN(det) && isFinite(this._tx) && isFinite(this._ty);\n\t},\n\n\tisSingular: function() {\n\t\treturn !this.isInvertible();\n\t},\n\n\ttransform: function( src, dst, count) {\n\t\treturn arguments.length < 3\n\t\t\t? this._transformPoint(Point.read(arguments))\n\t\t\t: this._transformCoordinates(src, dst, count);\n\t},\n\n\t_transformPoint: function(point, dest, _dontNotify) {\n\t\tvar x = point.x,\n\t\t\ty = point.y;\n\t\tif (!dest)\n\t\t\tdest = new Point();\n\t\treturn dest._set(\n\t\t\t\tx * this._a + y * this._c + this._tx,\n\t\t\t\tx * this._b + y * this._d + this._ty,\n\t\t\t\t_dontNotify);\n\t},\n\n\t_transformCoordinates: function(src, dst, count) {\n\t\tfor (var i = 0, max = 2 * count; i < max; i += 2) {\n\t\t\tvar x = src[i],\n\t\t\t\ty = src[i + 1];\n\t\t\tdst[i] = x * this._a + y * this._c + this._tx;\n\t\t\tdst[i + 1] = x * this._b + y * this._d + this._ty;\n\t\t}\n\t\treturn dst;\n\t},\n\n\t_transformCorners: function(rect) {\n\t\tvar x1 = rect.x,\n\t\t\ty1 = rect.y,\n\t\t\tx2 = x1 + rect.width,\n\t\t\ty2 = y1 + rect.height,\n\t\t\tcoords = [ x1, y1, x2, y1, x2, y2, x1, y2 ];\n\t\treturn this._transformCoordinates(coords, coords, 4);\n\t},\n\n\t_transformBounds: function(bounds, dest, _dontNotify) {\n\t\tvar coords = this._transformCorners(bounds),\n\t\t\tmin = coords.slice(0, 2),\n\t\t\tmax = min.slice();\n\t\tfor (var i = 2; i < 8; i++) {\n\t\t\tvar val = coords[i],\n\t\t\t\tj = i & 1;\n\t\t\tif (val < min[j]) {\n\t\t\t\tmin[j] = val;\n\t\t\t} else if (val > max[j]) {\n\t\t\t\tmax[j] = val;\n\t\t\t}\n\t\t}\n\t\tif (!dest)\n\t\t\tdest = new Rectangle();\n\t\treturn dest._set(min[0], min[1], max[0] - min[0], max[1] - min[1],\n\t\t\t\t_dontNotify);\n\t},\n\n\tinverseTransform: function() {\n\t\treturn this._inverseTransform(Point.read(arguments));\n\t},\n\n\t_inverseTransform: function(point, dest, _dontNotify) {\n\t\tvar a = this._a,\n\t\t\tb = this._b,\n\t\t\tc = this._c,\n\t\t\td = this._d,\n\t\t\ttx = this._tx,\n\t\t\tty = this._ty,\n\t\t\tdet = a * d - b * c,\n\t\t\tres = null;\n\t\tif (det && !isNaN(det) && isFinite(tx) && isFinite(ty)) {\n\t\t\tvar x = point.x - this._tx,\n\t\t\t\ty = point.y - this._ty;\n\t\t\tif (!dest)\n\t\t\t\tdest = new Point();\n\t\t\tres = dest._set(\n\t\t\t\t\t(x * d - y * c) / det,\n\t\t\t\t\t(y * a - x * b) / det,\n\t\t\t\t\t_dontNotify);\n\t\t}\n\t\treturn res;\n\t},\n\n\tdecompose: function() {\n\t\tvar a = this._a,\n\t\t\tb = this._b,\n\t\t\tc = this._c,\n\t\t\td = this._d,\n\t\t\tdet = a * d - b * c,\n\t\t\tsqrt = Math.sqrt,\n\t\t\tatan2 = Math.atan2,\n\t\t\tdegrees = 180 / Math.PI,\n\t\t\trotate,\n\t\t\tscale,\n\t\t\tskew;\n\t\tif (a !== 0 || b !== 0) {\n\t\t\tvar r = sqrt(a * a + b * b);\n\t\t\trotate = Math.acos(a / r) * (b > 0 ? 1 : -1);\n\t\t\tscale = [r, det / r];\n\t\t\tskew = [atan2(a * c + b * d, r * r), 0];\n\t\t} else if (c !== 0 || d !== 0) {\n\t\t\tvar s = sqrt(c * c + d * d);\n\t\t\trotate = Math.asin(c / s)  * (d > 0 ? 1 : -1);\n\t\t\tscale = [det / s, s];\n\t\t\tskew = [0, atan2(a * c + b * d, s * s)];\n\t\t} else {\n\t\t\trotate = 0;\n\t\t\tskew = scale = [0, 0];\n\t\t}\n\t\treturn {\n\t\t\ttranslation: this.getTranslation(),\n\t\t\trotation: rotate * degrees,\n\t\t\tscaling: new Point(scale),\n\t\t\tskewing: new Point(skew[0] * degrees, skew[1] * degrees)\n\t\t};\n\t},\n\n\tgetValues: function() {\n\t\treturn [ this._a, this._b, this._c, this._d, this._tx, this._ty ];\n\t},\n\n\tgetTranslation: function() {\n\t\treturn new Point(this._tx, this._ty);\n\t},\n\n\tgetScaling: function() {\n\t\treturn this.decompose().scaling;\n\t},\n\n\tgetRotation: function() {\n\t\treturn this.decompose().rotation;\n\t},\n\n\tapplyToContext: function(ctx) {\n\t\tif (!this.isIdentity()) {\n\t\t\tctx.transform(this._a, this._b, this._c, this._d,\n\t\t\t\t\tthis._tx, this._ty);\n\t\t}\n\t}\n}, Base.each(['a', 'b', 'c', 'd', 'tx', 'ty'], function(key) {\n\tvar part = Base.capitalize(key),\n\t\tprop = '_' + key;\n\tthis['get' + part] = function() {\n\t\treturn this[prop];\n\t};\n\tthis['set' + part] = function(value) {\n\t\tthis[prop] = value;\n\t\tthis._changed();\n\t};\n}, {}));\n\nvar Line = Base.extend({\n\t_class: 'Line',\n\n\tinitialize: function Line(arg0, arg1, arg2, arg3, arg4) {\n\t\tvar asVector = false;\n\t\tif (arguments.length >= 4) {\n\t\t\tthis._px = arg0;\n\t\t\tthis._py = arg1;\n\t\t\tthis._vx = arg2;\n\t\t\tthis._vy = arg3;\n\t\t\tasVector = arg4;\n\t\t} else {\n\t\t\tthis._px = arg0.x;\n\t\t\tthis._py = arg0.y;\n\t\t\tthis._vx = arg1.x;\n\t\t\tthis._vy = arg1.y;\n\t\t\tasVector = arg2;\n\t\t}\n\t\tif (!asVector) {\n\t\t\tthis._vx -= this._px;\n\t\t\tthis._vy -= this._py;\n\t\t}\n\t},\n\n\tgetPoint: function() {\n\t\treturn new Point(this._px, this._py);\n\t},\n\n\tgetVector: function() {\n\t\treturn new Point(this._vx, this._vy);\n\t},\n\n\tgetLength: function() {\n\t\treturn this.getVector().getLength();\n\t},\n\n\tintersect: function(line, isInfinite) {\n\t\treturn Line.intersect(\n\t\t\t\tthis._px, this._py, this._vx, this._vy,\n\t\t\t\tline._px, line._py, line._vx, line._vy,\n\t\t\t\ttrue, isInfinite);\n\t},\n\n\tgetSide: function(point, isInfinite) {\n\t\treturn Line.getSide(\n\t\t\t\tthis._px, this._py, this._vx, this._vy,\n\t\t\t\tpoint.x, point.y, true, isInfinite);\n\t},\n\n\tgetDistance: function(point) {\n\t\treturn Math.abs(this.getSignedDistance(point));\n\t},\n\n\tgetSignedDistance: function(point) {\n\t\treturn Line.getSignedDistance(this._px, this._py, this._vx, this._vy,\n\t\t\t\tpoint.x, point.y, true);\n\t},\n\n\tisCollinear: function(line) {\n\t\treturn Point.isCollinear(this._vx, this._vy, line._vx, line._vy);\n\t},\n\n\tisOrthogonal: function(line) {\n\t\treturn Point.isOrthogonal(this._vx, this._vy, line._vx, line._vy);\n\t},\n\n\tstatics: {\n\t\tintersect: function(p1x, p1y, v1x, v1y, p2x, p2y, v2x, v2y, asVector,\n\t\t\t\tisInfinite) {\n\t\t\tif (!asVector) {\n\t\t\t\tv1x -= p1x;\n\t\t\t\tv1y -= p1y;\n\t\t\t\tv2x -= p2x;\n\t\t\t\tv2y -= p2y;\n\t\t\t}\n\t\t\tvar cross = v1x * v2y - v1y * v2x;\n\t\t\tif (!Numerical.isMachineZero(cross)) {\n\t\t\t\tvar dx = p1x - p2x,\n\t\t\t\t\tdy = p1y - p2y,\n\t\t\t\t\tu1 = (v2x * dy - v2y * dx) / cross,\n\t\t\t\t\tu2 = (v1x * dy - v1y * dx) / cross,\n\t\t\t\t\tepsilon = 1e-12,\n\t\t\t\t\tuMin = -epsilon,\n\t\t\t\t\tuMax = 1 + epsilon;\n\t\t\t\tif (isInfinite\n\t\t\t\t\t\t|| uMin < u1 && u1 < uMax && uMin < u2 && u2 < uMax) {\n\t\t\t\t\tif (!isInfinite) {\n\t\t\t\t\t\tu1 = u1 <= 0 ? 0 : u1 >= 1 ? 1 : u1;\n\t\t\t\t\t}\n\t\t\t\t\treturn new Point(\n\t\t\t\t\t\t\tp1x + u1 * v1x,\n\t\t\t\t\t\t\tp1y + u1 * v1y);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tgetSide: function(px, py, vx, vy, x, y, asVector, isInfinite) {\n\t\t\tif (!asVector) {\n\t\t\t\tvx -= px;\n\t\t\t\tvy -= py;\n\t\t\t}\n\t\t\tvar v2x = x - px,\n\t\t\t\tv2y = y - py,\n\t\t\t\tccw = v2x * vy - v2y * vx;\n\t\t\tif (!isInfinite && Numerical.isMachineZero(ccw)) {\n\t\t\t\tccw = (v2x * vx + v2x * vx) / (vx * vx + vy * vy);\n\t\t\t\tif (ccw >= 0 && ccw <= 1)\n\t\t\t\t\tccw = 0;\n\t\t\t}\n\t\t\treturn ccw < 0 ? -1 : ccw > 0 ? 1 : 0;\n\t\t},\n\n\t\tgetSignedDistance: function(px, py, vx, vy, x, y, asVector) {\n\t\t\tif (!asVector) {\n\t\t\t\tvx -= px;\n\t\t\t\tvy -= py;\n\t\t\t}\n\t\t\t  return  vx === 0 ? (vy > 0 ? x - px : px - x)\n\t\t\t\t\t: vy === 0 ? (vx < 0 ? y - py : py - y)\n\t\t\t\t\t: ((x - px) * vy - (y - py) * vx) / (\n\t\t\t\t\t\tvy > vx\n\t\t\t\t\t\t\t? vy * Math.sqrt(1 + (vx * vx) / (vy * vy))\n\t\t\t\t\t\t\t: vx * Math.sqrt(1 + (vy * vy) / (vx * vx))\n\t\t\t\t\t);\n\t\t},\n\n\t\tgetDistance: function(px, py, vx, vy, x, y, asVector) {\n\t\t\treturn Math.abs(\n\t\t\t\t\tLine.getSignedDistance(px, py, vx, vy, x, y, asVector));\n\t\t}\n\t}\n});\n\nvar Project = PaperScopeItem.extend({\n\t_class: 'Project',\n\t_list: 'projects',\n\t_reference: 'project',\n\t_compactSerialize: true,\n\n\tinitialize: function Project(element) {\n\t\tPaperScopeItem.call(this, true);\n\t\tthis._children = [];\n\t\tthis._namedChildren = {};\n\t\tthis._activeLayer = null;\n\t\tthis._currentStyle = new Style(null, null, this);\n\t\tthis._view = View.create(this,\n\t\t\t\telement || CanvasProvider.getCanvas(1, 1));\n\t\tthis._selectionItems = {};\n\t\tthis._selectionCount = 0;\n\t\tthis._updateVersion = 0;\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\treturn Base.serialize(this._children, options, true, dictionary);\n\t},\n\n\t_changed: function(flags, item) {\n\t\tif (flags & 1) {\n\t\t\tvar view = this._view;\n\t\t\tif (view) {\n\t\t\t\tview._needsUpdate = true;\n\t\t\t\tif (!view._requested && view._autoUpdate)\n\t\t\t\t\tview.requestUpdate();\n\t\t\t}\n\t\t}\n\t\tvar changes = this._changes;\n\t\tif (changes && item) {\n\t\t\tvar changesById = this._changesById,\n\t\t\t\tid = item._id,\n\t\t\t\tentry = changesById[id];\n\t\t\tif (entry) {\n\t\t\t\tentry.flags |= flags;\n\t\t\t} else {\n\t\t\t\tchanges.push(changesById[id] = { item: item, flags: flags });\n\t\t\t}\n\t\t}\n\t},\n\n\tclear: function() {\n\t\tvar children = this._children;\n\t\tfor (var i = children.length - 1; i >= 0; i--)\n\t\t\tchildren[i].remove();\n\t},\n\n\tisEmpty: function() {\n\t\treturn !this._children.length;\n\t},\n\n\tremove: function remove() {\n\t\tif (!remove.base.call(this))\n\t\t\treturn false;\n\t\tif (this._view)\n\t\t\tthis._view.remove();\n\t\treturn true;\n\t},\n\n\tgetView: function() {\n\t\treturn this._view;\n\t},\n\n\tgetCurrentStyle: function() {\n\t\treturn this._currentStyle;\n\t},\n\n\tsetCurrentStyle: function(style) {\n\t\tthis._currentStyle.set(style);\n\t},\n\n\tgetIndex: function() {\n\t\treturn this._index;\n\t},\n\n\tgetOptions: function() {\n\t\treturn this._scope.settings;\n\t},\n\n\tgetLayers: function() {\n\t\treturn this._children;\n\t},\n\n\tgetActiveLayer: function() {\n\t\treturn this._activeLayer || new Layer({ project: this, insert: true });\n\t},\n\n\tgetSymbolDefinitions: function() {\n\t\tvar definitions = [],\n\t\t\tids = {};\n\t\tthis.getItems({\n\t\t\tclass: SymbolItem,\n\t\t\tmatch: function(item) {\n\t\t\t\tvar definition = item._definition,\n\t\t\t\t\tid = definition._id;\n\t\t\t\tif (!ids[id]) {\n\t\t\t\t\tids[id] = true;\n\t\t\t\t\tdefinitions.push(definition);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\treturn definitions;\n\t},\n\n\tgetSymbols: 'getSymbolDefinitions',\n\n\tgetSelectedItems: function() {\n\t\tvar selectionItems = this._selectionItems,\n\t\t\titems = [];\n\t\tfor (var id in selectionItems) {\n\t\t\tvar item = selectionItems[id],\n\t\t\t\tselection = item._selection;\n\t\t\tif ((selection & 1) && item.isInserted()) {\n\t\t\t\titems.push(item);\n\t\t\t} else if (!selection) {\n\t\t\t\tthis._updateSelection(item);\n\t\t\t}\n\t\t}\n\t\treturn items;\n\t},\n\n\t_updateSelection: function(item) {\n\t\tvar id = item._id,\n\t\t\tselectionItems = this._selectionItems;\n\t\tif (item._selection) {\n\t\t\tif (selectionItems[id] !== item) {\n\t\t\t\tthis._selectionCount++;\n\t\t\t\tselectionItems[id] = item;\n\t\t\t}\n\t\t} else if (selectionItems[id] === item) {\n\t\t\tthis._selectionCount--;\n\t\t\tdelete selectionItems[id];\n\t\t}\n\t},\n\n\tselectAll: function() {\n\t\tvar children = this._children;\n\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\tchildren[i].setFullySelected(true);\n\t},\n\n\tdeselectAll: function() {\n\t\tvar selectionItems = this._selectionItems;\n\t\tfor (var i in selectionItems)\n\t\t\tselectionItems[i].setFullySelected(false);\n\t},\n\n\taddLayer: function(layer) {\n\t\treturn this.insertLayer(undefined, layer);\n\t},\n\n\tinsertLayer: function(index, layer) {\n\t\tif (layer instanceof Layer) {\n\t\t\tlayer._remove(false, true);\n\t\t\tBase.splice(this._children, [layer], index, 0);\n\t\t\tlayer._setProject(this, true);\n\t\t\tvar name = layer._name;\n\t\t\tif (name)\n\t\t\t\tlayer.setName(name);\n\t\t\tif (this._changes)\n\t\t\t\tlayer._changed(5);\n\t\t\tif (!this._activeLayer)\n\t\t\t\tthis._activeLayer = layer;\n\t\t} else {\n\t\t\tlayer = null;\n\t\t}\n\t\treturn layer;\n\t},\n\n\t_insertItem: function(index, item, _created) {\n\t\titem = this.insertLayer(index, item)\n\t\t\t\t|| (this._activeLayer || this._insertItem(undefined,\n\t\t\t\t\t\tnew Layer(Item.NO_INSERT), true))\n\t\t\t\t\t\t.insertChild(index, item);\n\t\tif (_created && item.activate)\n\t\t\titem.activate();\n\t\treturn item;\n\t},\n\n\tgetItems: function(options) {\n\t\treturn Item._getItems(this, options);\n\t},\n\n\tgetItem: function(options) {\n\t\treturn Item._getItems(this, options, null, null, true)[0] || null;\n\t},\n\n\timportJSON: function(json) {\n\t\tthis.activate();\n\t\tvar layer = this._activeLayer;\n\t\treturn Base.importJSON(json, layer && layer.isEmpty() && layer);\n\t},\n\n\tremoveOn: function(type) {\n\t\tvar sets = this._removeSets;\n\t\tif (sets) {\n\t\t\tif (type === 'mouseup')\n\t\t\t\tsets.mousedrag = null;\n\t\t\tvar set = sets[type];\n\t\t\tif (set) {\n\t\t\t\tfor (var id in set) {\n\t\t\t\t\tvar item = set[id];\n\t\t\t\t\tfor (var key in sets) {\n\t\t\t\t\t\tvar other = sets[key];\n\t\t\t\t\t\tif (other && other != set)\n\t\t\t\t\t\t\tdelete other[item._id];\n\t\t\t\t\t}\n\t\t\t\t\titem.remove();\n\t\t\t\t}\n\t\t\t\tsets[type] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\tdraw: function(ctx, matrix, pixelRatio) {\n\t\tthis._updateVersion++;\n\t\tctx.save();\n\t\tmatrix.applyToContext(ctx);\n\t\tvar children = this._children,\n\t\t\tparam = new Base({\n\t\t\t\toffset: new Point(0, 0),\n\t\t\t\tpixelRatio: pixelRatio,\n\t\t\t\tviewMatrix: matrix.isIdentity() ? null : matrix,\n\t\t\t\tmatrices: [new Matrix()],\n\t\t\t\tupdateMatrix: true\n\t\t\t});\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tchildren[i].draw(ctx, param);\n\t\t}\n\t\tctx.restore();\n\n\t\tif (this._selectionCount > 0) {\n\t\t\tctx.save();\n\t\t\tctx.strokeWidth = 1;\n\t\t\tvar items = this._selectionItems,\n\t\t\t\tsize = this._scope.settings.handleSize,\n\t\t\t\tversion = this._updateVersion;\n\t\t\tfor (var id in items) {\n\t\t\t\titems[id]._drawSelection(ctx, matrix, size, items, version);\n\t\t\t}\n\t\t\tctx.restore();\n\t\t}\n\t}\n});\n\nvar Item = Base.extend(Emitter, {\n\tstatics: {\n\t\textend: function extend(src) {\n\t\t\tif (src._serializeFields)\n\t\t\t\tsrc._serializeFields = Base.set({},\n\t\t\t\t\tthis.prototype._serializeFields, src._serializeFields);\n\t\t\treturn extend.base.apply(this, arguments);\n\t\t},\n\n\t\tNO_INSERT: { insert: false }\n\t},\n\n\t_class: 'Item',\n\t_name: null,\n\t_applyMatrix: true,\n\t_canApplyMatrix: true,\n\t_canScaleStroke: false,\n\t_pivot: null,\n\t_visible: true,\n\t_blendMode: 'normal',\n\t_opacity: 1,\n\t_locked: false,\n\t_guide: false,\n\t_clipMask: false,\n\t_selection: 0,\n\t_selectBounds: true,\n\t_selectChildren: false,\n\t_serializeFields: {\n\t\tname: null,\n\t\tapplyMatrix: null,\n\t\tmatrix: new Matrix(),\n\t\tpivot: null,\n\t\tvisible: true,\n\t\tblendMode: 'normal',\n\t\topacity: 1,\n\t\tlocked: false,\n\t\tguide: false,\n\t\tclipMask: false,\n\t\tselected: false,\n\t\tdata: {}\n\t},\n\t_prioritize: ['applyMatrix']\n},\nnew function() {\n\tvar handlers = ['onMouseDown', 'onMouseUp', 'onMouseDrag', 'onClick',\n\t\t\t'onDoubleClick', 'onMouseMove', 'onMouseEnter', 'onMouseLeave'];\n\treturn Base.each(handlers,\n\t\tfunction(name) {\n\t\t\tthis._events[name] = {\n\t\t\t\tinstall: function(type) {\n\t\t\t\t\tthis.getView()._countItemEvent(type, 1);\n\t\t\t\t},\n\n\t\t\t\tuninstall: function(type) {\n\t\t\t\t\tthis.getView()._countItemEvent(type, -1);\n\t\t\t\t}\n\t\t\t};\n\t\t}, {\n\t\t\t_events: {\n\t\t\t\tonFrame: {\n\t\t\t\t\tinstall: function() {\n\t\t\t\t\t\tthis.getView()._animateItem(this, true);\n\t\t\t\t\t},\n\n\t\t\t\t\tuninstall: function() {\n\t\t\t\t\t\tthis.getView()._animateItem(this, false);\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tonLoad: {},\n\t\t\t\tonError: {}\n\t\t\t},\n\t\t\tstatics: {\n\t\t\t\t_itemHandlers: handlers\n\t\t\t}\n\t\t}\n\t);\n}, {\n\tinitialize: function Item() {\n\t},\n\n\t_initialize: function(props, point) {\n\t\tvar hasProps = props && Base.isPlainObject(props),\n\t\t\tinternal = hasProps && props.internal === true,\n\t\t\tmatrix = this._matrix = new Matrix(),\n\t\t\tproject = hasProps && props.project || paper.project,\n\t\t\tsettings = paper.settings;\n\t\tthis._id = internal ? null : UID.get();\n\t\tthis._parent = this._index = null;\n\t\tthis._applyMatrix = this._canApplyMatrix && settings.applyMatrix;\n\t\tif (point)\n\t\t\tmatrix.translate(point);\n\t\tmatrix._owner = this;\n\t\tthis._style = new Style(project._currentStyle, this, project);\n\t\tif (internal || hasProps && props.insert == false\n\t\t\t|| !settings.insertItems && !(hasProps && props.insert === true)) {\n\t\t\tthis._setProject(project);\n\t\t} else {\n\t\t\t(hasProps && props.parent || project)\n\t\t\t\t\t._insertItem(undefined, this, true);\n\t\t}\n\t\tif (hasProps && props !== Item.NO_INSERT) {\n\t\t\tthis.set(props, {\n\t\t\t\tinternal: true, insert: true, project: true, parent: true\n\t\t\t});\n\t\t}\n\t\treturn hasProps;\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\tvar props = {},\n\t\t\tthat = this;\n\n\t\tfunction serialize(fields) {\n\t\t\tfor (var key in fields) {\n\t\t\t\tvar value = that[key];\n\t\t\t\tif (!Base.equals(value, key === 'leading'\n\t\t\t\t\t\t? fields.fontSize * 1.2 : fields[key])) {\n\t\t\t\t\tprops[key] = Base.serialize(value, options,\n\t\t\t\t\t\t\tkey !== 'data', dictionary);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tserialize(this._serializeFields);\n\t\tif (!(this instanceof Group))\n\t\t\tserialize(this._style._defaults);\n\t\treturn [ this._class, props ];\n\t},\n\n\t_changed: function(flags) {\n\t\tvar symbol = this._symbol,\n\t\t\tcacheParent = this._parent || symbol,\n\t\t\tproject = this._project;\n\t\tif (flags & 8) {\n\t\t\tthis._bounds = this._position = this._decomposed = undefined;\n\t\t}\n\t\tif (flags & 16) {\n\t\t\tthis._globalMatrix = undefined;\n\t\t}\n\t\tif (cacheParent\n\t\t\t\t&& (flags & 72)) {\n\t\t\tItem._clearBoundsCache(cacheParent);\n\t\t}\n\t\tif (flags & 2) {\n\t\t\tItem._clearBoundsCache(this);\n\t\t}\n\t\tif (project)\n\t\t\tproject._changed(flags, this);\n\t\tif (symbol)\n\t\t\tsymbol._changed(flags);\n\t},\n\n\tgetId: function() {\n\t\treturn this._id;\n\t},\n\n\tgetName: function() {\n\t\treturn this._name;\n\t},\n\n\tsetName: function(name) {\n\n\t\tif (this._name)\n\t\t\tthis._removeNamed();\n\t\tif (name === (+name) + '')\n\t\t\tthrow new Error(\n\t\t\t\t\t'Names consisting only of numbers are not supported.');\n\t\tvar owner = this._getOwner();\n\t\tif (name && owner) {\n\t\t\tvar children = owner._children,\n\t\t\t\tnamedChildren = owner._namedChildren;\n\t\t\t(namedChildren[name] = namedChildren[name] || []).push(this);\n\t\t\tif (!(name in children))\n\t\t\t\tchildren[name] = this;\n\t\t}\n\t\tthis._name = name || undefined;\n\t\tthis._changed(256);\n\t},\n\n\tgetStyle: function() {\n\t\treturn this._style;\n\t},\n\n\tsetStyle: function(style) {\n\t\tthis.getStyle().set(style);\n\t}\n}, Base.each(['locked', 'visible', 'blendMode', 'opacity', 'guide'],\n\tfunction(name) {\n\t\tvar part = Base.capitalize(name),\n\t\t\tkey = '_' + name,\n\t\t\tflags = {\n\t\t\t\tlocked: 256,\n\t\t\t\tvisible: 265\n\t\t\t};\n\t\tthis['get' + part] = function() {\n\t\t\treturn this[key];\n\t\t};\n\t\tthis['set' + part] = function(value) {\n\t\t\tif (value != this[key]) {\n\t\t\t\tthis[key] = value;\n\t\t\t\tthis._changed(flags[name] || 257);\n\t\t\t}\n\t\t};\n\t},\n{}), {\n\tbeans: true,\n\n\tgetSelection: function() {\n\t\treturn this._selection;\n\t},\n\n\tsetSelection: function(selection) {\n\t\tif (selection !== this._selection) {\n\t\t\tthis._selection = selection;\n\t\t\tvar project = this._project;\n\t\t\tif (project) {\n\t\t\t\tproject._updateSelection(this);\n\t\t\t\tthis._changed(257);\n\t\t\t}\n\t\t}\n\t},\n\n\t_changeSelection: function(flag, selected) {\n\t\tvar selection = this._selection;\n\t\tthis.setSelection(selected ? selection | flag : selection & ~flag);\n\t},\n\n\tisSelected: function() {\n\t\tif (this._selectChildren) {\n\t\t\tvar children = this._children;\n\t\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\t\tif (children[i].isSelected())\n\t\t\t\t\treturn true;\n\t\t}\n\t\treturn !!(this._selection & 1);\n\t},\n\n\tsetSelected: function(selected) {\n\t\tif (this._selectChildren) {\n\t\t\tvar children = this._children;\n\t\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\t\tchildren[i].setSelected(selected);\n\t\t}\n\t\tthis._changeSelection(1, selected);\n\t},\n\n\tisFullySelected: function() {\n\t\tvar children = this._children,\n\t\t\tselected = !!(this._selection & 1);\n\t\tif (children && selected) {\n\t\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\t\tif (!children[i].isFullySelected())\n\t\t\t\t\treturn false;\n\t\t\treturn true;\n\t\t}\n\t\treturn selected;\n\t},\n\n\tsetFullySelected: function(selected) {\n\t\tvar children = this._children;\n\t\tif (children) {\n\t\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\t\tchildren[i].setFullySelected(selected);\n\t\t}\n\t\tthis._changeSelection(1, selected);\n\t},\n\n\tisClipMask: function() {\n\t\treturn this._clipMask;\n\t},\n\n\tsetClipMask: function(clipMask) {\n\t\tif (this._clipMask != (clipMask = !!clipMask)) {\n\t\t\tthis._clipMask = clipMask;\n\t\t\tif (clipMask) {\n\t\t\t\tthis.setFillColor(null);\n\t\t\t\tthis.setStrokeColor(null);\n\t\t\t}\n\t\t\tthis._changed(257);\n\t\t\tif (this._parent)\n\t\t\t\tthis._parent._changed(2048);\n\t\t}\n\t},\n\n\tgetData: function() {\n\t\tif (!this._data)\n\t\t\tthis._data = {};\n\t\treturn this._data;\n\t},\n\n\tsetData: function(data) {\n\t\tthis._data = data;\n\t},\n\n\tgetPosition: function(_dontLink) {\n\t\tvar ctor = _dontLink ? Point : LinkedPoint;\n\t\tvar position = this._position ||\n\t\t\t(this._position = this._getPositionFromBounds());\n\t\treturn new ctor(position.x, position.y, this, 'setPosition');\n\t},\n\n\tsetPosition: function() {\n\t\tthis.translate(Point.read(arguments).subtract(this.getPosition(true)));\n\t},\n\n\t_getPositionFromBounds: function(bounds) {\n\t\treturn this._pivot\n\t\t\t\t? this._matrix._transformPoint(this._pivot)\n\t\t\t\t: (bounds || this.getBounds()).getCenter(true);\n\t},\n\n\tgetPivot: function() {\n\t\tvar pivot = this._pivot;\n\t\treturn pivot\n\t\t\t\t? new LinkedPoint(pivot.x, pivot.y, this, 'setPivot')\n\t\t\t\t: null;\n\t},\n\n\tsetPivot: function() {\n\t\tthis._pivot = Point.read(arguments, 0, { clone: true, readNull: true });\n\t\tthis._position = undefined;\n\t}\n}, Base.each({\n\t\tgetStrokeBounds: { stroke: true },\n\t\tgetHandleBounds: { handle: true },\n\t\tgetInternalBounds: { internal: true },\n\t\tgetDrawnBounds: { stroke: true, drawnTextBounds: true },\n\t},\n\tfunction(options, key) {\n\t\tthis[key] = function(matrix) {\n\t\t\treturn this.getBounds(matrix, options);\n\t\t};\n\t},\n{\n\tbeans: true,\n\n\tgetBounds: function(matrix, options) {\n\t\tvar hasMatrix = options || matrix instanceof Matrix,\n\t\t\topts = Base.set({}, hasMatrix ? options : matrix,\n\t\t\t\t\tthis._boundsOptions);\n\t\tif (!opts.stroke || this.getStrokeScaling())\n\t\t\topts.cacheItem = this;\n\t\tvar rect = this._getCachedBounds(hasMatrix && matrix, opts).rect;\n\t\treturn !arguments.length\n\t\t\t\t? new LinkedRectangle(rect.x, rect.y, rect.width, rect.height,\n\t\t\t\t\tthis, 'setBounds')\n\t\t\t\t: rect;\n\t},\n\n\tsetBounds: function() {\n\t\tvar rect = Rectangle.read(arguments),\n\t\t\tbounds = this.getBounds(),\n\t\t\t_matrix = this._matrix,\n\t\t\tmatrix = new Matrix(),\n\t\t\tcenter = rect.getCenter();\n\t\tmatrix.translate(center);\n\t\tif (rect.width != bounds.width || rect.height != bounds.height) {\n\t\t\tif (!_matrix.isInvertible()) {\n\t\t\t\t_matrix.set(_matrix._backup\n\t\t\t\t\t\t|| new Matrix().translate(_matrix.getTranslation()));\n\t\t\t\tbounds = this.getBounds();\n\t\t\t}\n\t\t\tmatrix.scale(\n\t\t\t\t\tbounds.width !== 0 ? rect.width / bounds.width : 0,\n\t\t\t\t\tbounds.height !== 0 ? rect.height / bounds.height : 0);\n\t\t}\n\t\tcenter = bounds.getCenter();\n\t\tmatrix.translate(-center.x, -center.y);\n\t\tthis.transform(matrix);\n\t},\n\n\t_getBounds: function(matrix, options) {\n\t\tvar children = this._children;\n\t\tif (!children || !children.length)\n\t\t\treturn new Rectangle();\n\t\tItem._updateBoundsCache(this, options.cacheItem);\n\t\treturn Item._getBounds(children, matrix, options);\n\t},\n\n\t_getBoundsCacheKey: function(options, internal) {\n\t\treturn [\n\t\t\toptions.stroke ? 1 : 0,\n\t\t\toptions.handle ? 1 : 0,\n\t\t\toptions.drawnTextBounds? 1 : 0,\n\t\t\tinternal ? 1 : 0\n\t\t].join('');\n\t},\n\n\t_getCachedBounds: function(matrix, options, noInternal) {\n\t\tmatrix = matrix && matrix._orNullIfIdentity();\n\t\tvar internal = options.internal && !noInternal,\n\t\t\tcacheItem = options.cacheItem,\n\t\t\t_matrix = internal ? null : this._matrix._orNullIfIdentity(),\n\t\t\tcacheKey = cacheItem && (!matrix || matrix.equals(_matrix))\n\t\t\t\t&& this._getBoundsCacheKey(options, internal),\n\t\t\tbounds = this._bounds;\n\t\tItem._updateBoundsCache(this._parent || this._symbol, cacheItem);\n\t\tif (cacheKey && bounds && cacheKey in bounds) {\n\t\t\tvar cached = bounds[cacheKey];\n\t\t\treturn {\n\t\t\t\trect: cached.rect.clone(),\n\t\t\t\tnonscaling: cached.nonscaling\n\t\t\t};\n\t\t}\n\t\tvar res = this._getBounds(matrix || _matrix, options),\n\t\t\trect = res.rect || res,\n\t\t\tstyle = this._style,\n\t\t\tnonscaling = res.nonscaling || style.hasStroke()\n\t\t\t\t&& !style.getStrokeScaling();\n\t\tif (cacheKey) {\n\t\t\tif (!bounds) {\n\t\t\t\tthis._bounds = bounds = {};\n\t\t\t}\n\t\t\tvar cached = bounds[cacheKey] = {\n\t\t\t\trect: rect.clone(),\n\t\t\t\tnonscaling: nonscaling,\n\t\t\t\tinternal: internal\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\trect: rect,\n\t\t\tnonscaling: nonscaling\n\t\t};\n\t},\n\n\t_getStrokeMatrix: function(matrix, options) {\n\t\tvar parent = this.getStrokeScaling() ? null\n\t\t\t\t: options && options.internal ? this\n\t\t\t\t\t: this._parent || this._symbol && this._symbol._item,\n\t\t\tmx = parent ? parent.getViewMatrix().invert() : matrix;\n\t\treturn mx && mx._shiftless();\n\t},\n\n\tstatics: {\n\t\t_updateBoundsCache: function(parent, item) {\n\t\t\tif (parent && item) {\n\t\t\t\tvar id = item._id,\n\t\t\t\t\tref = parent._boundsCache = parent._boundsCache || {\n\t\t\t\t\t\tids: {},\n\t\t\t\t\t\tlist: []\n\t\t\t\t\t};\n\t\t\t\tif (!ref.ids[id]) {\n\t\t\t\t\tref.list.push(item);\n\t\t\t\t\tref.ids[id] = item;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_clearBoundsCache: function(item) {\n\t\t\tvar cache = item._boundsCache;\n\t\t\tif (cache) {\n\t\t\t\titem._bounds = item._position = item._boundsCache = undefined;\n\t\t\t\tfor (var i = 0, list = cache.list, l = list.length; i < l; i++){\n\t\t\t\t\tvar other = list[i];\n\t\t\t\t\tif (other !== item) {\n\t\t\t\t\t\tother._bounds = other._position = undefined;\n\t\t\t\t\t\tif (other._boundsCache)\n\t\t\t\t\t\t\tItem._clearBoundsCache(other);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_getBounds: function(items, matrix, options) {\n\t\t\tvar x1 = Infinity,\n\t\t\t\tx2 = -x1,\n\t\t\t\ty1 = x1,\n\t\t\t\ty2 = x2,\n\t\t\t\tnonscaling = false;\n\t\t\toptions = options || {};\n\t\t\tfor (var i = 0, l = items.length; i < l; i++) {\n\t\t\t\tvar item = items[i];\n\t\t\t\tif (item._visible && !item.isEmpty(true)) {\n\t\t\t\t\tvar bounds = item._getCachedBounds(\n\t\t\t\t\t\tmatrix && matrix.appended(item._matrix), options, true),\n\t\t\t\t\t\trect = bounds.rect;\n\t\t\t\t\tx1 = Math.min(rect.x, x1);\n\t\t\t\t\ty1 = Math.min(rect.y, y1);\n\t\t\t\t\tx2 = Math.max(rect.x + rect.width, x2);\n\t\t\t\t\ty2 = Math.max(rect.y + rect.height, y2);\n\t\t\t\t\tif (bounds.nonscaling)\n\t\t\t\t\t\tnonscaling = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\trect: isFinite(x1)\n\t\t\t\t\t? new Rectangle(x1, y1, x2 - x1, y2 - y1)\n\t\t\t\t\t: new Rectangle(),\n\t\t\t\tnonscaling: nonscaling\n\t\t\t};\n\t\t}\n\t}\n\n}), {\n\tbeans: true,\n\n\t_decompose: function() {\n\t\treturn this._applyMatrix\n\t\t\t? null\n\t\t\t: this._decomposed || (this._decomposed = this._matrix.decompose());\n\t},\n\n\tgetRotation: function() {\n\t\tvar decomposed = this._decompose();\n\t\treturn decomposed ? decomposed.rotation : 0;\n\t},\n\n\tsetRotation: function(rotation) {\n\t\tvar current = this.getRotation();\n\t\tif (current != null && rotation != null) {\n\t\t\tvar decomposed = this._decomposed;\n\t\t\tthis.rotate(rotation - current);\n\t\t\tif (decomposed) {\n\t\t\t\tdecomposed.rotation = rotation;\n\t\t\t\tthis._decomposed = decomposed;\n\t\t\t}\n\t\t}\n\t},\n\n\tgetScaling: function() {\n\t\tvar decomposed = this._decompose(),\n\t\t\ts = decomposed && decomposed.scaling;\n\t\treturn new LinkedPoint(s ? s.x : 1, s ? s.y : 1, this, 'setScaling');\n\t},\n\n\tsetScaling: function() {\n\t\tvar current = this.getScaling(),\n\t\t\tscaling = Point.read(arguments, 0, { clone: true, readNull: true });\n\t\tif (current && scaling && !current.equals(scaling)) {\n\t\t\tvar rotation = this.getRotation(),\n\t\t\t\tdecomposed = this._decomposed,\n\t\t\t\tmatrix = new Matrix(),\n\t\t\t\tcenter = this.getPosition(true);\n\t\t\tmatrix.translate(center);\n\t\t\tif (rotation)\n\t\t\t\tmatrix.rotate(rotation);\n\t\t\tmatrix.scale(scaling.x / current.x, scaling.y / current.y);\n\t\t\tif (rotation)\n\t\t\t\tmatrix.rotate(-rotation);\n\t\t\tmatrix.translate(center.negate());\n\t\t\tthis.transform(matrix);\n\t\t\tif (decomposed) {\n\t\t\t\tdecomposed.scaling = scaling;\n\t\t\t\tthis._decomposed = decomposed;\n\t\t\t}\n\t\t}\n\t},\n\n\tgetMatrix: function() {\n\t\treturn this._matrix;\n\t},\n\n\tsetMatrix: function() {\n\t\tvar matrix = this._matrix;\n\t\tmatrix.initialize.apply(matrix, arguments);\n\t},\n\n\tgetGlobalMatrix: function(_dontClone) {\n\t\tvar matrix = this._globalMatrix;\n\t\tif (matrix) {\n\t\t\tvar parent = this._parent;\n\t\t\tvar parents = [];\n\t\t\twhile (parent) {\n\t\t\t\tif (!parent._globalMatrix) {\n\t\t\t\t\tmatrix = null;\n\t\t\t\t\tfor (var i = 0, l = parents.length; i < l; i++) {\n\t\t\t\t\t\tparents[i]._globalMatrix = null;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tparents.push(parent);\n\t\t\t\tparent = parent._parent;\n\t\t\t}\n\t\t}\n\t\tif (!matrix) {\n\t\t\tmatrix = this._globalMatrix = this._matrix.clone();\n\t\t\tvar parent = this._parent;\n\t\t\tif (parent)\n\t\t\t\tmatrix.prepend(parent.getGlobalMatrix(true));\n\t\t}\n\t\treturn _dontClone ? matrix : matrix.clone();\n\t},\n\n\tgetViewMatrix: function() {\n\t\treturn this.getGlobalMatrix().prepend(this.getView()._matrix);\n\t},\n\n\tgetApplyMatrix: function() {\n\t\treturn this._applyMatrix;\n\t},\n\n\tsetApplyMatrix: function(apply) {\n\t\tif (this._applyMatrix = this._canApplyMatrix && !!apply)\n\t\t\tthis.transform(null, true);\n\t},\n\n\tgetTransformContent: '#getApplyMatrix',\n\tsetTransformContent: '#setApplyMatrix',\n}, {\n\tgetProject: function() {\n\t\treturn this._project;\n\t},\n\n\t_setProject: function(project, installEvents) {\n\t\tif (this._project !== project) {\n\t\t\tif (this._project)\n\t\t\t\tthis._installEvents(false);\n\t\t\tthis._project = project;\n\t\t\tvar children = this._children;\n\t\t\tfor (var i = 0, l = children && children.length; i < l; i++)\n\t\t\t\tchildren[i]._setProject(project);\n\t\t\tinstallEvents = true;\n\t\t}\n\t\tif (installEvents)\n\t\t\tthis._installEvents(true);\n\t},\n\n\tgetView: function() {\n\t\treturn this._project._view;\n\t},\n\n\t_installEvents: function _installEvents(install) {\n\t\t_installEvents.base.call(this, install);\n\t\tvar children = this._children;\n\t\tfor (var i = 0, l = children && children.length; i < l; i++)\n\t\t\tchildren[i]._installEvents(install);\n\t},\n\n\tgetLayer: function() {\n\t\tvar parent = this;\n\t\twhile (parent = parent._parent) {\n\t\t\tif (parent instanceof Layer)\n\t\t\t\treturn parent;\n\t\t}\n\t\treturn null;\n\t},\n\n\tgetParent: function() {\n\t\treturn this._parent;\n\t},\n\n\tsetParent: function(item) {\n\t\treturn item.addChild(this);\n\t},\n\n\t_getOwner: '#getParent',\n\n\tgetChildren: function() {\n\t\treturn this._children;\n\t},\n\n\tsetChildren: function(items) {\n\t\tthis.removeChildren();\n\t\tthis.addChildren(items);\n\t},\n\n\tgetFirstChild: function() {\n\t\treturn this._children && this._children[0] || null;\n\t},\n\n\tgetLastChild: function() {\n\t\treturn this._children && this._children[this._children.length - 1]\n\t\t\t\t|| null;\n\t},\n\n\tgetNextSibling: function() {\n\t\tvar owner = this._getOwner();\n\t\treturn owner && owner._children[this._index + 1] || null;\n\t},\n\n\tgetPreviousSibling: function() {\n\t\tvar owner = this._getOwner();\n\t\treturn owner && owner._children[this._index - 1] || null;\n\t},\n\n\tgetIndex: function() {\n\t\treturn this._index;\n\t},\n\n\tequals: function(item) {\n\t\treturn item === this || item && this._class === item._class\n\t\t\t\t&& this._style.equals(item._style)\n\t\t\t\t&& this._matrix.equals(item._matrix)\n\t\t\t\t&& this._locked === item._locked\n\t\t\t\t&& this._visible === item._visible\n\t\t\t\t&& this._blendMode === item._blendMode\n\t\t\t\t&& this._opacity === item._opacity\n\t\t\t\t&& this._clipMask === item._clipMask\n\t\t\t\t&& this._guide === item._guide\n\t\t\t\t&& this._equals(item)\n\t\t\t\t|| false;\n\t},\n\n\t_equals: function(item) {\n\t\treturn Base.equals(this._children, item._children);\n\t},\n\n\tclone: function(options) {\n\t\tvar copy = new this.constructor(Item.NO_INSERT),\n\t\t\tchildren = this._children,\n\t\t\tinsert = Base.pick(options ? options.insert : undefined,\n\t\t\t\t\toptions === undefined || options === true),\n\t\t\tdeep = Base.pick(options ? options.deep : undefined, true);\n\t\tif (children)\n\t\t\tcopy.copyAttributes(this);\n\t\tif (!children || deep)\n\t\t\tcopy.copyContent(this);\n\t\tif (!children)\n\t\t\tcopy.copyAttributes(this);\n\t\tif (insert)\n\t\t\tcopy.insertAbove(this);\n\t\tvar name = this._name,\n\t\t\tparent = this._parent;\n\t\tif (name && parent) {\n\t\t\tvar children = parent._children,\n\t\t\t\torig = name,\n\t\t\t\ti = 1;\n\t\t\twhile (children[name])\n\t\t\t\tname = orig + ' ' + (i++);\n\t\t\tif (name !== orig)\n\t\t\t\tcopy.setName(name);\n\t\t}\n\t\treturn copy;\n\t},\n\n\tcopyContent: function(source) {\n\t\tvar children = source._children;\n\t\tfor (var i = 0, l = children && children.length; i < l; i++) {\n\t\t\tthis.addChild(children[i].clone(false), true);\n\t\t}\n\t},\n\n\tcopyAttributes: function(source, excludeMatrix) {\n\t\tthis.setStyle(source._style);\n\t\tvar keys = ['_locked', '_visible', '_blendMode', '_opacity',\n\t\t\t\t'_clipMask', '_guide'];\n\t\tfor (var i = 0, l = keys.length; i < l; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (source.hasOwnProperty(key))\n\t\t\t\tthis[key] = source[key];\n\t\t}\n\t\tif (!excludeMatrix)\n\t\t\tthis._matrix.set(source._matrix, true);\n\t\tthis.setApplyMatrix(source._applyMatrix);\n\t\tthis.setPivot(source._pivot);\n\t\tthis.setSelection(source._selection);\n\t\tvar data = source._data,\n\t\t\tname = source._name;\n\t\tthis._data = data ? Base.clone(data) : null;\n\t\tif (name)\n\t\t\tthis.setName(name);\n\t},\n\n\trasterize: function(resolution, insert, boundRect) {\n\t\tvar bounds = boundRect ? boundRect : this.getStrokeBounds(),\n\t\t\tscale = (resolution || this.getView().getResolution()) / 72,\n\t\t\ttopLeft = bounds.getTopLeft().floor(),\n\t\t\tbottomRight = bounds.getBottomRight().ceil(),\n\t\t\tsize = new Size(bottomRight.subtract(topLeft)),\n\t\t\traster = new Raster(Item.NO_INSERT);\n\t\tif (!size.isZero()) {\n\t\t\tvar canvas = CanvasProvider.getCanvas(size.multiply(scale)),\n\t\t\t\tctx = canvas.getContext('2d'),\n\t\t\t\tmatrix = new Matrix().scale(scale).translate(topLeft.negate());\n\t\t\tctx.imageSmoothingEnabled = false;\n\t\t\tctx.save();\n\t\t\tmatrix.applyToContext(ctx);\n\t\t\tthis.draw(ctx, new Base({ matrices: [matrix] }));\n\t\t\tctx.restore();\n\t\t\traster.setCanvas(canvas);\n\t\t}\n\t\traster.transform(new Matrix().translate(topLeft.add(size.divide(2)))\n\t\t\t\t.scale(1 / scale));\n\t\tif (insert === undefined || insert)\n\t\t\traster.insertAbove(this);\n\t\treturn raster;\n\t},\n\n\tcontains: function() {\n\t\tvar matrix = this._matrix;\n\t\treturn (\n\t\t\tmatrix.isInvertible() &&\n\t\t\t!!this._contains(matrix._inverseTransform(Point.read(arguments)))\n\t\t);\n\t},\n\n\t_contains: function(point) {\n\t\tvar children = this._children;\n\t\tif (children) {\n\t\t\tfor (var i = children.length - 1; i >= 0; i--) {\n\t\t\t\tif (children[i].contains(point))\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn point.isInside(this.getInternalBounds());\n\t},\n\n\tisInside: function() {\n\t\treturn Rectangle.read(arguments).contains(this.getBounds());\n\t},\n\n\t_asPathItem: function() {\n\t\treturn new Path.Rectangle({\n\t\t\trectangle: this.getInternalBounds(),\n\t\t\tmatrix: this._matrix,\n\t\t\tinsert: false,\n\t\t});\n\t},\n\n\tintersects: function(item, _matrix) {\n\t\tif (!(item instanceof Item))\n\t\t\treturn false;\n\t\treturn this._asPathItem().getIntersections(item._asPathItem(), null,\n\t\t\t\t_matrix, true).length > 0;\n\t}\n},\nnew function() {\n\tfunction hitTest() {\n\t\tvar args = arguments;\n\t\treturn this._hitTest(\n\t\t\t\tPoint.read(args),\n\t\t\t\tHitResult.getOptions(args));\n\t}\n\n\tfunction hitTestAll() {\n\t\tvar args = arguments,\n\t\t\tpoint = Point.read(args),\n\t\t\toptions = HitResult.getOptions(args),\n\t\t\tall = [];\n\t\tthis._hitTest(point, new Base({ all: all }, options));\n\t\treturn all;\n\t}\n\n\tfunction hitTestChildren(point, options, viewMatrix, _exclude) {\n\t\tvar children = this._children;\n\t\tif (children) {\n\t\t\tfor (var i = children.length - 1; i >= 0; i--) {\n\t\t\t\tvar child = children[i];\n\t\t\t\tvar res = child !== _exclude && child._hitTest(point, options,\n\t\t\t\t\t\tviewMatrix);\n\t\t\t\tif (res && !options.all)\n\t\t\t\t\treturn res;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tProject.inject({\n\t\thitTest: hitTest,\n\t\thitTestAll: hitTestAll,\n\t\t_hitTest: hitTestChildren\n\t});\n\n\treturn {\n\t\thitTest: hitTest,\n\t\thitTestAll: hitTestAll,\n\t\t_hitTestChildren: hitTestChildren,\n\t};\n}, {\n\n\t_hitTest: function(point, options, parentViewMatrix) {\n\t\tif (this._locked || !this._visible || this._guide && !options.guides\n\t\t\t\t|| this.isEmpty()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar matrix = this._matrix,\n\t\t\tviewMatrix = parentViewMatrix\n\t\t\t\t\t? parentViewMatrix.appended(matrix)\n\t\t\t\t\t: this.getGlobalMatrix().prepend(this.getView()._matrix),\n\t\t\ttolerance = Math.max(options.tolerance, 1e-12),\n\t\t\ttolerancePadding = options._tolerancePadding = new Size(\n\t\t\t\t\tPath._getStrokePadding(tolerance,\n\t\t\t\t\t\tmatrix._shiftless().invert()));\n\t\tpoint = matrix._inverseTransform(point);\n\t\tif (!point || !this._children &&\n\t\t\t!this.getBounds({ internal: true, stroke: true, handle: true })\n\t\t\t\t.expand(tolerancePadding.multiply(2))._containsPoint(point)) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar checkSelf = !(options.guides && !this._guide\n\t\t\t\t|| options.selected && !this.isSelected()\n\t\t\t\t|| options.type && options.type !== Base.hyphenate(this._class)\n\t\t\t\t|| options.class && !(this instanceof options.class)),\n\t\t\tmatch = options.match,\n\t\t\tthat = this,\n\t\t\tbounds,\n\t\t\tres;\n\n\t\tfunction filter(hit) {\n\t\t\tif (hit && match && !match(hit))\n\t\t\t\thit = null;\n\t\t\tif (hit && options.all)\n\t\t\t\toptions.all.push(hit);\n\t\t\treturn hit;\n\t\t}\n\n\t\tfunction checkPoint(type, part) {\n\t\t\tvar pt = part ? bounds['get' + part]() : that.getPosition();\n\t\t\tif (point.subtract(pt).divide(tolerancePadding).length <= 1) {\n\t\t\t\treturn new HitResult(type, that, {\n\t\t\t\t\tname: part ? Base.hyphenate(part) : type,\n\t\t\t\t\tpoint: pt\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tvar checkPosition = options.position,\n\t\t\tcheckCenter = options.center,\n\t\t\tcheckBounds = options.bounds;\n\t\tif (checkSelf && this._parent\n\t\t\t\t&& (checkPosition || checkCenter || checkBounds)) {\n\t\t\tif (checkCenter || checkBounds) {\n\t\t\t\tbounds = this.getInternalBounds();\n\t\t\t}\n\t\t\tres = checkPosition && checkPoint('position') ||\n\t\t\t\t\tcheckCenter && checkPoint('center', 'Center');\n\t\t\tif (!res && checkBounds) {\n\t\t\t\tvar points = [\n\t\t\t\t\t'TopLeft', 'TopRight', 'BottomLeft', 'BottomRight',\n\t\t\t\t\t'LeftCenter', 'TopCenter', 'RightCenter', 'BottomCenter'\n\t\t\t\t];\n\t\t\t\tfor (var i = 0; i < 8 && !res; i++) {\n\t\t\t\t\tres = checkPoint('bounds', points[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tres = filter(res);\n\t\t}\n\n\t\tif (!res) {\n\t\t\tres = this._hitTestChildren(point, options, viewMatrix)\n\t\t\t\t|| checkSelf\n\t\t\t\t\t&& filter(this._hitTestSelf(point, options, viewMatrix,\n\t\t\t\t\t\tthis.getStrokeScaling() ? null\n\t\t\t\t\t\t\t: viewMatrix._shiftless().invert()))\n\t\t\t\t|| null;\n\t\t}\n\t\tif (res && res.point) {\n\t\t\tres.point = matrix.transform(res.point);\n\t\t}\n\t\treturn res;\n\t},\n\n\t_hitTestSelf: function(point, options) {\n\t\tif (options.fill && this.hasFill() && this._contains(point))\n\t\t\treturn new HitResult('fill', this);\n\t},\n\n\tmatches: function(name, compare) {\n\t\tfunction matchObject(obj1, obj2) {\n\t\t\tfor (var i in obj1) {\n\t\t\t\tif (obj1.hasOwnProperty(i)) {\n\t\t\t\t\tvar val1 = obj1[i],\n\t\t\t\t\t\tval2 = obj2[i];\n\t\t\t\t\tif (Base.isPlainObject(val1) && Base.isPlainObject(val2)) {\n\t\t\t\t\t\tif (!matchObject(val1, val2))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (!Base.equals(val1, val2)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tvar type = typeof name;\n\t\tif (type === 'object') {\n\t\t\tfor (var key in name) {\n\t\t\t\tif (name.hasOwnProperty(key) && !this.matches(key, name[key]))\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t} else if (type === 'function') {\n\t\t\treturn name(this);\n\t\t} else if (name === 'match') {\n\t\t\treturn compare(this);\n\t\t} else {\n\t\t\tvar value = /^(empty|editable)$/.test(name)\n\t\t\t\t\t? this['is' + Base.capitalize(name)]()\n\t\t\t\t\t: name === 'type'\n\t\t\t\t\t\t? Base.hyphenate(this._class)\n\t\t\t\t\t\t: this[name];\n\t\t\tif (name === 'class') {\n\t\t\t\tif (typeof compare === 'function')\n\t\t\t\t\treturn this instanceof compare;\n\t\t\t\tvalue = this._class;\n\t\t\t}\n\t\t\tif (typeof compare === 'function') {\n\t\t\t\treturn !!compare(value);\n\t\t\t} else if (compare) {\n\t\t\t\tif (compare.test) {\n\t\t\t\t\treturn compare.test(value);\n\t\t\t\t} else if (Base.isPlainObject(compare)) {\n\t\t\t\t\treturn matchObject(compare, value);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Base.equals(value, compare);\n\t\t}\n\t},\n\n\tgetItems: function(options) {\n\t\treturn Item._getItems(this, options, this._matrix);\n\t},\n\n\tgetItem: function(options) {\n\t\treturn Item._getItems(this, options, this._matrix, null, true)[0]\n\t\t\t\t|| null;\n\t},\n\n\tstatics: {\n\t\t_getItems: function _getItems(item, options, matrix, param, firstOnly) {\n\t\t\tif (!param) {\n\t\t\t\tvar obj = typeof options === 'object' && options,\n\t\t\t\t\toverlapping = obj && obj.overlapping,\n\t\t\t\t\tinside = obj && obj.inside,\n\t\t\t\t\tbounds = overlapping || inside,\n\t\t\t\t\trect = bounds && Rectangle.read([bounds]);\n\t\t\t\tparam = {\n\t\t\t\t\titems: [],\n\t\t\t\t\trecursive: obj && obj.recursive !== false,\n\t\t\t\t\tinside: !!inside,\n\t\t\t\t\toverlapping: !!overlapping,\n\t\t\t\t\trect: rect,\n\t\t\t\t\tpath: overlapping && new Path.Rectangle({\n\t\t\t\t\t\trectangle: rect,\n\t\t\t\t\t\tinsert: false\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t\tif (obj) {\n\t\t\t\t\toptions = Base.filter({}, options, {\n\t\t\t\t\t\trecursive: true, inside: true, overlapping: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar children = item._children,\n\t\t\t\titems = param.items,\n\t\t\t\trect = param.rect;\n\t\t\tmatrix = rect && (matrix || new Matrix());\n\t\t\tfor (var i = 0, l = children && children.length; i < l; i++) {\n\t\t\t\tvar child = children[i],\n\t\t\t\t\tchildMatrix = matrix && matrix.appended(child._matrix),\n\t\t\t\t\tadd = true;\n\t\t\t\tif (rect) {\n\t\t\t\t\tvar bounds = child.getBounds(childMatrix);\n\t\t\t\t\tif (!rect.intersects(bounds))\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tif (!(rect.contains(bounds)\n\t\t\t\t\t\t\t|| param.overlapping && (bounds.contains(rect)\n\t\t\t\t\t\t\t\t|| param.path.intersects(child, childMatrix))))\n\t\t\t\t\t\tadd = false;\n\t\t\t\t}\n\t\t\t\tif (add && child.matches(options)) {\n\t\t\t\t\titems.push(child);\n\t\t\t\t\tif (firstOnly)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (param.recursive !== false) {\n\t\t\t\t\t_getItems(child, options, childMatrix, param, firstOnly);\n\t\t\t\t}\n\t\t\t\tif (firstOnly && items.length > 0)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn items;\n\t\t}\n\t}\n}, {\n\n\timportJSON: function(json) {\n\t\tvar res = Base.importJSON(json, this);\n\t\treturn res !== this ? this.addChild(res) : res;\n\t},\n\n\taddChild: function(item) {\n\t\treturn this.insertChild(undefined, item);\n\t},\n\n\tinsertChild: function(index, item) {\n\t\tvar res = item ? this.insertChildren(index, [item]) : null;\n\t\treturn res && res[0];\n\t},\n\n\taddChildren: function(items) {\n\t\treturn this.insertChildren(this._children.length, items);\n\t},\n\n\tinsertChildren: function(index, items) {\n\t\tvar children = this._children;\n\t\tif (children && items && items.length > 0) {\n\t\t\titems = Base.slice(items);\n\t\t\tvar inserted = {};\n\t\t\tfor (var i = items.length - 1; i >= 0; i--) {\n\t\t\t\tvar item = items[i],\n\t\t\t\t\tid = item && item._id;\n\t\t\t\tif (!item || inserted[id]) {\n\t\t\t\t\titems.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\titem._remove(false, true);\n\t\t\t\t\tinserted[id] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tBase.splice(children, items, index, 0);\n\t\t\tvar project = this._project,\n\t\t\t\tnotifySelf = project._changes;\n\t\t\tfor (var i = 0, l = items.length; i < l; i++) {\n\t\t\t\tvar item = items[i],\n\t\t\t\t\tname = item._name;\n\t\t\t\titem._parent = this;\n\t\t\t\titem._setProject(project, true);\n\t\t\t\tif (name)\n\t\t\t\t\titem.setName(name);\n\t\t\t\tif (notifySelf)\n\t\t\t\t\titem._changed(5);\n\t\t\t}\n\t\t\tthis._changed(11);\n\t\t} else {\n\t\t\titems = null;\n\t\t}\n\t\treturn items;\n\t},\n\n\t_insertItem: '#insertChild',\n\n\t_insertAt: function(item, offset) {\n\t\tvar owner = item && item._getOwner(),\n\t\t\tres = item !== this && owner ? this : null;\n\t\tif (res) {\n\t\t\tres._remove(false, true);\n\t\t\towner._insertItem(item._index + offset, res);\n\t\t}\n\t\treturn res;\n\t},\n\n\tinsertAbove: function(item) {\n\t\treturn this._insertAt(item, 1);\n\t},\n\n\tinsertBelow: function(item) {\n\t\treturn this._insertAt(item, 0);\n\t},\n\n\tsendToBack: function() {\n\t\tvar owner = this._getOwner();\n\t\treturn owner ? owner._insertItem(0, this) : null;\n\t},\n\n\tbringToFront: function() {\n\t\tvar owner = this._getOwner();\n\t\treturn owner ? owner._insertItem(undefined, this) : null;\n\t},\n\n\tappendTop: '#addChild',\n\n\tappendBottom: function(item) {\n\t\treturn this.insertChild(0, item);\n\t},\n\n\tmoveAbove: '#insertAbove',\n\n\tmoveBelow: '#insertBelow',\n\n\taddTo: function(owner) {\n\t\treturn owner._insertItem(undefined, this);\n\t},\n\n\tcopyTo: function(owner) {\n\t\treturn this.clone(false).addTo(owner);\n\t},\n\n\treduce: function(options) {\n\t\tvar children = this._children;\n\t\tif (children && children.length === 1) {\n\t\t\tvar child = children[0].reduce(options);\n\t\t\tif (this._parent) {\n\t\t\t\tchild.insertAbove(this);\n\t\t\t\tthis.remove();\n\t\t\t} else {\n\t\t\t\tchild.remove();\n\t\t\t}\n\t\t\treturn child;\n\t\t}\n\t\treturn this;\n\t},\n\n\t_removeNamed: function() {\n\t\tvar owner = this._getOwner();\n\t\tif (owner) {\n\t\t\tvar children = owner._children,\n\t\t\t\tnamedChildren = owner._namedChildren,\n\t\t\t\tname = this._name,\n\t\t\t\tnamedArray = namedChildren[name],\n\t\t\t\tindex = namedArray ? namedArray.indexOf(this) : -1;\n\t\t\tif (index !== -1) {\n\t\t\t\tif (children[name] == this)\n\t\t\t\t\tdelete children[name];\n\t\t\t\tnamedArray.splice(index, 1);\n\t\t\t\tif (namedArray.length) {\n\t\t\t\t\tchildren[name] = namedArray[0];\n\t\t\t\t} else {\n\t\t\t\t\tdelete namedChildren[name];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_remove: function(notifySelf, notifyParent) {\n\t\tvar owner = this._getOwner(),\n\t\t\tproject = this._project,\n\t\t\tindex = this._index;\n\t\tif (this._style)\n\t\t\tthis._style._dispose();\n\t\tif (owner) {\n\t\t\tif (this._name)\n\t\t\t\tthis._removeNamed();\n\t\t\tif (index != null) {\n\t\t\t\tif (project._activeLayer === this)\n\t\t\t\t\tproject._activeLayer = this.getNextSibling()\n\t\t\t\t\t\t\t|| this.getPreviousSibling();\n\t\t\t\tBase.splice(owner._children, null, index, 1);\n\t\t\t}\n\t\t\tthis._installEvents(false);\n\t\t\tif (notifySelf && project._changes)\n\t\t\t\tthis._changed(5);\n\t\t\tif (notifyParent)\n\t\t\t\towner._changed(11, this);\n\t\t\tthis._parent = null;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\tremove: function() {\n\t\treturn this._remove(true, true);\n\t},\n\n\treplaceWith: function(item) {\n\t\tvar ok = item && item.insertBelow(this);\n\t\tif (ok)\n\t\t\tthis.remove();\n\t\treturn ok;\n\t},\n\n\tremoveChildren: function(start, end) {\n\t\tif (!this._children)\n\t\t\treturn null;\n\t\tstart = start || 0;\n\t\tend = Base.pick(end, this._children.length);\n\t\tvar removed = Base.splice(this._children, null, start, end - start);\n\t\tfor (var i = removed.length - 1; i >= 0; i--) {\n\t\t\tremoved[i]._remove(true, false);\n\t\t}\n\t\tif (removed.length > 0)\n\t\t\tthis._changed(11);\n\t\treturn removed;\n\t},\n\n\tclear: '#removeChildren',\n\n\treverseChildren: function() {\n\t\tif (this._children) {\n\t\t\tthis._children.reverse();\n\t\t\tfor (var i = 0, l = this._children.length; i < l; i++)\n\t\t\t\tthis._children[i]._index = i;\n\t\t\tthis._changed(11);\n\t\t}\n\t},\n\n\tisEmpty: function(recursively) {\n\t\tvar children = this._children;\n\t\tvar numChildren = children ? children.length : 0;\n\t\tif (recursively) {\n\t\t\tfor (var i = 0; i < numChildren; i++) {\n\t\t\t\tif (!children[i].isEmpty(recursively)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn !numChildren;\n\t},\n\n\tisEditable: function() {\n\t\tvar item = this;\n\t\twhile (item) {\n\t\t\tif (!item._visible || item._locked)\n\t\t\t\treturn false;\n\t\t\titem = item._parent;\n\t\t}\n\t\treturn true;\n\t},\n\n\thasFill: function() {\n\t\treturn this.getStyle().hasFill();\n\t},\n\n\thasStroke: function() {\n\t\treturn this.getStyle().hasStroke();\n\t},\n\n\thasShadow: function() {\n\t\treturn this.getStyle().hasShadow();\n\t},\n\n\t_getOrder: function(item) {\n\t\tfunction getList(item) {\n\t\t\tvar list = [];\n\t\t\tdo {\n\t\t\t\tlist.unshift(item);\n\t\t\t} while (item = item._parent);\n\t\t\treturn list;\n\t\t}\n\t\tvar list1 = getList(this),\n\t\t\tlist2 = getList(item);\n\t\tfor (var i = 0, l = Math.min(list1.length, list2.length); i < l; i++) {\n\t\t\tif (list1[i] != list2[i]) {\n\t\t\t\treturn list1[i]._index < list2[i]._index ? 1 : -1;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t},\n\n\thasChildren: function() {\n\t\treturn this._children && this._children.length > 0;\n\t},\n\n\tisInserted: function() {\n\t\treturn this._parent ? this._parent.isInserted() : false;\n\t},\n\n\tisAbove: function(item) {\n\t\treturn this._getOrder(item) === -1;\n\t},\n\n\tisBelow: function(item) {\n\t\treturn this._getOrder(item) === 1;\n\t},\n\n\tisParent: function(item) {\n\t\treturn this._parent === item;\n\t},\n\n\tisChild: function(item) {\n\t\treturn item && item._parent === this;\n\t},\n\n\tisDescendant: function(item) {\n\t\tvar parent = this;\n\t\twhile (parent = parent._parent) {\n\t\t\tif (parent === item)\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\tisAncestor: function(item) {\n\t\treturn item ? item.isDescendant(this) : false;\n\t},\n\n\tisSibling: function(item) {\n\t\treturn this._parent === item._parent;\n\t},\n\n\tisGroupedWith: function(item) {\n\t\tvar parent = this._parent;\n\t\twhile (parent) {\n\t\t\tif (parent._parent\n\t\t\t\t&& /^(Group|Layer|CompoundPath)$/.test(parent._class)\n\t\t\t\t&& item.isDescendant(parent))\n\t\t\t\t\treturn true;\n\t\t\tparent = parent._parent;\n\t\t}\n\t\treturn false;\n\t},\n\n}, Base.each(['rotate', 'scale', 'shear', 'skew'], function(key) {\n\tvar rotate = key === 'rotate';\n\tthis[key] = function() {\n\t\tvar args = arguments,\n\t\t\tvalue = (rotate ? Base : Point).read(args),\n\t\t\tcenter = Point.read(args, 0, { readNull: true });\n\t\treturn this.transform(new Matrix()[key](value,\n\t\t\t\tcenter || this.getPosition(true)));\n\t};\n}, {\n\ttranslate: function() {\n\t\tvar mx = new Matrix();\n\t\treturn this.transform(mx.translate.apply(mx, arguments));\n\t},\n\n\ttransform: function(matrix, _applyRecursively, _setApplyMatrix) {\n\t\tvar _matrix = this._matrix,\n\t\t\ttransformMatrix = matrix && !matrix.isIdentity(),\n\t\t\tapplyMatrix = (\n\t\t\t\t_setApplyMatrix && this._canApplyMatrix ||\n\t\t\t\tthis._applyMatrix && (\n\t\t\t\t\ttransformMatrix || !_matrix.isIdentity() ||\n\t\t\t\t\t_applyRecursively && this._children\n\t\t\t\t)\n\t\t\t);\n\t\tif (!transformMatrix && !applyMatrix)\n\t\t\treturn this;\n\t\tif (transformMatrix) {\n\t\t\tif (!matrix.isInvertible() && _matrix.isInvertible())\n\t\t\t\t_matrix._backup = _matrix.getValues();\n\t\t\t_matrix.prepend(matrix, true);\n\t\t\tvar style = this._style,\n\t\t\t\tfillColor = style.getFillColor(true),\n\t\t\t\tstrokeColor = style.getStrokeColor(true);\n\t\t\tif (fillColor)\n\t\t\t\tfillColor.transform(matrix);\n\t\t\tif (strokeColor)\n\t\t\t\tstrokeColor.transform(matrix);\n\t\t}\n\n\t\tif (applyMatrix && (applyMatrix = this._transformContent(\n\t\t\t\t_matrix, _applyRecursively, _setApplyMatrix))) {\n\t\t\tvar pivot = this._pivot;\n\t\t\tif (pivot)\n\t\t\t\t_matrix._transformPoint(pivot, pivot, true);\n\t\t\t_matrix.reset(true);\n\t\t\tif (_setApplyMatrix && this._canApplyMatrix)\n\t\t\t\tthis._applyMatrix = true;\n\t\t}\n\t\tvar bounds = this._bounds,\n\t\t\tposition = this._position;\n\t\tif (transformMatrix || applyMatrix) {\n\t\t\tthis._changed(25);\n\t\t}\n\t\tvar decomp = transformMatrix && bounds && matrix.decompose();\n\t\tif (decomp && decomp.skewing.isZero() && decomp.rotation % 90 === 0) {\n\t\t\tfor (var key in bounds) {\n\t\t\t\tvar cache = bounds[key];\n\t\t\t\tif (cache.nonscaling) {\n\t\t\t\t\tdelete bounds[key];\n\t\t\t\t} else if (applyMatrix || !cache.internal) {\n\t\t\t\t\tvar rect = cache.rect;\n\t\t\t\t\tmatrix._transformBounds(rect, rect);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._bounds = bounds;\n\t\t\tvar cached = bounds[this._getBoundsCacheKey(\n\t\t\t\tthis._boundsOptions || {})];\n\t\t\tif (cached) {\n\t\t\t\tthis._position = this._getPositionFromBounds(cached.rect);\n\t\t\t}\n\t\t} else if (transformMatrix && position && this._pivot) {\n\t\t\tthis._position = matrix._transformPoint(position, position);\n\t\t}\n\t\treturn this;\n\t},\n\n\t_transformContent: function(matrix, applyRecursively, setApplyMatrix) {\n\t\tvar children = this._children;\n\t\tif (children) {\n\t\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\t\tchildren[i].transform(matrix, applyRecursively, setApplyMatrix);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t},\n\n\tglobalToLocal: function() {\n\t\treturn this.getGlobalMatrix(true)._inverseTransform(\n\t\t\t\tPoint.read(arguments));\n\t},\n\n\tlocalToGlobal: function() {\n\t\treturn this.getGlobalMatrix(true)._transformPoint(\n\t\t\t\tPoint.read(arguments));\n\t},\n\n\tparentToLocal: function() {\n\t\treturn this._matrix._inverseTransform(Point.read(arguments));\n\t},\n\n\tlocalToParent: function() {\n\t\treturn this._matrix._transformPoint(Point.read(arguments));\n\t},\n\n\tfitBounds: function(rectangle, fill) {\n\t\trectangle = Rectangle.read(arguments);\n\t\tvar bounds = this.getBounds(),\n\t\t\titemRatio = bounds.height / bounds.width,\n\t\t\trectRatio = rectangle.height / rectangle.width,\n\t\t\tscale = (fill ? itemRatio > rectRatio : itemRatio < rectRatio)\n\t\t\t\t\t? rectangle.width / bounds.width\n\t\t\t\t\t: rectangle.height / bounds.height,\n\t\t\tnewBounds = new Rectangle(new Point(),\n\t\t\t\t\tnew Size(bounds.width * scale, bounds.height * scale));\n\t\tnewBounds.setCenter(rectangle.getCenter());\n\t\tthis.setBounds(newBounds);\n\t}\n}), {\n\n\t_setStyles: function(ctx, param, viewMatrix, strokeMatrix) {\n\t\tvar style = this._style,\n\t\t\tmatrix = this._matrix;\n\t\tif (style.hasFill()) {\n\t\t\tctx.fillStyle = style.getFillColor().toCanvasStyle(ctx, matrix, strokeMatrix);\n\t\t}\n\t\tif (style.hasStroke()) {\n\t\t\tctx.strokeStyle = style.getStrokeColor().toCanvasStyle(ctx, matrix, strokeMatrix);\n\t\t\tctx.lineWidth = style.getStrokeWidth();\n\t\t\tvar strokeJoin = style.getStrokeJoin(),\n\t\t\t\tstrokeCap = style.getStrokeCap(),\n\t\t\t\tmiterLimit = style.getMiterLimit();\n\t\t\tif (strokeJoin)\n\t\t\t\tctx.lineJoin = strokeJoin;\n\t\t\tif (strokeCap)\n\t\t\t\tctx.lineCap = strokeCap;\n\t\t\tif (miterLimit)\n\t\t\t\tctx.miterLimit = miterLimit;\n\t\t\tif (paper.support.nativeDash) {\n\t\t\t\tvar dashArray = style.getDashArray(),\n\t\t\t\t\tdashOffset = style.getDashOffset();\n\t\t\t\tif (dashArray && dashArray.length) {\n\t\t\t\t\tif ('setLineDash' in ctx) {\n\t\t\t\t\t\tctx.setLineDash(dashArray);\n\t\t\t\t\t\tctx.lineDashOffset = dashOffset;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tctx.mozDash = dashArray;\n\t\t\t\t\t\tctx.mozDashOffset = dashOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (style.hasShadow()) {\n\t\t\tvar pixelRatio = param.pixelRatio || 1,\n\t\t\t\tmx = viewMatrix._shiftless().prepend(\n\t\t\t\t\tnew Matrix().scale(pixelRatio, pixelRatio)),\n\t\t\t\tblur = mx.transform(new Point(style.getShadowBlur(), 0)),\n\t\t\t\toffset = mx.transform(this.getShadowOffset());\n\t\t\tctx.shadowColor = style.getShadowColor().toCanvasStyle(ctx);\n\t\t\tctx.shadowBlur = blur.getLength();\n\t\t\tctx.shadowOffsetX = offset.x;\n\t\t\tctx.shadowOffsetY = offset.y;\n\t\t}\n\t},\n\n\tdraw: function(ctx, param, parentStrokeMatrix) {\n\t\tvar updateVersion = this._updateVersion = this._project._updateVersion;\n\t\tif (!this._visible || this._opacity === 0)\n\t\t\treturn;\n\t\tvar matrices = param.matrices,\n\t\t\tviewMatrix = param.viewMatrix,\n\t\t\tmatrix = this._matrix,\n\t\t\tglobalMatrix = matrices[matrices.length - 1].appended(matrix);\n\t\tif (!globalMatrix.isInvertible())\n\t\t\treturn;\n\n\t\tviewMatrix = viewMatrix ? viewMatrix.appended(globalMatrix)\n\t\t\t\t: globalMatrix;\n\n\t\tmatrices.push(globalMatrix);\n\t\tif (param.updateMatrix) {\n\t\t\tthis._globalMatrix = globalMatrix;\n\t\t}\n\n\t\tvar blendMode = this._blendMode,\n\t\t\topacity = Numerical.clamp(this._opacity, 0, 1),\n\t\t\tnormalBlend = blendMode === 'normal',\n\t\t\tnativeBlend = BlendMode.nativeModes[blendMode],\n\t\t\tdirect = normalBlend && opacity === 1\n\t\t\t\t\t|| param.dontStart\n\t\t\t\t\t|| param.clip\n\t\t\t\t\t|| (nativeBlend || normalBlend && opacity < 1)\n\t\t\t\t\t\t&& this._canComposite(),\n\t\t\tpixelRatio = param.pixelRatio || 1,\n\t\t\tmainCtx, itemOffset, prevOffset;\n\t\tif (!direct) {\n\t\t\tvar bounds = this.getStrokeBounds(viewMatrix);\n\t\t\tif (!bounds.width || !bounds.height) {\n\t\t\t\tmatrices.pop();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tprevOffset = param.offset;\n\t\t\titemOffset = param.offset = bounds.getTopLeft().floor();\n\t\t\tmainCtx = ctx;\n\t\t\tctx = CanvasProvider.getContext(bounds.getSize().ceil().add(1)\n\t\t\t\t\t.multiply(pixelRatio));\n\t\t\tif (pixelRatio !== 1)\n\t\t\t\tctx.scale(pixelRatio, pixelRatio);\n\t\t}\n\t\tctx.save();\n\t\tvar strokeMatrix = parentStrokeMatrix\n\t\t\t\t? parentStrokeMatrix.appended(matrix)\n\t\t\t\t: this._canScaleStroke && !this.getStrokeScaling(true)\n\t\t\t\t\t&& viewMatrix,\n\t\t\tclip = !direct && param.clipItem,\n\t\t\ttransform = !strokeMatrix || clip;\n\t\tif (direct) {\n\t\t\tctx.globalAlpha = opacity;\n\t\t\tif (nativeBlend)\n\t\t\t\tctx.globalCompositeOperation = blendMode;\n\t\t} else if (transform) {\n\t\t\tctx.translate(-itemOffset.x, -itemOffset.y);\n\t\t}\n\t\tif (transform) {\n\t\t\t(direct ? matrix : viewMatrix).applyToContext(ctx);\n\t\t}\n\t\tif (clip) {\n\t\t\tparam.clipItem.draw(ctx, param.extend({ clip: true }));\n\t\t}\n\t\tif (strokeMatrix) {\n\t\t\tctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n\t\t\tvar offset = param.offset;\n\t\t\tif (offset)\n\t\t\t\tctx.translate(-offset.x, -offset.y);\n\t\t}\n\t\tthis._draw(ctx, param, viewMatrix, strokeMatrix);\n\t\tctx.restore();\n\t\tmatrices.pop();\n\t\tif (param.clip && !param.dontFinish) {\n\t\t\tctx.clip(this.getFillRule());\n\t\t}\n\t\tif (!direct) {\n\t\t\tBlendMode.process(blendMode, ctx, mainCtx, opacity,\n\t\t\t\t\titemOffset.subtract(prevOffset).multiply(pixelRatio));\n\t\t\tCanvasProvider.release(ctx);\n\t\t\tparam.offset = prevOffset;\n\t\t}\n\t},\n\n\t_isUpdated: function(updateVersion) {\n\t\tvar parent = this._parent;\n\t\tif (parent instanceof CompoundPath)\n\t\t\treturn parent._isUpdated(updateVersion);\n\t\tvar updated = this._updateVersion === updateVersion;\n\t\tif (!updated && parent && parent._visible\n\t\t\t\t&& parent._isUpdated(updateVersion)) {\n\t\t\tthis._updateVersion = updateVersion;\n\t\t\tupdated = true;\n\t\t}\n\t\treturn updated;\n\t},\n\n\t_drawSelection: function(ctx, matrix, size, selectionItems, updateVersion) {\n\t\tvar selection = this._selection,\n\t\t\titemSelected = selection & 1,\n\t\t\tboundsSelected = selection & 2\n\t\t\t\t\t|| itemSelected && this._selectBounds,\n\t\t\tpositionSelected = selection & 4;\n\t\tif (!this._drawSelected)\n\t\t\titemSelected = false;\n\t\tif ((itemSelected || boundsSelected || positionSelected)\n\t\t\t\t&& this._isUpdated(updateVersion)) {\n\t\t\tvar layer,\n\t\t\t\tcolor = this.getSelectedColor(true) || (layer = this.getLayer())\n\t\t\t\t\t&& layer.getSelectedColor(true),\n\t\t\t\tmx = matrix.appended(this.getGlobalMatrix(true)),\n\t\t\t\thalf = size / 2;\n\t\t\tctx.strokeStyle = ctx.fillStyle = color\n\t\t\t\t\t? color.toCanvasStyle(ctx) : '#009dec';\n\t\t\tctx.lineWidth=2.5;\n\t\t\tif (itemSelected)\n\t\t\t\tthis._drawSelected(ctx, mx, selectionItems);\n\t\t\tif (positionSelected) {\n\t\t\t\tvar pos = this.getPosition(true),\n\t\t\t\t\tparent = this._parent,\n\t\t\t\t\tpoint = parent ? parent.localToGlobal(pos) : pos,\n\t\t\t\t\tx = point.x,\n\t\t\t\t\ty = point.y;\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.arc(x, y, half, 0, Math.PI * 2, true);\n\t\t\t\tctx.stroke();\n\t\t\t\tvar deltas = [[0, -1], [1, 0], [0, 1], [-1, 0]],\n\t\t\t\t\tstart = half,\n\t\t\t\t\tend = size + 1;\n\t\t\t\tfor (var i = 0; i < 4; i++) {\n\t\t\t\t\tvar delta = deltas[i],\n\t\t\t\t\t\tdx = delta[0],\n\t\t\t\t\t\tdy = delta[1];\n\t\t\t\t\tctx.moveTo(x + dx * start, y + dy * start);\n\t\t\t\t\tctx.lineTo(x + dx * end, y + dy * end);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (boundsSelected) {\n\t\t\t\tvar coords = mx._transformCorners(this.getInternalBounds());\n\t\t\t\tctx.beginPath();\n\t\t\t\tfor (var i = 0; i < 8; i++) {\n\t\t\t\t\tctx[!i ? 'moveTo' : 'lineTo'](coords[i], coords[++i]);\n\t\t\t\t}\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.stroke();\n\t\t\t\tfor (var i = 0; i < 8; i++) {\n\t\t\t\t\tctx.fillRect(coords[i] - half, coords[++i] - half,\n\t\t\t\t\t\t\tsize, size);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_canComposite: function() {\n\t\treturn false;\n\t}\n}, Base.each(['down', 'drag', 'up', 'move'], function(key) {\n\tthis['removeOn' + Base.capitalize(key)] = function() {\n\t\tvar hash = {};\n\t\thash[key] = true;\n\t\treturn this.removeOn(hash);\n\t};\n}, {\n\n\tremoveOn: function(obj) {\n\t\tfor (var name in obj) {\n\t\t\tif (obj[name]) {\n\t\t\t\tvar key = 'mouse' + name,\n\t\t\t\t\tproject = this._project,\n\t\t\t\t\tsets = project._removeSets = project._removeSets || {};\n\t\t\t\tsets[key] = sets[key] || {};\n\t\t\t\tsets[key][this._id] = this;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n}), {\n\ttween: function(from, to, options) {\n\t\tif (!options) {\n\t\t\toptions = to;\n\t\t\tto = from;\n\t\t\tfrom = null;\n\t\t\tif (!options) {\n\t\t\t\toptions = to;\n\t\t\t\tto = null;\n\t\t\t}\n\t\t}\n\t\tvar easing = options && options.easing,\n\t\t\tstart = options && options.start,\n\t\t\tduration = options != null && (\n\t\t\t\ttypeof options === 'number' ? options : options.duration\n\t\t\t),\n\t\t\ttween = new Tween(this, from, to, duration, easing, start);\n\t\tfunction onFrame(event) {\n\t\t\ttween._handleFrame(event.time * 1000);\n\t\t\tif (!tween.running) {\n\t\t\t\tthis.off('frame', onFrame);\n\t\t\t}\n\t\t}\n\t\tif (duration) {\n\t\t\tthis.on('frame', onFrame);\n\t\t}\n\t\treturn tween;\n\t},\n\n\ttweenTo: function(to, options) {\n\t\treturn this.tween(null, to, options);\n\t},\n\n\ttweenFrom: function(from, options) {\n\t\treturn this.tween(from, null, options);\n\t}\n});\n\nvar Group = Item.extend({\n\t_class: 'Group',\n\t_selectBounds: false,\n\t_selectChildren: true,\n\t_serializeFields: {\n\t\tchildren: []\n\t},\n\n\tinitialize: function Group(arg) {\n\t\tthis._children = [];\n\t\tthis._namedChildren = {};\n\t\tif (!this._initialize(arg))\n\t\t\tthis.addChildren(Array.isArray(arg) ? arg : arguments);\n\t},\n\n\t_changed: function _changed(flags) {\n\t\t_changed.base.call(this, flags);\n\t\tif (flags & 2050) {\n\t\t\tthis._clipItem = undefined;\n\t\t}\n\t},\n\n\t_getClipItem: function() {\n\t\tvar clipItem = this._clipItem;\n\t\tif (clipItem === undefined) {\n\t\t\tclipItem = null;\n\t\t\tvar children = this._children;\n\t\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\t\tif (children[i]._clipMask) {\n\t\t\t\t\tclipItem = children[i];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._clipItem = clipItem;\n\t\t}\n\t\treturn clipItem;\n\t},\n\n\tisClipped: function() {\n\t\treturn !!this._getClipItem();\n\t},\n\n\tsetClipped: function(clipped) {\n\t\tvar child = this.getFirstChild();\n\t\tif (child)\n\t\t\tchild.setClipMask(clipped);\n\t},\n\n\t_getBounds: function _getBounds(matrix, options) {\n\t\tvar clipItem = this._getClipItem();\n\t\treturn clipItem\n\t\t\t? clipItem._getCachedBounds(clipItem._matrix.prepended(matrix),\n\t\t\t\tBase.set({}, options, { stroke: false }))\n\t\t\t: _getBounds.base.call(this, matrix, options);\n\t},\n\n\t_hitTestChildren: function _hitTestChildren(point, options, viewMatrix) {\n\t\tvar clipItem = this._getClipItem();\n\t\treturn (!clipItem || clipItem.contains(point))\n\t\t\t\t&& _hitTestChildren.base.call(this, point, options, viewMatrix,\n\t\t\t\t\tclipItem);\n\t},\n\n\t_draw: function(ctx, param) {\n\t\tvar clip = param.clip,\n\t\t\tclipItem = !clip && this._getClipItem();\n\t\tparam = param.extend({ clipItem: clipItem, clip: false });\n\t\tif (clip) {\n\t\t\tctx.beginPath();\n\t\t\tparam.dontStart = param.dontFinish = true;\n\t\t} else if (clipItem) {\n\t\t\tclipItem.draw(ctx, param.extend({ clip: true }));\n\t\t}\n\t\tvar children = this._children;\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tvar item = children[i];\n\t\t\tif (item !== clipItem)\n\t\t\t\titem.draw(ctx, param);\n\t\t}\n\t}\n});\n\nvar Layer = Group.extend({\n\t_class: 'Layer',\n\n\tinitialize: function Layer() {\n\t\tGroup.apply(this, arguments);\n\t},\n\n\t_getOwner: function() {\n\t\treturn this._parent || this._index != null && this._project;\n\t},\n\n\tisInserted: function isInserted() {\n\t\treturn this._parent ? isInserted.base.call(this) : this._index != null;\n\t},\n\n\tactivate: function() {\n\t\tthis._project._activeLayer = this;\n\t},\n\n\t_hitTestSelf: function() {\n\t}\n});\n\nvar Shape = Item.extend({\n\t_class: 'Shape',\n\t_applyMatrix: false,\n\t_canApplyMatrix: false,\n\t_canScaleStroke: true,\n\t_serializeFields: {\n\t\ttype: null,\n\t\tsize: null,\n\t\tradius: null\n\t},\n\n\tinitialize: function Shape(props, point) {\n\t\tthis._initialize(props, point);\n\t},\n\n\t_equals: function(item) {\n\t\treturn this._type === item._type\n\t\t\t&& this._size.equals(item._size)\n\t\t\t&& Base.equals(this._radius, item._radius);\n\t},\n\n\tcopyContent: function(source) {\n\t\tthis.setType(source._type);\n\t\tthis.setSize(source._size);\n\t\tthis.setRadius(source._radius);\n\t},\n\n\tgetType: function() {\n\t\treturn this._type;\n\t},\n\n\tsetType: function(type) {\n\t\tthis._type = type;\n\t},\n\n\tgetShape: '#getType',\n\tsetShape: '#setType',\n\n\tgetSize: function() {\n\t\tvar size = this._size;\n\t\treturn new LinkedSize(size.width, size.height, this, 'setSize');\n\t},\n\n\tsetSize: function() {\n\t\tvar size = Size.read(arguments);\n\t\tif (!this._size) {\n\t\t\tthis._size = size.clone();\n\t\t} else if (!this._size.equals(size)) {\n\t\t\tvar type = this._type,\n\t\t\t\twidth = size.width,\n\t\t\t\theight = size.height;\n\t\t\tif (type === 'rectangle') {\n\t\t\t\tthis._radius.set(Size.min(this._radius, size.divide(2).abs()));\n\t\t\t} else if (type === 'circle') {\n\t\t\t\twidth = height = (width + height) / 2;\n\t\t\t\tthis._radius = width / 2;\n\t\t\t} else if (type === 'ellipse') {\n\t\t\t\tthis._radius._set(width / 2, height / 2);\n\t\t\t}\n\t\t\tthis._size._set(width, height);\n\t\t\tthis._changed(9);\n\t\t}\n\t},\n\n\tgetRadius: function() {\n\t\tvar rad = this._radius;\n\t\treturn this._type === 'circle'\n\t\t\t\t? rad\n\t\t\t\t: new LinkedSize(rad.width, rad.height, this, 'setRadius');\n\t},\n\n\tsetRadius: function(radius) {\n\t\tvar type = this._type;\n\t\tif (type === 'circle') {\n\t\t\tif (radius === this._radius)\n\t\t\t\treturn;\n\t\t\tvar size = radius * 2;\n\t\t\tthis._radius = radius;\n\t\t\tthis._size._set(size, size);\n\t\t} else {\n\t\t\tradius = Size.read(arguments);\n\t\t\tif (!this._radius) {\n\t\t\t\tthis._radius = radius.clone();\n\t\t\t} else {\n\t\t\t\tif (this._radius.equals(radius))\n\t\t\t\t\treturn;\n\t\t\t\tthis._radius.set(radius);\n\t\t\t\tif (type === 'rectangle') {\n\t\t\t\t\tvar size = Size.max(this._size, radius.multiply(2));\n\t\t\t\t\tthis._size.set(size);\n\t\t\t\t} else if (type === 'ellipse') {\n\t\t\t\t\tthis._size._set(radius.width * 2, radius.height * 2);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._changed(9);\n\t},\n\n\tisEmpty: function() {\n\t\treturn false;\n\t},\n\n\ttoPath: function(insert) {\n\t\tvar path = new Path[Base.capitalize(this._type)]({\n\t\t\tcenter: new Point(),\n\t\t\tsize: this._size,\n\t\t\tradius: this._radius,\n\t\t\tinsert: false\n\t\t});\n\t\tpath.copyAttributes(this);\n\t\tif (paper.settings.applyMatrix)\n\t\t\tpath.setApplyMatrix(true);\n\t\tif (insert === undefined || insert)\n\t\t\tpath.insertAbove(this);\n\t\treturn path;\n\t},\n\n\ttoShape: '#clone',\n\n\t_asPathItem: function() {\n\t\treturn this.toPath(false);\n\t},\n\n\t_draw: function(ctx, param, viewMatrix, strokeMatrix) {\n\t\tvar style = this._style,\n\t\t\thasFill = style.hasFill(),\n\t\t\thasStroke = style.hasStroke(),\n\t\t\tdontPaint = param.dontFinish || param.clip,\n\t\t\tuntransformed = !strokeMatrix;\n\t\tif (hasFill || hasStroke || dontPaint) {\n\t\t\tvar type = this._type,\n\t\t\t\tradius = this._radius,\n\t\t\t\tisCircle = type === 'circle';\n\t\t\tif (!param.dontStart)\n\t\t\t\tctx.beginPath();\n\t\t\tif (untransformed && isCircle) {\n\t\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2, true);\n\t\t\t} else {\n\t\t\t\tvar rx = isCircle ? radius : radius.width,\n\t\t\t\t\try = isCircle ? radius : radius.height,\n\t\t\t\t\tsize = this._size,\n\t\t\t\t\twidth = size.width,\n\t\t\t\t\theight = size.height;\n\t\t\t\tif (untransformed && type === 'rectangle' && rx === 0 && ry === 0) {\n\t\t\t\t\tctx.rect(-width / 2, -height / 2, width, height);\n\t\t\t\t} else {\n\t\t\t\t\tvar x = width / 2,\n\t\t\t\t\t\ty = height / 2,\n\t\t\t\t\t\tkappa = 1 - 0.5522847498307936,\n\t\t\t\t\t\tcx = rx * kappa,\n\t\t\t\t\t\tcy = ry * kappa,\n\t\t\t\t\t\tc = [\n\t\t\t\t\t\t\t-x, -y + ry,\n\t\t\t\t\t\t\t-x, -y + cy,\n\t\t\t\t\t\t\t-x + cx, -y,\n\t\t\t\t\t\t\t-x + rx, -y,\n\t\t\t\t\t\t\tx - rx, -y,\n\t\t\t\t\t\t\tx - cx, -y,\n\t\t\t\t\t\t\tx, -y + cy,\n\t\t\t\t\t\t\tx, -y + ry,\n\t\t\t\t\t\t\tx, y - ry,\n\t\t\t\t\t\t\tx, y - cy,\n\t\t\t\t\t\t\tx - cx, y,\n\t\t\t\t\t\t\tx - rx, y,\n\t\t\t\t\t\t\t-x + rx, y,\n\t\t\t\t\t\t\t-x + cx, y,\n\t\t\t\t\t\t\t-x, y - cy,\n\t\t\t\t\t\t\t-x, y - ry\n\t\t\t\t\t\t];\n\t\t\t\t\tif (strokeMatrix)\n\t\t\t\t\t\tstrokeMatrix.transform(c, c, 32);\n\t\t\t\t\tctx.moveTo(c[0], c[1]);\n\t\t\t\t\tctx.bezierCurveTo(c[2], c[3], c[4], c[5], c[6], c[7]);\n\t\t\t\t\tif (x !== rx)\n\t\t\t\t\t\tctx.lineTo(c[8], c[9]);\n\t\t\t\t\tctx.bezierCurveTo(c[10], c[11], c[12], c[13], c[14], c[15]);\n\t\t\t\t\tif (y !== ry)\n\t\t\t\t\t\tctx.lineTo(c[16], c[17]);\n\t\t\t\t\tctx.bezierCurveTo(c[18], c[19], c[20], c[21], c[22], c[23]);\n\t\t\t\t\tif (x !== rx)\n\t\t\t\t\t\tctx.lineTo(c[24], c[25]);\n\t\t\t\t\tctx.bezierCurveTo(c[26], c[27], c[28], c[29], c[30], c[31]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tctx.closePath();\n\t\t}\n\t\tif (!dontPaint && (hasFill || hasStroke)) {\n\t\t\tthis._setStyles(ctx, param, viewMatrix, strokeMatrix);\n\t\t\tif (hasFill) {\n\t\t\t\tctx.fill(style.getFillRule());\n\t\t\t\tctx.shadowColor = 'rgba(0,0,0,0)';\n\t\t\t}\n\t\t\tif (hasStroke)\n\t\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\t_canComposite: function() {\n\t\treturn !(this.hasFill() && this.hasStroke());\n\t},\n\n\t_getBounds: function(matrix, options) {\n\t\tvar rect = new Rectangle(this._size).setCenter(0, 0),\n\t\t\tstyle = this._style,\n\t\t\tstrokeWidth = options.stroke && style.hasStroke()\n\t\t\t\t\t&& style.getStrokeWidth();\n\t\tif (matrix)\n\t\t\trect = matrix._transformBounds(rect);\n\t\treturn strokeWidth\n\t\t\t\t? rect.expand(Path._getStrokePadding(strokeWidth,\n\t\t\t\t\tthis._getStrokeMatrix(matrix, options)))\n\t\t\t\t: rect;\n\t}\n},\nnew function() {\n\tfunction getCornerCenter(that, point, expand) {\n\t\tvar radius = that._radius;\n\t\tif (!radius.isZero()) {\n\t\t\tvar halfSize = that._size.divide(2);\n\t\t\tfor (var q = 1; q <= 4; q++) {\n\t\t\t\tvar dir = new Point(q > 1 && q < 4 ? -1 : 1, q > 2 ? -1 : 1),\n\t\t\t\t\tcorner = dir.multiply(halfSize),\n\t\t\t\t\tcenter = corner.subtract(dir.multiply(radius)),\n\t\t\t\t\trect = new Rectangle(\n\t\t\t\t\t\t\texpand ? corner.add(dir.multiply(expand)) : corner,\n\t\t\t\t\t\t\tcenter);\n\t\t\t\tif (rect.contains(point))\n\t\t\t\t\treturn { point: center, quadrant: q };\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction isOnEllipseStroke(point, radius, padding, quadrant) {\n\t\tvar vector = point.divide(radius);\n\t\treturn (!quadrant || vector.isInQuadrant(quadrant)) &&\n\t\t\t\tvector.subtract(vector.normalize()).multiply(radius)\n\t\t\t\t\t.divide(padding).length <= 1;\n\t}\n\n\treturn {\n\t\t_contains: function _contains(point) {\n\t\t\tif (this._type === 'rectangle') {\n\t\t\t\tvar center = getCornerCenter(this, point);\n\t\t\t\treturn center\n\t\t\t\t\t\t? point.subtract(center.point).divide(this._radius)\n\t\t\t\t\t\t\t.getLength() <= 1\n\t\t\t\t\t\t: _contains.base.call(this, point);\n\t\t\t} else {\n\t\t\t\treturn point.divide(this.size).getLength() <= 0.5;\n\t\t\t}\n\t\t},\n\n\t\t_hitTestSelf: function _hitTestSelf(point, options, viewMatrix,\n\t\t\t\tstrokeMatrix) {\n\t\t\tvar hit = false,\n\t\t\t\tstyle = this._style,\n\t\t\t\thitStroke = options.stroke && style.hasStroke(),\n\t\t\t\thitFill = options.fill && style.hasFill();\n\t\t\tif (hitStroke || hitFill) {\n\t\t\t\tvar type = this._type,\n\t\t\t\t\tradius = this._radius,\n\t\t\t\t\tstrokeRadius = hitStroke ? style.getStrokeWidth() / 2 : 0,\n\t\t\t\t\tstrokePadding = options._tolerancePadding.add(\n\t\t\t\t\t\tPath._getStrokePadding(strokeRadius,\n\t\t\t\t\t\t\t!style.getStrokeScaling() && strokeMatrix));\n\t\t\t\tif (type === 'rectangle') {\n\t\t\t\t\tvar padding = strokePadding.multiply(2),\n\t\t\t\t\t\tcenter = getCornerCenter(this, point, padding);\n\t\t\t\t\tif (center) {\n\t\t\t\t\t\thit = isOnEllipseStroke(point.subtract(center.point),\n\t\t\t\t\t\t\t\tradius, strokePadding, center.quadrant);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar rect = new Rectangle(this._size).setCenter(0, 0),\n\t\t\t\t\t\t\touter = rect.expand(padding),\n\t\t\t\t\t\t\tinner = rect.expand(padding.negate());\n\t\t\t\t\t\thit = outer._containsPoint(point)\n\t\t\t\t\t\t\t\t&& !inner._containsPoint(point);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\thit = isOnEllipseStroke(point, radius, strokePadding);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn hit ? new HitResult(hitStroke ? 'stroke' : 'fill', this)\n\t\t\t\t\t: _hitTestSelf.base.apply(this, arguments);\n\t\t}\n\t};\n}, {\n\nstatics: new function() {\n\tfunction createShape(type, point, size, radius, args) {\n\t\tvar item = Base.create(Shape.prototype);\n\t\titem._type = type;\n\t\titem._size = size;\n\t\titem._radius = radius;\n\t\titem._initialize(Base.getNamed(args), point);\n\t\treturn item;\n\t}\n\n\treturn {\n\t\tCircle: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tcenter = Point.readNamed(args, 'center'),\n\t\t\t\tradius = Base.readNamed(args, 'radius');\n\t\t\treturn createShape('circle', center, new Size(radius * 2), radius,\n\t\t\t\t\targs);\n\t\t},\n\n\t\tRectangle: function() {\n\t\t\tvar args = arguments,\n\t\t\t\trect = Rectangle.readNamed(args, 'rectangle'),\n\t\t\t\tradius = Size.min(Size.readNamed(args, 'radius'),\n\t\t\t\t\t\trect.getSize(true).divide(2));\n\t\t\treturn createShape('rectangle', rect.getCenter(true),\n\t\t\t\t\trect.getSize(true), radius, args);\n\t\t},\n\n\t\tEllipse: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tellipse = Shape._readEllipse(args),\n\t\t\t\tradius = ellipse.radius;\n\t\t\treturn createShape('ellipse', ellipse.center, radius.multiply(2),\n\t\t\t\t\tradius, args);\n\t\t},\n\n\t\t_readEllipse: function(args) {\n\t\t\tvar center,\n\t\t\t\tradius;\n\t\t\tif (Base.hasNamed(args, 'radius')) {\n\t\t\t\tcenter = Point.readNamed(args, 'center');\n\t\t\t\tradius = Size.readNamed(args, 'radius');\n\t\t\t} else {\n\t\t\t\tvar rect = Rectangle.readNamed(args, 'rectangle');\n\t\t\t\tcenter = rect.getCenter(true);\n\t\t\t\tradius = rect.getSize(true).divide(2);\n\t\t\t}\n\t\t\treturn { center: center, radius: radius };\n\t\t}\n\t};\n}});\n\nvar Raster = Item.extend({\n\t_class: 'Raster',\n\t_applyMatrix: false,\n\t_canApplyMatrix: false,\n\t_boundsOptions: { stroke: false, handle: false },\n\t_serializeFields: {\n\t\tcrossOrigin: null,\n\t\tsource: null\n\t},\n\t_prioritize: ['crossOrigin'],\n\t_smoothing: false,\n\tbeans: true,\n\n\tinitialize: function Raster(source, position) {\n\t\tif (!this._initialize(source,\n\t\t\t\tposition !== undefined && Point.read(arguments))) {\n\t\t\tvar image,\n\t\t\t\ttype = typeof source,\n\t\t\t\tobject = type === 'string'\n\t\t\t\t\t? document.getElementById(source)\n\t\t\t\t\t: type  === 'object'\n\t\t\t\t\t\t? source\n\t\t\t\t\t\t: null;\n\t\t\tif (object && object !== Item.NO_INSERT) {\n\t\t\t\tif (object.getContext || object.naturalHeight != null) {\n\t\t\t\t\timage = object;\n\t\t\t\t} else if (object) {\n\t\t\t\t\tvar size = Size.read(arguments);\n\t\t\t\t\tif (!size.isZero()) {\n\t\t\t\t\t\timage = CanvasProvider.getCanvas(size);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (image) {\n\t\t\t\tthis.setImage(image);\n\t\t\t} else {\n\t\t\t\tthis.setSource(source);\n\t\t\t}\n\t\t}\n\t\tif (!this._size) {\n\t\t\tthis._size = new Size();\n\t\t\tthis._loaded = false;\n\t\t}\n\t},\n\n\t_equals: function(item) {\n\t\treturn this.getSource() === item.getSource();\n\t},\n\n\tcopyContent: function(source) {\n\t\tvar image = source._image,\n\t\t\tcanvas = source._canvas;\n\t\tif (image) {\n\t\t\tthis._setImage(image);\n\t\t} else if (canvas) {\n\t\t\tvar copyCanvas = CanvasProvider.getCanvas(source._size);\n\t\t\tcopyCanvas.getContext('2d').drawImage(canvas, 0, 0);\n\t\t\tthis._setImage(copyCanvas);\n\t\t}\n\t\tthis._crossOrigin = source._crossOrigin;\n\t},\n\n\tgetSize: function() {\n\t\tvar size = this._size;\n\t\treturn new LinkedSize(size ? size.width : 0, size ? size.height : 0,\n\t\t\t\tthis, 'setSize');\n\t},\n\n\tsetSize: function() {\n\t\tvar size = Size.read(arguments);\n\t\tif (!size.equals(this._size)) {\n\t\t\tif (size.width > 0 && size.height > 0) {\n\t\t\t\tvar element = this.getElement();\n\t\t\t\tthis._setImage(CanvasProvider.getCanvas(size));\n\t\t\t\tif (element)\n\t\t\t\t\tthis.getContext(true).drawImage(element, 0, 0,\n\t\t\t\t\t\t\tsize.width, size.height);\n\t\t\t} else {\n\t\t\t\tif (this._canvas)\n\t\t\t\t\tCanvasProvider.release(this._canvas);\n\t\t\t\tthis._size = size.clone();\n\t\t\t}\n\t\t}\n\t},\n\n\tgetWidth: function() {\n\t\treturn this._size ? this._size.width : 0;\n\t},\n\n\tsetWidth: function(width) {\n\t\tthis.setSize(width, this.getHeight());\n\t},\n\n\tgetHeight: function() {\n\t\treturn this._size ? this._size.height : 0;\n\t},\n\n\tsetHeight: function(height) {\n\t\tthis.setSize(this.getWidth(), height);\n\t},\n\n\tgetLoaded: function() {\n\t\treturn this._loaded;\n\t},\n\n\tisEmpty: function() {\n\t\tvar size = this._size;\n\t\treturn !size || size.width === 0 && size.height === 0;\n\t},\n\n\tgetResolution: function() {\n\t\tvar matrix = this._matrix,\n\t\t\torig = new Point(0, 0).transform(matrix),\n\t\t\tu = new Point(1, 0).transform(matrix).subtract(orig),\n\t\t\tv = new Point(0, 1).transform(matrix).subtract(orig);\n\t\treturn new Size(\n\t\t\t72 / u.getLength(),\n\t\t\t72 / v.getLength()\n\t\t);\n\t},\n\n\tgetPpi: '#getResolution',\n\n\tgetImage: function() {\n\t\treturn this._image;\n\t},\n\n\tsetImage: function(image) {\n\t\tvar that = this;\n\n\t\tfunction emit(event) {\n\t\t\tvar view = that.getView(),\n\t\t\t\ttype = event && event.type || 'load';\n\t\t\tif (view && that.responds(type)) {\n\t\t\t\tpaper = view._scope;\n\t\t\t\tthat.emit(type, new Event(event));\n\t\t\t}\n\t\t}\n\n\t\tthis._setImage(image);\n\t\tif (this._loaded) {\n\t\t\tsetTimeout(emit, 0);\n\t\t} else if (image) {\n\t\t\tDomEvent.add(image, {\n\t\t\t\tload: function(event) {\n\t\t\t\t\tthat._setImage(image);\n\t\t\t\t\temit(event);\n\t\t\t\t},\n\t\t\t\terror: emit\n\t\t\t});\n\t\t}\n\t},\n\n\t_setImage: function(image) {\n\t\tif (this._canvas)\n\t\t\tCanvasProvider.release(this._canvas);\n\t\tif (image && image.getContext) {\n\t\t\tthis._image = null;\n\t\t\tthis._canvas = image;\n\t\t\tthis._loaded = true;\n\t\t} else {\n\t\t\tthis._image = image;\n\t\t\tthis._canvas = null;\n\t\t\tthis._loaded = !!(image && image.src && image.complete);\n\t\t}\n\t\tthis._size = new Size(\n\t\t\t\timage ? image.naturalWidth || image.width : 0,\n\t\t\t\timage ? image.naturalHeight || image.height : 0);\n\t\tthis._context = null;\n\t\tthis._changed(1033);\n\t},\n\n\tgetCanvas: function() {\n\t\tif (!this._canvas) {\n\t\t\tvar ctx = CanvasProvider.getContext(this._size);\n\t\t\ttry {\n\t\t\t\tif (this._image)\n\t\t\t\t\tctx.drawImage(this._image, 0, 0);\n\t\t\t\tthis._canvas = ctx.canvas;\n\t\t\t} catch (e) {\n\t\t\t\tCanvasProvider.release(ctx);\n\t\t\t}\n\t\t}\n\t\treturn this._canvas;\n\t},\n\n\tsetCanvas: '#setImage',\n\n\tgetContext: function(_change) {\n\t\tif (!this._context)\n\t\t\tthis._context = this.getCanvas().getContext('2d');\n\t\tif (_change) {\n\t\t\tthis._image = null;\n\t\t\tthis._changed(1025);\n\t\t}\n\t\treturn this._context;\n\t},\n\n\tsetContext: function(context) {\n\t\tthis._context = context;\n\t},\n\n\tgetSource: function() {\n\t\tvar image = this._image;\n\t\treturn image && image.src || this.toDataURL();\n\t},\n\n\tsetSource: function(src) {\n\t\tvar image = new self.Image(),\n\t\t\tcrossOrigin = this._crossOrigin;\n\t\tif (crossOrigin)\n\t\t\timage.crossOrigin = crossOrigin;\n\t\tif (src)\n\t\t\timage.src = src;\n\t\tthis.setImage(image);\n\t},\n\n\tgetCrossOrigin: function() {\n\t\tvar image = this._image;\n\t\treturn image && image.crossOrigin || this._crossOrigin || '';\n\t},\n\n\tsetCrossOrigin: function(crossOrigin) {\n\t\tthis._crossOrigin = crossOrigin;\n\t\tvar image = this._image;\n\t\tif (image)\n\t\t\timage.crossOrigin = crossOrigin;\n\t},\n\n\tgetSmoothing: function() {\n\t\treturn this._smoothing;\n\t},\n\n\tsetSmoothing: function(smoothing) {\n\t\tthis._smoothing = smoothing;\n\t\tthis._changed(257);\n\t},\n\n\tgetElement: function() {\n\t\treturn this._canvas || this._loaded && this._image;\n\t}\n}, {\n\tbeans: false,\n\n\tgetSubCanvas: function() {\n\t\tvar rect = Rectangle.read(arguments),\n\t\t\tctx = CanvasProvider.getContext(rect.getSize());\n\t\tvar clippedStartX = Math.max(0, rect.x);\n\t\tvar clippedStartY = Math.max(0, rect.y);\n\t\tvar clippedEndX = Math.min(this.getCanvas().width, rect.x + rect.width);\n\t\tvar clippedEndY = Math.min(this.getCanvas().height, rect.y + rect.height);\n\t\tctx.drawImage(this.getCanvas(),\n\t\t\tclippedStartX, clippedStartY,\n\t\t\tclippedEndX - clippedStartX, clippedEndY - clippedStartY,\n\t\t\tclippedStartX - rect.x, clippedStartY - rect.y,\n\t\t\tclippedEndX - clippedStartX, clippedEndY - clippedStartY\n\t\t);\n\t\treturn ctx.canvas;\n\t},\n\n\tgetSubRaster: function() {\n\t\tvar rect = Rectangle.read(arguments),\n\t\t\traster = new Raster(Item.NO_INSERT);\n\t\traster._setImage(this.getSubCanvas(rect));\n\t\traster.translate(rect.getCenter().subtract(this.getSize().divide(2)));\n\t\traster._matrix.prepend(this._matrix);\n\t\traster.insertAbove(this);\n\t\treturn raster;\n\t},\n\n\ttoDataURL: function() {\n\t\tvar image = this._image,\n\t\t\tsrc = image && image.src;\n\t\tif (/^data:/.test(src))\n\t\t\treturn src;\n\t\tvar canvas = this.getCanvas();\n\t\treturn canvas ? canvas.toDataURL.apply(canvas, arguments) : null;\n\t},\n\n\tdrawImage: function(image ) {\n\t\tvar point = Point.read(arguments, 1);\n\t\tthis.getContext(true).drawImage(image, point.x, point.y);\n\t},\n\n\tgetAverageColor: function(object) {\n\t\tvar bounds, path;\n\t\tif (!object) {\n\t\t\tbounds = this.getBounds();\n\t\t} else if (object instanceof PathItem) {\n\t\t\tpath = object;\n\t\t\tbounds = object.getBounds();\n\t\t} else if (typeof object === 'object') {\n\t\t\tif ('width' in object) {\n\t\t\t\tbounds = new Rectangle(object);\n\t\t\t} else if ('x' in object) {\n\t\t\t\tbounds = new Rectangle(object.x - 0.5, object.y - 0.5, 1, 1);\n\t\t\t}\n\t\t}\n\t\tif (!bounds)\n\t\t\treturn null;\n\t\tvar sampleSize = 32,\n\t\t\twidth = Math.min(bounds.width, sampleSize),\n\t\t\theight = Math.min(bounds.height, sampleSize);\n\t\tvar ctx = Raster._sampleContext;\n\t\tif (!ctx) {\n\t\t\tctx = Raster._sampleContext = CanvasProvider.getContext(\n\t\t\t\t\tnew Size(sampleSize));\n\t\t} else {\n\t\t\tctx.clearRect(0, 0, sampleSize + 1, sampleSize + 1);\n\t\t}\n\t\tctx.save();\n\t\tvar matrix = new Matrix()\n\t\t\t\t.scale(width / bounds.width, height / bounds.height)\n\t\t\t\t.translate(-bounds.x, -bounds.y);\n\t\tmatrix.applyToContext(ctx);\n\t\tif (path)\n\t\t\tpath.draw(ctx, new Base({ clip: true, matrices: [matrix] }));\n\t\tthis._matrix.applyToContext(ctx);\n\t\tvar element = this.getElement(),\n\t\t\tsize = this._size;\n\t\tif (element)\n\t\t\tctx.drawImage(element, -size.width / 2, -size.height / 2);\n\t\tctx.restore();\n\t\tvar pixels = ctx.getImageData(0.5, 0.5, Math.ceil(width),\n\t\t\t\tMath.ceil(height)).data,\n\t\t\tchannels = [0, 0, 0],\n\t\t\ttotal = 0;\n\t\tfor (var i = 0, l = pixels.length; i < l; i += 4) {\n\t\t\tvar alpha = pixels[i + 3];\n\t\t\ttotal += alpha;\n\t\t\talpha /= 255;\n\t\t\tchannels[0] += pixels[i] * alpha;\n\t\t\tchannels[1] += pixels[i + 1] * alpha;\n\t\t\tchannels[2] += pixels[i + 2] * alpha;\n\t\t}\n\t\tfor (var i = 0; i < 3; i++)\n\t\t\tchannels[i] /= total;\n\t\treturn total ? Color.read(channels) : null;\n\t},\n\n\tgetPixel: function() {\n\t\tvar point = Point.read(arguments);\n\t\tvar data = this.getContext().getImageData(point.x, point.y, 1, 1).data;\n\t\treturn new Color('rgb', [data[0] / 255, data[1] / 255, data[2] / 255],\n\t\t\t\tdata[3] / 255);\n\t},\n\n\tsetPixel: function() {\n\t\tvar args = arguments,\n\t\t\tpoint = Point.read(args),\n\t\t\tcolor = Color.read(args),\n\t\t\tcomponents = color._convert('rgb'),\n\t\t\talpha = color._alpha,\n\t\t\tctx = this.getContext(true),\n\t\t\timageData = ctx.createImageData(1, 1),\n\t\t\tdata = imageData.data;\n\t\tdata[0] = components[0] * 255;\n\t\tdata[1] = components[1] * 255;\n\t\tdata[2] = components[2] * 255;\n\t\tdata[3] = alpha != null ? alpha * 255 : 255;\n\t\tctx.putImageData(imageData, point.x, point.y);\n\t},\n\n\tclear: function() {\n\t\tvar size = this._size;\n\t\tthis.getContext(true).clearRect(0, 0, size.width + 1, size.height + 1);\n\t},\n\n\tcreateImageData: function() {\n\t\tvar size = Size.read(arguments);\n\t\treturn this.getContext().createImageData(size.width, size.height);\n\t},\n\n\tgetImageData: function() {\n\t\tvar rect = Rectangle.read(arguments);\n\t\tif (rect.isEmpty())\n\t\t\trect = new Rectangle(this._size);\n\t\treturn this.getContext().getImageData(rect.x, rect.y,\n\t\t\t\trect.width, rect.height);\n\t},\n\n\tsetImageData: function(data ) {\n\t\tvar point = Point.read(arguments, 1);\n\t\tthis.getContext(true).putImageData(data, point.x, point.y);\n\t},\n\n\t_getBounds: function(matrix, options) {\n\t\tvar rect = new Rectangle(this._size).setCenter(0, 0);\n\t\treturn matrix ? matrix._transformBounds(rect) : rect;\n\t},\n\n\t_hitTestSelf: function(point) {\n\t\tif (this._contains(point)) {\n\t\t\tvar that = this;\n\t\t\treturn new HitResult('pixel', that, {\n\t\t\t\toffset: point.add(that._size.divide(2)).round(),\n\t\t\t\tcolor: {\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\treturn that.getPixel(this.offset);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\n\t_draw: function(ctx, param, viewMatrix) {\n\t\tvar element = this.getElement();\n\t\tif (element && element.width > 0 && element.height > 0) {\n\t\t\tctx.globalAlpha = Numerical.clamp(this._opacity, 0, 1);\n\n\t\t\tthis._setStyles(ctx, param, viewMatrix);\n\n\t\t\tDomElement.setPrefixed(\n\t\t\t\tctx, 'imageSmoothingEnabled', this._smoothing\n\t\t\t);\n\n\t\t\tctx.drawImage(element,\n\t\t\t\t\t-this._size.width / 2, -this._size.height / 2);\n\t\t}\n\t},\n\n\t_canComposite: function() {\n\t\treturn true;\n\t}\n});\n\nvar SymbolItem = Item.extend({\n\t_class: 'SymbolItem',\n\t_applyMatrix: false,\n\t_canApplyMatrix: false,\n\t_boundsOptions: { stroke: true },\n\t_serializeFields: {\n\t\tsymbol: null\n\t},\n\n\tinitialize: function SymbolItem(arg0, arg1) {\n\t\tif (!this._initialize(arg0,\n\t\t\t\targ1 !== undefined && Point.read(arguments, 1)))\n\t\t\tthis.setDefinition(arg0 instanceof SymbolDefinition ?\n\t\t\t\t\targ0 : new SymbolDefinition(arg0));\n\t},\n\n\t_equals: function(item) {\n\t\treturn this._definition === item._definition;\n\t},\n\n\tcopyContent: function(source) {\n\t\tthis.setDefinition(source._definition);\n\t},\n\n\tgetDefinition: function() {\n\t\treturn this._definition;\n\t},\n\n\tsetDefinition: function(definition) {\n\t\tthis._definition = definition;\n\t\tthis._changed(9);\n\t},\n\n\tgetSymbol: '#getDefinition',\n\tsetSymbol: '#setDefinition',\n\n\tisEmpty: function() {\n\t\treturn this._definition._item.isEmpty();\n\t},\n\n\t_getBounds: function(matrix, options) {\n\t\tvar item = this._definition._item;\n\t\treturn item._getCachedBounds(item._matrix.prepended(matrix), options);\n\t},\n\n\t_hitTestSelf: function(point, options, viewMatrix) {\n\t\tvar opts = options.extend({ all: false });\n\t\tvar res = this._definition._item._hitTest(point, opts, viewMatrix);\n\t\tif (res)\n\t\t\tres.item = this;\n\t\treturn res;\n\t},\n\n\t_draw: function(ctx, param) {\n\t\tthis._definition._item.draw(ctx, param);\n\t}\n\n});\n\nvar SymbolDefinition = Base.extend({\n\t_class: 'SymbolDefinition',\n\n\tinitialize: function SymbolDefinition(item, dontCenter) {\n\t\tthis._id = UID.get();\n\t\tthis.project = paper.project;\n\t\tif (item)\n\t\t\tthis.setItem(item, dontCenter);\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\treturn dictionary.add(this, function() {\n\t\t\treturn Base.serialize([this._class, this._item],\n\t\t\t\t\toptions, false, dictionary);\n\t\t});\n\t},\n\n\t_changed: function(flags) {\n\t\tif (flags & 8)\n\t\t\tItem._clearBoundsCache(this);\n\t\tif (flags & 1)\n\t\t\tthis.project._changed(flags);\n\t},\n\n\tgetItem: function() {\n\t\treturn this._item;\n\t},\n\n\tsetItem: function(item, _dontCenter) {\n\t\tif (item._symbol)\n\t\t\titem = item.clone();\n\t\tif (this._item)\n\t\t\tthis._item._symbol = null;\n\t\tthis._item = item;\n\t\titem.remove();\n\t\titem.setSelected(false);\n\t\tif (!_dontCenter)\n\t\t\titem.setPosition(new Point());\n\t\titem._symbol = this;\n\t\tthis._changed(9);\n\t},\n\n\tgetDefinition: '#getItem',\n\tsetDefinition: '#setItem',\n\n\tplace: function(position) {\n\t\treturn new SymbolItem(this, position);\n\t},\n\n\tclone: function() {\n\t\treturn new SymbolDefinition(this._item.clone(false));\n\t},\n\n\tequals: function(symbol) {\n\t\treturn symbol === this\n\t\t\t\t|| symbol && this._item.equals(symbol._item)\n\t\t\t\t|| false;\n\t}\n});\n\nvar HitResult = Base.extend({\n\t_class: 'HitResult',\n\n\tinitialize: function HitResult(type, item, values) {\n\t\tthis.type = type;\n\t\tthis.item = item;\n\t\tif (values)\n\t\t\tthis.inject(values);\n\t},\n\n\tstatics: {\n\t\tgetOptions: function(args) {\n\t\t\tvar options = args && Base.read(args);\n\t\t\treturn new Base({\n\t\t\t\ttype: null,\n\t\t\t\ttolerance: paper.settings.hitTolerance,\n\t\t\t\tfill: !options,\n\t\t\t\tstroke: !options,\n\t\t\t\tsegments: !options,\n\t\t\t\thandles: false,\n\t\t\t\tends: false,\n\t\t\t\tposition: false,\n\t\t\t\tcenter: false,\n\t\t\t\tbounds: false,\n\t\t\t\tguides: false,\n\t\t\t\tselected: false\n\t\t\t}, options);\n\t\t}\n\t}\n});\n\nvar Segment = Base.extend({\n\t_class: 'Segment',\n\tbeans: true,\n\t_selection: 0,\n\n\tinitialize: function Segment(arg0, arg1, arg2, arg3, arg4, arg5) {\n\t\tvar count = arguments.length,\n\t\t\tpoint, handleIn, handleOut, selection;\n\t\tif (count > 0) {\n\t\t\tif (arg0 == null || typeof arg0 === 'object') {\n\t\t\t\tif (count === 1 && arg0 && 'point' in arg0) {\n\t\t\t\t\tpoint = arg0.point;\n\t\t\t\t\thandleIn = arg0.handleIn;\n\t\t\t\t\thandleOut = arg0.handleOut;\n\t\t\t\t\tselection = arg0.selection;\n\t\t\t\t} else {\n\t\t\t\t\tpoint = arg0;\n\t\t\t\t\thandleIn = arg1;\n\t\t\t\t\thandleOut = arg2;\n\t\t\t\t\tselection = arg3;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tpoint = [ arg0, arg1 ];\n\t\t\t\thandleIn = arg2 !== undefined ? [ arg2, arg3 ] : null;\n\t\t\t\thandleOut = arg4 !== undefined ? [ arg4, arg5 ] : null;\n\t\t\t}\n\t\t}\n\t\tnew SegmentPoint(point, this, '_point');\n\t\tnew SegmentPoint(handleIn, this, '_handleIn');\n\t\tnew SegmentPoint(handleOut, this, '_handleOut');\n\t\tif (selection)\n\t\t\tthis.setSelection(selection);\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\tvar point = this._point,\n\t\t\tselection = this._selection,\n\t\t\tobj = selection || this.hasHandles()\n\t\t\t\t\t? [point, this._handleIn, this._handleOut]\n\t\t\t\t\t: point;\n\t\tif (selection)\n\t\t\tobj.push(selection);\n\t\treturn Base.serialize(obj, options, true, dictionary);\n\t},\n\n\t_changed: function(point) {\n\t\tvar path = this._path;\n\t\tif (!path)\n\t\t\treturn;\n\t\tvar curves = path._curves,\n\t\t\tindex = this._index,\n\t\t\tcurve;\n\t\tif (curves) {\n\t\t\tif ((!point || point === this._point || point === this._handleIn)\n\t\t\t\t\t&& (curve = index > 0 ? curves[index - 1] : path._closed\n\t\t\t\t\t\t? curves[curves.length - 1] : null))\n\t\t\t\tcurve._changed();\n\t\t\tif ((!point || point === this._point || point === this._handleOut)\n\t\t\t\t\t&& (curve = curves[index]))\n\t\t\t\tcurve._changed();\n\t\t}\n\t\tpath._changed(41);\n\t},\n\n\tgetPoint: function() {\n\t\treturn this._point;\n\t},\n\n\tsetPoint: function() {\n\t\tthis._point.set(Point.read(arguments));\n\t},\n\n\tgetHandleIn: function() {\n\t\treturn this._handleIn;\n\t},\n\n\tsetHandleIn: function() {\n\t\tthis._handleIn.set(Point.read(arguments));\n\t},\n\n\tgetHandleOut: function() {\n\t\treturn this._handleOut;\n\t},\n\n\tsetHandleOut: function() {\n\t\tthis._handleOut.set(Point.read(arguments));\n\t},\n\n\thasHandles: function() {\n\t\treturn !this._handleIn.isZero() || !this._handleOut.isZero();\n\t},\n\n\tisSmooth: function() {\n\t\tvar handleIn = this._handleIn,\n\t\t\thandleOut = this._handleOut;\n\t\treturn !handleIn.isZero() && !handleOut.isZero()\n\t\t\t\t&& handleIn.isCollinear(handleOut);\n\t},\n\n\tclearHandles: function() {\n\t\tthis._handleIn._set(0, 0);\n\t\tthis._handleOut._set(0, 0);\n\t},\n\n\tgetSelection: function() {\n\t\treturn this._selection;\n\t},\n\n\tsetSelection: function(selection) {\n\t\tvar oldSelection = this._selection,\n\t\t\tpath = this._path;\n\t\tthis._selection = selection = selection || 0;\n\t\tif (path && selection !== oldSelection) {\n\t\t\tpath._updateSelection(this, oldSelection, selection);\n\t\t\tpath._changed(257);\n\t\t}\n\t},\n\n\t_changeSelection: function(flag, selected) {\n\t\tvar selection = this._selection;\n\t\tthis.setSelection(selected ? selection | flag : selection & ~flag);\n\t},\n\n\tisSelected: function() {\n\t\treturn !!(this._selection & 7);\n\t},\n\n\tsetSelected: function(selected) {\n\t\tthis._changeSelection(7, selected);\n\t},\n\n\tgetIndex: function() {\n\t\treturn this._index !== undefined ? this._index : null;\n\t},\n\n\tgetPath: function() {\n\t\treturn this._path || null;\n\t},\n\n\tgetCurve: function() {\n\t\tvar path = this._path,\n\t\t\tindex = this._index;\n\t\tif (path) {\n\t\t\tif (index > 0 && !path._closed\n\t\t\t\t\t&& index === path._segments.length - 1)\n\t\t\t\tindex--;\n\t\t\treturn path.getCurves()[index] || null;\n\t\t}\n\t\treturn null;\n\t},\n\n\tgetLocation: function() {\n\t\tvar curve = this.getCurve();\n\t\treturn curve\n\t\t\t\t? new CurveLocation(curve, this === curve._segment1 ? 0 : 1)\n\t\t\t\t: null;\n\t},\n\n\tgetNext: function() {\n\t\tvar segments = this._path && this._path._segments;\n\t\treturn segments && (segments[this._index + 1]\n\t\t\t\t|| this._path._closed && segments[0]) || null;\n\t},\n\n\tsmooth: function(options, _first, _last) {\n\t\tvar opts = options || {},\n\t\t\ttype = opts.type,\n\t\t\tfactor = opts.factor,\n\t\t\tprev = this.getPrevious(),\n\t\t\tnext = this.getNext(),\n\t\t\tp0 = (prev || this)._point,\n\t\t\tp1 = this._point,\n\t\t\tp2 = (next || this)._point,\n\t\t\td1 = p0.getDistance(p1),\n\t\t\td2 = p1.getDistance(p2);\n\t\tif (!type || type === 'catmull-rom') {\n\t\t\tvar a = factor === undefined ? 0.5 : factor,\n\t\t\t\td1_a = Math.pow(d1, a),\n\t\t\t\td1_2a = d1_a * d1_a,\n\t\t\t\td2_a = Math.pow(d2, a),\n\t\t\t\td2_2a = d2_a * d2_a;\n\t\t\tif (!_first && prev) {\n\t\t\t\tvar A = 2 * d2_2a + 3 * d2_a * d1_a + d1_2a,\n\t\t\t\t\tN = 3 * d2_a * (d2_a + d1_a);\n\t\t\t\tthis.setHandleIn(N !== 0\n\t\t\t\t\t? new Point(\n\t\t\t\t\t\t(d2_2a * p0._x + A * p1._x - d1_2a * p2._x) / N - p1._x,\n\t\t\t\t\t\t(d2_2a * p0._y + A * p1._y - d1_2a * p2._y) / N - p1._y)\n\t\t\t\t\t: new Point());\n\t\t\t}\n\t\t\tif (!_last && next) {\n\t\t\t\tvar A = 2 * d1_2a + 3 * d1_a * d2_a + d2_2a,\n\t\t\t\t\tN = 3 * d1_a * (d1_a + d2_a);\n\t\t\t\tthis.setHandleOut(N !== 0\n\t\t\t\t\t? new Point(\n\t\t\t\t\t\t(d1_2a * p2._x + A * p1._x - d2_2a * p0._x) / N - p1._x,\n\t\t\t\t\t\t(d1_2a * p2._y + A * p1._y - d2_2a * p0._y) / N - p1._y)\n\t\t\t\t\t: new Point());\n\t\t\t}\n\t\t} else if (type === 'geometric') {\n\t\t\tif (prev && next) {\n\t\t\t\tvar vector = p0.subtract(p2),\n\t\t\t\t\tt = factor === undefined ? 0.4 : factor,\n\t\t\t\t\tk = t * d1 / (d1 + d2);\n\t\t\t\tif (!_first)\n\t\t\t\t\tthis.setHandleIn(vector.multiply(k));\n\t\t\t\tif (!_last)\n\t\t\t\t\tthis.setHandleOut(vector.multiply(k - t));\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error('Smoothing method \\'' + type + '\\' not supported.');\n\t\t}\n\t},\n\n\tgetPrevious: function() {\n\t\tvar segments = this._path && this._path._segments;\n\t\treturn segments && (segments[this._index - 1]\n\t\t\t\t|| this._path._closed && segments[segments.length - 1]) || null;\n\t},\n\n\tisFirst: function() {\n\t\treturn !this._index;\n\t},\n\n\tisLast: function() {\n\t\tvar path = this._path;\n\t\treturn path && this._index === path._segments.length - 1 || false;\n\t},\n\n\treverse: function() {\n\t\tvar handleIn = this._handleIn,\n\t\t\thandleOut = this._handleOut,\n\t\t\ttmp = handleIn.clone();\n\t\thandleIn.set(handleOut);\n\t\thandleOut.set(tmp);\n\t},\n\n\treversed: function() {\n\t\treturn new Segment(this._point, this._handleOut, this._handleIn);\n\t},\n\n\tremove: function() {\n\t\treturn this._path ? !!this._path.removeSegment(this._index) : false;\n\t},\n\n\tclone: function() {\n\t\treturn new Segment(this._point, this._handleIn, this._handleOut);\n\t},\n\n\tequals: function(segment) {\n\t\treturn segment === this || segment && this._class === segment._class\n\t\t\t\t&& this._point.equals(segment._point)\n\t\t\t\t&& this._handleIn.equals(segment._handleIn)\n\t\t\t\t&& this._handleOut.equals(segment._handleOut)\n\t\t\t\t|| false;\n\t},\n\n\ttoString: function() {\n\t\tvar parts = [ 'point: ' + this._point ];\n\t\tif (!this._handleIn.isZero())\n\t\t\tparts.push('handleIn: ' + this._handleIn);\n\t\tif (!this._handleOut.isZero())\n\t\t\tparts.push('handleOut: ' + this._handleOut);\n\t\treturn '{ ' + parts.join(', ') + ' }';\n\t},\n\n\ttransform: function(matrix) {\n\t\tthis._transformCoordinates(matrix, new Array(6), true);\n\t\tthis._changed();\n\t},\n\n\tinterpolate: function(from, to, factor) {\n\t\tvar u = 1 - factor,\n\t\t\tv = factor,\n\t\t\tpoint1 = from._point,\n\t\t\tpoint2 = to._point,\n\t\t\thandleIn1 = from._handleIn,\n\t\t\thandleIn2 = to._handleIn,\n\t\t\thandleOut2 = to._handleOut,\n\t\t\thandleOut1 = from._handleOut;\n\t\tthis._point._set(\n\t\t\t\tu * point1._x + v * point2._x,\n\t\t\t\tu * point1._y + v * point2._y, true);\n\t\tthis._handleIn._set(\n\t\t\t\tu * handleIn1._x + v * handleIn2._x,\n\t\t\t\tu * handleIn1._y + v * handleIn2._y, true);\n\t\tthis._handleOut._set(\n\t\t\t\tu * handleOut1._x + v * handleOut2._x,\n\t\t\t\tu * handleOut1._y + v * handleOut2._y, true);\n\t\tthis._changed();\n\t},\n\n\t_transformCoordinates: function(matrix, coords, change) {\n\t\tvar point = this._point,\n\t\t\thandleIn = !change || !this._handleIn.isZero()\n\t\t\t\t\t? this._handleIn : null,\n\t\t\thandleOut = !change || !this._handleOut.isZero()\n\t\t\t\t\t? this._handleOut : null,\n\t\t\tx = point._x,\n\t\t\ty = point._y,\n\t\t\ti = 2;\n\t\tcoords[0] = x;\n\t\tcoords[1] = y;\n\t\tif (handleIn) {\n\t\t\tcoords[i++] = handleIn._x + x;\n\t\t\tcoords[i++] = handleIn._y + y;\n\t\t}\n\t\tif (handleOut) {\n\t\t\tcoords[i++] = handleOut._x + x;\n\t\t\tcoords[i++] = handleOut._y + y;\n\t\t}\n\t\tif (matrix) {\n\t\t\tmatrix._transformCoordinates(coords, coords, i / 2);\n\t\t\tx = coords[0];\n\t\t\ty = coords[1];\n\t\t\tif (change) {\n\t\t\t\tpoint._x = x;\n\t\t\t\tpoint._y = y;\n\t\t\t\ti = 2;\n\t\t\t\tif (handleIn) {\n\t\t\t\t\thandleIn._x = coords[i++] - x;\n\t\t\t\t\thandleIn._y = coords[i++] - y;\n\t\t\t\t}\n\t\t\t\tif (handleOut) {\n\t\t\t\t\thandleOut._x = coords[i++] - x;\n\t\t\t\t\thandleOut._y = coords[i++] - y;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!handleIn) {\n\t\t\t\t\tcoords[i++] = x;\n\t\t\t\t\tcoords[i++] = y;\n\t\t\t\t}\n\t\t\t\tif (!handleOut) {\n\t\t\t\t\tcoords[i++] = x;\n\t\t\t\t\tcoords[i++] = y;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn coords;\n\t}\n});\n\nvar SegmentPoint = Point.extend({\n\tinitialize: function SegmentPoint(point, owner, key) {\n\t\tvar x, y,\n\t\t\tselected;\n\t\tif (!point) {\n\t\t\tx = y = 0;\n\t\t} else if ((x = point[0]) !== undefined) {\n\t\t\ty = point[1];\n\t\t} else {\n\t\t\tvar pt = point;\n\t\t\tif ((x = pt.x) === undefined) {\n\t\t\t\tpt = Point.read(arguments);\n\t\t\t\tx = pt.x;\n\t\t\t}\n\t\t\ty = pt.y;\n\t\t\tselected = pt.selected;\n\t\t}\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._owner = owner;\n\t\towner[key] = this;\n\t\tif (selected)\n\t\t\tthis.setSelected(true);\n\t},\n\n\t_set: function(x, y) {\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._owner._changed(this);\n\t\treturn this;\n\t},\n\n\tgetX: function() {\n\t\treturn this._x;\n\t},\n\n\tsetX: function(x) {\n\t\tthis._x = x;\n\t\tthis._owner._changed(this);\n\t},\n\n\tgetY: function() {\n\t\treturn this._y;\n\t},\n\n\tsetY: function(y) {\n\t\tthis._y = y;\n\t\tthis._owner._changed(this);\n\t},\n\n\tisZero: function() {\n\t\tvar isZero = Numerical.isZero;\n\t\treturn isZero(this._x) && isZero(this._y);\n\t},\n\n\tisSelected: function() {\n\t\treturn !!(this._owner._selection & this._getSelection());\n\t},\n\n\tsetSelected: function(selected) {\n\t\tthis._owner._changeSelection(this._getSelection(), selected);\n\t},\n\n\t_getSelection: function() {\n\t\tvar owner = this._owner;\n\t\treturn this === owner._point ? 1\n\t\t\t: this === owner._handleIn ? 2\n\t\t\t: this === owner._handleOut ? 4\n\t\t\t: 0;\n\t}\n});\n\nvar Curve = Base.extend({\n\t_class: 'Curve',\n\tbeans: true,\n\n\tinitialize: function Curve(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n\t\tvar count = arguments.length,\n\t\t\tseg1, seg2,\n\t\t\tpoint1, point2,\n\t\t\thandle1, handle2;\n\t\tif (count === 3) {\n\t\t\tthis._path = arg0;\n\t\t\tseg1 = arg1;\n\t\t\tseg2 = arg2;\n\t\t} else if (!count) {\n\t\t\tseg1 = new Segment();\n\t\t\tseg2 = new Segment();\n\t\t} else if (count === 1) {\n\t\t\tif ('segment1' in arg0) {\n\t\t\t\tseg1 = new Segment(arg0.segment1);\n\t\t\t\tseg2 = new Segment(arg0.segment2);\n\t\t\t} else if ('point1' in arg0) {\n\t\t\t\tpoint1 = arg0.point1;\n\t\t\t\thandle1 = arg0.handle1;\n\t\t\t\thandle2 = arg0.handle2;\n\t\t\t\tpoint2 = arg0.point2;\n\t\t\t} else if (Array.isArray(arg0)) {\n\t\t\t\tpoint1 = [arg0[0], arg0[1]];\n\t\t\t\tpoint2 = [arg0[6], arg0[7]];\n\t\t\t\thandle1 = [arg0[2] - arg0[0], arg0[3] - arg0[1]];\n\t\t\t\thandle2 = [arg0[4] - arg0[6], arg0[5] - arg0[7]];\n\t\t\t}\n\t\t} else if (count === 2) {\n\t\t\tseg1 = new Segment(arg0);\n\t\t\tseg2 = new Segment(arg1);\n\t\t} else if (count === 4) {\n\t\t\tpoint1 = arg0;\n\t\t\thandle1 = arg1;\n\t\t\thandle2 = arg2;\n\t\t\tpoint2 = arg3;\n\t\t} else if (count === 8) {\n\t\t\tpoint1 = [arg0, arg1];\n\t\t\tpoint2 = [arg6, arg7];\n\t\t\thandle1 = [arg2 - arg0, arg3 - arg1];\n\t\t\thandle2 = [arg4 - arg6, arg5 - arg7];\n\t\t}\n\t\tthis._segment1 = seg1 || new Segment(point1, null, handle1);\n\t\tthis._segment2 = seg2 || new Segment(point2, handle2, null);\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\treturn Base.serialize(this.hasHandles()\n\t\t\t\t? [this.getPoint1(), this.getHandle1(), this.getHandle2(),\n\t\t\t\t\tthis.getPoint2()]\n\t\t\t\t: [this.getPoint1(), this.getPoint2()],\n\t\t\t\toptions, true, dictionary);\n\t},\n\n\t_changed: function() {\n\t\tthis._length = this._bounds = undefined;\n\t},\n\n\tclone: function() {\n\t\treturn new Curve(this._segment1, this._segment2);\n\t},\n\n\ttoString: function() {\n\t\tvar parts = [ 'point1: ' + this._segment1._point ];\n\t\tif (!this._segment1._handleOut.isZero())\n\t\t\tparts.push('handle1: ' + this._segment1._handleOut);\n\t\tif (!this._segment2._handleIn.isZero())\n\t\t\tparts.push('handle2: ' + this._segment2._handleIn);\n\t\tparts.push('point2: ' + this._segment2._point);\n\t\treturn '{ ' + parts.join(', ') + ' }';\n\t},\n\n\tclassify: function() {\n\t\treturn Curve.classify(this.getValues());\n\t},\n\n\tremove: function() {\n\t\tvar removed = false;\n\t\tif (this._path) {\n\t\t\tvar segment2 = this._segment2,\n\t\t\t\thandleOut = segment2._handleOut;\n\t\t\tremoved = segment2.remove();\n\t\t\tif (removed)\n\t\t\t\tthis._segment1._handleOut.set(handleOut);\n\t\t}\n\t\treturn removed;\n\t},\n\n\tgetPoint1: function() {\n\t\treturn this._segment1._point;\n\t},\n\n\tsetPoint1: function() {\n\t\tthis._segment1._point.set(Point.read(arguments));\n\t},\n\n\tgetPoint2: function() {\n\t\treturn this._segment2._point;\n\t},\n\n\tsetPoint2: function() {\n\t\tthis._segment2._point.set(Point.read(arguments));\n\t},\n\n\tgetHandle1: function() {\n\t\treturn this._segment1._handleOut;\n\t},\n\n\tsetHandle1: function() {\n\t\tthis._segment1._handleOut.set(Point.read(arguments));\n\t},\n\n\tgetHandle2: function() {\n\t\treturn this._segment2._handleIn;\n\t},\n\n\tsetHandle2: function() {\n\t\tthis._segment2._handleIn.set(Point.read(arguments));\n\t},\n\n\tgetSegment1: function() {\n\t\treturn this._segment1;\n\t},\n\n\tgetSegment2: function() {\n\t\treturn this._segment2;\n\t},\n\n\tgetPath: function() {\n\t\treturn this._path;\n\t},\n\n\tgetIndex: function() {\n\t\treturn this._segment1._index;\n\t},\n\n\tgetNext: function() {\n\t\tvar curves = this._path && this._path._curves;\n\t\treturn curves && (curves[this._segment1._index + 1]\n\t\t\t\t|| this._path._closed && curves[0]) || null;\n\t},\n\n\tgetPrevious: function() {\n\t\tvar curves = this._path && this._path._curves;\n\t\treturn curves && (curves[this._segment1._index - 1]\n\t\t\t\t|| this._path._closed && curves[curves.length - 1]) || null;\n\t},\n\n\tisFirst: function() {\n\t\treturn !this._segment1._index;\n\t},\n\n\tisLast: function() {\n\t\tvar path = this._path;\n\t\treturn path && this._segment1._index === path._curves.length - 1\n\t\t\t\t|| false;\n\t},\n\n\tisSelected: function() {\n\t\treturn this.getPoint1().isSelected()\n\t\t\t\t&& this.getHandle1().isSelected()\n\t\t\t\t&& this.getHandle2().isSelected()\n\t\t\t\t&& this.getPoint2().isSelected();\n\t},\n\n\tsetSelected: function(selected) {\n\t\tthis.getPoint1().setSelected(selected);\n\t\tthis.getHandle1().setSelected(selected);\n\t\tthis.getHandle2().setSelected(selected);\n\t\tthis.getPoint2().setSelected(selected);\n\t},\n\n\tgetValues: function(matrix) {\n\t\treturn Curve.getValues(this._segment1, this._segment2, matrix);\n\t},\n\n\tgetPoints: function() {\n\t\tvar coords = this.getValues(),\n\t\t\tpoints = [];\n\t\tfor (var i = 0; i < 8; i += 2)\n\t\t\tpoints.push(new Point(coords[i], coords[i + 1]));\n\t\treturn points;\n\t}\n}, {\n\tgetLength: function() {\n\t\tif (this._length == null)\n\t\t\tthis._length = Curve.getLength(this.getValues(), 0, 1);\n\t\treturn this._length;\n\t},\n\n\tgetArea: function() {\n\t\treturn Curve.getArea(this.getValues());\n\t},\n\n\tgetLine: function() {\n\t\treturn new Line(this._segment1._point, this._segment2._point);\n\t},\n\n\tgetPart: function(from, to) {\n\t\treturn new Curve(Curve.getPart(this.getValues(), from, to));\n\t},\n\n\tgetPartLength: function(from, to) {\n\t\treturn Curve.getLength(this.getValues(), from, to);\n\t},\n\n\tdivideAt: function(location) {\n\t\treturn this.divideAtTime(location && location.curve === this\n\t\t\t\t? location.time : this.getTimeAt(location));\n\t},\n\n\tdivideAtTime: function(time, _setHandles) {\n\t\tvar tMin = 1e-8,\n\t\t\ttMax = 1 - tMin,\n\t\t\tres = null;\n\t\tif (time >= tMin && time <= tMax) {\n\t\t\tvar parts = Curve.subdivide(this.getValues(), time),\n\t\t\t\tleft = parts[0],\n\t\t\t\tright = parts[1],\n\t\t\t\tsetHandles = _setHandles || this.hasHandles(),\n\t\t\t\tseg1 = this._segment1,\n\t\t\t\tseg2 = this._segment2,\n\t\t\t\tpath = this._path;\n\t\t\tif (setHandles) {\n\t\t\t\tseg1._handleOut._set(left[2] - left[0], left[3] - left[1]);\n\t\t\t\tseg2._handleIn._set(right[4] - right[6],right[5] - right[7]);\n\t\t\t}\n\t\t\tvar x = left[6], y = left[7],\n\t\t\t\tsegment = new Segment(new Point(x, y),\n\t\t\t\t\t\tsetHandles && new Point(left[4] - x, left[5] - y),\n\t\t\t\t\t\tsetHandles && new Point(right[2] - x, right[3] - y));\n\t\t\tif (path) {\n\t\t\t\tpath.insert(seg1._index + 1, segment);\n\t\t\t\tres = this.getNext();\n\t\t\t} else {\n\t\t\t\tthis._segment2 = segment;\n\t\t\t\tthis._changed();\n\t\t\t\tres = new Curve(segment, seg2);\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t},\n\n\tsplitAt: function(location) {\n\t\tvar path = this._path;\n\t\treturn path ? path.splitAt(location) : null;\n\t},\n\n\tsplitAtTime: function(time) {\n\t\treturn this.splitAt(this.getLocationAtTime(time));\n\t},\n\n\tdivide: function(offset, isTime) {\n\t\treturn this.divideAtTime(offset === undefined ? 0.5 : isTime ? offset\n\t\t\t\t: this.getTimeAt(offset));\n\t},\n\n\tsplit: function(offset, isTime) {\n\t\treturn this.splitAtTime(offset === undefined ? 0.5 : isTime ? offset\n\t\t\t\t: this.getTimeAt(offset));\n\t},\n\n\treversed: function() {\n\t\treturn new Curve(this._segment2.reversed(), this._segment1.reversed());\n\t},\n\n\tclearHandles: function() {\n\t\tthis._segment1._handleOut._set(0, 0);\n\t\tthis._segment2._handleIn._set(0, 0);\n\t},\n\nstatics: {\n\tgetValues: function(segment1, segment2, matrix, straight) {\n\t\tvar p1 = segment1._point,\n\t\t\th1 = segment1._handleOut,\n\t\t\th2 = segment2._handleIn,\n\t\t\tp2 = segment2._point,\n\t\t\tx1 = p1.x, y1 = p1.y,\n\t\t\tx2 = p2.x, y2 = p2.y,\n\t\t\tvalues = straight\n\t\t\t\t? [ x1, y1, x1, y1, x2, y2, x2, y2 ]\n\t\t\t\t: [\n\t\t\t\t\tx1, y1,\n\t\t\t\t\tx1 + h1._x, y1 + h1._y,\n\t\t\t\t\tx2 + h2._x, y2 + h2._y,\n\t\t\t\t\tx2, y2\n\t\t\t\t];\n\t\tif (matrix)\n\t\t\tmatrix._transformCoordinates(values, values, 4);\n\t\treturn values;\n\t},\n\n\tsubdivide: function(v, t) {\n\t\tvar x0 = v[0], y0 = v[1],\n\t\t\tx1 = v[2], y1 = v[3],\n\t\t\tx2 = v[4], y2 = v[5],\n\t\t\tx3 = v[6], y3 = v[7];\n\t\tif (t === undefined)\n\t\t\tt = 0.5;\n\t\tvar u = 1 - t,\n\t\t\tx4 = u * x0 + t * x1, y4 = u * y0 + t * y1,\n\t\t\tx5 = u * x1 + t * x2, y5 = u * y1 + t * y2,\n\t\t\tx6 = u * x2 + t * x3, y6 = u * y2 + t * y3,\n\t\t\tx7 = u * x4 + t * x5, y7 = u * y4 + t * y5,\n\t\t\tx8 = u * x5 + t * x6, y8 = u * y5 + t * y6,\n\t\t\tx9 = u * x7 + t * x8, y9 = u * y7 + t * y8;\n\t\treturn [\n\t\t\t[x0, y0, x4, y4, x7, y7, x9, y9],\n\t\t\t[x9, y9, x8, y8, x6, y6, x3, y3]\n\t\t];\n\t},\n\n\tgetMonoCurves: function(v, dir) {\n\t\tvar curves = [],\n\t\t\tio = dir ? 0 : 1,\n\t\t\to0 = v[io + 0],\n\t\t\to1 = v[io + 2],\n\t\t\to2 = v[io + 4],\n\t\t\to3 = v[io + 6];\n\t\tif ((o0 >= o1) === (o1 >= o2) && (o1 >= o2) === (o2 >= o3)\n\t\t\t\t|| Curve.isStraight(v)) {\n\t\t\tcurves.push(v);\n\t\t} else {\n\t\t\tvar a = 3 * (o1 - o2) - o0 + o3,\n\t\t\t\tb = 2 * (o0 + o2) - 4 * o1,\n\t\t\t\tc = o1 - o0,\n\t\t\t\ttMin = 1e-8,\n\t\t\t\ttMax = 1 - tMin,\n\t\t\t\troots = [],\n\t\t\t\tn = Numerical.solveQuadratic(a, b, c, roots, tMin, tMax);\n\t\t\tif (!n) {\n\t\t\t\tcurves.push(v);\n\t\t\t} else {\n\t\t\t\troots.sort();\n\t\t\t\tvar t = roots[0],\n\t\t\t\t\tparts = Curve.subdivide(v, t);\n\t\t\t\tcurves.push(parts[0]);\n\t\t\t\tif (n > 1) {\n\t\t\t\t\tt = (roots[1] - t) / (1 - t);\n\t\t\t\t\tparts = Curve.subdivide(parts[1], t);\n\t\t\t\t\tcurves.push(parts[0]);\n\t\t\t\t}\n\t\t\t\tcurves.push(parts[1]);\n\t\t\t}\n\t\t}\n\t\treturn curves;\n\t},\n\n\tsolveCubic: function (v, coord, val, roots, min, max) {\n\t\tvar v0 = v[coord],\n\t\t\tv1 = v[coord + 2],\n\t\t\tv2 = v[coord + 4],\n\t\t\tv3 = v[coord + 6],\n\t\t\tres = 0;\n\t\tif (  !(v0 < val && v3 < val && v1 < val && v2 < val ||\n\t\t\t\tv0 > val && v3 > val && v1 > val && v2 > val)) {\n\t\t\tvar c = 3 * (v1 - v0),\n\t\t\t\tb = 3 * (v2 - v1) - c,\n\t\t\t\ta = v3 - v0 - c - b;\n\t\t\tres = Numerical.solveCubic(a, b, c, v0 - val, roots, min, max);\n\t\t}\n\t\treturn res;\n\t},\n\n\tgetTimeOf: function(v, point) {\n\t\tvar p0 = new Point(v[0], v[1]),\n\t\t\tp3 = new Point(v[6], v[7]),\n\t\t\tepsilon = 1e-12,\n\t\t\tgeomEpsilon = 1e-7,\n\t\t\tt = point.isClose(p0, epsilon) ? 0\n\t\t\t  : point.isClose(p3, epsilon) ? 1\n\t\t\t  : null;\n\t\tif (t === null) {\n\t\t\tvar coords = [point.x, point.y],\n\t\t\t\troots = [];\n\t\t\tfor (var c = 0; c < 2; c++) {\n\t\t\t\tvar count = Curve.solveCubic(v, c, coords[c], roots, 0, 1);\n\t\t\t\tfor (var i = 0; i < count; i++) {\n\t\t\t\t\tvar u = roots[i];\n\t\t\t\t\tif (point.isClose(Curve.getPoint(v, u), geomEpsilon))\n\t\t\t\t\t\treturn u;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn point.isClose(p0, geomEpsilon) ? 0\n\t\t\t : point.isClose(p3, geomEpsilon) ? 1\n\t\t\t : null;\n\t},\n\n\tgetNearestTime: function(v, point) {\n\t\tif (Curve.isStraight(v)) {\n\t\t\tvar x0 = v[0], y0 = v[1],\n\t\t\t\tx3 = v[6], y3 = v[7],\n\t\t\t\tvx = x3 - x0, vy = y3 - y0,\n\t\t\t\tdet = vx * vx + vy * vy;\n\t\t\tif (det === 0)\n\t\t\t\treturn 0;\n\t\t\tvar u = ((point.x - x0) * vx + (point.y - y0) * vy) / det;\n\t\t\treturn u < 1e-12 ? 0\n\t\t\t\t : u > 0.999999999999 ? 1\n\t\t\t\t : Curve.getTimeOf(v,\n\t\t\t\t\tnew Point(x0 + u * vx, y0 + u * vy));\n\t\t}\n\n\t\tvar count = 100,\n\t\t\tminDist = Infinity,\n\t\t\tminT = 0;\n\n\t\tfunction refine(t) {\n\t\t\tif (t >= 0 && t <= 1) {\n\t\t\t\tvar dist = point.getDistance(Curve.getPoint(v, t), true);\n\t\t\t\tif (dist < minDist) {\n\t\t\t\t\tminDist = dist;\n\t\t\t\t\tminT = t;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i <= count; i++)\n\t\t\trefine(i / count);\n\n\t\tvar step = 1 / (count * 2);\n\t\twhile (step > 1e-8) {\n\t\t\tif (!refine(minT - step) && !refine(minT + step))\n\t\t\t\tstep /= 2;\n\t\t}\n\t\treturn minT;\n\t},\n\n\tgetPart: function(v, from, to) {\n\t\tvar flip = from > to;\n\t\tif (flip) {\n\t\t\tvar tmp = from;\n\t\t\tfrom = to;\n\t\t\tto = tmp;\n\t\t}\n\t\tif (from > 0)\n\t\t\tv = Curve.subdivide(v, from)[1];\n\t\tif (to < 1)\n\t\t\tv = Curve.subdivide(v, (to - from) / (1 - from))[0];\n\t\treturn flip\n\t\t\t\t? [v[6], v[7], v[4], v[5], v[2], v[3], v[0], v[1]]\n\t\t\t\t: v;\n\t},\n\n\tisFlatEnough: function(v, flatness) {\n\t\tvar x0 = v[0], y0 = v[1],\n\t\t\tx1 = v[2], y1 = v[3],\n\t\t\tx2 = v[4], y2 = v[5],\n\t\t\tx3 = v[6], y3 = v[7],\n\t\t\tux = 3 * x1 - 2 * x0 - x3,\n\t\t\tuy = 3 * y1 - 2 * y0 - y3,\n\t\t\tvx = 3 * x2 - 2 * x3 - x0,\n\t\t\tvy = 3 * y2 - 2 * y3 - y0;\n\t\treturn Math.max(ux * ux, vx * vx) + Math.max(uy * uy, vy * vy)\n\t\t\t\t<= 16 * flatness * flatness;\n\t},\n\n\tgetArea: function(v) {\n\t\tvar x0 = v[0], y0 = v[1],\n\t\t\tx1 = v[2], y1 = v[3],\n\t\t\tx2 = v[4], y2 = v[5],\n\t\t\tx3 = v[6], y3 = v[7];\n\t\treturn 3 * ((y3 - y0) * (x1 + x2) - (x3 - x0) * (y1 + y2)\n\t\t\t\t+ y1 * (x0 - x2) - x1 * (y0 - y2)\n\t\t\t\t+ y3 * (x2 + x0 / 3) - x3 * (y2 + y0 / 3)) / 20;\n\t},\n\n\tgetBounds: function(v) {\n\t\tvar min = v.slice(0, 2),\n\t\t\tmax = min.slice(),\n\t\t\troots = [0, 0];\n\t\tfor (var i = 0; i < 2; i++)\n\t\t\tCurve._addBounds(v[i], v[i + 2], v[i + 4], v[i + 6],\n\t\t\t\t\ti, 0, min, max, roots);\n\t\treturn new Rectangle(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n\t},\n\n\t_addBounds: function(v0, v1, v2, v3, coord, padding, min, max, roots) {\n\t\tfunction add(value, padding) {\n\t\t\tvar left = value - padding,\n\t\t\t\tright = value + padding;\n\t\t\tif (left < min[coord])\n\t\t\t\tmin[coord] = left;\n\t\t\tif (right > max[coord])\n\t\t\t\tmax[coord] = right;\n\t\t}\n\n\t\tpadding /= 2;\n\t\tvar minPad = min[coord] - padding,\n\t\t\tmaxPad = max[coord] + padding;\n\t\tif (    v0 < minPad || v1 < minPad || v2 < minPad || v3 < minPad ||\n\t\t\t\tv0 > maxPad || v1 > maxPad || v2 > maxPad || v3 > maxPad) {\n\t\t\tif (v1 < v0 != v1 < v3 && v2 < v0 != v2 < v3) {\n\t\t\t\tadd(v0, padding);\n\t\t\t\tadd(v3, padding);\n\t\t\t} else {\n\t\t\t\tvar a = 3 * (v1 - v2) - v0 + v3,\n\t\t\t\t\tb = 2 * (v0 + v2) - 4 * v1,\n\t\t\t\t\tc = v1 - v0,\n\t\t\t\t\tcount = Numerical.solveQuadratic(a, b, c, roots),\n\t\t\t\t\ttMin = 1e-8,\n\t\t\t\t\ttMax = 1 - tMin;\n\t\t\t\tadd(v3, 0);\n\t\t\t\tfor (var i = 0; i < count; i++) {\n\t\t\t\t\tvar t = roots[i],\n\t\t\t\t\t\tu = 1 - t;\n\t\t\t\t\tif (tMin <= t && t <= tMax)\n\t\t\t\t\t\tadd(u * u * u * v0\n\t\t\t\t\t\t\t+ 3 * u * u * t * v1\n\t\t\t\t\t\t\t+ 3 * u * t * t * v2\n\t\t\t\t\t\t\t+ t * t * t * v3,\n\t\t\t\t\t\t\tpadding);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}}, Base.each(\n\t['getBounds', 'getStrokeBounds', 'getHandleBounds'],\n\tfunction(name) {\n\t\tthis[name] = function() {\n\t\t\tif (!this._bounds)\n\t\t\t\tthis._bounds = {};\n\t\t\tvar bounds = this._bounds[name];\n\t\t\tif (!bounds) {\n\t\t\t\tbounds = this._bounds[name] = Path[name](\n\t\t\t\t\t\t[this._segment1, this._segment2], false, this._path);\n\t\t\t}\n\t\t\treturn bounds.clone();\n\t\t};\n\t},\n{\n\n}), Base.each({\n\tisStraight: function(p1, h1, h2, p2) {\n\t\tif (h1.isZero() && h2.isZero()) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\tvar v = p2.subtract(p1);\n\t\t\tif (v.isZero()) {\n\t\t\t\treturn false;\n\t\t\t} else if (v.isCollinear(h1) && v.isCollinear(h2)) {\n\t\t\t\tvar l = new Line(p1, p2),\n\t\t\t\t\tepsilon = 1e-7;\n\t\t\t\tif (l.getDistance(p1.add(h1)) < epsilon &&\n\t\t\t\t\tl.getDistance(p2.add(h2)) < epsilon) {\n\t\t\t\t\tvar div = v.dot(v),\n\t\t\t\t\t\ts1 = v.dot(h1) / div,\n\t\t\t\t\t\ts2 = v.dot(h2) / div;\n\t\t\t\t\treturn s1 >= 0 && s1 <= 1 && s2 <= 0 && s2 >= -1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\tisLinear: function(p1, h1, h2, p2) {\n\t\tvar third = p2.subtract(p1).divide(3);\n\t\treturn h1.equals(third) && h2.negate().equals(third);\n\t}\n}, function(test, name) {\n\tthis[name] = function(epsilon) {\n\t\tvar seg1 = this._segment1,\n\t\t\tseg2 = this._segment2;\n\t\treturn test(seg1._point, seg1._handleOut, seg2._handleIn, seg2._point,\n\t\t\t\tepsilon);\n\t};\n\n\tthis.statics[name] = function(v, epsilon) {\n\t\tvar x0 = v[0], y0 = v[1],\n\t\t\tx3 = v[6], y3 = v[7];\n\t\treturn test(\n\t\t\t\tnew Point(x0, y0),\n\t\t\t\tnew Point(v[2] - x0, v[3] - y0),\n\t\t\t\tnew Point(v[4] - x3, v[5] - y3),\n\t\t\t\tnew Point(x3, y3), epsilon);\n\t};\n}, {\n\tstatics: {},\n\n\thasHandles: function() {\n\t\treturn !this._segment1._handleOut.isZero()\n\t\t\t\t|| !this._segment2._handleIn.isZero();\n\t},\n\n\thasLength: function(epsilon) {\n\t\treturn (!this.getPoint1().equals(this.getPoint2()) || this.hasHandles())\n\t\t\t\t&& this.getLength() > (epsilon || 0);\n\t},\n\n\tisCollinear: function(curve) {\n\t\treturn curve && this.isStraight() && curve.isStraight()\n\t\t\t\t&& this.getLine().isCollinear(curve.getLine());\n\t},\n\n\tisHorizontal: function() {\n\t\treturn this.isStraight() && Math.abs(this.getTangentAtTime(0.5).y)\n\t\t\t\t< 1e-8;\n\t},\n\n\tisVertical: function() {\n\t\treturn this.isStraight() && Math.abs(this.getTangentAtTime(0.5).x)\n\t\t\t\t< 1e-8;\n\t}\n}), {\n\tbeans: false,\n\n\tgetLocationAt: function(offset, _isTime) {\n\t\treturn this.getLocationAtTime(\n\t\t\t\t_isTime ? offset : this.getTimeAt(offset));\n\t},\n\n\tgetLocationAtTime: function(t) {\n\t\treturn t != null && t >= 0 && t <= 1\n\t\t\t\t? new CurveLocation(this, t)\n\t\t\t\t: null;\n\t},\n\n\tgetTimeAt: function(offset, start) {\n\t\treturn Curve.getTimeAt(this.getValues(), offset, start);\n\t},\n\n\tgetParameterAt: '#getTimeAt',\n\n\tgetTimesWithTangent: function () {\n\t\tvar tangent = Point.read(arguments);\n\t\treturn tangent.isZero()\n\t\t\t\t? []\n\t\t\t\t: Curve.getTimesWithTangent(this.getValues(), tangent);\n\t},\n\n\tgetOffsetAtTime: function(t) {\n\t\treturn this.getPartLength(0, t);\n\t},\n\n\tgetLocationOf: function() {\n\t\treturn this.getLocationAtTime(this.getTimeOf(Point.read(arguments)));\n\t},\n\n\tgetOffsetOf: function() {\n\t\tvar loc = this.getLocationOf.apply(this, arguments);\n\t\treturn loc ? loc.getOffset() : null;\n\t},\n\n\tgetTimeOf: function() {\n\t\treturn Curve.getTimeOf(this.getValues(), Point.read(arguments));\n\t},\n\n\tgetParameterOf: '#getTimeOf',\n\n\tgetNearestLocation: function() {\n\t\tvar point = Point.read(arguments),\n\t\t\tvalues = this.getValues(),\n\t\t\tt = Curve.getNearestTime(values, point),\n\t\t\tpt = Curve.getPoint(values, t);\n\t\treturn new CurveLocation(this, t, pt, null, point.getDistance(pt));\n\t},\n\n\tgetNearestPoint: function() {\n\t\tvar loc = this.getNearestLocation.apply(this, arguments);\n\t\treturn loc ? loc.getPoint() : loc;\n\t}\n\n},\nnew function() {\n\tvar methods = ['getPoint', 'getTangent', 'getNormal', 'getWeightedTangent',\n\t\t'getWeightedNormal', 'getCurvature'];\n\treturn Base.each(methods,\n\t\tfunction(name) {\n\t\t\tthis[name + 'At'] = function(location, _isTime) {\n\t\t\t\tvar values = this.getValues();\n\t\t\t\treturn Curve[name](values, _isTime ? location\n\t\t\t\t\t\t: Curve.getTimeAt(values, location));\n\t\t\t};\n\n\t\t\tthis[name + 'AtTime'] = function(time) {\n\t\t\t\treturn Curve[name](this.getValues(), time);\n\t\t\t};\n\t\t}, {\n\t\t\tstatics: {\n\t\t\t\t_evaluateMethods: methods\n\t\t\t}\n\t\t}\n\t);\n},\nnew function() {\n\n\tfunction getLengthIntegrand(v) {\n\t\tvar x0 = v[0], y0 = v[1],\n\t\t\tx1 = v[2], y1 = v[3],\n\t\t\tx2 = v[4], y2 = v[5],\n\t\t\tx3 = v[6], y3 = v[7],\n\n\t\t\tax = 9 * (x1 - x2) + 3 * (x3 - x0),\n\t\t\tbx = 6 * (x0 + x2) - 12 * x1,\n\t\t\tcx = 3 * (x1 - x0),\n\n\t\t\tay = 9 * (y1 - y2) + 3 * (y3 - y0),\n\t\t\tby = 6 * (y0 + y2) - 12 * y1,\n\t\t\tcy = 3 * (y1 - y0);\n\n\t\treturn function(t) {\n\t\t\tvar dx = (ax * t + bx) * t + cx,\n\t\t\t\tdy = (ay * t + by) * t + cy;\n\t\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t\t};\n\t}\n\n\tfunction getIterations(a, b) {\n\t\treturn Math.max(2, Math.min(16, Math.ceil(Math.abs(b - a) * 32)));\n\t}\n\n\tfunction evaluate(v, t, type, normalized) {\n\t\tif (t == null || t < 0 || t > 1)\n\t\t\treturn null;\n\t\tvar x0 = v[0], y0 = v[1],\n\t\t\tx1 = v[2], y1 = v[3],\n\t\t\tx2 = v[4], y2 = v[5],\n\t\t\tx3 = v[6], y3 = v[7],\n\t\t\tisZero = Numerical.isZero;\n\t\tif (isZero(x1 - x0) && isZero(y1 - y0)) {\n\t\t\tx1 = x0;\n\t\t\ty1 = y0;\n\t\t}\n\t\tif (isZero(x2 - x3) && isZero(y2 - y3)) {\n\t\t\tx2 = x3;\n\t\t\ty2 = y3;\n\t\t}\n\t\tvar cx = 3 * (x1 - x0),\n\t\t\tbx = 3 * (x2 - x1) - cx,\n\t\t\tax = x3 - x0 - cx - bx,\n\t\t\tcy = 3 * (y1 - y0),\n\t\t\tby = 3 * (y2 - y1) - cy,\n\t\t\tay = y3 - y0 - cy - by,\n\t\t\tx, y;\n\t\tif (type === 0) {\n\t\t\tx = t === 0 ? x0 : t === 1 ? x3\n\t\t\t\t\t: ((ax * t + bx) * t + cx) * t + x0;\n\t\t\ty = t === 0 ? y0 : t === 1 ? y3\n\t\t\t\t\t: ((ay * t + by) * t + cy) * t + y0;\n\t\t} else {\n\t\t\tvar tMin = 1e-8,\n\t\t\t\ttMax = 1 - tMin;\n\t\t\tif (t < tMin) {\n\t\t\t\tx = cx;\n\t\t\t\ty = cy;\n\t\t\t} else if (t > tMax) {\n\t\t\t\tx = 3 * (x3 - x2);\n\t\t\t\ty = 3 * (y3 - y2);\n\t\t\t} else {\n\t\t\t\tx = (3 * ax * t + 2 * bx) * t + cx;\n\t\t\t\ty = (3 * ay * t + 2 * by) * t + cy;\n\t\t\t}\n\t\t\tif (normalized) {\n\t\t\t\tif (x === 0 && y === 0 && (t < tMin || t > tMax)) {\n\t\t\t\t\tx = x2 - x1;\n\t\t\t\t\ty = y2 - y1;\n\t\t\t\t}\n\t\t\t\tvar len = Math.sqrt(x * x + y * y);\n\t\t\t\tif (len) {\n\t\t\t\t\tx /= len;\n\t\t\t\t\ty /= len;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (type === 3) {\n\t\t\t\tvar x2 = 6 * ax * t + 2 * bx,\n\t\t\t\t\ty2 = 6 * ay * t + 2 * by,\n\t\t\t\t\td = Math.pow(x * x + y * y, 3 / 2);\n\t\t\t\tx = d !== 0 ? (x * y2 - y * x2) / d : 0;\n\t\t\t\ty = 0;\n\t\t\t}\n\t\t}\n\t\treturn type === 2 ? new Point(y, -x) : new Point(x, y);\n\t}\n\n\treturn { statics: {\n\n\t\tclassify: function(v) {\n\n\t\t\tvar x0 = v[0], y0 = v[1],\n\t\t\t\tx1 = v[2], y1 = v[3],\n\t\t\t\tx2 = v[4], y2 = v[5],\n\t\t\t\tx3 = v[6], y3 = v[7],\n\t\t\t\ta1 = x0 * (y3 - y2) + y0 * (x2 - x3) + x3 * y2 - y3 * x2,\n\t\t\t\ta2 = x1 * (y0 - y3) + y1 * (x3 - x0) + x0 * y3 - y0 * x3,\n\t\t\t\ta3 = x2 * (y1 - y0) + y2 * (x0 - x1) + x1 * y0 - y1 * x0,\n\t\t\t\td3 = 3 * a3,\n\t\t\t\td2 = d3 - a2,\n\t\t\t\td1 = d2 - a2 + a1,\n\t\t\t\tl = Math.sqrt(d1 * d1 + d2 * d2 + d3 * d3),\n\t\t\t\ts = l !== 0 ? 1 / l : 0,\n\t\t\t\tisZero = Numerical.isZero,\n\t\t\t\tserpentine = 'serpentine';\n\t\t\td1 *= s;\n\t\t\td2 *= s;\n\t\t\td3 *= s;\n\n\t\t\tfunction type(type, t1, t2) {\n\t\t\t\tvar hasRoots = t1 !== undefined,\n\t\t\t\t\tt1Ok = hasRoots && t1 > 0 && t1 < 1,\n\t\t\t\t\tt2Ok = hasRoots && t2 > 0 && t2 < 1;\n\t\t\t\tif (hasRoots && (!(t1Ok || t2Ok)\n\t\t\t\t\t\t|| type === 'loop' && !(t1Ok && t2Ok))) {\n\t\t\t\t\ttype = 'arch';\n\t\t\t\t\tt1Ok = t2Ok = false;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: type,\n\t\t\t\t\troots: t1Ok || t2Ok\n\t\t\t\t\t\t\t? t1Ok && t2Ok\n\t\t\t\t\t\t\t\t? t1 < t2 ? [t1, t2] : [t2, t1]\n\t\t\t\t\t\t\t\t: [t1Ok ? t1 : t2]\n\t\t\t\t\t\t\t: null\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (isZero(d1)) {\n\t\t\t\treturn isZero(d2)\n\t\t\t\t\t\t? type(isZero(d3) ? 'line' : 'quadratic')\n\t\t\t\t\t\t: type(serpentine, d3 / (3 * d2));\n\t\t\t}\n\t\t\tvar d = 3 * d2 * d2 - 4 * d1 * d3;\n\t\t\tif (isZero(d)) {\n\t\t\t\treturn type('cusp', d2 / (2 * d1));\n\t\t\t}\n\t\t\tvar f1 = d > 0 ? Math.sqrt(d / 3) : Math.sqrt(-d),\n\t\t\t\tf2 = 2 * d1;\n\t\t\treturn type(d > 0 ? serpentine : 'loop',\n\t\t\t\t\t(d2 + f1) / f2,\n\t\t\t\t\t(d2 - f1) / f2);\n\t\t},\n\n\t\tgetLength: function(v, a, b, ds) {\n\t\t\tif (a === undefined)\n\t\t\t\ta = 0;\n\t\t\tif (b === undefined)\n\t\t\t\tb = 1;\n\t\t\tif (Curve.isStraight(v)) {\n\t\t\t\tvar c = v;\n\t\t\t\tif (b < 1) {\n\t\t\t\t\tc = Curve.subdivide(c, b)[0];\n\t\t\t\t\ta /= b;\n\t\t\t\t}\n\t\t\t\tif (a > 0) {\n\t\t\t\t\tc = Curve.subdivide(c, a)[1];\n\t\t\t\t}\n\t\t\t\tvar dx = c[6] - c[0],\n\t\t\t\t\tdy = c[7] - c[1];\n\t\t\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t\t\t}\n\t\t\treturn Numerical.integrate(ds || getLengthIntegrand(v), a, b,\n\t\t\t\t\tgetIterations(a, b));\n\t\t},\n\n\t\tgetTimeAt: function(v, offset, start) {\n\t\t\tif (start === undefined)\n\t\t\t\tstart = offset < 0 ? 1 : 0;\n\t\t\tif (offset === 0)\n\t\t\t\treturn start;\n\t\t\tvar abs = Math.abs,\n\t\t\t\tepsilon = 1e-12,\n\t\t\t\tforward = offset > 0,\n\t\t\t\ta = forward ? start : 0,\n\t\t\t\tb = forward ? 1 : start,\n\t\t\t\tds = getLengthIntegrand(v),\n\t\t\t\trangeLength = Curve.getLength(v, a, b, ds),\n\t\t\t\tdiff = abs(offset) - rangeLength;\n\t\t\tif (abs(diff) < epsilon) {\n\t\t\t\treturn forward ? b : a;\n\t\t\t} else if (diff > epsilon) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tvar guess = offset / rangeLength,\n\t\t\t\tlength = 0;\n\t\t\tfunction f(t) {\n\t\t\t\tlength += Numerical.integrate(ds, start, t,\n\t\t\t\t\t\tgetIterations(start, t));\n\t\t\t\tstart = t;\n\t\t\t\treturn length - offset;\n\t\t\t}\n\t\t\treturn Numerical.findRoot(f, ds, start + guess, a, b, 32,\n\t\t\t\t\t1e-12);\n\t\t},\n\n\t\tgetPoint: function(v, t) {\n\t\t\treturn evaluate(v, t, 0, false);\n\t\t},\n\n\t\tgetTangent: function(v, t) {\n\t\t\treturn evaluate(v, t, 1, true);\n\t\t},\n\n\t\tgetWeightedTangent: function(v, t) {\n\t\t\treturn evaluate(v, t, 1, false);\n\t\t},\n\n\t\tgetNormal: function(v, t) {\n\t\t\treturn evaluate(v, t, 2, true);\n\t\t},\n\n\t\tgetWeightedNormal: function(v, t) {\n\t\t\treturn evaluate(v, t, 2, false);\n\t\t},\n\n\t\tgetCurvature: function(v, t) {\n\t\t\treturn evaluate(v, t, 3, false).x;\n\t\t},\n\n\t\tgetPeaks: function(v) {\n\t\t\tvar x0 = v[0], y0 = v[1],\n\t\t\t\tx1 = v[2], y1 = v[3],\n\t\t\t\tx2 = v[4], y2 = v[5],\n\t\t\t\tx3 = v[6], y3 = v[7],\n\t\t\t\tax =     -x0 + 3 * x1 - 3 * x2 + x3,\n\t\t\t\tbx =  3 * x0 - 6 * x1 + 3 * x2,\n\t\t\t\tcx = -3 * x0 + 3 * x1,\n\t\t\t\tay =     -y0 + 3 * y1 - 3 * y2 + y3,\n\t\t\t\tby =  3 * y0 - 6 * y1 + 3 * y2,\n\t\t\t\tcy = -3 * y0 + 3 * y1,\n\t\t\t\ttMin = 1e-8,\n\t\t\t\ttMax = 1 - tMin,\n\t\t\t\troots = [];\n\t\t\tNumerical.solveCubic(\n\t\t\t\t\t9 * (ax * ax + ay * ay),\n\t\t\t\t\t9 * (ax * bx + by * ay),\n\t\t\t\t\t2 * (bx * bx + by * by) + 3 * (cx * ax + cy * ay),\n\t\t\t\t\t(cx * bx + by * cy),\n\t\t\t\t\troots, tMin, tMax);\n\t\t\treturn roots.sort();\n\t\t}\n\t}};\n},\nnew function() {\n\n\tfunction addLocation(locations, include, c1, t1, c2, t2, overlap) {\n\t\tvar excludeStart = !overlap && c1.getPrevious() === c2,\n\t\t\texcludeEnd = !overlap && c1 !== c2 && c1.getNext() === c2,\n\t\t\ttMin = 1e-8,\n\t\t\ttMax = 1 - tMin;\n\t\tif (t1 !== null && t1 >= (excludeStart ? tMin : 0) &&\n\t\t\tt1 <= (excludeEnd ? tMax : 1)) {\n\t\t\tif (t2 !== null && t2 >= (excludeEnd ? tMin : 0) &&\n\t\t\t\tt2 <= (excludeStart ? tMax : 1)) {\n\t\t\t\tvar loc1 = new CurveLocation(c1, t1, null, overlap),\n\t\t\t\t\tloc2 = new CurveLocation(c2, t2, null, overlap);\n\t\t\t\tloc1._intersection = loc2;\n\t\t\t\tloc2._intersection = loc1;\n\t\t\t\tif (!include || include(loc1)) {\n\t\t\t\t\tCurveLocation.insert(locations, loc1, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction addCurveIntersections(v1, v2, c1, c2, locations, include, flip,\n\t\t\trecursion, calls, tMin, tMax, uMin, uMax) {\n\t\tif (++calls >= 4096 || ++recursion >= 40)\n\t\t\treturn calls;\n\t\tvar fatLineEpsilon = 1e-9,\n\t\t\tq0x = v2[0], q0y = v2[1], q3x = v2[6], q3y = v2[7],\n\t\t\tgetSignedDistance = Line.getSignedDistance,\n\t\t\td1 = getSignedDistance(q0x, q0y, q3x, q3y, v2[2], v2[3]),\n\t\t\td2 = getSignedDistance(q0x, q0y, q3x, q3y, v2[4], v2[5]),\n\t\t\tfactor = d1 * d2 > 0 ? 3 / 4 : 4 / 9,\n\t\t\tdMin = factor * Math.min(0, d1, d2),\n\t\t\tdMax = factor * Math.max(0, d1, d2),\n\t\t\tdp0 = getSignedDistance(q0x, q0y, q3x, q3y, v1[0], v1[1]),\n\t\t\tdp1 = getSignedDistance(q0x, q0y, q3x, q3y, v1[2], v1[3]),\n\t\t\tdp2 = getSignedDistance(q0x, q0y, q3x, q3y, v1[4], v1[5]),\n\t\t\tdp3 = getSignedDistance(q0x, q0y, q3x, q3y, v1[6], v1[7]),\n\t\t\thull = getConvexHull(dp0, dp1, dp2, dp3),\n\t\t\ttop = hull[0],\n\t\t\tbottom = hull[1],\n\t\t\ttMinClip,\n\t\t\ttMaxClip;\n\t\tif (d1 === 0 && d2 === 0\n\t\t\t\t&& dp0 === 0 && dp1 === 0 && dp2 === 0 && dp3 === 0\n\t\t\t|| (tMinClip = clipConvexHull(top, bottom, dMin, dMax)) == null\n\t\t\t|| (tMaxClip = clipConvexHull(top.reverse(), bottom.reverse(),\n\t\t\t\tdMin, dMax)) == null)\n\t\t\treturn calls;\n\t\tvar tMinNew = tMin + (tMax - tMin) * tMinClip,\n\t\t\ttMaxNew = tMin + (tMax - tMin) * tMaxClip;\n\t\tif (Math.max(uMax - uMin, tMaxNew - tMinNew) < fatLineEpsilon) {\n\t\t\tvar t = (tMinNew + tMaxNew) / 2,\n\t\t\t\tu = (uMin + uMax) / 2;\n\t\t\taddLocation(locations, include,\n\t\t\t\t\tflip ? c2 : c1, flip ? u : t,\n\t\t\t\t\tflip ? c1 : c2, flip ? t : u);\n\t\t} else {\n\t\t\tv1 = Curve.getPart(v1, tMinClip, tMaxClip);\n\t\t\tvar uDiff = uMax - uMin;\n\t\t\tif (tMaxClip - tMinClip > 0.8) {\n\t\t\t\tif (tMaxNew - tMinNew > uDiff) {\n\t\t\t\t\tvar parts = Curve.subdivide(v1, 0.5),\n\t\t\t\t\t\tt = (tMinNew + tMaxNew) / 2;\n\t\t\t\t\tcalls = addCurveIntersections(\n\t\t\t\t\t\t\tv2, parts[0], c2, c1, locations, include, !flip,\n\t\t\t\t\t\t\trecursion, calls, uMin, uMax, tMinNew, t);\n\t\t\t\t\tcalls = addCurveIntersections(\n\t\t\t\t\t\t\tv2, parts[1], c2, c1, locations, include, !flip,\n\t\t\t\t\t\t\trecursion, calls, uMin, uMax, t, tMaxNew);\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = Curve.subdivide(v2, 0.5),\n\t\t\t\t\t\tu = (uMin + uMax) / 2;\n\t\t\t\t\tcalls = addCurveIntersections(\n\t\t\t\t\t\t\tparts[0], v1, c2, c1, locations, include, !flip,\n\t\t\t\t\t\t\trecursion, calls, uMin, u, tMinNew, tMaxNew);\n\t\t\t\t\tcalls = addCurveIntersections(\n\t\t\t\t\t\t\tparts[1], v1, c2, c1, locations, include, !flip,\n\t\t\t\t\t\t\trecursion, calls, u, uMax, tMinNew, tMaxNew);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (uDiff === 0 || uDiff >= fatLineEpsilon) {\n\t\t\t\t\tcalls = addCurveIntersections(\n\t\t\t\t\t\t\tv2, v1, c2, c1, locations, include, !flip,\n\t\t\t\t\t\t\trecursion, calls, uMin, uMax, tMinNew, tMaxNew);\n\t\t\t\t} else {\n\t\t\t\t\tcalls = addCurveIntersections(\n\t\t\t\t\t\t\tv1, v2, c1, c2, locations, include, flip,\n\t\t\t\t\t\t\trecursion, calls, tMinNew, tMaxNew, uMin, uMax);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn calls;\n\t}\n\n\tfunction getConvexHull(dq0, dq1, dq2, dq3) {\n\t\tvar p0 = [ 0, dq0 ],\n\t\t\tp1 = [ 1 / 3, dq1 ],\n\t\t\tp2 = [ 2 / 3, dq2 ],\n\t\t\tp3 = [ 1, dq3 ],\n\t\t\tdist1 = dq1 - (2 * dq0 + dq3) / 3,\n\t\t\tdist2 = dq2 - (dq0 + 2 * dq3) / 3,\n\t\t\thull;\n\t\tif (dist1 * dist2 < 0) {\n\t\t\thull = [[p0, p1, p3], [p0, p2, p3]];\n\t\t} else {\n\t\t\tvar distRatio = dist1 / dist2;\n\t\t\thull = [\n\t\t\t\tdistRatio >= 2 ? [p0, p1, p3]\n\t\t\t\t: distRatio <= 0.5 ? [p0, p2, p3]\n\t\t\t\t: [p0, p1, p2, p3],\n\t\t\t\t[p0, p3]\n\t\t\t];\n\t\t}\n\t\treturn (dist1 || dist2) < 0 ? hull.reverse() : hull;\n\t}\n\n\tfunction clipConvexHull(hullTop, hullBottom, dMin, dMax) {\n\t\tif (hullTop[0][1] < dMin) {\n\t\t\treturn clipConvexHullPart(hullTop, true, dMin);\n\t\t} else if (hullBottom[0][1] > dMax) {\n\t\t\treturn clipConvexHullPart(hullBottom, false, dMax);\n\t\t} else {\n\t\t\treturn hullTop[0][0];\n\t\t}\n\t}\n\n\tfunction clipConvexHullPart(part, top, threshold) {\n\t\tvar px = part[0][0],\n\t\t\tpy = part[0][1];\n\t\tfor (var i = 1, l = part.length; i < l; i++) {\n\t\t\tvar qx = part[i][0],\n\t\t\t\tqy = part[i][1];\n\t\t\tif (top ? qy >= threshold : qy <= threshold) {\n\t\t\t\treturn qy === threshold ? qx\n\t\t\t\t\t\t: px + (threshold - py) * (qx - px) / (qy - py);\n\t\t\t}\n\t\t\tpx = qx;\n\t\t\tpy = qy;\n\t\t}\n\t\treturn null;\n\t}\n\n\tfunction getCurveLineIntersections(v, px, py, vx, vy) {\n\t\tvar isZero = Numerical.isZero;\n\t\tif (isZero(vx) && isZero(vy)) {\n\t\t\tvar t = Curve.getTimeOf(v, new Point(px, py));\n\t\t\treturn t === null ? [] : [t];\n\t\t}\n\t\tvar angle = Math.atan2(-vy, vx),\n\t\t\tsin = Math.sin(angle),\n\t\t\tcos = Math.cos(angle),\n\t\t\trv = [],\n\t\t\troots = [];\n\t\tfor (var i = 0; i < 8; i += 2) {\n\t\t\tvar x = v[i] - px,\n\t\t\t\ty = v[i + 1] - py;\n\t\t\trv.push(\n\t\t\t\tx * cos - y * sin,\n\t\t\t\tx * sin + y * cos);\n\t\t}\n\t\tCurve.solveCubic(rv, 1, 0, roots, 0, 1);\n\t\treturn roots;\n\t}\n\n\tfunction addCurveLineIntersections(v1, v2, c1, c2, locations, include,\n\t\t\tflip) {\n\t\tvar x1 = v2[0], y1 = v2[1],\n\t\t\tx2 = v2[6], y2 = v2[7],\n\t\t\troots = getCurveLineIntersections(v1, x1, y1, x2 - x1, y2 - y1);\n\t\tfor (var i = 0, l = roots.length; i < l; i++) {\n\t\t\tvar t1 = roots[i],\n\t\t\t\tp1 = Curve.getPoint(v1, t1),\n\t\t\t\tt2 = Curve.getTimeOf(v2, p1);\n\t\t\tif (t2 !== null) {\n\t\t\t\taddLocation(locations, include,\n\t\t\t\t\t\tflip ? c2 : c1, flip ? t2 : t1,\n\t\t\t\t\t\tflip ? c1 : c2, flip ? t1 : t2);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction addLineIntersection(v1, v2, c1, c2, locations, include) {\n\t\tvar pt = Line.intersect(\n\t\t\t\tv1[0], v1[1], v1[6], v1[7],\n\t\t\t\tv2[0], v2[1], v2[6], v2[7]);\n\t\tif (pt) {\n\t\t\taddLocation(locations, include,\n\t\t\t\t\tc1, Curve.getTimeOf(v1, pt),\n\t\t\t\t\tc2, Curve.getTimeOf(v2, pt));\n\t\t}\n\t}\n\n\tfunction getCurveIntersections(v1, v2, c1, c2, locations, include) {\n\t\tvar epsilon = 1e-12,\n\t\t\tmin = Math.min,\n\t\t\tmax = Math.max;\n\n\t\tif (max(v1[0], v1[2], v1[4], v1[6]) + epsilon >\n\t\t\tmin(v2[0], v2[2], v2[4], v2[6]) &&\n\t\t\tmin(v1[0], v1[2], v1[4], v1[6]) - epsilon <\n\t\t\tmax(v2[0], v2[2], v2[4], v2[6]) &&\n\t\t\tmax(v1[1], v1[3], v1[5], v1[7]) + epsilon >\n\t\t\tmin(v2[1], v2[3], v2[5], v2[7]) &&\n\t\t\tmin(v1[1], v1[3], v1[5], v1[7]) - epsilon <\n\t\t\tmax(v2[1], v2[3], v2[5], v2[7])) {\n\t\t\tvar overlaps = getOverlaps(v1, v2);\n\t\t\tif (overlaps) {\n\t\t\t\tfor (var i = 0; i < 2; i++) {\n\t\t\t\t\tvar overlap = overlaps[i];\n\t\t\t\t\taddLocation(locations, include,\n\t\t\t\t\t\t\tc1, overlap[0],\n\t\t\t\t\t\t\tc2, overlap[1], true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar straight1 = Curve.isStraight(v1),\n\t\t\t\t\tstraight2 = Curve.isStraight(v2),\n\t\t\t\t\tstraight = straight1 && straight2,\n\t\t\t\t\tflip = straight1 && !straight2,\n\t\t\t\t\tbefore = locations.length;\n\t\t\t\t(straight\n\t\t\t\t\t? addLineIntersection\n\t\t\t\t\t: straight1 || straight2\n\t\t\t\t\t\t? addCurveLineIntersections\n\t\t\t\t\t\t: addCurveIntersections)(\n\t\t\t\t\t\t\tflip ? v2 : v1, flip ? v1 : v2,\n\t\t\t\t\t\t\tflip ? c2 : c1, flip ? c1 : c2,\n\t\t\t\t\t\t\tlocations, include, flip,\n\t\t\t\t\t\t\t0, 0, 0, 1, 0, 1);\n\t\t\t\tif (!straight || locations.length === before) {\n\t\t\t\t\tfor (var i = 0; i < 4; i++) {\n\t\t\t\t\t\tvar t1 = i >> 1,\n\t\t\t\t\t\t\tt2 = i & 1,\n\t\t\t\t\t\t\ti1 = t1 * 6,\n\t\t\t\t\t\t\ti2 = t2 * 6,\n\t\t\t\t\t\t\tp1 = new Point(v1[i1], v1[i1 + 1]),\n\t\t\t\t\t\t\tp2 = new Point(v2[i2], v2[i2 + 1]);\n\t\t\t\t\t\tif (p1.isClose(p2, epsilon)) {\n\t\t\t\t\t\t\taddLocation(locations, include,\n\t\t\t\t\t\t\t\t\tc1, t1,\n\t\t\t\t\t\t\t\t\tc2, t2);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn locations;\n\t}\n\n\tfunction getSelfIntersection(v1, c1, locations, include) {\n\t\tvar info = Curve.classify(v1);\n\t\tif (info.type === 'loop') {\n\t\t\tvar roots = info.roots;\n\t\t\taddLocation(locations, include,\n\t\t\t\t\tc1, roots[0],\n\t\t\t\t\tc1, roots[1]);\n\t\t}\n\t  return locations;\n\t}\n\n\tfunction getIntersections(curves1, curves2, include, matrix1, matrix2,\n\t\t\t_returnFirst) {\n\t\tvar epsilon = 1e-7,\n\t\t\tself = !curves2;\n\t\tif (self)\n\t\t\tcurves2 = curves1;\n\t\tvar length1 = curves1.length,\n\t\t\tlength2 = curves2.length,\n\t\t\tvalues1 = new Array(length1),\n\t\t\tvalues2 = self ? values1 : new Array(length2),\n\t\t\tlocations = [];\n\n\t\tfor (var i = 0; i < length1; i++) {\n\t\t\tvalues1[i] = curves1[i].getValues(matrix1);\n\t\t}\n\t\tif (!self) {\n\t\t\tfor (var i = 0; i < length2; i++) {\n\t\t\t\tvalues2[i] = curves2[i].getValues(matrix2);\n\t\t\t}\n\t\t}\n\t\tvar boundsCollisions = CollisionDetection.findCurveBoundsCollisions(\n\t\t\t\tvalues1, values2, epsilon);\n\t\tfor (var index1 = 0; index1 < length1; index1++) {\n\t\t\tvar curve1 = curves1[index1],\n\t\t\t\tv1 = values1[index1];\n\t\t\tif (self) {\n\t\t\t\tgetSelfIntersection(v1, curve1, locations, include);\n\t\t\t}\n\t\t\tvar collisions1 = boundsCollisions[index1];\n\t\t\tif (collisions1) {\n\t\t\t\tfor (var j = 0; j < collisions1.length; j++) {\n\t\t\t\t\tif (_returnFirst && locations.length)\n\t\t\t\t\t\treturn locations;\n\t\t\t\t\tvar index2 = collisions1[j];\n\t\t\t\t\tif (!self || index2 > index1) {\n\t\t\t\t\t\tvar curve2 = curves2[index2],\n\t\t\t\t\t\t\tv2 = values2[index2];\n\t\t\t\t\t\tgetCurveIntersections(\n\t\t\t\t\t\t\t\tv1, v2, curve1, curve2, locations, include);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn locations;\n\t}\n\n\tfunction getOverlaps(v1, v2) {\n\n\t\tfunction getSquaredLineLength(v) {\n\t\t\tvar x = v[6] - v[0],\n\t\t\t\ty = v[7] - v[1];\n\t\t\treturn x * x + y * y;\n\t\t}\n\n\t\tvar abs = Math.abs,\n\t\t\tgetDistance = Line.getDistance,\n\t\t\ttimeEpsilon = 1e-8,\n\t\t\tgeomEpsilon = 1e-7,\n\t\t\tstraight1 = Curve.isStraight(v1),\n\t\t\tstraight2 = Curve.isStraight(v2),\n\t\t\tstraightBoth = straight1 && straight2,\n\t\t\tflip = getSquaredLineLength(v1) < getSquaredLineLength(v2),\n\t\t\tl1 = flip ? v2 : v1,\n\t\t\tl2 = flip ? v1 : v2,\n\t\t\tpx = l1[0], py = l1[1],\n\t\t\tvx = l1[6] - px, vy = l1[7] - py;\n\t\tif (getDistance(px, py, vx, vy, l2[0], l2[1], true) < geomEpsilon &&\n\t\t\tgetDistance(px, py, vx, vy, l2[6], l2[7], true) < geomEpsilon) {\n\t\t\tif (!straightBoth &&\n\t\t\t\tgetDistance(px, py, vx, vy, l1[2], l1[3], true) < geomEpsilon &&\n\t\t\t\tgetDistance(px, py, vx, vy, l1[4], l1[5], true) < geomEpsilon &&\n\t\t\t\tgetDistance(px, py, vx, vy, l2[2], l2[3], true) < geomEpsilon &&\n\t\t\t\tgetDistance(px, py, vx, vy, l2[4], l2[5], true) < geomEpsilon) {\n\t\t\t\tstraight1 = straight2 = straightBoth = true;\n\t\t\t}\n\t\t} else if (straightBoth) {\n\t\t\treturn null;\n\t\t}\n\t\tif (straight1 ^ straight2) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar v = [v1, v2],\n\t\t\tpairs = [];\n\t\tfor (var i = 0; i < 4 && pairs.length < 2; i++) {\n\t\t\tvar i1 = i & 1,\n\t\t\t\ti2 = i1 ^ 1,\n\t\t\t\tt1 = i >> 1,\n\t\t\t\tt2 = Curve.getTimeOf(v[i1], new Point(\n\t\t\t\t\tv[i2][t1 ? 6 : 0],\n\t\t\t\t\tv[i2][t1 ? 7 : 1]));\n\t\t\tif (t2 != null) {\n\t\t\t\tvar pair = i1 ? [t1, t2] : [t2, t1];\n\t\t\t\tif (!pairs.length ||\n\t\t\t\t\tabs(pair[0] - pairs[0][0]) > timeEpsilon &&\n\t\t\t\t\tabs(pair[1] - pairs[0][1]) > timeEpsilon) {\n\t\t\t\t\tpairs.push(pair);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (i > 2 && !pairs.length)\n\t\t\t\tbreak;\n\t\t}\n\t\tif (pairs.length !== 2) {\n\t\t\tpairs = null;\n\t\t} else if (!straightBoth) {\n\t\t\tvar o1 = Curve.getPart(v1, pairs[0][0], pairs[1][0]),\n\t\t\t\to2 = Curve.getPart(v2, pairs[0][1], pairs[1][1]);\n\t\t\tif (abs(o2[2] - o1[2]) > geomEpsilon ||\n\t\t\t\tabs(o2[3] - o1[3]) > geomEpsilon ||\n\t\t\t\tabs(o2[4] - o1[4]) > geomEpsilon ||\n\t\t\t\tabs(o2[5] - o1[5]) > geomEpsilon)\n\t\t\t\tpairs = null;\n\t\t}\n\t\treturn pairs;\n\t}\n\n\tfunction getTimesWithTangent(v, tangent) {\n\t\tvar x0 = v[0], y0 = v[1],\n\t\t\tx1 = v[2], y1 = v[3],\n\t\t\tx2 = v[4], y2 = v[5],\n\t\t\tx3 = v[6], y3 = v[7],\n\t\t\tnormalized = tangent.normalize(),\n\t\t\ttx = normalized.x,\n\t\t\tty = normalized.y,\n\t\t\tax = 3 * x3 - 9 * x2 + 9 * x1 - 3 * x0,\n\t\t\tay = 3 * y3 - 9 * y2 + 9 * y1 - 3 * y0,\n\t\t\tbx = 6 * x2 - 12 * x1 + 6 * x0,\n\t\t\tby = 6 * y2 - 12 * y1 + 6 * y0,\n\t\t\tcx = 3 * x1 - 3 * x0,\n\t\t\tcy = 3 * y1 - 3 * y0,\n\t\t\tden = 2 * ax * ty - 2 * ay * tx,\n\t\t\ttimes = [];\n\t\tif (Math.abs(den) < Numerical.CURVETIME_EPSILON) {\n\t\t\tvar num = ax * cy - ay * cx,\n\t\t\t\tden = ax * by - ay * bx;\n\t\t\tif (den != 0) {\n\t\t\t\tvar t = -num / den;\n\t\t\t\tif (t >= 0 && t <= 1) times.push(t);\n\t\t\t}\n\t\t} else {\n\t\t\tvar delta = (bx * bx - 4 * ax * cx) * ty * ty +\n\t\t\t\t(-2 * bx * by + 4 * ay * cx + 4 * ax * cy) * tx * ty +\n\t\t\t\t(by * by - 4 * ay * cy) * tx * tx,\n\t\t\t\tk = bx * ty - by * tx;\n\t\t\tif (delta >= 0 && den != 0) {\n\t\t\t\tvar d = Math.sqrt(delta),\n\t\t\t\t\tt0 = -(k + d) / den,\n\t\t\t\t\tt1 = (-k + d) / den;\n\t\t\t\tif (t0 >= 0 && t0 <= 1) times.push(t0);\n\t\t\t\tif (t1 >= 0 && t1 <= 1) times.push(t1);\n\t\t\t}\n\t\t}\n\t\treturn times;\n\t}\n\n\treturn {\n\t\tgetIntersections: function(curve) {\n\t\t\tvar v1 = this.getValues(),\n\t\t\t\tv2 = curve && curve !== this && curve.getValues();\n\t\t\treturn v2 ? getCurveIntersections(v1, v2, this, curve, [])\n\t\t\t\t\t  : getSelfIntersection(v1, this, []);\n\t\t},\n\n\t\tstatics: {\n\t\t\tgetOverlaps: getOverlaps,\n\t\t\tgetIntersections: getIntersections,\n\t\t\tgetCurveLineIntersections: getCurveLineIntersections,\n\t\t\tgetTimesWithTangent: getTimesWithTangent\n\t\t}\n\t};\n});\n\nvar CurveLocation = Base.extend({\n\t_class: 'CurveLocation',\n\n\tinitialize: function CurveLocation(curve, time, point, _overlap, _distance) {\n\t\tif (time >= 0.99999999) {\n\t\t\tvar next = curve.getNext();\n\t\t\tif (next) {\n\t\t\t\ttime = 0;\n\t\t\t\tcurve = next;\n\t\t\t}\n\t\t}\n\t\tthis._setCurve(curve);\n\t\tthis._time = time;\n\t\tthis._point = point || curve.getPointAtTime(time);\n\t\tthis._overlap = _overlap;\n\t\tthis._distance = _distance;\n\t\tthis._intersection = this._next = this._previous = null;\n\t},\n\n\t_setPath: function(path) {\n\t\tthis._path = path;\n\t\tthis._version = path ? path._version : 0;\n\t},\n\n\t_setCurve: function(curve) {\n\t\tthis._setPath(curve._path);\n\t\tthis._curve = curve;\n\t\tthis._segment = null;\n\t\tthis._segment1 = curve._segment1;\n\t\tthis._segment2 = curve._segment2;\n\t},\n\n\t_setSegment: function(segment) {\n\t\tvar curve = segment.getCurve();\n\t\tif (curve) {\n\t\t\tthis._setCurve(curve);\n\t\t} else {\n\t\t\tthis._setPath(segment._path);\n\t\t\tthis._segment1 = segment;\n\t\t\tthis._segment2 = null;\n\t\t}\n\t\tthis._segment = segment;\n\t\tthis._time = segment === this._segment1 ? 0 : 1;\n\t\tthis._point = segment._point.clone();\n\t},\n\n\tgetSegment: function() {\n\t\tvar segment = this._segment;\n\t\tif (!segment) {\n\t\t\tvar curve = this.getCurve(),\n\t\t\t\ttime = this.getTime();\n\t\t\tif (time === 0) {\n\t\t\t\tsegment = curve._segment1;\n\t\t\t} else if (time === 1) {\n\t\t\t\tsegment = curve._segment2;\n\t\t\t} else if (time != null) {\n\t\t\t\tsegment = curve.getPartLength(0, time)\n\t\t\t\t\t< curve.getPartLength(time, 1)\n\t\t\t\t\t\t? curve._segment1\n\t\t\t\t\t\t: curve._segment2;\n\t\t\t}\n\t\t\tthis._segment = segment;\n\t\t}\n\t\treturn segment;\n\t},\n\n\tgetCurve: function() {\n\t\tvar path = this._path,\n\t\t\tthat = this;\n\t\tif (path && path._version !== this._version) {\n\t\t\tthis._time = this._offset = this._curveOffset = this._curve = null;\n\t\t}\n\n\t\tfunction trySegment(segment) {\n\t\t\tvar curve = segment && segment.getCurve();\n\t\t\tif (curve && (that._time = curve.getTimeOf(that._point)) != null) {\n\t\t\t\tthat._setCurve(curve);\n\t\t\t\treturn curve;\n\t\t\t}\n\t\t}\n\n\t\treturn this._curve\n\t\t\t|| trySegment(this._segment)\n\t\t\t|| trySegment(this._segment1)\n\t\t\t|| trySegment(this._segment2.getPrevious());\n\t},\n\n\tgetPath: function() {\n\t\tvar curve = this.getCurve();\n\t\treturn curve && curve._path;\n\t},\n\n\tgetIndex: function() {\n\t\tvar curve = this.getCurve();\n\t\treturn curve && curve.getIndex();\n\t},\n\n\tgetTime: function() {\n\t\tvar curve = this.getCurve(),\n\t\t\ttime = this._time;\n\t\treturn curve && time == null\n\t\t\t? this._time = curve.getTimeOf(this._point)\n\t\t\t: time;\n\t},\n\n\tgetParameter: '#getTime',\n\n\tgetPoint: function() {\n\t\treturn this._point;\n\t},\n\n\tgetOffset: function() {\n\t\tvar offset = this._offset;\n\t\tif (offset == null) {\n\t\t\toffset = 0;\n\t\t\tvar path = this.getPath(),\n\t\t\t\tindex = this.getIndex();\n\t\t\tif (path && index != null) {\n\t\t\t\tvar curves = path.getCurves();\n\t\t\t\tfor (var i = 0; i < index; i++)\n\t\t\t\t\toffset += curves[i].getLength();\n\t\t\t}\n\t\t\tthis._offset = offset += this.getCurveOffset();\n\t\t}\n\t\treturn offset;\n\t},\n\n\tgetCurveOffset: function() {\n\t\tvar offset = this._curveOffset;\n\t\tif (offset == null) {\n\t\t\tvar curve = this.getCurve(),\n\t\t\t\ttime = this.getTime();\n\t\t\tthis._curveOffset = offset = time != null && curve\n\t\t\t\t\t&& curve.getPartLength(0, time);\n\t\t}\n\t\treturn offset;\n\t},\n\n\tgetIntersection: function() {\n\t\treturn this._intersection;\n\t},\n\n\tgetDistance: function() {\n\t\treturn this._distance;\n\t},\n\n\tdivide: function() {\n\t\tvar curve = this.getCurve(),\n\t\t\tres = curve && curve.divideAtTime(this.getTime());\n\t\tif (res) {\n\t\t\tthis._setSegment(res._segment1);\n\t\t}\n\t\treturn res;\n\t},\n\n\tsplit: function() {\n\t\tvar curve = this.getCurve(),\n\t\t\tpath = curve._path,\n\t\t\tres = curve && curve.splitAtTime(this.getTime());\n\t\tif (res) {\n\t\t\tthis._setSegment(path.getLastSegment());\n\t\t}\n\t\treturn  res;\n\t},\n\n\tequals: function(loc, _ignoreOther) {\n\t\tvar res = this === loc;\n\t\tif (!res && loc instanceof CurveLocation) {\n\t\t\tvar c1 = this.getCurve(),\n\t\t\t\tc2 = loc.getCurve(),\n\t\t\t\tp1 = c1._path,\n\t\t\t\tp2 = c2._path;\n\t\t\tif (p1 === p2) {\n\t\t\t\tvar abs = Math.abs,\n\t\t\t\t\tepsilon = 1e-7,\n\t\t\t\t\tdiff = abs(this.getOffset() - loc.getOffset()),\n\t\t\t\t\ti1 = !_ignoreOther && this._intersection,\n\t\t\t\t\ti2 = !_ignoreOther && loc._intersection;\n\t\t\t\tres = (diff < epsilon\n\t\t\t\t\t\t|| p1 && abs(p1.getLength() - diff) < epsilon)\n\t\t\t\t\t&& (!i1 && !i2 || i1 && i2 && i1.equals(i2, true));\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t},\n\n\ttoString: function() {\n\t\tvar parts = [],\n\t\t\tpoint = this.getPoint(),\n\t\t\tf = Formatter.instance;\n\t\tif (point)\n\t\t\tparts.push('point: ' + point);\n\t\tvar index = this.getIndex();\n\t\tif (index != null)\n\t\t\tparts.push('index: ' + index);\n\t\tvar time = this.getTime();\n\t\tif (time != null)\n\t\t\tparts.push('time: ' + f.number(time));\n\t\tif (this._distance != null)\n\t\t\tparts.push('distance: ' + f.number(this._distance));\n\t\treturn '{ ' + parts.join(', ') + ' }';\n\t},\n\n\tisTouching: function() {\n\t\tvar inter = this._intersection;\n\t\tif (inter && this.getTangent().isCollinear(inter.getTangent())) {\n\t\t\tvar curve1 = this.getCurve(),\n\t\t\t\tcurve2 = inter.getCurve();\n\t\t\treturn !(curve1.isStraight() && curve2.isStraight()\n\t\t\t\t\t&& curve1.getLine().intersect(curve2.getLine()));\n\t\t}\n\t\treturn false;\n\t},\n\n\tisCrossing: function() {\n\t\tvar inter = this._intersection;\n\t\tif (!inter)\n\t\t\treturn false;\n\t\tvar t1 = this.getTime(),\n\t\t\tt2 = inter.getTime(),\n\t\t\ttMin = 1e-8,\n\t\t\ttMax = 1 - tMin,\n\t\t\tt1Inside = t1 >= tMin && t1 <= tMax,\n\t\t\tt2Inside = t2 >= tMin && t2 <= tMax;\n\t\tif (t1Inside && t2Inside)\n\t\t\treturn !this.isTouching();\n\t\tvar c2 = this.getCurve(),\n\t\t\tc1 = c2 && t1 < tMin ? c2.getPrevious() : c2,\n\t\t\tc4 = inter.getCurve(),\n\t\t\tc3 = c4 && t2 < tMin ? c4.getPrevious() : c4;\n\t\tif (t1 > tMax)\n\t\t\tc2 = c2.getNext();\n\t\tif (t2 > tMax)\n\t\t\tc4 = c4.getNext();\n\t\tif (!c1 || !c2 || !c3 || !c4)\n\t\t\treturn false;\n\n\t\tvar offsets = [];\n\n\t\tfunction addOffsets(curve, end) {\n\t\t\tvar v = curve.getValues(),\n\t\t\t\troots = Curve.classify(v).roots || Curve.getPeaks(v),\n\t\t\t\tcount = roots.length,\n\t\t\t\toffset = Curve.getLength(v,\n\t\t\t\t\tend && count ? roots[count - 1] : 0,\n\t\t\t\t\t!end && count ? roots[0] : 1);\n\t\t\toffsets.push(count ? offset : offset / 32);\n\t\t}\n\n\t\tfunction isInRange(angle, min, max) {\n\t\t\treturn min < max\n\t\t\t\t\t? angle > min && angle < max\n\t\t\t\t\t: angle > min || angle < max;\n\t\t}\n\n\t\tif (!t1Inside) {\n\t\t\taddOffsets(c1, true);\n\t\t\taddOffsets(c2, false);\n\t\t}\n\t\tif (!t2Inside) {\n\t\t\taddOffsets(c3, true);\n\t\t\taddOffsets(c4, false);\n\t\t}\n\t\tvar pt = this.getPoint(),\n\t\t\toffset = Math.min.apply(Math, offsets),\n\t\t\tv2 = t1Inside ? c2.getTangentAtTime(t1)\n\t\t\t\t\t: c2.getPointAt(offset).subtract(pt),\n\t\t\tv1 = t1Inside ? v2.negate()\n\t\t\t\t\t: c1.getPointAt(-offset).subtract(pt),\n\t\t\tv4 = t2Inside ? c4.getTangentAtTime(t2)\n\t\t\t\t\t: c4.getPointAt(offset).subtract(pt),\n\t\t\tv3 = t2Inside ? v4.negate()\n\t\t\t\t\t: c3.getPointAt(-offset).subtract(pt),\n\t\t\ta1 = v1.getAngle(),\n\t\t\ta2 = v2.getAngle(),\n\t\t\ta3 = v3.getAngle(),\n\t\t\ta4 = v4.getAngle();\n\t\treturn !!(t1Inside\n\t\t\t\t? (isInRange(a1, a3, a4) ^ isInRange(a2, a3, a4)) &&\n\t\t\t\t  (isInRange(a1, a4, a3) ^ isInRange(a2, a4, a3))\n\t\t\t\t: (isInRange(a3, a1, a2) ^ isInRange(a4, a1, a2)) &&\n\t\t\t\t  (isInRange(a3, a2, a1) ^ isInRange(a4, a2, a1)));\n\t},\n\n\thasOverlap: function() {\n\t\treturn !!this._overlap;\n\t}\n}, Base.each(Curve._evaluateMethods, function(name) {\n\tvar get = name + 'At';\n\tthis[name] = function() {\n\t\tvar curve = this.getCurve(),\n\t\t\ttime = this.getTime();\n\t\treturn time != null && curve && curve[get](time, true);\n\t};\n}, {\n\tpreserve: true\n}),\nnew function() {\n\n\tfunction insert(locations, loc, merge) {\n\t\tvar length = locations.length,\n\t\t\tl = 0,\n\t\t\tr = length - 1;\n\n\t\tfunction search(index, dir) {\n\t\t\tfor (var i = index + dir; i >= -1 && i <= length; i += dir) {\n\t\t\t\tvar loc2 = locations[((i % length) + length) % length];\n\t\t\t\tif (!loc.getPoint().isClose(loc2.getPoint(),\n\t\t\t\t\t\t1e-7))\n\t\t\t\t\tbreak;\n\t\t\t\tif (loc.equals(loc2))\n\t\t\t\t\treturn loc2;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\twhile (l <= r) {\n\t\t\tvar m = (l + r) >>> 1,\n\t\t\t\tloc2 = locations[m],\n\t\t\t\tfound;\n\t\t\tif (merge && (found = loc.equals(loc2) ? loc2\n\t\t\t\t\t: (search(m, -1) || search(m, 1)))) {\n\t\t\t\tif (loc._overlap) {\n\t\t\t\t\tfound._overlap = found._intersection._overlap = true;\n\t\t\t\t}\n\t\t\t\treturn found;\n\t\t\t}\n\t\tvar path1 = loc.getPath(),\n\t\t\tpath2 = loc2.getPath(),\n\t\t\tdiff = path1 !== path2\n\t\t\t\t? path1._id - path2._id\n\t\t\t\t: (loc.getIndex() + loc.getTime())\n\t\t\t\t- (loc2.getIndex() + loc2.getTime());\n\t\t\tif (diff < 0) {\n\t\t\t\tr = m - 1;\n\t\t\t} else {\n\t\t\t\tl = m + 1;\n\t\t\t}\n\t\t}\n\t\tlocations.splice(l, 0, loc);\n\t\treturn loc;\n\t}\n\n\treturn { statics: {\n\t\tinsert: insert,\n\n\t\texpand: function(locations) {\n\t\t\tvar expanded = locations.slice();\n\t\t\tfor (var i = locations.length - 1; i >= 0; i--) {\n\t\t\t\tinsert(expanded, locations[i]._intersection, false);\n\t\t\t}\n\t\t\treturn expanded;\n\t\t}\n\t}};\n});\n\nvar PathItem = Item.extend({\n\t_class: 'PathItem',\n\t_selectBounds: false,\n\t_canScaleStroke: true,\n\tbeans: true,\n\n\tinitialize: function PathItem() {\n\t},\n\n\tstatics: {\n\t\tcreate: function(arg) {\n\t\t\tvar data,\n\t\t\t\tsegments,\n\t\t\t\tcompound;\n\t\t\tif (Base.isPlainObject(arg)) {\n\t\t\t\tsegments = arg.segments;\n\t\t\t\tdata = arg.pathData;\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tsegments = arg;\n\t\t\t} else if (typeof arg === 'string') {\n\t\t\t\tdata = arg;\n\t\t\t}\n\t\t\tif (segments) {\n\t\t\t\tvar first = segments[0];\n\t\t\t\tcompound = first && Array.isArray(first[0]);\n\t\t\t} else if (data) {\n\t\t\t\tcompound = (data.match(/m/gi) || []).length > 1\n\t\t\t\t\t\t|| /z\\s*\\S+/i.test(data);\n\t\t\t}\n\t\t\tvar ctor = compound ? CompoundPath : Path;\n\t\t\treturn new ctor(arg);\n\t\t}\n\t},\n\n\t_asPathItem: function() {\n\t\treturn this;\n\t},\n\n\tisClockwise: function() {\n\t\treturn this.getArea() >= 0;\n\t},\n\n\tsetClockwise: function(clockwise) {\n\t\tif (this.isClockwise() != (clockwise = !!clockwise))\n\t\t\tthis.reverse();\n\t},\n\n\tsetPathData: function(data) {\n\n\t\tvar parts = data && data.match(/[mlhvcsqtaz][^mlhvcsqtaz]*/ig),\n\t\t\tcoords,\n\t\t\trelative = false,\n\t\t\tprevious,\n\t\t\tcontrol,\n\t\t\tcurrent = new Point(),\n\t\t\tstart = new Point();\n\n\t\tfunction getCoord(index, coord) {\n\t\t\tvar val = +coords[index];\n\t\t\tif (relative)\n\t\t\t\tval += current[coord];\n\t\t\treturn val;\n\t\t}\n\n\t\tfunction getPoint(index) {\n\t\t\treturn new Point(\n\t\t\t\tgetCoord(index, 'x'),\n\t\t\t\tgetCoord(index + 1, 'y')\n\t\t\t);\n\t\t}\n\n\t\tthis.clear();\n\n\t\tfor (var i = 0, l = parts && parts.length; i < l; i++) {\n\t\t\tvar part = parts[i],\n\t\t\t\tcommand = part[0],\n\t\t\t\tlower = command.toLowerCase();\n\t\t\tcoords = part.match(/[+-]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?/g);\n\t\t\tvar length = coords && coords.length;\n\t\t\trelative = command === lower;\n\t\t\tif (previous === 'z' && !/[mz]/.test(lower))\n\t\t\t\tthis.moveTo(current);\n\t\t\tswitch (lower) {\n\t\t\tcase 'm':\n\t\t\tcase 'l':\n\t\t\t\tvar move = lower === 'm';\n\t\t\t\tfor (var j = 0; j < length; j += 2) {\n\t\t\t\t\tthis[move ? 'moveTo' : 'lineTo'](current = getPoint(j));\n\t\t\t\t\tif (move) {\n\t\t\t\t\t\tstart = current;\n\t\t\t\t\t\tmove = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontrol = current;\n\t\t\t\tbreak;\n\t\t\tcase 'h':\n\t\t\tcase 'v':\n\t\t\t\tvar coord = lower === 'h' ? 'x' : 'y';\n\t\t\t\tcurrent = current.clone();\n\t\t\t\tfor (var j = 0; j < length; j++) {\n\t\t\t\t\tcurrent[coord] = getCoord(j, coord);\n\t\t\t\t\tthis.lineTo(current);\n\t\t\t\t}\n\t\t\t\tcontrol = current;\n\t\t\t\tbreak;\n\t\t\tcase 'c':\n\t\t\t\tfor (var j = 0; j < length; j += 6) {\n\t\t\t\t\tthis.cubicCurveTo(\n\t\t\t\t\t\t\tgetPoint(j),\n\t\t\t\t\t\t\tcontrol = getPoint(j + 2),\n\t\t\t\t\t\t\tcurrent = getPoint(j + 4));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 's':\n\t\t\t\tfor (var j = 0; j < length; j += 4) {\n\t\t\t\t\tthis.cubicCurveTo(\n\t\t\t\t\t\t\t/[cs]/.test(previous)\n\t\t\t\t\t\t\t\t\t? current.multiply(2).subtract(control)\n\t\t\t\t\t\t\t\t\t: current,\n\t\t\t\t\t\t\tcontrol = getPoint(j),\n\t\t\t\t\t\t\tcurrent = getPoint(j + 2));\n\t\t\t\t\tprevious = lower;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'q':\n\t\t\t\tfor (var j = 0; j < length; j += 4) {\n\t\t\t\t\tthis.quadraticCurveTo(\n\t\t\t\t\t\t\tcontrol = getPoint(j),\n\t\t\t\t\t\t\tcurrent = getPoint(j + 2));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 't':\n\t\t\t\tfor (var j = 0; j < length; j += 2) {\n\t\t\t\t\tthis.quadraticCurveTo(\n\t\t\t\t\t\t\tcontrol = (/[qt]/.test(previous)\n\t\t\t\t\t\t\t\t\t? current.multiply(2).subtract(control)\n\t\t\t\t\t\t\t\t\t: current),\n\t\t\t\t\t\t\tcurrent = getPoint(j));\n\t\t\t\t\tprevious = lower;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'a':\n\t\t\t\tfor (var j = 0; j < length; j += 7) {\n\t\t\t\t\tthis.arcTo(current = getPoint(j + 5),\n\t\t\t\t\t\t\tnew Size(+coords[j], +coords[j + 1]),\n\t\t\t\t\t\t\t+coords[j + 2], +coords[j + 4], +coords[j + 3]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'z':\n\t\t\t\tthis.closePath(1e-12);\n\t\t\t\tcurrent = start;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tprevious = lower;\n\t\t}\n\t},\n\n\t_canComposite: function() {\n\t\treturn !(this.hasFill() && this.hasStroke());\n\t},\n\n\t_contains: function(point) {\n\t\tvar winding = point.isInside(\n\t\t\t\tthis.getBounds({ internal: true, handle: true }))\n\t\t\t\t\t? this._getWinding(point)\n\t\t\t\t\t: {};\n\t\treturn winding.onPath || !!(this.getFillRule() === 'evenodd'\n\t\t\t\t? winding.windingL & 1 || winding.windingR & 1\n\t\t\t\t: winding.winding);\n\t},\n\n\tgetIntersections: function(path, include, _matrix, _returnFirst) {\n\t\tvar self = this === path || !path,\n\t\t\tmatrix1 = this._matrix._orNullIfIdentity(),\n\t\t\tmatrix2 = self ? matrix1\n\t\t\t\t: (_matrix || path._matrix)._orNullIfIdentity();\n\t\treturn self || this.getBounds(matrix1).intersects(\n\t\t\t\tpath.getBounds(matrix2), 1e-12)\n\t\t\t\t? Curve.getIntersections(\n\t\t\t\t\t\tthis.getCurves(), !self && path.getCurves(), include,\n\t\t\t\t\t\tmatrix1, matrix2, _returnFirst)\n\t\t\t\t: [];\n\t},\n\n\tgetCrossings: function(path) {\n\t\treturn this.getIntersections(path, function(inter) {\n\t\t\treturn inter.isCrossing();\n\t\t});\n\t},\n\n\tgetNearestLocation: function() {\n\t\tvar point = Point.read(arguments),\n\t\t\tcurves = this.getCurves(),\n\t\t\tminDist = Infinity,\n\t\t\tminLoc = null;\n\t\tfor (var i = 0, l = curves.length; i < l; i++) {\n\t\t\tvar loc = curves[i].getNearestLocation(point);\n\t\t\tif (loc._distance < minDist) {\n\t\t\t\tminDist = loc._distance;\n\t\t\t\tminLoc = loc;\n\t\t\t}\n\t\t}\n\t\treturn minLoc;\n\t},\n\n\tgetNearestPoint: function() {\n\t\tvar loc = this.getNearestLocation.apply(this, arguments);\n\t\treturn loc ? loc.getPoint() : loc;\n\t},\n\n\tinterpolate: function(from, to, factor) {\n\t\tvar isPath = !this._children,\n\t\t\tname = isPath ? '_segments' : '_children',\n\t\t\titemsFrom = from[name],\n\t\t\titemsTo = to[name],\n\t\t\titems = this[name];\n\t\tif (!itemsFrom || !itemsTo || itemsFrom.length !== itemsTo.length) {\n\t\t\tthrow new Error('Invalid operands in interpolate() call: ' +\n\t\t\t\t\tfrom + ', ' + to);\n\t\t}\n\t\tvar current = items.length,\n\t\t\tlength = itemsTo.length;\n\t\tif (current < length) {\n\t\t\tvar ctor = isPath ? Segment : Path;\n\t\t\tfor (var i = current; i < length; i++) {\n\t\t\t\tthis.add(new ctor());\n\t\t\t}\n\t\t} else if (current > length) {\n\t\t\tthis[isPath ? 'removeSegments' : 'removeChildren'](length, current);\n\t\t}\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\titems[i].interpolate(itemsFrom[i], itemsTo[i], factor);\n\t\t}\n\t\tif (isPath) {\n\t\t\tthis.setClosed(from._closed);\n\t\t\tthis._changed(9);\n\t\t}\n\t},\n\n\tcompare: function(path) {\n\t\tvar ok = false;\n\t\tif (path) {\n\t\t\tvar paths1 = this._children || [this],\n\t\t\t\tpaths2 = path._children ? path._children.slice() : [path],\n\t\t\t\tlength1 = paths1.length,\n\t\t\t\tlength2 = paths2.length,\n\t\t\t\tmatched = [],\n\t\t\t\tcount = 0;\n\t\t\tok = true;\n\t\t\tvar boundsOverlaps = CollisionDetection.findItemBoundsCollisions(paths1, paths2, Numerical.GEOMETRIC_EPSILON);\n\t\t\tfor (var i1 = length1 - 1; i1 >= 0 && ok; i1--) {\n\t\t\t\tvar path1 = paths1[i1];\n\t\t\t\tok = false;\n\t\t\t\tvar pathBoundsOverlaps = boundsOverlaps[i1];\n\t\t\t\tif (pathBoundsOverlaps) {\n\t\t\t\t\tfor (var i2 = pathBoundsOverlaps.length - 1; i2 >= 0 && !ok; i2--) {\n\t\t\t\t\t\tif (path1.compare(paths2[pathBoundsOverlaps[i2]])) {\n\t\t\t\t\t\t\tif (!matched[pathBoundsOverlaps[i2]]) {\n\t\t\t\t\t\t\t\tmatched[pathBoundsOverlaps[i2]] = true;\n\t\t\t\t\t\t\t\tcount++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tok = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tok = ok && count === length2;\n\t\t}\n\t\treturn ok;\n\t},\n\n});\n\nvar Path = PathItem.extend({\n\t_class: 'Path',\n\t_serializeFields: {\n\t\tsegments: [],\n\t\tclosed: false\n\t},\n\n\tinitialize: function Path(arg) {\n\t\tthis._closed = false;\n\t\tthis._segments = [];\n\t\tthis._version = 0;\n\t\tvar args = arguments,\n\t\t\tsegments = Array.isArray(arg)\n\t\t\t? typeof arg[0] === 'object'\n\t\t\t\t? arg\n\t\t\t\t: args\n\t\t\t: arg && (arg.size === undefined && (arg.x !== undefined\n\t\t\t\t\t|| arg.point !== undefined))\n\t\t\t\t? args\n\t\t\t\t: null;\n\t\tif (segments && segments.length > 0) {\n\t\t\tthis.setSegments(segments);\n\t\t} else {\n\t\t\tthis._curves = undefined;\n\t\t\tthis._segmentSelection = 0;\n\t\t\tif (!segments && typeof arg === 'string') {\n\t\t\t\tthis.setPathData(arg);\n\t\t\t\targ = null;\n\t\t\t}\n\t\t}\n\t\tthis._initialize(!segments && arg);\n\t},\n\n\t_equals: function(item) {\n\t\treturn this._closed === item._closed\n\t\t\t\t&& Base.equals(this._segments, item._segments);\n\t},\n\n\tcopyContent: function(source) {\n\t\tthis.setSegments(source._segments);\n\t\tthis._closed = source._closed;\n\t},\n\n\t_changed: function _changed(flags) {\n\t\t_changed.base.call(this, flags);\n\t\tif (flags & 8) {\n\t\t\tthis._length = this._area = undefined;\n\t\t\tif (flags & 32) {\n\t\t\t\tthis._version++;\n\t\t\t} else if (this._curves) {\n\t\t\t   for (var i = 0, l = this._curves.length; i < l; i++)\n\t\t\t\t\tthis._curves[i]._changed();\n\t\t\t}\n\t\t} else if (flags & 64) {\n\t\t\tthis._bounds = undefined;\n\t\t}\n\t},\n\n\tgetStyle: function() {\n\t\tvar parent = this._parent;\n\t\treturn (parent instanceof CompoundPath ? parent : this)._style;\n\t},\n\n\tgetSegments: function() {\n\t\treturn this._segments;\n\t},\n\n\tsetSegments: function(segments) {\n\t\tvar fullySelected = this.isFullySelected(),\n\t\t\tlength = segments && segments.length;\n\t\tthis._segments.length = 0;\n\t\tthis._segmentSelection = 0;\n\t\tthis._curves = undefined;\n\t\tif (length) {\n\t\t\tvar last = segments[length - 1];\n\t\t\tif (typeof last === 'boolean') {\n\t\t\t\tthis.setClosed(last);\n\t\t\t\tlength--;\n\t\t\t}\n\t\t\tthis._add(Segment.readList(segments, 0, {}, length));\n\t\t}\n\t\tif (fullySelected)\n\t\t\tthis.setFullySelected(true);\n\t},\n\n\tgetFirstSegment: function() {\n\t\treturn this._segments[0];\n\t},\n\n\tgetLastSegment: function() {\n\t\treturn this._segments[this._segments.length - 1];\n\t},\n\n\tgetCurves: function() {\n\t\tvar curves = this._curves,\n\t\t\tsegments = this._segments;\n\t\tif (!curves) {\n\t\t\tvar length = this._countCurves();\n\t\t\tcurves = this._curves = new Array(length);\n\t\t\tfor (var i = 0; i < length; i++)\n\t\t\t\tcurves[i] = new Curve(this, segments[i],\n\t\t\t\t\tsegments[i + 1] || segments[0]);\n\t\t}\n\t\treturn curves;\n\t},\n\n\tgetFirstCurve: function() {\n\t\treturn this.getCurves()[0];\n\t},\n\n\tgetLastCurve: function() {\n\t\tvar curves = this.getCurves();\n\t\treturn curves[curves.length - 1];\n\t},\n\n\tisClosed: function() {\n\t\treturn this._closed;\n\t},\n\n\tsetClosed: function(closed) {\n\t\tif (this._closed != (closed = !!closed)) {\n\t\t\tthis._closed = closed;\n\t\t\tif (this._curves) {\n\t\t\t\tvar length = this._curves.length = this._countCurves();\n\t\t\t\tif (closed)\n\t\t\t\t\tthis._curves[length - 1] = new Curve(this,\n\t\t\t\t\t\tthis._segments[length - 1], this._segments[0]);\n\t\t\t}\n\t\t\tthis._changed(41);\n\t\t}\n\t}\n}, {\n\tbeans: true,\n\n\tgetPathData: function(_matrix, _precision) {\n\t\tvar segments = this._segments,\n\t\t\tlength = segments.length,\n\t\t\tf = new Formatter(_precision),\n\t\t\tcoords = new Array(6),\n\t\t\tfirst = true,\n\t\t\tcurX, curY,\n\t\t\tprevX, prevY,\n\t\t\tinX, inY,\n\t\t\toutX, outY,\n\t\t\tparts = [];\n\n\t\tfunction addSegment(segment, skipLine) {\n\t\t\tsegment._transformCoordinates(_matrix, coords);\n\t\t\tcurX = coords[0];\n\t\t\tcurY = coords[1];\n\t\t\tif (first) {\n\t\t\t\tparts.push('M' + f.pair(curX, curY));\n\t\t\t\tfirst = false;\n\t\t\t} else {\n\t\t\t\tinX = coords[2];\n\t\t\t\tinY = coords[3];\n\t\t\t\tif (inX === curX && inY === curY\n\t\t\t\t\t\t&& outX === prevX && outY === prevY) {\n\t\t\t\t\tif (!skipLine) {\n\t\t\t\t\t\tvar dx = curX - prevX,\n\t\t\t\t\t\t\tdy = curY - prevY;\n\t\t\t\t\t\tparts.push(\n\t\t\t\t\t\t\t  dx === 0 ? 'v' + f.number(dy)\n\t\t\t\t\t\t\t: dy === 0 ? 'h' + f.number(dx)\n\t\t\t\t\t\t\t: 'l' + f.pair(dx, dy));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tparts.push('c' + f.pair(outX - prevX, outY - prevY)\n\t\t\t\t\t\t\t + ' ' + f.pair( inX - prevX,  inY - prevY)\n\t\t\t\t\t\t\t + ' ' + f.pair(curX - prevX, curY - prevY));\n\t\t\t\t}\n\t\t\t}\n\t\t\tprevX = curX;\n\t\t\tprevY = curY;\n\t\t\toutX = coords[4];\n\t\t\toutY = coords[5];\n\t\t}\n\n\t\tif (!length)\n\t\t\treturn '';\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\taddSegment(segments[i]);\n\t\tif (this._closed && length > 0) {\n\t\t\taddSegment(segments[0], true);\n\t\t\tparts.push('z');\n\t\t}\n\t\treturn parts.join('');\n\t},\n\n\tisEmpty: function() {\n\t\treturn !this._segments.length;\n\t},\n\n\t_transformContent: function(matrix) {\n\t\tvar segments = this._segments,\n\t\t\tcoords = new Array(6);\n\t\tfor (var i = 0, l = segments.length; i < l; i++)\n\t\t\tsegments[i]._transformCoordinates(matrix, coords, true);\n\t\treturn true;\n\t},\n\n\t_add: function(segs, index) {\n\t\tvar segments = this._segments,\n\t\t\tcurves = this._curves,\n\t\t\tamount = segs.length,\n\t\t\tappend = index == null,\n\t\t\tindex = append ? segments.length : index;\n\t\tfor (var i = 0; i < amount; i++) {\n\t\t\tvar segment = segs[i];\n\t\t\tif (segment._path)\n\t\t\t\tsegment = segs[i] = segment.clone();\n\t\t\tsegment._path = this;\n\t\t\tsegment._index = index + i;\n\t\t\tif (segment._selection)\n\t\t\t\tthis._updateSelection(segment, 0, segment._selection);\n\t\t}\n\t\tif (append) {\n\t\t\tBase.push(segments, segs);\n\t\t} else {\n\t\t\tsegments.splice.apply(segments, [index, 0].concat(segs));\n\t\t\tfor (var i = index + amount, l = segments.length; i < l; i++)\n\t\t\t\tsegments[i]._index = i;\n\t\t}\n\t\tif (curves) {\n\t\t\tvar total = this._countCurves(),\n\t\t\t\tstart = index > 0 && index + amount - 1 === total ? index - 1\n\t\t\t\t\t: index,\n\t\t\t\tinsert = start,\n\t\t\t\tend = Math.min(start + amount, total);\n\t\t\tif (segs._curves) {\n\t\t\t\tcurves.splice.apply(curves, [start, 0].concat(segs._curves));\n\t\t\t\tinsert += segs._curves.length;\n\t\t\t}\n\t\t\tfor (var i = insert; i < end; i++)\n\t\t\t\tcurves.splice(i, 0, new Curve(this, null, null));\n\t\t\tthis._adjustCurves(start, end);\n\t\t}\n\t\tthis._changed(41);\n\t\treturn segs;\n\t},\n\n\t_adjustCurves: function(start, end) {\n\t\tvar segments = this._segments,\n\t\t\tcurves = this._curves,\n\t\t\tcurve;\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tcurve = curves[i];\n\t\t\tcurve._path = this;\n\t\t\tcurve._segment1 = segments[i];\n\t\t\tcurve._segment2 = segments[i + 1] || segments[0];\n\t\t\tcurve._changed();\n\t\t}\n\t\tif (curve = curves[this._closed && !start ? segments.length - 1\n\t\t\t\t: start - 1]) {\n\t\t\tcurve._segment2 = segments[start] || segments[0];\n\t\t\tcurve._changed();\n\t\t}\n\t\tif (curve = curves[end]) {\n\t\t\tcurve._segment1 = segments[end];\n\t\t\tcurve._changed();\n\t\t}\n\t},\n\n\t_countCurves: function() {\n\t\tvar length = this._segments.length;\n\t\treturn !this._closed && length > 0 ? length - 1 : length;\n\t},\n\n\tadd: function(segment1 ) {\n\t\tvar args = arguments;\n\t\treturn args.length > 1 && typeof segment1 !== 'number'\n\t\t\t? this._add(Segment.readList(args))\n\t\t\t: this._add([ Segment.read(args) ])[0];\n\t},\n\n\tinsert: function(index, segment1 ) {\n\t\tvar args = arguments;\n\t\treturn args.length > 2 && typeof segment1 !== 'number'\n\t\t\t? this._add(Segment.readList(args, 1), index)\n\t\t\t: this._add([ Segment.read(args, 1) ], index)[0];\n\t},\n\n\taddSegment: function() {\n\t\treturn this._add([ Segment.read(arguments) ])[0];\n\t},\n\n\tinsertSegment: function(index ) {\n\t\treturn this._add([ Segment.read(arguments, 1) ], index)[0];\n\t},\n\n\taddSegments: function(segments) {\n\t\treturn this._add(Segment.readList(segments));\n\t},\n\n\tinsertSegments: function(index, segments) {\n\t\treturn this._add(Segment.readList(segments), index);\n\t},\n\n\tremoveSegment: function(index) {\n\t\treturn this.removeSegments(index, index + 1)[0] || null;\n\t},\n\n\tremoveSegments: function(start, end, _includeCurves) {\n\t\tstart = start || 0;\n\t\tend = Base.pick(end, this._segments.length);\n\t\tvar segments = this._segments,\n\t\t\tcurves = this._curves,\n\t\t\tcount = segments.length,\n\t\t\tremoved = segments.splice(start, end - start),\n\t\t\tamount = removed.length;\n\t\tif (!amount)\n\t\t\treturn removed;\n\t\tfor (var i = 0; i < amount; i++) {\n\t\t\tvar segment = removed[i];\n\t\t\tif (segment._selection)\n\t\t\t\tthis._updateSelection(segment, segment._selection, 0);\n\t\t\tsegment._index = segment._path = null;\n\t\t}\n\t\tfor (var i = start, l = segments.length; i < l; i++)\n\t\t\tsegments[i]._index = i;\n\t\tif (curves) {\n\t\t\tvar index = start > 0 && end === count + (this._closed ? 1 : 0)\n\t\t\t\t\t? start - 1\n\t\t\t\t\t: start,\n\t\t\t\tcurves = curves.splice(index, amount);\n\t\t\tfor (var i = curves.length - 1; i >= 0; i--)\n\t\t\t\tcurves[i]._path = null;\n\t\t\tif (_includeCurves)\n\t\t\t\tremoved._curves = curves.slice(1);\n\t\t\tthis._adjustCurves(index, index);\n\t\t}\n\t\tthis._changed(41);\n\t\treturn removed;\n\t},\n\n\tclear: '#removeSegments',\n\n\thasHandles: function() {\n\t\tvar segments = this._segments;\n\t\tfor (var i = 0, l = segments.length; i < l; i++) {\n\t\t\tif (segments[i].hasHandles())\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\tclearHandles: function() {\n\t\tvar segments = this._segments;\n\t\tfor (var i = 0, l = segments.length; i < l; i++)\n\t\t\tsegments[i].clearHandles();\n\t},\n\n\tgetLength: function() {\n\t\tif (this._length == null) {\n\t\t\tvar curves = this.getCurves(),\n\t\t\t\tlength = 0;\n\t\t\tfor (var i = 0, l = curves.length; i < l; i++)\n\t\t\t\tlength += curves[i].getLength();\n\t\t\tthis._length = length;\n\t\t}\n\t\treturn this._length;\n\t},\n\n\tgetArea: function() {\n\t\tvar area = this._area;\n\t\tif (area == null) {\n\t\t\tvar segments = this._segments,\n\t\t\t\tclosed = this._closed;\n\t\t\tarea = 0;\n\t\t\tfor (var i = 0, l = segments.length; i < l; i++) {\n\t\t\t\tvar last = i + 1 === l;\n\t\t\t\tarea += Curve.getArea(Curve.getValues(\n\t\t\t\t\t\tsegments[i], segments[last ? 0 : i + 1],\n\t\t\t\t\t\tnull, last && !closed));\n\t\t\t}\n\t\t\tthis._area = area;\n\t\t}\n\t\treturn area;\n\t},\n\n\tisFullySelected: function() {\n\t\tvar length = this._segments.length;\n\t\treturn this.isSelected() && length > 0 && this._segmentSelection\n\t\t\t\t=== length * 7;\n\t},\n\n\tsetFullySelected: function(selected) {\n\t\tif (selected)\n\t\t\tthis._selectSegments(true);\n\t\tthis.setSelected(selected);\n\t},\n\n\tsetSelection: function setSelection(selection) {\n\t\tif (!(selection & 1))\n\t\t\tthis._selectSegments(false);\n\t\tsetSelection.base.call(this, selection);\n\t},\n\n\t_selectSegments: function(selected) {\n\t\tvar segments = this._segments,\n\t\t\tlength = segments.length,\n\t\t\tselection = selected ? 7 : 0;\n\t\tthis._segmentSelection = selection * length;\n\t\tfor (var i = 0; i < length; i++)\n\t\t\tsegments[i]._selection = selection;\n\t},\n\n\t_updateSelection: function(segment, oldSelection, newSelection) {\n\t\tsegment._selection = newSelection;\n\t\tvar selection = this._segmentSelection += newSelection - oldSelection;\n\t\tif (selection > 0)\n\t\t\tthis.setSelected(true);\n\t},\n\n\tdivideAt: function(location) {\n\t\tvar loc = this.getLocationAt(location),\n\t\t\tcurve;\n\t\treturn loc && (curve = loc.getCurve().divideAt(loc.getCurveOffset()))\n\t\t\t\t? curve._segment1\n\t\t\t\t: null;\n\t},\n\n\tsplitAt: function(location) {\n\t\tvar loc = this.getLocationAt(location),\n\t\t\tindex = loc && loc.index,\n\t\t\ttime = loc && loc.time,\n\t\t\ttMin = 1e-8,\n\t\t\ttMax = 1 - tMin;\n\t\tif (time > tMax) {\n\t\t\tindex++;\n\t\t\ttime = 0;\n\t\t}\n\t\tvar curves = this.getCurves();\n\t\tif (index >= 0 && index < curves.length) {\n\t\t\tif (time >= tMin) {\n\t\t\t\tcurves[index++].divideAtTime(time);\n\t\t\t}\n\t\t\tvar segs = this.removeSegments(index, this._segments.length, true),\n\t\t\t\tpath;\n\t\t\tif (this._closed) {\n\t\t\t\tthis.setClosed(false);\n\t\t\t\tpath = this;\n\t\t\t} else {\n\t\t\t\tpath = new Path(Item.NO_INSERT);\n\t\t\t\tpath.insertAbove(this);\n\t\t\t\tpath.copyAttributes(this);\n\t\t\t}\n\t\t\tpath._add(segs, 0);\n\t\t\tthis.addSegment(segs[0]);\n\t\t\treturn path;\n\t\t}\n\t\treturn null;\n\t},\n\n\tsplit: function(index, time) {\n\t\tvar curve,\n\t\t\tlocation = time === undefined ? index\n\t\t\t\t: (curve = this.getCurves()[index])\n\t\t\t\t\t&& curve.getLocationAtTime(time);\n\t\treturn location != null ? this.splitAt(location) : null;\n\t},\n\n\tjoin: function(path, tolerance) {\n\t\tvar epsilon = tolerance || 0;\n\t\tif (path && path !== this) {\n\t\t\tvar segments = path._segments,\n\t\t\t\tlast1 = this.getLastSegment(),\n\t\t\t\tlast2 = path.getLastSegment();\n\t\t\tif (!last2)\n\t\t\t\treturn this;\n\t\t\tif (last1 && last1._point.isClose(last2._point, epsilon))\n\t\t\t\tpath.reverse();\n\t\t\tvar first2 = path.getFirstSegment();\n\t\t\tif (last1 && last1._point.isClose(first2._point, epsilon)) {\n\t\t\t\tlast1.setHandleOut(first2._handleOut);\n\t\t\t\tthis._add(segments.slice(1));\n\t\t\t} else {\n\t\t\t\tvar first1 = this.getFirstSegment();\n\t\t\t\tif (first1 && first1._point.isClose(first2._point, epsilon))\n\t\t\t\t\tpath.reverse();\n\t\t\t\tlast2 = path.getLastSegment();\n\t\t\t\tif (first1 && first1._point.isClose(last2._point, epsilon)) {\n\t\t\t\t\tfirst1.setHandleIn(last2._handleIn);\n\t\t\t\t\tthis._add(segments.slice(0, segments.length - 1), 0);\n\t\t\t\t} else {\n\t\t\t\t\tthis._add(segments.slice());\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (path._closed)\n\t\t\t\tthis._add([segments[0]]);\n\t\t\tpath.remove();\n\t\t}\n\t\tvar first = this.getFirstSegment(),\n\t\t\tlast = this.getLastSegment();\n\t\tif (first !== last && first._point.isClose(last._point, epsilon)) {\n\t\t\tfirst.setHandleIn(last._handleIn);\n\t\t\tlast.remove();\n\t\t\tthis.setClosed(true);\n\t\t}\n\t\treturn this;\n\t},\n\n\treduce: function(options) {\n\t\tvar curves = this.getCurves(),\n\t\t\tsimplify = options && options.simplify,\n\t\t\ttolerance = simplify ? 1e-7 : 0;\n\t\tfor (var i = curves.length - 1; i >= 0; i--) {\n\t\t\tvar curve = curves[i];\n\t\t\tif (!curve.hasHandles() && (!curve.hasLength(tolerance)\n\t\t\t\t\t|| simplify && curve.isCollinear(curve.getNext())))\n\t\t\t\tcurve.remove();\n\t\t}\n\t\treturn this;\n\t},\n\n\treverse: function() {\n\t\tthis._segments.reverse();\n\t\tfor (var i = 0, l = this._segments.length; i < l; i++) {\n\t\t\tvar segment = this._segments[i];\n\t\t\tvar handleIn = segment._handleIn;\n\t\t\tsegment._handleIn = segment._handleOut;\n\t\t\tsegment._handleOut = handleIn;\n\t\t\tsegment._index = i;\n\t\t}\n\t\tthis._curves = null;\n\t\tthis._changed(9);\n\t},\n\n\tflatten: function(flatness) {\n\t\tvar flattener = new PathFlattener(this, flatness || 0.25, 256, true),\n\t\t\tparts = flattener.parts,\n\t\t\tlength = parts.length,\n\t\t\tsegments = [];\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tsegments.push(new Segment(parts[i].curve.slice(0, 2)));\n\t\t}\n\t\tif (!this._closed && length > 0) {\n\t\t\tsegments.push(new Segment(parts[length - 1].curve.slice(6)));\n\t\t}\n\t\tthis.setSegments(segments);\n\t},\n\n\tsimplify: function(tolerance) {\n\t\tvar segments = new PathFitter(this).fit(tolerance || 2.5);\n\t\tif (segments)\n\t\t\tthis.setSegments(segments);\n\t\treturn !!segments;\n\t},\n\n\tsmooth: function(options) {\n\t\tvar that = this,\n\t\t\topts = options || {},\n\t\t\ttype = opts.type || 'asymmetric',\n\t\t\tsegments = this._segments,\n\t\t\tlength = segments.length,\n\t\t\tclosed = this._closed;\n\n\t\tfunction getIndex(value, _default) {\n\t\t\tvar index = value && value.index;\n\t\t\tif (index != null) {\n\t\t\t\tvar path = value.path;\n\t\t\t\tif (path && path !== that)\n\t\t\t\t\tthrow new Error(value._class + ' ' + index + ' of ' + path\n\t\t\t\t\t\t\t+ ' is not part of ' + that);\n\t\t\t\tif (_default && value instanceof Curve)\n\t\t\t\t\tindex++;\n\t\t\t} else {\n\t\t\t\tindex = typeof value === 'number' ? value : _default;\n\t\t\t}\n\t\t\treturn Math.min(index < 0 && closed\n\t\t\t\t\t? index % length\n\t\t\t\t\t: index < 0 ? index + length : index, length - 1);\n\t\t}\n\n\t\tvar loop = closed && opts.from === undefined && opts.to === undefined,\n\t\t\tfrom = getIndex(opts.from, 0),\n\t\t\tto = getIndex(opts.to, length - 1);\n\n\t\tif (from > to) {\n\t\t\tif (closed) {\n\t\t\t\tfrom -= length;\n\t\t\t} else {\n\t\t\t\tvar tmp = from;\n\t\t\t\tfrom = to;\n\t\t\t\tto = tmp;\n\t\t\t}\n\t\t}\n\t\tif (/^(?:asymmetric|continuous)$/.test(type)) {\n\t\t\tvar asymmetric = type === 'asymmetric',\n\t\t\t\tmin = Math.min,\n\t\t\t\tamount = to - from + 1,\n\t\t\t\tn = amount - 1,\n\t\t\t\tpadding = loop ? min(amount, 4) : 1,\n\t\t\t\tpaddingLeft = padding,\n\t\t\t\tpaddingRight = padding,\n\t\t\t\tknots = [];\n\t\t\tif (!closed) {\n\t\t\t\tpaddingLeft = min(1, from);\n\t\t\t\tpaddingRight = min(1, length - to - 1);\n\t\t\t}\n\t\t\tn += paddingLeft + paddingRight;\n\t\t\tif (n <= 1)\n\t\t\t\treturn;\n\t\t\tfor (var i = 0, j = from - paddingLeft; i <= n; i++, j++) {\n\t\t\t\tknots[i] = segments[(j < 0 ? j + length : j) % length]._point;\n\t\t\t}\n\n\t\t\tvar x = knots[0]._x + 2 * knots[1]._x,\n\t\t\t\ty = knots[0]._y + 2 * knots[1]._y,\n\t\t\t\tf = 2,\n\t\t\t\tn_1 = n - 1,\n\t\t\t\trx = [x],\n\t\t\t\try = [y],\n\t\t\t\trf = [f],\n\t\t\t\tpx = [],\n\t\t\t\tpy = [];\n\t\t\tfor (var i = 1; i < n; i++) {\n\t\t\t\tvar internal = i < n_1,\n\t\t\t\t\ta = internal ? 1 : asymmetric ? 1 : 2,\n\t\t\t\t\tb = internal ? 4 : asymmetric ? 2 : 7,\n\t\t\t\t\tu = internal ? 4 : asymmetric ? 3 : 8,\n\t\t\t\t\tv = internal ? 2 : asymmetric ? 0 : 1,\n\t\t\t\t\tm = a / f;\n\t\t\t\tf = rf[i] = b - m;\n\t\t\t\tx = rx[i] = u * knots[i]._x + v * knots[i + 1]._x - m * x;\n\t\t\t\ty = ry[i] = u * knots[i]._y + v * knots[i + 1]._y - m * y;\n\t\t\t}\n\n\t\t\tpx[n_1] = rx[n_1] / rf[n_1];\n\t\t\tpy[n_1] = ry[n_1] / rf[n_1];\n\t\t\tfor (var i = n - 2; i >= 0; i--) {\n\t\t\t\tpx[i] = (rx[i] - px[i + 1]) / rf[i];\n\t\t\t\tpy[i] = (ry[i] - py[i + 1]) / rf[i];\n\t\t\t}\n\t\t\tpx[n] = (3 * knots[n]._x - px[n_1]) / 2;\n\t\t\tpy[n] = (3 * knots[n]._y - py[n_1]) / 2;\n\n\t\t\tfor (var i = paddingLeft, max = n - paddingRight, j = from;\n\t\t\t\t\ti <= max; i++, j++) {\n\t\t\t\tvar segment = segments[j < 0 ? j + length : j],\n\t\t\t\t\tpt = segment._point,\n\t\t\t\t\thx = px[i] - pt._x,\n\t\t\t\t\thy = py[i] - pt._y;\n\t\t\t\tif (loop || i < max)\n\t\t\t\t\tsegment.setHandleOut(hx, hy);\n\t\t\t\tif (loop || i > paddingLeft)\n\t\t\t\t\tsegment.setHandleIn(-hx, -hy);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var i = from; i <= to; i++) {\n\t\t\t\tsegments[i < 0 ? i + length : i].smooth(opts,\n\t\t\t\t\t\t!loop && i === from, !loop && i === to);\n\t\t\t}\n\t\t}\n\t},\n\n\ttoShape: function(insert) {\n\t\tif (!this._closed)\n\t\t\treturn null;\n\n\t\tvar segments = this._segments,\n\t\t\ttype,\n\t\t\tsize,\n\t\t\tradius,\n\t\t\ttopCenter;\n\n\t\tfunction isCollinear(i, j) {\n\t\t\tvar seg1 = segments[i],\n\t\t\t\tseg2 = seg1.getNext(),\n\t\t\t\tseg3 = segments[j],\n\t\t\t\tseg4 = seg3.getNext();\n\t\t\treturn seg1._handleOut.isZero() && seg2._handleIn.isZero()\n\t\t\t\t\t&& seg3._handleOut.isZero() && seg4._handleIn.isZero()\n\t\t\t\t\t&& seg2._point.subtract(seg1._point).isCollinear(\n\t\t\t\t\t\tseg4._point.subtract(seg3._point));\n\t\t}\n\n\t\tfunction isOrthogonal(i) {\n\t\t\tvar seg2 = segments[i],\n\t\t\t\tseg1 = seg2.getPrevious(),\n\t\t\t\tseg3 = seg2.getNext();\n\t\t\treturn seg1._handleOut.isZero() && seg2._handleIn.isZero()\n\t\t\t\t\t&& seg2._handleOut.isZero() && seg3._handleIn.isZero()\n\t\t\t\t\t&& seg2._point.subtract(seg1._point).isOrthogonal(\n\t\t\t\t\t\tseg3._point.subtract(seg2._point));\n\t\t}\n\n\t\tfunction isArc(i) {\n\t\t\tvar seg1 = segments[i],\n\t\t\t\tseg2 = seg1.getNext(),\n\t\t\t\thandle1 = seg1._handleOut,\n\t\t\t\thandle2 = seg2._handleIn,\n\t\t\t\tkappa = 0.5522847498307936;\n\t\t\tif (handle1.isOrthogonal(handle2)) {\n\t\t\t\tvar pt1 = seg1._point,\n\t\t\t\t\tpt2 = seg2._point,\n\t\t\t\t\tcorner = new Line(pt1, handle1, true).intersect(\n\t\t\t\t\t\t\tnew Line(pt2, handle2, true), true);\n\t\t\t\treturn corner && Numerical.isZero(handle1.getLength() /\n\t\t\t\t\t\tcorner.subtract(pt1).getLength() - kappa)\n\t\t\t\t\t&& Numerical.isZero(handle2.getLength() /\n\t\t\t\t\t\tcorner.subtract(pt2).getLength() - kappa);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction getDistance(i, j) {\n\t\t\treturn segments[i]._point.getDistance(segments[j]._point);\n\t\t}\n\n\t\tif (!this.hasHandles() && segments.length === 4\n\t\t\t\t&& isCollinear(0, 2) && isCollinear(1, 3) && isOrthogonal(1)) {\n\t\t\ttype = Shape.Rectangle;\n\t\t\tsize = new Size(getDistance(0, 3), getDistance(0, 1));\n\t\t\ttopCenter = segments[1]._point.add(segments[2]._point).divide(2);\n\t\t} else if (segments.length === 8 && isArc(0) && isArc(2) && isArc(4)\n\t\t\t\t&& isArc(6) && isCollinear(1, 5) && isCollinear(3, 7)) {\n\t\t\ttype = Shape.Rectangle;\n\t\t\tsize = new Size(getDistance(1, 6), getDistance(0, 3));\n\t\t\tradius = size.subtract(new Size(getDistance(0, 7),\n\t\t\t\t\tgetDistance(1, 2))).divide(2);\n\t\t\ttopCenter = segments[3]._point.add(segments[4]._point).divide(2);\n\t\t} else if (segments.length === 4\n\t\t\t\t&& isArc(0) && isArc(1) && isArc(2) && isArc(3)) {\n\t\t\tif (Numerical.isZero(getDistance(0, 2) - getDistance(1, 3))) {\n\t\t\t\ttype = Shape.Circle;\n\t\t\t\tradius = getDistance(0, 2) / 2;\n\t\t\t} else {\n\t\t\t\ttype = Shape.Ellipse;\n\t\t\t\tradius = new Size(getDistance(2, 0) / 2, getDistance(3, 1) / 2);\n\t\t\t}\n\t\t\ttopCenter = segments[1]._point;\n\t\t}\n\n\t\tif (type) {\n\t\t\tvar center = this.getPosition(true),\n\t\t\t\tshape = new type({\n\t\t\t\t\tcenter: center,\n\t\t\t\t\tsize: size,\n\t\t\t\t\tradius: radius,\n\t\t\t\t\tinsert: false\n\t\t\t\t});\n\t\t\tshape.copyAttributes(this, true);\n\t\t\tshape._matrix.prepend(this._matrix);\n\t\t\tshape.rotate(topCenter.subtract(center).getAngle() + 90);\n\t\t\tif (insert === undefined || insert)\n\t\t\t\tshape.insertAbove(this);\n\t\t\treturn shape;\n\t\t}\n\t\treturn null;\n\t},\n\n\ttoPath: '#clone',\n\n\tcompare: function compare(path) {\n\t\tif (!path || path instanceof CompoundPath)\n\t\t\treturn compare.base.call(this, path);\n\t\tvar curves1 = this.getCurves(),\n\t\t\tcurves2 = path.getCurves(),\n\t\t\tlength1 = curves1.length,\n\t\t\tlength2 = curves2.length;\n\t\tif (!length1 || !length2) {\n\t\t\treturn length1 == length2;\n\t\t}\n\t\tvar v1 = curves1[0].getValues(),\n\t\t\tvalues2 = [],\n\t\t\tpos1 = 0, pos2,\n\t\t\tend1 = 0, end2;\n\t\tfor (var i = 0; i < length2; i++) {\n\t\t\tvar v2 = curves2[i].getValues();\n\t\t\tvalues2.push(v2);\n\t\t\tvar overlaps = Curve.getOverlaps(v1, v2);\n\t\t\tif (overlaps) {\n\t\t\t\tpos2 = !i && overlaps[0][0] > 0 ? length2 - 1 : i;\n\t\t\t\tend2 = overlaps[0][1];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar abs = Math.abs,\n\t\t\tepsilon = 1e-8,\n\t\t\tv2 = values2[pos2],\n\t\t\tstart2;\n\t\twhile (v1 && v2) {\n\t\t\tvar overlaps = Curve.getOverlaps(v1, v2);\n\t\t\tif (overlaps) {\n\t\t\t\tvar t1 = overlaps[0][0];\n\t\t\t\tif (abs(t1 - end1) < epsilon) {\n\t\t\t\t\tend1 = overlaps[1][0];\n\t\t\t\t\tif (end1 === 1) {\n\t\t\t\t\t\tv1 = ++pos1 < length1 ? curves1[pos1].getValues() : null;\n\t\t\t\t\t\tend1 = 0;\n\t\t\t\t\t}\n\t\t\t\t\tvar t2 = overlaps[0][1];\n\t\t\t\t\tif (abs(t2 - end2) < epsilon) {\n\t\t\t\t\t\tif (!start2)\n\t\t\t\t\t\t\tstart2 = [pos2, t2];\n\t\t\t\t\t\tend2 = overlaps[1][1];\n\t\t\t\t\t\tif (end2 === 1) {\n\t\t\t\t\t\t\tif (++pos2 >= length2)\n\t\t\t\t\t\t\t\tpos2 = 0;\n\t\t\t\t\t\t\tv2 = values2[pos2] || curves2[pos2].getValues();\n\t\t\t\t\t\t\tend2 = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!v1) {\n\t\t\t\t\t\t\treturn start2[0] === pos2 && start2[1] === end2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\treturn false;\n\t},\n\n\t_hitTestSelf: function(point, options, viewMatrix, strokeMatrix) {\n\t\tvar that = this,\n\t\t\tstyle = this.getStyle(),\n\t\t\tsegments = this._segments,\n\t\t\tnumSegments = segments.length,\n\t\t\tclosed = this._closed,\n\t\t\ttolerancePadding = options._tolerancePadding,\n\t\t\tstrokePadding = tolerancePadding,\n\t\t\tjoin, cap, miterLimit,\n\t\t\tarea, loc, res,\n\t\t\thitStroke = options.stroke && (style.hasStroke() || options.hitUnstrokedPaths),\n\t\t\thitFill = options.fill && (style.hasFill() || options.hitUnfilledPaths),\n\t\t\thitCurves = options.curves,\n\t\t\tstrokeRadius = hitStroke\n\t\t\t\t\t? style.getStrokeWidth() / 2\n\t\t\t\t\t: hitFill && options.tolerance > 0 || hitCurves\n\t\t\t\t\t\t? 0 : null;\n\t\tif (strokeRadius !== null) {\n\t\t\tif (strokeRadius > 0) {\n\t\t\t\tjoin = style.getStrokeJoin();\n\t\t\t\tcap = style.getStrokeCap();\n\t\t\t\tmiterLimit = style.getMiterLimit();\n\t\t\t\tstrokePadding = strokePadding.add(\n\t\t\t\t\tPath._getStrokePadding(strokeRadius, strokeMatrix));\n\t\t\t} else {\n\t\t\t\tjoin = cap = 'round';\n\t\t\t}\n\t\t}\n\n\t\tfunction isCloseEnough(pt, padding) {\n\t\t\treturn point.subtract(pt).divide(padding).length <= 1;\n\t\t}\n\n\t\tfunction checkSegmentPoint(seg, pt, name) {\n\t\t\tif (!options.selected || pt.isSelected()) {\n\t\t\t\tvar anchor = seg._point;\n\t\t\t\tif (pt !== anchor)\n\t\t\t\t\tpt = pt.add(anchor);\n\t\t\t\tif (isCloseEnough(pt, strokePadding)) {\n\t\t\t\t\treturn new HitResult(name, that, {\n\t\t\t\t\t\tsegment: seg,\n\t\t\t\t\t\tpoint: pt\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction checkSegmentPoints(seg, ends) {\n\t\t\treturn (ends || options.segments)\n\t\t\t\t&& checkSegmentPoint(seg, seg._point, 'segment')\n\t\t\t\t|| (!ends && options.handles) && (\n\t\t\t\t\tcheckSegmentPoint(seg, seg._handleIn, 'handle-in') ||\n\t\t\t\t\tcheckSegmentPoint(seg, seg._handleOut, 'handle-out'));\n\t\t}\n\n\t\tfunction addToArea(point) {\n\t\t\tarea.add(point);\n\t\t}\n\n\t\tfunction checkSegmentStroke(segment) {\n\t\t\tvar isJoin = closed || segment._index > 0\n\t\t\t\t\t&& segment._index < numSegments - 1;\n\t\t\tif ((isJoin ? join : cap) === 'round') {\n\t\t\t\treturn isCloseEnough(segment._point, strokePadding);\n\t\t\t} else {\n\t\t\t\tarea = new Path({ internal: true, closed: true });\n\t\t\t\tif (isJoin) {\n\t\t\t\t\tif (!segment.isSmooth()) {\n\t\t\t\t\t\tPath._addBevelJoin(segment, join, strokeRadius,\n\t\t\t\t\t\t\t   miterLimit, null, strokeMatrix, addToArea, true);\n\t\t\t\t\t}\n\t\t\t\t} else if (cap === 'square') {\n\t\t\t\t\tPath._addSquareCap(segment, cap, strokeRadius, null,\n\t\t\t\t\t\t\tstrokeMatrix, addToArea, true);\n\t\t\t\t}\n\t\t\t\tif (!area.isEmpty()) {\n\t\t\t\t\tvar loc;\n\t\t\t\t\treturn area.contains(point)\n\t\t\t\t\t\t|| (loc = area.getNearestLocation(point))\n\t\t\t\t\t\t\t&& isCloseEnough(loc.getPoint(), tolerancePadding);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (options.ends && !options.segments && !closed) {\n\t\t\tif (res = checkSegmentPoints(segments[0], true)\n\t\t\t\t\t|| checkSegmentPoints(segments[numSegments - 1], true))\n\t\t\t\treturn res;\n\t\t} else if (options.segments || options.handles) {\n\t\t\tfor (var i = 0; i < numSegments; i++)\n\t\t\t\tif (res = checkSegmentPoints(segments[i]))\n\t\t\t\t\treturn res;\n\t\t}\n\t\tif (strokeRadius !== null) {\n\t\t\tloc = this.getNearestLocation(point);\n\t\t\tif (loc) {\n\t\t\t\tvar time = loc.getTime();\n\t\t\t\tif (time === 0 || time === 1 && numSegments > 1) {\n\t\t\t\t\tif (!checkSegmentStroke(loc.getSegment()))\n\t\t\t\t\t\tloc = null;\n\t\t\t\t} else if (!isCloseEnough(loc.getPoint(), strokePadding)) {\n\t\t\t\t\tloc = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!loc && join === 'miter' && numSegments > 1) {\n\t\t\t\tfor (var i = 0; i < numSegments; i++) {\n\t\t\t\t\tvar segment = segments[i];\n\t\t\t\t\tif (point.getDistance(segment._point)\n\t\t\t\t\t\t\t<= miterLimit * strokeRadius\n\t\t\t\t\t\t\t&& checkSegmentStroke(segment)) {\n\t\t\t\t\t\tloc = segment.getLocation();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn !loc && hitFill && this._contains(point)\n\t\t\t\t|| loc && !hitStroke && !hitCurves\n\t\t\t\t\t? new HitResult('fill', this)\n\t\t\t\t\t: loc\n\t\t\t\t\t\t? new HitResult(hitStroke ? 'stroke' : 'curve', this, {\n\t\t\t\t\t\t\tlocation: loc,\n\t\t\t\t\t\t\tpoint: loc.getPoint()\n\t\t\t\t\t\t})\n\t\t\t\t\t\t: null;\n\t}\n\n}, Base.each(Curve._evaluateMethods,\n\tfunction(name) {\n\t\tthis[name + 'At'] = function(offset) {\n\t\t\tvar loc = this.getLocationAt(offset);\n\t\t\treturn loc && loc[name]();\n\t\t};\n\t},\n{\n\tbeans: false,\n\n\tgetLocationOf: function() {\n\t\tvar point = Point.read(arguments),\n\t\t\tcurves = this.getCurves();\n\t\tfor (var i = 0, l = curves.length; i < l; i++) {\n\t\t\tvar loc = curves[i].getLocationOf(point);\n\t\t\tif (loc)\n\t\t\t\treturn loc;\n\t\t}\n\t\treturn null;\n\t},\n\n\tgetOffsetOf: function() {\n\t\tvar loc = this.getLocationOf.apply(this, arguments);\n\t\treturn loc ? loc.getOffset() : null;\n\t},\n\n\tgetLocationAt: function(offset) {\n\t\tif (typeof offset === 'number') {\n\t\t\tvar curves = this.getCurves(),\n\t\t\t\tlength = 0;\n\t\t\tfor (var i = 0, l = curves.length; i < l; i++) {\n\t\t\t\tvar start = length,\n\t\t\t\t\tcurve = curves[i];\n\t\t\t\tlength += curve.getLength();\n\t\t\t\tif (length > offset) {\n\t\t\t\t\treturn curve.getLocationAt(offset - start);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (curves.length > 0 && offset <= this.getLength()) {\n\t\t\t\treturn new CurveLocation(curves[curves.length - 1], 1);\n\t\t\t}\n\t\t} else if (offset && offset.getPath && offset.getPath() === this) {\n\t\t\treturn offset;\n\t\t}\n\t\treturn null;\n\t},\n\n\tgetOffsetsWithTangent: function() {\n\t\tvar tangent = Point.read(arguments);\n\t\tif (tangent.isZero()) {\n\t\t\treturn [];\n\t\t}\n\n\t\tvar offsets = [];\n\t\tvar curveStart = 0;\n\t\tvar curves = this.getCurves();\n\t\tfor (var i = 0, l = curves.length; i < l; i++) {\n\t\t\tvar curve = curves[i];\n\t\t\tvar curveTimes = curve.getTimesWithTangent(tangent);\n\t\t\tfor (var j = 0, m = curveTimes.length; j < m; j++) {\n\t\t\t\tvar offset = curveStart + curve.getOffsetAtTime(curveTimes[j]);\n\t\t\t\tif (offsets.indexOf(offset) < 0) {\n\t\t\t\t\toffsets.push(offset);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurveStart += curve.length;\n\t\t}\n\t\treturn offsets;\n\t}\n}),\nnew function() {\n\n\tfunction drawHandles(ctx, segments, matrix, size, isFullySelected) {\n\t\tif (size <= 0) return;\n\n\t\tvar half = size / 2,\n\t\t\tcoords = new Array(6),\n\t\t\tpX, pY;\n\n\t\tfunction drawHandle(index) {\n\t\t\tvar hX = coords[index],\n\t\t\t\thY = coords[index + 1];\n\t\t\tif (pX != hX || pY != hY) {\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(pX, pY);\n\t\t\t\tctx.lineTo(hX, hY);\n\t\t\t\tctx.moveTo(hX - half, hY);\n\t\t\t\tctx.lineTo(hX, hY + half);\n\t\t\t\tctx.lineTo(hX + half, hY);\n\t\t\t\tctx.lineTo(hX, hY - half);\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0, l = segments.length; i < l; i++) {\n\t\t\tvar segment = segments[i],\n\t\t\t\tselection = segment._selection;\n\t\t\tsegment._transformCoordinates(matrix, coords);\n\t\t\tpX = coords[0];\n\t\t\tpY = coords[1];\n\t\t\tif (selection & 2 && !isFullySelected)\n\t\t\t\tdrawHandle(2);\n\t\t\tif (selection & 4 && !isFullySelected)\n\t\t\t\tdrawHandle(4);\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(pX, pY, half, 0, Math.PI * 2, true);\n\t\t\tctx.stroke();\n\t\t\tvar fillStyle = ctx.fillStyle;\n\t\t\tif (!(selection & 1)) {\n\t\t\t\tctx.fillStyle = 'rgba(255, 255, 255, 0.5)';\n\t\t\t}\n\t\t\tctx.fill();\n\t\t\tctx.fillStyle = fillStyle;\n\t\t}\n\t}\n\n\tfunction drawSegments(ctx, path, matrix) {\n\t\tvar segments = path._segments,\n\t\t\tlength = segments.length,\n\t\t\tcoords = new Array(6),\n\t\t\tfirst = true,\n\t\t\tcurX, curY,\n\t\t\tprevX, prevY,\n\t\t\tinX, inY,\n\t\t\toutX, outY;\n\n\t\tfunction drawSegment(segment) {\n\t\t\tif (matrix) {\n\t\t\t\tsegment._transformCoordinates(matrix, coords);\n\t\t\t\tcurX = coords[0];\n\t\t\t\tcurY = coords[1];\n\t\t\t} else {\n\t\t\t\tvar point = segment._point;\n\t\t\t\tcurX = point._x;\n\t\t\t\tcurY = point._y;\n\t\t\t}\n\t\t\tif (first) {\n\t\t\t\tctx.moveTo(curX, curY);\n\t\t\t\tfirst = false;\n\t\t\t} else {\n\t\t\t\tif (matrix) {\n\t\t\t\t\tinX = coords[2];\n\t\t\t\t\tinY = coords[3];\n\t\t\t\t} else {\n\t\t\t\t\tvar handle = segment._handleIn;\n\t\t\t\t\tinX = curX + handle._x;\n\t\t\t\t\tinY = curY + handle._y;\n\t\t\t\t}\n\t\t\t\tif (inX === curX && inY === curY\n\t\t\t\t\t\t&& outX === prevX && outY === prevY) {\n\t\t\t\t\tctx.lineTo(curX, curY);\n\t\t\t\t} else {\n\t\t\t\t\tctx.bezierCurveTo(outX, outY, inX, inY, curX, curY);\n\t\t\t\t}\n\t\t\t}\n\t\t\tprevX = curX;\n\t\t\tprevY = curY;\n\t\t\tif (matrix) {\n\t\t\t\toutX = coords[4];\n\t\t\t\toutY = coords[5];\n\t\t\t} else {\n\t\t\t\tvar handle = segment._handleOut;\n\t\t\t\toutX = prevX + handle._x;\n\t\t\t\toutY = prevY + handle._y;\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\tdrawSegment(segments[i]);\n\t\tif (path._closed && length > 0)\n\t\t\tdrawSegment(segments[0]);\n\t}\n\n\treturn {\n\t\t_draw: function(ctx, param, viewMatrix, strokeMatrix) {\n\t\t\tvar dontStart = param.dontStart,\n\t\t\t\tdontPaint = param.dontFinish || param.clip,\n\t\t\t\tstyle = this.getStyle(),\n\t\t\t\thasFill = style.hasFill(),\n\t\t\t\thasStroke = style.hasStroke(),\n\t\t\t\tdashArray = style.getDashArray(),\n\t\t\t\tdashLength = !paper.support.nativeDash && hasStroke\n\t\t\t\t\t\t&& dashArray && dashArray.length;\n\n\t\t\tif (!dontStart)\n\t\t\t\tctx.beginPath();\n\n\t\t\tif (hasFill || hasStroke && !dashLength || dontPaint) {\n\t\t\t\tdrawSegments(ctx, this, strokeMatrix);\n\t\t\t\tif (this._closed)\n\t\t\t\t\tctx.closePath();\n\t\t\t}\n\n\t\t\tfunction getOffset(i) {\n\t\t\t\treturn dashArray[((i % dashLength) + dashLength) % dashLength];\n\t\t\t}\n\n\t\t\tif (!dontPaint && (hasFill || hasStroke)) {\n\t\t\t\tthis._setStyles(ctx, param, viewMatrix, strokeMatrix);\n\t\t\t\tif (hasFill) {\n\t\t\t\t\tctx.fill(style.getFillRule());\n\t\t\t\t\tctx.shadowColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\tif (hasStroke) {\n\t\t\t\t\tif (dashLength) {\n\t\t\t\t\t\tif (!dontStart)\n\t\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\tvar flattener = new PathFlattener(this, 0.25, 32, false,\n\t\t\t\t\t\t\t\tstrokeMatrix),\n\t\t\t\t\t\t\tlength = flattener.length,\n\t\t\t\t\t\t\tfrom = -style.getDashOffset(), to,\n\t\t\t\t\t\t\ti = 0;\n\t\t\t\t\t\tfrom = from % length;\n\t\t\t\t\t\twhile (from > 0) {\n\t\t\t\t\t\t\tfrom -= getOffset(i--) + getOffset(i--);\n\t\t\t\t\t\t}\n\t\t\t\t\t\twhile (from < length) {\n\t\t\t\t\t\t\tto = from + getOffset(i++);\n\t\t\t\t\t\t\tif (from > 0 || to > 0)\n\t\t\t\t\t\t\t\tflattener.drawPart(ctx,\n\t\t\t\t\t\t\t\t\t\tMath.max(from, 0), Math.max(to, 0));\n\t\t\t\t\t\t\tfrom = to + getOffset(i++);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_drawSelected: function(ctx, matrix) {\n\t\t\tctx.beginPath();\n\t\t\tdrawSegments(ctx, this, matrix);\n\t\t\tctx.stroke();\n\t\t\tdrawHandles(ctx, this._segments, matrix, paper.settings.handleSize,\n\t\t\t\tthis.isFullySelected());\n\t\t}\n\t};\n},\nnew function() {\n\tfunction getCurrentSegment(that) {\n\t\tvar segments = that._segments;\n\t\tif (!segments.length)\n\t\t\tthrow new Error('Use a moveTo() command first');\n\t\treturn segments[segments.length - 1];\n\t}\n\n\treturn {\n\t\tmoveTo: function() {\n\t\t\tvar segments = this._segments;\n\t\t\tif (segments.length === 1)\n\t\t\t\tthis.removeSegment(0);\n\t\t\tif (!segments.length)\n\t\t\t\tthis._add([ new Segment(Point.read(arguments)) ]);\n\t\t},\n\n\t\tmoveBy: function() {\n\t\t\tthrow new Error('moveBy() is unsupported on Path items.');\n\t\t},\n\n\t\tlineTo: function() {\n\t\t\tthis._add([ new Segment(Point.read(arguments)) ]);\n\t\t},\n\n\t\tcubicCurveTo: function() {\n\t\t\tvar args = arguments,\n\t\t\t\thandle1 = Point.read(args),\n\t\t\t\thandle2 = Point.read(args),\n\t\t\t\tto = Point.read(args),\n\t\t\t\tcurrent = getCurrentSegment(this);\n\t\t\tcurrent.setHandleOut(handle1.subtract(current._point));\n\t\t\tthis._add([ new Segment(to, handle2.subtract(to)) ]);\n\t\t},\n\n\t\tquadraticCurveTo: function() {\n\t\t\tvar args = arguments,\n\t\t\t\thandle = Point.read(args),\n\t\t\t\tto = Point.read(args),\n\t\t\t\tcurrent = getCurrentSegment(this)._point;\n\t\t\tthis.cubicCurveTo(\n\t\t\t\thandle.add(current.subtract(handle).multiply(1 / 3)),\n\t\t\t\thandle.add(to.subtract(handle).multiply(1 / 3)),\n\t\t\t\tto\n\t\t\t);\n\t\t},\n\n\t\tcurveTo: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tthrough = Point.read(args),\n\t\t\t\tto = Point.read(args),\n\t\t\t\tt = Base.pick(Base.read(args), 0.5),\n\t\t\t\tt1 = 1 - t,\n\t\t\t\tcurrent = getCurrentSegment(this)._point,\n\t\t\t\thandle = through.subtract(current.multiply(t1 * t1))\n\t\t\t\t\t.subtract(to.multiply(t * t)).divide(2 * t * t1);\n\t\t\tif (handle.isNaN())\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Cannot put a curve through points with parameter = ' + t);\n\t\t\tthis.quadraticCurveTo(handle, to);\n\t\t},\n\n\t\tarcTo: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tabs = Math.abs,\n\t\t\t\tsqrt = Math.sqrt,\n\t\t\t\tcurrent = getCurrentSegment(this),\n\t\t\t\tfrom = current._point,\n\t\t\t\tto = Point.read(args),\n\t\t\t\tthrough,\n\t\t\t\tpeek = Base.peek(args),\n\t\t\t\tclockwise = Base.pick(peek, true),\n\t\t\t\tcenter, extent, vector, matrix;\n\t\t\tif (typeof clockwise === 'boolean') {\n\t\t\t\tvar middle = from.add(to).divide(2),\n\t\t\t\tthrough = middle.add(middle.subtract(from).rotate(\n\t\t\t\t\t\tclockwise ? -90 : 90));\n\t\t\t} else if (Base.remain(args) <= 2) {\n\t\t\t\tthrough = to;\n\t\t\t\tto = Point.read(args);\n\t\t\t} else if (!from.equals(to)) {\n\t\t\t\tvar radius = Size.read(args),\n\t\t\t\t\tisZero = Numerical.isZero;\n\t\t\t\tif (isZero(radius.width) || isZero(radius.height))\n\t\t\t\t\treturn this.lineTo(to);\n\t\t\t\tvar rotation = Base.read(args),\n\t\t\t\t\tclockwise = !!Base.read(args),\n\t\t\t\t\tlarge = !!Base.read(args),\n\t\t\t\t\tmiddle = from.add(to).divide(2),\n\t\t\t\t\tpt = from.subtract(middle).rotate(-rotation),\n\t\t\t\t\tx = pt.x,\n\t\t\t\t\ty = pt.y,\n\t\t\t\t\trx = abs(radius.width),\n\t\t\t\t\try = abs(radius.height),\n\t\t\t\t\trxSq = rx * rx,\n\t\t\t\t\trySq = ry * ry,\n\t\t\t\t\txSq = x * x,\n\t\t\t\t\tySq = y * y;\n\t\t\t\tvar factor = sqrt(xSq / rxSq + ySq / rySq);\n\t\t\t\tif (factor > 1) {\n\t\t\t\t\trx *= factor;\n\t\t\t\t\try *= factor;\n\t\t\t\t\trxSq = rx * rx;\n\t\t\t\t\trySq = ry * ry;\n\t\t\t\t}\n\t\t\t\tfactor = (rxSq * rySq - rxSq * ySq - rySq * xSq) /\n\t\t\t\t\t\t(rxSq * ySq + rySq * xSq);\n\t\t\t\tif (abs(factor) < 1e-12)\n\t\t\t\t\tfactor = 0;\n\t\t\t\tif (factor < 0)\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t'Cannot create an arc with the given arguments');\n\t\t\t\tcenter = new Point(rx * y / ry, -ry * x / rx)\n\t\t\t\t\t\t.multiply((large === clockwise ? -1 : 1) * sqrt(factor))\n\t\t\t\t\t\t.rotate(rotation).add(middle);\n\t\t\t\tmatrix = new Matrix().translate(center).rotate(rotation)\n\t\t\t\t\t\t.scale(rx, ry);\n\t\t\t\tvector = matrix._inverseTransform(from);\n\t\t\t\textent = vector.getDirectedAngle(matrix._inverseTransform(to));\n\t\t\t\tif (!clockwise && extent > 0)\n\t\t\t\t\textent -= 360;\n\t\t\t\telse if (clockwise && extent < 0)\n\t\t\t\t\textent += 360;\n\t\t\t}\n\t\t\tif (through) {\n\t\t\t\tvar l1 = new Line(from.add(through).divide(2),\n\t\t\t\t\t\t\tthrough.subtract(from).rotate(90), true),\n\t\t\t\t\tl2 = new Line(through.add(to).divide(2),\n\t\t\t\t\t\t\tto.subtract(through).rotate(90), true),\n\t\t\t\t\tline = new Line(from, to),\n\t\t\t\t\tthroughSide = line.getSide(through);\n\t\t\t\tcenter = l1.intersect(l2, true);\n\t\t\t\tif (!center) {\n\t\t\t\t\tif (!throughSide)\n\t\t\t\t\t\treturn this.lineTo(to);\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t'Cannot create an arc with the given arguments');\n\t\t\t\t}\n\t\t\t\tvector = from.subtract(center);\n\t\t\t\textent = vector.getDirectedAngle(to.subtract(center));\n\t\t\t\tvar centerSide = line.getSide(center, true);\n\t\t\t\tif (centerSide === 0) {\n\t\t\t\t\textent = throughSide * abs(extent);\n\t\t\t\t} else if (throughSide === centerSide) {\n\t\t\t\t\textent += extent < 0 ? 360 : -360;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (extent) {\n\t\t\t\tvar epsilon = 1e-7,\n\t\t\t\t\text = abs(extent),\n\t\t\t\t\tcount = ext >= 360 ? 4 : Math.ceil((ext - epsilon) / 90),\n\t\t\t\t\tinc = extent / count,\n\t\t\t\t\thalf = inc * Math.PI / 360,\n\t\t\t\t\tz = 4 / 3 * Math.sin(half) / (1 + Math.cos(half)),\n\t\t\t\t\tsegments = [];\n\t\t\t\tfor (var i = 0; i <= count; i++) {\n\t\t\t\t\tvar pt = to,\n\t\t\t\t\t\tout = null;\n\t\t\t\t\tif (i < count) {\n\t\t\t\t\t\tout = vector.rotate(90).multiply(z);\n\t\t\t\t\t\tif (matrix) {\n\t\t\t\t\t\t\tpt = matrix._transformPoint(vector);\n\t\t\t\t\t\t\tout = matrix._transformPoint(vector.add(out))\n\t\t\t\t\t\t\t\t\t.subtract(pt);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpt = center.add(vector);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!i) {\n\t\t\t\t\t\tcurrent.setHandleOut(out);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _in = vector.rotate(-90).multiply(z);\n\t\t\t\t\t\tif (matrix) {\n\t\t\t\t\t\t\t_in = matrix._transformPoint(vector.add(_in))\n\t\t\t\t\t\t\t\t\t.subtract(pt);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsegments.push(new Segment(pt, _in, out));\n\t\t\t\t\t}\n\t\t\t\t\tvector = vector.rotate(inc);\n\t\t\t\t}\n\t\t\t\tthis._add(segments);\n\t\t\t}\n\t\t},\n\n\t\tlineBy: function() {\n\t\t\tvar to = Point.read(arguments),\n\t\t\t\tcurrent = getCurrentSegment(this)._point;\n\t\t\tthis.lineTo(current.add(to));\n\t\t},\n\n\t\tcurveBy: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tthrough = Point.read(args),\n\t\t\t\tto = Point.read(args),\n\t\t\t\tparameter = Base.read(args),\n\t\t\t\tcurrent = getCurrentSegment(this)._point;\n\t\t\tthis.curveTo(current.add(through), current.add(to), parameter);\n\t\t},\n\n\t\tcubicCurveBy: function() {\n\t\t\tvar args = arguments,\n\t\t\t\thandle1 = Point.read(args),\n\t\t\t\thandle2 = Point.read(args),\n\t\t\t\tto = Point.read(args),\n\t\t\t\tcurrent = getCurrentSegment(this)._point;\n\t\t\tthis.cubicCurveTo(current.add(handle1), current.add(handle2),\n\t\t\t\t\tcurrent.add(to));\n\t\t},\n\n\t\tquadraticCurveBy: function() {\n\t\t\tvar args = arguments,\n\t\t\t\thandle = Point.read(args),\n\t\t\t\tto = Point.read(args),\n\t\t\t\tcurrent = getCurrentSegment(this)._point;\n\t\t\tthis.quadraticCurveTo(current.add(handle), current.add(to));\n\t\t},\n\n\t\tarcBy: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tcurrent = getCurrentSegment(this)._point,\n\t\t\t\tpoint = current.add(Point.read(args)),\n\t\t\t\tclockwise = Base.pick(Base.peek(args), true);\n\t\t\tif (typeof clockwise === 'boolean') {\n\t\t\t\tthis.arcTo(point, clockwise);\n\t\t\t} else {\n\t\t\t\tthis.arcTo(point, current.add(Point.read(args)));\n\t\t\t}\n\t\t},\n\n\t\tclosePath: function(tolerance) {\n\t\t\tthis.setClosed(true);\n\t\t\tthis.join(this, tolerance);\n\t\t}\n\t};\n}, {\n\n\t_getBounds: function(matrix, options) {\n\t\tvar method = options.handle\n\t\t\t\t? 'getHandleBounds'\n\t\t\t\t: options.stroke\n\t\t\t\t? 'getStrokeBounds'\n\t\t\t\t: 'getBounds';\n\t\treturn Path[method](this._segments, this._closed, this, matrix, options);\n\t},\n\nstatics: {\n\tgetBounds: function(segments, closed, path, matrix, options, strokePadding) {\n\t\tvar first = segments[0];\n\t\tif (!first)\n\t\t\treturn new Rectangle();\n\t\tvar coords = new Array(6),\n\t\t\tprevCoords = first._transformCoordinates(matrix, new Array(6)),\n\t\t\tmin = prevCoords.slice(0, 2),\n\t\t\tmax = min.slice(),\n\t\t\troots = new Array(2);\n\n\t\tfunction processSegment(segment) {\n\t\t\tsegment._transformCoordinates(matrix, coords);\n\t\t\tfor (var i = 0; i < 2; i++) {\n\t\t\t\tCurve._addBounds(\n\t\t\t\t\tprevCoords[i],\n\t\t\t\t\tprevCoords[i + 4],\n\t\t\t\t\tcoords[i + 2],\n\t\t\t\t\tcoords[i],\n\t\t\t\t\ti, strokePadding ? strokePadding[i] : 0, min, max, roots);\n\t\t\t}\n\t\t\tvar tmp = prevCoords;\n\t\t\tprevCoords = coords;\n\t\t\tcoords = tmp;\n\t\t}\n\n\t\tfor (var i = 1, l = segments.length; i < l; i++)\n\t\t\tprocessSegment(segments[i]);\n\t\tif (closed)\n\t\t\tprocessSegment(first);\n\t\treturn new Rectangle(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n\t},\n\n\tgetStrokeBounds: function(segments, closed, path, matrix, options) {\n\t\tvar style = path.getStyle(),\n\t\t\tstroke = style.hasStroke(),\n\t\t\tstrokeWidth = style.getStrokeWidth(),\n\t\t\tstrokeMatrix = stroke && path._getStrokeMatrix(matrix, options),\n\t\t\tstrokePadding = stroke && Path._getStrokePadding(strokeWidth,\n\t\t\t\tstrokeMatrix),\n\t\t\tbounds = Path.getBounds(segments, closed, path, matrix, options,\n\t\t\t\tstrokePadding);\n\t\tif (!stroke)\n\t\t\treturn bounds;\n\t\tvar strokeRadius = strokeWidth / 2,\n\t\t\tjoin = style.getStrokeJoin(),\n\t\t\tcap = style.getStrokeCap(),\n\t\t\tmiterLimit = style.getMiterLimit(),\n\t\t\tjoinBounds = new Rectangle(new Size(strokePadding));\n\n\t\tfunction addPoint(point) {\n\t\t\tbounds = bounds.include(point);\n\t\t}\n\n\t\tfunction addRound(segment) {\n\t\t\tbounds = bounds.unite(\n\t\t\t\t\tjoinBounds.setCenter(segment._point.transform(matrix)));\n\t\t}\n\n\t\tfunction addJoin(segment, join) {\n\t\t\tif (join === 'round' || segment.isSmooth()) {\n\t\t\t\taddRound(segment);\n\t\t\t} else {\n\t\t\t\tPath._addBevelJoin(segment, join, strokeRadius, miterLimit,\n\t\t\t\t\t\tmatrix, strokeMatrix, addPoint);\n\t\t\t}\n\t\t}\n\n\t\tfunction addCap(segment, cap) {\n\t\t\tif (cap === 'round') {\n\t\t\t\taddRound(segment);\n\t\t\t} else {\n\t\t\t\tPath._addSquareCap(segment, cap, strokeRadius, matrix,\n\t\t\t\t\t\tstrokeMatrix, addPoint);\n\t\t\t}\n\t\t}\n\n\t\tvar length = segments.length - (closed ? 0 : 1);\n\t\tif (length > 0) {\n\t\t\tfor (var i = 1; i < length; i++) {\n\t\t\t\taddJoin(segments[i], join);\n\t\t\t}\n\t\t\tif (closed) {\n\t\t\t\taddJoin(segments[0], join);\n\t\t\t} else {\n\t\t\t\taddCap(segments[0], cap);\n\t\t\t\taddCap(segments[segments.length - 1], cap);\n\t\t\t}\n\t\t}\n\t\treturn bounds;\n\t},\n\n\t_getStrokePadding: function(radius, matrix) {\n\t\tif (!matrix)\n\t\t\treturn [radius, radius];\n\t\tvar hor = new Point(radius, 0).transform(matrix),\n\t\t\tver = new Point(0, radius).transform(matrix),\n\t\t\tphi = hor.getAngleInRadians(),\n\t\t\ta = hor.getLength(),\n\t\t\tb = ver.getLength();\n\t\tvar sin = Math.sin(phi),\n\t\t\tcos = Math.cos(phi),\n\t\t\ttan = Math.tan(phi),\n\t\t\ttx = Math.atan2(b * tan, a),\n\t\t\tty = Math.atan2(b, tan * a);\n\t\treturn [Math.abs(a * Math.cos(tx) * cos + b * Math.sin(tx) * sin),\n\t\t\t\tMath.abs(b * Math.sin(ty) * cos + a * Math.cos(ty) * sin)];\n\t},\n\n\t_addBevelJoin: function(segment, join, radius, miterLimit, matrix,\n\t\t\tstrokeMatrix, addPoint, isArea) {\n\t\tvar curve2 = segment.getCurve(),\n\t\t\tcurve1 = curve2.getPrevious(),\n\t\t\tpoint = curve2.getPoint1().transform(matrix),\n\t\t\tnormal1 = curve1.getNormalAtTime(1).multiply(radius)\n\t\t\t\t.transform(strokeMatrix),\n\t\t\tnormal2 = curve2.getNormalAtTime(0).multiply(radius)\n\t\t\t\t.transform(strokeMatrix),\n\t\t\t\tangle = normal1.getDirectedAngle(normal2);\n\t\tif (angle < 0 || angle >= 180) {\n\t\t\tnormal1 = normal1.negate();\n\t\t\tnormal2 = normal2.negate();\n\t\t}\n\t\tif (isArea)\n\t\t\taddPoint(point);\n\t\taddPoint(point.add(normal1));\n\t\tif (join === 'miter') {\n\t\t\tvar corner = new Line(point.add(normal1),\n\t\t\t\t\tnew Point(-normal1.y, normal1.x), true\n\t\t\t\t).intersect(new Line(point.add(normal2),\n\t\t\t\t\tnew Point(-normal2.y, normal2.x), true\n\t\t\t\t), true);\n\t\t\tif (corner && point.getDistance(corner) <= miterLimit * radius) {\n\t\t\t\taddPoint(corner);\n\t\t\t}\n\t\t}\n\t\taddPoint(point.add(normal2));\n\t},\n\n\t_addSquareCap: function(segment, cap, radius, matrix, strokeMatrix,\n\t\t\taddPoint, isArea) {\n\t\tvar point = segment._point.transform(matrix),\n\t\t\tloc = segment.getLocation(),\n\t\t\tnormal = loc.getNormal()\n\t\t\t\t\t.multiply(loc.getTime() === 0 ? radius : -radius)\n\t\t\t\t\t.transform(strokeMatrix);\n\t\tif (cap === 'square') {\n\t\t\tif (isArea) {\n\t\t\t\taddPoint(point.subtract(normal));\n\t\t\t\taddPoint(point.add(normal));\n\t\t\t}\n\t\t\tpoint = point.add(normal.rotate(-90));\n\t\t}\n\t\taddPoint(point.add(normal));\n\t\taddPoint(point.subtract(normal));\n\t},\n\n\tgetHandleBounds: function(segments, closed, path, matrix, options) {\n\t\tvar style = path.getStyle(),\n\t\t\tstroke = options.stroke && style.hasStroke(),\n\t\t\tstrokePadding,\n\t\t\tjoinPadding;\n\t\tif (stroke) {\n\t\t\tvar strokeMatrix = path._getStrokeMatrix(matrix, options),\n\t\t\t\tstrokeRadius = style.getStrokeWidth() / 2,\n\t\t\t\tjoinRadius = strokeRadius;\n\t\t\tif (style.getStrokeJoin() === 'miter')\n\t\t\t\tjoinRadius = strokeRadius * style.getMiterLimit();\n\t\t\tif (style.getStrokeCap() === 'square')\n\t\t\t\tjoinRadius = Math.max(joinRadius, strokeRadius * Math.SQRT2);\n\t\t\tstrokePadding = Path._getStrokePadding(strokeRadius, strokeMatrix);\n\t\t\tjoinPadding = Path._getStrokePadding(joinRadius, strokeMatrix);\n\t\t}\n\t\tvar coords = new Array(6),\n\t\t\tx1 = Infinity,\n\t\t\tx2 = -x1,\n\t\t\ty1 = x1,\n\t\t\ty2 = x2;\n\t\tfor (var i = 0, l = segments.length; i < l; i++) {\n\t\t\tvar segment = segments[i];\n\t\t\tsegment._transformCoordinates(matrix, coords);\n\t\t\tfor (var j = 0; j < 6; j += 2) {\n\t\t\t\tvar padding = !j ? joinPadding : strokePadding,\n\t\t\t\t\tpaddingX = padding ? padding[0] : 0,\n\t\t\t\t\tpaddingY = padding ? padding[1] : 0,\n\t\t\t\t\tx = coords[j],\n\t\t\t\t\ty = coords[j + 1],\n\t\t\t\t\txn = x - paddingX,\n\t\t\t\t\txx = x + paddingX,\n\t\t\t\t\tyn = y - paddingY,\n\t\t\t\t\tyx = y + paddingY;\n\t\t\t\tif (xn < x1) x1 = xn;\n\t\t\t\tif (xx > x2) x2 = xx;\n\t\t\t\tif (yn < y1) y1 = yn;\n\t\t\t\tif (yx > y2) y2 = yx;\n\t\t\t}\n\t\t}\n\t\treturn new Rectangle(x1, y1, x2 - x1, y2 - y1);\n\t}\n}});\n\nPath.inject({ statics: new function() {\n\n\tvar kappa = 0.5522847498307936,\n\t\tellipseSegments = [\n\t\t\tnew Segment([-1, 0], [0, kappa ], [0, -kappa]),\n\t\t\tnew Segment([0, -1], [-kappa, 0], [kappa, 0 ]),\n\t\t\tnew Segment([1, 0], [0, -kappa], [0, kappa ]),\n\t\t\tnew Segment([0, 1], [kappa, 0 ], [-kappa, 0])\n\t\t];\n\n\tfunction createPath(segments, closed, args) {\n\t\tvar props = Base.getNamed(args),\n\t\t\tpath = new Path(props && props.insert == false && Item.NO_INSERT);\n\t\tpath._add(segments);\n\t\tpath._closed = closed;\n\t\treturn path.set(props, { insert: true });\n\t}\n\n\tfunction createEllipse(center, radius, args) {\n\t\tvar segments = new Array(4);\n\t\tfor (var i = 0; i < 4; i++) {\n\t\t\tvar segment = ellipseSegments[i];\n\t\t\tsegments[i] = new Segment(\n\t\t\t\tsegment._point.multiply(radius).add(center),\n\t\t\t\tsegment._handleIn.multiply(radius),\n\t\t\t\tsegment._handleOut.multiply(radius)\n\t\t\t);\n\t\t}\n\t\treturn createPath(segments, true, args);\n\t}\n\n\treturn {\n\t\tLine: function() {\n\t\t\tvar args = arguments;\n\t\t\treturn createPath([\n\t\t\t\tnew Segment(Point.readNamed(args, 'from')),\n\t\t\t\tnew Segment(Point.readNamed(args, 'to'))\n\t\t\t], false, args);\n\t\t},\n\n\t\tCircle: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tcenter = Point.readNamed(args, 'center'),\n\t\t\t\tradius = Base.readNamed(args, 'radius');\n\t\t\treturn createEllipse(center, new Size(radius), args);\n\t\t},\n\n\t\tRectangle: function() {\n\t\t\tvar args = arguments,\n\t\t\t\trect = Rectangle.readNamed(args, 'rectangle'),\n\t\t\t\tradius = Size.readNamed(args, 'radius', 0,\n\t\t\t\t\t\t{ readNull: true }),\n\t\t\t\tbl = rect.getBottomLeft(true),\n\t\t\t\ttl = rect.getTopLeft(true),\n\t\t\t\ttr = rect.getTopRight(true),\n\t\t\t\tbr = rect.getBottomRight(true),\n\t\t\t\tsegments;\n\t\t\tif (!radius || radius.isZero()) {\n\t\t\t\tsegments = [\n\t\t\t\t\tnew Segment(bl),\n\t\t\t\t\tnew Segment(tl),\n\t\t\t\t\tnew Segment(tr),\n\t\t\t\t\tnew Segment(br)\n\t\t\t\t];\n\t\t\t} else {\n\t\t\t\tradius = Size.min(radius, rect.getSize(true).divide(2));\n\t\t\t\tvar rx = radius.width,\n\t\t\t\t\try = radius.height,\n\t\t\t\t\thx = rx * kappa,\n\t\t\t\t\thy = ry * kappa;\n\t\t\t\tsegments = [\n\t\t\t\t\tnew Segment(bl.add(rx, 0), null, [-hx, 0]),\n\t\t\t\t\tnew Segment(bl.subtract(0, ry), [0, hy]),\n\t\t\t\t\tnew Segment(tl.add(0, ry), null, [0, -hy]),\n\t\t\t\t\tnew Segment(tl.add(rx, 0), [-hx, 0], null),\n\t\t\t\t\tnew Segment(tr.subtract(rx, 0), null, [hx, 0]),\n\t\t\t\t\tnew Segment(tr.add(0, ry), [0, -hy], null),\n\t\t\t\t\tnew Segment(br.subtract(0, ry), null, [0, hy]),\n\t\t\t\t\tnew Segment(br.subtract(rx, 0), [hx, 0])\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn createPath(segments, true, args);\n\t\t},\n\n\t\tRoundRectangle: '#Rectangle',\n\n\t\tEllipse: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tellipse = Shape._readEllipse(args);\n\t\t\treturn createEllipse(ellipse.center, ellipse.radius, args);\n\t\t},\n\n\t\tOval: '#Ellipse',\n\n\t\tArc: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tfrom = Point.readNamed(args, 'from'),\n\t\t\t\tthrough = Point.readNamed(args, 'through'),\n\t\t\t\tto = Point.readNamed(args, 'to'),\n\t\t\t\tprops = Base.getNamed(args),\n\t\t\t\tpath = new Path(props && props.insert == false\n\t\t\t\t\t\t&& Item.NO_INSERT);\n\t\t\tpath.moveTo(from);\n\t\t\tpath.arcTo(through, to);\n\t\t\treturn path.set(props);\n\t\t},\n\n\t\tRegularPolygon: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tcenter = Point.readNamed(args, 'center'),\n\t\t\t\tsides = Base.readNamed(args, 'sides'),\n\t\t\t\tradius = Base.readNamed(args, 'radius'),\n\t\t\t\tstep = 360 / sides,\n\t\t\t\tthree = sides % 3 === 0,\n\t\t\t\tvector = new Point(0, three ? -radius : radius),\n\t\t\t\toffset = three ? -1 : 0.5,\n\t\t\t\tsegments = new Array(sides);\n\t\t\tfor (var i = 0; i < sides; i++)\n\t\t\t\tsegments[i] = new Segment(center.add(\n\t\t\t\t\tvector.rotate((i + offset) * step)));\n\t\t\treturn createPath(segments, true, args);\n\t\t},\n\n\t\tStar: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tcenter = Point.readNamed(args, 'center'),\n\t\t\t\tpoints = Base.readNamed(args, 'points') * 2,\n\t\t\t\tradius1 = Base.readNamed(args, 'radius1'),\n\t\t\t\tradius2 = Base.readNamed(args, 'radius2'),\n\t\t\t\tstep = 360 / points,\n\t\t\t\tvector = new Point(0, -1),\n\t\t\t\tsegments = new Array(points);\n\t\t\tfor (var i = 0; i < points; i++)\n\t\t\t\tsegments[i] = new Segment(center.add(vector.rotate(step * i)\n\t\t\t\t\t\t.multiply(i % 2 ? radius2 : radius1)));\n\t\t\treturn createPath(segments, true, args);\n\t\t}\n\t};\n}});\n\nvar CompoundPath = PathItem.extend({\n\t_class: 'CompoundPath',\n\t_serializeFields: {\n\t\tchildren: []\n\t},\n\tbeans: true,\n\n\tinitialize: function CompoundPath(arg) {\n\t\tthis._children = [];\n\t\tthis._namedChildren = {};\n\t\tif (!this._initialize(arg)) {\n\t\t\tif (typeof arg === 'string') {\n\t\t\t\tthis.setPathData(arg);\n\t\t\t} else {\n\t\t\t\tthis.addChildren(Array.isArray(arg) ? arg : arguments);\n\t\t\t}\n\t\t}\n\t},\n\n\tinsertChildren: function insertChildren(index, items) {\n\t\tvar list = items,\n\t\t\tfirst = list[0];\n\t\tif (first && typeof first[0] === 'number')\n\t\t\tlist = [list];\n\t\tfor (var i = items.length - 1; i >= 0; i--) {\n\t\t\tvar item = list[i];\n\t\t\tif (list === items && !(item instanceof Path))\n\t\t\t\tlist = Base.slice(list);\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\tlist[i] = new Path({ segments: item, insert: false });\n\t\t\t} else if (item instanceof CompoundPath) {\n\t\t\t\tlist.splice.apply(list, [i, 1].concat(item.removeChildren()));\n\t\t\t\titem.remove();\n\t\t\t}\n\t\t}\n\t\treturn insertChildren.base.call(this, index, list);\n\t},\n\n\treduce: function reduce(options) {\n\t\tvar children = this._children;\n\t\tfor (var i = children.length - 1; i >= 0; i--) {\n\t\t\tvar path = children[i].reduce(options);\n\t\t\tif (path.isEmpty())\n\t\t\t\tpath.remove();\n\t\t}\n\t\tif (!children.length) {\n\t\t\tvar path = new Path(Item.NO_INSERT);\n\t\t\tpath.copyAttributes(this);\n\t\t\tpath.insertAbove(this);\n\t\t\tthis.remove();\n\t\t\treturn path;\n\t\t}\n\t\treturn reduce.base.call(this);\n\t},\n\n\tisClosed: function() {\n\t\tvar children = this._children;\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tif (!children[i]._closed)\n\t\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tsetClosed: function(closed) {\n\t\tvar children = this._children;\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tchildren[i].setClosed(closed);\n\t\t}\n\t},\n\n\tgetFirstSegment: function() {\n\t\tvar first = this.getFirstChild();\n\t\treturn first && first.getFirstSegment();\n\t},\n\n\tgetLastSegment: function() {\n\t\tvar last = this.getLastChild();\n\t\treturn last && last.getLastSegment();\n\t},\n\n\tgetCurves: function() {\n\t\tvar children = this._children,\n\t\t\tcurves = [];\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tBase.push(curves, children[i].getCurves());\n\t\t}\n\t\treturn curves;\n\t},\n\n\tgetFirstCurve: function() {\n\t\tvar first = this.getFirstChild();\n\t\treturn first && first.getFirstCurve();\n\t},\n\n\tgetLastCurve: function() {\n\t\tvar last = this.getLastChild();\n\t\treturn last && last.getLastCurve();\n\t},\n\n\tgetArea: function() {\n\t\tvar children = this._children,\n\t\t\tarea = 0;\n\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\tarea += children[i].getArea();\n\t\treturn area;\n\t},\n\n\tgetLength: function() {\n\t\tvar children = this._children,\n\t\t\tlength = 0;\n\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\tlength += children[i].getLength();\n\t\treturn length;\n\t},\n\n\tgetPathData: function(_matrix, _precision) {\n\t\tvar children = this._children,\n\t\t\tpaths = [];\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tvar child = children[i],\n\t\t\t\tmx = child._matrix;\n\t\t\tpaths.push(child.getPathData(_matrix && !mx.isIdentity()\n\t\t\t\t\t? _matrix.appended(mx) : _matrix, _precision));\n\t\t}\n\t\treturn paths.join('');\n\t},\n\n\t_hitTestChildren: function _hitTestChildren(point, options, viewMatrix) {\n\t\treturn _hitTestChildren.base.call(this, point,\n\t\t\t\toptions.class === Path || options.type === 'path' || options.hitUnfilledPaths ? options\n\t\t\t\t\t: Base.set({}, options, { fill: false }),\n\t\t\t\tviewMatrix);\n\t},\n\n\t_draw: function(ctx, param, viewMatrix, strokeMatrix) {\n\t\tvar children = this._children;\n\t\tif (!children.length)\n\t\t\treturn;\n\n\t\tparam = param.extend({ dontStart: true, dontFinish: true });\n\t\tctx.beginPath();\n\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\tchildren[i].draw(ctx, param, strokeMatrix);\n\n\t\tif (!param.clip) {\n\t\t\tthis._setStyles(ctx, param, viewMatrix, strokeMatrix);\n\t\t\tvar style = this._style;\n\t\t\tif (style.hasFill()) {\n\t\t\t\tctx.fill(style.getFillRule());\n\t\t\t\tctx.shadowColor = 'rgba(0,0,0,0)';\n\t\t\t}\n\t\t\tif (style.hasStroke())\n\t\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\t_drawSelected: function(ctx, matrix, selectionItems) {\n\t\tvar children = this._children;\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tvar child = children[i],\n\t\t\t\tmx = child._matrix;\n\t\t\tif (!selectionItems[child._id]) {\n\t\t\t\tchild._drawSelected(ctx, mx.isIdentity() ? matrix\n\t\t\t\t\t\t: matrix.appended(mx));\n\t\t\t}\n\t\t}\n\t}\n},\nnew function() {\n\tfunction getCurrentPath(that, check) {\n\t\tvar children = that._children;\n\t\tif (check && !children.length)\n\t\t\tthrow new Error('Use a moveTo() command first');\n\t\treturn children[children.length - 1];\n\t}\n\n\treturn Base.each(['lineTo', 'cubicCurveTo', 'quadraticCurveTo', 'curveTo',\n\t\t\t'arcTo', 'lineBy', 'cubicCurveBy', 'quadraticCurveBy', 'curveBy',\n\t\t\t'arcBy'],\n\t\tfunction(key) {\n\t\t\tthis[key] = function() {\n\t\t\t\tvar path = getCurrentPath(this, true);\n\t\t\t\tpath[key].apply(path, arguments);\n\t\t\t};\n\t\t}, {\n\t\t\tmoveTo: function() {\n\t\t\t\tvar current = getCurrentPath(this),\n\t\t\t\t\tpath = current && current.isEmpty() ? current\n\t\t\t\t\t\t\t: new Path(Item.NO_INSERT);\n\t\t\t\tif (path !== current)\n\t\t\t\t\tthis.addChild(path);\n\t\t\t\tpath.moveTo.apply(path, arguments);\n\t\t\t},\n\n\t\t\tmoveBy: function() {\n\t\t\t\tvar current = getCurrentPath(this, true),\n\t\t\t\t\tlast = current && current.getLastSegment(),\n\t\t\t\t\tpoint = Point.read(arguments);\n\t\t\t\tthis.moveTo(last ? point.add(last._point) : point);\n\t\t\t},\n\n\t\t\tclosePath: function(tolerance) {\n\t\t\t\tgetCurrentPath(this, true).closePath(tolerance);\n\t\t\t}\n\t\t}\n\t);\n}, Base.each(['reverse', 'flatten', 'simplify', 'smooth'], function(key) {\n\tthis[key] = function(param) {\n\t\tvar children = this._children,\n\t\t\tres;\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tres = children[i][key](param) || res;\n\t\t}\n\t\treturn res;\n\t};\n}, {}));\n\nPathItem.inject(new function() {\n\tvar min = Math.min,\n\t\tmax = Math.max,\n\t\tabs = Math.abs,\n\t\toperators = {\n\t\t\tunite:     { '1': true, '2': true },\n\t\t\tintersect: { '2': true },\n\t\t\tsubtract:  { '1': true },\n\t\t\texclude:   { '1': true, '-1': true }\n\t\t};\n\n\tfunction getPaths(path) {\n\t\treturn path._children || [path];\n\t}\n\n\tfunction preparePath(path, resolve) {\n\t\tvar res = path\n\t\t\t.clone(false)\n\t\t\t.reduce({ simplify: true })\n\t\t\t.transform(null, true, true);\n\t\tif (resolve) {\n\t\t\tvar paths = getPaths(res);\n\t\t\tfor (var i = 0, l = paths.length; i < l; i++) {\n\t\t\t\tvar path = paths[i];\n\t\t\t\tif (!path._closed && !path.isEmpty()) {\n\t\t\t\t\tpath.closePath(1e-12);\n\t\t\t\t\tpath.getFirstSegment().setHandleIn(0, 0);\n\t\t\t\t\tpath.getLastSegment().setHandleOut(0, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t\tres = res\n\t\t\t\t.resolveCrossings()\n\t\t\t\t.reorient(res.getFillRule() === 'nonzero', true);\n\t\t}\n\t\treturn res;\n\t}\n\n\tfunction createResult(paths, simplify, path1, path2, options) {\n\t\tvar result = new CompoundPath(Item.NO_INSERT);\n\t\tresult.addChildren(paths, true);\n\t\tresult = result.reduce({ simplify: simplify });\n\t\tif (!(options && options.insert == false)) {\n\t\t\tresult.insertAbove(path2 && path1.isSibling(path2)\n\t\t\t\t\t&& path1.getIndex() < path2.getIndex() ? path2 : path1);\n\t\t}\n\t\tresult.copyAttributes(path1, true);\n\t\treturn result;\n\t}\n\n\tfunction filterIntersection(inter) {\n\t\treturn inter.hasOverlap() || inter.isCrossing();\n\t}\n\n\tfunction traceBoolean(path1, path2, operation, options) {\n\t\tif (options && (options.trace == false || options.stroke) &&\n\t\t\t\t/^(subtract|intersect)$/.test(operation))\n\t\t\treturn splitBoolean(path1, path2, operation);\n\t\tvar _path1 = preparePath(path1, true),\n\t\t\t_path2 = path2 && path1 !== path2 && preparePath(path2, true),\n\t\t\toperator = operators[operation];\n\t\toperator[operation] = true;\n\t\tif (_path2 && (operator.subtract || operator.exclude)\n\t\t\t\t^ (_path2.isClockwise() ^ _path1.isClockwise()))\n\t\t\t_path2.reverse();\n\t\tvar crossings = divideLocations(CurveLocation.expand(\n\t\t\t\t_path1.getIntersections(_path2, filterIntersection))),\n\t\t\tpaths1 = getPaths(_path1),\n\t\t\tpaths2 = _path2 && getPaths(_path2),\n\t\t\tsegments = [],\n\t\t\tcurves = [],\n\t\t\tpaths;\n\n\t\tfunction collectPaths(paths) {\n\t\t\tfor (var i = 0, l = paths.length; i < l; i++) {\n\t\t\t\tvar path = paths[i];\n\t\t\t\tBase.push(segments, path._segments);\n\t\t\t\tBase.push(curves, path.getCurves());\n\t\t\t\tpath._overlapsOnly = true;\n\t\t\t}\n\t\t}\n\n\t\tfunction getCurves(indices) {\n\t\t\tvar list = [];\n\t\t\tfor (var i = 0, l = indices && indices.length; i < l; i++) {\n\t\t\t\tlist.push(curves[indices[i]]);\n\t\t\t}\n\t\t\treturn list;\n\t\t}\n\n\t\tif (crossings.length) {\n\t\t\tcollectPaths(paths1);\n\t\t\tif (paths2)\n\t\t\t\tcollectPaths(paths2);\n\n\t\t\tvar curvesValues = new Array(curves.length);\n\t\t\tfor (var i = 0, l = curves.length; i < l; i++) {\n\t\t\t\tcurvesValues[i] = curves[i].getValues();\n\t\t\t}\n\t\t\tvar curveCollisions = CollisionDetection.findCurveBoundsCollisions(\n\t\t\t\t\tcurvesValues, curvesValues, 0, true);\n\t\t\tvar curveCollisionsMap = {};\n\t\t\tfor (var i = 0; i < curves.length; i++) {\n\t\t\t\tvar curve = curves[i],\n\t\t\t\t\tid = curve._path._id,\n\t\t\t\t\tmap = curveCollisionsMap[id] = curveCollisionsMap[id] || {};\n\t\t\t\tmap[curve.getIndex()] = {\n\t\t\t\t\thor: getCurves(curveCollisions[i].hor),\n\t\t\t\t\tver: getCurves(curveCollisions[i].ver)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tfor (var i = 0, l = crossings.length; i < l; i++) {\n\t\t\t\tpropagateWinding(crossings[i]._segment, _path1, _path2,\n\t\t\t\t\t\tcurveCollisionsMap, operator);\n\t\t\t}\n\t\t\tfor (var i = 0, l = segments.length; i < l; i++) {\n\t\t\t\tvar segment = segments[i],\n\t\t\t\t\tinter = segment._intersection;\n\t\t\t\tif (!segment._winding) {\n\t\t\t\t\tpropagateWinding(segment, _path1, _path2,\n\t\t\t\t\t\t\tcurveCollisionsMap, operator);\n\t\t\t\t}\n\t\t\t\tif (!(inter && inter._overlap))\n\t\t\t\t\tsegment._path._overlapsOnly = false;\n\t\t\t}\n\t\t\tpaths = tracePaths(segments, operator);\n\t\t} else {\n\t\t\tpaths = reorientPaths(\n\t\t\t\t\tpaths2 ? paths1.concat(paths2) : paths1.slice(),\n\t\t\t\t\tfunction(w) {\n\t\t\t\t\t\treturn !!operator[w];\n\t\t\t\t\t});\n\t\t}\n\t\treturn createResult(paths, true, path1, path2, options);\n\t}\n\n\tfunction splitBoolean(path1, path2, operation) {\n\t\tvar _path1 = preparePath(path1),\n\t\t\t_path2 = preparePath(path2),\n\t\t\tcrossings = _path1.getIntersections(_path2, filterIntersection),\n\t\t\tsubtract = operation === 'subtract',\n\t\t\tdivide = operation === 'divide',\n\t\t\tadded = {},\n\t\t\tpaths = [];\n\n\t\tfunction addPath(path) {\n\t\t\tif (!added[path._id] && (divide ||\n\t\t\t\t\t_path2.contains(path.getPointAt(path.getLength() / 2))\n\t\t\t\t\t\t^ subtract)) {\n\t\t\t\tpaths.unshift(path);\n\t\t\t\treturn added[path._id] = true;\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = crossings.length - 1; i >= 0; i--) {\n\t\t\tvar path = crossings[i].split();\n\t\t\tif (path) {\n\t\t\t\tif (addPath(path))\n\t\t\t\t\tpath.getFirstSegment().setHandleIn(0, 0);\n\t\t\t\t_path1.getLastSegment().setHandleOut(0, 0);\n\t\t\t}\n\t\t}\n\t\taddPath(_path1);\n\t\treturn createResult(paths, false, path1, path2);\n\t}\n\n\tfunction linkIntersections(from, to) {\n\t\tvar prev = from;\n\t\twhile (prev) {\n\t\t\tif (prev === to)\n\t\t\t\treturn;\n\t\t\tprev = prev._previous;\n\t\t}\n\t\twhile (from._next && from._next !== to)\n\t\t\tfrom = from._next;\n\t\tif (!from._next) {\n\t\t\twhile (to._previous)\n\t\t\t\tto = to._previous;\n\t\t\tfrom._next = to;\n\t\t\tto._previous = from;\n\t\t}\n\t}\n\n\tfunction clearCurveHandles(curves) {\n\t\tfor (var i = curves.length - 1; i >= 0; i--)\n\t\t\tcurves[i].clearHandles();\n\t}\n\n\tfunction reorientPaths(paths, isInside, clockwise) {\n\t\tvar length = paths && paths.length;\n\t\tif (length) {\n\t\t\tvar lookup = Base.each(paths, function (path, i) {\n\t\t\t\t\tthis[path._id] = {\n\t\t\t\t\t\tcontainer: null,\n\t\t\t\t\t\twinding: path.isClockwise() ? 1 : -1,\n\t\t\t\t\t\tindex: i\n\t\t\t\t\t};\n\t\t\t\t}, {}),\n\t\t\t\tsorted = paths.slice().sort(function (a, b) {\n\t\t\t\t\treturn abs(b.getArea()) - abs(a.getArea());\n\t\t\t\t}),\n\t\t\t\tfirst = sorted[0];\n\t\t\tvar collisions = CollisionDetection.findItemBoundsCollisions(sorted,\n\t\t\t\t\tnull, Numerical.GEOMETRIC_EPSILON);\n\t\t\tif (clockwise == null)\n\t\t\t\tclockwise = first.isClockwise();\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tvar path1 = sorted[i],\n\t\t\t\t\tentry1 = lookup[path1._id],\n\t\t\t\t\tcontainerWinding = 0,\n\t\t\t\t\tindices = collisions[i];\n\t\t\t\tif (indices) {\n\t\t\t\t\tvar point = null;\n\t\t\t\t\tfor (var j = indices.length - 1; j >= 0; j--) {\n\t\t\t\t\t\tif (indices[j] < i) {\n\t\t\t\t\t\t\tpoint = point || path1.getInteriorPoint();\n\t\t\t\t\t\t\tvar path2 = sorted[indices[j]];\n\t\t\t\t\t\t\tif (path2.contains(point)) {\n\t\t\t\t\t\t\t\tvar entry2 = lookup[path2._id];\n\t\t\t\t\t\t\t\tcontainerWinding = entry2.winding;\n\t\t\t\t\t\t\t\tentry1.winding += containerWinding;\n\t\t\t\t\t\t\t\tentry1.container = entry2.exclude\n\t\t\t\t\t\t\t\t\t? entry2.container : path2;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isInside(entry1.winding) === isInside(containerWinding)) {\n\t\t\t\t\tentry1.exclude = true;\n\t\t\t\t\tpaths[entry1.index] = null;\n\t\t\t\t} else {\n\t\t\t\t\tvar container = entry1.container;\n\t\t\t\t\tpath1.setClockwise(\n\t\t\t\t\t\t\tcontainer ? !container.isClockwise() : clockwise);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn paths;\n\t}\n\n\tfunction divideLocations(locations, include, clearLater) {\n\t\tvar results = include && [],\n\t\t\ttMin = 1e-8,\n\t\t\ttMax = 1 - tMin,\n\t\t\tclearHandles = false,\n\t\t\tclearCurves = clearLater || [],\n\t\t\tclearLookup = clearLater && {},\n\t\t\trenormalizeLocs,\n\t\t\tprevCurve,\n\t\t\tprevTime;\n\n\t\tfunction getId(curve) {\n\t\t\treturn curve._path._id + '.' + curve._segment1._index;\n\t\t}\n\n\t\tfor (var i = (clearLater && clearLater.length) - 1; i >= 0; i--) {\n\t\t\tvar curve = clearLater[i];\n\t\t\tif (curve._path)\n\t\t\t\tclearLookup[getId(curve)] = true;\n\t\t}\n\n\t\tfor (var i = locations.length - 1; i >= 0; i--) {\n\t\t\tvar loc = locations[i],\n\t\t\t\ttime = loc._time,\n\t\t\t\torigTime = time,\n\t\t\t\texclude = include && !include(loc),\n\t\t\t\tcurve = loc._curve,\n\t\t\t\tsegment;\n\t\t\tif (curve) {\n\t\t\t\tif (curve !== prevCurve) {\n\t\t\t\t\tclearHandles = !curve.hasHandles()\n\t\t\t\t\t\t\t|| clearLookup && clearLookup[getId(curve)];\n\t\t\t\t\trenormalizeLocs = [];\n\t\t\t\t\tprevTime = null;\n\t\t\t\t\tprevCurve = curve;\n\t\t\t\t} else if (prevTime >= tMin) {\n\t\t\t\t\ttime /= prevTime;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (exclude) {\n\t\t\t\tif (renormalizeLocs)\n\t\t\t\t\trenormalizeLocs.push(loc);\n\t\t\t\tcontinue;\n\t\t\t} else if (include) {\n\t\t\t\tresults.unshift(loc);\n\t\t\t}\n\t\t\tprevTime = origTime;\n\t\t\tif (time < tMin) {\n\t\t\t\tsegment = curve._segment1;\n\t\t\t} else if (time > tMax) {\n\t\t\t\tsegment = curve._segment2;\n\t\t\t} else {\n\t\t\t\tvar newCurve = curve.divideAtTime(time, true);\n\t\t\t\tif (clearHandles)\n\t\t\t\t\tclearCurves.push(curve, newCurve);\n\t\t\t\tsegment = newCurve._segment1;\n\t\t\t\tfor (var j = renormalizeLocs.length - 1; j >= 0; j--) {\n\t\t\t\t\tvar l = renormalizeLocs[j];\n\t\t\t\t\tl._time = (l._time - time) / (1 - time);\n\t\t\t\t}\n\t\t\t}\n\t\t\tloc._setSegment(segment);\n\t\t\tvar inter = segment._intersection,\n\t\t\t\tdest = loc._intersection;\n\t\t\tif (inter) {\n\t\t\t\tlinkIntersections(inter, dest);\n\t\t\t\tvar other = inter;\n\t\t\t\twhile (other) {\n\t\t\t\t\tlinkIntersections(other._intersection, inter);\n\t\t\t\t\tother = other._next;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsegment._intersection = dest;\n\t\t\t}\n\t\t}\n\t\tif (!clearLater)\n\t\t\tclearCurveHandles(clearCurves);\n\t\treturn results || locations;\n\t}\n\n\tfunction getWinding(point, curves, dir, closed, dontFlip) {\n\t\tvar curvesList = Array.isArray(curves)\n\t\t\t? curves\n\t\t\t: curves[dir ? 'hor' : 'ver'];\n\t\tvar ia = dir ? 1 : 0,\n\t\t\tio = ia ^ 1,\n\t\t\tpv = [point.x, point.y],\n\t\t\tpa = pv[ia],\n\t\t\tpo = pv[io],\n\t\t\twindingEpsilon = 1e-9,\n\t\t\tqualityEpsilon = 1e-6,\n\t\t\tpaL = pa - windingEpsilon,\n\t\t\tpaR = pa + windingEpsilon,\n\t\t\twindingL = 0,\n\t\t\twindingR = 0,\n\t\t\tpathWindingL = 0,\n\t\t\tpathWindingR = 0,\n\t\t\tonPath = false,\n\t\t\tonAnyPath = false,\n\t\t\tquality = 1,\n\t\t\troots = [],\n\t\t\tvPrev,\n\t\t\tvClose;\n\n\t\tfunction addWinding(v) {\n\t\t\tvar o0 = v[io + 0],\n\t\t\t\to3 = v[io + 6];\n\t\t\tif (po < min(o0, o3) || po > max(o0, o3)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar a0 = v[ia + 0],\n\t\t\t\ta1 = v[ia + 2],\n\t\t\t\ta2 = v[ia + 4],\n\t\t\t\ta3 = v[ia + 6];\n\t\t\tif (o0 === o3) {\n\t\t\t\tif (a0 < paR && a3 > paL || a3 < paR && a0 > paL) {\n\t\t\t\t\tonPath = true;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar t =   po === o0 ? 0\n\t\t\t\t\t: po === o3 ? 1\n\t\t\t\t\t: paL > max(a0, a1, a2, a3) || paR < min(a0, a1, a2, a3)\n\t\t\t\t\t? 1\n\t\t\t\t\t: Curve.solveCubic(v, io, po, roots, 0, 1) > 0\n\t\t\t\t\t\t? roots[0]\n\t\t\t\t\t\t: 1,\n\t\t\t\ta =   t === 0 ? a0\n\t\t\t\t\t: t === 1 ? a3\n\t\t\t\t\t: Curve.getPoint(v, t)[dir ? 'y' : 'x'],\n\t\t\t\twinding = o0 > o3 ? 1 : -1,\n\t\t\t\twindingPrev = vPrev[io] > vPrev[io + 6] ? 1 : -1,\n\t\t\t\ta3Prev = vPrev[ia + 6];\n\t\t\tif (po !== o0) {\n\t\t\t\tif (a < paL) {\n\t\t\t\t\tpathWindingL += winding;\n\t\t\t\t} else if (a > paR) {\n\t\t\t\t\tpathWindingR += winding;\n\t\t\t\t} else {\n\t\t\t\t\tonPath = true;\n\t\t\t\t}\n\t\t\t\tif (a > pa - qualityEpsilon && a < pa + qualityEpsilon)\n\t\t\t\t\tquality /= 2;\n\t\t\t} else {\n\t\t\t\tif (winding !== windingPrev) {\n\t\t\t\t\tif (a0 < paL) {\n\t\t\t\t\t\tpathWindingL += winding;\n\t\t\t\t\t} else if (a0 > paR) {\n\t\t\t\t\t\tpathWindingR += winding;\n\t\t\t\t\t}\n\t\t\t\t} else if (a0 != a3Prev) {\n\t\t\t\t\tif (a3Prev < paR && a > paR) {\n\t\t\t\t\t\tpathWindingR += winding;\n\t\t\t\t\t\tonPath = true;\n\t\t\t\t\t} else if (a3Prev > paL && a < paL) {\n\t\t\t\t\t\tpathWindingL += winding;\n\t\t\t\t\t\tonPath = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tquality /= 4;\n\t\t\t}\n\t\t\tvPrev = v;\n\t\t\treturn !dontFlip && a > paL && a < paR\n\t\t\t\t\t&& Curve.getTangent(v, t)[dir ? 'x' : 'y'] === 0\n\t\t\t\t\t&& getWinding(point, curves, !dir, closed, true);\n\t\t}\n\n\t\tfunction handleCurve(v) {\n\t\t\tvar o0 = v[io + 0],\n\t\t\t\to1 = v[io + 2],\n\t\t\t\to2 = v[io + 4],\n\t\t\t\to3 = v[io + 6];\n\t\t\tif (po <= max(o0, o1, o2, o3) && po >= min(o0, o1, o2, o3)) {\n\t\t\t\tvar a0 = v[ia + 0],\n\t\t\t\t\ta1 = v[ia + 2],\n\t\t\t\t\ta2 = v[ia + 4],\n\t\t\t\t\ta3 = v[ia + 6],\n\t\t\t\t\tmonoCurves = paL > max(a0, a1, a2, a3) ||\n\t\t\t\t\t\t\t\t paR < min(a0, a1, a2, a3)\n\t\t\t\t\t\t\t? [v] : Curve.getMonoCurves(v, dir),\n\t\t\t\t\tres;\n\t\t\t\tfor (var i = 0, l = monoCurves.length; i < l; i++) {\n\t\t\t\t\tif (res = addWinding(monoCurves[i]))\n\t\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0, l = curvesList.length; i < l; i++) {\n\t\t\tvar curve = curvesList[i],\n\t\t\t\tpath = curve._path,\n\t\t\t\tv = curve.getValues(),\n\t\t\t\tres;\n\t\t\tif (!i || curvesList[i - 1]._path !== path) {\n\t\t\t\tvPrev = null;\n\t\t\t\tif (!path._closed) {\n\t\t\t\t\tvClose = Curve.getValues(\n\t\t\t\t\t\t\tpath.getLastCurve().getSegment2(),\n\t\t\t\t\t\t\tcurve.getSegment1(),\n\t\t\t\t\t\t\tnull, !closed);\n\t\t\t\t\tif (vClose[io] !== vClose[io + 6]) {\n\t\t\t\t\t\tvPrev = vClose;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!vPrev) {\n\t\t\t\t\tvPrev = v;\n\t\t\t\t\tvar prev = path.getLastCurve();\n\t\t\t\t\twhile (prev && prev !== curve) {\n\t\t\t\t\t\tvar v2 = prev.getValues();\n\t\t\t\t\t\tif (v2[io] !== v2[io + 6]) {\n\t\t\t\t\t\t\tvPrev = v2;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprev = prev.getPrevious();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (res = handleCurve(v))\n\t\t\t\treturn res;\n\n\t\t\tif (i + 1 === l || curvesList[i + 1]._path !== path) {\n\t\t\t\tif (vClose && (res = handleCurve(vClose)))\n\t\t\t\t\treturn res;\n\t\t\t\tif (onPath && !pathWindingL && !pathWindingR) {\n\t\t\t\t\tpathWindingL = pathWindingR = path.isClockwise(closed) ^ dir\n\t\t\t\t\t\t\t? 1 : -1;\n\t\t\t\t}\n\t\t\t\twindingL += pathWindingL;\n\t\t\t\twindingR += pathWindingR;\n\t\t\t\tpathWindingL = pathWindingR = 0;\n\t\t\t\tif (onPath) {\n\t\t\t\t\tonAnyPath = true;\n\t\t\t\t\tonPath = false;\n\t\t\t\t}\n\t\t\t\tvClose = null;\n\t\t\t}\n\t\t}\n\t\twindingL = abs(windingL);\n\t\twindingR = abs(windingR);\n\t\treturn {\n\t\t\twinding: max(windingL, windingR),\n\t\t\twindingL: windingL,\n\t\t\twindingR: windingR,\n\t\t\tquality: quality,\n\t\t\tonPath: onAnyPath\n\t\t};\n\t}\n\n\tfunction propagateWinding(segment, path1, path2, curveCollisionsMap,\n\t\t\toperator) {\n\t\tvar chain = [],\n\t\t\tstart = segment,\n\t\t\ttotalLength = 0,\n\t\t\twinding;\n\t\tdo {\n\t\t\tvar curve = segment.getCurve();\n\t\t\tif (curve) {\n\t\t\t\tvar length = curve.getLength();\n\t\t\t\tchain.push({ segment: segment, curve: curve, length: length });\n\t\t\t\ttotalLength += length;\n\t\t\t}\n\t\t\tsegment = segment.getNext();\n\t\t} while (segment && !segment._intersection && segment !== start);\n\t\tvar offsets = [0.5, 0.25, 0.75],\n\t\t\twinding = { winding: 0, quality: -1 },\n\t\t\ttMin = 1e-3,\n\t\t\ttMax = 1 - tMin;\n\t\tfor (var i = 0; i < offsets.length && winding.quality < 0.5; i++) {\n\t\t\tvar length = totalLength * offsets[i];\n\t\t\tfor (var j = 0, l = chain.length; j < l; j++) {\n\t\t\t\tvar entry = chain[j],\n\t\t\t\t\tcurveLength = entry.length;\n\t\t\t\tif (length <= curveLength) {\n\t\t\t\t\tvar curve = entry.curve,\n\t\t\t\t\t\tpath = curve._path,\n\t\t\t\t\t\tparent = path._parent,\n\t\t\t\t\t\toperand = parent instanceof CompoundPath ? parent : path,\n\t\t\t\t\t\tt = Numerical.clamp(curve.getTimeAt(length), tMin, tMax),\n\t\t\t\t\t\tpt = curve.getPointAtTime(t),\n\t\t\t\t\t\tdir = abs(curve.getTangentAtTime(t).y) < Math.SQRT1_2;\n\t\t\t\t\tvar wind = null;\n\t\t\t\t\tif (operator.subtract && path2) {\n\t\t\t\t\t\tvar otherPath = operand === path1 ? path2 : path1,\n\t\t\t\t\t\t\tpathWinding = otherPath._getWinding(pt, dir, true);\n\t\t\t\t\t\tif (operand === path1 && pathWinding.winding ||\n\t\t\t\t\t\t\toperand === path2 && !pathWinding.winding) {\n\t\t\t\t\t\t\tif (pathWinding.quality < 1) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twind = { winding: 0, quality: 1 };\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\twind =  wind || getWinding(\n\t\t\t\t\t\t\tpt, curveCollisionsMap[path._id][curve.getIndex()],\n\t\t\t\t\t\t\tdir, true);\n\t\t\t\t\tif (wind.quality > winding.quality)\n\t\t\t\t\t\twinding = wind;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlength -= curveLength;\n\t\t\t}\n\t\t}\n\t\tfor (var j = chain.length - 1; j >= 0; j--) {\n\t\t\tchain[j].segment._winding = winding;\n\t\t}\n\t}\n\n\tfunction tracePaths(segments, operator) {\n\t\tvar paths = [],\n\t\t\tstarts;\n\n\t\tfunction isValid(seg) {\n\t\t\tvar winding;\n\t\t\treturn !!(seg && !seg._visited && (!operator\n\t\t\t\t\t|| operator[(winding = seg._winding || {}).winding]\n\t\t\t\t\t\t&& !(operator.unite && winding.winding === 2\n\t\t\t\t\t\t\t&& winding.windingL && winding.windingR)));\n\t\t}\n\n\t\tfunction isStart(seg) {\n\t\t\tif (seg) {\n\t\t\t\tfor (var i = 0, l = starts.length; i < l; i++) {\n\t\t\t\t\tif (seg === starts[i])\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction visitPath(path) {\n\t\t\tvar segments = path._segments;\n\t\t\tfor (var i = 0, l = segments.length; i < l; i++) {\n\t\t\t\tsegments[i]._visited = true;\n\t\t\t}\n\t\t}\n\n\t\tfunction getCrossingSegments(segment, collectStarts) {\n\t\t\tvar inter = segment._intersection,\n\t\t\t\tstart = inter,\n\t\t\t\tcrossings = [];\n\t\t\tif (collectStarts)\n\t\t\t\tstarts = [segment];\n\n\t\t\tfunction collect(inter, end) {\n\t\t\t\twhile (inter && inter !== end) {\n\t\t\t\t\tvar other = inter._segment,\n\t\t\t\t\t\tpath = other && other._path;\n\t\t\t\t\tif (path) {\n\t\t\t\t\t\tvar next = other.getNext() || path.getFirstSegment(),\n\t\t\t\t\t\t\tnextInter = next._intersection;\n\t\t\t\t\t\tif (other !== segment && (isStart(other)\n\t\t\t\t\t\t\t|| isStart(next)\n\t\t\t\t\t\t\t|| next && (isValid(other) && (isValid(next)\n\t\t\t\t\t\t\t\t|| nextInter && isValid(nextInter._segment))))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcrossings.push(other);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (collectStarts)\n\t\t\t\t\t\t\tstarts.push(other);\n\t\t\t\t\t}\n\t\t\t\t\tinter = inter._next;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (inter) {\n\t\t\t\tcollect(inter);\n\t\t\t\twhile (inter && inter._previous)\n\t\t\t\t\tinter = inter._previous;\n\t\t\t\tcollect(inter, start);\n\t\t\t}\n\t\t\treturn crossings;\n\t\t}\n\n\t\tsegments.sort(function(seg1, seg2) {\n\t\t\tvar inter1 = seg1._intersection,\n\t\t\t\tinter2 = seg2._intersection,\n\t\t\t\tover1 = !!(inter1 && inter1._overlap),\n\t\t\t\tover2 = !!(inter2 && inter2._overlap),\n\t\t\t\tpath1 = seg1._path,\n\t\t\t\tpath2 = seg2._path;\n\t\t\treturn over1 ^ over2\n\t\t\t\t\t? over1 ? 1 : -1\n\t\t\t\t\t: !inter1 ^ !inter2\n\t\t\t\t\t\t? inter1 ? 1 : -1\n\t\t\t\t\t\t: path1 !== path2\n\t\t\t\t\t\t\t? path1._id - path2._id\n\t\t\t\t\t\t\t: seg1._index - seg2._index;\n\t\t});\n\n\t\tfor (var i = 0, l = segments.length; i < l; i++) {\n\t\t\tvar seg = segments[i],\n\t\t\t\tvalid = isValid(seg),\n\t\t\t\tpath = null,\n\t\t\t\tfinished = false,\n\t\t\t\tclosed = true,\n\t\t\t\tbranches = [],\n\t\t\t\tbranch,\n\t\t\t\tvisited,\n\t\t\t\thandleIn;\n\t\t\tif (valid && seg._path._overlapsOnly) {\n\t\t\t\tvar path1 = seg._path,\n\t\t\t\t\tpath2 = seg._intersection._segment._path;\n\t\t\t\tif (path1.compare(path2)) {\n\t\t\t\t\tif (path1.getArea())\n\t\t\t\t\t\tpaths.push(path1.clone(false));\n\t\t\t\t\tvisitPath(path1);\n\t\t\t\t\tvisitPath(path2);\n\t\t\t\t\tvalid = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (valid) {\n\t\t\t\tvar first = !path,\n\t\t\t\t\tcrossings = getCrossingSegments(seg, first),\n\t\t\t\t\tother = crossings.shift(),\n\t\t\t\t\tfinished = !first && (isStart(seg) || isStart(other)),\n\t\t\t\t\tcross = !finished && other;\n\t\t\t\tif (first) {\n\t\t\t\t\tpath = new Path(Item.NO_INSERT);\n\t\t\t\t\tbranch = null;\n\t\t\t\t}\n\t\t\t\tif (finished) {\n\t\t\t\t\tif (seg.isFirst() || seg.isLast())\n\t\t\t\t\t\tclosed = seg._path._closed;\n\t\t\t\t\tseg._visited = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (cross && branch) {\n\t\t\t\t\tbranches.push(branch);\n\t\t\t\t\tbranch = null;\n\t\t\t\t}\n\t\t\t\tif (!branch) {\n\t\t\t\t\tif (cross)\n\t\t\t\t\t\tcrossings.push(seg);\n\t\t\t\t\tbranch = {\n\t\t\t\t\t\tstart: path._segments.length,\n\t\t\t\t\t\tcrossings: crossings,\n\t\t\t\t\t\tvisited: visited = [],\n\t\t\t\t\t\thandleIn: handleIn\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (cross)\n\t\t\t\t\tseg = other;\n\t\t\t\tif (!isValid(seg)) {\n\t\t\t\t\tpath.removeSegments(branch.start);\n\t\t\t\t\tfor (var j = 0, k = visited.length; j < k; j++) {\n\t\t\t\t\t\tvisited[j]._visited = false;\n\t\t\t\t\t}\n\t\t\t\t\tvisited.length = 0;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tseg = branch && branch.crossings.shift();\n\t\t\t\t\t\tif (!seg || !seg._path) {\n\t\t\t\t\t\t\tseg = null;\n\t\t\t\t\t\t\tbranch = branches.pop();\n\t\t\t\t\t\t\tif (branch) {\n\t\t\t\t\t\t\t\tvisited = branch.visited;\n\t\t\t\t\t\t\t\thandleIn = branch.handleIn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} while (branch && !isValid(seg));\n\t\t\t\t\tif (!seg)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tvar next = seg.getNext();\n\t\t\t\tpath.add(new Segment(seg._point, handleIn,\n\t\t\t\t\t\tnext && seg._handleOut));\n\t\t\t\tseg._visited = true;\n\t\t\t\tvisited.push(seg);\n\t\t\t\tseg = next || seg._path.getFirstSegment();\n\t\t\t\thandleIn = next && next._handleIn;\n\t\t\t}\n\t\t\tif (finished) {\n\t\t\t\tif (closed) {\n\t\t\t\t\tpath.getFirstSegment().setHandleIn(handleIn);\n\t\t\t\t\tpath.setClosed(closed);\n\t\t\t\t}\n\t\t\t\tif (path.getArea() !== 0) {\n\t\t\t\t\tpaths.push(path);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn paths;\n\t}\n\n\treturn {\n\t\t_getWinding: function(point, dir, closed) {\n\t\t\treturn getWinding(point, this.getCurves(), dir, closed);\n\t\t},\n\n\t\tunite: function(path, options) {\n\t\t\treturn traceBoolean(this, path, 'unite', options);\n\t\t},\n\n\t\tintersect: function(path, options) {\n\t\t\treturn traceBoolean(this, path, 'intersect', options);\n\t\t},\n\n\t\tsubtract: function(path, options) {\n\t\t\treturn traceBoolean(this, path, 'subtract', options);\n\t\t},\n\n\t\texclude: function(path, options) {\n\t\t\treturn traceBoolean(this, path, 'exclude', options);\n\t\t},\n\n\t\tdivide: function(path, options) {\n\t\t\treturn options && (options.trace == false || options.stroke)\n\t\t\t\t\t? splitBoolean(this, path, 'divide')\n\t\t\t\t\t: createResult([\n\t\t\t\t\t\tthis.subtract(path, options),\n\t\t\t\t\t\tthis.intersect(path, options)\n\t\t\t\t\t], true, this, path, options);\n\t\t},\n\n\t\tresolveCrossings: function() {\n\t\t\tvar children = this._children,\n\t\t\t\tpaths = children || [this];\n\n\t\t\tfunction hasOverlap(seg, path) {\n\t\t\t\tvar inter = seg && seg._intersection;\n\t\t\t\treturn inter && inter._overlap && inter._path === path;\n\t\t\t}\n\n\t\t\tvar hasOverlaps = false,\n\t\t\t\thasCrossings = false,\n\t\t\t\tintersections = this.getIntersections(null, function(inter) {\n\t\t\t\t\treturn inter.hasOverlap() && (hasOverlaps = true) ||\n\t\t\t\t\t\t\tinter.isCrossing() && (hasCrossings = true);\n\t\t\t\t}),\n\t\t\t\tclearCurves = hasOverlaps && hasCrossings && [];\n\t\t\tintersections = CurveLocation.expand(intersections);\n\t\t\tif (hasOverlaps) {\n\t\t\t\tvar overlaps = divideLocations(intersections, function(inter) {\n\t\t\t\t\treturn inter.hasOverlap();\n\t\t\t\t}, clearCurves);\n\t\t\t\tfor (var i = overlaps.length - 1; i >= 0; i--) {\n\t\t\t\t\tvar overlap = overlaps[i],\n\t\t\t\t\t\tpath = overlap._path,\n\t\t\t\t\t\tseg = overlap._segment,\n\t\t\t\t\t\tprev = seg.getPrevious(),\n\t\t\t\t\t\tnext = seg.getNext();\n\t\t\t\t\tif (hasOverlap(prev, path) && hasOverlap(next, path)) {\n\t\t\t\t\t\tseg.remove();\n\t\t\t\t\t\tprev._handleOut._set(0, 0);\n\t\t\t\t\t\tnext._handleIn._set(0, 0);\n\t\t\t\t\t\tif (prev !== seg && !prev.getCurve().hasLength()) {\n\t\t\t\t\t\t\tnext._handleIn.set(prev._handleIn);\n\t\t\t\t\t\t\tprev.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (hasCrossings) {\n\t\t\t\tdivideLocations(intersections, hasOverlaps && function(inter) {\n\t\t\t\t\tvar curve1 = inter.getCurve(),\n\t\t\t\t\t\tseg1 = inter.getSegment(),\n\t\t\t\t\t\tother = inter._intersection,\n\t\t\t\t\t\tcurve2 = other._curve,\n\t\t\t\t\t\tseg2 = other._segment;\n\t\t\t\t\tif (curve1 && curve2 && curve1._path && curve2._path)\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tif (seg1)\n\t\t\t\t\t\tseg1._intersection = null;\n\t\t\t\t\tif (seg2)\n\t\t\t\t\t\tseg2._intersection = null;\n\t\t\t\t}, clearCurves);\n\t\t\t\tif (clearCurves)\n\t\t\t\t\tclearCurveHandles(clearCurves);\n\t\t\t\tpaths = tracePaths(Base.each(paths, function(path) {\n\t\t\t\t\tBase.push(this, path._segments);\n\t\t\t\t}, []));\n\t\t\t}\n\t\t\tvar length = paths.length,\n\t\t\t\titem;\n\t\t\tif (length > 1 && children) {\n\t\t\t\tif (paths !== children)\n\t\t\t\t\tthis.setChildren(paths);\n\t\t\t\titem = this;\n\t\t\t} else if (length === 1 && !children) {\n\t\t\t\tif (paths[0] !== this)\n\t\t\t\t\tthis.setSegments(paths[0].removeSegments());\n\t\t\t\titem = this;\n\t\t\t}\n\t\t\tif (!item) {\n\t\t\t\titem = new CompoundPath(Item.NO_INSERT);\n\t\t\t\titem.addChildren(paths);\n\t\t\t\titem = item.reduce();\n\t\t\t\titem.copyAttributes(this);\n\t\t\t\tthis.replaceWith(item);\n\t\t\t}\n\t\t\treturn item;\n\t\t},\n\n\t\treorient: function(nonZero, clockwise) {\n\t\t\tvar children = this._children;\n\t\t\tif (children && children.length) {\n\t\t\t\tthis.setChildren(reorientPaths(this.removeChildren(),\n\t\t\t\t\t\tfunction(w) {\n\t\t\t\t\t\t\treturn !!(nonZero ? w : w & 1);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tclockwise));\n\t\t\t} else if (clockwise !== undefined) {\n\t\t\t\tthis.setClockwise(clockwise);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tgetInteriorPoint: function() {\n\t\t\tvar bounds = this.getBounds(),\n\t\t\t\tpoint = bounds.getCenter(true);\n\t\t\tif (!this.contains(point)) {\n\t\t\t\tvar curves = this.getCurves(),\n\t\t\t\t\ty = point.y,\n\t\t\t\t\tintercepts = [],\n\t\t\t\t\troots = [];\n\t\t\t\tfor (var i = 0, l = curves.length; i < l; i++) {\n\t\t\t\t\tvar v = curves[i].getValues(),\n\t\t\t\t\t\to0 = v[1],\n\t\t\t\t\t\to1 = v[3],\n\t\t\t\t\t\to2 = v[5],\n\t\t\t\t\t\to3 = v[7];\n\t\t\t\t\tif (y >= min(o0, o1, o2, o3) && y <= max(o0, o1, o2, o3)) {\n\t\t\t\t\t\tvar monoCurves = Curve.getMonoCurves(v);\n\t\t\t\t\t\tfor (var j = 0, m = monoCurves.length; j < m; j++) {\n\t\t\t\t\t\t\tvar mv = monoCurves[j],\n\t\t\t\t\t\t\t\tmo0 = mv[1],\n\t\t\t\t\t\t\t\tmo3 = mv[7];\n\t\t\t\t\t\t\tif ((mo0 !== mo3) &&\n\t\t\t\t\t\t\t\t(y >= mo0 && y <= mo3 || y >= mo3 && y <= mo0)){\n\t\t\t\t\t\t\t\tvar x = y === mo0 ? mv[0]\n\t\t\t\t\t\t\t\t\t: y === mo3 ? mv[6]\n\t\t\t\t\t\t\t\t\t: Curve.solveCubic(mv, 1, y, roots, 0, 1)\n\t\t\t\t\t\t\t\t\t\t=== 1\n\t\t\t\t\t\t\t\t\t\t? Curve.getPoint(mv, roots[0]).x\n\t\t\t\t\t\t\t\t\t\t: (mv[0] + mv[6]) / 2;\n\t\t\t\t\t\t\t\tintercepts.push(x);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (intercepts.length > 1) {\n\t\t\t\t\tintercepts.sort(function(a, b) { return a - b; });\n\t\t\t\t\tpoint.x = (intercepts[0] + intercepts[1]) / 2;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn point;\n\t\t}\n\t};\n});\n\nvar PathFlattener = Base.extend({\n\t_class: 'PathFlattener',\n\n\tinitialize: function(path, flatness, maxRecursion, ignoreStraight, matrix) {\n\t\tvar curves = [],\n\t\t\tparts = [],\n\t\t\tlength = 0,\n\t\t\tminSpan = 1 / (maxRecursion || 32),\n\t\t\tsegments = path._segments,\n\t\t\tsegment1 = segments[0],\n\t\t\tsegment2;\n\n\t\tfunction addCurve(segment1, segment2) {\n\t\t\tvar curve = Curve.getValues(segment1, segment2, matrix);\n\t\t\tcurves.push(curve);\n\t\t\tcomputeParts(curve, segment1._index, 0, 1);\n\t\t}\n\n\t\tfunction computeParts(curve, index, t1, t2) {\n\t\t\tif ((t2 - t1) > minSpan\n\t\t\t\t\t&& !(ignoreStraight && Curve.isStraight(curve))\n\t\t\t\t\t&& !Curve.isFlatEnough(curve, flatness || 0.25)) {\n\t\t\t\tvar halves = Curve.subdivide(curve, 0.5),\n\t\t\t\t\ttMid = (t1 + t2) / 2;\n\t\t\t\tcomputeParts(halves[0], index, t1, tMid);\n\t\t\t\tcomputeParts(halves[1], index, tMid, t2);\n\t\t\t} else {\n\t\t\t\tvar dx = curve[6] - curve[0],\n\t\t\t\t\tdy = curve[7] - curve[1],\n\t\t\t\t\tdist = Math.sqrt(dx * dx + dy * dy);\n\t\t\t\tif (dist > 0) {\n\t\t\t\t\tlength += dist;\n\t\t\t\t\tparts.push({\n\t\t\t\t\t\toffset: length,\n\t\t\t\t\t\tcurve: curve,\n\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\ttime: t2,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 1, l = segments.length; i < l; i++) {\n\t\t\tsegment2 = segments[i];\n\t\t\taddCurve(segment1, segment2);\n\t\t\tsegment1 = segment2;\n\t\t}\n\t\tif (path._closed)\n\t\t\taddCurve(segment2 || segment1, segments[0]);\n\t\tthis.curves = curves;\n\t\tthis.parts = parts;\n\t\tthis.length = length;\n\t\tthis.index = 0;\n\t},\n\n\t_get: function(offset) {\n\t\tvar parts = this.parts,\n\t\t\tlength = parts.length,\n\t\t\tstart,\n\t\t\ti, j = this.index;\n\t\tfor (;;) {\n\t\t\ti = j;\n\t\t\tif (!j || parts[--j].offset < offset)\n\t\t\t\tbreak;\n\t\t}\n\t\tfor (; i < length; i++) {\n\t\t\tvar part = parts[i];\n\t\t\tif (part.offset >= offset) {\n\t\t\t\tthis.index = i;\n\t\t\t\tvar prev = parts[i - 1],\n\t\t\t\t\tprevTime = prev && prev.index === part.index ? prev.time : 0,\n\t\t\t\t\tprevOffset = prev ? prev.offset : 0;\n\t\t\t\treturn {\n\t\t\t\t\tindex: part.index,\n\t\t\t\t\ttime: prevTime + (part.time - prevTime)\n\t\t\t\t\t\t* (offset - prevOffset) / (part.offset - prevOffset)\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tindex: parts[length - 1].index,\n\t\t\ttime: 1\n\t\t};\n\t},\n\n\tdrawPart: function(ctx, from, to) {\n\t\tvar start = this._get(from),\n\t\t\tend = this._get(to);\n\t\tfor (var i = start.index, l = end.index; i <= l; i++) {\n\t\t\tvar curve = Curve.getPart(this.curves[i],\n\t\t\t\t\ti === start.index ? start.time : 0,\n\t\t\t\t\ti === end.index ? end.time : 1);\n\t\t\tif (i === start.index)\n\t\t\t\tctx.moveTo(curve[0], curve[1]);\n\t\t\tctx.bezierCurveTo.apply(ctx, curve.slice(2));\n\t\t}\n\t}\n}, Base.each(Curve._evaluateMethods,\n\tfunction(name) {\n\t\tthis[name + 'At'] = function(offset) {\n\t\t\tvar param = this._get(offset);\n\t\t\treturn Curve[name](this.curves[param.index], param.time);\n\t\t};\n\t}, {})\n);\n\nvar PathFitter = Base.extend({\n\tinitialize: function(path) {\n\t\tvar points = this.points = [],\n\t\t\tsegments = path._segments,\n\t\t\tclosed = path._closed;\n\t\tfor (var i = 0, prev, l = segments.length; i < l; i++) {\n\t\t\tvar point = segments[i].point;\n\t\t\tif (!prev || !prev.equals(point)) {\n\t\t\t\tpoints.push(prev = point.clone());\n\t\t\t}\n\t\t}\n\t\tif (closed) {\n\t\t\tpoints.unshift(points[points.length - 1]);\n\t\t\tpoints.push(points[1]);\n\t\t}\n\t\tthis.closed = closed;\n\t},\n\n\tfit: function(error) {\n\t\tvar points = this.points,\n\t\t\tlength = points.length,\n\t\t\tsegments = null;\n\t\tif (length > 0) {\n\t\t\tsegments = [new Segment(points[0])];\n\t\t\tif (length > 1) {\n\t\t\t\tthis.fitCubic(segments, error, 0, length - 1,\n\t\t\t\t\t\tpoints[1].subtract(points[0]),\n\t\t\t\t\t\tpoints[length - 2].subtract(points[length - 1]));\n\t\t\t\tif (this.closed) {\n\t\t\t\t\tsegments.shift();\n\t\t\t\t\tsegments.pop();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn segments;\n\t},\n\n\tfitCubic: function(segments, error, first, last, tan1, tan2) {\n\t\tvar points = this.points;\n\t\tif (last - first === 1) {\n\t\t\tvar pt1 = points[first],\n\t\t\t\tpt2 = points[last],\n\t\t\t\tdist = pt1.getDistance(pt2) / 3;\n\t\t\tthis.addCurve(segments, [pt1, pt1.add(tan1.normalize(dist)),\n\t\t\t\t\tpt2.add(tan2.normalize(dist)), pt2]);\n\t\t\treturn;\n\t\t}\n\t\tvar uPrime = this.chordLengthParameterize(first, last),\n\t\t\tmaxError = Math.max(error, error * error),\n\t\t\tsplit,\n\t\t\tparametersInOrder = true;\n\t\tfor (var i = 0; i <= 4; i++) {\n\t\t\tvar curve = this.generateBezier(first, last, uPrime, tan1, tan2);\n\t\t\tvar max = this.findMaxError(first, last, curve, uPrime);\n\t\t\tif (max.error < error && parametersInOrder) {\n\t\t\t\tthis.addCurve(segments, curve);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsplit = max.index;\n\t\t\tif (max.error >= maxError)\n\t\t\t\tbreak;\n\t\t\tparametersInOrder = this.reparameterize(first, last, uPrime, curve);\n\t\t\tmaxError = max.error;\n\t\t}\n\t\tvar tanCenter = points[split - 1].subtract(points[split + 1]);\n\t\tthis.fitCubic(segments, error, first, split, tan1, tanCenter);\n\t\tthis.fitCubic(segments, error, split, last, tanCenter.negate(), tan2);\n\t},\n\n\taddCurve: function(segments, curve) {\n\t\tvar prev = segments[segments.length - 1];\n\t\tprev.setHandleOut(curve[1].subtract(curve[0]));\n\t\tsegments.push(new Segment(curve[3], curve[2].subtract(curve[3])));\n\t},\n\n\tgenerateBezier: function(first, last, uPrime, tan1, tan2) {\n\t\tvar epsilon = 1e-12,\n\t\t\tabs = Math.abs,\n\t\t\tpoints = this.points,\n\t\t\tpt1 = points[first],\n\t\t\tpt2 = points[last],\n\t\t\tC = [[0, 0], [0, 0]],\n\t\t\tX = [0, 0];\n\n\t\tfor (var i = 0, l = last - first + 1; i < l; i++) {\n\t\t\tvar u = uPrime[i],\n\t\t\t\tt = 1 - u,\n\t\t\t\tb = 3 * u * t,\n\t\t\t\tb0 = t * t * t,\n\t\t\t\tb1 = b * t,\n\t\t\t\tb2 = b * u,\n\t\t\t\tb3 = u * u * u,\n\t\t\t\ta1 = tan1.normalize(b1),\n\t\t\t\ta2 = tan2.normalize(b2),\n\t\t\t\ttmp = points[first + i]\n\t\t\t\t\t.subtract(pt1.multiply(b0 + b1))\n\t\t\t\t\t.subtract(pt2.multiply(b2 + b3));\n\t\t\tC[0][0] += a1.dot(a1);\n\t\t\tC[0][1] += a1.dot(a2);\n\t\t\tC[1][0] = C[0][1];\n\t\t\tC[1][1] += a2.dot(a2);\n\t\t\tX[0] += a1.dot(tmp);\n\t\t\tX[1] += a2.dot(tmp);\n\t\t}\n\n\t\tvar detC0C1 = C[0][0] * C[1][1] - C[1][0] * C[0][1],\n\t\t\talpha1,\n\t\t\talpha2;\n\t\tif (abs(detC0C1) > epsilon) {\n\t\t\tvar detC0X = C[0][0] * X[1]    - C[1][0] * X[0],\n\t\t\t\tdetXC1 = X[0]    * C[1][1] - X[1]    * C[0][1];\n\t\t\talpha1 = detXC1 / detC0C1;\n\t\t\talpha2 = detC0X / detC0C1;\n\t\t} else {\n\t\t\tvar c0 = C[0][0] + C[0][1],\n\t\t\t\tc1 = C[1][0] + C[1][1];\n\t\t\talpha1 = alpha2 = abs(c0) > epsilon ? X[0] / c0\n\t\t\t\t\t\t\t: abs(c1) > epsilon ? X[1] / c1\n\t\t\t\t\t\t\t: 0;\n\t\t}\n\n\t\tvar segLength = pt2.getDistance(pt1),\n\t\t\teps = epsilon * segLength,\n\t\t\thandle1,\n\t\t\thandle2;\n\t\tif (alpha1 < eps || alpha2 < eps) {\n\t\t\talpha1 = alpha2 = segLength / 3;\n\t\t} else {\n\t\t\tvar line = pt2.subtract(pt1);\n\t\t\thandle1 = tan1.normalize(alpha1);\n\t\t\thandle2 = tan2.normalize(alpha2);\n\t\t\tif (handle1.dot(line) - handle2.dot(line) > segLength * segLength) {\n\t\t\t\talpha1 = alpha2 = segLength / 3;\n\t\t\t\thandle1 = handle2 = null;\n\t\t\t}\n\t\t}\n\n\t\treturn [pt1,\n\t\t\t\tpt1.add(handle1 || tan1.normalize(alpha1)),\n\t\t\t\tpt2.add(handle2 || tan2.normalize(alpha2)),\n\t\t\t\tpt2];\n\t},\n\n\treparameterize: function(first, last, u, curve) {\n\t\tfor (var i = first; i <= last; i++) {\n\t\t\tu[i - first] = this.findRoot(curve, this.points[i], u[i - first]);\n\t\t}\n\t\tfor (var i = 1, l = u.length; i < l; i++) {\n\t\t\tif (u[i] <= u[i - 1])\n\t\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tfindRoot: function(curve, point, u) {\n\t\tvar curve1 = [],\n\t\t\tcurve2 = [];\n\t\tfor (var i = 0; i <= 2; i++) {\n\t\t\tcurve1[i] = curve[i + 1].subtract(curve[i]).multiply(3);\n\t\t}\n\t\tfor (var i = 0; i <= 1; i++) {\n\t\t\tcurve2[i] = curve1[i + 1].subtract(curve1[i]).multiply(2);\n\t\t}\n\t\tvar pt = this.evaluate(3, curve, u),\n\t\t\tpt1 = this.evaluate(2, curve1, u),\n\t\t\tpt2 = this.evaluate(1, curve2, u),\n\t\t\tdiff = pt.subtract(point),\n\t\t\tdf = pt1.dot(pt1) + diff.dot(pt2);\n\t\treturn Numerical.isMachineZero(df) ? u : u - diff.dot(pt1) / df;\n\t},\n\n\tevaluate: function(degree, curve, t) {\n\t\tvar tmp = curve.slice();\n\t\tfor (var i = 1; i <= degree; i++) {\n\t\t\tfor (var j = 0; j <= degree - i; j++) {\n\t\t\t\ttmp[j] = tmp[j].multiply(1 - t).add(tmp[j + 1].multiply(t));\n\t\t\t}\n\t\t}\n\t\treturn tmp[0];\n\t},\n\n\tchordLengthParameterize: function(first, last) {\n\t\tvar u = [0];\n\t\tfor (var i = first + 1; i <= last; i++) {\n\t\t\tu[i - first] = u[i - first - 1]\n\t\t\t\t\t+ this.points[i].getDistance(this.points[i - 1]);\n\t\t}\n\t\tfor (var i = 1, m = last - first; i <= m; i++) {\n\t\t\tu[i] /= u[m];\n\t\t}\n\t\treturn u;\n\t},\n\n\tfindMaxError: function(first, last, curve, u) {\n\t\tvar index = Math.floor((last - first + 1) / 2),\n\t\t\tmaxDist = 0;\n\t\tfor (var i = first + 1; i < last; i++) {\n\t\t\tvar P = this.evaluate(3, curve, u[i - first]);\n\t\t\tvar v = P.subtract(this.points[i]);\n\t\t\tvar dist = v.x * v.x + v.y * v.y;\n\t\t\tif (dist >= maxDist) {\n\t\t\t\tmaxDist = dist;\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\terror: maxDist,\n\t\t\tindex: index\n\t\t};\n\t}\n});\n\nvar TextItem = Item.extend({\n\t_class: 'TextItem',\n\t_applyMatrix: false,\n\t_canApplyMatrix: false,\n\t_serializeFields: {\n\t\tcontent: null\n\t},\n\t_boundsOptions: { stroke: false, handle: false },\n\n\tinitialize: function TextItem(arg) {\n\t\tthis._content = '';\n\t\tthis._lines = [];\n\t\tvar hasProps = arg && Base.isPlainObject(arg)\n\t\t\t\t&& arg.x === undefined && arg.y === undefined;\n\t\tthis._initialize(hasProps && arg, !hasProps && Point.read(arguments));\n\t},\n\n\t_equals: function(item) {\n\t\treturn this._content === item._content;\n\t},\n\n\tcopyContent: function(source) {\n\t\tthis.setContent(source._content);\n\t},\n\n\tgetContent: function() {\n\t\treturn this._content;\n\t},\n\n\tsetContent: function(content) {\n\t\tthis._content = '' + content;\n\t\tthis._lines = this._content.split(/\\r\\n|\\n|\\r/mg);\n\t\tthis._changed(521);\n\t},\n\n\tisEmpty: function() {\n\t\treturn !this._content;\n\t},\n\n\tgetCharacterStyle: '#getStyle',\n\tsetCharacterStyle: '#setStyle',\n\n\tgetParagraphStyle: '#getStyle',\n\tsetParagraphStyle: '#setStyle'\n});\n\nvar PointText = TextItem.extend({\n\t_class: 'PointText',\n\n\tinitialize: function PointText() {\n\t\tTextItem.apply(this, arguments);\n\t},\n\n\tgetPoint: function() {\n\t\tvar point = this._matrix.getTranslation();\n\t\treturn new LinkedPoint(point.x, point.y, this, 'setPoint');\n\t},\n\n\tsetPoint: function() {\n\t\tvar point = Point.read(arguments);\n\t\tthis.translate(point.subtract(this._matrix.getTranslation()));\n\t},\n\n\t_draw: function(ctx, param, viewMatrix) {\n\t\tif (!this._content)\n\t\t\treturn;\n\t\tthis._setStyles(ctx, param, viewMatrix);\n\t\tvar lines = this._lines,\n\t\t\tstyle = this._style,\n\t\t\thasFill = style.hasFill(),\n\t\t\thasStroke = style.hasStroke(),\n\t\t\tleading = style.getLeading(),\n\t\t\tshadowColor = ctx.shadowColor;\n\t\tctx.font = style.getFontStyle();\n\t\tctx.textAlign = style.getJustification();\n\t\tfor (var i = 0, l = lines.length; i < l; i++) {\n\t\t\tctx.shadowColor = shadowColor;\n\t\t\tvar line = lines[i];\n\t\t\tif (hasFill) {\n\t\t\t\tctx.fillText(line, 0, 0);\n\t\t\t\tctx.shadowColor = 'rgba(0,0,0,0)';\n\t\t\t}\n\t\t\tif (hasStroke)\n\t\t\t\tctx.strokeText(line, 0, 0);\n\t\t\tctx.translate(0, leading);\n\t\t}\n\t},\n\n\t_getBounds: function(matrix, options) {\n\t\tvar rect = options.drawnTextBounds ? this._getDrawnTextSize() : this._getMeasuredTextSize();\n\t\treturn matrix ? matrix._transformBounds(rect, rect) : rect;\n\t},\n\n\t_getMeasuredTextSize: function() {\n\t\tvar style = this._style,\n\t\t\tlines = this._lines,\n\t\t\tnumLines = lines.length,\n\t\t\tjustification = style.getJustification(),\n\t\t\tleading = style.getLeading(),\n\t\t\twidth = this.getView().getTextWidth(style.getFontStyle(), lines),\n\t\t\tx = 0;\n\t\tif (justification !== 'left')\n\t\t\tx -= width / (justification === 'center' ? 2: 1);\n\t\treturn new Rectangle(x,\n\t\t\t\t\tnumLines ? - 0.75 * leading : 0,\n\t\t\t\t\twidth, numLines * leading);\n\t},\n\n\t_getDrawnTextSize: function() {\n\t\tvar style = this._style;\n\t\tvar lines = this._lines;\n\t\tvar numLines = lines.length;\n\t\tvar leading = style.getLeading();\n\t\tvar justification = style.getJustification();\n\n\t\tvar svg = SvgElement.create('svg', {\n\t\t\t\t\tversion: '1.1',\n\t\t\t\t\txmlns: SvgElement.svg\n\t\t\t\t});\n\t\tvar node = SvgElement.create('text');\n\t\tnode.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\t\tsvg.appendChild(node);\n\t\tfor (var i = 0; i < numLines; i++) {\n\t\t\tvar tspanNode = SvgElement.create('tspan', {\n\t\t\t\tx: '0',\n\t\t\t\tdy: i === 0 ? '0' : leading + 'px'\n\t\t\t});\n\t\t\ttspanNode.textContent = this._lines[i];\n\t\t\tnode.appendChild(tspanNode);\n\t\t}\n\n\t\tvar element = document.createElement('span');\n\t\telement.style.visibility = ('hidden');\n\t\telement.style.whiteSpace = 'pre';\n\t\telement.style.fontSize = this.fontSize + 'px';\n\t\telement.style.fontFamily = this.font;\n\t\telement.style.lineHeight = this.leading / this.fontSize;\n\n\t\tvar bbox;\n\t\ttry {\n\t\t\telement.appendChild(svg);\n\t\t\tdocument.body.appendChild(element);\n\t\t\tbbox = svg.getBBox();\n\t\t} finally {\n\t\t\tdocument.body.removeChild(element);\n\t\t}\n\n\t\tvar halfStrokeWidth = this.strokeWidth / 2;\n\t\tvar width = bbox.width + (halfStrokeWidth * 2);\n\t\tvar height = bbox.height + (halfStrokeWidth * 2);\n\t\tvar x = bbox.x - halfStrokeWidth;\n\t\tvar y = bbox.y - halfStrokeWidth;\n\n\t\tif (justification !== 'left') {\n\t\t\tvar eltWidth = this.getView().getTextWidth(style.getFontStyle(), lines);\n\t\t\tx -= eltWidth / (justification === 'center' ? 2: 1);\n\t\t}\n\n\t\treturn new Rectangle(x, y, width + 1, Math.max(height, numLines * leading));\n\t},\n\n\t_hitTestSelf: function(point, options) {\n\t\tif (options.fill && (this.hasFill() || options.hitUnfilledPaths) && this._contains(point))\n\t\t\treturn new HitResult('fill', this);\n\t}\n});\n\nvar Color = Base.extend(new function() {\n\tvar types = {\n\t\tgray: ['gray'],\n\t\trgb: ['red', 'green', 'blue'],\n\t\thsb: ['hue', 'saturation', 'brightness'],\n\t\thsl: ['hue', 'saturation', 'lightness'],\n\t\tgradient: ['gradient', 'origin', 'destination', 'highlight']\n\t};\n\n\tvar componentParsers = {},\n\t\tnamedColors = {\n\t\t\ttransparent: [0, 0, 0, 0]\n\t\t},\n\t\tcolorCtx;\n\n\tfunction fromCSS(string) {\n\t\tvar match = string.match(\n\t\t\t\t/^#([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})?$/i\n\t\t\t) || string.match(\n\t\t\t\t/^#([\\da-f])([\\da-f])([\\da-f])([\\da-f])?$/i\n\t\t\t),\n\t\t\ttype = 'rgb',\n\t\t\tcomponents;\n\t\tif (match) {\n\t\t\tvar amount = match[4] ? 4 : 3;\n\t\t\tcomponents = new Array(amount);\n\t\t\tfor (var i = 0; i < amount; i++) {\n\t\t\t\tvar value = match[i + 1];\n\t\t\t\tcomponents[i] = parseInt(value.length == 1\n\t\t\t\t\t\t? value + value : value, 16) / 255;\n\t\t\t}\n\t\t} else if (match = string.match(/^(rgb|hsl)a?\\((.*)\\)$/)) {\n\t\t\ttype = match[1];\n\t\t\tcomponents = match[2].trim().split(/[,\\s]+/g);\n\t\t\tvar isHSL = type === 'hsl';\n\t\t\tfor (var i = 0, l = Math.min(components.length, 4); i < l; i++) {\n\t\t\t\tvar component = components[i];\n\t\t\t\tvar value = parseFloat(component);\n\t\t\t\tif (isHSL) {\n\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\tvar unit = component.match(/([a-z]*)$/)[1];\n\t\t\t\t\t\tvalue *= ({\n\t\t\t\t\t\t\tturn: 360,\n\t\t\t\t\t\t\trad: 180 / Math.PI,\n\t\t\t\t\t\t\tgrad: 0.9\n\t\t\t\t\t\t}[unit] || 1);\n\t\t\t\t\t} else if (i < 3) {\n\t\t\t\t\t\tvalue /= 100;\n\t\t\t\t\t}\n\t\t\t\t} else if (i < 3) {\n\t\t\t\t\tvalue /= /%$/.test(component) ? 100 : 255;\n\t\t\t\t}\n\t\t\t\tcomponents[i] = value;\n\t\t\t}\n\t\t} else {\n\t\t\tvar color = namedColors[string];\n\t\t\tif (!color) {\n\t\t\t\tif (window) {\n\t\t\t\t\tif (!colorCtx) {\n\t\t\t\t\t\tcolorCtx = CanvasProvider.getContext(1, 1);\n\t\t\t\t\t\tcolorCtx.globalCompositeOperation = 'copy';\n\t\t\t\t\t}\n\t\t\t\t\tcolorCtx.fillStyle = 'rgba(0,0,0,0)';\n\t\t\t\t\tcolorCtx.fillStyle = string;\n\t\t\t\t\tcolorCtx.fillRect(0, 0, 1, 1);\n\t\t\t\t\tvar data = colorCtx.getImageData(0, 0, 1, 1).data;\n\t\t\t\t\tcolor = namedColors[string] = [\n\t\t\t\t\t\tdata[0] / 255,\n\t\t\t\t\t\tdata[1] / 255,\n\t\t\t\t\t\tdata[2] / 255\n\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\tcolor = [0, 0, 0];\n\t\t\t\t}\n\t\t\t}\n\t\t\tcomponents = color.slice();\n\t\t}\n\t\treturn [type, components];\n\t}\n\n\tvar hsbIndices = [\n\t\t[0, 3, 1],\n\t\t[2, 0, 1],\n\t\t[1, 0, 3],\n\t\t[1, 2, 0],\n\t\t[3, 1, 0],\n\t\t[0, 1, 2]\n\t];\n\n\tvar converters = {\n\t\t'rgb-hsb': function(r, g, b) {\n\t\t\tvar max = Math.max(r, g, b),\n\t\t\t\tmin = Math.min(r, g, b),\n\t\t\t\tdelta = max - min,\n\t\t\t\th = delta === 0 ? 0\n\t\t\t\t\t:   ( max == r ? (g - b) / delta + (g < b ? 6 : 0)\n\t\t\t\t\t\t: max == g ? (b - r) / delta + 2\n\t\t\t\t\t\t:            (r - g) / delta + 4) * 60;\n\t\t\treturn [h, max === 0 ? 0 : delta / max, max];\n\t\t},\n\n\t\t'hsb-rgb': function(h, s, b) {\n\t\t\th = (((h / 60) % 6) + 6) % 6;\n\t\t\tvar i = Math.floor(h),\n\t\t\t\tf = h - i,\n\t\t\t\ti = hsbIndices[i],\n\t\t\t\tv = [\n\t\t\t\t\tb,\n\t\t\t\t\tb * (1 - s),\n\t\t\t\t\tb * (1 - s * f),\n\t\t\t\t\tb * (1 - s * (1 - f))\n\t\t\t\t];\n\t\t\treturn [v[i[0]], v[i[1]], v[i[2]]];\n\t\t},\n\n\t\t'rgb-hsl': function(r, g, b) {\n\t\t\tvar max = Math.max(r, g, b),\n\t\t\t\tmin = Math.min(r, g, b),\n\t\t\t\tdelta = max - min,\n\t\t\t\tachromatic = delta === 0,\n\t\t\t\th = achromatic ? 0\n\t\t\t\t\t:   ( max == r ? (g - b) / delta + (g < b ? 6 : 0)\n\t\t\t\t\t\t: max == g ? (b - r) / delta + 2\n\t\t\t\t\t\t:            (r - g) / delta + 4) * 60,\n\t\t\t\tl = (max + min) / 2,\n\t\t\t\ts = achromatic ? 0 : l < 0.5\n\t\t\t\t\t\t? delta / (max + min)\n\t\t\t\t\t\t: delta / (2 - max - min);\n\t\t\treturn [h, s, l];\n\t\t},\n\n\t\t'hsl-rgb': function(h, s, l) {\n\t\t\th = (((h / 360) % 1) + 1) % 1;\n\t\t\tif (s === 0)\n\t\t\t\treturn [l, l, l];\n\t\t\tvar t3s = [ h + 1 / 3, h, h - 1 / 3 ],\n\t\t\t\tt2 = l < 0.5 ? l * (1 + s) : l + s - l * s,\n\t\t\t\tt1 = 2 * l - t2,\n\t\t\t\tc = [];\n\t\t\tfor (var i = 0; i < 3; i++) {\n\t\t\t\tvar t3 = t3s[i];\n\t\t\t\tif (t3 < 0) t3 += 1;\n\t\t\t\tif (t3 > 1) t3 -= 1;\n\t\t\t\tc[i] = 6 * t3 < 1\n\t\t\t\t\t? t1 + (t2 - t1) * 6 * t3\n\t\t\t\t\t: 2 * t3 < 1\n\t\t\t\t\t\t? t2\n\t\t\t\t\t\t: 3 * t3 < 2\n\t\t\t\t\t\t\t? t1 + (t2 - t1) * ((2 / 3) - t3) * 6\n\t\t\t\t\t\t\t: t1;\n\t\t\t}\n\t\t\treturn c;\n\t\t},\n\n\t\t'rgb-gray': function(r, g, b) {\n\t\t\treturn [r * 0.2989 + g * 0.587 + b * 0.114];\n\t\t},\n\n\t\t'gray-rgb': function(g) {\n\t\t\treturn [g, g, g];\n\t\t},\n\n\t\t'gray-hsb': function(g) {\n\t\t\treturn [0, 0, g];\n\t\t},\n\n\t\t'gray-hsl': function(g) {\n\t\t\treturn [0, 0, g];\n\t\t},\n\n\t\t'gradient-rgb': function() {\n\t\t\treturn [];\n\t\t},\n\n\t\t'rgb-gradient': function() {\n\t\t\treturn [];\n\t\t}\n\n\t};\n\n\treturn Base.each(types, function(properties, type) {\n\t\tcomponentParsers[type] = [];\n\t\tBase.each(properties, function(name, index) {\n\t\t\tvar part = Base.capitalize(name),\n\t\t\t\thasOverlap = /^(hue|saturation)$/.test(name),\n\t\t\t\tparser = componentParsers[type][index] = type === 'gradient'\n\t\t\t\t\t? name === 'gradient'\n\t\t\t\t\t\t? function(value) {\n\t\t\t\t\t\t\tvar current = this._components[0];\n\t\t\t\t\t\t\tvalue = Gradient.read(\n\t\t\t\t\t\t\t\tArray.isArray(value)\n\t\t\t\t\t\t\t\t\t? value\n\t\t\t\t\t\t\t\t\t: arguments, 0, { readNull: true }\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (current !== value) {\n\t\t\t\t\t\t\t\tif (current)\n\t\t\t\t\t\t\t\t\tcurrent._removeOwner(this);\n\t\t\t\t\t\t\t\tif (value)\n\t\t\t\t\t\t\t\t\tvalue._addOwner(this);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t: function() {\n\t\t\t\t\t\t\treturn Point.read(arguments, 0, {\n\t\t\t\t\t\t\t\t\treadNull: name === 'highlight',\n\t\t\t\t\t\t\t\t\tclone: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t: function(value) {\n\t\t\t\t\t\treturn value == null || isNaN(value) ? 0 : +value;\n\t\t\t\t\t};\n\t\t\tthis['get' + part] = function() {\n\t\t\t\treturn this._type === type\n\t\t\t\t\t|| hasOverlap && /^hs[bl]$/.test(this._type)\n\t\t\t\t\t\t? this._components[index]\n\t\t\t\t\t\t: this._convert(type)[index];\n\t\t\t};\n\n\t\t\tthis['set' + part] = function(value) {\n\t\t\t\tif (this._type !== type\n\t\t\t\t\t\t&& !(hasOverlap && /^hs[bl]$/.test(this._type))) {\n\t\t\t\t\tthis._components = this._convert(type);\n\t\t\t\t\tthis._properties = types[type];\n\t\t\t\t\tthis._type = type;\n\t\t\t\t}\n\t\t\t\tthis._components[index] = parser.call(this, value);\n\t\t\t\tthis._changed();\n\t\t\t};\n\t\t}, this);\n\t}, {\n\t\t_class: 'Color',\n\t\t_readIndex: true,\n\n\t\tinitialize: function Color(arg) {\n\t\t\tvar args = arguments,\n\t\t\t\treading = this.__read,\n\t\t\t\tread = 0,\n\t\t\t\ttype,\n\t\t\t\tcomponents,\n\t\t\t\talpha,\n\t\t\t\tvalues;\n\t\t\tif (Array.isArray(arg)) {\n\t\t\t\targs = arg;\n\t\t\t\targ = args[0];\n\t\t\t}\n\t\t\tvar argType = arg != null && typeof arg;\n\t\t\tif (argType === 'string' && arg in types) {\n\t\t\t\ttype = arg;\n\t\t\t\targ = args[1];\n\t\t\t\tif (Array.isArray(arg)) {\n\t\t\t\t\tcomponents = arg;\n\t\t\t\t\talpha = args[2];\n\t\t\t\t} else {\n\t\t\t\t\tif (reading)\n\t\t\t\t\t\tread = 1;\n\t\t\t\t\targs = Base.slice(args, 1);\n\t\t\t\t\targType = typeof arg;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!components) {\n\t\t\t\tvalues = argType === 'number'\n\t\t\t\t\t\t? args\n\t\t\t\t\t\t: argType === 'object' && arg.length != null\n\t\t\t\t\t\t\t? arg\n\t\t\t\t\t\t\t: null;\n\t\t\t\tif (values) {\n\t\t\t\t\tif (!type)\n\t\t\t\t\t\ttype = values.length >= 3\n\t\t\t\t\t\t\t\t? 'rgb'\n\t\t\t\t\t\t\t\t: 'gray';\n\t\t\t\t\tvar length = types[type].length;\n\t\t\t\t\talpha = values[length];\n\t\t\t\t\tif (reading) {\n\t\t\t\t\t\tread += values === arguments\n\t\t\t\t\t\t\t? length + (alpha != null ? 1 : 0)\n\t\t\t\t\t\t\t: 1;\n\t\t\t\t\t}\n\t\t\t\t\tif (values.length > length)\n\t\t\t\t\t\tvalues = Base.slice(values, 0, length);\n\t\t\t\t} else if (argType === 'string') {\n\t\t\t\t\tvar converted = fromCSS(arg);\n\t\t\t\t\ttype = converted[0];\n\t\t\t\t\tcomponents = converted[1];\n\t\t\t\t\tif (components.length === 4) {\n\t\t\t\t\t\talpha = components[3];\n\t\t\t\t\t\tcomponents.length--;\n\t\t\t\t\t}\n\t\t\t\t} else if (argType === 'object') {\n\t\t\t\t\tif (arg.constructor === Color) {\n\t\t\t\t\t\ttype = arg._type;\n\t\t\t\t\t\tcomponents = arg._components.slice();\n\t\t\t\t\t\talpha = arg._alpha;\n\t\t\t\t\t\tif (type === 'gradient') {\n\t\t\t\t\t\t\tfor (var i = 1, l = components.length; i < l; i++) {\n\t\t\t\t\t\t\t\tvar point = components[i];\n\t\t\t\t\t\t\t\tif (point)\n\t\t\t\t\t\t\t\t\tcomponents[i] = point.clone();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (arg.constructor === Gradient) {\n\t\t\t\t\t\ttype = 'gradient';\n\t\t\t\t\t\tvalues = args;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttype = 'hue' in arg\n\t\t\t\t\t\t\t? 'lightness' in arg\n\t\t\t\t\t\t\t\t? 'hsl'\n\t\t\t\t\t\t\t\t: 'hsb'\n\t\t\t\t\t\t\t: 'gradient' in arg || 'stops' in arg\n\t\t\t\t\t\t\t\t\t|| 'radial' in arg\n\t\t\t\t\t\t\t\t? 'gradient'\n\t\t\t\t\t\t\t\t: 'gray' in arg\n\t\t\t\t\t\t\t\t\t? 'gray'\n\t\t\t\t\t\t\t\t\t: 'rgb';\n\t\t\t\t\t\tvar properties = types[type],\n\t\t\t\t\t\t\tparsers = componentParsers[type];\n\t\t\t\t\t\tthis._components = components = [];\n\t\t\t\t\t\tfor (var i = 0, l = properties.length; i < l; i++) {\n\t\t\t\t\t\t\tvar value = arg[properties[i]];\n\t\t\t\t\t\t\tif (value == null && !i && type === 'gradient'\n\t\t\t\t\t\t\t\t\t&& 'stops' in arg) {\n\t\t\t\t\t\t\t\tvalue = {\n\t\t\t\t\t\t\t\t\tstops: arg.stops,\n\t\t\t\t\t\t\t\t\tradial: arg.radial\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvalue = parsers[i].call(this, value);\n\t\t\t\t\t\t\tif (value != null)\n\t\t\t\t\t\t\t\tcomponents[i] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\talpha = arg.alpha;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (reading && type)\n\t\t\t\t\tread = 1;\n\t\t\t}\n\t\t\tthis._type = type || 'rgb';\n\t\t\tif (!components) {\n\t\t\t\tthis._components = components = [];\n\t\t\t\tvar parsers = componentParsers[this._type];\n\t\t\t\tfor (var i = 0, l = parsers.length; i < l; i++) {\n\t\t\t\t\tvar value = parsers[i].call(this, values && values[i]);\n\t\t\t\t\tif (value != null)\n\t\t\t\t\t\tcomponents[i] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._components = components;\n\t\t\tthis._properties = types[this._type];\n\t\t\tthis._alpha = alpha;\n\t\t\tif (reading)\n\t\t\t\tthis.__read = read;\n\t\t\treturn this;\n\t\t},\n\n\t\tset: '#initialize',\n\n\t\t_serialize: function(options, dictionary) {\n\t\t\tvar components = this.getComponents();\n\t\t\treturn Base.serialize(\n\t\t\t\t\t/^(gray|rgb)$/.test(this._type)\n\t\t\t\t\t\t? components\n\t\t\t\t\t\t: [this._type].concat(components),\n\t\t\t\t\toptions, true, dictionary);\n\t\t},\n\n\t\t_changed: function() {\n\t\t\tthis._canvasStyle = null;\n\t\t\tif (this._owner) {\n\t\t\t\tif (this._setter) {\n\t\t\t\t\tthis._owner[this._setter](this);\n\t\t\t\t} else {\n\t\t\t\t\tthis._owner._changed(129);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_convert: function(type) {\n\t\t\tvar converter;\n\t\t\treturn this._type === type\n\t\t\t\t\t? this._components.slice()\n\t\t\t\t\t: (converter = converters[this._type + '-' + type])\n\t\t\t\t\t\t? converter.apply(this, this._components)\n\t\t\t\t\t\t: converters['rgb-' + type].apply(this,\n\t\t\t\t\t\t\tconverters[this._type + '-rgb'].apply(this,\n\t\t\t\t\t\t\t\tthis._components));\n\t\t},\n\n\t\tconvert: function(type) {\n\t\t\treturn new Color(type, this._convert(type), this._alpha);\n\t\t},\n\n\t\tgetType: function() {\n\t\t\treturn this._type;\n\t\t},\n\n\t\tsetType: function(type) {\n\t\t\tthis._components = this._convert(type);\n\t\t\tthis._properties = types[type];\n\t\t\tthis._type = type;\n\t\t},\n\n\t\tgetComponents: function() {\n\t\t\tvar components = this._components.slice();\n\t\t\tif (this._alpha != null)\n\t\t\t\tcomponents.push(this._alpha);\n\t\t\treturn components;\n\t\t},\n\n\t\tgetAlpha: function() {\n\t\t\treturn this._alpha != null ? this._alpha : 1;\n\t\t},\n\n\t\tsetAlpha: function(alpha) {\n\t\t\tthis._alpha = alpha == null ? null : Math.min(Math.max(alpha, 0), 1);\n\t\t\tthis._changed();\n\t\t},\n\n\t\thasAlpha: function() {\n\t\t\treturn this._alpha != null;\n\t\t},\n\n\t\tequals: function(color) {\n\t\t\tvar col = Base.isPlainValue(color, true)\n\t\t\t\t\t? Color.read(arguments)\n\t\t\t\t\t: color;\n\t\t\treturn col === this || col && this._class === col._class\n\t\t\t\t\t&& this._type === col._type\n\t\t\t\t\t&& this.getAlpha() === col.getAlpha()\n\t\t\t\t\t&& Base.equals(this._components, col._components)\n\t\t\t\t\t|| false;\n\t\t},\n\n\t\ttoString: function() {\n\t\t\tvar properties = this._properties,\n\t\t\t\tparts = [],\n\t\t\t\tisGradient = this._type === 'gradient',\n\t\t\t\tf = Formatter.instance;\n\t\t\tfor (var i = 0, l = properties.length; i < l; i++) {\n\t\t\t\tvar value = this._components[i];\n\t\t\t\tif (value != null)\n\t\t\t\t\tparts.push(properties[i] + ': '\n\t\t\t\t\t\t\t+ (isGradient ? value : f.number(value)));\n\t\t\t}\n\t\t\tif (this._alpha != null)\n\t\t\t\tparts.push('alpha: ' + f.number(this._alpha));\n\t\t\treturn '{ ' + parts.join(', ') + ' }';\n\t\t},\n\n\t\ttoCSS: function(hex) {\n\t\t\tvar components = this._convert('rgb'),\n\t\t\t\talpha = hex || this._alpha == null ? 1 : this._alpha;\n\t\t\tfunction convert(val) {\n\t\t\t\treturn Math.round((val < 0 ? 0 : val > 1 ? 1 : val) * 255);\n\t\t\t}\n\t\t\tcomponents = [\n\t\t\t\tconvert(components[0]),\n\t\t\t\tconvert(components[1]),\n\t\t\t\tconvert(components[2])\n\t\t\t];\n\t\t\tif (alpha < 1)\n\t\t\t\tcomponents.push(alpha < 0 ? 0 : alpha);\n\t\t\treturn hex\n\t\t\t\t\t? '#' + ((1 << 24) + (components[0] << 16)\n\t\t\t\t\t\t+ (components[1] << 8)\n\t\t\t\t\t\t+ components[2]).toString(16).slice(1)\n\t\t\t\t\t: (components.length == 4 ? 'rgba(' : 'rgb(')\n\t\t\t\t\t\t+ components.join(',') + ')';\n\t\t},\n\n\t\ttoCanvasStyle: function(ctx, matrix, strokeMatrix) {\n\t\t\tvar strokeMayChange = this._type === 'gradient' && strokeMatrix;\n\t\t\tif (this._canvasStyle && !strokeMayChange)\n\t\t\t\treturn this._canvasStyle;\n\t\t\tif (this._type !== 'gradient')\n\t\t\t\treturn this._canvasStyle = this.toCSS();\n\t\t\tvar components = this._components,\n\t\t\t\tgradient = components[0],\n\t\t\t\tstops = gradient._stops,\n\t\t\t\torigin = components[1],\n\t\t\t\tdestination = components[2],\n\t\t\t\thighlight = components[3],\n\t\t\t\tinverse = matrix && matrix.inverted(),\n\t\t\t\tcanvasGradient;\n\t\t\tif (inverse) {\n\t\t\t\torigin = inverse._transformPoint(origin);\n\t\t\t\tdestination = inverse._transformPoint(destination);\n\t\t\t\tif (highlight)\n\t\t\t\t\thighlight = inverse._transformPoint(highlight);\n\t\t\t}\n\t\t\tif (strokeMatrix) {\n\t\t\t\torigin = strokeMatrix._transformPoint(origin);\n\t\t\t\tdestination = strokeMatrix._transformPoint(destination);\n\t\t\t\tif (highlight)\n\t\t\t\t\thighlight = strokeMatrix._transformPoint(highlight);\n\t\t\t}\n\t\t\tif (gradient._radial) {\n\t\t\t\tvar radius = destination.getDistance(origin);\n\t\t\t\tif (highlight) {\n\t\t\t\t\tvar vector = highlight.subtract(origin);\n\t\t\t\t\tif (vector.getLength() > radius)\n\t\t\t\t\t\thighlight = origin.add(vector.normalize(radius - 0.1));\n\t\t\t\t}\n\t\t\t\tvar start = highlight || origin;\n\t\t\t\tcanvasGradient = ctx.createRadialGradient(start.x, start.y,\n\t\t\t\t\t\t0, origin.x, origin.y, radius);\n\t\t\t} else {\n\t\t\t\tcanvasGradient = ctx.createLinearGradient(origin.x, origin.y,\n\t\t\t\t\t\tdestination.x, destination.y);\n\t\t\t}\n\t\t\tfor (var i = 0, l = stops.length; i < l; i++) {\n\t\t\t\tvar stop = stops[i],\n\t\t\t\t\toffset = stop._offset;\n\t\t\t\tcanvasGradient.addColorStop(\n\t\t\t\t\t\toffset == null ? i / (l - 1) : offset,\n\t\t\t\t\t\tstop._color.toCanvasStyle());\n\t\t\t}\n\t\t\tif (!strokeMayChange) this._canvasStyle = canvasGradient;\n\t\t\treturn canvasGradient;\n\t\t},\n\n\t\ttransform: function(matrix) {\n\t\t\tif (this._type === 'gradient') {\n\t\t\t\tvar components = this._components;\n\t\t\t\tfor (var i = 1, l = components.length; i < l; i++) {\n\t\t\t\t\tvar point = components[i];\n\t\t\t\t\tmatrix._transformPoint(point, point, true);\n\t\t\t\t}\n\t\t\t\tthis._changed();\n\t\t\t}\n\t\t},\n\n\t\tstatics: {\n\t\t\t_types: types,\n\n\t\t\trandom: function() {\n\t\t\t\tvar random = Math.random;\n\t\t\t\treturn new Color(random(), random(), random());\n\t\t\t},\n\n\t\t\t_setOwner: function(color, owner, setter) {\n\t\t\t\tif (color) {\n\t\t\t\t\tif (color._owner && owner && color._owner !== owner) {\n\t\t\t\t\t\tcolor = color.clone();\n\t\t\t\t\t}\n\t\t\t\t\tif (!color._owner ^ !owner) {\n\t\t\t\t\t\tcolor._owner = owner || null;\n\t\t\t\t\t\tcolor._setter = setter || null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn color;\n\t\t\t}\n\t\t}\n\t});\n},\nnew function() {\n\tvar operators = {\n\t\tadd: function(a, b) {\n\t\t\treturn a + b;\n\t\t},\n\n\t\tsubtract: function(a, b) {\n\t\t\treturn a - b;\n\t\t},\n\n\t\tmultiply: function(a, b) {\n\t\t\treturn a * b;\n\t\t},\n\n\t\tdivide: function(a, b) {\n\t\t\treturn a / b;\n\t\t}\n\t};\n\n\treturn Base.each(operators, function(operator, name) {\n\t\tthis[name] = function(color) {\n\t\t\tcolor = Color.read(arguments);\n\t\t\tvar type = this._type,\n\t\t\t\tcomponents1 = this._components,\n\t\t\t\tcomponents2 = color._convert(type);\n\t\t\tfor (var i = 0, l = components1.length; i < l; i++)\n\t\t\t\tcomponents2[i] = operator(components1[i], components2[i]);\n\t\t\treturn new Color(type, components2,\n\t\t\t\t\tthis._alpha != null\n\t\t\t\t\t\t\t? operator(this._alpha, color.getAlpha())\n\t\t\t\t\t\t\t: null);\n\t\t};\n\t}, {\n\t});\n});\n\nvar Gradient = Base.extend({\n\t_class: 'Gradient',\n\n\tinitialize: function Gradient(stops, radial) {\n\t\tthis._id = UID.get();\n\t\tif (stops && Base.isPlainObject(stops)) {\n\t\t\tthis.set(stops);\n\t\t\tstops = radial = null;\n\t\t}\n\t\tif (this._stops == null) {\n\t\t\tthis.setStops(stops || ['white', 'black']);\n\t\t}\n\t\tif (this._radial == null) {\n\t\t\tthis.setRadial(typeof radial === 'string' && radial === 'radial'\n\t\t\t\t\t|| radial || false);\n\t\t}\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\treturn dictionary.add(this, function() {\n\t\t\treturn Base.serialize([this._stops, this._radial],\n\t\t\t\t\toptions, true, dictionary);\n\t\t});\n\t},\n\n\t_changed: function() {\n\t\tfor (var i = 0, l = this._owners && this._owners.length; i < l; i++) {\n\t\t\tthis._owners[i]._changed();\n\t\t}\n\t},\n\n\t_addOwner: function(color) {\n\t\tif (!this._owners)\n\t\t\tthis._owners = [];\n\t\tthis._owners.push(color);\n\t},\n\n\t_removeOwner: function(color) {\n\t\tvar index = this._owners ? this._owners.indexOf(color) : -1;\n\t\tif (index != -1) {\n\t\t\tthis._owners.splice(index, 1);\n\t\t\tif (!this._owners.length)\n\t\t\t\tthis._owners = undefined;\n\t\t}\n\t},\n\n\tclone: function() {\n\t\tvar stops = [];\n\t\tfor (var i = 0, l = this._stops.length; i < l; i++) {\n\t\t\tstops[i] = this._stops[i].clone();\n\t\t}\n\t\treturn new Gradient(stops, this._radial);\n\t},\n\n\tgetStops: function() {\n\t\treturn this._stops;\n\t},\n\n\tsetStops: function(stops) {\n\t\tif (stops.length < 2) {\n\t\t\tthrow new Error(\n\t\t\t\t\t'Gradient stop list needs to contain at least two stops.');\n\t\t}\n\t\tvar _stops = this._stops;\n\t\tif (_stops) {\n\t\t\tfor (var i = 0, l = _stops.length; i < l; i++)\n\t\t\t\t_stops[i]._owner = undefined;\n\t\t}\n\t\t_stops = this._stops = GradientStop.readList(stops, 0, { clone: true });\n\t\tfor (var i = 0, l = _stops.length; i < l; i++)\n\t\t\t_stops[i]._owner = this;\n\t\tthis._changed();\n\t},\n\n\tgetRadial: function() {\n\t\treturn this._radial;\n\t},\n\n\tsetRadial: function(radial) {\n\t\tthis._radial = radial;\n\t\tthis._changed();\n\t},\n\n\tequals: function(gradient) {\n\t\tif (gradient === this)\n\t\t\treturn true;\n\t\tif (gradient && this._class === gradient._class) {\n\t\t\tvar stops1 = this._stops,\n\t\t\t\tstops2 = gradient._stops,\n\t\t\t\tlength = stops1.length;\n\t\t\tif (length === stops2.length) {\n\t\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\t\tif (!stops1[i].equals(stops2[i]))\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n});\n\nvar GradientStop = Base.extend({\n\t_class: 'GradientStop',\n\n\tinitialize: function GradientStop(arg0, arg1) {\n\t\tvar color = arg0,\n\t\t\toffset = arg1;\n\t\tif (typeof arg0 === 'object' && arg1 === undefined) {\n\t\t\tif (Array.isArray(arg0) && typeof arg0[0] !== 'number') {\n\t\t\t\tcolor = arg0[0];\n\t\t\t\toffset = arg0[1];\n\t\t\t} else if ('color' in arg0 || 'offset' in arg0\n\t\t\t\t\t|| 'rampPoint' in arg0) {\n\t\t\t\tcolor = arg0.color;\n\t\t\t\toffset = arg0.offset || arg0.rampPoint || 0;\n\t\t\t}\n\t\t}\n\t\tthis.setColor(color);\n\t\tthis.setOffset(offset);\n\t},\n\n\tclone: function() {\n\t\treturn new GradientStop(this._color.clone(), this._offset);\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\tvar color = this._color,\n\t\t\toffset = this._offset;\n\t\treturn Base.serialize(offset == null ? [color] : [color, offset],\n\t\t\t\toptions, true, dictionary);\n\t},\n\n\t_changed: function() {\n\t\tif (this._owner)\n\t\t\tthis._owner._changed(129);\n\t},\n\n\tgetOffset: function() {\n\t\treturn this._offset;\n\t},\n\n\tsetOffset: function(offset) {\n\t\tthis._offset = offset;\n\t\tthis._changed();\n\t},\n\n\tgetRampPoint: '#getOffset',\n\tsetRampPoint: '#setOffset',\n\n\tgetColor: function() {\n\t\treturn this._color;\n\t},\n\n\tsetColor: function() {\n\t\tColor._setOwner(this._color, null);\n\t\tthis._color = Color._setOwner(Color.read(arguments, 0), this,\n\t\t\t\t'setColor');\n\t\tthis._changed();\n\t},\n\n\tequals: function(stop) {\n\t\treturn stop === this || stop && this._class === stop._class\n\t\t\t\t&& this._color.equals(stop._color)\n\t\t\t\t&& this._offset == stop._offset\n\t\t\t\t|| false;\n\t}\n});\n\nvar Style = Base.extend(new function() {\n\tvar itemDefaults = {\n\t\tfillColor: null,\n\t\tfillRule: 'nonzero',\n\t\tstrokeColor: null,\n\t\tstrokeWidth: 1,\n\t\tstrokeCap: 'butt',\n\t\tstrokeJoin: 'miter',\n\t\tstrokeScaling: true,\n\t\tmiterLimit: 10,\n\t\tdashOffset: 0,\n\t\tdashArray: [],\n\t\tshadowColor: null,\n\t\tshadowBlur: 0,\n\t\tshadowOffset: new Point(),\n\t\tselectedColor: null\n\t},\n\tgroupDefaults = Base.set({}, itemDefaults, {\n\t\tfontFamily: 'sans-serif',\n\t\tfontWeight: 'normal',\n\t\tfontSize: 12,\n\t\tleading: null,\n\t\tjustification: 'left'\n\t}),\n\ttextDefaults = Base.set({}, groupDefaults, {\n\t\tfillColor: new Color()\n\t}),\n\tflags = {\n\t\tstrokeWidth: 193,\n\t\tstrokeCap: 193,\n\t\tstrokeJoin: 193,\n\t\tstrokeScaling: 201,\n\t\tmiterLimit: 193,\n\t\tfontFamily: 9,\n\t\tfontWeight: 9,\n\t\tfontSize: 9,\n\t\tfont: 9,\n\t\tleading: 9,\n\t\tjustification: 9\n\t},\n\titem = {\n\t\tbeans: true\n\t},\n\tfields = {\n\t\t_class: 'Style',\n\t\tbeans: true,\n\n\t\tinitialize: function Style(style, _owner, _project) {\n\t\t\tthis._values = {};\n\t\t\tthis._owner = _owner;\n\t\t\tthis._project = _owner && _owner._project || _project\n\t\t\t\t\t|| paper.project;\n\t\t\tthis._defaults = !_owner || _owner instanceof Group ? groupDefaults\n\t\t\t\t\t: _owner instanceof TextItem ? textDefaults\n\t\t\t\t\t: itemDefaults;\n\t\t\tif (style)\n\t\t\t\tthis.set(style);\n\t\t}\n\t};\n\n\tBase.each(groupDefaults, function(value, key) {\n\t\tvar isColor = /Color$/.test(key),\n\t\t\tisPoint = key === 'shadowOffset',\n\t\t\tpart = Base.capitalize(key),\n\t\t\tflag = flags[key],\n\t\t\tset = 'set' + part,\n\t\t\tget = 'get' + part;\n\n\t\tfields[set] = function(value) {\n\t\t\tvar owner = this._owner,\n\t\t\t\tchildren = owner && owner._children,\n\t\t\t\tapplyToChildren = children && children.length > 0\n\t\t\t\t\t&& !(owner instanceof CompoundPath);\n\t\t\tif (applyToChildren) {\n\t\t\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\t\t\tchildren[i]._style[set](value);\n\t\t\t}\n\t\t\tif ((key === 'selectedColor' || !applyToChildren)\n\t\t\t\t\t&& key in this._defaults) {\n\t\t\t\tvar old = this._values[key];\n\t\t\t\tif (old !== value) {\n\t\t\t\t\tif (isColor) {\n\t\t\t\t\t\tif (old) {\n\t\t\t\t\t\t\tColor._setOwner(old, null);\n\t\t\t\t\t\t\told._canvasStyle = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value && value.constructor === Color) {\n\t\t\t\t\t\t\tvalue = Color._setOwner(value, owner,\n\t\t\t\t\t\t\t\t\tapplyToChildren && set);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis._values[key] = value;\n\t\t\t\t\tif (owner)\n\t\t\t\t\t\towner._changed(flag || 129);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tfields[get] = function(_dontMerge) {\n\t\t\tvar owner = this._owner,\n\t\t\t\tchildren = owner && owner._children,\n\t\t\t\tapplyToChildren = children && children.length > 0\n\t\t\t\t\t&& !(owner instanceof CompoundPath),\n\t\t\t\tvalue;\n\t\t\tif (applyToChildren && !_dontMerge) {\n\t\t\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\t\t\tvar childValue = children[i]._style[get]();\n\t\t\t\t\tif (!i) {\n\t\t\t\t\t\tvalue = childValue;\n\t\t\t\t\t} else if (!Base.equals(value, childValue)) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (key in this._defaults) {\n\t\t\t\tvar value = this._values[key];\n\t\t\t\tif (value === undefined) {\n\t\t\t\t\tvalue = this._defaults[key];\n\t\t\t\t\tif (value && value.clone) {\n\t\t\t\t\t\tvalue = value.clone();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar ctor = isColor ? Color : isPoint ? Point : null;\n\t\t\t\t\tif (ctor && !(value && value.constructor === ctor)) {\n\t\t\t\t\t\tthis._values[key] = value = ctor.read([value], 0,\n\t\t\t\t\t\t\t\t{ readNull: true, clone: true });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (value && isColor) {\n\t\t\t\tvalue = Color._setOwner(value, owner, applyToChildren && set);\n\t\t\t}\n\t\t\treturn value;\n\t\t};\n\n\t\titem[get] = function(_dontMerge) {\n\t\t\treturn this._style[get](_dontMerge);\n\t\t};\n\n\t\titem[set] = function(value) {\n\t\t\tthis._style[set](value);\n\t\t};\n\t});\n\n\tBase.each({\n\t\tFont: 'FontFamily',\n\t\tWindingRule: 'FillRule'\n\t}, function(value, key) {\n\t\tvar get = 'get' + key,\n\t\t\tset = 'set' + key;\n\t\tfields[get] = item[get] = '#get' + value;\n\t\tfields[set] = item[set] = '#set' + value;\n\t});\n\n\tItem.inject(item);\n\treturn fields;\n}, {\n\tset: function(style) {\n\t\tvar isStyle = style instanceof Style,\n\t\t\tvalues = isStyle ? style._values : style;\n\t\tif (values) {\n\t\t\tfor (var key in values) {\n\t\t\t\tif (key in this._defaults) {\n\t\t\t\t\tvar value = values[key];\n\t\t\t\t\tthis[key] = value && isStyle && value.clone\n\t\t\t\t\t\t\t? value.clone() : value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tequals: function(style) {\n\t\tfunction compare(style1, style2, secondary) {\n\t\t\tvar values1 = style1._values,\n\t\t\t\tvalues2 = style2._values,\n\t\t\t\tdefaults2 = style2._defaults;\n\t\t\tfor (var key in values1) {\n\t\t\t\tvar value1 = values1[key],\n\t\t\t\t\tvalue2 = values2[key];\n\t\t\t\tif (!(secondary && key in values2) && !Base.equals(value1,\n\t\t\t\t\t\tvalue2 === undefined ? defaults2[key] : value2))\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\treturn style === this || style && this._class === style._class\n\t\t\t\t&& compare(this, style)\n\t\t\t\t&& compare(style, this, true)\n\t\t\t\t|| false;\n\t},\n\n\t_dispose: function() {\n\t\tvar color;\n\t\tcolor = this.getFillColor();\n\t\tif (color) color._canvasStyle = null;\n\t\tcolor = this.getStrokeColor();\n\t\tif (color) color._canvasStyle = null;\n\t\tcolor = this.getShadowColor();\n\t\tif (color) color._canvasStyle = null;\n\t},\n\n\thasFill: function() {\n\t\tvar color = this.getFillColor();\n\t\treturn !!color && color.alpha > 0;\n\t},\n\n\thasStroke: function() {\n\t\tvar color = this.getStrokeColor();\n\t\treturn !!color && color.alpha > 0 && this.getStrokeWidth() > 0;\n\t},\n\n\thasShadow: function() {\n\t\tvar color = this.getShadowColor();\n\t\treturn !!color && color.alpha > 0 && (this.getShadowBlur() > 0\n\t\t\t\t|| !this.getShadowOffset().isZero());\n\t},\n\n\tgetView: function() {\n\t\treturn this._project._view;\n\t},\n\n\tgetFontStyle: function() {\n\t\tvar fontSize = this.getFontSize();\n\t\treturn this.getFontWeight()\n\t\t\t\t+ ' ' + fontSize + (/[a-z]/i.test(fontSize + '') ? ' ' : 'px ')\n\t\t\t\t+ this.getFontFamily();\n\t},\n\n\tgetFont: '#getFontFamily',\n\tsetFont: '#setFontFamily',\n\n\tgetLeading: function getLeading() {\n\t\tvar leading = getLeading.base.call(this),\n\t\t\tfontSize = this.getFontSize();\n\t\tif (/pt|em|%|px/.test(fontSize))\n\t\t\tfontSize = this.getView().getPixelSize(fontSize);\n\t\treturn leading != null ? leading : fontSize * 1.2;\n\t}\n\n});\n\nvar DomElement = new function() {\n\tfunction handlePrefix(el, name, set, value) {\n\t\tvar prefixes = ['', 'webkit', 'moz', 'Moz', 'ms', 'o'],\n\t\t\tsuffix = name[0].toUpperCase() + name.substring(1);\n\t\tfor (var i = 0; i < 6; i++) {\n\t\t\tvar prefix = prefixes[i],\n\t\t\t\tkey = prefix ? prefix + suffix : name;\n\t\t\tif (key in el) {\n\t\t\t\tif (set) {\n\t\t\t\t\tel[key] = value;\n\t\t\t\t} else {\n\t\t\t\t\treturn el[key];\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tgetStyles: function(el) {\n\t\t\tvar doc = el && el.nodeType !== 9 ? el.ownerDocument : el,\n\t\t\t\tview = doc && doc.defaultView;\n\t\t\treturn view && view.getComputedStyle(el, '');\n\t\t},\n\n\t\tgetBounds: function(el, viewport) {\n\t\t\tvar doc = el.ownerDocument,\n\t\t\t\tbody = doc.body,\n\t\t\t\thtml = doc.documentElement,\n\t\t\t\trect;\n\t\t\ttry {\n\t\t\t\trect = el.getBoundingClientRect();\n\t\t\t} catch (e) {\n\t\t\t\trect = { left: 0, top: 0, width: 0, height: 0 };\n\t\t\t}\n\t\t\tvar x = rect.left - (html.clientLeft || body.clientLeft || 0),\n\t\t\t\ty = rect.top - (html.clientTop || body.clientTop || 0);\n\t\t\tif (!viewport) {\n\t\t\t\tvar view = doc.defaultView;\n\t\t\t\tx += view.pageXOffset || html.scrollLeft || body.scrollLeft;\n\t\t\t\ty += view.pageYOffset || html.scrollTop || body.scrollTop;\n\t\t\t}\n\t\t\treturn new Rectangle(x, y, rect.width, rect.height);\n\t\t},\n\n\t\tgetViewportBounds: function(el) {\n\t\t\tvar doc = el.ownerDocument,\n\t\t\t\tview = doc.defaultView,\n\t\t\t\thtml = doc.documentElement;\n\t\t\treturn new Rectangle(0, 0,\n\t\t\t\tview.innerWidth || html.clientWidth,\n\t\t\t\tview.innerHeight || html.clientHeight\n\t\t\t);\n\t\t},\n\n\t\tgetOffset: function(el, viewport) {\n\t\t\treturn DomElement.getBounds(el, viewport).getPoint();\n\t\t},\n\n\t\tgetSize: function(el) {\n\t\t\treturn DomElement.getBounds(el, true).getSize();\n\t\t},\n\n\t\tisInvisible: function(el) {\n\t\t\treturn DomElement.getSize(el).equals(new Size(0, 0));\n\t\t},\n\n\t\tisInView: function(el) {\n\t\t\treturn !DomElement.isInvisible(el)\n\t\t\t\t\t&& DomElement.getViewportBounds(el).intersects(\n\t\t\t\t\t\tDomElement.getBounds(el, true));\n\t\t},\n\n\t\tisInserted: function(el) {\n\t\t\treturn document.body.contains(el);\n\t\t},\n\n\t\tgetPrefixed: function(el, name) {\n\t\t\treturn el && handlePrefix(el, name);\n\t\t},\n\n\t\tsetPrefixed: function(el, name, value) {\n\t\t\tif (typeof name === 'object') {\n\t\t\t\tfor (var key in name)\n\t\t\t\t\thandlePrefix(el, key, true, name[key]);\n\t\t\t} else {\n\t\t\t\thandlePrefix(el, name, true, value);\n\t\t\t}\n\t\t}\n\t};\n};\n\nvar DomEvent = {\n\tadd: function(el, events) {\n\t\tif (el) {\n\t\t\tfor (var type in events) {\n\t\t\t\tvar func = events[type],\n\t\t\t\t\tparts = type.split(/[\\s,]+/g);\n\t\t\t\tfor (var i = 0, l = parts.length; i < l; i++) {\n\t\t\t\t\tvar name = parts[i];\n\t\t\t\t\tvar options = (\n\t\t\t\t\t\tel === document\n\t\t\t\t\t\t&& (name === 'touchstart' || name === 'touchmove')\n\t\t\t\t\t) ? { passive: false } : false;\n\t\t\t\t\tel.addEventListener(name, func, options);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremove: function(el, events) {\n\t\tif (el) {\n\t\t\tfor (var type in events) {\n\t\t\t\tvar func = events[type],\n\t\t\t\t\tparts = type.split(/[\\s,]+/g);\n\t\t\t\tfor (var i = 0, l = parts.length; i < l; i++)\n\t\t\t\t\tel.removeEventListener(parts[i], func, false);\n\t\t\t}\n\t\t}\n\t},\n\n\tgetPoint: function(event) {\n\t\tvar pos = event.targetTouches\n\t\t\t\t? event.targetTouches.length\n\t\t\t\t\t? event.targetTouches[0]\n\t\t\t\t\t: event.changedTouches[0]\n\t\t\t\t: event;\n\t\treturn new Point(\n\t\t\tpos.pageX || pos.clientX + document.documentElement.scrollLeft,\n\t\t\tpos.pageY || pos.clientY + document.documentElement.scrollTop\n\t\t);\n\t},\n\n\tgetTarget: function(event) {\n\t\treturn event.target || event.srcElement;\n\t},\n\n\tgetRelatedTarget: function(event) {\n\t\treturn event.relatedTarget || event.toElement;\n\t},\n\n\tgetOffset: function(event, target) {\n\t\treturn DomEvent.getPoint(event).subtract(DomElement.getOffset(\n\t\t\t\ttarget || DomEvent.getTarget(event)));\n\t}\n};\n\nDomEvent.requestAnimationFrame = new function() {\n\tvar nativeRequest = DomElement.getPrefixed(window, 'requestAnimationFrame'),\n\t\trequested = false,\n\t\tcallbacks = [],\n\t\ttimer;\n\n\tfunction handleCallbacks() {\n\t\tvar functions = callbacks;\n\t\tcallbacks = [];\n\t\tfor (var i = 0, l = functions.length; i < l; i++)\n\t\t\tfunctions[i]();\n\t\trequested = nativeRequest && callbacks.length;\n\t\tif (requested)\n\t\t\tnativeRequest(handleCallbacks);\n\t}\n\n\treturn function(callback) {\n\t\tcallbacks.push(callback);\n\t\tif (nativeRequest) {\n\t\t\tif (!requested) {\n\t\t\t\tnativeRequest(handleCallbacks);\n\t\t\t\trequested = true;\n\t\t\t}\n\t\t} else if (!timer) {\n\t\t\ttimer = setInterval(handleCallbacks, 1000 / 60);\n\t\t}\n\t};\n};\n\nvar View = Base.extend(Emitter, {\n\t_class: 'View',\n\n\tinitialize: function View(project, element) {\n\n\t\tfunction getSize(name) {\n\t\t\treturn element[name] || parseInt(element.getAttribute(name), 10);\n\t\t}\n\n\t\tfunction getCanvasSize() {\n\t\t\tvar size = DomElement.getSize(element);\n\t\t\treturn size.isNaN() || size.isZero()\n\t\t\t\t\t? new Size(getSize('width'), getSize('height'))\n\t\t\t\t\t: size;\n\t\t}\n\n\t\tvar size;\n\t\tif (window && element) {\n\t\t\tthis._id = element.getAttribute('id');\n\t\t\tif (this._id == null)\n\t\t\t\telement.setAttribute('id', this._id = 'paper-view-' + View._id++);\n\t\t\tDomEvent.add(element, this._viewEvents);\n\t\t\tvar none = 'none';\n\t\t\tDomElement.setPrefixed(element.style, {\n\t\t\t\tuserDrag: none,\n\t\t\t\tuserSelect: none,\n\t\t\t\ttouchCallout: none,\n\t\t\t\tcontentZooming: none,\n\t\t\t\ttapHighlightColor: 'rgba(0,0,0,0)'\n\t\t\t});\n\n\t\t\tif (PaperScope.hasAttribute(element, 'resize')) {\n\t\t\t\tvar that = this;\n\t\t\t\tDomEvent.add(window, this._windowEvents = {\n\t\t\t\t\tresize: function() {\n\t\t\t\t\t\tthat.setViewSize(getCanvasSize());\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tsize = getCanvasSize();\n\n\t\t\tif (PaperScope.hasAttribute(element, 'stats')\n\t\t\t\t\t&& typeof Stats !== 'undefined') {\n\t\t\t\tthis._stats = new Stats();\n\t\t\t\tvar stats = this._stats.domElement,\n\t\t\t\t\tstyle = stats.style,\n\t\t\t\t\toffset = DomElement.getOffset(element);\n\t\t\t\tstyle.position = 'absolute';\n\t\t\t\tstyle.left = offset.x + 'px';\n\t\t\t\tstyle.top = offset.y + 'px';\n\t\t\t\tdocument.body.appendChild(stats);\n\t\t\t}\n\t\t} else {\n\t\t\tsize = new Size(element);\n\t\t\telement = null;\n\t\t}\n\t\tthis._project = project;\n\t\tthis._scope = project._scope;\n\t\tthis._element = element;\n\t\tif (!this._pixelRatio)\n\t\t\tthis._pixelRatio = window && window.devicePixelRatio || 1;\n\t\tthis._setElementSize(size.width, size.height);\n\t\tthis._viewSize = size;\n\t\tView._views.push(this);\n\t\tView._viewsById[this._id] = this;\n\t\t(this._matrix = new Matrix())._owner = this;\n\t\tif (!View._focused)\n\t\t\tView._focused = this;\n\t\tthis._frameItems = {};\n\t\tthis._frameItemCount = 0;\n\t\tthis._itemEvents = { native: {}, virtual: {} };\n\t\tthis._autoUpdate = !paper.agent.node;\n\t\tthis._needsUpdate = false;\n\t},\n\n\tremove: function() {\n\t\tif (!this._project)\n\t\t\treturn false;\n\t\tif (View._focused === this)\n\t\t\tView._focused = null;\n\t\tView._views.splice(View._views.indexOf(this), 1);\n\t\tdelete View._viewsById[this._id];\n\t\tvar project = this._project;\n\t\tif (project._view === this)\n\t\t\tproject._view = null;\n\t\tDomEvent.remove(this._element, this._viewEvents);\n\t\tDomEvent.remove(window, this._windowEvents);\n\t\tthis._element = this._project = null;\n\t\tthis.off('frame');\n\t\tthis._animate = false;\n\t\tthis._frameItems = {};\n\t\treturn true;\n\t},\n\n\t_events: Base.each(\n\t\tItem._itemHandlers.concat(['onResize', 'onKeyDown', 'onKeyUp']),\n\t\tfunction(name) {\n\t\t\tthis[name] = {};\n\t\t}, {\n\t\t\tonFrame: {\n\t\t\t\tinstall: function() {\n\t\t\t\t\tthis.play();\n\t\t\t\t},\n\n\t\t\t\tuninstall: function() {\n\t\t\t\t\tthis.pause();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t),\n\n\t_animate: false,\n\t_time: 0,\n\t_count: 0,\n\n\tgetAutoUpdate: function() {\n\t\treturn this._autoUpdate;\n\t},\n\n\tsetAutoUpdate: function(autoUpdate) {\n\t\tthis._autoUpdate = autoUpdate;\n\t\tif (autoUpdate)\n\t\t\tthis.requestUpdate();\n\t},\n\n\tupdate: function() {\n\t},\n\n\tdraw: function() {\n\t\tthis.update();\n\t},\n\n\trequestUpdate: function() {\n\t\tif (!this._requested) {\n\t\t\tvar that = this;\n\t\t\tDomEvent.requestAnimationFrame(function() {\n\t\t\t\tthat._requested = false;\n\t\t\t\tif (that._animate) {\n\t\t\t\t\tthat.requestUpdate();\n\t\t\t\t\tvar element = that._element;\n\t\t\t\t\tif ((!DomElement.getPrefixed(document, 'hidden')\n\t\t\t\t\t\t\t|| PaperScope.getAttribute(element, 'keepalive')\n\t\t\t\t\t\t\t\t=== 'true') && DomElement.isInView(element)) {\n\t\t\t\t\t\tthat._handleFrame();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (that._autoUpdate)\n\t\t\t\t\tthat.update();\n\t\t\t});\n\t\t\tthis._requested = true;\n\t\t}\n\t},\n\n\tplay: function() {\n\t\tthis._animate = true;\n\t\tthis.requestUpdate();\n\t},\n\n\tpause: function() {\n\t\tthis._animate = false;\n\t},\n\n\t_handleFrame: function() {\n\t\tpaper = this._scope;\n\t\tvar now = Date.now() / 1000,\n\t\t\tdelta = this._last ? now - this._last : 0;\n\t\tthis._last = now;\n\t\tthis.emit('frame', new Base({\n\t\t\tdelta: delta,\n\t\t\ttime: this._time += delta,\n\t\t\tcount: this._count++\n\t\t}));\n\t\tif (this._stats)\n\t\t\tthis._stats.update();\n\t},\n\n\t_animateItem: function(item, animate) {\n\t\tvar items = this._frameItems;\n\t\tif (animate) {\n\t\t\titems[item._id] = {\n\t\t\t\titem: item,\n\t\t\t\ttime: 0,\n\t\t\t\tcount: 0\n\t\t\t};\n\t\t\tif (++this._frameItemCount === 1)\n\t\t\t\tthis.on('frame', this._handleFrameItems);\n\t\t} else {\n\t\t\tdelete items[item._id];\n\t\t\tif (--this._frameItemCount === 0) {\n\t\t\t\tthis.off('frame', this._handleFrameItems);\n\t\t\t}\n\t\t}\n\t},\n\n\t_handleFrameItems: function(event) {\n\t\tfor (var i in this._frameItems) {\n\t\t\tvar entry = this._frameItems[i];\n\t\t\tentry.item.emit('frame', new Base(event, {\n\t\t\t\ttime: entry.time += event.delta,\n\t\t\t\tcount: entry.count++\n\t\t\t}));\n\t\t}\n\t},\n\n\t_changed: function() {\n\t\tthis._project._changed(4097);\n\t\tthis._bounds = this._decomposed = undefined;\n\t},\n\n\tgetElement: function() {\n\t\treturn this._element;\n\t},\n\n\tgetPixelRatio: function() {\n\t\treturn this._pixelRatio;\n\t},\n\n\tgetResolution: function() {\n\t\treturn this._pixelRatio * 72;\n\t},\n\n\tgetViewSize: function() {\n\t\tvar size = this._viewSize;\n\t\treturn new LinkedSize(size.width, size.height, this, 'setViewSize');\n\t},\n\n\tsetViewSize: function() {\n\t\tvar size = Size.read(arguments),\n\t\t\tdelta = size.subtract(this._viewSize);\n\t\tif (delta.isZero())\n\t\t\treturn;\n\t\tthis._setElementSize(size.width, size.height);\n\t\tthis._viewSize.set(size);\n\t\tthis._changed();\n\t\tthis.emit('resize', { size: size, delta: delta });\n\t\tif (this._autoUpdate) {\n\t\t\tthis.update();\n\t\t}\n\t},\n\n\t_setElementSize: function(width, height) {\n\t\tvar element = this._element;\n\t\tif (element) {\n\t\t\tif (element.width !== width)\n\t\t\t\telement.width = width;\n\t\t\tif (element.height !== height)\n\t\t\t\telement.height = height;\n\t\t}\n\t},\n\n\tgetBounds: function() {\n\t\tif (!this._bounds)\n\t\t\tthis._bounds = this._matrix.inverted()._transformBounds(\n\t\t\t\t\tnew Rectangle(new Point(), this._viewSize));\n\t\treturn this._bounds;\n\t},\n\n\tgetSize: function() {\n\t\treturn this.getBounds().getSize();\n\t},\n\n\tisVisible: function() {\n\t\treturn DomElement.isInView(this._element);\n\t},\n\n\tisInserted: function() {\n\t\treturn DomElement.isInserted(this._element);\n\t},\n\n\tgetPixelSize: function(size) {\n\t\tvar element = this._element,\n\t\t\tpixels;\n\t\tif (element) {\n\t\t\tvar parent = element.parentNode,\n\t\t\t\ttemp = document.createElement('div');\n\t\t\ttemp.style.fontSize = size;\n\t\t\tparent.appendChild(temp);\n\t\t\tpixels = parseFloat(DomElement.getStyles(temp).fontSize);\n\t\t\tparent.removeChild(temp);\n\t\t} else {\n\t\t\tpixels = parseFloat(pixels);\n\t\t}\n\t\treturn pixels;\n\t},\n\n\tgetTextWidth: function(font, lines) {\n\t\treturn 0;\n\t}\n}, Base.each(['rotate', 'scale', 'shear', 'skew'], function(key) {\n\tvar rotate = key === 'rotate';\n\tthis[key] = function() {\n\t\tvar args = arguments,\n\t\t\tvalue = (rotate ? Base : Point).read(args),\n\t\t\tcenter = Point.read(args, 0, { readNull: true });\n\t\treturn this.transform(new Matrix()[key](value,\n\t\t\t\tcenter || this.getCenter(true)));\n\t};\n}, {\n\t_decompose: function() {\n\t\treturn this._decomposed || (this._decomposed = this._matrix.decompose());\n\t},\n\n\ttranslate: function() {\n\t\tvar mx = new Matrix();\n\t\treturn this.transform(mx.translate.apply(mx, arguments));\n\t},\n\n\tgetCenter: function() {\n\t\treturn this.getBounds().getCenter();\n\t},\n\n\tsetCenter: function() {\n\t\tvar center = Point.read(arguments);\n\t\tthis.translate(this.getCenter().subtract(center));\n\t},\n\n\tgetZoom: function() {\n\t\tvar scaling = this._decompose().scaling;\n\t\treturn (scaling.x + scaling.y) / 2;\n\t},\n\n\tsetZoom: function(zoom) {\n\t\tthis.transform(new Matrix().scale(zoom / this.getZoom(),\n\t\t\tthis.getCenter()));\n\t},\n\n\tgetRotation: function() {\n\t\treturn this._decompose().rotation;\n\t},\n\n\tsetRotation: function(rotation) {\n\t\tvar current = this.getRotation();\n\t\tif (current != null && rotation != null) {\n\t\t\tthis.rotate(rotation - current);\n\t\t}\n\t},\n\n\tgetScaling: function() {\n\t\tvar scaling = this._decompose().scaling;\n\t\treturn new LinkedPoint(scaling.x, scaling.y, this, 'setScaling');\n\t},\n\n\tsetScaling: function() {\n\t\tvar current = this.getScaling(),\n\t\t\tscaling = Point.read(arguments, 0, { clone: true, readNull: true });\n\t\tif (current && scaling) {\n\t\t\tthis.scale(scaling.x / current.x, scaling.y / current.y);\n\t\t}\n\t},\n\n\tgetMatrix: function() {\n\t\treturn this._matrix;\n\t},\n\n\tsetMatrix: function() {\n\t\tvar matrix = this._matrix;\n\t\tmatrix.initialize.apply(matrix, arguments);\n\t},\n\n\ttransform: function(matrix) {\n\t\tthis._matrix.append(matrix);\n\t},\n\n\tscrollBy: function() {\n\t\tthis.translate(Point.read(arguments).negate());\n\t}\n}), {\n\n\tprojectToView: function() {\n\t\treturn this._matrix._transformPoint(Point.read(arguments));\n\t},\n\n\tviewToProject: function() {\n\t\treturn this._matrix._inverseTransform(Point.read(arguments));\n\t},\n\n\tgetEventPoint: function(event) {\n\t\treturn this.viewToProject(DomEvent.getOffset(event, this._element));\n\t},\n\n}, {\n\tstatics: {\n\t\t_views: [],\n\t\t_viewsById: {},\n\t\t_id: 0,\n\n\t\tcreate: function(project, element) {\n\t\t\tif (document && typeof element === 'string')\n\t\t\t\telement = document.getElementById(element);\n\t\t\tvar ctor = window ? CanvasView : View;\n\t\t\treturn new ctor(project, element);\n\t\t}\n\t}\n},\nnew function() {\n\tif (!window)\n\t\treturn;\n\tvar prevFocus,\n\t\ttempFocus,\n\t\tdragging = false,\n\t\tmouseDown = false;\n\n\tfunction getView(event) {\n\t\tvar target = DomEvent.getTarget(event);\n\t\treturn target.getAttribute && View._viewsById[\n\t\t\t\ttarget.getAttribute('id')];\n\t}\n\n\tfunction updateFocus() {\n\t\tvar view = View._focused;\n\t\tif (!view || !view.isVisible()) {\n\t\t\tfor (var i = 0, l = View._views.length; i < l; i++) {\n\t\t\t\tif ((view = View._views[i]).isVisible()) {\n\t\t\t\t\tView._focused = tempFocus = view;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction handleMouseMove(view, event, point) {\n\t\tview._handleMouseEvent('mousemove', event, point);\n\t}\n\n\tvar navigator = window.navigator,\n\t\tmousedown, mousemove, mouseup;\n\tif (navigator.pointerEnabled || navigator.msPointerEnabled) {\n\t\tmousedown = 'pointerdown MSPointerDown';\n\t\tmousemove = 'pointermove MSPointerMove';\n\t\tmouseup = 'pointerup pointercancel MSPointerUp MSPointerCancel';\n\t} else {\n\t\tmousedown = 'touchstart';\n\t\tmousemove = 'touchmove';\n\t\tmouseup = 'touchend touchcancel';\n\t\tif (!('ontouchstart' in window && navigator.userAgent.match(\n\t\t\t\t/mobile|tablet|ip(ad|hone|od)|android|silk/i))) {\n\t\t\tmousedown += ' mousedown';\n\t\t\tmousemove += ' mousemove';\n\t\t\tmouseup += ' mouseup';\n\t\t}\n\t}\n\n\tvar viewEvents = {},\n\t\tdocEvents = {\n\t\t\tmouseout: function(event) {\n\t\t\t\tvar view = View._focused,\n\t\t\t\t\ttarget = DomEvent.getRelatedTarget(event);\n\t\t\t\tif (view && (!target || target.nodeName === 'HTML')) {\n\t\t\t\t\tvar offset = DomEvent.getOffset(event, view._element),\n\t\t\t\t\t\tx = offset.x,\n\t\t\t\t\t\tabs = Math.abs,\n\t\t\t\t\t\tax = abs(x),\n\t\t\t\t\t\tmax = 1 << 25,\n\t\t\t\t\t\tdiff = ax - max;\n\t\t\t\t\toffset.x = abs(diff) < ax ? diff * (x < 0 ? -1 : 1) : x;\n\t\t\t\t\thandleMouseMove(view, event, view.viewToProject(offset));\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tscroll: updateFocus\n\t\t};\n\n\tviewEvents[mousedown] = function(event) {\n\t\tvar view = View._focused = getView(event);\n\t\tif (!dragging) {\n\t\t\tdragging = true;\n\t\t\tview._handleMouseEvent('mousedown', event);\n\t\t}\n\t};\n\n\tdocEvents[mousemove] = function(event) {\n\t\tvar view = View._focused;\n\t\tif (!mouseDown) {\n\t\t\tvar target = getView(event);\n\t\t\tif (target) {\n\t\t\t\tif (view !== target) {\n\t\t\t\t\tif (view)\n\t\t\t\t\t\thandleMouseMove(view, event);\n\t\t\t\t\tif (!prevFocus)\n\t\t\t\t\t\tprevFocus = view;\n\t\t\t\t\tview = View._focused = tempFocus = target;\n\t\t\t\t}\n\t\t\t} else if (tempFocus && tempFocus === view) {\n\t\t\t\tif (prevFocus && !prevFocus.isInserted())\n\t\t\t\t\tprevFocus = null;\n\t\t\t\tview = View._focused = prevFocus;\n\t\t\t\tprevFocus = null;\n\t\t\t\tupdateFocus();\n\t\t\t}\n\t\t}\n\t\tif (view)\n\t\t\thandleMouseMove(view, event);\n\t};\n\n\tdocEvents[mousedown] = function() {\n\t\tmouseDown = true;\n\t};\n\n\tdocEvents[mouseup] = function(event) {\n\t\tvar view = View._focused;\n\t\tif (view && dragging)\n\t\t\tview._handleMouseEvent('mouseup', event);\n\t\tmouseDown = dragging = false;\n\t};\n\n\tDomEvent.add(document, docEvents);\n\n\tDomEvent.add(window, {\n\t\tload: updateFocus\n\t});\n\n\tvar called = false,\n\t\tprevented = false,\n\t\tfallbacks = {\n\t\t\tdoubleclick: 'click',\n\t\t\tmousedrag: 'mousemove'\n\t\t},\n\t\twasInView = false,\n\t\toverView,\n\t\tdownPoint,\n\t\tlastPoint,\n\t\tdownItem,\n\t\toverItem,\n\t\tdragItem,\n\t\tclickItem,\n\t\tclickTime,\n\t\tdblClick;\n\n\tfunction emitMouseEvent(obj, target, type, event, point, prevPoint,\n\t\t\tstopItem) {\n\t\tvar stopped = false,\n\t\t\tmouseEvent;\n\n\t\tfunction emit(obj, type) {\n\t\t\tif (obj.responds(type)) {\n\t\t\t\tif (!mouseEvent) {\n\t\t\t\t\tmouseEvent = new MouseEvent(type, event, point,\n\t\t\t\t\t\t\ttarget || obj,\n\t\t\t\t\t\t\tprevPoint ? point.subtract(prevPoint) : null);\n\t\t\t\t}\n\t\t\t\tif (obj.emit(type, mouseEvent)) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif (mouseEvent.prevented)\n\t\t\t\t\t\tprevented = true;\n\t\t\t\t\tif (mouseEvent.stopped)\n\t\t\t\t\t\treturn stopped = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar fallback = fallbacks[type];\n\t\t\t\tif (fallback)\n\t\t\t\t\treturn emit(obj, fallback);\n\t\t\t}\n\t\t}\n\n\t\twhile (obj && obj !== stopItem) {\n\t\t\tif (emit(obj, type))\n\t\t\t\tbreak;\n\t\t\tobj = obj._parent;\n\t\t}\n\t\treturn stopped;\n\t}\n\n\tfunction emitMouseEvents(view, hitItem, type, event, point, prevPoint) {\n\t\tview._project.removeOn(type);\n\t\tprevented = called = false;\n\t\treturn (dragItem && emitMouseEvent(dragItem, null, type, event,\n\t\t\t\t\tpoint, prevPoint)\n\t\t\t|| hitItem && hitItem !== dragItem\n\t\t\t\t&& !hitItem.isDescendant(dragItem)\n\t\t\t\t&& emitMouseEvent(hitItem, null, type === 'mousedrag' ?\n\t\t\t\t\t'mousemove' : type, event, point, prevPoint, dragItem)\n\t\t\t|| emitMouseEvent(view, dragItem || hitItem || view, type, event,\n\t\t\t\t\tpoint, prevPoint));\n\t}\n\n\tvar itemEventsMap = {\n\t\tmousedown: {\n\t\t\tmousedown: 1,\n\t\t\tmousedrag: 1,\n\t\t\tclick: 1,\n\t\t\tdoubleclick: 1\n\t\t},\n\t\tmouseup: {\n\t\t\tmouseup: 1,\n\t\t\tmousedrag: 1,\n\t\t\tclick: 1,\n\t\t\tdoubleclick: 1\n\t\t},\n\t\tmousemove: {\n\t\t\tmousedrag: 1,\n\t\t\tmousemove: 1,\n\t\t\tmouseenter: 1,\n\t\t\tmouseleave: 1\n\t\t}\n\t};\n\n\treturn {\n\t\t_viewEvents: viewEvents,\n\n\t\t_handleMouseEvent: function(type, event, point) {\n\t\t\tvar itemEvents = this._itemEvents,\n\t\t\t\thitItems = itemEvents.native[type],\n\t\t\t\tnativeMove = type === 'mousemove',\n\t\t\t\ttool = this._scope.tool,\n\t\t\t\tview = this;\n\n\t\t\tfunction responds(type) {\n\t\t\t\treturn itemEvents.virtual[type] || view.responds(type)\n\t\t\t\t\t\t|| tool && tool.responds(type);\n\t\t\t}\n\n\t\t\tif (nativeMove && dragging && responds('mousedrag'))\n\t\t\t\ttype = 'mousedrag';\n\t\t\tif (!point)\n\t\t\t\tpoint = this.getEventPoint(event);\n\n\t\t\tvar inView = this.getBounds().contains(point),\n\t\t\t\thit = hitItems && inView && view._project.hitTest(point, {\n\t\t\t\t\ttolerance: 0,\n\t\t\t\t\tfill: true,\n\t\t\t\t\tstroke: true\n\t\t\t\t}),\n\t\t\t\thitItem = hit && hit.item || null,\n\t\t\t\thandle = false,\n\t\t\t\tmouse = {};\n\t\t\tmouse[type.substr(5)] = true;\n\n\t\t\tif (hitItems && hitItem !== overItem) {\n\t\t\t\tif (overItem) {\n\t\t\t\t\temitMouseEvent(overItem, null, 'mouseleave', event, point);\n\t\t\t\t}\n\t\t\t\tif (hitItem) {\n\t\t\t\t\temitMouseEvent(hitItem, null, 'mouseenter', event, point);\n\t\t\t\t}\n\t\t\t\toverItem = hitItem;\n\t\t\t}\n\t\t\tif (wasInView ^ inView) {\n\t\t\t\temitMouseEvent(this, null, inView ? 'mouseenter' : 'mouseleave',\n\t\t\t\t\t\tevent, point);\n\t\t\t\toverView = inView ? this : null;\n\t\t\t\thandle = true;\n\t\t\t}\n\t\t\tif ((inView || mouse.drag) && !point.equals(lastPoint)) {\n\t\t\t\temitMouseEvents(this, hitItem, nativeMove ? type : 'mousemove',\n\t\t\t\t\t\tevent, point, lastPoint);\n\t\t\t\thandle = true;\n\t\t\t}\n\t\t\twasInView = inView;\n\t\t\tif (mouse.down && inView || mouse.up && downPoint) {\n\t\t\t\temitMouseEvents(this, hitItem, type, event, point, downPoint);\n\t\t\t\tif (mouse.down) {\n\t\t\t\t\tdblClick = hitItem === clickItem\n\t\t\t\t\t\t&& (Date.now() - clickTime < 300);\n\t\t\t\t\tdownItem = clickItem = hitItem;\n\t\t\t\t\tif (!prevented && hitItem) {\n\t\t\t\t\t\tvar item = hitItem;\n\t\t\t\t\t\twhile (item && !item.responds('mousedrag'))\n\t\t\t\t\t\t\titem = item._parent;\n\t\t\t\t\t\tif (item)\n\t\t\t\t\t\t\tdragItem = hitItem;\n\t\t\t\t\t}\n\t\t\t\t\tdownPoint = point;\n\t\t\t\t} else if (mouse.up) {\n\t\t\t\t\tif (!prevented && hitItem === downItem) {\n\t\t\t\t\t\tclickTime = Date.now();\n\t\t\t\t\t\temitMouseEvents(this, hitItem, dblClick ? 'doubleclick'\n\t\t\t\t\t\t\t\t: 'click', event, point, downPoint);\n\t\t\t\t\t\tdblClick = false;\n\t\t\t\t\t}\n\t\t\t\t\tdownItem = dragItem = null;\n\t\t\t\t}\n\t\t\t\twasInView = false;\n\t\t\t\thandle = true;\n\t\t\t}\n\t\t\tlastPoint = point;\n\t\t\tif (handle && tool) {\n\t\t\t\tcalled = tool._handleMouseEvent(type, event, point, mouse)\n\t\t\t\t\t|| called;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tevent.cancelable !== false\n\t\t\t\t&& (called && !mouse.move || mouse.down && responds('mouseup'))\n\t\t\t) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\n\t\t_handleKeyEvent: function(type, event, key, character) {\n\t\t\tvar scope = this._scope,\n\t\t\t\ttool = scope.tool,\n\t\t\t\tkeyEvent;\n\n\t\t\tfunction emit(obj) {\n\t\t\t\tif (obj.responds(type)) {\n\t\t\t\t\tpaper = scope;\n\t\t\t\t\tobj.emit(type, keyEvent = keyEvent\n\t\t\t\t\t\t\t|| new KeyEvent(type, event, key, character));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isVisible()) {\n\t\t\t\temit(this);\n\t\t\t\tif (tool && tool.responds(type))\n\t\t\t\t\temit(tool);\n\t\t\t}\n\t\t},\n\n\t\t_countItemEvent: function(type, sign) {\n\t\t\tvar itemEvents = this._itemEvents,\n\t\t\t\tnative = itemEvents.native,\n\t\t\t\tvirtual = itemEvents.virtual;\n\t\t\tfor (var key in itemEventsMap) {\n\t\t\t\tnative[key] = (native[key] || 0)\n\t\t\t\t\t\t+ (itemEventsMap[key][type] || 0) * sign;\n\t\t\t}\n\t\t\tvirtual[type] = (virtual[type] || 0) + sign;\n\t\t},\n\n\t\tstatics: {\n\t\t\tupdateFocus: updateFocus,\n\n\t\t\t_resetState: function() {\n\t\t\t\tdragging = mouseDown = called = wasInView = false;\n\t\t\t\tprevFocus = tempFocus = overView = downPoint = lastPoint =\n\t\t\t\t\tdownItem = overItem = dragItem = clickItem = clickTime =\n\t\t\t\t\tdblClick = null;\n\t\t\t}\n\t\t}\n\t};\n});\n\nvar CanvasView = View.extend({\n\t_class: 'CanvasView',\n\n\tinitialize: function CanvasView(project, canvas) {\n\t\tif (!(canvas instanceof window.HTMLCanvasElement)) {\n\t\t\tvar size = Size.read(arguments, 1);\n\t\t\tif (size.isZero())\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'Cannot create CanvasView with the provided argument: '\n\t\t\t\t\t\t+ Base.slice(arguments, 1));\n\t\t\tcanvas = CanvasProvider.getCanvas(size);\n\t\t}\n\t\tvar ctx = this._context = canvas.getContext('2d');\n\t\tctx.save();\n\t\tthis._pixelRatio = 1;\n\t\tif (!/^off|false$/.test(PaperScope.getAttribute(canvas, 'hidpi'))) {\n\t\t\tvar deviceRatio = window.devicePixelRatio || 1,\n\t\t\t\tbackingStoreRatio = DomElement.getPrefixed(ctx,\n\t\t\t\t\t\t'backingStorePixelRatio') || 1;\n\t\t\tthis._pixelRatio = deviceRatio / backingStoreRatio;\n\t\t}\n\t\tView.call(this, project, canvas);\n\t\tthis._needsUpdate = true;\n\t},\n\n\tremove: function remove() {\n\t\tthis._context.restore();\n\t\treturn remove.base.call(this);\n\t},\n\n\t_setElementSize: function _setElementSize(width, height) {\n\t\tvar pixelRatio = this._pixelRatio;\n\t\t_setElementSize.base.call(this, width * pixelRatio, height * pixelRatio);\n\t\tif (pixelRatio !== 1) {\n\t\t\tvar element = this._element,\n\t\t\t\tctx = this._context;\n\t\t\tif (!PaperScope.hasAttribute(element, 'resize')) {\n\t\t\t\tvar style = element.style;\n\t\t\t\tstyle.width = width + 'px';\n\t\t\t\tstyle.height = height + 'px';\n\t\t\t}\n\t\t\tctx.restore();\n\t\t\tctx.save();\n\t\t\tctx.scale(pixelRatio, pixelRatio);\n\t\t}\n\t},\n\n\tgetContext: function() {\n\t\treturn this._context;\n\t},\n\n\tgetPixelSize: function getPixelSize(size) {\n\t\tvar agent = paper.agent,\n\t\t\tpixels;\n\t\tif (agent && agent.firefox) {\n\t\t\tpixels = getPixelSize.base.call(this, size);\n\t\t} else {\n\t\t\tvar ctx = this._context,\n\t\t\t\tprevFont = ctx.font;\n\t\t\tctx.font = size + ' serif';\n\t\t\tpixels = parseFloat(ctx.font);\n\t\t\tctx.font = prevFont;\n\t\t}\n\t\treturn pixels;\n\t},\n\n\tgetTextWidth: function(font, lines) {\n\t\tvar ctx = this._context,\n\t\t\tprevFont = ctx.font,\n\t\t\twidth = 0;\n\t\tctx.font = font;\n\t\tfor (var i = 0, l = lines.length; i < l; i++)\n\t\t\twidth = Math.max(width, ctx.measureText(lines[i]).width);\n\t\tctx.font = prevFont;\n\t\treturn width;\n\t},\n\n\tupdate: function() {\n\t\tif (!this._needsUpdate)\n\t\t\treturn false;\n\t\tvar project = this._project,\n\t\t\tctx = this._context,\n\t\t\tsize = this._viewSize;\n\t\tctx.clearRect(0, 0, size.width + 1, size.height + 1);\n\t\tif (project)\n\t\t\tproject.draw(ctx, this._matrix, this._pixelRatio);\n\t\tthis._needsUpdate = false;\n\t\treturn true;\n\t}\n});\n\nvar Event = Base.extend({\n\t_class: 'Event',\n\n\tinitialize: function Event(event) {\n\t\tthis.event = event;\n\t\tthis.type = event && event.type;\n\t},\n\n\tprevented: false,\n\tstopped: false,\n\n\tpreventDefault: function() {\n\t\tthis.prevented = true;\n\t\tthis.event.preventDefault();\n\t},\n\n\tstopPropagation: function() {\n\t\tthis.stopped = true;\n\t\tthis.event.stopPropagation();\n\t},\n\n\tstop: function() {\n\t\tthis.stopPropagation();\n\t\tthis.preventDefault();\n\t},\n\n\tgetTimeStamp: function() {\n\t\treturn this.event.timeStamp;\n\t},\n\n\tgetModifiers: function() {\n\t\treturn Key.modifiers;\n\t}\n});\n\nvar KeyEvent = Event.extend({\n\t_class: 'KeyEvent',\n\n\tinitialize: function KeyEvent(type, event, key, character) {\n\t\tthis.type = type;\n\t\tthis.event = event;\n\t\tthis.key = key;\n\t\tthis.character = character;\n\t},\n\n\ttoString: function() {\n\t\treturn \"{ type: '\" + this.type\n\t\t\t\t+ \"', key: '\" + this.key\n\t\t\t\t+ \"', character: '\" + this.character\n\t\t\t\t+ \"', modifiers: \" + this.getModifiers()\n\t\t\t\t+ \" }\";\n\t}\n});\n\nvar Key = new function() {\n\tvar keyLookup = {\n\t\t\t'\\t': 'tab',\n\t\t\t' ': 'space',\n\t\t\t'\\b': 'backspace',\n\t\t\t'\\x7f': 'delete',\n\t\t\t'Spacebar': 'space',\n\t\t\t'Del': 'delete',\n\t\t\t'Win': 'meta',\n\t\t\t'Esc': 'escape'\n\t\t},\n\n\t\tcharLookup = {\n\t\t\t'tab': '\\t',\n\t\t\t'space': ' ',\n\t\t\t'enter': '\\r'\n\t\t},\n\n\t\tkeyMap = {},\n\t\tcharMap = {},\n\t\tmetaFixMap,\n\t\tdownKey,\n\n\t\tmodifiers = new Base({\n\t\t\tshift: false,\n\t\t\tcontrol: false,\n\t\t\talt: false,\n\t\t\tmeta: false,\n\t\t\tcapsLock: false,\n\t\t\tspace: false\n\t\t}).inject({\n\t\t\toption: {\n\t\t\t\tget: function() {\n\t\t\t\t\treturn this.alt;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tcommand: {\n\t\t\t\tget: function() {\n\t\t\t\t\tvar agent = paper && paper.agent;\n\t\t\t\t\treturn agent && agent.mac ? this.meta : this.control;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\tfunction getKey(event) {\n\t\tvar key = event.key || event.keyIdentifier;\n\t\tkey = /^U\\+/.test(key)\n\t\t\t\t? String.fromCharCode(parseInt(key.substr(2), 16))\n\t\t\t\t: /^Arrow[A-Z]/.test(key) ? key.substr(5)\n\t\t\t\t: key === 'Unidentified'  || key === undefined\n\t\t\t\t\t? String.fromCharCode(event.keyCode)\n\t\t\t\t\t: key;\n\t\treturn keyLookup[key] ||\n\t\t\t\t(key.length > 1 ? Base.hyphenate(key) : key.toLowerCase());\n\t}\n\n\tfunction handleKey(down, key, character, event) {\n\t\tvar type = down ? 'keydown' : 'keyup',\n\t\t\tview = View._focused,\n\t\t\tname;\n\t\tkeyMap[key] = down;\n\t\tif (down) {\n\t\t\tcharMap[key] = character;\n\t\t} else {\n\t\t\tdelete charMap[key];\n\t\t}\n\t\tif (key.length > 1 && (name = Base.camelize(key)) in modifiers) {\n\t\t\tmodifiers[name] = down;\n\t\t\tvar agent = paper && paper.agent;\n\t\t\tif (name === 'meta' && agent && agent.mac) {\n\t\t\t\tif (down) {\n\t\t\t\t\tmetaFixMap = {};\n\t\t\t\t} else {\n\t\t\t\t\tfor (var k in metaFixMap) {\n\t\t\t\t\t\tif (k in charMap)\n\t\t\t\t\t\t\thandleKey(false, k, metaFixMap[k], event);\n\t\t\t\t\t}\n\t\t\t\t\tmetaFixMap = null;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (down && metaFixMap) {\n\t\t\tmetaFixMap[key] = character;\n\t\t}\n\t\tif (view) {\n\t\t\tview._handleKeyEvent(down ? 'keydown' : 'keyup', event, key,\n\t\t\t\t\tcharacter);\n\t\t}\n\t}\n\n\tDomEvent.add(document, {\n\t\tkeydown: function(event) {\n\t\t\tvar key = getKey(event),\n\t\t\t\tagent = paper && paper.agent;\n\t\t\tif (key.length > 1 || agent && (agent.chrome && (event.altKey\n\t\t\t\t\t\t|| agent.mac && event.metaKey\n\t\t\t\t\t\t|| !agent.mac && event.ctrlKey))) {\n\t\t\t\thandleKey(true, key,\n\t\t\t\t\t\tcharLookup[key] || (key.length > 1 ? '' : key), event);\n\t\t\t} else {\n\t\t\t\tdownKey = key;\n\t\t\t}\n\t\t},\n\n\t\tkeypress: function(event) {\n\t\t\tif (downKey) {\n\t\t\t\tvar key = getKey(event),\n\t\t\t\t\tcode = event.charCode,\n\t\t\t\t\tcharacter = code >= 32 ? String.fromCharCode(code)\n\t\t\t\t\t\t: key.length > 1 ? '' : key;\n\t\t\t\tif (key !== downKey) {\n\t\t\t\t\tkey = character.toLowerCase();\n\t\t\t\t}\n\t\t\t\thandleKey(true, key, character, event);\n\t\t\t\tdownKey = null;\n\t\t\t}\n\t\t},\n\n\t\tkeyup: function(event) {\n\t\t\tvar key = getKey(event);\n\t\t\tif (key in charMap)\n\t\t\t\thandleKey(false, key, charMap[key], event);\n\t\t}\n\t});\n\n\tDomEvent.add(window, {\n\t\tblur: function(event) {\n\t\t\tfor (var key in charMap)\n\t\t\t\thandleKey(false, key, charMap[key], event);\n\t\t}\n\t});\n\n\treturn {\n\t\tmodifiers: modifiers,\n\n\t\tisDown: function(key) {\n\t\t\treturn !!keyMap[key];\n\t\t}\n\t};\n};\n\nvar MouseEvent = Event.extend({\n\t_class: 'MouseEvent',\n\n\tinitialize: function MouseEvent(type, event, point, target, delta) {\n\t\tthis.type = type;\n\t\tthis.event = event;\n\t\tthis.point = point;\n\t\tthis.target = target;\n\t\tthis.delta = delta;\n\t},\n\n\ttoString: function() {\n\t\treturn \"{ type: '\" + this.type\n\t\t\t\t+ \"', point: \" + this.point\n\t\t\t\t+ ', target: ' + this.target\n\t\t\t\t+ (this.delta ? ', delta: ' + this.delta : '')\n\t\t\t\t+ ', modifiers: ' + this.getModifiers()\n\t\t\t\t+ ' }';\n\t}\n});\n\nvar ToolEvent = Event.extend({\n\t_class: 'ToolEvent',\n\t_item: null,\n\n\tinitialize: function ToolEvent(tool, type, event) {\n\t\tthis.tool = tool;\n\t\tthis.type = type;\n\t\tthis.event = event;\n\t},\n\n\t_choosePoint: function(point, toolPoint) {\n\t\treturn point ? point : toolPoint ? toolPoint.clone() : null;\n\t},\n\n\tgetPoint: function() {\n\t\treturn this._choosePoint(this._point, this.tool._point);\n\t},\n\n\tsetPoint: function(point) {\n\t\tthis._point = point;\n\t},\n\n\tgetLastPoint: function() {\n\t\treturn this._choosePoint(this._lastPoint, this.tool._lastPoint);\n\t},\n\n\tsetLastPoint: function(lastPoint) {\n\t\tthis._lastPoint = lastPoint;\n\t},\n\n\tgetDownPoint: function() {\n\t\treturn this._choosePoint(this._downPoint, this.tool._downPoint);\n\t},\n\n\tsetDownPoint: function(downPoint) {\n\t\tthis._downPoint = downPoint;\n\t},\n\n\tgetMiddlePoint: function() {\n\t\tif (!this._middlePoint && this.tool._lastPoint) {\n\t\t\treturn this.tool._point.add(this.tool._lastPoint).divide(2);\n\t\t}\n\t\treturn this._middlePoint;\n\t},\n\n\tsetMiddlePoint: function(middlePoint) {\n\t\tthis._middlePoint = middlePoint;\n\t},\n\n\tgetDelta: function() {\n\t\treturn !this._delta && this.tool._lastPoint\n\t\t\t\t? this.tool._point.subtract(this.tool._lastPoint)\n\t\t\t\t: this._delta;\n\t},\n\n\tsetDelta: function(delta) {\n\t\tthis._delta = delta;\n\t},\n\n\tgetCount: function() {\n\t\treturn this.tool[/^mouse(down|up)$/.test(this.type)\n\t\t\t\t? '_downCount' : '_moveCount'];\n\t},\n\n\tsetCount: function(count) {\n\t\tthis.tool[/^mouse(down|up)$/.test(this.type) ? 'downCount' : 'count']\n\t\t\t= count;\n\t},\n\n\tgetItem: function() {\n\t\tif (!this._item) {\n\t\t\tvar result = this.tool._scope.project.hitTest(this.getPoint());\n\t\t\tif (result) {\n\t\t\t\tvar item = result.item,\n\t\t\t\t\tparent = item._parent;\n\t\t\t\twhile (/^(Group|CompoundPath)$/.test(parent._class)) {\n\t\t\t\t\titem = parent;\n\t\t\t\t\tparent = parent._parent;\n\t\t\t\t}\n\t\t\t\tthis._item = item;\n\t\t\t}\n\t\t}\n\t\treturn this._item;\n\t},\n\n\tsetItem: function(item) {\n\t\tthis._item = item;\n\t},\n\n\ttoString: function() {\n\t\treturn '{ type: ' + this.type\n\t\t\t\t+ ', point: ' + this.getPoint()\n\t\t\t\t+ ', count: ' + this.getCount()\n\t\t\t\t+ ', modifiers: ' + this.getModifiers()\n\t\t\t\t+ ' }';\n\t}\n});\n\nvar Tool = PaperScopeItem.extend({\n\t_class: 'Tool',\n\t_list: 'tools',\n\t_reference: 'tool',\n\t_events: ['onMouseDown', 'onMouseUp', 'onMouseDrag', 'onMouseMove',\n\t\t\t'onActivate', 'onDeactivate', 'onEditOptions', 'onKeyDown',\n\t\t\t'onKeyUp'],\n\n\tinitialize: function Tool(props) {\n\t\tPaperScopeItem.call(this);\n\t\tthis._moveCount = -1;\n\t\tthis._downCount = -1;\n\t\tthis.set(props);\n\t},\n\n\tgetMinDistance: function() {\n\t\treturn this._minDistance;\n\t},\n\n\tsetMinDistance: function(minDistance) {\n\t\tthis._minDistance = minDistance;\n\t\tif (minDistance != null && this._maxDistance != null\n\t\t\t\t&& minDistance > this._maxDistance) {\n\t\t\tthis._maxDistance = minDistance;\n\t\t}\n\t},\n\n\tgetMaxDistance: function() {\n\t\treturn this._maxDistance;\n\t},\n\n\tsetMaxDistance: function(maxDistance) {\n\t\tthis._maxDistance = maxDistance;\n\t\tif (this._minDistance != null && maxDistance != null\n\t\t\t\t&& maxDistance < this._minDistance) {\n\t\t\tthis._minDistance = maxDistance;\n\t\t}\n\t},\n\n\tgetFixedDistance: function() {\n\t\treturn this._minDistance == this._maxDistance\n\t\t\t? this._minDistance : null;\n\t},\n\n\tsetFixedDistance: function(distance) {\n\t\tthis._minDistance = this._maxDistance = distance;\n\t},\n\n\t_handleMouseEvent: function(type, event, point, mouse) {\n\t\tpaper = this._scope;\n\t\tif (mouse.drag && !this.responds(type))\n\t\t\ttype = 'mousemove';\n\t\tvar move = mouse.move || mouse.drag,\n\t\t\tresponds = this.responds(type),\n\t\t\tminDistance = this.minDistance,\n\t\t\tmaxDistance = this.maxDistance,\n\t\t\tcalled = false,\n\t\t\ttool = this;\n\t\tfunction update(minDistance, maxDistance) {\n\t\t\tvar pt = point,\n\t\t\t\ttoolPoint = move ? tool._point : (tool._downPoint || pt);\n\t\t\tif (move) {\n\t\t\t\tif (tool._moveCount >= 0 && pt.equals(toolPoint)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (toolPoint && (minDistance != null || maxDistance != null)) {\n\t\t\t\t\tvar vector = pt.subtract(toolPoint),\n\t\t\t\t\t\tdistance = vector.getLength();\n\t\t\t\t\tif (distance < (minDistance || 0))\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tif (maxDistance) {\n\t\t\t\t\t\tpt = toolPoint.add(vector.normalize(\n\t\t\t\t\t\t\t\tMath.min(distance, maxDistance)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttool._moveCount++;\n\t\t\t}\n\t\t\ttool._point = pt;\n\t\t\ttool._lastPoint = toolPoint || pt;\n\t\t\tif (mouse.down) {\n\t\t\t\ttool._moveCount = -1;\n\t\t\t\ttool._downPoint = pt;\n\t\t\t\ttool._downCount++;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tfunction emit() {\n\t\t\tif (responds) {\n\t\t\t\tcalled = tool.emit(type, new ToolEvent(tool, type, event))\n\t\t\t\t\t\t|| called;\n\t\t\t}\n\t\t}\n\n\t\tif (mouse.down) {\n\t\t\tupdate();\n\t\t\temit();\n\t\t} else if (mouse.up) {\n\t\t\tupdate(null, maxDistance);\n\t\t\temit();\n\t\t} else if (responds) {\n\t\t\twhile (update(minDistance, maxDistance))\n\t\t\t\temit();\n\t\t}\n\t\treturn called;\n\t}\n\n});\n\nvar Tween = Base.extend(Emitter, {\n\t_class: 'Tween',\n\n\tstatics: {\n\t\teasings: {\n\t\t\tlinear: function(t) {\n\t\t\t\treturn t;\n\t\t\t},\n\n\t\t\teaseInQuad: function(t) {\n\t\t\t\treturn t * t;\n\t\t\t},\n\n\t\t\teaseOutQuad: function(t) {\n\t\t\t\treturn t * (2 - t);\n\t\t\t},\n\n\t\t\teaseInOutQuad: function(t) {\n\t\t\t\treturn t < 0.5\n\t\t\t\t\t? 2 * t * t\n\t\t\t\t\t: -1 + 2 * (2 - t) * t;\n\t\t\t},\n\n\t\t\teaseInCubic: function(t) {\n\t\t\t\treturn t * t * t;\n\t\t\t},\n\n\t\t\teaseOutCubic: function(t) {\n\t\t\t\treturn --t * t * t + 1;\n\t\t\t},\n\n\t\t\teaseInOutCubic: function(t) {\n\t\t\t\treturn t < 0.5\n\t\t\t\t\t? 4 * t * t * t\n\t\t\t\t\t: (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n\t\t\t},\n\n\t\t\teaseInQuart: function(t) {\n\t\t\t\treturn t * t * t * t;\n\t\t\t},\n\n\t\t\teaseOutQuart: function(t) {\n\t\t\t\treturn 1 - (--t) * t * t * t;\n\t\t\t},\n\n\t\t\teaseInOutQuart: function(t) {\n\t\t\t\treturn t < 0.5\n\t\t\t\t\t? 8 * t * t * t * t\n\t\t\t\t\t: 1 - 8 * (--t) * t * t * t;\n\t\t\t},\n\n\t\t\teaseInQuint: function(t) {\n\t\t\t\treturn t * t * t * t * t;\n\t\t\t},\n\n\t\t\teaseOutQuint: function(t) {\n\t\t\t\treturn 1 + --t * t * t * t * t;\n\t\t\t},\n\n\t\t\teaseInOutQuint: function(t) {\n\t\t\t\treturn t < 0.5\n\t\t\t\t\t? 16 * t * t * t * t * t\n\t\t\t\t\t: 1 + 16 * (--t) * t * t * t * t;\n\t\t\t}\n\t\t}\n\t},\n\n\tinitialize: function Tween(object, from, to, duration, easing, start) {\n\t\tthis.object = object;\n\t\tvar type = typeof easing;\n\t\tvar isFunction = type === 'function';\n\t\tthis.type = isFunction\n\t\t\t? type\n\t\t\t: type === 'string'\n\t\t\t\t? easing\n\t\t\t\t: 'linear';\n\t\tthis.easing = isFunction ? easing : Tween.easings[this.type];\n\t\tthis.duration = duration;\n\t\tthis.running = false;\n\n\t\tthis._then = null;\n\t\tthis._startTime = null;\n\t\tvar state = from || to;\n\t\tthis._keys = state ? Object.keys(state) : [];\n\t\tthis._parsedKeys = this._parseKeys(this._keys);\n\t\tthis._from = state && this._getState(from);\n\t\tthis._to = state && this._getState(to);\n\t\tif (start !== false) {\n\t\t\tthis.start();\n\t\t}\n\t},\n\n\tthen: function(then) {\n\t\tthis._then = then;\n\t\treturn this;\n\t},\n\n\tstart: function() {\n\t\tthis._startTime = null;\n\t\tthis.running = true;\n\t\treturn this;\n\t},\n\n\tstop: function() {\n\t\tthis.running = false;\n\t\treturn this;\n\t},\n\n\tupdate: function(progress) {\n\t\tif (this.running) {\n\t\t\tif (progress > 1) {\n\t\t\t\tprogress = 1;\n\t\t\t\tthis.running = false;\n\t\t\t}\n\n\t\t\tvar factor = this.easing(progress),\n\t\t\t\tkeys = this._keys,\n\t\t\t\tgetValue = function(value) {\n\t\t\t\t\treturn typeof value === 'function'\n\t\t\t\t\t\t? value(factor, progress)\n\t\t\t\t\t\t: value;\n\t\t\t\t};\n\t\t\tfor (var i = 0, l = keys && keys.length; i < l; i++) {\n\t\t\t\tvar key = keys[i],\n\t\t\t\t\tfrom = getValue(this._from[key]),\n\t\t\t\t\tto = getValue(this._to[key]),\n\t\t\t\t\tvalue = (from && to && from.__add && to.__add)\n\t\t\t\t\t\t? to.__subtract(from).__multiply(factor).__add(from)\n\t\t\t\t\t\t: ((to - from) * factor) + from;\n\t\t\t\tthis._setProperty(this._parsedKeys[key], value);\n\t\t\t}\n\n\t\t\tif (!this.running && this._then) {\n\t\t\t\tthis._then(this.object);\n\t\t\t}\n\t\t\tif (this.responds('update')) {\n\t\t\t\tthis.emit('update', new Base({\n\t\t\t\t\tprogress: progress,\n\t\t\t\t\tfactor: factor\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\t_events: {\n\t\tonUpdate: {}\n\t},\n\n\t_handleFrame: function(time) {\n\t\tvar startTime = this._startTime,\n\t\t\tprogress = startTime\n\t\t\t\t? (time - startTime) / this.duration\n\t\t\t\t: 0;\n\t\tif (!startTime) {\n\t\t\tthis._startTime = time;\n\t\t}\n\t\tthis.update(progress);\n\t},\n\n\t_getState: function(state) {\n\t\tvar keys = this._keys,\n\t\t\tresult = {};\n\t\tfor (var i = 0, l = keys.length; i < l; i++) {\n\t\t\tvar key = keys[i],\n\t\t\t\tpath = this._parsedKeys[key],\n\t\t\t\tcurrent = this._getProperty(path),\n\t\t\t\tvalue;\n\t\t\tif (state) {\n\t\t\t\tvar resolved = this._resolveValue(current, state[key]);\n\t\t\t\tthis._setProperty(path, resolved);\n\t\t\t\tvalue = this._getProperty(path);\n\t\t\t\tvalue = value && value.clone ? value.clone() : value;\n\t\t\t\tthis._setProperty(path, current);\n\t\t\t} else {\n\t\t\t\tvalue = current && current.clone ? current.clone() : current;\n\t\t\t}\n\t\t\tresult[key] = value;\n\t\t}\n\t\treturn result;\n\t},\n\n\t_resolveValue: function(current, value) {\n\t\tif (value) {\n\t\t\tif (Array.isArray(value) && value.length === 2) {\n\t\t\t\tvar operator = value[0];\n\t\t\t\treturn (\n\t\t\t\t\toperator &&\n\t\t\t\t\toperator.match &&\n\t\t\t\t\toperator.match(/^[+\\-\\*\\/]=/)\n\t\t\t\t)\n\t\t\t\t\t? this._calculate(current, operator[0], value[1])\n\t\t\t\t\t: value;\n\t\t\t} else if (typeof value === 'string') {\n\t\t\t\tvar match = value.match(/^[+\\-*/]=(.*)/);\n\t\t\t\tif (match) {\n\t\t\t\t\tvar parsed = JSON.parse(match[1].replace(\n\t\t\t\t\t\t/(['\"])?([a-zA-Z0-9_]+)(['\"])?:/g,\n\t\t\t\t\t\t'\"$2\": '\n\t\t\t\t\t));\n\t\t\t\t\treturn this._calculate(current, value[0], parsed);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t},\n\n\t_calculate: function(left, operator, right) {\n\t\treturn paper.PaperScript.calculateBinary(left, operator, right);\n\t},\n\n\t_parseKeys: function(keys) {\n\t\tvar parsed = {};\n\t\tfor (var i = 0, l = keys.length; i < l; i++) {\n\t\t\tvar key = keys[i],\n\t\t\t\tpath = key\n\t\t\t\t\t.replace(/\\.([^.]*)/g, '/$1')\n\t\t\t\t\t.replace(/\\[['\"]?([^'\"\\]]*)['\"]?\\]/g, '/$1');\n\t\t\tparsed[key] = path.split('/');\n\t\t}\n\t\treturn parsed;\n\t},\n\n\t_getProperty: function(path, offset) {\n\t\tvar obj = this.object;\n\t\tfor (var i = 0, l = path.length - (offset || 0); i < l && obj; i++) {\n\t\t\tobj = obj[path[i]];\n\t\t}\n\t\treturn obj;\n\t},\n\n\t_setProperty: function(path, value) {\n\t\tvar dest = this._getProperty(path, 1);\n\t\tif (dest) {\n\t\t\tdest[path[path.length - 1]] = value;\n\t\t}\n\t}\n});\n\nvar Http = {\n\trequest: function(options) {\n\t\tvar xhr = new self.XMLHttpRequest();\n\t\txhr.open((options.method || 'get').toUpperCase(), options.url,\n\t\t\t\tBase.pick(options.async, true));\n\t\tif (options.mimeType)\n\t\t\txhr.overrideMimeType(options.mimeType);\n\t\txhr.onload = function() {\n\t\t\tvar status = xhr.status;\n\t\t\tif (status === 0 || status === 200) {\n\t\t\t\tif (options.onLoad) {\n\t\t\t\t\toptions.onLoad.call(xhr, xhr.responseText);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\txhr.onerror();\n\t\t\t}\n\t\t};\n\t\txhr.onerror = function() {\n\t\t\tvar status = xhr.status,\n\t\t\t\tmessage = 'Could not load \"' + options.url + '\" (Status: '\n\t\t\t\t\t\t+ status + ')';\n\t\t\tif (options.onError) {\n\t\t\t\toptions.onError(message, status);\n\t\t\t} else {\n\t\t\t\tthrow new Error(message);\n\t\t\t}\n\t\t};\n\t\treturn xhr.send(null);\n\t}\n};\n\nvar CanvasProvider = {\n\tcanvases: [],\n\n\tgetCanvas: function(width, height) {\n\t\tif (!window)\n\t\t\treturn null;\n\t\tvar canvas,\n\t\t\tclear = true;\n\t\tif (typeof width === 'object') {\n\t\t\theight = width.height;\n\t\t\twidth = width.width;\n\t\t}\n\t\tif (this.canvases.length) {\n\t\t\tcanvas = this.canvases.pop();\n\t\t} else {\n\t\t\tcanvas = document.createElement('canvas');\n\t\t\tclear = false;\n\t\t}\n\t\tvar ctx = canvas.getContext('2d');\n\t\tif (!ctx) {\n\t\t\tthrow new Error('Canvas ' + canvas +\n\t\t\t\t\t' is unable to provide a 2D context.');\n\t\t}\n\t\tif (canvas.width === width && canvas.height === height) {\n\t\t\tif (clear)\n\t\t\t\tctx.clearRect(0, 0, width + 1, height + 1);\n\t\t} else {\n\t\t\tcanvas.width = width;\n\t\t\tcanvas.height = height;\n\t\t}\n\t\tctx.save();\n\t\treturn canvas;\n\t},\n\n\tgetContext: function(width, height) {\n\t\tvar canvas = this.getCanvas(width, height);\n\t\treturn canvas ? canvas.getContext('2d') : null;\n\t},\n\n\trelease: function(obj) {\n\t\tvar canvas = obj && obj.canvas ? obj.canvas : obj;\n\t\tif (canvas && canvas.getContext) {\n\t\t\tcanvas.getContext('2d').restore();\n\t\t\tthis.canvases.push(canvas);\n\t\t}\n\t}\n};\n\nvar BlendMode = new function() {\n\tvar min = Math.min,\n\t\tmax = Math.max,\n\t\tabs = Math.abs,\n\t\tsr, sg, sb, sa,\n\t\tbr, bg, bb, ba,\n\t\tdr, dg, db;\n\n\tfunction getLum(r, g, b) {\n\t\treturn 0.2989 * r + 0.587 * g + 0.114 * b;\n\t}\n\n\tfunction setLum(r, g, b, l) {\n\t\tvar d = l - getLum(r, g, b);\n\t\tdr = r + d;\n\t\tdg = g + d;\n\t\tdb = b + d;\n\t\tvar l = getLum(dr, dg, db),\n\t\t\tmn = min(dr, dg, db),\n\t\t\tmx = max(dr, dg, db);\n\t\tif (mn < 0) {\n\t\t\tvar lmn = l - mn;\n\t\t\tdr = l + (dr - l) * l / lmn;\n\t\t\tdg = l + (dg - l) * l / lmn;\n\t\t\tdb = l + (db - l) * l / lmn;\n\t\t}\n\t\tif (mx > 255) {\n\t\t\tvar ln = 255 - l,\n\t\t\t\tmxl = mx - l;\n\t\t\tdr = l + (dr - l) * ln / mxl;\n\t\t\tdg = l + (dg - l) * ln / mxl;\n\t\t\tdb = l + (db - l) * ln / mxl;\n\t\t}\n\t}\n\n\tfunction getSat(r, g, b) {\n\t\treturn max(r, g, b) - min(r, g, b);\n\t}\n\n\tfunction setSat(r, g, b, s) {\n\t\tvar col = [r, g, b],\n\t\t\tmx = max(r, g, b),\n\t\t\tmn = min(r, g, b),\n\t\t\tmd;\n\t\tmn = mn === r ? 0 : mn === g ? 1 : 2;\n\t\tmx = mx === r ? 0 : mx === g ? 1 : 2;\n\t\tmd = min(mn, mx) === 0 ? max(mn, mx) === 1 ? 2 : 1 : 0;\n\t\tif (col[mx] > col[mn]) {\n\t\t\tcol[md] = (col[md] - col[mn]) * s / (col[mx] - col[mn]);\n\t\t\tcol[mx] = s;\n\t\t} else {\n\t\t\tcol[md] = col[mx] = 0;\n\t\t}\n\t\tcol[mn] = 0;\n\t\tdr = col[0];\n\t\tdg = col[1];\n\t\tdb = col[2];\n\t}\n\n\tvar modes = {\n\t\tmultiply: function() {\n\t\t\tdr = br * sr / 255;\n\t\t\tdg = bg * sg / 255;\n\t\t\tdb = bb * sb / 255;\n\t\t},\n\n\t\tscreen: function() {\n\t\t\tdr = br + sr - (br * sr / 255);\n\t\t\tdg = bg + sg - (bg * sg / 255);\n\t\t\tdb = bb + sb - (bb * sb / 255);\n\t\t},\n\n\t\toverlay: function() {\n\t\t\tdr = br < 128 ? 2 * br * sr / 255 : 255 - 2 * (255 - br) * (255 - sr) / 255;\n\t\t\tdg = bg < 128 ? 2 * bg * sg / 255 : 255 - 2 * (255 - bg) * (255 - sg) / 255;\n\t\t\tdb = bb < 128 ? 2 * bb * sb / 255 : 255 - 2 * (255 - bb) * (255 - sb) / 255;\n\t\t},\n\n\t\t'soft-light': function() {\n\t\t\tvar t = sr * br / 255;\n\t\t\tdr = t + br * (255 - (255 - br) * (255 - sr) / 255 - t) / 255;\n\t\t\tt = sg * bg / 255;\n\t\t\tdg = t + bg * (255 - (255 - bg) * (255 - sg) / 255 - t) / 255;\n\t\t\tt = sb * bb / 255;\n\t\t\tdb = t + bb * (255 - (255 - bb) * (255 - sb) / 255 - t) / 255;\n\t\t},\n\n\t\t'hard-light': function() {\n\t\t\tdr = sr < 128 ? 2 * sr * br / 255 : 255 - 2 * (255 - sr) * (255 - br) / 255;\n\t\t\tdg = sg < 128 ? 2 * sg * bg / 255 : 255 - 2 * (255 - sg) * (255 - bg) / 255;\n\t\t\tdb = sb < 128 ? 2 * sb * bb / 255 : 255 - 2 * (255 - sb) * (255 - bb) / 255;\n\t\t},\n\n\t\t'color-dodge': function() {\n\t\t\tdr = br === 0 ? 0 : sr === 255 ? 255 : min(255, 255 * br / (255 - sr));\n\t\t\tdg = bg === 0 ? 0 : sg === 255 ? 255 : min(255, 255 * bg / (255 - sg));\n\t\t\tdb = bb === 0 ? 0 : sb === 255 ? 255 : min(255, 255 * bb / (255 - sb));\n\t\t},\n\n\t\t'color-burn': function() {\n\t\t\tdr = br === 255 ? 255 : sr === 0 ? 0 : max(0, 255 - (255 - br) * 255 / sr);\n\t\t\tdg = bg === 255 ? 255 : sg === 0 ? 0 : max(0, 255 - (255 - bg) * 255 / sg);\n\t\t\tdb = bb === 255 ? 255 : sb === 0 ? 0 : max(0, 255 - (255 - bb) * 255 / sb);\n\t\t},\n\n\t\tdarken: function() {\n\t\t\tdr = br < sr ? br : sr;\n\t\t\tdg = bg < sg ? bg : sg;\n\t\t\tdb = bb < sb ? bb : sb;\n\t\t},\n\n\t\tlighten: function() {\n\t\t\tdr = br > sr ? br : sr;\n\t\t\tdg = bg > sg ? bg : sg;\n\t\t\tdb = bb > sb ? bb : sb;\n\t\t},\n\n\t\tdifference: function() {\n\t\t\tdr = br - sr;\n\t\t\tif (dr < 0)\n\t\t\t\tdr = -dr;\n\t\t\tdg = bg - sg;\n\t\t\tif (dg < 0)\n\t\t\t\tdg = -dg;\n\t\t\tdb = bb - sb;\n\t\t\tif (db < 0)\n\t\t\t\tdb = -db;\n\t\t},\n\n\t\texclusion: function() {\n\t\t\tdr = br + sr * (255 - br - br) / 255;\n\t\t\tdg = bg + sg * (255 - bg - bg) / 255;\n\t\t\tdb = bb + sb * (255 - bb - bb) / 255;\n\t\t},\n\n\t\thue: function() {\n\t\t\tsetSat(sr, sg, sb, getSat(br, bg, bb));\n\t\t\tsetLum(dr, dg, db, getLum(br, bg, bb));\n\t\t},\n\n\t\tsaturation: function() {\n\t\t\tsetSat(br, bg, bb, getSat(sr, sg, sb));\n\t\t\tsetLum(dr, dg, db, getLum(br, bg, bb));\n\t\t},\n\n\t\tluminosity: function() {\n\t\t\tsetLum(br, bg, bb, getLum(sr, sg, sb));\n\t\t},\n\n\t\tcolor: function() {\n\t\t\tsetLum(sr, sg, sb, getLum(br, bg, bb));\n\t\t},\n\n\t\tadd: function() {\n\t\t\tdr = min(br + sr, 255);\n\t\t\tdg = min(bg + sg, 255);\n\t\t\tdb = min(bb + sb, 255);\n\t\t},\n\n\t\tsubtract: function() {\n\t\t\tdr = max(br - sr, 0);\n\t\t\tdg = max(bg - sg, 0);\n\t\t\tdb = max(bb - sb, 0);\n\t\t},\n\n\t\taverage: function() {\n\t\t\tdr = (br + sr) / 2;\n\t\t\tdg = (bg + sg) / 2;\n\t\t\tdb = (bb + sb) / 2;\n\t\t},\n\n\t\tnegation: function() {\n\t\t\tdr = 255 - abs(255 - sr - br);\n\t\t\tdg = 255 - abs(255 - sg - bg);\n\t\t\tdb = 255 - abs(255 - sb - bb);\n\t\t}\n\t};\n\n\tvar nativeModes = this.nativeModes = Base.each([\n\t\t'source-over', 'source-in', 'source-out', 'source-atop',\n\t\t'destination-over', 'destination-in', 'destination-out',\n\t\t'destination-atop', 'lighter', 'darker', 'copy', 'xor'\n\t], function(mode) {\n\t\tthis[mode] = true;\n\t}, {});\n\n\tvar ctx = CanvasProvider.getContext(1, 1);\n\tif (ctx) {\n\t\tBase.each(modes, function(func, mode) {\n\t\t\tvar darken = mode === 'darken',\n\t\t\t\tok = false;\n\t\t\tctx.save();\n\t\t\ttry {\n\t\t\t\tctx.fillStyle = darken ? '#300' : '#a00';\n\t\t\t\tctx.fillRect(0, 0, 1, 1);\n\t\t\t\tctx.globalCompositeOperation = mode;\n\t\t\t\tif (ctx.globalCompositeOperation === mode) {\n\t\t\t\t\tctx.fillStyle = darken ? '#a00' : '#300';\n\t\t\t\t\tctx.fillRect(0, 0, 1, 1);\n\t\t\t\t\tok = ctx.getImageData(0, 0, 1, 1).data[0] !== darken\n\t\t\t\t\t\t\t? 170 : 51;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t\tctx.restore();\n\t\t\tnativeModes[mode] = ok;\n\t\t});\n\t\tCanvasProvider.release(ctx);\n\t}\n\n\tthis.process = function(mode, srcContext, dstContext, alpha, offset) {\n\t\tvar srcCanvas = srcContext.canvas,\n\t\t\tnormal = mode === 'normal';\n\t\tif (normal || nativeModes[mode]) {\n\t\t\tdstContext.save();\n\t\t\tdstContext.setTransform(1, 0, 0, 1, 0, 0);\n\t\t\tdstContext.globalAlpha = alpha;\n\t\t\tif (!normal)\n\t\t\t\tdstContext.globalCompositeOperation = mode;\n\t\t\tdstContext.drawImage(srcCanvas, offset.x, offset.y);\n\t\t\tdstContext.restore();\n\t\t} else {\n\t\t\tvar process = modes[mode];\n\t\t\tif (!process)\n\t\t\t\treturn;\n\t\t\tvar dstData = dstContext.getImageData(offset.x, offset.y,\n\t\t\t\t\tsrcCanvas.width, srcCanvas.height),\n\t\t\t\tdst = dstData.data,\n\t\t\t\tsrc = srcContext.getImageData(0, 0,\n\t\t\t\t\tsrcCanvas.width, srcCanvas.height).data;\n\t\t\tfor (var i = 0, l = dst.length; i < l; i += 4) {\n\t\t\t\tsr = src[i];\n\t\t\t\tbr = dst[i];\n\t\t\t\tsg = src[i + 1];\n\t\t\t\tbg = dst[i + 1];\n\t\t\t\tsb = src[i + 2];\n\t\t\t\tbb = dst[i + 2];\n\t\t\t\tsa = src[i + 3];\n\t\t\t\tba = dst[i + 3];\n\t\t\t\tprocess();\n\t\t\t\tvar a1 = sa * alpha / 255,\n\t\t\t\t\ta2 = 1 - a1;\n\t\t\t\tdst[i] = a1 * dr + a2 * br;\n\t\t\t\tdst[i + 1] = a1 * dg + a2 * bg;\n\t\t\t\tdst[i + 2] = a1 * db + a2 * bb;\n\t\t\t\tdst[i + 3] = sa * alpha + a2 * ba;\n\t\t\t}\n\t\t\tdstContext.putImageData(dstData, offset.x, offset.y);\n\t\t}\n\t};\n};\n\nvar SvgElement = new function() {\n\tvar svg = 'http://www.w3.org/2000/svg',\n\t\txmlns = 'http://www.w3.org/2000/xmlns',\n\t\txlink = 'http://www.w3.org/1999/xlink',\n\t\tattributeNamespace = {\n\t\t\thref: xlink,\n\t\t\txlink: xmlns,\n\t\t\txmlns: xmlns + '/',\n\t\t\t'xmlns:xlink': xmlns + '/'\n\t\t};\n\n\tfunction create(tag, attributes, formatter) {\n\t\treturn set(document.createElementNS(svg, tag), attributes, formatter);\n\t}\n\n\tfunction get(node, name) {\n\t\tvar namespace = attributeNamespace[name],\n\t\t\tvalue = namespace\n\t\t\t\t? node.getAttributeNS(namespace, name)\n\t\t\t\t: node.getAttribute(name);\n\t\treturn value === 'null' ? null : value;\n\t}\n\n\tfunction set(node, attributes, formatter) {\n\t\tfor (var name in attributes) {\n\t\t\tvar value = attributes[name],\n\t\t\t\tnamespace = attributeNamespace[name];\n\t\t\tif (typeof value === 'number' && formatter)\n\t\t\t\tvalue = formatter.number(value);\n\t\t\tif (namespace) {\n\t\t\t\tnode.setAttributeNS(namespace, name, value);\n\t\t\t} else {\n\t\t\t\tnode.setAttribute(name, value);\n\t\t\t}\n\t\t}\n\t\treturn node;\n\t}\n\n\treturn {\n\t\tsvg: svg,\n\t\txmlns: xmlns,\n\t\txlink: xlink,\n\n\t\tcreate: create,\n\t\tget: get,\n\t\tset: set\n\t};\n};\n\nvar SvgStyles = Base.each({\n\tfillColor: ['fill', 'color'],\n\tfillRule: ['fill-rule', 'string'],\n\tstrokeColor: ['stroke', 'color'],\n\tstrokeWidth: ['stroke-width', 'number'],\n\tstrokeCap: ['stroke-linecap', 'string'],\n\tstrokeJoin: ['stroke-linejoin', 'string'],\n\tstrokeScaling: ['vector-effect', 'lookup', {\n\t\ttrue: 'none',\n\t\tfalse: 'non-scaling-stroke'\n\t}, function(item, value) {\n\t\treturn !value\n\t\t\t\t&& (item instanceof PathItem\n\t\t\t\t\t|| item instanceof Shape\n\t\t\t\t\t|| item instanceof TextItem);\n\t}],\n\tmiterLimit: ['stroke-miterlimit', 'number'],\n\tdashArray: ['stroke-dasharray', 'array'],\n\tdashOffset: ['stroke-dashoffset', 'number'],\n\tfontFamily: ['font-family', 'string'],\n\tfontWeight: ['font-weight', 'string'],\n\tfontSize: ['font-size', 'number'],\n\tjustification: ['text-anchor', 'lookup', {\n\t\tleft: 'start',\n\t\tcenter: 'middle',\n\t\tright: 'end'\n\t}],\n\topacity: ['opacity', 'number'],\n\tblendMode: ['mix-blend-mode', 'style']\n}, function(entry, key) {\n\tvar part = Base.capitalize(key),\n\t\tlookup = entry[2];\n\tthis[key] = {\n\t\ttype: entry[1],\n\t\tproperty: key,\n\t\tattribute: entry[0],\n\t\ttoSVG: lookup,\n\t\tfromSVG: lookup && Base.each(lookup, function(value, name) {\n\t\t\tthis[value] = name;\n\t\t}, {}),\n\t\texportFilter: entry[3],\n\t\tget: 'get' + part,\n\t\tset: 'set' + part\n\t};\n}, {});\n\nnew function() {\n\tvar formatter;\n\n\tfunction getTransform(matrix, coordinates, center) {\n\t\tvar attrs = new Base(),\n\t\t\ttrans = matrix.getTranslation();\n\t\tif (coordinates) {\n\t\t\tvar point;\n\t\t\tif (matrix.isInvertible()) {\n\t\t\t\tmatrix = matrix._shiftless();\n\t\t\t\tpoint = matrix._inverseTransform(trans);\n\t\t\t\ttrans = null;\n\t\t\t} else {\n\t\t\t\tpoint = new Point();\n\t\t\t}\n\t\t\tattrs[center ? 'cx' : 'x'] = point.x;\n\t\t\tattrs[center ? 'cy' : 'y'] = point.y;\n\t\t}\n\t\tif (!matrix.isIdentity()) {\n\t\t\tvar decomposed = matrix.decompose();\n\t\t\tif (decomposed) {\n\t\t\t\tvar parts = [],\n\t\t\t\t\tangle = decomposed.rotation,\n\t\t\t\t\tscale = decomposed.scaling,\n\t\t\t\t\tskew = decomposed.skewing;\n\t\t\t\tif (trans && !trans.isZero())\n\t\t\t\t\tparts.push('translate(' + formatter.point(trans) + ')');\n\t\t\t\tif (angle)\n\t\t\t\t\tparts.push('rotate(' + formatter.number(angle) + ')');\n\t\t\t\tif (!Numerical.isZero(scale.x - 1)\n\t\t\t\t\t\t|| !Numerical.isZero(scale.y - 1))\n\t\t\t\t\tparts.push('scale(' + formatter.point(scale) +')');\n\t\t\t\tif (skew.x)\n\t\t\t\t\tparts.push('skewX(' + formatter.number(skew.x) + ')');\n\t\t\t\tif (skew.y)\n\t\t\t\t\tparts.push('skewY(' + formatter.number(skew.y) + ')');\n\t\t\t\tattrs.transform = parts.join(' ');\n\t\t\t} else {\n\t\t\t\tattrs.transform = 'matrix(' + matrix.getValues().join(',') + ')';\n\t\t\t}\n\t\t}\n\t\treturn attrs;\n\t}\n\n\tfunction exportGroup(item, options) {\n\t\tvar attrs = getTransform(item._matrix),\n\t\t\tchildren = item._children;\n\t\tvar node = SvgElement.create('g', attrs, formatter);\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tvar child = children[i];\n\t\t\tvar childNode = exportSVG(child, options);\n\t\t\tif (childNode) {\n\t\t\t\tif (child.isClipMask()) {\n\t\t\t\t\tvar clip = SvgElement.create('clipPath');\n\t\t\t\t\tclip.appendChild(childNode);\n\t\t\t\t\tsetDefinition(child, clip, 'clip');\n\t\t\t\t\tSvgElement.set(node, {\n\t\t\t\t\t\t'clip-path': 'url(#' + clip.id + ')'\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tnode.appendChild(childNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn node;\n\t}\n\n\tfunction exportRaster(item, options) {\n\t\tvar attrs = getTransform(item._matrix, true),\n\t\t\tsize = item.getSize(),\n\t\t\timage = item.getImage();\n\t\tattrs.x -= size.width / 2;\n\t\tattrs.y -= size.height / 2;\n\t\tattrs.width = size.width;\n\t\tattrs.height = size.height;\n\t\tattrs.href = options.embedImages == false && image && image.src\n\t\t\t\t|| item.toDataURL();\n\t\treturn SvgElement.create('image', attrs, formatter);\n\t}\n\n\tfunction exportPath(item, options) {\n\t\tvar matchShapes = options.matchShapes;\n\t\tif (matchShapes) {\n\t\t\tvar shape = item.toShape(false);\n\t\t\tif (shape)\n\t\t\t\treturn exportShape(shape, options);\n\t\t}\n\t\tvar segments = item._segments,\n\t\t\tlength = segments.length,\n\t\t\ttype,\n\t\t\tattrs = getTransform(item._matrix);\n\t\tif (matchShapes && length >= 2 && !item.hasHandles()) {\n\t\t\tif (length > 2) {\n\t\t\t\ttype = item._closed ? 'polygon' : 'polyline';\n\t\t\t\tvar parts = [];\n\t\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\t\tparts.push(formatter.point(segments[i]._point));\n\t\t\t\t}\n\t\t\t\tattrs.points = parts.join(' ');\n\t\t\t} else {\n\t\t\t\ttype = 'line';\n\t\t\t\tvar start = segments[0]._point,\n\t\t\t\t\tend = segments[1]._point;\n\t\t\t\tattrs.set({\n\t\t\t\t\tx1: start.x,\n\t\t\t\t\ty1: start.y,\n\t\t\t\t\tx2: end.x,\n\t\t\t\t\ty2: end.y\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\ttype = 'path';\n\t\t\tattrs.d = item.getPathData(null, options.precision);\n\t\t}\n\t\treturn SvgElement.create(type, attrs, formatter);\n\t}\n\n\tfunction exportShape(item) {\n\t\tvar type = item._type,\n\t\t\tradius = item._radius,\n\t\t\tattrs = getTransform(item._matrix, true, type !== 'rectangle');\n\t\tif (type === 'rectangle') {\n\t\t\ttype = 'rect';\n\t\t\tvar size = item._size,\n\t\t\t\twidth = size.width,\n\t\t\t\theight = size.height;\n\t\t\tattrs.x -= width / 2;\n\t\t\tattrs.y -= height / 2;\n\t\t\tattrs.width = width;\n\t\t\tattrs.height = height;\n\t\t\tif (radius.isZero())\n\t\t\t\tradius = null;\n\t\t}\n\t\tif (radius) {\n\t\t\tif (type === 'circle') {\n\t\t\t\tattrs.r = radius;\n\t\t\t} else {\n\t\t\t\tattrs.rx = radius.width;\n\t\t\t\tattrs.ry = radius.height;\n\t\t\t}\n\t\t}\n\t\treturn SvgElement.create(type, attrs, formatter);\n\t}\n\n\tfunction exportCompoundPath(item, options) {\n\t\tvar attrs = getTransform(item._matrix);\n\t\tvar data = item.getPathData(null, options.precision);\n\t\tif (data)\n\t\t\tattrs.d = data;\n\t\treturn SvgElement.create('path', attrs, formatter);\n\t}\n\n\tfunction exportSymbolItem(item, options) {\n\t\tvar attrs = getTransform(item._matrix, true),\n\t\t\tdefinition = item._definition,\n\t\t\tnode = getDefinition(definition, 'symbol'),\n\t\t\tdefinitionItem = definition._item,\n\t\t\tbounds = definitionItem.getStrokeBounds();\n\t\tif (!node) {\n\t\t\tnode = SvgElement.create('symbol', {\n\t\t\t\tviewBox: formatter.rectangle(bounds)\n\t\t\t});\n\t\t\tnode.appendChild(exportSVG(definitionItem, options));\n\t\t\tsetDefinition(definition, node, 'symbol');\n\t\t}\n\t\tattrs.href = '#' + node.id;\n\t\tattrs.x += bounds.x;\n\t\tattrs.y += bounds.y;\n\t\tattrs.width = bounds.width;\n\t\tattrs.height = bounds.height;\n\t\tattrs.overflow = 'visible';\n\t\treturn SvgElement.create('use', attrs, formatter);\n\t}\n\n\tfunction exportGradient(color, item) {\n\t\tvar gradientNode = getDefinition(color, 'color');\n\t\tif (!gradientNode) {\n\t\t\tvar gradient = color.getGradient(),\n\t\t\t\tradial = gradient._radial,\n\t\t\t\torigin = color.getOrigin(),\n\t\t\t\tdestination = color.getDestination(),\n\t\t\t\tattrs;\n\t\t\tif (radial) {\n\t\t\t\tattrs = {\n\t\t\t\t\tcx: origin.x,\n\t\t\t\t\tcy: origin.y,\n\t\t\t\t\tr: origin.getDistance(destination)\n\t\t\t\t};\n\t\t\t\tvar highlight = color.getHighlight();\n\t\t\t\tif (highlight) {\n\t\t\t\t\tattrs.fx = highlight.x;\n\t\t\t\t\tattrs.fy = highlight.y;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tattrs = {\n\t\t\t\t\tx1: origin.x,\n\t\t\t\t\ty1: origin.y,\n\t\t\t\t\tx2: destination.x,\n\t\t\t\t\ty2: destination.y\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (item instanceof paper.PointText) {\n\t\t\t\tattrs.gradientTransform = getTransform(\n\t\t\t\t\titem._matrix.clone().invert(), false, formatter).transform;\n\t\t\t}\n\n\t\t\tattrs.gradientUnits = 'userSpaceOnUse';\n\t\t\tgradientNode = SvgElement.create((radial ? 'radial' : 'linear')\n\t\t\t\t\t+ 'Gradient', attrs, formatter);\n\t\t\tvar stops = gradient._stops;\n\t\t\tfor (var i = 0, l = stops.length; i < l; i++) {\n\t\t\t\tvar stop = stops[i],\n\t\t\t\t\tstopColor = stop._color,\n\t\t\t\t\talpha = stopColor.getAlpha(),\n\t\t\t\t\toffset = stop._offset;\n\t\t\t\tattrs = {\n\t\t\t\t\toffset: offset == null ? i / (l - 1) : offset\n\t\t\t\t};\n\t\t\t\tif (stopColor)\n\t\t\t\t\tattrs['stop-color'] = stopColor.toCSS(true);\n\t\t\t\tif (alpha < 1)\n\t\t\t\t\tattrs['stop-opacity'] = alpha;\n\t\t\t\tgradientNode.appendChild(\n\t\t\t\t\t\tSvgElement.create('stop', attrs, formatter));\n\t\t\t}\n\t\t\tsetDefinition(color, gradientNode, 'color');\n\t\t}\n\t\treturn 'url(#' + gradientNode.id + ')';\n\t}\n\n\tfunction exportText(item) {\n\t\tvar node = SvgElement.create('text', getTransform(item._matrix, false),\n\t\t\t\tformatter);\n\t\tnode.setAttribute('font-size', item.fontSize);\n\t\tnode.setAttribute('xml:space', 'preserve');\n\t\tfor (var i = 0; i < item._lines.length; i++) {\n\t\t\tvar tspanNode = SvgElement.create('tspan', {\n\t\t\t\tx: '0',\n\t\t\t\tdy: i === 0 ? '0' : item.getLeading() + 'px'\n\t\t\t}, formatter);\n\t\t\ttspanNode.textContent = item._lines[i] ? item._lines[i] : ' ';\n\t\t\tnode.appendChild(tspanNode);\n\t\t}\n\t\treturn node;\n\t}\n\n\tvar exporters = {\n\t\tGroup: exportGroup,\n\t\tLayer: exportGroup,\n\t\tRaster: exportRaster,\n\t\tPath: exportPath,\n\t\tShape: exportShape,\n\t\tCompoundPath: exportCompoundPath,\n\t\tSymbolItem: exportSymbolItem,\n\t\tPointText: exportText\n\t};\n\n\tfunction applyStyle(item, node, isRoot) {\n\t\tvar attrs = {},\n\t\t\tparent = !isRoot && item.getParent(),\n\t\t\tstyle = [];\n\n\t\tif (item._name != null)\n\t\t\tattrs.id = item._name;\n\n\t\tBase.each(SvgStyles, function(entry) {\n\t\t\tvar get = entry.get,\n\t\t\t\ttype = entry.type,\n\t\t\t\tvalue = item[get]();\n\n\t\t\tif (value === undefined) return;\n\n\t\t\tif (entry.exportFilter\n\t\t\t\t\t? entry.exportFilter(item, value)\n\t\t\t\t\t: !parent || !Base.equals(parent[get](), value) ||\n\t\t\t\t\t  item instanceof paper.PointText) {\n\t\t\t\tif (type === 'color' && value != null) {\n\t\t\t\t\tvar alpha = value.getAlpha();\n\t\t\t\t\tif (alpha < 1)\n\t\t\t\t\t\tattrs[entry.attribute + '-opacity'] = alpha;\n\t\t\t\t}\n\t\t\t\tif (type === 'style') {\n\t\t\t\t\tstyle.push(entry.attribute + ': ' + value);\n\t\t\t\t} else {\n\t\t\t\t\tattrs[entry.attribute] = value == null ? 'none'\n\t\t\t\t\t\t\t: type === 'color' ? value.gradient\n\t\t\t\t\t\t\t\t? exportGradient(value, item)\n\t\t\t\t\t\t\t\t: value.toCSS(true)\n\t\t\t\t\t\t\t: type === 'array' ? value.join(',')\n\t\t\t\t\t\t\t: type === 'lookup' ? entry.toSVG[value]\n\t\t\t\t\t\t\t: value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (style.length)\n\t\t\tattrs.style = style.join(';');\n\n\t\tif (attrs.opacity === 1)\n\t\t\tdelete attrs.opacity;\n\n\t\tif (!item._visible)\n\t\t\tattrs.visibility = 'hidden';\n\n\t\treturn SvgElement.set(node, attrs, formatter);\n\t}\n\n\tvar definitions;\n\tfunction getDefinition(item, type) {\n\t\tif (!definitions)\n\t\t\tdefinitions = { ids: {}, svgs: {} };\n\t\treturn item && definitions.svgs[type + '-'\n\t\t\t\t+ (item._id || item.__id || (item.__id = UID.get('svg')))];\n\t}\n\n\tfunction setDefinition(item, node, type) {\n\t\tif (!definitions)\n\t\t\tgetDefinition();\n\t\tvar typeId = definitions.ids[type] = (definitions.ids[type] || 0) + 1;\n\t\tnode.id = type + '-' + typeId;\n\t\tdefinitions.svgs[type + '-' + (item._id || item.__id)] = node;\n\t}\n\n\tfunction exportDefinitions(node, options) {\n\t\tvar svg = node,\n\t\t\tdefs = null;\n\t\tif (definitions) {\n\t\t\tsvg = node.nodeName.toLowerCase() === 'svg' && node;\n\t\t\tfor (var i in definitions.svgs) {\n\t\t\t\tif (!defs) {\n\t\t\t\t\tif (!svg) {\n\t\t\t\t\t\tsvg = SvgElement.create('svg');\n\t\t\t\t\t\tsvg.appendChild(node);\n\t\t\t\t\t}\n\t\t\t\t\tdefs = svg.insertBefore(SvgElement.create('defs'),\n\t\t\t\t\t\t\tsvg.firstChild);\n\t\t\t\t}\n\t\t\t\tdefs.appendChild(definitions.svgs[i]);\n\t\t\t}\n\t\t\tdefinitions = null;\n\t\t}\n\t\treturn options.asString\n\t\t\t\t? new self.XMLSerializer().serializeToString(svg)\n\t\t\t\t: svg;\n\t}\n\n\tfunction exportSVG(item, options, isRoot) {\n\t\tvar exporter = exporters[item._class],\n\t\t\tnode = exporter && exporter(item, options);\n\t\tif (node) {\n\t\t\tvar onExport = options.onExport;\n\t\t\tif (onExport)\n\t\t\t\tnode = onExport(item, node, options) || node;\n\t\t\tvar data = JSON.stringify(item._data);\n\t\t\tif (data && data !== '{}' && data !== 'null')\n\t\t\t\tnode.setAttribute('data-paper-data', data);\n\t\t}\n\t\treturn node && applyStyle(item, node, isRoot);\n\t}\n\n\tfunction setOptions(options) {\n\t\tif (!options)\n\t\t\toptions = {};\n\t\tformatter = new Formatter(options.precision);\n\t\treturn options;\n\t}\n\n\tItem.inject({\n\t\texportSVG: function(options) {\n\t\t\toptions = setOptions(options);\n\t\t\treturn exportDefinitions(exportSVG(this, options, true), options);\n\t\t}\n\t});\n\n\tProject.inject({\n\t\texportSVG: function(options) {\n\t\t\toptions = setOptions(options);\n\t\t\tvar children = this._children,\n\t\t\t\tview = this.getView(),\n\t\t\t\tbounds = Base.pick(options.bounds, 'view'),\n\t\t\t\tmx = options.matrix || bounds === 'view' && view._matrix,\n\t\t\t\tmatrix = mx && Matrix.read([mx]),\n\t\t\t\trect = bounds === 'view'\n\t\t\t\t\t? new Rectangle([0, 0], view.getViewSize())\n\t\t\t\t\t: bounds === 'content'\n\t\t\t\t\t\t? Item._getBounds(children, matrix, { stroke: true, drawnTextBounds: true })\n\t\t\t\t\t\t\t.rect\n\t\t\t\t\t\t: Rectangle.read([bounds], 0, { readNull: true }),\n\t\t\t\tattrs = {\n\t\t\t\t\tversion: '1.1',\n\t\t\t\t\txmlns: SvgElement.svg,\n\t\t\t\t\t'xmlns:xlink': SvgElement.xlink,\n\t\t\t\t};\n\t\t\tif (rect) {\n\t\t\t\tattrs.width = rect.width;\n\t\t\t\tattrs.height = rect.height;\n\t\t\t\tif (rect.x || rect.x === 0 || rect.y || rect.y === 0)\n\t\t\t\t\tattrs.viewBox = formatter.rectangle(rect);\n\t\t\t}\n\t\t\tvar node = SvgElement.create('svg', attrs, formatter),\n\t\t\t\tparent = node;\n\t\t\tif (matrix && !matrix.isIdentity()) {\n\t\t\t\tparent = node.appendChild(SvgElement.create('g',\n\t\t\t\t\t\tgetTransform(matrix), formatter));\n\t\t\t}\n\t\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\t\tparent.appendChild(exportSVG(children[i], options, true));\n\t\t\t}\n\t\t\treturn exportDefinitions(node, options);\n\t\t}\n\t});\n};\n\nnew function() {\n\n\tvar definitions = {},\n\t\trootSize;\n\n\tfunction getValue(node, name, isString, allowNull, allowPercent,\n\t\t\tdefaultValue) {\n\t\tvar value = SvgElement.get(node, name) || defaultValue,\n\t\t\tres = value == null\n\t\t\t\t? allowNull\n\t\t\t\t\t? null\n\t\t\t\t\t: isString ? '' : 0\n\t\t\t\t: isString\n\t\t\t\t\t? value\n\t\t\t\t\t: parseFloat(value);\n\t\treturn /%\\s*$/.test(value)\n\t\t\t? (res / 100) * (allowPercent ? 1\n\t\t\t\t: rootSize[/x|^width/.test(name) ? 'width' : 'height'])\n\t\t\t: res;\n\t}\n\n\tfunction getPoint(node, x, y, allowNull, allowPercent, defaultX, defaultY) {\n\t\tx = getValue(node, x || 'x', false, allowNull, allowPercent, defaultX);\n\t\ty = getValue(node, y || 'y', false, allowNull, allowPercent, defaultY);\n\t\treturn allowNull && (x == null || y == null) ? null\n\t\t\t\t: new Point(x, y);\n\t}\n\n\tfunction getSize(node, w, h, allowNull, allowPercent) {\n\t\tw = getValue(node, w || 'width', false, allowNull, allowPercent);\n\t\th = getValue(node, h || 'height', false, allowNull, allowPercent);\n\t\treturn allowNull && (w == null || h == null) ? null\n\t\t\t\t: new Size(w, h);\n\t}\n\n\tfunction convertValue(value, type, lookup) {\n\t\treturn value === 'none' ? null\n\t\t\t\t: type === 'number' ? parseFloat(value)\n\t\t\t\t: type === 'array' ?\n\t\t\t\t\tvalue ? value.split(/[\\s,]+/g).map(parseFloat) : []\n\t\t\t\t: type === 'color' ? getDefinition(value) || value\n\t\t\t\t: type === 'lookup' ? lookup[value]\n\t\t\t\t: value;\n\t}\n\n\tfunction importGroup(node, type, options, isRoot) {\n\t\tvar nodes = node.childNodes,\n\t\t\tisClip = type === 'clippath',\n\t\t\tisDefs = type === 'defs',\n\t\t\titem = new Group(),\n\t\t\tproject = item._project,\n\t\t\tcurrentStyle = project._currentStyle,\n\t\t\tchildren = [];\n\t\tif (!isClip && !isDefs) {\n\t\t\titem = applyAttributes(item, node, isRoot);\n\t\t\tproject._currentStyle = item._style.clone();\n\t\t}\n\t\tif (isRoot) {\n\t\t\tvar defs = node.querySelectorAll('defs');\n\t\t\tfor (var i = 0, l = defs.length; i < l; i++) {\n\t\t\t\timportNode(defs[i], options, false);\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0, l = nodes.length; i < l; i++) {\n\t\t\tvar childNode = nodes[i],\n\t\t\t\tchild;\n\t\t\tif (childNode.nodeType === 1\n\t\t\t\t\t&& !/^defs$/i.test(childNode.nodeName)\n\t\t\t\t\t&& (child = importNode(childNode, options, false))\n\t\t\t\t\t&& !(child instanceof SymbolDefinition))\n\t\t\t\tchildren.push(child);\n\t\t}\n\t\titem.addChildren(children);\n\t\tif (isClip)\n\t\t\titem = applyAttributes(item.reduce(), node, isRoot);\n\t\tproject._currentStyle = currentStyle;\n\t\tif (isClip || isDefs) {\n\t\t\titem.remove();\n\t\t\titem = null;\n\t\t}\n\t\treturn item;\n\t}\n\n\tfunction importPoly(node, type) {\n\t\tvar coords = node.getAttribute('points').match(\n\t\t\t\t\t/[+-]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?/g),\n\t\t\tpoints = [];\n\t\tfor (var i = 0, l = coords.length; i < l; i += 2)\n\t\t\tpoints.push(new Point(\n\t\t\t\t\tparseFloat(coords[i]),\n\t\t\t\t\tparseFloat(coords[i + 1])));\n\t\tvar path = new Path(points);\n\t\tif (type === 'polygon')\n\t\t\tpath.closePath();\n\t\treturn path;\n\t}\n\n\tfunction importPath(node) {\n\t\treturn PathItem.create(node.getAttribute('d'));\n\t}\n\n\tfunction importGradient(node, type) {\n\t\tvar id = (getValue(node, 'href', true) || '').substring(1),\n\t\t\tradial = type === 'radialgradient',\n\t\t\tgradient;\n\t\tif (id) {\n\t\t\tgradient = definitions[id].getGradient();\n\t\t\tif (gradient._radial ^ radial) {\n\t\t\t\tgradient = gradient.clone();\n\t\t\t\tgradient._radial = radial;\n\t\t\t}\n\t\t} else {\n\t\t\tvar nodes = node.childNodes,\n\t\t\t\tstops = [];\n\t\t\tfor (var i = 0, l = nodes.length; i < l; i++) {\n\t\t\t\tvar child = nodes[i];\n\t\t\t\tif (child.nodeType === 1)\n\t\t\t\t\tstops.push(applyAttributes(new GradientStop(), child));\n\t\t\t}\n\t\t\tgradient = new Gradient(stops, radial);\n\t\t}\n\t\tvar origin, destination, highlight,\n\t\t\tscaleToBounds = getValue(node, 'gradientUnits', true) !==\n\t\t\t\t'userSpaceOnUse';\n\t\tif (radial) {\n\t\t\torigin = getPoint(node, 'cx', 'cy', false, scaleToBounds,\n\t\t\t\t'50%', '50%');\n\t\t\tdestination = origin.add(\n\t\t\t\tgetValue(node, 'r', false, false, scaleToBounds, '50%'), 0);\n\t\t\thighlight = getPoint(node, 'fx', 'fy', true, scaleToBounds);\n\t\t} else {\n\t\t\torigin = getPoint(node, 'x1', 'y1', false, scaleToBounds,\n\t\t\t\t'0%', '0%');\n\t\t\tdestination = getPoint(node, 'x2', 'y2', false, scaleToBounds,\n\t\t\t\t'100%', '0%');\n\t\t}\n\t\tvar color = applyAttributes(\n\t\t\t\tnew Color(gradient, origin, destination, highlight), node);\n\t\tcolor._scaleToBounds = scaleToBounds;\n\t\treturn null;\n\t}\n\n\tvar importers = {\n\t\t'#document': function (node, type, options, isRoot) {\n\t\t\tvar nodes = node.childNodes;\n\t\t\tfor (var i = 0, l = nodes.length; i < l; i++) {\n\t\t\t\tvar child = nodes[i];\n\t\t\t\tif (child.nodeType === 1)\n\t\t\t\t\treturn importNode(child, options, isRoot);\n\t\t\t}\n\t\t},\n\t\tg: importGroup,\n\t\tsvg: importGroup,\n\t\tclippath: importGroup,\n\t\tpolygon: importPoly,\n\t\tpolyline: importPoly,\n\t\tpath: importPath,\n\t\tlineargradient: importGradient,\n\t\tradialgradient: importGradient,\n\n\t\timage: function (node) {\n\t\t\tvar raster = new Raster(getValue(node, 'href', true));\n\t\t\traster.on('load', function() {\n\t\t\t\tvar size = getSize(node);\n\t\t\t\tthis.setSize(size);\n\t\t\t\tvar center = getPoint(node).add(size.divide(2));\n\t\t\t\tthis._matrix.append(new Matrix().translate(center));\n\t\t\t});\n\t\t\treturn raster;\n\t\t},\n\n\t\tsymbol: function(node, type, options, isRoot) {\n\t\t\treturn new SymbolDefinition(\n\t\t\t\t\timportGroup(node, type, options, isRoot), true);\n\t\t},\n\n\t\tdefs: importGroup,\n\n\t\tuse: function(node) {\n\t\t\tvar id = (getValue(node, 'href', true) || '').substring(1),\n\t\t\t\tdefinition = definitions[id],\n\t\t\t\tpoint = getPoint(node);\n\t\t\treturn definition\n\t\t\t\t\t? definition instanceof SymbolDefinition\n\t\t\t\t\t\t? definition.place(point)\n\t\t\t\t\t\t: definition.clone().translate(point)\n\t\t\t\t\t: null;\n\t\t},\n\n\t\tcircle: function(node) {\n\t\t\treturn new Shape.Circle(\n\t\t\t\t\tgetPoint(node, 'cx', 'cy'),\n\t\t\t\t\tgetValue(node, 'r'));\n\t\t},\n\n\t\tellipse: function(node) {\n\t\t\treturn new Shape.Ellipse({\n\t\t\t\tcenter: getPoint(node, 'cx', 'cy'),\n\t\t\t\tradius: getSize(node, 'rx', 'ry')\n\t\t\t});\n\t\t},\n\n\t\trect: function(node) {\n\t\t\treturn new Shape.Rectangle(new Rectangle(\n\t\t\t\t\t\tgetPoint(node),\n\t\t\t\t\t\tgetSize(node)\n\t\t\t\t\t), getSize(node, 'rx', 'ry'));\n\t\t\t},\n\n\t\tline: function(node) {\n\t\t\treturn new Path.Line(\n\t\t\t\t\tgetPoint(node, 'x1', 'y1'),\n\t\t\t\t\tgetPoint(node, 'x2', 'y2'));\n\t\t},\n\n\t\ttext: function(node) {\n\n\t\t\tvar fontSize = parseFloat(node.getAttribute(\"font-size\"));\n\t\t\tvar alignmentBaseline = node.getAttribute(\"alignment-baseline\");\n\t\t\tif (node.childElementCount === 0) {\n\t\t\t\tvar text = new PointText();\n\t\t\t\ttext.setContent(node.textContent.trim() || '');\n\t\t\t\ttext.translate(0, text._style.getLeading());\n\t\t\t\tif (!isNaN(fontSize)) text.setFontSize(fontSize);\n\t\t\t\treturn text;\n\t\t\t} else {\n\t\t\t\tvar lines = [];\n\t\t\t\tvar spacing = 1.2;\n\t\t\t\tfor (var i = 0; i < node.childNodes.length; i++) {\n\t\t\t\t\tvar child = node.childNodes[i];\n\t\t\t\t\tif (!child.getAttribute) continue;\n\t\t\t\t\tlines.push(child.textContent);\n\t\t\t\t\tvar dyString = child.getAttribute('dy');\n\t\t\t\t\tif (dyString) {\n\t\t\t\t\t\tvar dy = parseFloat(dyString);\n\t\t\t\t\t\tif (!isNaN(dy)) {\n\t\t\t\t\t\t\tif (dyString.endsWith('em')) {\n\t\t\t\t\t\t\t\tspacing = dy;\n\t\t\t\t\t\t\t} else if (dyString.endsWith('px') && !isNaN(fontSize)) {\n\t\t\t\t\t\t\t\tspacing = dy / fontSize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar text = new PointText();\n\t\t\t\tif (!isNaN(fontSize)) text.setFontSize(fontSize);\n\t\t\t\ttext.setLeading(text.fontSize * spacing);\n\t\t\t\tif (alignmentBaseline === 'text-before-edge') {\n\t\t\t\t\ttext.setContent(' ');\n\t\t\t\t\ttext.translate(0, text.bounds.height);\n\t\t\t\t}\n\t\t\t\ttext.setContent(lines.join('\\n'));\n\t\t\t\treturn text;\n\t\t\t}\n\t\t},\n\n\t\tswitch: importGroup\n\t};\n\n\tfunction applyTransform(item, value, name, node) {\n\t\tif (item.transform) {\n\t\t\tvar transforms = (node.getAttribute(name) || '').split(/\\)\\s*/g),\n\t\t\t\tmatrix = new Matrix();\n\t\t\tfor (var i = 0, l = transforms.length; i < l; i++) {\n\t\t\t\tvar transform = transforms[i];\n\t\t\t\tif (!transform)\n\t\t\t\t\tbreak;\n\t\t\t\tvar parts = transform.split(/\\(\\s*/),\n\t\t\t\t\tcommand = parts[0],\n\t\t\t\t\tv = parts[1].split(/[\\s,]+/g);\n\t\t\t\tfor (var j = 0, m = v.length; j < m; j++)\n\t\t\t\t\tv[j] = parseFloat(v[j]);\n\t\t\t\tswitch (command) {\n\t\t\t\tcase 'matrix':\n\t\t\t\t\tmatrix.append(\n\t\t\t\t\t\t\tnew Matrix(v[0], v[1], v[2], v[3], v[4], v[5]));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'rotate':\n\t\t\t\t\tmatrix.rotate(v[0], v[1] || 0, v[2] || 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'translate':\n\t\t\t\t\tmatrix.translate(v[0], v[1] || 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'scale':\n\t\t\t\t\tmatrix.scale(v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'skewX':\n\t\t\t\t\tmatrix.skew(v[0], 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'skewY':\n\t\t\t\t\tmatrix.skew(0, v[0]);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\titem.transform(matrix);\n\t\t}\n\t}\n\n\tfunction applyOpacity(item, value, name) {\n\t\tvar key = name === 'fill-opacity' ? 'getFillColor' : 'getStrokeColor',\n\t\t\tcolor = item[key] && item[key]();\n\t\tif (color)\n\t\t\tcolor.setAlpha(parseFloat(value));\n\t}\n\n\tvar attributes = Base.set(Base.each(SvgStyles, function(entry) {\n\t\tthis[entry.attribute] = function(item, value) {\n\t\t\tif (item[entry.set]) {\n\t\t\t\titem[entry.set](convertValue(value, entry.type, entry.fromSVG));\n\t\t\t\tif (entry.type === 'color') {\n\t\t\t\t\tvar color = item[entry.get]();\n\t\t\t\t\tif (color) {\n\t\t\t\t\t\tif (color._scaleToBounds) {\n\t\t\t\t\t\t\tvar bounds = item.getBounds();\n\t\t\t\t\t\t\tcolor.transform(new Matrix()\n\t\t\t\t\t\t\t\t.translate(bounds.getPoint())\n\t\t\t\t\t\t\t\t.scale(bounds.getSize()));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}, {}), {\n\t\tid: function(item, value) {\n\t\t\tdefinitions[value] = item;\n\t\t},\n\n\t\t'clip-path': function(item, value) {\n\t\t\tvar clip = getDefinition(value);\n\t\t\tif (clip) {\n\t\t\t\tclip = clip.clone();\n\t\t\t\tclip.setClipMask(true);\n\t\t\t\tif (item instanceof Group) {\n\t\t\t\t\titem.insertChild(0, clip);\n\t\t\t\t} else {\n\t\t\t\t\treturn new Group(clip, item);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tgradientTransform: applyTransform,\n\t\ttransform: applyTransform,\n\n\t\t'fill-opacity': applyOpacity,\n\t\t'stroke-opacity': applyOpacity,\n\n\t\tvisibility: function(item, value) {\n\t\t\tif (item.setVisible)\n\t\t\t\titem.setVisible(value === 'visible');\n\t\t},\n\n\t\tdisplay: function(item, value) {\n\t\t\tif (item.setVisible)\n\t\t\t\titem.setVisible(value !== null);\n\t\t},\n\n\t\t'stop-color': function(item, value) {\n\t\t\tif (item.setColor)\n\t\t\t\titem.setColor(value);\n\t\t},\n\n\t\t'stop-opacity': function(item, value) {\n\t\t\tif (item._color)\n\t\t\t\titem._color.setAlpha(parseFloat(value));\n\t\t},\n\n\t\toffset: function(item, value) {\n\t\t\tif (item.setOffset) {\n\t\t\t\tvar percent = value.match(/(.*)%$/);\n\t\t\t\titem.setOffset(percent ? percent[1] / 100 : parseFloat(value));\n\t\t\t}\n\t\t},\n\n\t\tviewBox: function(item, value, name, node, styles) {\n\t\t\tvar rect = new Rectangle(convertValue(value, 'array')),\n\t\t\t\tsize = getSize(node, null, null, true),\n\t\t\t\tgroup,\n\t\t\t\tmatrix;\n\t\t\tif (item instanceof Group) {\n\t\t\t\tvar scale = size ? size.divide(rect.getSize()) : 1,\n\t\t\t\tmatrix = new Matrix().scale(scale)\n\t\t\t\t\t\t.translate(rect.getPoint().negate());\n\t\t\t\tgroup = item;\n\t\t\t} else if (item instanceof SymbolDefinition) {\n\t\t\t\tif (size)\n\t\t\t\t\trect.setSize(size);\n\t\t\t\tgroup = item._item;\n\t\t\t}\n\t\t\tif (group)  {\n\t\t\t\tif (getAttribute(node, 'overflow', styles) !== 'visible') {\n\t\t\t\t\tvar clip = new Shape.Rectangle(rect);\n\t\t\t\t\tclip.setClipMask(true);\n\t\t\t\t\tgroup.addChild(clip);\n\t\t\t\t}\n\t\t\t\tif (matrix)\n\t\t\t\t\tgroup.transform(matrix);\n\t\t\t}\n\t\t},\n\n\t\t'fill-rule': function(item, value) {\n\t\t\tif (value === 'evenodd' || value === 'nonzero') item.fillRule = value;\n\t\t}\n\t});\n\n\tfunction getAttribute(node, name, styles) {\n\t\tvar attr = node.attributes[name],\n\t\t\tvalue = attr && attr.value;\n\t\tif (!value && node.style) {\n\t\t\tvar style = Base.camelize(name);\n\t\t\tvalue = node.style[style];\n\t\t\tif (!value && styles.node[style] !== styles.parent[style])\n\t\t\t\tvalue = styles.node[style];\n\t\t}\n\t\treturn !value ? undefined\n\t\t\t\t: value === 'none' ? null\n\t\t\t\t: value;\n\t}\n\n\tfunction applyAttributes(item, node, isRoot) {\n\t\tvar parent = node.parentNode,\n\t\t\tstyles = {\n\t\t\t\tnode: DomElement.getStyles(node) || {},\n\t\t\t\tparent: !isRoot && !/^defs$/i.test(parent.tagName)\n\t\t\t\t\t\t&& DomElement.getStyles(parent) || {}\n\t\t\t};\n\t\tBase.each(attributes, function(apply, name) {\n\t\t\tvar value = getAttribute(node, name, styles);\n\t\t\titem = value !== undefined\n\t\t\t\t\t&& apply(item, value, name, node, styles) || item;\n\t\t});\n\t\treturn item;\n\t}\n\n\tfunction getDefinition(value) {\n\t\tvar match = value && value.match(/\\((?:[\"'#]*)([^\"')]+)/),\n\t\t\tname = match && match[1],\n\t\t\tres = name && definitions[window\n\t\t\t\t\t? name.replace(window.location.href.split('#')[0] + '#', '')\n\t\t\t\t\t: name];\n\t\tif (res && res._scaleToBounds) {\n\t\t\tres = res.clone();\n\t\t\tres._scaleToBounds = true;\n\t\t}\n\t\treturn res;\n\t}\n\n\tfunction importNode(node, options, isRoot) {\n\t\tvar type = node.nodeName.toLowerCase(),\n\t\t\tisElement = type !== '#document',\n\t\t\tbody = document.body,\n\t\t\tcontainer,\n\t\t\tparent,\n\t\t\tnext;\n\t\tif (isRoot && isElement) {\n\t\t\trootSize = paper.getView().getSize();\n\t\t\trootSize = getSize(node, null, null, true) || rootSize;\n\t\t\tcontainer = SvgElement.create('svg', {\n\t\t\t\tstyle: 'stroke-width: 1px; stroke-miterlimit: 10'\n\t\t\t});\n\t\t\tparent = node.parentNode;\n\t\t\tnext = node.nextSibling;\n\t\t\tcontainer.appendChild(node);\n\t\t\tbody.appendChild(container);\n\t\t}\n\t\tvar settings = paper.settings,\n\t\t\tapplyMatrix = settings.applyMatrix,\n\t\t\tinsertItems = settings.insertItems;\n\t\tsettings.applyMatrix = false;\n\t\tsettings.insertItems = false;\n\t\tvar importer = importers[type],\n\t\t\titem = importer && importer(node, type, options, isRoot) || null;\n\t\tsettings.insertItems = insertItems;\n\t\tsettings.applyMatrix = applyMatrix;\n\t\tif (item) {\n\t\t\tif (isElement && !(item instanceof Group))\n\t\t\t\titem = applyAttributes(item, node, isRoot);\n\t\t\tvar onImport = options.onImport,\n\t\t\t\tdata = isElement && node.getAttribute('data-paper-data');\n\t\t\tif (onImport)\n\t\t\t\titem = onImport(node, item, options) || item;\n\t\t\tif (options.expandShapes && item instanceof Shape) {\n\t\t\t\titem.remove();\n\t\t\t\titem = item.toPath();\n\t\t\t}\n\t\t\tif (data)\n\t\t\t\titem._data = JSON.parse(data);\n\t\t}\n\t\tif (container) {\n\t\t\tbody.removeChild(container);\n\t\t\tif (parent) {\n\t\t\t\tif (next) {\n\t\t\t\t\tparent.insertBefore(node, next);\n\t\t\t\t} else {\n\t\t\t\t\tparent.appendChild(node);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (isRoot) {\n\t\t\tdefinitions = {};\n\t\t\tif (item && Base.pick(options.applyMatrix, applyMatrix))\n\t\t\t\titem.matrix.apply(true, true);\n\t\t}\n\t\treturn item;\n\t}\n\n\tfunction importSVG(source, options, owner) {\n\t\tif (!source)\n\t\t\treturn null;\n\t\toptions = typeof options === 'function' ? { onLoad: options }\n\t\t\t\t: options || {};\n\t\tvar scope = paper,\n\t\t\titem = null;\n\n\t\tfunction onLoad(svg) {\n\t\t\ttry {\n\t\t\t\tvar node = typeof svg === 'object'\n\t\t\t\t\t? svg\n\t\t\t\t\t: new self.DOMParser().parseFromString(\n\t\t\t\t\t\tsvg,\n\t\t\t\t\t\t'image/svg+xml'\n\t\t\t\t\t);\n\t\t\t\tif (!node.nodeName) {\n\t\t\t\t\tnode = null;\n\t\t\t\t\tthrow new Error('Unsupported SVG source: ' + source);\n\t\t\t\t}\n\t\t\t\tpaper = scope;\n\t\t\t\titem = importNode(node, options, true);\n\t\t\t\tif (!options || options.insert !== false) {\n\t\t\t\t\towner._insertItem(undefined, item);\n\t\t\t\t}\n\t\t\t\tvar onLoad = options.onLoad;\n\t\t\t\tif (onLoad)\n\t\t\t\t\tonLoad(item, svg);\n\t\t\t} catch (e) {\n\t\t\t\tonError(e);\n\t\t\t}\n\t\t}\n\n\t\tfunction onError(message, status) {\n\t\t\tvar onError = options.onError;\n\t\t\tif (onError) {\n\t\t\t\tonError(message, status);\n\t\t\t} else {\n\t\t\t\tthrow new Error(message);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof source === 'string' && !/^[\\s\\S]*</.test(source)) {\n\t\t\tvar node = document.getElementById(source);\n\t\t\tif (node) {\n\t\t\t\tonLoad(node);\n\t\t\t} else {\n\t\t\t\tHttp.request({\n\t\t\t\t\turl: source,\n\t\t\t\t\tasync: true,\n\t\t\t\t\tonLoad: onLoad,\n\t\t\t\t\tonError: onError\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (typeof File !== 'undefined' && source instanceof File) {\n\t\t\tvar reader = new FileReader();\n\t\t\treader.onload = function() {\n\t\t\t\tonLoad(reader.result);\n\t\t\t};\n\t\t\treader.onerror = function() {\n\t\t\t\tonError(reader.error);\n\t\t\t};\n\t\t\treturn reader.readAsText(source);\n\t\t} else {\n\t\t\tonLoad(source);\n\t\t}\n\n\t\treturn item;\n\t}\n\n\tItem.inject({\n\t\timportSVG: function(node, options) {\n\t\t\treturn importSVG(node, options, this);\n\t\t}\n\t});\n\n\tProject.inject({\n\t\timportSVG: function(node, options) {\n\t\t\tthis.activate();\n\t\t\treturn importSVG(node, options, this);\n\t\t}\n\t});\n};\n\nBase.exports.PaperScript = function() {\n\tvar global = this,\n\t\tacorn = global.acorn;\n\tif (!acorn && typeof require !== 'undefined') {\n\t\ttry { acorn = require('acorn'); } catch(e) {}\n\t}\n\tif (!acorn) {\n\t\tvar exports, module;\n\t\tacorn = exports = module = {};\n\n(function(root, mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") return mod(exports);\n  if (typeof define == \"function\" && define.amd) return define([\"exports\"], mod);\n  mod(root.acorn || (root.acorn = {}));\n})(this, function(exports) {\n  \"use strict\";\n\n  exports.version = \"0.5.0\";\n\n  var options, input, inputLen, sourceFile;\n\n  exports.parse = function(inpt, opts) {\n\tinput = String(inpt); inputLen = input.length;\n\tsetOptions(opts);\n\tinitTokenState();\n\treturn parseTopLevel(options.program);\n  };\n\n  var defaultOptions = exports.defaultOptions = {\n\tecmaVersion: 5,\n\tstrictSemicolons: false,\n\tallowTrailingCommas: true,\n\tforbidReserved: false,\n\tallowReturnOutsideFunction: false,\n\tlocations: false,\n\tonComment: null,\n\tranges: false,\n\tprogram: null,\n\tsourceFile: null,\n\tdirectSourceFile: null\n  };\n\n  function setOptions(opts) {\n\toptions = opts || {};\n\tfor (var opt in defaultOptions) if (!Object.prototype.hasOwnProperty.call(options, opt))\n\t  options[opt] = defaultOptions[opt];\n\tsourceFile = options.sourceFile || null;\n  }\n\n  var getLineInfo = exports.getLineInfo = function(input, offset) {\n\tfor (var line = 1, cur = 0;;) {\n\t  lineBreak.lastIndex = cur;\n\t  var match = lineBreak.exec(input);\n\t  if (match && match.index < offset) {\n\t\t++line;\n\t\tcur = match.index + match[0].length;\n\t  } else break;\n\t}\n\treturn {line: line, column: offset - cur};\n  };\n\n  exports.tokenize = function(inpt, opts) {\n\tinput = String(inpt); inputLen = input.length;\n\tsetOptions(opts);\n\tinitTokenState();\n\n\tvar t = {};\n\tfunction getToken(forceRegexp) {\n\t  lastEnd = tokEnd;\n\t  readToken(forceRegexp);\n\t  t.start = tokStart; t.end = tokEnd;\n\t  t.startLoc = tokStartLoc; t.endLoc = tokEndLoc;\n\t  t.type = tokType; t.value = tokVal;\n\t  return t;\n\t}\n\tgetToken.jumpTo = function(pos, reAllowed) {\n\t  tokPos = pos;\n\t  if (options.locations) {\n\t\ttokCurLine = 1;\n\t\ttokLineStart = lineBreak.lastIndex = 0;\n\t\tvar match;\n\t\twhile ((match = lineBreak.exec(input)) && match.index < pos) {\n\t\t  ++tokCurLine;\n\t\t  tokLineStart = match.index + match[0].length;\n\t\t}\n\t  }\n\t  tokRegexpAllowed = reAllowed;\n\t  skipSpace();\n\t};\n\treturn getToken;\n  };\n\n  var tokPos;\n\n  var tokStart, tokEnd;\n\n  var tokStartLoc, tokEndLoc;\n\n  var tokType, tokVal;\n\n  var tokRegexpAllowed;\n\n  var tokCurLine, tokLineStart;\n\n  var lastStart, lastEnd, lastEndLoc;\n\n  var inFunction, labels, strict;\n\n  function raise(pos, message) {\n\tvar loc = getLineInfo(input, pos);\n\tmessage += \" (\" + loc.line + \":\" + loc.column + \")\";\n\tvar err = new SyntaxError(message);\n\terr.pos = pos; err.loc = loc; err.raisedAt = tokPos;\n\tthrow err;\n  }\n\n  var empty = [];\n\n  var _num = {type: \"num\"}, _regexp = {type: \"regexp\"}, _string = {type: \"string\"};\n  var _name = {type: \"name\"}, _eof = {type: \"eof\"};\n\n  var _break = {keyword: \"break\"}, _case = {keyword: \"case\", beforeExpr: true}, _catch = {keyword: \"catch\"};\n  var _continue = {keyword: \"continue\"}, _debugger = {keyword: \"debugger\"}, _default = {keyword: \"default\"};\n  var _do = {keyword: \"do\", isLoop: true}, _else = {keyword: \"else\", beforeExpr: true};\n  var _finally = {keyword: \"finally\"}, _for = {keyword: \"for\", isLoop: true}, _function = {keyword: \"function\"};\n  var _if = {keyword: \"if\"}, _return = {keyword: \"return\", beforeExpr: true}, _switch = {keyword: \"switch\"};\n  var _throw = {keyword: \"throw\", beforeExpr: true}, _try = {keyword: \"try\"}, _var = {keyword: \"var\"};\n  var _while = {keyword: \"while\", isLoop: true}, _with = {keyword: \"with\"}, _new = {keyword: \"new\", beforeExpr: true};\n  var _this = {keyword: \"this\"};\n\n  var _null = {keyword: \"null\", atomValue: null}, _true = {keyword: \"true\", atomValue: true};\n  var _false = {keyword: \"false\", atomValue: false};\n\n  var _in = {keyword: \"in\", binop: 7, beforeExpr: true};\n\n  var keywordTypes = {\"break\": _break, \"case\": _case, \"catch\": _catch,\n\t\t\t\t\t  \"continue\": _continue, \"debugger\": _debugger, \"default\": _default,\n\t\t\t\t\t  \"do\": _do, \"else\": _else, \"finally\": _finally, \"for\": _for,\n\t\t\t\t\t  \"function\": _function, \"if\": _if, \"return\": _return, \"switch\": _switch,\n\t\t\t\t\t  \"throw\": _throw, \"try\": _try, \"var\": _var, \"while\": _while, \"with\": _with,\n\t\t\t\t\t  \"null\": _null, \"true\": _true, \"false\": _false, \"new\": _new, \"in\": _in,\n\t\t\t\t\t  \"instanceof\": {keyword: \"instanceof\", binop: 7, beforeExpr: true}, \"this\": _this,\n\t\t\t\t\t  \"typeof\": {keyword: \"typeof\", prefix: true, beforeExpr: true},\n\t\t\t\t\t  \"void\": {keyword: \"void\", prefix: true, beforeExpr: true},\n\t\t\t\t\t  \"delete\": {keyword: \"delete\", prefix: true, beforeExpr: true}};\n\n  var _bracketL = {type: \"[\", beforeExpr: true}, _bracketR = {type: \"]\"}, _braceL = {type: \"{\", beforeExpr: true};\n  var _braceR = {type: \"}\"}, _parenL = {type: \"(\", beforeExpr: true}, _parenR = {type: \")\"};\n  var _comma = {type: \",\", beforeExpr: true}, _semi = {type: \";\", beforeExpr: true};\n  var _colon = {type: \":\", beforeExpr: true}, _dot = {type: \".\"}, _question = {type: \"?\", beforeExpr: true};\n\n  var _slash = {binop: 10, beforeExpr: true}, _eq = {isAssign: true, beforeExpr: true};\n  var _assign = {isAssign: true, beforeExpr: true};\n  var _incDec = {postfix: true, prefix: true, isUpdate: true}, _prefix = {prefix: true, beforeExpr: true};\n  var _logicalOR = {binop: 1, beforeExpr: true};\n  var _logicalAND = {binop: 2, beforeExpr: true};\n  var _bitwiseOR = {binop: 3, beforeExpr: true};\n  var _bitwiseXOR = {binop: 4, beforeExpr: true};\n  var _bitwiseAND = {binop: 5, beforeExpr: true};\n  var _equality = {binop: 6, beforeExpr: true};\n  var _relational = {binop: 7, beforeExpr: true};\n  var _bitShift = {binop: 8, beforeExpr: true};\n  var _plusMin = {binop: 9, prefix: true, beforeExpr: true};\n  var _multiplyModulo = {binop: 10, beforeExpr: true};\n\n  exports.tokTypes = {bracketL: _bracketL, bracketR: _bracketR, braceL: _braceL, braceR: _braceR,\n\t\t\t\t\t  parenL: _parenL, parenR: _parenR, comma: _comma, semi: _semi, colon: _colon,\n\t\t\t\t\t  dot: _dot, question: _question, slash: _slash, eq: _eq, name: _name, eof: _eof,\n\t\t\t\t\t  num: _num, regexp: _regexp, string: _string};\n  for (var kw in keywordTypes) exports.tokTypes[\"_\" + kw] = keywordTypes[kw];\n\n  function makePredicate(words) {\n\twords = words.split(\" \");\n\tvar f = \"\", cats = [];\n\tout: for (var i = 0; i < words.length; ++i) {\n\t  for (var j = 0; j < cats.length; ++j)\n\t\tif (cats[j][0].length == words[i].length) {\n\t\t  cats[j].push(words[i]);\n\t\t  continue out;\n\t\t}\n\t  cats.push([words[i]]);\n\t}\n\tfunction compareTo(arr) {\n\t  if (arr.length == 1) return f += \"return str === \" + JSON.stringify(arr[0]) + \";\";\n\t  f += \"switch(str){\";\n\t  for (var i = 0; i < arr.length; ++i) f += \"case \" + JSON.stringify(arr[i]) + \":\";\n\t  f += \"return true}return false;\";\n\t}\n\n\tif (cats.length > 3) {\n\t  cats.sort(function(a, b) {return b.length - a.length;});\n\t  f += \"switch(str.length){\";\n\t  for (var i = 0; i < cats.length; ++i) {\n\t\tvar cat = cats[i];\n\t\tf += \"case \" + cat[0].length + \":\";\n\t\tcompareTo(cat);\n\t  }\n\t  f += \"}\";\n\n\t} else {\n\t  compareTo(words);\n\t}\n\treturn new Function(\"str\", f);\n  }\n\n  var isReservedWord3 = makePredicate(\"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\");\n\n  var isReservedWord5 = makePredicate(\"class enum extends super const export import\");\n\n  var isStrictReservedWord = makePredicate(\"implements interface let package private protected public static yield\");\n\n  var isStrictBadIdWord = makePredicate(\"eval arguments\");\n\n  var isKeyword = makePredicate(\"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\");\n\n  var nonASCIIwhitespace = /[\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n  var nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n  var nonASCIIidentifierChars = \"\\u0300-\\u036f\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u0620-\\u0649\\u0672-\\u06d3\\u06e7-\\u06e8\\u06fb-\\u06fc\\u0730-\\u074a\\u0800-\\u0814\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0840-\\u0857\\u08e4-\\u08fe\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962-\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09d7\\u09df-\\u09e0\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2-\\u0ae3\\u0ae6-\\u0aef\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b5f-\\u0b60\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c01-\\u0c03\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62-\\u0c63\\u0c66-\\u0c6f\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2-\\u0ce3\\u0ce6-\\u0cef\\u0d02\\u0d03\\u0d46-\\u0d48\\u0d57\\u0d62-\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e34-\\u0e3a\\u0e40-\\u0e45\\u0e50-\\u0e59\\u0eb4-\\u0eb9\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f41-\\u0f47\\u0f71-\\u0f84\\u0f86-\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u1000-\\u1029\\u1040-\\u1049\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u170e-\\u1710\\u1720-\\u1730\\u1740-\\u1750\\u1772\\u1773\\u1780-\\u17b2\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u1920-\\u192b\\u1930-\\u193b\\u1951-\\u196d\\u19b0-\\u19c0\\u19c8-\\u19c9\\u19d0-\\u19d9\\u1a00-\\u1a15\\u1a20-\\u1a53\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1b46-\\u1b4b\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c00-\\u1c22\\u1c40-\\u1c49\\u1c5b-\\u1c7d\\u1cd0-\\u1cd2\\u1d00-\\u1dbe\\u1e01-\\u1f15\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2d81-\\u2d96\\u2de0-\\u2dff\\u3021-\\u3028\\u3099\\u309a\\ua640-\\ua66d\\ua674-\\ua67d\\ua69f\\ua6f0-\\ua6f1\\ua7f8-\\ua800\\ua806\\ua80b\\ua823-\\ua827\\ua880-\\ua881\\ua8b4-\\ua8c4\\ua8d0-\\ua8d9\\ua8f3-\\ua8f7\\ua900-\\ua909\\ua926-\\ua92d\\ua930-\\ua945\\ua980-\\ua983\\ua9b3-\\ua9c0\\uaa00-\\uaa27\\uaa40-\\uaa41\\uaa4c-\\uaa4d\\uaa50-\\uaa59\\uaa7b\\uaae0-\\uaae9\\uaaf2-\\uaaf3\\uabc0-\\uabe1\\uabec\\uabed\\uabf0-\\uabf9\\ufb20-\\ufb28\\ufe00-\\ufe0f\\ufe20-\\ufe26\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\n  var nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\n  var nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\n  var newline = /[\\n\\r\\u2028\\u2029]/;\n\n  var lineBreak = /\\r\\n|[\\n\\r\\u2028\\u2029]/g;\n\n  var isIdentifierStart = exports.isIdentifierStart = function(code) {\n\tif (code < 65) return code === 36;\n\tif (code < 91) return true;\n\tif (code < 97) return code === 95;\n\tif (code < 123)return true;\n\treturn code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n  };\n\n  var isIdentifierChar = exports.isIdentifierChar = function(code) {\n\tif (code < 48) return code === 36;\n\tif (code < 58) return true;\n\tif (code < 65) return false;\n\tif (code < 91) return true;\n\tif (code < 97) return code === 95;\n\tif (code < 123)return true;\n\treturn code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n  };\n\n  function line_loc_t() {\n\tthis.line = tokCurLine;\n\tthis.column = tokPos - tokLineStart;\n  }\n\n  function initTokenState() {\n\ttokCurLine = 1;\n\ttokPos = tokLineStart = 0;\n\ttokRegexpAllowed = true;\n\tskipSpace();\n  }\n\n  function finishToken(type, val) {\n\ttokEnd = tokPos;\n\tif (options.locations) tokEndLoc = new line_loc_t;\n\ttokType = type;\n\tskipSpace();\n\ttokVal = val;\n\ttokRegexpAllowed = type.beforeExpr;\n  }\n\n  function skipBlockComment() {\n\tvar startLoc = options.onComment && options.locations && new line_loc_t;\n\tvar start = tokPos, end = input.indexOf(\"*/\", tokPos += 2);\n\tif (end === -1) raise(tokPos - 2, \"Unterminated comment\");\n\ttokPos = end + 2;\n\tif (options.locations) {\n\t  lineBreak.lastIndex = start;\n\t  var match;\n\t  while ((match = lineBreak.exec(input)) && match.index < tokPos) {\n\t\t++tokCurLine;\n\t\ttokLineStart = match.index + match[0].length;\n\t  }\n\t}\n\tif (options.onComment)\n\t  options.onComment(true, input.slice(start + 2, end), start, tokPos,\n\t\t\t\t\t\tstartLoc, options.locations && new line_loc_t);\n  }\n\n  function skipLineComment() {\n\tvar start = tokPos;\n\tvar startLoc = options.onComment && options.locations && new line_loc_t;\n\tvar ch = input.charCodeAt(tokPos+=2);\n\twhile (tokPos < inputLen && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) {\n\t  ++tokPos;\n\t  ch = input.charCodeAt(tokPos);\n\t}\n\tif (options.onComment)\n\t  options.onComment(false, input.slice(start + 2, tokPos), start, tokPos,\n\t\t\t\t\t\tstartLoc, options.locations && new line_loc_t);\n  }\n\n  function skipSpace() {\n\twhile (tokPos < inputLen) {\n\t  var ch = input.charCodeAt(tokPos);\n\t  if (ch === 32) {\n\t\t++tokPos;\n\t  } else if (ch === 13) {\n\t\t++tokPos;\n\t\tvar next = input.charCodeAt(tokPos);\n\t\tif (next === 10) {\n\t\t  ++tokPos;\n\t\t}\n\t\tif (options.locations) {\n\t\t  ++tokCurLine;\n\t\t  tokLineStart = tokPos;\n\t\t}\n\t  } else if (ch === 10 || ch === 8232 || ch === 8233) {\n\t\t++tokPos;\n\t\tif (options.locations) {\n\t\t  ++tokCurLine;\n\t\t  tokLineStart = tokPos;\n\t\t}\n\t  } else if (ch > 8 && ch < 14) {\n\t\t++tokPos;\n\t  } else if (ch === 47) {\n\t\tvar next = input.charCodeAt(tokPos + 1);\n\t\tif (next === 42) {\n\t\t  skipBlockComment();\n\t\t} else if (next === 47) {\n\t\t  skipLineComment();\n\t\t} else break;\n\t  } else if (ch === 160) {\n\t\t++tokPos;\n\t  } else if (ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n\t\t++tokPos;\n\t  } else {\n\t\tbreak;\n\t  }\n\t}\n  }\n\n  function readToken_dot() {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tif (next >= 48 && next <= 57) return readNumber(true);\n\t++tokPos;\n\treturn finishToken(_dot);\n  }\n\n  function readToken_slash() {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tif (tokRegexpAllowed) {++tokPos; return readRegexp();}\n\tif (next === 61) return finishOp(_assign, 2);\n\treturn finishOp(_slash, 1);\n  }\n\n  function readToken_mult_modulo() {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tif (next === 61) return finishOp(_assign, 2);\n\treturn finishOp(_multiplyModulo, 1);\n  }\n\n  function readToken_pipe_amp(code) {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tif (next === code) return finishOp(code === 124 ? _logicalOR : _logicalAND, 2);\n\tif (next === 61) return finishOp(_assign, 2);\n\treturn finishOp(code === 124 ? _bitwiseOR : _bitwiseAND, 1);\n  }\n\n  function readToken_caret() {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tif (next === 61) return finishOp(_assign, 2);\n\treturn finishOp(_bitwiseXOR, 1);\n  }\n\n  function readToken_plus_min(code) {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tif (next === code) {\n\t  if (next == 45 && input.charCodeAt(tokPos + 2) == 62 &&\n\t\t  newline.test(input.slice(lastEnd, tokPos))) {\n\t\ttokPos += 3;\n\t\tskipLineComment();\n\t\tskipSpace();\n\t\treturn readToken();\n\t  }\n\t  return finishOp(_incDec, 2);\n\t}\n\tif (next === 61) return finishOp(_assign, 2);\n\treturn finishOp(_plusMin, 1);\n  }\n\n  function readToken_lt_gt(code) {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tvar size = 1;\n\tif (next === code) {\n\t  size = code === 62 && input.charCodeAt(tokPos + 2) === 62 ? 3 : 2;\n\t  if (input.charCodeAt(tokPos + size) === 61) return finishOp(_assign, size + 1);\n\t  return finishOp(_bitShift, size);\n\t}\n\tif (next == 33 && code == 60 && input.charCodeAt(tokPos + 2) == 45 &&\n\t\tinput.charCodeAt(tokPos + 3) == 45) {\n\t  tokPos += 4;\n\t  skipLineComment();\n\t  skipSpace();\n\t  return readToken();\n\t}\n\tif (next === 61)\n\t  size = input.charCodeAt(tokPos + 2) === 61 ? 3 : 2;\n\treturn finishOp(_relational, size);\n  }\n\n  function readToken_eq_excl(code) {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tif (next === 61) return finishOp(_equality, input.charCodeAt(tokPos + 2) === 61 ? 3 : 2);\n\treturn finishOp(code === 61 ? _eq : _prefix, 1);\n  }\n\n  function getTokenFromCode(code) {\n\tswitch(code) {\n\tcase 46:\n\t  return readToken_dot();\n\n\tcase 40: ++tokPos; return finishToken(_parenL);\n\tcase 41: ++tokPos; return finishToken(_parenR);\n\tcase 59: ++tokPos; return finishToken(_semi);\n\tcase 44: ++tokPos; return finishToken(_comma);\n\tcase 91: ++tokPos; return finishToken(_bracketL);\n\tcase 93: ++tokPos; return finishToken(_bracketR);\n\tcase 123: ++tokPos; return finishToken(_braceL);\n\tcase 125: ++tokPos; return finishToken(_braceR);\n\tcase 58: ++tokPos; return finishToken(_colon);\n\tcase 63: ++tokPos; return finishToken(_question);\n\n\tcase 48:\n\t  var next = input.charCodeAt(tokPos + 1);\n\t  if (next === 120 || next === 88) return readHexNumber();\n\tcase 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57:\n\t  return readNumber(false);\n\n\tcase 34: case 39:\n\t  return readString(code);\n\n\tcase 47:\n\t  return readToken_slash(code);\n\n\tcase 37: case 42:\n\t  return readToken_mult_modulo();\n\n\tcase 124: case 38:\n\t  return readToken_pipe_amp(code);\n\n\tcase 94:\n\t  return readToken_caret();\n\n\tcase 43: case 45:\n\t  return readToken_plus_min(code);\n\n\tcase 60: case 62:\n\t  return readToken_lt_gt(code);\n\n\tcase 61: case 33:\n\t  return readToken_eq_excl(code);\n\n\tcase 126:\n\t  return finishOp(_prefix, 1);\n\t}\n\n\treturn false;\n  }\n\n  function readToken(forceRegexp) {\n\tif (!forceRegexp) tokStart = tokPos;\n\telse tokPos = tokStart + 1;\n\tif (options.locations) tokStartLoc = new line_loc_t;\n\tif (forceRegexp) return readRegexp();\n\tif (tokPos >= inputLen) return finishToken(_eof);\n\n\tvar code = input.charCodeAt(tokPos);\n\tif (isIdentifierStart(code) || code === 92 ) return readWord();\n\n\tvar tok = getTokenFromCode(code);\n\n\tif (tok === false) {\n\t  var ch = String.fromCharCode(code);\n\t  if (ch === \"\\\\\" || nonASCIIidentifierStart.test(ch)) return readWord();\n\t  raise(tokPos, \"Unexpected character '\" + ch + \"'\");\n\t}\n\treturn tok;\n  }\n\n  function finishOp(type, size) {\n\tvar str = input.slice(tokPos, tokPos + size);\n\ttokPos += size;\n\tfinishToken(type, str);\n  }\n\n  function readRegexp() {\n\tvar content = \"\", escaped, inClass, start = tokPos;\n\tfor (;;) {\n\t  if (tokPos >= inputLen) raise(start, \"Unterminated regular expression\");\n\t  var ch = input.charAt(tokPos);\n\t  if (newline.test(ch)) raise(start, \"Unterminated regular expression\");\n\t  if (!escaped) {\n\t\tif (ch === \"[\") inClass = true;\n\t\telse if (ch === \"]\" && inClass) inClass = false;\n\t\telse if (ch === \"/\" && !inClass) break;\n\t\tescaped = ch === \"\\\\\";\n\t  } else escaped = false;\n\t  ++tokPos;\n\t}\n\tvar content = input.slice(start, tokPos);\n\t++tokPos;\n\tvar mods = readWord1();\n\tif (mods && !/^[gmsiy]*$/.test(mods)) raise(start, \"Invalid regexp flag\");\n\ttry {\n\t  var value = new RegExp(content, mods);\n\t} catch (e) {\n\t  if (e instanceof SyntaxError) raise(start, e.message);\n\t  raise(e);\n\t}\n\treturn finishToken(_regexp, value);\n  }\n\n  function readInt(radix, len) {\n\tvar start = tokPos, total = 0;\n\tfor (var i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n\t  var code = input.charCodeAt(tokPos), val;\n\t  if (code >= 97) val = code - 97 + 10;\n\t  else if (code >= 65) val = code - 65 + 10;\n\t  else if (code >= 48 && code <= 57) val = code - 48;\n\t  else val = Infinity;\n\t  if (val >= radix) break;\n\t  ++tokPos;\n\t  total = total * radix + val;\n\t}\n\tif (tokPos === start || len != null && tokPos - start !== len) return null;\n\n\treturn total;\n  }\n\n  function readHexNumber() {\n\ttokPos += 2;\n\tvar val = readInt(16);\n\tif (val == null) raise(tokStart + 2, \"Expected hexadecimal number\");\n\tif (isIdentifierStart(input.charCodeAt(tokPos))) raise(tokPos, \"Identifier directly after number\");\n\treturn finishToken(_num, val);\n  }\n\n  function readNumber(startsWithDot) {\n\tvar start = tokPos, isFloat = false, octal = input.charCodeAt(tokPos) === 48;\n\tif (!startsWithDot && readInt(10) === null) raise(start, \"Invalid number\");\n\tif (input.charCodeAt(tokPos) === 46) {\n\t  ++tokPos;\n\t  readInt(10);\n\t  isFloat = true;\n\t}\n\tvar next = input.charCodeAt(tokPos);\n\tif (next === 69 || next === 101) {\n\t  next = input.charCodeAt(++tokPos);\n\t  if (next === 43 || next === 45) ++tokPos;\n\t  if (readInt(10) === null) raise(start, \"Invalid number\");\n\t  isFloat = true;\n\t}\n\tif (isIdentifierStart(input.charCodeAt(tokPos))) raise(tokPos, \"Identifier directly after number\");\n\n\tvar str = input.slice(start, tokPos), val;\n\tif (isFloat) val = parseFloat(str);\n\telse if (!octal || str.length === 1) val = parseInt(str, 10);\n\telse if (/[89]/.test(str) || strict) raise(start, \"Invalid number\");\n\telse val = parseInt(str, 8);\n\treturn finishToken(_num, val);\n  }\n\n  function readString(quote) {\n\ttokPos++;\n\tvar out = \"\";\n\tfor (;;) {\n\t  if (tokPos >= inputLen) raise(tokStart, \"Unterminated string constant\");\n\t  var ch = input.charCodeAt(tokPos);\n\t  if (ch === quote) {\n\t\t++tokPos;\n\t\treturn finishToken(_string, out);\n\t  }\n\t  if (ch === 92) {\n\t\tch = input.charCodeAt(++tokPos);\n\t\tvar octal = /^[0-7]+/.exec(input.slice(tokPos, tokPos + 3));\n\t\tif (octal) octal = octal[0];\n\t\twhile (octal && parseInt(octal, 8) > 255) octal = octal.slice(0, -1);\n\t\tif (octal === \"0\") octal = null;\n\t\t++tokPos;\n\t\tif (octal) {\n\t\t  if (strict) raise(tokPos - 2, \"Octal literal in strict mode\");\n\t\t  out += String.fromCharCode(parseInt(octal, 8));\n\t\t  tokPos += octal.length - 1;\n\t\t} else {\n\t\t  switch (ch) {\n\t\t  case 110: out += \"\\n\"; break;\n\t\t  case 114: out += \"\\r\"; break;\n\t\t  case 120: out += String.fromCharCode(readHexChar(2)); break;\n\t\t  case 117: out += String.fromCharCode(readHexChar(4)); break;\n\t\t  case 85: out += String.fromCharCode(readHexChar(8)); break;\n\t\t  case 116: out += \"\\t\"; break;\n\t\t  case 98: out += \"\\b\"; break;\n\t\t  case 118: out += \"\\u000b\"; break;\n\t\t  case 102: out += \"\\f\"; break;\n\t\t  case 48: out += \"\\0\"; break;\n\t\t  case 13: if (input.charCodeAt(tokPos) === 10) ++tokPos;\n\t\t  case 10:\n\t\t\tif (options.locations) { tokLineStart = tokPos; ++tokCurLine; }\n\t\t\tbreak;\n\t\t  default: out += String.fromCharCode(ch); break;\n\t\t  }\n\t\t}\n\t  } else {\n\t\tif (ch === 13 || ch === 10 || ch === 8232 || ch === 8233) raise(tokStart, \"Unterminated string constant\");\n\t\tout += String.fromCharCode(ch);\n\t\t++tokPos;\n\t  }\n\t}\n  }\n\n  function readHexChar(len) {\n\tvar n = readInt(16, len);\n\tif (n === null) raise(tokStart, \"Bad character escape sequence\");\n\treturn n;\n  }\n\n  var containsEsc;\n\n  function readWord1() {\n\tcontainsEsc = false;\n\tvar word, first = true, start = tokPos;\n\tfor (;;) {\n\t  var ch = input.charCodeAt(tokPos);\n\t  if (isIdentifierChar(ch)) {\n\t\tif (containsEsc) word += input.charAt(tokPos);\n\t\t++tokPos;\n\t  } else if (ch === 92) {\n\t\tif (!containsEsc) word = input.slice(start, tokPos);\n\t\tcontainsEsc = true;\n\t\tif (input.charCodeAt(++tokPos) != 117)\n\t\t  raise(tokPos, \"Expecting Unicode escape sequence \\\\uXXXX\");\n\t\t++tokPos;\n\t\tvar esc = readHexChar(4);\n\t\tvar escStr = String.fromCharCode(esc);\n\t\tif (!escStr) raise(tokPos - 1, \"Invalid Unicode escape\");\n\t\tif (!(first ? isIdentifierStart(esc) : isIdentifierChar(esc)))\n\t\t  raise(tokPos - 4, \"Invalid Unicode escape\");\n\t\tword += escStr;\n\t  } else {\n\t\tbreak;\n\t  }\n\t  first = false;\n\t}\n\treturn containsEsc ? word : input.slice(start, tokPos);\n  }\n\n  function readWord() {\n\tvar word = readWord1();\n\tvar type = _name;\n\tif (!containsEsc && isKeyword(word))\n\t  type = keywordTypes[word];\n\treturn finishToken(type, word);\n  }\n\n  function next() {\n\tlastStart = tokStart;\n\tlastEnd = tokEnd;\n\tlastEndLoc = tokEndLoc;\n\treadToken();\n  }\n\n  function setStrict(strct) {\n\tstrict = strct;\n\ttokPos = tokStart;\n\tif (options.locations) {\n\t  while (tokPos < tokLineStart) {\n\t\ttokLineStart = input.lastIndexOf(\"\\n\", tokLineStart - 2) + 1;\n\t\t--tokCurLine;\n\t  }\n\t}\n\tskipSpace();\n\treadToken();\n  }\n\n  function node_t() {\n\tthis.type = null;\n\tthis.start = tokStart;\n\tthis.end = null;\n  }\n\n  function node_loc_t() {\n\tthis.start = tokStartLoc;\n\tthis.end = null;\n\tif (sourceFile !== null) this.source = sourceFile;\n  }\n\n  function startNode() {\n\tvar node = new node_t();\n\tif (options.locations)\n\t  node.loc = new node_loc_t();\n\tif (options.directSourceFile)\n\t  node.sourceFile = options.directSourceFile;\n\tif (options.ranges)\n\t  node.range = [tokStart, 0];\n\treturn node;\n  }\n\n  function startNodeFrom(other) {\n\tvar node = new node_t();\n\tnode.start = other.start;\n\tif (options.locations) {\n\t  node.loc = new node_loc_t();\n\t  node.loc.start = other.loc.start;\n\t}\n\tif (options.ranges)\n\t  node.range = [other.range[0], 0];\n\n\treturn node;\n  }\n\n  function finishNode(node, type) {\n\tnode.type = type;\n\tnode.end = lastEnd;\n\tif (options.locations)\n\t  node.loc.end = lastEndLoc;\n\tif (options.ranges)\n\t  node.range[1] = lastEnd;\n\treturn node;\n  }\n\n  function isUseStrict(stmt) {\n\treturn options.ecmaVersion >= 5 && stmt.type === \"ExpressionStatement\" &&\n\t  stmt.expression.type === \"Literal\" && stmt.expression.value === \"use strict\";\n  }\n\n  function eat(type) {\n\tif (tokType === type) {\n\t  next();\n\t  return true;\n\t}\n  }\n\n  function canInsertSemicolon() {\n\treturn !options.strictSemicolons &&\n\t  (tokType === _eof || tokType === _braceR || newline.test(input.slice(lastEnd, tokStart)));\n  }\n\n  function semicolon() {\n\tif (!eat(_semi) && !canInsertSemicolon()) unexpected();\n  }\n\n  function expect(type) {\n\tif (tokType === type) next();\n\telse unexpected();\n  }\n\n  function unexpected() {\n\traise(tokStart, \"Unexpected token\");\n  }\n\n  function checkLVal(expr) {\n\tif (expr.type !== \"Identifier\" && expr.type !== \"MemberExpression\")\n\t  raise(expr.start, \"Assigning to rvalue\");\n\tif (strict && expr.type === \"Identifier\" && isStrictBadIdWord(expr.name))\n\t  raise(expr.start, \"Assigning to \" + expr.name + \" in strict mode\");\n  }\n\n  function parseTopLevel(program) {\n\tlastStart = lastEnd = tokPos;\n\tif (options.locations) lastEndLoc = new line_loc_t;\n\tinFunction = strict = null;\n\tlabels = [];\n\treadToken();\n\n\tvar node = program || startNode(), first = true;\n\tif (!program) node.body = [];\n\twhile (tokType !== _eof) {\n\t  var stmt = parseStatement();\n\t  node.body.push(stmt);\n\t  if (first && isUseStrict(stmt)) setStrict(true);\n\t  first = false;\n\t}\n\treturn finishNode(node, \"Program\");\n  }\n\n  var loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"};\n\n  function parseStatement() {\n\tif (tokType === _slash || tokType === _assign && tokVal == \"/=\")\n\t  readToken(true);\n\n\tvar starttype = tokType, node = startNode();\n\n\tswitch (starttype) {\n\tcase _break: case _continue:\n\t  next();\n\t  var isBreak = starttype === _break;\n\t  if (eat(_semi) || canInsertSemicolon()) node.label = null;\n\t  else if (tokType !== _name) unexpected();\n\t  else {\n\t\tnode.label = parseIdent();\n\t\tsemicolon();\n\t  }\n\n\t  for (var i = 0; i < labels.length; ++i) {\n\t\tvar lab = labels[i];\n\t\tif (node.label == null || lab.name === node.label.name) {\n\t\t  if (lab.kind != null && (isBreak || lab.kind === \"loop\")) break;\n\t\t  if (node.label && isBreak) break;\n\t\t}\n\t  }\n\t  if (i === labels.length) raise(node.start, \"Unsyntactic \" + starttype.keyword);\n\t  return finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\");\n\n\tcase _debugger:\n\t  next();\n\t  semicolon();\n\t  return finishNode(node, \"DebuggerStatement\");\n\n\tcase _do:\n\t  next();\n\t  labels.push(loopLabel);\n\t  node.body = parseStatement();\n\t  labels.pop();\n\t  expect(_while);\n\t  node.test = parseParenExpression();\n\t  semicolon();\n\t  return finishNode(node, \"DoWhileStatement\");\n\n\tcase _for:\n\t  next();\n\t  labels.push(loopLabel);\n\t  expect(_parenL);\n\t  if (tokType === _semi) return parseFor(node, null);\n\t  if (tokType === _var) {\n\t\tvar init = startNode();\n\t\tnext();\n\t\tparseVar(init, true);\n\t\tfinishNode(init, \"VariableDeclaration\");\n\t\tif (init.declarations.length === 1 && eat(_in))\n\t\t  return parseForIn(node, init);\n\t\treturn parseFor(node, init);\n\t  }\n\t  var init = parseExpression(false, true);\n\t  if (eat(_in)) {checkLVal(init); return parseForIn(node, init);}\n\t  return parseFor(node, init);\n\n\tcase _function:\n\t  next();\n\t  return parseFunction(node, true);\n\n\tcase _if:\n\t  next();\n\t  node.test = parseParenExpression();\n\t  node.consequent = parseStatement();\n\t  node.alternate = eat(_else) ? parseStatement() : null;\n\t  return finishNode(node, \"IfStatement\");\n\n\tcase _return:\n\t  if (!inFunction && !options.allowReturnOutsideFunction)\n\t\traise(tokStart, \"'return' outside of function\");\n\t  next();\n\n\t  if (eat(_semi) || canInsertSemicolon()) node.argument = null;\n\t  else { node.argument = parseExpression(); semicolon(); }\n\t  return finishNode(node, \"ReturnStatement\");\n\n\tcase _switch:\n\t  next();\n\t  node.discriminant = parseParenExpression();\n\t  node.cases = [];\n\t  expect(_braceL);\n\t  labels.push(switchLabel);\n\n\t  for (var cur, sawDefault; tokType != _braceR;) {\n\t\tif (tokType === _case || tokType === _default) {\n\t\t  var isCase = tokType === _case;\n\t\t  if (cur) finishNode(cur, \"SwitchCase\");\n\t\t  node.cases.push(cur = startNode());\n\t\t  cur.consequent = [];\n\t\t  next();\n\t\t  if (isCase) cur.test = parseExpression();\n\t\t  else {\n\t\t\tif (sawDefault) raise(lastStart, \"Multiple default clauses\"); sawDefault = true;\n\t\t\tcur.test = null;\n\t\t  }\n\t\t  expect(_colon);\n\t\t} else {\n\t\t  if (!cur) unexpected();\n\t\t  cur.consequent.push(parseStatement());\n\t\t}\n\t  }\n\t  if (cur) finishNode(cur, \"SwitchCase\");\n\t  next();\n\t  labels.pop();\n\t  return finishNode(node, \"SwitchStatement\");\n\n\tcase _throw:\n\t  next();\n\t  if (newline.test(input.slice(lastEnd, tokStart)))\n\t\traise(lastEnd, \"Illegal newline after throw\");\n\t  node.argument = parseExpression();\n\t  semicolon();\n\t  return finishNode(node, \"ThrowStatement\");\n\n\tcase _try:\n\t  next();\n\t  node.block = parseBlock();\n\t  node.handler = null;\n\t  if (tokType === _catch) {\n\t\tvar clause = startNode();\n\t\tnext();\n\t\texpect(_parenL);\n\t\tclause.param = parseIdent();\n\t\tif (strict && isStrictBadIdWord(clause.param.name))\n\t\t  raise(clause.param.start, \"Binding \" + clause.param.name + \" in strict mode\");\n\t\texpect(_parenR);\n\t\tclause.guard = null;\n\t\tclause.body = parseBlock();\n\t\tnode.handler = finishNode(clause, \"CatchClause\");\n\t  }\n\t  node.guardedHandlers = empty;\n\t  node.finalizer = eat(_finally) ? parseBlock() : null;\n\t  if (!node.handler && !node.finalizer)\n\t\traise(node.start, \"Missing catch or finally clause\");\n\t  return finishNode(node, \"TryStatement\");\n\n\tcase _var:\n\t  next();\n\t  parseVar(node);\n\t  semicolon();\n\t  return finishNode(node, \"VariableDeclaration\");\n\n\tcase _while:\n\t  next();\n\t  node.test = parseParenExpression();\n\t  labels.push(loopLabel);\n\t  node.body = parseStatement();\n\t  labels.pop();\n\t  return finishNode(node, \"WhileStatement\");\n\n\tcase _with:\n\t  if (strict) raise(tokStart, \"'with' in strict mode\");\n\t  next();\n\t  node.object = parseParenExpression();\n\t  node.body = parseStatement();\n\t  return finishNode(node, \"WithStatement\");\n\n\tcase _braceL:\n\t  return parseBlock();\n\n\tcase _semi:\n\t  next();\n\t  return finishNode(node, \"EmptyStatement\");\n\n\tdefault:\n\t  var maybeName = tokVal, expr = parseExpression();\n\t  if (starttype === _name && expr.type === \"Identifier\" && eat(_colon)) {\n\t\tfor (var i = 0; i < labels.length; ++i)\n\t\t  if (labels[i].name === maybeName) raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n\t\tvar kind = tokType.isLoop ? \"loop\" : tokType === _switch ? \"switch\" : null;\n\t\tlabels.push({name: maybeName, kind: kind});\n\t\tnode.body = parseStatement();\n\t\tlabels.pop();\n\t\tnode.label = expr;\n\t\treturn finishNode(node, \"LabeledStatement\");\n\t  } else {\n\t\tnode.expression = expr;\n\t\tsemicolon();\n\t\treturn finishNode(node, \"ExpressionStatement\");\n\t  }\n\t}\n  }\n\n  function parseParenExpression() {\n\texpect(_parenL);\n\tvar val = parseExpression();\n\texpect(_parenR);\n\treturn val;\n  }\n\n  function parseBlock(allowStrict) {\n\tvar node = startNode(), first = true, strict = false, oldStrict;\n\tnode.body = [];\n\texpect(_braceL);\n\twhile (!eat(_braceR)) {\n\t  var stmt = parseStatement();\n\t  node.body.push(stmt);\n\t  if (first && allowStrict && isUseStrict(stmt)) {\n\t\toldStrict = strict;\n\t\tsetStrict(strict = true);\n\t  }\n\t  first = false;\n\t}\n\tif (strict && !oldStrict) setStrict(false);\n\treturn finishNode(node, \"BlockStatement\");\n  }\n\n  function parseFor(node, init) {\n\tnode.init = init;\n\texpect(_semi);\n\tnode.test = tokType === _semi ? null : parseExpression();\n\texpect(_semi);\n\tnode.update = tokType === _parenR ? null : parseExpression();\n\texpect(_parenR);\n\tnode.body = parseStatement();\n\tlabels.pop();\n\treturn finishNode(node, \"ForStatement\");\n  }\n\n  function parseForIn(node, init) {\n\tnode.left = init;\n\tnode.right = parseExpression();\n\texpect(_parenR);\n\tnode.body = parseStatement();\n\tlabels.pop();\n\treturn finishNode(node, \"ForInStatement\");\n  }\n\n  function parseVar(node, noIn) {\n\tnode.declarations = [];\n\tnode.kind = \"var\";\n\tfor (;;) {\n\t  var decl = startNode();\n\t  decl.id = parseIdent();\n\t  if (strict && isStrictBadIdWord(decl.id.name))\n\t\traise(decl.id.start, \"Binding \" + decl.id.name + \" in strict mode\");\n\t  decl.init = eat(_eq) ? parseExpression(true, noIn) : null;\n\t  node.declarations.push(finishNode(decl, \"VariableDeclarator\"));\n\t  if (!eat(_comma)) break;\n\t}\n\treturn node;\n  }\n\n  function parseExpression(noComma, noIn) {\n\tvar expr = parseMaybeAssign(noIn);\n\tif (!noComma && tokType === _comma) {\n\t  var node = startNodeFrom(expr);\n\t  node.expressions = [expr];\n\t  while (eat(_comma)) node.expressions.push(parseMaybeAssign(noIn));\n\t  return finishNode(node, \"SequenceExpression\");\n\t}\n\treturn expr;\n  }\n\n  function parseMaybeAssign(noIn) {\n\tvar left = parseMaybeConditional(noIn);\n\tif (tokType.isAssign) {\n\t  var node = startNodeFrom(left);\n\t  node.operator = tokVal;\n\t  node.left = left;\n\t  next();\n\t  node.right = parseMaybeAssign(noIn);\n\t  checkLVal(left);\n\t  return finishNode(node, \"AssignmentExpression\");\n\t}\n\treturn left;\n  }\n\n  function parseMaybeConditional(noIn) {\n\tvar expr = parseExprOps(noIn);\n\tif (eat(_question)) {\n\t  var node = startNodeFrom(expr);\n\t  node.test = expr;\n\t  node.consequent = parseExpression(true);\n\t  expect(_colon);\n\t  node.alternate = parseExpression(true, noIn);\n\t  return finishNode(node, \"ConditionalExpression\");\n\t}\n\treturn expr;\n  }\n\n  function parseExprOps(noIn) {\n\treturn parseExprOp(parseMaybeUnary(), -1, noIn);\n  }\n\n  function parseExprOp(left, minPrec, noIn) {\n\tvar prec = tokType.binop;\n\tif (prec != null && (!noIn || tokType !== _in)) {\n\t  if (prec > minPrec) {\n\t\tvar node = startNodeFrom(left);\n\t\tnode.left = left;\n\t\tnode.operator = tokVal;\n\t\tvar op = tokType;\n\t\tnext();\n\t\tnode.right = parseExprOp(parseMaybeUnary(), prec, noIn);\n\t\tvar exprNode = finishNode(node, (op === _logicalOR || op === _logicalAND) ? \"LogicalExpression\" : \"BinaryExpression\");\n\t\treturn parseExprOp(exprNode, minPrec, noIn);\n\t  }\n\t}\n\treturn left;\n  }\n\n  function parseMaybeUnary() {\n\tif (tokType.prefix) {\n\t  var node = startNode(), update = tokType.isUpdate;\n\t  node.operator = tokVal;\n\t  node.prefix = true;\n\t  tokRegexpAllowed = true;\n\t  next();\n\t  node.argument = parseMaybeUnary();\n\t  if (update) checkLVal(node.argument);\n\t  else if (strict && node.operator === \"delete\" &&\n\t\t\t   node.argument.type === \"Identifier\")\n\t\traise(node.start, \"Deleting local variable in strict mode\");\n\t  return finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n\t}\n\tvar expr = parseExprSubscripts();\n\twhile (tokType.postfix && !canInsertSemicolon()) {\n\t  var node = startNodeFrom(expr);\n\t  node.operator = tokVal;\n\t  node.prefix = false;\n\t  node.argument = expr;\n\t  checkLVal(expr);\n\t  next();\n\t  expr = finishNode(node, \"UpdateExpression\");\n\t}\n\treturn expr;\n  }\n\n  function parseExprSubscripts() {\n\treturn parseSubscripts(parseExprAtom());\n  }\n\n  function parseSubscripts(base, noCalls) {\n\tif (eat(_dot)) {\n\t  var node = startNodeFrom(base);\n\t  node.object = base;\n\t  node.property = parseIdent(true);\n\t  node.computed = false;\n\t  return parseSubscripts(finishNode(node, \"MemberExpression\"), noCalls);\n\t} else if (eat(_bracketL)) {\n\t  var node = startNodeFrom(base);\n\t  node.object = base;\n\t  node.property = parseExpression();\n\t  node.computed = true;\n\t  expect(_bracketR);\n\t  return parseSubscripts(finishNode(node, \"MemberExpression\"), noCalls);\n\t} else if (!noCalls && eat(_parenL)) {\n\t  var node = startNodeFrom(base);\n\t  node.callee = base;\n\t  node.arguments = parseExprList(_parenR, false);\n\t  return parseSubscripts(finishNode(node, \"CallExpression\"), noCalls);\n\t} else return base;\n  }\n\n  function parseExprAtom() {\n\tswitch (tokType) {\n\tcase _this:\n\t  var node = startNode();\n\t  next();\n\t  return finishNode(node, \"ThisExpression\");\n\tcase _name:\n\t  return parseIdent();\n\tcase _num: case _string: case _regexp:\n\t  var node = startNode();\n\t  node.value = tokVal;\n\t  node.raw = input.slice(tokStart, tokEnd);\n\t  next();\n\t  return finishNode(node, \"Literal\");\n\n\tcase _null: case _true: case _false:\n\t  var node = startNode();\n\t  node.value = tokType.atomValue;\n\t  node.raw = tokType.keyword;\n\t  next();\n\t  return finishNode(node, \"Literal\");\n\n\tcase _parenL:\n\t  var tokStartLoc1 = tokStartLoc, tokStart1 = tokStart;\n\t  next();\n\t  var val = parseExpression();\n\t  val.start = tokStart1;\n\t  val.end = tokEnd;\n\t  if (options.locations) {\n\t\tval.loc.start = tokStartLoc1;\n\t\tval.loc.end = tokEndLoc;\n\t  }\n\t  if (options.ranges)\n\t\tval.range = [tokStart1, tokEnd];\n\t  expect(_parenR);\n\t  return val;\n\n\tcase _bracketL:\n\t  var node = startNode();\n\t  next();\n\t  node.elements = parseExprList(_bracketR, true, true);\n\t  return finishNode(node, \"ArrayExpression\");\n\n\tcase _braceL:\n\t  return parseObj();\n\n\tcase _function:\n\t  var node = startNode();\n\t  next();\n\t  return parseFunction(node, false);\n\n\tcase _new:\n\t  return parseNew();\n\n\tdefault:\n\t  unexpected();\n\t}\n  }\n\n  function parseNew() {\n\tvar node = startNode();\n\tnext();\n\tnode.callee = parseSubscripts(parseExprAtom(), true);\n\tif (eat(_parenL)) node.arguments = parseExprList(_parenR, false);\n\telse node.arguments = empty;\n\treturn finishNode(node, \"NewExpression\");\n  }\n\n  function parseObj() {\n\tvar node = startNode(), first = true, sawGetSet = false;\n\tnode.properties = [];\n\tnext();\n\twhile (!eat(_braceR)) {\n\t  if (!first) {\n\t\texpect(_comma);\n\t\tif (options.allowTrailingCommas && eat(_braceR)) break;\n\t  } else first = false;\n\n\t  var prop = {key: parsePropertyName()}, isGetSet = false, kind;\n\t  if (eat(_colon)) {\n\t\tprop.value = parseExpression(true);\n\t\tkind = prop.kind = \"init\";\n\t  } else if (options.ecmaVersion >= 5 && prop.key.type === \"Identifier\" &&\n\t\t\t\t (prop.key.name === \"get\" || prop.key.name === \"set\")) {\n\t\tisGetSet = sawGetSet = true;\n\t\tkind = prop.kind = prop.key.name;\n\t\tprop.key = parsePropertyName();\n\t\tif (tokType !== _parenL) unexpected();\n\t\tprop.value = parseFunction(startNode(), false);\n\t  } else unexpected();\n\n\t  if (prop.key.type === \"Identifier\" && (strict || sawGetSet)) {\n\t\tfor (var i = 0; i < node.properties.length; ++i) {\n\t\t  var other = node.properties[i];\n\t\t  if (other.key.name === prop.key.name) {\n\t\t\tvar conflict = kind == other.kind || isGetSet && other.kind === \"init\" ||\n\t\t\t  kind === \"init\" && (other.kind === \"get\" || other.kind === \"set\");\n\t\t\tif (conflict && !strict && kind === \"init\" && other.kind === \"init\") conflict = false;\n\t\t\tif (conflict) raise(prop.key.start, \"Redefinition of property\");\n\t\t  }\n\t\t}\n\t  }\n\t  node.properties.push(prop);\n\t}\n\treturn finishNode(node, \"ObjectExpression\");\n  }\n\n  function parsePropertyName() {\n\tif (tokType === _num || tokType === _string) return parseExprAtom();\n\treturn parseIdent(true);\n  }\n\n  function parseFunction(node, isStatement) {\n\tif (tokType === _name) node.id = parseIdent();\n\telse if (isStatement) unexpected();\n\telse node.id = null;\n\tnode.params = [];\n\tvar first = true;\n\texpect(_parenL);\n\twhile (!eat(_parenR)) {\n\t  if (!first) expect(_comma); else first = false;\n\t  node.params.push(parseIdent());\n\t}\n\n\tvar oldInFunc = inFunction, oldLabels = labels;\n\tinFunction = true; labels = [];\n\tnode.body = parseBlock(true);\n\tinFunction = oldInFunc; labels = oldLabels;\n\n\tif (strict || node.body.body.length && isUseStrict(node.body.body[0])) {\n\t  for (var i = node.id ? -1 : 0; i < node.params.length; ++i) {\n\t\tvar id = i < 0 ? node.id : node.params[i];\n\t\tif (isStrictReservedWord(id.name) || isStrictBadIdWord(id.name))\n\t\t  raise(id.start, \"Defining '\" + id.name + \"' in strict mode\");\n\t\tif (i >= 0) for (var j = 0; j < i; ++j) if (id.name === node.params[j].name)\n\t\t  raise(id.start, \"Argument name clash in strict mode\");\n\t  }\n\t}\n\n\treturn finishNode(node, isStatement ? \"FunctionDeclaration\" : \"FunctionExpression\");\n  }\n\n  function parseExprList(close, allowTrailingComma, allowEmpty) {\n\tvar elts = [], first = true;\n\twhile (!eat(close)) {\n\t  if (!first) {\n\t\texpect(_comma);\n\t\tif (allowTrailingComma && options.allowTrailingCommas && eat(close)) break;\n\t  } else first = false;\n\n\t  if (allowEmpty && tokType === _comma) elts.push(null);\n\t  else elts.push(parseExpression(true));\n\t}\n\treturn elts;\n  }\n\n  function parseIdent(liberal) {\n\tvar node = startNode();\n\tif (liberal && options.forbidReserved == \"everywhere\") liberal = false;\n\tif (tokType === _name) {\n\t  if (!liberal &&\n\t\t  (options.forbidReserved &&\n\t\t   (options.ecmaVersion === 3 ? isReservedWord3 : isReservedWord5)(tokVal) ||\n\t\t   strict && isStrictReservedWord(tokVal)) &&\n\t\t  input.slice(tokStart, tokEnd).indexOf(\"\\\\\") == -1)\n\t\traise(tokStart, \"The keyword '\" + tokVal + \"' is reserved\");\n\t  node.name = tokVal;\n\t} else if (liberal && tokType.keyword) {\n\t  node.name = tokType.keyword;\n\t} else {\n\t  unexpected();\n\t}\n\ttokRegexpAllowed = false;\n\tnext();\n\treturn finishNode(node, \"Identifier\");\n  }\n\n});\n\n\t\tif (!acorn.version)\n\t\t\tacorn = null;\n\t}\n\n\tfunction parse(code, options) {\n\t\treturn (global.acorn || acorn).parse(code, options);\n\t}\n\n\tvar binaryOperators = {\n\t\t'+': '__add',\n\t\t'-': '__subtract',\n\t\t'*': '__multiply',\n\t\t'/': '__divide',\n\t\t'%': '__modulo',\n\t\t'==': '__equals',\n\t\t'!=': '__equals'\n\t};\n\n\tvar unaryOperators = {\n\t\t'-': '__negate',\n\t\t'+': '__self'\n\t};\n\n\tvar fields = Base.each(\n\t\t['add', 'subtract', 'multiply', 'divide', 'modulo', 'equals', 'negate'],\n\t\tfunction(name) {\n\t\t\tthis['__' + name] = '#' + name;\n\t\t},\n\t\t{\n\t\t\t__self: function() {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t);\n\tPoint.inject(fields);\n\tSize.inject(fields);\n\tColor.inject(fields);\n\n\tfunction __$__(left, operator, right) {\n\t\tvar handler = binaryOperators[operator];\n\t\tif (left && left[handler]) {\n\t\t\tvar res = left[handler](right);\n\t\t\treturn operator === '!=' ? !res : res;\n\t\t}\n\t\tswitch (operator) {\n\t\tcase '+': return left + right;\n\t\tcase '-': return left - right;\n\t\tcase '*': return left * right;\n\t\tcase '/': return left / right;\n\t\tcase '%': return left % right;\n\t\tcase '==': return left == right;\n\t\tcase '!=': return left != right;\n\t\t}\n\t}\n\n\tfunction $__(operator, value) {\n\t\tvar handler = unaryOperators[operator];\n\t\tif (value && value[handler])\n\t\t\treturn value[handler]();\n\t\tswitch (operator) {\n\t\tcase '+': return +value;\n\t\tcase '-': return -value;\n\t\t}\n\t}\n\n\tfunction compile(code, options) {\n\t\tif (!code)\n\t\t\treturn '';\n\t\toptions = options || {};\n\n\t\tvar insertions = [];\n\n\t\tfunction getOffset(offset) {\n\t\t\tfor (var i = 0, l = insertions.length; i < l; i++) {\n\t\t\t\tvar insertion = insertions[i];\n\t\t\t\tif (insertion[0] >= offset)\n\t\t\t\t\tbreak;\n\t\t\t\toffset += insertion[1];\n\t\t\t}\n\t\t\treturn offset;\n\t\t}\n\n\t\tfunction getCode(node) {\n\t\t\treturn code.substring(getOffset(node.range[0]),\n\t\t\t\t\tgetOffset(node.range[1]));\n\t\t}\n\n\t\tfunction getBetween(left, right) {\n\t\t\treturn code.substring(getOffset(left.range[1]),\n\t\t\t\t\tgetOffset(right.range[0]));\n\t\t}\n\n\t\tfunction replaceCode(node, str) {\n\t\t\tvar start = getOffset(node.range[0]),\n\t\t\t\tend = getOffset(node.range[1]),\n\t\t\t\tinsert = 0;\n\t\t\tfor (var i = insertions.length - 1; i >= 0; i--) {\n\t\t\t\tif (start > insertions[i][0]) {\n\t\t\t\t\tinsert = i + 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tinsertions.splice(insert, 0, [start, str.length - end + start]);\n\t\t\tcode = code.substring(0, start) + str + code.substring(end);\n\t\t}\n\n\t\tfunction handleOverloading(node, parent) {\n\t\t\tswitch (node.type) {\n\t\t\tcase 'UnaryExpression':\n\t\t\t\tif (node.operator in unaryOperators\n\t\t\t\t\t\t&& node.argument.type !== 'Literal') {\n\t\t\t\t\tvar arg = getCode(node.argument);\n\t\t\t\t\treplaceCode(node, '$__(\"' + node.operator + '\", '\n\t\t\t\t\t\t\t+ arg + ')');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'BinaryExpression':\n\t\t\t\tif (node.operator in binaryOperators\n\t\t\t\t\t\t&& node.left.type !== 'Literal') {\n\t\t\t\t\tvar left = getCode(node.left),\n\t\t\t\t\t\tright = getCode(node.right),\n\t\t\t\t\t\tbetween = getBetween(node.left, node.right),\n\t\t\t\t\t\toperator = node.operator;\n\t\t\t\t\treplaceCode(node, '__$__(' + left + ','\n\t\t\t\t\t\t\t+ between.replace(new RegExp('\\\\' + operator),\n\t\t\t\t\t\t\t\t'\"' + operator + '\"')\n\t\t\t\t\t\t\t+ ', ' + right + ')');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'UpdateExpression':\n\t\t\tcase 'AssignmentExpression':\n\t\t\t\tvar parentType = parent && parent.type;\n\t\t\t\tif (!(\n\t\t\t\t\t\tparentType === 'ForStatement'\n\t\t\t\t\t\t|| parentType === 'BinaryExpression'\n\t\t\t\t\t\t\t&& /^[=!<>]/.test(parent.operator)\n\t\t\t\t\t\t|| parentType === 'MemberExpression' && parent.computed\n\t\t\t\t)) {\n\t\t\t\t\tif (node.type === 'UpdateExpression') {\n\t\t\t\t\t\tvar arg = getCode(node.argument),\n\t\t\t\t\t\t\texp = '__$__(' + arg + ', \"' + node.operator[0]\n\t\t\t\t\t\t\t\t\t+ '\", 1)',\n\t\t\t\t\t\t\tstr = arg + ' = ' + exp;\n\t\t\t\t\t\tif (node.prefix) {\n\t\t\t\t\t\t\tstr = '(' + str + ')';\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tparentType === 'AssignmentExpression' ||\n\t\t\t\t\t\t\tparentType === 'VariableDeclarator' ||\n\t\t\t\t\t\t\tparentType === 'BinaryExpression'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (getCode(parent.left || parent.id) === arg)\n\t\t\t\t\t\t\t\tstr = exp;\n\t\t\t\t\t\t\tstr = arg + '; ' + str;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treplaceCode(node, str);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (/^.=$/.test(node.operator)\n\t\t\t\t\t\t\t\t&& node.left.type !== 'Literal') {\n\t\t\t\t\t\t\tvar left = getCode(node.left),\n\t\t\t\t\t\t\t\tright = getCode(node.right),\n\t\t\t\t\t\t\t\texp = left + ' = __$__(' + left + ', \"'\n\t\t\t\t\t\t\t\t\t+ node.operator[0] + '\", ' + right + ')';\n\t\t\t\t\t\t\treplaceCode(node, /^\\(.*\\)$/.test(getCode(node))\n\t\t\t\t\t\t\t\t\t? '(' + exp + ')' : exp);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfunction handleExports(node) {\n\t\t\tswitch (node.type) {\n\t\t\tcase 'ExportDefaultDeclaration':\n\t\t\t\treplaceCode({\n\t\t\t\t\trange: [node.start, node.declaration.start]\n\t\t\t\t}, 'module.exports = ');\n\t\t\t\tbreak;\n\t\t\tcase 'ExportNamedDeclaration':\n\t\t\t\tvar declaration = node.declaration;\n\t\t\t\tvar specifiers = node.specifiers;\n\t\t\t\tif (declaration) {\n\t\t\t\t\tvar declarations = declaration.declarations;\n\t\t\t\t\tif (declarations) {\n\t\t\t\t\t\tdeclarations.forEach(function(dec) {\n\t\t\t\t\t\t\treplaceCode(dec, 'module.exports.' + getCode(dec));\n\t\t\t\t\t\t});\n\t\t\t\t\t\treplaceCode({\n\t\t\t\t\t\t\trange: [\n\t\t\t\t\t\t\t\tnode.start,\n\t\t\t\t\t\t\t\tdeclaration.start + declaration.kind.length\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}, '');\n\t\t\t\t\t}\n\t\t\t\t} else if (specifiers) {\n\t\t\t\t\tvar exports = specifiers.map(function(specifier) {\n\t\t\t\t\t\tvar name = getCode(specifier);\n\t\t\t\t\t\treturn 'module.exports.' + name + ' = ' + name + '; ';\n\t\t\t\t\t}).join('');\n\t\t\t\t\tif (exports) {\n\t\t\t\t\t\treplaceCode(node, exports);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfunction walkAST(node, parent, paperFeatures) {\n\t\t\tif (node) {\n\t\t\t\tfor (var key in node) {\n\t\t\t\t\tif (key !== 'range' && key !== 'loc') {\n\t\t\t\t\t\tvar value = node[key];\n\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\tfor (var i = 0, l = value.length; i < l; i++) {\n\t\t\t\t\t\t\t\twalkAST(value[i], node, paperFeatures);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (value && typeof value === 'object') {\n\t\t\t\t\t\t\twalkAST(value, node, paperFeatures);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (paperFeatures.operatorOverloading !== false) {\n\t\t\t\t\thandleOverloading(node, parent);\n\t\t\t\t}\n\t\t\t\tif (paperFeatures.moduleExports !== false) {\n\t\t\t\t\thandleExports(node);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction encodeVLQ(value) {\n\t\t\tvar res = '',\n\t\t\t\tbase64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t\t\tvalue = (Math.abs(value) << 1) + (value < 0 ? 1 : 0);\n\t\t\twhile (value || !res) {\n\t\t\t\tvar next = value & (32 - 1);\n\t\t\t\tvalue >>= 5;\n\t\t\t\tif (value)\n\t\t\t\t\tnext |= 32;\n\t\t\t\tres += base64[next];\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\n\t\tvar url = options.url || '',\n\t\t\tsourceMaps = options.sourceMaps,\n\t\t\tpaperFeatures = options.paperFeatures || {},\n\t\t\tsource = options.source || code,\n\t\t\toffset = options.offset || 0,\n\t\t\tagent = paper.agent,\n\t\t\tversion = agent.versionNumber,\n\t\t\toffsetCode = false,\n\t\t\tlineBreaks = /\\r\\n|\\n|\\r/mg,\n\t\t\tmap;\n\t\tif (sourceMaps && (agent.chrome && version >= 30\n\t\t\t\t|| agent.webkit && version >= 537.76\n\t\t\t\t|| agent.firefox && version >= 23\n\t\t\t\t|| agent.node)) {\n\t\t\tif (agent.node) {\n\t\t\t\toffset -= 2;\n\t\t\t} else if (window && url && !window.location.href.indexOf(url)) {\n\t\t\t\tvar html = document.getElementsByTagName('html')[0].innerHTML;\n\t\t\t\toffset = html.substr(0, html.indexOf(code) + 1).match(\n\t\t\t\t\t\tlineBreaks).length + 1;\n\t\t\t}\n\t\t\toffsetCode = offset > 0 && !(\n\t\t\t\t\tagent.chrome && version >= 36 ||\n\t\t\t\t\tagent.safari && version >= 600 ||\n\t\t\t\t\tagent.firefox && version >= 40 ||\n\t\t\t\t\tagent.node);\n\t\t\tvar mappings = ['AA' + encodeVLQ(offsetCode ? 0 : offset) + 'A'];\n\t\t\tmappings.length = (code.match(lineBreaks) || []).length + 1\n\t\t\t\t\t+ (offsetCode ? offset : 0);\n\t\t\tmap = {\n\t\t\t\tversion: 3,\n\t\t\t\tfile: url,\n\t\t\t\tnames:[],\n\t\t\t\tmappings: mappings.join(';AACA'),\n\t\t\t\tsourceRoot: '',\n\t\t\t\tsources: [url],\n\t\t\t\tsourcesContent: [source]\n\t\t\t};\n\t\t}\n\t\tif (\n\t\t\tpaperFeatures.operatorOverloading !== false ||\n\t\t\tpaperFeatures.moduleExports !== false\n\t\t) {\n\t\t\twalkAST(parse(code, {\n\t\t\t\tranges: true,\n\t\t\t\tpreserveParens: true,\n\t\t\t\tsourceType: 'module'\n\t\t\t}), null, paperFeatures);\n\t\t}\n\t\tif (map) {\n\t\t\tif (offsetCode) {\n\t\t\t\tcode = new Array(offset + 1).join('\\n') + code;\n\t\t\t}\n\t\t\tif (/^(inline|both)$/.test(sourceMaps)) {\n\t\t\t\tcode += \"\\n//# sourceMappingURL=data:application/json;base64,\"\n\t\t\t\t\t\t+ self.btoa(unescape(encodeURIComponent(\n\t\t\t\t\t\t\tJSON.stringify(map))));\n\t\t\t}\n\t\t\tcode += \"\\n//# sourceURL=\" + (url || 'paperscript');\n\t\t}\n\t\treturn {\n\t\t\turl: url,\n\t\t\tsource: source,\n\t\t\tcode: code,\n\t\t\tmap: map\n\t\t};\n\t}\n\n\tfunction execute(code, scope, options) {\n\t\tpaper = scope;\n\t\tvar view = scope.getView(),\n\t\t\ttool = /\\btool\\.\\w+|\\s+on(?:Key|Mouse)(?:Up|Down|Move|Drag)\\b/\n\t\t\t\t\t.test(code) && !/\\bnew\\s+Tool\\b/.test(code)\n\t\t\t\t\t\t? new Tool() : null,\n\t\t\ttoolHandlers = tool ? tool._events : [],\n\t\t\thandlers = ['onFrame', 'onResize'].concat(toolHandlers),\n\t\t\tparams = [],\n\t\t\targs = [],\n\t\t\tfunc,\n\t\t\tcompiled = typeof code === 'object' ? code : compile(code, options);\n\t\tcode = compiled.code;\n\t\tfunction expose(scope, hidden) {\n\t\t\tfor (var key in scope) {\n\t\t\t\tif ((hidden || !/^_/.test(key)) && new RegExp('([\\\\b\\\\s\\\\W]|^)'\n\t\t\t\t\t\t+ key.replace(/\\$/g, '\\\\$') + '\\\\b').test(code)) {\n\t\t\t\t\tparams.push(key);\n\t\t\t\t\targs.push(scope[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\texpose({ __$__: __$__, $__: $__, paper: scope, tool: tool },\n\t\t\t\ttrue);\n\t\texpose(scope);\n\t\tcode = 'var module = { exports: {} }; ' + code;\n\t\tvar exports = Base.each(handlers, function(key) {\n\t\t\tif (new RegExp('\\\\s+' + key + '\\\\b').test(code)) {\n\t\t\t\tparams.push(key);\n\t\t\t\tthis.push('module.exports.' + key + ' = ' + key + ';');\n\t\t\t}\n\t\t}, []).join('\\n');\n\t\tif (exports) {\n\t\t\tcode += '\\n' + exports;\n\t\t}\n\t\tcode += '\\nreturn module.exports;';\n\t\tvar agent = paper.agent;\n\t\tif (document && (agent.chrome\n\t\t\t\t|| agent.firefox && agent.versionNumber < 40)) {\n\t\t\tvar script = document.createElement('script'),\n\t\t\t\thead = document.head || document.getElementsByTagName('head')[0];\n\t\t\tif (agent.firefox)\n\t\t\t\tcode = '\\n' + code;\n\t\t\tscript.appendChild(document.createTextNode(\n\t\t\t\t'document.__paperscript__ = function(' + params + ') {' +\n\t\t\t\t\tcode +\n\t\t\t\t'\\n}'\n\t\t\t));\n\t\t\thead.appendChild(script);\n\t\t\tfunc = document.__paperscript__;\n\t\t\tdelete document.__paperscript__;\n\t\t\thead.removeChild(script);\n\t\t} else {\n\t\t\tfunc = Function(params, code);\n\t\t}\n\t\tvar exports = func && func.apply(scope, args);\n\t\tvar obj = exports || {};\n\t\tBase.each(toolHandlers, function(key) {\n\t\t\tvar value = obj[key];\n\t\t\tif (value)\n\t\t\t\ttool[key] = value;\n\t\t});\n\t\tif (view) {\n\t\t\tif (obj.onResize)\n\t\t\t\tview.setOnResize(obj.onResize);\n\t\t\tview.emit('resize', {\n\t\t\t\tsize: view.size,\n\t\t\t\tdelta: new Point()\n\t\t\t});\n\t\t\tif (obj.onFrame)\n\t\t\t\tview.setOnFrame(obj.onFrame);\n\t\t\tview.requestUpdate();\n\t\t}\n\t\treturn exports;\n\t}\n\n\tfunction loadScript(script) {\n\t\tif (/^text\\/(?:x-|)paperscript$/.test(script.type)\n\t\t\t\t&& PaperScope.getAttribute(script, 'ignore') !== 'true') {\n\t\t\tvar canvasId = PaperScope.getAttribute(script, 'canvas'),\n\t\t\t\tcanvas = document.getElementById(canvasId),\n\t\t\t\tsrc = script.src || script.getAttribute('data-src'),\n\t\t\t\tasync = PaperScope.hasAttribute(script, 'async'),\n\t\t\t\tscopeAttribute = 'data-paper-scope';\n\t\t\tif (!canvas)\n\t\t\t\tthrow new Error('Unable to find canvas with id \"'\n\t\t\t\t\t\t+ canvasId + '\"');\n\t\t\tvar scope = PaperScope.get(canvas.getAttribute(scopeAttribute))\n\t\t\t\t\t\t|| new PaperScope().setup(canvas);\n\t\t\tcanvas.setAttribute(scopeAttribute, scope._id);\n\t\t\tif (src) {\n\t\t\t\tHttp.request({\n\t\t\t\t\turl: src,\n\t\t\t\t\tasync: async,\n\t\t\t\t\tmimeType: 'text/plain',\n\t\t\t\t\tonLoad: function(code) {\n\t\t\t\t\t\texecute(code, scope, src);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\texecute(script.innerHTML, scope, script.baseURI);\n\t\t\t}\n\t\t\tscript.setAttribute('data-paper-ignore', 'true');\n\t\t\treturn scope;\n\t\t}\n\t}\n\n\tfunction loadAll() {\n\t\tBase.each(document && document.getElementsByTagName('script'),\n\t\t\t\tloadScript);\n\t}\n\n\tfunction load(script) {\n\t\treturn script ? loadScript(script) : loadAll();\n\t}\n\n\tif (window) {\n\t\tif (document.readyState === 'complete') {\n\t\t\tsetTimeout(loadAll);\n\t\t} else {\n\t\t\tDomEvent.add(window, { load: loadAll });\n\t\t}\n\t}\n\n\treturn {\n\t\tcompile: compile,\n\t\texecute: execute,\n\t\tload: load,\n\t\tparse: parse,\n\t\tcalculateBinary: __$__,\n\t\tcalculateUnary: $__\n\t};\n\n}.call(this);\n\nvar paper = new (PaperScope.inject(Base.exports, {\n\tBase: Base,\n\tNumerical: Numerical,\n\tKey: Key,\n\tDomEvent: DomEvent,\n\tDomElement: DomElement,\n\tdocument: document,\n\twindow: window,\n\tSymbol: SymbolDefinition,\n\tPlacedSymbol: SymbolItem\n}))();\n\nif (paper.agent.node) {\n\trequire('./node/extend.js')(paper);\n}\n\nif (typeof define === 'function' && define.amd) {\n\tdefine('paper', paper);\n} else if (typeof module === 'object' && module) {\n\tmodule.exports = paper;\n}\n\nreturn paper;\n}.call(this, typeof self === 'object' ? self : null);\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar BIND_FLAG = 1,\n    BIND_KEY_FLAG = 2,\n    CURRY_BOUND_FLAG = 4,\n    CURRY_FLAG = 8,\n    CURRY_RIGHT_FLAG = 16,\n    PARTIAL_FLAG = 32,\n    PARTIAL_RIGHT_FLAG = 64,\n    ARY_FLAG = 128,\n    REARG_FLAG = 256,\n    FLIP_FLAG = 512;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991,\n    MAX_INTEGER = 1.7976931348623157e+308,\n    NAN = 0 / 0;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n  ['ary', ARY_FLAG],\n  ['bind', BIND_FLAG],\n  ['bindKey', BIND_KEY_FLAG],\n  ['curry', CURRY_FLAG],\n  ['curryRight', CURRY_RIGHT_FLAG],\n  ['flip', FLIP_FLAG],\n  ['partial', PARTIAL_FLAG],\n  ['partialRight', PARTIAL_RIGHT_FLAG],\n  ['rearg', REARG_FLAG]\n];\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    symbolTag = '[object Symbol]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n    reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n    reSplitDetails = /,? & /;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array ? array.length : 0;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  if (value !== value) {\n    return baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\n/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n  var length = array.length,\n      result = 0;\n\n  while (length--) {\n    if (array[length] === placeholder) {\n      result++;\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n  var index = -1,\n      length = array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (value === placeholder || value === PLACEHOLDER) {\n      array[index] = PLACEHOLDER;\n      result[resIndex++] = index;\n    }\n  }\n  return result;\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    objectCreate = Object.create,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/* Used to set `toString` methods. */\nvar defineProperty = (function() {\n  var func = getNative(Object, 'defineProperty'),\n      name = getNative.name;\n\n  return (name && name.length > 2) ? func : undefined;\n}());\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n  return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = array;\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n  var argsIndex = -1,\n      argsLength = args.length,\n      holdersLength = holders.length,\n      leftIndex = -1,\n      leftLength = partials.length,\n      rangeLength = nativeMax(argsLength - holdersLength, 0),\n      result = Array(leftLength + rangeLength),\n      isUncurried = !isCurried;\n\n  while (++leftIndex < leftLength) {\n    result[leftIndex] = partials[leftIndex];\n  }\n  while (++argsIndex < holdersLength) {\n    if (isUncurried || argsIndex < argsLength) {\n      result[holders[argsIndex]] = args[argsIndex];\n    }\n  }\n  while (rangeLength--) {\n    result[leftIndex++] = args[argsIndex++];\n  }\n  return result;\n}\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n  var argsIndex = -1,\n      argsLength = args.length,\n      holdersIndex = -1,\n      holdersLength = holders.length,\n      rightIndex = -1,\n      rightLength = partials.length,\n      rangeLength = nativeMax(argsLength - holdersLength, 0),\n      result = Array(rangeLength + rightLength),\n      isUncurried = !isCurried;\n\n  while (++argsIndex < rangeLength) {\n    result[argsIndex] = args[argsIndex];\n  }\n  var offset = argsIndex;\n  while (++rightIndex < rightLength) {\n    result[offset + rightIndex] = partials[rightIndex];\n  }\n  while (++holdersIndex < holdersLength) {\n    if (isUncurried || argsIndex < argsLength) {\n      result[offset + holders[holdersIndex]] = args[argsIndex++];\n    }\n  }\n  return result;\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n  var isBind = bitmask & BIND_FLAG,\n      Ctor = createCtor(func);\n\n  function wrapper() {\n    var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n    return fn.apply(isBind ? thisArg : this, arguments);\n  }\n  return wrapper;\n}\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n  return function() {\n    // Use a `switch` statement to work with class constructors. See\n    // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n    // for more details.\n    var args = arguments;\n    switch (args.length) {\n      case 0: return new Ctor;\n      case 1: return new Ctor(args[0]);\n      case 2: return new Ctor(args[0], args[1]);\n      case 3: return new Ctor(args[0], args[1], args[2]);\n      case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n      case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n      case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n      case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n    }\n    var thisBinding = baseCreate(Ctor.prototype),\n        result = Ctor.apply(thisBinding, args);\n\n    // Mimic the constructor's `return` behavior.\n    // See https://es5.github.io/#x13.2.2 for more details.\n    return isObject(result) ? result : thisBinding;\n  };\n}\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n  var Ctor = createCtor(func);\n\n  function wrapper() {\n    var length = arguments.length,\n        args = Array(length),\n        index = length,\n        placeholder = getHolder(wrapper);\n\n    while (index--) {\n      args[index] = arguments[index];\n    }\n    var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n      ? []\n      : replaceHolders(args, placeholder);\n\n    length -= holders.length;\n    if (length < arity) {\n      return createRecurry(\n        func, bitmask, createHybrid, wrapper.placeholder, undefined,\n        args, holders, undefined, undefined, arity - length);\n    }\n    var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n    return apply(fn, this, args);\n  }\n  return wrapper;\n}\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n *  the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n *  to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n  var isAry = bitmask & ARY_FLAG,\n      isBind = bitmask & BIND_FLAG,\n      isBindKey = bitmask & BIND_KEY_FLAG,\n      isCurried = bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG),\n      isFlip = bitmask & FLIP_FLAG,\n      Ctor = isBindKey ? undefined : createCtor(func);\n\n  function wrapper() {\n    var length = arguments.length,\n        args = Array(length),\n        index = length;\n\n    while (index--) {\n      args[index] = arguments[index];\n    }\n    if (isCurried) {\n      var placeholder = getHolder(wrapper),\n          holdersCount = countHolders(args, placeholder);\n    }\n    if (partials) {\n      args = composeArgs(args, partials, holders, isCurried);\n    }\n    if (partialsRight) {\n      args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n    }\n    length -= holdersCount;\n    if (isCurried && length < arity) {\n      var newHolders = replaceHolders(args, placeholder);\n      return createRecurry(\n        func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n        args, newHolders, argPos, ary, arity - length\n      );\n    }\n    var thisBinding = isBind ? thisArg : this,\n        fn = isBindKey ? thisBinding[func] : func;\n\n    length = args.length;\n    if (argPos) {\n      args = reorder(args, argPos);\n    } else if (isFlip && length > 1) {\n      args.reverse();\n    }\n    if (isAry && ary < length) {\n      args.length = ary;\n    }\n    if (this && this !== root && this instanceof wrapper) {\n      fn = Ctor || createCtor(fn);\n    }\n    return fn.apply(thisBinding, args);\n  }\n  return wrapper;\n}\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n *  the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n  var isBind = bitmask & BIND_FLAG,\n      Ctor = createCtor(func);\n\n  function wrapper() {\n    var argsIndex = -1,\n        argsLength = arguments.length,\n        leftIndex = -1,\n        leftLength = partials.length,\n        args = Array(leftLength + argsLength),\n        fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n    while (++leftIndex < leftLength) {\n      args[leftIndex] = partials[leftIndex];\n    }\n    while (argsLength--) {\n      args[leftIndex++] = arguments[++argsIndex];\n    }\n    return apply(fn, isBind ? thisArg : this, args);\n  }\n  return wrapper;\n}\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n *  the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n  var isCurry = bitmask & CURRY_FLAG,\n      newHolders = isCurry ? holders : undefined,\n      newHoldersRight = isCurry ? undefined : holders,\n      newPartials = isCurry ? partials : undefined,\n      newPartialsRight = isCurry ? undefined : partials;\n\n  bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);\n  bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);\n\n  if (!(bitmask & CURRY_BOUND_FLAG)) {\n    bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);\n  }\n\n  var result = wrapFunc(func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, newHoldersRight, argPos, ary, arity);\n  result.placeholder = placeholder;\n  return setWrapToString(result, func, bitmask);\n}\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n *  The bitmask may be composed of the following flags:\n *     1 - `_.bind`\n *     2 - `_.bindKey`\n *     4 - `_.curry` or `_.curryRight` of a bound function\n *     8 - `_.curry`\n *    16 - `_.curryRight`\n *    32 - `_.partial`\n *    64 - `_.partialRight`\n *   128 - `_.rearg`\n *   256 - `_.ary`\n *   512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n  var isBindKey = bitmask & BIND_KEY_FLAG;\n  if (!isBindKey && typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var length = partials ? partials.length : 0;\n  if (!length) {\n    bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);\n    partials = holders = undefined;\n  }\n  ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n  arity = arity === undefined ? arity : toInteger(arity);\n  length -= holders ? holders.length : 0;\n\n  if (bitmask & PARTIAL_RIGHT_FLAG) {\n    var partialsRight = partials,\n        holdersRight = holders;\n\n    partials = holders = undefined;\n  }\n\n  var newData = [\n    func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n    argPos, ary, arity\n  ];\n\n  func = newData[0];\n  bitmask = newData[1];\n  thisArg = newData[2];\n  partials = newData[3];\n  holders = newData[4];\n  arity = newData[9] = newData[9] == null\n    ? (isBindKey ? 0 : func.length)\n    : nativeMax(newData[9] - length, 0);\n\n  if (!arity && bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG)) {\n    bitmask &= ~(CURRY_FLAG | CURRY_RIGHT_FLAG);\n  }\n  if (!bitmask || bitmask == BIND_FLAG) {\n    var result = createBind(func, bitmask, thisArg);\n  } else if (bitmask == CURRY_FLAG || bitmask == CURRY_RIGHT_FLAG) {\n    result = createCurry(func, bitmask, arity);\n  } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !holders.length) {\n    result = createPartial(func, bitmask, thisArg, partials);\n  } else {\n    result = createHybrid.apply(undefined, newData);\n  }\n  return setWrapToString(result, func, bitmask);\n}\n\n/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n  var object = func;\n  return object.placeholder;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n  var match = source.match(reWrapDetails);\n  return match ? match[1].split(reSplitDetails) : [];\n}\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n  var length = details.length,\n      lastIndex = length - 1;\n\n  details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n  details = details.join(length > 2 ? ', ' : ' ');\n  return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n  var arrLength = array.length,\n      length = nativeMin(indexes.length, arrLength),\n      oldArray = copyArray(array);\n\n  while (length--) {\n    var index = indexes[length];\n    array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n  }\n  return array;\n}\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nvar setWrapToString = !defineProperty ? identity : function(wrapper, reference, bitmask) {\n  var source = (reference + '');\n  return defineProperty(wrapper, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)))\n  });\n};\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n  arrayEach(wrapFlags, function(pair) {\n    var value = '_.' + pair[0];\n    if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n      details.push(value);\n    }\n  });\n  return details.sort();\n}\n\n/**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n *   return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\nvar bind = baseRest(function(func, thisArg, partials) {\n  var bitmask = BIND_FLAG;\n  if (partials.length) {\n    var holders = replaceHolders(partials, getHolder(bind));\n    bitmask |= PARTIAL_FLAG;\n  }\n  return createWrap(func, bitmask, thisArg, partials, holders);\n});\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n *   'label': 'docs',\n *   'click': function() {\n *     console.log('clicked ' + this.label);\n *   }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\nvar bindAll = baseRest(function(object, methodNames) {\n  arrayEach(baseFlatten(methodNames, 1), function(key) {\n    key = toKey(key);\n    object[key] = bind(object[key], object);\n  });\n  return object;\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\n// Assign default placeholders.\nbind.placeholder = {};\n\nmodule.exports = bindAll;\n","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","import PropTypes from 'prop-types';\nexport var subscriptionShape = PropTypes.shape({\n  trySubscribe: PropTypes.func.isRequired,\n  tryUnsubscribe: PropTypes.func.isRequired,\n  notifyNestedSubs: PropTypes.func.isRequired,\n  isSubscribed: PropTypes.func.isRequired\n});\nexport var storeShape = PropTypes.shape({\n  subscribe: PropTypes.func.isRequired,\n  dispatch: PropTypes.func.isRequired,\n  getState: PropTypes.func.isRequired\n});","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n\n\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n    /* eslint-disable no-empty */\n  } catch (e) {}\n  /* eslint-enable no-empty */\n\n}","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React, { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nimport warning from '../utils/warning';\nvar prefixUnsafeLifecycleMethods = typeof React.forwardRef !== \"undefined\";\nvar didWarnAboutReceivingStore = false;\n\nfunction warnAboutReceivingStore() {\n  if (didWarnAboutReceivingStore) {\n    return;\n  }\n\n  didWarnAboutReceivingStore = true;\n  warning('<Provider> does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reduxjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nexport function createProvider(storeKey) {\n  var _Provider$childContex;\n\n  if (storeKey === void 0) {\n    storeKey = 'store';\n  }\n\n  var subscriptionKey = storeKey + \"Subscription\";\n\n  var Provider =\n  /*#__PURE__*/\n  function (_Component) {\n    _inheritsLoose(Provider, _Component);\n\n    var _proto = Provider.prototype;\n\n    _proto.getChildContext = function getChildContext() {\n      var _ref;\n\n      return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref;\n    };\n\n    function Provider(props, context) {\n      var _this;\n\n      _this = _Component.call(this, props, context) || this;\n      _this[storeKey] = props.store;\n      return _this;\n    }\n\n    _proto.render = function render() {\n      return Children.only(this.props.children);\n    };\n\n    return Provider;\n  }(Component);\n\n  if (process.env.NODE_ENV !== 'production') {\n    // Use UNSAFE_ event name where supported\n    var eventName = prefixUnsafeLifecycleMethods ? 'UNSAFE_componentWillReceiveProps' : 'componentWillReceiveProps';\n\n    Provider.prototype[eventName] = function (nextProps) {\n      if (this[storeKey] !== nextProps.store) {\n        warnAboutReceivingStore();\n      }\n    };\n  }\n\n  Provider.propTypes = {\n    store: storeShape.isRequired,\n    children: PropTypes.element.isRequired\n  };\n  Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = storeShape.isRequired, _Provider$childContex[subscriptionKey] = subscriptionShape, _Provider$childContex);\n  return Provider;\n}\nexport default createProvider();","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\nvar CLEARED = null;\nvar nullListeners = {\n  notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n  // the current/next pattern is copied from redux's createStore code.\n  // TODO: refactor+expose that code to be reusable here?\n  var current = [];\n  var next = [];\n  return {\n    clear: function clear() {\n      next = CLEARED;\n      current = CLEARED;\n    },\n    notify: function notify() {\n      var listeners = current = next;\n\n      for (var i = 0; i < listeners.length; i++) {\n        listeners[i]();\n      }\n    },\n    get: function get() {\n      return next;\n    },\n    subscribe: function subscribe(listener) {\n      var isSubscribed = true;\n      if (next === current) next = current.slice();\n      next.push(listener);\n      return function unsubscribe() {\n        if (!isSubscribed || current === CLEARED) return;\n        isSubscribed = false;\n        if (next === current) next = current.slice();\n        next.splice(next.indexOf(listener), 1);\n      };\n    }\n  };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n  function Subscription(store, parentSub, onStateChange) {\n    this.store = store;\n    this.parentSub = parentSub;\n    this.onStateChange = onStateChange;\n    this.unsubscribe = null;\n    this.listeners = nullListeners;\n  }\n\n  var _proto = Subscription.prototype;\n\n  _proto.addNestedSub = function addNestedSub(listener) {\n    this.trySubscribe();\n    return this.listeners.subscribe(listener);\n  };\n\n  _proto.notifyNestedSubs = function notifyNestedSubs() {\n    this.listeners.notify();\n  };\n\n  _proto.isSubscribed = function isSubscribed() {\n    return Boolean(this.unsubscribe);\n  };\n\n  _proto.trySubscribe = function trySubscribe() {\n    if (!this.unsubscribe) {\n      this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);\n      this.listeners = createListenerCollection();\n    }\n  };\n\n  _proto.tryUnsubscribe = function tryUnsubscribe() {\n    if (this.unsubscribe) {\n      this.unsubscribe();\n      this.unsubscribe = null;\n      this.listeners.clear();\n      this.listeners = nullListeners;\n    }\n  };\n\n  return Subscription;\n}();\n\nexport { Subscription as default };","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { Component, createElement } from 'react';\nimport { isValidElementType } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nvar prefixUnsafeLifecycleMethods = typeof React.forwardRef !== \"undefined\";\nvar hotReloadingVersion = 0;\nvar dummyState = {};\n\nfunction noop() {}\n\nfunction makeSelectorStateful(sourceSelector, store) {\n  // wrap the selector in an object that tracks its results between runs.\n  var selector = {\n    run: function runComponentSelector(props) {\n      try {\n        var nextProps = sourceSelector(store.getState(), props);\n\n        if (nextProps !== selector.props || selector.error) {\n          selector.shouldComponentUpdate = true;\n          selector.props = nextProps;\n          selector.error = null;\n        }\n      } catch (error) {\n        selector.shouldComponentUpdate = true;\n        selector.error = error;\n      }\n    }\n  };\n  return selector;\n}\n\nexport default function connectAdvanced(\n/*\n  selectorFactory is a func that is responsible for returning the selector function used to\n  compute new props from state, props, and dispatch. For example:\n     export default connectAdvanced((dispatch, options) => (state, props) => ({\n      thing: state.things[props.thingId],\n      saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n    }))(YourComponent)\n   Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n  outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n  the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n   Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n  props. Do not use connectAdvanced directly without memoizing results between calls to your\n  selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n  var _contextTypes, _childContextTypes;\n\n  if (_ref === void 0) {\n    _ref = {};\n  }\n\n  var _ref2 = _ref,\n      _ref2$getDisplayName = _ref2.getDisplayName,\n      getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n    return \"ConnectAdvanced(\" + name + \")\";\n  } : _ref2$getDisplayName,\n      _ref2$methodName = _ref2.methodName,\n      methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n      _ref2$renderCountProp = _ref2.renderCountProp,\n      renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n      _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n      shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n      _ref2$storeKey = _ref2.storeKey,\n      storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n      _ref2$withRef = _ref2.withRef,\n      withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n      connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\"]);\n\n  var subscriptionKey = storeKey + 'Subscription';\n  var version = hotReloadingVersion++;\n  var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = storeShape, _contextTypes[subscriptionKey] = subscriptionShape, _contextTypes);\n  var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = subscriptionShape, _childContextTypes);\n  return function wrapWithConnect(WrappedComponent) {\n    invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n    var displayName = getDisplayName(wrappedComponentName);\n\n    var selectorFactoryOptions = _extends({}, connectOptions, {\n      getDisplayName: getDisplayName,\n      methodName: methodName,\n      renderCountProp: renderCountProp,\n      shouldHandleStateChanges: shouldHandleStateChanges,\n      storeKey: storeKey,\n      withRef: withRef,\n      displayName: displayName,\n      wrappedComponentName: wrappedComponentName,\n      WrappedComponent: WrappedComponent // TODO Actually fix our use of componentWillReceiveProps\n\n      /* eslint-disable react/no-deprecated */\n\n    });\n\n    var Connect =\n    /*#__PURE__*/\n    function (_Component) {\n      _inheritsLoose(Connect, _Component);\n\n      function Connect(props, context) {\n        var _this;\n\n        _this = _Component.call(this, props, context) || this;\n        _this.version = version;\n        _this.state = {};\n        _this.renderCount = 0;\n        _this.store = props[storeKey] || context[storeKey];\n        _this.propsMode = Boolean(props[storeKey]);\n        _this.setWrappedInstance = _this.setWrappedInstance.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n        invariant(_this.store, \"Could not find \\\"\" + storeKey + \"\\\" in either the context or props of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + (\"or explicitly pass \\\"\" + storeKey + \"\\\" as a prop to \\\"\" + displayName + \"\\\".\"));\n\n        _this.initSelector();\n\n        _this.initSubscription();\n\n        return _this;\n      }\n\n      var _proto = Connect.prototype;\n\n      _proto.getChildContext = function getChildContext() {\n        var _ref3;\n\n        // If this component received store from props, its subscription should be transparent\n        // to any descendants receiving store+subscription from context; it passes along\n        // subscription passed to it. Otherwise, it shadows the parent subscription, which allows\n        // Connect to control ordering of notifications to flow top-down.\n        var subscription = this.propsMode ? null : this.subscription;\n        return _ref3 = {}, _ref3[subscriptionKey] = subscription || this.context[subscriptionKey], _ref3;\n      };\n\n      _proto.componentDidMount = function componentDidMount() {\n        if (!shouldHandleStateChanges) return; // componentWillMount fires during server side rendering, but componentDidMount and\n        // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.\n        // Otherwise, unsubscription would never take place during SSR, causing a memory leak.\n        // To handle the case where a child component may have triggered a state change by\n        // dispatching an action in its componentWillMount, we have to re-run the select and maybe\n        // re-render.\n\n        this.subscription.trySubscribe();\n        this.selector.run(this.props);\n        if (this.selector.shouldComponentUpdate) this.forceUpdate();\n      }; // Note: this is renamed below to the UNSAFE_ version in React >=16.3.0\n\n\n      _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n        this.selector.run(nextProps);\n      };\n\n      _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n        return this.selector.shouldComponentUpdate;\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        if (this.subscription) this.subscription.tryUnsubscribe();\n        this.subscription = null;\n        this.notifyNestedSubs = noop;\n        this.store = null;\n        this.selector.run = noop;\n        this.selector.shouldComponentUpdate = false;\n      };\n\n      _proto.getWrappedInstance = function getWrappedInstance() {\n        invariant(withRef, \"To access the wrapped instance, you need to specify \" + (\"{ withRef: true } in the options argument of the \" + methodName + \"() call.\"));\n        return this.wrappedInstance;\n      };\n\n      _proto.setWrappedInstance = function setWrappedInstance(ref) {\n        this.wrappedInstance = ref;\n      };\n\n      _proto.initSelector = function initSelector() {\n        var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions);\n        this.selector = makeSelectorStateful(sourceSelector, this.store);\n        this.selector.run(this.props);\n      };\n\n      _proto.initSubscription = function initSubscription() {\n        if (!shouldHandleStateChanges) return; // parentSub's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n        var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey];\n        this.subscription = new Subscription(this.store, parentSub, this.onStateChange.bind(this)); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `this.subscription` will then be null. An\n        // extra null check every change can be avoided by copying the method onto `this` and then\n        // replacing it with a no-op on unmount. This can probably be avoided if Subscription's\n        // listeners logic is changed to not call listeners that have been unsubscribed in the\n        // middle of the notification loop.\n\n        this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription);\n      };\n\n      _proto.onStateChange = function onStateChange() {\n        this.selector.run(this.props);\n\n        if (!this.selector.shouldComponentUpdate) {\n          this.notifyNestedSubs();\n        } else {\n          this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate;\n          this.setState(dummyState);\n        }\n      };\n\n      _proto.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() {\n        // `componentDidUpdate` is conditionally implemented when `onStateChange` determines it\n        // needs to notify nested subs. Once called, it unimplements itself until further state\n        // changes occur. Doing it this way vs having a permanent `componentDidUpdate` that does\n        // a boolean check every time avoids an extra method call most of the time, resulting\n        // in some perf boost.\n        this.componentDidUpdate = undefined;\n        this.notifyNestedSubs();\n      };\n\n      _proto.isSubscribed = function isSubscribed() {\n        return Boolean(this.subscription) && this.subscription.isSubscribed();\n      };\n\n      _proto.addExtraProps = function addExtraProps(props) {\n        if (!withRef && !renderCountProp && !(this.propsMode && this.subscription)) return props; // make a shallow copy so that fields added don't leak to the original selector.\n        // this is especially important for 'ref' since that's a reference back to the component\n        // instance. a singleton memoized selector would then be holding a reference to the\n        // instance, preventing the instance from being garbage collected, and that would be bad\n\n        var withExtras = _extends({}, props);\n\n        if (withRef) withExtras.ref = this.setWrappedInstance;\n        if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;\n        if (this.propsMode && this.subscription) withExtras[subscriptionKey] = this.subscription;\n        return withExtras;\n      };\n\n      _proto.render = function render() {\n        var selector = this.selector;\n        selector.shouldComponentUpdate = false;\n\n        if (selector.error) {\n          throw selector.error;\n        } else {\n          return createElement(WrappedComponent, this.addExtraProps(selector.props));\n        }\n      };\n\n      return Connect;\n    }(Component);\n\n    if (prefixUnsafeLifecycleMethods) {\n      // Use UNSAFE_ event name where supported\n      Connect.prototype.UNSAFE_componentWillReceiveProps = Connect.prototype.componentWillReceiveProps;\n      delete Connect.prototype.componentWillReceiveProps;\n    }\n    /* eslint-enable react/no-deprecated */\n\n\n    Connect.WrappedComponent = WrappedComponent;\n    Connect.displayName = displayName;\n    Connect.childContextTypes = childContextTypes;\n    Connect.contextTypes = contextTypes;\n    Connect.propTypes = contextTypes;\n\n    if (process.env.NODE_ENV !== 'production') {\n      // Use UNSAFE_ event name where supported\n      var eventName = prefixUnsafeLifecycleMethods ? 'UNSAFE_componentWillUpdate' : 'componentWillUpdate';\n\n      Connect.prototype[eventName] = function componentWillUpdate() {\n        var _this2 = this;\n\n        // We are hot reloading!\n        if (this.version !== version) {\n          this.version = version;\n          this.initSelector(); // If any connected descendants don't hot reload (and resubscribe in the process), their\n          // listeners will be lost when we unsubscribe. Unfortunately, by copying over all\n          // listeners, this does mean that the old versions of connected descendants will still be\n          // notified of state changes; however, their onStateChange function is a no-op so this\n          // isn't a huge deal.\n\n          var oldListeners = [];\n\n          if (this.subscription) {\n            oldListeners = this.subscription.listeners.get();\n            this.subscription.tryUnsubscribe();\n          }\n\n          this.initSubscription();\n\n          if (shouldHandleStateChanges) {\n            this.subscription.trySubscribe();\n            oldListeners.forEach(function (listener) {\n              return _this2.subscription.listeners.subscribe(listener);\n            });\n          }\n        }\n      };\n    }\n\n    return hoistStatics(Connect, WrappedComponent);\n  };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n  if (x === y) {\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nexport default function shallowEqual(objA, objB) {\n  if (is(objA, objB)) return true;\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return false;\n\n  for (var i = 0; i < keysA.length; i++) {\n    if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}","/**\r\n * @param {any} obj The object to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n */\nexport default function isPlainObject(obj) {\n  if (typeof obj !== 'object' || obj === null) return false;\n  var proto = Object.getPrototypeOf(obj);\n  if (proto === null) return true;\n  var baseProto = proto;\n\n  while (Object.getPrototypeOf(baseProto) !== null) {\n    baseProto = Object.getPrototypeOf(baseProto);\n  }\n\n  return proto === baseProto;\n}","import isPlainObject from './isPlainObject';\nimport warning from './warning';\nexport default function verifyPlainObject(value, displayName, methodName) {\n  if (!isPlainObject(value)) {\n    warning(methodName + \"() in \" + displayName + \" must return a plain object. Instead received \" + value + \".\");\n  }\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n  return function initConstantSelector(dispatch, options) {\n    var constant = getConstant(dispatch, options);\n\n    function constantSelector() {\n      return constant;\n    }\n\n    constantSelector.dependsOnOwnProps = false;\n    return constantSelector;\n  };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n// \n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n  return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n// \n//  * Detects whether the mapToProps function being called depends on props, which\n//    is used by selectorFactory to decide if it should reinvoke on props changes.\n//    \n//  * On first call, handles mapToProps if returns another function, and treats that\n//    new function as the true mapToProps for subsequent calls.\n//    \n//  * On first call, verifies the first result is a plain object, in order to warn\n//    the developer that their mapToProps function is not returning a valid result.\n//    \n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n  return function initProxySelector(dispatch, _ref) {\n    var displayName = _ref.displayName;\n\n    var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n    }; // allow detectFactoryAndVerify to get ownProps\n\n\n    proxy.dependsOnOwnProps = true;\n\n    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n      proxy.mapToProps = mapToProps;\n      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n      var props = proxy(stateOrDispatch, ownProps);\n\n      if (typeof props === 'function') {\n        proxy.mapToProps = props;\n        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n        props = proxy(stateOrDispatch, ownProps);\n      }\n\n      if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n      return props;\n    };\n\n    return proxy;\n  };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n  return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n  return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n    return {\n      dispatch: dispatch\n    };\n  }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n    return bindActionCreators(mapDispatchToProps, dispatch);\n  }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n  return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n  return !mapStateToProps ? wrapMapToPropsConstant(function () {\n    return {};\n  }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n  return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n  return function initMergePropsProxy(dispatch, _ref) {\n    var displayName = _ref.displayName,\n        pure = _ref.pure,\n        areMergedPropsEqual = _ref.areMergedPropsEqual;\n    var hasRunOnce = false;\n    var mergedProps;\n    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n      var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n      if (hasRunOnce) {\n        if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n      } else {\n        hasRunOnce = true;\n        mergedProps = nextMergedProps;\n        if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n      }\n\n      return mergedProps;\n    };\n  };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n  return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n  return !mergeProps ? function () {\n    return defaultMergeProps;\n  } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import warning from '../utils/warning';\n\nfunction verify(selector, methodName, displayName) {\n  if (!selector) {\n    throw new Error(\"Unexpected value for \" + methodName + \" in \" + displayName + \".\");\n  } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n    if (!selector.hasOwnProperty('dependsOnOwnProps')) {\n      warning(\"The selector for \" + methodName + \" of \" + displayName + \" did not specify a value for dependsOnOwnProps.\");\n    }\n  }\n}\n\nexport default function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {\n  verify(mapStateToProps, 'mapStateToProps', displayName);\n  verify(mapDispatchToProps, 'mapDispatchToProps', displayName);\n  verify(mergeProps, 'mergeProps', displayName);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n  return function impureFinalPropsSelector(state, ownProps) {\n    return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n  };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n  var areStatesEqual = _ref.areStatesEqual,\n      areOwnPropsEqual = _ref.areOwnPropsEqual,\n      areStatePropsEqual = _ref.areStatePropsEqual;\n  var hasRunAtLeastOnce = false;\n  var state;\n  var ownProps;\n  var stateProps;\n  var dispatchProps;\n  var mergedProps;\n\n  function handleFirstCall(firstState, firstOwnProps) {\n    state = firstState;\n    ownProps = firstOwnProps;\n    stateProps = mapStateToProps(state, ownProps);\n    dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    hasRunAtLeastOnce = true;\n    return mergedProps;\n  }\n\n  function handleNewPropsAndNewState() {\n    stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewProps() {\n    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewState() {\n    var nextStateProps = mapStateToProps(state, ownProps);\n    var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n    stateProps = nextStateProps;\n    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleSubsequentCalls(nextState, nextOwnProps) {\n    var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n    var stateChanged = !areStatesEqual(nextState, state);\n    state = nextState;\n    ownProps = nextOwnProps;\n    if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n    if (propsChanged) return handleNewProps();\n    if (stateChanged) return handleNewState();\n    return mergedProps;\n  }\n\n  return function pureFinalPropsSelector(nextState, nextOwnProps) {\n    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n  };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n  var initMapStateToProps = _ref2.initMapStateToProps,\n      initMapDispatchToProps = _ref2.initMapDispatchToProps,\n      initMergeProps = _ref2.initMergeProps,\n      options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n  var mapStateToProps = initMapStateToProps(dispatch, options);\n  var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n  var mergeProps = initMergeProps(dispatch, options);\n\n  if (process.env.NODE_ENV !== 'production') {\n    verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n  }\n\n  var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n  return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n  connect is a facade over connectAdvanced. It turns its args into a compatible\n  selectorFactory, which has the signature:\n\n    (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n  \n  connect passes its args to connectAdvanced as options, which will in turn pass them to\n  selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n  selectorFactory returns a final props selector from its mapStateToProps,\n  mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n  mergePropsFactories, and pure args.\n\n  The resulting final props selector is called by the Connect component instance whenever\n  it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n  for (var i = factories.length - 1; i >= 0; i--) {\n    var result = factories[i](arg);\n    if (result) return result;\n  }\n\n  return function (dispatch, options) {\n    throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n  };\n}\n\nfunction strictEqual(a, b) {\n  return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$connectHOC = _ref.connectHOC,\n      connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n      _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n      mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n      _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n      mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n      _ref$mergePropsFactor = _ref.mergePropsFactories,\n      mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n      _ref$selectorFactory = _ref.selectorFactory,\n      selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n  return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n    if (_ref2 === void 0) {\n      _ref2 = {};\n    }\n\n    var _ref3 = _ref2,\n        _ref3$pure = _ref3.pure,\n        pure = _ref3$pure === void 0 ? true : _ref3$pure,\n        _ref3$areStatesEqual = _ref3.areStatesEqual,\n        areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n        _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n        areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n        _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n        areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n        _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n        areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n        extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n    var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n    var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n    var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n    return connectHOC(selectorFactory, _extends({\n      // used in error messages\n      methodName: 'connect',\n      // used to compute Connect's displayName from the wrapped component's displayName.\n      getDisplayName: function getDisplayName(name) {\n        return \"Connect(\" + name + \")\";\n      },\n      // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n      shouldHandleStateChanges: Boolean(mapStateToProps),\n      // passed through to selectorFactory\n      initMapStateToProps: initMapStateToProps,\n      initMapDispatchToProps: initMapDispatchToProps,\n      initMergeProps: initMergeProps,\n      pure: pure,\n      areStatesEqual: areStatesEqual,\n      areOwnPropsEqual: areOwnPropsEqual,\n      areStatePropsEqual: areStatePropsEqual,\n      areMergedPropsEqual: areMergedPropsEqual\n    }, extraOptions));\n  };\n}\nexport default createConnect();","import Provider, { createProvider } from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport connect from './connect/connect';\nexport { Provider, createProvider, connectAdvanced, connect };","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./color-picker.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./paint-editor.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nvar RelativeTimeFormat;\n// -- Utilities ----------------------------------------------------------------\nfunction getCacheId(inputs) {\n    return JSON.stringify(inputs.map(function (input) {\n        return input && typeof input === 'object' ? orderedProps(input) : input;\n    }));\n}\nfunction orderedProps(obj) {\n    return Object.keys(obj)\n        .sort()\n        .map(function (k) {\n        var _a;\n        return (_a = {}, _a[k] = obj[k], _a);\n    });\n}\nvar memoizeFormatConstructor = function (FormatConstructor, cache) {\n    if (cache === void 0) { cache = {}; }\n    return function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var cacheId = getCacheId(args);\n        var format = cacheId && cache[cacheId];\n        if (!format) {\n            format = new ((_a = FormatConstructor).bind.apply(_a, [void 0].concat(args)))();\n            if (cacheId) {\n                cache[cacheId] = format;\n            }\n        }\n        return format;\n    };\n};\nexport default memoizeFormatConstructor;\n//# sourceMappingURL=index.js.map","/*\n * Copyright 2019, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport allLocaleData from '../locale-data/index.js';\nimport IntlMessageFormat from 'intl-messageformat';\nimport IntlRelativeFormat from 'intl-relativeformat';\nimport PropTypes from 'prop-types';\nimport React, { Children, Component, createElement, isValidElement } from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport memoizeIntlConstructor from 'intl-format-cache';\n\n// GENERATED FILE\nvar defaultLocaleData = { \"locale\": \"en\", \"pluralRuleFunction\": function pluralRuleFunction(n, ord) {\n    var s = String(n).split(\".\"),\n        v0 = !s[1],\n        t0 = Number(s[0]) == n,\n        n10 = t0 && s[0].slice(-1),\n        n100 = t0 && s[0].slice(-2);if (ord) return n10 == 1 && n100 != 11 ? \"one\" : n10 == 2 && n100 != 12 ? \"two\" : n10 == 3 && n100 != 13 ? \"few\" : \"other\";return n == 1 && v0 ? \"one\" : \"other\";\n  }, \"fields\": { \"year\": { \"displayName\": \"year\", \"relative\": { \"0\": \"this year\", \"1\": \"next year\", \"-1\": \"last year\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} year\", \"other\": \"in {0} years\" }, \"past\": { \"one\": \"{0} year ago\", \"other\": \"{0} years ago\" } } }, \"year-short\": { \"displayName\": \"yr.\", \"relative\": { \"0\": \"this yr.\", \"1\": \"next yr.\", \"-1\": \"last yr.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} yr.\", \"other\": \"in {0} yr.\" }, \"past\": { \"one\": \"{0} yr. ago\", \"other\": \"{0} yr. ago\" } } }, \"month\": { \"displayName\": \"month\", \"relative\": { \"0\": \"this month\", \"1\": \"next month\", \"-1\": \"last month\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} month\", \"other\": \"in {0} months\" }, \"past\": { \"one\": \"{0} month ago\", \"other\": \"{0} months ago\" } } }, \"month-short\": { \"displayName\": \"mo.\", \"relative\": { \"0\": \"this mo.\", \"1\": \"next mo.\", \"-1\": \"last mo.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} mo.\", \"other\": \"in {0} mo.\" }, \"past\": { \"one\": \"{0} mo. ago\", \"other\": \"{0} mo. ago\" } } }, \"day\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"day-short\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"hour\": { \"displayName\": \"hour\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hour\", \"other\": \"in {0} hours\" }, \"past\": { \"one\": \"{0} hour ago\", \"other\": \"{0} hours ago\" } } }, \"hour-short\": { \"displayName\": \"hr.\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hr.\", \"other\": \"in {0} hr.\" }, \"past\": { \"one\": \"{0} hr. ago\", \"other\": \"{0} hr. ago\" } } }, \"minute\": { \"displayName\": \"minute\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} minute\", \"other\": \"in {0} minutes\" }, \"past\": { \"one\": \"{0} minute ago\", \"other\": \"{0} minutes ago\" } } }, \"minute-short\": { \"displayName\": \"min.\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} min.\", \"other\": \"in {0} min.\" }, \"past\": { \"one\": \"{0} min. ago\", \"other\": \"{0} min. ago\" } } }, \"second\": { \"displayName\": \"second\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} second\", \"other\": \"in {0} seconds\" }, \"past\": { \"one\": \"{0} second ago\", \"other\": \"{0} seconds ago\" } } }, \"second-short\": { \"displayName\": \"sec.\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} sec.\", \"other\": \"in {0} sec.\" }, \"past\": { \"one\": \"{0} sec. ago\", \"other\": \"{0} sec. ago\" } } } } };\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nfunction addLocaleData() {\n  var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n  var locales = Array.isArray(data) ? data : [data];\n\n  locales.forEach(function (localeData) {\n    if (localeData && localeData.locale) {\n      IntlMessageFormat.__addLocaleData(localeData);\n      IntlRelativeFormat.__addLocaleData(localeData);\n    }\n  });\n}\n\nfunction hasLocaleData(locale) {\n  var localeParts = (locale || '').split('-');\n\n  while (localeParts.length > 0) {\n    if (hasIMFAndIRFLocaleData(localeParts.join('-'))) {\n      return true;\n    }\n\n    localeParts.pop();\n  }\n\n  return false;\n}\n\nfunction hasIMFAndIRFLocaleData(locale) {\n  var normalizedLocale = locale && locale.toLowerCase();\n\n  return !!(IntlMessageFormat.__localeData__[normalizedLocale] && IntlRelativeFormat.__localeData__[normalizedLocale]);\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\nvar asyncGenerator = function () {\n  function AwaitValue(value) {\n    this.value = value;\n  }\n\n  function AsyncGenerator(gen) {\n    var front, back;\n\n    function send(key, arg) {\n      return new Promise(function (resolve, reject) {\n        var request = {\n          key: key,\n          arg: arg,\n          resolve: resolve,\n          reject: reject,\n          next: null\n        };\n\n        if (back) {\n          back = back.next = request;\n        } else {\n          front = back = request;\n          resume(key, arg);\n        }\n      });\n    }\n\n    function resume(key, arg) {\n      try {\n        var result = gen[key](arg);\n        var value = result.value;\n\n        if (value instanceof AwaitValue) {\n          Promise.resolve(value.value).then(function (arg) {\n            resume(\"next\", arg);\n          }, function (arg) {\n            resume(\"throw\", arg);\n          });\n        } else {\n          settle(result.done ? \"return\" : \"normal\", result.value);\n        }\n      } catch (err) {\n        settle(\"throw\", err);\n      }\n    }\n\n    function settle(type, value) {\n      switch (type) {\n        case \"return\":\n          front.resolve({\n            value: value,\n            done: true\n          });\n          break;\n\n        case \"throw\":\n          front.reject(value);\n          break;\n\n        default:\n          front.resolve({\n            value: value,\n            done: false\n          });\n          break;\n      }\n\n      front = front.next;\n\n      if (front) {\n        resume(front.key, front.arg);\n      } else {\n        back = null;\n      }\n    }\n\n    this._invoke = send;\n\n    if (typeof gen.return !== \"function\") {\n      this.return = undefined;\n    }\n  }\n\n  if (typeof Symbol === \"function\" && Symbol.asyncIterator) {\n    AsyncGenerator.prototype[Symbol.asyncIterator] = function () {\n      return this;\n    };\n  }\n\n  AsyncGenerator.prototype.next = function (arg) {\n    return this._invoke(\"next\", arg);\n  };\n\n  AsyncGenerator.prototype.throw = function (arg) {\n    return this._invoke(\"throw\", arg);\n  };\n\n  AsyncGenerator.prototype.return = function (arg) {\n    return this._invoke(\"return\", arg);\n  };\n\n  return {\n    wrap: function (fn) {\n      return function () {\n        return new AsyncGenerator(fn.apply(this, arguments));\n      };\n    },\n    await: function (value) {\n      return new AwaitValue(value);\n    }\n  };\n}();\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\n\n\nvar inherits = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\nvar objectWithoutProperties = function (obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n};\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar bool = PropTypes.bool;\nvar number = PropTypes.number;\nvar string = PropTypes.string;\nvar func = PropTypes.func;\nvar object = PropTypes.object;\nvar oneOf = PropTypes.oneOf;\nvar shape = PropTypes.shape;\nvar any = PropTypes.any;\nvar oneOfType = PropTypes.oneOfType;\n\nvar localeMatcher = oneOf(['best fit', 'lookup']);\nvar narrowShortLong = oneOf(['narrow', 'short', 'long']);\nvar numeric2digit = oneOf(['numeric', '2-digit']);\nvar funcReq = func.isRequired;\n\nvar intlConfigPropTypes = {\n  locale: string,\n  timeZone: string,\n  formats: object,\n  messages: object,\n  textComponent: any,\n\n  defaultLocale: string,\n  defaultFormats: object,\n\n  onError: func\n};\n\nvar intlFormatPropTypes = {\n  formatDate: funcReq,\n  formatTime: funcReq,\n  formatRelative: funcReq,\n  formatNumber: funcReq,\n  formatPlural: funcReq,\n  formatMessage: funcReq,\n  formatHTMLMessage: funcReq\n};\n\nvar intlShape = shape(_extends({}, intlConfigPropTypes, intlFormatPropTypes, {\n  formatters: object,\n  now: funcReq\n}));\n\nvar messageDescriptorPropTypes = {\n  id: string.isRequired,\n  description: oneOfType([string, object]),\n  defaultMessage: string\n};\n\nvar dateTimeFormatPropTypes = {\n  localeMatcher: localeMatcher,\n  formatMatcher: oneOf(['basic', 'best fit']),\n\n  timeZone: string,\n  hour12: bool,\n\n  weekday: narrowShortLong,\n  era: narrowShortLong,\n  year: numeric2digit,\n  month: oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n  day: numeric2digit,\n  hour: numeric2digit,\n  minute: numeric2digit,\n  second: numeric2digit,\n  timeZoneName: oneOf(['short', 'long'])\n};\n\nvar numberFormatPropTypes = {\n  localeMatcher: localeMatcher,\n\n  style: oneOf(['decimal', 'currency', 'percent']),\n  currency: string,\n  currencyDisplay: oneOf(['symbol', 'code', 'name']),\n  useGrouping: bool,\n\n  minimumIntegerDigits: number,\n  minimumFractionDigits: number,\n  maximumFractionDigits: number,\n  minimumSignificantDigits: number,\n  maximumSignificantDigits: number\n};\n\nvar relativeFormatPropTypes = {\n  style: oneOf(['best fit', 'numeric']),\n  units: oneOf(['second', 'minute', 'hour', 'day', 'month', 'year', 'second-short', 'minute-short', 'hour-short', 'day-short', 'month-short', 'year-short'])\n};\n\nvar pluralFormatPropTypes = {\n  style: oneOf(['cardinal', 'ordinal'])\n};\n\n/*\nHTML escaping and shallow-equals implementations are the same as React's\n(on purpose.) Therefore, it has the following Copyright and Licensing:\n\nCopyright 2013-2014, Facebook, Inc.\nAll rights reserved.\n\nThis source code is licensed under the BSD-style license found in the LICENSE\nfile in the root directory of React's source tree.\n*/\n\nvar intlConfigPropNames = Object.keys(intlConfigPropTypes);\n\nvar ESCAPED_CHARS = {\n  '&': '&amp;',\n  '>': '&gt;',\n  '<': '&lt;',\n  '\"': '&quot;',\n  \"'\": '&#x27;'\n};\n\nvar UNSAFE_CHARS_REGEX = /[&><\"']/g;\n\nfunction escape(str) {\n  return ('' + str).replace(UNSAFE_CHARS_REGEX, function (match) {\n    return ESCAPED_CHARS[match];\n  });\n}\n\nfunction filterProps(props, whitelist) {\n  var defaults$$1 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  return whitelist.reduce(function (filtered, name) {\n    if (props.hasOwnProperty(name)) {\n      filtered[name] = props[name];\n    } else if (defaults$$1.hasOwnProperty(name)) {\n      filtered[name] = defaults$$1[name];\n    }\n\n    return filtered;\n  }, {});\n}\n\nfunction invariantIntlContext() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      intl = _ref.intl;\n\n  invariant(intl, '[React Intl] Could not find required `intl` object. ' + '<IntlProvider> needs to exist in the component ancestry.');\n}\n\nfunction shallowEquals(objA, objB) {\n  if (objA === objB) {\n    return true;\n  }\n\n  if ((typeof objA === 'undefined' ? 'undefined' : _typeof(objA)) !== 'object' || objA === null || (typeof objB === 'undefined' ? 'undefined' : _typeof(objB)) !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  // Test for A's keys different from B.\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n  for (var i = 0; i < keysA.length; i++) {\n    if (!bHasOwnProperty(keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction shouldIntlComponentUpdate(_ref2, nextProps, nextState) {\n  var props = _ref2.props,\n      state = _ref2.state,\n      _ref2$context = _ref2.context,\n      context = _ref2$context === undefined ? {} : _ref2$context;\n  var nextContext = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var _context$intl = context.intl,\n      intl = _context$intl === undefined ? {} : _context$intl;\n  var _nextContext$intl = nextContext.intl,\n      nextIntl = _nextContext$intl === undefined ? {} : _nextContext$intl;\n\n\n  return !shallowEquals(nextProps, props) || !shallowEquals(nextState, state) || !(nextIntl === intl || shallowEquals(filterProps(nextIntl, intlConfigPropNames), filterProps(intl, intlConfigPropNames)));\n}\n\nfunction createError(message, exception) {\n  var eMsg = exception ? '\\n' + exception : '';\n  return '[React Intl] ' + message + eMsg;\n}\n\nfunction defaultErrorHandler(error) {\n  if (process.env.NODE_ENV !== 'production') {\n    console.error(error);\n  }\n}\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n// Inspired by react-redux's `connect()` HOC factory function implementation:\n// https://github.com/rackt/react-redux\n\nfunction getDisplayName(Component$$1) {\n  return Component$$1.displayName || Component$$1.name || 'Component';\n}\n\nfunction injectIntl(WrappedComponent) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _options$intlPropName = options.intlPropName,\n      intlPropName = _options$intlPropName === undefined ? 'intl' : _options$intlPropName,\n      _options$withRef = options.withRef,\n      withRef = _options$withRef === undefined ? false : _options$withRef;\n\n  var InjectIntl = function (_Component) {\n    inherits(InjectIntl, _Component);\n\n    function InjectIntl(props, context) {\n      classCallCheck(this, InjectIntl);\n\n      var _this = possibleConstructorReturn(this, (InjectIntl.__proto__ || Object.getPrototypeOf(InjectIntl)).call(this, props, context));\n\n      invariantIntlContext(context);\n      return _this;\n    }\n\n    createClass(InjectIntl, [{\n      key: 'getWrappedInstance',\n      value: function getWrappedInstance() {\n        invariant(withRef, '[React Intl] To access the wrapped instance, ' + 'the `{withRef: true}` option must be set when calling: ' + '`injectIntl()`');\n\n        return this._wrappedInstance;\n      }\n    }, {\n      key: 'render',\n      value: function render() {\n        var _this2 = this;\n\n        return React.createElement(WrappedComponent, _extends({}, this.props, defineProperty({}, intlPropName, this.context.intl), {\n          ref: withRef ? /* istanbul ignore next */function (ref) {\n            return _this2._wrappedInstance = ref;\n          } : null\n        }));\n      }\n    }]);\n    return InjectIntl;\n  }(Component);\n\n  InjectIntl.displayName = 'InjectIntl(' + getDisplayName(WrappedComponent) + ')';\n  InjectIntl.contextTypes = {\n    intl: intlShape\n  };\n  InjectIntl.WrappedComponent = WrappedComponent;\n\n\n  return hoistNonReactStatics(InjectIntl, WrappedComponent);\n}\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nfunction defineMessages(messageDescriptors) {\n  // This simply returns what's passed-in because it's meant to be a hook for\n  // babel-plugin-react-intl.\n  return messageDescriptors;\n}\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n// This is a \"hack\" until a proper `intl-pluralformat` package is created.\n\nfunction resolveLocale(locales) {\n  // IntlMessageFormat#_resolveLocale() does not depend on `this`.\n  return IntlMessageFormat.prototype._resolveLocale(locales);\n}\n\nfunction findPluralFunction(locale) {\n  // IntlMessageFormat#_findPluralFunction() does not depend on `this`.\n  return IntlMessageFormat.prototype._findPluralRuleFunction(locale);\n}\n\nvar IntlPluralFormat = function IntlPluralFormat(locales) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  classCallCheck(this, IntlPluralFormat);\n\n  var useOrdinal = options.style === 'ordinal';\n  var pluralFn = findPluralFunction(resolveLocale(locales));\n\n  this.format = function (value) {\n    return pluralFn(value, useOrdinal);\n  };\n};\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar DATE_TIME_FORMAT_OPTIONS = Object.keys(dateTimeFormatPropTypes);\nvar NUMBER_FORMAT_OPTIONS = Object.keys(numberFormatPropTypes);\nvar RELATIVE_FORMAT_OPTIONS = Object.keys(relativeFormatPropTypes);\nvar PLURAL_FORMAT_OPTIONS = Object.keys(pluralFormatPropTypes);\n\nvar RELATIVE_FORMAT_THRESHOLDS = {\n  second: 60, // seconds to minute\n  minute: 60, // minutes to hour\n  hour: 24, // hours to day\n  day: 30, // days to month\n  month: 12 };\n\nfunction updateRelativeFormatThresholds(newThresholds) {\n  var thresholds = IntlRelativeFormat.thresholds;\n  thresholds.second = newThresholds.second;\n  thresholds.minute = newThresholds.minute;\n  thresholds.hour = newThresholds.hour;\n  thresholds.day = newThresholds.day;\n  thresholds.month = newThresholds.month;\n  thresholds['second-short'] = newThresholds['second-short'];\n  thresholds['minute-short'] = newThresholds['minute-short'];\n  thresholds['hour-short'] = newThresholds['hour-short'];\n  thresholds['day-short'] = newThresholds['day-short'];\n  thresholds['month-short'] = newThresholds['month-short'];\n}\n\nfunction getNamedFormat(formats, type, name, onError) {\n  var format = formats && formats[type] && formats[type][name];\n  if (format) {\n    return format;\n  }\n\n  onError(createError('No ' + type + ' format named: ' + name));\n}\n\nfunction formatDate(config, state, value) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale,\n      formats = config.formats,\n      timeZone = config.timeZone;\n  var format = options.format;\n\n\n  var onError = config.onError || defaultErrorHandler;\n  var date = new Date(value);\n  var defaults$$1 = _extends({}, timeZone && { timeZone: timeZone }, format && getNamedFormat(formats, 'date', format, onError));\n  var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults$$1);\n\n  try {\n    return state.getDateTimeFormat(locale, filteredOptions).format(date);\n  } catch (e) {\n    onError(createError('Error formatting date.', e));\n  }\n\n  return String(date);\n}\n\nfunction formatTime(config, state, value) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale,\n      formats = config.formats,\n      timeZone = config.timeZone;\n  var format = options.format;\n\n\n  var onError = config.onError || defaultErrorHandler;\n  var date = new Date(value);\n  var defaults$$1 = _extends({}, timeZone && { timeZone: timeZone }, format && getNamedFormat(formats, 'time', format, onError));\n  var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults$$1);\n\n  if (!filteredOptions.hour && !filteredOptions.minute && !filteredOptions.second) {\n    // Add default formatting options if hour, minute, or second isn't defined.\n    filteredOptions = _extends({}, filteredOptions, { hour: 'numeric', minute: 'numeric' });\n  }\n\n  try {\n    return state.getDateTimeFormat(locale, filteredOptions).format(date);\n  } catch (e) {\n    onError(createError('Error formatting time.', e));\n  }\n\n  return String(date);\n}\n\nfunction formatRelative(config, state, value) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale,\n      formats = config.formats;\n  var format = options.format;\n\n\n  var onError = config.onError || defaultErrorHandler;\n  var date = new Date(value);\n  var now = new Date(options.now);\n  var defaults$$1 = format && getNamedFormat(formats, 'relative', format, onError);\n  var filteredOptions = filterProps(options, RELATIVE_FORMAT_OPTIONS, defaults$$1);\n\n  // Capture the current threshold values, then temporarily override them with\n  // specific values just for this render.\n  var oldThresholds = _extends({}, IntlRelativeFormat.thresholds);\n  updateRelativeFormatThresholds(RELATIVE_FORMAT_THRESHOLDS);\n\n  try {\n    return state.getRelativeFormat(locale, filteredOptions).format(date, {\n      now: isFinite(now) ? now : state.now()\n    });\n  } catch (e) {\n    onError(createError('Error formatting relative time.', e));\n  } finally {\n    updateRelativeFormatThresholds(oldThresholds);\n  }\n\n  return String(date);\n}\n\nfunction formatNumber(config, state, value) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale,\n      formats = config.formats;\n  var format = options.format;\n\n\n  var onError = config.onError || defaultErrorHandler;\n  var defaults$$1 = format && getNamedFormat(formats, 'number', format, onError);\n  var filteredOptions = filterProps(options, NUMBER_FORMAT_OPTIONS, defaults$$1);\n\n  try {\n    return state.getNumberFormat(locale, filteredOptions).format(value);\n  } catch (e) {\n    onError(createError('Error formatting number.', e));\n  }\n\n  return String(value);\n}\n\nfunction formatPlural(config, state, value) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale;\n\n\n  var filteredOptions = filterProps(options, PLURAL_FORMAT_OPTIONS);\n  var onError = config.onError || defaultErrorHandler;\n\n  try {\n    return state.getPluralFormat(locale, filteredOptions).format(value);\n  } catch (e) {\n    onError(createError('Error formatting plural.', e));\n  }\n\n  return 'other';\n}\n\nfunction formatMessage(config, state) {\n  var messageDescriptor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var values = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale,\n      formats = config.formats,\n      messages = config.messages,\n      defaultLocale = config.defaultLocale,\n      defaultFormats = config.defaultFormats;\n  var id = messageDescriptor.id,\n      defaultMessage = messageDescriptor.defaultMessage;\n\n  // Produce a better error if the user calls `intl.formatMessage(element)`\n\n  if (process.env.NODE_ENV !== 'production') {\n    invariant(!isValidElement(config), '[React Intl] Don\\'t pass React elements to ' + 'formatMessage(), pass `.props`.');\n  }\n\n  // `id` is a required field of a Message Descriptor.\n  invariant(id, '[React Intl] An `id` must be provided to format a message.');\n\n  var message = messages && messages[id];\n  var hasValues = Object.keys(values).length > 0;\n\n  // Avoid expensive message formatting for simple messages without values. In\n  // development messages will always be formatted in case of missing values.\n  if (!hasValues && process.env.NODE_ENV === 'production') {\n    return message || defaultMessage || id;\n  }\n\n  var formattedMessage = void 0;\n  var onError = config.onError || defaultErrorHandler;\n\n  if (message) {\n    try {\n      var formatter = state.getMessageFormat(message, locale, formats);\n\n      formattedMessage = formatter.format(values);\n    } catch (e) {\n      onError(createError('Error formatting message: \"' + id + '\" for locale: \"' + locale + '\"' + (defaultMessage ? ', using default message as fallback.' : ''), e));\n    }\n  } else {\n    // This prevents warnings from littering the console in development\n    // when no `messages` are passed into the <IntlProvider> for the\n    // default locale, and a default message is in the source.\n    if (!defaultMessage || locale && locale.toLowerCase() !== defaultLocale.toLowerCase()) {\n      onError(createError('Missing message: \"' + id + '\" for locale: \"' + locale + '\"' + (defaultMessage ? ', using default message as fallback.' : '')));\n    }\n  }\n\n  if (!formattedMessage && defaultMessage) {\n    try {\n      var _formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats);\n\n      formattedMessage = _formatter.format(values);\n    } catch (e) {\n      onError(createError('Error formatting the default message for: \"' + id + '\"', e));\n    }\n  }\n\n  if (!formattedMessage) {\n    onError(createError('Cannot format message: \"' + id + '\", ' + ('using message ' + (message || defaultMessage ? 'source' : 'id') + ' as fallback.')));\n  }\n\n  return formattedMessage || message || defaultMessage || id;\n}\n\nfunction formatHTMLMessage(config, state, messageDescriptor) {\n  var rawValues = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n  // Process all the values before they are used when formatting the ICU\n  // Message string. Since the formatted message might be injected via\n  // `innerHTML`, all String-based values need to be HTML-escaped.\n  var escapedValues = Object.keys(rawValues).reduce(function (escaped, name) {\n    var value = rawValues[name];\n    escaped[name] = typeof value === 'string' ? escape(value) : value;\n    return escaped;\n  }, {});\n\n  return formatMessage(config, state, messageDescriptor, escapedValues);\n}\n\n\n\nvar format = Object.freeze({\n\tformatDate: formatDate,\n\tformatTime: formatTime,\n\tformatRelative: formatRelative,\n\tformatNumber: formatNumber,\n\tformatPlural: formatPlural,\n\tformatMessage: formatMessage,\n\tformatHTMLMessage: formatHTMLMessage\n});\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar intlConfigPropNames$1 = Object.keys(intlConfigPropTypes);\nvar intlFormatPropNames = Object.keys(intlFormatPropTypes);\n\n// These are not a static property on the `IntlProvider` class so the intl\n// config values can be inherited from an <IntlProvider> ancestor.\nvar defaultProps = {\n  formats: {},\n  messages: {},\n  timeZone: null,\n  textComponent: 'span',\n\n  defaultLocale: 'en',\n  defaultFormats: {},\n\n  onError: defaultErrorHandler\n};\n\nvar IntlProvider = function (_Component) {\n  inherits(IntlProvider, _Component);\n\n  function IntlProvider(props) {\n    var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    classCallCheck(this, IntlProvider);\n\n    var _this = possibleConstructorReturn(this, (IntlProvider.__proto__ || Object.getPrototypeOf(IntlProvider)).call(this, props, context));\n\n    invariant(typeof Intl !== 'undefined', '[React Intl] The `Intl` APIs must be available in the runtime, ' + 'and do not appear to be built-in. An `Intl` polyfill should be loaded.\\n' + 'See: http://formatjs.io/guides/runtime-environments/');\n\n    var intlContext = context.intl;\n\n    // Used to stabilize time when performing an initial rendering so that\n    // all relative times use the same reference \"now\" time.\n\n    var initialNow = void 0;\n    if (isFinite(props.initialNow)) {\n      initialNow = Number(props.initialNow);\n    } else {\n      // When an `initialNow` isn't provided via `props`, look to see an\n      // <IntlProvider> exists in the ancestry and call its `now()`\n      // function to propagate its value for \"now\".\n      initialNow = intlContext ? intlContext.now() : Date.now();\n    }\n\n    // Creating `Intl*` formatters is expensive. If there's a parent\n    // `<IntlProvider>`, then its formatters will be used. Otherwise, this\n    // memoize the `Intl*` constructors and cache them for the lifecycle of\n    // this IntlProvider instance.\n\n    var _ref = intlContext || {},\n        _ref$formatters = _ref.formatters,\n        formatters = _ref$formatters === undefined ? {\n      getDateTimeFormat: memoizeIntlConstructor(Intl.DateTimeFormat),\n      getNumberFormat: memoizeIntlConstructor(Intl.NumberFormat),\n      getMessageFormat: memoizeIntlConstructor(IntlMessageFormat),\n      getRelativeFormat: memoizeIntlConstructor(IntlRelativeFormat),\n      getPluralFormat: memoizeIntlConstructor(IntlPluralFormat)\n    } : _ref$formatters;\n\n    _this.state = _extends({}, formatters, {\n\n      // Wrapper to provide stable \"now\" time for initial render.\n      now: function now() {\n        return _this._didDisplay ? Date.now() : initialNow;\n      }\n    });\n    return _this;\n  }\n\n  createClass(IntlProvider, [{\n    key: 'getConfig',\n    value: function getConfig() {\n      var intlContext = this.context.intl;\n\n      // Build a whitelisted config object from `props`, defaults, and\n      // `context.intl`, if an <IntlProvider> exists in the ancestry.\n\n      var config = filterProps(this.props, intlConfigPropNames$1, intlContext);\n\n      // Apply default props. This must be applied last after the props have\n      // been resolved and inherited from any <IntlProvider> in the ancestry.\n      // This matches how React resolves `defaultProps`.\n      for (var propName in defaultProps) {\n        if (config[propName] === undefined) {\n          config[propName] = defaultProps[propName];\n        }\n      }\n\n      if (!hasLocaleData(config.locale)) {\n        var _config = config,\n            locale = _config.locale,\n            defaultLocale = _config.defaultLocale,\n            defaultFormats = _config.defaultFormats,\n            onError = _config.onError;\n\n\n        onError(createError('Missing locale data for locale: \"' + locale + '\". ' + ('Using default locale: \"' + defaultLocale + '\" as fallback.')));\n\n        // Since there's no registered locale data for `locale`, this will\n        // fallback to the `defaultLocale` to make sure things can render.\n        // The `messages` are overridden to the `defaultProps` empty object\n        // to maintain referential equality across re-renders. It's assumed\n        // each <FormattedMessage> contains a `defaultMessage` prop.\n        config = _extends({}, config, {\n          locale: defaultLocale,\n          formats: defaultFormats,\n          messages: defaultProps.messages\n        });\n      }\n\n      return config;\n    }\n  }, {\n    key: 'getBoundFormatFns',\n    value: function getBoundFormatFns(config, state) {\n      return intlFormatPropNames.reduce(function (boundFormatFns, name) {\n        boundFormatFns[name] = format[name].bind(null, config, state);\n        return boundFormatFns;\n      }, {});\n    }\n  }, {\n    key: 'getChildContext',\n    value: function getChildContext() {\n      var config = this.getConfig();\n\n      // Bind intl factories and current config to the format functions.\n      var boundFormatFns = this.getBoundFormatFns(config, this.state);\n\n      var _state = this.state,\n          now = _state.now,\n          formatters = objectWithoutProperties(_state, ['now']);\n\n\n      return {\n        intl: _extends({}, config, boundFormatFns, {\n          formatters: formatters,\n          now: now\n        })\n      };\n    }\n  }, {\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this._didDisplay = true;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return Children.only(this.props.children);\n    }\n  }]);\n  return IntlProvider;\n}(Component);\n\nIntlProvider.displayName = 'IntlProvider';\nIntlProvider.contextTypes = {\n  intl: intlShape\n};\nIntlProvider.childContextTypes = {\n  intl: intlShape.isRequired\n};\nprocess.env.NODE_ENV !== \"production\" ? IntlProvider.propTypes = _extends({}, intlConfigPropTypes, {\n  children: PropTypes.element.isRequired,\n  initialNow: PropTypes.any\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedDate = function (_Component) {\n  inherits(FormattedDate, _Component);\n\n  function FormattedDate(props, context) {\n    classCallCheck(this, FormattedDate);\n\n    var _this = possibleConstructorReturn(this, (FormattedDate.__proto__ || Object.getPrototypeOf(FormattedDate)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedDate, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatDate = _context$intl.formatDate,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          value = _props.value,\n          children = _props.children;\n\n\n      var formattedDate = formatDate(value, this.props);\n\n      if (typeof children === 'function') {\n        return children(formattedDate);\n      }\n\n      return React.createElement(\n        Text,\n        null,\n        formattedDate\n      );\n    }\n  }]);\n  return FormattedDate;\n}(Component);\n\nFormattedDate.displayName = 'FormattedDate';\nFormattedDate.contextTypes = {\n  intl: intlShape\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedDate.propTypes = _extends({}, dateTimeFormatPropTypes, {\n  value: PropTypes.any.isRequired,\n  format: PropTypes.string,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedTime = function (_Component) {\n  inherits(FormattedTime, _Component);\n\n  function FormattedTime(props, context) {\n    classCallCheck(this, FormattedTime);\n\n    var _this = possibleConstructorReturn(this, (FormattedTime.__proto__ || Object.getPrototypeOf(FormattedTime)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedTime, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatTime = _context$intl.formatTime,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          value = _props.value,\n          children = _props.children;\n\n\n      var formattedTime = formatTime(value, this.props);\n\n      if (typeof children === 'function') {\n        return children(formattedTime);\n      }\n\n      return React.createElement(\n        Text,\n        null,\n        formattedTime\n      );\n    }\n  }]);\n  return FormattedTime;\n}(Component);\n\nFormattedTime.displayName = 'FormattedTime';\nFormattedTime.contextTypes = {\n  intl: intlShape\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedTime.propTypes = _extends({}, dateTimeFormatPropTypes, {\n  value: PropTypes.any.isRequired,\n  format: PropTypes.string,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar SECOND = 1000;\nvar MINUTE = 1000 * 60;\nvar HOUR = 1000 * 60 * 60;\nvar DAY = 1000 * 60 * 60 * 24;\n\n// The maximum timer delay value is a 32-bit signed integer.\n// See: https://mdn.io/setTimeout\nvar MAX_TIMER_DELAY = 2147483647;\n\nfunction selectUnits(delta) {\n  var absDelta = Math.abs(delta);\n\n  if (absDelta < MINUTE) {\n    return 'second';\n  }\n\n  if (absDelta < HOUR) {\n    return 'minute';\n  }\n\n  if (absDelta < DAY) {\n    return 'hour';\n  }\n\n  // The maximum scheduled delay will be measured in days since the maximum\n  // timer delay is less than the number of milliseconds in 25 days.\n  return 'day';\n}\n\nfunction getUnitDelay(units) {\n  switch (units) {\n    case 'second':\n      return SECOND;\n    case 'minute':\n      return MINUTE;\n    case 'hour':\n      return HOUR;\n    case 'day':\n      return DAY;\n    default:\n      return MAX_TIMER_DELAY;\n  }\n}\n\nfunction isSameDate(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  var aTime = new Date(a).getTime();\n  var bTime = new Date(b).getTime();\n\n  return isFinite(aTime) && isFinite(bTime) && aTime === bTime;\n}\n\nvar FormattedRelative = function (_Component) {\n  inherits(FormattedRelative, _Component);\n\n  function FormattedRelative(props, context) {\n    classCallCheck(this, FormattedRelative);\n\n    var _this = possibleConstructorReturn(this, (FormattedRelative.__proto__ || Object.getPrototypeOf(FormattedRelative)).call(this, props, context));\n\n    invariantIntlContext(context);\n\n    var now = isFinite(props.initialNow) ? Number(props.initialNow) : context.intl.now();\n\n    // `now` is stored as state so that `render()` remains a function of\n    // props + state, instead of accessing `Date.now()` inside `render()`.\n    _this.state = { now: now };\n    return _this;\n  }\n\n  createClass(FormattedRelative, [{\n    key: 'scheduleNextUpdate',\n    value: function scheduleNextUpdate(props, state) {\n      var _this2 = this;\n\n      // Cancel and pending update because we're scheduling a new update.\n      clearTimeout(this._timer);\n\n      var value = props.value,\n          units = props.units,\n          updateInterval = props.updateInterval;\n\n      var time = new Date(value).getTime();\n\n      // If the `updateInterval` is falsy, including `0` or we don't have a\n      // valid date, then auto updates have been turned off, so we bail and\n      // skip scheduling an update.\n      if (!updateInterval || !isFinite(time)) {\n        return;\n      }\n\n      var delta = time - state.now;\n      var unitDelay = getUnitDelay(units || selectUnits(delta));\n      var unitRemainder = Math.abs(delta % unitDelay);\n\n      // We want the largest possible timer delay which will still display\n      // accurate information while reducing unnecessary re-renders. The delay\n      // should be until the next \"interesting\" moment, like a tick from\n      // \"1 minute ago\" to \"2 minutes ago\" when the delta is 120,000ms.\n      var delay = delta < 0 ? Math.max(updateInterval, unitDelay - unitRemainder) : Math.max(updateInterval, unitRemainder);\n\n      this._timer = setTimeout(function () {\n        _this2.setState({ now: _this2.context.intl.now() });\n      }, delay);\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.scheduleNextUpdate(this.props, this.state);\n    }\n  }, {\n    key: 'componentWillReceiveProps',\n    value: function componentWillReceiveProps(_ref) {\n      var nextValue = _ref.value;\n\n      // When the `props.value` date changes, `state.now` needs to be updated,\n      // and the next update can be rescheduled.\n      if (!isSameDate(nextValue, this.props.value)) {\n        this.setState({ now: this.context.intl.now() });\n      }\n    }\n  }, {\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'componentWillUpdate',\n    value: function componentWillUpdate(nextProps, nextState) {\n      this.scheduleNextUpdate(nextProps, nextState);\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      clearTimeout(this._timer);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatRelative = _context$intl.formatRelative,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          value = _props.value,\n          children = _props.children;\n\n\n      var formattedRelative = formatRelative(value, _extends({}, this.props, this.state));\n\n      if (typeof children === 'function') {\n        return children(formattedRelative);\n      }\n\n      return React.createElement(\n        Text,\n        null,\n        formattedRelative\n      );\n    }\n  }]);\n  return FormattedRelative;\n}(Component);\n\nFormattedRelative.displayName = 'FormattedRelative';\nFormattedRelative.contextTypes = {\n  intl: intlShape\n};\nFormattedRelative.defaultProps = {\n  updateInterval: 1000 * 10\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedRelative.propTypes = _extends({}, relativeFormatPropTypes, {\n  value: PropTypes.any.isRequired,\n  format: PropTypes.string,\n  updateInterval: PropTypes.number,\n  initialNow: PropTypes.any,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedNumber = function (_Component) {\n  inherits(FormattedNumber, _Component);\n\n  function FormattedNumber(props, context) {\n    classCallCheck(this, FormattedNumber);\n\n    var _this = possibleConstructorReturn(this, (FormattedNumber.__proto__ || Object.getPrototypeOf(FormattedNumber)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedNumber, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatNumber = _context$intl.formatNumber,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          value = _props.value,\n          children = _props.children;\n\n\n      var formattedNumber = formatNumber(value, this.props);\n\n      if (typeof children === 'function') {\n        return children(formattedNumber);\n      }\n\n      return React.createElement(\n        Text,\n        null,\n        formattedNumber\n      );\n    }\n  }]);\n  return FormattedNumber;\n}(Component);\n\nFormattedNumber.displayName = 'FormattedNumber';\nFormattedNumber.contextTypes = {\n  intl: intlShape\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedNumber.propTypes = _extends({}, numberFormatPropTypes, {\n  value: PropTypes.any.isRequired,\n  format: PropTypes.string,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedPlural = function (_Component) {\n  inherits(FormattedPlural, _Component);\n\n  function FormattedPlural(props, context) {\n    classCallCheck(this, FormattedPlural);\n\n    var _this = possibleConstructorReturn(this, (FormattedPlural.__proto__ || Object.getPrototypeOf(FormattedPlural)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedPlural, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatPlural = _context$intl.formatPlural,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          value = _props.value,\n          other = _props.other,\n          children = _props.children;\n\n\n      var pluralCategory = formatPlural(value, this.props);\n      var formattedPlural = this.props[pluralCategory] || other;\n\n      if (typeof children === 'function') {\n        return children(formattedPlural);\n      }\n\n      return React.createElement(\n        Text,\n        null,\n        formattedPlural\n      );\n    }\n  }]);\n  return FormattedPlural;\n}(Component);\n\nFormattedPlural.displayName = 'FormattedPlural';\nFormattedPlural.contextTypes = {\n  intl: intlShape\n};\nFormattedPlural.defaultProps = {\n  style: 'cardinal'\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedPlural.propTypes = _extends({}, pluralFormatPropTypes, {\n  value: PropTypes.any.isRequired,\n\n  other: PropTypes.node.isRequired,\n  zero: PropTypes.node,\n  one: PropTypes.node,\n  two: PropTypes.node,\n  few: PropTypes.node,\n  many: PropTypes.node,\n\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar defaultFormatMessage = function defaultFormatMessage(descriptor, values) {\n  if (process.env.NODE_ENV !== 'production') {\n    console.error('[React Intl] Could not find required `intl` object. <IntlProvider> needs to exist in the component ancestry. Using default message as fallback.');\n  }\n  return formatMessage({}, { getMessageFormat: memoizeIntlConstructor(IntlMessageFormat) }, descriptor, values);\n};\n\nvar FormattedMessage = function (_Component) {\n  inherits(FormattedMessage, _Component);\n\n  function FormattedMessage(props, context) {\n    classCallCheck(this, FormattedMessage);\n\n    var _this = possibleConstructorReturn(this, (FormattedMessage.__proto__ || Object.getPrototypeOf(FormattedMessage)).call(this, props, context));\n\n    if (!props.defaultMessage) {\n      invariantIntlContext(context);\n    }\n    return _this;\n  }\n\n  createClass(FormattedMessage, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      var values = this.props.values;\n      var nextValues = nextProps.values;\n\n\n      if (!shallowEquals(nextValues, values)) {\n        return true;\n      }\n\n      // Since `values` has already been checked, we know they're not\n      // different, so the current `values` are carried over so the shallow\n      // equals comparison on the other props isn't affected by the `values`.\n      var nextPropsToCheck = _extends({}, nextProps, {\n        values: values\n      });\n\n      for (var _len = arguments.length, next = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        next[_key - 1] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this, nextPropsToCheck].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _ref = this.context.intl || {},\n          _ref$formatMessage = _ref.formatMessage,\n          formatMessage$$1 = _ref$formatMessage === undefined ? defaultFormatMessage : _ref$formatMessage,\n          _ref$textComponent = _ref.textComponent,\n          Text = _ref$textComponent === undefined ? 'span' : _ref$textComponent;\n\n      var _props = this.props,\n          id = _props.id,\n          description = _props.description,\n          defaultMessage = _props.defaultMessage,\n          values = _props.values,\n          _props$tagName = _props.tagName,\n          Component$$1 = _props$tagName === undefined ? Text : _props$tagName,\n          children = _props.children;\n\n\n      var tokenDelimiter = void 0;\n      var tokenizedValues = void 0;\n      var elements = void 0;\n\n      var hasValues = values && Object.keys(values).length > 0;\n      if (hasValues) {\n        // Creates a token with a random UID that should not be guessable or\n        // conflict with other parts of the `message` string.\n        var uid = Math.floor(Math.random() * 0x10000000000).toString(16);\n\n        var generateToken = function () {\n          var counter = 0;\n          return function () {\n            return 'ELEMENT-' + uid + '-' + (counter += 1);\n          };\n        }();\n\n        // Splitting with a delimiter to support IE8. When using a regex\n        // with a capture group IE8 does not include the capture group in\n        // the resulting array.\n        tokenDelimiter = '@__' + uid + '__@';\n        tokenizedValues = {};\n        elements = {};\n\n        // Iterates over the `props` to keep track of any React Element\n        // values so they can be represented by the `token` as a placeholder\n        // when the `message` is formatted. This allows the formatted\n        // message to then be broken-up into parts with references to the\n        // React Elements inserted back in.\n        Object.keys(values).forEach(function (name) {\n          var value = values[name];\n\n          if (isValidElement(value)) {\n            var token = generateToken();\n            tokenizedValues[name] = tokenDelimiter + token + tokenDelimiter;\n            elements[token] = value;\n          } else {\n            tokenizedValues[name] = value;\n          }\n        });\n      }\n\n      var descriptor = { id: id, description: description, defaultMessage: defaultMessage };\n      var formattedMessage = formatMessage$$1(descriptor, tokenizedValues || values);\n\n      var nodes = void 0;\n\n      var hasElements = elements && Object.keys(elements).length > 0;\n      if (hasElements) {\n        // Split the message into parts so the React Element values captured\n        // above can be inserted back into the rendered message. This\n        // approach allows messages to render with React Elements while\n        // keeping React's virtual diffing working properly.\n        nodes = formattedMessage.split(tokenDelimiter).filter(function (part) {\n          return !!part;\n        }).map(function (part) {\n          return elements[part] || part;\n        });\n      } else {\n        nodes = [formattedMessage];\n      }\n\n      if (typeof children === 'function') {\n        return children.apply(undefined, toConsumableArray(nodes));\n      }\n\n      // Needs to use `createElement()` instead of JSX, otherwise React will\n      // warn about a missing `key` prop with rich-text message formatting.\n      return createElement.apply(undefined, [Component$$1, null].concat(toConsumableArray(nodes)));\n    }\n  }]);\n  return FormattedMessage;\n}(Component);\n\nFormattedMessage.displayName = 'FormattedMessage';\nFormattedMessage.contextTypes = {\n  intl: intlShape\n};\nFormattedMessage.defaultProps = {\n  values: {}\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedMessage.propTypes = _extends({}, messageDescriptorPropTypes, {\n  values: PropTypes.object,\n  tagName: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedHTMLMessage = function (_Component) {\n  inherits(FormattedHTMLMessage, _Component);\n\n  function FormattedHTMLMessage(props, context) {\n    classCallCheck(this, FormattedHTMLMessage);\n\n    var _this = possibleConstructorReturn(this, (FormattedHTMLMessage.__proto__ || Object.getPrototypeOf(FormattedHTMLMessage)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedHTMLMessage, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      var values = this.props.values;\n      var nextValues = nextProps.values;\n\n\n      if (!shallowEquals(nextValues, values)) {\n        return true;\n      }\n\n      // Since `values` has already been checked, we know they're not\n      // different, so the current `values` are carried over so the shallow\n      // equals comparison on the other props isn't affected by the `values`.\n      var nextPropsToCheck = _extends({}, nextProps, {\n        values: values\n      });\n\n      for (var _len = arguments.length, next = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        next[_key - 1] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this, nextPropsToCheck].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatHTMLMessage = _context$intl.formatHTMLMessage,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          id = _props.id,\n          description = _props.description,\n          defaultMessage = _props.defaultMessage,\n          rawValues = _props.values,\n          _props$tagName = _props.tagName,\n          Component$$1 = _props$tagName === undefined ? Text : _props$tagName,\n          children = _props.children;\n\n\n      var descriptor = { id: id, description: description, defaultMessage: defaultMessage };\n      var formattedHTMLMessage = formatHTMLMessage(descriptor, rawValues);\n\n      if (typeof children === 'function') {\n        return children(formattedHTMLMessage);\n      }\n\n      // Since the message presumably has HTML in it, we need to set\n      // `innerHTML` in order for it to be rendered and not escaped by React.\n      // To be safe, all string prop values were escaped when formatting the\n      // message. It is assumed that the message is not UGC, and came from the\n      // developer making it more like a template.\n      //\n      // Note: There's a perf impact of using this component since there's no\n      // way for React to do its virtual DOM diffing.\n      var html = { __html: formattedHTMLMessage };\n      return React.createElement(Component$$1, { dangerouslySetInnerHTML: html });\n    }\n  }]);\n  return FormattedHTMLMessage;\n}(Component);\n\nFormattedHTMLMessage.displayName = 'FormattedHTMLMessage';\nFormattedHTMLMessage.contextTypes = {\n  intl: intlShape\n};\nFormattedHTMLMessage.defaultProps = {\n  values: {}\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedHTMLMessage.propTypes = _extends({}, messageDescriptorPropTypes, {\n  values: PropTypes.object,\n  tagName: PropTypes.string,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\naddLocaleData(defaultLocaleData);\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\naddLocaleData(allLocaleData);\n\nexport { addLocaleData, intlShape, injectIntl, defineMessages, IntlProvider, FormattedDate, FormattedTime, FormattedRelative, FormattedNumber, FormattedPlural, FormattedMessage, FormattedHTMLMessage };\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./font-dropdown.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./fixed-tools.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n  var memo;\n  return function memorize() {\n    if (typeof memo === 'undefined') {\n      // Test for IE <= 9 as proposed by Browserhacks\n      // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n      // Tests for existence of standard globals is to allow style-loader\n      // to operate correctly into non-standard environments\n      // @see https://github.com/webpack-contrib/style-loader/issues/177\n      memo = Boolean(window && document && document.all && !window.atob);\n    }\n\n    return memo;\n  };\n}();\n\nvar getTarget = function getTarget() {\n  var memo = {};\n  return function memorize(target) {\n    if (typeof memo[target] === 'undefined') {\n      var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n      if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n        try {\n          // This will throw an exception if access to iframe is blocked\n          // due to cross-origin restrictions\n          styleTarget = styleTarget.contentDocument.head;\n        } catch (e) {\n          // istanbul ignore next\n          styleTarget = null;\n        }\n      }\n\n      memo[target] = styleTarget;\n    }\n\n    return memo[target];\n  };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n  var result = -1;\n\n  for (var i = 0; i < stylesInDom.length; i++) {\n    if (stylesInDom[i].identifier === identifier) {\n      result = i;\n      break;\n    }\n  }\n\n  return result;\n}\n\nfunction modulesToDom(list, options) {\n  var idCountMap = {};\n  var identifiers = [];\n\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i];\n    var id = options.base ? item[0] + options.base : item[0];\n    var count = idCountMap[id] || 0;\n    var identifier = \"\".concat(id, \" \").concat(count);\n    idCountMap[id] = count + 1;\n    var index = getIndexByIdentifier(identifier);\n    var obj = {\n      css: item[1],\n      media: item[2],\n      sourceMap: item[3]\n    };\n\n    if (index !== -1) {\n      stylesInDom[index].references++;\n      stylesInDom[index].updater(obj);\n    } else {\n      stylesInDom.push({\n        identifier: identifier,\n        updater: addStyle(obj, options),\n        references: 1\n      });\n    }\n\n    identifiers.push(identifier);\n  }\n\n  return identifiers;\n}\n\nfunction insertStyleElement(options) {\n  var style = document.createElement('style');\n  var attributes = options.attributes || {};\n\n  if (typeof attributes.nonce === 'undefined') {\n    var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n    if (nonce) {\n      attributes.nonce = nonce;\n    }\n  }\n\n  Object.keys(attributes).forEach(function (key) {\n    style.setAttribute(key, attributes[key]);\n  });\n\n  if (typeof options.insert === 'function') {\n    options.insert(style);\n  } else {\n    var target = getTarget(options.insert || 'head');\n\n    if (!target) {\n      throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n    }\n\n    target.appendChild(style);\n  }\n\n  return style;\n}\n\nfunction removeStyleElement(style) {\n  // istanbul ignore if\n  if (style.parentNode === null) {\n    return false;\n  }\n\n  style.parentNode.removeChild(style);\n}\n/* istanbul ignore next  */\n\n\nvar replaceText = function replaceText() {\n  var textStore = [];\n  return function replace(index, replacement) {\n    textStore[index] = replacement;\n    return textStore.filter(Boolean).join('\\n');\n  };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n  var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n  /* istanbul ignore if  */\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = replaceText(index, css);\n  } else {\n    var cssNode = document.createTextNode(css);\n    var childNodes = style.childNodes;\n\n    if (childNodes[index]) {\n      style.removeChild(childNodes[index]);\n    }\n\n    if (childNodes.length) {\n      style.insertBefore(cssNode, childNodes[index]);\n    } else {\n      style.appendChild(cssNode);\n    }\n  }\n}\n\nfunction applyToTag(style, options, obj) {\n  var css = obj.css;\n  var media = obj.media;\n  var sourceMap = obj.sourceMap;\n\n  if (media) {\n    style.setAttribute('media', media);\n  } else {\n    style.removeAttribute('media');\n  }\n\n  if (sourceMap && typeof btoa !== 'undefined') {\n    css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n  } // For old IE\n\n  /* istanbul ignore if  */\n\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    while (style.firstChild) {\n      style.removeChild(style.firstChild);\n    }\n\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n  var style;\n  var update;\n  var remove;\n\n  if (options.singleton) {\n    var styleIndex = singletonCounter++;\n    style = singleton || (singleton = insertStyleElement(options));\n    update = applyToSingletonTag.bind(null, style, styleIndex, false);\n    remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n  } else {\n    style = insertStyleElement(options);\n    update = applyToTag.bind(null, style, options);\n\n    remove = function remove() {\n      removeStyleElement(style);\n    };\n  }\n\n  update(obj);\n  return function updateStyle(newObj) {\n    if (newObj) {\n      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n        return;\n      }\n\n      update(obj = newObj);\n    } else {\n      remove();\n    }\n  };\n}\n\nmodule.exports = function (list, options) {\n  options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n  // tags it will allow on a page\n\n  if (!options.singleton && typeof options.singleton !== 'boolean') {\n    options.singleton = isOldIE();\n  }\n\n  list = list || [];\n  var lastIdentifiers = modulesToDom(list, options);\n  return function update(newList) {\n    newList = newList || [];\n\n    if (Object.prototype.toString.call(newList) !== '[object Array]') {\n      return;\n    }\n\n    for (var i = 0; i < lastIdentifiers.length; i++) {\n      var identifier = lastIdentifiers[i];\n      var index = getIndexByIdentifier(identifier);\n      stylesInDom[index].references--;\n    }\n\n    var newLastIdentifiers = modulesToDom(newList, options);\n\n    for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n      var _identifier = lastIdentifiers[_i];\n\n      var _index = getIndexByIdentifier(_identifier);\n\n      if (stylesInDom[_index].references === 0) {\n        stylesInDom[_index].updater();\n\n        stylesInDom.splice(_index, 1);\n      }\n    }\n\n    lastIdentifiers = newLastIdentifiers;\n  };\n};","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery, dedupe) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var i = 0; i < this.length; i++) {\n        // eslint-disable-next-line prefer-destructuring\n        var id = this[i][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = [].concat(modules[_i]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if (mediaQuery) {\n        if (!item[2]) {\n          item[2] = mediaQuery;\n        } else {\n          item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./mode-tools.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\"use strict\";\n\n/**\n * Constructs an enumeration with keys equal to their value.\n *\n * For example:\n *\n *   var COLORS = keyMirror({blue: null, red: null});\n *   var myColor = COLORS.blue;\n *   var isColorValid = !!COLORS[myColor];\n *\n * The last line could not be performed if the values of the generated enum were\n * not equal to their keys.\n *\n *   Input:  {key1: val1, key2: val2}\n *   Output: {key1: key1, key2: key2}\n *\n * @param {object} obj\n * @return {object}\n */\nvar keyMirror = function(obj) {\n  var ret = {};\n  var key;\n  if (!(obj instanceof Object && !Array.isArray(obj))) {\n    throw new Error('keyMirror(...): Argument must be an object.');\n  }\n  for (key in obj) {\n    if (!obj.hasOwnProperty(key)) {\n      continue;\n    }\n    ret[key] = key;\n  }\n  return ret;\n};\n\nmodule.exports = keyMirror;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import isPlainObject from 'lodash-es/isPlainObject';\nimport $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nexport var ActionTypes = {\n  INIT: '@@redux/INIT'\n\n  /**\n   * Creates a Redux store that holds the state tree.\n   * The only way to change the data in the store is to call `dispatch()` on it.\n   *\n   * There should only be a single store in your app. To specify how different\n   * parts of the state tree respond to actions, you may combine several reducers\n   * into a single reducer function by using `combineReducers`.\n   *\n   * @param {Function} reducer A function that returns the next state tree, given\n   * the current state tree and the action to handle.\n   *\n   * @param {any} [preloadedState] The initial state. You may optionally specify it\n   * to hydrate the state from the server in universal apps, or to restore a\n   * previously serialized user session.\n   * If you use `combineReducers` to produce the root reducer function, this must be\n   * an object with the same shape as `combineReducers` keys.\n   *\n   * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n   * to enhance the store with third-party capabilities such as middleware,\n   * time travel, persistence, etc. The only store enhancer that ships with Redux\n   * is `applyMiddleware()`.\n   *\n   * @returns {Store} A Redux store that lets you read the state, dispatch actions\n   * and subscribe to changes.\n   */\n};export default function createStore(reducer, preloadedState, enhancer) {\n  var _ref2;\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = preloadedState;\n    preloadedState = undefined;\n  }\n\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error('Expected the enhancer to be a function.');\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error('Expected the reducer to be a function.');\n  }\n\n  var currentReducer = reducer;\n  var currentState = preloadedState;\n  var currentListeners = [];\n  var nextListeners = currentListeners;\n  var isDispatching = false;\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice();\n    }\n  }\n\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n  function getState() {\n    return currentState;\n  }\n\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n  function subscribe(listener) {\n    if (typeof listener !== 'function') {\n      throw new Error('Expected listener to be a function.');\n    }\n\n    var isSubscribed = true;\n\n    ensureCanMutateNextListeners();\n    nextListeners.push(listener);\n\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n\n      isSubscribed = false;\n\n      ensureCanMutateNextListeners();\n      var index = nextListeners.indexOf(listener);\n      nextListeners.splice(index, 1);\n    };\n  }\n\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n    }\n\n    if (isDispatching) {\n      throw new Error('Reducers may not dispatch actions.');\n    }\n\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n\n    var listeners = currentListeners = nextListeners;\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener();\n    }\n\n    return action;\n  }\n\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== 'function') {\n      throw new Error('Expected the nextReducer to be a function.');\n    }\n\n    currentReducer = nextReducer;\n    dispatch({ type: ActionTypes.INIT });\n  }\n\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n  function observable() {\n    var _ref;\n\n    var outerSubscribe = subscribe;\n    return _ref = {\n      /**\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe: function subscribe(observer) {\n        if (typeof observer !== 'object') {\n          throw new TypeError('Expected the observer to be an object.');\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState());\n          }\n        }\n\n        observeState();\n        var unsubscribe = outerSubscribe(observeState);\n        return { unsubscribe: unsubscribe };\n      }\n    }, _ref[$$observable] = function () {\n      return this;\n    }, _ref;\n  }\n\n  // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n  dispatch({ type: ActionTypes.INIT });\n\n  return _ref2 = {\n    dispatch: dispatch,\n    subscribe: subscribe,\n    getState: getState,\n    replaceReducer: replaceReducer\n  }, _ref2[$$observable] = observable, _ref2;\n}","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n    /* eslint-disable no-empty */\n  } catch (e) {}\n  /* eslint-enable no-empty */\n}","import { ActionTypes } from './createStore';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport warning from './utils/warning';\n\nfunction getUndefinedStateErrorMessage(key, action) {\n  var actionType = action && action.type;\n  var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n  return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  var reducerKeys = Object.keys(reducers);\n  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n\n  if (!isPlainObject(inputState)) {\n    return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n  }\n\n  var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n  });\n\n  unexpectedKeys.forEach(function (key) {\n    unexpectedKeyCache[key] = true;\n  });\n\n  if (unexpectedKeys.length > 0) {\n    return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(function (key) {\n    var reducer = reducers[key];\n    var initialState = reducer(undefined, { type: ActionTypes.INIT });\n\n    if (typeof initialState === 'undefined') {\n      throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');\n    }\n\n    var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n    if (typeof reducer(undefined, { type: type }) === 'undefined') {\n      throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');\n    }\n  });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers) {\n  var reducerKeys = Object.keys(reducers);\n  var finalReducers = {};\n  for (var i = 0; i < reducerKeys.length; i++) {\n    var key = reducerKeys[i];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof reducers[key] === 'undefined') {\n        warning('No reducer provided for key \"' + key + '\"');\n      }\n    }\n\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n  var finalReducerKeys = Object.keys(finalReducers);\n\n  var unexpectedKeyCache = void 0;\n  if (process.env.NODE_ENV !== 'production') {\n    unexpectedKeyCache = {};\n  }\n\n  var shapeAssertionError = void 0;\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n\n  return function combination() {\n    var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var action = arguments[1];\n\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n\n    var hasChanged = false;\n    var nextState = {};\n    for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n      var _key = finalReducerKeys[_i];\n      var reducer = finalReducers[_key];\n      var previousStateForKey = state[_key];\n      var nextStateForKey = reducer(previousStateForKey, action);\n      if (typeof nextStateForKey === 'undefined') {\n        var errorMessage = getUndefinedStateErrorMessage(_key, action);\n        throw new Error(errorMessage);\n      }\n      nextState[_key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n    return hasChanged ? nextState : state;\n  };\n}","function bindActionCreator(actionCreator, dispatch) {\n  return function () {\n    return dispatch(actionCreator.apply(undefined, arguments));\n  };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nexport default function bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n  }\n\n  var keys = Object.keys(actionCreators);\n  var boundActionCreators = {};\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    var actionCreator = actionCreators[key];\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n  return boundActionCreators;\n}","/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nexport default function compose() {\n  for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(undefined, arguments));\n    };\n  });\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport compose from './compose';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nexport default function applyMiddleware() {\n  for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  return function (createStore) {\n    return function (reducer, preloadedState, enhancer) {\n      var store = createStore(reducer, preloadedState, enhancer);\n      var _dispatch = store.dispatch;\n      var chain = [];\n\n      var middlewareAPI = {\n        getState: store.getState,\n        dispatch: function dispatch(action) {\n          return _dispatch(action);\n        }\n      };\n      chain = middlewares.map(function (middleware) {\n        return middleware(middlewareAPI);\n      });\n      _dispatch = compose.apply(undefined, chain)(store.dispatch);\n\n      return _extends({}, store, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}","import createStore from './createStore';\nimport combineReducers from './combineReducers';\nimport bindActionCreators from './bindActionCreators';\nimport applyMiddleware from './applyMiddleware';\nimport compose from './compose';\nimport warning from './utils/warning';\n\n/*\n* This is a dummy function to check if the function name has been altered by minification.\n* If the function has been minified and NODE_ENV !== 'production', warn the user.\n*/\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n  warning('You are currently using minified code outside of NODE_ENV === \\'production\\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose };","var convert = require('color-convert');\n\nmodule.exports = function (cstr) {\n    var m, conv, parts, alpha;\n    if (m = /^((?:rgb|hs[lv]|cmyk|xyz|lab)a?)\\s*\\(([^\\)]*)\\)/.exec(cstr)) {\n        var name = m[1];\n        var base = name.replace(/a$/, '');\n        var size = base === 'cmyk' ? 4 : 3;\n        conv = convert[base];\n        \n        parts = m[2].replace(/^\\s+|\\s+$/g, '')\n            .split(/\\s*,\\s*/)\n            .map(function (x, i) {\n                if (/%$/.test(x) && i === size) {\n                    return parseFloat(x) / 100;\n                }\n                else if (/%$/.test(x)) {\n                    return parseFloat(x);\n                }\n                return parseFloat(x);\n            })\n        ;\n        if (name === base) parts.push(1);\n        alpha = parts[size] === undefined ? 1 : parts[size];\n        parts = parts.slice(0, size);\n        \n        conv[base] = function () { return parts };\n    }\n    else if (/^#[A-Fa-f0-9]+$/.test(cstr)) {\n        var base = cstr.replace(/^#/,'');\n        var size = base.length;\n        conv = convert.rgb;\n        parts = base.split(size === 3 ? /(.)/ : /(..)/);\n        parts = parts.filter(Boolean)\n            .map(function (x) {\n                if (size === 3) {\n                    return parseInt(x + x, 16);\n                }\n                else {\n                    return parseInt(x, 16)\n                }\n            })\n        ;\n        alpha = 1;\n        conv.rgb = function () { return parts };\n        if (!parts[0]) parts[0] = 0;\n        if (!parts[1]) parts[1] = 0;\n        if (!parts[2]) parts[2] = 0;\n    }\n    else {\n        conv = convert.keyword;\n        conv.keyword = function () { return cstr };\n        parts = cstr;\n        alpha = 1;\n    }\n    \n    var res = {\n        rgb: undefined,\n        hsl: undefined,\n        hsv: undefined,\n        cmyk: undefined,\n        keyword: undefined,\n        hex: undefined\n    };\n    try { res.rgb = conv.rgb(parts) } catch (e) {}\n    try { res.hsl = conv.hsl(parts) } catch (e) {}\n    try { res.hsv = conv.hsv(parts) } catch (e) {}\n    try { res.cmyk = conv.cmyk(parts) } catch (e) {}\n    try { res.keyword = conv.keyword(parts) } catch (e) {}\n    \n    if (res.rgb) res.hex = '#' + res.rgb.map(function (x) {\n        var s = x.toString(16);\n        if (s.length === 1) return '0' + s;\n        return s;\n    }).join('');\n    \n    if (res.rgb) res.rgba = res.rgb.concat(alpha);\n    if (res.hsl) res.hsla = res.hsl.concat(alpha);\n    if (res.hsv) res.hsva = res.hsv.concat(alpha);\n    if (res.cmyk) res.cmyka = res.cmyk.concat(alpha);\n    \n    return res;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n","var microee = require('microee');\n\n// Implements a subset of Node's stream.Transform - in a cross-platform manner.\nfunction Transform() {}\n\nmicroee.mixin(Transform);\n\n// The write() signature is different from Node's\n// --> makes it much easier to work with objects in logs.\n// One of the lessons from v1 was that it's better to target\n// a good browser rather than the lowest common denominator\n// internally.\n// If you want to use external streams, pipe() to ./stringify.js first.\nTransform.prototype.write = function(name, level, args) {\n  this.emit('item', name, level, args);\n};\n\nTransform.prototype.end = function() {\n  this.emit('end');\n  this.removeAllListeners();\n};\n\nTransform.prototype.pipe = function(dest) {\n  var s = this;\n  // prevent double piping\n  s.emit('unpipe', dest);\n  // tell the dest that it's being piped to\n  dest.emit('pipe', s);\n\n  function onItem() {\n    dest.write.apply(dest, Array.prototype.slice.call(arguments));\n  }\n  function onEnd() { !dest._isStdio && dest.end(); }\n\n  s.on('item', onItem);\n  s.on('end', onEnd);\n\n  s.when('unpipe', function(from) {\n    var match = (from === dest) || typeof from == 'undefined';\n    if(match) {\n      s.removeListener('item', onItem);\n      s.removeListener('end', onEnd);\n      dest.emit('unpipe');\n    }\n    return match;\n  });\n\n  return dest;\n};\n\nTransform.prototype.unpipe = function(from) {\n  this.emit('unpipe', from);\n  return this;\n};\n\nTransform.prototype.format = function(dest) {\n  throw new Error([\n    'Warning: .format() is deprecated in Minilog v2! Use .pipe() instead. For example:',\n    'var Minilog = require(\\'minilog\\');',\n    'Minilog',\n    '  .pipe(Minilog.backends.console.formatClean)',\n    '  .pipe(Minilog.backends.console);'].join('\\n'));\n};\n\nTransform.mixin = function(dest) {\n  var o = Transform.prototype, k;\n  for (k in o) {\n    o.hasOwnProperty(k) && (dest.prototype[k] = o[k]);\n  }\n};\n\nmodule.exports = Transform;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    symbolTag = '[object Symbol]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array ? array.length : 0;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  if (value !== value) {\n    return baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    getPrototype = overArg(Object.getPrototypeOf, Object),\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, props) {\n  object = Object(object);\n  return basePickBy(object, props, function(value, key) {\n    return key in object;\n  });\n}\n\n/**\n * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick from.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, props, predicate) {\n  var index = -1,\n      length = props.length,\n      result = {};\n\n  while (++index < length) {\n    var key = props[index],\n        value = object[key];\n\n    if (predicate(value, key)) {\n      result[key] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = array;\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Creates an array of the own and inherited enumerable symbol properties\n * of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable string keyed properties of `object` that are\n * not omitted.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [props] The property identifiers to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = baseRest(function(object, props) {\n  if (object == null) {\n    return {};\n  }\n  props = arrayMap(baseFlatten(props, 1), toKey);\n  return basePick(object, baseDifference(getAllKeysIn(object), props));\n});\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = omit;\n","/* jshint node:true */\n\n'use strict';\n\nvar IntlMessageFormat = require('./lib/main')['default'];\n\n// Add all locale data to `IntlMessageFormat`. This module will be ignored when\n// bundling for the browser with Browserify/Webpack.\nrequire('./lib/locales');\n\n// Re-export `IntlMessageFormat` as the CommonJS default exports with all the\n// locale data registered, and with English set as the default locale. Define\n// the `default` prop for use with other compiled ES6 Modules.\nexports = module.exports = IntlMessageFormat;\nexports['default'] = exports;\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./scrollable-canvas.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./color-button.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../node_modules/postcss-loader/src/index.js??postcss!./playground.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eno-fill%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-linecap='square'%3E %3Cg id='no-fill' stroke='%23FF661A' stroke-width='2'%3E %3Cpath d='M3,17 L17,3' id='Line'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","/* jshint node:true */\n\n'use strict';\n\nvar IntlRelativeFormat = require('./lib/main')['default'];\n\n// Add all locale data to `IntlRelativeFormat`. This module will be ignored when\n// bundling for the browser with Browserify/Webpack.\nrequire('./lib/locales');\n\n// Re-export `IntlRelativeFormat` as the CommonJS default exports with all the\n// locale data registered, and with English set as the default locale. Define\n// the `default` prop for use with other compiled ES6 Modules.\nexports = module.exports = IntlRelativeFormat;\nexports['default'] = exports;\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./dropdown.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"IntlProvider\", {\n  enumerable: true,\n  get: function get() {\n    return _IntlProvider.default;\n  }\n});\nObject.defineProperty(exports, \"Provider\", {\n  enumerable: true,\n  get: function get() {\n    return _Provider.default;\n  }\n});\nexports.initialState = exports.UPDATE = void 0;\nexports.intlReducer = intlReducer;\nexports.updateIntl = void 0;\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _IntlProvider = _interopRequireDefault(require(\"./components/IntlProvider\"));\nvar _Provider = _interopRequireDefault(require(\"./components/Provider\"));\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar UPDATE = exports.UPDATE = '@@intl/UPDATE';\nvar updateIntl = exports.updateIntl = function updateIntl(_ref) {\n  var locale = _ref.locale,\n    formats = _ref.formats,\n    messages = _ref.messages;\n  return {\n    type: UPDATE,\n    payload: {\n      locale: locale,\n      formats: formats,\n      messages: messages\n    }\n  };\n};\nvar initialState = exports.initialState = {\n  locale: 'en',\n  messages: {}\n};\nfunction intlReducer() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n  if (action.type !== UPDATE) {\n    return state;\n  }\n  return _objectSpread(_objectSpread({}, state), action.payload);\n}","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Emixed-fill%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0.75'%3E %3Cg id='mixed-fill'%3E %3Cg id='mixed-fill-icon' transform='translate(2.000000, 2.500000)'%3E %3Ccircle id='blue' fill='%234C97FF' cx='4.5' cy='10.5' r='4.5'%3E%3C/circle%3E %3Ccircle id='red' fill='%23FF5500' cx='8' cy='4.5' r='4.5'%3E%3C/circle%3E %3Ccircle id='yellow' fill='%23FFBF00' cx='11.4099998' cy='10.5' r='4.5'%3E%3C/circle%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","!function(root, factory) {\n    \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory(require(\"react\")) : \"function\" == typeof define && define.amd ? define([ \"react\" ], factory) : \"object\" == typeof exports ? exports.MediaQuery = factory(require(\"react\")) : root.MediaQuery = factory(root.react);\n}(\"undefined\" != typeof self ? self : this, function(__WEBPACK_EXTERNAL_MODULE_5__) {\n    return function(modules) {\n        function __webpack_require__(moduleId) {\n            if (installedModules[moduleId]) return installedModules[moduleId].exports;\n            var module = installedModules[moduleId] = {\n                i: moduleId,\n                l: !1,\n                exports: {}\n            };\n            return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), \n            module.l = !0, module.exports;\n        }\n        var installedModules = {};\n        return __webpack_require__.m = modules, __webpack_require__.c = installedModules, \n        __webpack_require__.d = function(exports, name, getter) {\n            __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n                configurable: !1,\n                enumerable: !0,\n                get: getter\n            });\n        }, __webpack_require__.n = function(module) {\n            var getter = module && module.__esModule ? function() {\n                return module.default;\n            } : function() {\n                return module;\n            };\n            return __webpack_require__.d(getter, \"a\", getter), getter;\n        }, __webpack_require__.o = function(object, property) {\n            return Object.prototype.hasOwnProperty.call(object, property);\n        }, __webpack_require__.p = \"\", __webpack_require__(__webpack_require__.s = 4);\n    }([ function(module, exports, __webpack_require__) {\n        var REACT_ELEMENT_TYPE = \"function\" == typeof Symbol && Symbol.for && Symbol.for(\"react.element\") || 60103, isValidElement = function(object) {\n            return \"object\" == typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;\n        };\n        module.exports = __webpack_require__(6)(isValidElement, !0);\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        module.exports = \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function hyphenateStyleName(string) {\n            return string in cache ? cache[string] : cache[string] = string.replace(uppercasePattern, \"-$&\").toLowerCase().replace(msPattern, \"-ms-\");\n        }\n        var uppercasePattern = /[A-Z]/g, msPattern = /^ms-/, cache = {};\n        module.exports = hyphenateStyleName;\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        Object.defineProperty(exports, \"__esModule\", {\n            value: !0\n        });\n        var _extends = Object.assign || function(target) {\n            for (var i = 1; i < arguments.length; i++) {\n                var source = arguments[i];\n                for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n            }\n            return target;\n        }, _propTypes = __webpack_require__(0), _propTypes2 = function(obj) {\n            return obj && obj.__esModule ? obj : {\n                default: obj\n            };\n        }(_propTypes), stringOrNumber = _propTypes2.default.oneOfType([ _propTypes2.default.string, _propTypes2.default.number ]), matchers = {\n            orientation: _propTypes2.default.oneOf([ \"portrait\", \"landscape\" ]),\n            scan: _propTypes2.default.oneOf([ \"progressive\", \"interlace\" ]),\n            aspectRatio: _propTypes2.default.string,\n            deviceAspectRatio: _propTypes2.default.string,\n            height: stringOrNumber,\n            deviceHeight: stringOrNumber,\n            width: stringOrNumber,\n            deviceWidth: stringOrNumber,\n            color: _propTypes2.default.bool,\n            colorIndex: _propTypes2.default.bool,\n            monochrome: _propTypes2.default.bool,\n            resolution: stringOrNumber\n        }, features = _extends({\n            minAspectRatio: _propTypes2.default.string,\n            maxAspectRatio: _propTypes2.default.string,\n            minDeviceAspectRatio: _propTypes2.default.string,\n            maxDeviceAspectRatio: _propTypes2.default.string,\n            minHeight: stringOrNumber,\n            maxHeight: stringOrNumber,\n            minDeviceHeight: stringOrNumber,\n            maxDeviceHeight: stringOrNumber,\n            minWidth: stringOrNumber,\n            maxWidth: stringOrNumber,\n            minDeviceWidth: stringOrNumber,\n            maxDeviceWidth: stringOrNumber,\n            minColor: _propTypes2.default.number,\n            maxColor: _propTypes2.default.number,\n            minColorIndex: _propTypes2.default.number,\n            maxColorIndex: _propTypes2.default.number,\n            minMonochrome: _propTypes2.default.number,\n            maxMonochrome: _propTypes2.default.number,\n            minResolution: stringOrNumber,\n            maxResolution: stringOrNumber\n        }, matchers), types = {\n            all: _propTypes2.default.bool,\n            grid: _propTypes2.default.bool,\n            aural: _propTypes2.default.bool,\n            braille: _propTypes2.default.bool,\n            handheld: _propTypes2.default.bool,\n            print: _propTypes2.default.bool,\n            projection: _propTypes2.default.bool,\n            screen: _propTypes2.default.bool,\n            tty: _propTypes2.default.bool,\n            tv: _propTypes2.default.bool,\n            embossed: _propTypes2.default.bool\n        }, all = _extends({}, types, features);\n        matchers.type = Object.keys(types), exports.default = {\n            all: all,\n            types: types,\n            matchers: matchers,\n            features: features\n        }, module.exports = exports.default;\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function _interopRequireDefault(obj) {\n            return obj && obj.__esModule ? obj : {\n                default: obj\n            };\n        }\n        function _classCallCheck(instance, Constructor) {\n            if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n        }\n        function _possibleConstructorReturn(self, call) {\n            if (!self) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n            return !call || \"object\" != typeof call && \"function\" != typeof call ? self : call;\n        }\n        function _inherits(subClass, superClass) {\n            if (\"function\" != typeof superClass && null !== superClass) throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n            subClass.prototype = Object.create(superClass && superClass.prototype, {\n                constructor: {\n                    value: subClass,\n                    enumerable: !1,\n                    writable: !0,\n                    configurable: !0\n                }\n            }), superClass && (Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass);\n        }\n        function omit(object, keys) {\n            var newObject = _extends({}, object);\n            return keys.forEach(function(key) {\n                return delete newObject[key];\n            }), newObject;\n        }\n        Object.defineProperty(exports, \"__esModule\", {\n            value: !0\n        }), exports.toQuery = exports.default = void 0;\n        var _createClass = function() {\n            function defineProperties(target, props) {\n                for (var i = 0; i < props.length; i++) {\n                    var descriptor = props[i];\n                    descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, \n                    \"value\" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor);\n                }\n            }\n            return function(Constructor, protoProps, staticProps) {\n                return protoProps && defineProperties(Constructor.prototype, protoProps), staticProps && defineProperties(Constructor, staticProps), \n                Constructor;\n            };\n        }(), _extends = Object.assign || function(target) {\n            for (var i = 1; i < arguments.length; i++) {\n                var source = arguments[i];\n                for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n            }\n            return target;\n        }, _react = __webpack_require__(5), _react2 = _interopRequireDefault(_react), _propTypes = __webpack_require__(0), _propTypes2 = _interopRequireDefault(_propTypes), _matchmediaquery = __webpack_require__(9), _matchmediaquery2 = _interopRequireDefault(_matchmediaquery), _hyphenateStyleName = __webpack_require__(2), _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName), _mediaQuery = __webpack_require__(3), _mediaQuery2 = _interopRequireDefault(_mediaQuery), _toQuery = __webpack_require__(11), _toQuery2 = _interopRequireDefault(_toQuery), defaultTypes = {\n            component: _propTypes2.default.node,\n            query: _propTypes2.default.string,\n            values: _propTypes2.default.shape(_mediaQuery2.default.matchers),\n            children: _propTypes2.default.oneOfType([ _propTypes2.default.node, _propTypes2.default.func ]),\n            onChange: _propTypes2.default.func,\n            onBeforeChange: _propTypes2.default.func\n        }, mediaKeys = Object.keys(_mediaQuery2.default.all), excludedQueryKeys = Object.keys(defaultTypes), excludedPropKeys = excludedQueryKeys.concat(mediaKeys), MediaQuery = function(_React$Component) {\n            function MediaQuery() {\n                var _ref, _temp, _this, _ret;\n                _classCallCheck(this, MediaQuery);\n                for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];\n                return _temp = _this = _possibleConstructorReturn(this, (_ref = MediaQuery.__proto__ || Object.getPrototypeOf(MediaQuery)).call.apply(_ref, [ this ].concat(args))), \n                _this.state = {\n                    matches: !1\n                }, _this.updateMatches = function() {\n                    _this._mql.matches !== _this.state.matches && _this.setState({\n                        matches: _this._mql.matches\n                    });\n                }, _this.removeMql = function() {\n                    _this._mql && (_this._mql.removeListener(_this.updateMatches), _this._mql.dispose());\n                }, _ret = _temp, _possibleConstructorReturn(_this, _ret);\n            }\n            return _inherits(MediaQuery, _React$Component), _createClass(MediaQuery, [ {\n                key: \"componentWillMount\",\n                value: function() {\n                    this.updateQuery(this.props);\n                }\n            }, {\n                key: \"componentWillReceiveProps\",\n                value: function(nextProps) {\n                    this.updateQuery(nextProps);\n                }\n            }, {\n                key: \"updateQuery\",\n                value: function(props) {\n                    var values = void 0, forceStatic = !1;\n                    if (props.query ? this.query = props.query : this.query = (0, _toQuery2.default)(omit(props, excludedQueryKeys)), \n                    !this.query) throw new Error(\"Invalid or missing MediaQuery!\");\n                    props.values && (values = Object.keys(props.values).reduce(function(result, key) {\n                        return result[(0, _hyphenateStyleName2.default)(key)] = props.values[key], result;\n                    }, {}), 0 !== Object.keys(values).length && (forceStatic = !0)), this.removeMql(), \n                    this._mql = (0, _matchmediaquery2.default)(this.query, values, forceStatic), this._mql.addListener(this.updateMatches), \n                    this.updateMatches();\n                }\n            }, {\n                key: \"componentWillUpdate\",\n                value: function(_, nextState) {\n                    this.props.onBeforeChange && this.state.matches !== nextState.matches && this.props.onBeforeChange(this.state.matches);\n                }\n            }, {\n                key: \"componentDidUpdate\",\n                value: function(_, prevState) {\n                    this.props.onChange && prevState.matches !== this.state.matches && this.props.onChange(this.state.matches);\n                }\n            }, {\n                key: \"componentWillUnmount\",\n                value: function() {\n                    this.removeMql();\n                }\n            }, {\n                key: \"render\",\n                value: function() {\n                    if (\"function\" == typeof this.props.children) return this.props.children(this.state.matches);\n                    if (!1 === this.state.matches) return null;\n                    var props = omit(this.props, excludedPropKeys), hasMergeProps = Object.keys(props).length > 0, childrenCount = _react2.default.Children.count(this.props.children);\n                    return this.props.component || null == this.props.children || hasMergeProps && childrenCount > 1 ? _react2.default.createElement(this.props.component || \"div\", props, this.props.children) : hasMergeProps ? _react2.default.cloneElement(this.props.children, props) : childrenCount ? this.props.children : null;\n                }\n            } ]), MediaQuery;\n        }(_react2.default.Component);\n        MediaQuery.displayName = \"MediaQuery\", MediaQuery.defaultProps = {\n            values: {}\n        }, exports.default = MediaQuery, exports.toQuery = _toQuery2.default;\n    }, function(module, exports) {\n        module.exports = __WEBPACK_EXTERNAL_MODULE_5__;\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function emptyFunctionThatReturnsNull() {\n            return null;\n        }\n        var assign = __webpack_require__(7), ReactPropTypesSecret = __webpack_require__(1), checkPropTypes = __webpack_require__(8), printWarning = function() {};\n        printWarning = function(text) {\n            var message = \"Warning: \" + text;\n            \"undefined\" != typeof console && console.error(message);\n            try {\n                throw new Error(message);\n            } catch (x) {}\n        }, module.exports = function(isValidElement, throwOnDirectAccess) {\n            function getIteratorFn(maybeIterable) {\n                var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n                if (\"function\" == typeof iteratorFn) return iteratorFn;\n            }\n            function is(x, y) {\n                return x === y ? 0 !== x || 1 / x == 1 / y : x !== x && y !== y;\n            }\n            function PropTypeError(message) {\n                this.message = message, this.stack = \"\";\n            }\n            function createChainableTypeChecker(validate) {\n                function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n                    if (componentName = componentName || ANONYMOUS, propFullName = propFullName || propName, \n                    secret !== ReactPropTypesSecret) {\n                        if (throwOnDirectAccess) {\n                            var err = new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types\");\n                            throw err.name = \"Invariant Violation\", err;\n                        }\n                        if (\"undefined\" != typeof console) {\n                            var cacheKey = componentName + \":\" + propName;\n                            !manualPropTypeCallCache[cacheKey] && manualPropTypeWarningCount < 3 && (printWarning(\"You are manually calling a React.PropTypes validation function for the `\" + propFullName + \"` prop on `\" + componentName + \"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.\"), \n                            manualPropTypeCallCache[cacheKey] = !0, manualPropTypeWarningCount++);\n                        }\n                    }\n                    return null == props[propName] ? isRequired ? new PropTypeError(null === props[propName] ? \"The \" + location + \" `\" + propFullName + \"` is marked as required in `\" + componentName + \"`, but its value is `null`.\" : \"The \" + location + \" `\" + propFullName + \"` is marked as required in `\" + componentName + \"`, but its value is `undefined`.\") : null : validate(props, propName, componentName, location, propFullName);\n                }\n                var manualPropTypeCallCache = {}, manualPropTypeWarningCount = 0, chainedCheckType = checkType.bind(null, !1);\n                return chainedCheckType.isRequired = checkType.bind(null, !0), chainedCheckType;\n            }\n            function createPrimitiveTypeChecker(expectedType) {\n                function validate(props, propName, componentName, location, propFullName, secret) {\n                    var propValue = props[propName];\n                    if (getPropType(propValue) !== expectedType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPreciseType(propValue) + \"` supplied to `\" + componentName + \"`, expected `\" + expectedType + \"`.\");\n                    return null;\n                }\n                return createChainableTypeChecker(validate);\n            }\n            function createArrayOfTypeChecker(typeChecker) {\n                function validate(props, propName, componentName, location, propFullName) {\n                    if (\"function\" != typeof typeChecker) return new PropTypeError(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has invalid PropType notation inside arrayOf.\");\n                    var propValue = props[propName];\n                    if (!Array.isArray(propValue)) {\n                        return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPropType(propValue) + \"` supplied to `\" + componentName + \"`, expected an array.\");\n                    }\n                    for (var i = 0; i < propValue.length; i++) {\n                        var error = typeChecker(propValue, i, componentName, location, propFullName + \"[\" + i + \"]\", ReactPropTypesSecret);\n                        if (error instanceof Error) return error;\n                    }\n                    return null;\n                }\n                return createChainableTypeChecker(validate);\n            }\n            function createInstanceTypeChecker(expectedClass) {\n                function validate(props, propName, componentName, location, propFullName) {\n                    if (!(props[propName] instanceof expectedClass)) {\n                        var expectedClassName = expectedClass.name || ANONYMOUS;\n                        return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getClassName(props[propName]) + \"` supplied to `\" + componentName + \"`, expected instance of `\" + expectedClassName + \"`.\");\n                    }\n                    return null;\n                }\n                return createChainableTypeChecker(validate);\n            }\n            function createEnumTypeChecker(expectedValues) {\n                function validate(props, propName, componentName, location, propFullName) {\n                    for (var propValue = props[propName], i = 0; i < expectedValues.length; i++) if (is(propValue, expectedValues[i])) return null;\n                    return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of value `\" + propValue + \"` supplied to `\" + componentName + \"`, expected one of \" + JSON.stringify(expectedValues) + \".\");\n                }\n                return Array.isArray(expectedValues) ? createChainableTypeChecker(validate) : (printWarning(\"Invalid argument supplied to oneOf, expected an instance of array.\"), \n                emptyFunctionThatReturnsNull);\n            }\n            function createObjectOfTypeChecker(typeChecker) {\n                function validate(props, propName, componentName, location, propFullName) {\n                    if (\"function\" != typeof typeChecker) return new PropTypeError(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has invalid PropType notation inside objectOf.\");\n                    var propValue = props[propName], propType = getPropType(propValue);\n                    if (\"object\" !== propType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` supplied to `\" + componentName + \"`, expected an object.\");\n                    for (var key in propValue) if (propValue.hasOwnProperty(key)) {\n                        var error = typeChecker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n                        if (error instanceof Error) return error;\n                    }\n                    return null;\n                }\n                return createChainableTypeChecker(validate);\n            }\n            function createUnionTypeChecker(arrayOfTypeCheckers) {\n                function validate(props, propName, componentName, location, propFullName) {\n                    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n                        if (null == (0, arrayOfTypeCheckers[i])(props, propName, componentName, location, propFullName, ReactPropTypesSecret)) return null;\n                    }\n                    return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` supplied to `\" + componentName + \"`.\");\n                }\n                if (!Array.isArray(arrayOfTypeCheckers)) return printWarning(\"Invalid argument supplied to oneOfType, expected an instance of array.\"), \n                emptyFunctionThatReturnsNull;\n                for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n                    var checker = arrayOfTypeCheckers[i];\n                    if (\"function\" != typeof checker) return printWarning(\"Invalid argument supplied to oneOfType. Expected an array of check functions, but received \" + getPostfixForTypeWarning(checker) + \" at index \" + i + \".\"), \n                    emptyFunctionThatReturnsNull;\n                }\n                return createChainableTypeChecker(validate);\n            }\n            function createShapeTypeChecker(shapeTypes) {\n                function validate(props, propName, componentName, location, propFullName) {\n                    var propValue = props[propName], propType = getPropType(propValue);\n                    if (\"object\" !== propType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` supplied to `\" + componentName + \"`, expected `object`.\");\n                    for (var key in shapeTypes) {\n                        var checker = shapeTypes[key];\n                        if (checker) {\n                            var error = checker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n                            if (error) return error;\n                        }\n                    }\n                    return null;\n                }\n                return createChainableTypeChecker(validate);\n            }\n            function createStrictShapeTypeChecker(shapeTypes) {\n                function validate(props, propName, componentName, location, propFullName) {\n                    var propValue = props[propName], propType = getPropType(propValue);\n                    if (\"object\" !== propType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` supplied to `\" + componentName + \"`, expected `object`.\");\n                    var allKeys = assign({}, props[propName], shapeTypes);\n                    for (var key in allKeys) {\n                        var checker = shapeTypes[key];\n                        if (!checker) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` key `\" + key + \"` supplied to `\" + componentName + \"`.\\nBad object: \" + JSON.stringify(props[propName], null, \"  \") + \"\\nValid keys: \" + JSON.stringify(Object.keys(shapeTypes), null, \"  \"));\n                        var error = checker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n                        if (error) return error;\n                    }\n                    return null;\n                }\n                return createChainableTypeChecker(validate);\n            }\n            function isNode(propValue) {\n                switch (typeof propValue) {\n                  case \"number\":\n                  case \"string\":\n                  case \"undefined\":\n                    return !0;\n\n                  case \"boolean\":\n                    return !propValue;\n\n                  case \"object\":\n                    if (Array.isArray(propValue)) return propValue.every(isNode);\n                    if (null === propValue || isValidElement(propValue)) return !0;\n                    var iteratorFn = getIteratorFn(propValue);\n                    if (!iteratorFn) return !1;\n                    var step, iterator = iteratorFn.call(propValue);\n                    if (iteratorFn !== propValue.entries) {\n                        for (;!(step = iterator.next()).done; ) if (!isNode(step.value)) return !1;\n                    } else for (;!(step = iterator.next()).done; ) {\n                        var entry = step.value;\n                        if (entry && !isNode(entry[1])) return !1;\n                    }\n                    return !0;\n\n                  default:\n                    return !1;\n                }\n            }\n            function isSymbol(propType, propValue) {\n                return \"symbol\" === propType || (\"Symbol\" === propValue[\"@@toStringTag\"] || \"function\" == typeof Symbol && propValue instanceof Symbol);\n            }\n            function getPropType(propValue) {\n                var propType = typeof propValue;\n                return Array.isArray(propValue) ? \"array\" : propValue instanceof RegExp ? \"object\" : isSymbol(propType, propValue) ? \"symbol\" : propType;\n            }\n            function getPreciseType(propValue) {\n                if (void 0 === propValue || null === propValue) return \"\" + propValue;\n                var propType = getPropType(propValue);\n                if (\"object\" === propType) {\n                    if (propValue instanceof Date) return \"date\";\n                    if (propValue instanceof RegExp) return \"regexp\";\n                }\n                return propType;\n            }\n            function getPostfixForTypeWarning(value) {\n                var type = getPreciseType(value);\n                switch (type) {\n                  case \"array\":\n                  case \"object\":\n                    return \"an \" + type;\n\n                  case \"boolean\":\n                  case \"date\":\n                  case \"regexp\":\n                    return \"a \" + type;\n\n                  default:\n                    return type;\n                }\n            }\n            function getClassName(propValue) {\n                return propValue.constructor && propValue.constructor.name ? propValue.constructor.name : ANONYMOUS;\n            }\n            var ITERATOR_SYMBOL = \"function\" == typeof Symbol && Symbol.iterator, FAUX_ITERATOR_SYMBOL = \"@@iterator\", ANONYMOUS = \"<<anonymous>>\", ReactPropTypes = {\n                array: createPrimitiveTypeChecker(\"array\"),\n                bool: createPrimitiveTypeChecker(\"boolean\"),\n                func: createPrimitiveTypeChecker(\"function\"),\n                number: createPrimitiveTypeChecker(\"number\"),\n                object: createPrimitiveTypeChecker(\"object\"),\n                string: createPrimitiveTypeChecker(\"string\"),\n                symbol: createPrimitiveTypeChecker(\"symbol\"),\n                any: function() {\n                    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n                }(),\n                arrayOf: createArrayOfTypeChecker,\n                element: function() {\n                    function validate(props, propName, componentName, location, propFullName) {\n                        var propValue = props[propName];\n                        if (!isValidElement(propValue)) {\n                            return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPropType(propValue) + \"` supplied to `\" + componentName + \"`, expected a single ReactElement.\");\n                        }\n                        return null;\n                    }\n                    return createChainableTypeChecker(validate);\n                }(),\n                instanceOf: createInstanceTypeChecker,\n                node: function() {\n                    function validate(props, propName, componentName, location, propFullName) {\n                        return isNode(props[propName]) ? null : new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` supplied to `\" + componentName + \"`, expected a ReactNode.\");\n                    }\n                    return createChainableTypeChecker(validate);\n                }(),\n                objectOf: createObjectOfTypeChecker,\n                oneOf: createEnumTypeChecker,\n                oneOfType: createUnionTypeChecker,\n                shape: createShapeTypeChecker,\n                exact: createStrictShapeTypeChecker\n            };\n            return PropTypeError.prototype = Error.prototype, ReactPropTypes.checkPropTypes = checkPropTypes, \n            ReactPropTypes.PropTypes = ReactPropTypes, ReactPropTypes;\n        };\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function toObject(val) {\n            if (null === val || void 0 === val) throw new TypeError(\"Object.assign cannot be called with null or undefined\");\n            return Object(val);\n        }\n        /*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n        var getOwnPropertySymbols = Object.getOwnPropertySymbols, hasOwnProperty = Object.prototype.hasOwnProperty, propIsEnumerable = Object.prototype.propertyIsEnumerable;\n        module.exports = function() {\n            try {\n                if (!Object.assign) return !1;\n                var test1 = new String(\"abc\");\n                if (test1[5] = \"de\", \"5\" === Object.getOwnPropertyNames(test1)[0]) return !1;\n                for (var test2 = {}, i = 0; i < 10; i++) test2[\"_\" + String.fromCharCode(i)] = i;\n                if (\"0123456789\" !== Object.getOwnPropertyNames(test2).map(function(n) {\n                    return test2[n];\n                }).join(\"\")) return !1;\n                var test3 = {};\n                return \"abcdefghijklmnopqrst\".split(\"\").forEach(function(letter) {\n                    test3[letter] = letter;\n                }), \"abcdefghijklmnopqrst\" === Object.keys(Object.assign({}, test3)).join(\"\");\n            } catch (err) {\n                return !1;\n            }\n        }() ? Object.assign : function(target, source) {\n            for (var from, symbols, to = toObject(target), s = 1; s < arguments.length; s++) {\n                from = Object(arguments[s]);\n                for (var key in from) hasOwnProperty.call(from, key) && (to[key] = from[key]);\n                if (getOwnPropertySymbols) {\n                    symbols = getOwnPropertySymbols(from);\n                    for (var i = 0; i < symbols.length; i++) propIsEnumerable.call(from, symbols[i]) && (to[symbols[i]] = from[symbols[i]]);\n                }\n            }\n            return to;\n        };\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n            for (var typeSpecName in typeSpecs) if (typeSpecs.hasOwnProperty(typeSpecName)) {\n                var error;\n                try {\n                    if (\"function\" != typeof typeSpecs[typeSpecName]) {\n                        var err = Error((componentName || \"React class\") + \": \" + location + \" type `\" + typeSpecName + \"` is invalid; it must be a function, usually from the `prop-types` package, but received `\" + typeof typeSpecs[typeSpecName] + \"`.\");\n                        throw err.name = \"Invariant Violation\", err;\n                    }\n                    error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n                } catch (ex) {\n                    error = ex;\n                }\n                if (!error || error instanceof Error || printWarning((componentName || \"React class\") + \": type specification of \" + location + \" `\" + typeSpecName + \"` is invalid; the type checker function must return `null` or an `Error` but returned a \" + typeof error + \". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\"), \n                error instanceof Error && !(error.message in loggedTypeFailures)) {\n                    loggedTypeFailures[error.message] = !0;\n                    var stack = getStack ? getStack() : \"\";\n                    printWarning(\"Failed \" + location + \" type: \" + error.message + (null != stack ? stack : \"\"));\n                }\n            }\n        }\n        var printWarning = function() {}, ReactPropTypesSecret = __webpack_require__(1), loggedTypeFailures = {};\n        printWarning = function(text) {\n            var message = \"Warning: \" + text;\n            \"undefined\" != typeof console && console.error(message);\n            try {\n                throw new Error(message);\n            } catch (x) {}\n        }, module.exports = checkPropTypes;\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function Mql(query, values, forceStatic) {\n            function addListener(listener) {\n                mql && mql.addListener(listener);\n            }\n            function removeListener(listener) {\n                mql && mql.removeListener(listener);\n            }\n            function update(evt) {\n                self.matches = evt.matches, self.media = evt.media;\n            }\n            function dispose() {\n                mql && mql.removeListener(update);\n            }\n            var self = this;\n            if (dynamicMatch && !forceStatic) {\n                var mql = dynamicMatch.call(window, query);\n                this.matches = mql.matches, this.media = mql.media, mql.addListener(update);\n            } else this.matches = staticMatch(query, values), this.media = query;\n            this.addListener = addListener, this.removeListener = removeListener, this.dispose = dispose;\n        }\n        function matchMedia(query, values, forceStatic) {\n            return new Mql(query, values, forceStatic);\n        }\n        var staticMatch = __webpack_require__(10).match, dynamicMatch = \"undefined\" != typeof window ? window.matchMedia : null;\n        module.exports = matchMedia;\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function matchQuery(mediaQuery, values) {\n            return parseQuery(mediaQuery).some(function(query) {\n                var inverse = query.inverse, typeMatch = \"all\" === query.type || values.type === query.type;\n                if (typeMatch && inverse || !typeMatch && !inverse) return !1;\n                var expressionsMatch = query.expressions.every(function(expression) {\n                    var feature = expression.feature, modifier = expression.modifier, expValue = expression.value, value = values[feature];\n                    if (!value) return !1;\n                    switch (feature) {\n                      case \"orientation\":\n                      case \"scan\":\n                        return value.toLowerCase() === expValue.toLowerCase();\n\n                      case \"width\":\n                      case \"height\":\n                      case \"device-width\":\n                      case \"device-height\":\n                        expValue = toPx(expValue), value = toPx(value);\n                        break;\n\n                      case \"resolution\":\n                        expValue = toDpi(expValue), value = toDpi(value);\n                        break;\n\n                      case \"aspect-ratio\":\n                      case \"device-aspect-ratio\":\n                      case \"device-pixel-ratio\":\n                        expValue = toDecimal(expValue), value = toDecimal(value);\n                        break;\n\n                      case \"grid\":\n                      case \"color\":\n                      case \"color-index\":\n                      case \"monochrome\":\n                        expValue = parseInt(expValue, 10) || 1, value = parseInt(value, 10) || 0;\n                    }\n                    switch (modifier) {\n                      case \"min\":\n                        return value >= expValue;\n\n                      case \"max\":\n                        return value <= expValue;\n\n                      default:\n                        return value === expValue;\n                    }\n                });\n                return expressionsMatch && !inverse || !expressionsMatch && inverse;\n            });\n        }\n        function parseQuery(mediaQuery) {\n            return mediaQuery.split(\",\").map(function(query) {\n                query = query.trim();\n                var captures = query.match(RE_MEDIA_QUERY), modifier = captures[1], type = captures[2], expressions = captures[3] || \"\", parsed = {};\n                return parsed.inverse = !!modifier && \"not\" === modifier.toLowerCase(), parsed.type = type ? type.toLowerCase() : \"all\", \n                expressions = expressions.match(/\\([^\\)]+\\)/g) || [], parsed.expressions = expressions.map(function(expression) {\n                    var captures = expression.match(RE_MQ_EXPRESSION), feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n                    return {\n                        modifier: feature[1],\n                        feature: feature[2],\n                        value: captures[2]\n                    };\n                }), parsed;\n            });\n        }\n        function toDecimal(ratio) {\n            var numbers, decimal = Number(ratio);\n            return decimal || (numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/), decimal = numbers[1] / numbers[2]), \n            decimal;\n        }\n        function toDpi(resolution) {\n            var value = parseFloat(resolution);\n            switch (String(resolution).match(RE_RESOLUTION_UNIT)[1]) {\n              case \"dpcm\":\n                return value / 2.54;\n\n              case \"dppx\":\n                return 96 * value;\n\n              default:\n                return value;\n            }\n        }\n        function toPx(length) {\n            var value = parseFloat(length);\n            switch (String(length).match(RE_LENGTH_UNIT)[1]) {\n              case \"em\":\n              case \"rem\":\n                return 16 * value;\n\n              case \"cm\":\n                return 96 * value / 2.54;\n\n              case \"mm\":\n                return 96 * value / 2.54 / 10;\n\n              case \"in\":\n                return 96 * value;\n\n              case \"pt\":\n                return 72 * value;\n\n              case \"pc\":\n                return 72 * value / 12;\n\n              default:\n                return value;\n            }\n        }\n        exports.match = matchQuery, exports.parse = parseQuery;\n        var RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i, RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/, RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/, RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/, RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function _interopRequireDefault(obj) {\n            return obj && obj.__esModule ? obj : {\n                default: obj\n            };\n        }\n        function keyVal(k, v) {\n            var realKey = (0, _hyphenateStyleName2.default)(k);\n            return \"number\" == typeof v && (v += \"px\"), !0 === v ? k : !1 === v ? negate(k) : \"(\" + realKey + \": \" + v + \")\";\n        }\n        function join(conds) {\n            return conds.join(\" and \");\n        }\n        Object.defineProperty(exports, \"__esModule\", {\n            value: !0\n        }), exports.default = function(obj) {\n            var rules = [];\n            return Object.keys(_mediaQuery2.default.all).forEach(function(k) {\n                var v = obj[k];\n                null != v && rules.push(keyVal(k, v));\n            }), join(rules);\n        };\n        var _hyphenateStyleName = __webpack_require__(2), _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName), _mediaQuery = __webpack_require__(3), _mediaQuery2 = _interopRequireDefault(_mediaQuery), negate = function(cond) {\n            return \"not \" + cond;\n        };\n        module.exports = exports.default;\n    } ]);\n});\n//# sourceMappingURL=react-responsive.js.map","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar isServer = typeof window === \"undefined\";\nvar isClient = !isServer;\nvar WINDOW = isClient ? window : null;\nvar DOCUMENT = isClient ? document : null;\n\nexports.default = {\n  isServer: isServer,\n  isClient: isClient,\n  window: WINDOW,\n  document: DOCUMENT\n};\nexports.isServer = isServer;\nexports.isClient = isClient;\nexports.window = WINDOW;\nexports.document = DOCUMENT;","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Ebrush%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='brush' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cpath d='M9.50062663,11.4981734 L10.4995734,11.4981734 L10.4995734,14.4990134 L9.49962669,14.4990134 L9.49962669,11.4991734 L6.49978668,11.4991734 L6.49978668,10.4992267 L9.50062663,10.4992267 L9.50062663,11.4981734 Z M13.4992134,3.5 L16.5000533,3.5 L16.5000533,4.49994667 L17.5,4.49994667 L17.5,7.49978668 L16.5000533,7.49978668 L16.5000533,8.4987334 L15.4991067,8.4987334 L15.4991067,9.49868007 L14.49916,9.49868007 L14.49916,10.4986267 L12.4992667,10.4986267 L12.4992667,11.4985734 L11.49932,11.4985734 L11.49932,10.4986267 L10.4993734,10.4986267 L10.4993734,9.49868007 L9.4994267,9.49868007 L9.4994267,7.49978668 L10.4993734,7.49978668 L10.4993734,6.49984001 L11.49932,6.49984001 L11.49932,5.49989334 L12.4992667,5.49989334 L12.4992667,4.49994667 L13.4992134,4.49994667 L13.4992134,3.5 Z M5.49954002,11.4987734 L6.49948669,11.4987734 L6.49948669,12.49972 L7.50043331,12.49972 L7.50043331,13.4996667 L8.50037998,13.4996667 L8.50037998,14.4996134 L9.50032665,14.4996134 L9.50032665,15.49956 L8.50037998,15.49956 L8.50037998,16.4985067 L4.49959336,16.4985067 L4.49959336,15.49956 L3.49964669,15.49956 L3.49964669,13.4996667 L5.49954002,13.4996667 L5.49954002,11.4987734 Z M2.5,13.4990667 L2.5,12.49912 L3.49994667,12.49912 L3.49994667,13.4990667 L2.5,13.4990667 Z' id='Combined-Shape' fill='%23575E75'%3E%3C/path%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eline%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='line' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cpath d='M12,7.998 L12,6 L14,6 L14,8 L12.002,8 L12.002,10 L10,10 L10,7.998 L12,7.998 Z M8,12 L8,10 L10,10 L10,12 L8,12 Z M14,6 L14,4 L16,4 L16,6 L14,6 Z M4,16 L4,14 L6,14 L6,16 L4,16 Z M6,14 L6,12 L8,12 L8,14 L6,14 Z' id='Combined-Shape' fill='%23575E75'%3E%3C/path%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eoval%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='oval' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cpolygon id='Page-1' fill='%23575E75' points='6.66666667 4 6.66666667 5.33333333 5.33333333 5.33333333 5.33333333 6.66666667 4 6.66666667 4 13.3333333 5.33333333 13.3333333 5.33333333 14.6666667 6.66666667 14.6666667 6.66666667 16 13.3333333 16 13.3333333 14.6666667 14.6666667 14.6666667 14.6666667 13.3333333 16 13.3333333 16 6.66666667 14.6666667 6.66666667 14.6666667 5.33333333 13.3333333 5.33333333 13.3333333 4'%3E%3C/polygon%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Erectange%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='rectange' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Crect id='rectangle-icon' fill='%23575E75' x='4' y='4' width='12' height='12'%3E%3C/rect%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eeraser%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='eraser' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cpath d='M9.30022904,14.1996946 L7.89984723,14.1996946 L7.89984723,12.7997327 L6.49988541,12.7997327 L6.49988541,11.3997709 L5.09992359,11.3997709 L5.09992359,9.99840913 L3.69996177,9.99840913 L3.69996177,8.59984728 L2.29999995,8.59984728 L2.29999995,7.19988546 L3.69996177,7.19988546 L3.69996177,5.79992364 L5.09992359,5.79992364 L5.09992359,4.39996182 L6.49988541,4.39996182 L6.49988541,3 L7.89984723,3 L7.89984723,4.39996182 L9.30120901,4.39996182 L9.30120901,5.79992364 L10.7011708,5.79992364 L10.7011708,7.19988546 L12.1011326,7.19988546 L12.1011326,8.59984728 L13.4996945,8.59984728 L13.4996945,9.99840913 L12.1011326,9.99840913 L12.1011326,11.3997709 L10.7011708,11.3997709 L10.7011708,12.7997327 L9.30120901,12.7997327 L9.30120901,14.1995546 L10.7001909,14.1995546 L10.7001909,15.5995164 L9.30022904,15.5995164 L9.30022904,14.1996946 Z M10.7001909,16.9994782 L10.7001909,15.5995164 L14.9000763,15.5995164 L14.9000763,16.9994782 L10.7001909,16.9994782 Z M14.9000763,15.5995164 L14.9000763,14.1995546 L16.3000381,14.1995546 L16.3000381,15.5995164 L14.9000763,15.5995164 Z M14.9000763,12.7995927 L14.9000763,11.3996309 L16.3000381,11.3996309 L16.3000381,12.7995927 L14.9000763,12.7995927 Z M16.3000381,14.1995546 L16.3000381,12.7995927 L17.7,12.7995927 L17.7,14.1995546 L16.3000381,14.1995546 Z M13.5001145,11.3996309 L13.5001145,9.99826914 L14.9000763,9.99826914 L14.9000763,11.3996309 L13.5001145,11.3996309 Z' id='Combined-Shape' fill='%23575E75'%3E%3C/path%3E %3C/g%3E %3C/svg%3E\"","/* DO NOT EDIT\n@todo This file is copied from GUI and should be pulled out into a shared library.\nSee https://github.com/LLK/scratch-paint/issues/13 */\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport stylePropType from 'react-style-proptype';\n\nconst getRandomColor = (function () {\n    // In \"DEBUG\" mode this is used to output a random background color for each\n    // box. The function gives the same \"random\" set for each seed, allowing re-\n    // renders of the same content to give the same random display.\n    const random = (function (seed) {\n        let mW = seed;\n        let mZ = 987654321;\n        const mask = 0xffffffff;\n        return function () {\n            mZ = ((36969 * (mZ & 65535)) + (mZ >> 16)) & mask;\n            mW = ((18000 * (mW & 65535)) + (mW >> 16)) & mask;\n            let result = ((mZ << 16) + mW) & mask;\n            result /= 4294967296;\n            return result + 1;\n        };\n    }(601));\n    return function () {\n        const r = Math.max(parseInt(random() * 100, 10) % 256, 1);\n        const g = Math.max(parseInt(random() * 100, 10) % 256, 1);\n        const b = Math.max(parseInt(random() * 100, 10) % 256, 1);\n        return `rgb(${r},${g},${b})`;\n    };\n}());\n\nconst Box = props => {\n    const {\n        alignContent,\n        alignItems,\n        alignSelf,\n        basis,\n        children,\n        className,\n        componentRef,\n        direction,\n        element,\n        grow,\n        height,\n        justifyContent,\n        width,\n        wrap,\n        shrink,\n        style,\n        ...componentProps\n    } = props;\n    return React.createElement(element, {\n        className: className,\n        ref: componentRef,\n        style: Object.assign(\n            {\n                alignContent: alignContent,\n                alignItems: alignItems,\n                alignSelf: alignSelf,\n                flexBasis: basis,\n                flexDirection: direction,\n                flexGrow: grow,\n                flexShrink: shrink,\n                flexWrap: wrap,\n                justifyContent: justifyContent,\n                width: width,\n                height: height\n            },\n            process.env.DEBUG ? { // eslint-disable-line no-undef\n                backgroundColor: getRandomColor(),\n                outline: `1px solid black`\n            } : {},\n            style\n        ),\n        ...componentProps\n    }, children);\n};\nBox.propTypes = {\n    /** Defines how the browser distributes space between and around content items vertically within this box. */\n    alignContent: PropTypes.oneOf([\n        'flex-start', 'flex-end', 'center', 'space-between', 'space-around', 'stretch'\n    ]),\n    /** Defines how the browser distributes space between and around flex items horizontally within this box. */\n    alignItems: PropTypes.oneOf([\n        'flex-start', 'flex-end', 'center', 'baseline', 'stretch'\n    ]),\n    /** Specifies how this box should be aligned inside of its container (requires the container to be flexable). */\n    alignSelf: PropTypes.oneOf([\n        'auto', 'flex-start', 'flex-end', 'center', 'baseline', 'stretch'\n    ]),\n    /** Specifies the initial length of this box */\n    basis: PropTypes.oneOfType([\n        PropTypes.number,\n        PropTypes.oneOf(['auto'])\n    ]),\n    /** Specifies the the HTML nodes which will be child elements of this box. */\n    children: PropTypes.node,\n    /** Specifies the class name that will be set on this box */\n    className: PropTypes.string,\n    /**\n     * A callback function whose first parameter is the underlying dom elements.\n     * This call back will be executed immediately after the component is mounted or unmounted\n     */\n    componentRef: PropTypes.func,\n    /** https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction */\n    direction: PropTypes.oneOf([\n        'row', 'row-reverse', 'column', 'column-reverse'\n    ]),\n    /** Specifies the type of HTML element of this box. Defaults to div. */\n    element: PropTypes.string,\n    /** Specifies the flex grow factor of a flex item. */\n    grow: PropTypes.number,\n    /** The height in pixels (if specified as a number) or a string if different units are required. */\n    height: PropTypes.oneOfType([\n        PropTypes.number,\n        PropTypes.string\n    ]),\n    /** https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content */\n    justifyContent: PropTypes.oneOf([\n        'flex-start', 'flex-end', 'center', 'space-between', 'space-around'\n    ]),\n    /** Specifies the flex shrink factor of a flex item. */\n    shrink: PropTypes.number,\n    /** An object whose keys are css property names and whose values correspond the the css property. */\n    style: stylePropType,\n    /** The width in pixels (if specified as a number) or a string if different units are required. */\n    width: PropTypes.oneOfType([\n        PropTypes.number,\n        PropTypes.string\n    ]),\n    /** How whitespace should wrap within this block. */\n    wrap: PropTypes.oneOf([\n        'nowrap', 'wrap', 'wrap-reverse'\n    ])\n};\nBox.defaultProps = {\n    element: 'div',\n    style: {}\n};\nexport default Box;\n","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Ebrush%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-linecap='round' stroke-linejoin='round'%3E %3Cg id='brush' stroke='%23575E75' stroke-width='0.5' fill='%23575E75'%3E %3Cpath d='M12.5787225,11.2102026 C11.6196284,12.1692967 10.9129274,12.6614634 10.3576624,12.8507583 C10.1936069,12.3459719 9.91597437,11.8790445 9.52476494,11.4878351 C9.12093585,11.0966257 8.65400846,10.8189932 8.14922209,10.6423179 C8.35113664,10.0870529 8.84330335,9.38035203 9.78977778,8.43387759 C12.0613164,6.14971929 16.0996074,3.36077461 16.8694066,4.13057382 C17.6392058,4.90037303 14.8502611,8.93866396 12.5787225,11.2102026 Z M8.39124334,15.4120104 C8.01569197,15.7748657 7.53110955,15.9621459 7.04652713,15.9855559 L7.04652713,15.9972609 L6.92538153,15.9972609 C3.67867934,16.114311 2.26127577,12.4389379 3.37581533,12.8252032 C4.84167714,13.3285186 5.43650205,12.602808 5.45951972,12.579398 C6.27119527,11.8068673 7.57956779,11.8068673 8.39124334,12.579398 C9.20291889,13.3636337 9.20291889,14.6394798 8.39124334,15.4120104 Z' id='bursh-icon'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eeraser%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='eraser' fill='%23575E75'%3E %3Cpath d='M13.5370061,14.8291597 L10.9660545,14.8291597 L8.3016138,12.164719 L11.1686144,9.29771842 L15.1263216,13.2554257 L13.5370061,14.8291597 Z M16.7779633,12.6944908 L11.1686144,7.10072343 L8.3016138,4.23372287 C8.00556483,3.92209238 7.50695604,3.92209238 7.19532554,4.23372287 L3.22203673,8.20701169 C2.92598776,8.50306066 2.92598776,9.00166945 3.22203673,9.29771842 L6.10461881,12.164719 L10.0934891,16.1535893 C10.2337229,16.3094046 10.4362827,16.3873122 10.6388425,16.3873122 L13.8642181,16.3873122 C14.066778,16.3873122 14.2693378,16.3094046 14.4095715,16.1535893 L16.7779633,13.8007791 C17.0740122,13.5047301 17.0740122,13.0061213 16.7779633,12.6944908 L16.7779633,12.6944908 Z' id='eraser-icon'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","// http://stackoverflow.com/questions/33505992/babel-6-changes-how-it-exports-default\n\nconst lib = require(\"./build\")\nmodule.exports = lib.default\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./button.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./tool-select-base.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./slider.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./labeled-icon-button.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./label.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./input.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _isInBrowser = require('is-in-browser');\n\nvar _isInBrowser2 = _interopRequireDefault(_isInBrowser);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar js = ''; /**\n              * Export javascript style and css style vendor prefixes.\n              * Based on \"transform\" support test.\n              */\n\nvar css = '';\n\n// We should not do anything if required serverside.\nif (_isInBrowser2['default']) {\n  // Order matters. We need to check Webkit the last one because\n  // other vendors use to add Webkit prefixes to some properties\n  var jsCssMap = {\n    Moz: '-moz-',\n    // IE did it wrong again ...\n    ms: '-ms-',\n    O: '-o-',\n    Webkit: '-webkit-'\n  };\n  var style = document.createElement('p').style;\n  var testProp = 'Transform';\n\n  for (var key in jsCssMap) {\n    if (key + testProp in style) {\n      js = key;\n      css = jsCssMap[key];\n      break;\n    }\n  }\n}\n\n/**\n * Vendor prefix string for the current browser.\n *\n * @type {{js: String, css: String}}\n * @api public\n */\nexports['default'] = { js: js, css: css };","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexport var isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\n\nexport default isBrowser;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.clientOnly = exports.noop = exports.equalRecords = exports.find = undefined;\n\nvar _platform = require(\"./platform\");\n\nvar find = function find(f, xs) {\n  return xs.reduce(function (b, x) {\n    return b ? b : f(x) ? x : null;\n  }, null);\n};\n\nvar equalRecords = function equalRecords(o1, o2) {\n  for (var key in o1) {\n    if (o1[key] !== o2[key]) return false;\n  }return true;\n};\n\nvar noop = function noop() {\n  return undefined;\n};\n\nvar clientOnly = function clientOnly(f) {\n  return _platform.isClient ? f : noop;\n};\n\nexports.default = {\n  find: find,\n  equalRecords: equalRecords,\n  noop: noop,\n  clientOnly: clientOnly\n};\nexports.find = find;\nexports.equalRecords = equalRecords;\nexports.noop = noop;\nexports.clientOnly = clientOnly;","function _interopRequireDefault(e) {\n  return e && e.__esModule ? e : {\n    \"default\": e\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","var Minilog = require('../common/minilog.js');\n\nvar oldEnable = Minilog.enable,\n    oldDisable = Minilog.disable,\n    isChrome = (typeof navigator != 'undefined' && /chrome/i.test(navigator.userAgent)),\n    console = require('./console.js');\n\n// Use a more capable logging backend if on Chrome\nMinilog.defaultBackend = (isChrome ? console.minilog : console);\n\n// apply enable inputs from localStorage and from the URL\nif(typeof window != 'undefined') {\n  try {\n    Minilog.enable(JSON.parse(window.localStorage['minilogSettings']));\n  } catch(e) {}\n  if(window.location && window.location.search) {\n    var match = RegExp('[?&]minilog=([^&]*)').exec(window.location.search);\n    match && Minilog.enable(decodeURIComponent(match[1]));\n  }\n}\n\n// Make enable also add to localStorage\nMinilog.enable = function() {\n  oldEnable.call(Minilog, true);\n  try { window.localStorage['minilogSettings'] = JSON.stringify(true); } catch(e) {}\n  return this;\n};\n\nMinilog.disable = function() {\n  oldDisable.call(Minilog);\n  try { delete window.localStorage.minilogSettings; } catch(e) {}\n  return this;\n};\n\nexports = module.exports = Minilog;\n\nexports.backends = {\n  array: require('./array.js'),\n  browser: Minilog.defaultBackend,\n  localStorage: require('./localstorage.js'),\n  jQuery: require('./jquery_simple.js')\n};\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n  root = self;\n} else if (typeof window !== 'undefined') {\n  root = window;\n} else if (typeof global !== 'undefined') {\n  root = global;\n} else if (typeof module !== 'undefined') {\n  root = module;\n} else {\n  root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./input-group.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Esend-back%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='send-back'%3E %3Cg transform='translate(10.000000, 10.000000) rotate(180.000000) translate(-10.000000, -10.000000) translate(2.000000, 3.000000)'%3E %3Cpath d='M12.3476736,5.92549723 L10.2407376,5.92549723 L9.33601611,12.7635981 C9.23807603,13.5476661 8.54025295,14.1003698 7.78121732,13.9846876 C7.16909181,13.8947126 6.69163391,13.3805697 6.6169546,12.7635981 L5.7122331,5.92549723 L3.65426714,5.92549723 C3.0678509,5.92549723 2.78504892,5.19284356 3.190276,4.76867564 L7.53514286,0.192803597 C7.79223558,-0.0642678658 8.20970517,-0.0642678658 8.45333113,0.192803597 L12.812889,4.76867564 C13.2168918,5.19284356 12.9230716,5.92549723 12.3476736,5.92549723' id='Fill-1' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M12,8 L16,8' id='Stroke-6' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M12,10 L15,10' id='Stroke-6-Copy' stroke='%23575E75' opacity='0.75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M12,12 L14,12' id='Stroke-6-Copy-2' stroke='%23575E75' opacity='0.5' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M0,8 L4,8' id='Stroke-10' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M1,10 L4,10' id='Stroke-10-Copy' stroke='%23575E75' opacity='0.75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M2,12 L4,12' id='Stroke-10-Copy-2' stroke='%23575E75' opacity='0.5' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Esend-front%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='send-front'%3E %3Cg transform='translate(2.000000, 3.000000)'%3E %3Cpath d='M12.3476736,5.92549723 L10.2407376,5.92549723 L9.33601611,12.7635981 C9.23807603,13.5476661 8.54025295,14.1003698 7.78121732,13.9846876 C7.16909181,13.8947126 6.69163391,13.3805697 6.6169546,12.7635981 L5.7122331,5.92549723 L3.65426714,5.92549723 C3.0678509,5.92549723 2.78504892,5.19284356 3.190276,4.76867564 L7.53514286,0.192803597 C7.79223558,-0.0642678658 8.20970517,-0.0642678658 8.45333113,0.192803597 L12.812889,4.76867564 C13.2168918,5.19284356 12.9230716,5.92549723 12.3476736,5.92549723' id='Fill-1' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M12,8 L16,8' id='Stroke-6' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M12,10 L15,10' id='Stroke-6-Copy' stroke='%23575E75' opacity='0.75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M12,12 L14,12' id='Stroke-6-Copy-2' stroke='%23575E75' opacity='0.5' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M0,8 L4,8' id='Stroke-10' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M1,10 L4,10' id='Stroke-10-Copy' stroke='%23575E75' opacity='0.75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M2,12 L4,12' id='Stroke-10-Copy-2' stroke='%23575E75' opacity='0.5' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Edelete%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='delete' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='Delete-Icon' transform='translate(2.000000, 1.500000)' fill='%23855CD6' fill-rule='nonzero'%3E %3Cpath d='M2,3.25 L14,3.25 C14.4437164,3.25 14.7904293,3.63311343 14.7462779,4.07462779 L13.6363275,15.1741315 C13.5468672,16.0687347 12.7940775,16.75 11.8950124,16.75 L4.10498756,16.75 C3.20592253,16.75 2.45313279,16.0687347 2.36367248,15.1741315 L1.25372211,4.07462779 C1.20957067,3.63311343 1.55628356,3.25 2,3.25 Z M8.75,12 L8.75,7 C8.75,6.58578644 8.41421356,6.25 8,6.25 C7.58578644,6.25 7.25,6.58578644 7.25,7 L7.25,12 C7.25,12.4142136 7.58578644,12.75 8,12.75 C8.41421356,12.75 8.75,12.4142136 8.75,12 Z M11.25,12 L11.25,7 C11.25,6.58578644 10.9142136,6.25 10.5,6.25 C10.0857864,6.25 9.75,6.58578644 9.75,7 L9.75,12 C9.75,12.4142136 10.0857864,12.75 10.5,12.75 C10.9142136,12.75 11.25,12.4142136 11.25,12 Z M6.25,12 L6.25,7 C6.25,6.58578644 5.91421356,6.25 5.5,6.25 C5.08578644,6.25 4.75,6.58578644 4.75,7 L4.75,12 C4.75,12.4142136 5.08578644,12.75 5.5,12.75 C5.91421356,12.75 6.25,12.4142136 6.25,12 Z M1.5,4 L14.5,4 L1.5,4 Z M1.5,3 L14.5,3 C15.0522847,3 15.5,3.44771525 15.5,4 C15.5,4.55228475 15.0522847,5 14.5,5 L1.5,5 C0.94771525,5 0.5,4.55228475 0.5,4 C0.5,3.44771525 0.94771525,3 1.5,3 Z M9.25,3.25 L9.25,2 C9.25,1.86192881 9.13807119,1.75 9,1.75 L7,1.75 C6.86192881,1.75 6.75,1.86192881 6.75,2 L6.75,3.25 L9.25,3.25 Z M7,0.25 L9,0.25 C9.96649831,0.25 10.75,1.03350169 10.75,2 L10.75,4.75 L5.25,4.75 L5.25,2 C5.25,1.03350169 6.03350169,0.25 7,0.25 Z' id='Combined-Shape'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 47.1 (45422) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Ebitmap%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='bitmap' fill='%23FFFFFF'%3E %3Cpath d='M4,3 L16,3 L16,4 L4,4 L4,3 Z M2,5 L3,5 L3,13 L2,13 L2,5 Z M17,5 L18,5 L18,13 L17,13 L17,5 Z M2,13 L18,13 L18,15 L2,15 L2,13 Z M4,12 L16,12 L16,13 L4,13 L4,12 Z M5,11 L8,11 L8,12 L5,12 L5,11 Z M6,10 L7,10 L7,11 L6,11 L6,10 Z M9,11 L16,11 L16,12 L9,12 L9,11 Z M10,10 L15,10 L15,11 L10,11 L10,10 Z M11,9 L14,9 L14,10 L11,10 L11,9 Z M12,8 L13,8 L13,9 L12,9 L12,8 Z M16,12 L17,12 L17,13 L16,13 L16,12 Z M3,15 L17,15 L17,16 L3,16 L3,15 Z M3,4 L4,4 L4,5 L3,5 L3,4 Z M16,4 L17,4 L17,5 L16,5 L16,4 Z M4,16 L16,16 L16,17 L4,17 L4,16 Z' id='Combined-Shape'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var hex = {\n  black: '#000',\n  red: '#c23621',\n  green: '#25bc26',\n  yellow: '#bbbb00',\n  blue:  '#492ee1',\n  magenta: '#d338d3',\n  cyan: '#33bbc8',\n  gray: '#808080',\n  purple: '#708'\n};\nfunction color(fg, isInverse) {\n  if(isInverse) {\n    return 'color: #fff; background: '+hex[fg]+';';\n  } else {\n    return 'color: '+hex[fg]+';';\n  }\n}\n\nmodule.exports = color;\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nexports.extend = extend;\nvar hop = Object.prototype.hasOwnProperty;\n\nfunction extend(obj) {\n    var sources = Array.prototype.slice.call(arguments, 1),\n        i, len, source, key;\n\n    for (i = 0, len = sources.length; i < len; i += 1) {\n        source = sources[i];\n        if (!source) { continue; }\n\n        for (key in source) {\n            if (hop.call(source, key)) {\n                obj[key] = source[key];\n            }\n        }\n    }\n\n    return obj;\n}\nexports.hop = hop;\n\n//# sourceMappingURL=utils.js.map","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return module.exports = _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  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _reactRedux = require(\"react-redux\");\nvar _reactIntl = require(\"react-intl\");\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction defaultSelector(state) {\n  var intl = state.intl;\n  return _objectSpread({\n    key: intl.locale\n  }, intl);\n}\nvar mapStateToProps = function mapStateToProps(state, _ref) {\n  var _ref$intlSelector = _ref.intlSelector,\n    intlSelector = _ref$intlSelector === void 0 ? defaultSelector : _ref$intlSelector;\n  return intlSelector(state);\n};\nvar _default = exports.default = (0, _reactRedux.connect)(mapStateToProps)(_reactIntl.IntlProvider);","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","/* (ignored) */","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../node_modules/postcss-loader/src/index.js??postcss!./paper-canvas.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Efill%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='fill' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cpath d='M10.7000634,5.80137446 L9.29979614,5.80137446 L9.29979614,8.59994895 L7.89980891,8.59994895 L7.89980891,4.39998724 L6.49982167,4.39998724 L6.49982167,5.80137446 L5.09983443,5.80137446 L5.09983443,3 L9.29979614,3 L9.29979614,4.39998724 L10.7011834,4.39998724 L10.7011834,5.80123446 L12.1000506,5.80123446 L12.1000506,7.2012217 L10.7000634,7.2012217 L10.7000634,5.80137446 Z M5.10011443,8.60120894 L5.10011443,7.2012217 L6.50010167,7.2012217 L6.50010167,8.60120894 L5.10011443,8.60120894 Z M16.3000123,16.9997324 L16.3000123,10.0011962 L17.6999996,10.0011962 L17.6999996,16.9997324 L16.3000123,16.9997324 Z M12.1003306,7.20080171 L13.5003179,7.20080171 L13.5003179,8.60078894 L16.3002923,8.60078894 L16.3002923,10.0007762 L14.9003051,10.0007762 L14.9003051,11.3573638 L13.5003179,11.3573638 L13.5003179,12.758751 L12.1003306,12.758751 L12.1003306,14.1587383 L10.7003434,14.1587383 L10.7003434,15.5587255 L9.29895615,15.5587255 L9.29895615,16.9587128 L7.89896891,16.9587128 L7.89896891,15.5587255 L6.49898168,15.5587255 L6.49898168,14.1587383 L5.10039442,14.1587383 L5.10039442,12.758751 L3.70040719,12.758751 L3.70040719,11.3573638 L6.49898168,11.3573638 L6.49898168,11.3713637 L9.29895615,11.3713637 L9.29895615,10.0007762 L12.1003306,10.0007762 L12.1003306,7.20080171 Z M3.69998719,8.60064895 L5.09997443,8.60064895 L5.09997443,10.0006362 L3.69998719,10.0006362 L3.69998719,11.3572238 L2.29999995,11.3572238 L2.29999995,9.95723658 L3.69998719,9.95723658 L3.69998719,8.60064895 Z' id='Combined-Shape' fill='%23575E75'%3E%3C/path%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Emarquee%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='marquee' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cpath d='M4.5,4.18186116 L4.5,3 L5.68186116,3 L5.68186116,4.18186116 L4.5,4.18186116 Z M11.591167,4.18186116 L11.591167,3 L12.7730281,3 L12.7730281,4.18186116 L11.591167,4.18186116 Z M4.5,13.6367504 L4.5,12.4537074 L5.68186116,12.4537074 L5.68186116,13.6367504 L4.5,13.6367504 Z M9.22697189,6.54570166 L10.4100149,6.54570166 L10.4100149,7.72756282 L11.5918761,7.72756282 L11.5918761,8.90942398 L12.7737372,8.90942398 L12.7737372,10.0912851 L13.9555984,10.0912851 L13.9555984,11.2731463 L15.1362777,11.2731463 L15.1362777,12.4538256 L16.3181388,12.4538256 L16.3181388,13.6368686 L17.5,13.6368686 L17.5,14.8187298 L12.7737372,14.8187298 L12.7737372,16.0005909 L11.5918761,16.0005909 L11.5918761,17.1824521 L10.4100149,17.1824521 L10.4100149,18.3643132 L9.22697189,18.3643132 L9.22697189,6.54570166 Z M13.9548893,8.90930579 L13.9548893,7.72744463 L15.1367504,7.72744463 L15.1367504,8.90930579 L13.9548893,8.90930579 Z M6.86372232,4.18186116 L6.86372232,3 L8.04558348,3 L8.04558348,4.18186116 L6.86372232,4.18186116 Z M4.5,11.2730281 L4.5,10.091167 L5.68186116,10.091167 L5.68186116,11.2730281 L4.5,11.2730281 Z M13.9548893,4.18186116 L13.9548893,3 L15.1367504,3 L15.1367504,4.18186116 L13.9548893,4.18186116 Z M9.22744463,4.18186116 L9.22744463,3 L10.4104877,3 L10.4104877,4.18186116 L9.22744463,4.18186116 Z M4.5,8.90930579 L4.5,7.72744463 L5.68186116,7.72744463 L5.68186116,8.90930579 L4.5,8.90930579 Z M4.5,6.54558348 L4.5,5.36372232 L5.68186116,5.36372232 L5.68186116,6.54558348 L4.5,6.54558348 Z M13.9548893,6.54558348 L13.9548893,5.36372232 L15.1367504,5.36372232 L15.1367504,6.54558348 L13.9548893,6.54558348 Z M6.86372232,13.6367504 L6.86372232,12.4537074 L8.04558348,12.4537074 L8.04558348,13.6367504 L6.86372232,13.6367504 Z' id='Combined-Shape' fill='%23575E75'%3E%3C/path%3E %3C/g%3E %3C/svg%3E\"","var properties = require('./css-properties.js');\nvar PropTypes = require('prop-types');\n\nmodule.exports = function(props, propName, componentName) {\n  var styles = props[propName];\n  if (!styles) {\n    return;\n  }\n\n  var failures = [];\n  Object.keys(styles).forEach(function(styleKey){\n    if (properties.indexOf(styleKey) === -1) {\n      failures.push(styleKey);\n    }\n  });\n  if (failures.length) {\n    throw new Error('Prop ' + propName + ' passed to ' + componentName + '. Has invalid keys ' + failures.join(', '));\n  }\n};\n\nmodule.exports.isRequired = function(props, propName, componentName) {\n  if (!props[propName]) {\n    throw new Error('Prop ' + propName + ' passed to ' + componentName + ' is required');\n  }\n  return module.exports(props, propName, componentName);\n};\n\nmodule.exports.supportingArrays = PropTypes.oneOfType([\n  PropTypes.arrayOf(module.exports),\n  module.exports\n]);\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./button-group.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eeye-dropper%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='eye-dropper' fill='%23575E75'%3E %3Cpath d='M9.15334605,12.4824962 C9.03394044,12.6188737 8.88041895,12.7041096 8.60749186,12.7722983 C7.90811618,12.925723 7.24285639,13.5564688 7.03816107,14.2554033 C6.9699293,14.4770167 6.74817603,14.7156773 6.50936483,14.8350076 L4.73533871,15.6703196 C4.650049,15.704414 4.58181722,15.7214612 4.54770134,15.7214612 L4.27477424,15.4657534 C4.27477424,15.4487062 4.27477424,15.3805175 4.32594807,15.2611872 L5.1617873,13.4712329 C5.26413496,13.2496195 5.50294617,13.0280061 5.74175737,12.9598174 C6.44113305,12.738204 7.07227696,12.090411 7.25991433,11.2380518 C7.29403022,11.1016743 7.37931994,10.9652968 7.49872554,10.8289193 L11.4391105,6.90806697 L13.093731,8.56164384 L9.15334605,12.4824962 Z M16.6076673,5.28858447 C16.8635365,5.03287671 17,4.67488584 17,4.33394216 C17,3.99299848 16.8635365,3.65205479 16.6076673,3.39634703 C16.0788711,2.86788432 15.2430318,2.86788432 14.7142356,3.39634703 L13.2301945,4.87945205 L13.0596151,4.70898021 L12.5137609,4.16347032 C12.172602,3.82252664 11.6096899,3.82252664 11.268531,4.16347032 L10.6032712,4.81126332 C10.2791703,5.152207 10.2621124,5.64657534 10.5520974,5.98751903 L6.59465454,9.92541857 C6.30466951,10.2322679 6.09997418,10.5902588 5.98056858,11.1016743 C5.92939475,11.357382 5.63940971,11.6471842 5.36648262,11.7324201 C4.80357049,11.9028919 4.2577163,12.3802131 4.00184715,12.9427702 L3.16600792,14.7156773 C2.89308083,15.3123288 2.9613126,15.9260274 3.33658736,16.3181126 L3.67774623,16.6590563 C3.89949949,16.8806697 4.20654247,17 4.54770134,17 C4.7694546,17 5.02532375,16.9318113 5.26413496,16.8295282 L7.05521901,15.9942161 C7.61813114,15.7214612 8.09575356,15.1929985 8.26633299,14.6304414 C8.33456477,14.3576865 8.64160775,14.0678843 9.05099839,13.9826484 C9.4092152,13.8974125 9.76743201,13.6928463 10.057417,13.385997 L14.0148599,9.44809741 C14.3560188,9.73789954 14.8677571,9.70380518 15.1748001,9.37990868 L15.8400599,8.73211568 C16.1812187,8.39117199 16.1812187,7.82861492 15.8400599,7.48767123 L15.2600898,6.90806697 L15.1236262,6.7716895 L16.6076673,5.28858447 Z' id='eye-dropper-icon'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Efill-horz-gradient-enabled%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E %3ClinearGradient x1='100%25' y1='50%25' x2='0%25' y2='50%25' id='linearGradient-1'%3E %3Cstop stop-color='%23FFFFFF' offset='0%25'%3E%3C/stop%3E %3Cstop stop-color='%23855CD6' offset='100%25'%3E%3C/stop%3E %3C/linearGradient%3E %3C/defs%3E %3Cg id='fill-horz-gradient-enabled' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-opacity='0.15'%3E %3Crect id='Horizontal' stroke='%23000000' fill='url(%23linearGradient-1)' x='0.5' y='0.5' width='19' height='19' rx='4'%3E%3C/rect%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 51 (57462) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Efill-radial-enabled%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E %3CradialGradient cx='50%25' cy='50%25' fx='50%25' fy='50%25' r='39.3896484%25' id='radialGradient-1'%3E %3Cstop stop-color='%23855CD6' offset='0%25'%3E%3C/stop%3E %3Cstop stop-color='%23FFFFFF' offset='100%25'%3E%3C/stop%3E %3C/radialGradient%3E %3C/defs%3E %3Cg id='fill-radial-enabled' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-opacity='0.15'%3E %3Crect id='Radial' stroke='%23000000' fill='url(%23radialGradient-1)' x='0.5' y='0.5' width='19' height='19' rx='4'%3E%3C/rect%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Efill-solid-enabled%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='fill-solid-enabled' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-opacity='0.15'%3E %3Crect id='Solid' stroke='%23000000' fill='%23855CD6' x='0.5' y='0.5' width='19' height='19' rx='4'%3E%3C/rect%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 51 (57462) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Efill-vert-gradient-enabled%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E %3ClinearGradient x1='50%25' y1='100%25' x2='50%25' y2='3.061617e-15%25' id='linearGradient-1'%3E %3Cstop stop-color='%23FFFFFF' offset='0%25'%3E%3C/stop%3E %3Cstop stop-color='%23855CD6' offset='100%25'%3E%3C/stop%3E %3C/linearGradient%3E %3C/defs%3E %3Cg id='fill-vert-gradient-enabled' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-opacity='0.15'%3E %3Crect id='Vertical' stroke='%23000000' fill='url(%23linearGradient-1)' x='0.5' y='0.5' width='19' height='19' rx='4'%3E%3C/rect%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eswap%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='swap' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='Swap-v2' transform='translate(2.000000, 2.000000)' fill='%23855CD6'%3E %3Cpath d='M3.69424597,2.00682151 L7.95663608,2.66498231 C8.44536222,2.73588913 8.7900887,3.24405473 8.7176525,3.79585529 C8.66179809,4.24129561 8.34150792,4.58764819 7.95663608,4.64128284 L3.69424597,5.30126176 L3.69424597,6.79666856 C3.69424597,7.22392764 3.23781067,7.42846657 2.97250219,7.13483958 L0.120436084,3.97403142 C-0.0401453614,3.78767373 -0.0401453614,3.48404706 0.120436084,3.30587093 L2.97250219,0.135972153 C3.23781067,-0.157654834 3.69424597,0.0559747078 3.69424597,0.474143173 L3.69424597,2.00682151 Z M12.305754,10.7340942 L12.305754,9.2014159 C12.305754,8.78324744 12.7621893,8.56961789 13.0274978,8.86324488 L15.8795639,12.0331437 C16.0401454,12.2113198 16.0401454,12.5149465 15.8795639,12.7013041 L13.0274978,15.8621123 C12.7621893,16.1557393 12.305754,15.9512004 12.305754,15.5239413 L12.305754,14.0285345 L8.04336392,13.3685556 C7.65849208,13.3149209 7.33820191,12.9685683 7.2823475,12.523128 C7.2099113,11.9713275 7.55463778,11.4631619 8.04336392,11.392255 L12.305754,10.7340942 Z' id='Swap-v1'%3E%3C/path%3E %3Cpath d='M11.2727273,1.45454545 L13.4545455,1.45454545 C14.0567273,1.45454545 14.5454545,1.94327273 14.5454545,2.54545455 L14.5454545,4.72727273 C14.5454545,5.33054545 14.0567273,5.81818182 13.4545455,5.81818182 L11.2727273,5.81818182 C10.6705455,5.81818182 10.1818182,5.33054545 10.1818182,4.72727273 L10.1818182,2.54545455 C10.1818182,1.94327273 10.6705455,1.45454545 11.2727273,1.45454545' id='Fill-6' fill-opacity='0.5'%3E%3C/path%3E %3Cpath d='M2.54545455,10.1818182 L4.72727273,10.1818182 C5.32945455,10.1818182 5.81818182,10.6705455 5.81818182,11.2727273 L5.81818182,13.4545455 C5.81818182,14.0578182 5.32945455,14.5454545 4.72727273,14.5454545 L2.54545455,14.5454545 C1.94327273,14.5454545 1.45454545,14.0578182 1.45454545,13.4545455 L1.45454545,11.2727273 C1.45454545,10.6705455 1.94327273,10.1818182 2.54545455,10.1818182' id='Fill-6-Copy' fill-opacity='0.5'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 48.1 (47250) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Efill%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='fill' fill='%23575E75'%3E %3Cpath d='M14.0450969,9.69349504 L14.0306818,9.67916207 C13.4396629,9.36383682 12.5170968,8.69018743 11.4215496,7.60088203 C11.0900024,7.27122381 10.7872854,6.95589857 10.5422288,6.65490628 C10.71521,6.4399118 10.8881911,6.22491731 11.0611722,6.00992282 C11.3783043,6.26791621 11.7242666,6.58324146 12.084644,6.9415656 C12.3152855,7.17089305 12.5026817,7.37155458 12.690078,7.5722161 C12.7189081,7.61521499 12.7621534,7.65821389 12.8198138,7.70121279 C13.6270591,8.6185226 14.1027573,9.36383682 14.3189837,9.7938258 C14.3189837,9.80815877 14.3333988,9.82249173 14.3333988,9.8368247 C14.2469082,9.7938258 14.1460025,9.7508269 14.0450969,9.69349504 M10.5998892,10.0661521 C9.7349835,10.53914 8.91332309,10.983462 7.61596455,10.6824697 C6.17445506,10.3528115 5.4825305,9.76515987 5.19422861,9.42116869 L8.3078891,5.40793826 C8.52411553,5.83792723 8.84124762,6.28224917 9.1727948,6.69790518 C8.82683252,7.21389195 8.55294572,7.64388093 8.42320986,7.84454245 C8.27905891,8.08820287 8.35113439,8.41786108 8.6106061,8.5755237 C8.69709667,8.63285557 8.79800233,8.6615215 8.8844929,8.6615215 C9.07188913,8.6615215 9.24487027,8.56119074 9.34577594,8.40352811 C9.50434198,8.13120176 9.69173821,7.84454245 9.89354954,7.55788313 C10.1962665,7.90187431 10.4701533,8.17420066 10.6575496,8.36052922 C11.0755873,8.77618523 11.4936251,9.14884234 11.8972477,9.47850055 C11.4215496,9.60749724 11.0035119,9.85115766 10.5998892,10.0661521 M10.2106816,5.33627343 C10.0953609,5.49393605 9.96562502,5.65159868 9.85030426,5.79492834 C9.50434198,5.33627343 9.28811556,4.96361632 9.1727948,4.70562293 C9.41785141,4.80595369 9.76381369,5.02094818 10.2106816,5.33627343 M13.5117384,4.07497244 C13.6703044,4.07497244 13.8432855,4.10363837 13.8721157,4.1753032 C14.0450969,4.49062845 13.6270591,5.49393605 13.0648704,6.3969129 L12.848644,6.18191841 C12.6180025,5.95259096 12.2287949,5.59426681 11.781927,5.20727674 C12.4450213,4.53362734 13.0504553,4.07497244 13.5117384,4.07497244 M16.5533234,12.1587652 C16.337097,11.5997795 15.9911347,11.0981257 15.587512,10.6681367 C15.5442667,10.6108049 15.4866064,10.567806 15.428946,10.5248071 C15.6740026,9.99448732 15.2703799,9.23484013 14.9244177,8.69018743 C14.6505309,8.24586549 14.2757384,7.74421169 13.8288705,7.24255788 C14.3910592,6.38257993 15.3568705,4.676957 14.8379271,3.67364939 C14.679361,3.37265711 14.3189837,3 13.5117384,3 L13.4973233,3 C12.6756629,3 11.7675119,3.65931643 10.9458515,4.51929438 C10.0232854,3.84564498 9.01422875,3.31532525 8.40879477,3.65931643 C8.35113439,3.68798236 8.27905891,3.71664829 8.23581363,3.77398015 C8.22139853,3.78831312 8.19256835,3.80264609 8.17815325,3.83131202 C8.16373816,3.84564498 8.14932306,3.85997795 8.13490797,3.88864388 L8.12049287,3.91730981 L4.12751158,9.04851158 C4.11309649,9.04851158 4.11309649,9.04851158 4.09868139,9.06284454 L3.20494551,10.2238148 L3.16170023,10.2668137 C3.11845494,10.3098126 3.08962475,10.3671444 3.07520966,10.4101433 L3.07520966,10.4244763 C2.62834171,11.3417861 4.28607763,13.1334068 5.06449275,13.92172 C5.75641731,14.6097023 7.28441737,16 8.23581363,16 C8.43762496,16 8.596191,15.9426681 8.74034195,15.8136714 L14.2613233,11.5567806 C14.2901535,11.5424476 14.3045686,11.5137817 14.3333988,11.4851158 C14.362229,11.5137817 14.3766441,11.5567806 14.3910592,11.5854465 C14.5640403,11.9294377 14.679361,12.2877619 14.6937761,12.6747519 C14.7370214,13.061742 14.7081912,13.463065 14.6505309,13.8500551 L14.6505309,13.8643881 C14.6361158,13.9790518 14.6361158,14.0793826 14.6505309,14.1940463 C14.7514365,14.8390298 15.3568705,15.2833517 15.9911347,15.1830209 C16.639814,15.0826902 17.0866819,14.4807056 16.9857762,13.8357222 C16.8992857,13.2767365 16.7839649,12.7034179 16.5533234,12.1587652' id='Fill-1'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eline%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-linecap='square'%3E %3Cg id='line' stroke='%23575E75' stroke-width='2'%3E %3Cpath d='M5,15 L15,5' id='Line'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./loupe.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='8px' height='5px' viewBox='0 0 8 5' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Edropdown-caret%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='dropdown-caret' fill='%23855CD6'%3E %3Cpath d='M4,5 C3.72520708,5 3.45163006,4.89695045 3.24127973,4.68965311 L0.314613572,1.80666227 C-0.104871191,1.39326583 -0.104871191,0.724642023 0.314613572,0.310047331 C0.732882438,-0.10334911 7.26711756,-0.10334911 7.68538643,0.310047331 C8.10487119,0.723443772 8.10487119,1.39326583 7.68538643,1.80666227 L4.75993617,4.68965311 C4.54958583,4.89695045 4.27600882,5 4,5'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Egroup%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='group' stroke-width='0.75'%3E %3Cg id='group-icon' transform='translate(2.000000, 2.000000)'%3E %3Crect id='Rectangle-2' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='0' y='0' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy-2' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='13' y='0' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='0' y='13' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy-3' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='13' y='13' width='3' height='3'%3E%3C/rect%3E %3Cpath d='M1.5,3 L1.5,13' id='Line' stroke='%23855CD6' stroke-linecap='square'%3E%3C/path%3E %3Cpath d='M14.5,3 L14.5,13' id='Line-Copy' stroke='%23855CD6' stroke-linecap='square'%3E%3C/path%3E %3Cpath d='M13,1.5 L3,1.5' id='Line-Copy-2' stroke='%23855CD6' stroke-linecap='square'%3E%3C/path%3E %3Cpath d='M13,14.5 L3,14.5' id='Line-Copy-3' stroke='%23855CD6' stroke-linecap='square'%3E%3C/path%3E %3Cg id='Group' transform='translate(8.000000, 8.000000) rotate(180.000000) translate(-8.000000, -8.000000) translate(4.000000, 4.000000)' stroke='%23575E75'%3E %3Crect id='Rectangle-3-Copy' fill='%23FFFFFF' transform='translate(5.500000, 5.500000) rotate(180.000000) translate(-5.500000, -5.500000) ' x='3' y='3' width='5' height='5' rx='0.5'%3E%3C/rect%3E %3Crect id='Rectangle-3' fill='%23575E75' transform='translate(2.500000, 2.500000) rotate(180.000000) translate(-2.500000, -2.500000) ' x='0' y='0' width='5' height='5' rx='0.5'%3E%3C/rect%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eredo%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='redo' fill='%23855CD6'%3E %3Cpath d='M17.5581635,12.7700651 L13.8403972,16.4941315 C13.5610922,16.7671364 13.1830854,16.9211391 12.7903784,16.9211391 C12.3990715,16.9211391 12.0210647,16.7671364 11.7403597,16.4941315 L8.02399342,12.7700651 C7.5969858,12.3430574 7.47098355,11.7060461 7.70198767,11.1530362 C7.93299179,10.6000263 8.46500128,10.24302 9.06701202,10.24302 L10.4040359,10.24302 C10.3690352,9.92101423 10.2780336,9.55700774 10.1240309,9.17200087 C10.07573,9.05999887 10.0260291,8.94799688 9.97002813,8.83599488 C9.89302676,8.70999263 9.90072689,8.67499201 9.79502501,8.52098926 C9.62702201,8.26898476 9.47301926,8.07998139 9.29031601,7.86297752 C8.9200094,7.4639704 8.47200141,7.12096429 7.99599292,6.86895979 C7.5129843,6.6169553 7.00897531,6.46295255 6.56096732,6.37895105 C6.11995945,6.30194968 5.71395221,6.29494955 5.47594796,6.29494955 C5.35694584,6.28794943 5.2029431,6.31594993 5.12594172,6.32295005 C5.04194022,6.32995018 4.99293935,6.3369503 4.99293935,6.3369503 C4.49593048,6.38595117 4.04792249,6.02194468 3.99892162,5.52493582 C3.95692087,5.10492832 4.20192524,4.72692158 4.57293186,4.58691908 C4.57293186,4.58691908 4.62193273,4.56591871 4.6989341,4.53791821 C4.78993573,4.50991771 4.87393723,4.46091684 5.06994072,4.40491584 C5.46194772,4.28591371 5.95895658,4.15991147 6.60996819,4.09691034 C7.25397968,4.04090934 8.03099354,4.05490959 8.85070816,4.22291259 C9.66902276,4.39791571 10.5300381,4.72692158 11.3280524,5.20293007 C11.7060591,5.44793444 12.1120663,5.73493956 12.427072,6.01494456 C12.5670745,6.11994643 12.8050787,6.35795068 12.9450812,6.5049533 C13.1060841,6.67295629 13.2530867,6.84095929 13.4007893,7.01596241 C13.9670994,7.7159749 14.3871069,8.47198839 14.6601118,9.15800062 C14.8211147,9.55000762 14.9331167,9.92101423 15.0171182,10.24302 L16.5151449,10.24302 C17.1171556,10.24302 17.6491651,10.6000263 17.8801692,11.1530362 C18.1111734,11.7060461 17.9851711,12.3430574 17.5581635,12.7700651' id='Fill-1' transform='translate(10.994247, 10.494247) rotate(-45.000000) translate(-10.994247, -10.494247) '%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Esend-backward%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='send-backward'%3E %3Cg id='send-forward' transform='translate(10.000000, 10.000000) rotate(180.000000) translate(-10.000000, -10.000000) translate(2.000000, 3.000000)'%3E %3Cpath d='M12.3476736,5.92549723 L10.2407376,5.92549723 L9.33601611,12.7635981 C9.23807603,13.5476661 8.54025295,14.1003698 7.78121732,13.9846876 C7.16909181,13.8947126 6.69163391,13.3805697 6.6169546,12.7635981 L5.7122331,5.92549723 L3.65426714,5.92549723 C3.0678509,5.92549723 2.78504892,5.19284356 3.190276,4.76867564 L7.53514286,0.192803597 C7.79223558,-0.0642678658 8.20970517,-0.0642678658 8.45333113,0.192803597 L12.812889,4.76867564 C13.2168918,5.19284356 12.9230716,5.92549723 12.3476736,5.92549723' id='Fill-1' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M12,8 L16,8' id='Stroke-6' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M0,8 L4,8' id='Stroke-10' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Esend-forward%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='send-forward'%3E %3Cg transform='translate(2.000000, 3.000000)'%3E %3Cpath d='M12.3476736,5.92549723 L10.2407376,5.92549723 L9.33601611,12.7635981 C9.23807603,13.5476661 8.54025295,14.1003698 7.78121732,13.9846876 C7.16909181,13.8947126 6.69163391,13.3805697 6.6169546,12.7635981 L5.7122331,5.92549723 L3.65426714,5.92549723 C3.0678509,5.92549723 2.78504892,5.19284356 3.190276,4.76867564 L7.53514286,0.192803597 C7.79223558,-0.0642678658 8.20970517,-0.0642678658 8.45333113,0.192803597 L12.812889,4.76867564 C13.2168918,5.19284356 12.9230716,5.92549723 12.3476736,5.92549723' id='Fill-1' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M12,8 L16,8' id='Stroke-6' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M0,8 L4,8' id='Stroke-10' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eundo%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='undo' fill='%23855CD6'%3E %3Cpath d='M15.5581635,12.7700651 L11.8403972,16.4941315 C11.5610922,16.7671364 11.1830854,16.9211391 10.7903784,16.9211391 C10.3990715,16.9211391 10.0210647,16.7671364 9.74035971,16.4941315 L6.02399342,12.7700651 C5.5969858,12.3430574 5.47098355,11.7060461 5.70198767,11.1530362 C5.93299179,10.6000263 6.46500128,10.24302 7.06701202,10.24302 L8.40403587,10.24302 C8.36903525,9.92101423 8.27803362,9.55700774 8.12403088,9.17200087 C8.07573002,9.05999887 8.02602913,8.94799688 7.97002813,8.83599488 C7.89302676,8.70999263 7.90072689,8.67499201 7.79502501,8.52098926 C7.62702201,8.26898476 7.47301926,8.07998139 7.29031601,7.86297752 C6.9200094,7.4639704 6.47200141,7.12096429 5.99599292,6.86895979 C5.5129843,6.6169553 5.00897531,6.46295255 4.56096732,6.37895105 C4.11995945,6.30194968 3.71395221,6.29494955 3.47594796,6.29494955 C3.35694584,6.28794943 3.2029431,6.31594993 3.12594172,6.32295005 C3.04194022,6.32995018 2.99293935,6.3369503 2.99293935,6.3369503 C2.49593048,6.38595117 2.04792249,6.02194468 1.99892162,5.52493582 C1.95692087,5.10492832 2.20192524,4.72692158 2.57293186,4.58691908 C2.57293186,4.58691908 2.62193273,4.56591871 2.6989341,4.53791821 C2.78993573,4.50991771 2.87393723,4.46091684 3.06994072,4.40491584 C3.46194772,4.28591371 3.95895658,4.15991147 4.60996819,4.09691034 C5.25397968,4.04090934 6.03099354,4.05490959 6.85070816,4.22291259 C7.66902276,4.39791571 8.53003812,4.72692158 9.32805235,5.20293007 C9.7060591,5.44793444 10.1120663,5.73493956 10.427072,6.01494456 C10.5670745,6.11994643 10.8050787,6.35795068 10.9450812,6.5049533 C11.1060841,6.67295629 11.2530867,6.84095929 11.4007893,7.01596241 C11.9670994,7.7159749 12.3871069,8.47198839 12.6601118,9.15800062 C12.8211147,9.55000762 12.9331167,9.92101423 13.0171182,10.24302 L14.5151449,10.24302 C15.1171556,10.24302 15.6491651,10.6000263 15.8801692,11.1530362 C16.1111734,11.7060461 15.9851711,12.3430574 15.5581635,12.7700651' id='Fill-1' transform='translate(8.994247, 10.494247) scale(-1, 1) rotate(-45.000000) translate(-8.994247, -10.494247) '%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eungroup%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='ungroup' stroke-width='0.75'%3E %3Cg id='ungroup-icon' transform='translate(10.000000, 10.000000) rotate(180.000000) translate(-10.000000, -10.000000) translate(2.000000, 2.000000)'%3E %3Crect id='Rectangle-3-Copy' stroke='%23575E75' fill='%23FFFFFF' x='6.5' y='6.5' width='8' height='8' rx='0.5'%3E%3C/rect%3E %3Crect id='Rectangle-3' stroke='%23575E75' fill='%23575E75' x='1.5' y='1.5' width='8' height='8' rx='0.5'%3E%3C/rect%3E %3Crect id='Rectangle-2' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='0' y='0' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy-2' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='8' y='0' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='0' y='8' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy-3' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='8' y='8' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy-4' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='13' y='5' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy-5' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='13' y='13' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy-6' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='5' y='13' width='3' height='3'%3E%3C/rect%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Ecopy v2%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='copy-v2'%3E %3Cg id='copy' transform='translate(3.000000, 2.000000)'%3E %3Cpolyline id='Path-3' stroke-opacity='0.5' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round' stroke-dasharray='1,2' points='0.503173828 3 0.503173828 15.5 13 15.5'%3E%3C/polyline%3E %3Cpath d='M2,1.00684547 C2,0.450780073 2.45303631,0 2.99703014,0 L10,0 L10,2.34995317 C10,3.26124887 10.7336617,4 11.6500468,4 L14,4 L14,13.0046024 C14,13.5543453 13.544239,14 12.9975267,14 L3.00247329,14 C2.44882258,14 2,13.5500512 2,12.9931545 L2,1.00684547 Z' id='Rectangle-4' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M11,0 L14,3 L11.9989566,3 C11.4472481,3 11,2.55733967 11,2.00104344 L11,0 Z' id='Rectangle-5' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M9.8115942,9.1884058 L8.6884058,9.1884058 L8.6884058,10.3115942 C8.6884058,10.6859903 8.38647343,11 8,11 C7.61352657,11 7.3115942,10.6859903 7.3115942,10.3115942 L7.3115942,9.1884058 L6.1884058,9.1884058 C5.81400966,9.1884058 5.5,8.88647343 5.5,8.5 C5.5,8.11352657 5.81400966,7.8115942 6.1884058,7.8115942 L7.3115942,7.8115942 L7.3115942,6.6884058 C7.3115942,6.31280193 7.61352657,6 8,6 C8.38647343,6 8.6884058,6.31280193 8.6884058,6.6884058 L8.6884058,7.8115942 L9.8115942,7.8115942 C10.1859903,7.8115942 10.5,8.11352657 10.5,8.5 C10.5,8.88647343 10.1859903,9.1884058 9.8115942,9.1884058 Z' id='Fill-1' stroke='%23FFFFFF' stroke-width='0.25' fill='%23FFFFFF'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Epaste v2%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='paste-v2'%3E %3Cg id='paste' transform='translate(3.000000, 2.000000)'%3E %3Cpolyline id='Path-3' stroke-opacity='0.5' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round' stroke-dasharray='1,2' transform='translate(6.748413, 6.750000) scale(1, -1) translate(-6.748413, -6.750000) ' points='0.5 0.5 0.5 13 12.9968262 13'%3E%3C/polyline%3E %3Cpath d='M2,3.00684547 C2,2.45078007 2.45303631,2 2.99703014,2 L10,2 L10,4.34995317 C10,5.26124887 10.7336617,6 11.6500468,6 L14,6 L14,15.0046024 C14,15.5543453 13.544239,16 12.9975267,16 L3.00247329,16 C2.44882258,16 2,15.5500512 2,14.9931545 L2,3.00684547 Z' id='Rectangle-4' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M11,2 L14,5 L11.9989566,5 C11.4472481,5 11,4.55733967 11,4.00104344 L11,2 Z' id='Rectangle-5' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M8.34791833,12.8771885 C8.26180668,12.9633001 8.14699113,13.0063559 8.03217559,13.0063559 C7.9030081,13.0063559 7.78819256,12.9633001 7.70208091,12.8771885 L5.86503222,11.0401398 C5.73586474,10.8966203 5.69280891,10.7100451 5.76456862,10.5378218 C5.83632834,10.3655985 5.99419971,10.2651349 6.18077497,10.2651349 L6.92707599,10.2651349 L7.28587456,7.66743321 C7.31457845,7.46650601 7.41504205,7.27993075 7.57291342,7.16511521 C7.73078479,7.03594773 7.94606393,6.97853995 8.13263919,7.00724384 C8.47708582,7.06321642 8.74977273,7.33733852 8.79282856,7.66743321 L9.16597907,10.2651349 L9.86922427,10.2651349 C10.0557995,10.2651349 10.2136709,10.3799504 10.2854306,10.5521737 C10.3571903,10.7100451 10.3141345,10.9109723 10.184967,11.0401398 L8.34791833,12.8771885 Z' id='Fill-1' fill='%23FFFFFF'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Ecurved-point%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='curved-point'%3E %3Cpath d='M2,15 C2,10.5818452 5.58151214,7 10.000744,7 C14.4184879,7 18,10.5818452 18,15' id='Stroke-3' stroke='%23855CD6' stroke-width='0.75' fill-opacity='0.25' fill='%23855CD6' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M3,7 L17,7' id='Stroke-7' stroke='%23855CD6' stroke-width='0.75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Ccircle id='Oval-4' fill-opacity='0.25' fill='%23855CD6' cx='10' cy='7' r='3'%3E%3C/circle%3E %3Ccircle id='Oval-4' fill='%23855CD6' cx='10' cy='7' r='2'%3E%3C/circle%3E %3Ccircle id='Oval-5' fill='%23855CD6' cx='3' cy='7' r='1'%3E%3C/circle%3E %3Ccircle id='Oval-5-Copy' fill='%23855CD6' cx='17' cy='7' r='1'%3E%3C/circle%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eflip-horizontal%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='flip-horizontal'%3E %3Cg transform='translate(2.000000, 3.000000)'%3E %3Ccircle id='Oval' fill='%23575E75' opacity='0.5' cx='8' cy='0.75' r='1'%3E%3C/circle%3E %3Ccircle id='Oval' fill='%23575E75' opacity='0.5' cx='8' cy='13.25' r='1'%3E%3C/circle%3E %3Ccircle id='Oval-Copy' fill='%23575E75' opacity='0.5' cx='8' cy='3.875' r='1'%3E%3C/circle%3E %3Ccircle id='Oval-Copy-2' fill='%23575E75' opacity='0.5' cx='8' cy='7' r='1'%3E%3C/circle%3E %3Ccircle id='Oval-Copy-3' fill='%23575E75' opacity='0.5' cx='8' cy='10.125' r='1'%3E%3C/circle%3E %3Cpath d='M16,3.08425423 L16,10.9157458 C16,11.4342626 15.2574491,11.6956996 14.8235798,11.3282353 L10.2019293,7.41103711 C9.93269025,7.18445835 9.93269025,6.81408922 10.2019293,6.58751046 L14.8235798,2.67176469 C15.2574491,2.30430042 16,2.56573745 16,3.08425423' id='Fill-11' fill='%23855CD6' opacity='0.5'%3E%3C/path%3E %3Cpath d='M0,10.9157458 L0,3.08425423 C0,2.56573745 0.742550911,2.30430042 1.17470525,2.67176469 L5.79807074,6.58896289 C6.06730975,6.81554165 6.06730975,7.18591078 5.79807074,7.41248954 L1.17470525,11.3282353 C0.742550911,11.6956996 0,11.4342626 0,10.9157458' id='Fill-14' fill='%23855CD6'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eflip-vertical%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='flip-vertical'%3E %3Cg id='flip-horizontal' transform='translate(10.000000, 10.000000) rotate(90.000000) translate(-10.000000, -10.000000) translate(2.000000, 3.000000)'%3E %3Ccircle id='Oval' fill='%23575E75' opacity='0.5' cx='8' cy='0.75' r='1'%3E%3C/circle%3E %3Ccircle id='Oval' fill='%23575E75' opacity='0.5' cx='8' cy='13.25' r='1'%3E%3C/circle%3E %3Ccircle id='Oval-Copy' fill='%23575E75' opacity='0.5' cx='8' cy='3.875' r='1'%3E%3C/circle%3E %3Ccircle id='Oval-Copy-2' fill='%23575E75' opacity='0.5' cx='8' cy='7' r='1'%3E%3C/circle%3E %3Ccircle id='Oval-Copy-3' fill='%23575E75' opacity='0.5' cx='8' cy='10.125' r='1'%3E%3C/circle%3E %3Cpath d='M16,3.08425423 L16,10.9157458 C16,11.4342626 15.2574491,11.6956996 14.8235798,11.3282353 L10.2019293,7.41103711 C9.93269025,7.18445835 9.93269025,6.81408922 10.2019293,6.58751046 L14.8235798,2.67176469 C15.2574491,2.30430042 16,2.56573745 16,3.08425423' id='Fill-11' fill='%23855CD6' opacity='0.5'%3E%3C/path%3E %3Cpath d='M0,10.9157458 L0,3.08425423 C0,2.56573745 0.742550911,2.30430042 1.17470525,2.67176469 L5.79807074,6.58896289 C6.06730975,6.81554165 6.06730975,7.18591078 5.79807074,7.41248954 L1.17470525,11.3282353 C0.742550911,11.6956996 0,11.4342626 0,10.9157458' id='Fill-14' fill='%23855CD6'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Estraight-point%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='straight-point' fill='%23855CD6'%3E %3Cpolyline id='Path-2' stroke='%23855CD6' stroke-width='0.75' fill-opacity='0.25' stroke-linecap='round' stroke-linejoin='round' points='2 15 10 7 18 15'%3E%3C/polyline%3E %3Ccircle id='Oval-4' fill-opacity='0.25' cx='10' cy='7' r='3'%3E%3C/circle%3E %3Ccircle id='Oval-4' cx='10' cy='7' r='2'%3E%3C/circle%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eoval-outlined%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='oval-outlined' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='Group' transform='translate(4.000000, 4.000000)' fill='%23575E75'%3E %3Cpolygon id='Fill-1' points='0 9.33333333 1.33333333 9.33333333 1.33333333 2.66666667 0 2.66666667'%3E%3C/polygon%3E %3Cpolygon id='Fill-2' points='1.33333333 2.66666667 2.66666667 2.66666667 2.66666667 1.33333333 1.33333333 1.33333333'%3E%3C/polygon%3E %3Cpolygon id='Fill-3' points='1.33333333 10.6666667 2.66666667 10.6666667 2.66666667 9.33333333 1.33333333 9.33333333'%3E%3C/polygon%3E %3Cpolygon id='Fill-4' points='2.66666667 1.33333333 9.33333333 1.33333333 9.33333333 0 2.66666667 0'%3E%3C/polygon%3E %3Cpolygon id='Fill-5' points='9.33333333 2.66666667 10.6666667 2.66666667 10.6666667 1.33333333 9.33333333 1.33333333'%3E%3C/polygon%3E %3Cpolygon id='Fill-6' points='10.6666667 9.33333333 12 9.33333333 12 2.66666667 10.6666667 2.66666667'%3E%3C/polygon%3E %3Cpolygon id='Fill-7' points='9.33333333 10.6666667 10.6666667 10.6666667 10.6666667 9.33333333 9.33333333 9.33333333'%3E%3C/polygon%3E %3Cpolygon id='Fill-8' points='2.66666667 12 9.33333333 12 9.33333333 10.6666667 2.66666667 10.6666667'%3E%3C/polygon%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Erectange-outlined%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='rectange-outlined' stroke='none' stroke-width='1.33333333' fill='none' fill-rule='evenodd'%3E %3Crect id='rectangle-icon' stroke='%23575E75' x='4.5' y='4.5' width='11' height='11'%3E%3C/rect%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eoval%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='oval' stroke-width='1.5' stroke='%23575E75'%3E %3Ccircle id='oval-icon' cx='10' cy='10' r='5'%3E%3C/circle%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Erectangle%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-linecap='round' stroke-linejoin='round'%3E %3Cg id='rectangle' stroke='%23575E75' stroke-width='1.5'%3E %3Crect id='rectangle-icon' x='5' y='5' width='10' height='10'%3E%3C/rect%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Ereshape%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='reshape'%3E %3Cg id='reshape-icon' transform='translate(3.000000, 2.000000)'%3E %3Cpath d='M6.3718,4e-05 C6.3718,1.20298846 6.03840639,2.32811001 5.45898306,3.28804076 C5.31876362,3.52034235 4.30079812,3.15107034 3.82818604,3.61859131 C3.35557395,4.08611228 3.47873759,5.34529147 3.26181884,5.47482181 C2.30759304,6.04462589 1.19191205,6.37204 -0.0002,6.37204' id='Stroke-1' stroke='%23575E75' stroke-width='0.75'%3E%3C/path%3E %3Cpath d='M4,6.94999094 C2.85887984,6.71835578 2,5.70947896 2,4.5 C2,3.11928813 3.11928813,2 4.5,2 C5.88071187,2 7,3.11928813 7,4.5 C7,4.56854233 6.99724162,4.63644042 6.99182982,4.70358929 L6.68137747,4.42017327 C5.65792772,3.48493325 4,4.20484091 4,5.595932 L4,6.94999094 Z' id='Combined-Shape' fill='%23575E75'%3E%3C/path%3E %3Cpath d='M4,7.96455557 C2.30385293,7.72194074 1,6.26323595 1,4.5 C1,2.56700338 2.56700338,1 4.5,1 C6.43299662,1 8,2.56700338 8,4.5 C8,4.84508345 7.95005914,5.1785026 7.85701065,5.4934242 L6.68137747,4.42017327 C5.65792772,3.48493325 4,4.20484091 4,5.595932 L4,7.96455557 Z' id='Oval-2' fill-opacity='0.15' fill='%23575E75'%3E%3C/path%3E %3Cpath d='M7.87915329,13.1684522 L8.98467414,15.6316703 C9.20235954,16.1186581 9.76980913,16.3337238 10.2516521,16.1137141 C10.7334951,15.8924683 10.9462887,15.3189598 10.7286032,14.833208 L9.63583183,12.3973461 L12.3974628,12.3973461 C12.945512,12.3973461 13.207518,11.7313818 12.8048941,11.3644462 L6.00716065,5.15870674 C5.6225647,4.80725864 5,5.07769498 5,5.595932 L5,14.8026807 C5,15.3507015 5.68145595,15.608033 6.04802397,15.1994001 L7.87915329,13.1684522 Z' id='select-icon' fill='%23575E75'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eselect%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='select' fill='%23575E75'%3E %3Cpath d='M9.08480709,12.7519131 L10.2692937,15.3910753 C10.5025281,15.912848 11.1105098,16.1432755 11.6267701,15.9075508 C12.1430304,15.6705018 12.3710236,15.0560284 12.1377892,14.53558 L10.9669627,11.925728 L13.925853,11.925728 C14.5130486,11.925728 14.7937693,11.2121948 14.3623865,10.8190495 L7.0791007,4.17004294 C6.6670336,3.7934914 6,4.08324462 6,4.63849857 L6,14.5028722 C6,15.0900373 6.73013138,15.3657496 7.12288282,14.9279287 L9.08480709,12.7519131 Z' id='select-icon'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Etext%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='text' fill='%23575E75'%3E %3Cpath d='M16,4.35294118 L16,6.85176471 C16,7.04941176 15.8447059,7.20470588 15.6470588,7.20470588 L14.8988235,7.20470588 C14.7576471,7.20470588 14.6164706,7.12 14.5741176,6.99294118 L14.2070588,6.11764706 L11.0588235,6.11764706 L11.0588235,14.2917647 L11.92,14.6164706 C12.0611765,14.6729412 12.16,14.8 12.16,14.9552941 L12.16,15.6470588 C12.16,15.8447059 11.9905882,16 11.8070588,16 L8.20705882,16 C8.02352941,16 7.85411765,15.8447059 7.85411765,15.6470588 L7.85411765,14.9552941 C7.85411765,14.8 7.95294118,14.6729412 8.08,14.6164706 L8.94117647,14.2917647 L8.94117647,6.11764706 L5.80705882,6.11764706 L5.44,6.99294118 C5.38352941,7.12 5.25647059,7.20470588 5.11529412,7.20470588 L4.35294118,7.20470588 C4.16941176,7.20470588 4,7.04941176 4,6.85176471 L4,4.35294118 C4,4.15529412 4.16941176,4 4.35294118,4 L15.6470588,4 C15.8447059,4 16,4.15529412 16,4.35294118' id='text-icon'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Etext%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='text' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cpolygon id='Page-1' fill='%23575E75' points='4 4 4 8 6 8 6 6 9 6 9 14 7 14 7 16 13 16 13 14 11 14 11 6 14 6 14 8 16 8 16 4'%3E%3C/polygon%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0'?%3E %3Csvg xmlns='http://www.w3.org/2000/svg' id='Layer_1' data-name='Layer 1' viewBox='6 6 24 24'%3E %3Cdefs%3E %3Cstyle%3E .cls-4%7Bfill:none;stroke:%23575e75;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;%7D %3C/style%3E %3C/defs%3E %3Ctitle%3Ezoom-in%3C/title%3E %3Cg class='cls-3'%3E %3Ccircle class='cls-4' cx='18' cy='18' r='7'/%3E %3Cline class='cls-4' x1='23' y1='23' x2='26' y2='26'/%3E %3Cline class='cls-4' x1='16' y1='18' x2='20' y2='18'/%3E %3Cline class='cls-4' x1='18' y1='16' x2='18' y2='20'/%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0'?%3E %3Csvg xmlns='http://www.w3.org/2000/svg' id='Layer_1' data-name='Layer 1' viewBox='6 6 24 24'%3E %3Cdefs%3E %3Cstyle%3E .cls-4%7Bfill:none;stroke:%23575e75;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;%7D %3C/style%3E %3C/defs%3E %3Ctitle%3Ezoom-out%3C/title%3E %3Cg class='cls-3'%3E %3Ccircle class='cls-4' cx='18' cy='18' r='7'/%3E %3Cline class='cls-4' x1='23' y1='23' x2='26' y2='26'/%3E %3Cline class='cls-4' x1='16' y1='18' x2='20' y2='18'/%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0'?%3E %3Csvg xmlns='http://www.w3.org/2000/svg' id='Layer_1' data-name='Layer 1' viewBox='6 6 24 24'%3E %3Cdefs%3E %3Cstyle%3E .cls-4%7Bfill:%23575e75;%7D %3C/style%3E %3C/defs%3E %3Ctitle%3Ezoom-reset%3C/title%3E %3Cg class='cls-3'%3E %3Crect class='cls-4' x='13' y='14' width='10' height='2' rx='1' ry='1'/%3E %3Crect class='cls-4' x='13' y='20' width='10' height='2' rx='1' ry='1'/%3E %3C/g%3E %3C/svg%3E\"","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.en=a())}(this,function(){\"use strict\";return[{locale:\"en\",pluralRuleFunction:function(e,a){var t=String(e).split(\".\"),o=!t[1],n=Number(t[0])==e,r=n&&t[0].slice(-1),i=n&&t[0].slice(-2);return a?1==r&&11!=i?\"one\":2==r&&12!=i?\"two\":3==r&&13!=i?\"few\":\"other\":1==e&&o?\"one\":\"other\"},fields:{year:{displayName:\"year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{one:\"in {0} year\",other:\"in {0} years\"},past:{one:\"{0} year ago\",other:\"{0} years ago\"}}},\"year-short\":{displayName:\"yr.\",relative:{0:\"this yr.\",1:\"next yr.\",\"-1\":\"last yr.\"},relativeTime:{future:{one:\"in {0} yr.\",other:\"in {0} yr.\"},past:{one:\"{0} yr. ago\",other:\"{0} yr. ago\"}}},month:{displayName:\"month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{one:\"in {0} month\",other:\"in {0} months\"},past:{one:\"{0} month ago\",other:\"{0} months ago\"}}},\"month-short\":{displayName:\"mo.\",relative:{0:\"this mo.\",1:\"next mo.\",\"-1\":\"last mo.\"},relativeTime:{future:{one:\"in {0} mo.\",other:\"in {0} mo.\"},past:{one:\"{0} mo. ago\",other:\"{0} mo. ago\"}}},day:{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},\"day-short\":{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},hour:{displayName:\"hour\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hour\",other:\"in {0} hours\"},past:{one:\"{0} hour ago\",other:\"{0} hours ago\"}}},\"hour-short\":{displayName:\"hr.\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hr.\",other:\"in {0} hr.\"},past:{one:\"{0} hr. ago\",other:\"{0} hr. ago\"}}},minute:{displayName:\"minute\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} minute\",other:\"in {0} minutes\"},past:{one:\"{0} minute ago\",other:\"{0} minutes ago\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} min.\",other:\"in {0} min.\"},past:{one:\"{0} min. ago\",other:\"{0} min. ago\"}}},second:{displayName:\"second\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} second\",other:\"in {0} seconds\"},past:{one:\"{0} second ago\",other:\"{0} seconds ago\"}}},\"second-short\":{displayName:\"sec.\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} sec.\",other:\"in {0} sec.\"},past:{one:\"{0} sec. ago\",other:\"{0} sec. ago\"}}}}},{locale:\"en-001\",parentLocale:\"en\",fields:{year:{displayName:\"year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{one:\"in {0} year\",other:\"in {0} years\"},past:{one:\"{0} year ago\",other:\"{0} years ago\"}}},\"year-short\":{displayName:\"yr\",relative:{0:\"this yr.\",1:\"next yr.\",\"-1\":\"last yr.\"},relativeTime:{future:{one:\"in {0} yr\",other:\"in {0} yr\"},past:{one:\"{0} yr ago\",other:\"{0} yr ago\"}}},month:{displayName:\"month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{one:\"in {0} month\",other:\"in {0} months\"},past:{one:\"{0} month ago\",other:\"{0} months ago\"}}},\"month-short\":{displayName:\"mo\",relative:{0:\"this mo.\",1:\"next mo.\",\"-1\":\"last mo.\"},relativeTime:{future:{one:\"in {0} mo\",other:\"in {0} mo\"},past:{one:\"{0} mo ago\",other:\"{0} mo ago\"}}},day:{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},\"day-short\":{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},hour:{displayName:\"hour\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hour\",other:\"in {0} hours\"},past:{one:\"{0} hour ago\",other:\"{0} hours ago\"}}},\"hour-short\":{displayName:\"hr\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hr\",other:\"in {0} hr\"},past:{one:\"{0} hr ago\",other:\"{0} hr ago\"}}},minute:{displayName:\"minute\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} minute\",other:\"in {0} minutes\"},past:{one:\"{0} minute ago\",other:\"{0} minutes ago\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} min\",other:\"in {0} min\"},past:{one:\"{0} min ago\",other:\"{0} min ago\"}}},second:{displayName:\"second\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} second\",other:\"in {0} seconds\"},past:{one:\"{0} second ago\",other:\"{0} seconds ago\"}}},\"second-short\":{displayName:\"sec\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} sec\",other:\"in {0} sec\"},past:{one:\"{0} sec ago\",other:\"{0} sec ago\"}}}}},{locale:\"en-150\",parentLocale:\"en-001\"},{locale:\"en-AG\",parentLocale:\"en-001\"},{locale:\"en-AI\",parentLocale:\"en-001\"},{locale:\"en-AS\",parentLocale:\"en\"},{locale:\"en-AT\",parentLocale:\"en-150\"},{locale:\"en-AU\",parentLocale:\"en-001\",fields:{year:{displayName:\"year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{one:\"in {0} year\",other:\"in {0} years\"},past:{one:\"{0} year ago\",other:\"{0} years ago\"}}},\"year-short\":{displayName:\"yr\",relative:{0:\"this yr.\",1:\"next yr.\",\"-1\":\"last yr.\"},relativeTime:{future:{one:\"in {0} yr\",other:\"in {0} yrs\"},past:{one:\"{0} yr ago\",other:\"{0} yrs ago\"}}},month:{displayName:\"month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{one:\"in {0} month\",other:\"in {0} months\"},past:{one:\"{0} month ago\",other:\"{0} months ago\"}}},\"month-short\":{displayName:\"mo.\",relative:{0:\"this mo.\",1:\"next mo.\",\"-1\":\"last mo.\"},relativeTime:{future:{one:\"in {0} mo.\",other:\"in {0} mo.\"},past:{one:\"{0} mo. ago\",other:\"{0} mo. ago\"}}},day:{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},\"day-short\":{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},hour:{displayName:\"hour\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hour\",other:\"in {0} hours\"},past:{one:\"{0} hour ago\",other:\"{0} hours ago\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hr\",other:\"in {0} hrs\"},past:{one:\"{0} hr ago\",other:\"{0} hrs ago\"}}},minute:{displayName:\"minute\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} minute\",other:\"in {0} minutes\"},past:{one:\"{0} minute ago\",other:\"{0} minutes ago\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} min.\",other:\"in {0} mins\"},past:{one:\"{0} min. ago\",other:\"{0} mins ago\"}}},second:{displayName:\"second\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} second\",other:\"in {0} seconds\"},past:{one:\"{0} second ago\",other:\"{0} seconds ago\"}}},\"second-short\":{displayName:\"sec.\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} sec.\",other:\"in {0} secs\"},past:{one:\"{0} sec. ago\",other:\"{0} secs ago\"}}}}},{locale:\"en-BB\",parentLocale:\"en-001\"},{locale:\"en-BE\",parentLocale:\"en-001\"},{locale:\"en-BI\",parentLocale:\"en\"},{locale:\"en-BM\",parentLocale:\"en-001\"},{locale:\"en-BS\",parentLocale:\"en-001\"},{locale:\"en-BW\",parentLocale:\"en-001\"},{locale:\"en-BZ\",parentLocale:\"en-001\"},{locale:\"en-CA\",parentLocale:\"en-001\",fields:{year:{displayName:\"year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{one:\"in {0} year\",other:\"in {0} years\"},past:{one:\"{0} year ago\",other:\"{0} years ago\"}}},\"year-short\":{displayName:\"yr.\",relative:{0:\"this yr.\",1:\"next yr.\",\"-1\":\"last yr.\"},relativeTime:{future:{one:\"in {0} yr.\",other:\"in {0} yrs.\"},past:{one:\"{0} yr. ago\",other:\"{0} yrs. ago\"}}},month:{displayName:\"month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{one:\"in {0} month\",other:\"in {0} months\"},past:{one:\"{0} month ago\",other:\"{0} months ago\"}}},\"month-short\":{displayName:\"mo.\",relative:{0:\"this mo.\",1:\"next mo.\",\"-1\":\"last mo.\"},relativeTime:{future:{one:\"in {0} mo.\",other:\"in {0} mos.\"},past:{one:\"{0} mo. ago\",other:\"{0} mos. ago\"}}},day:{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},\"day-short\":{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},hour:{displayName:\"hour\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hour\",other:\"in {0} hours\"},past:{one:\"{0} hour ago\",other:\"{0} hours ago\"}}},\"hour-short\":{displayName:\"hr.\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hr.\",other:\"in {0} hrs.\"},past:{one:\"{0} hr. ago\",other:\"{0} hrs. ago\"}}},minute:{displayName:\"minute\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} minute\",other:\"in {0} minutes\"},past:{one:\"{0} minute ago\",other:\"{0} minutes ago\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} min.\",other:\"in {0} mins.\"},past:{one:\"{0} min. ago\",other:\"{0} mins. ago\"}}},second:{displayName:\"second\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} second\",other:\"in {0} seconds\"},past:{one:\"{0} second ago\",other:\"{0} seconds ago\"}}},\"second-short\":{displayName:\"sec.\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} sec.\",other:\"in {0} secs.\"},past:{one:\"{0} sec. ago\",other:\"{0} secs. ago\"}}}}},{locale:\"en-CC\",parentLocale:\"en-001\"},{locale:\"en-CH\",parentLocale:\"en-150\"},{locale:\"en-CK\",parentLocale:\"en-001\"},{locale:\"en-CM\",parentLocale:\"en-001\"},{locale:\"en-CX\",parentLocale:\"en-001\"},{locale:\"en-CY\",parentLocale:\"en-001\"},{locale:\"en-DE\",parentLocale:\"en-150\"},{locale:\"en-DG\",parentLocale:\"en-001\"},{locale:\"en-DK\",parentLocale:\"en-150\"},{locale:\"en-DM\",parentLocale:\"en-001\"},{locale:\"en-Dsrt\",pluralRuleFunction:function(e,a){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"en-ER\",parentLocale:\"en-001\"},{locale:\"en-FI\",parentLocale:\"en-150\"},{locale:\"en-FJ\",parentLocale:\"en-001\"},{locale:\"en-FK\",parentLocale:\"en-001\"},{locale:\"en-FM\",parentLocale:\"en-001\"},{locale:\"en-GB\",parentLocale:\"en-001\"},{locale:\"en-GD\",parentLocale:\"en-001\"},{locale:\"en-GG\",parentLocale:\"en-001\"},{locale:\"en-GH\",parentLocale:\"en-001\"},{locale:\"en-GI\",parentLocale:\"en-001\"},{locale:\"en-GM\",parentLocale:\"en-001\"},{locale:\"en-GU\",parentLocale:\"en\"},{locale:\"en-GY\",parentLocale:\"en-001\"},{locale:\"en-HK\",parentLocale:\"en-001\"},{locale:\"en-IE\",parentLocale:\"en-001\"},{locale:\"en-IL\",parentLocale:\"en-001\"},{locale:\"en-IM\",parentLocale:\"en-001\"},{locale:\"en-IN\",parentLocale:\"en-001\"},{locale:\"en-IO\",parentLocale:\"en-001\"},{locale:\"en-JE\",parentLocale:\"en-001\"},{locale:\"en-JM\",parentLocale:\"en-001\"},{locale:\"en-KE\",parentLocale:\"en-001\"},{locale:\"en-KI\",parentLocale:\"en-001\"},{locale:\"en-KN\",parentLocale:\"en-001\"},{locale:\"en-KY\",parentLocale:\"en-001\"},{locale:\"en-LC\",parentLocale:\"en-001\"},{locale:\"en-LR\",parentLocale:\"en-001\"},{locale:\"en-LS\",parentLocale:\"en-001\"},{locale:\"en-MG\",parentLocale:\"en-001\"},{locale:\"en-MH\",parentLocale:\"en\"},{locale:\"en-MO\",parentLocale:\"en-001\"},{locale:\"en-MP\",parentLocale:\"en\"},{locale:\"en-MS\",parentLocale:\"en-001\"},{locale:\"en-MT\",parentLocale:\"en-001\"},{locale:\"en-MU\",parentLocale:\"en-001\"},{locale:\"en-MW\",parentLocale:\"en-001\"},{locale:\"en-MY\",parentLocale:\"en-001\"},{locale:\"en-NA\",parentLocale:\"en-001\"},{locale:\"en-NF\",parentLocale:\"en-001\"},{locale:\"en-NG\",parentLocale:\"en-001\"},{locale:\"en-NL\",parentLocale:\"en-150\"},{locale:\"en-NR\",parentLocale:\"en-001\"},{locale:\"en-NU\",parentLocale:\"en-001\"},{locale:\"en-NZ\",parentLocale:\"en-001\"},{locale:\"en-PG\",parentLocale:\"en-001\"},{locale:\"en-PH\",parentLocale:\"en-001\"},{locale:\"en-PK\",parentLocale:\"en-001\"},{locale:\"en-PN\",parentLocale:\"en-001\"},{locale:\"en-PR\",parentLocale:\"en\"},{locale:\"en-PW\",parentLocale:\"en-001\"},{locale:\"en-RW\",parentLocale:\"en-001\"},{locale:\"en-SB\",parentLocale:\"en-001\"},{locale:\"en-SC\",parentLocale:\"en-001\"},{locale:\"en-SD\",parentLocale:\"en-001\"},{locale:\"en-SE\",parentLocale:\"en-150\"},{locale:\"en-SG\",parentLocale:\"en-001\",fields:{year:{displayName:\"year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{one:\"in {0} year\",other:\"in {0} years\"},past:{one:\"{0} year ago\",other:\"{0} years ago\"}}},\"year-short\":{displayName:\"yr\",relative:{0:\"this yr\",1:\"next yr\",\"-1\":\"last yr\"},relativeTime:{future:{one:\"in {0} yr\",other:\"in {0} yr\"},past:{one:\"{0} yr ago\",other:\"{0} yr ago\"}}},month:{displayName:\"month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{one:\"in {0} month\",other:\"in {0} months\"},past:{one:\"{0} month ago\",other:\"{0} months ago\"}}},\"month-short\":{displayName:\"mth\",relative:{0:\"this mth\",1:\"next mth\",\"-1\":\"last mth\"},relativeTime:{future:{one:\"in {0} mth\",other:\"in {0} mth\"},past:{one:\"{0} mth ago\",other:\"{0} mth ago\"}}},day:{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},\"day-short\":{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},hour:{displayName:\"hour\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hour\",other:\"in {0} hours\"},past:{one:\"{0} hour ago\",other:\"{0} hours ago\"}}},\"hour-short\":{displayName:\"hr\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hr\",other:\"in {0} hr\"},past:{one:\"{0} hr ago\",other:\"{0} hr ago\"}}},minute:{displayName:\"minute\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} minute\",other:\"in {0} minutes\"},past:{one:\"{0} minute ago\",other:\"{0} minutes ago\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} min\",other:\"in {0} min\"},past:{one:\"{0} min ago\",other:\"{0} min ago\"}}},second:{displayName:\"second\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} second\",other:\"in {0} seconds\"},past:{one:\"{0} second ago\",other:\"{0} seconds ago\"}}},\"second-short\":{displayName:\"sec\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} sec\",other:\"in {0} sec\"},past:{one:\"{0} sec ago\",other:\"{0} sec ago\"}}}}},{locale:\"en-SH\",parentLocale:\"en-001\"},{locale:\"en-SI\",parentLocale:\"en-150\"},{locale:\"en-SL\",parentLocale:\"en-001\"},{locale:\"en-SS\",parentLocale:\"en-001\"},{locale:\"en-SX\",parentLocale:\"en-001\"},{locale:\"en-SZ\",parentLocale:\"en-001\"},{locale:\"en-Shaw\",pluralRuleFunction:function(e,a){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"en-TC\",parentLocale:\"en-001\"},{locale:\"en-TK\",parentLocale:\"en-001\"},{locale:\"en-TO\",parentLocale:\"en-001\"},{locale:\"en-TT\",parentLocale:\"en-001\"},{locale:\"en-TV\",parentLocale:\"en-001\"},{locale:\"en-TZ\",parentLocale:\"en-001\"},{locale:\"en-UG\",parentLocale:\"en-001\"},{locale:\"en-UM\",parentLocale:\"en\"},{locale:\"en-US\",parentLocale:\"en\"},{locale:\"en-VC\",parentLocale:\"en-001\"},{locale:\"en-VG\",parentLocale:\"en-001\"},{locale:\"en-VI\",parentLocale:\"en\"},{locale:\"en-VU\",parentLocale:\"en-001\"},{locale:\"en-WS\",parentLocale:\"en-001\"},{locale:\"en-ZA\",parentLocale:\"en-001\"},{locale:\"en-ZM\",parentLocale:\"en-001\"},{locale:\"en-ZW\",parentLocale:\"en-001\"}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.af=a())}(this,function(){\"use strict\";return[{locale:\"af\",pluralRuleFunction:function(e,a){return a?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"jaar\",relative:{0:\"hierdie jaar\",1:\"volgende jaar\",\"-1\":\"verlede jaar\"},relativeTime:{future:{one:\"oor {0} jaar\",other:\"oor {0} jaar\"},past:{one:\"{0} jaar gelede\",other:\"{0} jaar gelede\"}}},\"year-short\":{displayName:\"j.\",relative:{0:\"hierdie jaar\",1:\"volgende jaar\",\"-1\":\"verlede jaar\"},relativeTime:{future:{one:\"oor {0} j.\",other:\"oor {0} j.\"},past:{one:\"{0} j. gelede\",other:\"{0} j. gelede\"}}},month:{displayName:\"maand\",relative:{0:\"vandeesmaand\",1:\"volgende maand\",\"-1\":\"verlede maand\"},relativeTime:{future:{one:\"oor {0} maand\",other:\"oor {0} maande\"},past:{one:\"{0} maand gelede\",other:\"{0} maande gelede\"}}},\"month-short\":{displayName:\"md.\",relative:{0:\"vandeesmaand\",1:\"volgende maand\",\"-1\":\"verlede maand\"},relativeTime:{future:{one:\"oor {0} md.\",other:\"oor {0} md.\"},past:{one:\"{0} md. gelede\",other:\"{0} md. gelede\"}}},day:{displayName:\"dag\",relative:{0:\"vandag\",1:\"môre\",2:\"oormôre\",\"-2\":\"eergister\",\"-1\":\"gister\"},relativeTime:{future:{one:\"oor {0} dag\",other:\"oor {0} dae\"},past:{one:\"{0} dag gelede\",other:\"{0} dae gelede\"}}},\"day-short\":{displayName:\"d.\",relative:{0:\"vandag\",1:\"môre\",2:\"oormôre\",\"-2\":\"eergister\",\"-1\":\"gister\"},relativeTime:{future:{one:\"oor {0} dag\",other:\"oor {0} dae\"},past:{one:\"{0} dag gelede\",other:\"{0} dae gelede\"}}},hour:{displayName:\"uur\",relative:{0:\"hierdie uur\"},relativeTime:{future:{one:\"oor {0} uur\",other:\"oor {0} uur\"},past:{one:\"{0} uur gelede\",other:\"{0} uur gelede\"}}},\"hour-short\":{displayName:\"u.\",relative:{0:\"hierdie uur\"},relativeTime:{future:{one:\"oor {0} u.\",other:\"oor {0} u.\"},past:{one:\"{0} u. gelede\",other:\"{0} u. gelede\"}}},minute:{displayName:\"minuut\",relative:{0:\"hierdie minuut\"},relativeTime:{future:{one:\"oor {0} minuut\",other:\"oor {0} minute\"},past:{one:\"{0} minuut gelede\",other:\"{0} minute gelede\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"hierdie minuut\"},relativeTime:{future:{one:\"oor {0} min.\",other:\"oor {0} min.\"},past:{one:\"{0} min. gelede\",other:\"{0} min. gelede\"}}},second:{displayName:\"sekonde\",relative:{0:\"nou\"},relativeTime:{future:{one:\"oor {0} sekonde\",other:\"oor {0} sekondes\"},past:{one:\"{0} sekonde gelede\",other:\"{0} sekondes gelede\"}}},\"second-short\":{displayName:\"s.\",relative:{0:\"nou\"},relativeTime:{future:{one:\"oor {0} s.\",other:\"oor {0} s.\"},past:{one:\"{0} s. gelede\",other:\"{0} s. gelede\"}}}}},{locale:\"af-NA\",parentLocale:\"af\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.am=t())}(this,function(){\"use strict\";return[{locale:\"am\",pluralRuleFunction:function(e,t){return t?\"other\":e>=0&&e<=1?\"one\":\"other\"},fields:{year:{displayName:\"ዓመት\",relative:{0:\"በዚህ ዓመት\",1:\"የሚቀጥለው ዓመት\",\"-1\":\"ያለፈው ዓመት\"},relativeTime:{future:{one:\"በ{0} ዓመታት ውስጥ\",other:\"በ{0} ዓመታት ውስጥ\"},past:{one:\"ከ{0} ዓመት በፊት\",other:\"ከ{0} ዓመታት በፊት\"}}},\"year-short\":{displayName:\"ዓመት\",relative:{0:\"በዚህ ዓመት\",1:\"የሚቀጥለው ዓመት\",\"-1\":\"ያለፈው ዓመት\"},relativeTime:{future:{one:\"በ{0} ዓመታት ውስጥ\",other:\"በ{0} ዓመታት ውስጥ\"},past:{one:\"ከ{0} ዓመታት በፊት\",other:\"ከ{0} ዓመታት በፊት\"}}},month:{displayName:\"ወር\",relative:{0:\"በዚህ ወር\",1:\"የሚቀጥለው ወር\",\"-1\":\"ያለፈው ወር\"},relativeTime:{future:{one:\"በ{0} ወር ውስጥ\",other:\"በ{0} ወራት ውስጥ\"},past:{one:\"ከ{0} ወር በፊት\",other:\"ከ{0} ወራት በፊት\"}}},\"month-short\":{displayName:\"ወር\",relative:{0:\"በዚህ ወር\",1:\"የሚቀጥለው ወር\",\"-1\":\"ያለፈው ወር\"},relativeTime:{future:{one:\"በ{0} ወራት ውስጥ\",other:\"በ{0} ወራት ውስጥ\"},past:{one:\"ከ{0} ወራት በፊት\",other:\"ከ{0} ወራት በፊት\"}}},day:{displayName:\"ቀን\",relative:{0:\"ዛሬ\",1:\"ነገ\",2:\"ከነገ ወዲያ\",\"-2\":\"ከትናንት ወዲያ\",\"-1\":\"ትናንት\"},relativeTime:{future:{one:\"በ{0} ቀን ውስጥ\",other:\"በ{0} ቀናት ውስጥ\"},past:{one:\"ከ{0} ቀን በፊት\",other:\"ከ{0} ቀናት በፊት\"}}},\"day-short\":{displayName:\"ቀን\",relative:{0:\"ዛሬ\",1:\"ነገ\",2:\"ከነገ ወዲያ\",\"-2\":\"ከትናንት ወዲያ\",\"-1\":\"ትላንትና\"},relativeTime:{future:{one:\"በ{0} ቀን ውስጥ\",other:\"በ{0} ቀኖች ውስጥ\"},past:{one:\"ከ {0} ቀን በፊት\",other:\"ከ{0} ቀኖች በፊት\"}}},hour:{displayName:\"ሰዓት\",relative:{0:\"ይህ ሰዓት\"},relativeTime:{future:{one:\"በ{0} ሰዓት ውስጥ\",other:\"በ{0} ሰዓቶች ውስጥ\"},past:{one:\"ከ{0} ሰዓት በፊት\",other:\"ከ{0} ሰዓቶች በፊት\"}}},\"hour-short\":{displayName:\"ሰዓት\",relative:{0:\"ይህ ሰዓት\"},relativeTime:{future:{one:\"በ{0} ሰዓት ውስጥ\",other:\"በ{0} ሰዓቶች ውስጥ\"},past:{one:\"ከ{0} ሰዓት በፊት\",other:\"ከ{0} ሰዓቶች በፊት\"}}},minute:{displayName:\"ደቂቃ\",relative:{0:\"ይህ ደቂቃ\"},relativeTime:{future:{one:\"በ{0} ደቂቃ ውስጥ\",other:\"በ{0} ደቂቃዎች ውስጥ\"},past:{one:\"ከ{0} ደቂቃ በፊት\",other:\"ከ{0} ደቂቃዎች በፊት\"}}},\"minute-short\":{displayName:\"ደቂቃ\",relative:{0:\"ይህ ደቂቃ\"},relativeTime:{future:{one:\"በ{0} ደቂቃ ውስጥ\",other:\"በ{0} ደቂቃዎች ውስጥ\"},past:{one:\"ከ{0} ደቂቃ በፊት\",other:\"ከ{0} ደቂቃዎች በፊት\"}}},second:{displayName:\"ሰከንድ\",relative:{0:\"አሁን\"},relativeTime:{future:{one:\"በ{0} ሰከንድ ውስጥ\",other:\"በ{0} ሰከንዶች ውስጥ\"},past:{one:\"ከ{0} ሰከንድ በፊት\",other:\"ከ{0} ሰከንዶች በፊት\"}}},\"second-short\":{displayName:\"ሰከንድ\",relative:{0:\"አሁን\"},relativeTime:{future:{one:\"በ{0} ሰከንድ ውስጥ\",other:\"በ{0} ሰከንዶች ውስጥ\"},past:{one:\"ከ{0} ሰከንድ በፊት\",other:\"ከ{0} ሰከንዶች በፊት\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ar=a())}(this,function(){\"use strict\";return[{locale:\"ar\",pluralRuleFunction:function(e,a){var o=String(e).split(\".\"),r=Number(o[0])==e&&o[0].slice(-2);return a?\"other\":0==e?\"zero\":1==e?\"one\":2==e?\"two\":r>=3&&r<=10?\"few\":r>=11&&r<=99?\"many\":\"other\"},fields:{year:{displayName:\"السنة\",relative:{0:\"السنة الحالية\",1:\"السنة القادمة\",\"-1\":\"السنة الماضية\"},relativeTime:{future:{zero:\"خلال {0} سنة\",one:\"خلال سنة واحدة\",two:\"خلال سنتين\",few:\"خلال {0} سنوات\",many:\"خلال {0} سنة\",other:\"خلال {0} سنة\"},past:{zero:\"قبل {0} سنة\",one:\"قبل سنة واحدة\",two:\"قبل سنتين\",few:\"قبل {0} سنوات\",many:\"قبل {0} سنة\",other:\"قبل {0} سنة\"}}},\"year-short\":{displayName:\"السنة\",relative:{0:\"السنة الحالية\",1:\"السنة القادمة\",\"-1\":\"السنة الماضية\"},relativeTime:{future:{zero:\"خلال {0} سنة\",one:\"خلال سنة واحدة\",two:\"خلال سنتين\",few:\"خلال {0} سنوات\",many:\"خلال {0} سنة\",other:\"خلال {0} سنة\"},past:{zero:\"قبل {0} سنة\",one:\"قبل سنة واحدة\",two:\"قبل سنتين\",few:\"قبل {0} سنوات\",many:\"قبل {0} سنة\",other:\"قبل {0} سنة\"}}},month:{displayName:\"الشهر\",relative:{0:\"هذا الشهر\",1:\"الشهر القادم\",\"-1\":\"الشهر الماضي\"},relativeTime:{future:{zero:\"خلال {0} شهر\",one:\"خلال شهر واحد\",two:\"خلال شهرين\",few:\"خلال {0} أشهر\",many:\"خلال {0} شهرًا\",other:\"خلال {0} شهر\"},past:{zero:\"قبل {0} شهر\",one:\"قبل شهر واحد\",two:\"قبل شهرين\",few:\"قبل {0} أشهر\",many:\"قبل {0} شهرًا\",other:\"قبل {0} شهر\"}}},\"month-short\":{displayName:\"الشهر\",relative:{0:\"هذا الشهر\",1:\"الشهر القادم\",\"-1\":\"الشهر الماضي\"},relativeTime:{future:{zero:\"خلال {0} شهر\",one:\"خلال شهر واحد\",two:\"خلال شهرين\",few:\"خلال {0} أشهر\",many:\"خلال {0} شهرًا\",other:\"خلال {0} شهر\"},past:{zero:\"قبل {0} شهر\",one:\"قبل شهر واحد\",two:\"قبل شهرين\",few:\"خلال {0} أشهر\",many:\"قبل {0} شهرًا\",other:\"قبل {0} شهر\"}}},day:{displayName:\"يوم\",relative:{0:\"اليوم\",1:\"غدًا\",2:\"بعد الغد\",\"-2\":\"أول أمس\",\"-1\":\"أمس\"},relativeTime:{future:{zero:\"خلال {0} يوم\",one:\"خلال يوم واحد\",two:\"خلال يومين\",few:\"خلال {0} أيام\",many:\"خلال {0} يومًا\",other:\"خلال {0} يوم\"},past:{zero:\"قبل {0} يوم\",one:\"قبل يوم واحد\",two:\"قبل يومين\",few:\"قبل {0} أيام\",many:\"قبل {0} يومًا\",other:\"قبل {0} يوم\"}}},\"day-short\":{displayName:\"يوم\",relative:{0:\"اليوم\",1:\"غدًا\",2:\"بعد الغد\",\"-2\":\"أول أمس\",\"-1\":\"أمس\"},relativeTime:{future:{zero:\"خلال {0} يوم\",one:\"خلال يوم واحد\",two:\"خلال يومين\",few:\"خلال {0} أيام\",many:\"خلال {0} يومًا\",other:\"خلال {0} يوم\"},past:{zero:\"قبل {0} يوم\",one:\"قبل يوم واحد\",two:\"قبل يومين\",few:\"قبل {0} أيام\",many:\"قبل {0} يومًا\",other:\"قبل {0} يوم\"}}},hour:{displayName:\"الساعات\",relative:{0:\"الساعة الحالية\"},relativeTime:{future:{zero:\"خلال {0} ساعة\",one:\"خلال ساعة واحدة\",two:\"خلال ساعتين\",few:\"خلال {0} ساعات\",many:\"خلال {0} ساعة\",other:\"خلال {0} ساعة\"},past:{zero:\"قبل {0} ساعة\",one:\"قبل ساعة واحدة\",two:\"قبل ساعتين\",few:\"قبل {0} ساعات\",many:\"قبل {0} ساعة\",other:\"قبل {0} ساعة\"}}},\"hour-short\":{displayName:\"الساعات\",relative:{0:\"الساعة الحالية\"},relativeTime:{future:{zero:\"خلال {0} ساعة\",one:\"خلال ساعة واحدة\",two:\"خلال ساعتين\",few:\"خلال {0} ساعات\",many:\"خلال {0} ساعة\",other:\"خلال {0} ساعة\"},past:{zero:\"قبل {0} ساعة\",one:\"قبل ساعة واحدة\",two:\"قبل ساعتين\",few:\"قبل {0} ساعات\",many:\"قبل {0} ساعة\",other:\"قبل {0} ساعة\"}}},minute:{displayName:\"الدقائق\",relative:{0:\"هذه الدقيقة\"},relativeTime:{future:{zero:\"خلال {0} دقيقة\",one:\"خلال دقيقة واحدة\",two:\"خلال دقيقتين\",few:\"خلال {0} دقائق\",many:\"خلال {0} دقيقة\",other:\"خلال {0} دقيقة\"},past:{zero:\"قبل {0} دقيقة\",one:\"قبل دقيقة واحدة\",two:\"قبل دقيقتين\",few:\"قبل {0} دقائق\",many:\"قبل {0} دقيقة\",other:\"قبل {0} دقيقة\"}}},\"minute-short\":{displayName:\"الدقائق\",relative:{0:\"هذه الدقيقة\"},relativeTime:{future:{zero:\"خلال {0} دقيقة\",one:\"خلال دقيقة واحدة\",two:\"خلال دقيقتين\",few:\"خلال {0} دقائق\",many:\"خلال {0} دقيقة\",other:\"خلال {0} دقيقة\"},past:{zero:\"قبل {0} دقيقة\",one:\"قبل دقيقة واحدة\",two:\"قبل دقيقتين\",few:\"قبل {0} دقائق\",many:\"قبل {0} دقيقة\",other:\"قبل {0} دقيقة\"}}},second:{displayName:\"الثواني\",relative:{0:\"الآن\"},relativeTime:{future:{zero:\"خلال {0} ثانية\",one:\"خلال ثانية واحدة\",two:\"خلال ثانيتين\",few:\"خلال {0} ثوانٍ\",many:\"خلال {0} ثانية\",other:\"خلال {0} ثانية\"},past:{zero:\"قبل {0} ثانية\",one:\"قبل ثانية واحدة\",two:\"قبل ثانيتين\",few:\"قبل {0} ثوانِ\",many:\"قبل {0} ثانية\",other:\"قبل {0} ثانية\"}}},\"second-short\":{displayName:\"الثواني\",relative:{0:\"الآن\"},relativeTime:{future:{zero:\"خلال {0} ثانية\",one:\"خلال ثانية واحدة\",two:\"خلال ثانيتين\",few:\"خلال {0} ثوانٍ\",many:\"خلال {0} ثانية\",other:\"خلال {0} ثانية\"},past:{zero:\"قبل {0} ثانية\",one:\"قبل ثانية واحدة\",two:\"قبل ثانيتين\",few:\"قبل {0} ثوانٍ\",many:\"قبل {0} ثانية\",other:\"قبل {0} ثانية\"}}}}},{locale:\"ar-AE\",parentLocale:\"ar\",fields:{year:{displayName:\"السنة\",relative:{0:\"هذه السنة\",1:\"السنة التالية\",\"-1\":\"السنة الماضية\"},relativeTime:{future:{zero:\"خلال {0} سنة\",one:\"خلال سنة واحدة\",two:\"خلال سنتين\",few:\"خلال {0} سنوات\",many:\"خلال {0} سنة\",other:\"خلال {0} سنة\"},past:{zero:\"قبل {0} سنة\",one:\"قبل سنة واحدة\",two:\"قبل سنتين\",few:\"قبل {0} سنوات\",many:\"قبل {0} سنة\",other:\"قبل {0} سنة\"}}},\"year-short\":{displayName:\"السنة\",relative:{0:\"هذه السنة\",1:\"السنة التالية\",\"-1\":\"السنة الماضية\"},relativeTime:{future:{zero:\"خلال {0} سنة\",one:\"خلال سنة واحدة\",two:\"خلال سنتين\",few:\"خلال {0} سنوات\",many:\"خلال {0} سنة\",other:\"خلال {0} سنة\"},past:{zero:\"قبل {0} سنة\",one:\"قبل سنة واحدة\",two:\"قبل سنتين\",few:\"قبل {0} سنوات\",many:\"قبل {0} سنة\",other:\"قبل {0} سنة\"}}},month:{displayName:\"الشهر\",relative:{0:\"هذا الشهر\",1:\"الشهر القادم\",\"-1\":\"الشهر الماضي\"},relativeTime:{future:{zero:\"خلال {0} شهر\",one:\"خلال شهر واحد\",two:\"خلال شهرين\",few:\"خلال {0} أشهر\",many:\"خلال {0} شهرًا\",other:\"خلال {0} شهر\"},past:{zero:\"قبل {0} شهر\",one:\"قبل شهر واحد\",two:\"قبل شهرين\",few:\"قبل {0} أشهر\",many:\"قبل {0} شهرًا\",other:\"قبل {0} شهر\"}}},\"month-short\":{displayName:\"الشهر\",relative:{0:\"هذا الشهر\",1:\"الشهر القادم\",\"-1\":\"الشهر الماضي\"},relativeTime:{future:{zero:\"خلال {0} شهر\",one:\"خلال شهر واحد\",two:\"خلال شهرين\",few:\"خلال {0} أشهر\",many:\"خلال {0} شهرًا\",other:\"خلال {0} شهر\"},past:{zero:\"قبل {0} شهر\",one:\"قبل شهر واحد\",two:\"قبل شهرين\",few:\"خلال {0} أشهر\",many:\"قبل {0} شهرًا\",other:\"قبل {0} شهر\"}}},day:{displayName:\"يوم\",relative:{0:\"اليوم\",1:\"غدًا\",2:\"بعد الغد\",\"-2\":\"أول أمس\",\"-1\":\"أمس\"},relativeTime:{future:{zero:\"خلال {0} يوم\",one:\"خلال يوم واحد\",two:\"خلال يومين\",few:\"خلال {0} أيام\",many:\"خلال {0} يومًا\",other:\"خلال {0} يوم\"},past:{zero:\"قبل {0} يوم\",one:\"قبل يوم واحد\",two:\"قبل يومين\",few:\"قبل {0} أيام\",many:\"قبل {0} يومًا\",other:\"قبل {0} يوم\"}}},\"day-short\":{displayName:\"يوم\",relative:{0:\"اليوم\",1:\"غدًا\",2:\"بعد الغد\",\"-2\":\"أول أمس\",\"-1\":\"أمس\"},relativeTime:{future:{zero:\"خلال {0} يوم\",one:\"خلال يوم واحد\",two:\"خلال يومين\",few:\"خلال {0} أيام\",many:\"خلال {0} يومًا\",other:\"خلال {0} يوم\"},past:{zero:\"قبل {0} يوم\",one:\"قبل يوم واحد\",two:\"قبل يومين\",few:\"قبل {0} أيام\",many:\"قبل {0} يومًا\",other:\"قبل {0} يوم\"}}},hour:{displayName:\"الساعات\",relative:{0:\"الساعة الحالية\"},relativeTime:{future:{zero:\"خلال {0} ساعة\",one:\"خلال ساعة واحدة\",two:\"خلال ساعتين\",few:\"خلال {0} ساعات\",many:\"خلال {0} ساعة\",other:\"خلال {0} ساعة\"},past:{zero:\"قبل {0} ساعة\",one:\"قبل ساعة واحدة\",two:\"قبل ساعتين\",few:\"قبل {0} ساعات\",many:\"قبل {0} ساعة\",other:\"قبل {0} ساعة\"}}},\"hour-short\":{displayName:\"الساعات\",relative:{0:\"الساعة الحالية\"},relativeTime:{future:{zero:\"خلال {0} ساعة\",one:\"خلال ساعة واحدة\",two:\"خلال ساعتين\",few:\"خلال {0} ساعات\",many:\"خلال {0} ساعة\",other:\"خلال {0} ساعة\"},past:{zero:\"قبل {0} ساعة\",one:\"قبل ساعة واحدة\",two:\"قبل ساعتين\",few:\"قبل {0} ساعات\",many:\"قبل {0} ساعة\",other:\"قبل {0} ساعة\"}}},minute:{displayName:\"الدقائق\",relative:{0:\"هذه الدقيقة\"},relativeTime:{future:{zero:\"خلال {0} دقيقة\",one:\"خلال دقيقة واحدة\",two:\"خلال دقيقتين\",few:\"خلال {0} دقائق\",many:\"خلال {0} دقيقة\",other:\"خلال {0} دقيقة\"},past:{zero:\"قبل {0} دقيقة\",one:\"قبل دقيقة واحدة\",two:\"قبل دقيقتين\",few:\"قبل {0} دقائق\",many:\"قبل {0} دقيقة\",other:\"قبل {0} دقيقة\"}}},\"minute-short\":{displayName:\"الدقائق\",relative:{0:\"هذه الدقيقة\"},relativeTime:{future:{zero:\"خلال {0} دقيقة\",one:\"خلال دقيقة واحدة\",two:\"خلال دقيقتين\",few:\"خلال {0} دقائق\",many:\"خلال {0} دقيقة\",other:\"خلال {0} دقيقة\"},past:{zero:\"قبل {0} دقيقة\",one:\"قبل دقيقة واحدة\",two:\"قبل دقيقتين\",few:\"قبل {0} دقائق\",many:\"قبل {0} دقيقة\",other:\"قبل {0} دقيقة\"}}},second:{displayName:\"الثواني\",relative:{0:\"الآن\"},relativeTime:{future:{zero:\"خلال {0} ثانية\",one:\"خلال ثانية واحدة\",two:\"خلال ثانيتين\",few:\"خلال {0} ثوانٍ\",many:\"خلال {0} ثانية\",other:\"خلال {0} ثانية\"},past:{zero:\"قبل {0} ثانية\",one:\"قبل ثانية واحدة\",two:\"قبل ثانيتين\",few:\"قبل {0} ثوانِ\",many:\"قبل {0} ثانية\",other:\"قبل {0} ثانية\"}}},\"second-short\":{displayName:\"الثواني\",relative:{0:\"الآن\"},relativeTime:{future:{zero:\"خلال {0} ثانية\",one:\"خلال ثانية واحدة\",two:\"خلال ثانيتين\",few:\"خلال {0} ثوانٍ\",many:\"خلال {0} ثانية\",other:\"خلال {0} ثانية\"},past:{zero:\"قبل {0} ثانية\",one:\"قبل ثانية واحدة\",two:\"قبل ثانيتين\",few:\"قبل {0} ثوانٍ\",many:\"قبل {0} ثانية\",other:\"قبل {0} ثانية\"}}}}},{locale:\"ar-BH\",parentLocale:\"ar\"},{locale:\"ar-DJ\",parentLocale:\"ar\"},{locale:\"ar-DZ\",parentLocale:\"ar\"},{locale:\"ar-EG\",parentLocale:\"ar\"},{locale:\"ar-EH\",parentLocale:\"ar\"},{locale:\"ar-ER\",parentLocale:\"ar\"},{locale:\"ar-IL\",parentLocale:\"ar\"},{locale:\"ar-IQ\",parentLocale:\"ar\"},{locale:\"ar-JO\",parentLocale:\"ar\"},{locale:\"ar-KM\",parentLocale:\"ar\"},{locale:\"ar-KW\",parentLocale:\"ar\"},{locale:\"ar-LB\",parentLocale:\"ar\"},{locale:\"ar-LY\",parentLocale:\"ar\"},{locale:\"ar-MA\",parentLocale:\"ar\"},{locale:\"ar-MR\",parentLocale:\"ar\"},{locale:\"ar-OM\",parentLocale:\"ar\"},{locale:\"ar-PS\",parentLocale:\"ar\"},{locale:\"ar-QA\",parentLocale:\"ar\"},{locale:\"ar-SA\",parentLocale:\"ar\"},{locale:\"ar-SD\",parentLocale:\"ar\"},{locale:\"ar-SO\",parentLocale:\"ar\"},{locale:\"ar-SS\",parentLocale:\"ar\"},{locale:\"ar-SY\",parentLocale:\"ar\"},{locale:\"ar-TD\",parentLocale:\"ar\"},{locale:\"ar-TN\",parentLocale:\"ar\"},{locale:\"ar-YE\",parentLocale:\"ar\"}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ast=a())}(this,function(){\"use strict\";return[{locale:\"ast\",pluralRuleFunction:function(e,a){var t=!String(e).split(\".\")[1];return a?\"other\":1==e&&t?\"one\":\"other\"},fields:{year:{displayName:\"añu\",relative:{0:\"esti añu\",1:\"l’añu viniente\",\"-1\":\"l’añu pasáu\"},relativeTime:{future:{one:\"en {0} añu\",other:\"en {0} años\"},past:{one:\"hai {0} añu\",other:\"hai {0} años\"}}},\"year-short\":{displayName:\"añu\",relative:{0:\"esti añu\",1:\"l’añu vin.\",\"-1\":\"l’añu pas.\"},relativeTime:{future:{one:\"en {0} añu\",other:\"en {0} años\"},past:{one:\"hai {0} añu\",other:\"hai {0} años\"}}},month:{displayName:\"mes\",relative:{0:\"esti mes\",1:\"el mes viniente\",\"-1\":\"el mes pasáu\"},relativeTime:{future:{one:\"en {0} mes\",other:\"en {0} meses\"},past:{one:\"hai {0} mes\",other:\"hai {0} meses\"}}},\"month-short\":{displayName:\"mes\",relative:{0:\"esti mes\",1:\"mes vin.\",\"-1\":\"mes pas.\"},relativeTime:{future:{one:\"en {0} mes\",other:\"en {0} meses\"},past:{one:\"hai {0} mes\",other:\"hai {0} meses\"}}},day:{displayName:\"día\",relative:{0:\"güei\",1:\"mañana\",2:\"pasao mañana\",\"-2\":\"antayeri\",\"-1\":\"ayeri\"},relativeTime:{future:{one:\"en {0} día\",other:\"en {0} díes\"},past:{one:\"hai {0} día\",other:\"hai {0} díes\"}}},\"day-short\":{displayName:\"día\",relative:{0:\"güei\",1:\"mañana\",2:\"pasao mañana\",\"-2\":\"antayeri\",\"-1\":\"ayeri\"},relativeTime:{future:{one:\"en {0} día\",other:\"en {0} díes\"},past:{one:\"hai {0} día\",other:\"hai {0} díes\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"en {0} hora\",other:\"en {0} hores\"},past:{one:\"hai {0} hora\",other:\"hai {0} hores\"}}},\"hour-short\":{displayName:\"h.\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"en {0} h.\",other:\"en {0} h.\"},past:{one:\"hai {0} h.\",other:\"hai {0} h.\"}}},minute:{displayName:\"minutu\",relative:{0:\"esti minutu\"},relativeTime:{future:{one:\"en {0} minutu\",other:\"en {0} minutos\"},past:{one:\"hai {0} minutu\",other:\"hai {0} minutos\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"esti min.\"},relativeTime:{future:{one:\"en {0} min.\",other:\"en {0} min.\"},past:{one:\"hai {0} min.\",other:\"hai {0} min.\"}}},second:{displayName:\"segundu\",relative:{0:\"agora\"},relativeTime:{future:{one:\"en {0} segundu\",other:\"en {0} segundos\"},past:{one:\"hai {0} segundu\",other:\"hai {0} segundos\"}}},\"second-short\":{displayName:\"s.\",relative:{0:\"agora\"},relativeTime:{future:{one:\"en {0} seg.\",other:\"en {0} seg.\"},past:{one:\"hai {0} seg.\",other:\"hai {0} seg.\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.az=t())}(this,function(){\"use strict\";return[{locale:\"az\",pluralRuleFunction:function(e,t){var a=String(e).split(\".\")[0],r=a.slice(-1),i=a.slice(-2),o=a.slice(-3);return t?1==r||2==r||5==r||7==r||8==r||20==i||50==i||70==i||80==i?\"one\":3==r||4==r||100==o||200==o||300==o||400==o||500==o||600==o||700==o||800==o||900==o?\"few\":0==a||6==r||40==i||60==i||90==i?\"many\":\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"İl\",relative:{0:\"bu il\",1:\"gələn il\",\"-1\":\"keçən il\"},relativeTime:{future:{one:\"{0} il ərzində\",other:\"{0} il ərzində\"},past:{one:\"{0} il öncə\",other:\"{0} il öncə\"}}},\"year-short\":{displayName:\"il\",relative:{0:\"bu il\",1:\"gələn il\",\"-1\":\"keçən il\"},relativeTime:{future:{one:\"{0} il ərzində\",other:\"{0} il ərzində\"},past:{one:\"{0} il öncə\",other:\"{0} il öncə\"}}},month:{displayName:\"Ay\",relative:{0:\"bu ay\",1:\"gələn ay\",\"-1\":\"keçən ay\"},relativeTime:{future:{one:\"{0} ay ərzində\",other:\"{0} ay ərzində\"},past:{one:\"{0} ay öncə\",other:\"{0} ay öncə\"}}},\"month-short\":{displayName:\"ay\",relative:{0:\"bu ay\",1:\"gələn ay\",\"-1\":\"keçən ay\"},relativeTime:{future:{one:\"{0} ay ərzində\",other:\"{0} ay ərzində\"},past:{one:\"{0} ay öncə\",other:\"{0} ay öncə\"}}},day:{displayName:\"Gün\",relative:{0:\"bu gün\",1:\"sabah\",\"-1\":\"dünən\"},relativeTime:{future:{one:\"{0} gün ərzində\",other:\"{0} gün ərzində\"},past:{one:\"{0} gün öncə\",other:\"{0} gün öncə\"}}},\"day-short\":{displayName:\"Gün\",relative:{0:\"bu gün\",1:\"sabah\",\"-1\":\"dünən\"},relativeTime:{future:{one:\"{0} gün ərzində\",other:\"{0} gün ərzində\"},past:{one:\"{0} gün öncə\",other:\"{0} gün öncə\"}}},hour:{displayName:\"Saat\",relative:{0:\"bu saat\"},relativeTime:{future:{one:\"{0} saat ərzində\",other:\"{0} saat ərzində\"},past:{one:\"{0} saat öncə\",other:\"{0} saat öncə\"}}},\"hour-short\":{displayName:\"saat\",relative:{0:\"bu saat\"},relativeTime:{future:{one:\"{0} saat ərzində\",other:\"{0} saat ərzində\"},past:{one:\"{0} saat öncə\",other:\"{0} saat öncə\"}}},minute:{displayName:\"Dəqiqə\",relative:{0:\"bu dəqiqə\"},relativeTime:{future:{one:\"{0} dəqiqə ərzində\",other:\"{0} dəqiqə ərzində\"},past:{one:\"{0} dəqiqə öncə\",other:\"{0} dəqiqə öncə\"}}},\"minute-short\":{displayName:\"dəq.\",relative:{0:\"bu dəqiqə\"},relativeTime:{future:{one:\"{0} dəqiqə ərzində\",other:\"{0} dəqiqə ərzində\"},past:{one:\"{0} dəqiqə öncə\",other:\"{0} dəqiqə öncə\"}}},second:{displayName:\"Saniyə\",relative:{0:\"indi\"},relativeTime:{future:{one:\"{0} saniyə ərzində\",other:\"{0} saniyə ərzində\"},past:{one:\"{0} saniyə öncə\",other:\"{0} saniyə öncə\"}}},\"second-short\":{displayName:\"san.\",relative:{0:\"indi\"},relativeTime:{future:{one:\"{0} saniyə ərzində\",other:\"{0} saniyə ərzində\"},past:{one:\"{0} saniyə öncə\",other:\"{0} saniyə öncə\"}}}}},{locale:\"az-Arab\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"az-Cyrl\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"az-Latn\",parentLocale:\"az\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.be=t())}(this,function(){\"use strict\";return[{locale:\"be\",pluralRuleFunction:function(e,t){var a=String(e).split(\".\"),r=Number(a[0])==e,o=r&&a[0].slice(-1),n=r&&a[0].slice(-2);return t?2!=o&&3!=o||12==n||13==n?\"other\":\"few\":1==o&&11!=n?\"one\":o>=2&&o<=4&&(n<12||n>14)?\"few\":r&&0==o||o>=5&&o<=9||n>=11&&n<=14?\"many\":\"other\"},fields:{year:{displayName:\"год\",relative:{0:\"у гэтым годзе\",1:\"у наступным годзе\",\"-1\":\"у мінулым годзе\"},relativeTime:{future:{one:\"праз {0} год\",few:\"праз {0} гады\",many:\"праз {0} гадоў\",other:\"праз {0} года\"},past:{one:\"{0} год таму\",few:\"{0} гады таму\",many:\"{0} гадоў таму\",other:\"{0} года таму\"}}},\"year-short\":{displayName:\"г.\",relative:{0:\"у гэтым годзе\",1:\"у наступным годзе\",\"-1\":\"у мінулым годзе\"},relativeTime:{future:{one:\"праз {0} г.\",few:\"праз {0} г.\",many:\"праз {0} г.\",other:\"праз {0} г.\"},past:{one:\"{0} г. таму\",few:\"{0} г. таму\",many:\"{0} г. таму\",other:\"{0} г. таму\"}}},month:{displayName:\"месяц\",relative:{0:\"у гэтым месяцы\",1:\"у наступным месяцы\",\"-1\":\"у мінулым месяцы\"},relativeTime:{future:{one:\"праз {0} месяц\",few:\"праз {0} месяцы\",many:\"праз {0} месяцаў\",other:\"праз {0} месяца\"},past:{one:\"{0} месяц таму\",few:\"{0} месяцы таму\",many:\"{0} месяцаў таму\",other:\"{0} месяца таму\"}}},\"month-short\":{displayName:\"мес.\",relative:{0:\"у гэтым месяцы\",1:\"у наступным месяцы\",\"-1\":\"у мінулым месяцы\"},relativeTime:{future:{one:\"праз {0} мес.\",few:\"праз {0} мес.\",many:\"праз {0} мес.\",other:\"праз {0} мес.\"},past:{one:\"{0} мес. таму\",few:\"{0} мес. таму\",many:\"{0} мес. таму\",other:\"{0} мес. таму\"}}},day:{displayName:\"дзень\",relative:{0:\"сёння\",1:\"заўтра\",2:\"паслязаўтра\",\"-2\":\"пазаўчора\",\"-1\":\"учора\"},relativeTime:{future:{one:\"праз {0} дзень\",few:\"праз {0} дні\",many:\"праз {0} дзён\",other:\"праз {0} дня\"},past:{one:\"{0} дзень таму\",few:\"{0} дні таму\",many:\"{0} дзён таму\",other:\"{0} дня таму\"}}},\"day-short\":{displayName:\"дзень\",relative:{0:\"сёння\",1:\"заўтра\",2:\"паслязаўтра\",\"-2\":\"пазаўчора\",\"-1\":\"учора\"},relativeTime:{future:{one:\"праз {0} дзень\",few:\"праз {0} дні\",many:\"праз {0} дзён\",other:\"праз {0} дня\"},past:{one:\"{0} дзень таму\",few:\"{0} дні таму\",many:\"{0} дзён таму\",other:\"{0} дня таму\"}}},hour:{displayName:\"гадзіна\",relative:{0:\"у гэту гадзіну\"},relativeTime:{future:{one:\"праз {0} гадзіну\",few:\"праз {0} гадзіны\",many:\"праз {0} гадзін\",other:\"праз {0} гадзіны\"},past:{one:\"{0} гадзіну таму\",few:\"{0} гадзіны таму\",many:\"{0} гадзін таму\",other:\"{0} гадзіны таму\"}}},\"hour-short\":{displayName:\"гадз\",relative:{0:\"у гэту гадзіну\"},relativeTime:{future:{one:\"праз {0} гадз\",few:\"праз {0} гадз\",many:\"праз {0} гадз\",other:\"праз {0} гадз\"},past:{one:\"{0} гадз таму\",few:\"{0} гадз таму\",many:\"{0} гадз таму\",other:\"{0} гадз таму\"}}},minute:{displayName:\"хвіліна\",relative:{0:\"у гэту хвіліну\"},relativeTime:{future:{one:\"праз {0} хвіліну\",few:\"праз {0} хвіліны\",many:\"праз {0} хвілін\",other:\"праз {0} хвіліны\"},past:{one:\"{0} хвіліну таму\",few:\"{0} хвіліны таму\",many:\"{0} хвілін таму\",other:\"{0} хвіліны таму\"}}},\"minute-short\":{displayName:\"хв\",relative:{0:\"у гэту хвіліну\"},relativeTime:{future:{one:\"праз {0} хв\",few:\"праз {0} хв\",many:\"праз {0} хв\",other:\"праз {0} хв\"},past:{one:\"{0} хв таму\",few:\"{0} хв таму\",many:\"{0} хв таму\",other:\"{0} хв таму\"}}},second:{displayName:\"секунда\",relative:{0:\"цяпер\"},relativeTime:{future:{one:\"праз {0} секунду\",few:\"праз {0} секунды\",many:\"праз {0} секунд\",other:\"праз {0} секунды\"},past:{one:\"{0} секунду таму\",few:\"{0} секунды таму\",many:\"{0} секунд таму\",other:\"{0} секунды таму\"}}},\"second-short\":{displayName:\"с\",relative:{0:\"цяпер\"},relativeTime:{future:{one:\"праз {0} с\",few:\"праз {0} с\",many:\"праз {0} с\",other:\"праз {0} с\"},past:{one:\"{0} с таму\",few:\"{0} с таму\",many:\"{0} с таму\",other:\"{0} с таму\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.bn=t())}(this,function(){\"use strict\";return[{locale:\"bn\",pluralRuleFunction:function(e,t){return t?1==e||5==e||7==e||8==e||9==e||10==e?\"one\":2==e||3==e?\"two\":4==e?\"few\":6==e?\"many\":\"other\":e>=0&&e<=1?\"one\":\"other\"},fields:{year:{displayName:\"বছর\",relative:{0:\"এই বছর\",1:\"পরের বছর\",\"-1\":\"গত বছর\"},relativeTime:{future:{one:\"{0} বছরে\",other:\"{0} বছরে\"},past:{one:\"{0} বছর পূর্বে\",other:\"{0} বছর পূর্বে\"}}},\"year-short\":{displayName:\"বছর\",relative:{0:\"এই বছর\",1:\"পরের বছর\",\"-1\":\"গত বছর\"},relativeTime:{future:{one:\"{0} বছরে\",other:\"{0} বছরে\"},past:{one:\"{0} বছর পূর্বে\",other:\"{0} বছর পূর্বে\"}}},month:{displayName:\"মাস\",relative:{0:\"এই মাস\",1:\"পরের মাস\",\"-1\":\"গত মাস\"},relativeTime:{future:{one:\"{0} মাসে\",other:\"{0} মাসে\"},past:{one:\"{0} মাস আগে\",other:\"{0} মাস আগে\"}}},\"month-short\":{displayName:\"মাস\",relative:{0:\"এই মাস\",1:\"পরের মাস\",\"-1\":\"গত মাস\"},relativeTime:{future:{one:\"{0} মাসে\",other:\"{0} মাসে\"},past:{one:\"{0} মাস আগে\",other:\"{0} মাস আগে\"}}},day:{displayName:\"দিন\",relative:{0:\"আজ\",1:\"আগামীকাল\",2:\"আগামী পরশু\",\"-2\":\"গত পরশু\",\"-1\":\"গতকাল\"},relativeTime:{future:{one:\"{0} দিনের মধ্যে\",other:\"{0} দিনের মধ্যে\"},past:{one:\"{0} দিন আগে\",other:\"{0} দিন আগে\"}}},\"day-short\":{displayName:\"দিন\",relative:{0:\"আজ\",1:\"আগামীকাল\",2:\"আগামী পরশু\",\"-2\":\"গত পরশু\",\"-1\":\"গতকাল\"},relativeTime:{future:{one:\"{0} দিনের মধ্যে\",other:\"{0} দিনের মধ্যে\"},past:{one:\"{0} দিন আগে\",other:\"{0} দিন আগে\"}}},hour:{displayName:\"ঘণ্টা\",relative:{0:\"এই ঘণ্টায়\"},relativeTime:{future:{one:\"{0} ঘন্টায়\",other:\"{0} ঘন্টায়\"},past:{one:\"{0} ঘন্টা আগে\",other:\"{0} ঘন্টা আগে\"}}},\"hour-short\":{displayName:\"ঘণ্টা\",relative:{0:\"এই ঘণ্টায়\"},relativeTime:{future:{one:\"{0} ঘন্টায়\",other:\"{0} ঘন্টায়\"},past:{one:\"{0} ঘন্টা আগে\",other:\"{0} ঘন্টা আগে\"}}},minute:{displayName:\"মিনিট\",relative:{0:\"এই মিনিট\"},relativeTime:{future:{one:\"{0} মিনিটে\",other:\"{0} মিনিটে\"},past:{one:\"{0} মিনিট আগে\",other:\"{0} মিনিট আগে\"}}},\"minute-short\":{displayName:\"মিনিট\",relative:{0:\"এই মিনিট\"},relativeTime:{future:{one:\"{0} মিনিটে\",other:\"{0} মিনিটে\"},past:{one:\"{0} মিনিট আগে\",other:\"{0} মিনিট আগে\"}}},second:{displayName:\"সেকেন্ড\",relative:{0:\"এখন\"},relativeTime:{future:{one:\"{0} সেকেন্ডে\",other:\"{0} সেকেন্ডে\"},past:{one:\"{0} সেকেন্ড পূর্বে\",other:\"{0} সেকেন্ড পূর্বে\"}}},\"second-short\":{displayName:\"সেকেন্ড\",relative:{0:\"এখন\"},relativeTime:{future:{one:\"{0} সেকেন্ডে\",other:\"{0} সেকেন্ডে\"},past:{one:\"{0} সেকেন্ড পূর্বে\",other:\"{0} সেকেন্ড পূর্বে\"}}}}},{locale:\"bn-IN\",parentLocale:\"bn\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.bg=t())}(this,function(){\"use strict\";return[{locale:\"bg\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"година\",relative:{0:\"тази година\",1:\"следващата година\",\"-1\":\"миналата година\"},relativeTime:{future:{one:\"след {0} година\",other:\"след {0} години\"},past:{one:\"преди {0} година\",other:\"преди {0} години\"}}},\"year-short\":{displayName:\"г.\",relative:{0:\"т. г.\",1:\"следв. г.\",\"-1\":\"мин. г.\"},relativeTime:{future:{one:\"след {0} г.\",other:\"след {0} г.\"},past:{one:\"преди {0} г.\",other:\"преди {0} г.\"}}},month:{displayName:\"месец\",relative:{0:\"този месец\",1:\"следващ месец\",\"-1\":\"предходен месец\"},relativeTime:{future:{one:\"след {0} месец\",other:\"след {0} месеца\"},past:{one:\"преди {0} месец\",other:\"преди {0} месеца\"}}},\"month-short\":{displayName:\"мес.\",relative:{0:\"този мес.\",1:\"следв. мес.\",\"-1\":\"мин. мес.\"},relativeTime:{future:{one:\"след {0} м.\",other:\"след {0} м.\"},past:{one:\"преди {0} м.\",other:\"преди {0} м.\"}}},day:{displayName:\"ден\",relative:{0:\"днес\",1:\"утре\",2:\"вдругиден\",\"-2\":\"онзи ден\",\"-1\":\"вчера\"},relativeTime:{future:{one:\"след {0} ден\",other:\"след {0} дни\"},past:{one:\"преди {0} ден\",other:\"преди {0} дни\"}}},\"day-short\":{displayName:\"д\",relative:{0:\"днес\",1:\"утре\",2:\"вдругиден\",\"-2\":\"онзи ден\",\"-1\":\"вчера\"},relativeTime:{future:{one:\"след {0} ден\",other:\"след {0} дни\"},past:{one:\"преди {0} ден\",other:\"преди {0} дни\"}}},hour:{displayName:\"час\",relative:{0:\"в този час\"},relativeTime:{future:{one:\"след {0} час\",other:\"след {0} часа\"},past:{one:\"преди {0} час\",other:\"преди {0} часа\"}}},\"hour-short\":{displayName:\"ч\",relative:{0:\"в този час\"},relativeTime:{future:{one:\"след {0} ч\",other:\"след {0} ч\"},past:{one:\"преди {0} ч\",other:\"преди {0} ч\"}}},minute:{displayName:\"минута\",relative:{0:\"в тази минута\"},relativeTime:{future:{one:\"след {0} минута\",other:\"след {0} минути\"},past:{one:\"преди {0} минута\",other:\"преди {0} минути\"}}},\"minute-short\":{displayName:\"мин\",relative:{0:\"в тази минута\"},relativeTime:{future:{one:\"след {0} мин\",other:\"след {0} мин\"},past:{one:\"преди {0} мин\",other:\"преди {0} мин\"}}},second:{displayName:\"секунда\",relative:{0:\"сега\"},relativeTime:{future:{one:\"след {0} секунда\",other:\"след {0} секунди\"},past:{one:\"преди {0} секунда\",other:\"преди {0} секунди\"}}},\"second-short\":{displayName:\"сек\",relative:{0:\"сега\"},relativeTime:{future:{one:\"след {0} сек\",other:\"след {0} сек\"},past:{one:\"преди {0} сек\",other:\"преди {0} сек\"}}}}}]});\n","!function(a,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(a.ReactIntlLocaleData=a.ReactIntlLocaleData||{},a.ReactIntlLocaleData.ca=e())}(this,function(){\"use strict\";return[{locale:\"ca\",pluralRuleFunction:function(a,e){var t=!String(a).split(\".\")[1];return e?1==a||3==a?\"one\":2==a?\"two\":4==a?\"few\":\"other\":1==a&&t?\"one\":\"other\"},fields:{year:{displayName:\"any\",relative:{0:\"enguany\",1:\"l’any que ve\",\"-1\":\"l’any passat\"},relativeTime:{future:{one:\"d’aquí a {0} any\",other:\"d’aquí a {0} anys\"},past:{one:\"fa {0} any\",other:\"fa {0} anys\"}}},\"year-short\":{displayName:\"any\",relative:{0:\"enguany\",1:\"l’any que ve\",\"-1\":\"l’any passat\"},relativeTime:{future:{one:\"d’aquí a {0} any\",other:\"d’aquí a {0} anys\"},past:{one:\"fa {0} any\",other:\"fa {0} anys\"}}},month:{displayName:\"mes\",relative:{0:\"aquest mes\",1:\"el mes que ve\",\"-1\":\"el mes passat\"},relativeTime:{future:{one:\"d’aquí a {0} mes\",other:\"d’aquí a {0} mesos\"},past:{one:\"fa {0} mes\",other:\"fa {0} mesos\"}}},\"month-short\":{displayName:\"mes\",relative:{0:\"aquest mes\",1:\"el mes que ve\",\"-1\":\"el mes passat\"},relativeTime:{future:{one:\"d’aquí a {0} mes\",other:\"d’aquí a {0} mesos\"},past:{one:\"fa {0} mes\",other:\"fa {0} mesos\"}}},day:{displayName:\"dia\",relative:{0:\"avui\",1:\"demà\",2:\"demà passat\",\"-2\":\"abans-d’ahir\",\"-1\":\"ahir\"},relativeTime:{future:{one:\"d’aquí a {0} dia\",other:\"d’aquí a {0} dies\"},past:{one:\"fa {0} dia\",other:\"fa {0} dies\"}}},\"day-short\":{displayName:\"dia\",relative:{0:\"avui\",1:\"demà\",2:\"demà passat\",\"-2\":\"abans-d’ahir\",\"-1\":\"ahir\"},relativeTime:{future:{one:\"d’aquí a {0} dia\",other:\"d’aquí a {0} dies\"},past:{one:\"fa {0} dia\",other:\"fa {0} dies\"}}},hour:{displayName:\"hora\",relative:{0:\"aquesta hora\"},relativeTime:{future:{one:\"d’aquí a {0} hora\",other:\"d’aquí a {0} hores\"},past:{one:\"fa {0} hora\",other:\"fa {0} hores\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"aquesta hora\"},relativeTime:{future:{one:\"d’aquí a {0} h\",other:\"d’aquí a {0} h\"},past:{one:\"fa {0} h\",other:\"fa {0} h\"}}},minute:{displayName:\"minut\",relative:{0:\"aquest minut\"},relativeTime:{future:{one:\"d’aquí a {0} minut\",other:\"d’aquí a {0} minuts\"},past:{one:\"fa {0} minut\",other:\"fa {0} minuts\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"aquest minut\"},relativeTime:{future:{one:\"d’aquí a {0} min\",other:\"d’aquí a {0} min\"},past:{one:\"fa {0} min\",other:\"fa {0} min\"}}},second:{displayName:\"segon\",relative:{0:\"ara\"},relativeTime:{future:{one:\"d’aquí a {0} segon\",other:\"d’aquí a {0} segons\"},past:{one:\"fa {0} segon\",other:\"fa {0} segons\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ara\"},relativeTime:{future:{one:\"d’aquí a {0} s\",other:\"d’aquí a {0} s\"},past:{one:\"fa {0} s\",other:\"fa {0} s\"}}}}},{locale:\"ca-AD\",parentLocale:\"ca\"},{locale:\"ca-ES-VALENCIA\",parentLocale:\"ca-ES\",fields:{year:{displayName:\"any\",relative:{0:\"enguany\",1:\"l’any que ve\",\"-1\":\"l’any passat\"},relativeTime:{future:{one:\"d’aquí a {0} any\",other:\"d’aquí a {0} anys\"},past:{one:\"fa {0} any\",other:\"fa {0} anys\"}}},\"year-short\":{displayName:\"any\",relative:{0:\"enguany\",1:\"l’any que ve\",\"-1\":\"l’any passat\"},relativeTime:{future:{one:\"d’aquí a {0} any\",other:\"d’aquí a {0} anys\"},past:{one:\"fa {0} any\",other:\"fa {0} anys\"}}},month:{displayName:\"mes\",relative:{0:\"aquest mes\",1:\"el mes que ve\",\"-1\":\"el mes passat\"},relativeTime:{future:{one:\"d’aquí a {0} mes\",other:\"d’aquí a {0} mesos\"},past:{one:\"fa {0} mes\",other:\"fa {0} mesos\"}}},\"month-short\":{displayName:\"mes\",relative:{0:\"aquest mes\",1:\"el mes que ve\",\"-1\":\"el mes passat\"},relativeTime:{future:{one:\"d’aquí a {0} mes\",other:\"d’aquí a {0} mesos\"},past:{one:\"fa {0} mes\",other:\"fa {0} mesos\"}}},day:{displayName:\"dia\",relative:{0:\"avui\",1:\"demà\",2:\"demà passat\",\"-2\":\"abans-d’ahir\",\"-1\":\"ahir\"},relativeTime:{future:{one:\"d’aquí a {0} dia\",other:\"d’aquí a {0} dies\"},past:{one:\"fa {0} dia\",other:\"fa {0} dies\"}}},\"day-short\":{displayName:\"dia\",relative:{0:\"avui\",1:\"demà\",2:\"demà passat\",\"-2\":\"abans-d’ahir\",\"-1\":\"ahir\"},relativeTime:{future:{one:\"d’aquí a {0} dia\",other:\"d’aquí a {0} dies\"},past:{one:\"fa {0} dia\",other:\"fa {0} dies\"}}},hour:{displayName:\"hora\",relative:{0:\"aquesta hora\"},relativeTime:{future:{one:\"d’aquí a {0} hora\",other:\"d’aquí a {0} hores\"},past:{one:\"fa {0} hora\",other:\"fa {0} hores\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"aquesta hora\"},relativeTime:{future:{one:\"d’aquí a {0} h\",other:\"d’aquí a {0} h\"},past:{one:\"fa {0} h\",other:\"fa {0} h\"}}},minute:{displayName:\"minut\",relative:{0:\"aquest minut\"},relativeTime:{future:{one:\"d’aquí a {0} minut\",other:\"d’aquí a {0} minuts\"},past:{one:\"fa {0} minut\",other:\"fa {0} minuts\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"aquest minut\"},relativeTime:{future:{one:\"d’aquí a {0} min\",other:\"d’aquí a {0} min\"},past:{one:\"fa {0} min\",other:\"fa {0} min\"}}},second:{displayName:\"segon\",relative:{0:\"ara\"},relativeTime:{future:{one:\"d’aquí a {0} segon\",other:\"d’aquí a {0} segons\"},past:{one:\"fa {0} segon\",other:\"fa {0} segons\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ara\"},relativeTime:{future:{one:\"d’aquí a {0} s\",other:\"d’aquí a {0} s\"},past:{one:\"fa {0} s\",other:\"fa {0} s\"}}}}},{locale:\"ca-ES\",parentLocale:\"ca\"},{locale:\"ca-FR\",parentLocale:\"ca\"},{locale:\"ca-IT\",parentLocale:\"ca\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ckb=t())}(this,function(){\"use strict\";return[{locale:\"ckb\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"ckb-IR\",parentLocale:\"ckb\"}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.cs=a())}(this,function(){\"use strict\";return[{locale:\"cs\",pluralRuleFunction:function(e,a){var n=String(e).split(\".\"),t=n[0],m=!n[1];return a?\"other\":1==e&&m?\"one\":t>=2&&t<=4&&m?\"few\":m?\"other\":\"many\"},fields:{year:{displayName:\"rok\",relative:{0:\"tento rok\",1:\"příští rok\",\"-1\":\"minulý rok\"},relativeTime:{future:{one:\"za {0} rok\",few:\"za {0} roky\",many:\"za {0} roku\",other:\"za {0} let\"},past:{one:\"před {0} rokem\",few:\"před {0} lety\",many:\"před {0} roku\",other:\"před {0} lety\"}}},\"year-short\":{displayName:\"r.\",relative:{0:\"tento rok\",1:\"příští rok\",\"-1\":\"minulý rok\"},relativeTime:{future:{one:\"za {0} r.\",few:\"za {0} r.\",many:\"za {0} r.\",other:\"za {0} l.\"},past:{one:\"před {0} r.\",few:\"před {0} r.\",many:\"před {0} r.\",other:\"před {0} l.\"}}},month:{displayName:\"měsíc\",relative:{0:\"tento měsíc\",1:\"příští měsíc\",\"-1\":\"minulý měsíc\"},relativeTime:{future:{one:\"za {0} měsíc\",few:\"za {0} měsíce\",many:\"za {0} měsíce\",other:\"za {0} měsíců\"},past:{one:\"před {0} měsícem\",few:\"před {0} měsíci\",many:\"před {0} měsíce\",other:\"před {0} měsíci\"}}},\"month-short\":{displayName:\"měs.\",relative:{0:\"tento měs.\",1:\"příští měs.\",\"-1\":\"minulý měs.\"},relativeTime:{future:{one:\"za {0} měs.\",few:\"za {0} měs.\",many:\"za {0} měs.\",other:\"za {0} měs.\"},past:{one:\"před {0} měs.\",few:\"před {0} měs.\",many:\"před {0} měs.\",other:\"před {0} měs.\"}}},day:{displayName:\"den\",relative:{0:\"dnes\",1:\"zítra\",2:\"pozítří\",\"-2\":\"předevčírem\",\"-1\":\"včera\"},relativeTime:{future:{one:\"za {0} den\",few:\"za {0} dny\",many:\"za {0} dne\",other:\"za {0} dní\"},past:{one:\"před {0} dnem\",few:\"před {0} dny\",many:\"před {0} dne\",other:\"před {0} dny\"}}},\"day-short\":{displayName:\"den\",relative:{0:\"dnes\",1:\"zítra\",2:\"pozítří\",\"-2\":\"předevčírem\",\"-1\":\"včera\"},relativeTime:{future:{one:\"za {0} den\",few:\"za {0} dny\",many:\"za {0} dne\",other:\"za {0} dní\"},past:{one:\"před {0} dnem\",few:\"před {0} dny\",many:\"před {0} dne\",other:\"před {0} dny\"}}},hour:{displayName:\"hodina\",relative:{0:\"tuto hodinu\"},relativeTime:{future:{one:\"za {0} hodinu\",few:\"za {0} hodiny\",many:\"za {0} hodiny\",other:\"za {0} hodin\"},past:{one:\"před {0} hodinou\",few:\"před {0} hodinami\",many:\"před {0} hodiny\",other:\"před {0} hodinami\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"tuto hodinu\"},relativeTime:{future:{one:\"za {0} h\",few:\"za {0} h\",many:\"za {0} h\",other:\"za {0} h\"},past:{one:\"před {0} h\",few:\"před {0} h\",many:\"před {0} h\",other:\"před {0} h\"}}},minute:{displayName:\"minuta\",relative:{0:\"tuto minutu\"},relativeTime:{future:{one:\"za {0} minutu\",few:\"za {0} minuty\",many:\"za {0} minuty\",other:\"za {0} minut\"},past:{one:\"před {0} minutou\",few:\"před {0} minutami\",many:\"před {0} minuty\",other:\"před {0} minutami\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"tuto minutu\"},relativeTime:{future:{one:\"za {0} min\",few:\"za {0} min\",many:\"za {0} min\",other:\"za {0} min\"},past:{one:\"před {0} min\",few:\"před {0} min\",many:\"před {0} min\",other:\"před {0} min\"}}},second:{displayName:\"sekunda\",relative:{0:\"nyní\"},relativeTime:{future:{one:\"za {0} sekundu\",few:\"za {0} sekundy\",many:\"za {0} sekundy\",other:\"za {0} sekund\"},past:{one:\"před {0} sekundou\",few:\"před {0} sekundami\",many:\"před {0} sekundy\",other:\"před {0} sekundami\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"nyní\"},relativeTime:{future:{one:\"za {0} s\",few:\"za {0} s\",many:\"za {0} s\",other:\"za {0} s\"},past:{one:\"před {0} s\",few:\"před {0} s\",many:\"před {0} s\",other:\"před {0} s\"}}}}}]});\n","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.cy=n())}(this,function(){\"use strict\";return[{locale:\"cy\",pluralRuleFunction:function(e,n){return n?0==e||7==e||8==e||9==e?\"zero\":1==e?\"one\":2==e?\"two\":3==e||4==e?\"few\":5==e||6==e?\"many\":\"other\":0==e?\"zero\":1==e?\"one\":2==e?\"two\":3==e?\"few\":6==e?\"many\":\"other\"},fields:{year:{displayName:\"blwyddyn\",relative:{0:\"eleni\",1:\"blwyddyn nesaf\",\"-1\":\"llynedd\"},relativeTime:{future:{zero:\"ymhen {0} mlynedd\",one:\"ymhen blwyddyn\",two:\"ymhen {0} flynedd\",few:\"ymhen {0} blynedd\",many:\"ymhen {0} blynedd\",other:\"ymhen {0} mlynedd\"},past:{zero:\"{0} o flynyddoedd yn ôl\",one:\"blwyddyn yn ôl\",two:\"{0} flynedd yn ôl\",few:\"{0} blynedd yn ôl\",many:\"{0} blynedd yn ôl\",other:\"{0} o flynyddoedd yn ôl\"}}},\"year-short\":{displayName:\"bl.\",relative:{0:\"eleni\",1:\"blwyddyn nesaf\",\"-1\":\"llynedd\"},relativeTime:{future:{zero:\"ymhen {0} mlynedd\",one:\"ymhen blwyddyn\",two:\"ymhen {0} flynedd\",few:\"ymhen {0} blynedd\",many:\"ymhen {0} blynedd\",other:\"ymhen {0} mlynedd\"},past:{zero:\"{0} o flynyddoedd yn ôl\",one:\"blwyddyn yn ôl\",two:\"{0} flynedd yn ôl\",few:\"{0} blynedd yn ôl\",many:\"{0} blynedd yn ôl\",other:\"{0} o flynyddoedd yn ôl\"}}},month:{displayName:\"mis\",relative:{0:\"y mis hwn\",1:\"mis nesaf\",\"-1\":\"mis diwethaf\"},relativeTime:{future:{zero:\"ymhen {0} mis\",one:\"ymhen mis\",two:\"ymhen deufis\",few:\"ymhen {0} mis\",many:\"ymhen {0} mis\",other:\"ymhen {0} mis\"},past:{zero:\"{0} mis yn ôl\",one:\"{0} mis yn ôl\",two:\"{0} fis yn ôl\",few:\"{0} mis yn ôl\",many:\"{0} mis yn ôl\",other:\"{0} mis yn ôl\"}}},\"month-short\":{displayName:\"mis\",relative:{0:\"y mis hwn\",1:\"mis nesaf\",\"-1\":\"mis diwethaf\"},relativeTime:{future:{zero:\"ymhen {0} mis\",one:\"ymhen mis\",two:\"ymhen deufis\",few:\"ymhen {0} mis\",many:\"ymhen {0} mis\",other:\"ymhen {0} mis\"},past:{zero:\"{0} mis yn ôl\",one:\"{0} mis yn ôl\",two:\"deufis yn ôl\",few:\"{0} mis yn ôl\",many:\"{0} mis yn ôl\",other:\"{0} mis yn ôl\"}}},day:{displayName:\"diwrnod\",relative:{0:\"heddiw\",1:\"yfory\",2:\"drennydd\",\"-2\":\"echdoe\",\"-1\":\"ddoe\"},relativeTime:{future:{zero:\"ymhen {0} diwrnod\",one:\"ymhen diwrnod\",two:\"ymhen deuddydd\",few:\"ymhen {0} diwrnod\",many:\"ymhen {0} diwrnod\",other:\"ymhen {0} diwrnod\"},past:{zero:\"{0} diwrnod yn ôl\",one:\"{0} diwrnod yn ôl\",two:\"{0} ddiwrnod yn ôl\",few:\"{0} diwrnod yn ôl\",many:\"{0} diwrnod yn ôl\",other:\"{0} diwrnod yn ôl\"}}},\"day-short\":{displayName:\"diwrnod\",relative:{0:\"heddiw\",1:\"yfory\",2:\"drennydd\",\"-2\":\"echdoe\",\"-1\":\"ddoe\"},relativeTime:{future:{zero:\"ymhen {0} diwrnod\",one:\"ymhen diwrnod\",two:\"ymhen deuddydd\",few:\"ymhen {0} diwrnod\",many:\"ymhen {0} diwrnod\",other:\"ymhen {0} diwrnod\"},past:{zero:\"{0} diwrnod yn ôl\",one:\"{0} diwrnod yn ôl\",two:\"{0} ddiwrnod yn ôl\",few:\"{0} diwrnod yn ôl\",many:\"{0} diwrnod yn ôl\",other:\"{0} diwrnod yn ôl\"}}},hour:{displayName:\"awr\",relative:{0:\"yr awr hon\"},relativeTime:{future:{zero:\"ymhen {0} awr\",one:\"ymhen awr\",two:\"ymhen {0} awr\",few:\"ymhen {0} awr\",many:\"ymhen {0} awr\",other:\"ymhen {0} awr\"},past:{zero:\"{0} awr yn ôl\",one:\"{0} awr yn ôl\",two:\"{0} awr yn ôl\",few:\"{0} awr yn ôl\",many:\"{0} awr yn ôl\",other:\"{0} awr yn ôl\"}}},\"hour-short\":{displayName:\"awr\",relative:{0:\"yr awr hon\"},relativeTime:{future:{zero:\"ymhen {0} awr\",one:\"ymhen awr\",two:\"ymhen {0} awr\",few:\"ymhen {0} awr\",many:\"ymhen {0} awr\",other:\"ymhen {0} awr\"},past:{zero:\"{0} awr yn ôl\",one:\"awr yn ôl\",two:\"{0} awr yn ôl\",few:\"{0} awr yn ôl\",many:\"{0} awr yn ôl\",other:\"{0} awr yn ôl\"}}},minute:{displayName:\"munud\",relative:{0:\"y funud hon\"},relativeTime:{future:{zero:\"ymhen {0} munud\",one:\"ymhen {0} munud\",two:\"ymhen {0} munud\",few:\"ymhen {0} munud\",many:\"ymhen {0} munud\",other:\"ymhen {0} munud\"},past:{zero:\"{0} munud yn ôl\",one:\"{0} munud yn ôl\",two:\"{0} munud yn ôl\",few:\"{0} munud yn ôl\",many:\"{0} munud yn ôl\",other:\"{0} munud yn ôl\"}}},\"minute-short\":{displayName:\"mun.\",relative:{0:\"y funud hon\"},relativeTime:{future:{zero:\"ymhen {0} munud\",one:\"ymhen {0} mun.\",two:\"ymhen {0} fun.\",few:\"ymhen {0} munud\",many:\"ymhen {0} munud\",other:\"ymhen {0} munud\"},past:{zero:\"{0} munud yn ôl\",one:\"{0} munud yn ôl\",two:\"{0} fun. yn ôl\",few:\"{0} munud yn ôl\",many:\"{0} munud yn ôl\",other:\"{0} munud yn ôl\"}}},second:{displayName:\"eiliad\",relative:{0:\"nawr\"},relativeTime:{future:{zero:\"ymhen {0} eiliad\",one:\"ymhen {0} eiliad\",two:\"ymhen {0} eiliad\",few:\"ymhen {0} eiliad\",many:\"ymhen {0} eiliad\",other:\"ymhen {0} eiliad\"},past:{zero:\"{0} eiliad yn ôl\",one:\"{0} eiliad yn ôl\",two:\"{0} eiliad yn ôl\",few:\"{0} eiliad yn ôl\",many:\"{0} eiliad yn ôl\",other:\"{0} eiliad yn ôl\"}}},\"second-short\":{displayName:\"eiliad\",relative:{0:\"nawr\"},relativeTime:{future:{zero:\"ymhen {0} eiliad\",one:\"ymhen {0} eiliad\",two:\"ymhen {0} eiliad\",few:\"ymhen {0} eiliad\",many:\"ymhen {0} eiliad\",other:\"ymhen {0} eiliad\"},past:{zero:\"{0} eiliad yn ôl\",one:\"{0} eiliad yn ôl\",two:\"{0} eiliad yn ôl\",few:\"{0} eiliad yn ôl\",many:\"{0} eiliad yn ôl\",other:\"{0} eiliad yn ôl\"}}}}}]});\n","!function(e,r){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(r):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.da=r())}(this,function(){\"use strict\";return[{locale:\"da\",pluralRuleFunction:function(e,r){var t=String(e).split(\".\"),o=t[0],i=Number(t[0])==e;return r?\"other\":1!=e&&(i||0!=o&&1!=o)?\"other\":\"one\"},fields:{year:{displayName:\"år\",relative:{0:\"i år\",1:\"næste år\",\"-1\":\"sidste år\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"for {0} år siden\",other:\"for {0} år siden\"}}},\"year-short\":{displayName:\"år\",relative:{0:\"i år\",1:\"næste år\",\"-1\":\"sidste år\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"for {0} år siden\",other:\"for {0} år siden\"}}},month:{displayName:\"måned\",relative:{0:\"denne måned\",1:\"næste måned\",\"-1\":\"sidste måned\"},relativeTime:{future:{one:\"om {0} måned\",other:\"om {0} måneder\"},past:{one:\"for {0} måned siden\",other:\"for {0} måneder siden\"}}},\"month-short\":{displayName:\"md.\",relative:{0:\"denne md.\",1:\"næste md.\",\"-1\":\"sidste md.\"},relativeTime:{future:{one:\"om {0} md.\",other:\"om {0} mdr.\"},past:{one:\"for {0} md. siden\",other:\"for {0} mdr. siden\"}}},day:{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgen\",2:\"i overmorgen\",\"-2\":\"i forgårs\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} dag\",other:\"om {0} dage\"},past:{one:\"for {0} dag siden\",other:\"for {0} dage siden\"}}},\"day-short\":{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgen\",2:\"i overmorgen\",\"-2\":\"i forgårs\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} dag\",other:\"om {0} dage\"},past:{one:\"for {0} dag siden\",other:\"for {0} dage siden\"}}},hour:{displayName:\"time\",relative:{0:\"i den kommende time\"},relativeTime:{future:{one:\"om {0} time\",other:\"om {0} timer\"},past:{one:\"for {0} time siden\",other:\"for {0} timer siden\"}}},\"hour-short\":{displayName:\"t.\",relative:{0:\"i den kommende time\"},relativeTime:{future:{one:\"om {0} time\",other:\"om {0} timer\"},past:{one:\"for {0} time siden\",other:\"for {0} timer siden\"}}},minute:{displayName:\"minut\",relative:{0:\"i det kommende minut\"},relativeTime:{future:{one:\"om {0} minut\",other:\"om {0} minutter\"},past:{one:\"for {0} minut siden\",other:\"for {0} minutter siden\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"i det kommende minut\"},relativeTime:{future:{one:\"om {0} min.\",other:\"om {0} min.\"},past:{one:\"for {0} min. siden\",other:\"for {0} min. siden\"}}},second:{displayName:\"sekund\",relative:{0:\"nu\"},relativeTime:{future:{one:\"om {0} sekund\",other:\"om {0} sekunder\"},past:{one:\"for {0} sekund siden\",other:\"for {0} sekunder siden\"}}},\"second-short\":{displayName:\"sek.\",relative:{0:\"nu\"},relativeTime:{future:{one:\"om {0} sek.\",other:\"om {0} sek.\"},past:{one:\"for {0} sek. siden\",other:\"for {0} sek. siden\"}}}}},{locale:\"da-GL\",parentLocale:\"da\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.de=t())}(this,function(){\"use strict\";return[{locale:\"de\",pluralRuleFunction:function(e,t){var n=!String(e).split(\".\")[1];return t?\"other\":1==e&&n?\"one\":\"other\"},fields:{year:{displayName:\"Jahr\",relative:{0:\"dieses Jahr\",1:\"nächstes Jahr\",\"-1\":\"letztes Jahr\"},relativeTime:{future:{one:\"in {0} Jahr\",other:\"in {0} Jahren\"},past:{one:\"vor {0} Jahr\",other:\"vor {0} Jahren\"}}},\"year-short\":{displayName:\"Jahr\",relative:{0:\"dieses Jahr\",1:\"nächstes Jahr\",\"-1\":\"letztes Jahr\"},relativeTime:{future:{one:\"in {0} Jahr\",other:\"in {0} Jahren\"},past:{one:\"vor {0} Jahr\",other:\"vor {0} Jahren\"}}},month:{displayName:\"Monat\",relative:{0:\"diesen Monat\",1:\"nächsten Monat\",\"-1\":\"letzten Monat\"},relativeTime:{future:{one:\"in {0} Monat\",other:\"in {0} Monaten\"},past:{one:\"vor {0} Monat\",other:\"vor {0} Monaten\"}}},\"month-short\":{displayName:\"Monat\",relative:{0:\"diesen Monat\",1:\"nächsten Monat\",\"-1\":\"letzten Monat\"},relativeTime:{future:{one:\"in {0} Monat\",other:\"in {0} Monaten\"},past:{one:\"vor {0} Monat\",other:\"vor {0} Monaten\"}}},day:{displayName:\"Tag\",relative:{0:\"heute\",1:\"morgen\",2:\"übermorgen\",\"-2\":\"vorgestern\",\"-1\":\"gestern\"},relativeTime:{future:{one:\"in {0} Tag\",other:\"in {0} Tagen\"},past:{one:\"vor {0} Tag\",other:\"vor {0} Tagen\"}}},\"day-short\":{displayName:\"Tag\",relative:{0:\"heute\",1:\"morgen\",2:\"übermorgen\",\"-2\":\"vorgestern\",\"-1\":\"gestern\"},relativeTime:{future:{one:\"in {0} Tag\",other:\"in {0} Tagen\"},past:{one:\"vor {0} Tag\",other:\"vor {0} Tagen\"}}},hour:{displayName:\"Stunde\",relative:{0:\"in dieser Stunde\"},relativeTime:{future:{one:\"in {0} Stunde\",other:\"in {0} Stunden\"},past:{one:\"vor {0} Stunde\",other:\"vor {0} Stunden\"}}},\"hour-short\":{displayName:\"Std.\",relative:{0:\"in dieser Stunde\"},relativeTime:{future:{one:\"in {0} Std.\",other:\"in {0} Std.\"},past:{one:\"vor {0} Std.\",other:\"vor {0} Std.\"}}},minute:{displayName:\"Minute\",relative:{0:\"in dieser Minute\"},relativeTime:{future:{one:\"in {0} Minute\",other:\"in {0} Minuten\"},past:{one:\"vor {0} Minute\",other:\"vor {0} Minuten\"}}},\"minute-short\":{displayName:\"Min.\",relative:{0:\"in dieser Minute\"},relativeTime:{future:{one:\"in {0} Min.\",other:\"in {0} Min.\"},past:{one:\"vor {0} Min.\",other:\"vor {0} Min.\"}}},second:{displayName:\"Sekunde\",relative:{0:\"jetzt\"},relativeTime:{future:{one:\"in {0} Sekunde\",other:\"in {0} Sekunden\"},past:{one:\"vor {0} Sekunde\",other:\"vor {0} Sekunden\"}}},\"second-short\":{displayName:\"Sek.\",relative:{0:\"jetzt\"},relativeTime:{future:{one:\"in {0} Sek.\",other:\"in {0} Sek.\"},past:{one:\"vor {0} Sek.\",other:\"vor {0} Sek.\"}}}}},{locale:\"de-AT\",parentLocale:\"de\"},{locale:\"de-BE\",parentLocale:\"de\"},{locale:\"de-CH\",parentLocale:\"de\"},{locale:\"de-IT\",parentLocale:\"de\"},{locale:\"de-LI\",parentLocale:\"de\"},{locale:\"de-LU\",parentLocale:\"de\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.el=t())}(this,function(){\"use strict\";return[{locale:\"el\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"έτος\",relative:{0:\"φέτος\",1:\"επόμενο έτος\",\"-1\":\"πέρσι\"},relativeTime:{future:{one:\"σε {0} έτος\",other:\"σε {0} έτη\"},past:{one:\"πριν από {0} έτος\",other:\"πριν από {0} έτη\"}}},\"year-short\":{displayName:\"έτ.\",relative:{0:\"φέτος\",1:\"επόμενο έτος\",\"-1\":\"πέρσι\"},relativeTime:{future:{one:\"σε {0} έτος\",other:\"σε {0} έτη\"},past:{one:\"πριν από {0} έτος\",other:\"πριν από {0} έτη\"}}},month:{displayName:\"μήνας\",relative:{0:\"τρέχων μήνας\",1:\"επόμενος μήνας\",\"-1\":\"προηγούμενος μήνας\"},relativeTime:{future:{one:\"σε {0} μήνα\",other:\"σε {0} μήνες\"},past:{one:\"πριν από {0} μήνα\",other:\"πριν από {0} μήνες\"}}},\"month-short\":{displayName:\"μήν.\",relative:{0:\"τρέχων μήνας\",1:\"επόμενος μήνας\",\"-1\":\"προηγούμενος μήνας\"},relativeTime:{future:{one:\"σε {0} μήνα\",other:\"σε {0} μήνες\"},past:{one:\"πριν από {0} μήνα\",other:\"πριν από {0} μήνες\"}}},day:{displayName:\"ημέρα\",relative:{0:\"σήμερα\",1:\"αύριο\",2:\"μεθαύριο\",\"-2\":\"προχθές\",\"-1\":\"χθες\"},relativeTime:{future:{one:\"σε {0} ημέρα\",other:\"σε {0} ημέρες\"},past:{one:\"πριν από {0} ημέρα\",other:\"πριν από {0} ημέρες\"}}},\"day-short\":{displayName:\"ημ.\",relative:{0:\"σήμερα\",1:\"αύριο\",2:\"μεθαύριο\",\"-2\":\"προχθές\",\"-1\":\"χθες\"},relativeTime:{future:{one:\"σε {0} ημ.\",other:\"σε {0} ημ.\"},past:{one:\"πριν από {0} ημ.\",other:\"πριν από {0} ημ.\"}}},hour:{displayName:\"ώρα\",relative:{0:\"τρέχουσα ώρα\"},relativeTime:{future:{one:\"σε {0} ώρα\",other:\"σε {0} ώρες\"},past:{one:\"πριν από {0} ώρα\",other:\"πριν από {0} ώρες\"}}},\"hour-short\":{displayName:\"ώ.\",relative:{0:\"τρέχουσα ώρα\"},relativeTime:{future:{one:\"σε {0} ώ.\",other:\"σε {0} ώ.\"},past:{one:\"πριν από {0} ώ.\",other:\"πριν από {0} ώ.\"}}},minute:{displayName:\"λεπτό\",relative:{0:\"τρέχον λεπτό\"},relativeTime:{future:{one:\"σε {0} λεπτό\",other:\"σε {0} λεπτά\"},past:{one:\"πριν από {0} λεπτό\",other:\"πριν από {0} λεπτά\"}}},\"minute-short\":{displayName:\"λεπ.\",relative:{0:\"τρέχον λεπτό\"},relativeTime:{future:{one:\"σε {0} λεπ.\",other:\"σε {0} λεπ.\"},past:{one:\"πριν από {0} λεπ.\",other:\"πριν από {0} λεπ.\"}}},second:{displayName:\"δευτερόλεπτο\",relative:{0:\"τώρα\"},relativeTime:{future:{one:\"σε {0} δευτερόλεπτο\",other:\"σε {0} δευτερόλεπτα\"},past:{one:\"πριν από {0} δευτερόλεπτο\",other:\"πριν από {0} δευτερόλεπτα\"}}},\"second-short\":{displayName:\"δευτ.\",relative:{0:\"τώρα\"},relativeTime:{future:{one:\"σε {0} δευτ.\",other:\"σε {0} δευτ.\"},past:{one:\"πριν από {0} δευτ.\",other:\"πριν από {0} δευτ.\"}}}}},{locale:\"el-CY\",parentLocale:\"el\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.eo=t())}(this,function(){\"use strict\";return[{locale:\"eo\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.es=a())}(this,function(){\"use strict\";return[{locale:\"es\",pluralRuleFunction:function(e,a){return a?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"año\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} año\",other:\"dentro de {0} años\"},past:{one:\"hace {0} año\",other:\"hace {0} años\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} a\",other:\"dentro de {0} a\"},past:{one:\"hace {0} a\",other:\"hace {0} a\"}}},month:{displayName:\"mes\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} mes\",other:\"dentro de {0} meses\"},past:{one:\"hace {0} mes\",other:\"hace {0} meses\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} m\",other:\"dentro de {0} m\"},past:{one:\"hace {0} m\",other:\"hace {0} m\"}}},day:{displayName:\"día\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},\"day-short\":{displayName:\"d\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"hace {0} hora\",other:\"hace {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} h\",other:\"dentro de {0} h\"},past:{one:\"hace {0} h\",other:\"hace {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"hace {0} minuto\",other:\"hace {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} min\",other:\"dentro de {0} min\"},past:{one:\"hace {0} min\",other:\"hace {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"hace {0} segundo\",other:\"hace {0} segundos\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} s\",other:\"dentro de {0} s\"},past:{one:\"hace {0} s\",other:\"hace {0} s\"}}}}},{locale:\"es-419\",parentLocale:\"es\"},{locale:\"es-AR\",parentLocale:\"es-419\",fields:{year:{displayName:\"año\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} año\",other:\"dentro de {0} años\"},past:{one:\"hace {0} año\",other:\"hace {0} años\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} a\",other:\"dentro de {0} a\"},past:{one:\"hace {0} a\",other:\"hace {0} a\"}}},month:{displayName:\"mes\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} mes\",other:\"dentro de {0} meses\"},past:{one:\"hace {0} mes\",other:\"hace {0} meses\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} m\",other:\"dentro de {0} m\"},past:{one:\"hace {0} m\",other:\"hace {0} m\"}}},day:{displayName:\"día\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},\"day-short\":{displayName:\"d\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} días\",other:\"dentro de {0} días\"},past:{one:\"hace {0} días\",other:\"hace {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"hace {0} hora\",other:\"hace {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} h\",other:\"dentro de {0} h\"},past:{one:\"hace {0} h\",other:\"hace {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"hace {0} minuto\",other:\"hace {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} min\",other:\"dentro de {0} min\"},past:{one:\"hace {0} min\",other:\"hace {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"hace {0} segundo\",other:\"hace {0} segundos\"}}},\"second-short\":{displayName:\"seg.\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} seg.\",other:\"dentro de {0} seg.\"},past:{one:\"hace {0} seg.\",other:\"hace {0} seg.\"}}}}},{locale:\"es-BO\",parentLocale:\"es-419\"},{locale:\"es-BR\",parentLocale:\"es-419\"},{locale:\"es-BZ\",parentLocale:\"es-419\"},{locale:\"es-CL\",parentLocale:\"es-419\"},{locale:\"es-CO\",parentLocale:\"es-419\"},{locale:\"es-CR\",parentLocale:\"es-419\"},{locale:\"es-CU\",parentLocale:\"es-419\"},{locale:\"es-DO\",parentLocale:\"es-419\",fields:{year:{displayName:\"Año\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} año\",other:\"dentro de {0} años\"},past:{one:\"hace {0} año\",other:\"hace {0} años\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} a\",other:\"dentro de {0} a\"},past:{one:\"hace {0} a\",other:\"hace {0} a\"}}},month:{displayName:\"Mes\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} mes\",other:\"dentro de {0} meses\"},past:{one:\"hace {0} mes\",other:\"hace {0} meses\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} m\",other:\"dentro de {0} m\"},past:{one:\"hace {0} m\",other:\"hace {0} m\"}}},day:{displayName:\"Día\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},\"day-short\":{displayName:\"d\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"hace {0} hora\",other:\"hace {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} h\",other:\"dentro de {0} h\"},past:{one:\"hace {0} h\",other:\"hace {0} h\"}}},minute:{displayName:\"Minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"hace {0} minuto\",other:\"hace {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} min\",other:\"dentro de {0} min\"},past:{one:\"hace {0} min\",other:\"hace {0} min\"}}},second:{displayName:\"Segundo\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"hace {0} segundo\",other:\"hace {0} segundos\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} s\",other:\"dentro de {0} s\"},past:{one:\"hace {0} s\",other:\"hace {0} s\"}}}}},{locale:\"es-EA\",parentLocale:\"es\"},{locale:\"es-EC\",parentLocale:\"es-419\"},{locale:\"es-GQ\",parentLocale:\"es\"},{locale:\"es-GT\",parentLocale:\"es-419\"},{locale:\"es-HN\",parentLocale:\"es-419\"},{locale:\"es-IC\",parentLocale:\"es\"},{locale:\"es-MX\",parentLocale:\"es-419\",fields:{year:{displayName:\"año\",relative:{0:\"este año\",1:\"el año próximo\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} año\",other:\"dentro de {0} años\"},past:{one:\"hace {0} año\",other:\"hace {0} años\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"en {0} a\",other:\"en {0} a\"},past:{one:\"hace {0} a\",other:\"hace {0} a\"}}},month:{displayName:\"mes\",relative:{0:\"este mes\",1:\"el mes próximo\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"en {0} mes\",other:\"en {0} meses\"},past:{one:\"hace {0} mes\",other:\"hace {0} meses\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"en {0} m\",other:\"en {0} m\"},past:{one:\"hace {0} m\",other:\"hace {0} m\"}}},day:{displayName:\"día\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},\"day-short\":{displayName:\"d\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"en {0} día\",other:\"en {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"hace {0} hora\",other:\"hace {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"en {0} h\",other:\"en {0} n\"},past:{one:\"hace {0} h\",other:\"hace {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"hace {0} minuto\",other:\"hace {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"en {0} min\",other:\"en {0} min\"},past:{one:\"hace {0} min\",other:\"hace {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"hace {0} segundo\",other:\"hace {0} segundos\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"en {0} s\",other:\"en {0} s\"},past:{one:\"hace {0} s\",other:\"hace {0} s\"}}}}},{locale:\"es-NI\",parentLocale:\"es-419\"},{locale:\"es-PA\",parentLocale:\"es-419\"},{locale:\"es-PE\",parentLocale:\"es-419\"},{locale:\"es-PH\",parentLocale:\"es\"},{locale:\"es-PR\",parentLocale:\"es-419\"},{locale:\"es-PY\",parentLocale:\"es-419\",fields:{year:{displayName:\"año\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} año\",other:\"dentro de {0} años\"},past:{one:\"hace {0} año\",other:\"hace {0} años\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} a\",other:\"dentro de {0} a\"},past:{one:\"hace {0} a\",other:\"hace {0} a\"}}},month:{displayName:\"mes\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} mes\",other:\"dentro de {0} meses\"},past:{one:\"hace {0} mes\",other:\"hace {0} meses\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} m\",other:\"dentro de {0} m\"},past:{one:\"hace {0} m\",other:\"hace {0} m\"}}},day:{displayName:\"día\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},\"day-short\":{displayName:\"d\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"hace {0} hora\",other:\"hace {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} h\",other:\"dentro de {0} h\"},past:{one:\"hace {0} h\",other:\"hace {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"hace {0} minuto\",other:\"hace {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} min\",other:\"dentro de {0} min\"},past:{one:\"hace {0} min\",other:\"hace {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"hace {0} segundo\",other:\"hace {0} segundos\"}}},\"second-short\":{displayName:\"seg.\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} seg.\",other:\"dentro de {0} seg.\"},past:{one:\"hace {0} seg.\",other:\"hace {0} seg.\"}}}}},{locale:\"es-SV\",parentLocale:\"es-419\",fields:{year:{displayName:\"año\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} año\",other:\"dentro de {0} años\"},past:{one:\"hace {0} año\",other:\"hace {0} años\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} a\",other:\"dentro de {0} a\"},past:{one:\"hace {0} a\",other:\"hace {0} a\"}}},month:{displayName:\"mes\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} mes\",other:\"dentro de {0} meses\"},past:{one:\"hace {0} mes\",other:\"hace {0} meses\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} m\",other:\"dentro de {0} m\"},past:{one:\"hace {0} m\",other:\"hace {0} m\"}}},day:{displayName:\"día\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"antier\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},\"day-short\":{displayName:\"d\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"hace {0} hora\",other:\"hace {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} h\",other:\"dentro de {0} h\"},past:{one:\"hace {0} h\",other:\"hace {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"hace {0} minuto\",other:\"hace {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} min\",other:\"dentro de {0} min\"},past:{one:\"hace {0} min\",other:\"hace {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"hace {0} segundo\",other:\"hace {0} segundos\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} s\",other:\"dentro de {0} s\"},past:{one:\"hace {0} s\",other:\"hace {0} s\"}}}}},{locale:\"es-US\",parentLocale:\"es-419\",fields:{year:{displayName:\"año\",relative:{0:\"este año\",1:\"el año próximo\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} año\",other:\"dentro de {0} años\"},past:{one:\"hace {0} año\",other:\"hace {0} años\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} a\",other:\"dentro de {0} a\"},past:{one:\"hace {0} a\",other:\"hace {0} a\"}}},month:{displayName:\"mes\",relative:{0:\"este mes\",1:\"el mes próximo\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} mes\",other:\"dentro de {0} meses\"},past:{one:\"hace {0} mes\",other:\"hace {0} meses\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} m\",other:\"dentro de {0} m\"},past:{one:\"hace {0} m\",other:\"hace {0} m\"}}},day:{displayName:\"día\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},\"day-short\":{displayName:\"d\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"hace {0} hora\",other:\"hace {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} h\",other:\"dentro de {0} h\"},past:{one:\"hace {0} h\",other:\"hace {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"hace {0} minuto\",other:\"hace {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} min\",other:\"dentro de {0} min\"},past:{one:\"hace {0} min\",other:\"hace {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"hace {0} segundo\",other:\"hace {0} segundos\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} s\",other:\"dentro de {0} s\"},past:{one:\"hace {0} s\",other:\"hace {0} s\"}}}}},{locale:\"es-UY\",parentLocale:\"es-419\"},{locale:\"es-VE\",parentLocale:\"es-419\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.et=t())}(this,function(){\"use strict\";return[{locale:\"et\",pluralRuleFunction:function(e,t){var a=!String(e).split(\".\")[1];return t?\"other\":1==e&&a?\"one\":\"other\"},fields:{year:{displayName:\"aasta\",relative:{0:\"käesolev aasta\",1:\"järgmine aasta\",\"-1\":\"eelmine aasta\"},relativeTime:{future:{one:\"{0} aasta pärast\",other:\"{0} aasta pärast\"},past:{one:\"{0} aasta eest\",other:\"{0} aasta eest\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"käesolev aasta\",1:\"järgmine aasta\",\"-1\":\"eelmine aasta\"},relativeTime:{future:{one:\"{0} a pärast\",other:\"{0} a pärast\"},past:{one:\"{0} a eest\",other:\"{0} a eest\"}}},month:{displayName:\"kuu\",relative:{0:\"käesolev kuu\",1:\"järgmine kuu\",\"-1\":\"eelmine kuu\"},relativeTime:{future:{one:\"{0} kuu pärast\",other:\"{0} kuu pärast\"},past:{one:\"{0} kuu eest\",other:\"{0} kuu eest\"}}},\"month-short\":{displayName:\"k\",relative:{0:\"käesolev kuu\",1:\"järgmine kuu\",\"-1\":\"eelmine kuu\"},relativeTime:{future:{one:\"{0} kuu pärast\",other:\"{0} kuu pärast\"},past:{one:\"{0} kuu eest\",other:\"{0} kuu eest\"}}},day:{displayName:\"päev\",relative:{0:\"täna\",1:\"homme\",2:\"ülehomme\",\"-2\":\"üleeile\",\"-1\":\"eile\"},relativeTime:{future:{one:\"{0} päeva pärast\",other:\"{0} päeva pärast\"},past:{one:\"{0} päeva eest\",other:\"{0} päeva eest\"}}},\"day-short\":{displayName:\"p\",relative:{0:\"täna\",1:\"homme\",2:\"ülehomme\",\"-2\":\"üleeile\",\"-1\":\"eile\"},relativeTime:{future:{one:\"{0} p pärast\",other:\"{0} p pärast\"},past:{one:\"{0} p eest\",other:\"{0} p eest\"}}},hour:{displayName:\"tund\",relative:{0:\"praegusel tunnil\"},relativeTime:{future:{one:\"{0} tunni pärast\",other:\"{0} tunni pärast\"},past:{one:\"{0} tunni eest\",other:\"{0} tunni eest\"}}},\"hour-short\":{displayName:\"t\",relative:{0:\"praegusel tunnil\"},relativeTime:{future:{one:\"{0} t pärast\",other:\"{0} t pärast\"},past:{one:\"{0} t eest\",other:\"{0} t eest\"}}},minute:{displayName:\"minut\",relative:{0:\"praegusel minutil\"},relativeTime:{future:{one:\"{0} minuti pärast\",other:\"{0} minuti pärast\"},past:{one:\"{0} minuti eest\",other:\"{0} minuti eest\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"praegusel minutil\"},relativeTime:{future:{one:\"{0} min pärast\",other:\"{0} min pärast\"},past:{one:\"{0} min eest\",other:\"{0} min eest\"}}},second:{displayName:\"sekund\",relative:{0:\"nüüd\"},relativeTime:{future:{one:\"{0} sekundi pärast\",other:\"{0} sekundi pärast\"},past:{one:\"{0} sekundi eest\",other:\"{0} sekundi eest\"}}},\"second-short\":{displayName:\"sek\",relative:{0:\"nüüd\"},relativeTime:{future:{one:\"{0} sek pärast\",other:\"{0} sek pärast\"},past:{one:\"{0} sek eest\",other:\"{0} sek eest\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.eu=a())}(this,function(){\"use strict\";return[{locale:\"eu\",pluralRuleFunction:function(e,a){return a?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"urtea\",relative:{0:\"aurten\",1:\"hurrengo urtean\",\"-1\":\"iaz\"},relativeTime:{future:{one:\"{0} urte barru\",other:\"{0} urte barru\"},past:{one:\"Duela {0} urte\",other:\"Duela {0} urte\"}}},\"year-short\":{displayName:\"urtea\",relative:{0:\"aurten\",1:\"hurrengo urtea\",\"-1\":\"aurreko urtea\"},relativeTime:{future:{one:\"{0} urte barru\",other:\"{0} urte barru\"},past:{one:\"Duela {0} urte\",other:\"Duela {0} urte\"}}},month:{displayName:\"hilabetea\",relative:{0:\"hilabete honetan\",1:\"hurrengo hilabetean\",\"-1\":\"aurreko hilabetean\"},relativeTime:{future:{one:\"{0} hilabete barru\",other:\"{0} hilabete barru\"},past:{one:\"Duela {0} hilabete\",other:\"Duela {0} hilabete\"}}},\"month-short\":{displayName:\"hil.\",relative:{0:\"hilabete honetan\",1:\"hurrengo hilabetean\",\"-1\":\"aurreko hilabetean\"},relativeTime:{future:{one:\"{0} hilabete barru\",other:\"{0} hilabete barru\"},past:{one:\"Duela {0} hilabete\",other:\"Duela {0} hilabete\"}}},day:{displayName:\"eguna\",relative:{0:\"gaur\",1:\"bihar\",2:\"etzi\",\"-2\":\"herenegun\",\"-1\":\"atzo\"},relativeTime:{future:{one:\"{0} egun barru\",other:\"{0} egun barru\"},past:{one:\"Duela {0} egun\",other:\"Duela {0} egun\"}}},\"day-short\":{displayName:\"eg.\",relative:{0:\"gaur\",1:\"bihar\",2:\"etzi\",\"-2\":\"herenegun\",\"-1\":\"atzo\"},relativeTime:{future:{one:\"{0} egun barru\",other:\"{0} egun barru\"},past:{one:\"Duela {0} egun\",other:\"Duela {0} egun\"}}},hour:{displayName:\"ordua\",relative:{0:\"ordu honetan\"},relativeTime:{future:{one:\"{0} ordu barru\",other:\"{0} ordu barru\"},past:{one:\"Duela {0} ordu\",other:\"Duela {0} ordu\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"ordu honetan\"},relativeTime:{future:{one:\"{0} ordu barru\",other:\"{0} ordu barru\"},past:{one:\"Duela {0} ordu\",other:\"Duela {0} ordu\"}}},minute:{displayName:\"minutua\",relative:{0:\"minutu honetan\"},relativeTime:{future:{one:\"{0} minutu barru\",other:\"{0} minutu barru\"},past:{one:\"Duela {0} minutu\",other:\"Duela {0} minutu\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"minutu honetan\"},relativeTime:{future:{one:\"{0} minutu barru\",other:\"{0} minutu barru\"},past:{one:\"Duela {0} minutu\",other:\"Duela {0} minutu\"}}},second:{displayName:\"segundoa\",relative:{0:\"orain\"},relativeTime:{future:{one:\"{0} segundo barru\",other:\"{0} segundo barru\"},past:{one:\"Duela {0} segundo\",other:\"Duela {0} segundo\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"orain\"},relativeTime:{future:{one:\"{0} segundo barru\",other:\"{0} segundo barru\"},past:{one:\"Duela {0} segundo\",other:\"Duela {0} segundo\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.fa=t())}(this,function(){\"use strict\";return[{locale:\"fa\",pluralRuleFunction:function(e,t){return t?\"other\":e>=0&&e<=1?\"one\":\"other\"},fields:{year:{displayName:\"سال\",relative:{0:\"امسال\",1:\"سال آینده\",\"-1\":\"سال گذشته\"},relativeTime:{future:{one:\"{0} سال بعد\",other:\"{0} سال بعد\"},past:{one:\"{0} سال پیش\",other:\"{0} سال پیش\"}}},\"year-short\":{displayName:\"سال\",relative:{0:\"امسال\",1:\"سال آینده\",\"-1\":\"سال گذشته\"},relativeTime:{future:{one:\"{0} سال بعد\",other:\"{0} سال بعد\"},past:{one:\"{0} سال پیش\",other:\"{0} سال پیش\"}}},month:{displayName:\"ماه\",relative:{0:\"این ماه\",1:\"ماه آینده\",\"-1\":\"ماه گذشته\"},relativeTime:{future:{one:\"{0} ماه بعد\",other:\"{0} ماه بعد\"},past:{one:\"{0} ماه پیش\",other:\"{0} ماه پیش\"}}},\"month-short\":{displayName:\"ماه\",relative:{0:\"این ماه\",1:\"ماه آینده\",\"-1\":\"ماه پیش\"},relativeTime:{future:{one:\"{0} ماه بعد\",other:\"{0} ماه بعد\"},past:{one:\"{0} ماه پیش\",other:\"{0} ماه پیش\"}}},day:{displayName:\"روز\",relative:{0:\"امروز\",1:\"فردا\",2:\"پس‌فردا\",\"-2\":\"پریروز\",\"-1\":\"دیروز\"},relativeTime:{future:{one:\"{0} روز بعد\",other:\"{0} روز بعد\"},past:{one:\"{0} روز پیش\",other:\"{0} روز پیش\"}}},\"day-short\":{displayName:\"روز\",relative:{0:\"امروز\",1:\"فردا\",2:\"پس‌فردا\",\"-2\":\"پریروز\",\"-1\":\"دیروز\"},relativeTime:{future:{one:\"{0} روز بعد\",other:\"{0} روز بعد\"},past:{one:\"{0} روز پیش\",other:\"{0} روز پیش\"}}},hour:{displayName:\"ساعت\",relative:{0:\"همین ساعت\"},relativeTime:{future:{one:\"{0} ساعت بعد\",other:\"{0} ساعت بعد\"},past:{one:\"{0} ساعت پیش\",other:\"{0} ساعت پیش\"}}},\"hour-short\":{displayName:\"ساعت\",relative:{0:\"همین ساعت\"},relativeTime:{future:{one:\"{0} ساعت بعد\",other:\"{0} ساعت بعد\"},past:{one:\"{0} ساعت پیش\",other:\"{0} ساعت پیش\"}}},minute:{displayName:\"دقیقه\",relative:{0:\"همین دقیقه\"},relativeTime:{future:{one:\"{0} دقیقه بعد\",other:\"{0} دقیقه بعد\"},past:{one:\"{0} دقیقه پیش\",other:\"{0} دقیقه پیش\"}}},\"minute-short\":{displayName:\"دقیقه\",relative:{0:\"همین دقیقه\"},relativeTime:{future:{one:\"{0} دقیقه بعد\",other:\"{0} دقیقه بعد\"},past:{one:\"{0} دقیقه پیش\",other:\"{0} دقیقه پیش\"}}},second:{displayName:\"ثانیه\",relative:{0:\"اکنون\"},relativeTime:{future:{one:\"{0} ثانیه بعد\",other:\"{0} ثانیه بعد\"},past:{one:\"{0} ثانیه پیش\",other:\"{0} ثانیه پیش\"}}},\"second-short\":{displayName:\"ثانیه\",relative:{0:\"اکنون\"},relativeTime:{future:{one:\"{0} ثانیه بعد\",other:\"{0} ثانیه بعد\"},past:{one:\"{0} ثانیه پیش\",other:\"{0} ثانیه پیش\"}}}}},{locale:\"fa-AF\",parentLocale:\"fa\"}]});\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t.ReactIntlLocaleData=t.ReactIntlLocaleData||{},t.ReactIntlLocaleData.fi=e())}(this,function(){\"use strict\";return[{locale:\"fi\",pluralRuleFunction:function(t,e){var i=!String(t).split(\".\")[1];return e?\"other\":1==t&&i?\"one\":\"other\"},fields:{year:{displayName:\"vuosi\",relative:{0:\"tänä vuonna\",1:\"ensi vuonna\",\"-1\":\"viime vuonna\"},relativeTime:{future:{one:\"{0} vuoden päästä\",other:\"{0} vuoden päästä\"},past:{one:\"{0} vuosi sitten\",other:\"{0} vuotta sitten\"}}},\"year-short\":{displayName:\"v\",relative:{0:\"tänä v\",1:\"ensi v\",\"-1\":\"viime v\"},relativeTime:{future:{one:\"{0} v päästä\",other:\"{0} v päästä\"},past:{one:\"{0} v sitten\",other:\"{0} v sitten\"}}},month:{displayName:\"kuukausi\",relative:{0:\"tässä kuussa\",1:\"ensi kuussa\",\"-1\":\"viime kuussa\"},relativeTime:{future:{one:\"{0} kuukauden päästä\",other:\"{0} kuukauden päästä\"},past:{one:\"{0} kuukausi sitten\",other:\"{0} kuukautta sitten\"}}},\"month-short\":{displayName:\"kk\",relative:{0:\"tässä kk\",1:\"ensi kk\",\"-1\":\"viime kk\"},relativeTime:{future:{one:\"{0} kk päästä\",other:\"{0} kk päästä\"},past:{one:\"{0} kk sitten\",other:\"{0} kk sitten\"}}},day:{displayName:\"päivä\",relative:{0:\"tänään\",1:\"huomenna\",2:\"ylihuomenna\",\"-2\":\"toissa päivänä\",\"-1\":\"eilen\"},relativeTime:{future:{one:\"{0} päivän päästä\",other:\"{0} päivän päästä\"},past:{one:\"{0} päivä sitten\",other:\"{0} päivää sitten\"}}},\"day-short\":{displayName:\"pv\",relative:{0:\"tänään\",1:\"huom.\",2:\"ylihuom.\",\"-2\":\"toissap.\",\"-1\":\"eilen\"},relativeTime:{future:{one:\"{0} pv päästä\",other:\"{0} pv päästä\"},past:{one:\"{0} pv sitten\",other:\"{0} pv sitten\"}}},hour:{displayName:\"tunti\",relative:{0:\"tämän tunnin aikana\"},relativeTime:{future:{one:\"{0} tunnin päästä\",other:\"{0} tunnin päästä\"},past:{one:\"{0} tunti sitten\",other:\"{0} tuntia sitten\"}}},\"hour-short\":{displayName:\"t\",relative:{0:\"tunnin sisällä\"},relativeTime:{future:{one:\"{0} t päästä\",other:\"{0} t päästä\"},past:{one:\"{0} t sitten\",other:\"{0} t sitten\"}}},minute:{displayName:\"minuutti\",relative:{0:\"tämän minuutin aikana\"},relativeTime:{future:{one:\"{0} minuutin päästä\",other:\"{0} minuutin päästä\"},past:{one:\"{0} minuutti sitten\",other:\"{0} minuuttia sitten\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"minuutin sisällä\"},relativeTime:{future:{one:\"{0} min päästä\",other:\"{0} min päästä\"},past:{one:\"{0} min sitten\",other:\"{0} min sitten\"}}},second:{displayName:\"sekunti\",relative:{0:\"nyt\"},relativeTime:{future:{one:\"{0} sekunnin päästä\",other:\"{0} sekunnin päästä\"},past:{one:\"{0} sekunti sitten\",other:\"{0} sekuntia sitten\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"nyt\"},relativeTime:{future:{one:\"{0} s päästä\",other:\"{0} s päästä\"},past:{one:\"{0} s sitten\",other:\"{0} s sitten\"}}}}}]});\n","!function(a,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(a.ReactIntlLocaleData=a.ReactIntlLocaleData||{},a.ReactIntlLocaleData.fil=n())}(this,function(){\"use strict\";return[{locale:\"fil\",pluralRuleFunction:function(a,n){var e=String(a).split(\".\"),o=e[0],t=e[1]||\"\",s=!e[1],r=o.slice(-1),i=t.slice(-1);return n?1==a?\"one\":\"other\":s&&(1==o||2==o||3==o)||s&&4!=r&&6!=r&&9!=r||!s&&4!=i&&6!=i&&9!=i?\"one\":\"other\"},fields:{year:{displayName:\"taon\",relative:{0:\"ngayong taon\",1:\"susunod na taon\",\"-1\":\"nakaraang taon\"},relativeTime:{future:{one:\"sa {0} taon\",other:\"sa {0} (na) taon\"},past:{one:\"{0} taon ang nakalipas\",other:\"{0} (na) taon ang nakalipas\"}}},\"year-short\":{displayName:\"taon\",relative:{0:\"ngayong taon\",1:\"susunod na taon\",\"-1\":\"nakaraang taon\"},relativeTime:{future:{one:\"sa {0} taon\",other:\"sa {0} (na) taon\"},past:{one:\"{0} taon ang nakalipas\",other:\"{0} (na) taon ang nakalipas\"}}},month:{displayName:\"buwan\",relative:{0:\"ngayong buwan\",1:\"susunod na buwan\",\"-1\":\"nakaraang buwan\"},relativeTime:{future:{one:\"sa {0} buwan\",other:\"sa {0} (na) buwan\"},past:{one:\"{0} buwan ang nakalipas\",other:\"{0} (na) buwan ang nakalipas\"}}},\"month-short\":{displayName:\"buwan\",relative:{0:\"ngayong buwan\",1:\"susunod na buwan\",\"-1\":\"nakaraang buwan\"},relativeTime:{future:{one:\"sa {0} buwan\",other:\"sa {0} (na) buwan\"},past:{one:\"{0} buwan ang nakalipas\",other:\"{0} (na) buwan ang nakalipas\"}}},day:{displayName:\"araw\",relative:{0:\"ngayong araw\",1:\"bukas\",2:\"Samakalawa\",\"-2\":\"Araw bago ang kahapon\",\"-1\":\"kahapon\"},relativeTime:{future:{one:\"sa {0} araw\",other:\"sa {0} (na) araw\"},past:{one:\"{0} araw ang nakalipas\",other:\"{0} (na) araw ang nakalipas\"}}},\"day-short\":{displayName:\"araw\",relative:{0:\"ngayong araw\",1:\"bukas\",2:\"Samakalawa\",\"-2\":\"Araw bago ang kahapon\",\"-1\":\"kahapon\"},relativeTime:{future:{one:\"sa {0} (na) araw\",other:\"sa {0} (na) araw\"},past:{one:\"{0} (na) araw ang nakalipas\",other:\"{0} (na) araw ang nakalipas\"}}},hour:{displayName:\"oras\",relative:{0:\"ngayong oras\"},relativeTime:{future:{one:\"sa {0} oras\",other:\"sa {0} (na) oras\"},past:{one:\"{0} oras ang nakalipas\",other:\"{0} (na) oras ang nakalipas\"}}},\"hour-short\":{displayName:\"oras\",relative:{0:\"ngayong oras\"},relativeTime:{future:{one:\"sa {0} oras\",other:\"sa {0} (na) oras\"},past:{one:\"{0} oras ang nakalipas\",other:\"{0} (na) oras ang nakalipas\"}}},minute:{displayName:\"minuto\",relative:{0:\"sa minutong ito\"},relativeTime:{future:{one:\"sa {0} minuto\",other:\"sa {0} (na) minuto\"},past:{one:\"{0} minuto ang nakalipas\",other:\"{0} (na) minuto ang nakalipas\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"sa minutong ito\"},relativeTime:{future:{one:\"sa {0} min.\",other:\"sa {0} (na) min.\"},past:{one:\"{0} min. ang nakalipas\",other:\"{0} (na) min. ang nakalipas\"}}},second:{displayName:\"segundo\",relative:{0:\"ngayon\"},relativeTime:{future:{one:\"sa {0} segundo\",other:\"sa {0} (na) segundo\"},past:{one:\"{0} segundo ang nakalipas\",other:\"{0} (na) segundo ang nakalipas\"}}},\"second-short\":{displayName:\"seg.\",relative:{0:\"ngayon\"},relativeTime:{future:{one:\"sa {0} seg.\",other:\"sa {0} (na) seg.\"},past:{one:\"{0} seg. ang nakalipas\",other:\"{0} (na) seg. nakalipas\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.fr=a())}(this,function(){\"use strict\";return[{locale:\"fr\",pluralRuleFunction:function(e,a){return a?1==e?\"one\":\"other\":e>=0&&e<2?\"one\":\"other\"},fields:{year:{displayName:\"année\",relative:{0:\"cette année\",1:\"l’année prochaine\",\"-1\":\"l’année dernière\"},relativeTime:{future:{one:\"dans {0} an\",other:\"dans {0} ans\"},past:{one:\"il y a {0} an\",other:\"il y a {0} ans\"}}},\"year-short\":{displayName:\"an\",relative:{0:\"cette année\",1:\"l’année prochaine\",\"-1\":\"l’année dernière\"},relativeTime:{future:{one:\"dans {0} a\",other:\"dans {0} a\"},past:{one:\"il y a {0} a\",other:\"il y a {0} a\"}}},month:{displayName:\"mois\",relative:{0:\"ce mois-ci\",1:\"le mois prochain\",\"-1\":\"le mois dernier\"},relativeTime:{future:{one:\"dans {0} mois\",other:\"dans {0} mois\"},past:{one:\"il y a {0} mois\",other:\"il y a {0} mois\"}}},\"month-short\":{displayName:\"m.\",relative:{0:\"ce mois-ci\",1:\"le mois prochain\",\"-1\":\"le mois dernier\"},relativeTime:{future:{one:\"dans {0} m.\",other:\"dans {0} m.\"},past:{one:\"il y a {0} m.\",other:\"il y a {0} m.\"}}},day:{displayName:\"jour\",relative:{0:\"aujourd’hui\",1:\"demain\",2:\"après-demain\",\"-2\":\"avant-hier\",\"-1\":\"hier\"},relativeTime:{future:{one:\"dans {0} jour\",other:\"dans {0} jours\"},past:{one:\"il y a {0} jour\",other:\"il y a {0} jours\"}}},\"day-short\":{displayName:\"j\",relative:{0:\"aujourd’hui\",1:\"demain\",2:\"après-demain\",\"-2\":\"avant-hier\",\"-1\":\"hier\"},relativeTime:{future:{one:\"dans {0} j\",other:\"dans {0} j\"},past:{one:\"il y a {0} j\",other:\"il y a {0} j\"}}},hour:{displayName:\"heure\",relative:{0:\"cette heure-ci\"},relativeTime:{future:{one:\"dans {0} heure\",other:\"dans {0} heures\"},past:{one:\"il y a {0} heure\",other:\"il y a {0} heures\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"cette heure-ci\"},relativeTime:{future:{one:\"dans {0} h\",other:\"dans {0} h\"},past:{one:\"il y a {0} h\",other:\"il y a {0} h\"}}},minute:{displayName:\"minute\",relative:{0:\"cette minute-ci\"},relativeTime:{future:{one:\"dans {0} minute\",other:\"dans {0} minutes\"},past:{one:\"il y a {0} minute\",other:\"il y a {0} minutes\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"cette minute-ci\"},relativeTime:{future:{one:\"dans {0} min\",other:\"dans {0} min\"},past:{one:\"il y a {0} min\",other:\"il y a {0} min\"}}},second:{displayName:\"seconde\",relative:{0:\"maintenant\"},relativeTime:{future:{one:\"dans {0} seconde\",other:\"dans {0} secondes\"},past:{one:\"il y a {0} seconde\",other:\"il y a {0} secondes\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"maintenant\"},relativeTime:{future:{one:\"dans {0} s\",other:\"dans {0} s\"},past:{one:\"il y a {0} s\",other:\"il y a {0} s\"}}}}},{locale:\"fr-BE\",parentLocale:\"fr\"},{locale:\"fr-BF\",parentLocale:\"fr\"},{locale:\"fr-BI\",parentLocale:\"fr\"},{locale:\"fr-BJ\",parentLocale:\"fr\"},{locale:\"fr-BL\",parentLocale:\"fr\"},{locale:\"fr-CA\",parentLocale:\"fr\",fields:{year:{displayName:\"année\",relative:{0:\"cette année\",1:\"l’année prochaine\",\"-1\":\"l’année dernière\"},relativeTime:{future:{one:\"Dans {0} an\",other:\"Dans {0} ans\"},past:{one:\"Il y a {0} an\",other:\"Il y a {0} ans\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"cette année\",1:\"l’année prochaine\",\"-1\":\"l’année dernière\"},relativeTime:{future:{one:\"dans {0} a\",other:\"dans {0} a\"},past:{one:\"il y a {0} a\",other:\"il y a {0} a\"}}},month:{displayName:\"mois\",relative:{0:\"ce mois-ci\",1:\"le mois prochain\",\"-1\":\"le mois dernier\"},relativeTime:{future:{one:\"dans {0} mois\",other:\"dans {0} mois\"},past:{one:\"il y a {0} mois\",other:\"il y a {0} mois\"}}},\"month-short\":{displayName:\"m.\",relative:{0:\"ce mois-ci\",1:\"le mois prochain\",\"-1\":\"le mois dernier\"},relativeTime:{future:{one:\"dans {0} m.\",other:\"dans {0} m.\"},past:{one:\"il y a {0} m.\",other:\"il y a {0} m.\"}}},day:{displayName:\"jour\",relative:{0:\"aujourd’hui\",1:\"demain\",2:\"après-demain\",\"-2\":\"avant-hier\",\"-1\":\"hier\"},relativeTime:{future:{one:\"dans {0} jour\",other:\"dans {0} jours\"},past:{one:\"il y a {0} jour\",other:\"il y a {0} jours\"}}},\"day-short\":{displayName:\"j\",relative:{0:\"aujourd’hui\",1:\"demain\",2:\"après-demain\",\"-2\":\"avant-hier\",\"-1\":\"hier\"},relativeTime:{future:{one:\"dans {0} j\",other:\"dans {0} j\"},past:{one:\"il y a {0} j\",other:\"il y a {0} j\"}}},hour:{displayName:\"heure\",relative:{0:\"cette heure-ci\"},relativeTime:{future:{one:\"dans {0} heure\",other:\"dans {0} heures\"},past:{one:\"il y a {0} heure\",other:\"il y a {0} heures\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"cette heure-ci\"},relativeTime:{future:{one:\"dans {0} h\",other:\"dans {0} h\"},past:{one:\"il y a {0} h\",other:\"il y a {0} h\"}}},minute:{displayName:\"minute\",relative:{0:\"cette minute-ci\"},relativeTime:{future:{one:\"dans {0} minute\",other:\"dans {0} minutes\"},past:{one:\"il y a {0} minute\",other:\"il y a {0} minutes\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"cette minute-ci\"},relativeTime:{future:{one:\"dans {0} min\",other:\"dans {0} min\"},past:{one:\"il y a {0} min\",other:\"il y a {0} min\"}}},second:{displayName:\"seconde\",relative:{0:\"maintenant\"},relativeTime:{future:{one:\"dans {0} seconde\",other:\"dans {0} secondes\"},past:{one:\"il y a {0} seconde\",other:\"il y a {0} secondes\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"maintenant\"},relativeTime:{future:{one:\"dans {0} s\",other:\"dans {0} s\"},past:{one:\"il y a {0} s\",other:\"il y a {0} s\"}}}}},{locale:\"fr-CD\",parentLocale:\"fr\"},{locale:\"fr-CF\",parentLocale:\"fr\"},{locale:\"fr-CG\",parentLocale:\"fr\"},{locale:\"fr-CH\",parentLocale:\"fr\"},{locale:\"fr-CI\",parentLocale:\"fr\"},{locale:\"fr-CM\",parentLocale:\"fr\"},{locale:\"fr-DJ\",parentLocale:\"fr\"},{locale:\"fr-DZ\",parentLocale:\"fr\"},{locale:\"fr-GA\",parentLocale:\"fr\"},{locale:\"fr-GF\",parentLocale:\"fr\"},{locale:\"fr-GN\",parentLocale:\"fr\"},{locale:\"fr-GP\",parentLocale:\"fr\"},{locale:\"fr-GQ\",parentLocale:\"fr\"},{locale:\"fr-HT\",parentLocale:\"fr\",fields:{year:{displayName:\"année\",relative:{0:\"cette année\",1:\"l’année prochaine\",\"-1\":\"l’année dernière\"},relativeTime:{future:{one:\"dans {0} an\",other:\"dans {0} ans\"},past:{one:\"il y a {0} an\",other:\"il y a {0} ans\"}}},\"year-short\":{displayName:\"an\",relative:{0:\"cette année\",1:\"l’année prochaine\",\"-1\":\"l’année dernière\"},relativeTime:{future:{one:\"dans {0} a\",other:\"dans {0} a\"},past:{one:\"il y a {0} a\",other:\"il y a {0} a\"}}},month:{displayName:\"mois\",relative:{0:\"ce mois-ci\",1:\"le mois prochain\",\"-1\":\"le mois dernier\"},relativeTime:{future:{one:\"dans {0} mois\",other:\"dans {0} mois\"},past:{one:\"il y a {0} mois\",other:\"il y a {0} mois\"}}},\"month-short\":{displayName:\"m.\",relative:{0:\"ce mois-ci\",1:\"le mois prochain\",\"-1\":\"le mois dernier\"},relativeTime:{future:{one:\"dans {0} m.\",other:\"dans {0} m.\"},past:{one:\"il y a {0} m.\",other:\"il y a {0} m.\"}}},day:{displayName:\"jour\",relative:{0:\"aujourd’hui\",1:\"demain\",2:\"après-demain\",\"-2\":\"avant-hier\",\"-1\":\"hier\"},relativeTime:{future:{one:\"dans {0} jour\",other:\"dans {0} jours\"},past:{one:\"il y a {0} jour\",other:\"il y a {0} jours\"}}},\"day-short\":{displayName:\"jr.\",relative:{0:\"aujourd’hui\",1:\"demain\",2:\"après-demain\",\"-2\":\"avant-hier\",\"-1\":\"hier\"},relativeTime:{future:{one:\"dans {0} j\",other:\"dans {0} j\"},past:{one:\"il y a {0} j\",other:\"il y a {0} j\"}}},hour:{displayName:\"heure\",relative:{0:\"cette heure-ci\"},relativeTime:{future:{one:\"dans {0} heure\",other:\"dans {0} heures\"},past:{one:\"il y a {0} heure\",other:\"il y a {0} heures\"}}},\"hour-short\":{displayName:\"hr\",relative:{0:\"cette heure-ci\"},relativeTime:{future:{one:\"dans {0} h\",other:\"dans {0} h\"},past:{one:\"il y a {0} h\",other:\"il y a {0} h\"}}},minute:{displayName:\"minute\",relative:{0:\"cette minute-ci\"},relativeTime:{future:{one:\"dans {0} minute\",other:\"dans {0} minutes\"},past:{one:\"il y a {0} minute\",other:\"il y a {0} minutes\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"cette minute-ci\"},relativeTime:{future:{one:\"dans {0} min\",other:\"dans {0} min\"},past:{one:\"il y a {0} min\",other:\"il y a {0} min\"}}},second:{displayName:\"seconde\",relative:{0:\"maintenant\"},relativeTime:{future:{one:\"dans {0} seconde\",other:\"dans {0} secondes\"},past:{one:\"il y a {0} seconde\",other:\"il y a {0} secondes\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"maintenant\"},relativeTime:{future:{one:\"dans {0} s\",other:\"dans {0} s\"},past:{one:\"il y a {0} s\",other:\"il y a {0} s\"}}}}},{locale:\"fr-KM\",parentLocale:\"fr\"},{locale:\"fr-LU\",parentLocale:\"fr\"},{locale:\"fr-MA\",parentLocale:\"fr\"},{locale:\"fr-MC\",parentLocale:\"fr\"},{locale:\"fr-MF\",parentLocale:\"fr\"},{locale:\"fr-MG\",parentLocale:\"fr\"},{locale:\"fr-ML\",parentLocale:\"fr\"},{locale:\"fr-MQ\",parentLocale:\"fr\"},{locale:\"fr-MR\",parentLocale:\"fr\"},{locale:\"fr-MU\",parentLocale:\"fr\"},{locale:\"fr-NC\",parentLocale:\"fr\"},{locale:\"fr-NE\",parentLocale:\"fr\"},{locale:\"fr-PF\",parentLocale:\"fr\"},{locale:\"fr-PM\",parentLocale:\"fr\"},{locale:\"fr-RE\",parentLocale:\"fr\"},{locale:\"fr-RW\",parentLocale:\"fr\"},{locale:\"fr-SC\",parentLocale:\"fr\"},{locale:\"fr-SN\",parentLocale:\"fr\"},{locale:\"fr-SY\",parentLocale:\"fr\"},{locale:\"fr-TD\",parentLocale:\"fr\"},{locale:\"fr-TG\",parentLocale:\"fr\"},{locale:\"fr-TN\",parentLocale:\"fr\"},{locale:\"fr-VU\",parentLocale:\"fr\"},{locale:\"fr-WF\",parentLocale:\"fr\"},{locale:\"fr-YT\",parentLocale:\"fr\"}]});\n","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.fy=n())}(this,function(){\"use strict\";return[{locale:\"fy\",pluralRuleFunction:function(e,n){var r=!String(e).split(\".\")[1];return n?\"other\":1==e&&r?\"one\":\"other\"},fields:{year:{displayName:\"Jier\",relative:{0:\"dit jier\",1:\"folgjend jier\",\"-1\":\"foarich jier\"},relativeTime:{future:{one:\"Oer {0} jier\",other:\"Oer {0} jier\"},past:{one:\"{0} jier lyn\",other:\"{0} jier lyn\"}}},\"year-short\":{displayName:\"Jier\",relative:{0:\"dit jier\",1:\"folgjend jier\",\"-1\":\"foarich jier\"},relativeTime:{future:{one:\"Oer {0} jier\",other:\"Oer {0} jier\"},past:{one:\"{0} jier lyn\",other:\"{0} jier lyn\"}}},month:{displayName:\"Moanne\",relative:{0:\"dizze moanne\",1:\"folgjende moanne\",\"-1\":\"foarige moanne\"},relativeTime:{future:{one:\"Oer {0} moanne\",other:\"Oer {0} moannen\"},past:{one:\"{0} moanne lyn\",other:\"{0} moannen lyn\"}}},\"month-short\":{displayName:\"Moanne\",relative:{0:\"dizze moanne\",1:\"folgjende moanne\",\"-1\":\"foarige moanne\"},relativeTime:{future:{one:\"Oer {0} moanne\",other:\"Oer {0} moannen\"},past:{one:\"{0} moanne lyn\",other:\"{0} moannen lyn\"}}},day:{displayName:\"dei\",relative:{0:\"vandaag\",1:\"morgen\",2:\"Oermorgen\",\"-2\":\"eergisteren\",\"-1\":\"gisteren\"},relativeTime:{future:{one:\"Oer {0} dei\",other:\"Oer {0} deien\"},past:{one:\"{0} dei lyn\",other:\"{0} deien lyn\"}}},\"day-short\":{displayName:\"dei\",relative:{0:\"vandaag\",1:\"morgen\",2:\"Oermorgen\",\"-2\":\"eergisteren\",\"-1\":\"gisteren\"},relativeTime:{future:{one:\"Oer {0} dei\",other:\"Oer {0} deien\"},past:{one:\"{0} dei lyn\",other:\"{0} deien lyn\"}}},hour:{displayName:\"oere\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"Oer {0} oere\",other:\"Oer {0} oere\"},past:{one:\"{0} oere lyn\",other:\"{0} oere lyn\"}}},\"hour-short\":{displayName:\"oere\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"Oer {0} oere\",other:\"Oer {0} oere\"},past:{one:\"{0} oere lyn\",other:\"{0} oere lyn\"}}},minute:{displayName:\"Minút\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"Oer {0} minút\",other:\"Oer {0} minuten\"},past:{one:\"{0} minút lyn\",other:\"{0} minuten lyn\"}}},\"minute-short\":{displayName:\"Minút\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"Oer {0} minút\",other:\"Oer {0} minuten\"},past:{one:\"{0} minút lyn\",other:\"{0} minuten lyn\"}}},second:{displayName:\"Sekonde\",relative:{0:\"nu\"},relativeTime:{future:{one:\"Oer {0} sekonde\",other:\"Oer {0} sekonden\"},past:{one:\"{0} sekonde lyn\",other:\"{0} sekonden lyn\"}}},\"second-short\":{displayName:\"Sekonde\",relative:{0:\"nu\"},relativeTime:{future:{one:\"Oer {0} sekonde\",other:\"Oer {0} sekonden\"},past:{one:\"{0} sekonde lyn\",other:\"{0} sekonden lyn\"}}}}}]});\n","!function(n,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(n.ReactIntlLocaleData=n.ReactIntlLocaleData||{},n.ReactIntlLocaleData.ga=i())}(this,function(){\"use strict\";return[{locale:\"ga\",pluralRuleFunction:function(n,i){var e=String(n).split(\".\"),a=Number(e[0])==n;return i?1==n?\"one\":\"other\":1==n?\"one\":2==n?\"two\":a&&n>=3&&n<=6?\"few\":a&&n>=7&&n<=10?\"many\":\"other\"},fields:{year:{displayName:\"Bliain\",relative:{0:\"an bhliain seo\",1:\"an bhliain seo chugainn\",\"-1\":\"anuraidh\"},relativeTime:{future:{one:\"i gceann {0} bhliain\",two:\"i gceann {0} bhliain\",few:\"i gceann {0} bliana\",many:\"i gceann {0} mbliana\",other:\"i gceann {0} bliain\"},past:{one:\"{0} bhliain ó shin\",two:\"{0} bhliain ó shin\",few:\"{0} bliana ó shin\",many:\"{0} mbliana ó shin\",other:\"{0} bliain ó shin\"}}},\"year-short\":{displayName:\"bl.\",relative:{0:\"an bhl. seo\",1:\"an bhl. seo chugainn\",\"-1\":\"anuraidh\"},relativeTime:{future:{one:\"i gceann {0} bl.\",two:\"i gceann {0} bhl.\",few:\"i gceann {0} bl.\",many:\"i gceann {0} mbl.\",other:\"i gceann {0} bl.\"},past:{one:\"{0} bhl. ó shin\",two:\"{0} bhl. ó shin\",few:\"{0} bl. ó shin\",many:\"{0} mbl. ó shin\",other:\"{0} bl. ó shin\"}}},month:{displayName:\"Mí\",relative:{0:\"an mhí seo\",1:\"an mhí seo chugainn\",\"-1\":\"an mhí seo caite\"},relativeTime:{future:{one:\"i gceann {0} mhí\",two:\"i gceann {0} mhí\",few:\"i gceann {0} mhí\",many:\"i gceann {0} mí\",other:\"i gceann {0} mí\"},past:{one:\"{0} mhí ó shin\",two:\"{0} mhí ó shin\",few:\"{0} mhí ó shin\",many:\"{0} mí ó shin\",other:\"{0} mí ó shin\"}}},\"month-short\":{displayName:\"mí\",relative:{0:\"an mhí seo\",1:\"an mhí seo chugainn\",\"-1\":\"an mhí seo caite\"},relativeTime:{future:{one:\"i gceann {0} mhí\",two:\"i gceann {0} mhí\",few:\"i gceann {0} mhí\",many:\"i gceann {0} mí\",other:\"i gceann {0} mí\"},past:{one:\"{0} mhí ó shin\",two:\"{0} mhí ó shin\",few:\"{0} mhí ó shin\",many:\"{0} mí ó shin\",other:\"{0} mí ó shin\"}}},day:{displayName:\"Lá\",relative:{0:\"inniu\",1:\"amárach\",2:\"arú amárach\",\"-2\":\"arú inné\",\"-1\":\"inné\"},relativeTime:{future:{one:\"i gceann {0} lá\",two:\"i gceann {0} lá\",few:\"i gceann {0} lá\",many:\"i gceann {0} lá\",other:\"i gceann {0} lá\"},past:{one:\"{0} lá ó shin\",two:\"{0} lá ó shin\",few:\"{0} lá ó shin\",many:\"{0} lá ó shin\",other:\"{0} lá ó shin\"}}},\"day-short\":{displayName:\"Lá\",relative:{0:\"inniu\",1:\"amárach\",2:\"arú amárach\",\"-2\":\"arú inné\",\"-1\":\"inné\"},relativeTime:{future:{one:\"i gceann {0} lá\",two:\"i gceann {0} lá\",few:\"i gceann {0} lá\",many:\"i gceann {0} lá\",other:\"i gceann {0} lá\"},past:{one:\"{0} lá ó shin\",two:\"{0} lá ó shin\",few:\"{0} lá ó shin\",many:\"{0} lá ó shin\",other:\"{0} lá ó shin\"}}},hour:{displayName:\"Uair\",relative:{0:\"an uair seo\"},relativeTime:{future:{one:\"i gceann {0} uair an chloig\",two:\"i gceann {0} uair an chloig\",few:\"i gceann {0} huaire an chloig\",many:\"i gceann {0} n-uaire an chloig\",other:\"i gceann {0} uair an chloig\"},past:{one:\"{0} uair an chloig ó shin\",two:\"{0} uair an chloig ó shin\",few:\"{0} huaire an chloig ó shin\",many:\"{0} n-uaire an chloig ó shin\",other:\"{0} uair an chloig ó shin\"}}},\"hour-short\":{displayName:\"uair\",relative:{0:\"an uair seo\"},relativeTime:{future:{one:\"i gceann {0} uair\",two:\"i gceann {0} uair\",few:\"i gceann {0} huaire\",many:\"i gceann {0} n-uaire\",other:\"i gceann {0} uair\"},past:{one:\"{0} uair ó shin\",two:\"{0} uair ó shin\",few:\"{0} huaire ó shin\",many:\"{0} n-uaire ó shin\",other:\"{0} uair ó shin\"}}},minute:{displayName:\"Nóiméad\",relative:{0:\"an nóiméad seo\"},relativeTime:{future:{one:\"i gceann {0} nóiméad\",two:\"i gceann {0} nóiméad\",few:\"i gceann {0} nóiméad\",many:\"i gceann {0} nóiméad\",other:\"i gceann {0} nóiméad\"},past:{one:\"{0} nóiméad ó shin\",two:\"{0} nóiméad ó shin\",few:\"{0} nóiméad ó shin\",many:\"{0} nóiméad ó shin\",other:\"{0} nóiméad ó shin\"}}},\"minute-short\":{displayName:\"nóim.\",relative:{0:\"an nóiméad seo\"},relativeTime:{future:{one:\"i gceann {0} nóim.\",two:\"i gceann {0} nóim.\",few:\"i gceann {0} nóim.\",many:\"i gceann {0} nóim.\",other:\"i gceann {0} nóim.\"},past:{one:\"{0} nóim. ó shin\",two:\"{0} nóim. ó shin\",few:\"{0} nóim. ó shin\",many:\"{0} nóim. ó shin\",other:\"{0} nóim. ó shin\"}}},second:{displayName:\"Soicind\",relative:{0:\"anois\"},relativeTime:{future:{one:\"i gceann {0} soicind\",two:\"i gceann {0} shoicind\",few:\"i gceann {0} shoicind\",many:\"i gceann {0} soicind\",other:\"i gceann {0} soicind\"},past:{one:\"{0} soicind ó shin\",two:\"{0} shoicind ó shin\",few:\"{0} shoicind ó shin\",many:\"{0} soicind ó shin\",other:\"{0} soicind ó shin\"}}},\"second-short\":{displayName:\"soic.\",relative:{0:\"anois\"},relativeTime:{future:{one:\"i gceann {0} soic.\",two:\"i gceann {0} shoic.\",few:\"i gceann {0} shoic.\",many:\"i gceann {0} soic.\",other:\"i gceann {0} soic.\"},past:{one:\"{0} soic. ó shin\",two:\"{0} shoic. ó shin\",few:\"{0} shoic. ó shin\",many:\"{0} soic. ó shin\",other:\"{0} soic. ó shin\"}}}}}]});\n","!function(a,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(a.ReactIntlLocaleData=a.ReactIntlLocaleData||{},a.ReactIntlLocaleData.gd=e())}(this,function(){\"use strict\";return[{locale:\"gd\",pluralRuleFunction:function(a,e){var i=String(a).split(\".\"),n=Number(i[0])==a;return e?1==a||11==a?\"one\":2==a||12==a?\"two\":3==a||13==a?\"few\":\"other\":1==a||11==a?\"one\":2==a||12==a?\"two\":n&&a>=3&&a<=10||n&&a>=13&&a<=19?\"few\":\"other\"},fields:{year:{displayName:\"bliadhna\",relative:{0:\"am bliadhna\",1:\"an ath-bhliadhna\",\"-2\":\"a-bhòn-uiridh\",\"-1\":\"an-uiridh\"},relativeTime:{future:{one:\"an ceann {0} bhliadhna\",two:\"an ceann {0} bhliadhna\",few:\"an ceann {0} bliadhnaichean\",other:\"an ceann {0} bliadhna\"},past:{one:\"{0} bhliadhna air ais\",two:\"{0} bhliadhna air ais\",few:\"{0} bhliadhnaichean air ais\",other:\"{0} bliadhna air ais\"}}},\"year-short\":{displayName:\"blia.\",relative:{0:\"am bliadhna\",1:\"an ath-bhliadhna\",\"-2\":\"a-bhòn-uiridh\",\"-1\":\"an-uiridh\"},relativeTime:{future:{one:\"an {0} bhlia.\",two:\"an {0} bhlia.\",few:\"an {0} blia.\",other:\"an {0} blia.\"},past:{one:\"o {0} bhlia.\",two:\"o {0} bhlia.\",few:\"o {0} blia.\",other:\"o {0} blia.\"}}},month:{displayName:\"mìos\",relative:{0:\"am mìos seo\",1:\"an ath-mhìos\",\"-1\":\"am mìos seo chaidh\"},relativeTime:{future:{one:\"an ceann {0} mhìosa\",two:\"an ceann {0} mhìosa\",few:\"an ceann {0} mìosan\",other:\"an ceann {0} mìosa\"},past:{one:\"{0} mhìos air ais\",two:\"{0} mhìos air ais\",few:\"{0} mìosan air ais\",other:\"{0} mìos air ais\"}}},\"month-short\":{displayName:\"mìos\",relative:{0:\"am mìos seo\",1:\"an ath-mhìos\",\"-1\":\"am mìos sa chaidh\"},relativeTime:{future:{one:\"an {0} mhìos.\",two:\"an {0} mhìos.\",few:\"an {0} mìos.\",other:\"an {0} mìos.\"},past:{one:\"o {0} mhìos.\",two:\"o {0} mhìos.\",few:\"o {0} mìos.\",other:\"o {0} mìos.\"}}},day:{displayName:\"latha\",relative:{0:\"an-diugh\",1:\"a-màireach\",2:\"an-earar\",3:\"an-eararais\",\"-2\":\"a-bhòin-dè\",\"-1\":\"an-dè\"},relativeTime:{future:{one:\"an ceann {0} latha\",two:\"an ceann {0} latha\",few:\"an ceann {0} làithean\",other:\"an ceann {0} latha\"},past:{one:\"{0} latha air ais\",two:\"{0} latha air ais\",few:\"{0} làithean air ais\",other:\"{0} latha air ais\"}}},\"day-short\":{displayName:\"là\",relative:{0:\"an-diugh\",1:\"a-màireach\",2:\"an-earar\",3:\"an-eararais\",\"-2\":\"a-bhòin-dè\",\"-1\":\"an-dè\"},relativeTime:{future:{one:\"an {0} là\",two:\"an {0} là\",few:\"an {0} là.\",other:\"an {0} là\"},past:{one:\"o {0} là\",two:\"o {0} là\",few:\"o {0} là.\",other:\"o {0} là\"}}},hour:{displayName:\"uair a thìde\",relative:{0:\"am broinn uair a thìde\"},relativeTime:{future:{one:\"an ceann {0} uair a thìde\",two:\"an ceann {0} uair a thìde\",few:\"an ceann {0} uairean a thìde\",other:\"an ceann {0} uair a thìde\"},past:{one:\"{0} uair a thìde air ais\",two:\"{0} uair a thìde air ais\",few:\"{0} uairean a thìde air ais\",other:\"{0} uair a thìde air ais\"}}},\"hour-short\":{displayName:\"uair\",relative:{0:\"am broinn uair\"},relativeTime:{future:{one:\"an {0} uair\",two:\"an {0} uair\",few:\"an {0} uair.\",other:\"an {0} uair\"},past:{one:\"o {0} uair\",two:\"o {0} uair\",few:\"o {0} uair.\",other:\"o {0} uair\"}}},minute:{displayName:\"mionaid\",relative:{0:\"am broinn mionaid\"},relativeTime:{future:{one:\"an ceann {0} mhionaid\",two:\"an ceann {0} mhionaid\",few:\"an ceann {0} mionaidean\",other:\"an ceann {0} mionaid\"},past:{one:\"{0} mhionaid air ais\",two:\"{0} mhionaid air ais\",few:\"{0} mionaidean air ais\",other:\"{0} mionaid air ais\"}}},\"minute-short\":{displayName:\"mion.\",relative:{0:\"am broinn mion.\"},relativeTime:{future:{one:\"an {0} mhion.\",two:\"an {0} mhion.\",few:\"an {0} mion.\",other:\"an {0} mion.\"},past:{one:\"o {0} mhion.\",two:\"o {0} mhion.\",few:\"o {0} mion.\",other:\"o {0} mion.\"}}},second:{displayName:\"diog\",relative:{0:\"an-dràsta\"},relativeTime:{future:{one:\"an ceann {0} diog\",two:\"an ceann {0} dhiog\",few:\"an ceann {0} diogan\",other:\"an ceann {0} diog\"},past:{one:\"{0} diog air ais\",two:\"{0} dhiog air ais\",few:\"{0} diogan air ais\",other:\"{0} diog air ais\"}}},\"second-short\":{displayName:\"diog\",relative:{0:\"an-dràsta\"},relativeTime:{future:{one:\"an {0} diog\",two:\"an {0} dhiog\",few:\"an {0} diog.\",other:\"an {0} diog\"},past:{one:\"o {0} diog\",two:\"o {0} dhiog\",few:\"o {0} diog.\",other:\"o {0} diog\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.gl=a())}(this,function(){\"use strict\";return[{locale:\"gl\",pluralRuleFunction:function(e,a){var o=!String(e).split(\".\")[1];return a?\"other\":1==e&&o?\"one\":\"other\"},fields:{year:{displayName:\"ano\",relative:{0:\"este ano\",1:\"o próximo ano\",\"-1\":\"o ano pasado\"},relativeTime:{future:{one:\"en {0} ano\",other:\"en {0} anos\"},past:{one:\"hai {0} ano\",other:\"hai {0} anos\"}}},\"year-short\":{displayName:\"ano\",relative:{0:\"este ano\",1:\"seguinte ano\",\"-1\":\"ano pasado\"},relativeTime:{future:{one:\"en {0} ano\",other:\"en {0} anos\"},past:{one:\"hai {0} ano\",other:\"hai {0} anos\"}}},month:{displayName:\"mes\",relative:{0:\"este mes\",1:\"o próximo mes\",\"-1\":\"o mes pasado\"},relativeTime:{future:{one:\"en {0} mes\",other:\"en {0} meses\"},past:{one:\"hai {0} mes\",other:\"hai {0} meses\"}}},\"month-short\":{displayName:\"mes\",relative:{0:\"este m.\",1:\"m. seguinte\",\"-1\":\"m. pasado\"},relativeTime:{future:{one:\"en {0} mes\",other:\"en {0} meses\"},past:{one:\"hai {0} mes\",other:\"hai {0} meses\"}}},day:{displayName:\"día\",relative:{0:\"hoxe\",1:\"mañá\",2:\"pasadomañá\",\"-2\":\"antonte\",\"-1\":\"onte\"},relativeTime:{future:{one:\"en {0} día\",other:\"en {0} días\"},past:{one:\"hai {0} día\",other:\"hai {0} días\"}}},\"day-short\":{displayName:\"día\",relative:{0:\"hoxe\",1:\"mañá\",2:\"pasadomañá\",\"-2\":\"antonte\",\"-1\":\"onte\"},relativeTime:{future:{one:\"en {0} día\",other:\"en {0} días\"},past:{one:\"hai {0} día\",other:\"hai {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"en {0} hora\",other:\"en {0} horas\"},past:{one:\"hai {0} hora\",other:\"hai {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"en {0} h\",other:\"en {0} h\"},past:{one:\"hai {0} h\",other:\"hai {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"en {0} minuto\",other:\"en {0} minutos\"},past:{one:\"hai {0} minuto\",other:\"hai {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"en {0} min\",other:\"en {0} min\"},past:{one:\"hai {0} min\",other:\"hai {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"agora\"},relativeTime:{future:{one:\"en {0} segundo\",other:\"en {0} segundos\"},past:{one:\"hai {0} segundo\",other:\"hai {0} segundos\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"agora\"},relativeTime:{future:{one:\"en {0} s\",other:\"en {0} s\"},past:{one:\"hai {0} s\",other:\"hai {0} s\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ha=t())}(this,function(){\"use strict\";return[{locale:\"ha\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"Shekara\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Shekara\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Wata\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Wata\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Kwana\",relative:{0:\"Yau\",1:\"Gobe\",\"-1\":\"Jiya\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Kwana\",relative:{0:\"Yau\",1:\"Gobe\",\"-1\":\"Jiya\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Awa\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Awa\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minti\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minti\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Daƙiƙa\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Daƙiƙa\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"ha-Arab\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"ha-GH\",parentLocale:\"ha\"},{locale:\"ha-NE\",parentLocale:\"ha\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.he=t())}(this,function(){\"use strict\";return[{locale:\"he\",pluralRuleFunction:function(e,t){var a=String(e).split(\".\"),o=a[0],r=!a[1],n=Number(a[0])==e,i=n&&a[0].slice(-1);return t?\"other\":1==e&&r?\"one\":2==o&&r?\"two\":r&&(e<0||e>10)&&n&&0==i?\"many\":\"other\"},fields:{year:{displayName:\"שנה\",relative:{0:\"השנה\",1:\"השנה הבאה\",\"-1\":\"השנה שעברה\"},relativeTime:{future:{one:\"בעוד שנה\",two:\"בעוד שנתיים\",many:\"בעוד {0} שנה\",other:\"בעוד {0} שנים\"},past:{one:\"לפני שנה\",two:\"לפני שנתיים\",many:\"לפני {0} שנה\",other:\"לפני {0} שנים\"}}},\"year-short\":{displayName:\"שנ׳\",relative:{0:\"השנה\",1:\"השנה הבאה\",\"-1\":\"השנה שעברה\"},relativeTime:{future:{one:\"בעוד שנה\",two:\"בעוד שנתיים\",many:\"בעוד {0} שנה\",other:\"בעוד {0} שנים\"},past:{one:\"לפני שנה\",two:\"לפני שנתיים\",many:\"לפני {0} שנה\",other:\"לפני {0} שנים\"}}},month:{displayName:\"חודש\",relative:{0:\"החודש\",1:\"החודש הבא\",\"-1\":\"החודש שעבר\"},relativeTime:{future:{one:\"בעוד חודש\",two:\"בעוד חודשיים\",many:\"בעוד {0} חודשים\",other:\"בעוד {0} חודשים\"},past:{one:\"לפני חודש\",two:\"לפני חודשיים\",many:\"לפני {0} חודשים\",other:\"לפני {0} חודשים\"}}},\"month-short\":{displayName:\"חו׳\",relative:{0:\"החודש\",1:\"החודש הבא\",\"-1\":\"החודש שעבר\"},relativeTime:{future:{one:\"בעוד חודש\",two:\"בעוד חודשיים\",many:\"בעוד {0} חודשים\",other:\"בעוד {0} חודשים\"},past:{one:\"לפני חודש\",two:\"לפני חודשיים\",many:\"לפני {0} חודשים\",other:\"לפני {0} חודשים\"}}},day:{displayName:\"יום\",relative:{0:\"היום\",1:\"מחר\",2:\"מחרתיים\",\"-2\":\"שלשום\",\"-1\":\"אתמול\"},relativeTime:{future:{one:\"בעוד יום {0}\",two:\"בעוד יומיים\",many:\"בעוד {0} ימים\",other:\"בעוד {0} ימים\"},past:{one:\"לפני יום {0}\",two:\"לפני יומיים\",many:\"לפני {0} ימים\",other:\"לפני {0} ימים\"}}},\"day-short\":{displayName:\"יום\",relative:{0:\"היום\",1:\"מחר\",2:\"מחרתיים\",\"-2\":\"שלשום\",\"-1\":\"אתמול\"},relativeTime:{future:{one:\"מחר\",two:\"בעוד יומיים\",many:\"בעוד {0} ימים\",other:\"בעוד {0} ימים\"},past:{one:\"אתמול\",two:\"לפני יומיים\",many:\"לפני {0} ימים\",other:\"לפני {0} ימים\"}}},hour:{displayName:\"שעה\",relative:{0:\"בשעה זו\"},relativeTime:{future:{one:\"בעוד שעה\",two:\"בעוד שעתיים\",many:\"בעוד {0} שעות\",other:\"בעוד {0} שעות\"},past:{one:\"לפני שעה\",two:\"לפני שעתיים\",many:\"לפני {0} שעות\",other:\"לפני {0} שעות\"}}},\"hour-short\":{displayName:\"שעה\",relative:{0:\"בשעה זו\"},relativeTime:{future:{one:\"בעוד שעה\",two:\"בעוד שעתיים\",many:\"בעוד {0} שע׳\",other:\"בעוד {0} שע׳\"},past:{one:\"לפני שעה\",two:\"לפני שעתיים\",many:\"לפני {0} שע׳\",other:\"לפני {0} שע׳\"}}},minute:{displayName:\"דקה\",relative:{0:\"בדקה זו\"},relativeTime:{future:{one:\"בעוד דקה\",two:\"בעוד שתי דקות\",many:\"בעוד {0} דקות\",other:\"בעוד {0} דקות\"},past:{one:\"לפני דקה\",two:\"לפני שתי דקות\",many:\"לפני {0} דקות\",other:\"לפני {0} דקות\"}}},\"minute-short\":{displayName:\"דק׳\",relative:{0:\"בדקה זו\"},relativeTime:{future:{one:\"בעוד דקה\",two:\"בעוד שתי דק׳\",many:\"בעוד {0} דק׳\",other:\"בעוד {0} דק׳\"},past:{one:\"לפני דקה\",two:\"לפני {0} דק׳\",many:\"לפני {0} דק׳\",other:\"לפני {0} דק׳\"}}},second:{displayName:\"שנייה\",relative:{0:\"עכשיו\"},relativeTime:{future:{one:\"בעוד שנייה\",two:\"בעוד שתי שניות\",many:\"בעוד {0} שניות\",other:\"בעוד {0} שניות\"},past:{one:\"לפני שנייה\",two:\"לפני שתי שניות\",many:\"לפני {0} שניות\",other:\"לפני {0} שניות\"}}},\"second-short\":{displayName:\"שנ׳\",relative:{0:\"עכשיו\"},relativeTime:{future:{one:\"בעוד שנ׳\",two:\"בעוד שתי שנ׳\",many:\"בעוד {0} שנ׳\",other:\"בעוד {0} שנ׳\"},past:{one:\"לפני שנ׳\",two:\"לפני שתי שנ׳\",many:\"לפני {0} שנ׳\",other:\"לפני {0} שנ׳\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.hi=t())}(this,function(){\"use strict\";return[{locale:\"hi\",pluralRuleFunction:function(e,t){return t?1==e?\"one\":2==e||3==e?\"two\":4==e?\"few\":6==e?\"many\":\"other\":e>=0&&e<=1?\"one\":\"other\"},fields:{year:{displayName:\"वर्ष\",relative:{0:\"इस वर्ष\",1:\"अगला वर्ष\",\"-1\":\"पिछला वर्ष\"},relativeTime:{future:{one:\"{0} वर्ष में\",other:\"{0} वर्ष में\"},past:{one:\"{0} वर्ष पहले\",other:\"{0} वर्ष पहले\"}}},\"year-short\":{displayName:\"वर्ष\",relative:{0:\"इस वर्ष\",1:\"अगला वर्ष\",\"-1\":\"पिछला वर्ष\"},relativeTime:{future:{one:\"{0} वर्ष में\",other:\"{0} वर्ष में\"},past:{one:\"{0} वर्ष पहले\",other:\"{0} वर्ष पहले\"}}},month:{displayName:\"माह\",relative:{0:\"इस माह\",1:\"अगला माह\",\"-1\":\"पिछला माह\"},relativeTime:{future:{one:\"{0} माह में\",other:\"{0} माह में\"},past:{one:\"{0} माह पहले\",other:\"{0} माह पहले\"}}},\"month-short\":{displayName:\"माह\",relative:{0:\"इस माह\",1:\"अगला माह\",\"-1\":\"पिछला माह\"},relativeTime:{future:{one:\"{0} माह में\",other:\"{0} माह में\"},past:{one:\"{0} माह पहले\",other:\"{0} माह पहले\"}}},day:{displayName:\"दिन\",relative:{0:\"आज\",1:\"कल\",2:\"परसों\",\"-2\":\"परसों\",\"-1\":\"कल\"},relativeTime:{future:{one:\"{0} दिन में\",other:\"{0} दिन में\"},past:{one:\"{0} दिन पहले\",other:\"{0} दिन पहले\"}}},\"day-short\":{displayName:\"दिन\",relative:{0:\"आज\",1:\"कल\",2:\"परसों\",\"-2\":\"परसों\",\"-1\":\"कल\"},relativeTime:{future:{one:\"{0} दिन में\",other:\"{0} दिन में\"},past:{one:\"{0} दिन पहले\",other:\"{0} दिन पहले\"}}},hour:{displayName:\"घंटा\",relative:{0:\"यह घंटा\"},relativeTime:{future:{one:\"{0} घंटे में\",other:\"{0} घंटे में\"},past:{one:\"{0} घंटे पहले\",other:\"{0} घंटे पहले\"}}},\"hour-short\":{displayName:\"घं॰\",relative:{0:\"यह घंटा\"},relativeTime:{future:{one:\"{0} घं॰ में\",other:\"{0} घं॰ में\"},past:{one:\"{0} घं॰ पहले\",other:\"{0} घं॰ पहले\"}}},minute:{displayName:\"मिनट\",relative:{0:\"यह मिनट\"},relativeTime:{future:{one:\"{0} मिनट में\",other:\"{0} मिनट में\"},past:{one:\"{0} मिनट पहले\",other:\"{0} मिनट पहले\"}}},\"minute-short\":{displayName:\"मि॰\",relative:{0:\"यह मिनट\"},relativeTime:{future:{one:\"{0} मि॰ में\",other:\"{0} मि॰ में\"},past:{one:\"{0} मि॰ पहले\",other:\"{0} मि॰ पहले\"}}},second:{displayName:\"सेकंड\",relative:{0:\"अब\"},relativeTime:{future:{one:\"{0} सेकंड में\",other:\"{0} सेकंड में\"},past:{one:\"{0} सेकंड पहले\",other:\"{0} सेकंड पहले\"}}},\"second-short\":{displayName:\"से॰\",relative:{0:\"अब\"},relativeTime:{future:{one:\"{0} से॰ में\",other:\"{0} से॰ में\"},past:{one:\"{0} से॰ पहले\",other:\"{0} से॰ पहले\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.hu=t())}(this,function(){\"use strict\";return[{locale:\"hu\",pluralRuleFunction:function(e,t){return t?1==e||5==e?\"one\":\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"év\",relative:{0:\"ez az év\",1:\"következő év\",\"-1\":\"előző év\"},relativeTime:{future:{one:\"{0} év múlva\",other:\"{0} év múlva\"},past:{one:\"{0} évvel ezelőtt\",other:\"{0} évvel ezelőtt\"}}},\"year-short\":{displayName:\"év\",relative:{0:\"ez az év\",1:\"következő év\",\"-1\":\"előző év\"},relativeTime:{future:{one:\"{0} év múlva\",other:\"{0} év múlva\"},past:{one:\"{0} évvel ezelőtt\",other:\"{0} évvel ezelőtt\"}}},month:{displayName:\"hónap\",relative:{0:\"ez a hónap\",1:\"következő hónap\",\"-1\":\"előző hónap\"},relativeTime:{future:{one:\"{0} hónap múlva\",other:\"{0} hónap múlva\"},past:{one:\"{0} hónappal ezelőtt\",other:\"{0} hónappal ezelőtt\"}}},\"month-short\":{displayName:\"hónap\",relative:{0:\"ez a hónap\",1:\"következő hónap\",\"-1\":\"előző hónap\"},relativeTime:{future:{one:\"{0} hónap múlva\",other:\"{0} hónap múlva\"},past:{one:\"{0} hónappal ezelőtt\",other:\"{0} hónappal ezelőtt\"}}},day:{displayName:\"nap\",relative:{0:\"ma\",1:\"holnap\",2:\"holnapután\",\"-2\":\"tegnapelőtt\",\"-1\":\"tegnap\"},relativeTime:{future:{one:\"{0} nap múlva\",other:\"{0} nap múlva\"},past:{one:\"{0} nappal ezelőtt\",other:\"{0} nappal ezelőtt\"}}},\"day-short\":{displayName:\"nap\",relative:{0:\"ma\",1:\"holnap\",2:\"holnapután\",\"-2\":\"tegnapelőtt\",\"-1\":\"tegnap\"},relativeTime:{future:{one:\"{0} nap múlva\",other:\"{0} nap múlva\"},past:{one:\"{0} napja\",other:\"{0} napja\"}}},hour:{displayName:\"óra\",relative:{0:\"ebben az órában\"},relativeTime:{future:{one:\"{0} óra múlva\",other:\"{0} óra múlva\"},past:{one:\"{0} órával ezelőtt\",other:\"{0} órával ezelőtt\"}}},\"hour-short\":{displayName:\"óra\",relative:{0:\"ebben az órában\"},relativeTime:{future:{one:\"{0} óra múlva\",other:\"{0} óra múlva\"},past:{one:\"{0} órával ezelőtt\",other:\"{0} órával ezelőtt\"}}},minute:{displayName:\"perc\",relative:{0:\"ebben a percben\"},relativeTime:{future:{one:\"{0} perc múlva\",other:\"{0} perc múlva\"},past:{one:\"{0} perccel ezelőtt\",other:\"{0} perccel ezelőtt\"}}},\"minute-short\":{displayName:\"perc\",relative:{0:\"ebben a percben\"},relativeTime:{future:{one:\"{0} perc múlva\",other:\"{0} perc múlva\"},past:{one:\"{0} perccel ezelőtt\",other:\"{0} perccel ezelőtt\"}}},second:{displayName:\"másodperc\",relative:{0:\"most\"},relativeTime:{future:{one:\"{0} másodperc múlva\",other:\"{0} másodperc múlva\"},past:{one:\"{0} másodperccel ezelőtt\",other:\"{0} másodperccel ezelőtt\"}}},\"second-short\":{displayName:\"másodperc\",relative:{0:\"most\"},relativeTime:{future:{one:\"{0} másodperc múlva\",other:\"{0} másodperc múlva\"},past:{one:\"{0} másodperccel ezelőtt\",other:\"{0} másodperccel ezelőtt\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.hr=a())}(this,function(){\"use strict\";return[{locale:\"hr\",pluralRuleFunction:function(e,a){var i=String(e).split(\".\"),r=i[0],t=i[1]||\"\",o=!i[1],n=r.slice(-1),s=r.slice(-2),p=t.slice(-1),u=t.slice(-2);return a?\"other\":o&&1==n&&11!=s||1==p&&11!=u?\"one\":o&&n>=2&&n<=4&&(s<12||s>14)||p>=2&&p<=4&&(u<12||u>14)?\"few\":\"other\"},fields:{year:{displayName:\"godina\",relative:{0:\"ove godine\",1:\"sljedeće godine\",\"-1\":\"prošle godine\"},relativeTime:{future:{one:\"za {0} godinu\",few:\"za {0} godine\",other:\"za {0} godina\"},past:{one:\"prije {0} godinu\",few:\"prije {0} godine\",other:\"prije {0} godina\"}}},\"year-short\":{displayName:\"g.\",relative:{0:\"ove god.\",1:\"sljedeće god.\",\"-1\":\"prošle god.\"},relativeTime:{future:{one:\"za {0} g.\",few:\"za {0} g.\",other:\"za {0} g.\"},past:{one:\"prije {0} g.\",few:\"prije {0} g.\",other:\"prije {0} g.\"}}},month:{displayName:\"mjesec\",relative:{0:\"ovaj mjesec\",1:\"sljedeći mjesec\",\"-1\":\"prošli mjesec\"},relativeTime:{future:{one:\"za {0} mjesec\",few:\"za {0} mjeseca\",other:\"za {0} mjeseci\"},past:{one:\"prije {0} mjesec\",few:\"prije {0} mjeseca\",other:\"prije {0} mjeseci\"}}},\"month-short\":{displayName:\"mj.\",relative:{0:\"ovaj mj.\",1:\"sljedeći mj.\",\"-1\":\"prošli mj.\"},relativeTime:{future:{one:\"za {0} mj.\",few:\"za {0} mj.\",other:\"za {0} mj.\"},past:{one:\"prije {0} mj.\",few:\"prije {0} mj.\",other:\"prije {0} mj.\"}}},day:{displayName:\"dan\",relative:{0:\"danas\",1:\"sutra\",2:\"prekosutra\",\"-2\":\"prekjučer\",\"-1\":\"jučer\"},relativeTime:{future:{one:\"za {0} dan\",few:\"za {0} dana\",other:\"za {0} dana\"},past:{one:\"prije {0} dan\",few:\"prije {0} dana\",other:\"prije {0} dana\"}}},\"day-short\":{displayName:\"d.\",relative:{0:\"danas\",1:\"sutra\",2:\"prekosutra\",\"-2\":\"prekjučer\",\"-1\":\"jučer\"},relativeTime:{future:{one:\"za {0} dan\",few:\"za {0} dana\",other:\"za {0} dana\"},past:{one:\"prije {0} dan\",few:\"prije {0} dana\",other:\"prije {0} dana\"}}},hour:{displayName:\"sat\",relative:{0:\"ovaj sat\"},relativeTime:{future:{one:\"za {0} sat\",few:\"za {0} sata\",other:\"za {0} sati\"},past:{one:\"prije {0} sat\",few:\"prije {0} sata\",other:\"prije {0} sati\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"ovaj sat\"},relativeTime:{future:{one:\"za {0} h\",few:\"za {0} h\",other:\"za {0} h\"},past:{one:\"prije {0} h\",few:\"prije {0} h\",other:\"prije {0} h\"}}},minute:{displayName:\"minuta\",relative:{0:\"ova minuta\"},relativeTime:{future:{one:\"za {0} minutu\",few:\"za {0} minute\",other:\"za {0} minuta\"},past:{one:\"prije {0} minutu\",few:\"prije {0} minute\",other:\"prije {0} minuta\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"ova minuta\"},relativeTime:{future:{one:\"za {0} min\",few:\"za {0} min\",other:\"za {0} min\"},past:{one:\"prije {0} min\",few:\"prije {0} min\",other:\"prije {0} min\"}}},second:{displayName:\"sekunda\",relative:{0:\"sad\"},relativeTime:{future:{one:\"za {0} sekundu\",few:\"za {0} sekunde\",other:\"za {0} sekundi\"},past:{one:\"prije {0} sekundu\",few:\"prije {0} sekunde\",other:\"prije {0} sekundi\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"sad\"},relativeTime:{future:{one:\"za {0} s\",few:\"za {0} s\",other:\"za {0} s\"},past:{one:\"prije {0} s\",few:\"prije {0} s\",other:\"prije {0} s\"}}}}},{locale:\"hr-BA\",parentLocale:\"hr\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.hy=t())}(this,function(){\"use strict\";return[{locale:\"hy\",pluralRuleFunction:function(e,t){return t?1==e?\"one\":\"other\":e>=0&&e<2?\"one\":\"other\"},fields:{year:{displayName:\"տարի\",relative:{0:\"այս տարի\",1:\"հաջորդ տարի\",\"-1\":\"նախորդ տարի\"},relativeTime:{future:{one:\"{0} տարուց\",other:\"{0} տարուց\"},past:{one:\"{0} տարի առաջ\",other:\"{0} տարի առաջ\"}}},\"year-short\":{displayName:\"տ\",relative:{0:\"այս տարի\",1:\"հաջորդ տարի\",\"-1\":\"նախորդ տարի\"},relativeTime:{future:{one:\"{0} տարուց\",other:\"{0} տարուց\"},past:{one:\"{0} տ առաջ\",other:\"{0} տ առաջ\"}}},month:{displayName:\"ամիս\",relative:{0:\"այս ամիս\",1:\"հաջորդ ամիս\",\"-1\":\"նախորդ ամիս\"},relativeTime:{future:{one:\"{0} ամսից\",other:\"{0} ամսից\"},past:{one:\"{0} ամիս առաջ\",other:\"{0} ամիս առաջ\"}}},\"month-short\":{displayName:\"ամս\",relative:{0:\"այս ամիս\",1:\"հաջորդ ամիս\",\"-1\":\"անցյալ ամիս\"},relativeTime:{future:{one:\"{0} ամսից\",other:\"{0} ամսից\"},past:{one:\"{0} ամիս առաջ\",other:\"{0} ամիս առաջ\"}}},day:{displayName:\"օր\",relative:{0:\"այսօր\",1:\"վաղը\",2:\"վաղը չէ մյուս օրը\",\"-2\":\"երեկ չէ առաջի օրը\",\"-1\":\"երեկ\"},relativeTime:{future:{one:\"{0} օրից\",other:\"{0} օրից\"},past:{one:\"{0} օր առաջ\",other:\"{0} օր առաջ\"}}},\"day-short\":{displayName:\"օր\",relative:{0:\"այսօր\",1:\"վաղը\",2:\"վաղը չէ մյուս օրը\",\"-2\":\"երեկ չէ առաջի օրը\",\"-1\":\"երեկ\"},relativeTime:{future:{one:\"{0} օրից\",other:\"{0} օրից\"},past:{one:\"{0} օր առաջ\",other:\"{0} օր առաջ\"}}},hour:{displayName:\"ժամ\",relative:{0:\"այս ժամին\"},relativeTime:{future:{one:\"{0} ժամից\",other:\"{0} ժամից\"},past:{one:\"{0} ժամ առաջ\",other:\"{0} ժամ առաջ\"}}},\"hour-short\":{displayName:\"ժ\",relative:{0:\"այս ժամին\"},relativeTime:{future:{one:\"{0} ժ-ից\",other:\"{0} ժ-ից\"},past:{one:\"{0} ժ առաջ\",other:\"{0} ժ առաջ\"}}},minute:{displayName:\"րոպե\",relative:{0:\"այս րոպեին\"},relativeTime:{future:{one:\"{0} րոպեից\",other:\"{0} րոպեից\"},past:{one:\"{0} րոպե առաջ\",other:\"{0} րոպե առաջ\"}}},\"minute-short\":{displayName:\"ր\",relative:{0:\"այս րոպեին\"},relativeTime:{future:{one:\"{0} ր-ից\",other:\"{0} ր-ից\"},past:{one:\"{0} ր առաջ\",other:\"{0} ր առաջ\"}}},second:{displayName:\"վայրկյան\",relative:{0:\"հիմա\"},relativeTime:{future:{one:\"{0} վայրկյանից\",other:\"{0} վայրկյանից\"},past:{one:\"{0} վայրկյան առաջ\",other:\"{0} վայրկյան առաջ\"}}},\"second-short\":{displayName:\"վ\",relative:{0:\"հիմա\"},relativeTime:{future:{one:\"{0} վրկ-ից\",other:\"{0} վրկ-ից\"},past:{one:\"{0} վրկ առաջ\",other:\"{0} վրկ առաջ\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.id=a())}(this,function(){\"use strict\";return[{locale:\"id\",pluralRuleFunction:function(e,a){return\"other\"},fields:{year:{displayName:\"tahun\",relative:{0:\"tahun ini\",1:\"tahun depan\",\"-1\":\"tahun lalu\"},relativeTime:{future:{other:\"dalam {0} tahun\"},past:{other:\"{0} tahun yang lalu\"}}},\"year-short\":{displayName:\"thn.\",relative:{0:\"tahun ini\",1:\"tahun depan\",\"-1\":\"tahun lalu\"},relativeTime:{future:{other:\"dlm {0} thn\"},past:{other:\"{0} thn lalu\"}}},month:{displayName:\"bulan\",relative:{0:\"bulan ini\",1:\"bulan berikutnya\",\"-1\":\"bulan lalu\"},relativeTime:{future:{other:\"dalam {0} bulan\"},past:{other:\"{0} bulan yang lalu\"}}},\"month-short\":{displayName:\"bln.\",relative:{0:\"bulan ini\",1:\"bulan berikutnya\",\"-1\":\"bulan lalu\"},relativeTime:{future:{other:\"dlm {0} bln\"},past:{other:\"{0} bln lalu\"}}},day:{displayName:\"hari\",relative:{0:\"hari ini\",1:\"besok\",2:\"lusa\",\"-2\":\"kemarin dulu\",\"-1\":\"kemarin\"},relativeTime:{future:{other:\"dalam {0} hari\"},past:{other:\"{0} hari yang lalu\"}}},\"day-short\":{displayName:\"h\",relative:{0:\"hari ini\",1:\"besok\",2:\"lusa\",\"-2\":\"kemarin dulu\",\"-1\":\"kemarin\"},relativeTime:{future:{other:\"dalam {0} h\"},past:{other:\"{0} h lalu\"}}},hour:{displayName:\"Jam\",relative:{0:\"jam ini\"},relativeTime:{future:{other:\"dalam {0} jam\"},past:{other:\"{0} jam yang lalu\"}}},\"hour-short\":{displayName:\"jam\",relative:{0:\"jam ini\"},relativeTime:{future:{other:\"dalam {0} jam\"},past:{other:\"{0} jam lalu\"}}},minute:{displayName:\"menit\",relative:{0:\"menit ini\"},relativeTime:{future:{other:\"dalam {0} menit\"},past:{other:\"{0} menit yang lalu\"}}},\"minute-short\":{displayName:\"mnt.\",relative:{0:\"menit ini\"},relativeTime:{future:{other:\"dlm {0} mnt\"},past:{other:\"{0} mnt lalu\"}}},second:{displayName:\"detik\",relative:{0:\"sekarang\"},relativeTime:{future:{other:\"dalam {0} detik\"},past:{other:\"{0} detik yang lalu\"}}},\"second-short\":{displayName:\"dtk.\",relative:{0:\"sekarang\"},relativeTime:{future:{other:\"dlm {0} dtk\"},past:{other:\"{0} dtk lalu\"}}}}}]});\n","!function(e,r){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(r):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.is=r())}(this,function(){\"use strict\";return[{locale:\"is\",pluralRuleFunction:function(e,r){var t=String(e).split(\".\"),i=t[0],a=Number(t[0])==e,n=i.slice(-1),s=i.slice(-2);return r?\"other\":a&&1==n&&11!=s||!a?\"one\":\"other\"},fields:{year:{displayName:\"ár\",relative:{0:\"á þessu ári\",1:\"á næsta ári\",\"-1\":\"á síðasta ári\"},relativeTime:{future:{one:\"eftir {0} ár\",other:\"eftir {0} ár\"},past:{one:\"fyrir {0} ári\",other:\"fyrir {0} árum\"}}},\"year-short\":{displayName:\"ár\",relative:{0:\"á þessu ári\",1:\"á næsta ári\",\"-1\":\"á síðasta ári\"},relativeTime:{future:{one:\"eftir {0} ár\",other:\"eftir {0} ár\"},past:{one:\"fyrir {0} ári\",other:\"fyrir {0} árum\"}}},month:{displayName:\"mánuður\",relative:{0:\"í þessum mánuði\",1:\"í næsta mánuði\",\"-1\":\"í síðasta mánuði\"},relativeTime:{future:{one:\"eftir {0} mánuð\",other:\"eftir {0} mánuði\"},past:{one:\"fyrir {0} mánuði\",other:\"fyrir {0} mánuðum\"}}},\"month-short\":{displayName:\"mán.\",relative:{0:\"í þessum mán.\",1:\"í næsta mán.\",\"-1\":\"í síðasta mán.\"},relativeTime:{future:{one:\"eftir {0} mán.\",other:\"eftir {0} mán.\"},past:{one:\"fyrir {0} mán.\",other:\"fyrir {0} mán.\"}}},day:{displayName:\"dagur\",relative:{0:\"í dag\",1:\"á morgun\",2:\"eftir tvo daga\",\"-2\":\"í fyrradag\",\"-1\":\"í gær\"},relativeTime:{future:{one:\"eftir {0} dag\",other:\"eftir {0} daga\"},past:{one:\"fyrir {0} degi\",other:\"fyrir {0} dögum\"}}},\"day-short\":{displayName:\"dagur\",relative:{0:\"í dag\",1:\"á morgun\",2:\"eftir tvo daga\",\"-2\":\"í fyrradag\",\"-1\":\"í gær\"},relativeTime:{future:{one:\"eftir {0} dag\",other:\"eftir {0} daga\"},past:{one:\"fyrir {0} degi\",other:\"fyrir {0} dögum\"}}},hour:{displayName:\"klukkustund\",relative:{0:\"þessa stundina\"},relativeTime:{future:{one:\"eftir {0} klukkustund\",other:\"eftir {0} klukkustundir\"},past:{one:\"fyrir {0} klukkustund\",other:\"fyrir {0} klukkustundum\"}}},\"hour-short\":{displayName:\"klst.\",relative:{0:\"þessa stundina\"},relativeTime:{future:{one:\"eftir {0} klst.\",other:\"eftir {0} klst.\"},past:{one:\"fyrir {0} klst.\",other:\"fyrir {0} klst.\"}}},minute:{displayName:\"mínúta\",relative:{0:\"á þessari mínútu\"},relativeTime:{future:{one:\"eftir {0} mínútu\",other:\"eftir {0} mínútur\"},past:{one:\"fyrir {0} mínútu\",other:\"fyrir {0} mínútum\"}}},\"minute-short\":{displayName:\"mín.\",relative:{0:\"á þessari mínútu\"},relativeTime:{future:{one:\"eftir {0} mín.\",other:\"eftir {0} mín.\"},past:{one:\"fyrir {0} mín.\",other:\"fyrir {0} mín.\"}}},second:{displayName:\"sekúnda\",relative:{0:\"núna\"},relativeTime:{future:{one:\"eftir {0} sekúndu\",other:\"eftir {0} sekúndur\"},past:{one:\"fyrir {0} sekúndu\",other:\"fyrir {0} sekúndum\"}}},\"second-short\":{displayName:\"sek.\",relative:{0:\"núna\"},relativeTime:{future:{one:\"eftir {0} sek.\",other:\"eftir {0} sek.\"},past:{one:\"fyrir {0} sek.\",other:\"fyrir {0} sek.\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.it=a())}(this,function(){\"use strict\";return[{locale:\"it\",pluralRuleFunction:function(e,a){var t=!String(e).split(\".\")[1];return a?11==e||8==e||80==e||800==e?\"many\":\"other\":1==e&&t?\"one\":\"other\"},fields:{year:{displayName:\"anno\",relative:{0:\"quest’anno\",1:\"anno prossimo\",\"-1\":\"anno scorso\"},relativeTime:{future:{one:\"tra {0} anno\",other:\"tra {0} anni\"},past:{one:\"{0} anno fa\",other:\"{0} anni fa\"}}},\"year-short\":{displayName:\"anno\",relative:{0:\"quest’anno\",1:\"anno prossimo\",\"-1\":\"anno scorso\"},relativeTime:{future:{one:\"tra {0} anno\",other:\"tra {0} anni\"},past:{one:\"{0} anno fa\",other:\"{0} anni fa\"}}},month:{displayName:\"mese\",relative:{0:\"questo mese\",1:\"mese prossimo\",\"-1\":\"mese scorso\"},relativeTime:{future:{one:\"tra {0} mese\",other:\"tra {0} mesi\"},past:{one:\"{0} mese fa\",other:\"{0} mesi fa\"}}},\"month-short\":{displayName:\"mese\",relative:{0:\"questo mese\",1:\"mese prossimo\",\"-1\":\"mese scorso\"},relativeTime:{future:{one:\"tra {0} mese\",other:\"tra {0} mesi\"},past:{one:\"{0} mese fa\",other:\"{0} mesi fa\"}}},day:{displayName:\"giorno\",relative:{0:\"oggi\",1:\"domani\",2:\"dopodomani\",\"-2\":\"l’altro ieri\",\"-1\":\"ieri\"},relativeTime:{future:{one:\"tra {0} giorno\",other:\"tra {0} giorni\"},past:{one:\"{0} giorno fa\",other:\"{0} giorni fa\"}}},\"day-short\":{displayName:\"g\",relative:{0:\"oggi\",1:\"domani\",2:\"dopodomani\",\"-2\":\"l’altro ieri\",\"-1\":\"ieri\"},relativeTime:{future:{one:\"tra {0} g\",other:\"tra {0} gg\"},past:{one:\"{0} g fa\",other:\"{0} gg fa\"}}},hour:{displayName:\"ora\",relative:{0:\"quest’ora\"},relativeTime:{future:{one:\"tra {0} ora\",other:\"tra {0} ore\"},past:{one:\"{0} ora fa\",other:\"{0} ore fa\"}}},\"hour-short\":{displayName:\"h.\",relative:{0:\"quest’ora\"},relativeTime:{future:{one:\"tra {0} h\",other:\"tra {0} h\"},past:{one:\"{0} h fa\",other:\"{0} h fa\"}}},minute:{displayName:\"minuto\",relative:{0:\"questo minuto\"},relativeTime:{future:{one:\"tra {0} minuto\",other:\"tra {0} minuti\"},past:{one:\"{0} minuto fa\",other:\"{0} minuti fa\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"questo minuto\"},relativeTime:{future:{one:\"tra {0} min\",other:\"tra {0} min\"},past:{one:\"{0} min fa\",other:\"{0} min fa\"}}},second:{displayName:\"secondo\",relative:{0:\"ora\"},relativeTime:{future:{one:\"tra {0} secondo\",other:\"tra {0} secondi\"},past:{one:\"{0} secondo fa\",other:\"{0} secondi fa\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ora\"},relativeTime:{future:{one:\"tra {0} s\",other:\"tra {0} sec.\"},past:{one:\"{0} s fa\",other:\"{0} sec. fa\"}}}}},{locale:\"it-CH\",parentLocale:\"it\"},{locale:\"it-SM\",parentLocale:\"it\"},{locale:\"it-VA\",parentLocale:\"it\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ja=t())}(this,function(){\"use strict\";return[{locale:\"ja\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"年\",relative:{0:\"今年\",1:\"翌年\",\"-1\":\"昨年\"},relativeTime:{future:{other:\"{0} 年後\"},past:{other:\"{0} 年前\"}}},\"year-short\":{displayName:\"年\",relative:{0:\"今年\",1:\"翌年\",\"-1\":\"昨年\"},relativeTime:{future:{other:\"{0} 年後\"},past:{other:\"{0} 年前\"}}},month:{displayName:\"月\",relative:{0:\"今月\",1:\"翌月\",\"-1\":\"先月\"},relativeTime:{future:{other:\"{0} か月後\"},past:{other:\"{0} か月前\"}}},\"month-short\":{displayName:\"月\",relative:{0:\"今月\",1:\"翌月\",\"-1\":\"先月\"},relativeTime:{future:{other:\"{0} か月後\"},past:{other:\"{0} か月前\"}}},day:{displayName:\"日\",relative:{0:\"今日\",1:\"明日\",2:\"明後日\",\"-2\":\"一昨日\",\"-1\":\"昨日\"},relativeTime:{future:{other:\"{0} 日後\"},past:{other:\"{0} 日前\"}}},\"day-short\":{displayName:\"日\",relative:{0:\"今日\",1:\"明日\",2:\"明後日\",\"-2\":\"一昨日\",\"-1\":\"昨日\"},relativeTime:{future:{other:\"{0} 日後\"},past:{other:\"{0} 日前\"}}},hour:{displayName:\"時\",relative:{0:\"1 時間以内\"},relativeTime:{future:{other:\"{0} 時間後\"},past:{other:\"{0} 時間前\"}}},\"hour-short\":{displayName:\"時\",relative:{0:\"1 時間以内\"},relativeTime:{future:{other:\"{0} 時間後\"},past:{other:\"{0} 時間前\"}}},minute:{displayName:\"分\",relative:{0:\"1 分以内\"},relativeTime:{future:{other:\"{0} 分後\"},past:{other:\"{0} 分前\"}}},\"minute-short\":{displayName:\"分\",relative:{0:\"1 分以内\"},relativeTime:{future:{other:\"{0} 分後\"},past:{other:\"{0} 分前\"}}},second:{displayName:\"秒\",relative:{0:\"今\"},relativeTime:{future:{other:\"{0} 秒後\"},past:{other:\"{0} 秒前\"}}},\"second-short\":{displayName:\"秒\",relative:{0:\"今\"},relativeTime:{future:{other:\"{0} 秒後\"},past:{other:\"{0} 秒前\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ka=t())}(this,function(){\"use strict\";return[{locale:\"ka\",pluralRuleFunction:function(e,t){var a=String(e).split(\".\")[0],r=a.slice(-2);return t?1==a?\"one\":0==a||r>=2&&r<=20||40==r||60==r||80==r?\"many\":\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"წელი\",relative:{0:\"ამ წელს\",1:\"მომავალ წელს\",\"-1\":\"გასულ წელს\"},relativeTime:{future:{one:\"{0} წელიწადში\",other:\"{0} წელიწადში\"},past:{one:\"{0} წლის წინ\",other:\"{0} წლის წინ\"}}},\"year-short\":{displayName:\"წ.\",relative:{0:\"ამ წელს\",1:\"მომავალ წელს\",\"-1\":\"გასულ წელს\"},relativeTime:{future:{one:\"{0} წელში\",other:\"{0} წელში\"},past:{one:\"{0} წლის წინ\",other:\"{0} წლის წინ\"}}},month:{displayName:\"თვე\",relative:{0:\"ამ თვეში\",1:\"მომავალ თვეს\",\"-1\":\"გასულ თვეს\"},relativeTime:{future:{one:\"{0} თვეში\",other:\"{0} თვეში\"},past:{one:\"{0} თვის წინ\",other:\"{0} თვის წინ\"}}},\"month-short\":{displayName:\"თვე\",relative:{0:\"ამ თვეში\",1:\"მომავალ თვეს\",\"-1\":\"გასულ თვეს\"},relativeTime:{future:{one:\"{0} თვეში\",other:\"{0} თვეში\"},past:{one:\"{0} თვის წინ\",other:\"{0} თვის წინ\"}}},day:{displayName:\"დღე\",relative:{0:\"დღეს\",1:\"ხვალ\",2:\"ზეგ\",\"-2\":\"გუშინწინ\",\"-1\":\"გუშინ\"},relativeTime:{future:{one:\"{0} დღეში\",other:\"{0} დღეში\"},past:{one:\"{0} დღის წინ\",other:\"{0} დღის წინ\"}}},\"day-short\":{displayName:\"დღე\",relative:{0:\"დღეს\",1:\"ხვალ\",2:\"ზეგ\",\"-2\":\"გუშინწინ\",\"-1\":\"გუშინ\"},relativeTime:{future:{one:\"{0} დღეში\",other:\"{0} დღეში\"},past:{one:\"{0} დღის წინ\",other:\"{0} დღის წინ\"}}},hour:{displayName:\"საათი\",relative:{0:\"ამ საათში\"},relativeTime:{future:{one:\"{0} საათში\",other:\"{0} საათში\"},past:{one:\"{0} საათის წინ\",other:\"{0} საათის წინ\"}}},\"hour-short\":{displayName:\"სთ.\",relative:{0:\"ამ საათში\"},relativeTime:{future:{one:\"{0} საათში\",other:\"{0} საათში\"},past:{one:\"{0} სთ წინ\",other:\"{0} სთ წინ\"}}},minute:{displayName:\"წუთი\",relative:{0:\"ამ წუთში\"},relativeTime:{future:{one:\"{0} წუთში\",other:\"{0} წუთში\"},past:{one:\"{0} წუთის წინ\",other:\"{0} წუთის წინ\"}}},\"minute-short\":{displayName:\"წთ.\",relative:{0:\"ამ წუთში\"},relativeTime:{future:{one:\"{0} წუთში\",other:\"{0} წუთში\"},past:{one:\"{0} წთ წინ\",other:\"{0} წთ წინ\"}}},second:{displayName:\"წამი\",relative:{0:\"ახლა\"},relativeTime:{future:{one:\"{0} წამში\",other:\"{0} წამში\"},past:{one:\"{0} წამის წინ\",other:\"{0} წამის წინ\"}}},\"second-short\":{displayName:\"წმ.\",relative:{0:\"ახლა\"},relativeTime:{future:{one:\"{0} წამში\",other:\"{0} წამში\"},past:{one:\"{0} წმ წინ\",other:\"{0} წმ წინ\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.kk=t())}(this,function(){\"use strict\";return[{locale:\"kk\",pluralRuleFunction:function(e,t){var r=String(e).split(\".\"),a=Number(r[0])==e,o=a&&r[0].slice(-1);return t?6==o||9==o||a&&0==o&&0!=e?\"many\":\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"жыл\",relative:{0:\"биылғы жыл\",1:\"келесі жыл\",\"-1\":\"былтырғы жыл\"},relativeTime:{future:{one:\"{0} жылдан кейін\",other:\"{0} жылдан кейін\"},past:{one:\"{0} жыл бұрын\",other:\"{0} жыл бұрын\"}}},\"year-short\":{displayName:\"ж.\",relative:{0:\"биылғы жыл\",1:\"келесі жыл\",\"-1\":\"былтырғы жыл\"},relativeTime:{future:{one:\"{0} ж. кейін\",other:\"{0} ж. кейін\"},past:{one:\"{0} ж. бұрын\",other:\"{0} ж. бұрын\"}}},month:{displayName:\"ай\",relative:{0:\"осы ай\",1:\"келесі ай\",\"-1\":\"өткен ай\"},relativeTime:{future:{one:\"{0} айдан кейін\",other:\"{0} айдан кейін\"},past:{one:\"{0} ай бұрын\",other:\"{0} ай бұрын\"}}},\"month-short\":{displayName:\"ай\",relative:{0:\"осы ай\",1:\"келесі ай\",\"-1\":\"өткен ай\"},relativeTime:{future:{one:\"{0} айдан кейін\",other:\"{0} айдан кейін\"},past:{one:\"{0} ай бұрын\",other:\"{0} ай бұрын\"}}},day:{displayName:\"күн\",relative:{0:\"бүгін\",1:\"ертең\",2:\"бүрсігүні\",\"-2\":\"алдыңгүні\",\"-1\":\"кеше\"},relativeTime:{future:{one:\"{0} күннен кейін\",other:\"{0} күннен кейін\"},past:{one:\"{0} күн бұрын\",other:\"{0} күн бұрын\"}}},\"day-short\":{displayName:\"күн\",relative:{0:\"бүгін\",1:\"ертең\",2:\"бүрсігүні\",\"-2\":\"алдыңғы күні\",\"-1\":\"кеше\"},relativeTime:{future:{one:\"{0} күннен кейін\",other:\"{0} күннен кейін\"},past:{one:\"{0} күн бұрын\",other:\"{0} күн бұрын\"}}},hour:{displayName:\"сағат\",relative:{0:\"осы сағат\"},relativeTime:{future:{one:\"{0} сағаттан кейін\",other:\"{0} сағаттан кейін\"},past:{one:\"{0} сағат бұрын\",other:\"{0} сағат бұрын\"}}},\"hour-short\":{displayName:\"сағ\",relative:{0:\"осы сағат\"},relativeTime:{future:{one:\"{0} сағ. кейін\",other:\"{0} сағ. кейін\"},past:{one:\"{0} сағ. бұрын\",other:\"{0} сағ. бұрын\"}}},minute:{displayName:\"минут\",relative:{0:\"осы минут\"},relativeTime:{future:{one:\"{0} минуттан кейін\",other:\"{0} минуттан кейін\"},past:{one:\"{0} минут бұрын\",other:\"{0} минут бұрын\"}}},\"minute-short\":{displayName:\"мин\",relative:{0:\"осы минут\"},relativeTime:{future:{one:\"{0} мин. кейін\",other:\"{0} мин. кейін\"},past:{one:\"{0} мин. бұрын\",other:\"{0} мин. бұрын\"}}},second:{displayName:\"секунд\",relative:{0:\"қазір\"},relativeTime:{future:{one:\"{0} секундтан кейін\",other:\"{0} секундтан кейін\"},past:{one:\"{0} секунд бұрын\",other:\"{0} секунд бұрын\"}}},\"second-short\":{displayName:\"с\",relative:{0:\"қазір\"},relativeTime:{future:{one:\"{0} сек. кейін\",other:\"{0} сек. кейін\"},past:{one:\"{0} сек. бұрын\",other:\"{0} сек. бұрын\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ko=t())}(this,function(){\"use strict\";return[{locale:\"ko\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"년\",relative:{0:\"올해\",1:\"내년\",\"-1\":\"작년\"},relativeTime:{future:{other:\"{0}년 후\"},past:{other:\"{0}년 전\"}}},\"year-short\":{displayName:\"년\",relative:{0:\"올해\",1:\"내년\",\"-1\":\"작년\"},relativeTime:{future:{other:\"{0}년 후\"},past:{other:\"{0}년 전\"}}},month:{displayName:\"월\",relative:{0:\"이번 달\",1:\"다음 달\",\"-1\":\"지난달\"},relativeTime:{future:{other:\"{0}개월 후\"},past:{other:\"{0}개월 전\"}}},\"month-short\":{displayName:\"월\",relative:{0:\"이번 달\",1:\"다음 달\",\"-1\":\"지난달\"},relativeTime:{future:{other:\"{0}개월 후\"},past:{other:\"{0}개월 전\"}}},day:{displayName:\"일\",relative:{0:\"오늘\",1:\"내일\",2:\"모레\",\"-2\":\"그저께\",\"-1\":\"어제\"},relativeTime:{future:{other:\"{0}일 후\"},past:{other:\"{0}일 전\"}}},\"day-short\":{displayName:\"일\",relative:{0:\"오늘\",1:\"내일\",2:\"모레\",\"-2\":\"그저께\",\"-1\":\"어제\"},relativeTime:{future:{other:\"{0}일 후\"},past:{other:\"{0}일 전\"}}},hour:{displayName:\"시\",relative:{0:\"현재 시간\"},relativeTime:{future:{other:\"{0}시간 후\"},past:{other:\"{0}시간 전\"}}},\"hour-short\":{displayName:\"시\",relative:{0:\"현재 시간\"},relativeTime:{future:{other:\"{0}시간 후\"},past:{other:\"{0}시간 전\"}}},minute:{displayName:\"분\",relative:{0:\"현재 분\"},relativeTime:{future:{other:\"{0}분 후\"},past:{other:\"{0}분 전\"}}},\"minute-short\":{displayName:\"분\",relative:{0:\"현재 분\"},relativeTime:{future:{other:\"{0}분 후\"},past:{other:\"{0}분 전\"}}},second:{displayName:\"초\",relative:{0:\"지금\"},relativeTime:{future:{other:\"{0}초 후\"},past:{other:\"{0}초 전\"}}},\"second-short\":{displayName:\"초\",relative:{0:\"지금\"},relativeTime:{future:{other:\"{0}초 후\"},past:{other:\"{0}초 전\"}}}}},{locale:\"ko-KP\",parentLocale:\"ko\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.km=t())}(this,function(){\"use strict\";return[{locale:\"km\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"ឆ្នាំ\",relative:{0:\"ឆ្នាំ​នេះ\",1:\"ឆ្នាំ​ក្រោយ\",\"-1\":\"ឆ្នាំ​មុន\"},relativeTime:{future:{other:\"{0} ឆ្នាំទៀត\"},past:{other:\"{0} ឆ្នាំ​មុន\"}}},\"year-short\":{displayName:\"ឆ្នាំ\",relative:{0:\"ឆ្នាំ​នេះ\",1:\"ឆ្នាំ​ក្រោយ\",\"-1\":\"ឆ្នាំ​មុន\"},relativeTime:{future:{other:\"{0} ឆ្នាំទៀត\"},past:{other:\"{0} ឆ្នាំ​មុន\"}}},month:{displayName:\"ខែ\",relative:{0:\"ខែ​នេះ\",1:\"ខែ​ក្រោយ\",\"-1\":\"ខែ​មុន\"},relativeTime:{future:{other:\"{0} ខែទៀត\"},past:{other:\"{0} ខែមុន\"}}},\"month-short\":{displayName:\"ខែ\",relative:{0:\"ខែ​នេះ\",1:\"ខែ​ក្រោយ\",\"-1\":\"ខែ​មុន\"},relativeTime:{future:{other:\"{0} ខែទៀត\"},past:{other:\"{0} ខែមុន\"}}},day:{displayName:\"ថ្ងៃ\",relative:{0:\"ថ្ងៃ​នេះ\",1:\"ថ្ងៃ​ស្អែក\",2:\"​ខាន​ស្អែក\",\"-2\":\"ម្សិល​ម៉្ងៃ\",\"-1\":\"ម្សិលមិញ\"},relativeTime:{future:{other:\"{0} ថ្ងៃទៀត\"},past:{other:\"{0} ថ្ងៃ​មុន\"}}},\"day-short\":{displayName:\"ថ្ងៃ\",relative:{0:\"ថ្ងៃ​នេះ\",1:\"ថ្ងៃស្អែក\",2:\"​ខាន​ស្អែក\",\"-2\":\"ម្សិល​ម៉្ងៃ\",\"-1\":\"ម្សិលមិញ\"},relativeTime:{future:{other:\"{0} ថ្ងៃទៀត\"},past:{other:\"{0} ថ្ងៃ​​មុន\"}}},hour:{displayName:\"ម៉ោង\",relative:{0:\"ម៉ោងនេះ\"},relativeTime:{future:{other:\"ក្នុង​រយៈ​ពេល {0} ម៉ោង\"},past:{other:\"{0} ម៉ោង​មុន\"}}},\"hour-short\":{displayName:\"ម៉ោង\",relative:{0:\"ម៉ោងនេះ\"},relativeTime:{future:{other:\"{0} ម៉ោងទៀត\"},past:{other:\"{0} ម៉ោង​មុន\"}}},minute:{displayName:\"នាទី\",relative:{0:\"នាទីនេះ\"},relativeTime:{future:{other:\"{0} នាទីទៀត\"},past:{other:\"{0} នាទី​មុន\"}}},\"minute-short\":{displayName:\"នាទី\",relative:{0:\"នាទីនេះ\"},relativeTime:{future:{other:\"{0} នាទីទៀត\"},past:{other:\"{0} នាទី​​មុន\"}}},second:{displayName:\"វិនាទី\",relative:{0:\"ឥឡូវ\"},relativeTime:{future:{other:\"{0} វិនាទីទៀត\"},past:{other:\"{0} វិនាទី​មុន\"}}},\"second-short\":{displayName:\"វិនាទី\",relative:{0:\"ឥឡូវ\"},relativeTime:{future:{other:\"{0} វិនាទីទៀត\"},past:{other:\"{0} វិនាទី​មុន\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ku=t())}(this,function(){\"use strict\";return[{locale:\"ku\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"sal\",relative:{0:\"îsal\",1:\"sala piştî\",\"-1\":\"par\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"sal\",relative:{0:\"îsal\",1:\"sala piştî\",\"-1\":\"par\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"meh\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"m.\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"roj\",relative:{0:\"îro\",1:\"sibe\",\"-1\":\"duh\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"r.\",relative:{0:\"îro\",1:\"sibe\",\"-1\":\"duh\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"saet\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"st.\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"deqîqe\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"d.\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"saniye\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"s.\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}}]});\n","!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.lt=i())}(this,function(){\"use strict\";return[{locale:\"lt\",pluralRuleFunction:function(e,i){var a=String(e).split(\".\"),n=a[1]||\"\",r=Number(a[0])==e,t=r&&a[0].slice(-1),o=r&&a[0].slice(-2);return i?\"other\":1==t&&(o<11||o>19)?\"one\":t>=2&&t<=9&&(o<11||o>19)?\"few\":0!=n?\"many\":\"other\"},fields:{year:{displayName:\"metai\",relative:{0:\"šiais metais\",1:\"kitais metais\",\"-1\":\"praėjusiais metais\"},relativeTime:{future:{one:\"po {0} metų\",few:\"po {0} metų\",many:\"po {0} metų\",other:\"po {0} metų\"},past:{one:\"prieš {0} metus\",few:\"prieš {0} metus\",many:\"prieš {0} metų\",other:\"prieš {0} metų\"}}},\"year-short\":{displayName:\"m.\",relative:{0:\"šiais metais\",1:\"kitais metais\",\"-1\":\"praėjusiais metais\"},relativeTime:{future:{one:\"po {0} m.\",few:\"po {0} m.\",many:\"po {0} m.\",other:\"po {0} m.\"},past:{one:\"prieš {0} m.\",few:\"prieš {0} m.\",many:\"prieš {0} m.\",other:\"prieš {0} m.\"}}},month:{displayName:\"mėnuo\",relative:{0:\"šį mėnesį\",1:\"kitą mėnesį\",\"-1\":\"praėjusį mėnesį\"},relativeTime:{future:{one:\"po {0} mėnesio\",few:\"po {0} mėnesių\",many:\"po {0} mėnesio\",other:\"po {0} mėnesių\"},past:{one:\"prieš {0} mėnesį\",few:\"prieš {0} mėnesius\",many:\"prieš {0} mėnesio\",other:\"prieš {0} mėnesių\"}}},\"month-short\":{displayName:\"mėn.\",relative:{0:\"šį mėnesį\",1:\"kitą mėnesį\",\"-1\":\"praėjusį mėnesį\"},relativeTime:{future:{one:\"po {0} mėn.\",few:\"po {0} mėn.\",many:\"po {0} mėn.\",other:\"po {0} mėn.\"},past:{one:\"prieš {0} mėn.\",few:\"prieš {0} mėn.\",many:\"prieš {0} mėn.\",other:\"prieš {0} mėn.\"}}},day:{displayName:\"diena\",relative:{0:\"šiandien\",1:\"rytoj\",2:\"poryt\",\"-2\":\"užvakar\",\"-1\":\"vakar\"},relativeTime:{future:{one:\"po {0} dienos\",few:\"po {0} dienų\",many:\"po {0} dienos\",other:\"po {0} dienų\"},past:{one:\"prieš {0} dieną\",few:\"prieš {0} dienas\",many:\"prieš {0} dienos\",other:\"prieš {0} dienų\"}}},\"day-short\":{displayName:\"d.\",relative:{0:\"šiandien\",1:\"rytoj\",2:\"poryt\",\"-2\":\"užvakar\",\"-1\":\"vakar\"},relativeTime:{future:{one:\"po {0} d.\",few:\"po {0} d.\",many:\"po {0} d.\",other:\"po {0} d.\"},past:{one:\"prieš {0} d.\",few:\"prieš {0} d.\",many:\"prieš {0} d.\",other:\"prieš {0} d.\"}}},hour:{displayName:\"valanda\",relative:{0:\"šią valandą\"},relativeTime:{future:{one:\"po {0} valandos\",few:\"po {0} valandų\",many:\"po {0} valandos\",other:\"po {0} valandų\"},past:{one:\"prieš {0} valandą\",few:\"prieš {0} valandas\",many:\"prieš {0} valandos\",other:\"prieš {0} valandų\"}}},\"hour-short\":{displayName:\"val.\",relative:{0:\"šią valandą\"},relativeTime:{future:{one:\"po {0} val.\",few:\"po {0} val.\",many:\"po {0} val.\",other:\"po {0} val.\"},past:{one:\"prieš {0} val.\",few:\"prieš {0} val.\",many:\"prieš {0} val.\",other:\"prieš {0} val.\"}}},minute:{displayName:\"minutė\",relative:{0:\"šią minutę\"},relativeTime:{future:{one:\"po {0} minutės\",few:\"po {0} minučių\",many:\"po {0} minutės\",other:\"po {0} minučių\"},past:{one:\"prieš {0} minutę\",few:\"prieš {0} minutes\",many:\"prieš {0} minutės\",other:\"prieš {0} minučių\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"šią minutę\"},relativeTime:{future:{one:\"po {0} min.\",few:\"po {0} min.\",many:\"po {0} min.\",other:\"po {0} min.\"},past:{one:\"prieš {0} min.\",few:\"prieš {0} min.\",many:\"prieš {0} min.\",other:\"prieš {0} min.\"}}},second:{displayName:\"sekundė\",relative:{0:\"dabar\"},relativeTime:{future:{one:\"po {0} sekundės\",few:\"po {0} sekundžių\",many:\"po {0} sekundės\",other:\"po {0} sekundžių\"},past:{one:\"prieš {0} sekundę\",few:\"prieš {0} sekundes\",many:\"prieš {0} sekundės\",other:\"prieš {0} sekundžių\"}}},\"second-short\":{displayName:\"sek.\",relative:{0:\"dabar\"},relativeTime:{future:{one:\"po {0} sek.\",few:\"po {0} sek.\",many:\"po {0} sek.\",other:\"po {0} sek.\"},past:{one:\"prieš {0} sek.\",few:\"prieš {0} sek.\",many:\"prieš {0} sek.\",other:\"prieš {0} sek.\"}}}}}]});\n","!function(e,r){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(r):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.lv=r())}(this,function(){\"use strict\";return[{locale:\"lv\",pluralRuleFunction:function(e,r){var a=String(e).split(\".\"),t=a[1]||\"\",i=t.length,m=Number(a[0])==e,s=m&&a[0].slice(-1),n=m&&a[0].slice(-2),p=t.slice(-2),o=t.slice(-1);return r?\"other\":m&&0==s||n>=11&&n<=19||2==i&&p>=11&&p<=19?\"zero\":1==s&&11!=n||2==i&&1==o&&11!=p||2!=i&&1==o?\"one\":\"other\"},fields:{year:{displayName:\"gads\",relative:{0:\"šajā gadā\",1:\"nākamajā gadā\",\"-1\":\"pagājušajā gadā\"},relativeTime:{future:{zero:\"pēc {0} gadiem\",one:\"pēc {0} gada\",other:\"pēc {0} gadiem\"},past:{zero:\"pirms {0} gadiem\",one:\"pirms {0} gada\",other:\"pirms {0} gadiem\"}}},\"year-short\":{displayName:\"g.\",relative:{0:\"šajā gadā\",1:\"nākamajā gadā\",\"-1\":\"pagājušajā gadā\"},relativeTime:{future:{zero:\"pēc {0} g.\",one:\"pēc {0} g.\",other:\"pēc {0} g.\"},past:{zero:\"pirms {0} g.\",one:\"pirms {0} g.\",other:\"pirms {0} g.\"}}},month:{displayName:\"mēnesis\",relative:{0:\"šajā mēnesī\",1:\"nākamajā mēnesī\",\"-1\":\"pagājušajā mēnesī\"},relativeTime:{future:{zero:\"pēc {0} mēnešiem\",one:\"pēc {0} mēneša\",other:\"pēc {0} mēnešiem\"},past:{zero:\"pirms {0} mēnešiem\",one:\"pirms {0} mēneša\",other:\"pirms {0} mēnešiem\"}}},\"month-short\":{displayName:\"mēn.\",relative:{0:\"šajā mēnesī\",1:\"nākamajā mēnesī\",\"-1\":\"pagājušajā mēnesī\"},relativeTime:{future:{zero:\"pēc {0} mēn.\",one:\"pēc {0} mēn.\",other:\"pēc {0} mēn.\"},past:{zero:\"pirms {0} mēn.\",one:\"pirms {0} mēn.\",other:\"pirms {0} mēn.\"}}},day:{displayName:\"diena\",relative:{0:\"šodien\",1:\"rīt\",2:\"parīt\",\"-2\":\"aizvakar\",\"-1\":\"vakar\"},relativeTime:{future:{zero:\"pēc {0} dienām\",one:\"pēc {0} dienas\",other:\"pēc {0} dienām\"},past:{zero:\"pirms {0} dienām\",one:\"pirms {0} dienas\",other:\"pirms {0} dienām\"}}},\"day-short\":{displayName:\"d.\",relative:{0:\"šodien\",1:\"rīt\",2:\"parīt\",\"-2\":\"aizvakar\",\"-1\":\"vakar\"},relativeTime:{future:{zero:\"pēc {0} d.\",one:\"pēc {0} d.\",other:\"pēc {0} d.\"},past:{zero:\"pirms {0} d.\",one:\"pirms {0} d.\",other:\"pirms {0} d.\"}}},hour:{displayName:\"stundas\",relative:{0:\"šajā stundā\"},relativeTime:{future:{zero:\"pēc {0} stundām\",one:\"pēc {0} stundas\",other:\"pēc {0} stundām\"},past:{zero:\"pirms {0} stundām\",one:\"pirms {0} stundas\",other:\"pirms {0} stundām\"}}},\"hour-short\":{displayName:\"st.\",relative:{0:\"šajā stundā\"},relativeTime:{future:{zero:\"pēc {0} st.\",one:\"pēc {0} st.\",other:\"pēc {0} st.\"},past:{zero:\"pirms {0} st.\",one:\"pirms {0} st.\",other:\"pirms {0} st.\"}}},minute:{displayName:\"minūtes\",relative:{0:\"šajā minūtē\"},relativeTime:{future:{zero:\"pēc {0} minūtēm\",one:\"pēc {0} minūtes\",other:\"pēc {0} minūtēm\"},past:{zero:\"pirms {0} minūtēm\",one:\"pirms {0} minūtes\",other:\"pirms {0} minūtēm\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"šajā minūtē\"},relativeTime:{future:{zero:\"pēc {0} min.\",one:\"pēc {0} min.\",other:\"pēc {0} min.\"},past:{zero:\"pirms {0} min.\",one:\"pirms {0} min.\",other:\"pirms {0} min.\"}}},second:{displayName:\"sekundes\",relative:{0:\"tagad\"},relativeTime:{future:{zero:\"pēc {0} sekundēm\",one:\"pēc {0} sekundes\",other:\"pēc {0} sekundēm\"},past:{zero:\"pirms {0} sekundēm\",one:\"pirms {0} sekundes\",other:\"pirms {0} sekundēm\"}}},\"second-short\":{displayName:\"sek.\",relative:{0:\"tagad\"},relativeTime:{future:{zero:\"pēc {0} sek.\",one:\"pēc {0} sek.\",other:\"pēc {0} sek.\"},past:{zero:\"pirms {0} sek.\",one:\"pirms {0} sek.\",other:\"pirms {0} sek.\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.mi=t())}(this,function(){\"use strict\";return[{locale:\"mi\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"tau\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"t\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"marama\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"rā\",relative:{0:\"āianei\",1:\"āpōpō\",\"-1\":\"inanahi\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"rā\",relative:{0:\"āianei\",1:\"āpōpō\",\"-1\":\"inanahi\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"hāora\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"hr\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"meneti\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"men\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"hēkona\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"hēk\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.mn=t())}(this,function(){\"use strict\";return[{locale:\"mn\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"жил\",relative:{0:\"энэ жил\",1:\"ирэх жил\",\"-1\":\"өнгөрсөн жил\"},relativeTime:{future:{one:\"{0} жилийн дараа\",other:\"{0} жилийн дараа\"},past:{one:\"{0} жилийн өмнө\",other:\"{0} жилийн өмнө\"}}},\"year-short\":{displayName:\"жил\",relative:{0:\"энэ жил\",1:\"ирэх жил\",\"-1\":\"өнгөрсөн жил\"},relativeTime:{future:{one:\"{0} жилийн дараа\",other:\"{0} жилийн дараа\"},past:{one:\"{0} жилийн өмнө\",other:\"{0} жилийн өмнө\"}}},month:{displayName:\"сар\",relative:{0:\"энэ сар\",1:\"ирэх сар\",\"-1\":\"өнгөрсөн сар\"},relativeTime:{future:{one:\"{0} сарын дараа\",other:\"{0} сарын дараа\"},past:{one:\"{0} сарын өмнө\",other:\"{0} сарын өмнө\"}}},\"month-short\":{displayName:\"сар\",relative:{0:\"энэ сар\",1:\"ирэх сар\",\"-1\":\"өнгөрсөн сар\"},relativeTime:{future:{one:\"{0} сарын дараа\",other:\"{0} сарын дараа\"},past:{one:\"{0} сарын өмнө\",other:\"{0} сарын өмнө\"}}},day:{displayName:\"өдөр\",relative:{0:\"өнөөдөр\",1:\"маргааш\",2:\"нөгөөдөр\",\"-2\":\"уржигдар\",\"-1\":\"өчигдөр\"},relativeTime:{future:{one:\"{0} өдрийн дараа\",other:\"{0} өдрийн дараа\"},past:{one:\"{0} өдрийн өмнө\",other:\"{0} өдрийн өмнө\"}}},\"day-short\":{displayName:\"өдөр\",relative:{0:\"өнөөдөр\",1:\"маргааш\",2:\"нөгөөдөр\",\"-2\":\"уржигдар\",\"-1\":\"өчигдөр\"},relativeTime:{future:{one:\"{0} өдрийн дараа\",other:\"{0} өдрийн дараа\"},past:{one:\"{0} өдрийн өмнө\",other:\"{0} өдрийн өмнө\"}}},hour:{displayName:\"цаг\",relative:{0:\"энэ цаг\"},relativeTime:{future:{one:\"{0} цагийн дараа\",other:\"{0} цагийн дараа\"},past:{one:\"{0} цагийн өмнө\",other:\"{0} цагийн өмнө\"}}},\"hour-short\":{displayName:\"ц\",relative:{0:\"энэ цаг\"},relativeTime:{future:{one:\"{0} ц дараа\",other:\"{0} ц дараа\"},past:{one:\"{0} ц өмнө\",other:\"{0} ц өмнө\"}}},minute:{displayName:\"минут\",relative:{0:\"энэ минут\"},relativeTime:{future:{one:\"{0} минутын дараа\",other:\"{0} минутын дараа\"},past:{one:\"{0} минутын өмнө\",other:\"{0} минутын өмнө\"}}},\"minute-short\":{displayName:\"мин\",relative:{0:\"энэ минут\"},relativeTime:{future:{one:\"{0} мин дараа\",other:\"{0} мин дараа\"},past:{one:\"{0} мин өмнө\",other:\"{0} мин өмнө\"}}},second:{displayName:\"секунд\",relative:{0:\"одоо\"},relativeTime:{future:{one:\"{0} секундын дараа\",other:\"{0} секундын дараа\"},past:{one:\"{0} секундын өмнө\",other:\"{0} секундын өмнө\"}}},\"second-short\":{displayName:\"сек\",relative:{0:\"одоо\"},relativeTime:{future:{one:\"{0} сек дараа\",other:\"{0} сек дараа\"},past:{one:\"{0} сек өмнө\",other:\"{0} сек өмнө\"}}}}},{locale:\"mn-Mong\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}}]});\n","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.nl=n())}(this,function(){\"use strict\";return[{locale:\"nl\",pluralRuleFunction:function(e,n){var a=!String(e).split(\".\")[1];return n?\"other\":1==e&&a?\"one\":\"other\"},fields:{year:{displayName:\"jaar\",relative:{0:\"dit jaar\",1:\"volgend jaar\",\"-1\":\"vorig jaar\"},relativeTime:{future:{one:\"over {0} jaar\",other:\"over {0} jaar\"},past:{one:\"{0} jaar geleden\",other:\"{0} jaar geleden\"}}},\"year-short\":{displayName:\"jr\",relative:{0:\"dit jaar\",1:\"volgend jaar\",\"-1\":\"vorig jaar\"},relativeTime:{future:{one:\"over {0} jaar\",other:\"over {0} jaar\"},past:{one:\"{0} jaar geleden\",other:\"{0} jaar geleden\"}}},month:{displayName:\"maand\",relative:{0:\"deze maand\",1:\"volgende maand\",\"-1\":\"vorige maand\"},relativeTime:{future:{one:\"over {0} maand\",other:\"over {0} maanden\"},past:{one:\"{0} maand geleden\",other:\"{0} maanden geleden\"}}},\"month-short\":{displayName:\"mnd\",relative:{0:\"deze maand\",1:\"volgende maand\",\"-1\":\"vorige maand\"},relativeTime:{future:{one:\"over {0} maand\",other:\"over {0} maanden\"},past:{one:\"{0} maand geleden\",other:\"{0} maanden geleden\"}}},day:{displayName:\"dag\",relative:{0:\"vandaag\",1:\"morgen\",2:\"overmorgen\",\"-2\":\"eergisteren\",\"-1\":\"gisteren\"},relativeTime:{future:{one:\"over {0} dag\",other:\"over {0} dagen\"},past:{one:\"{0} dag geleden\",other:\"{0} dagen geleden\"}}},\"day-short\":{displayName:\"dag\",relative:{0:\"vandaag\",1:\"morgen\",2:\"overmorgen\",\"-2\":\"eergisteren\",\"-1\":\"gisteren\"},relativeTime:{future:{one:\"over {0} dag\",other:\"over {0} dgn\"},past:{one:\"{0} dag geleden\",other:\"{0} dgn geleden\"}}},hour:{displayName:\"uur\",relative:{0:\"binnen een uur\"},relativeTime:{future:{one:\"over {0} uur\",other:\"over {0} uur\"},past:{one:\"{0} uur geleden\",other:\"{0} uur geleden\"}}},\"hour-short\":{displayName:\"uur\",relative:{0:\"binnen een uur\"},relativeTime:{future:{one:\"over {0} uur\",other:\"over {0} uur\"},past:{one:\"{0} uur geleden\",other:\"{0} uur geleden\"}}},minute:{displayName:\"minuut\",relative:{0:\"binnen een minuut\"},relativeTime:{future:{one:\"over {0} minuut\",other:\"over {0} minuten\"},past:{one:\"{0} minuut geleden\",other:\"{0} minuten geleden\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"binnen een minuut\"},relativeTime:{future:{one:\"over {0} min.\",other:\"over {0} min.\"},past:{one:\"{0} min. geleden\",other:\"{0} min. geleden\"}}},second:{displayName:\"seconde\",relative:{0:\"nu\"},relativeTime:{future:{one:\"over {0} seconde\",other:\"over {0} seconden\"},past:{one:\"{0} seconde geleden\",other:\"{0} seconden geleden\"}}},\"second-short\":{displayName:\"sec\",relative:{0:\"nu\"},relativeTime:{future:{one:\"over {0} sec.\",other:\"over {0} sec.\"},past:{one:\"{0} sec. geleden\",other:\"{0} sec. geleden\"}}}}},{locale:\"nl-AW\",parentLocale:\"nl\"},{locale:\"nl-BE\",parentLocale:\"nl\"},{locale:\"nl-BQ\",parentLocale:\"nl\"},{locale:\"nl-CW\",parentLocale:\"nl\"},{locale:\"nl-SR\",parentLocale:\"nl\"},{locale:\"nl-SX\",parentLocale:\"nl\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.nb=t())}(this,function(){\"use strict\";return[{locale:\"nb\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"år\",relative:{0:\"i år\",1:\"neste år\",\"-1\":\"i fjor\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"for {0} år siden\",other:\"for {0} år siden\"}}},\"year-short\":{displayName:\"år\",relative:{0:\"i år\",1:\"neste år\",\"-1\":\"i fjor\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"for {0} år siden\",other:\"for {0} år siden\"}}},month:{displayName:\"måned\",relative:{0:\"denne måneden\",1:\"neste måned\",\"-1\":\"forrige måned\"},relativeTime:{future:{one:\"om {0} måned\",other:\"om {0} måneder\"},past:{one:\"for {0} måned siden\",other:\"for {0} måneder siden\"}}},\"month-short\":{displayName:\"mnd.\",relative:{0:\"denne md.\",1:\"neste md.\",\"-1\":\"forrige md.\"},relativeTime:{future:{one:\"om {0} md.\",other:\"om {0} md.\"},past:{one:\"for {0} md. siden\",other:\"for {0} md. siden\"}}},day:{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgen\",2:\"i overmorgen\",\"-2\":\"i forgårs\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} døgn\",other:\"om {0} døgn\"},past:{one:\"for {0} døgn siden\",other:\"for {0} døgn siden\"}}},\"day-short\":{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgen\",2:\"i overmorgen\",\"-2\":\"i forgårs\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} d.\",other:\"om {0} d.\"},past:{one:\"for {0} d. siden\",other:\"for {0} d. siden\"}}},hour:{displayName:\"time\",relative:{0:\"denne timen\"},relativeTime:{future:{one:\"om {0} time\",other:\"om {0} timer\"},past:{one:\"for {0} time siden\",other:\"for {0} timer siden\"}}},\"hour-short\":{displayName:\"t\",relative:{0:\"denne timen\"},relativeTime:{future:{one:\"om {0} t\",other:\"om {0} t\"},past:{one:\"for {0} t siden\",other:\"for {0} t siden\"}}},minute:{displayName:\"minutt\",relative:{0:\"dette minuttet\"},relativeTime:{future:{one:\"om {0} minutt\",other:\"om {0} minutter\"},past:{one:\"for {0} minutt siden\",other:\"for {0} minutter siden\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"dette minuttet\"},relativeTime:{future:{one:\"om {0} min\",other:\"om {0} min\"},past:{one:\"for {0} min siden\",other:\"for {0} min siden\"}}},second:{displayName:\"sekund\",relative:{0:\"nå\"},relativeTime:{future:{one:\"om {0} sekund\",other:\"om {0} sekunder\"},past:{one:\"for {0} sekund siden\",other:\"for {0} sekunder siden\"}}},\"second-short\":{displayName:\"sek\",relative:{0:\"nå\"},relativeTime:{future:{one:\"om {0} sek\",other:\"om {0} sek\"},past:{one:\"for {0} sek siden\",other:\"for {0} sek siden\"}}}}},{locale:\"nb-SJ\",parentLocale:\"nb\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.nn=t())}(this,function(){\"use strict\";return[{locale:\"nn\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"år\",relative:{0:\"i år\",1:\"neste år\",\"-1\":\"i fjor\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"for {0} år sidan\",other:\"for {0} år sidan\"}}},\"year-short\":{displayName:\"år\",relative:{0:\"i år\",1:\"neste år\",\"-1\":\"i fjor\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"for {0} år sidan\",other:\"for {0} år sidan\"}}},month:{displayName:\"månad\",relative:{0:\"denne månaden\",1:\"neste månad\",\"-1\":\"førre månad\"},relativeTime:{future:{one:\"om {0} månad\",other:\"om {0} månadar\"},past:{one:\"for {0} månad sidan\",other:\"for {0} månadar sidan\"}}},\"month-short\":{displayName:\"mnd.\",relative:{0:\"denne månaden\",1:\"neste månad\",\"-1\":\"førre månad\"},relativeTime:{future:{one:\"om {0} md.\",other:\"om {0} md.\"},past:{one:\"for {0} md. sidan\",other:\"for {0} md. sidan\"}}},day:{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgon\",2:\"i overmorgon\",\"-2\":\"i førgår\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} døgn\",other:\"om {0} døgn\"},past:{one:\"for {0} døgn sidan\",other:\"for {0} døgn sidan\"}}},\"day-short\":{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgon\",2:\"i overmorgon\",\"-2\":\"i førgår\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} d.\",other:\"om {0} d.\"},past:{one:\"for {0} d. sidan\",other:\"for {0} d. sidan\"}}},hour:{displayName:\"time\",relative:{0:\"denne timen\"},relativeTime:{future:{one:\"om {0} time\",other:\"om {0} timar\"},past:{one:\"for {0} time sidan\",other:\"for {0} timar sidan\"}}},\"hour-short\":{displayName:\"t\",relative:{0:\"denne timen\"},relativeTime:{future:{one:\"om {0} t\",other:\"om {0} t\"},past:{one:\"for {0} t sidan\",other:\"for {0} t sidan\"}}},minute:{displayName:\"minutt\",relative:{0:\"dette minuttet\"},relativeTime:{future:{one:\"om {0} minutt\",other:\"om {0} minutt\"},past:{one:\"for {0} minutt sidan\",other:\"for {0} minutt sidan\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"dette minuttet\"},relativeTime:{future:{one:\"om {0} min\",other:\"om {0} min\"},past:{one:\"for {0} min sidan\",other:\"for {0} min sidan\"}}},second:{displayName:\"sekund\",relative:{0:\"no\"},relativeTime:{future:{one:\"om {0} sekund\",other:\"om {0} sekund\"},past:{one:\"for {0} sekund sidan\",other:\"for {0} sekund sidan\"}}},\"second-short\":{displayName:\"sek\",relative:{0:\"no\"},relativeTime:{future:{one:\"om {0} sek\",other:\"om {0} sek\"},past:{one:\"for {0} sek sidan\",other:\"for {0} sek sidan\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.nso=t())}(this,function(){\"use strict\";return[{locale:\"nso\",pluralRuleFunction:function(e,t){return t?\"other\":0==e||1==e?\"one\":\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.or=t())}(this,function(){\"use strict\";return[{locale:\"or\",pluralRuleFunction:function(e,t){var r=String(e).split(\".\"),o=Number(r[0])==e;return t?1==e||5==e||o&&e>=7&&e<=9?\"one\":2==e||3==e?\"two\":4==e?\"few\":6==e?\"many\":\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"ବର୍ଷ\",relative:{0:\"ଏହି ବର୍ଷ\",1:\"ଆଗାମୀ ବର୍ଷ\",\"-1\":\"ଗତ ବର୍ଷ\"},relativeTime:{future:{one:\"{0} ବର୍ଷରେ\",other:\"{0} ବର୍ଷରେ\"},past:{one:\"{0} ବର୍ଷ ପୂର୍ବେ\",other:\"{0} ବର୍ଷ ପୂର୍ବେ\"}}},\"year-short\":{displayName:\"ବ.\",relative:{0:\"ଏହି ବର୍ଷ\",1:\"ଆଗାମୀ ବର୍ଷ\",\"-1\":\"ଗତ ବର୍ଷ\"},relativeTime:{future:{one:\"{0} ବ. ରେ\",other:\"{0} ବ. ରେ\"},past:{one:\"{0} ବ. ପୂର୍ବେ\",other:\"{0} ବ. ପୂର୍ବେ\"}}},month:{displayName:\"ମାସ\",relative:{0:\"ଏହି ମାସ\",1:\"ଆଗାମୀ ମାସ\",\"-1\":\"ଗତ ମାସ\"},relativeTime:{future:{one:\"{0} ମାସରେ\",other:\"{0} ମାସରେ\"},past:{one:\"{0} ମାସ ପୂର୍ବେ\",other:\"{0} ମାସ ପୂର୍ବେ\"}}},\"month-short\":{displayName:\"ମା.\",relative:{0:\"ଏହି ମାସ\",1:\"ଆଗାମୀ ମାସ\",\"-1\":\"ଗତ ମାସ\"},relativeTime:{future:{one:\"{0} ମା. ରେ\",other:\"{0} ମା. ରେ\"},past:{one:\"{0} ମା. ପୂର୍ବେ\",other:\"{0} ମା. ପୂର୍ବେ\"}}},day:{displayName:\"ଦିନ\",relative:{0:\"ଆଜି\",1:\"ଆସନ୍ତାକାଲି\",\"-1\":\"ଗତକାଲି\"},relativeTime:{future:{one:\"{0} ଦିନରେ\",other:\"{0} ଦିନରେ\"},past:{one:\"{0} ଦିନ ପୂର୍ବେ\",other:\"{0} ଦିନ ପୂର୍ବେ\"}}},\"day-short\":{displayName:\"ଦିନ\",relative:{0:\"ଆଜି\",1:\"ଆସନ୍ତାକାଲି\",\"-1\":\"ଗତକାଲି\"},relativeTime:{future:{one:\"{0} ଦିନରେ\",other:\"{0} ଦିନରେ\"},past:{one:\"{0} ଦିନ ପୂର୍ବେ\",other:\"{0} ଦିନ ପୂର୍ବେ\"}}},hour:{displayName:\"ଘଣ୍ଟା\",relative:{0:\"ଏହି ଘଣ୍ଟା\"},relativeTime:{future:{one:\"{0} ଘଣ୍ଟାରେ\",other:\"{0} ଘଣ୍ଟାରେ\"},past:{one:\"{0} ଘଣ୍ଟା ପୂର୍ବେ\",other:\"{0} ଘଣ୍ଟା ପୂର୍ବେ\"}}},\"hour-short\":{displayName:\"ଘ.\",relative:{0:\"ଏହି ଘଣ୍ଟା\"},relativeTime:{future:{one:\"{0} ଘ. ରେ\",other:\"{0} ଘ. ରେ\"},past:{one:\"{0} ଘ. ପୂର୍ବେ\",other:\"{0} ଘ. ପୂର୍ବେ\"}}},minute:{displayName:\"ମିନିଟ୍\",relative:{0:\"ଏହି ମିନିଟ୍\"},relativeTime:{future:{one:\"{0} ମିନିଟ୍‌‌ରେ\",other:\"{0} ମିନିଟ୍‌‌ରେ\"},past:{one:\"{0} ମିନିଟ୍ ପୂର୍ବେ\",other:\"{0} ମିନିଟ୍ ପୂର୍ବେ\"}}},\"minute-short\":{displayName:\"ମି.\",relative:{0:\"ଏହି ମିନିଟ୍\"},relativeTime:{future:{one:\"{0} ମି. ରେ\",other:\"{0} ମି. ରେ\"},past:{one:\"{0} ମି. ପୂର୍ବେ\",other:\"{0} ମି. ପୂର୍ବେ\"}}},second:{displayName:\"ସେକେଣ୍ଡ୍\",relative:{0:\"ବର୍ତ୍ତମାନ\"},relativeTime:{future:{one:\"{0} ସେକେଣ୍ଡରେ\",other:\"{0} ସେକେଣ୍ଡରେ\"},past:{one:\"{0} ସେକେଣ୍ଡ ପୂର୍ବେ\",other:\"{0} ସେକେଣ୍ଡ ପୂର୍ବେ\"}}},\"second-short\":{displayName:\"ସେକେଣ୍ଡ୍\",relative:{0:\"ବର୍ତ୍ତମାନ\"},relativeTime:{future:{one:\"{0} ସେ. ରେ\",other:\"{0} ସେ. ରେ\"},past:{one:\"{0} ସେ. ପୂର୍ବେ\",other:\"{0} ସେ. ପୂର୍ବେ\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.pl=t())}(this,function(){\"use strict\";return[{locale:\"pl\",pluralRuleFunction:function(e,t){var a=String(e).split(\".\"),m=a[0],i=!a[1],n=m.slice(-1),u=m.slice(-2);return t?\"other\":1==e&&i?\"one\":i&&n>=2&&n<=4&&(u<12||u>14)?\"few\":i&&1!=m&&(0==n||1==n)||i&&n>=5&&n<=9||i&&u>=12&&u<=14?\"many\":\"other\"},fields:{year:{displayName:\"rok\",relative:{0:\"w tym roku\",1:\"w przyszłym roku\",\"-1\":\"w zeszłym roku\"},relativeTime:{future:{one:\"za {0} rok\",few:\"za {0} lata\",many:\"za {0} lat\",other:\"za {0} roku\"},past:{one:\"{0} rok temu\",few:\"{0} lata temu\",many:\"{0} lat temu\",other:\"{0} roku temu\"}}},\"year-short\":{displayName:\"r.\",relative:{0:\"w tym roku\",1:\"w przyszłym roku\",\"-1\":\"w zeszłym roku\"},relativeTime:{future:{one:\"za {0} rok\",few:\"za {0} lata\",many:\"za {0} lat\",other:\"za {0} roku\"},past:{one:\"{0} rok temu\",few:\"{0} lata temu\",many:\"{0} lat temu\",other:\"{0} roku temu\"}}},month:{displayName:\"miesiąc\",relative:{0:\"w tym miesiącu\",1:\"w przyszłym miesiącu\",\"-1\":\"w zeszłym miesiącu\"},relativeTime:{future:{one:\"za {0} miesiąc\",few:\"za {0} miesiące\",many:\"za {0} miesięcy\",other:\"za {0} miesiąca\"},past:{one:\"{0} miesiąc temu\",few:\"{0} miesiące temu\",many:\"{0} miesięcy temu\",other:\"{0} miesiąca temu\"}}},\"month-short\":{displayName:\"mies.\",relative:{0:\"w tym miesiącu\",1:\"w przyszłym miesiącu\",\"-1\":\"w zeszłym miesiącu\"},relativeTime:{future:{one:\"za {0} mies.\",few:\"za {0} mies.\",many:\"za {0} mies.\",other:\"za {0} mies.\"},past:{one:\"{0} mies. temu\",few:\"{0} mies. temu\",many:\"{0} mies. temu\",other:\"{0} mies. temu\"}}},day:{displayName:\"dzień\",relative:{0:\"dzisiaj\",1:\"jutro\",2:\"pojutrze\",\"-2\":\"przedwczoraj\",\"-1\":\"wczoraj\"},relativeTime:{future:{one:\"za {0} dzień\",few:\"za {0} dni\",many:\"za {0} dni\",other:\"za {0} dnia\"},past:{one:\"{0} dzień temu\",few:\"{0} dni temu\",many:\"{0} dni temu\",other:\"{0} dnia temu\"}}},\"day-short\":{displayName:\"dzień\",relative:{0:\"dzisiaj\",1:\"jutro\",2:\"pojutrze\",\"-2\":\"przedwczoraj\",\"-1\":\"wczoraj\"},relativeTime:{future:{one:\"za {0} dzień\",few:\"za {0} dni\",many:\"za {0} dni\",other:\"za {0} dnia\"},past:{one:\"{0} dzień temu\",few:\"{0} dni temu\",many:\"{0} dni temu\",other:\"{0} dnia temu\"}}},hour:{displayName:\"godzina\",relative:{0:\"ta godzina\"},relativeTime:{future:{one:\"za {0} godzinę\",few:\"za {0} godziny\",many:\"za {0} godzin\",other:\"za {0} godziny\"},past:{one:\"{0} godzinę temu\",few:\"{0} godziny temu\",many:\"{0} godzin temu\",other:\"{0} godziny temu\"}}},\"hour-short\":{displayName:\"godz.\",relative:{0:\"ta godzina\"},relativeTime:{future:{one:\"za {0} godz.\",few:\"za {0} godz.\",many:\"za {0} godz.\",other:\"za {0} godz.\"},past:{one:\"{0} godz. temu\",few:\"{0} godz. temu\",many:\"{0} godz. temu\",other:\"{0} godz. temu\"}}},minute:{displayName:\"minuta\",relative:{0:\"ta minuta\"},relativeTime:{future:{one:\"za {0} minutę\",few:\"za {0} minuty\",many:\"za {0} minut\",other:\"za {0} minuty\"},past:{one:\"{0} minutę temu\",few:\"{0} minuty temu\",many:\"{0} minut temu\",other:\"{0} minuty temu\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"ta minuta\"},relativeTime:{future:{one:\"za {0} min\",few:\"za {0} min\",many:\"za {0} min\",other:\"za {0} min\"},past:{one:\"{0} min temu\",few:\"{0} min temu\",many:\"{0} min temu\",other:\"{0} min temu\"}}},second:{displayName:\"sekunda\",relative:{0:\"teraz\"},relativeTime:{future:{one:\"za {0} sekundę\",few:\"za {0} sekundy\",many:\"za {0} sekund\",other:\"za {0} sekundy\"},past:{one:\"{0} sekundę temu\",few:\"{0} sekundy temu\",many:\"{0} sekund temu\",other:\"{0} sekundy temu\"}}},\"second-short\":{displayName:\"sek.\",relative:{0:\"teraz\"},relativeTime:{future:{one:\"za {0} sek.\",few:\"za {0} sek.\",many:\"za {0} sek.\",other:\"za {0} sek.\"},past:{one:\"{0} sek. temu\",few:\"{0} sek. temu\",many:\"{0} sek. temu\",other:\"{0} sek. temu\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.pt=t())}(this,function(){\"use strict\";return[{locale:\"pt\",pluralRuleFunction:function(e,t){var o=String(e).split(\".\")[0];return t?\"other\":0==o||1==o?\"one\":\"other\"},fields:{year:{displayName:\"ano\",relative:{0:\"este ano\",1:\"próximo ano\",\"-1\":\"ano passado\"},relativeTime:{future:{one:\"em {0} ano\",other:\"em {0} anos\"},past:{one:\"há {0} ano\",other:\"há {0} anos\"}}},\"year-short\":{displayName:\"ano\",relative:{0:\"este ano\",1:\"próximo ano\",\"-1\":\"ano passado\"},relativeTime:{future:{one:\"em {0} ano\",other:\"em {0} anos\"},past:{one:\"há {0} ano\",other:\"há {0} anos\"}}},month:{displayName:\"mês\",relative:{0:\"este mês\",1:\"próximo mês\",\"-1\":\"mês passado\"},relativeTime:{future:{one:\"em {0} mês\",other:\"em {0} meses\"},past:{one:\"há {0} mês\",other:\"há {0} meses\"}}},\"month-short\":{displayName:\"mês\",relative:{0:\"este mês\",1:\"próximo mês\",\"-1\":\"mês passado\"},relativeTime:{future:{one:\"em {0} mês\",other:\"em {0} meses\"},past:{one:\"há {0} mês\",other:\"há {0} meses\"}}},day:{displayName:\"dia\",relative:{0:\"hoje\",1:\"amanhã\",2:\"depois de amanhã\",\"-2\":\"anteontem\",\"-1\":\"ontem\"},relativeTime:{future:{one:\"em {0} dia\",other:\"em {0} dias\"},past:{one:\"há {0} dia\",other:\"há {0} dias\"}}},\"day-short\":{displayName:\"dia\",relative:{0:\"hoje\",1:\"amanhã\",2:\"depois de amanhã\",\"-2\":\"anteontem\",\"-1\":\"ontem\"},relativeTime:{future:{one:\"em {0} dia\",other:\"em {0} dias\"},past:{one:\"há {0} dia\",other:\"há {0} dias\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"em {0} hora\",other:\"em {0} horas\"},past:{one:\"há {0} hora\",other:\"há {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"em {0} h\",other:\"em {0} h\"},past:{one:\"há {0} h\",other:\"há {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"em {0} minuto\",other:\"em {0} minutos\"},past:{one:\"há {0} minuto\",other:\"há {0} minutos\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"em {0} min.\",other:\"em {0} min.\"},past:{one:\"há {0} min.\",other:\"há {0} min.\"}}},second:{displayName:\"segundo\",relative:{0:\"agora\"},relativeTime:{future:{one:\"em {0} segundo\",other:\"em {0} segundos\"},past:{one:\"há {0} segundo\",other:\"há {0} segundos\"}}},\"second-short\":{displayName:\"seg.\",relative:{0:\"agora\"},relativeTime:{future:{one:\"em {0} seg.\",other:\"em {0} seg.\"},past:{one:\"há {0} seg.\",other:\"há {0} seg.\"}}}}},{locale:\"pt-AO\",parentLocale:\"pt-PT\"},{locale:\"pt-PT\",parentLocale:\"pt\",pluralRuleFunction:function(e,t){var o=!String(e).split(\".\")[1];return t?\"other\":1==e&&o?\"one\":\"other\"},fields:{year:{displayName:\"ano\",relative:{0:\"este ano\",1:\"próximo ano\",\"-1\":\"ano passado\"},relativeTime:{future:{one:\"dentro de {0} ano\",other:\"dentro de {0} anos\"},past:{one:\"há {0} ano\",other:\"há {0} anos\"}}},\"year-short\":{displayName:\"ano\",relative:{0:\"este ano\",1:\"próximo ano\",\"-1\":\"ano passado\"},relativeTime:{future:{one:\"dentro de {0} ano\",other:\"dentro de {0} anos\"},past:{one:\"há {0} ano\",other:\"há {0} anos\"}}},month:{displayName:\"mês\",relative:{0:\"este mês\",1:\"próximo mês\",\"-1\":\"mês passado\"},relativeTime:{future:{one:\"dentro de {0} mês\",other:\"dentro de {0} meses\"},past:{one:\"há {0} mês\",other:\"há {0} meses\"}}},\"month-short\":{displayName:\"mês\",relative:{0:\"este mês\",1:\"próximo mês\",\"-1\":\"mês passado\"},relativeTime:{future:{one:\"dentro de {0} mês\",other:\"dentro de {0} meses\"},past:{one:\"há {0} mês\",other:\"há {0} meses\"}}},day:{displayName:\"dia\",relative:{0:\"hoje\",1:\"amanhã\",2:\"depois de amanhã\",\"-2\":\"anteontem\",\"-1\":\"ontem\"},relativeTime:{future:{one:\"dentro de {0} dia\",other:\"dentro de {0} dias\"},past:{one:\"há {0} dia\",other:\"há {0} dias\"}}},\"day-short\":{displayName:\"dia\",relative:{0:\"hoje\",1:\"amanhã\",2:\"depois de amanhã\",\"-2\":\"anteontem\",\"-1\":\"ontem\"},relativeTime:{future:{one:\"dentro de {0} dia\",other:\"dentro de {0} dias\"},past:{one:\"há {0} dia\",other:\"há {0} dias\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"há {0} hora\",other:\"há {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} h\",other:\"dentro de {0} h\"},past:{one:\"há {0} h\",other:\"há {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"há {0} minuto\",other:\"há {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} min\",other:\"dentro de {0} min\"},past:{one:\"há {0} min\",other:\"há {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"agora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"há {0} segundo\",other:\"há {0} segundos\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"agora\"},relativeTime:{future:{one:\"dentro de {0} s\",other:\"dentro de {0} s\"},past:{one:\"há {0} s\",other:\"há {0} s\"}}}}},{locale:\"pt-CH\",parentLocale:\"pt-PT\"},{locale:\"pt-CV\",parentLocale:\"pt-PT\"},{locale:\"pt-GQ\",parentLocale:\"pt-PT\"},{locale:\"pt-GW\",parentLocale:\"pt-PT\"},{locale:\"pt-LU\",parentLocale:\"pt-PT\"},{locale:\"pt-MO\",parentLocale:\"pt-PT\"},{locale:\"pt-MZ\",parentLocale:\"pt-PT\"},{locale:\"pt-ST\",parentLocale:\"pt-PT\"},{locale:\"pt-TL\",parentLocale:\"pt-PT\"}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.qu=a())}(this,function(){\"use strict\";return[{locale:\"qu\",pluralRuleFunction:function(e,a){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"kunan wata\",1:\"hamuq wata\",\"-1\":\"qayna wata\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"kunan wata\",1:\"hamuq wata\",\"-1\":\"qayna wata\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"kunan killa\",1:\"hamuq killa\",\"-1\":\"qayna killa\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"kunan killa\",1:\"hamuq killa\",\"-1\":\"qayna killa\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"kunan punchaw\",1:\"paqarin\",\"-1\":\"qayna punchaw\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"kunan punchaw\",1:\"paqarin\",\"-1\":\"qayna punchaw\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"kay hora\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"kay hora\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"kay minuto\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"kay minuto\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"qu-BO\",parentLocale:\"qu\"},{locale:\"qu-EC\",parentLocale:\"qu\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ro=t())}(this,function(){\"use strict\";return[{locale:\"ro\",pluralRuleFunction:function(e,t){var a=String(e).split(\".\"),i=!a[1],u=Number(a[0])==e&&a[0].slice(-2);return t?1==e?\"one\":\"other\":1==e&&i?\"one\":!i||0==e||1!=e&&u>=1&&u<=19?\"few\":\"other\"},fields:{year:{displayName:\"an\",relative:{0:\"anul acesta\",1:\"anul viitor\",\"-1\":\"anul trecut\"},relativeTime:{future:{one:\"peste {0} an\",few:\"peste {0} ani\",other:\"peste {0} de ani\"},past:{one:\"acum {0} an\",few:\"acum {0} ani\",other:\"acum {0} de ani\"}}},\"year-short\":{displayName:\"an\",relative:{0:\"anul acesta\",1:\"anul viitor\",\"-1\":\"anul trecut\"},relativeTime:{future:{one:\"peste {0} an\",few:\"peste {0} ani\",other:\"peste {0} de ani\"},past:{one:\"acum {0} an\",few:\"acum {0} ani\",other:\"acum {0} de ani\"}}},month:{displayName:\"lună\",relative:{0:\"luna aceasta\",1:\"luna viitoare\",\"-1\":\"luna trecută\"},relativeTime:{future:{one:\"peste {0} lună\",few:\"peste {0} luni\",other:\"peste {0} de luni\"},past:{one:\"acum {0} lună\",few:\"acum {0} luni\",other:\"acum {0} de luni\"}}},\"month-short\":{displayName:\"lună\",relative:{0:\"luna aceasta\",1:\"luna viitoare\",\"-1\":\"luna trecută\"},relativeTime:{future:{one:\"peste {0} lună\",few:\"peste {0} luni\",other:\"peste {0} luni\"},past:{one:\"acum {0} lună\",few:\"acum {0} luni\",other:\"acum {0} luni\"}}},day:{displayName:\"zi\",relative:{0:\"azi\",1:\"mâine\",2:\"poimâine\",\"-2\":\"alaltăieri\",\"-1\":\"ieri\"},relativeTime:{future:{one:\"peste {0} zi\",few:\"peste {0} zile\",other:\"peste {0} de zile\"},past:{one:\"acum {0} zi\",few:\"acum {0} zile\",other:\"acum {0} de zile\"}}},\"day-short\":{displayName:\"zi\",relative:{0:\"azi\",1:\"mâine\",2:\"poimâine\",\"-2\":\"alaltăieri\",\"-1\":\"ieri\"},relativeTime:{future:{one:\"peste {0} zi\",few:\"peste {0} zile\",other:\"peste {0} de zile\"},past:{one:\"acum {0} zi\",few:\"acum {0} zile\",other:\"acum {0} de zile\"}}},hour:{displayName:\"oră\",relative:{0:\"ora aceasta\"},relativeTime:{future:{one:\"peste {0} oră\",few:\"peste {0} ore\",other:\"peste {0} de ore\"},past:{one:\"acum {0} oră\",few:\"acum {0} ore\",other:\"acum {0} de ore\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"ora aceasta\"},relativeTime:{future:{one:\"peste {0} h\",few:\"peste {0} h\",other:\"peste {0} h\"},past:{one:\"acum {0} h\",few:\"acum {0} h\",other:\"acum {0} h\"}}},minute:{displayName:\"minut\",relative:{0:\"minutul acesta\"},relativeTime:{future:{one:\"peste {0} minut\",few:\"peste {0} minute\",other:\"peste {0} de minute\"},past:{one:\"acum {0} minut\",few:\"acum {0} minute\",other:\"acum {0} de minute\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"minutul acesta\"},relativeTime:{future:{one:\"peste {0} min.\",few:\"peste {0} min.\",other:\"peste {0} min.\"},past:{one:\"acum {0} min.\",few:\"acum {0} min.\",other:\"acum {0} min.\"}}},second:{displayName:\"secundă\",relative:{0:\"acum\"},relativeTime:{future:{one:\"peste {0} secundă\",few:\"peste {0} secunde\",other:\"peste {0} de secunde\"},past:{one:\"acum {0} secundă\",few:\"acum {0} secunde\",other:\"acum {0} de secunde\"}}},\"second-short\":{displayName:\"sec.\",relative:{0:\"acum\"},relativeTime:{future:{one:\"peste {0} sec.\",few:\"peste {0} sec.\",other:\"peste {0} sec.\"},past:{one:\"acum {0} sec.\",few:\"acum {0} sec.\",other:\"acum {0} sec.\"}}}}},{locale:\"ro-MD\",parentLocale:\"ro\"}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ru=a())}(this,function(){\"use strict\";return[{locale:\"ru\",pluralRuleFunction:function(e,a){var t=String(e).split(\".\"),r=t[0],o=!t[1],n=r.slice(-1),l=r.slice(-2);return a?\"other\":o&&1==n&&11!=l?\"one\":o&&n>=2&&n<=4&&(l<12||l>14)?\"few\":o&&0==n||o&&n>=5&&n<=9||o&&l>=11&&l<=14?\"many\":\"other\"},fields:{year:{displayName:\"год\",relative:{0:\"в этом году\",1:\"в следующем году\",\"-1\":\"в прошлом году\"},relativeTime:{future:{one:\"через {0} год\",few:\"через {0} года\",many:\"через {0} лет\",other:\"через {0} года\"},past:{one:\"{0} год назад\",few:\"{0} года назад\",many:\"{0} лет назад\",other:\"{0} года назад\"}}},\"year-short\":{displayName:\"г.\",relative:{0:\"в этом г.\",1:\"в след. г.\",\"-1\":\"в прошлом г.\"},relativeTime:{future:{one:\"через {0} г.\",few:\"через {0} г.\",many:\"через {0} л.\",other:\"через {0} г.\"},past:{one:\"{0} г. назад\",few:\"{0} г. назад\",many:\"{0} л. назад\",other:\"{0} г. назад\"}}},month:{displayName:\"месяц\",relative:{0:\"в этом месяце\",1:\"в следующем месяце\",\"-1\":\"в прошлом месяце\"},relativeTime:{future:{one:\"через {0} месяц\",few:\"через {0} месяца\",many:\"через {0} месяцев\",other:\"через {0} месяца\"},past:{one:\"{0} месяц назад\",few:\"{0} месяца назад\",many:\"{0} месяцев назад\",other:\"{0} месяца назад\"}}},\"month-short\":{displayName:\"мес.\",relative:{0:\"в этом мес.\",1:\"в следующем мес.\",\"-1\":\"в прошлом мес.\"},relativeTime:{future:{one:\"через {0} мес.\",few:\"через {0} мес.\",many:\"через {0} мес.\",other:\"через {0} мес.\"},past:{one:\"{0} мес. назад\",few:\"{0} мес. назад\",many:\"{0} мес. назад\",other:\"{0} мес. назад\"}}},day:{displayName:\"день\",relative:{0:\"сегодня\",1:\"завтра\",2:\"послезавтра\",\"-2\":\"позавчера\",\"-1\":\"вчера\"},relativeTime:{future:{one:\"через {0} день\",few:\"через {0} дня\",many:\"через {0} дней\",other:\"через {0} дня\"},past:{one:\"{0} день назад\",few:\"{0} дня назад\",many:\"{0} дней назад\",other:\"{0} дня назад\"}}},\"day-short\":{displayName:\"дн.\",relative:{0:\"сегодня\",1:\"завтра\",2:\"послезавтра\",\"-2\":\"позавчера\",\"-1\":\"вчера\"},relativeTime:{future:{one:\"через {0} дн.\",few:\"через {0} дн.\",many:\"через {0} дн.\",other:\"через {0} дн.\"},past:{one:\"{0} дн. назад\",few:\"{0} дн. назад\",many:\"{0} дн. назад\",other:\"{0} дн. назад\"}}},hour:{displayName:\"час\",relative:{0:\"в этот час\"},relativeTime:{future:{one:\"через {0} час\",few:\"через {0} часа\",many:\"через {0} часов\",other:\"через {0} часа\"},past:{one:\"{0} час назад\",few:\"{0} часа назад\",many:\"{0} часов назад\",other:\"{0} часа назад\"}}},\"hour-short\":{displayName:\"ч\",relative:{0:\"в этот час\"},relativeTime:{future:{one:\"через {0} ч.\",few:\"через {0} ч.\",many:\"через {0} ч.\",other:\"через {0} ч.\"},past:{one:\"{0} ч. назад\",few:\"{0} ч. назад\",many:\"{0} ч. назад\",other:\"{0} ч. назад\"}}},minute:{displayName:\"минута\",relative:{0:\"в эту минуту\"},relativeTime:{future:{one:\"через {0} минуту\",few:\"через {0} минуты\",many:\"через {0} минут\",other:\"через {0} минуты\"},past:{one:\"{0} минуту назад\",few:\"{0} минуты назад\",many:\"{0} минут назад\",other:\"{0} минуты назад\"}}},\"minute-short\":{displayName:\"мин.\",relative:{0:\"в эту минуту\"},relativeTime:{future:{one:\"через {0} мин.\",few:\"через {0} мин.\",many:\"через {0} мин.\",other:\"через {0} мин.\"},past:{one:\"{0} мин. назад\",few:\"{0} мин. назад\",many:\"{0} мин. назад\",other:\"{0} мин. назад\"}}},second:{displayName:\"секунда\",relative:{0:\"сейчас\"},relativeTime:{future:{one:\"через {0} секунду\",few:\"через {0} секунды\",many:\"через {0} секунд\",other:\"через {0} секунды\"},past:{one:\"{0} секунду назад\",few:\"{0} секунды назад\",many:\"{0} секунд назад\",other:\"{0} секунды назад\"}}},\"second-short\":{displayName:\"сек.\",relative:{0:\"сейчас\"},relativeTime:{future:{one:\"через {0} сек.\",few:\"через {0} сек.\",many:\"через {0} сек.\",other:\"через {0} сек.\"},past:{one:\"{0} сек. назад\",few:\"{0} сек. назад\",many:\"{0} сек. назад\",other:\"{0} сек. назад\"}}}}},{locale:\"ru-BY\",parentLocale:\"ru\"},{locale:\"ru-KG\",parentLocale:\"ru\"},{locale:\"ru-KZ\",parentLocale:\"ru\"},{locale:\"ru-MD\",parentLocale:\"ru\"},{locale:\"ru-UA\",parentLocale:\"ru\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.sl=t())}(this,function(){\"use strict\";return[{locale:\"sl\",pluralRuleFunction:function(e,t){var r=String(e).split(\".\"),o=r[0],a=!r[1],i=o.slice(-2);return t?\"other\":a&&1==i?\"one\":a&&2==i?\"two\":a&&(3==i||4==i)||!a?\"few\":\"other\"},fields:{year:{displayName:\"leto\",relative:{0:\"letos\",1:\"naslednje leto\",\"-1\":\"lani\"},relativeTime:{future:{one:\"čez {0} leto\",two:\"čez {0} leti\",few:\"čez {0} leta\",other:\"čez {0} let\"},past:{one:\"pred {0} letom\",two:\"pred {0} letoma\",few:\"pred {0} leti\",other:\"pred {0} leti\"}}},\"year-short\":{displayName:\"leto\",relative:{0:\"letos\",1:\"naslednje leto\",\"-1\":\"lani\"},relativeTime:{future:{one:\"čez {0} leto\",two:\"čez {0} leti\",few:\"čez {0} leta\",other:\"čez {0} let\"},past:{one:\"pred {0} letom\",two:\"pred {0} letoma\",few:\"pred {0} leti\",other:\"pred {0} leti\"}}},month:{displayName:\"mesec\",relative:{0:\"ta mesec\",1:\"naslednji mesec\",\"-1\":\"prejšnji mesec\"},relativeTime:{future:{one:\"čez {0} mesec\",two:\"čez {0} meseca\",few:\"čez {0} mesece\",other:\"čez {0} mesecev\"},past:{one:\"pred {0} mesecem\",two:\"pred {0} mesecema\",few:\"pred {0} meseci\",other:\"pred {0} meseci\"}}},\"month-short\":{displayName:\"mes.\",relative:{0:\"ta mesec\",1:\"naslednji mesec\",\"-1\":\"prejšnji mesec\"},relativeTime:{future:{one:\"čez {0} mes.\",two:\"čez {0} mes.\",few:\"čez {0} mes.\",other:\"čez {0} mes.\"},past:{one:\"pred {0} mes.\",two:\"pred {0} mes.\",few:\"pred {0} mes.\",other:\"pred {0} mes.\"}}},day:{displayName:\"dan\",relative:{0:\"danes\",1:\"jutri\",2:\"pojutrišnjem\",\"-2\":\"predvčerajšnjim\",\"-1\":\"včeraj\"},relativeTime:{future:{one:\"čez {0} dan\",two:\"čez {0} dneva\",few:\"čez {0} dni\",other:\"čez {0} dni\"},past:{one:\"pred {0} dnevom\",two:\"pred {0} dnevoma\",few:\"pred {0} dnevi\",other:\"pred {0} dnevi\"}}},\"day-short\":{displayName:\"dan\",relative:{0:\"danes\",1:\"jutri\",2:\"pojutrišnjem\",\"-2\":\"predvčerajšnjim\",\"-1\":\"včeraj\"},relativeTime:{future:{one:\"čez {0} dan\",two:\"čez {0} dneva\",few:\"čez {0} dni\",other:\"čez {0} dni\"},past:{one:\"pred {0} dnevom\",two:\"pred {0} dnevoma\",few:\"pred {0} dnevi\",other:\"pred {0} dnevi\"}}},hour:{displayName:\"ura\",relative:{0:\"v tej uri\"},relativeTime:{future:{one:\"čez {0} uro\",two:\"čez {0} uri\",few:\"čez {0} ure\",other:\"čez {0} ur\"},past:{one:\"pred {0} uro\",two:\"pred {0} urama\",few:\"pred {0} urami\",other:\"pred {0} urami\"}}},\"hour-short\":{displayName:\"ura\",relative:{0:\"v tej uri\"},relativeTime:{future:{one:\"čez {0} uro\",two:\"čez {0} uri\",few:\"čez {0} ure\",other:\"čez {0} ur\"},past:{one:\"pred {0} uro\",two:\"pred {0} urama\",few:\"pred {0} urami\",other:\"pred {0} urami\"}}},minute:{displayName:\"minuta\",relative:{0:\"to minuto\"},relativeTime:{future:{one:\"čez {0} minuto\",two:\"čez {0} minuti\",few:\"čez {0} minute\",other:\"čez {0} minut\"},past:{one:\"pred {0} minuto\",two:\"pred {0} minutama\",few:\"pred {0} minutami\",other:\"pred {0} minutami\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"to minuto\"},relativeTime:{future:{one:\"čez {0} min.\",two:\"čez {0} min.\",few:\"čez {0} min.\",other:\"čez {0} min.\"},past:{one:\"pred {0} min.\",two:\"pred {0} min.\",few:\"pred {0} min.\",other:\"pred {0} min.\"}}},second:{displayName:\"sekunda\",relative:{0:\"zdaj\"},relativeTime:{future:{one:\"čez {0} sekundo\",two:\"čez {0} sekundi\",few:\"čez {0} sekunde\",other:\"čez {0} sekund\"},past:{one:\"pred {0} sekundo\",two:\"pred {0} sekundama\",few:\"pred {0} sekundami\",other:\"pred {0} sekundami\"}}},\"second-short\":{displayName:\"sek.\",relative:{0:\"zdaj\"},relativeTime:{future:{one:\"čez {0} s\",two:\"čez {0} s\",few:\"čez {0} s\",other:\"čez {0} s\"},past:{one:\"pred {0} s\",two:\"pred {0} s\",few:\"pred {0} s\",other:\"pred {0} s\"}}}}}]});\n","!function(e,o){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=o():\"function\"==typeof define&&define.amd?define(o):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.sk=o())}(this,function(){\"use strict\";return[{locale:\"sk\",pluralRuleFunction:function(e,o){var r=String(e).split(\".\"),a=r[0],t=!r[1];return o?\"other\":1==e&&t?\"one\":a>=2&&a<=4&&t?\"few\":t?\"other\":\"many\"},fields:{year:{displayName:\"rok\",relative:{0:\"tento rok\",1:\"budúci rok\",\"-1\":\"minulý rok\"},relativeTime:{future:{one:\"o {0} rok\",few:\"o {0} roky\",many:\"o {0} roka\",other:\"o {0} rokov\"},past:{one:\"pred {0} rokom\",few:\"pred {0} rokmi\",many:\"pred {0} roka\",other:\"pred {0} rokmi\"}}},\"year-short\":{displayName:\"r.\",relative:{0:\"tento rok\",1:\"budúci rok\",\"-1\":\"minulý rok\"},relativeTime:{future:{one:\"o {0} r.\",few:\"o {0} r.\",many:\"o {0} r.\",other:\"o {0} r.\"},past:{one:\"pred {0} r.\",few:\"pred {0} r.\",many:\"pred {0} r.\",other:\"pred {0} r.\"}}},month:{displayName:\"mesiac\",relative:{0:\"tento mesiac\",1:\"budúci mesiac\",\"-1\":\"minulý mesiac\"},relativeTime:{future:{one:\"o {0} mesiac\",few:\"o {0} mesiace\",many:\"o {0} mesiaca\",other:\"o {0} mesiacov\"},past:{one:\"pred {0} mesiacom\",few:\"pred {0} mesiacmi\",many:\"pred {0} mesiaca\",other:\"pred {0} mesiacmi\"}}},\"month-short\":{displayName:\"mes.\",relative:{0:\"tento mes.\",1:\"budúci mes.\",\"-1\":\"minulý mes.\"},relativeTime:{future:{one:\"o {0} mes.\",few:\"o {0} mes.\",many:\"o {0} mes.\",other:\"o {0} mes.\"},past:{one:\"pred {0} mes.\",few:\"pred {0} mes.\",many:\"pred {0} mes.\",other:\"pred {0} mes.\"}}},day:{displayName:\"deň\",relative:{0:\"dnes\",1:\"zajtra\",2:\"pozajtra\",\"-2\":\"predvčerom\",\"-1\":\"včera\"},relativeTime:{future:{one:\"o {0} deň\",few:\"o {0} dni\",many:\"o {0} dňa\",other:\"o {0} dní\"},past:{one:\"pred {0} dňom\",few:\"pred {0} dňami\",many:\"pred {0} dňa\",other:\"pred {0} dňami\"}}},\"day-short\":{displayName:\"d.\",relative:{0:\"dnes\",1:\"zajtra\",2:\"pozajtra\",\"-2\":\"predvčerom\",\"-1\":\"včera\"},relativeTime:{future:{one:\"o {0} d.\",few:\"o {0} d.\",many:\"o {0} d.\",other:\"o {0} d.\"},past:{one:\"pred {0} d.\",few:\"pred {0} d.\",many:\"pred {0} d.\",other:\"pred {0} d.\"}}},hour:{displayName:\"hodina\",relative:{0:\"v tejto hodine\"},relativeTime:{future:{one:\"o {0} hodinu\",few:\"o {0} hodiny\",many:\"o {0} hodiny\",other:\"o {0} hodín\"},past:{one:\"pred {0} hodinou\",few:\"pred {0} hodinami\",many:\"pred {0} hodinou\",other:\"pred {0} hodinami\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"v tejto hodine\"},relativeTime:{future:{one:\"o {0} h\",few:\"o {0} h\",many:\"o {0} h\",other:\"o {0} h\"},past:{one:\"pred {0} h\",few:\"pred {0} h\",many:\"pred {0} h\",other:\"pred {0} h\"}}},minute:{displayName:\"minúta\",relative:{0:\"v tejto minúte\"},relativeTime:{future:{one:\"o {0} minútu\",few:\"o {0} minúty\",many:\"o {0} minúty\",other:\"o {0} minút\"},past:{one:\"pred {0} minútou\",few:\"pred {0} minútami\",many:\"pred {0} minúty\",other:\"pred {0} minútami\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"v tejto minúte\"},relativeTime:{future:{one:\"o {0} min\",few:\"o {0} min\",many:\"o {0} min\",other:\"o {0} min\"},past:{one:\"pred {0} min\",few:\"pred {0} min\",many:\"pred {0} min\",other:\"pred {0} min\"}}},second:{displayName:\"sekunda\",relative:{0:\"teraz\"},relativeTime:{future:{one:\"o {0} sekundu\",few:\"o {0} sekundy\",many:\"o {0} sekundy\",other:\"o {0} sekúnd\"},past:{one:\"pred {0} sekundou\",few:\"pred {0} sekundami\",many:\"pred {0} sekundy\",other:\"pred {0} sekundami\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"teraz\"},relativeTime:{future:{one:\"o {0} s\",few:\"o {0} s\",many:\"o {0} s\",other:\"o {0} s\"},past:{one:\"pred {0} s\",few:\"pred {0} s\",many:\"pred {0} s\",other:\"pred {0} s\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.sr=a())}(this,function(){\"use strict\";return[{locale:\"sr\",pluralRuleFunction:function(e,a){var r=String(e).split(\".\"),t=r[0],o=r[1]||\"\",i=!r[1],s=t.slice(-1),n=t.slice(-2),l=o.slice(-1),p=o.slice(-2);return a?\"other\":i&&1==s&&11!=n||1==l&&11!=p?\"one\":i&&s>=2&&s<=4&&(n<12||n>14)||l>=2&&l<=4&&(p<12||p>14)?\"few\":\"other\"},fields:{year:{displayName:\"година\",relative:{0:\"ове године\",1:\"следеће године\",\"-1\":\"прошле године\"},relativeTime:{future:{one:\"за {0} годину\",few:\"за {0} године\",other:\"за {0} година\"},past:{one:\"пре {0} године\",few:\"пре {0} године\",other:\"пре {0} година\"}}},\"year-short\":{displayName:\"год.\",relative:{0:\"ове год.\",1:\"следеће год.\",\"-1\":\"прошле год.\"},relativeTime:{future:{one:\"за {0} год.\",few:\"за {0} год.\",other:\"за {0} год.\"},past:{one:\"пре {0} год.\",few:\"пре {0} год.\",other:\"пре {0} год.\"}}},month:{displayName:\"месец\",relative:{0:\"овог месеца\",1:\"следећег месеца\",\"-1\":\"прошлог месеца\"},relativeTime:{future:{one:\"за {0} месец\",few:\"за {0} месеца\",other:\"за {0} месеци\"},past:{one:\"пре {0} месеца\",few:\"пре {0} месеца\",other:\"пре {0} месеци\"}}},\"month-short\":{displayName:\"мес.\",relative:{0:\"овог мес.\",1:\"следећег мес.\",\"-1\":\"прошлог мес.\"},relativeTime:{future:{one:\"за {0} мес.\",few:\"за {0} мес.\",other:\"за {0} мес.\"},past:{one:\"пре {0} мес.\",few:\"пре {0} мес.\",other:\"пре {0} мес.\"}}},day:{displayName:\"дан\",relative:{0:\"данас\",1:\"сутра\",2:\"прекосутра\",\"-2\":\"прекјуче\",\"-1\":\"јуче\"},relativeTime:{future:{one:\"за {0} дан\",few:\"за {0} дана\",other:\"за {0} дана\"},past:{one:\"пре {0} дана\",few:\"пре {0} дана\",other:\"пре {0} дана\"}}},\"day-short\":{displayName:\"д.\",relative:{0:\"данас\",1:\"сутра\",2:\"прекосутра\",\"-2\":\"прекјуче\",\"-1\":\"јуче\"},relativeTime:{future:{one:\"за {0} д.\",few:\"за {0} д.\",other:\"за {0} д.\"},past:{one:\"пре {0} д.\",few:\"пре {0} д.\",other:\"пре {0} д.\"}}},hour:{displayName:\"сат\",relative:{0:\"овог сата\"},relativeTime:{future:{one:\"за {0} сат\",few:\"за {0} сата\",other:\"за {0} сати\"},past:{one:\"пре {0} сата\",few:\"пре {0} сата\",other:\"пре {0} сати\"}}},\"hour-short\":{displayName:\"ч.\",relative:{0:\"овог сата\"},relativeTime:{future:{one:\"за {0} ч.\",few:\"за {0} ч.\",other:\"за {0} ч.\"},past:{one:\"пре {0} ч.\",few:\"пре {0} ч.\",other:\"пре {0} ч.\"}}},minute:{displayName:\"минут\",relative:{0:\"овог минута\"},relativeTime:{future:{one:\"за {0} минут\",few:\"за {0} минута\",other:\"за {0} минута\"},past:{one:\"пре {0} минута\",few:\"пре {0} минута\",other:\"пре {0} минута\"}}},\"minute-short\":{displayName:\"мин.\",relative:{0:\"овог минута\"},relativeTime:{future:{one:\"за {0} мин.\",few:\"за {0} мин.\",other:\"за {0} мин.\"},past:{one:\"пре {0} мин.\",few:\"пре {0} мин.\",other:\"пре {0} мин.\"}}},second:{displayName:\"секунд\",relative:{0:\"сада\"},relativeTime:{future:{one:\"за {0} секунду\",few:\"за {0} секунде\",other:\"за {0} секунди\"},past:{one:\"пре {0} секунде\",few:\"пре {0} секунде\",other:\"пре {0} секунди\"}}},\"second-short\":{displayName:\"сек.\",relative:{0:\"сада\"},relativeTime:{future:{one:\"за {0} сек.\",few:\"за {0} сек.\",other:\"за {0} сек.\"},past:{one:\"пре {0} сек.\",few:\"пре {0} сек.\",other:\"пре {0} сек.\"}}}}},{locale:\"sr-Cyrl\",parentLocale:\"sr\"},{locale:\"sr-Cyrl-BA\",parentLocale:\"sr-Cyrl\"},{locale:\"sr-Cyrl-ME\",parentLocale:\"sr-Cyrl\"},{locale:\"sr-Cyrl-XK\",parentLocale:\"sr-Cyrl\"},{locale:\"sr-Latn\",pluralRuleFunction:function(e,a){return\"other\"},fields:{year:{displayName:\"godina\",relative:{0:\"ove godine\",1:\"sledeće godine\",\"-1\":\"prošle godine\"},relativeTime:{future:{one:\"za {0} godinu\",few:\"za {0} godine\",other:\"za {0} godina\"},past:{one:\"pre {0} godine\",few:\"pre {0} godine\",other:\"pre {0} godina\"}}},\"year-short\":{displayName:\"god.\",relative:{0:\"ove god.\",1:\"sledeće god.\",\"-1\":\"prošle god.\"},relativeTime:{future:{one:\"za {0} god.\",few:\"za {0} god.\",other:\"za {0} god.\"},past:{one:\"pre {0} god.\",few:\"pre {0} god.\",other:\"pre {0} god.\"}}},month:{displayName:\"mesec\",relative:{0:\"ovog meseca\",1:\"sledećeg meseca\",\"-1\":\"prošlog meseca\"},relativeTime:{future:{one:\"za {0} mesec\",few:\"za {0} meseca\",other:\"za {0} meseci\"},past:{one:\"pre {0} meseca\",few:\"pre {0} meseca\",other:\"pre {0} meseci\"}}},\"month-short\":{displayName:\"mes.\",relative:{0:\"ovog mes.\",1:\"sledećeg mes.\",\"-1\":\"prošlog mes.\"},relativeTime:{future:{one:\"za {0} mes.\",few:\"za {0} mes.\",other:\"za {0} mes.\"},past:{one:\"pre {0} mes.\",few:\"pre {0} mes.\",other:\"pre {0} mes.\"}}},day:{displayName:\"dan\",relative:{0:\"danas\",1:\"sutra\",2:\"prekosutra\",\"-2\":\"prekjuče\",\"-1\":\"juče\"},relativeTime:{future:{one:\"za {0} dan\",few:\"za {0} dana\",other:\"za {0} dana\"},past:{one:\"pre {0} dana\",few:\"pre {0} dana\",other:\"pre {0} dana\"}}},\"day-short\":{displayName:\"d.\",relative:{0:\"danas\",1:\"sutra\",2:\"prekosutra\",\"-2\":\"prekjuče\",\"-1\":\"juče\"},relativeTime:{future:{one:\"za {0} d.\",few:\"za {0} d.\",other:\"za {0} d.\"},past:{one:\"pre {0} d.\",few:\"pre {0} d.\",other:\"pre {0} d.\"}}},hour:{displayName:\"sat\",relative:{0:\"ovog sata\"},relativeTime:{future:{one:\"za {0} sat\",few:\"za {0} sata\",other:\"za {0} sati\"},past:{one:\"pre {0} sata\",few:\"pre {0} sata\",other:\"pre {0} sati\"}}},\"hour-short\":{displayName:\"č.\",relative:{0:\"ovog sata\"},relativeTime:{future:{one:\"za {0} č.\",few:\"za {0} č.\",other:\"za {0} č.\"},past:{one:\"pre {0} č.\",few:\"pre {0} č.\",other:\"pre {0} č.\"}}},minute:{displayName:\"minut\",relative:{0:\"ovog minuta\"},relativeTime:{future:{one:\"za {0} minut\",few:\"za {0} minuta\",other:\"za {0} minuta\"},past:{one:\"pre {0} minuta\",few:\"pre {0} minuta\",other:\"pre {0} minuta\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"ovog minuta\"},relativeTime:{future:{one:\"za {0} min.\",few:\"za {0} min.\",other:\"za {0} min.\"},past:{one:\"pre {0} min.\",few:\"pre {0} min.\",other:\"pre {0} min.\"}}},second:{displayName:\"sekund\",relative:{0:\"sada\"},relativeTime:{future:{one:\"za {0} sekundu\",few:\"za {0} sekunde\",other:\"za {0} sekundi\"},past:{one:\"pre {0} sekunde\",few:\"pre {0} sekunde\",other:\"pre {0} sekundi\"}}},\"second-short\":{displayName:\"sek.\",relative:{0:\"sada\"},relativeTime:{future:{one:\"za {0} sek.\",few:\"za {0} sek.\",other:\"za {0} sek.\"},past:{one:\"pre {0} sek.\",few:\"pre {0} sek.\",other:\"pre {0} sek.\"}}}}},{locale:\"sr-Latn-BA\",parentLocale:\"sr-Latn\"},{locale:\"sr-Latn-ME\",parentLocale:\"sr-Latn\"},{locale:\"sr-Latn-XK\",parentLocale:\"sr-Latn\"}]});\n","!function(e,r){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(r):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.sv=r())}(this,function(){\"use strict\";return[{locale:\"sv\",pluralRuleFunction:function(e,r){var t=String(e).split(\".\"),a=!t[1],n=Number(t[0])==e,o=n&&t[0].slice(-1),m=n&&t[0].slice(-2);return r?1!=o&&2!=o||11==m||12==m?\"other\":\"one\":1==e&&a?\"one\":\"other\"},fields:{year:{displayName:\"år\",relative:{0:\"i år\",1:\"nästa år\",\"-1\":\"i fjol\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"för {0} år sedan\",other:\"för {0} år sedan\"}}},\"year-short\":{displayName:\"år\",relative:{0:\"i år\",1:\"nästa år\",\"-1\":\"i fjol\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"för {0} år sen\",other:\"för {0} år sen\"}}},month:{displayName:\"månad\",relative:{0:\"denna månad\",1:\"nästa månad\",\"-1\":\"förra månaden\"},relativeTime:{future:{one:\"om {0} månad\",other:\"om {0} månader\"},past:{one:\"för {0} månad sedan\",other:\"för {0} månader sedan\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"denna mån.\",1:\"nästa mån.\",\"-1\":\"förra mån.\"},relativeTime:{future:{one:\"om {0} mån.\",other:\"om {0} mån.\"},past:{one:\"för {0} mån. sen\",other:\"för {0} mån. sen\"}}},day:{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgon\",2:\"i övermorgon\",\"-2\":\"i förrgår\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} dag\",other:\"om {0} dagar\"},past:{one:\"för {0} dag sedan\",other:\"för {0} dagar sedan\"}}},\"day-short\":{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgon\",2:\"i övermorgon\",\"-2\":\"i förrgår\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} d\",other:\"om {0} d\"},past:{one:\"för {0} d sedan\",other:\"för {0} d sedan\"}}},hour:{displayName:\"timme\",relative:{0:\"denna timme\"},relativeTime:{future:{one:\"om {0} timme\",other:\"om {0} timmar\"},past:{one:\"för {0} timme sedan\",other:\"för {0} timmar sedan\"}}},\"hour-short\":{displayName:\"tim\",relative:{0:\"denna timme\"},relativeTime:{future:{one:\"om {0} tim\",other:\"om {0} tim\"},past:{one:\"för {0} tim sedan\",other:\"för {0} tim sedan\"}}},minute:{displayName:\"minut\",relative:{0:\"denna minut\"},relativeTime:{future:{one:\"om {0} minut\",other:\"om {0} minuter\"},past:{one:\"för {0} minut sedan\",other:\"för {0} minuter sedan\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"denna minut\"},relativeTime:{future:{one:\"om {0} min\",other:\"om {0} min\"},past:{one:\"för {0} min sen\",other:\"för {0} min sen\"}}},second:{displayName:\"sekund\",relative:{0:\"nu\"},relativeTime:{future:{one:\"om {0} sekund\",other:\"om {0} sekunder\"},past:{one:\"för {0} sekund sedan\",other:\"för {0} sekunder sedan\"}}},\"second-short\":{displayName:\"sek\",relative:{0:\"nu\"},relativeTime:{future:{one:\"om {0} sek\",other:\"om {0} sek\"},past:{one:\"för {0} s sen\",other:\"för {0} s sen\"}}}}},{locale:\"sv-AX\",parentLocale:\"sv\"},{locale:\"sv-FI\",parentLocale:\"sv\"}]});\n","!function(a,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(a.ReactIntlLocaleData=a.ReactIntlLocaleData||{},a.ReactIntlLocaleData.sw=e())}(this,function(){\"use strict\";return[{locale:\"sw\",pluralRuleFunction:function(a,e){var i=!String(a).split(\".\")[1];return e?\"other\":1==a&&i?\"one\":\"other\"},fields:{year:{displayName:\"mwaka\",relative:{0:\"mwaka huu\",1:\"mwaka ujao\",\"-1\":\"mwaka uliopita\"},relativeTime:{future:{one:\"baada ya mwaka {0}\",other:\"baada ya miaka {0}\"},past:{one:\"mwaka {0} uliopita\",other:\"miaka {0} iliyopita\"}}},\"year-short\":{displayName:\"mwaka\",relative:{0:\"mwaka huu\",1:\"mwaka ujao\",\"-1\":\"mwaka uliopita\"},relativeTime:{future:{one:\"baada ya mwaka {0}\",other:\"baada ya miaka {0}\"},past:{one:\"mwaka {0} uliopita\",other:\"miaka {0} iliyopita\"}}},month:{displayName:\"mwezi\",relative:{0:\"mwezi huu\",1:\"mwezi ujao\",\"-1\":\"mwezi uliopita\"},relativeTime:{future:{one:\"baada ya mwezi {0}\",other:\"baada ya miezi {0}\"},past:{one:\"mwezi {0} uliopita\",other:\"miezi {0} iliyopita\"}}},\"month-short\":{displayName:\"mwezi\",relative:{0:\"mwezi huu\",1:\"mwezi ujao\",\"-1\":\"mwezi uliopita\"},relativeTime:{future:{one:\"baada ya mwezi {0}\",other:\"baada ya miezi {0}\"},past:{one:\"mwezi {0} uliopita\",other:\"miezi {0} iliyopita\"}}},day:{displayName:\"siku\",relative:{0:\"leo\",1:\"kesho\",2:\"kesho kutwa\",\"-2\":\"juzi\",\"-1\":\"jana\"},relativeTime:{future:{one:\"baada ya siku {0}\",other:\"baada ya siku {0}\"},past:{one:\"siku {0} iliyopita\",other:\"siku {0} zilizopita\"}}},\"day-short\":{displayName:\"siku\",relative:{0:\"leo\",1:\"kesho\",2:\"kesho kutwa\",\"-2\":\"juzi\",\"-1\":\"jana\"},relativeTime:{future:{one:\"baada ya siku {0}\",other:\"baada ya siku {0}\"},past:{one:\"siku {0} iliyopita\",other:\"siku {0} zilizopita\"}}},hour:{displayName:\"saa\",relative:{0:\"saa hii\"},relativeTime:{future:{one:\"baada ya saa {0}\",other:\"baada ya saa {0}\"},past:{one:\"saa {0} iliyopita\",other:\"saa {0} zilizopita\"}}},\"hour-short\":{displayName:\"saa\",relative:{0:\"saa hii\"},relativeTime:{future:{one:\"baada ya saa {0}\",other:\"baada ya saa {0}\"},past:{one:\"saa {0} iliyopita\",other:\"saa {0} zilizopita\"}}},minute:{displayName:\"dakika\",relative:{0:\"dakika hii\"},relativeTime:{future:{one:\"baada ya dakika {0}\",other:\"baada ya dakika {0}\"},past:{one:\"dakika {0} iliyopita\",other:\"dakika {0} zilizopita\"}}},\"minute-short\":{displayName:\"dak\",relative:{0:\"dakika hii\"},relativeTime:{future:{one:\"baada ya dakika {0}\",other:\"baada ya dakika {0}\"},past:{one:\"dakika {0} iliyopita\",other:\"dakika {0} zilizopita\"}}},second:{displayName:\"sekunde\",relative:{0:\"sasa hivi\"},relativeTime:{future:{one:\"baada ya sekunde {0}\",other:\"baada ya sekunde {0}\"},past:{one:\"Sekunde {0} iliyopita\",other:\"Sekunde {0} zilizopita\"}}},\"second-short\":{displayName:\"sek\",relative:{0:\"sasa hivi\"},relativeTime:{future:{one:\"baada ya sekunde {0}\",other:\"baada ya sekunde {0}\"},past:{one:\"sekunde {0} iliyopita\",other:\"sekunde {0} zilizopita\"}}}}},{locale:\"sw-CD\",parentLocale:\"sw\"},{locale:\"sw-KE\",parentLocale:\"sw\"},{locale:\"sw-UG\",parentLocale:\"sw\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.th=t())}(this,function(){\"use strict\";return[{locale:\"th\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"ปี\",relative:{0:\"ปีนี้\",1:\"ปีหน้า\",\"-1\":\"ปีที่แล้ว\"},relativeTime:{future:{other:\"ในอีก {0} ปี\"},past:{other:\"{0} ปีที่แล้ว\"}}},\"year-short\":{displayName:\"ปี\",relative:{0:\"ปีนี้\",1:\"ปีหน้า\",\"-1\":\"ปีที่แล้ว\"},relativeTime:{future:{other:\"ใน {0} ปี\"},past:{other:\"{0} ปีที่แล้ว\"}}},month:{displayName:\"เดือน\",relative:{0:\"เดือนนี้\",1:\"เดือนหน้า\",\"-1\":\"เดือนที่แล้ว\"},relativeTime:{future:{other:\"ในอีก {0} เดือน\"},past:{other:\"{0} เดือนที่ผ่านมา\"}}},\"month-short\":{displayName:\"เดือน\",relative:{0:\"เดือนนี้\",1:\"เดือนหน้า\",\"-1\":\"เดือนที่แล้ว\"},relativeTime:{future:{other:\"ใน {0} เดือน\"},past:{other:\"{0} เดือนที่แล้ว\"}}},day:{displayName:\"วัน\",relative:{0:\"วันนี้\",1:\"พรุ่งนี้\",2:\"มะรืนนี้\",\"-2\":\"เมื่อวานซืน\",\"-1\":\"เมื่อวาน\"},relativeTime:{future:{other:\"ในอีก {0} วัน\"},past:{other:\"{0} วันที่ผ่านมา\"}}},\"day-short\":{displayName:\"วัน\",relative:{0:\"วันนี้\",1:\"พรุ่งนี้\",2:\"มะรืนนี้\",\"-2\":\"เมื่อวานซืน\",\"-1\":\"เมื่อวาน\"},relativeTime:{future:{other:\"ใน {0} วัน\"},past:{other:\"{0} วันที่แล้ว\"}}},hour:{displayName:\"ชั่วโมง\",relative:{0:\"ชั่วโมงนี้\"},relativeTime:{future:{other:\"ในอีก {0} ชั่วโมง\"},past:{other:\"{0} ชั่วโมงที่ผ่านมา\"}}},\"hour-short\":{displayName:\"ชม.\",relative:{0:\"ชั่วโมงนี้\"},relativeTime:{future:{other:\"ใน {0} ชม.\"},past:{other:\"{0} ชม. ที่แล้ว\"}}},minute:{displayName:\"นาที\",relative:{0:\"นาทีนี้\"},relativeTime:{future:{other:\"ในอีก {0} นาที\"},past:{other:\"{0} นาทีที่ผ่านมา\"}}},\"minute-short\":{displayName:\"น.\",relative:{0:\"นาทีนี้\"},relativeTime:{future:{other:\"ใน {0} นาที\"},past:{other:\"{0} นาทีที่แล้ว\"}}},second:{displayName:\"วินาที\",relative:{0:\"ขณะนี้\"},relativeTime:{future:{other:\"ในอีก {0} วินาที\"},past:{other:\"{0} วินาทีที่ผ่านมา\"}}},\"second-short\":{displayName:\"วิ\",relative:{0:\"ขณะนี้\"},relativeTime:{future:{other:\"ใน {0} วินาที\"},past:{other:\"{0} วินาทีที่แล้ว\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.tr=a())}(this,function(){\"use strict\";return[{locale:\"tr\",pluralRuleFunction:function(e,a){return a?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"yıl\",relative:{0:\"bu yıl\",1:\"gelecek yıl\",\"-1\":\"geçen yıl\"},relativeTime:{future:{one:\"{0} yıl sonra\",other:\"{0} yıl sonra\"},past:{one:\"{0} yıl önce\",other:\"{0} yıl önce\"}}},\"year-short\":{displayName:\"yıl\",relative:{0:\"bu yıl\",1:\"gelecek yıl\",\"-1\":\"geçen yıl\"},relativeTime:{future:{one:\"{0} yıl sonra\",other:\"{0} yıl sonra\"},past:{one:\"{0} yıl önce\",other:\"{0} yıl önce\"}}},month:{displayName:\"ay\",relative:{0:\"bu ay\",1:\"gelecek ay\",\"-1\":\"geçen ay\"},relativeTime:{future:{one:\"{0} ay sonra\",other:\"{0} ay sonra\"},past:{one:\"{0} ay önce\",other:\"{0} ay önce\"}}},\"month-short\":{displayName:\"ay\",relative:{0:\"bu ay\",1:\"gelecek ay\",\"-1\":\"geçen ay\"},relativeTime:{future:{one:\"{0} ay sonra\",other:\"{0} ay sonra\"},past:{one:\"{0} ay önce\",other:\"{0} ay önce\"}}},day:{displayName:\"gün\",relative:{0:\"bugün\",1:\"yarın\",2:\"öbür gün\",\"-2\":\"evvelsi gün\",\"-1\":\"dün\"},relativeTime:{future:{one:\"{0} gün sonra\",other:\"{0} gün sonra\"},past:{one:\"{0} gün önce\",other:\"{0} gün önce\"}}},\"day-short\":{displayName:\"gün\",relative:{0:\"bugün\",1:\"yarın\",2:\"öbür gün\",\"-2\":\"evvelsi gün\",\"-1\":\"dün\"},relativeTime:{future:{one:\"{0} gün sonra\",other:\"{0} gün sonra\"},past:{one:\"{0} gün önce\",other:\"{0} gün önce\"}}},hour:{displayName:\"saat\",relative:{0:\"bu saat\"},relativeTime:{future:{one:\"{0} saat sonra\",other:\"{0} saat sonra\"},past:{one:\"{0} saat önce\",other:\"{0} saat önce\"}}},\"hour-short\":{displayName:\"sa.\",relative:{0:\"bu saat\"},relativeTime:{future:{one:\"{0} sa. sonra\",other:\"{0} sa. sonra\"},past:{one:\"{0} sa. önce\",other:\"{0} sa. önce\"}}},minute:{displayName:\"dakika\",relative:{0:\"bu dakika\"},relativeTime:{future:{one:\"{0} dakika sonra\",other:\"{0} dakika sonra\"},past:{one:\"{0} dakika önce\",other:\"{0} dakika önce\"}}},\"minute-short\":{displayName:\"dk.\",relative:{0:\"bu dakika\"},relativeTime:{future:{one:\"{0} dk. sonra\",other:\"{0} dk. sonra\"},past:{one:\"{0} dk. önce\",other:\"{0} dk. önce\"}}},second:{displayName:\"saniye\",relative:{0:\"şimdi\"},relativeTime:{future:{one:\"{0} saniye sonra\",other:\"{0} saniye sonra\"},past:{one:\"{0} saniye önce\",other:\"{0} saniye önce\"}}},\"second-short\":{displayName:\"sn.\",relative:{0:\"şimdi\"},relativeTime:{future:{one:\"{0} sn. sonra\",other:\"{0} sn. sonra\"},past:{one:\"{0} sn. önce\",other:\"{0} sn. önce\"}}}}},{locale:\"tr-CY\",parentLocale:\"tr\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.tn=t())}(this,function(){\"use strict\";return[{locale:\"tn\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.uk=t())}(this,function(){\"use strict\";return[{locale:\"uk\",pluralRuleFunction:function(e,t){var a=String(e).split(\".\"),r=a[0],o=!a[1],n=Number(a[0])==e,i=n&&a[0].slice(-1),m=n&&a[0].slice(-2),l=r.slice(-1),f=r.slice(-2);return t?3==i&&13!=m?\"few\":\"other\":o&&1==l&&11!=f?\"one\":o&&l>=2&&l<=4&&(f<12||f>14)?\"few\":o&&0==l||o&&l>=5&&l<=9||o&&f>=11&&f<=14?\"many\":\"other\"},fields:{year:{displayName:\"рік\",relative:{0:\"цього року\",1:\"наступного року\",\"-1\":\"торік\"},relativeTime:{future:{one:\"через {0} рік\",few:\"через {0} роки\",many:\"через {0} років\",other:\"через {0} року\"},past:{one:\"{0} рік тому\",few:\"{0} роки тому\",many:\"{0} років тому\",other:\"{0} року тому\"}}},\"year-short\":{displayName:\"р.\",relative:{0:\"цього року\",1:\"наступного року\",\"-1\":\"торік\"},relativeTime:{future:{one:\"через {0} р.\",few:\"через {0} р.\",many:\"через {0} р.\",other:\"через {0} р.\"},past:{one:\"{0} р. тому\",few:\"{0} р. тому\",many:\"{0} р. тому\",other:\"{0} р. тому\"}}},month:{displayName:\"місяць\",relative:{0:\"цього місяця\",1:\"наступного місяця\",\"-1\":\"минулого місяця\"},relativeTime:{future:{one:\"через {0} місяць\",few:\"через {0} місяці\",many:\"через {0} місяців\",other:\"через {0} місяця\"},past:{one:\"{0} місяць тому\",few:\"{0} місяці тому\",many:\"{0} місяців тому\",other:\"{0} місяця тому\"}}},\"month-short\":{displayName:\"міс.\",relative:{0:\"цього місяця\",1:\"наступного місяця\",\"-1\":\"минулого місяця\"},relativeTime:{future:{one:\"через {0} міс.\",few:\"через {0} міс.\",many:\"через {0} міс.\",other:\"через {0} міс.\"},past:{one:\"{0} міс. тому\",few:\"{0} міс. тому\",many:\"{0} міс. тому\",other:\"{0} міс. тому\"}}},day:{displayName:\"день\",relative:{0:\"сьогодні\",1:\"завтра\",2:\"післязавтра\",\"-2\":\"позавчора\",\"-1\":\"учора\"},relativeTime:{future:{one:\"через {0} день\",few:\"через {0} дні\",many:\"через {0} днів\",other:\"через {0} дня\"},past:{one:\"{0} день тому\",few:\"{0} дні тому\",many:\"{0} днів тому\",other:\"{0} дня тому\"}}},\"day-short\":{displayName:\"д.\",relative:{0:\"сьогодні\",1:\"завтра\",2:\"післязавтра\",\"-2\":\"позавчора\",\"-1\":\"учора\"},relativeTime:{future:{one:\"через {0} дн.\",few:\"через {0} дн.\",many:\"через {0} дн.\",other:\"через {0} дн.\"},past:{one:\"{0} дн. тому\",few:\"{0} дн. тому\",many:\"{0} дн. тому\",other:\"{0} дн. тому\"}}},hour:{displayName:\"година\",relative:{0:\"цієї години\"},relativeTime:{future:{one:\"через {0} годину\",few:\"через {0} години\",many:\"через {0} годин\",other:\"через {0} години\"},past:{one:\"{0} годину тому\",few:\"{0} години тому\",many:\"{0} годин тому\",other:\"{0} години тому\"}}},\"hour-short\":{displayName:\"год.\",relative:{0:\"цієї години\"},relativeTime:{future:{one:\"через {0} год\",few:\"через {0} год\",many:\"через {0} год\",other:\"через {0} год\"},past:{one:\"{0} год тому\",few:\"{0} год тому\",many:\"{0} год тому\",other:\"{0} год тому\"}}},minute:{displayName:\"хвилина\",relative:{0:\"цієї хвилини\"},relativeTime:{future:{one:\"через {0} хвилину\",few:\"через {0} хвилини\",many:\"через {0} хвилин\",other:\"через {0} хвилини\"},past:{one:\"{0} хвилину тому\",few:\"{0} хвилини тому\",many:\"{0} хвилин тому\",other:\"{0} хвилини тому\"}}},\"minute-short\":{displayName:\"хв.\",relative:{0:\"цієї хвилини\"},relativeTime:{future:{one:\"через {0} хв\",few:\"через {0} хв\",many:\"через {0} хв\",other:\"через {0} хв\"},past:{one:\"{0} хв тому\",few:\"{0} хв тому\",many:\"{0} хв тому\",other:\"{0} хв тому\"}}},second:{displayName:\"секунда\",relative:{0:\"зараз\"},relativeTime:{future:{one:\"через {0} секунду\",few:\"через {0} секунди\",many:\"через {0} секунд\",other:\"через {0} секунди\"},past:{one:\"{0} секунду тому\",few:\"{0} секунди тому\",many:\"{0} секунд тому\",other:\"{0} секунди тому\"}}},\"second-short\":{displayName:\"с\",relative:{0:\"зараз\"},relativeTime:{future:{one:\"через {0} с\",few:\"через {0} с\",many:\"через {0} с\",other:\"через {0} с\"},past:{one:\"{0} с тому\",few:\"{0} с тому\",many:\"{0} с тому\",other:\"{0} с тому\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.uz=t())}(this,function(){\"use strict\";return[{locale:\"uz\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"yil\",relative:{0:\"shu yil\",1:\"keyingi yil\",\"-1\":\"o‘tgan yil\"},relativeTime:{future:{one:\"{0} yildan keyin\",other:\"{0} yildan keyin\"},past:{one:\"{0} yil oldin\",other:\"{0} yil oldin\"}}},\"year-short\":{displayName:\"yil\",relative:{0:\"bu yil\",1:\"keyingi yil\",\"-1\":\"oʻtgan yil\"},relativeTime:{future:{one:\"{0} yildan keyin\",other:\"{0} yildan keyin\"},past:{one:\"{0} yil oldin\",other:\"{0} yil oldin\"}}},month:{displayName:\"oy\",relative:{0:\"shu oy\",1:\"keyingi oy\",\"-1\":\"o‘tgan oy\"},relativeTime:{future:{one:\"{0} oydan keyin\",other:\"{0} oydan keyin\"},past:{one:\"{0} oy oldin\",other:\"{0} oy oldin\"}}},\"month-short\":{displayName:\"oy\",relative:{0:\"shu oy\",1:\"keyingi oy\",\"-1\":\"o‘tgan oy\"},relativeTime:{future:{one:\"{0} oydan keyin\",other:\"{0} oydan keyin\"},past:{one:\"{0} oy oldin\",other:\"{0} oy oldin\"}}},day:{displayName:\"kun\",relative:{0:\"bugun\",1:\"ertaga\",\"-1\":\"kecha\"},relativeTime:{future:{one:\"{0} kundan keyin\",other:\"{0} kundan keyin\"},past:{one:\"{0} kun oldin\",other:\"{0} kun oldin\"}}},\"day-short\":{displayName:\"kun\",relative:{0:\"bugun\",1:\"ertaga\",\"-1\":\"kecha\"},relativeTime:{future:{one:\"{0} kundan keyin\",other:\"{0} kundan keyin\"},past:{one:\"{0} kun oldin\",other:\"{0} kun oldin\"}}},hour:{displayName:\"soat\",relative:{0:\"shu soatda\"},relativeTime:{future:{one:\"{0} soatdan keyin\",other:\"{0} soatdan keyin\"},past:{one:\"{0} soat oldin\",other:\"{0} soat oldin\"}}},\"hour-short\":{displayName:\"soat\",relative:{0:\"shu soatda\"},relativeTime:{future:{one:\"{0} soatdan keyin\",other:\"{0} soatdan keyin\"},past:{one:\"{0} soat oldin\",other:\"{0} soat oldin\"}}},minute:{displayName:\"daqiqa\",relative:{0:\"shu daqiqada\"},relativeTime:{future:{one:\"{0} daqiqadan keyin\",other:\"{0} daqiqadan keyin\"},past:{one:\"{0} daqiqa oldin\",other:\"{0} daqiqa oldin\"}}},\"minute-short\":{displayName:\"daq.\",relative:{0:\"shu daqiqada\"},relativeTime:{future:{one:\"{0} daqiqadan keyin\",other:\"{0} daqiqadan keyin\"},past:{one:\"{0} daqiqa oldin\",other:\"{0} daqiqa oldin\"}}},second:{displayName:\"soniya\",relative:{0:\"hozir\"},relativeTime:{future:{one:\"{0} soniyadan keyin\",other:\"{0} soniyadan keyin\"},past:{one:\"{0} soniya oldin\",other:\"{0} soniya oldin\"}}},\"second-short\":{displayName:\"son.\",relative:{0:\"hozir\"},relativeTime:{future:{one:\"{0} soniyadan keyin\",other:\"{0} soniyadan keyin\"},past:{one:\"{0} soniya oldin\",other:\"{0} soniya oldin\"}}}}},{locale:\"uz-Arab\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"uz-Cyrl\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"Йил\",relative:{0:\"бу йил\",1:\"кейинги йил\",\"-1\":\"ўтган йил\"},relativeTime:{future:{one:\"{0} йилдан сўнг\",other:\"{0} йилдан сўнг\"},past:{one:\"{0} йил аввал\",other:\"{0} йил аввал\"}}},\"year-short\":{displayName:\"Йил\",relative:{0:\"бу йил\",1:\"кейинги йил\",\"-1\":\"ўтган йил\"},relativeTime:{future:{one:\"{0} йилдан сўнг\",other:\"{0} йилдан сўнг\"},past:{one:\"{0} йил аввал\",other:\"{0} йил аввал\"}}},month:{displayName:\"Ой\",relative:{0:\"бу ой\",1:\"кейинги ой\",\"-1\":\"ўтган ой\"},relativeTime:{future:{one:\"{0} ойдан сўнг\",other:\"{0} ойдан сўнг\"},past:{one:\"{0} ой аввал\",other:\"{0} ой аввал\"}}},\"month-short\":{displayName:\"Ой\",relative:{0:\"бу ой\",1:\"кейинги ой\",\"-1\":\"ўтган ой\"},relativeTime:{future:{one:\"{0} ойдан сўнг\",other:\"{0} ойдан сўнг\"},past:{one:\"{0} ой аввал\",other:\"{0} ой аввал\"}}},day:{displayName:\"Кун\",relative:{0:\"бугун\",1:\"эртага\",\"-1\":\"кеча\"},relativeTime:{future:{one:\"{0} кундан сўнг\",other:\"{0} кундан сўнг\"},past:{one:\"{0} кун олдин\",other:\"{0} кун олдин\"}}},\"day-short\":{displayName:\"Кун\",relative:{0:\"бугун\",1:\"эртага\",\"-1\":\"кеча\"},relativeTime:{future:{one:\"{0} кундан сўнг\",other:\"{0} кундан сўнг\"},past:{one:\"{0} кун олдин\",other:\"{0} кун олдин\"}}},hour:{displayName:\"Соат\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"{0} соатдан сўнг\",other:\"{0} соатдан сўнг\"},past:{one:\"{0} соат олдин\",other:\"{0} соат олдин\"}}},\"hour-short\":{displayName:\"Соат\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"{0} соатдан сўнг\",other:\"{0} соатдан сўнг\"},past:{one:\"{0} соат олдин\",other:\"{0} соат олдин\"}}},minute:{displayName:\"Дақиқа\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"{0} дақиқадан сўнг\",other:\"{0} дақиқадан сўнг\"},past:{one:\"{0} дақиқа олдин\",other:\"{0} дақиқа олдин\"}}},\"minute-short\":{displayName:\"Дақиқа\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"{0} дақиқадан сўнг\",other:\"{0} дақиқадан сўнг\"},past:{one:\"{0} дақиқа олдин\",other:\"{0} дақиқа олдин\"}}},second:{displayName:\"Сония\",relative:{0:\"ҳозир\"},relativeTime:{future:{one:\"{0} сониядан сўнг\",other:\"{0} сониядан сўнг\"},past:{one:\"{0} сония олдин\",other:\"{0} сония олдин\"}}},\"second-short\":{displayName:\"Сония\",relative:{0:\"ҳозир\"},relativeTime:{future:{one:\"{0} сониядан сўнг\",other:\"{0} сониядан сўнг\"},past:{one:\"{0} сония олдин\",other:\"{0} сония олдин\"}}}}},{locale:\"uz-Latn\",parentLocale:\"uz\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.vi=t())}(this,function(){\"use strict\";return[{locale:\"vi\",pluralRuleFunction:function(e,t){return t&&1==e?\"one\":\"other\"},fields:{year:{displayName:\"Năm\",relative:{0:\"năm nay\",1:\"năm sau\",\"-1\":\"năm ngoái\"},relativeTime:{future:{other:\"sau {0} năm nữa\"},past:{other:\"{0} năm trước\"}}},\"year-short\":{displayName:\"Năm\",relative:{0:\"năm nay\",1:\"năm sau\",\"-1\":\"năm ngoái\"},relativeTime:{future:{other:\"sau {0} năm nữa\"},past:{other:\"{0} năm trước\"}}},month:{displayName:\"Tháng\",relative:{0:\"tháng này\",1:\"tháng sau\",\"-1\":\"tháng trước\"},relativeTime:{future:{other:\"sau {0} tháng nữa\"},past:{other:\"{0} tháng trước\"}}},\"month-short\":{displayName:\"Tháng\",relative:{0:\"tháng này\",1:\"tháng sau\",\"-1\":\"tháng trước\"},relativeTime:{future:{other:\"sau {0} tháng nữa\"},past:{other:\"{0} tháng trước\"}}},day:{displayName:\"Ngày\",relative:{0:\"Hôm nay\",1:\"Ngày mai\",2:\"Ngày kia\",\"-2\":\"Hôm kia\",\"-1\":\"Hôm qua\"},relativeTime:{future:{other:\"sau {0} ngày nữa\"},past:{other:\"{0} ngày trước\"}}},\"day-short\":{displayName:\"Ngày\",relative:{0:\"Hôm nay\",1:\"Ngày mai\",2:\"Ngày kia\",\"-2\":\"Hôm kia\",\"-1\":\"Hôm qua\"},relativeTime:{future:{other:\"sau {0} ngày nữa\"},past:{other:\"{0} ngày trước\"}}},hour:{displayName:\"Giờ\",relative:{0:\"giờ này\"},relativeTime:{future:{other:\"sau {0} giờ nữa\"},past:{other:\"{0} giờ trước\"}}},\"hour-short\":{displayName:\"Giờ\",relative:{0:\"giờ này\"},relativeTime:{future:{other:\"sau {0} giờ nữa\"},past:{other:\"{0} giờ trước\"}}},minute:{displayName:\"Phút\",relative:{0:\"phút này\"},relativeTime:{future:{other:\"sau {0} phút nữa\"},past:{other:\"{0} phút trước\"}}},\"minute-short\":{displayName:\"Phút\",relative:{0:\"phút này\"},relativeTime:{future:{other:\"sau {0} phút nữa\"},past:{other:\"{0} phút trước\"}}},second:{displayName:\"Giây\",relative:{0:\"bây giờ\"},relativeTime:{future:{other:\"sau {0} giây nữa\"},past:{other:\"{0} giây trước\"}}},\"second-short\":{displayName:\"Giây\",relative:{0:\"bây giờ\"},relativeTime:{future:{other:\"sau {0} giây nữa\"},past:{other:\"{0} giây trước\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.xh=t())}(this,function(){\"use strict\";return[{locale:\"xh\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.zh=t())}(this,function(){\"use strict\";return[{locale:\"zh\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},\"year-short\":{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},month:{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},\"month-short\":{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},day:{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},\"day-short\":{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},hour:{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},\"hour-short\":{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},minute:{displayName:\"分钟\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},\"minute-short\":{displayName:\"分\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},second:{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒钟后\"},past:{other:\"{0}秒钟前\"}}},\"second-short\":{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒后\"},past:{other:\"{0}秒前\"}}}}},{locale:\"zh-Hans\",parentLocale:\"zh\"},{locale:\"zh-Hans-HK\",parentLocale:\"zh-Hans\",fields:{year:{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},\"year-short\":{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},month:{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},\"month-short\":{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},day:{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},\"day-short\":{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},hour:{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},\"hour-short\":{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},minute:{displayName:\"分钟\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},\"minute-short\":{displayName:\"分\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},second:{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒后\"},past:{other:\"{0}秒前\"}}},\"second-short\":{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒后\"},past:{other:\"{0}秒前\"}}}}},{locale:\"zh-Hans-MO\",parentLocale:\"zh-Hans\",fields:{year:{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},\"year-short\":{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},month:{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},\"month-short\":{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},day:{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},\"day-short\":{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},hour:{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},\"hour-short\":{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},minute:{displayName:\"分钟\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},\"minute-short\":{displayName:\"分\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},second:{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒后\"},past:{other:\"{0}秒前\"}}},\"second-short\":{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒后\"},past:{other:\"{0}秒前\"}}}}},{locale:\"zh-Hans-SG\",parentLocale:\"zh-Hans\",fields:{year:{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},\"year-short\":{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},month:{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},\"month-short\":{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},day:{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},\"day-short\":{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},hour:{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},\"hour-short\":{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},minute:{displayName:\"分钟\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},\"minute-short\":{displayName:\"分\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},second:{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒后\"},past:{other:\"{0}秒前\"}}},\"second-short\":{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒后\"},past:{other:\"{0}秒前\"}}}}},{locale:\"zh-Hant\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0} 年後\"},past:{other:\"{0} 年前\"}}},\"year-short\":{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0} 年後\"},past:{other:\"{0} 年前\"}}},month:{displayName:\"月\",relative:{0:\"本月\",1:\"下個月\",\"-1\":\"上個月\"},relativeTime:{future:{other:\"{0} 個月後\"},past:{other:\"{0} 個月前\"}}},\"month-short\":{displayName:\"月\",relative:{0:\"本月\",1:\"下個月\",\"-1\":\"上個月\"},relativeTime:{future:{other:\"{0} 個月後\"},past:{other:\"{0} 個月前\"}}},day:{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"後天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0} 天後\"},past:{other:\"{0} 天前\"}}},\"day-short\":{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"後天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0} 天後\"},past:{other:\"{0} 天前\"}}},hour:{displayName:\"小時\",relative:{0:\"這一小時\"},relativeTime:{future:{other:\"{0} 小時後\"},past:{other:\"{0} 小時前\"}}},\"hour-short\":{displayName:\"小時\",relative:{0:\"這一小時\"},relativeTime:{future:{other:\"{0} 小時後\"},past:{other:\"{0} 小時前\"}}},minute:{displayName:\"分鐘\",relative:{0:\"這一分鐘\"},relativeTime:{future:{other:\"{0} 分鐘後\"},past:{other:\"{0} 分鐘前\"}}},\"minute-short\":{displayName:\"分鐘\",relative:{0:\"這一分鐘\"},relativeTime:{future:{other:\"{0} 分鐘後\"},past:{other:\"{0} 分鐘前\"}}},second:{displayName:\"秒\",relative:{0:\"現在\"},relativeTime:{future:{other:\"{0} 秒後\"},past:{other:\"{0} 秒前\"}}},\"second-short\":{displayName:\"秒\",relative:{0:\"現在\"},relativeTime:{future:{other:\"{0} 秒後\"},past:{other:\"{0} 秒前\"}}}}},{locale:\"zh-Hant-HK\",parentLocale:\"zh-Hant\",fields:{year:{displayName:\"年\",relative:{0:\"今年\",1:\"下年\",\"-1\":\"上年\"},relativeTime:{future:{other:\"{0} 年後\"},past:{other:\"{0} 年前\"}}},\"year-short\":{displayName:\"年\",relative:{0:\"今年\",1:\"下年\",\"-1\":\"上年\"},relativeTime:{future:{other:\"{0} 年後\"},past:{other:\"{0} 年前\"}}},month:{displayName:\"月\",relative:{0:\"本月\",1:\"下個月\",\"-1\":\"上個月\"},relativeTime:{future:{other:\"{0} 個月後\"},past:{other:\"{0} 個月前\"}}},\"month-short\":{displayName:\"月\",relative:{0:\"本月\",1:\"下個月\",\"-1\":\"上個月\"},relativeTime:{future:{other:\"{0} 個月後\"},past:{other:\"{0} 個月前\"}}},day:{displayName:\"日\",relative:{0:\"今日\",1:\"明日\",2:\"後日\",\"-2\":\"前日\",\"-1\":\"昨日\"},relativeTime:{future:{other:\"{0} 日後\"},past:{other:\"{0} 日前\"}}},\"day-short\":{displayName:\"日\",relative:{0:\"今日\",1:\"明日\",2:\"後日\",\"-2\":\"前日\",\"-1\":\"昨日\"},relativeTime:{future:{other:\"{0} 日後\"},past:{other:\"{0} 日前\"}}},hour:{displayName:\"小時\",relative:{0:\"這個小時\"},relativeTime:{future:{other:\"{0} 小時後\"},past:{other:\"{0} 小時前\"}}},\"hour-short\":{displayName:\"小時\",relative:{0:\"這個小時\"},relativeTime:{future:{other:\"{0} 小時後\"},past:{other:\"{0} 小時前\"}}},minute:{displayName:\"分鐘\",relative:{0:\"這分鐘\"},relativeTime:{future:{other:\"{0} 分鐘後\"},past:{other:\"{0} 分鐘前\"}}},\"minute-short\":{displayName:\"分鐘\",relative:{0:\"這分鐘\"},relativeTime:{future:{other:\"{0} 分鐘後\"},past:{other:\"{0} 分鐘前\"}}},second:{displayName:\"秒\",relative:{0:\"現在\"},relativeTime:{future:{other:\"{0} 秒後\"},past:{other:\"{0} 秒前\"}}},\"second-short\":{displayName:\"秒\",relative:{0:\"現在\"},relativeTime:{future:{other:\"{0} 秒後\"},past:{other:\"{0} 秒前\"}}}}},{locale:\"zh-Hant-MO\",parentLocale:\"zh-Hant-HK\"}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.zu=a())}(this,function(){\"use strict\";return[{locale:\"zu\",pluralRuleFunction:function(e,a){return a?\"other\":e>=0&&e<=1?\"one\":\"other\"},fields:{year:{displayName:\"Unyaka\",relative:{0:\"kulo nyaka\",1:\"unyaka ozayo\",\"-1\":\"onyakeni odlule\"},relativeTime:{future:{one:\"onyakeni ongu-{0} ozayo\",other:\"eminyakeni engu-{0} ezayo\"},past:{one:\"{0} unyaka odlule\",other:\"{0} iminyaka edlule\"}}},\"year-short\":{displayName:\"Unyaka\",relative:{0:\"kulo nyaka\",1:\"unyaka ozayo\",\"-1\":\"onyakeni odlule\"},relativeTime:{future:{one:\"onyakeni ongu-{0} ozayo\",other:\"eminyakeni engu-{0} ezayo\"},past:{one:\"{0} unyaka odlule\",other:\"{0} unyaka odlule\"}}},month:{displayName:\"Inyanga\",relative:{0:\"le nyanga\",1:\"inyanga ezayo\",\"-1\":\"inyanga edlule\"},relativeTime:{future:{one:\"enyangeni engu-{0}\",other:\"ezinyangeni ezingu-{0} ezizayo\"},past:{one:\"{0} inyanga edlule\",other:\"{0} izinyanga ezedlule\"}}},\"month-short\":{displayName:\"Inyanga\",relative:{0:\"le nyanga\",1:\"inyanga ezayo\",\"-1\":\"inyanga edlule\"},relativeTime:{future:{one:\"ezinyangeni ezingu-{0} ezizayo\",other:\"ezinyangeni ezingu-{0} ezizayo\"},past:{one:\"{0} izinyanga ezedlule\",other:\"{0} izinyanga ezedlule\"}}},day:{displayName:\"Usuku\",relative:{0:\"namhlanje\",1:\"kusasa\",2:\"usuku olulandela olwakusasa\",\"-2\":\"usuku olwandulela olwayizolo\",\"-1\":\"izolo\"},relativeTime:{future:{one:\"osukwini olungu-{0} oluzayo\",other:\"ezinsukwini ezingu-{0} ezizayo\"},past:{one:\"osukwini olungu-{0} olwedlule\",other:\"ezinsukwini ezingu-{0} ezedlule.\"}}},\"day-short\":{displayName:\"Usuku\",relative:{0:\"namhlanje\",1:\"kusasa\",2:\"usuku olulandela olwakusasa\",\"-2\":\"usuku olwandulela olwayizolo\",\"-1\":\"izolo\"},relativeTime:{future:{one:\"osukwini olungu-{0} oluzayo\",other:\"ezinsukwini ezingu-{0} ezizayo\"},past:{one:\"{0} usuku olwedlule\",other:\"{0} izinsuku ezedlule\"}}},hour:{displayName:\"Ihora\",relative:{0:\"leli hora\"},relativeTime:{future:{one:\"ehoreni elingu-{0} elizayo\",other:\"emahoreni angu-{0} ezayo\"},past:{one:\"{0} ihora eledlule\",other:\"emahoreni angu-{0} edlule\"}}},\"hour-short\":{displayName:\"Ihora\",relative:{0:\"leli hora\"},relativeTime:{future:{one:\"ehoreni elingu-{0} elizayo\",other:\"emahoreni angu-{0} ezayo\"},past:{one:\"{0} ihora eledlule\",other:\"emahoreni angu-{0} edlule\"}}},minute:{displayName:\"Iminithi\",relative:{0:\"leli minithi\"},relativeTime:{future:{one:\"kuminithi elingu-{0} elizayo\",other:\"kumaminithi angu-{0} ezayo\"},past:{one:\"{0} iminithi eledlule\",other:\"{0} amaminithi edlule\"}}},\"minute-short\":{displayName:\"Iminithi\",relative:{0:\"leli minithi\"},relativeTime:{future:{one:\"kuminithi elingu-{0} elizayo\",other:\"kumaminithi angu-{0} ezayo\"},past:{one:\"{0} iminithi eledlule\",other:\"{0} amaminithi edlule\"}}},second:{displayName:\"Isekhondi\",relative:{0:\"manje\"},relativeTime:{future:{one:\"kusekhondi elingu-{0} elizayo\",other:\"kumasekhondi angu-{0} ezayo\"},past:{one:\"{0} isekhondi eledlule\",other:\"{0} amasekhondi edlule\"}}},\"second-short\":{displayName:\"Isekhondi\",relative:{0:\"manje\"},relativeTime:{future:{one:\"kusekhondi elingu-{0} elizayo\",other:\"kumasekhondi angu-{0} ezayo\"},past:{one:\"{0} isekhondi eledlule\",other:\"{0} amasekhondi edlule\"}}}}}]});\n","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E={};function F(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}F.prototype.isReactComponent={};F.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(C(85));this.updater.enqueueSetState(this,a,b,\"setState\")};F.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction G(){}G.prototype=F.prototype;function H(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}var I=H.prototype=new G;I.constructor=H;l(I,F.prototype);I.isPureReactComponent=!0;var J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,c){var e,d={},g=null,k=null;if(null!=b)for(e in void 0!==b.ref&&(k=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,e)&&!L.hasOwnProperty(e)&&(d[e]=b[e]);var f=arguments.length-2;if(1===f)d.children=c;else if(1<f){for(var h=Array(f),m=0;m<f;m++)h[m]=arguments[m+2];d.children=h}if(a&&a.defaultProps)for(e in f=a.defaultProps,f)void 0===d[e]&&(d[e]=f[e]);return{$$typeof:p,type:a,key:g,ref:k,props:d,_owner:J.current}}\nfunction N(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g,Q=[];function R(a,b,c,e){if(Q.length){var d=Q.pop();d.result=a;d.keyPrefix=b;d.func=c;d.context=e;d.count=0;return d}return{result:a,keyPrefix:b,func:c,context:e,count:0}}\nfunction S(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>Q.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k<a.length;k++){d=a[k];var f=b+U(d,k);g+=T(d,f,c,e)}else if(null===a||\"object\"!==typeof a?f=null:(f=B&&a[B]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),k=\n0;!(d=a.next()).done;)d=d.value,f=b+U(d,k++),g+=T(d,f,c,e);else if(\"object\"===d)throw c=\"\"+a,Error(C(31,\"[object Object]\"===c?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":c,\"\"));return g}function V(a,b,c){return null==a?0:T(a,\"\",b,c)}function U(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function W(a,b){a.func.call(a.context,b,a.count++)}\nfunction aa(a,b,c){var e=a.result,d=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?X(a,e,c,function(a){return a}):null!=a&&(O(a)&&(a=N(a,d+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(P,\"$&/\")+\"/\")+c)),e.push(a))}function X(a,b,c,e,d){var g=\"\";null!=c&&(g=(\"\"+c).replace(P,\"$&/\")+\"/\");b=R(b,g,e,d);V(a,aa,b);S(b)}var Y={current:null};function Z(){var a=Y.current;if(null===a)throw Error(C(321));return a}\nvar ba={ReactCurrentDispatcher:Y,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:J,IsSomeRendererActing:{current:!1},assign:l};exports.Children={map:function(a,b,c){if(null==a)return a;var e=[];X(a,e,null,b,c);return e},forEach:function(a,b,c){if(null==a)return a;b=R(null,null,b,c);V(a,W,b);S(b)},count:function(a){return V(a,function(){return null},null)},toArray:function(a){var b=[];X(a,b,null,function(a){return a});return b},only:function(a){if(!O(a))throw Error(C(143));return a}};\nexports.Component=F;exports.Fragment=r;exports.Profiler=u;exports.PureComponent=H;exports.StrictMode=t;exports.Suspense=y;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ba;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(C(267,a));var e=l({},a.props),d=a.key,g=a.ref,k=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,k=J.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var f=a.type.defaultProps;for(h in b)K.call(b,h)&&!L.hasOwnProperty(h)&&(e[h]=void 0===b[h]&&void 0!==f?f[h]:b[h])}var h=arguments.length-2;if(1===h)e.children=c;else if(1<h){f=Array(h);for(var m=0;m<h;m++)f[m]=arguments[m+2];e.children=f}return{$$typeof:p,type:a.type,\nkey:d,ref:g,props:e,_owner:k}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:x,render:a}};exports.isValidElement=O;\nexports.lazy=function(a){return{$$typeof:A,_ctor:a,_status:-1,_result:null}};exports.memo=function(a,b){return{$$typeof:z,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return Z().useCallback(a,b)};exports.useContext=function(a,b){return Z().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return Z().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return Z().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return Z().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return Z().useMemo(a,b)};exports.useReducer=function(a,b,c){return Z().useReducer(a,b,c)};exports.useRef=function(a){return Z().useRef(a)};exports.useState=function(a){return Z().useState(a)};exports.version=\"16.14.0\";\n","/** @license React v16.14.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function u(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(u(227));\nfunction ba(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,k){da=!1;ea=null;ba.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,k){ja.apply(this,arguments);if(da){if(da){var l=ea;da=!1;ea=null}else throw Error(u(198));fa||(fa=!0,ha=l)}}var la=null,ma=null,na=null;\nfunction oa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=na(c);ka(d,b,void 0,a);a.currentTarget=null}var pa=null,qa={};\nfunction ra(){if(pa)for(var a in qa){var b=qa[a],c=pa.indexOf(a);if(!(-1<c))throw Error(u(96,a));if(!sa[c]){if(!b.extractEvents)throw Error(u(97,a));sa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;if(ta.hasOwnProperty(h))throw Error(u(99,h));ta[h]=f;var k=f.phasedRegistrationNames;if(k){for(e in k)k.hasOwnProperty(e)&&ua(k[e],g,h);e=!0}else f.registrationName?(ua(f.registrationName,g,h),e=!0):e=!1;if(!e)throw Error(u(98,d,a));}}}}\nfunction ua(a,b,c){if(va[a])throw Error(u(100,a));va[a]=b;wa[a]=b.eventTypes[c].dependencies}var sa=[],ta={},va={},wa={};function xa(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];if(!qa.hasOwnProperty(c)||qa[c]!==d){if(qa[c])throw Error(u(102,c));qa[c]=d;b=!0}}b&&ra()}var ya=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),za=null,Aa=null,Ba=null;\nfunction Ca(a){if(a=ma(a)){if(\"function\"!==typeof za)throw Error(u(280));var b=a.stateNode;b&&(b=la(b),za(a.stateNode,a.type,b))}}function Da(a){Aa?Ba?Ba.push(a):Ba=[a]:Aa=a}function Ea(){if(Aa){var a=Aa,b=Ba;Ba=Aa=null;Ca(a);if(b)for(a=0;a<b.length;a++)Ca(b[a])}}function Fa(a,b){return a(b)}function Ga(a,b,c,d,e){return a(b,c,d,e)}function Ha(){}var Ia=Fa,Ja=!1,Ka=!1;function La(){if(null!==Aa||null!==Ba)Ha(),Ea()}\nfunction Ma(a,b,c){if(Ka)return a(b,c);Ka=!0;try{return Ia(a,b,c)}finally{Ka=!1,La()}}var Na=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,Oa=Object.prototype.hasOwnProperty,Pa={},Qa={};\nfunction Ra(a){if(Oa.call(Qa,a))return!0;if(Oa.call(Pa,a))return!1;if(Na.test(a))return Qa[a]=!0;Pa[a]=!0;return!1}function Sa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction Ta(a,b,c,d){if(null===b||\"undefined\"===typeof b||Sa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(Ta(b,c,e,d)&&(c=null),d||null===e?Ra(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar Ya=/^(.*)[\\\\\\/]/,E=\"function\"===typeof Symbol&&Symbol.for,Za=E?Symbol.for(\"react.element\"):60103,$a=E?Symbol.for(\"react.portal\"):60106,ab=E?Symbol.for(\"react.fragment\"):60107,bb=E?Symbol.for(\"react.strict_mode\"):60108,cb=E?Symbol.for(\"react.profiler\"):60114,db=E?Symbol.for(\"react.provider\"):60109,eb=E?Symbol.for(\"react.context\"):60110,fb=E?Symbol.for(\"react.concurrent_mode\"):60111,gb=E?Symbol.for(\"react.forward_ref\"):60112,hb=E?Symbol.for(\"react.suspense\"):60113,ib=E?Symbol.for(\"react.suspense_list\"):\n60120,jb=E?Symbol.for(\"react.memo\"):60115,kb=E?Symbol.for(\"react.lazy\"):60116,lb=E?Symbol.for(\"react.block\"):60121,mb=\"function\"===typeof Symbol&&Symbol.iterator;function nb(a){if(null===a||\"object\"!==typeof a)return null;a=mb&&a[mb]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function ob(a){if(-1===a._status){a._status=0;var b=a._ctor;b=b();a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}}\nfunction pb(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ab:return\"Fragment\";case $a:return\"Portal\";case cb:return\"Profiler\";case bb:return\"StrictMode\";case hb:return\"Suspense\";case ib:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case eb:return\"Context.Consumer\";case db:return\"Context.Provider\";case gb:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\n\"ForwardRef\");case jb:return pb(a.type);case lb:return pb(a.render);case kb:if(a=1===a._status?a._result:null)return pb(a)}return null}function qb(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=pb(a.type);c=null;d&&(c=pb(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Ya,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n    in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nfunction rb(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function sb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction tb(a){var b=sb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function xb(a){a._valueTracker||(a._valueTracker=tb(a))}function yb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=sb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function zb(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction Ab(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=rb(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Bb(a,b){b=b.checked;null!=b&&Xa(a,\"checked\",b,!1)}\nfunction Cb(a,b){Bb(a,b);var c=rb(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?Db(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&Db(a,b.type,rb(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Eb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction Db(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function Fb(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gb(a,b){a=n({children:void 0},b);if(b=Fb(b.children))a.children=b;return a}\nfunction Hb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+rb(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction Ib(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(u(91));return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function Jb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(u(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)oa(a,b[d],c[d]);else b&&oa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}function mc(a){null!==a&&(kc=ic(kc,a));a=kc;kc=null;if(a){jc(a,lc);if(kc)throw Error(u(95));if(fa)throw a=ha,fa=!1,ha=null,a;}}\nfunction nc(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function oc(a){if(!ya)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}var pc=[];function qc(a){a.topLevelType=null;a.nativeEvent=null;a.targetInst=null;a.ancestors.length=0;10>pc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=nc(a.nativeEvent);d=a.topLevelType;var f=a.nativeEvent,g=a.eventSystemFlags;0===c&&(g|=64);for(var h=null,k=0;k<sa.length;k++){var l=sa[k];l&&(l=l.extractEvents(d,b,f,e,g))&&(h=\nic(h,l))}mc(h)}}function uc(a,b,c){if(!c.has(a)){switch(a){case \"scroll\":vc(b,\"scroll\",!0);break;case \"focus\":case \"blur\":vc(b,\"focus\",!0);vc(b,\"blur\",!0);c.set(\"blur\",null);c.set(\"focus\",null);break;case \"cancel\":case \"close\":oc(a)&&vc(b,a,!0);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ac.indexOf(a)&&F(a,b)}c.set(a,null)}}\nvar wc,xc,yc,zc=!1,Ac=[],Bc=null,Cc=null,Dc=null,Ec=new Map,Fc=new Map,Gc=[],Hc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),Ic=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\nfunction Jc(a,b){var c=cc(b);Hc.forEach(function(a){uc(a,b,c)});Ic.forEach(function(a){uc(a,b,c)})}function Kc(a,b,c,d,e){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:e,container:d}}\nfunction Lc(a,b){switch(a){case \"focus\":case \"blur\":Bc=null;break;case \"dragenter\":case \"dragleave\":Cc=null;break;case \"mouseover\":case \"mouseout\":Dc=null;break;case \"pointerover\":case \"pointerout\":Ec.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Fc.delete(b.pointerId)}}function Mc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=Kc(b,c,d,e,f),null!==b&&(b=Nc(b),null!==b&&xc(b)),a;a.eventSystemFlags|=d;return a}\nfunction Oc(a,b,c,d,e){switch(b){case \"focus\":return Bc=Mc(Bc,a,b,c,d,e),!0;case \"dragenter\":return Cc=Mc(Cc,a,b,c,d,e),!0;case \"mouseover\":return Dc=Mc(Dc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Ec.set(f,Mc(Ec.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Fc.set(f,Mc(Fc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Pc(a){var b=tc(a.target);if(null!==b){var c=dc(b);if(null!==c)if(b=c.tag,13===b){if(b=ec(c),null!==b){a.blockedOn=b;r.unstable_runWithPriority(a.priority,function(){yc(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function Qc(a){if(null!==a.blockedOn)return!1;var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);if(null!==b){var c=Nc(b);null!==c&&xc(c);a.blockedOn=b;return!1}return!0}\nfunction Sc(a,b,c){Qc(a)&&c.delete(b)}function Tc(){for(zc=!1;0<Ac.length;){var a=Ac[0];if(null!==a.blockedOn){a=Nc(a.blockedOn);null!==a&&wc(a);break}var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);null!==b?a.blockedOn=b:Ac.shift()}null!==Bc&&Qc(Bc)&&(Bc=null);null!==Cc&&Qc(Cc)&&(Cc=null);null!==Dc&&Qc(Dc)&&(Dc=null);Ec.forEach(Sc);Fc.forEach(Sc)}function Uc(a,b){a.blockedOn===b&&(a.blockedOn=null,zc||(zc=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Tc)))}\nfunction Vc(a){function b(b){return Uc(b,a)}if(0<Ac.length){Uc(Ac[0],a);for(var c=1;c<Ac.length;c++){var d=Ac[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Bc&&Uc(Bc,a);null!==Cc&&Uc(Cc,a);null!==Dc&&Uc(Dc,a);Ec.forEach(b);Fc.forEach(b);for(c=0;c<Gc.length;c++)d=Gc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Gc.length&&(c=Gc[0],null===c.blockedOn);)Pc(c),null===c.blockedOn&&Gc.shift()}\nvar Wc={},Yc=new Map,Zc=new Map,$c=[\"abort\",\"abort\",Xb,\"animationEnd\",Yb,\"animationIteration\",Zb,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\n\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",$b,\"transitionEnd\",\"waiting\",\"waiting\"];function ad(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1],f=\"on\"+(e[0].toUpperCase()+e.slice(1));f={phasedRegistrationNames:{bubbled:f,captured:f+\"Capture\"},dependencies:[d],eventPriority:b};Zc.set(d,b);Yc.set(d,f);Wc[e]=f}}\nad(\"blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),0);\nad(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);ad($c,2);for(var bd=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),cd=0;cd<bd.length;cd++)Zc.set(bd[cd],0);\nvar dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function F(a,b){vc(b,a,!1)}function vc(a,b,c){var d=Zc.get(b);switch(void 0===d?2:d){case 0:d=gd.bind(null,b,1,a);break;case 1:d=hd.bind(null,b,1,a);break;default:d=id.bind(null,b,1,a)}c?a.addEventListener(b,d,!0):a.addEventListener(b,d,!1)}function gd(a,b,c,d){Ja||Ha();var e=id,f=Ja;Ja=!0;try{Ga(e,a,b,c,d)}finally{(Ja=f)||La()}}function hd(a,b,c,d){ed(dd,id.bind(null,a,b,c,d))}\nfunction id(a,b,c,d){if(fd)if(0<Ac.length&&-1<Hc.indexOf(a))a=Kc(null,a,b,c,d),Ac.push(a);else{var e=Rc(a,b,c,d);if(null===e)Lc(a,d);else if(-1<Hc.indexOf(a))a=Kc(e,a,b,c,d),Ac.push(a);else if(!Oc(e,a,b,c,d)){Lc(a,d);a=rc(a,d,null,b);try{Ma(sc,a)}finally{qc(a)}}}}\nfunction Rc(a,b,c,d){c=nc(d);c=tc(c);if(null!==c){var e=dc(c);if(null===e)c=null;else{var f=e.tag;if(13===f){c=ec(e);if(null!==c)return c;c=null}else if(3===f){if(e.stateNode.hydrate)return 3===e.tag?e.stateNode.containerInfo:null;c=null}else e!==c&&(c=null)}}a=rc(a,d,c,b);try{Ma(sc,a)}finally{qc(a)}return null}\nvar jd={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},kd=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(jd).forEach(function(a){kd.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);jd[b]=jd[a]})});function ld(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||jd.hasOwnProperty(a)&&jd[a]?(\"\"+b).trim():b+\"px\"}\nfunction md(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ld(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var nd=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction od(a,b){if(b){if(nd[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(u(137,a,\"\"));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(u(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(u(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(u(62,\"\"));}}\nfunction pd(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var qd=Mb.html;function rd(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=cc(a);b=wa[b];for(var d=0;d<b.length;d++)uc(b[d],a,c)}function sd(){}\nfunction td(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function ud(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function vd(a,b){var c=ud(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0<b--;)Td(c[b],\"captured\",a);for(b=0;b<c.length;b++)Td(c[b],\"bubbled\",a)}}\nfunction Vd(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Sd(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a))}function Wd(a){a&&a.dispatchConfig.registrationName&&Vd(a._targetInst,null,a)}function Xd(a){jc(a,Ud)}var Yd=null,Zd=null,$d=null;\nfunction ae(){if($d)return $d;var a,b=Zd,c=b.length,d,e=\"value\"in Yd?Yd.value:Yd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return $d=e.slice(a,1<d?1-d:void 0)}function be(){return!0}function ce(){return!1}\nfunction G(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?be:ce;this.isPropagationStopped=ce;return this}\nn(G.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=be)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=be)},persist:function(){this.isPersistent=be},isPersistent:ce,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=ce;this._dispatchInstances=this._dispatchListeners=null}});G.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\nG.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;de(c);return c};de(G);function ee(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}\nfunction fe(a){if(!(a instanceof this))throw Error(u(279));a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8<ke&&11>=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return me&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar ve={eventTypes:oe,extractEvents:function(a,b,c,d){var e;if(je)b:{switch(a){case \"compositionstart\":var f=oe.compositionStart;break b;case \"compositionend\":f=oe.compositionEnd;break b;case \"compositionupdate\":f=oe.compositionUpdate;break b}f=void 0}else se?qe(a,c)&&(f=oe.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(f=oe.compositionStart);f?(me&&\"ko\"!==c.locale&&(se||f!==oe.compositionStart?f===oe.compositionEnd&&se&&(e=ae()):(Yd=d,Zd=\"value\"in Yd?Yd.value:Yd.textContent,se=!0)),f=ge.getPooled(f,\nb,c,d),e?f.data=e:(e=re(c),null!==e&&(f.data=e)),Xd(f),e=f):e=null;(a=le?te(a,c):ue(a,c))?(b=he.getPooled(oe.beforeInput,b,c,d),b.data=a,Xd(b)):b=null;return null===e?b:null===b?e:[e,b]}},we={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function xe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!we[a.type]:\"textarea\"===b?!0:!1}\nvar ye={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function ze(a,b,c){a=G.getPooled(ye.change,a,b,c);a.type=\"change\";Da(c);Xd(a);return a}var Ae=null,Be=null;function Ce(a){mc(a)}function De(a){var b=Pd(a);if(yb(b))return a}function Ee(a,b){if(\"change\"===a)return b}var Fe=!1;ya&&(Fe=oc(\"input\")&&(!document.documentMode||9<document.documentMode));\nfunction Ge(){Ae&&(Ae.detachEvent(\"onpropertychange\",He),Be=Ae=null)}function He(a){if(\"value\"===a.propertyName&&De(Be))if(a=ze(Be,a,nc(a)),Ja)mc(a);else{Ja=!0;try{Fa(Ce,a)}finally{Ja=!1,La()}}}function Ie(a,b,c){\"focus\"===a?(Ge(),Ae=b,Be=c,Ae.attachEvent(\"onpropertychange\",He)):\"blur\"===a&&Ge()}function Je(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return De(Be)}function Ke(a,b){if(\"click\"===a)return De(b)}function Le(a,b){if(\"input\"===a||\"change\"===a)return De(b)}\nvar Me={eventTypes:ye,_isInputEventSupported:Fe,extractEvents:function(a,b,c,d){var e=b?Pd(b):window,f=e.nodeName&&e.nodeName.toLowerCase();if(\"select\"===f||\"input\"===f&&\"file\"===e.type)var g=Ee;else if(xe(e))if(Fe)g=Le;else{g=Je;var h=Ie}else(f=e.nodeName)&&\"input\"===f.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(g=Ke);if(g&&(g=g(a,b)))return ze(g,c,d);h&&h(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&Db(e,\"number\",e.value)}},Ne=G.extend({view:null,detail:null}),\nOe={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pe(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Oe[a])?!!b[a]:!1}function Qe(){return Pe}\nvar Re=0,Se=0,Te=!1,Ue=!1,Ve=Ne.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Qe,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Re;Re=a.screenX;return Te?\"mousemove\"===a.type?a.screenX-b:0:(Te=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Se;Se=a.screenY;return Ue?\"mousemove\"===a.type?a.screenY-b:0:(Ue=!0,0)}}),We=Ve.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Xe={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},Ye={eventTypes:Xe,extractEvents:function(a,b,c,d,e){var f=\"mouseover\"===a||\"pointerover\"===a,g=\"mouseout\"===a||\"pointerout\"===a;if(f&&0===(e&32)&&(c.relatedTarget||c.fromElement)||!g&&!f)return null;f=d.window===d?d:(f=d.ownerDocument)?f.defaultView||f.parentWindow:window;if(g){if(g=b,b=(b=c.relatedTarget||c.toElement)?tc(b):null,null!==b){var h=dc(b);if(b!==h||5!==b.tag&&6!==b.tag)b=null}}else g=null;if(g===b)return null;if(\"mouseout\"===a||\"mouseover\"===\na){var k=Ve;var l=Xe.mouseLeave;var m=Xe.mouseEnter;var p=\"mouse\"}else if(\"pointerout\"===a||\"pointerover\"===a)k=We,l=Xe.pointerLeave,m=Xe.pointerEnter,p=\"pointer\";a=null==g?f:Pd(g);f=null==b?f:Pd(b);l=k.getPooled(l,g,c,d);l.type=p+\"leave\";l.target=a;l.relatedTarget=f;c=k.getPooled(m,b,c,d);c.type=p+\"enter\";c.target=f;c.relatedTarget=a;d=g;p=b;if(d&&p)a:{k=d;m=p;g=0;for(a=k;a;a=Rd(a))g++;a=0;for(b=m;b;b=Rd(b))a++;for(;0<g-a;)k=Rd(k),g--;for(;0<a-g;)m=Rd(m),a--;for(;g--;){if(k===m||k===m.alternate)break a;\nk=Rd(k);m=Rd(m)}k=null}else k=null;m=k;for(k=[];d&&d!==m;){g=d.alternate;if(null!==g&&g===m)break;k.push(d);d=Rd(d)}for(d=[];p&&p!==m;){g=p.alternate;if(null!==g&&g===m)break;d.push(p);p=Rd(p)}for(p=0;p<k.length;p++)Vd(k[p],\"bubbled\",l);for(p=d.length;0<p--;)Vd(d[p],\"captured\",c);return 0===(e&64)?[l]:[l,c]}};function Ze(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var $e=\"function\"===typeof Object.is?Object.is:Ze,af=Object.prototype.hasOwnProperty;\nfunction bf(a,b){if($e(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!af.call(b,c[d])||!$e(a[c[d]],b[c[d]]))return!1;return!0}\nvar cf=ya&&\"documentMode\"in document&&11>=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;g<f.length;g++)if(!e.has(f[g])){e=!1;break a}e=!0}f=!e}if(f)return null;e=b?Pd(b):window;switch(a){case \"focus\":if(xe(e)||\"true\"===e.contentEditable)ef=e,ff=b,gf=null;break;case \"blur\":gf=ff=ef=null;break;case \"mousedown\":hf=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return hf=!1,jf(c,d);case \"selectionchange\":if(cf)break;\ncase \"keydown\":case \"keyup\":return jf(c,d)}return null}},lf=G.extend({animationName:null,elapsedTime:null,pseudoElement:null}),mf=G.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),nf=Ne.extend({relatedTarget:null});function of(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar pf={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},qf={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},rf=Ne.extend({key:function(a){if(a.key){var b=pf[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=of(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?qf[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Qe,charCode:function(a){return\"keypress\"===\na.type?of(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?of(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),sf=Ve.extend({dataTransfer:null}),tf=Ne.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Qe}),uf=G.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),vf=Ve.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),wf={eventTypes:Wc,extractEvents:function(a,b,c,d){var e=Yc.get(a);if(!e)return null;switch(a){case \"keypress\":if(0===of(c))return null;case \"keydown\":case \"keyup\":a=rf;break;case \"blur\":case \"focus\":a=nf;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=\nVe;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=sf;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=tf;break;case Xb:case Yb:case Zb:a=lf;break;case $b:a=uf;break;case \"scroll\":a=Ne;break;case \"wheel\":a=vf;break;case \"copy\":case \"cut\":case \"paste\":a=mf;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=\nWe;break;default:a=G}b=a.getPooled(e,b,c,d);Xd(b);return b}};if(pa)throw Error(u(101));pa=Array.prototype.slice.call(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));ra();var xf=Nc;la=Qd;ma=xf;na=Pd;xa({SimpleEventPlugin:wf,EnterLeaveEventPlugin:Ye,ChangeEventPlugin:Me,SelectEventPlugin:kf,BeforeInputEventPlugin:ve});var yf=[],zf=-1;function H(a){0>zf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});Wf=null}catch(c){throw null!==Wf&&(Wf=Wf.slice(a+1)),Jf(Of,gg),c;}finally{Yf=!1}}}function hg(a,b,c){c/=10;return 1073741821-(((1073741821-a+b/10)/c|0)+1)*c}function ig(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}var jg={current:null},kg=null,lg=null,mg=null;function ng(){mg=lg=kg=null}\nfunction og(a){var b=jg.current;H(jg);a.type._context._currentValue=b}function pg(a,b){for(;null!==a;){var c=a.alternate;if(a.childExpirationTime<b)a.childExpirationTime=b,null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);else if(null!==c&&c.childExpirationTime<b)c.childExpirationTime=b;else break;a=a.return}}function qg(a,b){kg=a;mg=lg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(a.expirationTime>=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(g<d){var ca={expirationTime:z.expirationTime,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null};null===x?(p=x=\nca,m=k):x=x.next=ca;g>l&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=e;e=c;if(\"function\"!==typeof d)throw Error(u(191,d));d.call(e)}}}var Dg=Wa.ReactCurrentBatchConfig,Eg=(new aa.Component).refs;function Fg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;0===a.expirationTime&&(a.updateQueue.baseState=c)}\nvar Jg={isMounted:function(a){return(a=a._reactInternalFiber)?dc(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.tag=1;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=Gg(),d=Dg.suspense;\nc=Hg(c,a,d);d=wg(c,d);d.tag=2;void 0!==b&&null!==b&&(d.callback=b);xg(a,d);Ig(a,c)}};function Kg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!bf(c,d)||!bf(e,f):!0}\nfunction Lg(a,b,c){var d=!1,e=Af;var f=b.contextType;\"object\"===typeof f&&null!==f?f=sg(f):(e=L(b)?Bf:J.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Cf(a,e):Af);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Jg;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Mg(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Jg.enqueueReplaceState(b,b.state,null)}\nfunction Ng(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Eg;ug(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=sg(f):(f=L(b)?Bf:J.current,e.context=Cf(a,f));zg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Fg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Jg.enqueueReplaceState(e,e.state,null),zg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var Og=Array.isArray;\nfunction Pg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(u(309));var d=c.stateNode}if(!d)throw Error(u(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Eg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(u(284));if(!c._owner)throw Error(u(290,a));}return a}\nfunction Qg(a,b){if(\"textarea\"!==a.type)throw Error(u(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\"));}\nfunction Rg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Sg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Tg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Pg(a,b,c),d.return=a,d;d=Ug(c.type,c.key,c.props,null,a.mode,d);d.ref=Pg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=Vg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Wg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Tg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Za:return c=Ug(b.type,b.key,b.props,null,a.mode,c),c.ref=Pg(a,null,b),c.return=a,c;case $a:return b=Vg(b,a.mode,c),b.return=a,b}if(Og(b)||\nnb(b))return b=Wg(b,a.mode,c,null),b.return=a,b;Qg(a,b)}return null}function x(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Za:return c.key===e?c.type===ab?m(a,b,c.props.children,d,e):k(a,b,c,d):null;case $a:return c.key===e?l(a,b,c,d):null}if(Og(c)||nb(c))return null!==e?null:m(a,b,c,d,null);Qg(a,c)}return null}function z(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Za:return a=a.get(null===d.key?c:d.key)||null,d.type===ab?m(b,a,d.props.children,e,d.key):k(b,a,d,e);case $a:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Og(d)||nb(d))return a=a.get(c)||null,m(b,a,d,e,null);Qg(b,d)}return null}function ca(e,g,h,k){for(var l=null,t=null,m=g,y=g=0,A=null;null!==m&&y<h.length;y++){m.index>y?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;y<h.length;y++)m=p(e,h[y],k),null!==m&&(g=f(m,g,y),null===t?l=m:t.sibling=m,t=m);return l}for(m=d(e,m);y<h.length;y++)A=z(m,e,y,h[y],k),null!==A&&(a&&null!==A.alternate&&m.delete(null===A.key?y:A.key),g=f(A,g,y),null===t?l=A:t.sibling=A,t=A);a&&m.forEach(function(a){return b(e,a)});return l}function D(e,g,h,l){var k=nb(h);if(\"function\"!==typeof k)throw Error(u(150));h=k.call(h);\nif(null==h)throw Error(u(151));for(var m=k=null,t=g,y=g=0,A=null,q=h.next();null!==t&&!q.done;y++,q=h.next()){t.index>y?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!$e(a[c],b[c]))return!1;return!0}\nfunction oh(a,b,c,d,e,f){lh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.expirationTime=0;jh.current=null===a||null===a.memoizedState?ph:qh;a=c(d,e);if(b.expirationTime===lh){f=0;do{b.expirationTime=0;if(!(25>f))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(l<lh){var m={expirationTime:k.expirationTime,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};null===h?(g=h=m,f=d):h=h.next=m;l>N.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97<d?97:d,function(){var d=kh.suspense;kh.suspense=void 0===b?null:b;try{a(!1),c()}finally{kh.suspense=d}})}\nfunction zh(a,b,c){var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e={expirationTime:d,suspenseConfig:e,action:c,eagerReducer:null,eagerState:null,next:null};var f=b.pending;null===f?e.next=e:(e.next=f.next,f.next=e);b.pending=e;f=a.alternate;if(a===N||null!==f&&f===N)mh=!0,e.expirationTime=lh,N.expirationTime=lh;else{if(0===a.expirationTime&&(null===f||0===f.expirationTime)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.eagerReducer=f;e.eagerState=h;if($e(h,g))return}catch(k){}finally{}Ig(a,\nd)}}\nvar sh={readContext:sg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useResponder:Q,useDeferredValue:Q,useTransition:Q},ph={readContext:sg,useCallback:Kh,useContext:sg,useEffect:Eh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Ch(4,2,Hh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Ch(4,2,a,b)},useMemo:function(a,b){var c=th();b=void 0===b?null:b;a=a();c.memoizedState=[a,\nb];return a},useReducer:function(a,b,c){var d=th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=zh.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=th();a={current:a};return b.memoizedState=a},useState:yh,useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=yh(a),d=c[0],e=c[1];Eh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=\nc}},[a,b]);return d},useTransition:function(a){var b=yh(!1),c=b[0];b=b[1];return[Kh(Nh.bind(null,b,a),[b,a]),c]}},qh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:wh,useRef:Bh,useState:function(){return wh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=wh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=\nwh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,b,a),[b,a]),c]}},rh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:xh,useRef:Bh,useState:function(){return xh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=xh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=xh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,\nb,a),[b,a]),c]}},Oh=null,Ph=null,Qh=!1;function Rh(a,b){var c=Sh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction Th(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Uh(a){if(Qh){var b=Ph;if(b){var c=b;if(!Th(a,b)){b=Jd(c.nextSibling);if(!b||!Th(a,b)){a.effectTag=a.effectTag&-1025|2;Qh=!1;Oh=a;return}Rh(Oh,c)}Oh=a;Ph=Jd(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,Qh=!1,Oh=a}}function Vh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Oh=a}\nfunction Wh(a){if(a!==Oh)return!1;if(!Qh)return Vh(a),Qh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Gd(b,a.memoizedProps))for(b=Ph;b;)Rh(a,b),b=Jd(b.nextSibling);Vh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(u(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===Ad){if(0===b){Ph=Jd(a.nextSibling);break a}b--}else c!==zd&&c!==Cd&&c!==Bd||b++}a=a.nextSibling}Ph=null}}else Ph=Oh?Jd(a.stateNode.nextSibling):null;return!0}\nfunction Xh(){Ph=Oh=null;Qh=!1}var Yh=Wa.ReactCurrentOwner,rg=!1;function R(a,b,c,d){b.child=null===a?Yg(b,null,c,d):Xg(b,a.child,c,d)}function Zh(a,b,c,d,e){c=c.render;var f=b.ref;qg(b,e);d=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction ai(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!bi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ci(a,b,g,d,e,f);a=Ug(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:bf,c(e,d)&&a.ref===b.ref))return $h(a,b,f);b.effectTag|=1;a=Sg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ci(a,b,c,d,e,f){return null!==a&&bf(a.memoizedProps,d)&&a.ref===b.ref&&(rg=!1,e<f)?(b.expirationTime=a.expirationTime,$h(a,b,f)):di(a,b,c,d,f)}function ei(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function di(a,b,c,d,e){var f=L(c)?Bf:J.current;f=Cf(b,f);qg(b,e);c=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,c,e);return b.child}\nfunction fi(a,b,c,d,e){if(L(c)){var f=!0;Gf(b)}else f=!1;qg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),Lg(b,c,d),Ng(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l);tg=!1;var x=b.memoizedState;g.state=x;zg(b,d,g,e);k=b.memoizedState;h!==d||x!==k||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),k=b.memoizedState),(h=tg||Kg(b,c,h,d,x,k,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,vg(a,b),h=b.memoizedProps,g.props=b.type===b.elementType?h:ig(b.type,h),k=g.context,l=c.contextType,\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l)),m=c.getDerivedStateFromProps,(p=\"function\"===typeof m||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l),tg=!1,k=b.memoizedState,g.state=k,zg(b,d,g,e),x=b.memoizedState,h!==d||k!==x||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),x=b.memoizedState),(m=tg||Kg(b,c,h,d,k,x,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,l),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,l)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=l,d=m):\n(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),d=!1);return gi(a,b,c,d,f,e)}\nfunction gi(a,b,c,d,e,f){ei(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Hf(b,c,!1),$h(a,b,f);d=b.stateNode;Yh.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Xg(b,a.child,null,f),b.child=Xg(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&Hf(b,c,!0);return b.child}function hi(a){var b=a.stateNode;b.pendingContext?Ef(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Ef(a,b.context,!1);dh(a,b.containerInfo)}\nvar ii={dehydrated:null,retryTime:0};\nfunction ji(a,b,c){var d=b.mode,e=b.pendingProps,f=M.current,g=!1,h;(h=0!==(b.effectTag&64))||(h=0!==(f&2)&&(null===a||null!==a.memoizedState));h?(g=!0,b.effectTag&=-65):null!==a&&null===a.memoizedState||void 0===e.fallback||!0===e.unstable_avoidThisFallback||(f|=1);I(M,f&1);if(null===a){void 0!==e.fallback&&Uh(b);if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=\nb;e.sibling=c;b.memoizedState=ii;b.child=e;return c}d=e.children;b.memoizedState=null;return b.child=Yg(b,null,d,c)}if(null!==a.memoizedState){a=a.child;d=a.sibling;if(g){e=e.fallback;c=Sg(a,a.pendingProps);c.return=b;if(0===(b.mode&2)&&(g=null!==b.memoizedState?b.child.child:b.child,g!==a.child))for(c.child=g;null!==g;)g.return=c,g=g.sibling;d=Sg(d,e);d.return=b;c.sibling=d;c.childExpirationTime=0;b.memoizedState=ii;b.child=c;return d}c=Xg(b,a.child,e.children,c);b.memoizedState=null;return b.child=\nc}a=a.child;if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;e.child=a;null!==a&&(a.return=e);if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=b;e.sibling=c;c.effectTag|=2;e.childExpirationTime=0;b.memoizedState=ii;b.child=e;return c}b.memoizedState=null;return b.child=Xg(b,a,e.children,c)}\nfunction ki(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);pg(a.return,b)}function li(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailExpiration:0,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailExpiration=0,g.tailMode=e,g.lastEffect=f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.effectTag|=64;else{if(null!==a&&0!==(a.effectTag&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&ki(a,c);else if(19===a.tag)ki(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(M,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===hh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);li(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===hh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}li(b,!0,c,null,f,b.lastEffect);break;case \"together\":li(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction $h(a,b,c){null!==a&&(b.dependencies=a.dependencies);var d=b.expirationTime;0!==d&&Bg(d);if(b.childExpirationTime<c)return null;if(null!==a&&b.child!==a.child)throw Error(u(153));if(null!==b.child){a=b.child;c=Sg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Sg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}var ni,oi,pi,qi;\nni=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};oi=function(){};\npi=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;ch($g.current);a=null;switch(c){case \"input\":f=zb(g,f);d=zb(g,d);a=[];break;case \"option\":f=Gb(g,f);d=Gb(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=Ib(g,f);d=Ib(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=sd)}od(c,d);var h,k;c=null;for(h in f)if(!d.hasOwnProperty(h)&&f.hasOwnProperty(h)&&null!=f[h])if(\"style\"===\nh)for(k in g=f[h],g)g.hasOwnProperty(k)&&(c||(c={}),c[k]=\"\");else\"dangerouslySetInnerHTML\"!==h&&\"children\"!==h&&\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&\"autoFocus\"!==h&&(va.hasOwnProperty(h)?a||(a=[]):(a=a||[]).push(h,null));for(h in d){var l=d[h];g=null!=f?f[h]:void 0;if(d.hasOwnProperty(h)&&l!==g&&(null!=l||null!=g))if(\"style\"===h)if(g){for(k in g)!g.hasOwnProperty(k)||l&&l.hasOwnProperty(k)||(c||(c={}),c[k]=\"\");for(k in l)l.hasOwnProperty(k)&&g[k]!==l[k]&&(c||(c={}),\nc[k]=l[k])}else c||(a||(a=[]),a.push(h,c)),c=l;else\"dangerouslySetInnerHTML\"===h?(l=l?l.__html:void 0,g=g?g.__html:void 0,null!=l&&g!==l&&(a=a||[]).push(h,l)):\"children\"===h?g===l||\"string\"!==typeof l&&\"number\"!==typeof l||(a=a||[]).push(h,\"\"+l):\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&(va.hasOwnProperty(h)?(null!=l&&rd(e,h),a||g===l||(a=[])):(a=a||[]).push(h,l))}c&&(a=a||[]).push(\"style\",c);e=a;if(b.updateQueue=e)b.effectTag|=4}};\nqi=function(a,b,c,d){c!==d&&(b.effectTag|=4)};function ri(a,b){switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction si(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return L(b.type)&&Df(),null;case 3:return eh(),H(K),H(J),c=b.stateNode,c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),null!==a&&null!==a.child||!Wh(b)||(b.effectTag|=4),oi(b),null;case 5:gh(b);c=ch(bh.current);var e=b.type;if(null!==a&&null!=b.stateNode)pi(a,b,e,d,c),a.ref!==b.ref&&(b.effectTag|=128);else{if(!d){if(null===b.stateNode)throw Error(u(166));\nreturn null}a=ch($g.current);if(Wh(b)){d=b.stateNode;e=b.type;var f=b.memoizedProps;d[Md]=b;d[Nd]=f;switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<ac.length;a++)F(ac[a],d);break;case \"source\":F(\"error\",d);break;case \"img\":case \"image\":case \"link\":F(\"error\",d);F(\"load\",d);break;case \"form\":F(\"reset\",d);F(\"submit\",d);break;case \"details\":F(\"toggle\",d);break;case \"input\":Ab(d,f);F(\"invalid\",d);rd(c,\"onChange\");break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};F(\"invalid\",d);rd(c,\"onChange\");break;case \"textarea\":Jb(d,f),F(\"invalid\",d),rd(c,\"onChange\")}od(e,f);a=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(a=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(a=[\"children\",\"\"+h]):va.hasOwnProperty(g)&&null!=h&&rd(c,g)}switch(e){case \"input\":xb(d);Eb(d,f,!0);break;case \"textarea\":xb(d);Lb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&\n(d.onclick=sd)}c=a;b.updateQueue=c;null!==c&&(b.effectTag|=4)}else{g=9===c.nodeType?c:c.ownerDocument;a===qd&&(a=Nb(e));a===qd?\"script\"===e?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;h<ac.length;h++)F(ac[h],a);h=d;break;case \"source\":F(\"error\",a);h=d;break;case \"img\":case \"image\":case \"link\":F(\"error\",a);F(\"load\",a);h=d;break;case \"form\":F(\"reset\",a);F(\"submit\",a);h=d;break;case \"details\":F(\"toggle\",a);h=d;break;case \"input\":Ab(a,d);h=zb(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;case \"option\":h=Gb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};h=n({},d,{value:void 0});F(\"invalid\",a);rd(c,\"onChange\");break;case \"textarea\":Jb(a,\nd);h=Ib(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;default:h=d}od(e,h);var k=h;for(f in k)if(k.hasOwnProperty(f)){var l=k[f];\"style\"===f?md(a,l):\"dangerouslySetInnerHTML\"===f?(l=l?l.__html:void 0,null!=l&&Qb(a,l)):\"children\"===f?\"string\"===typeof l?(\"textarea\"!==e||\"\"!==l)&&Rb(a,l):\"number\"===typeof l&&Rb(a,\"\"+l):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(va.hasOwnProperty(f)?null!=l&&rd(c,f):null!=l&&Xa(a,f,l,g))}switch(e){case \"input\":xb(a);Eb(a,d,!1);\nbreak;case \"textarea\":xb(a);Lb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+rb(d.value));break;case \"select\":a.multiple=!!d.multiple;c=d.value;null!=c?Hb(a,!!d.multiple,c,!1):null!=d.defaultValue&&Hb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(a.onclick=sd)}Fd(e,d)&&(b.effectTag|=4)}null!==b.ref&&(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)qi(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(u(166));\nc=ch(bh.current);ch($g.current);Wh(b)?(c=b.stateNode,d=b.memoizedProps,c[Md]=b,c.nodeValue!==d&&(b.effectTag|=4)):(c=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),c[Md]=b,b.stateNode=c)}return null;case 13:H(M);d=b.memoizedState;if(0!==(b.effectTag&64))return b.expirationTime=c,b;c=null!==d;d=!1;null===a?void 0!==b.memoizedProps.fallback&&Wh(b):(e=a.memoizedState,d=null!==e,c||null===e||(e=a.child.sibling,null!==e&&(f=b.firstEffect,null!==f?(b.firstEffect=e,e.nextEffect=f):(b.firstEffect=b.lastEffect=\ne,e.nextEffect=null),e.effectTag=8)));if(c&&!d&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(M.current&1))S===ti&&(S=ui);else{if(S===ti||S===ui)S=vi;0!==wi&&null!==T&&(xi(T,U),yi(T,wi))}if(c||d)b.effectTag|=4;return null;case 4:return eh(),oi(b),null;case 10:return og(b),null;case 17:return L(b.type)&&Df(),null;case 19:H(M);d=b.memoizedState;if(null===d)return null;e=0!==(b.effectTag&64);f=d.rendering;if(null===f)if(e)ri(d,!1);else{if(S!==ti||null!==a&&0!==(a.effectTag&\n64))for(f=b.child;null!==f;){a=hh(f);if(null!==a){b.effectTag|=64;ri(d,!1);e=a.updateQueue;null!==e&&(b.updateQueue=e,b.effectTag|=4);null===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;for(d=b.child;null!==d;)e=d,f=c,e.effectTag&=2,e.nextEffect=null,e.firstEffect=null,e.lastEffect=null,a=e.alternate,null===a?(e.childExpirationTime=0,e.expirationTime=f,e.child=null,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null):(e.childExpirationTime=a.childExpirationTime,\ne.expirationTime=a.expirationTime,e.child=a.child,e.memoizedProps=a.memoizedProps,e.memoizedState=a.memoizedState,e.updateQueue=a.updateQueue,f=a.dependencies,e.dependencies=null===f?null:{expirationTime:f.expirationTime,firstContext:f.firstContext,responders:f.responders}),d=d.sibling;I(M,M.current&1|2);return b.child}f=f.sibling}}else{if(!e)if(a=hh(f),null!==a){if(b.effectTag|=64,e=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.effectTag|=4),ri(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!f.alternate)return b=\nb.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*$f()-d.renderingStartTime>d.tailExpiration&&1<c&&(b.effectTag|=64,e=!0,ri(d,!1),b.expirationTime=b.childExpirationTime=c-1);d.isBackwards?(f.sibling=b.child,b.child=f):(c=d.last,null!==c?c.sibling=f:b.child=f,d.last=f)}return null!==d.tail?(0===d.tailExpiration&&(d.tailExpiration=$f()+500),c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=$f(),c.sibling=null,b=M.current,I(M,e?b&1|2:b&1),c):null}throw Error(u(156,\nb.tag));}function zi(a){switch(a.tag){case 1:L(a.type)&&Df();var b=a.effectTag;return b&4096?(a.effectTag=b&-4097|64,a):null;case 3:eh();H(K);H(J);b=a.effectTag;if(0!==(b&64))throw Error(u(285));a.effectTag=b&-4097|64;return a;case 5:return gh(a),null;case 13:return H(M),b=a.effectTag,b&4096?(a.effectTag=b&-4097|64,a):null;case 19:return H(M),null;case 4:return eh(),null;case 10:return og(a),null;default:return null}}function Ai(a,b){return{value:a,source:b,stack:qb(b)}}\nvar Bi=\"function\"===typeof WeakSet?WeakSet:Set;function Ci(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=qb(c));null!==c&&pb(c.type);b=b.value;null!==a&&1===a.tag&&pb(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function Di(a,b){try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(c){Ei(a,c)}}function Fi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Ei(a,c)}else b.current=null}\nfunction Gi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:ig(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(u(163));}\nfunction Hi(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.destroy;c.destroy=void 0;void 0!==d&&d()}c=c.next}while(c!==b)}}function Ii(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Ji(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:Ii(3,c);return;case 1:a=c.stateNode;if(c.effectTag&4)if(null===b)a.componentDidMount();else{var d=c.elementType===c.type?b.memoizedProps:ig(c.type,b.memoizedProps);a.componentDidUpdate(d,b.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}b=c.updateQueue;null!==b&&Cg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Cg(c,b,a)}return;\ncase 5:a=c.stateNode;null===b&&c.effectTag&4&&Fd(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Vc(c))));return;case 19:case 17:case 20:case 21:return}throw Error(u(163));}\nfunction Ki(a,b,c){\"function\"===typeof Li&&Li(b);switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a.next;cg(97<c?97:c,function(){var a=d;do{var c=a.destroy;if(void 0!==c){var g=b;try{c()}catch(h){Ei(g,h)}}a=a.next}while(a!==d)})}break;case 1:Fi(b);c=b.stateNode;\"function\"===typeof c.componentWillUnmount&&Di(b,c);break;case 5:Fi(b);break;case 4:Mi(a,b,c)}}\nfunction Ni(a){var b=a.alternate;a.return=null;a.child=null;a.memoizedState=null;a.updateQueue=null;a.dependencies=null;a.alternate=null;a.firstEffect=null;a.lastEffect=null;a.pendingProps=null;a.memoizedProps=null;a.stateNode=null;null!==b&&Ni(b)}function Oi(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Pi(a){a:{for(var b=a.return;null!==b;){if(Oi(b)){var c=b;break a}b=b.return}throw Error(u(160));}b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(u(161));}c.effectTag&16&&(Rb(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||Oi(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&2)continue b;\nif(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}d?Qi(a,c,b):Ri(a,c,b)}\nfunction Qi(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=sd));else if(4!==d&&(a=a.child,null!==a))for(Qi(a,b,c),a=a.sibling;null!==a;)Qi(a,b,c),a=a.sibling}\nfunction Ri(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Ri(a,b,c),a=a.sibling;null!==a;)Ri(a,b,c),a=a.sibling}\nfunction Mi(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(u(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag){a:for(var h=a,k=d,l=c,m=k;;)if(Ki(h,m,l),null!==m.child&&4!==m.tag)m.child.return=m,m=m.child;else{if(m===k)break a;for(;null===m.sibling;){if(null===m.return||m.return===k)break a;m=m.return}m.sibling.return=m.return;m=m.sibling}g?(h=\nf,k=d.stateNode,8===h.nodeType?h.parentNode.removeChild(k):h.removeChild(k)):f.removeChild(d.stateNode)}else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ki(a,d,c),null!==d.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Si(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:Hi(3,b);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps,e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[Nd]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&Bb(c,d);pd(a,e);b=pd(a,d);for(e=0;e<f.length;e+=2){var g=f[e],h=f[e+1];\"style\"===g?md(c,h):\"dangerouslySetInnerHTML\"===g?Qb(c,h):\"children\"===g?Rb(c,h):Xa(c,g,h,b)}switch(a){case \"input\":Cb(c,d);break;\ncase \"textarea\":Kb(c,d);break;case \"select\":b=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,a=d.value,null!=a?Hb(c,!!d.multiple,a,!1):b!==!!d.multiple&&(null!=d.defaultValue?Hb(c,!!d.multiple,d.defaultValue,!0):Hb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(u(162));b.stateNode.nodeValue=b.memoizedProps;return;case 3:b=b.stateNode;b.hydrate&&(b.hydrate=!1,Vc(b.containerInfo));return;case 12:return;case 13:c=b;null===b.memoizedState?\nd=!1:(d=!0,c=b.child,Ti=$f());if(null!==c)a:for(a=c;;){if(5===a.tag)f=a.stateNode,d?(f=f.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(f=a.stateNode,e=a.memoizedProps.style,e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null,f.style.display=ld(\"display\",e));else if(6===a.tag)a.stateNode.nodeValue=d?\"\":a.memoizedProps;else if(13===a.tag&&null!==a.memoizedState&&null===a.memoizedState.dehydrated){f=a.child.sibling;f.return=a;a=\nf;continue}else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===c)break;for(;null===a.sibling;){if(null===a.return||a.return===c)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}Ui(b);return;case 19:Ui(b);return;case 17:return}throw Error(u(163));}function Ui(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Bi);b.forEach(function(b){var d=Vi.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nvar Wi=\"function\"===typeof WeakMap?WeakMap:Map;function Xi(a,b,c){c=wg(c,null);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Yi||(Yi=!0,Zi=d);Ci(a,b)};return c}\nfunction $i(a,b,c){c=wg(c,null);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ci(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===aj?aj=new Set([this]):aj.add(this),Ci(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nvar bj=Math.ceil,cj=Wa.ReactCurrentDispatcher,dj=Wa.ReactCurrentOwner,V=0,ej=8,fj=16,gj=32,ti=0,hj=1,ij=2,ui=3,vi=4,jj=5,W=V,T=null,X=null,U=0,S=ti,kj=null,lj=1073741823,mj=1073741823,nj=null,wi=0,oj=!1,Ti=0,pj=500,Y=null,Yi=!1,Zi=null,aj=null,qj=!1,rj=null,sj=90,tj=null,uj=0,vj=null,wj=0;function Gg(){return(W&(fj|gj))!==V?1073741821-($f()/10|0):0!==wj?wj:wj=1073741821-($f()/10|0)}\nfunction Hg(a,b,c){b=b.mode;if(0===(b&2))return 1073741823;var d=ag();if(0===(b&4))return 99===d?1073741823:1073741822;if((W&fj)!==V)return U;if(null!==c)a=hg(a,c.timeoutMs|0||5E3,250);else switch(d){case 99:a=1073741823;break;case 98:a=hg(a,150,100);break;case 97:case 96:a=hg(a,5E3,250);break;case 95:a=2;break;default:throw Error(u(326));}null!==T&&a===U&&--a;return a}\nfunction Ig(a,b){if(50<uj)throw uj=0,vj=null,Error(u(185));a=xj(a,b);if(null!==a){var c=ag();1073741823===b?(W&ej)!==V&&(W&(fj|gj))===V?yj(a):(Z(a),W===V&&gg()):Z(a);(W&4)===V||98!==c&&99!==c||(null===tj?tj=new Map([[a,b]]):(c=tj.get(a),(void 0===c||c>b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}null!==e&&(T===e&&(Bg(b),S===vi&&xi(e,U)),yi(e,b));return e}\nfunction zj(a){var b=a.lastExpiredTime;if(0!==b)return b;b=a.firstPendingTime;if(!Aj(a,b))return b;var c=a.lastPingedTime;a=a.nextKnownPendingLevel;a=c>a?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2<c?2:c);break;case ui:xi(a,c);d=a.lastSuspendedTime;\nc===d&&(a.nextKnownPendingLevel=Ij(e));if(1073741823===lj&&(e=Ti+pj-$f(),10<e)){if(oj){var f=a.lastPingedTime;if(0===f||f>=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c<d&&(d=c));if(10<d){a.timeoutHandle=Hd(Jj.bind(null,a),d);break}Jj(a);break;case jj:if(1073741823!==lj&&null!==nj){f=lj;var g=nj;d=g.busyMinDurationMs|0;0>=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10<d){xi(a,c);a.timeoutHandle=\nHd(Jj.bind(null,a),d);break}}Jj(a);break;default:throw Error(u(329));}Z(a);if(a.callbackNode===b)return Bj.bind(null,a)}}return null}\nfunction yj(a){var b=a.lastExpiredTime;b=0!==b?b:1073741823;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&b===U||Ej(a,b);if(null!==X){var c=W;W|=fj;var d=Fj();do try{Kj();break}catch(e){Hj(a,e)}while(1);ng();W=c;cj.current=d;if(S===hj)throw c=kj,Ej(a,b),xi(a,b),Z(a),c;if(null!==X)throw Error(u(261));a.finishedWork=a.current.alternate;a.finishedExpirationTime=b;T=null;Jj(a);Z(a)}return null}function Lj(){if(null!==tj){var a=tj;tj=null;a.forEach(function(a,c){Cj(c,a);Z(c)});gg()}}\nfunction Mj(a,b){var c=W;W|=1;try{return a(b)}finally{W=c,W===V&&gg()}}function Nj(a,b){var c=W;W&=-2;W|=ej;try{return a(b)}finally{W=c,W===V&&gg()}}\nfunction Ej(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Id(c));if(null!==X)for(c=X.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Df();break;case 3:eh();H(K);H(J);break;case 5:gh(d);break;case 4:eh();break;case 13:H(M);break;case 19:H(M);break;case 10:og(d)}c=c.return}T=a;X=Sg(a.current,null);U=b;S=ti;kj=null;mj=lj=1073741823;nj=null;wi=0;oj=!1}\nfunction Hj(a,b){do{try{ng();jh.current=sh;if(mh)for(var c=N.memoizedState;null!==c;){var d=c.queue;null!==d&&(d.pending=null);c=c.next}lh=0;P=O=N=null;mh=!1;if(null===X||null===X.return)return S=hj,kj=b,X=null;a:{var e=a,f=X.return,g=X,h=b;b=U;g.effectTag|=2048;g.firstEffect=g.lastEffect=null;if(null!==h&&\"object\"===typeof h&&\"function\"===typeof h.then){var k=h;if(0===(g.mode&2)){var l=g.alternate;l?(g.updateQueue=l.updateQueue,g.memoizedState=l.memoizedState,g.expirationTime=l.expirationTime):(g.updateQueue=\nnull,g.memoizedState=null)}var m=0!==(M.current&1),p=f;do{var x;if(x=13===p.tag){var z=p.memoizedState;if(null!==z)x=null!==z.dehydrated?!0:!1;else{var ca=p.memoizedProps;x=void 0===ca.fallback?!1:!0!==ca.unstable_avoidThisFallback?!0:m?!1:!0}}if(x){var D=p.updateQueue;if(null===D){var t=new Set;t.add(k);p.updateQueue=t}else D.add(k);if(0===(p.mode&2)){p.effectTag|=64;g.effectTag&=-2981;if(1===g.tag)if(null===g.alternate)g.tag=17;else{var y=wg(1073741823,null);y.tag=2;xg(g,y)}g.expirationTime=1073741823;\nbreak a}h=void 0;g=b;var A=e.pingCache;null===A?(A=e.pingCache=new Wi,h=new Set,A.set(k,h)):(h=A.get(k),void 0===h&&(h=new Set,A.set(k,h)));if(!h.has(g)){h.add(g);var q=Oj.bind(null,e,k,g);k.then(q,q)}p.effectTag|=4096;p.expirationTime=b;break a}p=p.return}while(null!==p);h=Error((pb(g.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){a<lj&&2<a&&(lj=a);null!==b&&a<mj&&2<a&&(mj=a,nj=b)}function Bg(a){a>wi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1<X.effectTag&&(null!==\na.lastEffect?a.lastEffect.nextEffect=X:a.firstEffect=X,a.lastEffect=X))}else{b=zi(X);if(null!==b)return b.effectTag&=2047,b;null!==a&&(a.firstEffect=a.lastEffect=null,a.effectTag|=2048)}b=X.sibling;if(null!==b)return b;X=a}while(null!==X);S===ti&&(S=jj);return null}function Ij(a){var b=a.expirationTime;a=a.childExpirationTime;return b>a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1<c.effectTag?null!==c.lastEffect?(c.lastEffect.nextEffect=c,e=c.firstEffect):e=c:e=c.firstEffect;if(null!==e){var f=W;W|=gj;dj.current=null;Dd=fd;var g=xd();if(yd(g)){if(\"selectionStart\"in g)var h={start:g.selectionStart,end:g.selectionEnd};else a:{h=(h=g.ownerDocument)&&h.defaultView||window;var k=h.getSelection&&h.getSelection();if(k&&0!==k.rangeCount){h=k.anchorNode;var l=k.anchorOffset,\nm=k.focusNode;k=k.focusOffset;try{h.nodeType,m.nodeType}catch(wb){h=null;break a}var p=0,x=-1,z=-1,ca=0,D=0,t=g,y=null;b:for(;;){for(var A;;){t!==h||0!==l&&3!==t.nodeType||(x=p+l);t!==m||0!==k&&3!==t.nodeType||(z=p+k);3===t.nodeType&&(p+=t.nodeValue.length);if(null===(A=t.firstChild))break;y=t;t=A}for(;;){if(t===g)break b;y===h&&++ca===l&&(x=p);y===m&&++D===k&&(z=p);if(null!==(A=t.nextSibling))break;t=y;y=t.parentNode}t=A}h=-1===x||-1===z?null:{start:x,end:z}}else h=null}h=h||{start:0,end:0}}else h=\nnull;Ed={activeElementDetached:null,focusedElem:g,selectionRange:h};fd=!1;Y=e;do try{Tj()}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=e;do try{for(g=a,h=b;null!==Y;){var q=Y.effectTag;q&16&&Rb(Y.stateNode,\"\");if(q&128){var B=Y.alternate;if(null!==B){var w=B.ref;null!==w&&(\"function\"===typeof w?w(null):w.current=null)}}switch(q&1038){case 2:Pi(Y);Y.effectTag&=-3;break;case 6:Pi(Y);Y.effectTag&=-3;Si(Y.alternate,Y);break;case 1024:Y.effectTag&=-1025;break;case 1028:Y.effectTag&=\n-1025;Si(Y.alternate,Y);break;case 4:Si(Y.alternate,Y);break;case 8:l=Y,Mi(g,l,h),Ni(l)}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);w=Ed;B=xd();q=w.focusedElem;h=w.selectionRange;if(B!==q&&q&&q.ownerDocument&&wd(q.ownerDocument.documentElement,q)){null!==h&&yd(q)&&(B=h.start,w=h.end,void 0===w&&(w=B),\"selectionStart\"in q?(q.selectionStart=B,q.selectionEnd=Math.min(w,q.value.length)):(w=(B=q.ownerDocument||document)&&B.defaultView||window,w.getSelection&&\n(w=w.getSelection(),l=q.textContent.length,g=Math.min(h.start,l),h=void 0===h.end?g:Math.min(h.end,l),!w.extend&&g>h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q<B.length;q++)w=B[q],w.element.scrollLeft=w.left,w.element.scrollTop=w.top}fd=!!Dd;Ed=Dd=null;a.current=c;Y=e;do try{for(q=a;null!==Y;){var ub=Y.effectTag;ub&36&&Ji(q,Y.alternate,Y);if(ub&128){B=void 0;var vb=Y.ref;if(null!==vb){var Xc=Y.stateNode;switch(Y.tag){case 5:B=Xc;break;default:B=Xc}\"function\"===typeof vb?vb(B):vb.current=B}}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=\nnull;Vf();W=f}else a.current=c;if(qj)qj=!1,rj=a,sj=b;else for(Y=e;null!==Y;)b=Y.nextEffect,Y.nextEffect=null,Y=b;b=a.firstPendingTime;0===b&&(aj=null);1073741823===b?a===vj?uj++:(uj=0,vj=a):uj=0;\"function\"===typeof Uj&&Uj(c.stateNode,d);Z(a);if(Yi)throw Yi=!1,a=Zi,Zi=null,a;if((W&ej)!==V)return null;gg();return null}function Tj(){for(;null!==Y;){var a=Y.effectTag;0!==(a&256)&&Gi(Y.alternate,Y);0===(a&512)||qj||(qj=!0,dg(97,function(){Dj();return null}));Y=Y.nextEffect}}\nfunction Dj(){if(90!==sj){var a=97<sj?97:sj;sj=90;return cg(a,Vj)}}function Vj(){if(null===rj)return!1;var a=rj;rj=null;if((W&(fj|gj))!==V)throw Error(u(331));var b=W;W|=gj;for(a=a.current.firstEffect;null!==a;){try{var c=a;if(0!==(c.effectTag&512))switch(c.tag){case 0:case 11:case 15:case 22:Hi(5,c),Ii(5,c)}}catch(d){if(null===a)throw Error(u(330));Ei(a,d)}c=a.nextEffect;a.nextEffect=null;a=c}W=b;gg();return!0}\nfunction Wj(a,b,c){b=Ai(c,b);b=Xi(a,b,1073741823);xg(a,b);a=xj(a,1073741823);null!==a&&Z(a)}function Ei(a,b){if(3===a.tag)Wj(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){Wj(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===aj||!aj.has(d))){a=Ai(b,a);a=$i(c,a,1073741823);xg(c,a);c=xj(c,1073741823);null!==c&&Z(c);break}}c=c.return}}\nfunction Oj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);T===a&&U===c?S===vi||S===ui&&1073741823===lj&&$f()-Ti<pj?Ej(a,U):oj=!0:Aj(a,c)&&(b=a.lastPingedTime,0!==b&&b<c||(a.lastPingedTime=c,Z(a)))}function Vi(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=Gg(),b=Hg(b,a,null));a=xj(a,b);null!==a&&Z(a)}var Rj;\nRj=function(a,b,c){var d=b.expirationTime;if(null!==a){var e=b.pendingProps;if(a.memoizedProps!==e||K.current)rg=!0;else{if(d<c){rg=!1;switch(b.tag){case 3:hi(b);Xh();break;case 5:fh(b);if(b.mode&4&&1!==c&&e.hidden)return b.expirationTime=b.childExpirationTime=1,null;break;case 1:L(b.type)&&Gf(b);break;case 4:dh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;e=b.type._context;I(jg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;\nif(0!==d&&d>=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime<c&&(h.expirationTime=c);l=h.alternate;null!==l&&l.expirationTime<c&&(l.expirationTime=c);pg(h.return,c);k.expirationTime<c&&(k.expirationTime=c);break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=\ng}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,qg(b,c),e=sg(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,R(a,b,d,c),b.child;case 14:return e=b.type,f=ig(e,b.pendingProps),f=ig(e.type,f),ai(a,b,e,f,d,c);case 15:return ci(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,L(d)?(a=!0,Gf(b)):a=!1,qg(b,c),Lg(b,d,e),Ng(b,d,e,c),gi(null,\nb,d,!0,a,c);case 19:return mi(a,b,c)}throw Error(u(156,b.tag));};var Uj=null,Li=null;function Yj(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Uj=function(a){try{b.onCommitFiberRoot(c,a,void 0,64===(a.current.effectTag&64))}catch(e){}};Li=function(a){try{b.onCommitFiberUnmount(c,a)}catch(e){}}}catch(d){}return!0}\nfunction Zj(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function Sh(a,b,c,d){return new Zj(a,b,c,d)}\nfunction bi(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Xj(a){if(\"function\"===typeof a)return bi(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===gb)return 11;if(a===jb)return 14}return 2}\nfunction Sg(a,b){var c=a.alternate;null===c?(c=Sh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{expirationTime:b.expirationTime,\nfirstContext:b.firstContext,responders:b.responders};c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Ug(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bi(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ab:return Wg(c.children,e,f,b);case fb:g=8;e|=7;break;case bb:g=8;e|=1;break;case cb:return a=Sh(12,c,b,e|8),a.elementType=cb,a.type=cb,a.expirationTime=f,a;case hb:return a=Sh(13,c,b,e),a.type=hb,a.elementType=hb,a.expirationTime=f,a;case ib:return a=Sh(19,c,b,e),a.elementType=ib,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case db:g=\n10;break a;case eb:g=9;break a;case gb:g=11;break a;case jb:g=14;break a;case kb:g=16;d=null;break a;case lb:g=22;break a}throw Error(u(130,null==a?a:typeof a,\"\"));}b=Sh(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Wg(a,b,c,d){a=Sh(7,a,d,b);a.expirationTime=c;return a}function Tg(a,b,c){a=Sh(6,a,null,b);a.expirationTime=c;return a}\nfunction Vg(a,b,c){b=Sh(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction ak(a,b,c){this.tag=b;this.current=null;this.containerInfo=a;this.pingCache=this.pendingChildren=null;this.finishedExpirationTime=0;this.finishedWork=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=90;this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}\nfunction Aj(a,b){var c=a.firstSuspendedTime;a=a.lastSuspendedTime;return 0!==c&&c>=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;c<b&&(a.firstSuspendedTime=b);if(d>b||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime<b&&(a.retryTime=b)}function ek(a,b){dk(a,b);(a=a.alternate)&&dk(a,b)}\nfunction fk(a,b,c){c=null!=c&&!0===c.hydrate;var d=new ak(a,b,c),e=Sh(3,null,null,2===b?7:1===b?3:0);d.current=e;e.stateNode=d;ug(e);a[Od]=d.current;c&&0!==b&&Jc(a,9===a.nodeType?a:a.ownerDocument);this._internalRoot=d}fk.prototype.render=function(a){bk(a,this._internalRoot,null,null)};fk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;bk(null,a,null,function(){b[Od]=null})};\nfunction gk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function hk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new fk(a,0,b?{hydrate:!0}:void 0)}\nfunction ik(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=ck(g);h.call(a)}}bk(b,g,a,e)}else{f=c._reactRootContainer=hk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=ck(g);k.call(a)}}Nj(function(){bk(b,g,a,e)})}return ck(g)}function jk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:$a,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nwc=function(a){if(13===a.tag){var b=hg(Gg(),150,100);Ig(a,b);ek(a,b)}};xc=function(a){13===a.tag&&(Ig(a,3),ek(a,3))};yc=function(a){if(13===a.tag){var b=Gg();b=Hg(b,a,null);Ig(a,b);ek(a,b)}};\nza=function(a,b,c){switch(b){case \"input\":Cb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Qd(d);if(!e)throw Error(u(90));yb(d);Cb(d,e)}}}break;case \"textarea\":Kb(a,c);break;case \"select\":b=c.value,null!=b&&Hb(a,!!c.multiple,b,!1)}};Fa=Mj;\nGa=function(a,b,c,d,e){var f=W;W|=4;try{return cg(98,a.bind(null,b,c,d,e))}finally{W=f,W===V&&gg()}};Ha=function(){(W&(1|fj|gj))===V&&(Lj(),Dj())};Ia=function(a,b){var c=W;W|=2;try{return a(b)}finally{W=c,W===V&&gg()}};function kk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!gk(b))throw Error(u(200));return jk(a,b,null,c)}var lk={Events:[Nc,Pd,Qd,xa,ta,Xd,function(a){jc(a,Wd)},Da,Ea,id,mc,Dj,{current:!1}]};\n(function(a){var b=a.findFiberByHostInstance;return Yj(n({},a,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Wa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hc(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))})({findFiberByHostInstance:tc,bundleType:0,version:\"16.14.0\",\nrendererPackageName:\"react-dom\"});exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lk;exports.createPortal=kk;exports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;if(void 0===b){if(\"function\"===typeof a.render)throw Error(u(188));throw Error(u(268,Object.keys(a)));}a=hc(b);a=null===a?null:a.stateNode;return a};\nexports.flushSync=function(a,b){if((W&(fj|gj))!==V)throw Error(u(187));var c=W;W|=1;try{return cg(99,a.bind(null,b))}finally{W=c,gg()}};exports.hydrate=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!0,c)};exports.render=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!1,c)};\nexports.unmountComponentAtNode=function(a){if(!gk(a))throw Error(u(40));return a._reactRootContainer?(Nj(function(){ik(null,null,a,!1,function(){a._reactRootContainer=null;a[Od]=null})}),!0):!1};exports.unstable_batchedUpdates=Mj;exports.unstable_createPortal=function(a,b){return kk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!gk(c))throw Error(u(200));if(null==a||void 0===a._reactInternalFiber)throw Error(u(38));return ik(a,b,c,!1,d)};exports.version=\"16.14.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","/* (ignored) */","// This file was generated. Do not modify manually!\nvar astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\n// This file was generated. Do not modify manually!\nvar astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191];\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7cd\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7dc\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range.\n\n// Reserved word lists for various dialects of the language\n\nvar reservedWords = {\n  3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n  5: \"class enum extends super const export import\",\n  6: \"enum\",\n  strict: \"implements interface let package private protected public static yield\",\n  strictBind: \"eval arguments\"\n};\n\n// And the keywords\n\nvar ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\nvar keywords$1 = {\n  5: ecma5AndLessKeywords,\n  \"5module\": ecma5AndLessKeywords + \" export import\",\n  6: ecma5AndLessKeywords + \" const class extends export import super\"\n};\n\nvar keywordRelationalOperator = /^in(stanceof)?$/;\n\n// ## Character categories\n\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n  var pos = 0x10000;\n  for (var i = 0; i < set.length; i += 2) {\n    pos += set[i];\n    if (pos > code) { return false }\n    pos += set[i + 1];\n    if (pos >= code) { return true }\n  }\n  return false\n}\n\n// Test whether a given character code starts an identifier.\n\nfunction isIdentifierStart(code, astral) {\n  if (code < 65) { return code === 36 }\n  if (code < 91) { return true }\n  if (code < 97) { return code === 95 }\n  if (code < 123) { return true }\n  if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) }\n  if (astral === false) { return false }\n  return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nfunction isIdentifierChar(code, astral) {\n  if (code < 48) { return code === 36 }\n  if (code < 58) { return true }\n  if (code < 65) { return false }\n  if (code < 91) { return true }\n  if (code < 97) { return code === 95 }\n  if (code < 123) { return true }\n  if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) }\n  if (astral === false) { return false }\n  return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar TokenType = function TokenType(label, conf) {\n  if ( conf === void 0 ) conf = {};\n\n  this.label = label;\n  this.keyword = conf.keyword;\n  this.beforeExpr = !!conf.beforeExpr;\n  this.startsExpr = !!conf.startsExpr;\n  this.isLoop = !!conf.isLoop;\n  this.isAssign = !!conf.isAssign;\n  this.prefix = !!conf.prefix;\n  this.postfix = !!conf.postfix;\n  this.binop = conf.binop || null;\n  this.updateContext = null;\n};\n\nfunction binop(name, prec) {\n  return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nvar beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true};\n\n// Map keyword names to token types.\n\nvar keywords = {};\n\n// Succinct definitions of keyword token types\nfunction kw(name, options) {\n  if ( options === void 0 ) options = {};\n\n  options.keyword = name;\n  return keywords[name] = new TokenType(name, options)\n}\n\nvar types$1 = {\n  num: new TokenType(\"num\", startsExpr),\n  regexp: new TokenType(\"regexp\", startsExpr),\n  string: new TokenType(\"string\", startsExpr),\n  name: new TokenType(\"name\", startsExpr),\n  privateId: new TokenType(\"privateId\", startsExpr),\n  eof: new TokenType(\"eof\"),\n\n  // Punctuation token types.\n  bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n  bracketR: new TokenType(\"]\"),\n  braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n  braceR: new TokenType(\"}\"),\n  parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n  parenR: new TokenType(\")\"),\n  comma: new TokenType(\",\", beforeExpr),\n  semi: new TokenType(\";\", beforeExpr),\n  colon: new TokenType(\":\", beforeExpr),\n  dot: new TokenType(\".\"),\n  question: new TokenType(\"?\", beforeExpr),\n  questionDot: new TokenType(\"?.\"),\n  arrow: new TokenType(\"=>\", beforeExpr),\n  template: new TokenType(\"template\"),\n  invalidTemplate: new TokenType(\"invalidTemplate\"),\n  ellipsis: new TokenType(\"...\", beforeExpr),\n  backQuote: new TokenType(\"`\", startsExpr),\n  dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n  // Operators. These carry several kinds of properties to help the\n  // parser use them properly (the presence of these properties is\n  // what categorizes them as operators).\n  //\n  // `binop`, when present, specifies that this operator is a binary\n  // operator, and will refer to its precedence.\n  //\n  // `prefix` and `postfix` mark the operator as a prefix or postfix\n  // unary operator.\n  //\n  // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n  // binary operators with a very low precedence, that should result\n  // in AssignmentExpression nodes.\n\n  eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n  assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n  incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n  prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n  logicalOR: binop(\"||\", 1),\n  logicalAND: binop(\"&&\", 2),\n  bitwiseOR: binop(\"|\", 3),\n  bitwiseXOR: binop(\"^\", 4),\n  bitwiseAND: binop(\"&\", 5),\n  equality: binop(\"==/!=/===/!==\", 6),\n  relational: binop(\"</>/<=/>=\", 7),\n  bitShift: binop(\"<</>>/>>>\", 8),\n  plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n  modulo: binop(\"%\", 10),\n  star: binop(\"*\", 10),\n  slash: binop(\"/\", 10),\n  starstar: new TokenType(\"**\", {beforeExpr: true}),\n  coalesce: binop(\"??\", 1),\n\n  // Keyword token types.\n  _break: kw(\"break\"),\n  _case: kw(\"case\", beforeExpr),\n  _catch: kw(\"catch\"),\n  _continue: kw(\"continue\"),\n  _debugger: kw(\"debugger\"),\n  _default: kw(\"default\", beforeExpr),\n  _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n  _else: kw(\"else\", beforeExpr),\n  _finally: kw(\"finally\"),\n  _for: kw(\"for\", {isLoop: true}),\n  _function: kw(\"function\", startsExpr),\n  _if: kw(\"if\"),\n  _return: kw(\"return\", beforeExpr),\n  _switch: kw(\"switch\"),\n  _throw: kw(\"throw\", beforeExpr),\n  _try: kw(\"try\"),\n  _var: kw(\"var\"),\n  _const: kw(\"const\"),\n  _while: kw(\"while\", {isLoop: true}),\n  _with: kw(\"with\"),\n  _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n  _this: kw(\"this\", startsExpr),\n  _super: kw(\"super\", startsExpr),\n  _class: kw(\"class\", startsExpr),\n  _extends: kw(\"extends\", beforeExpr),\n  _export: kw(\"export\"),\n  _import: kw(\"import\", startsExpr),\n  _null: kw(\"null\", startsExpr),\n  _true: kw(\"true\", startsExpr),\n  _false: kw(\"false\", startsExpr),\n  _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n  _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n  _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n  _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n  _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n};\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\nvar lineBreakG = new RegExp(lineBreak.source, \"g\");\n\nfunction isNewLine(code) {\n  return code === 10 || code === 13 || code === 0x2028 || code === 0x2029\n}\n\nfunction nextLineBreak(code, from, end) {\n  if ( end === void 0 ) end = code.length;\n\n  for (var i = from; i < end; i++) {\n    var next = code.charCodeAt(i);\n    if (isNewLine(next))\n      { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 }\n  }\n  return -1\n}\n\nvar nonASCIIwhitespace = /[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n\nvar skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nvar ref = Object.prototype;\nvar hasOwnProperty = ref.hasOwnProperty;\nvar toString = ref.toString;\n\nvar hasOwn = Object.hasOwn || (function (obj, propName) { return (\n  hasOwnProperty.call(obj, propName)\n); });\n\nvar isArray = Array.isArray || (function (obj) { return (\n  toString.call(obj) === \"[object Array]\"\n); });\n\nvar regexpCache = Object.create(null);\n\nfunction wordsRegexp(words) {\n  return regexpCache[words] || (regexpCache[words] = new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\"))\n}\n\nfunction codePointToString(code) {\n  // UTF-16 Decoding\n  if (code <= 0xFFFF) { return String.fromCharCode(code) }\n  code -= 0x10000;\n  return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\nvar loneSurrogate = /(?:[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/;\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = function Position(line, col) {\n  this.line = line;\n  this.column = col;\n};\n\nPosition.prototype.offset = function offset (n) {\n  return new Position(this.line, this.column + n)\n};\n\nvar SourceLocation = function SourceLocation(p, start, end) {\n  this.start = start;\n  this.end = end;\n  if (p.sourceFile !== null) { this.source = p.sourceFile; }\n};\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nfunction getLineInfo(input, offset) {\n  for (var line = 1, cur = 0;;) {\n    var nextBreak = nextLineBreak(input, cur, offset);\n    if (nextBreak < 0) { return new Position(line, offset - cur) }\n    ++line;\n    cur = nextBreak;\n  }\n}\n\n// A second argument must be given to configure the parser process.\n// These options are recognized (only `ecmaVersion` is required):\n\nvar defaultOptions = {\n  // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n  // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10\n  // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `\"latest\"`\n  // (the latest version the library supports). This influences\n  // support for strict mode, the set of reserved words, and support\n  // for new syntax features.\n  ecmaVersion: null,\n  // `sourceType` indicates the mode the code should be parsed in.\n  // Can be either `\"script\"` or `\"module\"`. This influences global\n  // strict mode and parsing of `import` and `export` declarations.\n  sourceType: \"script\",\n  // `onInsertedSemicolon` can be a callback that will be called when\n  // a semicolon is automatically inserted. It will be passed the\n  // position of the inserted semicolon as an offset, and if\n  // `locations` is enabled, it is given the location as a `{line,\n  // column}` object as second argument.\n  onInsertedSemicolon: null,\n  // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n  // trailing commas.\n  onTrailingComma: null,\n  // By default, reserved words are only enforced if ecmaVersion >= 5.\n  // Set `allowReserved` to a boolean value to explicitly turn this on\n  // an off. When this option has the value \"never\", reserved words\n  // and keywords can also not be used as property names.\n  allowReserved: null,\n  // When enabled, a return at the top level is not considered an\n  // error.\n  allowReturnOutsideFunction: false,\n  // When enabled, import/export statements are not constrained to\n  // appearing at the top of the program, and an import.meta expression\n  // in a script isn't considered an error.\n  allowImportExportEverywhere: false,\n  // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022.\n  // When enabled, await identifiers are allowed to appear at the top-level scope,\n  // but they are still not allowed in non-async functions.\n  allowAwaitOutsideFunction: null,\n  // When enabled, super identifiers are not constrained to\n  // appearing in methods and do not raise an error when they appear elsewhere.\n  allowSuperOutsideMethod: null,\n  // When enabled, hashbang directive in the beginning of file is\n  // allowed and treated as a line comment. Enabled by default when\n  // `ecmaVersion` >= 2023.\n  allowHashBang: false,\n  // By default, the parser will verify that private properties are\n  // only used in places where they are valid and have been declared.\n  // Set this to false to turn such checks off.\n  checkPrivateFields: true,\n  // When `locations` is on, `loc` properties holding objects with\n  // `start` and `end` properties in `{line, column}` form (with\n  // line being 1-based and column 0-based) will be attached to the\n  // nodes.\n  locations: false,\n  // A function can be passed as `onToken` option, which will\n  // cause Acorn to call that function with object in the same\n  // format as tokens returned from `tokenizer().getToken()`. Note\n  // that you are not allowed to call the parser from the\n  // callback—that will corrupt its internal state.\n  onToken: null,\n  // A function can be passed as `onComment` option, which will\n  // cause Acorn to call that function with `(block, text, start,\n  // end)` parameters whenever a comment is skipped. `block` is a\n  // boolean indicating whether this is a block (`/* */`) comment,\n  // `text` is the content of the comment, and `start` and `end` are\n  // character offsets that denote the start and end of the comment.\n  // When the `locations` option is on, two more parameters are\n  // passed, the full `{line, column}` locations of the start and\n  // end of the comments. Note that you are not allowed to call the\n  // parser from the callback—that will corrupt its internal state.\n  // When this option has an array as value, objects representing the\n  // comments are pushed to it.\n  onComment: null,\n  // Nodes have their start and end characters offsets recorded in\n  // `start` and `end` properties (directly on the node, rather than\n  // the `loc` object, which holds line/column data. To also add a\n  // [semi-standardized][range] `range` property holding a `[start,\n  // end]` array with the same numbers, set the `ranges` option to\n  // `true`.\n  //\n  // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n  ranges: false,\n  // It is possible to parse multiple files into a single AST by\n  // passing the tree produced by parsing the first file as\n  // `program` option in subsequent parses. This will add the\n  // toplevel forms of the parsed file to the `Program` (top) node\n  // of an existing parse tree.\n  program: null,\n  // When `locations` is on, you can pass this to record the source\n  // file in every node's `loc` object.\n  sourceFile: null,\n  // This value, if given, is stored in every node, whether\n  // `locations` is on or off.\n  directSourceFile: null,\n  // When enabled, parenthesized expressions are represented by\n  // (non-standard) ParenthesizedExpression nodes\n  preserveParens: false\n};\n\n// Interpret and default an options object\n\nvar warnedAboutEcmaVersion = false;\n\nfunction getOptions(opts) {\n  var options = {};\n\n  for (var opt in defaultOptions)\n    { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; }\n\n  if (options.ecmaVersion === \"latest\") {\n    options.ecmaVersion = 1e8;\n  } else if (options.ecmaVersion == null) {\n    if (!warnedAboutEcmaVersion && typeof console === \"object\" && console.warn) {\n      warnedAboutEcmaVersion = true;\n      console.warn(\"Since Acorn 8.0.0, options.ecmaVersion is required.\\nDefaulting to 2020, but this will stop working in the future.\");\n    }\n    options.ecmaVersion = 11;\n  } else if (options.ecmaVersion >= 2015) {\n    options.ecmaVersion -= 2009;\n  }\n\n  if (options.allowReserved == null)\n    { options.allowReserved = options.ecmaVersion < 5; }\n\n  if (!opts || opts.allowHashBang == null)\n    { options.allowHashBang = options.ecmaVersion >= 14; }\n\n  if (isArray(options.onToken)) {\n    var tokens = options.onToken;\n    options.onToken = function (token) { return tokens.push(token); };\n  }\n  if (isArray(options.onComment))\n    { options.onComment = pushComment(options, options.onComment); }\n\n  return options\n}\n\nfunction pushComment(options, array) {\n  return function(block, text, start, end, startLoc, endLoc) {\n    var comment = {\n      type: block ? \"Block\" : \"Line\",\n      value: text,\n      start: start,\n      end: end\n    };\n    if (options.locations)\n      { comment.loc = new SourceLocation(this, startLoc, endLoc); }\n    if (options.ranges)\n      { comment.range = [start, end]; }\n    array.push(comment);\n  }\n}\n\n// Each scope gets a bitset that may contain these flags\nvar\n    SCOPE_TOP = 1,\n    SCOPE_FUNCTION = 2,\n    SCOPE_ASYNC = 4,\n    SCOPE_GENERATOR = 8,\n    SCOPE_ARROW = 16,\n    SCOPE_SIMPLE_CATCH = 32,\n    SCOPE_SUPER = 64,\n    SCOPE_DIRECT_SUPER = 128,\n    SCOPE_CLASS_STATIC_BLOCK = 256,\n    SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK;\n\nfunction functionFlags(async, generator) {\n  return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n}\n\n// Used in checkLVal* and declareName to determine the type of a binding\nvar\n    BIND_NONE = 0, // Not a binding\n    BIND_VAR = 1, // Var-style binding\n    BIND_LEXICAL = 2, // Let- or const-style binding\n    BIND_FUNCTION = 3, // Function declaration\n    BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n    BIND_OUTSIDE = 5; // Special case for function names as bound inside the function\n\nvar Parser = function Parser(options, input, startPos) {\n  this.options = options = getOptions(options);\n  this.sourceFile = options.sourceFile;\n  this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === \"module\" ? \"5module\" : 5]);\n  var reserved = \"\";\n  if (options.allowReserved !== true) {\n    reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3];\n    if (options.sourceType === \"module\") { reserved += \" await\"; }\n  }\n  this.reservedWords = wordsRegexp(reserved);\n  var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict;\n  this.reservedWordsStrict = wordsRegexp(reservedStrict);\n  this.reservedWordsStrictBind = wordsRegexp(reservedStrict + \" \" + reservedWords.strictBind);\n  this.input = String(input);\n\n  // Used to signal to callers of `readWord1` whether the word\n  // contained any escape sequences. This is needed because words with\n  // escape sequences must not be interpreted as keywords.\n  this.containsEsc = false;\n\n  // Set up token state\n\n  // The current position of the tokenizer in the input.\n  if (startPos) {\n    this.pos = startPos;\n    this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n    this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length;\n  } else {\n    this.pos = this.lineStart = 0;\n    this.curLine = 1;\n  }\n\n  // Properties of the current token:\n  // Its type\n  this.type = types$1.eof;\n  // For tokens that include more information than their type, the value\n  this.value = null;\n  // Its start and end offset\n  this.start = this.end = this.pos;\n  // And, if locations are used, the {line, column} object\n  // corresponding to those offsets\n  this.startLoc = this.endLoc = this.curPosition();\n\n  // Position information for the previous token\n  this.lastTokEndLoc = this.lastTokStartLoc = null;\n  this.lastTokStart = this.lastTokEnd = this.pos;\n\n  // The context stack is used to superficially track syntactic\n  // context to predict whether a regular expression is allowed in a\n  // given position.\n  this.context = this.initialContext();\n  this.exprAllowed = true;\n\n  // Figure out if it's a module code.\n  this.inModule = options.sourceType === \"module\";\n  this.strict = this.inModule || this.strictDirective(this.pos);\n\n  // Used to signify the start of a potential arrow function\n  this.potentialArrowAt = -1;\n  this.potentialArrowInForAwait = false;\n\n  // Positions to delayed-check that yield/await does not exist in default parameters.\n  this.yieldPos = this.awaitPos = this.awaitIdentPos = 0;\n  // Labels in scope.\n  this.labels = [];\n  // Thus-far undefined exports.\n  this.undefinedExports = Object.create(null);\n\n  // If enabled, skip leading hashbang line.\n  if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n    { this.skipLineComment(2); }\n\n  // Scope tracking for duplicate variable names (see scope.js)\n  this.scopeStack = [];\n  this.enterScope(SCOPE_TOP);\n\n  // For RegExp validation\n  this.regexpState = null;\n\n  // The stack of private names.\n  // Each element has two properties: 'declared' and 'used'.\n  // When it exited from the outermost class definition, all used private names must be declared.\n  this.privateNameStack = [];\n};\n\nvar prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },inClassStaticBlock: { configurable: true } };\n\nParser.prototype.parse = function parse () {\n  var node = this.options.program || this.startNode();\n  this.nextToken();\n  return this.parseTopLevel(node)\n};\n\nprototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 };\n\nprototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 && !this.currentVarScope().inClassFieldInit };\n\nprototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 && !this.currentVarScope().inClassFieldInit };\n\nprototypeAccessors.canAwait.get = function () {\n  for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n    var scope = this.scopeStack[i];\n    if (scope.inClassFieldInit || scope.flags & SCOPE_CLASS_STATIC_BLOCK) { return false }\n    if (scope.flags & SCOPE_FUNCTION) { return (scope.flags & SCOPE_ASYNC) > 0 }\n  }\n  return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction\n};\n\nprototypeAccessors.allowSuper.get = function () {\n  var ref = this.currentThisScope();\n    var flags = ref.flags;\n    var inClassFieldInit = ref.inClassFieldInit;\n  return (flags & SCOPE_SUPER) > 0 || inClassFieldInit || this.options.allowSuperOutsideMethod\n};\n\nprototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 };\n\nprototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) };\n\nprototypeAccessors.allowNewDotTarget.get = function () {\n  var ref = this.currentThisScope();\n    var flags = ref.flags;\n    var inClassFieldInit = ref.inClassFieldInit;\n  return (flags & (SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK)) > 0 || inClassFieldInit\n};\n\nprototypeAccessors.inClassStaticBlock.get = function () {\n  return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0\n};\n\nParser.extend = function extend () {\n    var plugins = [], len = arguments.length;\n    while ( len-- ) plugins[ len ] = arguments[ len ];\n\n  var cls = this;\n  for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); }\n  return cls\n};\n\nParser.parse = function parse (input, options) {\n  return new this(options, input).parse()\n};\n\nParser.parseExpressionAt = function parseExpressionAt (input, pos, options) {\n  var parser = new this(options, input, pos);\n  parser.nextToken();\n  return parser.parseExpression()\n};\n\nParser.tokenizer = function tokenizer (input, options) {\n  return new this(options, input)\n};\n\nObject.defineProperties( Parser.prototype, prototypeAccessors );\n\nvar pp$9 = Parser.prototype;\n\n// ## Parser utilities\n\nvar literal = /^(?:'((?:\\\\[^]|[^'\\\\])*?)'|\"((?:\\\\[^]|[^\"\\\\])*?)\")/;\npp$9.strictDirective = function(start) {\n  if (this.options.ecmaVersion < 5) { return false }\n  for (;;) {\n    // Try to find string literal.\n    skipWhiteSpace.lastIndex = start;\n    start += skipWhiteSpace.exec(this.input)[0].length;\n    var match = literal.exec(this.input.slice(start));\n    if (!match) { return false }\n    if ((match[1] || match[2]) === \"use strict\") {\n      skipWhiteSpace.lastIndex = start + match[0].length;\n      var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length;\n      var next = this.input.charAt(end);\n      return next === \";\" || next === \"}\" ||\n        (lineBreak.test(spaceAfter[0]) &&\n         !(/[(`.[+\\-/*%<>=,?^&]/.test(next) || next === \"!\" && this.input.charAt(end + 1) === \"=\"))\n    }\n    start += match[0].length;\n\n    // Skip semicolon, if any.\n    skipWhiteSpace.lastIndex = start;\n    start += skipWhiteSpace.exec(this.input)[0].length;\n    if (this.input[start] === \";\")\n      { start++; }\n  }\n};\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp$9.eat = function(type) {\n  if (this.type === type) {\n    this.next();\n    return true\n  } else {\n    return false\n  }\n};\n\n// Tests whether parsed token is a contextual keyword.\n\npp$9.isContextual = function(name) {\n  return this.type === types$1.name && this.value === name && !this.containsEsc\n};\n\n// Consumes contextual keyword if possible.\n\npp$9.eatContextual = function(name) {\n  if (!this.isContextual(name)) { return false }\n  this.next();\n  return true\n};\n\n// Asserts that following token is given contextual keyword.\n\npp$9.expectContextual = function(name) {\n  if (!this.eatContextual(name)) { this.unexpected(); }\n};\n\n// Test whether a semicolon can be inserted at the current position.\n\npp$9.canInsertSemicolon = function() {\n  return this.type === types$1.eof ||\n    this.type === types$1.braceR ||\n    lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\npp$9.insertSemicolon = function() {\n  if (this.canInsertSemicolon()) {\n    if (this.options.onInsertedSemicolon)\n      { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); }\n    return true\n  }\n};\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp$9.semicolon = function() {\n  if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); }\n};\n\npp$9.afterTrailingComma = function(tokType, notNext) {\n  if (this.type === tokType) {\n    if (this.options.onTrailingComma)\n      { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }\n    if (!notNext)\n      { this.next(); }\n    return true\n  }\n};\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp$9.expect = function(type) {\n  this.eat(type) || this.unexpected();\n};\n\n// Raise an unexpected token error.\n\npp$9.unexpected = function(pos) {\n  this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n};\n\nvar DestructuringErrors = function DestructuringErrors() {\n  this.shorthandAssign =\n  this.trailingComma =\n  this.parenthesizedAssign =\n  this.parenthesizedBind =\n  this.doubleProto =\n    -1;\n};\n\npp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n  if (!refDestructuringErrors) { return }\n  if (refDestructuringErrors.trailingComma > -1)\n    { this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\"); }\n  var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;\n  if (parens > -1) { this.raiseRecoverable(parens, isAssign ? \"Assigning to rvalue\" : \"Parenthesized pattern\"); }\n};\n\npp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n  if (!refDestructuringErrors) { return false }\n  var shorthandAssign = refDestructuringErrors.shorthandAssign;\n  var doubleProto = refDestructuringErrors.doubleProto;\n  if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 }\n  if (shorthandAssign >= 0)\n    { this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\"); }\n  if (doubleProto >= 0)\n    { this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\"); }\n};\n\npp$9.checkYieldAwaitInDefaultParams = function() {\n  if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n    { this.raise(this.yieldPos, \"Yield expression cannot be a default value\"); }\n  if (this.awaitPos)\n    { this.raise(this.awaitPos, \"Await expression cannot be a default value\"); }\n};\n\npp$9.isSimpleAssignTarget = function(expr) {\n  if (expr.type === \"ParenthesizedExpression\")\n    { return this.isSimpleAssignTarget(expr.expression) }\n  return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n};\n\nvar pp$8 = Parser.prototype;\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node.  Optionally takes a\n// `program` argument.  If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp$8.parseTopLevel = function(node) {\n  var exports = Object.create(null);\n  if (!node.body) { node.body = []; }\n  while (this.type !== types$1.eof) {\n    var stmt = this.parseStatement(null, true, exports);\n    node.body.push(stmt);\n  }\n  if (this.inModule)\n    { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1)\n      {\n        var name = list[i];\n\n        this.raiseRecoverable(this.undefinedExports[name].start, (\"Export '\" + name + \"' is not defined\"));\n      } }\n  this.adaptDirectivePrologue(node.body);\n  this.next();\n  node.sourceType = this.options.sourceType;\n  return this.finishNode(node, \"Program\")\n};\n\nvar loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"};\n\npp$8.isLet = function(context) {\n  if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) { return false }\n  skipWhiteSpace.lastIndex = this.pos;\n  var skip = skipWhiteSpace.exec(this.input);\n  var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n  // For ambiguous cases, determine if a LexicalDeclaration (or only a\n  // Statement) is allowed here. If context is not empty then only a Statement\n  // is allowed. However, `let [` is an explicit negative lookahead for\n  // ExpressionStatement, so special-case it first.\n  if (nextCh === 91 || nextCh === 92) { return true } // '[', '\\'\n  if (context) { return false }\n\n  if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral\n  if (isIdentifierStart(nextCh, true)) {\n    var pos = next + 1;\n    while (isIdentifierChar(nextCh = this.input.charCodeAt(pos), true)) { ++pos; }\n    if (nextCh === 92 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true }\n    var ident = this.input.slice(next, pos);\n    if (!keywordRelationalOperator.test(ident)) { return true }\n  }\n  return false\n};\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp$8.isAsyncFunction = function() {\n  if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n    { return false }\n\n  skipWhiteSpace.lastIndex = this.pos;\n  var skip = skipWhiteSpace.exec(this.input);\n  var next = this.pos + skip[0].length, after;\n  return !lineBreak.test(this.input.slice(this.pos, next)) &&\n    this.input.slice(next, next + 8) === \"function\" &&\n    (next + 8 === this.input.length ||\n     !(isIdentifierChar(after = this.input.charCodeAt(next + 8)) || after > 0xd7ff && after < 0xdc00))\n};\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp$8.parseStatement = function(context, topLevel, exports) {\n  var starttype = this.type, node = this.startNode(), kind;\n\n  if (this.isLet(context)) {\n    starttype = types$1._var;\n    kind = \"let\";\n  }\n\n  // Most types of statements are recognized by the keyword they\n  // start with. Many are trivial to parse, some require a bit of\n  // complexity.\n\n  switch (starttype) {\n  case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n  case types$1._debugger: return this.parseDebuggerStatement(node)\n  case types$1._do: return this.parseDoStatement(node)\n  case types$1._for: return this.parseForStatement(node)\n  case types$1._function:\n    // Function as sole body of either an if statement or a labeled statement\n    // works, but not when it is part of a labeled statement that is the sole\n    // body of an if statement.\n    if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) { this.unexpected(); }\n    return this.parseFunctionStatement(node, false, !context)\n  case types$1._class:\n    if (context) { this.unexpected(); }\n    return this.parseClass(node, true)\n  case types$1._if: return this.parseIfStatement(node)\n  case types$1._return: return this.parseReturnStatement(node)\n  case types$1._switch: return this.parseSwitchStatement(node)\n  case types$1._throw: return this.parseThrowStatement(node)\n  case types$1._try: return this.parseTryStatement(node)\n  case types$1._const: case types$1._var:\n    kind = kind || this.value;\n    if (context && kind !== \"var\") { this.unexpected(); }\n    return this.parseVarStatement(node, kind)\n  case types$1._while: return this.parseWhileStatement(node)\n  case types$1._with: return this.parseWithStatement(node)\n  case types$1.braceL: return this.parseBlock(true, node)\n  case types$1.semi: return this.parseEmptyStatement(node)\n  case types$1._export:\n  case types$1._import:\n    if (this.options.ecmaVersion > 10 && starttype === types$1._import) {\n      skipWhiteSpace.lastIndex = this.pos;\n      var skip = skipWhiteSpace.exec(this.input);\n      var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n      if (nextCh === 40 || nextCh === 46) // '(' or '.'\n        { return this.parseExpressionStatement(node, this.parseExpression()) }\n    }\n\n    if (!this.options.allowImportExportEverywhere) {\n      if (!topLevel)\n        { this.raise(this.start, \"'import' and 'export' may only appear at the top level\"); }\n      if (!this.inModule)\n        { this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\"); }\n    }\n    return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n    // If the statement does not start with a statement keyword or a\n    // brace, it's an ExpressionStatement or LabeledStatement. We\n    // simply start parsing an expression, and afterwards, if the\n    // next token is a colon and the expression was a simple\n    // Identifier node, we switch to interpreting it as a label.\n  default:\n    if (this.isAsyncFunction()) {\n      if (context) { this.unexpected(); }\n      this.next();\n      return this.parseFunctionStatement(node, true, !context)\n    }\n\n    var maybeName = this.value, expr = this.parseExpression();\n    if (starttype === types$1.name && expr.type === \"Identifier\" && this.eat(types$1.colon))\n      { return this.parseLabeledStatement(node, maybeName, expr, context) }\n    else { return this.parseExpressionStatement(node, expr) }\n  }\n};\n\npp$8.parseBreakContinueStatement = function(node, keyword) {\n  var isBreak = keyword === \"break\";\n  this.next();\n  if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; }\n  else if (this.type !== types$1.name) { this.unexpected(); }\n  else {\n    node.label = this.parseIdent();\n    this.semicolon();\n  }\n\n  // Verify that there is an actual destination to break or\n  // continue to.\n  var i = 0;\n  for (; i < this.labels.length; ++i) {\n    var lab = this.labels[i];\n    if (node.label == null || lab.name === node.label.name) {\n      if (lab.kind != null && (isBreak || lab.kind === \"loop\")) { break }\n      if (node.label && isBreak) { break }\n    }\n  }\n  if (i === this.labels.length) { this.raise(node.start, \"Unsyntactic \" + keyword); }\n  return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n};\n\npp$8.parseDebuggerStatement = function(node) {\n  this.next();\n  this.semicolon();\n  return this.finishNode(node, \"DebuggerStatement\")\n};\n\npp$8.parseDoStatement = function(node) {\n  this.next();\n  this.labels.push(loopLabel);\n  node.body = this.parseStatement(\"do\");\n  this.labels.pop();\n  this.expect(types$1._while);\n  node.test = this.parseParenExpression();\n  if (this.options.ecmaVersion >= 6)\n    { this.eat(types$1.semi); }\n  else\n    { this.semicolon(); }\n  return this.finishNode(node, \"DoWhileStatement\")\n};\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp$8.parseForStatement = function(node) {\n  this.next();\n  var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual(\"await\")) ? this.lastTokStart : -1;\n  this.labels.push(loopLabel);\n  this.enterScope(0);\n  this.expect(types$1.parenL);\n  if (this.type === types$1.semi) {\n    if (awaitAt > -1) { this.unexpected(awaitAt); }\n    return this.parseFor(node, null)\n  }\n  var isLet = this.isLet();\n  if (this.type === types$1._var || this.type === types$1._const || isLet) {\n    var init$1 = this.startNode(), kind = isLet ? \"let\" : this.value;\n    this.next();\n    this.parseVar(init$1, true, kind);\n    this.finishNode(init$1, \"VariableDeclaration\");\n    if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init$1.declarations.length === 1) {\n      if (this.options.ecmaVersion >= 9) {\n        if (this.type === types$1._in) {\n          if (awaitAt > -1) { this.unexpected(awaitAt); }\n        } else { node.await = awaitAt > -1; }\n      }\n      return this.parseForIn(node, init$1)\n    }\n    if (awaitAt > -1) { this.unexpected(awaitAt); }\n    return this.parseFor(node, init$1)\n  }\n  var startsWithLet = this.isContextual(\"let\"), isForOf = false;\n  var containsEsc = this.containsEsc;\n  var refDestructuringErrors = new DestructuringErrors;\n  var initPos = this.start;\n  var init = awaitAt > -1\n    ? this.parseExprSubscripts(refDestructuringErrors, \"await\")\n    : this.parseExpression(true, refDestructuringErrors);\n  if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n    if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt)\n      if (this.type === types$1._in) { this.unexpected(awaitAt); }\n      node.await = true;\n    } else if (isForOf && this.options.ecmaVersion >= 8) {\n      if (init.start === initPos && !containsEsc && init.type === \"Identifier\" && init.name === \"async\") { this.unexpected(); }\n      else if (this.options.ecmaVersion >= 9) { node.await = false; }\n    }\n    if (startsWithLet && isForOf) { this.raise(init.start, \"The left-hand side of a for-of loop may not start with 'let'.\"); }\n    this.toAssignable(init, false, refDestructuringErrors);\n    this.checkLValPattern(init);\n    return this.parseForIn(node, init)\n  } else {\n    this.checkExpressionErrors(refDestructuringErrors, true);\n  }\n  if (awaitAt > -1) { this.unexpected(awaitAt); }\n  return this.parseFor(node, init)\n};\n\npp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n  this.next();\n  return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n};\n\npp$8.parseIfStatement = function(node) {\n  this.next();\n  node.test = this.parseParenExpression();\n  // allow function declarations in branches, but only in non-strict mode\n  node.consequent = this.parseStatement(\"if\");\n  node.alternate = this.eat(types$1._else) ? this.parseStatement(\"if\") : null;\n  return this.finishNode(node, \"IfStatement\")\n};\n\npp$8.parseReturnStatement = function(node) {\n  if (!this.inFunction && !this.options.allowReturnOutsideFunction)\n    { this.raise(this.start, \"'return' outside of function\"); }\n  this.next();\n\n  // In `return` (and `break`/`continue`), the keywords with\n  // optional arguments, we eagerly look for a semicolon or the\n  // possibility to insert one.\n\n  if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; }\n  else { node.argument = this.parseExpression(); this.semicolon(); }\n  return this.finishNode(node, \"ReturnStatement\")\n};\n\npp$8.parseSwitchStatement = function(node) {\n  this.next();\n  node.discriminant = this.parseParenExpression();\n  node.cases = [];\n  this.expect(types$1.braceL);\n  this.labels.push(switchLabel);\n  this.enterScope(0);\n\n  // Statements under must be grouped (by label) in SwitchCase\n  // nodes. `cur` is used to keep the node that we are currently\n  // adding statements to.\n\n  var cur;\n  for (var sawDefault = false; this.type !== types$1.braceR;) {\n    if (this.type === types$1._case || this.type === types$1._default) {\n      var isCase = this.type === types$1._case;\n      if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n      node.cases.push(cur = this.startNode());\n      cur.consequent = [];\n      this.next();\n      if (isCase) {\n        cur.test = this.parseExpression();\n      } else {\n        if (sawDefault) { this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\"); }\n        sawDefault = true;\n        cur.test = null;\n      }\n      this.expect(types$1.colon);\n    } else {\n      if (!cur) { this.unexpected(); }\n      cur.consequent.push(this.parseStatement(null));\n    }\n  }\n  this.exitScope();\n  if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n  this.next(); // Closing brace\n  this.labels.pop();\n  return this.finishNode(node, \"SwitchStatement\")\n};\n\npp$8.parseThrowStatement = function(node) {\n  this.next();\n  if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n    { this.raise(this.lastTokEnd, \"Illegal newline after throw\"); }\n  node.argument = this.parseExpression();\n  this.semicolon();\n  return this.finishNode(node, \"ThrowStatement\")\n};\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty$1 = [];\n\npp$8.parseCatchClauseParam = function() {\n  var param = this.parseBindingAtom();\n  var simple = param.type === \"Identifier\";\n  this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0);\n  this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL);\n  this.expect(types$1.parenR);\n\n  return param\n};\n\npp$8.parseTryStatement = function(node) {\n  this.next();\n  node.block = this.parseBlock();\n  node.handler = null;\n  if (this.type === types$1._catch) {\n    var clause = this.startNode();\n    this.next();\n    if (this.eat(types$1.parenL)) {\n      clause.param = this.parseCatchClauseParam();\n    } else {\n      if (this.options.ecmaVersion < 10) { this.unexpected(); }\n      clause.param = null;\n      this.enterScope(0);\n    }\n    clause.body = this.parseBlock(false);\n    this.exitScope();\n    node.handler = this.finishNode(clause, \"CatchClause\");\n  }\n  node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null;\n  if (!node.handler && !node.finalizer)\n    { this.raise(node.start, \"Missing catch or finally clause\"); }\n  return this.finishNode(node, \"TryStatement\")\n};\n\npp$8.parseVarStatement = function(node, kind, allowMissingInitializer) {\n  this.next();\n  this.parseVar(node, false, kind, allowMissingInitializer);\n  this.semicolon();\n  return this.finishNode(node, \"VariableDeclaration\")\n};\n\npp$8.parseWhileStatement = function(node) {\n  this.next();\n  node.test = this.parseParenExpression();\n  this.labels.push(loopLabel);\n  node.body = this.parseStatement(\"while\");\n  this.labels.pop();\n  return this.finishNode(node, \"WhileStatement\")\n};\n\npp$8.parseWithStatement = function(node) {\n  if (this.strict) { this.raise(this.start, \"'with' in strict mode\"); }\n  this.next();\n  node.object = this.parseParenExpression();\n  node.body = this.parseStatement(\"with\");\n  return this.finishNode(node, \"WithStatement\")\n};\n\npp$8.parseEmptyStatement = function(node) {\n  this.next();\n  return this.finishNode(node, \"EmptyStatement\")\n};\n\npp$8.parseLabeledStatement = function(node, maybeName, expr, context) {\n  for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1)\n    {\n    var label = list[i$1];\n\n    if (label.name === maybeName)\n      { this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n  } }\n  var kind = this.type.isLoop ? \"loop\" : this.type === types$1._switch ? \"switch\" : null;\n  for (var i = this.labels.length - 1; i >= 0; i--) {\n    var label$1 = this.labels[i];\n    if (label$1.statementStart === node.start) {\n      // Update information about previous labels on this node\n      label$1.statementStart = this.start;\n      label$1.kind = kind;\n    } else { break }\n  }\n  this.labels.push({name: maybeName, kind: kind, statementStart: this.start});\n  node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n  this.labels.pop();\n  node.label = expr;\n  return this.finishNode(node, \"LabeledStatement\")\n};\n\npp$8.parseExpressionStatement = function(node, expr) {\n  node.expression = expr;\n  this.semicolon();\n  return this.finishNode(node, \"ExpressionStatement\")\n};\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) {\n  if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;\n  if ( node === void 0 ) node = this.startNode();\n\n  node.body = [];\n  this.expect(types$1.braceL);\n  if (createNewLexicalScope) { this.enterScope(0); }\n  while (this.type !== types$1.braceR) {\n    var stmt = this.parseStatement(null);\n    node.body.push(stmt);\n  }\n  if (exitStrict) { this.strict = false; }\n  this.next();\n  if (createNewLexicalScope) { this.exitScope(); }\n  return this.finishNode(node, \"BlockStatement\")\n};\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp$8.parseFor = function(node, init) {\n  node.init = init;\n  this.expect(types$1.semi);\n  node.test = this.type === types$1.semi ? null : this.parseExpression();\n  this.expect(types$1.semi);\n  node.update = this.type === types$1.parenR ? null : this.parseExpression();\n  this.expect(types$1.parenR);\n  node.body = this.parseStatement(\"for\");\n  this.exitScope();\n  this.labels.pop();\n  return this.finishNode(node, \"ForStatement\")\n};\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp$8.parseForIn = function(node, init) {\n  var isForIn = this.type === types$1._in;\n  this.next();\n\n  if (\n    init.type === \"VariableDeclaration\" &&\n    init.declarations[0].init != null &&\n    (\n      !isForIn ||\n      this.options.ecmaVersion < 8 ||\n      this.strict ||\n      init.kind !== \"var\" ||\n      init.declarations[0].id.type !== \"Identifier\"\n    )\n  ) {\n    this.raise(\n      init.start,\n      ((isForIn ? \"for-in\" : \"for-of\") + \" loop variable declaration may not have an initializer\")\n    );\n  }\n  node.left = init;\n  node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();\n  this.expect(types$1.parenR);\n  node.body = this.parseStatement(\"for\");\n  this.exitScope();\n  this.labels.pop();\n  return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\")\n};\n\n// Parse a list of variable declarations.\n\npp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) {\n  node.declarations = [];\n  node.kind = kind;\n  for (;;) {\n    var decl = this.startNode();\n    this.parseVarId(decl, kind);\n    if (this.eat(types$1.eq)) {\n      decl.init = this.parseMaybeAssign(isFor);\n    } else if (!allowMissingInitializer && kind === \"const\" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n      this.unexpected();\n    } else if (!allowMissingInitializer && decl.id.type !== \"Identifier\" && !(isFor && (this.type === types$1._in || this.isContextual(\"of\")))) {\n      this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\");\n    } else {\n      decl.init = null;\n    }\n    node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n    if (!this.eat(types$1.comma)) { break }\n  }\n  return node\n};\n\npp$8.parseVarId = function(decl, kind) {\n  decl.id = this.parseBindingAtom();\n  this.checkLValPattern(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false);\n};\n\nvar FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4;\n\n// Parse a function declaration or literal (depending on the\n// `statement & FUNC_STATEMENT`).\n\n// Remove `allowExpressionBody` for 7.0.0, as it is only called with false\npp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) {\n  this.initFunction(node);\n  if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n    if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT))\n      { this.unexpected(); }\n    node.generator = this.eat(types$1.star);\n  }\n  if (this.options.ecmaVersion >= 8)\n    { node.async = !!isAsync; }\n\n  if (statement & FUNC_STATEMENT) {\n    node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent();\n    if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n      // If it is a regular function declaration in sloppy mode, then it is\n      // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n      // mode depends on properties of the current scope (see\n      // treatFunctionsAsVar).\n      { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); }\n  }\n\n  var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n  this.yieldPos = 0;\n  this.awaitPos = 0;\n  this.awaitIdentPos = 0;\n  this.enterScope(functionFlags(node.async, node.generator));\n\n  if (!(statement & FUNC_STATEMENT))\n    { node.id = this.type === types$1.name ? this.parseIdent() : null; }\n\n  this.parseFunctionParams(node);\n  this.parseFunctionBody(node, allowExpressionBody, false, forInit);\n\n  this.yieldPos = oldYieldPos;\n  this.awaitPos = oldAwaitPos;\n  this.awaitIdentPos = oldAwaitIdentPos;\n  return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n};\n\npp$8.parseFunctionParams = function(node) {\n  this.expect(types$1.parenL);\n  node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n  this.checkYieldAwaitInDefaultParams();\n};\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$8.parseClass = function(node, isStatement) {\n  this.next();\n\n  // ecma-262 14.6 Class Definitions\n  // A class definition is always strict mode code.\n  var oldStrict = this.strict;\n  this.strict = true;\n\n  this.parseClassId(node, isStatement);\n  this.parseClassSuper(node);\n  var privateNameMap = this.enterClassBody();\n  var classBody = this.startNode();\n  var hadConstructor = false;\n  classBody.body = [];\n  this.expect(types$1.braceL);\n  while (this.type !== types$1.braceR) {\n    var element = this.parseClassElement(node.superClass !== null);\n    if (element) {\n      classBody.body.push(element);\n      if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n        if (hadConstructor) { this.raiseRecoverable(element.start, \"Duplicate constructor in the same class\"); }\n        hadConstructor = true;\n      } else if (element.key && element.key.type === \"PrivateIdentifier\" && isPrivateNameConflicted(privateNameMap, element)) {\n        this.raiseRecoverable(element.key.start, (\"Identifier '#\" + (element.key.name) + \"' has already been declared\"));\n      }\n    }\n  }\n  this.strict = oldStrict;\n  this.next();\n  node.body = this.finishNode(classBody, \"ClassBody\");\n  this.exitClassBody();\n  return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n};\n\npp$8.parseClassElement = function(constructorAllowsSuper) {\n  if (this.eat(types$1.semi)) { return null }\n\n  var ecmaVersion = this.options.ecmaVersion;\n  var node = this.startNode();\n  var keyName = \"\";\n  var isGenerator = false;\n  var isAsync = false;\n  var kind = \"method\";\n  var isStatic = false;\n\n  if (this.eatContextual(\"static\")) {\n    // Parse static init block\n    if (ecmaVersion >= 13 && this.eat(types$1.braceL)) {\n      this.parseClassStaticBlock(node);\n      return node\n    }\n    if (this.isClassElementNameStart() || this.type === types$1.star) {\n      isStatic = true;\n    } else {\n      keyName = \"static\";\n    }\n  }\n  node.static = isStatic;\n  if (!keyName && ecmaVersion >= 8 && this.eatContextual(\"async\")) {\n    if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) {\n      isAsync = true;\n    } else {\n      keyName = \"async\";\n    }\n  }\n  if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) {\n    isGenerator = true;\n  }\n  if (!keyName && !isAsync && !isGenerator) {\n    var lastValue = this.value;\n    if (this.eatContextual(\"get\") || this.eatContextual(\"set\")) {\n      if (this.isClassElementNameStart()) {\n        kind = lastValue;\n      } else {\n        keyName = lastValue;\n      }\n    }\n  }\n\n  // Parse element name\n  if (keyName) {\n    // 'async', 'get', 'set', or 'static' were not a keyword contextually.\n    // The last token is any of those. Make it the element name.\n    node.computed = false;\n    node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc);\n    node.key.name = keyName;\n    this.finishNode(node.key, \"Identifier\");\n  } else {\n    this.parseClassElementName(node);\n  }\n\n  // Parse element value\n  if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== \"method\" || isGenerator || isAsync) {\n    var isConstructor = !node.static && checkKeyName(node, \"constructor\");\n    var allowsDirectSuper = isConstructor && constructorAllowsSuper;\n    // Couldn't move this check into the 'parseClassMethod' method for backward compatibility.\n    if (isConstructor && kind !== \"method\") { this.raise(node.key.start, \"Constructor can't have get/set modifier\"); }\n    node.kind = isConstructor ? \"constructor\" : kind;\n    this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper);\n  } else {\n    this.parseClassField(node);\n  }\n\n  return node\n};\n\npp$8.isClassElementNameStart = function() {\n  return (\n    this.type === types$1.name ||\n    this.type === types$1.privateId ||\n    this.type === types$1.num ||\n    this.type === types$1.string ||\n    this.type === types$1.bracketL ||\n    this.type.keyword\n  )\n};\n\npp$8.parseClassElementName = function(element) {\n  if (this.type === types$1.privateId) {\n    if (this.value === \"constructor\") {\n      this.raise(this.start, \"Classes can't have an element named '#constructor'\");\n    }\n    element.computed = false;\n    element.key = this.parsePrivateIdent();\n  } else {\n    this.parsePropertyName(element);\n  }\n};\n\npp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n  // Check key and flags\n  var key = method.key;\n  if (method.kind === \"constructor\") {\n    if (isGenerator) { this.raise(key.start, \"Constructor can't be a generator\"); }\n    if (isAsync) { this.raise(key.start, \"Constructor can't be an async method\"); }\n  } else if (method.static && checkKeyName(method, \"prototype\")) {\n    this.raise(key.start, \"Classes may not have a static property named prototype\");\n  }\n\n  // Parse value\n  var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);\n\n  // Check value\n  if (method.kind === \"get\" && value.params.length !== 0)\n    { this.raiseRecoverable(value.start, \"getter should have no params\"); }\n  if (method.kind === \"set\" && value.params.length !== 1)\n    { this.raiseRecoverable(value.start, \"setter should have exactly one param\"); }\n  if (method.kind === \"set\" && value.params[0].type === \"RestElement\")\n    { this.raiseRecoverable(value.params[0].start, \"Setter cannot use rest params\"); }\n\n  return this.finishNode(method, \"MethodDefinition\")\n};\n\npp$8.parseClassField = function(field) {\n  if (checkKeyName(field, \"constructor\")) {\n    this.raise(field.key.start, \"Classes can't have a field named 'constructor'\");\n  } else if (field.static && checkKeyName(field, \"prototype\")) {\n    this.raise(field.key.start, \"Classes can't have a static field named 'prototype'\");\n  }\n\n  if (this.eat(types$1.eq)) {\n    // To raise SyntaxError if 'arguments' exists in the initializer.\n    var scope = this.currentThisScope();\n    var inClassFieldInit = scope.inClassFieldInit;\n    scope.inClassFieldInit = true;\n    field.value = this.parseMaybeAssign();\n    scope.inClassFieldInit = inClassFieldInit;\n  } else {\n    field.value = null;\n  }\n  this.semicolon();\n\n  return this.finishNode(field, \"PropertyDefinition\")\n};\n\npp$8.parseClassStaticBlock = function(node) {\n  node.body = [];\n\n  var oldLabels = this.labels;\n  this.labels = [];\n  this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER);\n  while (this.type !== types$1.braceR) {\n    var stmt = this.parseStatement(null);\n    node.body.push(stmt);\n  }\n  this.next();\n  this.exitScope();\n  this.labels = oldLabels;\n\n  return this.finishNode(node, \"StaticBlock\")\n};\n\npp$8.parseClassId = function(node, isStatement) {\n  if (this.type === types$1.name) {\n    node.id = this.parseIdent();\n    if (isStatement)\n      { this.checkLValSimple(node.id, BIND_LEXICAL, false); }\n  } else {\n    if (isStatement === true)\n      { this.unexpected(); }\n    node.id = null;\n  }\n};\n\npp$8.parseClassSuper = function(node) {\n  node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null;\n};\n\npp$8.enterClassBody = function() {\n  var element = {declared: Object.create(null), used: []};\n  this.privateNameStack.push(element);\n  return element.declared\n};\n\npp$8.exitClassBody = function() {\n  var ref = this.privateNameStack.pop();\n  var declared = ref.declared;\n  var used = ref.used;\n  if (!this.options.checkPrivateFields) { return }\n  var len = this.privateNameStack.length;\n  var parent = len === 0 ? null : this.privateNameStack[len - 1];\n  for (var i = 0; i < used.length; ++i) {\n    var id = used[i];\n    if (!hasOwn(declared, id.name)) {\n      if (parent) {\n        parent.used.push(id);\n      } else {\n        this.raiseRecoverable(id.start, (\"Private field '#\" + (id.name) + \"' must be declared in an enclosing class\"));\n      }\n    }\n  }\n};\n\nfunction isPrivateNameConflicted(privateNameMap, element) {\n  var name = element.key.name;\n  var curr = privateNameMap[name];\n\n  var next = \"true\";\n  if (element.type === \"MethodDefinition\" && (element.kind === \"get\" || element.kind === \"set\")) {\n    next = (element.static ? \"s\" : \"i\") + element.kind;\n  }\n\n  // `class { get #a(){}; static set #a(_){} }` is also conflict.\n  if (\n    curr === \"iget\" && next === \"iset\" ||\n    curr === \"iset\" && next === \"iget\" ||\n    curr === \"sget\" && next === \"sset\" ||\n    curr === \"sset\" && next === \"sget\"\n  ) {\n    privateNameMap[name] = \"true\";\n    return false\n  } else if (!curr) {\n    privateNameMap[name] = next;\n    return false\n  } else {\n    return true\n  }\n}\n\nfunction checkKeyName(node, name) {\n  var computed = node.computed;\n  var key = node.key;\n  return !computed && (\n    key.type === \"Identifier\" && key.name === name ||\n    key.type === \"Literal\" && key.value === name\n  )\n}\n\n// Parses module export declaration.\n\npp$8.parseExportAllDeclaration = function(node, exports) {\n  if (this.options.ecmaVersion >= 11) {\n    if (this.eatContextual(\"as\")) {\n      node.exported = this.parseModuleExportName();\n      this.checkExport(exports, node.exported, this.lastTokStart);\n    } else {\n      node.exported = null;\n    }\n  }\n  this.expectContextual(\"from\");\n  if (this.type !== types$1.string) { this.unexpected(); }\n  node.source = this.parseExprAtom();\n  if (this.options.ecmaVersion >= 16)\n    { node.attributes = this.parseWithClause(); }\n  this.semicolon();\n  return this.finishNode(node, \"ExportAllDeclaration\")\n};\n\npp$8.parseExport = function(node, exports) {\n  this.next();\n  // export * from '...'\n  if (this.eat(types$1.star)) {\n    return this.parseExportAllDeclaration(node, exports)\n  }\n  if (this.eat(types$1._default)) { // export default ...\n    this.checkExport(exports, \"default\", this.lastTokStart);\n    node.declaration = this.parseExportDefaultDeclaration();\n    return this.finishNode(node, \"ExportDefaultDeclaration\")\n  }\n  // export var|const|let|function|class ...\n  if (this.shouldParseExportStatement()) {\n    node.declaration = this.parseExportDeclaration(node);\n    if (node.declaration.type === \"VariableDeclaration\")\n      { this.checkVariableExport(exports, node.declaration.declarations); }\n    else\n      { this.checkExport(exports, node.declaration.id, node.declaration.id.start); }\n    node.specifiers = [];\n    node.source = null;\n  } else { // export { x, y as z } [from '...']\n    node.declaration = null;\n    node.specifiers = this.parseExportSpecifiers(exports);\n    if (this.eatContextual(\"from\")) {\n      if (this.type !== types$1.string) { this.unexpected(); }\n      node.source = this.parseExprAtom();\n      if (this.options.ecmaVersion >= 16)\n        { node.attributes = this.parseWithClause(); }\n    } else {\n      for (var i = 0, list = node.specifiers; i < list.length; i += 1) {\n        // check for keywords used as local names\n        var spec = list[i];\n\n        this.checkUnreserved(spec.local);\n        // check if export is defined\n        this.checkLocalExport(spec.local);\n\n        if (spec.local.type === \"Literal\") {\n          this.raise(spec.local.start, \"A string literal cannot be used as an exported binding without `from`.\");\n        }\n      }\n\n      node.source = null;\n    }\n    this.semicolon();\n  }\n  return this.finishNode(node, \"ExportNamedDeclaration\")\n};\n\npp$8.parseExportDeclaration = function(node) {\n  return this.parseStatement(null)\n};\n\npp$8.parseExportDefaultDeclaration = function() {\n  var isAsync;\n  if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) {\n    var fNode = this.startNode();\n    this.next();\n    if (isAsync) { this.next(); }\n    return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync)\n  } else if (this.type === types$1._class) {\n    var cNode = this.startNode();\n    return this.parseClass(cNode, \"nullableID\")\n  } else {\n    var declaration = this.parseMaybeAssign();\n    this.semicolon();\n    return declaration\n  }\n};\n\npp$8.checkExport = function(exports, name, pos) {\n  if (!exports) { return }\n  if (typeof name !== \"string\")\n    { name = name.type === \"Identifier\" ? name.name : name.value; }\n  if (hasOwn(exports, name))\n    { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n  exports[name] = true;\n};\n\npp$8.checkPatternExport = function(exports, pat) {\n  var type = pat.type;\n  if (type === \"Identifier\")\n    { this.checkExport(exports, pat, pat.start); }\n  else if (type === \"ObjectPattern\")\n    { for (var i = 0, list = pat.properties; i < list.length; i += 1)\n      {\n        var prop = list[i];\n\n        this.checkPatternExport(exports, prop);\n      } }\n  else if (type === \"ArrayPattern\")\n    { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {\n      var elt = list$1[i$1];\n\n        if (elt) { this.checkPatternExport(exports, elt); }\n    } }\n  else if (type === \"Property\")\n    { this.checkPatternExport(exports, pat.value); }\n  else if (type === \"AssignmentPattern\")\n    { this.checkPatternExport(exports, pat.left); }\n  else if (type === \"RestElement\")\n    { this.checkPatternExport(exports, pat.argument); }\n};\n\npp$8.checkVariableExport = function(exports, decls) {\n  if (!exports) { return }\n  for (var i = 0, list = decls; i < list.length; i += 1)\n    {\n    var decl = list[i];\n\n    this.checkPatternExport(exports, decl.id);\n  }\n};\n\npp$8.shouldParseExportStatement = function() {\n  return this.type.keyword === \"var\" ||\n    this.type.keyword === \"const\" ||\n    this.type.keyword === \"class\" ||\n    this.type.keyword === \"function\" ||\n    this.isLet() ||\n    this.isAsyncFunction()\n};\n\n// Parses a comma-separated list of module exports.\n\npp$8.parseExportSpecifier = function(exports) {\n  var node = this.startNode();\n  node.local = this.parseModuleExportName();\n\n  node.exported = this.eatContextual(\"as\") ? this.parseModuleExportName() : node.local;\n  this.checkExport(\n    exports,\n    node.exported,\n    node.exported.start\n  );\n\n  return this.finishNode(node, \"ExportSpecifier\")\n};\n\npp$8.parseExportSpecifiers = function(exports) {\n  var nodes = [], first = true;\n  // export { x, y as z } [from '...']\n  this.expect(types$1.braceL);\n  while (!this.eat(types$1.braceR)) {\n    if (!first) {\n      this.expect(types$1.comma);\n      if (this.afterTrailingComma(types$1.braceR)) { break }\n    } else { first = false; }\n\n    nodes.push(this.parseExportSpecifier(exports));\n  }\n  return nodes\n};\n\n// Parses import declaration.\n\npp$8.parseImport = function(node) {\n  this.next();\n\n  // import '...'\n  if (this.type === types$1.string) {\n    node.specifiers = empty$1;\n    node.source = this.parseExprAtom();\n  } else {\n    node.specifiers = this.parseImportSpecifiers();\n    this.expectContextual(\"from\");\n    node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected();\n  }\n  if (this.options.ecmaVersion >= 16)\n    { node.attributes = this.parseWithClause(); }\n  this.semicolon();\n  return this.finishNode(node, \"ImportDeclaration\")\n};\n\n// Parses a comma-separated list of module imports.\n\npp$8.parseImportSpecifier = function() {\n  var node = this.startNode();\n  node.imported = this.parseModuleExportName();\n\n  if (this.eatContextual(\"as\")) {\n    node.local = this.parseIdent();\n  } else {\n    this.checkUnreserved(node.imported);\n    node.local = node.imported;\n  }\n  this.checkLValSimple(node.local, BIND_LEXICAL);\n\n  return this.finishNode(node, \"ImportSpecifier\")\n};\n\npp$8.parseImportDefaultSpecifier = function() {\n  // import defaultObj, { x, y as z } from '...'\n  var node = this.startNode();\n  node.local = this.parseIdent();\n  this.checkLValSimple(node.local, BIND_LEXICAL);\n  return this.finishNode(node, \"ImportDefaultSpecifier\")\n};\n\npp$8.parseImportNamespaceSpecifier = function() {\n  var node = this.startNode();\n  this.next();\n  this.expectContextual(\"as\");\n  node.local = this.parseIdent();\n  this.checkLValSimple(node.local, BIND_LEXICAL);\n  return this.finishNode(node, \"ImportNamespaceSpecifier\")\n};\n\npp$8.parseImportSpecifiers = function() {\n  var nodes = [], first = true;\n  if (this.type === types$1.name) {\n    nodes.push(this.parseImportDefaultSpecifier());\n    if (!this.eat(types$1.comma)) { return nodes }\n  }\n  if (this.type === types$1.star) {\n    nodes.push(this.parseImportNamespaceSpecifier());\n    return nodes\n  }\n  this.expect(types$1.braceL);\n  while (!this.eat(types$1.braceR)) {\n    if (!first) {\n      this.expect(types$1.comma);\n      if (this.afterTrailingComma(types$1.braceR)) { break }\n    } else { first = false; }\n\n    nodes.push(this.parseImportSpecifier());\n  }\n  return nodes\n};\n\npp$8.parseWithClause = function() {\n  var nodes = [];\n  if (!this.eat(types$1._with)) {\n    return nodes\n  }\n  this.expect(types$1.braceL);\n  var attributeKeys = {};\n  var first = true;\n  while (!this.eat(types$1.braceR)) {\n    if (!first) {\n      this.expect(types$1.comma);\n      if (this.afterTrailingComma(types$1.braceR)) { break }\n    } else { first = false; }\n\n    var attr = this.parseImportAttribute();\n    var keyName = attr.key.type === \"Identifier\" ? attr.key.name : attr.key.value;\n    if (hasOwn(attributeKeys, keyName))\n      { this.raiseRecoverable(attr.key.start, \"Duplicate attribute key '\" + keyName + \"'\"); }\n    attributeKeys[keyName] = true;\n    nodes.push(attr);\n  }\n  return nodes\n};\n\npp$8.parseImportAttribute = function() {\n  var node = this.startNode();\n  node.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\");\n  this.expect(types$1.colon);\n  if (this.type !== types$1.string) {\n    this.unexpected();\n  }\n  node.value = this.parseExprAtom();\n  return this.finishNode(node, \"ImportAttribute\")\n};\n\npp$8.parseModuleExportName = function() {\n  if (this.options.ecmaVersion >= 13 && this.type === types$1.string) {\n    var stringLiteral = this.parseLiteral(this.value);\n    if (loneSurrogate.test(stringLiteral.value)) {\n      this.raise(stringLiteral.start, \"An export name cannot include a lone surrogate.\");\n    }\n    return stringLiteral\n  }\n  return this.parseIdent(true)\n};\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp$8.adaptDirectivePrologue = function(statements) {\n  for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n    statements[i].directive = statements[i].expression.raw.slice(1, -1);\n  }\n};\npp$8.isDirectiveCandidate = function(statement) {\n  return (\n    this.options.ecmaVersion >= 5 &&\n    statement.type === \"ExpressionStatement\" &&\n    statement.expression.type === \"Literal\" &&\n    typeof statement.expression.value === \"string\" &&\n    // Reject parenthesized strings.\n    (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n  )\n};\n\nvar pp$7 = Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp$7.toAssignable = function(node, isBinding, refDestructuringErrors) {\n  if (this.options.ecmaVersion >= 6 && node) {\n    switch (node.type) {\n    case \"Identifier\":\n      if (this.inAsync && node.name === \"await\")\n        { this.raise(node.start, \"Cannot use 'await' as identifier inside an async function\"); }\n      break\n\n    case \"ObjectPattern\":\n    case \"ArrayPattern\":\n    case \"AssignmentPattern\":\n    case \"RestElement\":\n      break\n\n    case \"ObjectExpression\":\n      node.type = \"ObjectPattern\";\n      if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n      for (var i = 0, list = node.properties; i < list.length; i += 1) {\n        var prop = list[i];\n\n      this.toAssignable(prop, isBinding);\n        // Early error:\n        //   AssignmentRestProperty[Yield, Await] :\n        //     `...` DestructuringAssignmentTarget[Yield, Await]\n        //\n        //   It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n        if (\n          prop.type === \"RestElement\" &&\n          (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n        ) {\n          this.raise(prop.argument.start, \"Unexpected token\");\n        }\n      }\n      break\n\n    case \"Property\":\n      // AssignmentProperty has type === \"Property\"\n      if (node.kind !== \"init\") { this.raise(node.key.start, \"Object pattern can't contain getter or setter\"); }\n      this.toAssignable(node.value, isBinding);\n      break\n\n    case \"ArrayExpression\":\n      node.type = \"ArrayPattern\";\n      if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n      this.toAssignableList(node.elements, isBinding);\n      break\n\n    case \"SpreadElement\":\n      node.type = \"RestElement\";\n      this.toAssignable(node.argument, isBinding);\n      if (node.argument.type === \"AssignmentPattern\")\n        { this.raise(node.argument.start, \"Rest elements cannot have a default value\"); }\n      break\n\n    case \"AssignmentExpression\":\n      if (node.operator !== \"=\") { this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\"); }\n      node.type = \"AssignmentPattern\";\n      delete node.operator;\n      this.toAssignable(node.left, isBinding);\n      break\n\n    case \"ParenthesizedExpression\":\n      this.toAssignable(node.expression, isBinding, refDestructuringErrors);\n      break\n\n    case \"ChainExpression\":\n      this.raiseRecoverable(node.start, \"Optional chaining cannot appear in left-hand side\");\n      break\n\n    case \"MemberExpression\":\n      if (!isBinding) { break }\n\n    default:\n      this.raise(node.start, \"Assigning to rvalue\");\n    }\n  } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n  return node\n};\n\n// Convert list of expression atoms to binding list.\n\npp$7.toAssignableList = function(exprList, isBinding) {\n  var end = exprList.length;\n  for (var i = 0; i < end; i++) {\n    var elt = exprList[i];\n    if (elt) { this.toAssignable(elt, isBinding); }\n  }\n  if (end) {\n    var last = exprList[end - 1];\n    if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n      { this.unexpected(last.argument.start); }\n  }\n  return exprList\n};\n\n// Parses spread element.\n\npp$7.parseSpread = function(refDestructuringErrors) {\n  var node = this.startNode();\n  this.next();\n  node.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n  return this.finishNode(node, \"SpreadElement\")\n};\n\npp$7.parseRestBinding = function() {\n  var node = this.startNode();\n  this.next();\n\n  // RestElement inside of a function parameter must be an identifier\n  if (this.options.ecmaVersion === 6 && this.type !== types$1.name)\n    { this.unexpected(); }\n\n  node.argument = this.parseBindingAtom();\n\n  return this.finishNode(node, \"RestElement\")\n};\n\n// Parses lvalue (assignable) atom.\n\npp$7.parseBindingAtom = function() {\n  if (this.options.ecmaVersion >= 6) {\n    switch (this.type) {\n    case types$1.bracketL:\n      var node = this.startNode();\n      this.next();\n      node.elements = this.parseBindingList(types$1.bracketR, true, true);\n      return this.finishNode(node, \"ArrayPattern\")\n\n    case types$1.braceL:\n      return this.parseObj(true)\n    }\n  }\n  return this.parseIdent()\n};\n\npp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) {\n  var elts = [], first = true;\n  while (!this.eat(close)) {\n    if (first) { first = false; }\n    else { this.expect(types$1.comma); }\n    if (allowEmpty && this.type === types$1.comma) {\n      elts.push(null);\n    } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n      break\n    } else if (this.type === types$1.ellipsis) {\n      var rest = this.parseRestBinding();\n      this.parseBindingListItem(rest);\n      elts.push(rest);\n      if (this.type === types$1.comma) { this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\"); }\n      this.expect(close);\n      break\n    } else {\n      elts.push(this.parseAssignableListItem(allowModifiers));\n    }\n  }\n  return elts\n};\n\npp$7.parseAssignableListItem = function(allowModifiers) {\n  var elem = this.parseMaybeDefault(this.start, this.startLoc);\n  this.parseBindingListItem(elem);\n  return elem\n};\n\npp$7.parseBindingListItem = function(param) {\n  return param\n};\n\n// Parses assignment pattern around given atom if possible.\n\npp$7.parseMaybeDefault = function(startPos, startLoc, left) {\n  left = left || this.parseBindingAtom();\n  if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left }\n  var node = this.startNodeAt(startPos, startLoc);\n  node.left = left;\n  node.right = this.parseMaybeAssign();\n  return this.finishNode(node, \"AssignmentPattern\")\n};\n\n// The following three functions all verify that a node is an lvalue —\n// something that can be bound, or assigned to. In order to do so, they perform\n// a variety of checks:\n//\n// - Check that none of the bound/assigned-to identifiers are reserved words.\n// - Record name declarations for bindings in the appropriate scope.\n// - Check duplicate argument names, if checkClashes is set.\n//\n// If a complex binding pattern is encountered (e.g., object and array\n// destructuring), the entire pattern is recursively checked.\n//\n// There are three versions of checkLVal*() appropriate for different\n// circumstances:\n//\n// - checkLValSimple() shall be used if the syntactic construct supports\n//   nothing other than identifiers and member expressions. Parenthesized\n//   expressions are also correctly handled. This is generally appropriate for\n//   constructs for which the spec says\n//\n//   > It is a Syntax Error if AssignmentTargetType of [the production] is not\n//   > simple.\n//\n//   It is also appropriate for checking if an identifier is valid and not\n//   defined elsewhere, like import declarations or function/class identifiers.\n//\n//   Examples where this is used include:\n//     a += …;\n//     import a from '…';\n//   where a is the node to be checked.\n//\n// - checkLValPattern() shall be used if the syntactic construct supports\n//   anything checkLValSimple() supports, as well as object and array\n//   destructuring patterns. This is generally appropriate for constructs for\n//   which the spec says\n//\n//   > It is a Syntax Error if [the production] is neither an ObjectLiteral nor\n//   > an ArrayLiteral and AssignmentTargetType of [the production] is not\n//   > simple.\n//\n//   Examples where this is used include:\n//     (a = …);\n//     const a = …;\n//     try { … } catch (a) { … }\n//   where a is the node to be checked.\n//\n// - checkLValInnerPattern() shall be used if the syntactic construct supports\n//   anything checkLValPattern() supports, as well as default assignment\n//   patterns, rest elements, and other constructs that may appear within an\n//   object or array destructuring pattern.\n//\n//   As a special case, function parameters also use checkLValInnerPattern(),\n//   as they also support defaults and rest constructs.\n//\n// These functions deliberately support both assignment and binding constructs,\n// as the logic for both is exceedingly similar. If the node is the target of\n// an assignment, then bindingType should be set to BIND_NONE. Otherwise, it\n// should be set to the appropriate BIND_* constant, like BIND_VAR or\n// BIND_LEXICAL.\n//\n// If the function is called with a non-BIND_NONE bindingType, then\n// additionally a checkClashes object may be specified to allow checking for\n// duplicate argument names. checkClashes is ignored if the provided construct\n// is an assignment (i.e., bindingType is BIND_NONE).\n\npp$7.checkLValSimple = function(expr, bindingType, checkClashes) {\n  if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n  var isBind = bindingType !== BIND_NONE;\n\n  switch (expr.type) {\n  case \"Identifier\":\n    if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n      { this.raiseRecoverable(expr.start, (isBind ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\"); }\n    if (isBind) {\n      if (bindingType === BIND_LEXICAL && expr.name === \"let\")\n        { this.raiseRecoverable(expr.start, \"let is disallowed as a lexically bound name\"); }\n      if (checkClashes) {\n        if (hasOwn(checkClashes, expr.name))\n          { this.raiseRecoverable(expr.start, \"Argument name clash\"); }\n        checkClashes[expr.name] = true;\n      }\n      if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); }\n    }\n    break\n\n  case \"ChainExpression\":\n    this.raiseRecoverable(expr.start, \"Optional chaining cannot appear in left-hand side\");\n    break\n\n  case \"MemberExpression\":\n    if (isBind) { this.raiseRecoverable(expr.start, \"Binding member expression\"); }\n    break\n\n  case \"ParenthesizedExpression\":\n    if (isBind) { this.raiseRecoverable(expr.start, \"Binding parenthesized expression\"); }\n    return this.checkLValSimple(expr.expression, bindingType, checkClashes)\n\n  default:\n    this.raise(expr.start, (isBind ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n  }\n};\n\npp$7.checkLValPattern = function(expr, bindingType, checkClashes) {\n  if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n  switch (expr.type) {\n  case \"ObjectPattern\":\n    for (var i = 0, list = expr.properties; i < list.length; i += 1) {\n      var prop = list[i];\n\n    this.checkLValInnerPattern(prop, bindingType, checkClashes);\n    }\n    break\n\n  case \"ArrayPattern\":\n    for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {\n      var elem = list$1[i$1];\n\n    if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); }\n    }\n    break\n\n  default:\n    this.checkLValSimple(expr, bindingType, checkClashes);\n  }\n};\n\npp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) {\n  if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n  switch (expr.type) {\n  case \"Property\":\n    // AssignmentProperty has type === \"Property\"\n    this.checkLValInnerPattern(expr.value, bindingType, checkClashes);\n    break\n\n  case \"AssignmentPattern\":\n    this.checkLValPattern(expr.left, bindingType, checkClashes);\n    break\n\n  case \"RestElement\":\n    this.checkLValPattern(expr.argument, bindingType, checkClashes);\n    break\n\n  default:\n    this.checkLValPattern(expr, bindingType, checkClashes);\n  }\n};\n\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\n\nvar TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {\n  this.token = token;\n  this.isExpr = !!isExpr;\n  this.preserveSpace = !!preserveSpace;\n  this.override = override;\n  this.generator = !!generator;\n};\n\nvar types = {\n  b_stat: new TokContext(\"{\", false),\n  b_expr: new TokContext(\"{\", true),\n  b_tmpl: new TokContext(\"${\", false),\n  p_stat: new TokContext(\"(\", false),\n  p_expr: new TokContext(\"(\", true),\n  q_tmpl: new TokContext(\"`\", true, true, function (p) { return p.tryReadTemplateToken(); }),\n  f_stat: new TokContext(\"function\", false),\n  f_expr: new TokContext(\"function\", true),\n  f_expr_gen: new TokContext(\"function\", true, false, null, true),\n  f_gen: new TokContext(\"function\", false, false, null, true)\n};\n\nvar pp$6 = Parser.prototype;\n\npp$6.initialContext = function() {\n  return [types.b_stat]\n};\n\npp$6.curContext = function() {\n  return this.context[this.context.length - 1]\n};\n\npp$6.braceIsBlock = function(prevType) {\n  var parent = this.curContext();\n  if (parent === types.f_expr || parent === types.f_stat)\n    { return true }\n  if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr))\n    { return !parent.isExpr }\n\n  // The check for `tt.name && exprAllowed` detects whether we are\n  // after a `yield` or `of` construct. See the `updateContext` for\n  // `tt.name`.\n  if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed)\n    { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }\n  if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow)\n    { return true }\n  if (prevType === types$1.braceL)\n    { return parent === types.b_stat }\n  if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name)\n    { return false }\n  return !this.exprAllowed\n};\n\npp$6.inGeneratorContext = function() {\n  for (var i = this.context.length - 1; i >= 1; i--) {\n    var context = this.context[i];\n    if (context.token === \"function\")\n      { return context.generator }\n  }\n  return false\n};\n\npp$6.updateContext = function(prevType) {\n  var update, type = this.type;\n  if (type.keyword && prevType === types$1.dot)\n    { this.exprAllowed = false; }\n  else if (update = type.updateContext)\n    { update.call(this, prevType); }\n  else\n    { this.exprAllowed = type.beforeExpr; }\n};\n\n// Used to handle edge cases when token context could not be inferred correctly during tokenization phase\n\npp$6.overrideContext = function(tokenCtx) {\n  if (this.curContext() !== tokenCtx) {\n    this.context[this.context.length - 1] = tokenCtx;\n  }\n};\n\n// Token-specific context update code\n\ntypes$1.parenR.updateContext = types$1.braceR.updateContext = function() {\n  if (this.context.length === 1) {\n    this.exprAllowed = true;\n    return\n  }\n  var out = this.context.pop();\n  if (out === types.b_stat && this.curContext().token === \"function\") {\n    out = this.context.pop();\n  }\n  this.exprAllowed = !out.isExpr;\n};\n\ntypes$1.braceL.updateContext = function(prevType) {\n  this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);\n  this.exprAllowed = true;\n};\n\ntypes$1.dollarBraceL.updateContext = function() {\n  this.context.push(types.b_tmpl);\n  this.exprAllowed = true;\n};\n\ntypes$1.parenL.updateContext = function(prevType) {\n  var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while;\n  this.context.push(statementParens ? types.p_stat : types.p_expr);\n  this.exprAllowed = true;\n};\n\ntypes$1.incDec.updateContext = function() {\n  // tokExprAllowed stays unchanged\n};\n\ntypes$1._function.updateContext = types$1._class.updateContext = function(prevType) {\n  if (prevType.beforeExpr && prevType !== types$1._else &&\n      !(prevType === types$1.semi && this.curContext() !== types.p_stat) &&\n      !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n      !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat))\n    { this.context.push(types.f_expr); }\n  else\n    { this.context.push(types.f_stat); }\n  this.exprAllowed = false;\n};\n\ntypes$1.colon.updateContext = function() {\n  if (this.curContext().token === \"function\") { this.context.pop(); }\n  this.exprAllowed = true;\n};\n\ntypes$1.backQuote.updateContext = function() {\n  if (this.curContext() === types.q_tmpl)\n    { this.context.pop(); }\n  else\n    { this.context.push(types.q_tmpl); }\n  this.exprAllowed = false;\n};\n\ntypes$1.star.updateContext = function(prevType) {\n  if (prevType === types$1._function) {\n    var index = this.context.length - 1;\n    if (this.context[index] === types.f_expr)\n      { this.context[index] = types.f_expr_gen; }\n    else\n      { this.context[index] = types.f_gen; }\n  }\n  this.exprAllowed = true;\n};\n\ntypes$1.name.updateContext = function(prevType) {\n  var allowed = false;\n  if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) {\n    if (this.value === \"of\" && !this.exprAllowed ||\n        this.value === \"yield\" && this.inGeneratorContext())\n      { allowed = true; }\n  }\n  this.exprAllowed = allowed;\n};\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n\nvar pp$5 = Parser.prototype;\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n  if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n    { return }\n  if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n    { return }\n  var key = prop.key;\n  var name;\n  switch (key.type) {\n  case \"Identifier\": name = key.name; break\n  case \"Literal\": name = String(key.value); break\n  default: return\n  }\n  var kind = prop.kind;\n  if (this.options.ecmaVersion >= 6) {\n    if (name === \"__proto__\" && kind === \"init\") {\n      if (propHash.proto) {\n        if (refDestructuringErrors) {\n          if (refDestructuringErrors.doubleProto < 0) {\n            refDestructuringErrors.doubleProto = key.start;\n          }\n        } else {\n          this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\");\n        }\n      }\n      propHash.proto = true;\n    }\n    return\n  }\n  name = \"$\" + name;\n  var other = propHash[name];\n  if (other) {\n    var redefinition;\n    if (kind === \"init\") {\n      redefinition = this.strict && other.init || other.get || other.set;\n    } else {\n      redefinition = other.init || other[kind];\n    }\n    if (redefinition)\n      { this.raiseRecoverable(key.start, \"Redefinition of property\"); }\n  } else {\n    other = propHash[name] = {\n      init: false,\n      get: false,\n      set: false\n    };\n  }\n  other[kind] = true;\n};\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp$5.parseExpression = function(forInit, refDestructuringErrors) {\n  var startPos = this.start, startLoc = this.startLoc;\n  var expr = this.parseMaybeAssign(forInit, refDestructuringErrors);\n  if (this.type === types$1.comma) {\n    var node = this.startNodeAt(startPos, startLoc);\n    node.expressions = [expr];\n    while (this.eat(types$1.comma)) { node.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors)); }\n    return this.finishNode(node, \"SequenceExpression\")\n  }\n  return expr\n};\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) {\n  if (this.isContextual(\"yield\")) {\n    if (this.inGenerator) { return this.parseYield(forInit) }\n    // The tokenizer will assume an expression is allowed after\n    // `yield`, but this isn't that kind of yield\n    else { this.exprAllowed = false; }\n  }\n\n  var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1;\n  if (refDestructuringErrors) {\n    oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n    oldTrailingComma = refDestructuringErrors.trailingComma;\n    oldDoubleProto = refDestructuringErrors.doubleProto;\n    refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1;\n  } else {\n    refDestructuringErrors = new DestructuringErrors;\n    ownDestructuringErrors = true;\n  }\n\n  var startPos = this.start, startLoc = this.startLoc;\n  if (this.type === types$1.parenL || this.type === types$1.name) {\n    this.potentialArrowAt = this.start;\n    this.potentialArrowInForAwait = forInit === \"await\";\n  }\n  var left = this.parseMaybeConditional(forInit, refDestructuringErrors);\n  if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }\n  if (this.type.isAssign) {\n    var node = this.startNodeAt(startPos, startLoc);\n    node.operator = this.value;\n    if (this.type === types$1.eq)\n      { left = this.toAssignable(left, false, refDestructuringErrors); }\n    if (!ownDestructuringErrors) {\n      refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1;\n    }\n    if (refDestructuringErrors.shorthandAssign >= left.start)\n      { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly\n    if (this.type === types$1.eq)\n      { this.checkLValPattern(left); }\n    else\n      { this.checkLValSimple(left); }\n    node.left = left;\n    this.next();\n    node.right = this.parseMaybeAssign(forInit);\n    if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; }\n    return this.finishNode(node, \"AssignmentExpression\")\n  } else {\n    if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); }\n  }\n  if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; }\n  if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; }\n  return left\n};\n\n// Parse a ternary conditional (`?:`) operator.\n\npp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) {\n  var startPos = this.start, startLoc = this.startLoc;\n  var expr = this.parseExprOps(forInit, refDestructuringErrors);\n  if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n  if (this.eat(types$1.question)) {\n    var node = this.startNodeAt(startPos, startLoc);\n    node.test = expr;\n    node.consequent = this.parseMaybeAssign();\n    this.expect(types$1.colon);\n    node.alternate = this.parseMaybeAssign(forInit);\n    return this.finishNode(node, \"ConditionalExpression\")\n  }\n  return expr\n};\n\n// Start the precedence parser.\n\npp$5.parseExprOps = function(forInit, refDestructuringErrors) {\n  var startPos = this.start, startLoc = this.startLoc;\n  var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit);\n  if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n  return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit)\n};\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) {\n  var prec = this.type.binop;\n  if (prec != null && (!forInit || this.type !== types$1._in)) {\n    if (prec > minPrec) {\n      var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND;\n      var coalesce = this.type === types$1.coalesce;\n      if (coalesce) {\n        // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n        // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n        prec = types$1.logicalAND.binop;\n      }\n      var op = this.value;\n      this.next();\n      var startPos = this.start, startLoc = this.startLoc;\n      var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit);\n      var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);\n      if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) {\n        this.raiseRecoverable(this.start, \"Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses\");\n      }\n      return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit)\n    }\n  }\n  return left\n};\n\npp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n  if (right.type === \"PrivateIdentifier\") { this.raise(right.start, \"Private identifier can only be left side of binary expression\"); }\n  var node = this.startNodeAt(startPos, startLoc);\n  node.left = left;\n  node.operator = op;\n  node.right = right;\n  return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n};\n\n// Parse unary operators, both prefix and postfix.\n\npp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) {\n  var startPos = this.start, startLoc = this.startLoc, expr;\n  if (this.isContextual(\"await\") && this.canAwait) {\n    expr = this.parseAwait(forInit);\n    sawUnary = true;\n  } else if (this.type.prefix) {\n    var node = this.startNode(), update = this.type === types$1.incDec;\n    node.operator = this.value;\n    node.prefix = true;\n    this.next();\n    node.argument = this.parseMaybeUnary(null, true, update, forInit);\n    this.checkExpressionErrors(refDestructuringErrors, true);\n    if (update) { this.checkLValSimple(node.argument); }\n    else if (this.strict && node.operator === \"delete\" && isLocalVariableAccess(node.argument))\n      { this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\"); }\n    else if (node.operator === \"delete\" && isPrivateFieldAccess(node.argument))\n      { this.raiseRecoverable(node.start, \"Private fields can not be deleted\"); }\n    else { sawUnary = true; }\n    expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n  } else if (!sawUnary && this.type === types$1.privateId) {\n    if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); }\n    expr = this.parsePrivateIdent();\n    // only could be private fields in 'in', such as #x in obj\n    if (this.type !== types$1._in) { this.unexpected(); }\n  } else {\n    expr = this.parseExprSubscripts(refDestructuringErrors, forInit);\n    if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n    while (this.type.postfix && !this.canInsertSemicolon()) {\n      var node$1 = this.startNodeAt(startPos, startLoc);\n      node$1.operator = this.value;\n      node$1.prefix = false;\n      node$1.argument = expr;\n      this.checkLValSimple(expr);\n      this.next();\n      expr = this.finishNode(node$1, \"UpdateExpression\");\n    }\n  }\n\n  if (!incDec && this.eat(types$1.starstar)) {\n    if (sawUnary)\n      { this.unexpected(this.lastTokStart); }\n    else\n      { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), \"**\", false) }\n  } else {\n    return expr\n  }\n};\n\nfunction isLocalVariableAccess(node) {\n  return (\n    node.type === \"Identifier\" ||\n    node.type === \"ParenthesizedExpression\" && isLocalVariableAccess(node.expression)\n  )\n}\n\nfunction isPrivateFieldAccess(node) {\n  return (\n    node.type === \"MemberExpression\" && node.property.type === \"PrivateIdentifier\" ||\n    node.type === \"ChainExpression\" && isPrivateFieldAccess(node.expression) ||\n    node.type === \"ParenthesizedExpression\" && isPrivateFieldAccess(node.expression)\n  )\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) {\n  var startPos = this.start, startLoc = this.startLoc;\n  var expr = this.parseExprAtom(refDestructuringErrors, forInit);\n  if (expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\")\n    { return expr }\n  var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit);\n  if (refDestructuringErrors && result.type === \"MemberExpression\") {\n    if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; }\n    if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; }\n    if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; }\n  }\n  return result\n};\n\npp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) {\n  var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n      this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 &&\n      this.potentialArrowAt === base.start;\n  var optionalChained = false;\n\n  while (true) {\n    var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit);\n\n    if (element.optional) { optionalChained = true; }\n    if (element === base || element.type === \"ArrowFunctionExpression\") {\n      if (optionalChained) {\n        var chainNode = this.startNodeAt(startPos, startLoc);\n        chainNode.expression = element;\n        element = this.finishNode(chainNode, \"ChainExpression\");\n      }\n      return element\n    }\n\n    base = element;\n  }\n};\n\npp$5.shouldParseAsyncArrow = function() {\n  return !this.canInsertSemicolon() && this.eat(types$1.arrow)\n};\n\npp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) {\n  return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit)\n};\n\npp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) {\n  var optionalSupported = this.options.ecmaVersion >= 11;\n  var optional = optionalSupported && this.eat(types$1.questionDot);\n  if (noCalls && optional) { this.raise(this.lastTokStart, \"Optional chaining cannot appear in the callee of new expressions\"); }\n\n  var computed = this.eat(types$1.bracketL);\n  if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) {\n    var node = this.startNodeAt(startPos, startLoc);\n    node.object = base;\n    if (computed) {\n      node.property = this.parseExpression();\n      this.expect(types$1.bracketR);\n    } else if (this.type === types$1.privateId && base.type !== \"Super\") {\n      node.property = this.parsePrivateIdent();\n    } else {\n      node.property = this.parseIdent(this.options.allowReserved !== \"never\");\n    }\n    node.computed = !!computed;\n    if (optionalSupported) {\n      node.optional = optional;\n    }\n    base = this.finishNode(node, \"MemberExpression\");\n  } else if (!noCalls && this.eat(types$1.parenL)) {\n    var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n    this.yieldPos = 0;\n    this.awaitPos = 0;\n    this.awaitIdentPos = 0;\n    var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors);\n    if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) {\n      this.checkPatternErrors(refDestructuringErrors, false);\n      this.checkYieldAwaitInDefaultParams();\n      if (this.awaitIdentPos > 0)\n        { this.raise(this.awaitIdentPos, \"Cannot use 'await' as identifier inside an async function\"); }\n      this.yieldPos = oldYieldPos;\n      this.awaitPos = oldAwaitPos;\n      this.awaitIdentPos = oldAwaitIdentPos;\n      return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit)\n    }\n    this.checkExpressionErrors(refDestructuringErrors, true);\n    this.yieldPos = oldYieldPos || this.yieldPos;\n    this.awaitPos = oldAwaitPos || this.awaitPos;\n    this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;\n    var node$1 = this.startNodeAt(startPos, startLoc);\n    node$1.callee = base;\n    node$1.arguments = exprList;\n    if (optionalSupported) {\n      node$1.optional = optional;\n    }\n    base = this.finishNode(node$1, \"CallExpression\");\n  } else if (this.type === types$1.backQuote) {\n    if (optional || optionalChained) {\n      this.raise(this.start, \"Optional chaining cannot appear in the tag of tagged template expressions\");\n    }\n    var node$2 = this.startNodeAt(startPos, startLoc);\n    node$2.tag = base;\n    node$2.quasi = this.parseTemplate({isTagged: true});\n    base = this.finishNode(node$2, \"TaggedTemplateExpression\");\n  }\n  return base\n};\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) {\n  // If a division operator appears in an expression position, the\n  // tokenizer got confused, and we force it to read a regexp instead.\n  if (this.type === types$1.slash) { this.readRegexp(); }\n\n  var node, canBeArrow = this.potentialArrowAt === this.start;\n  switch (this.type) {\n  case types$1._super:\n    if (!this.allowSuper)\n      { this.raise(this.start, \"'super' keyword outside a method\"); }\n    node = this.startNode();\n    this.next();\n    if (this.type === types$1.parenL && !this.allowDirectSuper)\n      { this.raise(node.start, \"super() call outside constructor of a subclass\"); }\n    // The `super` keyword can appear at below:\n    // SuperProperty:\n    //     super [ Expression ]\n    //     super . IdentifierName\n    // SuperCall:\n    //     super ( Arguments )\n    if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL)\n      { this.unexpected(); }\n    return this.finishNode(node, \"Super\")\n\n  case types$1._this:\n    node = this.startNode();\n    this.next();\n    return this.finishNode(node, \"ThisExpression\")\n\n  case types$1.name:\n    var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;\n    var id = this.parseIdent(false);\n    if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(types$1._function)) {\n      this.overrideContext(types.f_expr);\n      return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit)\n    }\n    if (canBeArrow && !this.canInsertSemicolon()) {\n      if (this.eat(types$1.arrow))\n        { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) }\n      if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === types$1.name && !containsEsc &&\n          (!this.potentialArrowInForAwait || this.value !== \"of\" || this.containsEsc)) {\n        id = this.parseIdent(false);\n        if (this.canInsertSemicolon() || !this.eat(types$1.arrow))\n          { this.unexpected(); }\n        return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit)\n      }\n    }\n    return id\n\n  case types$1.regexp:\n    var value = this.value;\n    node = this.parseLiteral(value.value);\n    node.regex = {pattern: value.pattern, flags: value.flags};\n    return node\n\n  case types$1.num: case types$1.string:\n    return this.parseLiteral(this.value)\n\n  case types$1._null: case types$1._true: case types$1._false:\n    node = this.startNode();\n    node.value = this.type === types$1._null ? null : this.type === types$1._true;\n    node.raw = this.type.keyword;\n    this.next();\n    return this.finishNode(node, \"Literal\")\n\n  case types$1.parenL:\n    var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit);\n    if (refDestructuringErrors) {\n      if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n        { refDestructuringErrors.parenthesizedAssign = start; }\n      if (refDestructuringErrors.parenthesizedBind < 0)\n        { refDestructuringErrors.parenthesizedBind = start; }\n    }\n    return expr\n\n  case types$1.bracketL:\n    node = this.startNode();\n    this.next();\n    node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors);\n    return this.finishNode(node, \"ArrayExpression\")\n\n  case types$1.braceL:\n    this.overrideContext(types.b_expr);\n    return this.parseObj(false, refDestructuringErrors)\n\n  case types$1._function:\n    node = this.startNode();\n    this.next();\n    return this.parseFunction(node, 0)\n\n  case types$1._class:\n    return this.parseClass(this.startNode(), false)\n\n  case types$1._new:\n    return this.parseNew()\n\n  case types$1.backQuote:\n    return this.parseTemplate()\n\n  case types$1._import:\n    if (this.options.ecmaVersion >= 11) {\n      return this.parseExprImport(forNew)\n    } else {\n      return this.unexpected()\n    }\n\n  default:\n    return this.parseExprAtomDefault()\n  }\n};\n\npp$5.parseExprAtomDefault = function() {\n  this.unexpected();\n};\n\npp$5.parseExprImport = function(forNew) {\n  var node = this.startNode();\n\n  // Consume `import` as an identifier for `import.meta`.\n  // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`.\n  if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword import\"); }\n  this.next();\n\n  if (this.type === types$1.parenL && !forNew) {\n    return this.parseDynamicImport(node)\n  } else if (this.type === types$1.dot) {\n    var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n    meta.name = \"import\";\n    node.meta = this.finishNode(meta, \"Identifier\");\n    return this.parseImportMeta(node)\n  } else {\n    this.unexpected();\n  }\n};\n\npp$5.parseDynamicImport = function(node) {\n  this.next(); // skip `(`\n\n  // Parse node.source.\n  node.source = this.parseMaybeAssign();\n\n  if (this.options.ecmaVersion >= 16) {\n    if (!this.eat(types$1.parenR)) {\n      this.expect(types$1.comma);\n      if (!this.afterTrailingComma(types$1.parenR)) {\n        node.options = this.parseMaybeAssign();\n        if (!this.eat(types$1.parenR)) {\n          this.expect(types$1.comma);\n          if (!this.afterTrailingComma(types$1.parenR)) {\n            this.unexpected();\n          }\n        }\n      } else {\n        node.options = null;\n      }\n    } else {\n      node.options = null;\n    }\n  } else {\n    // Verify ending.\n    if (!this.eat(types$1.parenR)) {\n      var errorPos = this.start;\n      if (this.eat(types$1.comma) && this.eat(types$1.parenR)) {\n        this.raiseRecoverable(errorPos, \"Trailing comma is not allowed in import()\");\n      } else {\n        this.unexpected(errorPos);\n      }\n    }\n  }\n\n  return this.finishNode(node, \"ImportExpression\")\n};\n\npp$5.parseImportMeta = function(node) {\n  this.next(); // skip `.`\n\n  var containsEsc = this.containsEsc;\n  node.property = this.parseIdent(true);\n\n  if (node.property.name !== \"meta\")\n    { this.raiseRecoverable(node.property.start, \"The only valid meta property for import is 'import.meta'\"); }\n  if (containsEsc)\n    { this.raiseRecoverable(node.start, \"'import.meta' must not contain escaped characters\"); }\n  if (this.options.sourceType !== \"module\" && !this.options.allowImportExportEverywhere)\n    { this.raiseRecoverable(node.start, \"Cannot use 'import.meta' outside a module\"); }\n\n  return this.finishNode(node, \"MetaProperty\")\n};\n\npp$5.parseLiteral = function(value) {\n  var node = this.startNode();\n  node.value = value;\n  node.raw = this.input.slice(this.start, this.end);\n  if (node.raw.charCodeAt(node.raw.length - 1) === 110) { node.bigint = node.raw.slice(0, -1).replace(/_/g, \"\"); }\n  this.next();\n  return this.finishNode(node, \"Literal\")\n};\n\npp$5.parseParenExpression = function() {\n  this.expect(types$1.parenL);\n  var val = this.parseExpression();\n  this.expect(types$1.parenR);\n  return val\n};\n\npp$5.shouldParseArrow = function(exprList) {\n  return !this.canInsertSemicolon()\n};\n\npp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) {\n  var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;\n  if (this.options.ecmaVersion >= 6) {\n    this.next();\n\n    var innerStartPos = this.start, innerStartLoc = this.startLoc;\n    var exprList = [], first = true, lastIsComma = false;\n    var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;\n    this.yieldPos = 0;\n    this.awaitPos = 0;\n    // Do not save awaitIdentPos to allow checking awaits nested in parameters\n    while (this.type !== types$1.parenR) {\n      first ? first = false : this.expect(types$1.comma);\n      if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) {\n        lastIsComma = true;\n        break\n      } else if (this.type === types$1.ellipsis) {\n        spreadStart = this.start;\n        exprList.push(this.parseParenItem(this.parseRestBinding()));\n        if (this.type === types$1.comma) {\n          this.raiseRecoverable(\n            this.start,\n            \"Comma is not permitted after the rest element\"\n          );\n        }\n        break\n      } else {\n        exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem));\n      }\n    }\n    var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc;\n    this.expect(types$1.parenR);\n\n    if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) {\n      this.checkPatternErrors(refDestructuringErrors, false);\n      this.checkYieldAwaitInDefaultParams();\n      this.yieldPos = oldYieldPos;\n      this.awaitPos = oldAwaitPos;\n      return this.parseParenArrowList(startPos, startLoc, exprList, forInit)\n    }\n\n    if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); }\n    if (spreadStart) { this.unexpected(spreadStart); }\n    this.checkExpressionErrors(refDestructuringErrors, true);\n    this.yieldPos = oldYieldPos || this.yieldPos;\n    this.awaitPos = oldAwaitPos || this.awaitPos;\n\n    if (exprList.length > 1) {\n      val = this.startNodeAt(innerStartPos, innerStartLoc);\n      val.expressions = exprList;\n      this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n    } else {\n      val = exprList[0];\n    }\n  } else {\n    val = this.parseParenExpression();\n  }\n\n  if (this.options.preserveParens) {\n    var par = this.startNodeAt(startPos, startLoc);\n    par.expression = val;\n    return this.finishNode(par, \"ParenthesizedExpression\")\n  } else {\n    return val\n  }\n};\n\npp$5.parseParenItem = function(item) {\n  return item\n};\n\npp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) {\n  return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit)\n};\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nvar empty = [];\n\npp$5.parseNew = function() {\n  if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword new\"); }\n  var node = this.startNode();\n  this.next();\n  if (this.options.ecmaVersion >= 6 && this.type === types$1.dot) {\n    var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n    meta.name = \"new\";\n    node.meta = this.finishNode(meta, \"Identifier\");\n    this.next();\n    var containsEsc = this.containsEsc;\n    node.property = this.parseIdent(true);\n    if (node.property.name !== \"target\")\n      { this.raiseRecoverable(node.property.start, \"The only valid meta property for new is 'new.target'\"); }\n    if (containsEsc)\n      { this.raiseRecoverable(node.start, \"'new.target' must not contain escaped characters\"); }\n    if (!this.allowNewDotTarget)\n      { this.raiseRecoverable(node.start, \"'new.target' can only be used in functions and class static block\"); }\n    return this.finishNode(node, \"MetaProperty\")\n  }\n  var startPos = this.start, startLoc = this.startLoc;\n  node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false);\n  if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); }\n  else { node.arguments = empty; }\n  return this.finishNode(node, \"NewExpression\")\n};\n\n// Parse template expression.\n\npp$5.parseTemplateElement = function(ref) {\n  var isTagged = ref.isTagged;\n\n  var elem = this.startNode();\n  if (this.type === types$1.invalidTemplate) {\n    if (!isTagged) {\n      this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\");\n    }\n    elem.value = {\n      raw: this.value.replace(/\\r\\n?/g, \"\\n\"),\n      cooked: null\n    };\n  } else {\n    elem.value = {\n      raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n      cooked: this.value\n    };\n  }\n  this.next();\n  elem.tail = this.type === types$1.backQuote;\n  return this.finishNode(elem, \"TemplateElement\")\n};\n\npp$5.parseTemplate = function(ref) {\n  if ( ref === void 0 ) ref = {};\n  var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false;\n\n  var node = this.startNode();\n  this.next();\n  node.expressions = [];\n  var curElt = this.parseTemplateElement({isTagged: isTagged});\n  node.quasis = [curElt];\n  while (!curElt.tail) {\n    if (this.type === types$1.eof) { this.raise(this.pos, \"Unterminated template literal\"); }\n    this.expect(types$1.dollarBraceL);\n    node.expressions.push(this.parseExpression());\n    this.expect(types$1.braceR);\n    node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged}));\n  }\n  this.next();\n  return this.finishNode(node, \"TemplateLiteral\")\n};\n\npp$5.isAsyncProp = function(prop) {\n  return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n    (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) &&\n    !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\n// Parse an object literal or binding pattern.\n\npp$5.parseObj = function(isPattern, refDestructuringErrors) {\n  var node = this.startNode(), first = true, propHash = {};\n  node.properties = [];\n  this.next();\n  while (!this.eat(types$1.braceR)) {\n    if (!first) {\n      this.expect(types$1.comma);\n      if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break }\n    } else { first = false; }\n\n    var prop = this.parseProperty(isPattern, refDestructuringErrors);\n    if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); }\n    node.properties.push(prop);\n  }\n  return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n};\n\npp$5.parseProperty = function(isPattern, refDestructuringErrors) {\n  var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;\n  if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) {\n    if (isPattern) {\n      prop.argument = this.parseIdent(false);\n      if (this.type === types$1.comma) {\n        this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\");\n      }\n      return this.finishNode(prop, \"RestElement\")\n    }\n    // Parse argument.\n    prop.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n    // To disallow trailing comma via `this.toAssignable()`.\n    if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n      refDestructuringErrors.trailingComma = this.start;\n    }\n    // Finish\n    return this.finishNode(prop, \"SpreadElement\")\n  }\n  if (this.options.ecmaVersion >= 6) {\n    prop.method = false;\n    prop.shorthand = false;\n    if (isPattern || refDestructuringErrors) {\n      startPos = this.start;\n      startLoc = this.startLoc;\n    }\n    if (!isPattern)\n      { isGenerator = this.eat(types$1.star); }\n  }\n  var containsEsc = this.containsEsc;\n  this.parsePropertyName(prop);\n  if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n    isAsync = true;\n    isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star);\n    this.parsePropertyName(prop);\n  } else {\n    isAsync = false;\n  }\n  this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc);\n  return this.finishNode(prop, \"Property\")\n};\n\npp$5.parseGetterSetter = function(prop) {\n  prop.kind = prop.key.name;\n  this.parsePropertyName(prop);\n  prop.value = this.parseMethod(false);\n  var paramCount = prop.kind === \"get\" ? 0 : 1;\n  if (prop.value.params.length !== paramCount) {\n    var start = prop.value.start;\n    if (prop.kind === \"get\")\n      { this.raiseRecoverable(start, \"getter should have no params\"); }\n    else\n      { this.raiseRecoverable(start, \"setter should have exactly one param\"); }\n  } else {\n    if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n      { this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\"); }\n  }\n};\n\npp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n  if ((isGenerator || isAsync) && this.type === types$1.colon)\n    { this.unexpected(); }\n\n  if (this.eat(types$1.colon)) {\n    prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n    prop.kind = \"init\";\n  } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) {\n    if (isPattern) { this.unexpected(); }\n    prop.kind = \"init\";\n    prop.method = true;\n    prop.value = this.parseMethod(isGenerator, isAsync);\n  } else if (!isPattern && !containsEsc &&\n             this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n             (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n             (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) {\n    if (isGenerator || isAsync) { this.unexpected(); }\n    this.parseGetterSetter(prop);\n  } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n    if (isGenerator || isAsync) { this.unexpected(); }\n    this.checkUnreserved(prop.key);\n    if (prop.key.name === \"await\" && !this.awaitIdentPos)\n      { this.awaitIdentPos = startPos; }\n    prop.kind = \"init\";\n    if (isPattern) {\n      prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n    } else if (this.type === types$1.eq && refDestructuringErrors) {\n      if (refDestructuringErrors.shorthandAssign < 0)\n        { refDestructuringErrors.shorthandAssign = this.start; }\n      prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n    } else {\n      prop.value = this.copyNode(prop.key);\n    }\n    prop.shorthand = true;\n  } else { this.unexpected(); }\n};\n\npp$5.parsePropertyName = function(prop) {\n  if (this.options.ecmaVersion >= 6) {\n    if (this.eat(types$1.bracketL)) {\n      prop.computed = true;\n      prop.key = this.parseMaybeAssign();\n      this.expect(types$1.bracketR);\n      return prop.key\n    } else {\n      prop.computed = false;\n    }\n  }\n  return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\")\n};\n\n// Initialize empty function node.\n\npp$5.initFunction = function(node) {\n  node.id = null;\n  if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; }\n  if (this.options.ecmaVersion >= 8) { node.async = false; }\n};\n\n// Parse object or class method.\n\npp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n  var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n  this.initFunction(node);\n  if (this.options.ecmaVersion >= 6)\n    { node.generator = isGenerator; }\n  if (this.options.ecmaVersion >= 8)\n    { node.async = !!isAsync; }\n\n  this.yieldPos = 0;\n  this.awaitPos = 0;\n  this.awaitIdentPos = 0;\n  this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n\n  this.expect(types$1.parenL);\n  node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n  this.checkYieldAwaitInDefaultParams();\n  this.parseFunctionBody(node, false, true, false);\n\n  this.yieldPos = oldYieldPos;\n  this.awaitPos = oldAwaitPos;\n  this.awaitIdentPos = oldAwaitIdentPos;\n  return this.finishNode(node, \"FunctionExpression\")\n};\n\n// Parse arrow function expression with given parameters.\n\npp$5.parseArrowExpression = function(node, params, isAsync, forInit) {\n  var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n  this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);\n  this.initFunction(node);\n  if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; }\n\n  this.yieldPos = 0;\n  this.awaitPos = 0;\n  this.awaitIdentPos = 0;\n\n  node.params = this.toAssignableList(params, true);\n  this.parseFunctionBody(node, true, false, forInit);\n\n  this.yieldPos = oldYieldPos;\n  this.awaitPos = oldAwaitPos;\n  this.awaitIdentPos = oldAwaitIdentPos;\n  return this.finishNode(node, \"ArrowFunctionExpression\")\n};\n\n// Parse function body and check parameters.\n\npp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) {\n  var isExpression = isArrowFunction && this.type !== types$1.braceL;\n  var oldStrict = this.strict, useStrict = false;\n\n  if (isExpression) {\n    node.body = this.parseMaybeAssign(forInit);\n    node.expression = true;\n    this.checkParams(node, false);\n  } else {\n    var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params);\n    if (!oldStrict || nonSimple) {\n      useStrict = this.strictDirective(this.end);\n      // If this is a strict mode function, verify that argument names\n      // are not repeated, and it does not try to bind the words `eval`\n      // or `arguments`.\n      if (useStrict && nonSimple)\n        { this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\"); }\n    }\n    // Start a new scope with regard to labels and the `inFunction`\n    // flag (restore them to their old value afterwards).\n    var oldLabels = this.labels;\n    this.labels = [];\n    if (useStrict) { this.strict = true; }\n\n    // Add the params to varDeclaredNames to ensure that an error is thrown\n    // if a let/const declaration in the function clashes with one of the params.\n    this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params));\n    // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n    if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); }\n    node.body = this.parseBlock(false, undefined, useStrict && !oldStrict);\n    node.expression = false;\n    this.adaptDirectivePrologue(node.body.body);\n    this.labels = oldLabels;\n  }\n  this.exitScope();\n};\n\npp$5.isSimpleParamList = function(params) {\n  for (var i = 0, list = params; i < list.length; i += 1)\n    {\n    var param = list[i];\n\n    if (param.type !== \"Identifier\") { return false\n  } }\n  return true\n};\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp$5.checkParams = function(node, allowDuplicates) {\n  var nameHash = Object.create(null);\n  for (var i = 0, list = node.params; i < list.length; i += 1)\n    {\n    var param = list[i];\n\n    this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash);\n  }\n};\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n  var elts = [], first = true;\n  while (!this.eat(close)) {\n    if (!first) {\n      this.expect(types$1.comma);\n      if (allowTrailingComma && this.afterTrailingComma(close)) { break }\n    } else { first = false; }\n\n    var elt = (void 0);\n    if (allowEmpty && this.type === types$1.comma)\n      { elt = null; }\n    else if (this.type === types$1.ellipsis) {\n      elt = this.parseSpread(refDestructuringErrors);\n      if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0)\n        { refDestructuringErrors.trailingComma = this.start; }\n    } else {\n      elt = this.parseMaybeAssign(false, refDestructuringErrors);\n    }\n    elts.push(elt);\n  }\n  return elts\n};\n\npp$5.checkUnreserved = function(ref) {\n  var start = ref.start;\n  var end = ref.end;\n  var name = ref.name;\n\n  if (this.inGenerator && name === \"yield\")\n    { this.raiseRecoverable(start, \"Cannot use 'yield' as identifier inside a generator\"); }\n  if (this.inAsync && name === \"await\")\n    { this.raiseRecoverable(start, \"Cannot use 'await' as identifier inside an async function\"); }\n  if (this.currentThisScope().inClassFieldInit && name === \"arguments\")\n    { this.raiseRecoverable(start, \"Cannot use 'arguments' in class field initializer\"); }\n  if (this.inClassStaticBlock && (name === \"arguments\" || name === \"await\"))\n    { this.raise(start, (\"Cannot use \" + name + \" in class static initialization block\")); }\n  if (this.keywords.test(name))\n    { this.raise(start, (\"Unexpected keyword '\" + name + \"'\")); }\n  if (this.options.ecmaVersion < 6 &&\n    this.input.slice(start, end).indexOf(\"\\\\\") !== -1) { return }\n  var re = this.strict ? this.reservedWordsStrict : this.reservedWords;\n  if (re.test(name)) {\n    if (!this.inAsync && name === \"await\")\n      { this.raiseRecoverable(start, \"Cannot use keyword 'await' outside an async function\"); }\n    this.raiseRecoverable(start, (\"The keyword '\" + name + \"' is reserved\"));\n  }\n};\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp$5.parseIdent = function(liberal) {\n  var node = this.parseIdentNode();\n  this.next(!!liberal);\n  this.finishNode(node, \"Identifier\");\n  if (!liberal) {\n    this.checkUnreserved(node);\n    if (node.name === \"await\" && !this.awaitIdentPos)\n      { this.awaitIdentPos = node.start; }\n  }\n  return node\n};\n\npp$5.parseIdentNode = function() {\n  var node = this.startNode();\n  if (this.type === types$1.name) {\n    node.name = this.value;\n  } else if (this.type.keyword) {\n    node.name = this.type.keyword;\n\n    // To fix https://github.com/acornjs/acorn/issues/575\n    // `class` and `function` keywords push new context into this.context.\n    // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n    // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n    if ((node.name === \"class\" || node.name === \"function\") &&\n      (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n      this.context.pop();\n    }\n    this.type = types$1.name;\n  } else {\n    this.unexpected();\n  }\n  return node\n};\n\npp$5.parsePrivateIdent = function() {\n  var node = this.startNode();\n  if (this.type === types$1.privateId) {\n    node.name = this.value;\n  } else {\n    this.unexpected();\n  }\n  this.next();\n  this.finishNode(node, \"PrivateIdentifier\");\n\n  // For validating existence\n  if (this.options.checkPrivateFields) {\n    if (this.privateNameStack.length === 0) {\n      this.raise(node.start, (\"Private field '#\" + (node.name) + \"' must be declared in an enclosing class\"));\n    } else {\n      this.privateNameStack[this.privateNameStack.length - 1].used.push(node);\n    }\n  }\n\n  return node\n};\n\n// Parses yield expression inside generator.\n\npp$5.parseYield = function(forInit) {\n  if (!this.yieldPos) { this.yieldPos = this.start; }\n\n  var node = this.startNode();\n  this.next();\n  if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) {\n    node.delegate = false;\n    node.argument = null;\n  } else {\n    node.delegate = this.eat(types$1.star);\n    node.argument = this.parseMaybeAssign(forInit);\n  }\n  return this.finishNode(node, \"YieldExpression\")\n};\n\npp$5.parseAwait = function(forInit) {\n  if (!this.awaitPos) { this.awaitPos = this.start; }\n\n  var node = this.startNode();\n  this.next();\n  node.argument = this.parseMaybeUnary(null, true, false, forInit);\n  return this.finishNode(node, \"AwaitExpression\")\n};\n\nvar pp$4 = Parser.prototype;\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp$4.raise = function(pos, message) {\n  var loc = getLineInfo(this.input, pos);\n  message += \" (\" + loc.line + \":\" + loc.column + \")\";\n  var err = new SyntaxError(message);\n  err.pos = pos; err.loc = loc; err.raisedAt = this.pos;\n  throw err\n};\n\npp$4.raiseRecoverable = pp$4.raise;\n\npp$4.curPosition = function() {\n  if (this.options.locations) {\n    return new Position(this.curLine, this.pos - this.lineStart)\n  }\n};\n\nvar pp$3 = Parser.prototype;\n\nvar Scope = function Scope(flags) {\n  this.flags = flags;\n  // A list of var-declared names in the current lexical scope\n  this.var = [];\n  // A list of lexically-declared names in the current lexical scope\n  this.lexical = [];\n  // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n  this.functions = [];\n  // A switch to disallow the identifier reference 'arguments'\n  this.inClassFieldInit = false;\n};\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp$3.enterScope = function(flags) {\n  this.scopeStack.push(new Scope(flags));\n};\n\npp$3.exitScope = function() {\n  this.scopeStack.pop();\n};\n\n// The spec says:\n// > At the top level of a function, or script, function declarations are\n// > treated like var declarations rather than like lexical declarations.\npp$3.treatFunctionsAsVarInScope = function(scope) {\n  return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)\n};\n\npp$3.declareName = function(name, bindingType, pos) {\n  var redeclared = false;\n  if (bindingType === BIND_LEXICAL) {\n    var scope = this.currentScope();\n    redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;\n    scope.lexical.push(name);\n    if (this.inModule && (scope.flags & SCOPE_TOP))\n      { delete this.undefinedExports[name]; }\n  } else if (bindingType === BIND_SIMPLE_CATCH) {\n    var scope$1 = this.currentScope();\n    scope$1.lexical.push(name);\n  } else if (bindingType === BIND_FUNCTION) {\n    var scope$2 = this.currentScope();\n    if (this.treatFunctionsAsVar)\n      { redeclared = scope$2.lexical.indexOf(name) > -1; }\n    else\n      { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; }\n    scope$2.functions.push(name);\n  } else {\n    for (var i = this.scopeStack.length - 1; i >= 0; --i) {\n      var scope$3 = this.scopeStack[i];\n      if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) ||\n          !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) {\n        redeclared = true;\n        break\n      }\n      scope$3.var.push(name);\n      if (this.inModule && (scope$3.flags & SCOPE_TOP))\n        { delete this.undefinedExports[name]; }\n      if (scope$3.flags & SCOPE_VAR) { break }\n    }\n  }\n  if (redeclared) { this.raiseRecoverable(pos, (\"Identifier '\" + name + \"' has already been declared\")); }\n};\n\npp$3.checkLocalExport = function(id) {\n  // scope.functions must be empty as Module code is always strict.\n  if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n      this.scopeStack[0].var.indexOf(id.name) === -1) {\n    this.undefinedExports[id.name] = id;\n  }\n};\n\npp$3.currentScope = function() {\n  return this.scopeStack[this.scopeStack.length - 1]\n};\n\npp$3.currentVarScope = function() {\n  for (var i = this.scopeStack.length - 1;; i--) {\n    var scope = this.scopeStack[i];\n    if (scope.flags & SCOPE_VAR) { return scope }\n  }\n};\n\n// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\npp$3.currentThisScope = function() {\n  for (var i = this.scopeStack.length - 1;; i--) {\n    var scope = this.scopeStack[i];\n    if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW)) { return scope }\n  }\n};\n\nvar Node = function Node(parser, pos, loc) {\n  this.type = \"\";\n  this.start = pos;\n  this.end = 0;\n  if (parser.options.locations)\n    { this.loc = new SourceLocation(parser, loc); }\n  if (parser.options.directSourceFile)\n    { this.sourceFile = parser.options.directSourceFile; }\n  if (parser.options.ranges)\n    { this.range = [pos, 0]; }\n};\n\n// Start an AST node, attaching a start offset.\n\nvar pp$2 = Parser.prototype;\n\npp$2.startNode = function() {\n  return new Node(this, this.start, this.startLoc)\n};\n\npp$2.startNodeAt = function(pos, loc) {\n  return new Node(this, pos, loc)\n};\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n  node.type = type;\n  node.end = pos;\n  if (this.options.locations)\n    { node.loc.end = loc; }\n  if (this.options.ranges)\n    { node.range[1] = pos; }\n  return node\n}\n\npp$2.finishNode = function(node, type) {\n  return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n};\n\n// Finish node at given position\n\npp$2.finishNodeAt = function(node, type, pos, loc) {\n  return finishNodeAt.call(this, node, type, pos, loc)\n};\n\npp$2.copyNode = function(node) {\n  var newNode = new Node(this, node.start, this.startLoc);\n  for (var prop in node) { newNode[prop] = node[prop]; }\n  return newNode\n};\n\n// This file was generated by \"bin/generate-unicode-script-values.js\". Do not modify manually!\nvar scriptValuesAddedInUnicode = \"Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz\";\n\n// This file contains Unicode properties extracted from the ECMAScript specification.\n// The lists are extracted like so:\n// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)\n\n// #table-binary-unicode-properties\nvar ecma9BinaryProperties = \"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\";\nvar ecma10BinaryProperties = ecma9BinaryProperties + \" Extended_Pictographic\";\nvar ecma11BinaryProperties = ecma10BinaryProperties;\nvar ecma12BinaryProperties = ecma11BinaryProperties + \" EBase EComp EMod EPres ExtPict\";\nvar ecma13BinaryProperties = ecma12BinaryProperties;\nvar ecma14BinaryProperties = ecma13BinaryProperties;\n\nvar unicodeBinaryProperties = {\n  9: ecma9BinaryProperties,\n  10: ecma10BinaryProperties,\n  11: ecma11BinaryProperties,\n  12: ecma12BinaryProperties,\n  13: ecma13BinaryProperties,\n  14: ecma14BinaryProperties\n};\n\n// #table-binary-unicode-properties-of-strings\nvar ecma14BinaryPropertiesOfStrings = \"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji\";\n\nvar unicodeBinaryPropertiesOfStrings = {\n  9: \"\",\n  10: \"\",\n  11: \"\",\n  12: \"\",\n  13: \"\",\n  14: ecma14BinaryPropertiesOfStrings\n};\n\n// #table-unicode-general-category-values\nvar unicodeGeneralCategoryValues = \"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\";\n\n// #table-unicode-script-values\nvar ecma9ScriptValues = \"Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\";\nvar ecma10ScriptValues = ecma9ScriptValues + \" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\";\nvar ecma11ScriptValues = ecma10ScriptValues + \" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho\";\nvar ecma12ScriptValues = ecma11ScriptValues + \" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi\";\nvar ecma13ScriptValues = ecma12ScriptValues + \" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith\";\nvar ecma14ScriptValues = ecma13ScriptValues + \" \" + scriptValuesAddedInUnicode;\n\nvar unicodeScriptValues = {\n  9: ecma9ScriptValues,\n  10: ecma10ScriptValues,\n  11: ecma11ScriptValues,\n  12: ecma12ScriptValues,\n  13: ecma13ScriptValues,\n  14: ecma14ScriptValues\n};\n\nvar data = {};\nfunction buildUnicodeData(ecmaVersion) {\n  var d = data[ecmaVersion] = {\n    binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + \" \" + unicodeGeneralCategoryValues),\n    binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]),\n    nonBinary: {\n      General_Category: wordsRegexp(unicodeGeneralCategoryValues),\n      Script: wordsRegexp(unicodeScriptValues[ecmaVersion])\n    }\n  };\n  d.nonBinary.Script_Extensions = d.nonBinary.Script;\n\n  d.nonBinary.gc = d.nonBinary.General_Category;\n  d.nonBinary.sc = d.nonBinary.Script;\n  d.nonBinary.scx = d.nonBinary.Script_Extensions;\n}\n\nfor (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) {\n  var ecmaVersion = list[i];\n\n  buildUnicodeData(ecmaVersion);\n}\n\nvar pp$1 = Parser.prototype;\n\n// Track disjunction structure to determine whether a duplicate\n// capture group name is allowed because it is in a separate branch.\nvar BranchID = function BranchID(parent, base) {\n  // Parent disjunction branch\n  this.parent = parent;\n  // Identifies this set of sibling branches\n  this.base = base || this;\n};\n\nBranchID.prototype.separatedFrom = function separatedFrom (alt) {\n  // A branch is separate from another branch if they or any of\n  // their parents are siblings in a given disjunction\n  for (var self = this; self; self = self.parent) {\n    for (var other = alt; other; other = other.parent) {\n      if (self.base === other.base && self !== other) { return true }\n    }\n  }\n  return false\n};\n\nBranchID.prototype.sibling = function sibling () {\n  return new BranchID(this.parent, this.base)\n};\n\nvar RegExpValidationState = function RegExpValidationState(parser) {\n  this.parser = parser;\n  this.validFlags = \"gim\" + (parser.options.ecmaVersion >= 6 ? \"uy\" : \"\") + (parser.options.ecmaVersion >= 9 ? \"s\" : \"\") + (parser.options.ecmaVersion >= 13 ? \"d\" : \"\") + (parser.options.ecmaVersion >= 15 ? \"v\" : \"\");\n  this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion];\n  this.source = \"\";\n  this.flags = \"\";\n  this.start = 0;\n  this.switchU = false;\n  this.switchV = false;\n  this.switchN = false;\n  this.pos = 0;\n  this.lastIntValue = 0;\n  this.lastStringValue = \"\";\n  this.lastAssertionIsQuantifiable = false;\n  this.numCapturingParens = 0;\n  this.maxBackReference = 0;\n  this.groupNames = Object.create(null);\n  this.backReferenceNames = [];\n  this.branchID = null;\n};\n\nRegExpValidationState.prototype.reset = function reset (start, pattern, flags) {\n  var unicodeSets = flags.indexOf(\"v\") !== -1;\n  var unicode = flags.indexOf(\"u\") !== -1;\n  this.start = start | 0;\n  this.source = pattern + \"\";\n  this.flags = flags;\n  if (unicodeSets && this.parser.options.ecmaVersion >= 15) {\n    this.switchU = true;\n    this.switchV = true;\n    this.switchN = true;\n  } else {\n    this.switchU = unicode && this.parser.options.ecmaVersion >= 6;\n    this.switchV = false;\n    this.switchN = unicode && this.parser.options.ecmaVersion >= 9;\n  }\n};\n\nRegExpValidationState.prototype.raise = function raise (message) {\n  this.parser.raiseRecoverable(this.start, (\"Invalid regular expression: /\" + (this.source) + \"/: \" + message));\n};\n\n// If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\nRegExpValidationState.prototype.at = function at (i, forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  var s = this.source;\n  var l = s.length;\n  if (i >= l) {\n    return -1\n  }\n  var c = s.charCodeAt(i);\n  if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n    return c\n  }\n  var next = s.charCodeAt(i + 1);\n  return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c\n};\n\nRegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  var s = this.source;\n  var l = s.length;\n  if (i >= l) {\n    return l\n  }\n  var c = s.charCodeAt(i), next;\n  if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l ||\n      (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) {\n    return i + 1\n  }\n  return i + 2\n};\n\nRegExpValidationState.prototype.current = function current (forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  return this.at(this.pos, forceU)\n};\n\nRegExpValidationState.prototype.lookahead = function lookahead (forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  return this.at(this.nextIndex(this.pos, forceU), forceU)\n};\n\nRegExpValidationState.prototype.advance = function advance (forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  this.pos = this.nextIndex(this.pos, forceU);\n};\n\nRegExpValidationState.prototype.eat = function eat (ch, forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  if (this.current(forceU) === ch) {\n    this.advance(forceU);\n    return true\n  }\n  return false\n};\n\nRegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  var pos = this.pos;\n  for (var i = 0, list = chs; i < list.length; i += 1) {\n    var ch = list[i];\n\n      var current = this.at(pos, forceU);\n    if (current === -1 || current !== ch) {\n      return false\n    }\n    pos = this.nextIndex(pos, forceU);\n  }\n  this.pos = pos;\n  return true\n};\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpFlags = function(state) {\n  var validFlags = state.validFlags;\n  var flags = state.flags;\n\n  var u = false;\n  var v = false;\n\n  for (var i = 0; i < flags.length; i++) {\n    var flag = flags.charAt(i);\n    if (validFlags.indexOf(flag) === -1) {\n      this.raise(state.start, \"Invalid regular expression flag\");\n    }\n    if (flags.indexOf(flag, i + 1) > -1) {\n      this.raise(state.start, \"Duplicate regular expression flag\");\n    }\n    if (flag === \"u\") { u = true; }\n    if (flag === \"v\") { v = true; }\n  }\n  if (this.options.ecmaVersion >= 15 && u && v) {\n    this.raise(state.start, \"Invalid regular expression flag\");\n  }\n};\n\nfunction hasProp(obj) {\n  for (var _ in obj) { return true }\n  return false\n}\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpPattern = function(state) {\n  this.regexp_pattern(state);\n\n  // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n  // parsing contains a |GroupName|, reparse with the goal symbol\n  // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n  // exception if _P_ did not conform to the grammar, if any elements of _P_\n  // were not matched by the parse, or if any Early Error conditions exist.\n  if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) {\n    state.switchN = true;\n    this.regexp_pattern(state);\n  }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp$1.regexp_pattern = function(state) {\n  state.pos = 0;\n  state.lastIntValue = 0;\n  state.lastStringValue = \"\";\n  state.lastAssertionIsQuantifiable = false;\n  state.numCapturingParens = 0;\n  state.maxBackReference = 0;\n  state.groupNames = Object.create(null);\n  state.backReferenceNames.length = 0;\n  state.branchID = null;\n\n  this.regexp_disjunction(state);\n\n  if (state.pos !== state.source.length) {\n    // Make the same messages as V8.\n    if (state.eat(0x29 /* ) */)) {\n      state.raise(\"Unmatched ')'\");\n    }\n    if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) {\n      state.raise(\"Lone quantifier brackets\");\n    }\n  }\n  if (state.maxBackReference > state.numCapturingParens) {\n    state.raise(\"Invalid escape\");\n  }\n  for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) {\n    var name = list[i];\n\n    if (!state.groupNames[name]) {\n      state.raise(\"Invalid named capture referenced\");\n    }\n  }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp$1.regexp_disjunction = function(state) {\n  var trackDisjunction = this.options.ecmaVersion >= 16;\n  if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); }\n  this.regexp_alternative(state);\n  while (state.eat(0x7C /* | */)) {\n    if (trackDisjunction) { state.branchID = state.branchID.sibling(); }\n    this.regexp_alternative(state);\n  }\n  if (trackDisjunction) { state.branchID = state.branchID.parent; }\n\n  // Make the same message as V8.\n  if (this.regexp_eatQuantifier(state, true)) {\n    state.raise(\"Nothing to repeat\");\n  }\n  if (state.eat(0x7B /* { */)) {\n    state.raise(\"Lone quantifier brackets\");\n  }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp$1.regexp_alternative = function(state) {\n  while (state.pos < state.source.length && this.regexp_eatTerm(state)) {}\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp$1.regexp_eatTerm = function(state) {\n  if (this.regexp_eatAssertion(state)) {\n    // Handle `QuantifiableAssertion Quantifier` alternative.\n    // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n    // is a QuantifiableAssertion.\n    if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n      // Make the same message as V8.\n      if (state.switchU) {\n        state.raise(\"Invalid quantifier\");\n      }\n    }\n    return true\n  }\n\n  if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n    this.regexp_eatQuantifier(state);\n    return true\n  }\n\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp$1.regexp_eatAssertion = function(state) {\n  var start = state.pos;\n  state.lastAssertionIsQuantifiable = false;\n\n  // ^, $\n  if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n    return true\n  }\n\n  // \\b \\B\n  if (state.eat(0x5C /* \\ */)) {\n    if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n      return true\n    }\n    state.pos = start;\n  }\n\n  // Lookahead / Lookbehind\n  if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n    var lookbehind = false;\n    if (this.options.ecmaVersion >= 9) {\n      lookbehind = state.eat(0x3C /* < */);\n    }\n    if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n      this.regexp_disjunction(state);\n      if (!state.eat(0x29 /* ) */)) {\n        state.raise(\"Unterminated group\");\n      }\n      state.lastAssertionIsQuantifiable = !lookbehind;\n      return true\n    }\n  }\n\n  state.pos = start;\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp$1.regexp_eatQuantifier = function(state, noError) {\n  if ( noError === void 0 ) noError = false;\n\n  if (this.regexp_eatQuantifierPrefix(state, noError)) {\n    state.eat(0x3F /* ? */);\n    return true\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp$1.regexp_eatQuantifierPrefix = function(state, noError) {\n  return (\n    state.eat(0x2A /* * */) ||\n    state.eat(0x2B /* + */) ||\n    state.eat(0x3F /* ? */) ||\n    this.regexp_eatBracedQuantifier(state, noError)\n  )\n};\npp$1.regexp_eatBracedQuantifier = function(state, noError) {\n  var start = state.pos;\n  if (state.eat(0x7B /* { */)) {\n    var min = 0, max = -1;\n    if (this.regexp_eatDecimalDigits(state)) {\n      min = state.lastIntValue;\n      if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n        max = state.lastIntValue;\n      }\n      if (state.eat(0x7D /* } */)) {\n        // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n        if (max !== -1 && max < min && !noError) {\n          state.raise(\"numbers out of order in {} quantifier\");\n        }\n        return true\n      }\n    }\n    if (state.switchU && !noError) {\n      state.raise(\"Incomplete quantifier\");\n    }\n    state.pos = start;\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp$1.regexp_eatAtom = function(state) {\n  return (\n    this.regexp_eatPatternCharacters(state) ||\n    state.eat(0x2E /* . */) ||\n    this.regexp_eatReverseSolidusAtomEscape(state) ||\n    this.regexp_eatCharacterClass(state) ||\n    this.regexp_eatUncapturingGroup(state) ||\n    this.regexp_eatCapturingGroup(state)\n  )\n};\npp$1.regexp_eatReverseSolidusAtomEscape = function(state) {\n  var start = state.pos;\n  if (state.eat(0x5C /* \\ */)) {\n    if (this.regexp_eatAtomEscape(state)) {\n      return true\n    }\n    state.pos = start;\n  }\n  return false\n};\npp$1.regexp_eatUncapturingGroup = function(state) {\n  var start = state.pos;\n  if (state.eat(0x28 /* ( */)) {\n    if (state.eat(0x3F /* ? */)) {\n      if (this.options.ecmaVersion >= 16) {\n        var addModifiers = this.regexp_eatModifiers(state);\n        var hasHyphen = state.eat(0x2D /* - */);\n        if (addModifiers || hasHyphen) {\n          for (var i = 0; i < addModifiers.length; i++) {\n            var modifier = addModifiers.charAt(i);\n            if (addModifiers.indexOf(modifier, i + 1) > -1) {\n              state.raise(\"Duplicate regular expression modifiers\");\n            }\n          }\n          if (hasHyphen) {\n            var removeModifiers = this.regexp_eatModifiers(state);\n            if (!addModifiers && !removeModifiers && state.current() === 0x3A /* : */) {\n              state.raise(\"Invalid regular expression modifiers\");\n            }\n            for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) {\n              var modifier$1 = removeModifiers.charAt(i$1);\n              if (\n                removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 ||\n                addModifiers.indexOf(modifier$1) > -1\n              ) {\n                state.raise(\"Duplicate regular expression modifiers\");\n              }\n            }\n          }\n        }\n      }\n      if (state.eat(0x3A /* : */)) {\n        this.regexp_disjunction(state);\n        if (state.eat(0x29 /* ) */)) {\n          return true\n        }\n        state.raise(\"Unterminated group\");\n      }\n    }\n    state.pos = start;\n  }\n  return false\n};\npp$1.regexp_eatCapturingGroup = function(state) {\n  if (state.eat(0x28 /* ( */)) {\n    if (this.options.ecmaVersion >= 9) {\n      this.regexp_groupSpecifier(state);\n    } else if (state.current() === 0x3F /* ? */) {\n      state.raise(\"Invalid group\");\n    }\n    this.regexp_disjunction(state);\n    if (state.eat(0x29 /* ) */)) {\n      state.numCapturingParens += 1;\n      return true\n    }\n    state.raise(\"Unterminated group\");\n  }\n  return false\n};\n// RegularExpressionModifiers ::\n//   [empty]\n//   RegularExpressionModifiers RegularExpressionModifier\npp$1.regexp_eatModifiers = function(state) {\n  var modifiers = \"\";\n  var ch = 0;\n  while ((ch = state.current()) !== -1 && isRegularExpressionModifier(ch)) {\n    modifiers += codePointToString(ch);\n    state.advance();\n  }\n  return modifiers\n};\n// RegularExpressionModifier :: one of\n//   `i` `m` `s`\nfunction isRegularExpressionModifier(ch) {\n  return ch === 0x69 /* i */ || ch === 0x6d /* m */ || ch === 0x73 /* s */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp$1.regexp_eatExtendedAtom = function(state) {\n  return (\n    state.eat(0x2E /* . */) ||\n    this.regexp_eatReverseSolidusAtomEscape(state) ||\n    this.regexp_eatCharacterClass(state) ||\n    this.regexp_eatUncapturingGroup(state) ||\n    this.regexp_eatCapturingGroup(state) ||\n    this.regexp_eatInvalidBracedQuantifier(state) ||\n    this.regexp_eatExtendedPatternCharacter(state)\n  )\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp$1.regexp_eatInvalidBracedQuantifier = function(state) {\n  if (this.regexp_eatBracedQuantifier(state, true)) {\n    state.raise(\"Nothing to repeat\");\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp$1.regexp_eatSyntaxCharacter = function(state) {\n  var ch = state.current();\n  if (isSyntaxCharacter(ch)) {\n    state.lastIntValue = ch;\n    state.advance();\n    return true\n  }\n  return false\n};\nfunction isSyntaxCharacter(ch) {\n  return (\n    ch === 0x24 /* $ */ ||\n    ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n    ch === 0x2E /* . */ ||\n    ch === 0x3F /* ? */ ||\n    ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n    ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n  )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp$1.regexp_eatPatternCharacters = function(state) {\n  var start = state.pos;\n  var ch = 0;\n  while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n    state.advance();\n  }\n  return state.pos !== start\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp$1.regexp_eatExtendedPatternCharacter = function(state) {\n  var ch = state.current();\n  if (\n    ch !== -1 &&\n    ch !== 0x24 /* $ */ &&\n    !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n    ch !== 0x2E /* . */ &&\n    ch !== 0x3F /* ? */ &&\n    ch !== 0x5B /* [ */ &&\n    ch !== 0x5E /* ^ */ &&\n    ch !== 0x7C /* | */\n  ) {\n    state.advance();\n    return true\n  }\n  return false\n};\n\n// GroupSpecifier ::\n//   [empty]\n//   `?` GroupName\npp$1.regexp_groupSpecifier = function(state) {\n  if (state.eat(0x3F /* ? */)) {\n    if (!this.regexp_eatGroupName(state)) { state.raise(\"Invalid group\"); }\n    var trackDisjunction = this.options.ecmaVersion >= 16;\n    var known = state.groupNames[state.lastStringValue];\n    if (known) {\n      if (trackDisjunction) {\n        for (var i = 0, list = known; i < list.length; i += 1) {\n          var altID = list[i];\n\n          if (!altID.separatedFrom(state.branchID))\n            { state.raise(\"Duplicate capture group name\"); }\n        }\n      } else {\n        state.raise(\"Duplicate capture group name\");\n      }\n    }\n    if (trackDisjunction) {\n      (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID);\n    } else {\n      state.groupNames[state.lastStringValue] = true;\n    }\n  }\n};\n\n// GroupName ::\n//   `<` RegExpIdentifierName `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatGroupName = function(state) {\n  state.lastStringValue = \"\";\n  if (state.eat(0x3C /* < */)) {\n    if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n      return true\n    }\n    state.raise(\"Invalid capture group name\");\n  }\n  return false\n};\n\n// RegExpIdentifierName ::\n//   RegExpIdentifierStart\n//   RegExpIdentifierName RegExpIdentifierPart\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatRegExpIdentifierName = function(state) {\n  state.lastStringValue = \"\";\n  if (this.regexp_eatRegExpIdentifierStart(state)) {\n    state.lastStringValue += codePointToString(state.lastIntValue);\n    while (this.regexp_eatRegExpIdentifierPart(state)) {\n      state.lastStringValue += codePointToString(state.lastIntValue);\n    }\n    return true\n  }\n  return false\n};\n\n// RegExpIdentifierStart ::\n//   UnicodeIDStart\n//   `$`\n//   `_`\n//   `\\` RegExpUnicodeEscapeSequence[+U]\npp$1.regexp_eatRegExpIdentifierStart = function(state) {\n  var start = state.pos;\n  var forceU = this.options.ecmaVersion >= 11;\n  var ch = state.current(forceU);\n  state.advance(forceU);\n\n  if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n    ch = state.lastIntValue;\n  }\n  if (isRegExpIdentifierStart(ch)) {\n    state.lastIntValue = ch;\n    return true\n  }\n\n  state.pos = start;\n  return false\n};\nfunction isRegExpIdentifierStart(ch) {\n  return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart ::\n//   UnicodeIDContinue\n//   `$`\n//   `_`\n//   `\\` RegExpUnicodeEscapeSequence[+U]\n//   <ZWNJ>\n//   <ZWJ>\npp$1.regexp_eatRegExpIdentifierPart = function(state) {\n  var start = state.pos;\n  var forceU = this.options.ecmaVersion >= 11;\n  var ch = state.current(forceU);\n  state.advance(forceU);\n\n  if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n    ch = state.lastIntValue;\n  }\n  if (isRegExpIdentifierPart(ch)) {\n    state.lastIntValue = ch;\n    return true\n  }\n\n  state.pos = start;\n  return false\n};\nfunction isRegExpIdentifierPart(ch) {\n  return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp$1.regexp_eatAtomEscape = function(state) {\n  if (\n    this.regexp_eatBackReference(state) ||\n    this.regexp_eatCharacterClassEscape(state) ||\n    this.regexp_eatCharacterEscape(state) ||\n    (state.switchN && this.regexp_eatKGroupName(state))\n  ) {\n    return true\n  }\n  if (state.switchU) {\n    // Make the same message as V8.\n    if (state.current() === 0x63 /* c */) {\n      state.raise(\"Invalid unicode escape\");\n    }\n    state.raise(\"Invalid escape\");\n  }\n  return false\n};\npp$1.regexp_eatBackReference = function(state) {\n  var start = state.pos;\n  if (this.regexp_eatDecimalEscape(state)) {\n    var n = state.lastIntValue;\n    if (state.switchU) {\n      // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n      if (n > state.maxBackReference) {\n        state.maxBackReference = n;\n      }\n      return true\n    }\n    if (n <= state.numCapturingParens) {\n      return true\n    }\n    state.pos = start;\n  }\n  return false\n};\npp$1.regexp_eatKGroupName = function(state) {\n  if (state.eat(0x6B /* k */)) {\n    if (this.regexp_eatGroupName(state)) {\n      state.backReferenceNames.push(state.lastStringValue);\n      return true\n    }\n    state.raise(\"Invalid named reference\");\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp$1.regexp_eatCharacterEscape = function(state) {\n  return (\n    this.regexp_eatControlEscape(state) ||\n    this.regexp_eatCControlLetter(state) ||\n    this.regexp_eatZero(state) ||\n    this.regexp_eatHexEscapeSequence(state) ||\n    this.regexp_eatRegExpUnicodeEscapeSequence(state, false) ||\n    (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n    this.regexp_eatIdentityEscape(state)\n  )\n};\npp$1.regexp_eatCControlLetter = function(state) {\n  var start = state.pos;\n  if (state.eat(0x63 /* c */)) {\n    if (this.regexp_eatControlLetter(state)) {\n      return true\n    }\n    state.pos = start;\n  }\n  return false\n};\npp$1.regexp_eatZero = function(state) {\n  if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n    state.lastIntValue = 0;\n    state.advance();\n    return true\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp$1.regexp_eatControlEscape = function(state) {\n  var ch = state.current();\n  if (ch === 0x74 /* t */) {\n    state.lastIntValue = 0x09; /* \\t */\n    state.advance();\n    return true\n  }\n  if (ch === 0x6E /* n */) {\n    state.lastIntValue = 0x0A; /* \\n */\n    state.advance();\n    return true\n  }\n  if (ch === 0x76 /* v */) {\n    state.lastIntValue = 0x0B; /* \\v */\n    state.advance();\n    return true\n  }\n  if (ch === 0x66 /* f */) {\n    state.lastIntValue = 0x0C; /* \\f */\n    state.advance();\n    return true\n  }\n  if (ch === 0x72 /* r */) {\n    state.lastIntValue = 0x0D; /* \\r */\n    state.advance();\n    return true\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp$1.regexp_eatControlLetter = function(state) {\n  var ch = state.current();\n  if (isControlLetter(ch)) {\n    state.lastIntValue = ch % 0x20;\n    state.advance();\n    return true\n  }\n  return false\n};\nfunction isControlLetter(ch) {\n  return (\n    (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n    (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n  )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {\n  if ( forceU === void 0 ) forceU = false;\n\n  var start = state.pos;\n  var switchU = forceU || state.switchU;\n\n  if (state.eat(0x75 /* u */)) {\n    if (this.regexp_eatFixedHexDigits(state, 4)) {\n      var lead = state.lastIntValue;\n      if (switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n        var leadSurrogateEnd = state.pos;\n        if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n          var trail = state.lastIntValue;\n          if (trail >= 0xDC00 && trail <= 0xDFFF) {\n            state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n            return true\n          }\n        }\n        state.pos = leadSurrogateEnd;\n        state.lastIntValue = lead;\n      }\n      return true\n    }\n    if (\n      switchU &&\n      state.eat(0x7B /* { */) &&\n      this.regexp_eatHexDigits(state) &&\n      state.eat(0x7D /* } */) &&\n      isValidUnicode(state.lastIntValue)\n    ) {\n      return true\n    }\n    if (switchU) {\n      state.raise(\"Invalid unicode escape\");\n    }\n    state.pos = start;\n  }\n\n  return false\n};\nfunction isValidUnicode(ch) {\n  return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp$1.regexp_eatIdentityEscape = function(state) {\n  if (state.switchU) {\n    if (this.regexp_eatSyntaxCharacter(state)) {\n      return true\n    }\n    if (state.eat(0x2F /* / */)) {\n      state.lastIntValue = 0x2F; /* / */\n      return true\n    }\n    return false\n  }\n\n  var ch = state.current();\n  if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n    state.lastIntValue = ch;\n    state.advance();\n    return true\n  }\n\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp$1.regexp_eatDecimalEscape = function(state) {\n  state.lastIntValue = 0;\n  var ch = state.current();\n  if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n    do {\n      state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n      state.advance();\n    } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n    return true\n  }\n  return false\n};\n\n// Return values used by character set parsing methods, needed to\n// forbid negation of sets that can match strings.\nvar CharSetNone = 0; // Nothing parsed\nvar CharSetOk = 1; // Construct parsed, cannot contain strings\nvar CharSetString = 2; // Construct parsed, can contain strings\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp$1.regexp_eatCharacterClassEscape = function(state) {\n  var ch = state.current();\n\n  if (isCharacterClassEscape(ch)) {\n    state.lastIntValue = -1;\n    state.advance();\n    return CharSetOk\n  }\n\n  var negate = false;\n  if (\n    state.switchU &&\n    this.options.ecmaVersion >= 9 &&\n    ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */)\n  ) {\n    state.lastIntValue = -1;\n    state.advance();\n    var result;\n    if (\n      state.eat(0x7B /* { */) &&\n      (result = this.regexp_eatUnicodePropertyValueExpression(state)) &&\n      state.eat(0x7D /* } */)\n    ) {\n      if (negate && result === CharSetString) { state.raise(\"Invalid property name\"); }\n      return result\n    }\n    state.raise(\"Invalid property name\");\n  }\n\n  return CharSetNone\n};\n\nfunction isCharacterClassEscape(ch) {\n  return (\n    ch === 0x64 /* d */ ||\n    ch === 0x44 /* D */ ||\n    ch === 0x73 /* s */ ||\n    ch === 0x53 /* S */ ||\n    ch === 0x77 /* w */ ||\n    ch === 0x57 /* W */\n  )\n}\n\n// UnicodePropertyValueExpression ::\n//   UnicodePropertyName `=` UnicodePropertyValue\n//   LoneUnicodePropertyNameOrValue\npp$1.regexp_eatUnicodePropertyValueExpression = function(state) {\n  var start = state.pos;\n\n  // UnicodePropertyName `=` UnicodePropertyValue\n  if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n    var name = state.lastStringValue;\n    if (this.regexp_eatUnicodePropertyValue(state)) {\n      var value = state.lastStringValue;\n      this.regexp_validateUnicodePropertyNameAndValue(state, name, value);\n      return CharSetOk\n    }\n  }\n  state.pos = start;\n\n  // LoneUnicodePropertyNameOrValue\n  if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n    var nameOrValue = state.lastStringValue;\n    return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n  }\n  return CharSetNone\n};\n\npp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n  if (!hasOwn(state.unicodeProperties.nonBinary, name))\n    { state.raise(\"Invalid property name\"); }\n  if (!state.unicodeProperties.nonBinary[name].test(value))\n    { state.raise(\"Invalid property value\"); }\n};\n\npp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n  if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk }\n  if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString }\n  state.raise(\"Invalid property name\");\n};\n\n// UnicodePropertyName ::\n//   UnicodePropertyNameCharacters\npp$1.regexp_eatUnicodePropertyName = function(state) {\n  var ch = 0;\n  state.lastStringValue = \"\";\n  while (isUnicodePropertyNameCharacter(ch = state.current())) {\n    state.lastStringValue += codePointToString(ch);\n    state.advance();\n  }\n  return state.lastStringValue !== \"\"\n};\n\nfunction isUnicodePropertyNameCharacter(ch) {\n  return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n//   UnicodePropertyValueCharacters\npp$1.regexp_eatUnicodePropertyValue = function(state) {\n  var ch = 0;\n  state.lastStringValue = \"\";\n  while (isUnicodePropertyValueCharacter(ch = state.current())) {\n    state.lastStringValue += codePointToString(ch);\n    state.advance();\n  }\n  return state.lastStringValue !== \"\"\n};\nfunction isUnicodePropertyValueCharacter(ch) {\n  return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n//   UnicodePropertyValueCharacters\npp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n  return this.regexp_eatUnicodePropertyValue(state)\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp$1.regexp_eatCharacterClass = function(state) {\n  if (state.eat(0x5B /* [ */)) {\n    var negate = state.eat(0x5E /* ^ */);\n    var result = this.regexp_classContents(state);\n    if (!state.eat(0x5D /* ] */))\n      { state.raise(\"Unterminated character class\"); }\n    if (negate && result === CharSetString)\n      { state.raise(\"Negated character class may contain strings\"); }\n    return true\n  }\n  return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassContents\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\npp$1.regexp_classContents = function(state) {\n  if (state.current() === 0x5D /* ] */) { return CharSetOk }\n  if (state.switchV) { return this.regexp_classSetExpression(state) }\n  this.regexp_nonEmptyClassRanges(state);\n  return CharSetOk\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp$1.regexp_nonEmptyClassRanges = function(state) {\n  while (this.regexp_eatClassAtom(state)) {\n    var left = state.lastIntValue;\n    if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n      var right = state.lastIntValue;\n      if (state.switchU && (left === -1 || right === -1)) {\n        state.raise(\"Invalid character class\");\n      }\n      if (left !== -1 && right !== -1 && left > right) {\n        state.raise(\"Range out of order in character class\");\n      }\n    }\n  }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp$1.regexp_eatClassAtom = function(state) {\n  var start = state.pos;\n\n  if (state.eat(0x5C /* \\ */)) {\n    if (this.regexp_eatClassEscape(state)) {\n      return true\n    }\n    if (state.switchU) {\n      // Make the same message as V8.\n      var ch$1 = state.current();\n      if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) {\n        state.raise(\"Invalid class escape\");\n      }\n      state.raise(\"Invalid escape\");\n    }\n    state.pos = start;\n  }\n\n  var ch = state.current();\n  if (ch !== 0x5D /* ] */) {\n    state.lastIntValue = ch;\n    state.advance();\n    return true\n  }\n\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp$1.regexp_eatClassEscape = function(state) {\n  var start = state.pos;\n\n  if (state.eat(0x62 /* b */)) {\n    state.lastIntValue = 0x08; /* <BS> */\n    return true\n  }\n\n  if (state.switchU && state.eat(0x2D /* - */)) {\n    state.lastIntValue = 0x2D; /* - */\n    return true\n  }\n\n  if (!state.switchU && state.eat(0x63 /* c */)) {\n    if (this.regexp_eatClassControlLetter(state)) {\n      return true\n    }\n    state.pos = start;\n  }\n\n  return (\n    this.regexp_eatCharacterClassEscape(state) ||\n    this.regexp_eatCharacterEscape(state)\n  )\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetExpression\n// https://tc39.es/ecma262/#prod-ClassUnion\n// https://tc39.es/ecma262/#prod-ClassIntersection\n// https://tc39.es/ecma262/#prod-ClassSubtraction\npp$1.regexp_classSetExpression = function(state) {\n  var result = CharSetOk, subResult;\n  if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) {\n    if (subResult === CharSetString) { result = CharSetString; }\n    // https://tc39.es/ecma262/#prod-ClassIntersection\n    var start = state.pos;\n    while (state.eatChars([0x26, 0x26] /* && */)) {\n      if (\n        state.current() !== 0x26 /* & */ &&\n        (subResult = this.regexp_eatClassSetOperand(state))\n      ) {\n        if (subResult !== CharSetString) { result = CharSetOk; }\n        continue\n      }\n      state.raise(\"Invalid character in character class\");\n    }\n    if (start !== state.pos) { return result }\n    // https://tc39.es/ecma262/#prod-ClassSubtraction\n    while (state.eatChars([0x2D, 0x2D] /* -- */)) {\n      if (this.regexp_eatClassSetOperand(state)) { continue }\n      state.raise(\"Invalid character in character class\");\n    }\n    if (start !== state.pos) { return result }\n  } else {\n    state.raise(\"Invalid character in character class\");\n  }\n  // https://tc39.es/ecma262/#prod-ClassUnion\n  for (;;) {\n    if (this.regexp_eatClassSetRange(state)) { continue }\n    subResult = this.regexp_eatClassSetOperand(state);\n    if (!subResult) { return result }\n    if (subResult === CharSetString) { result = CharSetString; }\n  }\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetRange\npp$1.regexp_eatClassSetRange = function(state) {\n  var start = state.pos;\n  if (this.regexp_eatClassSetCharacter(state)) {\n    var left = state.lastIntValue;\n    if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) {\n      var right = state.lastIntValue;\n      if (left !== -1 && right !== -1 && left > right) {\n        state.raise(\"Range out of order in character class\");\n      }\n      return true\n    }\n    state.pos = start;\n  }\n  return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetOperand\npp$1.regexp_eatClassSetOperand = function(state) {\n  if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk }\n  return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state)\n};\n\n// https://tc39.es/ecma262/#prod-NestedClass\npp$1.regexp_eatNestedClass = function(state) {\n  var start = state.pos;\n  if (state.eat(0x5B /* [ */)) {\n    var negate = state.eat(0x5E /* ^ */);\n    var result = this.regexp_classContents(state);\n    if (state.eat(0x5D /* ] */)) {\n      if (negate && result === CharSetString) {\n        state.raise(\"Negated character class may contain strings\");\n      }\n      return result\n    }\n    state.pos = start;\n  }\n  if (state.eat(0x5C /* \\ */)) {\n    var result$1 = this.regexp_eatCharacterClassEscape(state);\n    if (result$1) {\n      return result$1\n    }\n    state.pos = start;\n  }\n  return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunction\npp$1.regexp_eatClassStringDisjunction = function(state) {\n  var start = state.pos;\n  if (state.eatChars([0x5C, 0x71] /* \\q */)) {\n    if (state.eat(0x7B /* { */)) {\n      var result = this.regexp_classStringDisjunctionContents(state);\n      if (state.eat(0x7D /* } */)) {\n        return result\n      }\n    } else {\n      // Make the same message as V8.\n      state.raise(\"Invalid escape\");\n    }\n    state.pos = start;\n  }\n  return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents\npp$1.regexp_classStringDisjunctionContents = function(state) {\n  var result = this.regexp_classString(state);\n  while (state.eat(0x7C /* | */)) {\n    if (this.regexp_classString(state) === CharSetString) { result = CharSetString; }\n  }\n  return result\n};\n\n// https://tc39.es/ecma262/#prod-ClassString\n// https://tc39.es/ecma262/#prod-NonEmptyClassString\npp$1.regexp_classString = function(state) {\n  var count = 0;\n  while (this.regexp_eatClassSetCharacter(state)) { count++; }\n  return count === 1 ? CharSetOk : CharSetString\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetCharacter\npp$1.regexp_eatClassSetCharacter = function(state) {\n  var start = state.pos;\n  if (state.eat(0x5C /* \\ */)) {\n    if (\n      this.regexp_eatCharacterEscape(state) ||\n      this.regexp_eatClassSetReservedPunctuator(state)\n    ) {\n      return true\n    }\n    if (state.eat(0x62 /* b */)) {\n      state.lastIntValue = 0x08; /* <BS> */\n      return true\n    }\n    state.pos = start;\n    return false\n  }\n  var ch = state.current();\n  if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false }\n  if (isClassSetSyntaxCharacter(ch)) { return false }\n  state.advance();\n  state.lastIntValue = ch;\n  return true\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator\nfunction isClassSetReservedDoublePunctuatorCharacter(ch) {\n  return (\n    ch === 0x21 /* ! */ ||\n    ch >= 0x23 /* # */ && ch <= 0x26 /* & */ ||\n    ch >= 0x2A /* * */ && ch <= 0x2C /* , */ ||\n    ch === 0x2E /* . */ ||\n    ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ ||\n    ch === 0x5E /* ^ */ ||\n    ch === 0x60 /* ` */ ||\n    ch === 0x7E /* ~ */\n  )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter\nfunction isClassSetSyntaxCharacter(ch) {\n  return (\n    ch === 0x28 /* ( */ ||\n    ch === 0x29 /* ) */ ||\n    ch === 0x2D /* - */ ||\n    ch === 0x2F /* / */ ||\n    ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ ||\n    ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n  )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\npp$1.regexp_eatClassSetReservedPunctuator = function(state) {\n  var ch = state.current();\n  if (isClassSetReservedPunctuator(ch)) {\n    state.lastIntValue = ch;\n    state.advance();\n    return true\n  }\n  return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\nfunction isClassSetReservedPunctuator(ch) {\n  return (\n    ch === 0x21 /* ! */ ||\n    ch === 0x23 /* # */ ||\n    ch === 0x25 /* % */ ||\n    ch === 0x26 /* & */ ||\n    ch === 0x2C /* , */ ||\n    ch === 0x2D /* - */ ||\n    ch >= 0x3A /* : */ && ch <= 0x3E /* > */ ||\n    ch === 0x40 /* @ */ ||\n    ch === 0x60 /* ` */ ||\n    ch === 0x7E /* ~ */\n  )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp$1.regexp_eatClassControlLetter = function(state) {\n  var ch = state.current();\n  if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n    state.lastIntValue = ch % 0x20;\n    state.advance();\n    return true\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatHexEscapeSequence = function(state) {\n  var start = state.pos;\n  if (state.eat(0x78 /* x */)) {\n    if (this.regexp_eatFixedHexDigits(state, 2)) {\n      return true\n    }\n    if (state.switchU) {\n      state.raise(\"Invalid escape\");\n    }\n    state.pos = start;\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp$1.regexp_eatDecimalDigits = function(state) {\n  var start = state.pos;\n  var ch = 0;\n  state.lastIntValue = 0;\n  while (isDecimalDigit(ch = state.current())) {\n    state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n    state.advance();\n  }\n  return state.pos !== start\n};\nfunction isDecimalDigit(ch) {\n  return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp$1.regexp_eatHexDigits = function(state) {\n  var start = state.pos;\n  var ch = 0;\n  state.lastIntValue = 0;\n  while (isHexDigit(ch = state.current())) {\n    state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n    state.advance();\n  }\n  return state.pos !== start\n};\nfunction isHexDigit(ch) {\n  return (\n    (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n    (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n    (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n  )\n}\nfunction hexToInt(ch) {\n  if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n    return 10 + (ch - 0x41 /* A */)\n  }\n  if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n    return 10 + (ch - 0x61 /* a */)\n  }\n  return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp$1.regexp_eatLegacyOctalEscapeSequence = function(state) {\n  if (this.regexp_eatOctalDigit(state)) {\n    var n1 = state.lastIntValue;\n    if (this.regexp_eatOctalDigit(state)) {\n      var n2 = state.lastIntValue;\n      if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n        state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue;\n      } else {\n        state.lastIntValue = n1 * 8 + n2;\n      }\n    } else {\n      state.lastIntValue = n1;\n    }\n    return true\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp$1.regexp_eatOctalDigit = function(state) {\n  var ch = state.current();\n  if (isOctalDigit(ch)) {\n    state.lastIntValue = ch - 0x30; /* 0 */\n    state.advance();\n    return true\n  }\n  state.lastIntValue = 0;\n  return false\n};\nfunction isOctalDigit(ch) {\n  return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatFixedHexDigits = function(state, length) {\n  var start = state.pos;\n  state.lastIntValue = 0;\n  for (var i = 0; i < length; ++i) {\n    var ch = state.current();\n    if (!isHexDigit(ch)) {\n      state.pos = start;\n      return false\n    }\n    state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n    state.advance();\n  }\n  return true\n};\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = function Token(p) {\n  this.type = p.type;\n  this.value = p.value;\n  this.start = p.start;\n  this.end = p.end;\n  if (p.options.locations)\n    { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); }\n  if (p.options.ranges)\n    { this.range = [p.start, p.end]; }\n};\n\n// ## Tokenizer\n\nvar pp = Parser.prototype;\n\n// Move to the next token\n\npp.next = function(ignoreEscapeSequenceInKeyword) {\n  if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc)\n    { this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + this.type.keyword); }\n  if (this.options.onToken)\n    { this.options.onToken(new Token(this)); }\n\n  this.lastTokEnd = this.end;\n  this.lastTokStart = this.start;\n  this.lastTokEndLoc = this.endLoc;\n  this.lastTokStartLoc = this.startLoc;\n  this.nextToken();\n};\n\npp.getToken = function() {\n  this.next();\n  return new Token(this)\n};\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n  { pp[Symbol.iterator] = function() {\n    var this$1$1 = this;\n\n    return {\n      next: function () {\n        var token = this$1$1.getToken();\n        return {\n          done: token.type === types$1.eof,\n          value: token\n        }\n      }\n    }\n  }; }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function() {\n  var curContext = this.curContext();\n  if (!curContext || !curContext.preserveSpace) { this.skipSpace(); }\n\n  this.start = this.pos;\n  if (this.options.locations) { this.startLoc = this.curPosition(); }\n  if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) }\n\n  if (curContext.override) { return curContext.override(this) }\n  else { this.readToken(this.fullCharCodeAtPos()); }\n};\n\npp.readToken = function(code) {\n  // Identifier or keyword. '\\uXXXX' sequences are allowed in\n  // identifiers, so '\\' also dispatches to that.\n  if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n    { return this.readWord() }\n\n  return this.getTokenFromCode(code)\n};\n\npp.fullCharCodeAtPos = function() {\n  var code = this.input.charCodeAt(this.pos);\n  if (code <= 0xd7ff || code >= 0xdc00) { return code }\n  var next = this.input.charCodeAt(this.pos + 1);\n  return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00\n};\n\npp.skipBlockComment = function() {\n  var startLoc = this.options.onComment && this.curPosition();\n  var start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2);\n  if (end === -1) { this.raise(this.pos - 2, \"Unterminated comment\"); }\n  this.pos = end + 2;\n  if (this.options.locations) {\n    for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) {\n      ++this.curLine;\n      pos = this.lineStart = nextBreak;\n    }\n  }\n  if (this.options.onComment)\n    { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n                           startLoc, this.curPosition()); }\n};\n\npp.skipLineComment = function(startSkip) {\n  var start = this.pos;\n  var startLoc = this.options.onComment && this.curPosition();\n  var ch = this.input.charCodeAt(this.pos += startSkip);\n  while (this.pos < this.input.length && !isNewLine(ch)) {\n    ch = this.input.charCodeAt(++this.pos);\n  }\n  if (this.options.onComment)\n    { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n                           startLoc, this.curPosition()); }\n};\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function() {\n  loop: while (this.pos < this.input.length) {\n    var ch = this.input.charCodeAt(this.pos);\n    switch (ch) {\n    case 32: case 160: // ' '\n      ++this.pos;\n      break\n    case 13:\n      if (this.input.charCodeAt(this.pos + 1) === 10) {\n        ++this.pos;\n      }\n    case 10: case 8232: case 8233:\n      ++this.pos;\n      if (this.options.locations) {\n        ++this.curLine;\n        this.lineStart = this.pos;\n      }\n      break\n    case 47: // '/'\n      switch (this.input.charCodeAt(this.pos + 1)) {\n      case 42: // '*'\n        this.skipBlockComment();\n        break\n      case 47:\n        this.skipLineComment(2);\n        break\n      default:\n        break loop\n      }\n      break\n    default:\n      if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n        ++this.pos;\n      } else {\n        break loop\n      }\n    }\n  }\n};\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function(type, val) {\n  this.end = this.pos;\n  if (this.options.locations) { this.endLoc = this.curPosition(); }\n  var prevType = this.type;\n  this.type = type;\n  this.value = val;\n\n  this.updateContext(prevType);\n};\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function() {\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (next >= 48 && next <= 57) { return this.readNumber(true) }\n  var next2 = this.input.charCodeAt(this.pos + 2);\n  if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n    this.pos += 3;\n    return this.finishToken(types$1.ellipsis)\n  } else {\n    ++this.pos;\n    return this.finishToken(types$1.dot)\n  }\n};\n\npp.readToken_slash = function() { // '/'\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n  if (next === 61) { return this.finishOp(types$1.assign, 2) }\n  return this.finishOp(types$1.slash, 1)\n};\n\npp.readToken_mult_modulo_exp = function(code) { // '%*'\n  var next = this.input.charCodeAt(this.pos + 1);\n  var size = 1;\n  var tokentype = code === 42 ? types$1.star : types$1.modulo;\n\n  // exponentiation operator ** and **=\n  if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n    ++size;\n    tokentype = types$1.starstar;\n    next = this.input.charCodeAt(this.pos + 2);\n  }\n\n  if (next === 61) { return this.finishOp(types$1.assign, size + 1) }\n  return this.finishOp(tokentype, size)\n};\n\npp.readToken_pipe_amp = function(code) { // '|&'\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (next === code) {\n    if (this.options.ecmaVersion >= 12) {\n      var next2 = this.input.charCodeAt(this.pos + 2);\n      if (next2 === 61) { return this.finishOp(types$1.assign, 3) }\n    }\n    return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2)\n  }\n  if (next === 61) { return this.finishOp(types$1.assign, 2) }\n  return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1)\n};\n\npp.readToken_caret = function() { // '^'\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (next === 61) { return this.finishOp(types$1.assign, 2) }\n  return this.finishOp(types$1.bitwiseXOR, 1)\n};\n\npp.readToken_plus_min = function(code) { // '+-'\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (next === code) {\n    if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n        (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n      // A `-->` line comment\n      this.skipLineComment(3);\n      this.skipSpace();\n      return this.nextToken()\n    }\n    return this.finishOp(types$1.incDec, 2)\n  }\n  if (next === 61) { return this.finishOp(types$1.assign, 2) }\n  return this.finishOp(types$1.plusMin, 1)\n};\n\npp.readToken_lt_gt = function(code) { // '<>'\n  var next = this.input.charCodeAt(this.pos + 1);\n  var size = 1;\n  if (next === code) {\n    size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n    if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) }\n    return this.finishOp(types$1.bitShift, size)\n  }\n  if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n      this.input.charCodeAt(this.pos + 3) === 45) {\n    // `<!--`, an XML-style comment that should be interpreted as a line comment\n    this.skipLineComment(4);\n    this.skipSpace();\n    return this.nextToken()\n  }\n  if (next === 61) { size = 2; }\n  return this.finishOp(types$1.relational, size)\n};\n\npp.readToken_eq_excl = function(code) { // '=!'\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) }\n  if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n    this.pos += 2;\n    return this.finishToken(types$1.arrow)\n  }\n  return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1)\n};\n\npp.readToken_question = function() { // '?'\n  var ecmaVersion = this.options.ecmaVersion;\n  if (ecmaVersion >= 11) {\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next === 46) {\n      var next2 = this.input.charCodeAt(this.pos + 2);\n      if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) }\n    }\n    if (next === 63) {\n      if (ecmaVersion >= 12) {\n        var next2$1 = this.input.charCodeAt(this.pos + 2);\n        if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) }\n      }\n      return this.finishOp(types$1.coalesce, 2)\n    }\n  }\n  return this.finishOp(types$1.question, 1)\n};\n\npp.readToken_numberSign = function() { // '#'\n  var ecmaVersion = this.options.ecmaVersion;\n  var code = 35; // '#'\n  if (ecmaVersion >= 13) {\n    ++this.pos;\n    code = this.fullCharCodeAtPos();\n    if (isIdentifierStart(code, true) || code === 92 /* '\\' */) {\n      return this.finishToken(types$1.privateId, this.readWord1())\n    }\n  }\n\n  this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.getTokenFromCode = function(code) {\n  switch (code) {\n  // The interpretation of a dot depends on whether it is followed\n  // by a digit or another two dots.\n  case 46: // '.'\n    return this.readToken_dot()\n\n  // Punctuation tokens.\n  case 40: ++this.pos; return this.finishToken(types$1.parenL)\n  case 41: ++this.pos; return this.finishToken(types$1.parenR)\n  case 59: ++this.pos; return this.finishToken(types$1.semi)\n  case 44: ++this.pos; return this.finishToken(types$1.comma)\n  case 91: ++this.pos; return this.finishToken(types$1.bracketL)\n  case 93: ++this.pos; return this.finishToken(types$1.bracketR)\n  case 123: ++this.pos; return this.finishToken(types$1.braceL)\n  case 125: ++this.pos; return this.finishToken(types$1.braceR)\n  case 58: ++this.pos; return this.finishToken(types$1.colon)\n\n  case 96: // '`'\n    if (this.options.ecmaVersion < 6) { break }\n    ++this.pos;\n    return this.finishToken(types$1.backQuote)\n\n  case 48: // '0'\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number\n    if (this.options.ecmaVersion >= 6) {\n      if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number\n      if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number\n    }\n\n  // Anything else beginning with a digit is an integer, octal\n  // number, or float.\n  case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n    return this.readNumber(false)\n\n  // Quotes produce strings.\n  case 34: case 39: // '\"', \"'\"\n    return this.readString(code)\n\n  // Operators are parsed inline in tiny state machines. '=' (61) is\n  // often referred to. `finishOp` simply skips the amount of\n  // characters it is given as second argument, and returns a token\n  // of the type given by its first argument.\n  case 47: // '/'\n    return this.readToken_slash()\n\n  case 37: case 42: // '%*'\n    return this.readToken_mult_modulo_exp(code)\n\n  case 124: case 38: // '|&'\n    return this.readToken_pipe_amp(code)\n\n  case 94: // '^'\n    return this.readToken_caret()\n\n  case 43: case 45: // '+-'\n    return this.readToken_plus_min(code)\n\n  case 60: case 62: // '<>'\n    return this.readToken_lt_gt(code)\n\n  case 61: case 33: // '=!'\n    return this.readToken_eq_excl(code)\n\n  case 63: // '?'\n    return this.readToken_question()\n\n  case 126: // '~'\n    return this.finishOp(types$1.prefix, 1)\n\n  case 35: // '#'\n    return this.readToken_numberSign()\n  }\n\n  this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.finishOp = function(type, size) {\n  var str = this.input.slice(this.pos, this.pos + size);\n  this.pos += size;\n  return this.finishToken(type, str)\n};\n\npp.readRegexp = function() {\n  var escaped, inClass, start = this.pos;\n  for (;;) {\n    if (this.pos >= this.input.length) { this.raise(start, \"Unterminated regular expression\"); }\n    var ch = this.input.charAt(this.pos);\n    if (lineBreak.test(ch)) { this.raise(start, \"Unterminated regular expression\"); }\n    if (!escaped) {\n      if (ch === \"[\") { inClass = true; }\n      else if (ch === \"]\" && inClass) { inClass = false; }\n      else if (ch === \"/\" && !inClass) { break }\n      escaped = ch === \"\\\\\";\n    } else { escaped = false; }\n    ++this.pos;\n  }\n  var pattern = this.input.slice(start, this.pos);\n  ++this.pos;\n  var flagsStart = this.pos;\n  var flags = this.readWord1();\n  if (this.containsEsc) { this.unexpected(flagsStart); }\n\n  // Validate pattern\n  var state = this.regexpState || (this.regexpState = new RegExpValidationState(this));\n  state.reset(start, pattern, flags);\n  this.validateRegExpFlags(state);\n  this.validateRegExpPattern(state);\n\n  // Create Literal#value property value.\n  var value = null;\n  try {\n    value = new RegExp(pattern, flags);\n  } catch (e) {\n    // ESTree requires null if it failed to instantiate RegExp object.\n    // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n  }\n\n  return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value})\n};\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {\n  // `len` is used for character escape sequences. In that case, disallow separators.\n  var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined;\n\n  // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b)\n  // and isn't fraction part nor exponent part. In that case, if the first digit\n  // is zero then disallow separators.\n  var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48;\n\n  var start = this.pos, total = 0, lastCode = 0;\n  for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) {\n    var code = this.input.charCodeAt(this.pos), val = (void 0);\n\n    if (allowSeparators && code === 95) {\n      if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed in legacy octal numeric literals\"); }\n      if (lastCode === 95) { this.raiseRecoverable(this.pos, \"Numeric separator must be exactly one underscore\"); }\n      if (i === 0) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed at the first of digits\"); }\n      lastCode = code;\n      continue\n    }\n\n    if (code >= 97) { val = code - 97 + 10; } // a\n    else if (code >= 65) { val = code - 65 + 10; } // A\n    else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9\n    else { val = Infinity; }\n    if (val >= radix) { break }\n    lastCode = code;\n    total = total * radix + val;\n  }\n\n  if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, \"Numeric separator is not allowed at the last of digits\"); }\n  if (this.pos === start || len != null && this.pos - start !== len) { return null }\n\n  return total\n};\n\nfunction stringToNumber(str, isLegacyOctalNumericLiteral) {\n  if (isLegacyOctalNumericLiteral) {\n    return parseInt(str, 8)\n  }\n\n  // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value.\n  return parseFloat(str.replace(/_/g, \"\"))\n}\n\nfunction stringToBigInt(str) {\n  if (typeof BigInt !== \"function\") {\n    return null\n  }\n\n  // `BigInt(value)` throws syntax error if the string contains numeric separators.\n  return BigInt(str.replace(/_/g, \"\"))\n}\n\npp.readRadixNumber = function(radix) {\n  var start = this.pos;\n  this.pos += 2; // 0x\n  var val = this.readInt(radix);\n  if (val == null) { this.raise(this.start + 2, \"Expected number in radix \" + radix); }\n  if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) {\n    val = stringToBigInt(this.input.slice(start, this.pos));\n    ++this.pos;\n  } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n  return this.finishToken(types$1.num, val)\n};\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function(startsWithDot) {\n  var start = this.pos;\n  if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, \"Invalid number\"); }\n  var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n  if (octal && this.strict) { this.raise(start, \"Invalid number\"); }\n  var next = this.input.charCodeAt(this.pos);\n  if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {\n    var val$1 = stringToBigInt(this.input.slice(start, this.pos));\n    ++this.pos;\n    if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n    return this.finishToken(types$1.num, val$1)\n  }\n  if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; }\n  if (next === 46 && !octal) { // '.'\n    ++this.pos;\n    this.readInt(10);\n    next = this.input.charCodeAt(this.pos);\n  }\n  if ((next === 69 || next === 101) && !octal) { // 'eE'\n    next = this.input.charCodeAt(++this.pos);\n    if (next === 43 || next === 45) { ++this.pos; } // '+-'\n    if (this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n  }\n  if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n\n  var val = stringToNumber(this.input.slice(start, this.pos), octal);\n  return this.finishToken(types$1.num, val)\n};\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function() {\n  var ch = this.input.charCodeAt(this.pos), code;\n\n  if (ch === 123) { // '{'\n    if (this.options.ecmaVersion < 6) { this.unexpected(); }\n    var codePos = ++this.pos;\n    code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos);\n    ++this.pos;\n    if (code > 0x10FFFF) { this.invalidStringToken(codePos, \"Code point out of bounds\"); }\n  } else {\n    code = this.readHexChar(4);\n  }\n  return code\n};\n\npp.readString = function(quote) {\n  var out = \"\", chunkStart = ++this.pos;\n  for (;;) {\n    if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated string constant\"); }\n    var ch = this.input.charCodeAt(this.pos);\n    if (ch === quote) { break }\n    if (ch === 92) { // '\\'\n      out += this.input.slice(chunkStart, this.pos);\n      out += this.readEscapedChar(false);\n      chunkStart = this.pos;\n    } else if (ch === 0x2028 || ch === 0x2029) {\n      if (this.options.ecmaVersion < 10) { this.raise(this.start, \"Unterminated string constant\"); }\n      ++this.pos;\n      if (this.options.locations) {\n        this.curLine++;\n        this.lineStart = this.pos;\n      }\n    } else {\n      if (isNewLine(ch)) { this.raise(this.start, \"Unterminated string constant\"); }\n      ++this.pos;\n    }\n  }\n  out += this.input.slice(chunkStart, this.pos++);\n  return this.finishToken(types$1.string, out)\n};\n\n// Reads template string tokens.\n\nvar INVALID_TEMPLATE_ESCAPE_ERROR = {};\n\npp.tryReadTemplateToken = function() {\n  this.inTemplateElement = true;\n  try {\n    this.readTmplToken();\n  } catch (err) {\n    if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n      this.readInvalidTemplateToken();\n    } else {\n      throw err\n    }\n  }\n\n  this.inTemplateElement = false;\n};\n\npp.invalidStringToken = function(position, message) {\n  if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n    throw INVALID_TEMPLATE_ESCAPE_ERROR\n  } else {\n    this.raise(position, message);\n  }\n};\n\npp.readTmplToken = function() {\n  var out = \"\", chunkStart = this.pos;\n  for (;;) {\n    if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated template\"); }\n    var ch = this.input.charCodeAt(this.pos);\n    if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n      if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) {\n        if (ch === 36) {\n          this.pos += 2;\n          return this.finishToken(types$1.dollarBraceL)\n        } else {\n          ++this.pos;\n          return this.finishToken(types$1.backQuote)\n        }\n      }\n      out += this.input.slice(chunkStart, this.pos);\n      return this.finishToken(types$1.template, out)\n    }\n    if (ch === 92) { // '\\'\n      out += this.input.slice(chunkStart, this.pos);\n      out += this.readEscapedChar(true);\n      chunkStart = this.pos;\n    } else if (isNewLine(ch)) {\n      out += this.input.slice(chunkStart, this.pos);\n      ++this.pos;\n      switch (ch) {\n      case 13:\n        if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; }\n      case 10:\n        out += \"\\n\";\n        break\n      default:\n        out += String.fromCharCode(ch);\n        break\n      }\n      if (this.options.locations) {\n        ++this.curLine;\n        this.lineStart = this.pos;\n      }\n      chunkStart = this.pos;\n    } else {\n      ++this.pos;\n    }\n  }\n};\n\n// Reads a template token to search for the end, without validating any escape sequences\npp.readInvalidTemplateToken = function() {\n  for (; this.pos < this.input.length; this.pos++) {\n    switch (this.input[this.pos]) {\n    case \"\\\\\":\n      ++this.pos;\n      break\n\n    case \"$\":\n      if (this.input[this.pos + 1] !== \"{\") { break }\n      // fall through\n    case \"`\":\n      return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos))\n\n    case \"\\r\":\n      if (this.input[this.pos + 1] === \"\\n\") { ++this.pos; }\n      // fall through\n    case \"\\n\": case \"\\u2028\": case \"\\u2029\":\n      ++this.curLine;\n      this.lineStart = this.pos + 1;\n      break\n    }\n  }\n  this.raise(this.start, \"Unterminated template\");\n};\n\n// Used to read escaped characters\n\npp.readEscapedChar = function(inTemplate) {\n  var ch = this.input.charCodeAt(++this.pos);\n  ++this.pos;\n  switch (ch) {\n  case 110: return \"\\n\" // 'n' -> '\\n'\n  case 114: return \"\\r\" // 'r' -> '\\r'\n  case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n  case 117: return codePointToString(this.readCodePoint()) // 'u'\n  case 116: return \"\\t\" // 't' -> '\\t'\n  case 98: return \"\\b\" // 'b' -> '\\b'\n  case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n  case 102: return \"\\f\" // 'f' -> '\\f'\n  case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\\r\\n'\n  case 10: // ' \\n'\n    if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n    return \"\"\n  case 56:\n  case 57:\n    if (this.strict) {\n      this.invalidStringToken(\n        this.pos - 1,\n        \"Invalid escape sequence\"\n      );\n    }\n    if (inTemplate) {\n      var codePos = this.pos - 1;\n\n      this.invalidStringToken(\n        codePos,\n        \"Invalid escape sequence in template string\"\n      );\n    }\n  default:\n    if (ch >= 48 && ch <= 55) {\n      var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0];\n      var octal = parseInt(octalStr, 8);\n      if (octal > 255) {\n        octalStr = octalStr.slice(0, -1);\n        octal = parseInt(octalStr, 8);\n      }\n      this.pos += octalStr.length - 1;\n      ch = this.input.charCodeAt(this.pos);\n      if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n        this.invalidStringToken(\n          this.pos - 1 - octalStr.length,\n          inTemplate\n            ? \"Octal literal in template string\"\n            : \"Octal literal in strict mode\"\n        );\n      }\n      return String.fromCharCode(octal)\n    }\n    if (isNewLine(ch)) {\n      // Unicode new line characters after \\ get removed from output in both\n      // template literals and strings\n      if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n      return \"\"\n    }\n    return String.fromCharCode(ch)\n  }\n};\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function(len) {\n  var codePos = this.pos;\n  var n = this.readInt(16, len);\n  if (n === null) { this.invalidStringToken(codePos, \"Bad character escape sequence\"); }\n  return n\n};\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function() {\n  this.containsEsc = false;\n  var word = \"\", first = true, chunkStart = this.pos;\n  var astral = this.options.ecmaVersion >= 6;\n  while (this.pos < this.input.length) {\n    var ch = this.fullCharCodeAtPos();\n    if (isIdentifierChar(ch, astral)) {\n      this.pos += ch <= 0xffff ? 1 : 2;\n    } else if (ch === 92) { // \"\\\"\n      this.containsEsc = true;\n      word += this.input.slice(chunkStart, this.pos);\n      var escStart = this.pos;\n      if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n        { this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\"); }\n      ++this.pos;\n      var esc = this.readCodePoint();\n      if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n        { this.invalidStringToken(escStart, \"Invalid Unicode escape\"); }\n      word += codePointToString(esc);\n      chunkStart = this.pos;\n    } else {\n      break\n    }\n    first = false;\n  }\n  return word + this.input.slice(chunkStart, this.pos)\n};\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function() {\n  var word = this.readWord1();\n  var type = types$1.name;\n  if (this.keywords.test(word)) {\n    type = keywords[word];\n  }\n  return this.finishToken(type, word)\n};\n\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n//     http://marijnhaverbeke.nl/git/acorn\n//     https://github.com/acornjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/acornjs/acorn/issues\n//\n// [walk]: util/walk.js\n\n\nvar version = \"8.14.0\";\n\nParser.acorn = {\n  Parser: Parser,\n  version: version,\n  defaultOptions: defaultOptions,\n  Position: Position,\n  SourceLocation: SourceLocation,\n  getLineInfo: getLineInfo,\n  Node: Node,\n  TokenType: TokenType,\n  tokTypes: types$1,\n  keywordTypes: keywords,\n  TokContext: TokContext,\n  tokContexts: types,\n  isIdentifierChar: isIdentifierChar,\n  isIdentifierStart: isIdentifierStart,\n  Token: Token,\n  isNewLine: isNewLine,\n  lineBreak: lineBreak,\n  lineBreakG: lineBreakG,\n  nonASCIIwhitespace: nonASCIIwhitespace\n};\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and returns\n// an abstract syntax tree as specified by the [ESTree spec][estree].\n//\n// [estree]: https://github.com/estree/estree\n\nfunction parse(input, options) {\n  return Parser.parse(input, options)\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nfunction parseExpressionAt(input, pos, options) {\n  return Parser.parseExpressionAt(input, pos, options)\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nfunction tokenizer(input, options) {\n  return Parser.tokenizer(input, options)\n}\n\nexport { Node, Parser, Position, SourceLocation, TokContext, Token, TokenType, defaultOptions, getLineInfo, isIdentifierChar, isIdentifierStart, isNewLine, keywords as keywordTypes, lineBreak, lineBreakG, nonASCIIwhitespace, parse, parseExpressionAt, types as tokContexts, types$1 as tokTypes, tokenizer, version };\n","/* (ignored) */","var Transform = require('./transform.js'),\n    Filter = require('./filter.js');\n\nvar log = new Transform(),\n    slice = Array.prototype.slice;\n\nexports = module.exports = function create(name) {\n  var o   = function() { log.write(name, undefined, slice.call(arguments)); return o; };\n  o.debug = function() { log.write(name, 'debug', slice.call(arguments)); return o; };\n  o.info  = function() { log.write(name, 'info',  slice.call(arguments)); return o; };\n  o.warn  = function() { log.write(name, 'warn',  slice.call(arguments)); return o; };\n  o.error = function() { log.write(name, 'error', slice.call(arguments)); return o; };\n  o.log   = o.debug; // for interface compliance with Node and browser consoles\n  o.suggest = exports.suggest;\n  o.format = log.format;\n  return o;\n};\n\n// filled in separately\nexports.defaultBackend = exports.defaultFormatter = null;\n\nexports.pipe = function(dest) {\n  return log.pipe(dest);\n};\n\nexports.end = exports.unpipe = exports.disable = function(from) {\n  return log.unpipe(from);\n};\n\nexports.Transform = Transform;\nexports.Filter = Filter;\n// this is the default filter that's applied when .enable() is called normally\n// you can bypass it completely and set up your own pipes\nexports.suggest = new Filter();\n\nexports.enable = function() {\n  if(exports.defaultFormatter) {\n    return log.pipe(exports.suggest) // filter\n              .pipe(exports.defaultFormatter) // formatter\n              .pipe(exports.defaultBackend); // backend\n  }\n  return log.pipe(exports.suggest) // filter\n            .pipe(exports.defaultBackend); // formatter\n};\n\n","function M() { this._events = {}; }\nM.prototype = {\n  on: function(ev, cb) {\n    this._events || (this._events = {});\n    var e = this._events;\n    (e[ev] || (e[ev] = [])).push(cb);\n    return this;\n  },\n  removeListener: function(ev, cb) {\n    var e = this._events[ev] || [], i;\n    for(i = e.length-1; i >= 0 && e[i]; i--){\n      if(e[i] === cb || e[i].cb === cb) { e.splice(i, 1); }\n    }\n  },\n  removeAllListeners: function(ev) {\n    if(!ev) { this._events = {}; }\n    else { this._events[ev] && (this._events[ev] = []); }\n  },\n  listeners: function(ev) {\n    return (this._events ? this._events[ev] || [] : []);\n  },\n  emit: function(ev) {\n    this._events || (this._events = {});\n    var args = Array.prototype.slice.call(arguments, 1), i, e = this._events[ev] || [];\n    for(i = e.length-1; i >= 0 && e[i]; i--){\n      e[i].apply(this, args);\n    }\n    return this;\n  },\n  when: function(ev, cb) {\n    return this.once(ev, cb, true);\n  },\n  once: function(ev, cb, when) {\n    if(!cb) return this;\n    function c() {\n      if(!when) this.removeListener(ev, c);\n      if(cb.apply(this, arguments) && when) this.removeListener(ev, c);\n    }\n    c.cb = cb;\n    this.on(ev, c);\n    return this;\n  }\n};\nM.mixin = function(dest) {\n  var o = M.prototype, k;\n  for (k in o) {\n    o.hasOwnProperty(k) && (dest.prototype[k] = o[k]);\n  }\n};\nmodule.exports = M;\n","// default filter\nvar Transform = require('./transform.js');\n\nvar levelMap = { debug: 1, info: 2, warn: 3, error: 4 };\n\nfunction Filter() {\n  this.enabled = true;\n  this.defaultResult = true;\n  this.clear();\n}\n\nTransform.mixin(Filter);\n\n// allow all matching, with level >= given level\nFilter.prototype.allow = function(name, level) {\n  this._white.push({ n: name, l: levelMap[level] });\n  return this;\n};\n\n// deny all matching, with level <= given level\nFilter.prototype.deny = function(name, level) {\n  this._black.push({ n: name, l: levelMap[level] });\n  return this;\n};\n\nFilter.prototype.clear = function() {\n  this._white = [];\n  this._black = [];\n  return this;\n};\n\nfunction test(rule, name) {\n  // use .test for RegExps\n  return (rule.n.test ? rule.n.test(name) : rule.n == name);\n};\n\nFilter.prototype.test = function(name, level) {\n  var i, len = Math.max(this._white.length, this._black.length);\n  for(i = 0; i < len; i++) {\n    if(this._white[i] && test(this._white[i], name) && levelMap[level] >= this._white[i].l) {\n      return true;\n    }\n    if(this._black[i] && test(this._black[i], name) && levelMap[level] <= this._black[i].l) {\n      return false;\n    }\n  }\n  return this.defaultResult;\n};\n\nFilter.prototype.write = function(name, level, args) {\n  if(!this.enabled || this.test(name, level)) {\n    return this.emit('item', name, level, args);\n  }\n};\n\nmodule.exports = Filter;\n","var Transform = require('../common/transform.js');\n\nvar newlines = /\\n+$/,\n    logger = new Transform();\n\nlogger.write = function(name, level, args) {\n  var i = args.length-1;\n  if (typeof console === 'undefined' || !console.log) {\n    return;\n  }\n  if(console.log.apply) {\n    return console.log.apply(console, [name, level].concat(args));\n  } else if(JSON && JSON.stringify) {\n    // console.log.apply is undefined in IE8 and IE9\n    // for IE8/9: make console.log at least a bit less awful\n    if(args[i] && typeof args[i] == 'string') {\n      args[i] = args[i].replace(newlines, '');\n    }\n    try {\n      for(i = 0; i < args.length; i++) {\n        args[i] = JSON.stringify(args[i]);\n      }\n    } catch(e) {}\n    console.log(args.join(' '));\n  }\n};\n\nlogger.formatters = ['color', 'minilog'];\nlogger.color = require('./formatters/color.js');\nlogger.minilog = require('./formatters/minilog.js');\n\nmodule.exports = logger;\n","var Transform = require('../../common/transform.js'),\n    color = require('./util.js');\n\nvar colors = { debug: ['cyan'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },\n    logger = new Transform();\n\nlogger.write = function(name, level, args) {\n  var fn = console.log;\n  if(console[level] && console[level].apply) {\n    fn = console[level];\n    fn.apply(console, [ '%c'+name+' %c'+level, color('gray'), color.apply(color, colors[level])].concat(args));\n  }\n};\n\n// NOP, because piping the formatted logs can only cause trouble.\nlogger.pipe = function() { };\n\nmodule.exports = logger;\n","var Transform = require('../../common/transform.js'),\n    color = require('./util.js'),\n    colors = { debug: ['gray'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },\n    logger = new Transform();\n\nlogger.write = function(name, level, args) {\n  var fn = console.log;\n  if(level != 'debug' && console[level]) {\n    fn = console[level];\n  }\n\n  var subset = [], i = 0;\n  if(level != 'info') {\n    for(; i < args.length; i++) {\n      if(typeof args[i] != 'string') break;\n    }\n    fn.apply(console, [ '%c'+name +' '+ args.slice(0, i).join(' '), color.apply(color, colors[level]) ].concat(args.slice(i)));\n  } else {\n    fn.apply(console, [ '%c'+name, color.apply(color, colors[level]) ].concat(args));\n  }\n};\n\n// NOP, because piping the formatted logs can only cause trouble.\nlogger.pipe = function() { };\n\nmodule.exports = logger;\n","var Transform = require('../common/transform.js'),\n    cache = [ ];\n\nvar logger = new Transform();\n\nlogger.write = function(name, level, args) {\n  cache.push([ name, level, args ]);\n};\n\n// utility functions\nlogger.get = function() { return cache; };\nlogger.empty = function() { cache = []; };\n\nmodule.exports = logger;\n","var Transform = require('../common/transform.js'),\n    cache = false;\n\nvar logger = new Transform();\n\nlogger.write = function(name, level, args) {\n  if(typeof window == 'undefined' || typeof JSON == 'undefined' || !JSON.stringify || !JSON.parse) return;\n  try {\n    if(!cache) { cache = (window.localStorage.minilog ? JSON.parse(window.localStorage.minilog) : []); }\n    cache.push([ new Date().toString(), name, level, args ]);\n    window.localStorage.minilog = JSON.stringify(cache);\n  } catch(e) {}\n};\n\nmodule.exports = logger;","var Transform = require('../common/transform.js');\n\nvar cid = new Date().valueOf().toString(36);\n\nfunction AjaxLogger(options) {\n  this.url = options.url || '';\n  this.cache = [];\n  this.timer = null;\n  this.interval = options.interval || 30*1000;\n  this.enabled = true;\n  this.jQuery = window.jQuery;\n  this.extras = {};\n}\n\nTransform.mixin(AjaxLogger);\n\nAjaxLogger.prototype.write = function(name, level, args) {\n  if(!this.timer) { this.init(); }\n  this.cache.push([name, level].concat(args));\n};\n\nAjaxLogger.prototype.init = function() {\n  if(!this.enabled || !this.jQuery) return;\n  var self = this;\n  this.timer = setTimeout(function() {\n    var i, logs = [], ajaxData, url = self.url;\n    if(self.cache.length == 0) return self.init();\n    // Test each log line and only log the ones that are valid (e.g. don't have circular references).\n    // Slight performance hit but benefit is we log all valid lines.\n    for(i = 0; i < self.cache.length; i++) {\n      try {\n        JSON.stringify(self.cache[i]);\n        logs.push(self.cache[i]);\n      } catch(e) { }\n    }\n    if(self.jQuery.isEmptyObject(self.extras)) {\n        ajaxData = JSON.stringify({ logs: logs });\n        url = self.url + '?client_id=' + cid;\n    } else {\n        ajaxData = JSON.stringify(self.jQuery.extend({logs: logs}, self.extras));\n    }\n\n    self.jQuery.ajax(url, {\n      type: 'POST',\n      cache: false,\n      processData: false,\n      data: ajaxData,\n      contentType: 'application/json',\n      timeout: 10000\n    }).success(function(data, status, jqxhr) {\n      if(data.interval) {\n        self.interval = Math.max(1000, data.interval);\n      }\n    }).error(function() {\n      self.interval = 30000;\n    }).always(function() {\n      self.init();\n    });\n    self.cache = [];\n  }, this.interval);\n};\n\nAjaxLogger.prototype.end = function() {};\n\n// wait until jQuery is defined. Useful if you don't control the load order.\nAjaxLogger.jQueryWait = function(onDone) {\n  if(typeof window !== 'undefined' && (window.jQuery || window.$)) {\n    return onDone(window.jQuery || window.$);\n  } else if (typeof window !== 'undefined') {\n    setTimeout(function() { AjaxLogger.jQueryWait(onDone); }, 200);\n  }\n};\n\nmodule.exports = AjaxLogger;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/* jslint esnext: true */\n\n\"use strict\";\nvar src$core$$ = require(\"./core\"), src$en$$ = require(\"./en\");\n\nsrc$core$$[\"default\"].__addLocaleData(src$en$$[\"default\"]);\nsrc$core$$[\"default\"].defaultLocale = 'en';\n\nexports[\"default\"] = src$core$$[\"default\"];\n\n//# sourceMappingURL=main.js.map","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nvar src$utils$$ = require(\"./utils\"), src$es5$$ = require(\"./es5\"), src$compiler$$ = require(\"./compiler\"), intl$messageformat$parser$$ = require(\"intl-messageformat-parser\");\nexports[\"default\"] = MessageFormat;\n\n// -- MessageFormat --------------------------------------------------------\n\nfunction MessageFormat(message, locales, formats) {\n    // Parse string messages into an AST.\n    var ast = typeof message === 'string' ?\n            MessageFormat.__parse(message) : message;\n\n    if (!(ast && ast.type === 'messageFormatPattern')) {\n        throw new TypeError('A message must be provided as a String or AST.');\n    }\n\n    // Creates a new object with the specified `formats` merged with the default\n    // formats.\n    formats = this._mergeFormats(MessageFormat.formats, formats);\n\n    // Defined first because it's used to build the format pattern.\n    src$es5$$.defineProperty(this, '_locale',  {value: this._resolveLocale(locales)});\n\n    // Compile the `ast` to a pattern that is highly optimized for repeated\n    // `format()` invocations. **Note:** This passes the `locales` set provided\n    // to the constructor instead of just the resolved locale.\n    var pluralFn = this._findPluralRuleFunction(this._locale);\n    var pattern  = this._compilePattern(ast, locales, formats, pluralFn);\n\n    // \"Bind\" `format()` method to `this` so it can be passed by reference like\n    // the other `Intl` APIs.\n    var messageFormat = this;\n    this.format = function (values) {\n      try {\n        return messageFormat._format(pattern, values);\n      } catch (e) {\n        if (e.variableId) {\n          throw new Error(\n            'The intl string context variable \\'' + e.variableId + '\\'' +\n            ' was not provided to the string \\'' + message + '\\''\n          );\n        } else {\n          throw e;\n        }\n      }\n    };\n}\n\n// Default format options used as the prototype of the `formats` provided to the\n// constructor. These are used when constructing the internal Intl.NumberFormat\n// and Intl.DateTimeFormat instances.\nsrc$es5$$.defineProperty(MessageFormat, 'formats', {\n    enumerable: true,\n\n    value: {\n        number: {\n            'currency': {\n                style: 'currency'\n            },\n\n            'percent': {\n                style: 'percent'\n            }\n        },\n\n        date: {\n            'short': {\n                month: 'numeric',\n                day  : 'numeric',\n                year : '2-digit'\n            },\n\n            'medium': {\n                month: 'short',\n                day  : 'numeric',\n                year : 'numeric'\n            },\n\n            'long': {\n                month: 'long',\n                day  : 'numeric',\n                year : 'numeric'\n            },\n\n            'full': {\n                weekday: 'long',\n                month  : 'long',\n                day    : 'numeric',\n                year   : 'numeric'\n            }\n        },\n\n        time: {\n            'short': {\n                hour  : 'numeric',\n                minute: 'numeric'\n            },\n\n            'medium':  {\n                hour  : 'numeric',\n                minute: 'numeric',\n                second: 'numeric'\n            },\n\n            'long': {\n                hour        : 'numeric',\n                minute      : 'numeric',\n                second      : 'numeric',\n                timeZoneName: 'short'\n            },\n\n            'full': {\n                hour        : 'numeric',\n                minute      : 'numeric',\n                second      : 'numeric',\n                timeZoneName: 'short'\n            }\n        }\n    }\n});\n\n// Define internal private properties for dealing with locale data.\nsrc$es5$$.defineProperty(MessageFormat, '__localeData__', {value: src$es5$$.objCreate(null)});\nsrc$es5$$.defineProperty(MessageFormat, '__addLocaleData', {value: function (data) {\n    if (!(data && data.locale)) {\n        throw new Error(\n            'Locale data provided to IntlMessageFormat is missing a ' +\n            '`locale` property'\n        );\n    }\n\n    MessageFormat.__localeData__[data.locale.toLowerCase()] = data;\n}});\n\n// Defines `__parse()` static method as an exposed private.\nsrc$es5$$.defineProperty(MessageFormat, '__parse', {value: intl$messageformat$parser$$[\"default\"].parse});\n\n// Define public `defaultLocale` property which defaults to English, but can be\n// set by the developer.\nsrc$es5$$.defineProperty(MessageFormat, 'defaultLocale', {\n    enumerable: true,\n    writable  : true,\n    value     : undefined\n});\n\nMessageFormat.prototype.resolvedOptions = function () {\n    // TODO: Provide anything else?\n    return {\n        locale: this._locale\n    };\n};\n\nMessageFormat.prototype._compilePattern = function (ast, locales, formats, pluralFn) {\n    var compiler = new src$compiler$$[\"default\"](locales, formats, pluralFn);\n    return compiler.compile(ast);\n};\n\nMessageFormat.prototype._findPluralRuleFunction = function (locale) {\n    var localeData = MessageFormat.__localeData__;\n    var data       = localeData[locale.toLowerCase()];\n\n    // The locale data is de-duplicated, so we have to traverse the locale's\n    // hierarchy until we find a `pluralRuleFunction` to return.\n    while (data) {\n        if (data.pluralRuleFunction) {\n            return data.pluralRuleFunction;\n        }\n\n        data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n    }\n\n    throw new Error(\n        'Locale data added to IntlMessageFormat is missing a ' +\n        '`pluralRuleFunction` for :' + locale\n    );\n};\n\nMessageFormat.prototype._format = function (pattern, values) {\n    var result = '',\n        i, len, part, id, value, err;\n\n    for (i = 0, len = pattern.length; i < len; i += 1) {\n        part = pattern[i];\n\n        // Exist early for string parts.\n        if (typeof part === 'string') {\n            result += part;\n            continue;\n        }\n\n        id = part.id;\n\n        // Enforce that all required values are provided by the caller.\n        if (!(values && src$utils$$.hop.call(values, id))) {\n          err = new Error('A value must be provided for: ' + id);\n          err.variableId = id;\n          throw err;\n        }\n\n        value = values[id];\n\n        // Recursively format plural and select parts' option — which can be a\n        // nested pattern structure. The choosing of the option to use is\n        // abstracted-by and delegated-to the part helper object.\n        if (part.options) {\n            result += this._format(part.getOption(value), values);\n        } else {\n            result += part.format(value);\n        }\n    }\n\n    return result;\n};\n\nMessageFormat.prototype._mergeFormats = function (defaults, formats) {\n    var mergedFormats = {},\n        type, mergedType;\n\n    for (type in defaults) {\n        if (!src$utils$$.hop.call(defaults, type)) { continue; }\n\n        mergedFormats[type] = mergedType = src$es5$$.objCreate(defaults[type]);\n\n        if (formats && src$utils$$.hop.call(formats, type)) {\n            src$utils$$.extend(mergedType, formats[type]);\n        }\n    }\n\n    return mergedFormats;\n};\n\nMessageFormat.prototype._resolveLocale = function (locales) {\n    if (typeof locales === 'string') {\n        locales = [locales];\n    }\n\n    // Create a copy of the array so we can push on the default locale.\n    locales = (locales || []).concat(MessageFormat.defaultLocale);\n\n    var localeData = MessageFormat.__localeData__;\n    var i, len, localeParts, data;\n\n    // Using the set of locales + the default locale, we look for the first one\n    // which that has been registered. When data does not exist for a locale, we\n    // traverse its ancestors to find something that's been registered within\n    // its hierarchy of locales. Since we lack the proper `parentLocale` data\n    // here, we must take a naive approach to traversal.\n    for (i = 0, len = locales.length; i < len; i += 1) {\n        localeParts = locales[i].toLowerCase().split('-');\n\n        while (localeParts.length) {\n            data = localeData[localeParts.join('-')];\n            if (data) {\n                // Return the normalized locale string; e.g., we return \"en-US\",\n                // instead of \"en-us\".\n                return data.locale;\n            }\n\n            localeParts.pop();\n        }\n    }\n\n    var defaultLocale = locales.pop();\n    throw new Error(\n        'No locale data has been added to IntlMessageFormat for: ' +\n        locales.join(', ') + ', or the default locale: ' + defaultLocale\n    );\n};\n\n//# sourceMappingURL=core.js.map","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nvar src$utils$$ = require(\"./utils\");\n\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\n\nvar realDefineProp = (function () {\n    try { return !!Object.defineProperty({}, 'a', {}); }\n    catch (e) { return false; }\n})();\n\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\nvar defineProperty = realDefineProp ? Object.defineProperty :\n        function (obj, name, desc) {\n\n    if ('get' in desc && obj.__defineGetter__) {\n        obj.__defineGetter__(name, desc.get);\n    } else if (!src$utils$$.hop.call(obj, name) || 'value' in desc) {\n        obj[name] = desc.value;\n    }\n};\n\nvar objCreate = Object.create || function (proto, props) {\n    var obj, k;\n\n    function F() {}\n    F.prototype = proto;\n    obj = new F();\n\n    for (k in props) {\n        if (src$utils$$.hop.call(props, k)) {\n            defineProperty(obj, k, props[k]);\n        }\n    }\n\n    return obj;\n};\n\nexports.defineProperty = defineProperty, exports.objCreate = objCreate;\n\n//# sourceMappingURL=es5.js.map","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nexports[\"default\"] = Compiler;\n\nfunction Compiler(locales, formats, pluralFn) {\n    this.locales  = locales;\n    this.formats  = formats;\n    this.pluralFn = pluralFn;\n}\n\nCompiler.prototype.compile = function (ast) {\n    this.pluralStack        = [];\n    this.currentPlural      = null;\n    this.pluralNumberFormat = null;\n\n    return this.compileMessage(ast);\n};\n\nCompiler.prototype.compileMessage = function (ast) {\n    if (!(ast && ast.type === 'messageFormatPattern')) {\n        throw new Error('Message AST is not of type: \"messageFormatPattern\"');\n    }\n\n    var elements = ast.elements,\n        pattern  = [];\n\n    var i, len, element;\n\n    for (i = 0, len = elements.length; i < len; i += 1) {\n        element = elements[i];\n\n        switch (element.type) {\n            case 'messageTextElement':\n                pattern.push(this.compileMessageText(element));\n                break;\n\n            case 'argumentElement':\n                pattern.push(this.compileArgument(element));\n                break;\n\n            default:\n                throw new Error('Message element does not have a valid type');\n        }\n    }\n\n    return pattern;\n};\n\nCompiler.prototype.compileMessageText = function (element) {\n    // When this `element` is part of plural sub-pattern and its value contains\n    // an unescaped '#', use a `PluralOffsetString` helper to properly output\n    // the number with the correct offset in the string.\n    if (this.currentPlural && /(^|[^\\\\])#/g.test(element.value)) {\n        // Create a cache a NumberFormat instance that can be reused for any\n        // PluralOffsetString instance in this message.\n        if (!this.pluralNumberFormat) {\n            this.pluralNumberFormat = new Intl.NumberFormat(this.locales);\n        }\n\n        return new PluralOffsetString(\n                this.currentPlural.id,\n                this.currentPlural.format.offset,\n                this.pluralNumberFormat,\n                element.value);\n    }\n\n    // Unescape the escaped '#'s in the message text.\n    return element.value.replace(/\\\\#/g, '#');\n};\n\nCompiler.prototype.compileArgument = function (element) {\n    var format = element.format;\n\n    if (!format) {\n        return new StringFormat(element.id);\n    }\n\n    var formats  = this.formats,\n        locales  = this.locales,\n        pluralFn = this.pluralFn,\n        options;\n\n    switch (format.type) {\n        case 'numberFormat':\n            options = formats.number[format.style];\n            return {\n                id    : element.id,\n                format: new Intl.NumberFormat(locales, options).format\n            };\n\n        case 'dateFormat':\n            options = formats.date[format.style];\n            return {\n                id    : element.id,\n                format: new Intl.DateTimeFormat(locales, options).format\n            };\n\n        case 'timeFormat':\n            options = formats.time[format.style];\n            return {\n                id    : element.id,\n                format: new Intl.DateTimeFormat(locales, options).format\n            };\n\n        case 'pluralFormat':\n            options = this.compileOptions(element);\n            return new PluralFormat(\n                element.id, format.ordinal, format.offset, options, pluralFn\n            );\n\n        case 'selectFormat':\n            options = this.compileOptions(element);\n            return new SelectFormat(element.id, options);\n\n        default:\n            throw new Error('Message element does not have a valid format type');\n    }\n};\n\nCompiler.prototype.compileOptions = function (element) {\n    var format      = element.format,\n        options     = format.options,\n        optionsHash = {};\n\n    // Save the current plural element, if any, then set it to a new value when\n    // compiling the options sub-patterns. This conforms the spec's algorithm\n    // for handling `\"#\"` syntax in message text.\n    this.pluralStack.push(this.currentPlural);\n    this.currentPlural = format.type === 'pluralFormat' ? element : null;\n\n    var i, len, option;\n\n    for (i = 0, len = options.length; i < len; i += 1) {\n        option = options[i];\n\n        // Compile the sub-pattern and save it under the options's selector.\n        optionsHash[option.selector] = this.compileMessage(option.value);\n    }\n\n    // Pop the plural stack to put back the original current plural value.\n    this.currentPlural = this.pluralStack.pop();\n\n    return optionsHash;\n};\n\n// -- Compiler Helper Classes --------------------------------------------------\n\nfunction StringFormat(id) {\n    this.id = id;\n}\n\nStringFormat.prototype.format = function (value) {\n    if (!value && typeof value !== 'number') {\n        return '';\n    }\n\n    return typeof value === 'string' ? value : String(value);\n};\n\nfunction PluralFormat(id, useOrdinal, offset, options, pluralFn) {\n    this.id         = id;\n    this.useOrdinal = useOrdinal;\n    this.offset     = offset;\n    this.options    = options;\n    this.pluralFn   = pluralFn;\n}\n\nPluralFormat.prototype.getOption = function (value) {\n    var options = this.options;\n\n    var option = options['=' + value] ||\n            options[this.pluralFn(value - this.offset, this.useOrdinal)];\n\n    return option || options.other;\n};\n\nfunction PluralOffsetString(id, offset, numberFormat, string) {\n    this.id           = id;\n    this.offset       = offset;\n    this.numberFormat = numberFormat;\n    this.string       = string;\n}\n\nPluralOffsetString.prototype.format = function (value) {\n    var number = this.numberFormat.format(value - this.offset);\n\n    return this.string\n            .replace(/(^|[^\\\\])#/g, '$1' + number)\n            .replace(/\\\\#/g, '#');\n};\n\nfunction SelectFormat(id, options) {\n    this.id      = id;\n    this.options = options;\n}\n\nSelectFormat.prototype.getOption = function (value) {\n    var options = this.options;\n    return options[value] || options.other;\n};\n\n//# sourceMappingURL=compiler.js.map","'use strict';\n\nexports = module.exports = require('./lib/parser')['default'];\nexports['default'] = exports;\n","\"use strict\";\n\nexports[\"default\"] = (function() {\n  \"use strict\";\n\n  /*\n   * Generated by PEG.js 0.9.0.\n   *\n   * http://pegjs.org/\n   */\n\n  function peg$subclass(child, parent) {\n    function ctor() { this.constructor = child; }\n    ctor.prototype = parent.prototype;\n    child.prototype = new ctor();\n  }\n\n  function peg$SyntaxError(message, expected, found, location) {\n    this.message  = message;\n    this.expected = expected;\n    this.found    = found;\n    this.location = location;\n    this.name     = \"SyntaxError\";\n\n    if (typeof Error.captureStackTrace === \"function\") {\n      Error.captureStackTrace(this, peg$SyntaxError);\n    }\n  }\n\n  peg$subclass(peg$SyntaxError, Error);\n\n  function peg$parse(input) {\n    var options = arguments.length > 1 ? arguments[1] : {},\n        parser  = this,\n\n        peg$FAILED = {},\n\n        peg$startRuleFunctions = { start: peg$parsestart },\n        peg$startRuleFunction  = peg$parsestart,\n\n        peg$c0 = function(elements) {\n                return {\n                    type    : 'messageFormatPattern',\n                    elements: elements,\n                    location: location()\n                };\n            },\n        peg$c1 = function(text) {\n                var string = '',\n                    i, j, outerLen, inner, innerLen;\n\n                for (i = 0, outerLen = text.length; i < outerLen; i += 1) {\n                    inner = text[i];\n\n                    for (j = 0, innerLen = inner.length; j < innerLen; j += 1) {\n                        string += inner[j];\n                    }\n                }\n\n                return string;\n            },\n        peg$c2 = function(messageText) {\n                return {\n                    type : 'messageTextElement',\n                    value: messageText,\n                    location: location()\n                };\n            },\n        peg$c3 = /^[^ \\t\\n\\r,.+={}#]/,\n        peg$c4 = { type: \"class\", value: \"[^ \\\\t\\\\n\\\\r,.+={}#]\", description: \"[^ \\\\t\\\\n\\\\r,.+={}#]\" },\n        peg$c5 = \"{\",\n        peg$c6 = { type: \"literal\", value: \"{\", description: \"\\\"{\\\"\" },\n        peg$c7 = \",\",\n        peg$c8 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n        peg$c9 = \"}\",\n        peg$c10 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n        peg$c11 = function(id, format) {\n                return {\n                    type  : 'argumentElement',\n                    id    : id,\n                    format: format && format[2],\n                    location: location()\n                };\n            },\n        peg$c12 = \"number\",\n        peg$c13 = { type: \"literal\", value: \"number\", description: \"\\\"number\\\"\" },\n        peg$c14 = \"date\",\n        peg$c15 = { type: \"literal\", value: \"date\", description: \"\\\"date\\\"\" },\n        peg$c16 = \"time\",\n        peg$c17 = { type: \"literal\", value: \"time\", description: \"\\\"time\\\"\" },\n        peg$c18 = function(type, style) {\n                return {\n                    type : type + 'Format',\n                    style: style && style[2],\n                    location: location()\n                };\n            },\n        peg$c19 = \"plural\",\n        peg$c20 = { type: \"literal\", value: \"plural\", description: \"\\\"plural\\\"\" },\n        peg$c21 = function(pluralStyle) {\n                return {\n                    type   : pluralStyle.type,\n                    ordinal: false,\n                    offset : pluralStyle.offset || 0,\n                    options: pluralStyle.options,\n                    location: location()\n                };\n            },\n        peg$c22 = \"selectordinal\",\n        peg$c23 = { type: \"literal\", value: \"selectordinal\", description: \"\\\"selectordinal\\\"\" },\n        peg$c24 = function(pluralStyle) {\n                return {\n                    type   : pluralStyle.type,\n                    ordinal: true,\n                    offset : pluralStyle.offset || 0,\n                    options: pluralStyle.options,\n                    location: location()\n                }\n            },\n        peg$c25 = \"select\",\n        peg$c26 = { type: \"literal\", value: \"select\", description: \"\\\"select\\\"\" },\n        peg$c27 = function(options) {\n                return {\n                    type   : 'selectFormat',\n                    options: options,\n                    location: location()\n                };\n            },\n        peg$c28 = \"=\",\n        peg$c29 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n        peg$c30 = function(selector, pattern) {\n                return {\n                    type    : 'optionalFormatPattern',\n                    selector: selector,\n                    value   : pattern,\n                    location: location()\n                };\n            },\n        peg$c31 = \"offset:\",\n        peg$c32 = { type: \"literal\", value: \"offset:\", description: \"\\\"offset:\\\"\" },\n        peg$c33 = function(number) {\n                return number;\n            },\n        peg$c34 = function(offset, options) {\n                return {\n                    type   : 'pluralFormat',\n                    offset : offset,\n                    options: options,\n                    location: location()\n                };\n            },\n        peg$c35 = { type: \"other\", description: \"whitespace\" },\n        peg$c36 = /^[ \\t\\n\\r]/,\n        peg$c37 = { type: \"class\", value: \"[ \\\\t\\\\n\\\\r]\", description: \"[ \\\\t\\\\n\\\\r]\" },\n        peg$c38 = { type: \"other\", description: \"optionalWhitespace\" },\n        peg$c39 = /^[0-9]/,\n        peg$c40 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n        peg$c41 = /^[0-9a-f]/i,\n        peg$c42 = { type: \"class\", value: \"[0-9a-f]i\", description: \"[0-9a-f]i\" },\n        peg$c43 = \"0\",\n        peg$c44 = { type: \"literal\", value: \"0\", description: \"\\\"0\\\"\" },\n        peg$c45 = /^[1-9]/,\n        peg$c46 = { type: \"class\", value: \"[1-9]\", description: \"[1-9]\" },\n        peg$c47 = function(digits) {\n            return parseInt(digits, 10);\n        },\n        peg$c48 = /^[^{}\\\\\\0-\\x1F \\t\\n\\r]/,\n        peg$c49 = { type: \"class\", value: \"[^{}\\\\\\\\\\\\0-\\\\x1F\\\\x7f \\\\t\\\\n\\\\r]\", description: \"[^{}\\\\\\\\\\\\0-\\\\x1F\\\\x7f \\\\t\\\\n\\\\r]\" },\n        peg$c50 = \"\\\\\\\\\",\n        peg$c51 = { type: \"literal\", value: \"\\\\\\\\\", description: \"\\\"\\\\\\\\\\\\\\\\\\\"\" },\n        peg$c52 = function() { return '\\\\'; },\n        peg$c53 = \"\\\\#\",\n        peg$c54 = { type: \"literal\", value: \"\\\\#\", description: \"\\\"\\\\\\\\#\\\"\" },\n        peg$c55 = function() { return '\\\\#'; },\n        peg$c56 = \"\\\\{\",\n        peg$c57 = { type: \"literal\", value: \"\\\\{\", description: \"\\\"\\\\\\\\{\\\"\" },\n        peg$c58 = function() { return '\\u007B'; },\n        peg$c59 = \"\\\\}\",\n        peg$c60 = { type: \"literal\", value: \"\\\\}\", description: \"\\\"\\\\\\\\}\\\"\" },\n        peg$c61 = function() { return '\\u007D'; },\n        peg$c62 = \"\\\\u\",\n        peg$c63 = { type: \"literal\", value: \"\\\\u\", description: \"\\\"\\\\\\\\u\\\"\" },\n        peg$c64 = function(digits) {\n                return String.fromCharCode(parseInt(digits, 16));\n            },\n        peg$c65 = function(chars) { return chars.join(''); },\n\n        peg$currPos          = 0,\n        peg$savedPos         = 0,\n        peg$posDetailsCache  = [{ line: 1, column: 1, seenCR: false }],\n        peg$maxFailPos       = 0,\n        peg$maxFailExpected  = [],\n        peg$silentFails      = 0,\n\n        peg$result;\n\n    if (\"startRule\" in options) {\n      if (!(options.startRule in peg$startRuleFunctions)) {\n        throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n      }\n\n      peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n    }\n\n    function text() {\n      return input.substring(peg$savedPos, peg$currPos);\n    }\n\n    function location() {\n      return peg$computeLocation(peg$savedPos, peg$currPos);\n    }\n\n    function expected(description) {\n      throw peg$buildException(\n        null,\n        [{ type: \"other\", description: description }],\n        input.substring(peg$savedPos, peg$currPos),\n        peg$computeLocation(peg$savedPos, peg$currPos)\n      );\n    }\n\n    function error(message) {\n      throw peg$buildException(\n        message,\n        null,\n        input.substring(peg$savedPos, peg$currPos),\n        peg$computeLocation(peg$savedPos, peg$currPos)\n      );\n    }\n\n    function peg$computePosDetails(pos) {\n      var details = peg$posDetailsCache[pos],\n          p, ch;\n\n      if (details) {\n        return details;\n      } else {\n        p = pos - 1;\n        while (!peg$posDetailsCache[p]) {\n          p--;\n        }\n\n        details = peg$posDetailsCache[p];\n        details = {\n          line:   details.line,\n          column: details.column,\n          seenCR: details.seenCR\n        };\n\n        while (p < pos) {\n          ch = input.charAt(p);\n          if (ch === \"\\n\") {\n            if (!details.seenCR) { details.line++; }\n            details.column = 1;\n            details.seenCR = false;\n          } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n            details.line++;\n            details.column = 1;\n            details.seenCR = true;\n          } else {\n            details.column++;\n            details.seenCR = false;\n          }\n\n          p++;\n        }\n\n        peg$posDetailsCache[pos] = details;\n        return details;\n      }\n    }\n\n    function peg$computeLocation(startPos, endPos) {\n      var startPosDetails = peg$computePosDetails(startPos),\n          endPosDetails   = peg$computePosDetails(endPos);\n\n      return {\n        start: {\n          offset: startPos,\n          line:   startPosDetails.line,\n          column: startPosDetails.column\n        },\n        end: {\n          offset: endPos,\n          line:   endPosDetails.line,\n          column: endPosDetails.column\n        }\n      };\n    }\n\n    function peg$fail(expected) {\n      if (peg$currPos < peg$maxFailPos) { return; }\n\n      if (peg$currPos > peg$maxFailPos) {\n        peg$maxFailPos = peg$currPos;\n        peg$maxFailExpected = [];\n      }\n\n      peg$maxFailExpected.push(expected);\n    }\n\n    function peg$buildException(message, expected, found, location) {\n      function cleanupExpected(expected) {\n        var i = 1;\n\n        expected.sort(function(a, b) {\n          if (a.description < b.description) {\n            return -1;\n          } else if (a.description > b.description) {\n            return 1;\n          } else {\n            return 0;\n          }\n        });\n\n        while (i < expected.length) {\n          if (expected[i - 1] === expected[i]) {\n            expected.splice(i, 1);\n          } else {\n            i++;\n          }\n        }\n      }\n\n      function buildMessage(expected, found) {\n        function stringEscape(s) {\n          function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n          return s\n            .replace(/\\\\/g,   '\\\\\\\\')\n            .replace(/\"/g,    '\\\\\"')\n            .replace(/\\x08/g, '\\\\b')\n            .replace(/\\t/g,   '\\\\t')\n            .replace(/\\n/g,   '\\\\n')\n            .replace(/\\f/g,   '\\\\f')\n            .replace(/\\r/g,   '\\\\r')\n            .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n            .replace(/[\\x10-\\x1F\\x80-\\xFF]/g,    function(ch) { return '\\\\x'  + hex(ch); })\n            .replace(/[\\u0100-\\u0FFF]/g,         function(ch) { return '\\\\u0' + hex(ch); })\n            .replace(/[\\u1000-\\uFFFF]/g,         function(ch) { return '\\\\u'  + hex(ch); });\n        }\n\n        var expectedDescs = new Array(expected.length),\n            expectedDesc, foundDesc, i;\n\n        for (i = 0; i < expected.length; i++) {\n          expectedDescs[i] = expected[i].description;\n        }\n\n        expectedDesc = expected.length > 1\n          ? expectedDescs.slice(0, -1).join(\", \")\n              + \" or \"\n              + expectedDescs[expected.length - 1]\n          : expectedDescs[0];\n\n        foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n        return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n      }\n\n      if (expected !== null) {\n        cleanupExpected(expected);\n      }\n\n      return new peg$SyntaxError(\n        message !== null ? message : buildMessage(expected, found),\n        expected,\n        found,\n        location\n      );\n    }\n\n    function peg$parsestart() {\n      var s0;\n\n      s0 = peg$parsemessageFormatPattern();\n\n      return s0;\n    }\n\n    function peg$parsemessageFormatPattern() {\n      var s0, s1, s2;\n\n      s0 = peg$currPos;\n      s1 = [];\n      s2 = peg$parsemessageFormatElement();\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        s2 = peg$parsemessageFormatElement();\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c0(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parsemessageFormatElement() {\n      var s0;\n\n      s0 = peg$parsemessageTextElement();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseargumentElement();\n      }\n\n      return s0;\n    }\n\n    function peg$parsemessageText() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      s1 = [];\n      s2 = peg$currPos;\n      s3 = peg$parse_();\n      if (s3 !== peg$FAILED) {\n        s4 = peg$parsechars();\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parse_();\n          if (s5 !== peg$FAILED) {\n            s3 = [s3, s4, s5];\n            s2 = s3;\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 !== peg$FAILED) {\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$currPos;\n          s3 = peg$parse_();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parsechars();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parse_();\n              if (s5 !== peg$FAILED) {\n                s3 = [s3, s4, s5];\n                s2 = s3;\n              } else {\n                peg$currPos = s2;\n                s2 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s2;\n              s2 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        }\n      } else {\n        s1 = peg$FAILED;\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c1(s1);\n      }\n      s0 = s1;\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parsews();\n        if (s1 !== peg$FAILED) {\n          s0 = input.substring(s0, peg$currPos);\n        } else {\n          s0 = s1;\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parsemessageTextElement() {\n      var s0, s1;\n\n      s0 = peg$currPos;\n      s1 = peg$parsemessageText();\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c2(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parseargument() {\n      var s0, s1, s2;\n\n      s0 = peg$parsenumber();\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = [];\n        if (peg$c3.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c4); }\n        }\n        if (s2 !== peg$FAILED) {\n          while (s2 !== peg$FAILED) {\n            s1.push(s2);\n            if (peg$c3.test(input.charAt(peg$currPos))) {\n              s2 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s2 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c4); }\n            }\n          }\n        } else {\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          s0 = input.substring(s0, peg$currPos);\n        } else {\n          s0 = s1;\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseargumentElement() {\n      var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 123) {\n        s1 = peg$c5;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c6); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseargument();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$currPos;\n              if (input.charCodeAt(peg$currPos) === 44) {\n                s6 = peg$c7;\n                peg$currPos++;\n              } else {\n                s6 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c8); }\n              }\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parse_();\n                if (s7 !== peg$FAILED) {\n                  s8 = peg$parseelementFormat();\n                  if (s8 !== peg$FAILED) {\n                    s6 = [s6, s7, s8];\n                    s5 = s6;\n                  } else {\n                    peg$currPos = s5;\n                    s5 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s5;\n                  s5 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s5;\n                s5 = peg$FAILED;\n              }\n              if (s5 === peg$FAILED) {\n                s5 = null;\n              }\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parse_();\n                if (s6 !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 125) {\n                    s7 = peg$c9;\n                    peg$currPos++;\n                  } else {\n                    s7 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c10); }\n                  }\n                  if (s7 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c11(s3, s5);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parseelementFormat() {\n      var s0;\n\n      s0 = peg$parsesimpleFormat();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parsepluralFormat();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseselectOrdinalFormat();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parseselectFormat();\n          }\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parsesimpleFormat() {\n      var s0, s1, s2, s3, s4, s5, s6;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 6) === peg$c12) {\n        s1 = peg$c12;\n        peg$currPos += 6;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c13); }\n      }\n      if (s1 === peg$FAILED) {\n        if (input.substr(peg$currPos, 4) === peg$c14) {\n          s1 = peg$c14;\n          peg$currPos += 4;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c15); }\n        }\n        if (s1 === peg$FAILED) {\n          if (input.substr(peg$currPos, 4) === peg$c16) {\n            s1 = peg$c16;\n            peg$currPos += 4;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c17); }\n          }\n        }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s4 = peg$c7;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c8); }\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parse_();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parsechars();\n              if (s6 !== peg$FAILED) {\n                s4 = [s4, s5, s6];\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n          if (s3 === peg$FAILED) {\n            s3 = null;\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c18(s1, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parsepluralFormat() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 6) === peg$c19) {\n        s1 = peg$c19;\n        peg$currPos += 6;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c20); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s3 = peg$c7;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c8); }\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parsepluralStyle();\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c21(s5);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parseselectOrdinalFormat() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 13) === peg$c22) {\n        s1 = peg$c22;\n        peg$currPos += 13;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c23); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s3 = peg$c7;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c8); }\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parsepluralStyle();\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c24(s5);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parseselectFormat() {\n      var s0, s1, s2, s3, s4, s5, s6;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 6) === peg$c25) {\n        s1 = peg$c25;\n        peg$currPos += 6;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c26); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s3 = peg$c7;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c8); }\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              s5 = [];\n              s6 = peg$parseoptionalFormatPattern();\n              if (s6 !== peg$FAILED) {\n                while (s6 !== peg$FAILED) {\n                  s5.push(s6);\n                  s6 = peg$parseoptionalFormatPattern();\n                }\n              } else {\n                s5 = peg$FAILED;\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c27(s5);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parseselector() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      s1 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 61) {\n        s2 = peg$c28;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c29); }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsenumber();\n        if (s3 !== peg$FAILED) {\n          s2 = [s2, s3];\n          s1 = s2;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n      if (s1 !== peg$FAILED) {\n        s0 = input.substring(s0, peg$currPos);\n      } else {\n        s0 = s1;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$parsechars();\n      }\n\n      return s0;\n    }\n\n    function peg$parseoptionalFormatPattern() {\n      var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n      s0 = peg$currPos;\n      s1 = peg$parse_();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseselector();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parse_();\n          if (s3 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 123) {\n              s4 = peg$c5;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c6); }\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parse_();\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parsemessageFormatPattern();\n                if (s6 !== peg$FAILED) {\n                  s7 = peg$parse_();\n                  if (s7 !== peg$FAILED) {\n                    if (input.charCodeAt(peg$currPos) === 125) {\n                      s8 = peg$c9;\n                      peg$currPos++;\n                    } else {\n                      s8 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c10); }\n                    }\n                    if (s8 !== peg$FAILED) {\n                      peg$savedPos = s0;\n                      s1 = peg$c30(s2, s6);\n                      s0 = s1;\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parseoffset() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 7) === peg$c31) {\n        s1 = peg$c31;\n        peg$currPos += 7;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c32); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parsenumber();\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c33(s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parsepluralStyle() {\n      var s0, s1, s2, s3, s4;\n\n      s0 = peg$currPos;\n      s1 = peg$parseoffset();\n      if (s1 === peg$FAILED) {\n        s1 = null;\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          s4 = peg$parseoptionalFormatPattern();\n          if (s4 !== peg$FAILED) {\n            while (s4 !== peg$FAILED) {\n              s3.push(s4);\n              s4 = peg$parseoptionalFormatPattern();\n            }\n          } else {\n            s3 = peg$FAILED;\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c34(s1, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parsews() {\n      var s0, s1;\n\n      peg$silentFails++;\n      s0 = [];\n      if (peg$c36.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c37); }\n      }\n      if (s1 !== peg$FAILED) {\n        while (s1 !== peg$FAILED) {\n          s0.push(s1);\n          if (peg$c36.test(input.charAt(peg$currPos))) {\n            s1 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c37); }\n          }\n        }\n      } else {\n        s0 = peg$FAILED;\n      }\n      peg$silentFails--;\n      if (s0 === peg$FAILED) {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c35); }\n      }\n\n      return s0;\n    }\n\n    function peg$parse_() {\n      var s0, s1, s2;\n\n      peg$silentFails++;\n      s0 = peg$currPos;\n      s1 = [];\n      s2 = peg$parsews();\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        s2 = peg$parsews();\n      }\n      if (s1 !== peg$FAILED) {\n        s0 = input.substring(s0, peg$currPos);\n      } else {\n        s0 = s1;\n      }\n      peg$silentFails--;\n      if (s0 === peg$FAILED) {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c38); }\n      }\n\n      return s0;\n    }\n\n    function peg$parsedigit() {\n      var s0;\n\n      if (peg$c39.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c40); }\n      }\n\n      return s0;\n    }\n\n    function peg$parsehexDigit() {\n      var s0;\n\n      if (peg$c41.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c42); }\n      }\n\n      return s0;\n    }\n\n    function peg$parsenumber() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 48) {\n        s1 = peg$c43;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c44); }\n      }\n      if (s1 === peg$FAILED) {\n        s1 = peg$currPos;\n        s2 = peg$currPos;\n        if (peg$c45.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c46); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = [];\n          s5 = peg$parsedigit();\n          while (s5 !== peg$FAILED) {\n            s4.push(s5);\n            s5 = peg$parsedigit();\n          }\n          if (s4 !== peg$FAILED) {\n            s3 = [s3, s4];\n            s2 = s3;\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          s1 = input.substring(s1, peg$currPos);\n        } else {\n          s1 = s2;\n        }\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c47(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parsechar() {\n      var s0, s1, s2, s3, s4, s5, s6, s7;\n\n      if (peg$c48.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c49); }\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        if (input.substr(peg$currPos, 2) === peg$c50) {\n          s1 = peg$c50;\n          peg$currPos += 2;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c51); }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c52();\n        }\n        s0 = s1;\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          if (input.substr(peg$currPos, 2) === peg$c53) {\n            s1 = peg$c53;\n            peg$currPos += 2;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c54); }\n          }\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c55();\n          }\n          s0 = s1;\n          if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            if (input.substr(peg$currPos, 2) === peg$c56) {\n              s1 = peg$c56;\n              peg$currPos += 2;\n            } else {\n              s1 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c57); }\n            }\n            if (s1 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c58();\n            }\n            s0 = s1;\n            if (s0 === peg$FAILED) {\n              s0 = peg$currPos;\n              if (input.substr(peg$currPos, 2) === peg$c59) {\n                s1 = peg$c59;\n                peg$currPos += 2;\n              } else {\n                s1 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c60); }\n              }\n              if (s1 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c61();\n              }\n              s0 = s1;\n              if (s0 === peg$FAILED) {\n                s0 = peg$currPos;\n                if (input.substr(peg$currPos, 2) === peg$c62) {\n                  s1 = peg$c62;\n                  peg$currPos += 2;\n                } else {\n                  s1 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c63); }\n                }\n                if (s1 !== peg$FAILED) {\n                  s2 = peg$currPos;\n                  s3 = peg$currPos;\n                  s4 = peg$parsehexDigit();\n                  if (s4 !== peg$FAILED) {\n                    s5 = peg$parsehexDigit();\n                    if (s5 !== peg$FAILED) {\n                      s6 = peg$parsehexDigit();\n                      if (s6 !== peg$FAILED) {\n                        s7 = peg$parsehexDigit();\n                        if (s7 !== peg$FAILED) {\n                          s4 = [s4, s5, s6, s7];\n                          s3 = s4;\n                        } else {\n                          peg$currPos = s3;\n                          s3 = peg$FAILED;\n                        }\n                      } else {\n                        peg$currPos = s3;\n                        s3 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s3;\n                      s3 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s3;\n                    s3 = peg$FAILED;\n                  }\n                  if (s3 !== peg$FAILED) {\n                    s2 = input.substring(s2, peg$currPos);\n                  } else {\n                    s2 = s3;\n                  }\n                  if (s2 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c64(s2);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              }\n            }\n          }\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parsechars() {\n      var s0, s1, s2;\n\n      s0 = peg$currPos;\n      s1 = [];\n      s2 = peg$parsechar();\n      if (s2 !== peg$FAILED) {\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parsechar();\n        }\n      } else {\n        s1 = peg$FAILED;\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c65(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    peg$result = peg$startRuleFunction();\n\n    if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n      return peg$result;\n    } else {\n      if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n        peg$fail({ type: \"end\", description: \"end of input\" });\n      }\n\n      throw peg$buildException(\n        null,\n        peg$maxFailExpected,\n        peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n        peg$maxFailPos < input.length\n          ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n          : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n      );\n    }\n  }\n\n  return {\n    SyntaxError: peg$SyntaxError,\n    parse:       peg$parse\n  };\n})();\n\n//# sourceMappingURL=parser.js.map","// GENERATED FILE\n\"use strict\";\nexports[\"default\"] = {\"locale\":\"en\",\"pluralRuleFunction\":function (n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?\"one\":n10==2&&n100!=12?\"two\":n10==3&&n100!=13?\"few\":\"other\";return n==1&&v0?\"one\":\"other\"}};\n\n//# sourceMappingURL=en.js.map","/* (ignored) */","\"use strict\";\n/* jslint esnext: true */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"./core\");\nvar en_1 = require(\"./en\");\ncore_1.default.__addLocaleData(en_1.default);\ncore_1.default.defaultLocale = 'en';\nexports.default = core_1.default;\n//# sourceMappingURL=main.js.map","\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* jslint esnext: true */\nvar intl_messageformat_1 = require(\"intl-messageformat\");\nvar diff_1 = require(\"./diff\");\nvar es5_1 = require(\"./es5\");\nexports.default = RelativeFormat;\n// -----------------------------------------------------------------------------\nvar FIELDS = [\n    'second', 'second-short',\n    'minute', 'minute-short',\n    'hour', 'hour-short',\n    'day', 'day-short',\n    'month', 'month-short',\n    'year', 'year-short'\n];\nvar STYLES = ['best fit', 'numeric'];\n// -- RelativeFormat -----------------------------------------------------------\nfunction RelativeFormat(locales, options) {\n    options = options || {};\n    // Make a copy of `locales` if it's an array, so that it doesn't change\n    // since it's used lazily.\n    if (es5_1.isArray(locales)) {\n        locales = locales.concat();\n    }\n    es5_1.defineProperty(this, '_locale', { value: this._resolveLocale(locales) });\n    es5_1.defineProperty(this, '_options', { value: {\n            style: this._resolveStyle(options.style),\n            units: this._isValidUnits(options.units) && options.units\n        } });\n    es5_1.defineProperty(this, '_locales', { value: locales });\n    es5_1.defineProperty(this, '_fields', { value: this._findFields(this._locale) });\n    es5_1.defineProperty(this, '_messages', { value: es5_1.objCreate(null) });\n    // \"Bind\" `format()` method to `this` so it can be passed by reference like\n    // the other `Intl` APIs.\n    var relativeFormat = this;\n    this.format = function format(date, options) {\n        return relativeFormat._format(date, options);\n    };\n}\n// Define internal private properties for dealing with locale data.\nes5_1.defineProperty(RelativeFormat, '__localeData__', { value: es5_1.objCreate(null) });\nes5_1.defineProperty(RelativeFormat, '__addLocaleData', { value: function () {\n        for (var i = 0; i < arguments.length; i++) {\n            var datum = arguments[i];\n            if (!(datum && datum.locale)) {\n                throw new Error('Locale data provided to IntlRelativeFormat is missing a ' +\n                    '`locale` property value');\n            }\n            RelativeFormat.__localeData__[datum.locale.toLowerCase()] = datum;\n            // Add data to IntlMessageFormat.\n            intl_messageformat_1.default.__addLocaleData(datum);\n        }\n    } });\n// Define public `defaultLocale` property which can be set by the developer, or\n// it will be set when the first RelativeFormat instance is created by\n// leveraging the resolved locale from `Intl`.\nes5_1.defineProperty(RelativeFormat, 'defaultLocale', {\n    enumerable: true,\n    writable: true,\n    value: undefined\n});\n// Define public `thresholds` property which can be set by the developer, and\n// defaults to relative time thresholds from moment.js.\nes5_1.defineProperty(RelativeFormat, 'thresholds', {\n    enumerable: true,\n    value: {\n        second: 45, 'second-short': 45,\n        minute: 45, 'minute-short': 45,\n        hour: 22, 'hour-short': 22,\n        day: 26, 'day-short': 26,\n        month: 11, 'month-short': 11 // months to year\n    }\n});\nRelativeFormat.prototype.resolvedOptions = function () {\n    return {\n        locale: this._locale,\n        style: this._options.style,\n        units: this._options.units\n    };\n};\nRelativeFormat.prototype._compileMessage = function (units) {\n    // `this._locales` is the original set of locales the user specified to the\n    // constructor, while `this._locale` is the resolved root locale.\n    var locales = this._locales;\n    var resolvedLocale = this._locale;\n    var field = this._fields[units];\n    var relativeTime = field.relativeTime;\n    var future = '';\n    var past = '';\n    var i;\n    for (i in relativeTime.future) {\n        if (relativeTime.future.hasOwnProperty(i)) {\n            future += ' ' + i + ' {' +\n                relativeTime.future[i].replace('{0}', '#') + '}';\n        }\n    }\n    for (i in relativeTime.past) {\n        if (relativeTime.past.hasOwnProperty(i)) {\n            past += ' ' + i + ' {' +\n                relativeTime.past[i].replace('{0}', '#') + '}';\n        }\n    }\n    var message = '{when, select, future {{0, plural, ' + future + '}}' +\n        'past {{0, plural, ' + past + '}}}';\n    // Create the synthetic IntlMessageFormat instance using the original\n    // locales value specified by the user when constructing the the parent\n    // IntlRelativeFormat instance.\n    return new intl_messageformat_1.default(message, locales);\n};\nRelativeFormat.prototype._getMessage = function (units) {\n    var messages = this._messages;\n    // Create a new synthetic message based on the locale data from CLDR.\n    if (!messages[units]) {\n        messages[units] = this._compileMessage(units);\n    }\n    return messages[units];\n};\nRelativeFormat.prototype._getRelativeUnits = function (diff, units) {\n    var field = this._fields[units];\n    if (field.relative) {\n        return field.relative[diff];\n    }\n};\nRelativeFormat.prototype._findFields = function (locale) {\n    var localeData = RelativeFormat.__localeData__;\n    var data = localeData[locale.toLowerCase()];\n    // The locale data is de-duplicated, so we have to traverse the locale's\n    // hierarchy until we find `fields` to return.\n    while (data) {\n        if (data.fields) {\n            return data.fields;\n        }\n        data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n    }\n    throw new Error('Locale data added to IntlRelativeFormat is missing `fields` for :' +\n        locale);\n};\nRelativeFormat.prototype._format = function (date, options) {\n    var now = options && options.now !== undefined ? options.now : es5_1.dateNow();\n    if (date === undefined) {\n        date = now;\n    }\n    // Determine if the `date` and optional `now` values are valid, and throw a\n    // similar error to what `Intl.DateTimeFormat#format()` would throw.\n    if (!isFinite(now)) {\n        throw new RangeError('The `now` option provided to IntlRelativeFormat#format() is not ' +\n            'in valid range.');\n    }\n    if (!isFinite(date)) {\n        throw new RangeError('The date value provided to IntlRelativeFormat#format() is not ' +\n            'in valid range.');\n    }\n    var diffReport = diff_1.default(now, date);\n    var units = this._options.units || this._selectUnits(diffReport);\n    var diffInUnits = diffReport[units];\n    if (this._options.style !== 'numeric') {\n        var relativeUnits = this._getRelativeUnits(diffInUnits, units);\n        if (relativeUnits) {\n            return relativeUnits;\n        }\n    }\n    return this._getMessage(units).format({\n        '0': Math.abs(diffInUnits),\n        when: diffInUnits < 0 ? 'past' : 'future'\n    });\n};\nRelativeFormat.prototype._isValidUnits = function (units) {\n    if (!units || es5_1.arrIndexOf.call(FIELDS, units) >= 0) {\n        return true;\n    }\n    if (typeof units === 'string') {\n        var suggestion = /s$/.test(units) && units.substr(0, units.length - 1);\n        if (suggestion && es5_1.arrIndexOf.call(FIELDS, suggestion) >= 0) {\n            throw new Error('\"' + units + '\" is not a valid IntlRelativeFormat `units` ' +\n                'value, did you mean: ' + suggestion);\n        }\n    }\n    throw new Error('\"' + units + '\" is not a valid IntlRelativeFormat `units` value, it ' +\n        'must be one of: \"' + FIELDS.join('\", \"') + '\"');\n};\nRelativeFormat.prototype._resolveLocale = function (locales) {\n    if (typeof locales === 'string') {\n        locales = [locales];\n    }\n    // Create a copy of the array so we can push on the default locale.\n    locales = (locales || []).concat(RelativeFormat.defaultLocale);\n    var localeData = RelativeFormat.__localeData__;\n    var i, len, localeParts, data;\n    // Using the set of locales + the default locale, we look for the first one\n    // which that has been registered. When data does not exist for a locale, we\n    // traverse its ancestors to find something that's been registered within\n    // its hierarchy of locales. Since we lack the proper `parentLocale` data\n    // here, we must take a naive approach to traversal.\n    for (i = 0, len = locales.length; i < len; i += 1) {\n        localeParts = locales[i].toLowerCase().split('-');\n        while (localeParts.length) {\n            data = localeData[localeParts.join('-')];\n            if (data) {\n                // Return the normalized locale string; e.g., we return \"en-US\",\n                // instead of \"en-us\".\n                return data.locale;\n            }\n            localeParts.pop();\n        }\n    }\n    var defaultLocale = locales.pop();\n    throw new Error('No locale data has been added to IntlRelativeFormat for: ' +\n        locales.join(', ') + ', or the default locale: ' + defaultLocale);\n};\nRelativeFormat.prototype._resolveStyle = function (style) {\n    // Default to \"best fit\" style.\n    if (!style) {\n        return STYLES[0];\n    }\n    if (es5_1.arrIndexOf.call(STYLES, style) >= 0) {\n        return style;\n    }\n    throw new Error('\"' + style + '\" is not a valid IntlRelativeFormat `style` value, it ' +\n        'must be one of: \"' + STYLES.join('\", \"') + '\"');\n};\nRelativeFormat.prototype._selectUnits = function (diffReport) {\n    var i, l, units;\n    var fields = FIELDS.filter(function (field) {\n        return field.indexOf('-short') < 1;\n    });\n    for (i = 0, l = fields.length; i < l; i += 1) {\n        units = fields[i];\n        if (Math.abs(diffReport[units]) < RelativeFormat.thresholds[units]) {\n            break;\n        }\n    }\n    return units;\n};\n//# sourceMappingURL=core.js.map","\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* jslint esnext: true */\nvar round = Math.round;\nfunction daysToYears(days) {\n    // 400 years have 146097 days (taking into account leap year rules)\n    return days * 400 / 146097;\n}\n// Thanks to date-fns\n// https://github.com/date-fns/date-fns\n// MIT © Sasha Koss\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_DAY = 86400000;\nfunction startOfDay(dirtyDate) {\n    var date = new Date(dirtyDate);\n    date.setHours(0, 0, 0, 0);\n    return date;\n}\nfunction differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n    var startOfDayLeft = startOfDay(dirtyDateLeft);\n    var startOfDayRight = startOfDay(dirtyDateRight);\n    var timestampLeft = startOfDayLeft.getTime() -\n        startOfDayLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n    var timestampRight = startOfDayRight.getTime() -\n        startOfDayRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n    // Round the number of days to the nearest integer\n    // because the number of milliseconds in a day is not constant\n    // (e.g. it's different in the day of the daylight saving time clock shift)\n    return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}\nfunction default_1(from, to) {\n    // Convert to ms timestamps.\n    from = +from;\n    to = +to;\n    var millisecond = round(to - from), second = round(millisecond / 1000), minute = round(second / 60), hour = round(minute / 60);\n    // We expect a more precision in rounding when dealing with\n    // days as it feels wrong when something happended 13 hours ago and\n    // is regarded as \"yesterday\" even if the time was this morning.\n    var day = differenceInCalendarDays(to, from);\n    var week = round(day / 7);\n    var rawYears = daysToYears(day), month = round(rawYears * 12), year = round(rawYears);\n    return {\n        millisecond: millisecond,\n        second: second,\n        'second-short': second,\n        minute: minute,\n        'minute-short': minute,\n        hour: hour,\n        'hour-short': hour,\n        day: day,\n        'day-short': day,\n        week: week,\n        'week-short': week,\n        month: month,\n        'month-short': month,\n        year: year,\n        'year-short': year\n    };\n}\nexports.default = default_1;\n//# sourceMappingURL=diff.js.map","\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* jslint esnext: true */\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\nvar hop = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\nvar realDefineProp = (function () {\n    try {\n        return !!Object.defineProperty({}, 'a', {});\n    }\n    catch (e) {\n        return false;\n    }\n})();\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\nvar defineProperty = realDefineProp ? Object.defineProperty :\n    function (obj, name, desc) {\n        if ('get' in desc && obj.__defineGetter__) {\n            obj.__defineGetter__(name, desc.get);\n        }\n        else if (!hop.call(obj, name) || 'value' in desc) {\n            obj[name] = desc.value;\n        }\n    };\nexports.defineProperty = defineProperty;\nvar objCreate = Object.create || function (proto, props) {\n    var obj, k;\n    function F() { }\n    F.prototype = proto;\n    obj = new F();\n    for (k in props) {\n        if (hop.call(props, k)) {\n            defineProperty(obj, k, props[k]);\n        }\n    }\n    return obj;\n};\nexports.objCreate = objCreate;\nvar arrIndexOf = Array.prototype.indexOf || function (search, fromIndex) {\n    /*jshint validthis:true */\n    var arr = this;\n    if (!arr.length) {\n        return -1;\n    }\n    for (var i = fromIndex || 0, max = arr.length; i < max; i++) {\n        if (arr[i] === search) {\n            return i;\n        }\n    }\n    return -1;\n};\nexports.arrIndexOf = arrIndexOf;\nvar isArray = Array.isArray || function (obj) {\n    return toString.call(obj) === '[object Array]';\n};\nexports.isArray = isArray;\nvar dateNow = Date.now || function () {\n    return new Date().getTime();\n};\nexports.dateNow = dateNow;\n//# sourceMappingURL=es5.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* @generated */\nexports.default = { \"locale\": \"en\", \"pluralRuleFunction\": function (n, ord) {\n        var s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n        if (ord)\n            return (n10 == 1 && n100 != 11) ? 'one'\n                : (n10 == 2 && n100 != 12) ? 'two'\n                    : (n10 == 3 && n100 != 13) ? 'few'\n                        : 'other';\n        return (n == 1 && v0) ? 'one' : 'other';\n    }, \"fields\": { \"year\": { \"displayName\": \"year\", \"relative\": { \"0\": \"this year\", \"1\": \"next year\", \"-1\": \"last year\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} year\", \"other\": \"in {0} years\" }, \"past\": { \"one\": \"{0} year ago\", \"other\": \"{0} years ago\" } } }, \"year-short\": { \"displayName\": \"yr.\", \"relative\": { \"0\": \"this yr.\", \"1\": \"next yr.\", \"-1\": \"last yr.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} yr.\", \"other\": \"in {0} yr.\" }, \"past\": { \"one\": \"{0} yr. ago\", \"other\": \"{0} yr. ago\" } } }, \"month\": { \"displayName\": \"month\", \"relative\": { \"0\": \"this month\", \"1\": \"next month\", \"-1\": \"last month\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} month\", \"other\": \"in {0} months\" }, \"past\": { \"one\": \"{0} month ago\", \"other\": \"{0} months ago\" } } }, \"month-short\": { \"displayName\": \"mo.\", \"relative\": { \"0\": \"this mo.\", \"1\": \"next mo.\", \"-1\": \"last mo.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} mo.\", \"other\": \"in {0} mo.\" }, \"past\": { \"one\": \"{0} mo. ago\", \"other\": \"{0} mo. ago\" } } }, \"week\": { \"displayName\": \"week\", \"relativePeriod\": \"the week of {0}\", \"relative\": { \"0\": \"this week\", \"1\": \"next week\", \"-1\": \"last week\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} week\", \"other\": \"in {0} weeks\" }, \"past\": { \"one\": \"{0} week ago\", \"other\": \"{0} weeks ago\" } } }, \"week-short\": { \"displayName\": \"wk.\", \"relativePeriod\": \"the week of {0}\", \"relative\": { \"0\": \"this wk.\", \"1\": \"next wk.\", \"-1\": \"last wk.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} wk.\", \"other\": \"in {0} wk.\" }, \"past\": { \"one\": \"{0} wk. ago\", \"other\": \"{0} wk. ago\" } } }, \"day\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"day-short\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"hour\": { \"displayName\": \"hour\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hour\", \"other\": \"in {0} hours\" }, \"past\": { \"one\": \"{0} hour ago\", \"other\": \"{0} hours ago\" } } }, \"hour-short\": { \"displayName\": \"hr.\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hr.\", \"other\": \"in {0} hr.\" }, \"past\": { \"one\": \"{0} hr. ago\", \"other\": \"{0} hr. ago\" } } }, \"minute\": { \"displayName\": \"minute\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} minute\", \"other\": \"in {0} minutes\" }, \"past\": { \"one\": \"{0} minute ago\", \"other\": \"{0} minutes ago\" } } }, \"minute-short\": { \"displayName\": \"min.\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} min.\", \"other\": \"in {0} min.\" }, \"past\": { \"one\": \"{0} min. ago\", \"other\": \"{0} min. ago\" } } }, \"second\": { \"displayName\": \"second\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} second\", \"other\": \"in {0} seconds\" }, \"past\": { \"one\": \"{0} second ago\", \"other\": \"{0} seconds ago\" } } }, \"second-short\": { \"displayName\": \"sec.\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} sec.\", \"other\": \"in {0} sec.\" }, \"past\": { \"one\": \"{0} sec. ago\", \"other\": \"{0} sec. ago\" } } } } };\n//# sourceMappingURL=en.js.map","/* (ignored) */","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".paper-canvas_paper-canvas_2biXB {\\n    top: 1px; /* leave room for the border */\\n    left: 1px;\\n    width: calc(100% - 2px);\\n    height: calc(100% - 2px);\\n    margin: auto;\\n    position: absolute;\\n    background-color: #D9E3F2;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"paper-canvas\": \"paper-canvas_paper-canvas_2biXB\",\n\t\"paperCanvas\": \"paper-canvas_paper-canvas_2biXB\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".scrollable-canvas_vertical-scrollbar_gyXyM, .scrollable-canvas_horizontal-scrollbar_OBOUt {\\n    background: rgba(190, 190, 190, 0.8);\\n    border-radius: calc(8px / 2);\\n    width: 100%;\\n    height: 100%;\\n}\\n.scrollable-canvas_vertical-scrollbar-wrapper_1cMNm {\\n    position: absolute;\\n    width: calc(8px + 4px);\\n    right: 0;\\n    top: 4px;\\n    height: calc(100% - 8px - 2 * 4px);\\n}\\n.scrollable-canvas_horizontal-scrollbar-wrapper_2BUMa {\\n    position: absolute;\\n    height: calc(8px + 4px);\\n    left: 4px;\\n    bottom: 0;\\n    width: calc(100% - 8px - 2 * 4px);\\n}\\n.scrollable-canvas_vertical-scrollbar-hitbox_2QprH, .scrollable-canvas_horizontal-scrollbar-hitbox_EBg8r {\\n    position: absolute;\\n    cursor: pointer;\\n    -webkit-box-sizing: border-box;\\n            box-sizing: border-box;\\n}\\n.scrollable-canvas_vertical-scrollbar-hitbox_2QprH {\\n    width: calc(8px + 4px);\\n    padding-right: 4px;\\n}\\n.scrollable-canvas_horizontal-scrollbar-hitbox_EBg8r {\\n    height: calc(8px + 4px);\\n    padding-bottom: 4px;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"vertical-scrollbar\": \"scrollable-canvas_vertical-scrollbar_gyXyM\",\n\t\"verticalScrollbar\": \"scrollable-canvas_vertical-scrollbar_gyXyM\",\n\t\"horizontal-scrollbar\": \"scrollable-canvas_horizontal-scrollbar_OBOUt\",\n\t\"horizontalScrollbar\": \"scrollable-canvas_horizontal-scrollbar_OBOUt\",\n\t\"vertical-scrollbar-wrapper\": \"scrollable-canvas_vertical-scrollbar-wrapper_1cMNm\",\n\t\"verticalScrollbarWrapper\": \"scrollable-canvas_vertical-scrollbar-wrapper_1cMNm\",\n\t\"horizontal-scrollbar-wrapper\": \"scrollable-canvas_horizontal-scrollbar-wrapper_2BUMa\",\n\t\"horizontalScrollbarWrapper\": \"scrollable-canvas_horizontal-scrollbar-wrapper_2BUMa\",\n\t\"vertical-scrollbar-hitbox\": \"scrollable-canvas_vertical-scrollbar-hitbox_2QprH\",\n\t\"verticalScrollbarHitbox\": \"scrollable-canvas_vertical-scrollbar-hitbox_2QprH\",\n\t\"horizontal-scrollbar-hitbox\": \"scrollable-canvas_horizontal-scrollbar-hitbox_EBg8r\",\n\t\"horizontalScrollbarHitbox\": \"scrollable-canvas_horizontal-scrollbar-hitbox_EBg8r\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n.button_button_lmpwR {\\n    background: none;\\n    cursor: pointer;\\n    -webkit-user-select: none;\\n       -moz-user-select: none;\\n        -ms-user-select: none;\\n            user-select: none;\\n}\\n\\n.button_button_lmpwR:active {\\n    background-color: hsla(260, 60%, 60%, 0.35);\\n}\\n\\n.button_highlighted_2c0Ir.button_button_lmpwR {\\n    background-color: hsla(260, 60%, 60%, 0.35);\\n}\\n\\n.button_mod-disabled_CFsZ2 {\\n    cursor: auto;\\n    opacity: .5;\\n}\\n\\n.button_mod-disabled_CFsZ2:active {\\n    background: none;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"button\": \"button_button_lmpwR\",\n\t\"highlighted\": \"button_highlighted_2c0Ir\",\n\t\"mod-disabled\": \"button_mod-disabled_CFsZ2\",\n\t\"modDisabled\": \"button_mod-disabled_CFsZ2\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.tool-select-base_mod-tool-select_1RQKn {\\n    display: inline-block;\\n    margin: .25rem;\\n    border: none;\\n    border-radius: .25rem;\\n    outline: none;\\n    background: none;\\n    padding: .25rem;\\n    font-size: 0.85rem;\\n    -webkit-transition: 0.2s;\\n    transition: 0.2s;\\n}\\n\\n.tool-select-base_mod-tool-select_1RQKn.tool-select-base_is-selected_3Le38 {\\n    background-color: #855CD6;\\n}\\n\\n.tool-select-base_mod-tool-select_1RQKn:focus {\\n    outline: none;\\n}\\n\\nimg.tool-select-base_tool-select-icon_2TT3t {\\n    width: 2rem;\\n    height: 2rem;\\n    -webkit-box-flex: 1;\\n    -webkit-flex-grow: 1;\\n        -ms-flex-positive: 1;\\n            flex-grow: 1;\\n    vertical-align: middle;\\n}\\n\\n.tool-select-base_mod-tool-select_1RQKn.tool-select-base_is-selected_3Le38 .tool-select-base_tool-select-icon_2TT3t {\\n    /* Make the tool icons white while selected by making them black and inverting */\\n    -webkit-filter: brightness(0) invert(1);\\n            filter: brightness(0) invert(1);\\n}\\n\\n@media only screen and (max-width: 1256px) {\\n    .tool-select-base_mod-tool-select_1RQKn {\\n        margin: 0;\\n    }\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"mod-tool-select\": \"tool-select-base_mod-tool-select_1RQKn\",\n\t\"modToolSelect\": \"tool-select-base_mod-tool-select_1RQKn\",\n\t\"is-selected\": \"tool-select-base_is-selected_3Le38\",\n\t\"isSelected\": \"tool-select-base_is-selected_3Le38\",\n\t\"tool-select-icon\": \"tool-select-base_tool-select-icon_2TT3t\",\n\t\"toolSelectIcon\": \"tool-select-base_tool-select-icon_2TT3t\"\n};\nmodule.exports = exports;\n","// GENERATED DO NOT EDIT\nmodule.exports = [\n  \"alignContent\",\n  \"MozAlignContent\",\n  \"WebkitAlignContent\",\n  \"MSAlignContent\",\n  \"OAlignContent\",\n  \"alignItems\",\n  \"MozAlignItems\",\n  \"WebkitAlignItems\",\n  \"MSAlignItems\",\n  \"OAlignItems\",\n  \"alignSelf\",\n  \"MozAlignSelf\",\n  \"WebkitAlignSelf\",\n  \"MSAlignSelf\",\n  \"OAlignSelf\",\n  \"all\",\n  \"MozAll\",\n  \"WebkitAll\",\n  \"MSAll\",\n  \"OAll\",\n  \"animation\",\n  \"MozAnimation\",\n  \"WebkitAnimation\",\n  \"MSAnimation\",\n  \"OAnimation\",\n  \"animationDelay\",\n  \"MozAnimationDelay\",\n  \"WebkitAnimationDelay\",\n  \"MSAnimationDelay\",\n  \"OAnimationDelay\",\n  \"animationDirection\",\n  \"MozAnimationDirection\",\n  \"WebkitAnimationDirection\",\n  \"MSAnimationDirection\",\n  \"OAnimationDirection\",\n  \"animationDuration\",\n  \"MozAnimationDuration\",\n  \"WebkitAnimationDuration\",\n  \"MSAnimationDuration\",\n  \"OAnimationDuration\",\n  \"animationFillMode\",\n  \"MozAnimationFillMode\",\n  \"WebkitAnimationFillMode\",\n  \"MSAnimationFillMode\",\n  \"OAnimationFillMode\",\n  \"animationIterationCount\",\n  \"MozAnimationIterationCount\",\n  \"WebkitAnimationIterationCount\",\n  \"MSAnimationIterationCount\",\n  \"OAnimationIterationCount\",\n  \"animationName\",\n  \"MozAnimationName\",\n  \"WebkitAnimationName\",\n  \"MSAnimationName\",\n  \"OAnimationName\",\n  \"animationPlayState\",\n  \"MozAnimationPlayState\",\n  \"WebkitAnimationPlayState\",\n  \"MSAnimationPlayState\",\n  \"OAnimationPlayState\",\n  \"animationTimingFunction\",\n  \"MozAnimationTimingFunction\",\n  \"WebkitAnimationTimingFunction\",\n  \"MSAnimationTimingFunction\",\n  \"OAnimationTimingFunction\",\n  \"backfaceVisibility\",\n  \"MozBackfaceVisibility\",\n  \"WebkitBackfaceVisibility\",\n  \"MSBackfaceVisibility\",\n  \"OBackfaceVisibility\",\n  \"background\",\n  \"MozBackground\",\n  \"WebkitBackground\",\n  \"MSBackground\",\n  \"OBackground\",\n  \"backgroundAttachment\",\n  \"MozBackgroundAttachment\",\n  \"WebkitBackgroundAttachment\",\n  \"MSBackgroundAttachment\",\n  \"OBackgroundAttachment\",\n  \"backgroundBlendMode\",\n  \"MozBackgroundBlendMode\",\n  \"WebkitBackgroundBlendMode\",\n  \"MSBackgroundBlendMode\",\n  \"OBackgroundBlendMode\",\n  \"backgroundClip\",\n  \"MozBackgroundClip\",\n  \"WebkitBackgroundClip\",\n  \"MSBackgroundClip\",\n  \"OBackgroundClip\",\n  \"backgroundColor\",\n  \"MozBackgroundColor\",\n  \"WebkitBackgroundColor\",\n  \"MSBackgroundColor\",\n  \"OBackgroundColor\",\n  \"backgroundImage\",\n  \"MozBackgroundImage\",\n  \"WebkitBackgroundImage\",\n  \"MSBackgroundImage\",\n  \"OBackgroundImage\",\n  \"backgroundOrigin\",\n  \"MozBackgroundOrigin\",\n  \"WebkitBackgroundOrigin\",\n  \"MSBackgroundOrigin\",\n  \"OBackgroundOrigin\",\n  \"backgroundPosition\",\n  \"MozBackgroundPosition\",\n  \"WebkitBackgroundPosition\",\n  \"MSBackgroundPosition\",\n  \"OBackgroundPosition\",\n  \"backgroundRepeat\",\n  \"MozBackgroundRepeat\",\n  \"WebkitBackgroundRepeat\",\n  \"MSBackgroundRepeat\",\n  \"OBackgroundRepeat\",\n  \"backgroundSize\",\n  \"MozBackgroundSize\",\n  \"WebkitBackgroundSize\",\n  \"MSBackgroundSize\",\n  \"OBackgroundSize\",\n  \"blockSize\",\n  \"MozBlockSize\",\n  \"WebkitBlockSize\",\n  \"MSBlockSize\",\n  \"OBlockSize\",\n  \"border\",\n  \"MozBorder\",\n  \"WebkitBorder\",\n  \"MSBorder\",\n  \"OBorder\",\n  \"borderBlockEnd\",\n  \"MozBorderBlockEnd\",\n  \"WebkitBorderBlockEnd\",\n  \"MSBorderBlockEnd\",\n  \"OBorderBlockEnd\",\n  \"borderBlockEndColor\",\n  \"MozBorderBlockEndColor\",\n  \"WebkitBorderBlockEndColor\",\n  \"MSBorderBlockEndColor\",\n  \"OBorderBlockEndColor\",\n  \"borderBlockEndStyle\",\n  \"MozBorderBlockEndStyle\",\n  \"WebkitBorderBlockEndStyle\",\n  \"MSBorderBlockEndStyle\",\n  \"OBorderBlockEndStyle\",\n  \"borderBlockEndWidth\",\n  \"MozBorderBlockEndWidth\",\n  \"WebkitBorderBlockEndWidth\",\n  \"MSBorderBlockEndWidth\",\n  \"OBorderBlockEndWidth\",\n  \"borderBlockStart\",\n  \"MozBorderBlockStart\",\n  \"WebkitBorderBlockStart\",\n  \"MSBorderBlockStart\",\n  \"OBorderBlockStart\",\n  \"borderBlockStartColor\",\n  \"MozBorderBlockStartColor\",\n  \"WebkitBorderBlockStartColor\",\n  \"MSBorderBlockStartColor\",\n  \"OBorderBlockStartColor\",\n  \"borderBlockStartStyle\",\n  \"MozBorderBlockStartStyle\",\n  \"WebkitBorderBlockStartStyle\",\n  \"MSBorderBlockStartStyle\",\n  \"OBorderBlockStartStyle\",\n  \"borderBlockStartWidth\",\n  \"MozBorderBlockStartWidth\",\n  \"WebkitBorderBlockStartWidth\",\n  \"MSBorderBlockStartWidth\",\n  \"OBorderBlockStartWidth\",\n  \"borderBottom\",\n  \"MozBorderBottom\",\n  \"WebkitBorderBottom\",\n  \"MSBorderBottom\",\n  \"OBorderBottom\",\n  \"borderBottomColor\",\n  \"MozBorderBottomColor\",\n  \"WebkitBorderBottomColor\",\n  \"MSBorderBottomColor\",\n  \"OBorderBottomColor\",\n  \"borderBottomLeftRadius\",\n  \"MozBorderBottomLeftRadius\",\n  \"WebkitBorderBottomLeftRadius\",\n  \"MSBorderBottomLeftRadius\",\n  \"OBorderBottomLeftRadius\",\n  \"borderBottomRightRadius\",\n  \"MozBorderBottomRightRadius\",\n  \"WebkitBorderBottomRightRadius\",\n  \"MSBorderBottomRightRadius\",\n  \"OBorderBottomRightRadius\",\n  \"borderBottomStyle\",\n  \"MozBorderBottomStyle\",\n  \"WebkitBorderBottomStyle\",\n  \"MSBorderBottomStyle\",\n  \"OBorderBottomStyle\",\n  \"borderBottomWidth\",\n  \"MozBorderBottomWidth\",\n  \"WebkitBorderBottomWidth\",\n  \"MSBorderBottomWidth\",\n  \"OBorderBottomWidth\",\n  \"borderCollapse\",\n  \"MozBorderCollapse\",\n  \"WebkitBorderCollapse\",\n  \"MSBorderCollapse\",\n  \"OBorderCollapse\",\n  \"borderColor\",\n  \"MozBorderColor\",\n  \"WebkitBorderColor\",\n  \"MSBorderColor\",\n  \"OBorderColor\",\n  \"borderImage\",\n  \"MozBorderImage\",\n  \"WebkitBorderImage\",\n  \"MSBorderImage\",\n  \"OBorderImage\",\n  \"borderImageOutset\",\n  \"MozBorderImageOutset\",\n  \"WebkitBorderImageOutset\",\n  \"MSBorderImageOutset\",\n  \"OBorderImageOutset\",\n  \"borderImageRepeat\",\n  \"MozBorderImageRepeat\",\n  \"WebkitBorderImageRepeat\",\n  \"MSBorderImageRepeat\",\n  \"OBorderImageRepeat\",\n  \"borderImageSlice\",\n  \"MozBorderImageSlice\",\n  \"WebkitBorderImageSlice\",\n  \"MSBorderImageSlice\",\n  \"OBorderImageSlice\",\n  \"borderImageSource\",\n  \"MozBorderImageSource\",\n  \"WebkitBorderImageSource\",\n  \"MSBorderImageSource\",\n  \"OBorderImageSource\",\n  \"borderImageWidth\",\n  \"MozBorderImageWidth\",\n  \"WebkitBorderImageWidth\",\n  \"MSBorderImageWidth\",\n  \"OBorderImageWidth\",\n  \"borderInlineEnd\",\n  \"MozBorderInlineEnd\",\n  \"WebkitBorderInlineEnd\",\n  \"MSBorderInlineEnd\",\n  \"OBorderInlineEnd\",\n  \"borderInlineEndColor\",\n  \"MozBorderInlineEndColor\",\n  \"WebkitBorderInlineEndColor\",\n  \"MSBorderInlineEndColor\",\n  \"OBorderInlineEndColor\",\n  \"borderInlineEndStyle\",\n  \"MozBorderInlineEndStyle\",\n  \"WebkitBorderInlineEndStyle\",\n  \"MSBorderInlineEndStyle\",\n  \"OBorderInlineEndStyle\",\n  \"borderInlineEndWidth\",\n  \"MozBorderInlineEndWidth\",\n  \"WebkitBorderInlineEndWidth\",\n  \"MSBorderInlineEndWidth\",\n  \"OBorderInlineEndWidth\",\n  \"borderInlineStart\",\n  \"MozBorderInlineStart\",\n  \"WebkitBorderInlineStart\",\n  \"MSBorderInlineStart\",\n  \"OBorderInlineStart\",\n  \"borderInlineStartColor\",\n  \"MozBorderInlineStartColor\",\n  \"WebkitBorderInlineStartColor\",\n  \"MSBorderInlineStartColor\",\n  \"OBorderInlineStartColor\",\n  \"borderInlineStartStyle\",\n  \"MozBorderInlineStartStyle\",\n  \"WebkitBorderInlineStartStyle\",\n  \"MSBorderInlineStartStyle\",\n  \"OBorderInlineStartStyle\",\n  \"borderInlineStartWidth\",\n  \"MozBorderInlineStartWidth\",\n  \"WebkitBorderInlineStartWidth\",\n  \"MSBorderInlineStartWidth\",\n  \"OBorderInlineStartWidth\",\n  \"borderLeft\",\n  \"MozBorderLeft\",\n  \"WebkitBorderLeft\",\n  \"MSBorderLeft\",\n  \"OBorderLeft\",\n  \"borderLeftColor\",\n  \"MozBorderLeftColor\",\n  \"WebkitBorderLeftColor\",\n  \"MSBorderLeftColor\",\n  \"OBorderLeftColor\",\n  \"borderLeftStyle\",\n  \"MozBorderLeftStyle\",\n  \"WebkitBorderLeftStyle\",\n  \"MSBorderLeftStyle\",\n  \"OBorderLeftStyle\",\n  \"borderLeftWidth\",\n  \"MozBorderLeftWidth\",\n  \"WebkitBorderLeftWidth\",\n  \"MSBorderLeftWidth\",\n  \"OBorderLeftWidth\",\n  \"borderRadius\",\n  \"MozBorderRadius\",\n  \"WebkitBorderRadius\",\n  \"MSBorderRadius\",\n  \"OBorderRadius\",\n  \"borderRight\",\n  \"MozBorderRight\",\n  \"WebkitBorderRight\",\n  \"MSBorderRight\",\n  \"OBorderRight\",\n  \"borderRightColor\",\n  \"MozBorderRightColor\",\n  \"WebkitBorderRightColor\",\n  \"MSBorderRightColor\",\n  \"OBorderRightColor\",\n  \"borderRightStyle\",\n  \"MozBorderRightStyle\",\n  \"WebkitBorderRightStyle\",\n  \"MSBorderRightStyle\",\n  \"OBorderRightStyle\",\n  \"borderRightWidth\",\n  \"MozBorderRightWidth\",\n  \"WebkitBorderRightWidth\",\n  \"MSBorderRightWidth\",\n  \"OBorderRightWidth\",\n  \"borderSpacing\",\n  \"MozBorderSpacing\",\n  \"WebkitBorderSpacing\",\n  \"MSBorderSpacing\",\n  \"OBorderSpacing\",\n  \"borderStyle\",\n  \"MozBorderStyle\",\n  \"WebkitBorderStyle\",\n  \"MSBorderStyle\",\n  \"OBorderStyle\",\n  \"borderTop\",\n  \"MozBorderTop\",\n  \"WebkitBorderTop\",\n  \"MSBorderTop\",\n  \"OBorderTop\",\n  \"borderTopColor\",\n  \"MozBorderTopColor\",\n  \"WebkitBorderTopColor\",\n  \"MSBorderTopColor\",\n  \"OBorderTopColor\",\n  \"borderTopLeftRadius\",\n  \"MozBorderTopLeftRadius\",\n  \"WebkitBorderTopLeftRadius\",\n  \"MSBorderTopLeftRadius\",\n  \"OBorderTopLeftRadius\",\n  \"borderTopRightRadius\",\n  \"MozBorderTopRightRadius\",\n  \"WebkitBorderTopRightRadius\",\n  \"MSBorderTopRightRadius\",\n  \"OBorderTopRightRadius\",\n  \"borderTopStyle\",\n  \"MozBorderTopStyle\",\n  \"WebkitBorderTopStyle\",\n  \"MSBorderTopStyle\",\n  \"OBorderTopStyle\",\n  \"borderTopWidth\",\n  \"MozBorderTopWidth\",\n  \"WebkitBorderTopWidth\",\n  \"MSBorderTopWidth\",\n  \"OBorderTopWidth\",\n  \"borderWidth\",\n  \"MozBorderWidth\",\n  \"WebkitBorderWidth\",\n  \"MSBorderWidth\",\n  \"OBorderWidth\",\n  \"bottom\",\n  \"MozBottom\",\n  \"WebkitBottom\",\n  \"MSBottom\",\n  \"OBottom\",\n  \"boxDecorationBreak\",\n  \"MozBoxDecorationBreak\",\n  \"WebkitBoxDecorationBreak\",\n  \"MSBoxDecorationBreak\",\n  \"OBoxDecorationBreak\",\n  \"boxShadow\",\n  \"MozBoxShadow\",\n  \"WebkitBoxShadow\",\n  \"MSBoxShadow\",\n  \"OBoxShadow\",\n  \"boxSizing\",\n  \"MozBoxSizing\",\n  \"WebkitBoxSizing\",\n  \"MSBoxSizing\",\n  \"OBoxSizing\",\n  \"breakAfter\",\n  \"MozBreakAfter\",\n  \"WebkitBreakAfter\",\n  \"MSBreakAfter\",\n  \"OBreakAfter\",\n  \"breakBefore\",\n  \"MozBreakBefore\",\n  \"WebkitBreakBefore\",\n  \"MSBreakBefore\",\n  \"OBreakBefore\",\n  \"breakInside\",\n  \"MozBreakInside\",\n  \"WebkitBreakInside\",\n  \"MSBreakInside\",\n  \"OBreakInside\",\n  \"captionSide\",\n  \"MozCaptionSide\",\n  \"WebkitCaptionSide\",\n  \"MSCaptionSide\",\n  \"OCaptionSide\",\n  \"caretColor\",\n  \"MozCaretColor\",\n  \"WebkitCaretColor\",\n  \"MSCaretColor\",\n  \"OCaretColor\",\n  \"ch\",\n  \"MozCh\",\n  \"WebkitCh\",\n  \"MSCh\",\n  \"OCh\",\n  \"clear\",\n  \"MozClear\",\n  \"WebkitClear\",\n  \"MSClear\",\n  \"OClear\",\n  \"clip\",\n  \"MozClip\",\n  \"WebkitClip\",\n  \"MSClip\",\n  \"OClip\",\n  \"clipPath\",\n  \"MozClipPath\",\n  \"WebkitClipPath\",\n  \"MSClipPath\",\n  \"OClipPath\",\n  \"cm\",\n  \"MozCm\",\n  \"WebkitCm\",\n  \"MSCm\",\n  \"OCm\",\n  \"color\",\n  \"MozColor\",\n  \"WebkitColor\",\n  \"MSColor\",\n  \"OColor\",\n  \"columnCount\",\n  \"MozColumnCount\",\n  \"WebkitColumnCount\",\n  \"MSColumnCount\",\n  \"OColumnCount\",\n  \"columnFill\",\n  \"MozColumnFill\",\n  \"WebkitColumnFill\",\n  \"MSColumnFill\",\n  \"OColumnFill\",\n  \"columnGap\",\n  \"MozColumnGap\",\n  \"WebkitColumnGap\",\n  \"MSColumnGap\",\n  \"OColumnGap\",\n  \"columnRule\",\n  \"MozColumnRule\",\n  \"WebkitColumnRule\",\n  \"MSColumnRule\",\n  \"OColumnRule\",\n  \"columnRuleColor\",\n  \"MozColumnRuleColor\",\n  \"WebkitColumnRuleColor\",\n  \"MSColumnRuleColor\",\n  \"OColumnRuleColor\",\n  \"columnRuleStyle\",\n  \"MozColumnRuleStyle\",\n  \"WebkitColumnRuleStyle\",\n  \"MSColumnRuleStyle\",\n  \"OColumnRuleStyle\",\n  \"columnRuleWidth\",\n  \"MozColumnRuleWidth\",\n  \"WebkitColumnRuleWidth\",\n  \"MSColumnRuleWidth\",\n  \"OColumnRuleWidth\",\n  \"columnSpan\",\n  \"MozColumnSpan\",\n  \"WebkitColumnSpan\",\n  \"MSColumnSpan\",\n  \"OColumnSpan\",\n  \"columnWidth\",\n  \"MozColumnWidth\",\n  \"WebkitColumnWidth\",\n  \"MSColumnWidth\",\n  \"OColumnWidth\",\n  \"columns\",\n  \"MozColumns\",\n  \"WebkitColumns\",\n  \"MSColumns\",\n  \"OColumns\",\n  \"content\",\n  \"MozContent\",\n  \"WebkitContent\",\n  \"MSContent\",\n  \"OContent\",\n  \"counterIncrement\",\n  \"MozCounterIncrement\",\n  \"WebkitCounterIncrement\",\n  \"MSCounterIncrement\",\n  \"OCounterIncrement\",\n  \"counterReset\",\n  \"MozCounterReset\",\n  \"WebkitCounterReset\",\n  \"MSCounterReset\",\n  \"OCounterReset\",\n  \"cursor\",\n  \"MozCursor\",\n  \"WebkitCursor\",\n  \"MSCursor\",\n  \"OCursor\",\n  \"deg\",\n  \"MozDeg\",\n  \"WebkitDeg\",\n  \"MSDeg\",\n  \"ODeg\",\n  \"direction\",\n  \"MozDirection\",\n  \"WebkitDirection\",\n  \"MSDirection\",\n  \"ODirection\",\n  \"display\",\n  \"MozDisplay\",\n  \"WebkitDisplay\",\n  \"MSDisplay\",\n  \"ODisplay\",\n  \"dpcm\",\n  \"MozDpcm\",\n  \"WebkitDpcm\",\n  \"MSDpcm\",\n  \"ODpcm\",\n  \"dpi\",\n  \"MozDpi\",\n  \"WebkitDpi\",\n  \"MSDpi\",\n  \"ODpi\",\n  \"dppx\",\n  \"MozDppx\",\n  \"WebkitDppx\",\n  \"MSDppx\",\n  \"ODppx\",\n  \"em\",\n  \"MozEm\",\n  \"WebkitEm\",\n  \"MSEm\",\n  \"OEm\",\n  \"emptyCells\",\n  \"MozEmptyCells\",\n  \"WebkitEmptyCells\",\n  \"MSEmptyCells\",\n  \"OEmptyCells\",\n  \"ex\",\n  \"MozEx\",\n  \"WebkitEx\",\n  \"MSEx\",\n  \"OEx\",\n  \"filter\",\n  \"MozFilter\",\n  \"WebkitFilter\",\n  \"MSFilter\",\n  \"OFilter\",\n  \"flexBasis\",\n  \"MozFlexBasis\",\n  \"WebkitFlexBasis\",\n  \"MSFlexBasis\",\n  \"OFlexBasis\",\n  \"flexDirection\",\n  \"MozFlexDirection\",\n  \"WebkitFlexDirection\",\n  \"MSFlexDirection\",\n  \"OFlexDirection\",\n  \"flexFlow\",\n  \"MozFlexFlow\",\n  \"WebkitFlexFlow\",\n  \"MSFlexFlow\",\n  \"OFlexFlow\",\n  \"flexGrow\",\n  \"MozFlexGrow\",\n  \"WebkitFlexGrow\",\n  \"MSFlexGrow\",\n  \"OFlexGrow\",\n  \"flexShrink\",\n  \"MozFlexShrink\",\n  \"WebkitFlexShrink\",\n  \"MSFlexShrink\",\n  \"OFlexShrink\",\n  \"flexWrap\",\n  \"MozFlexWrap\",\n  \"WebkitFlexWrap\",\n  \"MSFlexWrap\",\n  \"OFlexWrap\",\n  \"float\",\n  \"MozFloat\",\n  \"WebkitFloat\",\n  \"MSFloat\",\n  \"OFloat\",\n  \"font\",\n  \"MozFont\",\n  \"WebkitFont\",\n  \"MSFont\",\n  \"OFont\",\n  \"fontFamily\",\n  \"MozFontFamily\",\n  \"WebkitFontFamily\",\n  \"MSFontFamily\",\n  \"OFontFamily\",\n  \"fontFeatureSettings\",\n  \"MozFontFeatureSettings\",\n  \"WebkitFontFeatureSettings\",\n  \"MSFontFeatureSettings\",\n  \"OFontFeatureSettings\",\n  \"fontKerning\",\n  \"MozFontKerning\",\n  \"WebkitFontKerning\",\n  \"MSFontKerning\",\n  \"OFontKerning\",\n  \"fontLanguageOverride\",\n  \"MozFontLanguageOverride\",\n  \"WebkitFontLanguageOverride\",\n  \"MSFontLanguageOverride\",\n  \"OFontLanguageOverride\",\n  \"fontSize\",\n  \"MozFontSize\",\n  \"WebkitFontSize\",\n  \"MSFontSize\",\n  \"OFontSize\",\n  \"fontSizeAdjust\",\n  \"MozFontSizeAdjust\",\n  \"WebkitFontSizeAdjust\",\n  \"MSFontSizeAdjust\",\n  \"OFontSizeAdjust\",\n  \"fontStretch\",\n  \"MozFontStretch\",\n  \"WebkitFontStretch\",\n  \"MSFontStretch\",\n  \"OFontStretch\",\n  \"fontStyle\",\n  \"MozFontStyle\",\n  \"WebkitFontStyle\",\n  \"MSFontStyle\",\n  \"OFontStyle\",\n  \"fontSynthesis\",\n  \"MozFontSynthesis\",\n  \"WebkitFontSynthesis\",\n  \"MSFontSynthesis\",\n  \"OFontSynthesis\",\n  \"fontVariant\",\n  \"MozFontVariant\",\n  \"WebkitFontVariant\",\n  \"MSFontVariant\",\n  \"OFontVariant\",\n  \"fontVariantAlternates\",\n  \"MozFontVariantAlternates\",\n  \"WebkitFontVariantAlternates\",\n  \"MSFontVariantAlternates\",\n  \"OFontVariantAlternates\",\n  \"fontVariantCaps\",\n  \"MozFontVariantCaps\",\n  \"WebkitFontVariantCaps\",\n  \"MSFontVariantCaps\",\n  \"OFontVariantCaps\",\n  \"fontVariantEastAsian\",\n  \"MozFontVariantEastAsian\",\n  \"WebkitFontVariantEastAsian\",\n  \"MSFontVariantEastAsian\",\n  \"OFontVariantEastAsian\",\n  \"fontVariantLigatures\",\n  \"MozFontVariantLigatures\",\n  \"WebkitFontVariantLigatures\",\n  \"MSFontVariantLigatures\",\n  \"OFontVariantLigatures\",\n  \"fontVariantNumeric\",\n  \"MozFontVariantNumeric\",\n  \"WebkitFontVariantNumeric\",\n  \"MSFontVariantNumeric\",\n  \"OFontVariantNumeric\",\n  \"fontVariantPosition\",\n  \"MozFontVariantPosition\",\n  \"WebkitFontVariantPosition\",\n  \"MSFontVariantPosition\",\n  \"OFontVariantPosition\",\n  \"fontWeight\",\n  \"MozFontWeight\",\n  \"WebkitFontWeight\",\n  \"MSFontWeight\",\n  \"OFontWeight\",\n  \"fr\",\n  \"MozFr\",\n  \"WebkitFr\",\n  \"MSFr\",\n  \"OFr\",\n  \"grad\",\n  \"MozGrad\",\n  \"WebkitGrad\",\n  \"MSGrad\",\n  \"OGrad\",\n  \"grid\",\n  \"MozGrid\",\n  \"WebkitGrid\",\n  \"MSGrid\",\n  \"OGrid\",\n  \"gridArea\",\n  \"MozGridArea\",\n  \"WebkitGridArea\",\n  \"MSGridArea\",\n  \"OGridArea\",\n  \"gridAutoColumns\",\n  \"MozGridAutoColumns\",\n  \"WebkitGridAutoColumns\",\n  \"MSGridAutoColumns\",\n  \"OGridAutoColumns\",\n  \"gridAutoFlow\",\n  \"MozGridAutoFlow\",\n  \"WebkitGridAutoFlow\",\n  \"MSGridAutoFlow\",\n  \"OGridAutoFlow\",\n  \"gridAutoRows\",\n  \"MozGridAutoRows\",\n  \"WebkitGridAutoRows\",\n  \"MSGridAutoRows\",\n  \"OGridAutoRows\",\n  \"gridColumn\",\n  \"MozGridColumn\",\n  \"WebkitGridColumn\",\n  \"MSGridColumn\",\n  \"OGridColumn\",\n  \"gridColumnEnd\",\n  \"MozGridColumnEnd\",\n  \"WebkitGridColumnEnd\",\n  \"MSGridColumnEnd\",\n  \"OGridColumnEnd\",\n  \"gridColumnGap\",\n  \"MozGridColumnGap\",\n  \"WebkitGridColumnGap\",\n  \"MSGridColumnGap\",\n  \"OGridColumnGap\",\n  \"gridColumnStart\",\n  \"MozGridColumnStart\",\n  \"WebkitGridColumnStart\",\n  \"MSGridColumnStart\",\n  \"OGridColumnStart\",\n  \"gridGap\",\n  \"MozGridGap\",\n  \"WebkitGridGap\",\n  \"MSGridGap\",\n  \"OGridGap\",\n  \"gridRow\",\n  \"MozGridRow\",\n  \"WebkitGridRow\",\n  \"MSGridRow\",\n  \"OGridRow\",\n  \"gridRowEnd\",\n  \"MozGridRowEnd\",\n  \"WebkitGridRowEnd\",\n  \"MSGridRowEnd\",\n  \"OGridRowEnd\",\n  \"gridRowGap\",\n  \"MozGridRowGap\",\n  \"WebkitGridRowGap\",\n  \"MSGridRowGap\",\n  \"OGridRowGap\",\n  \"gridRowStart\",\n  \"MozGridRowStart\",\n  \"WebkitGridRowStart\",\n  \"MSGridRowStart\",\n  \"OGridRowStart\",\n  \"gridTemplate\",\n  \"MozGridTemplate\",\n  \"WebkitGridTemplate\",\n  \"MSGridTemplate\",\n  \"OGridTemplate\",\n  \"gridTemplateAreas\",\n  \"MozGridTemplateAreas\",\n  \"WebkitGridTemplateAreas\",\n  \"MSGridTemplateAreas\",\n  \"OGridTemplateAreas\",\n  \"gridTemplateColumns\",\n  \"MozGridTemplateColumns\",\n  \"WebkitGridTemplateColumns\",\n  \"MSGridTemplateColumns\",\n  \"OGridTemplateColumns\",\n  \"gridTemplateRows\",\n  \"MozGridTemplateRows\",\n  \"WebkitGridTemplateRows\",\n  \"MSGridTemplateRows\",\n  \"OGridTemplateRows\",\n  \"height\",\n  \"MozHeight\",\n  \"WebkitHeight\",\n  \"MSHeight\",\n  \"OHeight\",\n  \"hyphens\",\n  \"MozHyphens\",\n  \"WebkitHyphens\",\n  \"MSHyphens\",\n  \"OHyphens\",\n  \"hz\",\n  \"MozHz\",\n  \"WebkitHz\",\n  \"MSHz\",\n  \"OHz\",\n  \"imageOrientation\",\n  \"MozImageOrientation\",\n  \"WebkitImageOrientation\",\n  \"MSImageOrientation\",\n  \"OImageOrientation\",\n  \"imageRendering\",\n  \"MozImageRendering\",\n  \"WebkitImageRendering\",\n  \"MSImageRendering\",\n  \"OImageRendering\",\n  \"imageResolution\",\n  \"MozImageResolution\",\n  \"WebkitImageResolution\",\n  \"MSImageResolution\",\n  \"OImageResolution\",\n  \"imeMode\",\n  \"MozImeMode\",\n  \"WebkitImeMode\",\n  \"MSImeMode\",\n  \"OImeMode\",\n  \"in\",\n  \"MozIn\",\n  \"WebkitIn\",\n  \"MSIn\",\n  \"OIn\",\n  \"inherit\",\n  \"MozInherit\",\n  \"WebkitInherit\",\n  \"MSInherit\",\n  \"OInherit\",\n  \"initial\",\n  \"MozInitial\",\n  \"WebkitInitial\",\n  \"MSInitial\",\n  \"OInitial\",\n  \"inlineSize\",\n  \"MozInlineSize\",\n  \"WebkitInlineSize\",\n  \"MSInlineSize\",\n  \"OInlineSize\",\n  \"isolation\",\n  \"MozIsolation\",\n  \"WebkitIsolation\",\n  \"MSIsolation\",\n  \"OIsolation\",\n  \"justifyContent\",\n  \"MozJustifyContent\",\n  \"WebkitJustifyContent\",\n  \"MSJustifyContent\",\n  \"OJustifyContent\",\n  \"khz\",\n  \"MozKhz\",\n  \"WebkitKhz\",\n  \"MSKhz\",\n  \"OKhz\",\n  \"left\",\n  \"MozLeft\",\n  \"WebkitLeft\",\n  \"MSLeft\",\n  \"OLeft\",\n  \"letterSpacing\",\n  \"MozLetterSpacing\",\n  \"WebkitLetterSpacing\",\n  \"MSLetterSpacing\",\n  \"OLetterSpacing\",\n  \"lineBreak\",\n  \"MozLineBreak\",\n  \"WebkitLineBreak\",\n  \"MSLineBreak\",\n  \"OLineBreak\",\n  \"lineHeight\",\n  \"MozLineHeight\",\n  \"WebkitLineHeight\",\n  \"MSLineHeight\",\n  \"OLineHeight\",\n  \"listStyle\",\n  \"MozListStyle\",\n  \"WebkitListStyle\",\n  \"MSListStyle\",\n  \"OListStyle\",\n  \"listStyleImage\",\n  \"MozListStyleImage\",\n  \"WebkitListStyleImage\",\n  \"MSListStyleImage\",\n  \"OListStyleImage\",\n  \"listStylePosition\",\n  \"MozListStylePosition\",\n  \"WebkitListStylePosition\",\n  \"MSListStylePosition\",\n  \"OListStylePosition\",\n  \"listStyleType\",\n  \"MozListStyleType\",\n  \"WebkitListStyleType\",\n  \"MSListStyleType\",\n  \"OListStyleType\",\n  \"margin\",\n  \"MozMargin\",\n  \"WebkitMargin\",\n  \"MSMargin\",\n  \"OMargin\",\n  \"marginBlockEnd\",\n  \"MozMarginBlockEnd\",\n  \"WebkitMarginBlockEnd\",\n  \"MSMarginBlockEnd\",\n  \"OMarginBlockEnd\",\n  \"marginBlockStart\",\n  \"MozMarginBlockStart\",\n  \"WebkitMarginBlockStart\",\n  \"MSMarginBlockStart\",\n  \"OMarginBlockStart\",\n  \"marginBottom\",\n  \"MozMarginBottom\",\n  \"WebkitMarginBottom\",\n  \"MSMarginBottom\",\n  \"OMarginBottom\",\n  \"marginInlineEnd\",\n  \"MozMarginInlineEnd\",\n  \"WebkitMarginInlineEnd\",\n  \"MSMarginInlineEnd\",\n  \"OMarginInlineEnd\",\n  \"marginInlineStart\",\n  \"MozMarginInlineStart\",\n  \"WebkitMarginInlineStart\",\n  \"MSMarginInlineStart\",\n  \"OMarginInlineStart\",\n  \"marginLeft\",\n  \"MozMarginLeft\",\n  \"WebkitMarginLeft\",\n  \"MSMarginLeft\",\n  \"OMarginLeft\",\n  \"marginRight\",\n  \"MozMarginRight\",\n  \"WebkitMarginRight\",\n  \"MSMarginRight\",\n  \"OMarginRight\",\n  \"marginTop\",\n  \"MozMarginTop\",\n  \"WebkitMarginTop\",\n  \"MSMarginTop\",\n  \"OMarginTop\",\n  \"mask\",\n  \"MozMask\",\n  \"WebkitMask\",\n  \"MSMask\",\n  \"OMask\",\n  \"maskClip\",\n  \"MozMaskClip\",\n  \"WebkitMaskClip\",\n  \"MSMaskClip\",\n  \"OMaskClip\",\n  \"maskComposite\",\n  \"MozMaskComposite\",\n  \"WebkitMaskComposite\",\n  \"MSMaskComposite\",\n  \"OMaskComposite\",\n  \"maskImage\",\n  \"MozMaskImage\",\n  \"WebkitMaskImage\",\n  \"MSMaskImage\",\n  \"OMaskImage\",\n  \"maskMode\",\n  \"MozMaskMode\",\n  \"WebkitMaskMode\",\n  \"MSMaskMode\",\n  \"OMaskMode\",\n  \"maskOrigin\",\n  \"MozMaskOrigin\",\n  \"WebkitMaskOrigin\",\n  \"MSMaskOrigin\",\n  \"OMaskOrigin\",\n  \"maskPosition\",\n  \"MozMaskPosition\",\n  \"WebkitMaskPosition\",\n  \"MSMaskPosition\",\n  \"OMaskPosition\",\n  \"maskRepeat\",\n  \"MozMaskRepeat\",\n  \"WebkitMaskRepeat\",\n  \"MSMaskRepeat\",\n  \"OMaskRepeat\",\n  \"maskSize\",\n  \"MozMaskSize\",\n  \"WebkitMaskSize\",\n  \"MSMaskSize\",\n  \"OMaskSize\",\n  \"maskType\",\n  \"MozMaskType\",\n  \"WebkitMaskType\",\n  \"MSMaskType\",\n  \"OMaskType\",\n  \"maxHeight\",\n  \"MozMaxHeight\",\n  \"WebkitMaxHeight\",\n  \"MSMaxHeight\",\n  \"OMaxHeight\",\n  \"maxWidth\",\n  \"MozMaxWidth\",\n  \"WebkitMaxWidth\",\n  \"MSMaxWidth\",\n  \"OMaxWidth\",\n  \"minBlockSize\",\n  \"MozMinBlockSize\",\n  \"WebkitMinBlockSize\",\n  \"MSMinBlockSize\",\n  \"OMinBlockSize\",\n  \"minHeight\",\n  \"MozMinHeight\",\n  \"WebkitMinHeight\",\n  \"MSMinHeight\",\n  \"OMinHeight\",\n  \"minInlineSize\",\n  \"MozMinInlineSize\",\n  \"WebkitMinInlineSize\",\n  \"MSMinInlineSize\",\n  \"OMinInlineSize\",\n  \"minWidth\",\n  \"MozMinWidth\",\n  \"WebkitMinWidth\",\n  \"MSMinWidth\",\n  \"OMinWidth\",\n  \"mixBlendMode\",\n  \"MozMixBlendMode\",\n  \"WebkitMixBlendMode\",\n  \"MSMixBlendMode\",\n  \"OMixBlendMode\",\n  \"mm\",\n  \"MozMm\",\n  \"WebkitMm\",\n  \"MSMm\",\n  \"OMm\",\n  \"ms\",\n  \"MozMs\",\n  \"WebkitMs\",\n  \"MSMs\",\n  \"OMs\",\n  \"objectFit\",\n  \"MozObjectFit\",\n  \"WebkitObjectFit\",\n  \"MSObjectFit\",\n  \"OObjectFit\",\n  \"objectPosition\",\n  \"MozObjectPosition\",\n  \"WebkitObjectPosition\",\n  \"MSObjectPosition\",\n  \"OObjectPosition\",\n  \"offsetBlockEnd\",\n  \"MozOffsetBlockEnd\",\n  \"WebkitOffsetBlockEnd\",\n  \"MSOffsetBlockEnd\",\n  \"OOffsetBlockEnd\",\n  \"offsetBlockStart\",\n  \"MozOffsetBlockStart\",\n  \"WebkitOffsetBlockStart\",\n  \"MSOffsetBlockStart\",\n  \"OOffsetBlockStart\",\n  \"offsetInlineEnd\",\n  \"MozOffsetInlineEnd\",\n  \"WebkitOffsetInlineEnd\",\n  \"MSOffsetInlineEnd\",\n  \"OOffsetInlineEnd\",\n  \"offsetInlineStart\",\n  \"MozOffsetInlineStart\",\n  \"WebkitOffsetInlineStart\",\n  \"MSOffsetInlineStart\",\n  \"OOffsetInlineStart\",\n  \"opacity\",\n  \"MozOpacity\",\n  \"WebkitOpacity\",\n  \"MSOpacity\",\n  \"OOpacity\",\n  \"order\",\n  \"MozOrder\",\n  \"WebkitOrder\",\n  \"MSOrder\",\n  \"OOrder\",\n  \"orphans\",\n  \"MozOrphans\",\n  \"WebkitOrphans\",\n  \"MSOrphans\",\n  \"OOrphans\",\n  \"outline\",\n  \"MozOutline\",\n  \"WebkitOutline\",\n  \"MSOutline\",\n  \"OOutline\",\n  \"outlineColor\",\n  \"MozOutlineColor\",\n  \"WebkitOutlineColor\",\n  \"MSOutlineColor\",\n  \"OOutlineColor\",\n  \"outlineOffset\",\n  \"MozOutlineOffset\",\n  \"WebkitOutlineOffset\",\n  \"MSOutlineOffset\",\n  \"OOutlineOffset\",\n  \"outlineStyle\",\n  \"MozOutlineStyle\",\n  \"WebkitOutlineStyle\",\n  \"MSOutlineStyle\",\n  \"OOutlineStyle\",\n  \"outlineWidth\",\n  \"MozOutlineWidth\",\n  \"WebkitOutlineWidth\",\n  \"MSOutlineWidth\",\n  \"OOutlineWidth\",\n  \"overflow\",\n  \"MozOverflow\",\n  \"WebkitOverflow\",\n  \"MSOverflow\",\n  \"OOverflow\",\n  \"overflowWrap\",\n  \"MozOverflowWrap\",\n  \"WebkitOverflowWrap\",\n  \"MSOverflowWrap\",\n  \"OOverflowWrap\",\n  \"overflowX\",\n  \"MozOverflowX\",\n  \"WebkitOverflowX\",\n  \"MSOverflowX\",\n  \"OOverflowX\",\n  \"overflowY\",\n  \"MozOverflowY\",\n  \"WebkitOverflowY\",\n  \"MSOverflowY\",\n  \"OOverflowY\",\n  \"padding\",\n  \"MozPadding\",\n  \"WebkitPadding\",\n  \"MSPadding\",\n  \"OPadding\",\n  \"paddingBlockEnd\",\n  \"MozPaddingBlockEnd\",\n  \"WebkitPaddingBlockEnd\",\n  \"MSPaddingBlockEnd\",\n  \"OPaddingBlockEnd\",\n  \"paddingBlockStart\",\n  \"MozPaddingBlockStart\",\n  \"WebkitPaddingBlockStart\",\n  \"MSPaddingBlockStart\",\n  \"OPaddingBlockStart\",\n  \"paddingBottom\",\n  \"MozPaddingBottom\",\n  \"WebkitPaddingBottom\",\n  \"MSPaddingBottom\",\n  \"OPaddingBottom\",\n  \"paddingInlineEnd\",\n  \"MozPaddingInlineEnd\",\n  \"WebkitPaddingInlineEnd\",\n  \"MSPaddingInlineEnd\",\n  \"OPaddingInlineEnd\",\n  \"paddingInlineStart\",\n  \"MozPaddingInlineStart\",\n  \"WebkitPaddingInlineStart\",\n  \"MSPaddingInlineStart\",\n  \"OPaddingInlineStart\",\n  \"paddingLeft\",\n  \"MozPaddingLeft\",\n  \"WebkitPaddingLeft\",\n  \"MSPaddingLeft\",\n  \"OPaddingLeft\",\n  \"paddingRight\",\n  \"MozPaddingRight\",\n  \"WebkitPaddingRight\",\n  \"MSPaddingRight\",\n  \"OPaddingRight\",\n  \"paddingTop\",\n  \"MozPaddingTop\",\n  \"WebkitPaddingTop\",\n  \"MSPaddingTop\",\n  \"OPaddingTop\",\n  \"pageBreakAfter\",\n  \"MozPageBreakAfter\",\n  \"WebkitPageBreakAfter\",\n  \"MSPageBreakAfter\",\n  \"OPageBreakAfter\",\n  \"pageBreakBefore\",\n  \"MozPageBreakBefore\",\n  \"WebkitPageBreakBefore\",\n  \"MSPageBreakBefore\",\n  \"OPageBreakBefore\",\n  \"pageBreakInside\",\n  \"MozPageBreakInside\",\n  \"WebkitPageBreakInside\",\n  \"MSPageBreakInside\",\n  \"OPageBreakInside\",\n  \"pc\",\n  \"MozPc\",\n  \"WebkitPc\",\n  \"MSPc\",\n  \"OPc\",\n  \"perspective\",\n  \"MozPerspective\",\n  \"WebkitPerspective\",\n  \"MSPerspective\",\n  \"OPerspective\",\n  \"perspectiveOrigin\",\n  \"MozPerspectiveOrigin\",\n  \"WebkitPerspectiveOrigin\",\n  \"MSPerspectiveOrigin\",\n  \"OPerspectiveOrigin\",\n  \"pointerEvents\",\n  \"MozPointerEvents\",\n  \"WebkitPointerEvents\",\n  \"MSPointerEvents\",\n  \"OPointerEvents\",\n  \"position\",\n  \"MozPosition\",\n  \"WebkitPosition\",\n  \"MSPosition\",\n  \"OPosition\",\n  \"pt\",\n  \"MozPt\",\n  \"WebkitPt\",\n  \"MSPt\",\n  \"OPt\",\n  \"px\",\n  \"MozPx\",\n  \"WebkitPx\",\n  \"MSPx\",\n  \"OPx\",\n  \"q\",\n  \"MozQ\",\n  \"WebkitQ\",\n  \"MSQ\",\n  \"OQ\",\n  \"quotes\",\n  \"MozQuotes\",\n  \"WebkitQuotes\",\n  \"MSQuotes\",\n  \"OQuotes\",\n  \"rad\",\n  \"MozRad\",\n  \"WebkitRad\",\n  \"MSRad\",\n  \"ORad\",\n  \"rem\",\n  \"MozRem\",\n  \"WebkitRem\",\n  \"MSRem\",\n  \"ORem\",\n  \"resize\",\n  \"MozResize\",\n  \"WebkitResize\",\n  \"MSResize\",\n  \"OResize\",\n  \"revert\",\n  \"MozRevert\",\n  \"WebkitRevert\",\n  \"MSRevert\",\n  \"ORevert\",\n  \"right\",\n  \"MozRight\",\n  \"WebkitRight\",\n  \"MSRight\",\n  \"ORight\",\n  \"rubyAlign\",\n  \"MozRubyAlign\",\n  \"WebkitRubyAlign\",\n  \"MSRubyAlign\",\n  \"ORubyAlign\",\n  \"rubyMerge\",\n  \"MozRubyMerge\",\n  \"WebkitRubyMerge\",\n  \"MSRubyMerge\",\n  \"ORubyMerge\",\n  \"rubyPosition\",\n  \"MozRubyPosition\",\n  \"WebkitRubyPosition\",\n  \"MSRubyPosition\",\n  \"ORubyPosition\",\n  \"s\",\n  \"MozS\",\n  \"WebkitS\",\n  \"MSS\",\n  \"OS\",\n  \"scrollBehavior\",\n  \"MozScrollBehavior\",\n  \"WebkitScrollBehavior\",\n  \"MSScrollBehavior\",\n  \"OScrollBehavior\",\n  \"scrollSnapCoordinate\",\n  \"MozScrollSnapCoordinate\",\n  \"WebkitScrollSnapCoordinate\",\n  \"MSScrollSnapCoordinate\",\n  \"OScrollSnapCoordinate\",\n  \"scrollSnapDestination\",\n  \"MozScrollSnapDestination\",\n  \"WebkitScrollSnapDestination\",\n  \"MSScrollSnapDestination\",\n  \"OScrollSnapDestination\",\n  \"scrollSnapType\",\n  \"MozScrollSnapType\",\n  \"WebkitScrollSnapType\",\n  \"MSScrollSnapType\",\n  \"OScrollSnapType\",\n  \"shapeImageThreshold\",\n  \"MozShapeImageThreshold\",\n  \"WebkitShapeImageThreshold\",\n  \"MSShapeImageThreshold\",\n  \"OShapeImageThreshold\",\n  \"shapeMargin\",\n  \"MozShapeMargin\",\n  \"WebkitShapeMargin\",\n  \"MSShapeMargin\",\n  \"OShapeMargin\",\n  \"shapeOutside\",\n  \"MozShapeOutside\",\n  \"WebkitShapeOutside\",\n  \"MSShapeOutside\",\n  \"OShapeOutside\",\n  \"tabSize\",\n  \"MozTabSize\",\n  \"WebkitTabSize\",\n  \"MSTabSize\",\n  \"OTabSize\",\n  \"tableLayout\",\n  \"MozTableLayout\",\n  \"WebkitTableLayout\",\n  \"MSTableLayout\",\n  \"OTableLayout\",\n  \"textAlign\",\n  \"MozTextAlign\",\n  \"WebkitTextAlign\",\n  \"MSTextAlign\",\n  \"OTextAlign\",\n  \"textAlignLast\",\n  \"MozTextAlignLast\",\n  \"WebkitTextAlignLast\",\n  \"MSTextAlignLast\",\n  \"OTextAlignLast\",\n  \"textCombineUpright\",\n  \"MozTextCombineUpright\",\n  \"WebkitTextCombineUpright\",\n  \"MSTextCombineUpright\",\n  \"OTextCombineUpright\",\n  \"textDecoration\",\n  \"MozTextDecoration\",\n  \"WebkitTextDecoration\",\n  \"MSTextDecoration\",\n  \"OTextDecoration\",\n  \"textDecorationColor\",\n  \"MozTextDecorationColor\",\n  \"WebkitTextDecorationColor\",\n  \"MSTextDecorationColor\",\n  \"OTextDecorationColor\",\n  \"textDecorationLine\",\n  \"MozTextDecorationLine\",\n  \"WebkitTextDecorationLine\",\n  \"MSTextDecorationLine\",\n  \"OTextDecorationLine\",\n  \"textDecorationStyle\",\n  \"MozTextDecorationStyle\",\n  \"WebkitTextDecorationStyle\",\n  \"MSTextDecorationStyle\",\n  \"OTextDecorationStyle\",\n  \"textEmphasis\",\n  \"MozTextEmphasis\",\n  \"WebkitTextEmphasis\",\n  \"MSTextEmphasis\",\n  \"OTextEmphasis\",\n  \"textEmphasisColor\",\n  \"MozTextEmphasisColor\",\n  \"WebkitTextEmphasisColor\",\n  \"MSTextEmphasisColor\",\n  \"OTextEmphasisColor\",\n  \"textEmphasisPosition\",\n  \"MozTextEmphasisPosition\",\n  \"WebkitTextEmphasisPosition\",\n  \"MSTextEmphasisPosition\",\n  \"OTextEmphasisPosition\",\n  \"textEmphasisStyle\",\n  \"MozTextEmphasisStyle\",\n  \"WebkitTextEmphasisStyle\",\n  \"MSTextEmphasisStyle\",\n  \"OTextEmphasisStyle\",\n  \"textIndent\",\n  \"MozTextIndent\",\n  \"WebkitTextIndent\",\n  \"MSTextIndent\",\n  \"OTextIndent\",\n  \"textOrientation\",\n  \"MozTextOrientation\",\n  \"WebkitTextOrientation\",\n  \"MSTextOrientation\",\n  \"OTextOrientation\",\n  \"textOverflow\",\n  \"MozTextOverflow\",\n  \"WebkitTextOverflow\",\n  \"MSTextOverflow\",\n  \"OTextOverflow\",\n  \"textRendering\",\n  \"MozTextRendering\",\n  \"WebkitTextRendering\",\n  \"MSTextRendering\",\n  \"OTextRendering\",\n  \"textShadow\",\n  \"MozTextShadow\",\n  \"WebkitTextShadow\",\n  \"MSTextShadow\",\n  \"OTextShadow\",\n  \"textTransform\",\n  \"MozTextTransform\",\n  \"WebkitTextTransform\",\n  \"MSTextTransform\",\n  \"OTextTransform\",\n  \"textUnderlinePosition\",\n  \"MozTextUnderlinePosition\",\n  \"WebkitTextUnderlinePosition\",\n  \"MSTextUnderlinePosition\",\n  \"OTextUnderlinePosition\",\n  \"top\",\n  \"MozTop\",\n  \"WebkitTop\",\n  \"MSTop\",\n  \"OTop\",\n  \"touchAction\",\n  \"MozTouchAction\",\n  \"WebkitTouchAction\",\n  \"MSTouchAction\",\n  \"OTouchAction\",\n  \"transform\",\n  \"MozTransform\",\n  \"WebkitTransform\",\n  \"msTransform\",\n  \"OTransform\",\n  \"transformBox\",\n  \"MozTransformBox\",\n  \"WebkitTransformBox\",\n  \"MSTransformBox\",\n  \"OTransformBox\",\n  \"transformOrigin\",\n  \"MozTransformOrigin\",\n  \"WebkitTransformOrigin\",\n  \"MSTransformOrigin\",\n  \"OTransformOrigin\",\n  \"transformStyle\",\n  \"MozTransformStyle\",\n  \"WebkitTransformStyle\",\n  \"MSTransformStyle\",\n  \"OTransformStyle\",\n  \"transition\",\n  \"MozTransition\",\n  \"WebkitTransition\",\n  \"MSTransition\",\n  \"OTransition\",\n  \"transitionDelay\",\n  \"MozTransitionDelay\",\n  \"WebkitTransitionDelay\",\n  \"MSTransitionDelay\",\n  \"OTransitionDelay\",\n  \"transitionDuration\",\n  \"MozTransitionDuration\",\n  \"WebkitTransitionDuration\",\n  \"MSTransitionDuration\",\n  \"OTransitionDuration\",\n  \"transitionProperty\",\n  \"MozTransitionProperty\",\n  \"WebkitTransitionProperty\",\n  \"MSTransitionProperty\",\n  \"OTransitionProperty\",\n  \"transitionTimingFunction\",\n  \"MozTransitionTimingFunction\",\n  \"WebkitTransitionTimingFunction\",\n  \"MSTransitionTimingFunction\",\n  \"OTransitionTimingFunction\",\n  \"turn\",\n  \"MozTurn\",\n  \"WebkitTurn\",\n  \"MSTurn\",\n  \"OTurn\",\n  \"unicodeBidi\",\n  \"MozUnicodeBidi\",\n  \"WebkitUnicodeBidi\",\n  \"MSUnicodeBidi\",\n  \"OUnicodeBidi\",\n  \"unset\",\n  \"MozUnset\",\n  \"WebkitUnset\",\n  \"MSUnset\",\n  \"OUnset\",\n  \"verticalAlign\",\n  \"MozVerticalAlign\",\n  \"WebkitVerticalAlign\",\n  \"MSVerticalAlign\",\n  \"OVerticalAlign\",\n  \"vh\",\n  \"MozVh\",\n  \"WebkitVh\",\n  \"MSVh\",\n  \"OVh\",\n  \"visibility\",\n  \"MozVisibility\",\n  \"WebkitVisibility\",\n  \"MSVisibility\",\n  \"OVisibility\",\n  \"vmax\",\n  \"MozVmax\",\n  \"WebkitVmax\",\n  \"MSVmax\",\n  \"OVmax\",\n  \"vmin\",\n  \"MozVmin\",\n  \"WebkitVmin\",\n  \"MSVmin\",\n  \"OVmin\",\n  \"vw\",\n  \"MozVw\",\n  \"WebkitVw\",\n  \"MSVw\",\n  \"OVw\",\n  \"whiteSpace\",\n  \"MozWhiteSpace\",\n  \"WebkitWhiteSpace\",\n  \"MSWhiteSpace\",\n  \"OWhiteSpace\",\n  \"widows\",\n  \"MozWidows\",\n  \"WebkitWidows\",\n  \"MSWidows\",\n  \"OWidows\",\n  \"width\",\n  \"MozWidth\",\n  \"WebkitWidth\",\n  \"MSWidth\",\n  \"OWidth\",\n  \"willChange\",\n  \"MozWillChange\",\n  \"WebkitWillChange\",\n  \"MSWillChange\",\n  \"OWillChange\",\n  \"wordBreak\",\n  \"MozWordBreak\",\n  \"WebkitWordBreak\",\n  \"MSWordBreak\",\n  \"OWordBreak\",\n  \"wordSpacing\",\n  \"MozWordSpacing\",\n  \"WebkitWordSpacing\",\n  \"MSWordSpacing\",\n  \"OWordSpacing\",\n  \"wordWrap\",\n  \"MozWordWrap\",\n  \"WebkitWordWrap\",\n  \"MSWordWrap\",\n  \"OWordWrap\",\n  \"writingMode\",\n  \"MozWritingMode\",\n  \"WebkitWritingMode\",\n  \"MSWritingMode\",\n  \"OWritingMode\",\n  \"zIndex\",\n  \"MozZIndex\",\n  \"WebkitZIndex\",\n  \"MSZIndex\",\n  \"OZIndex\",\n  \"fontSize\",\n  \"MozFontSize\",\n  \"WebkitFontSize\",\n  \"MSFontSize\",\n  \"OFontSize\",\n  \"flex\",\n  \"MozFlex\",\n  \"WebkitFlex\",\n  \"MSFlex\",\n  \"OFlex\",\n  \"fr\",\n  \"MozFr\",\n  \"WebkitFr\",\n  \"MSFr\",\n  \"OFr\",\n  \"overflowScrolling\",\n  \"MozOverflowScrolling\",\n  \"WebkitOverflowScrolling\",\n  \"MSOverflowScrolling\",\n  \"OOverflowScrolling\",\n  \"userSelect\",\n  \"MozUserSelect\",\n  \"WebkitUserSelect\",\n  \"MSUserSelect\",\n  \"OUserSelect\"\n]\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.button-group_button-group_3_c2R {\\n    display: -webkit-inline-box;\\n    display: -webkit-inline-flex;\\n    display: -ms-inline-flexbox;\\n    display: inline-flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    padding: 0 .25rem;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"button-group\": \"button-group_button-group_3_c2R\",\n\t\"buttonGroup\": \"button-group_button-group_3_c2R\"\n};\nmodule.exports = exports;\n","var conversions = require(\"./conversions\");\n\nvar convert = function() {\n   return new Converter();\n}\n\nfor (var func in conversions) {\n  // export Raw versions\n  convert[func + \"Raw\"] =  (function(func) {\n    // accept array or plain args\n    return function(arg) {\n      if (typeof arg == \"number\")\n        arg = Array.prototype.slice.call(arguments);\n      return conversions[func](arg);\n    }\n  })(func);\n\n  var pair = /(\\w+)2(\\w+)/.exec(func),\n      from = pair[1],\n      to = pair[2];\n\n  // export rgb2hsl and [\"rgb\"][\"hsl\"]\n  convert[from] = convert[from] || {};\n\n  convert[from][to] = convert[func] = (function(func) { \n    return function(arg) {\n      if (typeof arg == \"number\")\n        arg = Array.prototype.slice.call(arguments);\n      \n      var val = conversions[func](arg);\n      if (typeof val == \"string\" || val === undefined)\n        return val; // keyword\n\n      for (var i = 0; i < val.length; i++)\n        val[i] = Math.round(val[i]);\n      return val;\n    }\n  })(func);\n}\n\n\n/* Converter does lazy conversion and caching */\nvar Converter = function() {\n   this.convs = {};\n};\n\n/* Either get the values for a space or\n  set the values for a space, depending on args */\nConverter.prototype.routeSpace = function(space, args) {\n   var values = args[0];\n   if (values === undefined) {\n      // color.rgb()\n      return this.getValues(space);\n   }\n   // color.rgb(10, 10, 10)\n   if (typeof values == \"number\") {\n      values = Array.prototype.slice.call(args);        \n   }\n\n   return this.setValues(space, values);\n};\n  \n/* Set the values for a space, invalidating cache */\nConverter.prototype.setValues = function(space, values) {\n   this.space = space;\n   this.convs = {};\n   this.convs[space] = values;\n   return this;\n};\n\n/* Get the values for a space. If there's already\n  a conversion for the space, fetch it, otherwise\n  compute it */\nConverter.prototype.getValues = function(space) {\n   var vals = this.convs[space];\n   if (!vals) {\n      var fspace = this.space,\n          from = this.convs[fspace];\n      vals = convert[fspace][space](from);\n\n      this.convs[space] = vals;\n   }\n  return vals;\n};\n\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\n   Converter.prototype[space] = function(vals) {\n      return this.routeSpace(space, arguments);\n   }\n});\n\nmodule.exports = convert;","/* MIT license */\n\nmodule.exports = {\n  rgb2hsl: rgb2hsl,\n  rgb2hsv: rgb2hsv,\n  rgb2hwb: rgb2hwb,\n  rgb2cmyk: rgb2cmyk,\n  rgb2keyword: rgb2keyword,\n  rgb2xyz: rgb2xyz,\n  rgb2lab: rgb2lab,\n  rgb2lch: rgb2lch,\n\n  hsl2rgb: hsl2rgb,\n  hsl2hsv: hsl2hsv,\n  hsl2hwb: hsl2hwb,\n  hsl2cmyk: hsl2cmyk,\n  hsl2keyword: hsl2keyword,\n\n  hsv2rgb: hsv2rgb,\n  hsv2hsl: hsv2hsl,\n  hsv2hwb: hsv2hwb,\n  hsv2cmyk: hsv2cmyk,\n  hsv2keyword: hsv2keyword,\n\n  hwb2rgb: hwb2rgb,\n  hwb2hsl: hwb2hsl,\n  hwb2hsv: hwb2hsv,\n  hwb2cmyk: hwb2cmyk,\n  hwb2keyword: hwb2keyword,\n\n  cmyk2rgb: cmyk2rgb,\n  cmyk2hsl: cmyk2hsl,\n  cmyk2hsv: cmyk2hsv,\n  cmyk2hwb: cmyk2hwb,\n  cmyk2keyword: cmyk2keyword,\n\n  keyword2rgb: keyword2rgb,\n  keyword2hsl: keyword2hsl,\n  keyword2hsv: keyword2hsv,\n  keyword2hwb: keyword2hwb,\n  keyword2cmyk: keyword2cmyk,\n  keyword2lab: keyword2lab,\n  keyword2xyz: keyword2xyz,\n\n  xyz2rgb: xyz2rgb,\n  xyz2lab: xyz2lab,\n  xyz2lch: xyz2lch,\n\n  lab2xyz: lab2xyz,\n  lab2rgb: lab2rgb,\n  lab2lch: lab2lch,\n\n  lch2lab: lch2lab,\n  lch2xyz: lch2xyz,\n  lch2rgb: lch2rgb\n}\n\n\nfunction rgb2hsl(rgb) {\n  var r = rgb[0]/255,\n      g = rgb[1]/255,\n      b = rgb[2]/255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      delta = max - min,\n      h, s, l;\n\n  if (max == min)\n    h = 0;\n  else if (r == max)\n    h = (g - b) / delta;\n  else if (g == max)\n    h = 2 + (b - r) / delta;\n  else if (b == max)\n    h = 4 + (r - g)/ delta;\n\n  h = Math.min(h * 60, 360);\n\n  if (h < 0)\n    h += 360;\n\n  l = (min + max) / 2;\n\n  if (max == min)\n    s = 0;\n  else if (l <= 0.5)\n    s = delta / (max + min);\n  else\n    s = delta / (2 - max - min);\n\n  return [h, s * 100, l * 100];\n}\n\nfunction rgb2hsv(rgb) {\n  var r = rgb[0],\n      g = rgb[1],\n      b = rgb[2],\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      delta = max - min,\n      h, s, v;\n\n  if (max == 0)\n    s = 0;\n  else\n    s = (delta/max * 1000)/10;\n\n  if (max == min)\n    h = 0;\n  else if (r == max)\n    h = (g - b) / delta;\n  else if (g == max)\n    h = 2 + (b - r) / delta;\n  else if (b == max)\n    h = 4 + (r - g) / delta;\n\n  h = Math.min(h * 60, 360);\n\n  if (h < 0)\n    h += 360;\n\n  v = ((max / 255) * 1000) / 10;\n\n  return [h, s, v];\n}\n\nfunction rgb2hwb(rgb) {\n  var r = rgb[0],\n      g = rgb[1],\n      b = rgb[2],\n      h = rgb2hsl(rgb)[0],\n      w = 1/255 * Math.min(r, Math.min(g, b)),\n      b = 1 - 1/255 * Math.max(r, Math.max(g, b));\n\n  return [h, w * 100, b * 100];\n}\n\nfunction rgb2cmyk(rgb) {\n  var r = rgb[0] / 255,\n      g = rgb[1] / 255,\n      b = rgb[2] / 255,\n      c, m, y, k;\n\n  k = Math.min(1 - r, 1 - g, 1 - b);\n  c = (1 - r - k) / (1 - k) || 0;\n  m = (1 - g - k) / (1 - k) || 0;\n  y = (1 - b - k) / (1 - k) || 0;\n  return [c * 100, m * 100, y * 100, k * 100];\n}\n\nfunction rgb2keyword(rgb) {\n  return reverseKeywords[JSON.stringify(rgb)];\n}\n\nfunction rgb2xyz(rgb) {\n  var r = rgb[0] / 255,\n      g = rgb[1] / 255,\n      b = rgb[2] / 255;\n\n  // assume sRGB\n  r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n  g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n  b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n  var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n  var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n  var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n  return [x * 100, y *100, z * 100];\n}\n\nfunction rgb2lab(rgb) {\n  var xyz = rgb2xyz(rgb),\n        x = xyz[0],\n        y = xyz[1],\n        z = xyz[2],\n        l, a, b;\n\n  x /= 95.047;\n  y /= 100;\n  z /= 108.883;\n\n  x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n  y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n  z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n  l = (116 * y) - 16;\n  a = 500 * (x - y);\n  b = 200 * (y - z);\n\n  return [l, a, b];\n}\n\nfunction rgb2lch(args) {\n  return lab2lch(rgb2lab(args));\n}\n\nfunction hsl2rgb(hsl) {\n  var h = hsl[0] / 360,\n      s = hsl[1] / 100,\n      l = hsl[2] / 100,\n      t1, t2, t3, rgb, val;\n\n  if (s == 0) {\n    val = l * 255;\n    return [val, val, val];\n  }\n\n  if (l < 0.5)\n    t2 = l * (1 + s);\n  else\n    t2 = l + s - l * s;\n  t1 = 2 * l - t2;\n\n  rgb = [0, 0, 0];\n  for (var i = 0; i < 3; i++) {\n    t3 = h + 1 / 3 * - (i - 1);\n    t3 < 0 && t3++;\n    t3 > 1 && t3--;\n\n    if (6 * t3 < 1)\n      val = t1 + (t2 - t1) * 6 * t3;\n    else if (2 * t3 < 1)\n      val = t2;\n    else if (3 * t3 < 2)\n      val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n    else\n      val = t1;\n\n    rgb[i] = val * 255;\n  }\n\n  return rgb;\n}\n\nfunction hsl2hsv(hsl) {\n  var h = hsl[0],\n      s = hsl[1] / 100,\n      l = hsl[2] / 100,\n      sv, v;\n\n  if(l === 0) {\n      // no need to do calc on black\n      // also avoids divide by 0 error\n      return [0, 0, 0];\n  }\n\n  l *= 2;\n  s *= (l <= 1) ? l : 2 - l;\n  v = (l + s) / 2;\n  sv = (2 * s) / (l + s);\n  return [h, sv * 100, v * 100];\n}\n\nfunction hsl2hwb(args) {\n  return rgb2hwb(hsl2rgb(args));\n}\n\nfunction hsl2cmyk(args) {\n  return rgb2cmyk(hsl2rgb(args));\n}\n\nfunction hsl2keyword(args) {\n  return rgb2keyword(hsl2rgb(args));\n}\n\n\nfunction hsv2rgb(hsv) {\n  var h = hsv[0] / 60,\n      s = hsv[1] / 100,\n      v = hsv[2] / 100,\n      hi = Math.floor(h) % 6;\n\n  var f = h - Math.floor(h),\n      p = 255 * v * (1 - s),\n      q = 255 * v * (1 - (s * f)),\n      t = 255 * v * (1 - (s * (1 - f))),\n      v = 255 * v;\n\n  switch(hi) {\n    case 0:\n      return [v, t, p];\n    case 1:\n      return [q, v, p];\n    case 2:\n      return [p, v, t];\n    case 3:\n      return [p, q, v];\n    case 4:\n      return [t, p, v];\n    case 5:\n      return [v, p, q];\n  }\n}\n\nfunction hsv2hsl(hsv) {\n  var h = hsv[0],\n      s = hsv[1] / 100,\n      v = hsv[2] / 100,\n      sl, l;\n\n  l = (2 - s) * v;\n  sl = s * v;\n  sl /= (l <= 1) ? l : 2 - l;\n  sl = sl || 0;\n  l /= 2;\n  return [h, sl * 100, l * 100];\n}\n\nfunction hsv2hwb(args) {\n  return rgb2hwb(hsv2rgb(args))\n}\n\nfunction hsv2cmyk(args) {\n  return rgb2cmyk(hsv2rgb(args));\n}\n\nfunction hsv2keyword(args) {\n  return rgb2keyword(hsv2rgb(args));\n}\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nfunction hwb2rgb(hwb) {\n  var h = hwb[0] / 360,\n      wh = hwb[1] / 100,\n      bl = hwb[2] / 100,\n      ratio = wh + bl,\n      i, v, f, n;\n\n  // wh + bl cant be > 1\n  if (ratio > 1) {\n    wh /= ratio;\n    bl /= ratio;\n  }\n\n  i = Math.floor(6 * h);\n  v = 1 - bl;\n  f = 6 * h - i;\n  if ((i & 0x01) != 0) {\n    f = 1 - f;\n  }\n  n = wh + f * (v - wh);  // linear interpolation\n\n  switch (i) {\n    default:\n    case 6:\n    case 0: r = v; g = n; b = wh; break;\n    case 1: r = n; g = v; b = wh; break;\n    case 2: r = wh; g = v; b = n; break;\n    case 3: r = wh; g = n; b = v; break;\n    case 4: r = n; g = wh; b = v; break;\n    case 5: r = v; g = wh; b = n; break;\n  }\n\n  return [r * 255, g * 255, b * 255];\n}\n\nfunction hwb2hsl(args) {\n  return rgb2hsl(hwb2rgb(args));\n}\n\nfunction hwb2hsv(args) {\n  return rgb2hsv(hwb2rgb(args));\n}\n\nfunction hwb2cmyk(args) {\n  return rgb2cmyk(hwb2rgb(args));\n}\n\nfunction hwb2keyword(args) {\n  return rgb2keyword(hwb2rgb(args));\n}\n\nfunction cmyk2rgb(cmyk) {\n  var c = cmyk[0] / 100,\n      m = cmyk[1] / 100,\n      y = cmyk[2] / 100,\n      k = cmyk[3] / 100,\n      r, g, b;\n\n  r = 1 - Math.min(1, c * (1 - k) + k);\n  g = 1 - Math.min(1, m * (1 - k) + k);\n  b = 1 - Math.min(1, y * (1 - k) + k);\n  return [r * 255, g * 255, b * 255];\n}\n\nfunction cmyk2hsl(args) {\n  return rgb2hsl(cmyk2rgb(args));\n}\n\nfunction cmyk2hsv(args) {\n  return rgb2hsv(cmyk2rgb(args));\n}\n\nfunction cmyk2hwb(args) {\n  return rgb2hwb(cmyk2rgb(args));\n}\n\nfunction cmyk2keyword(args) {\n  return rgb2keyword(cmyk2rgb(args));\n}\n\n\nfunction xyz2rgb(xyz) {\n  var x = xyz[0] / 100,\n      y = xyz[1] / 100,\n      z = xyz[2] / 100,\n      r, g, b;\n\n  r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n  g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n  b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n  // assume sRGB\n  r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n    : r = (r * 12.92);\n\n  g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n    : g = (g * 12.92);\n\n  b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n    : b = (b * 12.92);\n\n  r = Math.min(Math.max(0, r), 1);\n  g = Math.min(Math.max(0, g), 1);\n  b = Math.min(Math.max(0, b), 1);\n\n  return [r * 255, g * 255, b * 255];\n}\n\nfunction xyz2lab(xyz) {\n  var x = xyz[0],\n      y = xyz[1],\n      z = xyz[2],\n      l, a, b;\n\n  x /= 95.047;\n  y /= 100;\n  z /= 108.883;\n\n  x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n  y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n  z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n  l = (116 * y) - 16;\n  a = 500 * (x - y);\n  b = 200 * (y - z);\n\n  return [l, a, b];\n}\n\nfunction xyz2lch(args) {\n  return lab2lch(xyz2lab(args));\n}\n\nfunction lab2xyz(lab) {\n  var l = lab[0],\n      a = lab[1],\n      b = lab[2],\n      x, y, z, y2;\n\n  if (l <= 8) {\n    y = (l * 100) / 903.3;\n    y2 = (7.787 * (y / 100)) + (16 / 116);\n  } else {\n    y = 100 * Math.pow((l + 16) / 116, 3);\n    y2 = Math.pow(y / 100, 1/3);\n  }\n\n  x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);\n\n  z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);\n\n  return [x, y, z];\n}\n\nfunction lab2lch(lab) {\n  var l = lab[0],\n      a = lab[1],\n      b = lab[2],\n      hr, h, c;\n\n  hr = Math.atan2(b, a);\n  h = hr * 360 / 2 / Math.PI;\n  if (h < 0) {\n    h += 360;\n  }\n  c = Math.sqrt(a * a + b * b);\n  return [l, c, h];\n}\n\nfunction lab2rgb(args) {\n  return xyz2rgb(lab2xyz(args));\n}\n\nfunction lch2lab(lch) {\n  var l = lch[0],\n      c = lch[1],\n      h = lch[2],\n      a, b, hr;\n\n  hr = h / 360 * 2 * Math.PI;\n  a = c * Math.cos(hr);\n  b = c * Math.sin(hr);\n  return [l, a, b];\n}\n\nfunction lch2xyz(args) {\n  return lab2xyz(lch2lab(args));\n}\n\nfunction lch2rgb(args) {\n  return lab2rgb(lch2lab(args));\n}\n\nfunction keyword2rgb(keyword) {\n  return cssKeywords[keyword];\n}\n\nfunction keyword2hsl(args) {\n  return rgb2hsl(keyword2rgb(args));\n}\n\nfunction keyword2hsv(args) {\n  return rgb2hsv(keyword2rgb(args));\n}\n\nfunction keyword2hwb(args) {\n  return rgb2hwb(keyword2rgb(args));\n}\n\nfunction keyword2cmyk(args) {\n  return rgb2cmyk(keyword2rgb(args));\n}\n\nfunction keyword2lab(args) {\n  return rgb2lab(keyword2rgb(args));\n}\n\nfunction keyword2xyz(args) {\n  return rgb2xyz(keyword2rgb(args));\n}\n\nvar cssKeywords = {\n  aliceblue:  [240,248,255],\n  antiquewhite: [250,235,215],\n  aqua: [0,255,255],\n  aquamarine: [127,255,212],\n  azure:  [240,255,255],\n  beige:  [245,245,220],\n  bisque: [255,228,196],\n  black:  [0,0,0],\n  blanchedalmond: [255,235,205],\n  blue: [0,0,255],\n  blueviolet: [138,43,226],\n  brown:  [165,42,42],\n  burlywood:  [222,184,135],\n  cadetblue:  [95,158,160],\n  chartreuse: [127,255,0],\n  chocolate:  [210,105,30],\n  coral:  [255,127,80],\n  cornflowerblue: [100,149,237],\n  cornsilk: [255,248,220],\n  crimson:  [220,20,60],\n  cyan: [0,255,255],\n  darkblue: [0,0,139],\n  darkcyan: [0,139,139],\n  darkgoldenrod:  [184,134,11],\n  darkgray: [169,169,169],\n  darkgreen:  [0,100,0],\n  darkgrey: [169,169,169],\n  darkkhaki:  [189,183,107],\n  darkmagenta:  [139,0,139],\n  darkolivegreen: [85,107,47],\n  darkorange: [255,140,0],\n  darkorchid: [153,50,204],\n  darkred:  [139,0,0],\n  darksalmon: [233,150,122],\n  darkseagreen: [143,188,143],\n  darkslateblue:  [72,61,139],\n  darkslategray:  [47,79,79],\n  darkslategrey:  [47,79,79],\n  darkturquoise:  [0,206,209],\n  darkviolet: [148,0,211],\n  deeppink: [255,20,147],\n  deepskyblue:  [0,191,255],\n  dimgray:  [105,105,105],\n  dimgrey:  [105,105,105],\n  dodgerblue: [30,144,255],\n  firebrick:  [178,34,34],\n  floralwhite:  [255,250,240],\n  forestgreen:  [34,139,34],\n  fuchsia:  [255,0,255],\n  gainsboro:  [220,220,220],\n  ghostwhite: [248,248,255],\n  gold: [255,215,0],\n  goldenrod:  [218,165,32],\n  gray: [128,128,128],\n  green:  [0,128,0],\n  greenyellow:  [173,255,47],\n  grey: [128,128,128],\n  honeydew: [240,255,240],\n  hotpink:  [255,105,180],\n  indianred:  [205,92,92],\n  indigo: [75,0,130],\n  ivory:  [255,255,240],\n  khaki:  [240,230,140],\n  lavender: [230,230,250],\n  lavenderblush:  [255,240,245],\n  lawngreen:  [124,252,0],\n  lemonchiffon: [255,250,205],\n  lightblue:  [173,216,230],\n  lightcoral: [240,128,128],\n  lightcyan:  [224,255,255],\n  lightgoldenrodyellow: [250,250,210],\n  lightgray:  [211,211,211],\n  lightgreen: [144,238,144],\n  lightgrey:  [211,211,211],\n  lightpink:  [255,182,193],\n  lightsalmon:  [255,160,122],\n  lightseagreen:  [32,178,170],\n  lightskyblue: [135,206,250],\n  lightslategray: [119,136,153],\n  lightslategrey: [119,136,153],\n  lightsteelblue: [176,196,222],\n  lightyellow:  [255,255,224],\n  lime: [0,255,0],\n  limegreen:  [50,205,50],\n  linen:  [250,240,230],\n  magenta:  [255,0,255],\n  maroon: [128,0,0],\n  mediumaquamarine: [102,205,170],\n  mediumblue: [0,0,205],\n  mediumorchid: [186,85,211],\n  mediumpurple: [147,112,219],\n  mediumseagreen: [60,179,113],\n  mediumslateblue:  [123,104,238],\n  mediumspringgreen:  [0,250,154],\n  mediumturquoise:  [72,209,204],\n  mediumvioletred:  [199,21,133],\n  midnightblue: [25,25,112],\n  mintcream:  [245,255,250],\n  mistyrose:  [255,228,225],\n  moccasin: [255,228,181],\n  navajowhite:  [255,222,173],\n  navy: [0,0,128],\n  oldlace:  [253,245,230],\n  olive:  [128,128,0],\n  olivedrab:  [107,142,35],\n  orange: [255,165,0],\n  orangered:  [255,69,0],\n  orchid: [218,112,214],\n  palegoldenrod:  [238,232,170],\n  palegreen:  [152,251,152],\n  paleturquoise:  [175,238,238],\n  palevioletred:  [219,112,147],\n  papayawhip: [255,239,213],\n  peachpuff:  [255,218,185],\n  peru: [205,133,63],\n  pink: [255,192,203],\n  plum: [221,160,221],\n  powderblue: [176,224,230],\n  purple: [128,0,128],\n  rebeccapurple: [102, 51, 153],\n  red:  [255,0,0],\n  rosybrown:  [188,143,143],\n  royalblue:  [65,105,225],\n  saddlebrown:  [139,69,19],\n  salmon: [250,128,114],\n  sandybrown: [244,164,96],\n  seagreen: [46,139,87],\n  seashell: [255,245,238],\n  sienna: [160,82,45],\n  silver: [192,192,192],\n  skyblue:  [135,206,235],\n  slateblue:  [106,90,205],\n  slategray:  [112,128,144],\n  slategrey:  [112,128,144],\n  snow: [255,250,250],\n  springgreen:  [0,255,127],\n  steelblue:  [70,130,180],\n  tan:  [210,180,140],\n  teal: [0,128,128],\n  thistle:  [216,191,216],\n  tomato: [255,99,71],\n  turquoise:  [64,224,208],\n  violet: [238,130,238],\n  wheat:  [245,222,179],\n  white:  [255,255,255],\n  whitesmoke: [245,245,245],\n  yellow: [255,255,0],\n  yellowgreen:  [154,205,50]\n};\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n  reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _cssVendor = require(\"css-vendor\");\n\nvar cssVendor = _interopRequireWildcard(_cssVendor);\n\nvar _debug = require(\"debug\");\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nvar _lodash = require(\"lodash.throttle\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _layout = require(\"./layout\");\n\nvar _layout2 = _interopRequireDefault(_layout);\n\nvar _onResize = require(\"./on-resize\");\n\nvar _onResize2 = _interopRequireDefault(_onResize);\n\nvar _platform = require(\"./platform\");\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nvar _tip = require(\"./tip\");\n\nvar _tip2 = _interopRequireDefault(_tip);\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar log = (0, _debug2.default)(\"react-popover\");\n\nvar supportedCSSValue = _utils2.default.clientOnly(cssVendor.supportedValue);\n\nvar jsprefix = function jsprefix(x) {\n  return \"\" + cssVendor.prefix.js + x;\n};\n\nvar cssprefix = function cssprefix(x) {\n  return \"\" + cssVendor.prefix.css + x;\n};\n\nvar cssvalue = function cssvalue(prop, value) {\n  return supportedCSSValue(prop, value) || cssprefix(value);\n};\n\nvar coreStyle = {\n  position: \"absolute\",\n  top: 0,\n  left: 0,\n  display: cssvalue(\"display\", \"flex\")\n};\n\nvar faces = {\n  above: \"down\",\n  right: \"left\",\n  below: \"up\",\n  left: \"right\"\n\n  /* Flow mappings. Each map maps the flow domain to another domain. */\n\n};var flowToTipTranslations = {\n  row: \"translateY\",\n  column: \"translateX\"\n};\n\nvar flowToPopoverTranslations = {\n  row: \"translateX\",\n  column: \"translateY\"\n};\n\nvar Popover = function (_React$Component) {\n  _inherits(Popover, _React$Component);\n\n  function Popover(props) {\n    _classCallCheck(this, Popover);\n\n    var _this = _possibleConstructorReturn(this, (Popover.__proto__ || Object.getPrototypeOf(Popover)).call(this, props));\n\n    _this.checkTargetReposition = function () {\n      if (_this.measureTargetBounds()) _this.resolvePopoverLayout();\n    };\n\n    _this.checkForOuterAction = function (event) {\n      var isOuterAction = !_this.containerEl.contains(event.target) && !_this.targetEl.contains(event.target);\n      if (isOuterAction) _this.props.onOuterAction(event);\n    };\n\n    _this.onTargetResize = function () {\n      log(\"Recalculating layout because _target_ resized!\");\n      _this.measureTargetBounds();\n      _this.resolvePopoverLayout();\n    };\n\n    _this.onPopoverResize = function () {\n      log(\"Recalculating layout because _popover_ resized!\");\n      _this.measurePopoverSize();\n      _this.resolvePopoverLayout();\n    };\n\n    _this.onFrameScroll = function () {\n      log(\"Recalculating layout because _frame_ scrolled!\");\n      _this.measureTargetBounds();\n      _this.resolvePopoverLayout();\n    };\n\n    _this.onFrameResize = function () {\n      log(\"Recalculating layout because _frame_ resized!\");\n      _this.measureFrameBounds();\n      _this.resolvePopoverLayout();\n    };\n\n    _this.getContainerNodeRef = function (containerEl) {\n      Object.assign(_this, { containerEl: containerEl });\n    };\n\n    _this.state = {\n      standing: \"above\",\n      exited: !_this.props.isOpen, // for animation-dependent rendering, should popover close/open?\n      exiting: false, // for tracking in-progress animations\n      toggle: _this.props.isOpen || false // for business logic tracking, should popover close/open?\n    };\n    return _this;\n  }\n\n  _createClass(Popover, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      /* Our component needs a DOM Node reference to the child so that it can be\n      measured so that we can correctly layout the popover. We do not have any\n      control over the child so cannot leverage refs. We could wrap our own\n      primitive component around the child but that could lead to breaking the\n      uses layout (e.g. the child is a flex item). Leveraging findDOMNode seems\n      to be the only functional solution, despite all the general warnings not to\n      use it. We have a legitimate use-case. */\n      // eslint-disable-next-line\n      this.targetEl = _reactDom2.default.findDOMNode(this);\n      if (this.props.isOpen) this.enter();\n    }\n  }, {\n    key: \"componentWillReceiveProps\",\n    value: function componentWillReceiveProps(propsNext) {\n      //log(`Component received props!`, propsNext)\n      var willOpen = !this.props.isOpen && propsNext.isOpen;\n      var willClose = this.props.isOpen && !propsNext.isOpen;\n\n      if (willOpen) this.open();else if (willClose) this.close();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(propsPrev, statePrev) {\n      //log(`Component did update!`)\n      var didOpen = !statePrev.toggle && this.state.toggle;\n      var didClose = statePrev.toggle && !this.state.toggle;\n\n      if (didOpen) this.enter();else if (didClose) this.exit();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      /* If the Popover is unmounted while animating,\n      clear the animation so no setState occured */\n      this.animateExitStop();\n      /* If the Popover was never opened then then tracking\n      initialization never took place and so calling untrack\n      would be an error. Also see issue 55. */\n      if (this.hasTracked) this.untrackPopover();\n    }\n  }, {\n    key: \"resolvePopoverLayout\",\n    value: function resolvePopoverLayout() {\n      /* Find the optimal zone to position self. Measure the size of each zone and use the one with\n      the greatest area. */\n\n      var pickerSettings = {\n        preferPlace: this.props.preferPlace,\n        place: this.props.place\n\n        /* This is a kludge that solves a general problem very specifically for Popover.\n        The problem is subtle. When Popover positioning changes such that it resolves at\n        a different orientation, its Size will change because the Tip will toggle between\n        extending Height or Width. The general problem of course is that calculating\n        zone positioning based on current size is non-trivial if the Size can change once\n        resolved to a different zone. Infinite recursion can be triggered as we noted here:\n        https://github.com/littlebits/react-popover/issues/18. As an example of how this\n        could happen in another way: Imagine the user changes the CSS styling of the popover\n        based on whether it was `row` or `column` flow. TODO: Find a solution to generally\n        solve this problem so that the user is free to change the Popover styles in any\n        way at any time for any arbitrary trigger. There may be value in investigating the\n        http://overconstrained.io community for its general layout system via the\n        constraint-solver Cassowary. */\n      };if (this.zone) this.size[this.zone.flow === \"row\" ? \"h\" : \"w\"] += this.props.tipSize;\n      var zone = _layout2.default.pickZone(pickerSettings, this.frameBounds, this.targetBounds, this.size);\n      if (this.zone) this.size[this.zone.flow === \"row\" ? \"h\" : \"w\"] -= this.props.tipSize;\n\n      var tb = this.targetBounds;\n      this.zone = zone;\n      log(\"zone\", zone);\n\n      this.setState({\n        standing: zone.standing\n      });\n\n      var axis = _layout2.default.axes[zone.flow];\n      log(\"axes\", axis);\n\n      var dockingEdgeBufferLength = Math.round(getComputedStyle(this.bodyEl).borderRadius.slice(0, -2)) || 0;\n      var scrollSize = _layout2.default.El.calcScrollSize(this.frameEl);\n      scrollSize.main = scrollSize[axis.main.size];\n      scrollSize.cross = scrollSize[axis.cross.size];\n\n      /* When positioning self on the cross-axis do not exceed frame bounds. The strategy to achieve\n      this is thus: First position cross-axis self to the cross-axis-center of the the target. Then,\n      offset self by the amount that self is past the boundaries of frame. */\n      var pos = _layout2.default.calcRelPos(zone, tb, this.size);\n\n      /* Offset allows users to control the distance betweent the tip and the target. */\n      pos[axis.main.start] += this.props.offset * zone.order;\n\n      /* Constrain containerEl Position within frameEl. Try not to penetrate a visually-pleasing buffer from\n      frameEl. `frameBuffer` length is based on tipSize and its offset. */\n\n      var frameBuffer = this.props.tipSize + this.props.offset;\n      var hangingBufferLength = dockingEdgeBufferLength * 2 + this.props.tipSize * 2 + frameBuffer;\n      var frameCrossStart = this.frameBounds[axis.cross.start];\n      var frameCrossEnd = this.frameBounds[axis.cross.end];\n      var frameCrossLength = this.frameBounds[axis.cross.size];\n      var frameCrossInnerLength = frameCrossLength - frameBuffer * 2;\n      var frameCrossInnerStart = frameCrossStart + frameBuffer;\n      var frameCrossInnerEnd = frameCrossEnd - frameBuffer;\n      var popoverCrossStart = pos[axis.cross.start];\n      var popoverCrossEnd = pos[axis.cross.end];\n\n      /* If the popover dose not fit into frameCrossLength then just position it to the `frameCrossStart`.\n      popoverCrossLength` will now be forced to overflow into the `Frame` */\n      if (pos.crossLength > frameCrossLength) {\n        log(\"popoverCrossLength does not fit frame.\");\n        pos[axis.cross.start] = 0;\n\n        /* If the `popoverCrossStart` is forced beyond some threshold of `targetCrossLength` then bound\n        it (`popoverCrossStart`). */\n      } else if (tb[axis.cross.end] < hangingBufferLength) {\n        log(\"popoverCrossStart cannot hang any further without losing target.\");\n        pos[axis.cross.start] = tb[axis.cross.end] - hangingBufferLength;\n\n        /* checking if the cross start of the target area is within the frame and it makes sense\n        to try fitting popover into the frame. */\n      } else if (tb[axis.cross.start] > frameCrossInnerEnd) {\n        log(\"popoverCrossStart cannot hang any further without losing target.\");\n        pos[axis.cross.start] = tb[axis.cross.start] - this.size[axis.cross.size];\n\n        /* If the `popoverCrossStart` does not fit within the inner frame (honouring buffers) then\n        just center the popover in the remaining `frameCrossLength`. */\n      } else if (pos.crossLength > frameCrossInnerLength) {\n        log(\"popoverCrossLength does not fit within buffered frame.\");\n        pos[axis.cross.start] = (frameCrossLength - pos.crossLength) / 2;\n      } else if (popoverCrossStart < frameCrossInnerStart) {\n        log(\"popoverCrossStart cannot reverse without exceeding frame.\");\n        pos[axis.cross.start] = frameCrossInnerStart;\n      } else if (popoverCrossEnd > frameCrossInnerEnd) {\n        log(\"popoverCrossEnd cannot travel without exceeding frame.\");\n        pos[axis.cross.start] = pos[axis.cross.start] - (pos[axis.cross.end] - frameCrossInnerEnd);\n      }\n\n      /* So far the link position has been calculated relative to the target. To calculate the absolute\n      position we need to factor the `Frame``s scroll position */\n\n      pos[axis.cross.start] += scrollSize.cross;\n      pos[axis.main.start] += scrollSize.main;\n\n      /* Apply `flow` and `order` styles. This can impact subsequent measurements of height and width\n      of the container. When tip changes orientation position due to changes from/to `row`/`column`\n      width`/`height` will be impacted. Our layout monitoring will catch these cases and automatically\n      recalculate layout. */\n      if (this.containerEl) {\n        this.containerEl.style.flexFlow = zone.flow;\n        this.containerEl.style[jsprefix(\"FlexFlow\")] = this.containerEl.style.flexFlow;\n      }\n      this.bodyEl.style.order = zone.order;\n      this.bodyEl.style[jsprefix(\"Order\")] = this.bodyEl.style.order;\n\n      /* Apply Absolute Positioning. */\n\n      log(\"pos\", pos);\n      if (this.containerEl) {\n        this.containerEl.style.top = pos.y + \"px\";\n        this.containerEl.style.left = pos.x + \"px\";\n      }\n\n      /* Calculate Tip Position */\n\n      var tipCrossPos =\n      /* Get the absolute tipCrossCenter. Tip is positioned relative to containerEl\n      but it aims at targetCenter which is positioned relative to frameEl... we\n      need to cancel the containerEl positioning so as to hit our intended position. */\n      _layout2.default.centerOfBoundsFromBounds(zone.flow, \"cross\", tb, pos) +\n      /* centerOfBounds does not account for scroll so we need to manually add that\n      here. */\n      scrollSize.cross -\n      /* Center tip relative to self. We do not have to calcualte half-of-tip-size since tip-size\n      specifies the length from base to tip which is half of total length already. */\n      this.props.tipSize;\n\n      if (tipCrossPos < dockingEdgeBufferLength) tipCrossPos = dockingEdgeBufferLength;else if (tipCrossPos > pos.crossLength - dockingEdgeBufferLength - this.props.tipSize * 2) {\n        tipCrossPos = pos.crossLength - dockingEdgeBufferLength - this.props.tipSize * 2;\n      }\n\n      this.tipEl.style.transform = flowToTipTranslations[zone.flow] + \"(\" + tipCrossPos + \"px)\";\n      this.tipEl.style[jsprefix(\"Transform\")] = this.tipEl.style.transform;\n    }\n  }, {\n    key: \"measurePopoverSize\",\n    value: function measurePopoverSize() {\n      this.size = _layout2.default.El.calcSize(this.containerEl);\n    }\n  }, {\n    key: \"measureTargetBounds\",\n    value: function measureTargetBounds() {\n      var newTargetBounds = _layout2.default.El.calcBounds(this.targetEl);\n\n      if (this.targetBounds && _layout2.default.equalCoords(this.targetBounds, newTargetBounds)) {\n        return false;\n      }\n\n      this.targetBounds = newTargetBounds;\n      return true;\n    }\n  }, {\n    key: \"open\",\n    value: function open() {\n      if (this.state.exiting) this.animateExitStop();\n      this.setState({ toggle: true, exited: false });\n    }\n  }, {\n    key: \"close\",\n    value: function close() {\n      this.setState({ toggle: false });\n    }\n  }, {\n    key: \"enter\",\n    value: function enter() {\n      if (_platform2.default.isServer) return;\n      log(\"enter!\");\n      this.trackPopover();\n      this.animateEnter();\n    }\n  }, {\n    key: \"exit\",\n    value: function exit() {\n      log(\"exit!\");\n      this.animateExit();\n      this.untrackPopover();\n    }\n  }, {\n    key: \"animateExitStop\",\n    value: function animateExitStop() {\n      clearTimeout(this.exitingAnimationTimer1);\n      clearTimeout(this.exitingAnimationTimer2);\n      this.setState({ exiting: false });\n    }\n  }, {\n    key: \"animateExit\",\n    value: function animateExit() {\n      var _this2 = this;\n\n      this.setState({ exiting: true });\n      this.exitingAnimationTimer2 = setTimeout(function () {\n        setTimeout(function () {\n          if (_this2.containerEl) {\n            _this2.containerEl.style.transform = flowToPopoverTranslations[_this2.zone.flow] + \"(\" + _this2.zone.order * 50 + \"px)\";\n            _this2.containerEl.style.opacity = \"0\";\n          }\n        }, 0);\n      }, 0);\n\n      this.exitingAnimationTimer1 = setTimeout(function () {\n        _this2.setState({ exited: true, exiting: false });\n      }, this.props.enterExitTransitionDurationMs);\n    }\n  }, {\n    key: \"animateEnter\",\n    value: function animateEnter() {\n      /* Prepare `entering` style so that we can then animate it toward `entered`. */\n\n      this.containerEl.style.transform = flowToPopoverTranslations[this.zone.flow] + \"(\" + this.zone.order * 50 + \"px)\";\n      this.containerEl.style[jsprefix(\"Transform\")] = this.containerEl.style.transform;\n      this.containerEl.style.opacity = \"0\";\n\n      /* After initial layout apply transition animations. */\n      /* Hack: http://stackoverflow.com/questions/3485365/how-can-i-force-webkit-to-redraw-repaint-to-propagate-style-changes */\n      this.containerEl.offsetHeight;\n\n      /* If enterExitTransitionDurationMs is falsy, tip animation should be also disabled */\n      if (this.props.enterExitTransitionDurationMs) {\n        this.tipEl.style.transition = \"transform 150ms ease-in\";\n        this.tipEl.style[jsprefix(\"Transition\")] = cssprefix(\"transform\") + \" 150ms ease-in\";\n      }\n      this.containerEl.style.transitionProperty = \"top, left, opacity, transform\";\n      this.containerEl.style.transitionDuration = this.props.enterExitTransitionDurationMs + \"ms\";\n      this.containerEl.style.transitionTimingFunction = \"cubic-bezier(0.230, 1.000, 0.320, 1.000)\";\n      this.containerEl.style.opacity = \"1\";\n      this.containerEl.style.transform = \"translateY(0)\";\n      this.containerEl.style[jsprefix(\"Transform\")] = this.containerEl.style.transform;\n    }\n  }, {\n    key: \"trackPopover\",\n    value: function trackPopover() {\n      var minScrollRefreshIntervalMs = 200;\n      var minResizeRefreshIntervalMs = 200;\n\n      /* Get references to DOM elements. */\n\n      this.bodyEl = this.containerEl.querySelector(\".Popover-body\");\n      this.tipEl = this.containerEl.querySelector(\".Popover-tip\");\n\n      /* Note: frame is hardcoded to window now but we think it will\n      be a nice feature in the future to allow other frames to be used\n      such as local elements that further constrain the popover`s world. */\n\n      this.frameEl = _platform2.default.window;\n      this.hasTracked = true;\n\n      /* Set a general interval for checking if target position changed. There is no way\n      to know this information without polling. */\n      if (this.props.refreshIntervalMs) {\n        this.checkLayoutInterval = setInterval(this.checkTargetReposition, this.props.refreshIntervalMs);\n      }\n\n      /* Watch for boundary changes in all deps, and when one of them changes, recalculate layout.\n      This layout monitoring must be bound immediately because a layout recalculation can recursively\n      cause a change in boundaries. So if we did a one-time force-layout before watching boundaries\n      our final position calculations could be wrong. See comments in resolver function for details\n      about which parts can trigger recursive recalculation. */\n\n      this.onFrameScroll = (0, _lodash2.default)(this.onFrameScroll, minScrollRefreshIntervalMs);\n      this.onFrameResize = (0, _lodash2.default)(this.onFrameResize, minResizeRefreshIntervalMs);\n      this.onPopoverResize = (0, _lodash2.default)(this.onPopoverResize, minResizeRefreshIntervalMs);\n      this.onTargetResize = (0, _lodash2.default)(this.onTargetResize, minResizeRefreshIntervalMs);\n\n      this.frameEl.addEventListener(\"scroll\", this.onFrameScroll);\n      _onResize2.default.on(this.frameEl, this.onFrameResize);\n      _onResize2.default.on(this.containerEl, this.onPopoverResize);\n      _onResize2.default.on(this.targetEl, this.onTargetResize);\n\n      /* Track user actions on the page. Anything that occurs _outside_ the Popover boundaries\n      should close the Popover. */\n\n      _platform2.default.document.addEventListener(\"mousedown\", this.checkForOuterAction);\n      _platform2.default.document.addEventListener(\"touchstart\", this.checkForOuterAction);\n\n      /* Kickstart layout at first boot. */\n\n      this.measurePopoverSize();\n      this.measureFrameBounds();\n      this.measureTargetBounds();\n      this.resolvePopoverLayout();\n    }\n  }, {\n    key: \"untrackPopover\",\n    value: function untrackPopover() {\n      clearInterval(this.checkLayoutInterval);\n      this.frameEl.removeEventListener(\"scroll\", this.onFrameScroll);\n      _onResize2.default.off(this.frameEl, this.onFrameResize);\n      _onResize2.default.off(this.containerEl, this.onPopoverResize);\n      _onResize2.default.off(this.targetEl, this.onTargetResize);\n      _platform2.default.document.removeEventListener(\"mousedown\", this.checkForOuterAction);\n      _platform2.default.document.removeEventListener(\"touchstart\", this.checkForOuterAction);\n      this.hasTracked = false;\n    }\n  }, {\n    key: \"measureFrameBounds\",\n    value: function measureFrameBounds() {\n      this.frameBounds = _layout2.default.El.calcBounds(this.frameEl);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _props = this.props,\n          _props$className = _props.className,\n          className = _props$className === undefined ? \"\" : _props$className,\n          _props$style = _props.style,\n          style = _props$style === undefined ? {} : _props$style,\n          tipSize = _props.tipSize;\n      var standing = this.state.standing;\n\n\n      var popoverProps = {\n        className: \"Popover Popover-\" + standing + \" \" + className,\n        style: _extends({}, coreStyle, style)\n      };\n\n      var popover = this.state.exited ? null : _react2.default.createElement(\n        \"div\",\n        _extends({ ref: this.getContainerNodeRef }, popoverProps),\n        _react2.default.createElement(\"div\", { className: \"Popover-body\", children: this.props.body }),\n        _react2.default.createElement(_tip2.default, { direction: faces[standing], size: tipSize })\n      );\n      return [this.props.children, _platform2.default.isClient && _reactDom2.default.createPortal(popover, this.props.appendTarget)];\n    }\n  }]);\n\n  return Popover;\n}(_react2.default.Component);\n\nPopover.propTypes = {\n  body: _propTypes2.default.node.isRequired,\n  children: _propTypes2.default.element.isRequired,\n  appendTarget: _propTypes2.default.object,\n  className: _propTypes2.default.string,\n  enterExitTransitionDurationMs: _propTypes2.default.number,\n  isOpen: _propTypes2.default.bool,\n  offset: _propTypes2.default.number,\n  place: _propTypes2.default.oneOf(_layout2.default.validTypeValues),\n  preferPlace: _propTypes2.default.oneOf(_layout2.default.validTypeValues),\n  refreshIntervalMs: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.bool]),\n  style: _propTypes2.default.object,\n  tipSize: _propTypes2.default.number,\n  onOuterAction: _propTypes2.default.func\n};\nPopover.defaultProps = {\n  tipSize: 7,\n  preferPlace: null,\n  place: null,\n  offset: 4,\n  isOpen: false,\n  onOuterAction: _utils2.default.noop,\n  enterExitTransitionDurationMs: 500,\n  children: null,\n  refreshIntervalMs: 200,\n  appendTarget: _platform2.default.isClient ? _platform2.default.document.body : null\n};\nexports.default = Popover;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.supportedValue = exports.supportedProperty = exports.prefix = undefined;\n\nvar _prefix = require('./prefix');\n\nvar _prefix2 = _interopRequireDefault(_prefix);\n\nvar _supportedProperty = require('./supported-property');\n\nvar _supportedProperty2 = _interopRequireDefault(_supportedProperty);\n\nvar _supportedValue = require('./supported-value');\n\nvar _supportedValue2 = _interopRequireDefault(_supportedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nexports['default'] = {\n  prefix: _prefix2['default'],\n  supportedProperty: _supportedProperty2['default'],\n  supportedValue: _supportedValue2['default']\n}; /**\n    * CSS Vendor prefix detection and property feature testing.\n    *\n    * @copyright Oleg Slobodskoi 2015\n    * @website https://github.com/jsstyles/css-vendor\n    * @license MIT\n    */\n\nexports.prefix = _prefix2['default'];\nexports.supportedProperty = _supportedProperty2['default'];\nexports.supportedValue = _supportedValue2['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports['default'] = supportedProperty;\n\nvar _isInBrowser = require('is-in-browser');\n\nvar _isInBrowser2 = _interopRequireDefault(_isInBrowser);\n\nvar _prefix = require('./prefix');\n\nvar _prefix2 = _interopRequireDefault(_prefix);\n\nvar _camelize = require('./camelize');\n\nvar _camelize2 = _interopRequireDefault(_camelize);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar el = void 0;\nvar cache = {};\n\nif (_isInBrowser2['default']) {\n  el = document.createElement('p');\n\n  /**\n   * We test every property on vendor prefix requirement.\n   * Once tested, result is cached. It gives us up to 70% perf boost.\n   * http://jsperf.com/element-style-object-access-vs-plain-object\n   *\n   * Prefill cache with known css properties to reduce amount of\n   * properties we need to feature test at runtime.\n   * http://davidwalsh.name/vendor-prefix\n   */\n  var computed = window.getComputedStyle(document.documentElement, '');\n  for (var key in computed) {\n    if (!isNaN(key)) cache[computed[key]] = computed[key];\n  }\n}\n\n/**\n * Test if a property is supported, returns supported property with vendor\n * prefix if required. Returns `false` if not supported.\n *\n * @param {String} prop dash separated\n * @return {String|Boolean}\n * @api public\n */\nfunction supportedProperty(prop) {\n  // For server-side rendering.\n  if (!el) return prop;\n\n  // We have not tested this prop yet, lets do the test.\n  if (cache[prop] != null) return cache[prop];\n\n  // Camelization is required because we can't test using\n  // css syntax for e.g. in FF.\n  // Test if property is supported as it is.\n  if ((0, _camelize2['default'])(prop) in el.style) {\n    cache[prop] = prop;\n  }\n  // Test if property is supported with vendor prefix.\n  else if (_prefix2['default'].js + (0, _camelize2['default'])('-' + prop) in el.style) {\n      cache[prop] = _prefix2['default'].css + prop;\n    } else {\n      cache[prop] = false;\n    }\n\n  return cache[prop];\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports['default'] = camelize;\nvar regExp = /[-\\s]+(.)?/g;\n\n/**\n * Convert dash separated strings to camel cased.\n *\n * @param {String} str\n * @return {String}\n */\nfunction camelize(str) {\n  return str.replace(regExp, toUpper);\n}\n\nfunction toUpper(match, c) {\n  return c ? c.toUpperCase() : '';\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports['default'] = supportedValue;\n\nvar _isInBrowser = require('is-in-browser');\n\nvar _isInBrowser2 = _interopRequireDefault(_isInBrowser);\n\nvar _prefix = require('./prefix');\n\nvar _prefix2 = _interopRequireDefault(_prefix);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar cache = {};\nvar el = void 0;\n\nif (_isInBrowser2['default']) el = document.createElement('p');\n\n/**\n * Returns prefixed value if needed. Returns `false` if value is not supported.\n *\n * @param {String} property\n * @param {String} value\n * @return {String|Boolean}\n * @api public\n */\nfunction supportedValue(property, value) {\n  // For server-side rendering.\n  if (!el) return value;\n\n  // It is a string or a number as a string like '1'.\n  // We want only prefixable values here.\n  if (typeof value !== 'string' || !isNaN(parseInt(value, 10))) return value;\n\n  var cacheKey = property + value;\n\n  if (cache[cacheKey] != null) return cache[cacheKey];\n\n  // IE can even throw an error in some cases, for e.g. style.content = 'bar'\n  try {\n    // Test value as it is.\n    el.style[property] = value;\n  } catch (err) {\n    cache[cacheKey] = false;\n    return false;\n  }\n\n  // Value is supported as it is.\n  if (el.style[property] !== '') {\n    cache[cacheKey] = value;\n  } else {\n    // Test value with vendor prefix.\n    value = _prefix2['default'].css + value;\n\n    // Hardcode test to convert \"flex\" to \"-ms-flexbox\" for IE10.\n    if (value === '-ms-flex') value = '-ms-flexbox';\n\n    el.style[property] = value;\n\n    // Value is supported with vendor prefix.\n    if (el.style[property] !== '') cache[cacheKey] = value;\n  }\n\n  if (!cache[cacheKey]) cache[cacheKey] = false;\n\n  // Reset style value.\n  el.style[property] = '';\n\n  return cache[cacheKey];\n}","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n               && 'undefined' != typeof chrome.storage\n                  ? chrome.storage.local\n                  : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n  'lightseagreen',\n  'forestgreen',\n  'goldenrod',\n  'dodgerblue',\n  'darkorchid',\n  'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n  // NB: In an Electron preload script, document will be defined but not fully\n  // initialized. Since we know we're in Chrome, we'll just detect this case\n  // explicitly\n  if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n    return true;\n  }\n\n  // is webkit? http://stackoverflow.com/a/16459606/376773\n  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n  return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n    // is firebug? http://stackoverflow.com/a/398120/376773\n    (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n    // is firefox >= v31?\n    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n    // double check webkit in userAgent just in case we are in a worker\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n  try {\n    return JSON.stringify(v);\n  } catch (err) {\n    return '[UnexpectedJSONParseError]: ' + err.message;\n  }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n  var useColors = this.useColors;\n\n  args[0] = (useColors ? '%c' : '')\n    + this.namespace\n    + (useColors ? ' %c' : ' ')\n    + args[0]\n    + (useColors ? '%c ' : ' ')\n    + '+' + exports.humanize(this.diff);\n\n  if (!useColors) return;\n\n  var c = 'color: ' + this.color;\n  args.splice(1, 0, c, 'color: inherit')\n\n  // the final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-zA-Z%]/g, function(match) {\n    if ('%%' === match) return;\n    index++;\n    if ('%c' === match) {\n      // we only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n\n  args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n  // this hackery is required for IE8/9, where\n  // the `console.log` function doesn't have 'apply'\n  return 'object' === typeof console\n    && console.log\n    && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n  try {\n    if (null == namespaces) {\n      exports.storage.removeItem('debug');\n    } else {\n      exports.storage.debug = namespaces;\n    }\n  } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n  var r;\n  try {\n    r = exports.storage.debug;\n  } catch(e) {}\n\n  // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n  if (!r && typeof process !== 'undefined' && 'env' in process) {\n    r = process.env.DEBUG;\n  }\n\n  return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n  try {\n    return window.localStorage;\n  } catch (e) {}\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n  var hash = 0, i;\n\n  for (i in namespace) {\n    hash  = ((hash << 5) - hash) + namespace.charCodeAt(i);\n    hash |= 0; // Convert to 32bit integer\n  }\n\n  return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n  function debug() {\n    // disabled?\n    if (!debug.enabled) return;\n\n    var self = debug;\n\n    // set `diff` timestamp\n    var curr = +new Date();\n    var ms = curr - (prevTime || curr);\n    self.diff = ms;\n    self.prev = prevTime;\n    self.curr = curr;\n    prevTime = curr;\n\n    // turn the `arguments` into a proper Array\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n\n    args[0] = exports.coerce(args[0]);\n\n    if ('string' !== typeof args[0]) {\n      // anything else let's inspect with %O\n      args.unshift('%O');\n    }\n\n    // apply any `formatters` transformations\n    var index = 0;\n    args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n      // if we encounter an escaped % then don't increase the array index\n      if (match === '%%') return match;\n      index++;\n      var formatter = exports.formatters[format];\n      if ('function' === typeof formatter) {\n        var val = args[index];\n        match = formatter.call(self, val);\n\n        // now we need to remove `args[index]` since it's inlined in the `format`\n        args.splice(index, 1);\n        index--;\n      }\n      return match;\n    });\n\n    // apply env-specific formatting (colors, etc.)\n    exports.formatArgs.call(self, args);\n\n    var logFn = debug.log || exports.log || console.log.bind(console);\n    logFn.apply(self, args);\n  }\n\n  debug.namespace = namespace;\n  debug.enabled = exports.enabled(namespace);\n  debug.useColors = exports.useColors();\n  debug.color = selectColor(namespace);\n\n  // env-specific initialization logic for debug instances\n  if ('function' === typeof exports.init) {\n    exports.init(debug);\n  }\n\n  return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n  exports.save(namespaces);\n\n  exports.names = [];\n  exports.skips = [];\n\n  var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n  var len = split.length;\n\n  for (var i = 0; i < len; i++) {\n    if (!split[i]) continue; // ignore empty strings\n    namespaces = split[i].replace(/\\*/g, '.*?');\n    if (namespaces[0] === '-') {\n      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n    } else {\n      exports.names.push(new RegExp('^' + namespaces + '$'));\n    }\n  }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n  exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n  var i, len;\n  for (i = 0, len = exports.skips.length; i < len; i++) {\n    if (exports.skips[i].test(name)) {\n      return false;\n    }\n  }\n  for (i = 0, len = exports.names.length; i < len; i++) {\n    if (exports.names[i].test(name)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n  if (val instanceof Error) return val.stack || val.message;\n  return val;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isNaN(val) === false) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  if (ms >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (ms >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (ms >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (ms >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  return plural(ms, d, 'day') ||\n    plural(ms, h, 'hour') ||\n    plural(ms, m, 'minute') ||\n    plural(ms, s, 'second') ||\n    ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n  if (ms < n) {\n    return;\n  }\n  if (ms < n * 1.5) {\n    return Math.floor(ms / n) + ' ' + name;\n  }\n  return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","/**\n * lodash 3.0.4 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar debounce = require('lodash.debounce');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed invocations. Provide an options object to indicate\n * that `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. Subsequent calls to the throttled function return the\n * result of the last `func` call.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the throttled function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=true] Specify invoking on the leading\n *  edge of the timeout.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n *  edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // avoid excessively updating the position while scrolling\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n *   'trailing': false\n * }));\n *\n * // cancel a trailing throttled call\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (options === false) {\n    leading = false;\n  } else if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n  // Avoid a V8 JIT bug in Chrome 19-20.\n  // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = throttle;\n","/**\n * lodash 3.1.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar getNative = require('lodash._getnative');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeNow = getNative(Date, 'now');\n\n/**\n * Gets the number of milliseconds that have elapsed since the Unix epoch\n * (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @category Date\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => logs the number of milliseconds it took for the deferred function to be invoked\n */\nvar now = nativeNow || function() {\n  return new Date().getTime();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed invocations. Provide an options object to indicate that `func`\n * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n * Subsequent calls to the debounced function return the result of the last\n * `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify invoking on the leading\n *  edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n *  delayed before it is invoked.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n *  edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // ensure `batchLog` is invoked once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', _.debounce(batchLog, 250, {\n *   'maxWait': 1000\n * }));\n *\n * // cancel a debounced call\n * var todoChanges = _.debounce(batchLog, 1000);\n * Object.observe(models.todo, todoChanges);\n *\n * Object.observe(models, function(changes) {\n *   if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n *     todoChanges.cancel();\n *   }\n * }, ['delete']);\n *\n * // ...at some point `models.todo` is changed\n * models.todo.completed = true;\n *\n * // ...before 1 second has passed `models.todo` is deleted\n * // which cancels the debounced `todoChanges` call\n * delete models.todo;\n */\nfunction debounce(func, wait, options) {\n  var args,\n      maxTimeoutId,\n      result,\n      stamp,\n      thisArg,\n      timeoutId,\n      trailingCall,\n      lastCalled = 0,\n      maxWait = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = wait < 0 ? 0 : (+wait || 0);\n  if (options === true) {\n    var leading = true;\n    trailing = false;\n  } else if (isObject(options)) {\n    leading = !!options.leading;\n    maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function cancel() {\n    if (timeoutId) {\n      clearTimeout(timeoutId);\n    }\n    if (maxTimeoutId) {\n      clearTimeout(maxTimeoutId);\n    }\n    lastCalled = 0;\n    maxTimeoutId = timeoutId = trailingCall = undefined;\n  }\n\n  function complete(isCalled, id) {\n    if (id) {\n      clearTimeout(id);\n    }\n    maxTimeoutId = timeoutId = trailingCall = undefined;\n    if (isCalled) {\n      lastCalled = now();\n      result = func.apply(thisArg, args);\n      if (!timeoutId && !maxTimeoutId) {\n        args = thisArg = undefined;\n      }\n    }\n  }\n\n  function delayed() {\n    var remaining = wait - (now() - stamp);\n    if (remaining <= 0 || remaining > wait) {\n      complete(trailingCall, maxTimeoutId);\n    } else {\n      timeoutId = setTimeout(delayed, remaining);\n    }\n  }\n\n  function maxDelayed() {\n    complete(trailing, timeoutId);\n  }\n\n  function debounced() {\n    args = arguments;\n    stamp = now();\n    thisArg = this;\n    trailingCall = trailing && (timeoutId || !leading);\n\n    if (maxWait === false) {\n      var leadingCall = leading && !timeoutId;\n    } else {\n      if (!maxTimeoutId && !leading) {\n        lastCalled = stamp;\n      }\n      var remaining = maxWait - (stamp - lastCalled),\n          isCalled = remaining <= 0 || remaining > maxWait;\n\n      if (isCalled) {\n        if (maxTimeoutId) {\n          maxTimeoutId = clearTimeout(maxTimeoutId);\n        }\n        lastCalled = stamp;\n        result = func.apply(thisArg, args);\n      }\n      else if (!maxTimeoutId) {\n        maxTimeoutId = setTimeout(maxDelayed, remaining);\n      }\n    }\n    if (isCalled && timeoutId) {\n      timeoutId = clearTimeout(timeoutId);\n    }\n    else if (!timeoutId && wait !== maxWait) {\n      timeoutId = setTimeout(delayed, wait);\n    }\n    if (leadingCall) {\n      isCalled = true;\n      result = func.apply(thisArg, args);\n    }\n    if (isCalled && !timeoutId && !maxTimeoutId) {\n      args = thisArg = undefined;\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n  // Avoid a V8 JIT bug in Chrome 19-20.\n  // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = debounce;\n","/**\n * lodash 3.9.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = object == null ? undefined : object[key];\n  return isNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in older versions of Chrome and Safari which return 'function' for regexes\n  // and Safari 8 equivalents which return 'object' for typed array constructors.\n  return isObject(value) && objToString.call(value) == funcTag;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n  // Avoid a V8 JIT bug in Chrome 19-20.\n  // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n  if (value == null) {\n    return false;\n  }\n  if (isFunction(value)) {\n    return reIsNative.test(fnToString.call(value));\n  }\n  return isObjectLike(value) && reIsHostCtor.test(value);\n}\n\nmodule.exports = getNative;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.equalCoords = exports.doesFitWithin = exports.centerOfBoundsFromBounds = exports.centerOfBounds = exports.centerOfSize = exports.axes = exports.pickZone = exports.place = exports.calcRelPos = exports.validTypeValues = exports.types = exports.El = undefined;\n\nvar _platform = require(\"./platform\");\n\nvar _utils = require(\"./utils\");\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/* Axes System\n\nThis allows us to at-will work in a different orientation\nwithout having to manually keep track of knowing if we should be using\nx or y positions. */\n\nvar axes = {\n  row: {},\n  column: {}\n};\n\naxes.row.main = {\n  start: \"x\",\n  end: \"x2\",\n  size: \"w\"\n};\naxes.row.cross = {\n  start: \"y\",\n  end: \"y2\",\n  size: \"h\"\n};\naxes.column.main = axes.row.cross;\naxes.column.cross = axes.row.main;\n\nvar types = [{ name: \"side\", values: [\"start\", \"end\"] }, { name: \"standing\", values: [\"above\", \"right\", \"below\", \"left\"] }, { name: \"flow\", values: [\"column\", \"row\"] }];\n\nvar validTypeValues = types.reduce(function (xs, _ref) {\n  var values = _ref.values;\n  return xs.concat(values);\n}, []);\n\nvar centerOfSize = function centerOfSize(flow, axis, size) {\n  return size[axes[flow][axis].size] / 2;\n};\n\nvar centerOfBounds = function centerOfBounds(flow, axis, bounds) {\n  return bounds[axes[flow][axis].start] + bounds[axes[flow][axis].size] / 2;\n};\n\nvar centerOfBoundsFromBounds = function centerOfBoundsFromBounds(flow, axis, boundsTo, boundsFrom) {\n  return centerOfBounds(flow, axis, boundsTo) - boundsFrom[axes[flow][axis].start];\n};\n\nvar place = function place(flow, axis, align, bounds, size) {\n  var axisProps = axes[flow][axis];\n  return align === \"center\" ? centerOfBounds(flow, axis, bounds) - centerOfSize(flow, axis, size) : align === \"end\" ? bounds[axisProps.end] : align === \"start\" ? /* DOM rendering unfolds leftward. Therefore if the slave is positioned before\n                                                                                                                                                                  the master then the slave`s position must in addition be pulled back\n                                                                                                                                                                  by its [the slave`s] own length. */\n  bounds[axisProps.start] - size[axisProps.size] : null;\n};\n\n/* Element Layout Queries */\n\nvar El = {};\n\nEl.calcBounds = function (el) {\n  if (el === _platform.window) {\n    return {\n      x: 0,\n      y: 0,\n      x2: el.innerWidth,\n      y2: el.innerHeight,\n      w: el.innerWidth,\n      h: el.innerHeight\n    };\n  }\n\n  var b = el.getBoundingClientRect();\n\n  return {\n    x: b.left,\n    y: b.top,\n    x2: b.right,\n    y2: b.bottom,\n    w: b.right - b.left,\n    h: b.bottom - b.top\n  };\n};\n\nEl.calcSize = function (el) {\n  return el === _platform.window ? { w: el.innerWidth, h: el.innerHeight } : { w: el.offsetWidth, h: el.offsetHeight };\n};\n\nEl.calcScrollSize = function (el) {\n  return el === _platform.window ? {\n    w: el.scrollX || el.pageXOffset,\n    h: el.scrollY || el.pageYOffset\n  } : { w: el.scrollLeft, h: el.scrollTop\n\n    /* Misc Utilities */\n\n  };\n};var getPreferenceType = function getPreferenceType(preference) {\n  return types.reduce(function (found, type) {\n    return found ? found : type.values.indexOf(preference) !== -1 ? type.name : null;\n  }, null);\n};\n\n/* Dimension Fit Checks */\n\nvar fitWithinChecker = function fitWithinChecker(dimension) {\n  return function (domainSize, itemSize) {\n    return domainSize[dimension] >= itemSize[dimension];\n  };\n};\n\nvar doesWidthFitWithin = fitWithinChecker(\"w\");\nvar doesHeightFitWithin = fitWithinChecker(\"h\");\n\nvar doesFitWithin = function doesFitWithin(domainSize, itemSize) {\n  return doesWidthFitWithin(domainSize, itemSize) && doesHeightFitWithin(domainSize, itemSize);\n};\n\n/* Errors */\n\nvar createPreferenceError = function createPreferenceError(givenValue) {\n  return new Error(\"The given layout placement of \\\"\" + givenValue + \"\\\" is not a valid choice. Valid choices are: \" + validTypeValues.join(\" | \") + \".\");\n};\n\n/* Algorithm for picking the best fitting zone for popover. The current technique will loop through all zones picking the last one that fits.\nIn the case that none fit we should pick the least-not-fitting zone. */\n\nvar pickZone = function pickZone(opts, frameBounds, targetBounds, size) {\n  var t = targetBounds;\n  var f = frameBounds;\n  var zones = [{\n    side: \"start\",\n    standing: \"above\",\n    flow: \"column\",\n    order: -1,\n    w: f.x2,\n    h: t.y\n  }, {\n    side: \"end\",\n    standing: \"right\",\n    flow: \"row\",\n    order: 1,\n    w: f.x2 - t.x2,\n    h: f.y2\n  }, {\n    side: \"end\",\n    standing: \"below\",\n    flow: \"column\",\n    order: 1,\n    w: f.x2,\n    h: f.y2 - t.y2\n  }, {\n    side: \"start\",\n    standing: \"left\",\n    flow: \"row\",\n    order: -1,\n    w: t.x,\n    h: f.y2\n  }];\n\n  /* Order the zones by the amount of popup that would be cut out if that zone is used.\n     The first one in the array is the one that cuts the least amount.\n      const area = size.w * size.h  // Popup area is constant and it does not change the order\n  */\n  zones.forEach(function (z) {\n    // TODO Update to satisfy linter\n    // eslint-disable-next-line no-param-reassign\n    z.cutOff =\n    /* area */-Math.max(0, Math.min(z.w, size.w)) * Math.max(0, Math.min(z.h, size.h));\n  });\n  zones.sort(function (a, b) {\n    return a.cutOff - b.cutOff;\n  });\n\n  var availZones = zones.filter(function (zone) {\n    return doesFitWithin(zone, size);\n  });\n\n  /* If a place is required pick it from the available zones if possible. */\n\n  if (opts.place) {\n    var type = getPreferenceType(opts.place);\n    if (!type) throw createPreferenceError(opts.place);\n    var finder = function finder(z) {\n      return z[type] === opts.place;\n    };\n    return (0, _utils.find)(finder, availZones) || (0, _utils.find)(finder, zones);\n  }\n\n  /* If the preferred side is part of the available zones, use that otherwise\n  pick the largest available zone. If there are no available zones, pick the\n  largest zone. */\n\n  if (opts.preferPlace) {\n    var preferenceType = getPreferenceType(opts.preferPlace);\n    if (!preferenceType) throw createPreferenceError(opts.preferPlace);\n\n    // Try to fit first in zone where the pop up fit completely\n    var preferredAvailZones = availZones.filter(function (zone) {\n      return zone[preferenceType] === opts.preferPlace;\n    });\n    if (preferredAvailZones.length) return preferredAvailZones[0];\n\n    // If there are not areas where the pop up fit completely, it uses the preferred ones\n    // in order from the one the fit better\n    var preferredZones = zones.filter(function (zone) {\n      return zone[preferenceType] === opts.preferPlace;\n    });\n    if (!availZones.length && preferredZones.length) return preferredZones[0];\n  }\n\n  // Return a zone that fit completely or the one that fit the best\n  return availZones.length ? availZones[0] : zones[0];\n};\n\n/* TODO Document this. */\n\nvar calcRelPos = function calcRelPos(zone, masterBounds, slaveSize) {\n  var _ref2;\n\n  var _axes$zone$flow = axes[zone.flow],\n      main = _axes$zone$flow.main,\n      cross = _axes$zone$flow.cross;\n  /* TODO: The slave is hard-coded to align cross-center with master. */\n\n  var crossAlign = \"center\";\n  var mainStart = place(zone.flow, \"main\", zone.side, masterBounds, slaveSize);\n  var mainSize = slaveSize[main.size];\n  var crossStart = place(zone.flow, \"cross\", crossAlign, masterBounds, slaveSize);\n  var crossSize = slaveSize[cross.size];\n\n  return _ref2 = {}, _defineProperty(_ref2, main.start, mainStart), _defineProperty(_ref2, \"mainLength\", mainSize), _defineProperty(_ref2, main.end, mainStart + mainSize), _defineProperty(_ref2, cross.start, crossStart), _defineProperty(_ref2, \"crossLength\", crossSize), _defineProperty(_ref2, cross.end, crossStart + crossSize), _ref2;\n};\n\nexports.default = {\n  El: El,\n  types: types,\n  validTypeValues: validTypeValues,\n  calcRelPos: calcRelPos,\n  place: place,\n  pickZone: pickZone,\n  axes: axes,\n  centerOfSize: centerOfSize,\n  centerOfBounds: centerOfBounds,\n  centerOfBoundsFromBounds: centerOfBoundsFromBounds,\n  doesFitWithin: doesFitWithin,\n  equalCoords: _utils.equalRecords\n};\nexports.El = El;\nexports.types = types;\nexports.validTypeValues = validTypeValues;\nexports.calcRelPos = calcRelPos;\nexports.place = place;\nexports.pickZone = pickZone;\nexports.axes = axes;\nexports.centerOfSize = centerOfSize;\nexports.centerOfBounds = centerOfBounds;\nexports.centerOfBoundsFromBounds = centerOfBoundsFromBounds;\nexports.doesFitWithin = doesFitWithin;\nexports.equalCoords = _utils.equalRecords;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.removeEventListener = exports.addEventListener = exports.off = exports.on = undefined;\n\nvar _platform = require(\"./platform\");\n\nvar _utils = require(\"./utils\");\n\n/* eslint no-param-reassign: 0 */\n\nvar requestAnimationFrame = _platform.isServer ? _utils.noop : _platform.window.requestAnimationFrame || _platform.window.mozRequestAnimationFrame || _platform.window.webkitRequestAnimationFrame || function (fn) {\n  _platform.window.setTimeout(fn, 20);\n};\n\nvar cancelAnimationFrame = _platform.isServer ? _utils.noop : _platform.window.cancelAnimationFrame || _platform.window.mozCancelAnimationFrame || _platform.window.webkitCancelAnimationFrame || _platform.window.clearTimeout;\n\nvar isIE = _platform.isServer ? false : navigator.userAgent.match(/Trident/);\n\nvar namespace = \"__resizeDetector__\";\n\nvar uninitialize = function uninitialize(el) {\n  el[namespace].destroy();\n  el[namespace] = undefined;\n};\n\nvar createElementHack = function createElementHack() {\n  var el = document.createElement(\"object\");\n  el.className = \"resize-sensor\";\n  el.setAttribute(\"style\", \"display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;\");\n  el.setAttribute(\"class\", \"resize-sensor\");\n  el.setAttribute(\"tabindex\", \"-1\");\n  el.type = \"text/html\";\n  el.data = \"about:blank\";\n  return el;\n};\n\nvar initialize = function initialize(el) {\n  var detector = el[namespace] = {};\n  detector.listeners = [];\n\n  var onResize = function onResize(e) {\n    /* Keep in mind e.target could be el OR objEl. In this current implementation we don't seem to need to know this but its important\n    to not forget e.g. in some future refactoring scenario. */\n    if (detector.resizeRAF) cancelAnimationFrame(detector.resizeRAF);\n    detector.resizeRAF = requestAnimationFrame(function () {\n      detector.listeners.forEach(function (fn) {\n        fn(e);\n      });\n    });\n  };\n\n  if (isIE) {\n    /* We do not support ie8 and below (or ie9 in compat mode).\n    Therefore there is no presence of `attachEvent` here. */\n    el.addEventListener(\"onresize\", onResize);\n    detector.destroy = function () {\n      el.removeEventListener(\"onresize\", onResize);\n    };\n  } else {\n    if (getComputedStyle(el).position === \"static\") {\n      detector.elWasStaticPosition = true;\n      el.style.position = \"relative\";\n    }\n    var objEl = createElementHack();\n    objEl.onload = function () /* event */{\n      this.contentDocument.defaultView.addEventListener(\"resize\", onResize);\n    };\n    detector.destroy = function () {\n      if (detector.elWasStaticPosition) el.style.position = \"\";\n      if (el.contains(objEl)) {\n        // Event handlers will be automatically removed.\n        // http://stackoverflow.com/questions/12528049/if-a-dom-element-is-removed-are-its-listeners-also-removed-from-memory\n        el.removeChild(objEl);\n      }\n    };\n\n    el.appendChild(objEl);\n  }\n};\n\nvar on = function on(el, fn) {\n  /* Window object natively publishes resize events. We handle it as a\n  special case here so that users do not have to think about two APIs. */\n\n  if (el === _platform.window) {\n    _platform.window.addEventListener(\"resize\", fn);\n    return;\n  }\n\n  /* Not caching namespace read here beacuse not guaranteed that its available. */\n\n  if (!el[namespace]) initialize(el);\n  el[namespace].listeners.push(fn);\n};\n\nvar off = function off(el, fn) {\n  if (el === _platform.window) {\n    _platform.window.removeEventListener(\"resize\", fn);\n    return;\n  }\n  var detector = el[namespace];\n  if (!detector) return;\n  var i = detector.listeners.indexOf(fn);\n  if (i !== -1) detector.listeners.splice(i, 1);\n  if (!detector.listeners.length) uninitialize(el);\n};\n\nexports.default = {\n  on: on,\n  off: off,\n  addEventListener: on,\n  removeEventListener: off\n};\nexports.on = on;\nexports.off = off;\nexports.addEventListener = on;\nexports.removeEventListener = off;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Tip = function Tip(props) {\n  var direction = props.direction;\n\n  var size = props.size || 24;\n  var isPortrait = direction === \"up\" || direction === \"down\";\n  var mainLength = size;\n  var crossLength = size * 2;\n  var points = direction === \"up\" ? \"0,\" + mainLength + \" \" + mainLength + \",0, \" + crossLength + \",\" + mainLength : direction === \"down\" ? \"0,0 \" + mainLength + \",\" + mainLength + \", \" + crossLength + \",0\" : direction === \"left\" ? mainLength + \",0 0,\" + mainLength + \", \" + mainLength + \",\" + crossLength : \"0,0 \" + mainLength + \",\" + mainLength + \", 0,\" + crossLength;\n  var svgProps = {\n    className: \"Popover-tip\",\n    width: isPortrait ? crossLength : mainLength,\n    height: isPortrait ? mainLength : crossLength\n  };\n\n  return _react2.default.createElement(\n    \"svg\",\n    svgProps,\n    _react2.default.createElement(\"polygon\", { className: \"Popover-tipShape\", points: points })\n  );\n};\n\nexports.default = Tip;","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".color-button_color-button_2-mXT {\\n    height: 2rem;\\n    width: 3rem;\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n}\\n\\n.color-button_color-button-swatch_6Xhs3 {\\n    position: relative;\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    cursor: pointer;\\n    -webkit-flex-basis: 2rem;\\n        -ms-flex-preferred-size: 2rem;\\n            flex-basis: 2rem;\\n    -webkit-flex-shrink: 0;\\n        -ms-flex-negative: 0;\\n            flex-shrink: 0;\\n    height: 100%;\\n    border: 1px solid rgba(0, 0, 0, 0.25);\\n}\\n\\n[dir=\\\"ltr\\\"] .color-button_color-button-swatch_6Xhs3 {\\n    border-top-left-radius: 4px;\\n    border-bottom-left-radius: 4px;\\n}\\n\\n[dir=\\\"rtl\\\"] .color-button_color-button-swatch_6Xhs3 {\\n    border-top-right-radius: 4px;\\n    border-bottom-right-radius: 4px;\\n}\\n\\n.color-button_color-button-arrow_1b654 {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-user-select: none;\\n       -moz-user-select: none;\\n        -ms-user-select: none;\\n            user-select: none;\\n    cursor: pointer;\\n    -webkit-flex-basis: 1rem;\\n        -ms-flex-preferred-size: 1rem;\\n            flex-basis: 1rem;\\n    -webkit-flex-shrink: 0;\\n        -ms-flex-negative: 0;\\n            flex-shrink: 0;\\n    height: 100%;\\n\\n    border: 1px solid rgba(0, 0, 0, 0.25);\\n\\n    -webkit-box-align: center;\\n\\n    -webkit-align-items: center;\\n\\n        -ms-flex-align: center;\\n\\n            align-items: center;\\n    -webkit-box-pack: center;\\n    -webkit-justify-content: center;\\n        -ms-flex-pack: center;\\n            justify-content: center;\\n    color: #575e75;\\n    font-size: 0.75rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .color-button_color-button-arrow_1b654 {\\n    border-top-right-radius: 4px;\\n    border-bottom-right-radius: 4px;\\n    border-left: none;\\n}\\n\\n[dir=\\\"rtl\\\"] .color-button_color-button-arrow_1b654 {\\n    border-top-left-radius: 4px;\\n    border-bottom-left-radius: 4px;\\n    border-right: none;\\n}\\n\\n.color-button_swatch-icon_2gc40 {\\n    width: 1.75rem;\\n    margin: auto;\\n    /* Make sure it appears above the outline box */\\n    z-index: 2;\\n}\\n\\n.color-button_outline-swatch_2ifeG:after {\\n    content: \\\"\\\";\\n    position: absolute;\\n    top: calc(0.5rem);\\n    left: calc(0.5rem);\\n    width: 0.75rem;\\n    height: 0.75rem;\\n    background: white;\\n    border: 1px solid rgba(0, 0, 0, 0.25);\\n    /* Make sure it appears below the transparent icon */\\n    z-index: 1;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"color-button\": \"color-button_color-button_2-mXT\",\n\t\"colorButton\": \"color-button_color-button_2-mXT\",\n\t\"color-button-swatch\": \"color-button_color-button-swatch_6Xhs3\",\n\t\"colorButtonSwatch\": \"color-button_color-button-swatch_6Xhs3\",\n\t\"color-button-arrow\": \"color-button_color-button-arrow_1b654\",\n\t\"colorButtonArrow\": \"color-button_color-button-arrow_1b654\",\n\t\"swatch-icon\": \"color-button_swatch-icon_2gc40\",\n\t\"swatchIcon\": \"color-button_swatch-icon_2gc40\",\n\t\"outline-swatch\": \"color-button_outline-swatch_2ifeG\",\n\t\"outlineSwatch\": \"color-button_outline-swatch_2ifeG\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".slider_container_2U0n6 {\\n    margin: 8px;\\n    height: 22px;\\n    width: 150px;\\n    position: relative;\\n    outline: none;\\n    border-radius: 11px;\\n    margin-bottom: 20px;\\n}\\n\\n.slider_last_3coMi {\\n    margin-bottom: 4px;\\n}\\n\\n.slider_handle_2M_mA {\\n    left: 100px;\\n    width: 26px;\\n    height: 26px;\\n    margin-top: -2px;\\n    position: absolute;\\n    background-color: white;\\n    border-radius: 100%;\\n    -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.15);\\n            box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.15);\\n    -ms-touch-action: none;\\n        touch-action: none;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"container\": \"slider_container_2U0n6\",\n\t\"last\": \"slider_last_3coMi\",\n\t\"handle\": \"slider_handle_2M_mA\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.labeled-icon-button_mod-edit-field_Z3eav {\\n    background: none;\\n    border: none;\\n    display: inline-block;\\n    padding: .25rem .325rem;\\n    outline: none;\\n    border-radius: 0.25rem;\\n    min-width: 3rem;\\n    font-size: 0.85rem;\\n    text-align: center;\\n}\\n\\n.labeled-icon-button_edit-field-icon_1BGdr {\\n    width: 1.5rem;\\n    height: 1.5rem;\\n    -webkit-box-flex: 1;\\n    -webkit-flex-grow: 1;\\n        -ms-flex-positive: 1;\\n            flex-grow: 1;\\n    vertical-align: middle;\\n}\\n\\n.labeled-icon-button_edit-field-title_32vCQ {\\n    display: block;\\n    margin-top: .125rem;\\n    font-size: .625rem;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"mod-edit-field\": \"labeled-icon-button_mod-edit-field_Z3eav\",\n\t\"modEditField\": \"labeled-icon-button_mod-edit-field_Z3eav\",\n\t\"edit-field-icon\": \"labeled-icon-button_edit-field-icon_1BGdr\",\n\t\"editFieldIcon\": \"labeled-icon-button_edit-field-icon_1BGdr\",\n\t\"edit-field-title\": \"labeled-icon-button_edit-field-title_32vCQ\",\n\t\"editFieldTitle\": \"labeled-icon-button_edit-field-title_32vCQ\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n/* Popover styles */\\n\\n.Popover-body {\\n    background: white;\\n    border: 1px solid #ddd;\\n    padding: 4px;\\n    border-radius: 4px;\\n    padding: 4px;\\n    -webkit-box-shadow: 0px 0px 8px 1px rgba(0, 0, 0, .3);\\n            box-shadow: 0px 0px 8px 1px rgba(0, 0, 0, .3);\\n}\\n\\n.Popover-tipShape {\\n    fill: white;\\n    stroke: #ddd;\\n}\\n\\n.color-picker_clickable_1qAhZ {\\n    cursor: pointer;\\n}\\n\\n.color-picker_swatch-row_3ygSb {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    -webkit-box-pack: justify;\\n    -webkit-justify-content: space-between;\\n        -ms-flex-pack: justify;\\n            justify-content: space-between;\\n}\\n\\n.color-picker_row-header_23YDh {\\n    font-family: \\\"Helvetica Neue\\\", Helvetica, sans-serif;\\n    font-size: 0.65rem;\\n    color: #575E75;\\n    margin: 8px;\\n}\\n\\n[dir=\\\"ltr\\\"] .color-picker_label-readout_efqFT {\\n    margin-left: 10px;\\n}\\n\\n[dir=\\\"rtl\\\"] .color-picker_label-readout_efqFT {\\n    margin-right: 10px;\\n}\\n\\n.color-picker_label-name_3kaOv {\\n    font-weight: bold;\\n}\\n\\n.color-picker_divider_3Hq7P {\\n    border-top: 1px solid #ddd;\\n    margin: 8px;\\n}\\n\\n.color-picker_swap-button_knDOR {\\n    margin-left: 8px;\\n    margin-right: 8px;\\n}\\n\\n.color-picker_swatches_3P15b {\\n    margin: 8px;\\n}\\n\\n.color-picker_swatch_3zRbd {\\n    width: 1.5rem;\\n    height: 1.5rem;\\n    border: 1px solid #ddd;\\n    border-radius: 4px;\\n    -webkit-box-sizing: content-box;\\n            box-sizing: content-box;\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\\n.color-picker_large-swatch-icon_2EdzJ {\\n    width: 1.75rem;\\n    margin: auto;\\n}\\n\\n.color-picker_large-swatch_2tprq {\\n    width: 2rem;\\n    height: 2rem;\\n}\\n\\n.color-picker_active-swatch_2U6UP {\\n    border: 1px solid #855CD6;\\n    -webkit-box-shadow: 0px 0px 0px 3px hsla(260, 60%, 60%, 0.35);\\n            box-shadow: 0px 0px 0px 3px hsla(260, 60%, 60%, 0.35);\\n}\\n\\n.color-picker_swatch-icon_1GWhH {\\n    width: 1.5rem;\\n    height: 1.5rem;\\n}\\n\\n.color-picker_inactive-gradient_3LMcb {\\n    -webkit-filter: saturate(0%);\\n            filter: saturate(0%);\\n}\\n\\n.color-picker_gradient-picker-row_2ZOSs {\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    -webkit-box-pack: center;\\n    -webkit-justify-content: center;\\n        -ms-flex-pack: center;\\n            justify-content: center;\\n    margin: 8px;\\n    -webkit-user-select: none;\\n       -moz-user-select: none;\\n        -ms-user-select: none;\\n            user-select: none;\\n}\\n\\n[dir=\\\"ltr\\\"] .color-picker_gradient-picker-row_2ZOSs > img + img {\\n    margin-left: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .color-picker_gradient-picker-row_2ZOSs > img + img {\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .color-picker_gradient-swatches-row_1laEb {\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: reverse;\\n    -webkit-flex-direction: row-reverse;\\n        -ms-flex-direction: row-reverse;\\n            flex-direction: row-reverse;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"clickable\": \"color-picker_clickable_1qAhZ\",\n\t\"swatch-row\": \"color-picker_swatch-row_3ygSb\",\n\t\"swatchRow\": \"color-picker_swatch-row_3ygSb\",\n\t\"row-header\": \"color-picker_row-header_23YDh\",\n\t\"rowHeader\": \"color-picker_row-header_23YDh\",\n\t\"label-readout\": \"color-picker_label-readout_efqFT\",\n\t\"labelReadout\": \"color-picker_label-readout_efqFT\",\n\t\"label-name\": \"color-picker_label-name_3kaOv\",\n\t\"labelName\": \"color-picker_label-name_3kaOv\",\n\t\"divider\": \"color-picker_divider_3Hq7P\",\n\t\"swap-button\": \"color-picker_swap-button_knDOR\",\n\t\"swapButton\": \"color-picker_swap-button_knDOR\",\n\t\"swatches\": \"color-picker_swatches_3P15b\",\n\t\"swatch\": \"color-picker_swatch_3zRbd\",\n\t\"large-swatch-icon\": \"color-picker_large-swatch-icon_2EdzJ\",\n\t\"largeSwatchIcon\": \"color-picker_large-swatch-icon_2EdzJ\",\n\t\"large-swatch\": \"color-picker_large-swatch_2tprq\",\n\t\"largeSwatch\": \"color-picker_large-swatch_2tprq\",\n\t\"active-swatch\": \"color-picker_active-swatch_2U6UP\",\n\t\"activeSwatch\": \"color-picker_active-swatch_2U6UP\",\n\t\"swatch-icon\": \"color-picker_swatch-icon_1GWhH\",\n\t\"swatchIcon\": \"color-picker_swatch-icon_1GWhH\",\n\t\"inactive-gradient\": \"color-picker_inactive-gradient_3LMcb\",\n\t\"inactiveGradient\": \"color-picker_inactive-gradient_3LMcb\",\n\t\"gradient-picker-row\": \"color-picker_gradient-picker-row_2ZOSs\",\n\t\"gradientPickerRow\": \"color-picker_gradient-picker-row_2ZOSs\",\n\t\"gradient-swatches-row\": \"color-picker_gradient-swatches-row_1laEb\",\n\t\"gradientSwatchesRow\": \"color-picker_gradient-swatches-row_1laEb\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.input-group_input-group_3FzNB {\\n    display: -webkit-inline-box;\\n    display: -webkit-inline-flex;\\n    display: -ms-inline-flexbox;\\n    display: inline-flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\\n[dir=\\\"ltr\\\"] .input-group_input-group_3FzNB + .input-group_input-group_3FzNB {\\n    margin-left: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .input-group_input-group_3FzNB + .input-group_input-group_3FzNB {\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n.input-group_disabled_3fp6_ {\\n    opacity: 0.3;\\n    /* Prevent any user actions */\\n    pointer-events: none;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"input-group\": \"input-group_input-group_3FzNB\",\n\t\"inputGroup\": \"input-group_input-group_3FzNB\",\n\t\"disabled\": \"input-group_disabled_3fp6_\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n.label_input-group_2vTky {\\n    display: -webkit-inline-box;\\n    display: -webkit-inline-flex;\\n    display: -ms-inline-flexbox;\\n    display: inline-flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\\n[dir=\\\"ltr\\\"] .label_input-group_2vTky + .label_input-group_2vTky {\\n    margin-left: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .label_input-group_2vTky + .label_input-group_2vTky {\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n.label_disabled_1HlGv {\\n    opacity: 0.3;\\n    /* Prevent any user actions */\\n    pointer-events: none;\\n}\\n\\n.label_input-label_3KjCa, .label_input-label-secondary_3QDNV {\\n    font-size: 0.625rem;\\n    -webkit-user-select: none;\\n       -moz-user-select: none;\\n        -ms-user-select: none;\\n            user-select: none;\\n    cursor: default;\\n}\\n\\n[dir=\\\"ltr\\\"] .label_input-label_3KjCa, [dir=\\\"ltr\\\"] .label_input-label-secondary_3QDNV{\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .label_input-label_3KjCa, [dir=\\\"ltr\\\"] .label_input-label-secondary_3QDNV{\\n    margin-left: calc(2 * .25rem);\\n}\\n\\n.label_input-label_3KjCa {\\n    font-weight: bold;\\n}\\n\\n@media only screen and (max-width: 1256px) {\\n    .label_input-group_2vTky {\\n        display: -webkit-box;\\n        display: -webkit-flex;\\n        display: -ms-flexbox;\\n        display: flex;\\n        -webkit-box-orient: vertical;\\n        -webkit-box-direction: normal;\\n        -webkit-flex-direction: column;\\n            -ms-flex-direction: column;\\n                flex-direction: column;\\n        -webkit-box-align: start;\\n        -webkit-align-items: flex-start;\\n            -ms-flex-align: start;\\n                align-items: flex-start;\\n        margin-top: -1rem; /* To align with the non-labeled inputs */\\n    }\\n\\n    .label_input-label_3KjCa {\\n        font-weight: normal;\\n        margin-bottom: 0.25rem;\\n    }\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"input-group\": \"label_input-group_2vTky\",\n\t\"inputGroup\": \"label_input-group_2vTky\",\n\t\"disabled\": \"label_disabled_1HlGv\",\n\t\"input-label\": \"label_input-label_3KjCa\",\n\t\"inputLabel\": \"label_input-label_3KjCa\",\n\t\"input-label-secondary\": \"label_input-label-secondary_3QDNV\",\n\t\"inputLabelSecondary\": \"label_input-label-secondary_3QDNV\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".loupe_eye-dropper_39EHg {\\n    position: absolute;\\n    border-radius: 100%;\\n    border: 1px solid #222;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"eye-dropper\": \"loupe_eye-dropper_39EHg\",\n\t\"eyeDropper\": \"loupe_eye-dropper_39EHg\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n.dropdown_dropdown_2cQyf {\\n    border: 1px solid #E9EEF2;\\n    border-radius: 5px;\\n    overflow: visible;\\n    min-width: 3.5rem;\\n    color: #855CD6;\\n    padding: .5rem;\\n}\\n\\n.dropdown_mod-open_1QOjG {\\n    background-color: #E9EEF2;\\n}\\n\\n.dropdown_dropdown-icon_13LnP {\\n    width: .5rem;\\n    height: .5rem;\\n    vertical-align: middle;\\n    padding-bottom: .2rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .dropdown_dropdown-icon_13LnP {\\n    margin-left: .5rem;\\n}\\n\\n[dir=\\\"rtl\\\"] .dropdown_dropdown-icon_13LnP {\\n    margin-right: .5rem;\\n}\\n\\n.dropdown_mod-caret-up_1v809 {\\n    -webkit-transform: rotate(180deg);\\n        -ms-transform: rotate(180deg);\\n            transform: rotate(180deg);\\n    padding-bottom: 0;\\n    padding-top: .2rem;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"dropdown\": \"dropdown_dropdown_2cQyf\",\n\t\"mod-open\": \"dropdown_mod-open_1QOjG\",\n\t\"modOpen\": \"dropdown_mod-open_1QOjG\",\n\t\"dropdown-icon\": \"dropdown_dropdown-icon_13LnP\",\n\t\"dropdownIcon\": \"dropdown_dropdown-icon_13LnP\",\n\t\"mod-caret-up\": \"dropdown_mod-caret-up_1v809\",\n\t\"modCaretUp\": \"dropdown_mod-caret-up_1v809\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* NOTE:\\nEdited to add input-range-small\\n*/\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n.input_input-form_l9eYg {\\n    height: 2rem;\\n    padding: 0 0.75rem;\\n\\n    font-family: \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif;\\n    font-size: 0.75rem;\\n    font-weight: bold;\\n    color: #575e75;\\n\\n    border-width: 1px;\\n    border-style: solid;\\n    border-color: #E9EEF2;\\n    border-radius: 2rem;\\n\\n    outline: none;\\n    cursor: text;\\n    -webkit-transition: 0.25s ease-out;\\n    transition: 0.25s ease-out; /* @todo: standardize with var */\\n    -webkit-box-shadow: none;\\n            box-shadow: none;\\n\\n    /*\\n        For truncating overflowing text gracefully\\n        Min-width is for a bug: https://css-tricks.com/flexbox-truncated-text\\n        @todo: move this out into a mixin or a helper component\\n    */\\n    overflow: hidden;\\n    text-overflow: ellipsis;\\n    white-space: nowrap;\\n    min-width: 0;\\n}\\n\\n.input_input-form_l9eYg:focus {\\n    border-color: #855CD6;\\n    -webkit-box-shadow: 0 0 0 .25rem hsla(260, 60%, 60%, 0.35);\\n            box-shadow: 0 0 0 .25rem hsla(260, 60%, 60%, 0.35);\\n}\\n\\n.input_input-small_2qj1C {\\n    width: 3rem;\\n    text-align: center;\\n}\\n\\n.input_input-small-range_2GQzZ {\\n    width: 4rem;\\n    text-align: center;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"input-form\": \"input_input-form_l9eYg\",\n\t\"inputForm\": \"input_input-form_l9eYg\",\n\t\"input-small\": \"input_input-small_2qj1C\",\n\t\"inputSmall\": \"input_input-small_2qj1C\",\n\t\"input-small-range\": \"input_input-small-range_2GQzZ\",\n\t\"inputSmallRange\": \"input_input-small-range_2GQzZ\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.fixed-tools_row_2PVw6 {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\\n.fixed-tools_costume-input_3ax5t {\\n    width: 8rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .fixed-tools_mod-dashed-border_1AyX1 {\\n    border-right: 1px dashed #D9D9D9;\\n    padding-right: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_mod-dashed-border_1AyX1 {\\n    border-left: 1px dashed #D9D9D9;\\n    padding-left: calc(2 * .25rem);\\n}\\n\\n.fixed-tools_mod-unselect_1Xf-j {\\n    -webkit-user-select: none;\\n       -moz-user-select: none;\\n        -ms-user-select: none;\\n            user-select: none;\\n}\\n\\n.fixed-tools_button-group-button_2DTEM {\\n    display: inline-block;\\n    border: 1px solid #D9D9D9;\\n    border-radius: 0;\\n    padding: .35rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .fixed-tools_button-group-button_2DTEM {\\n    border-left: none;\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_button-group-button_2DTEM {\\n    border-right: none;\\n}\\n\\n[dir=\\\"ltr\\\"] .fixed-tools_button-group-button_2DTEM:last-of-type {\\n    border-top-right-radius: 0.25rem;\\n    border-bottom-right-radius: 0.25rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .fixed-tools_button-group-button_2DTEM:first-of-type {\\n    border-left: 1px solid #D9D9D9;\\n    border-top-left-radius: 0.25rem;\\n    border-bottom-left-radius: 0.25rem;\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_button-group-button_2DTEM:last-of-type {\\n    border-top-left-radius: 0.25rem;\\n    border-bottom-left-radius: 0.25rem;\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_button-group-button_2DTEM:first-of-type {\\n    border-right: 1px solid #D9D9D9;\\n    border-top-right-radius: 0.25rem;\\n    border-bottom-right-radius: 0.25rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .fixed-tools_button-group-button_2DTEM.fixed-tools_mod-start-border_1OTDn {\\n    border-left: 1px solid #D9D9D9;\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_button-group-button_2DTEM.fixed-tools_mod-start-border_1OTDn {\\n    border-right: 1px solid #D9D9D9;\\n}\\n\\n[dir=\\\"ltr\\\"] .fixed-tools_button-group-button_2DTEM.fixed-tools_mod-no-end-border_20uuv {\\n    border-right: none;\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_button-group-button_2DTEM.fixed-tools_mod-no-end-border_20uuv {\\n    border-left: none;\\n}\\n\\n.fixed-tools_button-group-button-icon_3shFH {\\n    width: 1.25rem;\\n    height: 1.25rem;\\n    vertical-align: middle;\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_button-group-button-icon_3shFH {\\n    -webkit-transform: scaleX(-1);\\n        -ms-transform: scaleX(-1);\\n            transform: scaleX(-1);\\n}\\n\\n.fixed-tools_mod-context-menu_JvI5y {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: vertical;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: column;\\n        -ms-flex-direction: column;\\n            flex-direction: column;\\n}\\n\\n.fixed-tools_mod-top-divider_oxfsG {\\n    border-top: 1px solid #D9D9D9;\\n}\\n\\n.fixed-tools_mod-menu-item_1eQQZ {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    margin: 0 -.25rem;\\n    min-width: 6.25rem;\\n    padding: calc(3 * .25rem);\\n    white-space: nowrap;\\n    cursor: pointer;\\n    -webkit-transition: 0.1s ease;\\n    transition: 0.1s ease;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n    font-family: \\\"Helvetica Neue\\\", Helvetica, sans-serif;\\n}\\n\\n.fixed-tools_mod-disabled_UJyp0 {\\n    cursor: auto;\\n}\\n\\n.fixed-tools_mod-menu-item_1eQQZ:hover {\\n    background: hsla(260, 60%, 60%, 0.35);\\n}\\n\\n.fixed-tools_mod-disabled_UJyp0:hover {\\n    background-color: transparent;\\n}\\n\\n.fixed-tools_menu-item-icon_2DtJ1 {\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_menu-item-icon_2DtJ1 {\\n    margin-right: 0;\\n    margin-left: calc(2 * .25rem);\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"row\": \"fixed-tools_row_2PVw6\",\n\t\"costume-input\": \"fixed-tools_costume-input_3ax5t\",\n\t\"costumeInput\": \"fixed-tools_costume-input_3ax5t\",\n\t\"mod-dashed-border\": \"fixed-tools_mod-dashed-border_1AyX1\",\n\t\"modDashedBorder\": \"fixed-tools_mod-dashed-border_1AyX1\",\n\t\"mod-unselect\": \"fixed-tools_mod-unselect_1Xf-j\",\n\t\"modUnselect\": \"fixed-tools_mod-unselect_1Xf-j\",\n\t\"button-group-button\": \"fixed-tools_button-group-button_2DTEM\",\n\t\"buttonGroupButton\": \"fixed-tools_button-group-button_2DTEM\",\n\t\"mod-start-border\": \"fixed-tools_mod-start-border_1OTDn\",\n\t\"modStartBorder\": \"fixed-tools_mod-start-border_1OTDn\",\n\t\"mod-no-end-border\": \"fixed-tools_mod-no-end-border_20uuv\",\n\t\"modNoEndBorder\": \"fixed-tools_mod-no-end-border_20uuv\",\n\t\"button-group-button-icon\": \"fixed-tools_button-group-button-icon_3shFH\",\n\t\"buttonGroupButtonIcon\": \"fixed-tools_button-group-button-icon_3shFH\",\n\t\"mod-context-menu\": \"fixed-tools_mod-context-menu_JvI5y\",\n\t\"modContextMenu\": \"fixed-tools_mod-context-menu_JvI5y\",\n\t\"mod-top-divider\": \"fixed-tools_mod-top-divider_oxfsG\",\n\t\"modTopDivider\": \"fixed-tools_mod-top-divider_oxfsG\",\n\t\"mod-menu-item\": \"fixed-tools_mod-menu-item_1eQQZ\",\n\t\"modMenuItem\": \"fixed-tools_mod-menu-item_1eQQZ\",\n\t\"mod-disabled\": \"fixed-tools_mod-disabled_UJyp0\",\n\t\"modDisabled\": \"fixed-tools_mod-disabled_UJyp0\",\n\t\"menu-item-icon\": \"fixed-tools_menu-item-icon_2DtJ1\",\n\t\"menuItemIcon\": \"fixed-tools_menu-item-icon_2DtJ1\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.font-dropdown_mod-menu-item_hwOca {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    margin: 0 -.25rem;\\n    min-width: 6.25rem;\\n    padding: calc(2 * .25rem);\\n    padding-left: calc(3 * .25rem);\\n    padding-right: calc(3 * .25rem);\\n    white-space: nowrap;\\n    width: 8.5rem;\\n    cursor: pointer;\\n    -webkit-transition: 0.1s ease;\\n    transition: 0.1s ease;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\\n.font-dropdown_mod-menu-item_hwOca:hover {\\n    background: #855CD6;\\n    color: white;\\n}\\n\\n.font-dropdown_mod-context-menu_3llFm {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: vertical;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: column;\\n        -ms-flex-direction: column;\\n            flex-direction: column;\\n}\\n\\n.font-dropdown_mod-unselect_130OF {\\n    -webkit-user-select: none;\\n       -moz-user-select: none;\\n        -ms-user-select: none;\\n            user-select: none;\\n}\\n\\n.font-dropdown_displayed-font-name_3cU-U {\\n    font-size: .8rem;\\n}\\n\\n.font-dropdown_font-dropdown_3vjc6 {\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n    color: #575e75;\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    font-size: 1rem;\\n    -webkit-box-pack: justify;\\n    -webkit-justify-content: space-between;\\n        -ms-flex-pack: justify;\\n            justify-content: space-between;\\n    width: 8.5rem;\\n    height: 2rem;\\n}\\n\\n.font-dropdown_serif_tMSQM {\\n    font-family: 'Serif';\\n}\\n\\n.font-dropdown_sans-serif_24kX9 {\\n    font-family: 'Sans Serif';\\n}\\n\\n.font-dropdown_serif_tMSQM {\\n    font-family: 'Serif';\\n}\\n\\n.font-dropdown_handwriting_Y7s5d {\\n    font-family: 'Handwriting';\\n}\\n\\n.font-dropdown_marker_3AmLD {\\n    font-family: 'Marker';\\n}\\n\\n.font-dropdown_curly_1UQYh {\\n    font-family: 'Curly';\\n}\\n\\n.font-dropdown_pixel_3aRC6 {\\n    font-family: 'Pixel';\\n}\\n\\n.font-dropdown_chinese_zV1Hj {\\n    font-family: \\\"Microsoft YaHei\\\", \\\"微软雅黑\\\", STXihei, \\\"华文细黑\\\";\\n}\\n\\n.font-dropdown_japanese_2SlYs {\\n    font-family: \\\"ヒラギノ角ゴ Pro W3\\\", \\\"Hiragino Kaku Gothic Pro\\\", Osaka, \\\"メイリオ\\\", Meiryo, \\\"MS Pゴシック\\\", \\\"MS PGothic\\\";\\n}\\n\\n.font-dropdown_korean_1Fx37 {\\n    font-family: \\\"Malgun Gothic\\\";\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"mod-menu-item\": \"font-dropdown_mod-menu-item_hwOca\",\n\t\"modMenuItem\": \"font-dropdown_mod-menu-item_hwOca\",\n\t\"mod-context-menu\": \"font-dropdown_mod-context-menu_3llFm\",\n\t\"modContextMenu\": \"font-dropdown_mod-context-menu_3llFm\",\n\t\"mod-unselect\": \"font-dropdown_mod-unselect_130OF\",\n\t\"modUnselect\": \"font-dropdown_mod-unselect_130OF\",\n\t\"displayed-font-name\": \"font-dropdown_displayed-font-name_3cU-U\",\n\t\"displayedFontName\": \"font-dropdown_displayed-font-name_3cU-U\",\n\t\"font-dropdown\": \"font-dropdown_font-dropdown_3vjc6\",\n\t\"fontDropdown\": \"font-dropdown_font-dropdown_3vjc6\",\n\t\"serif\": \"font-dropdown_serif_tMSQM\",\n\t\"sans-serif\": \"font-dropdown_sans-serif_24kX9\",\n\t\"sansSerif\": \"font-dropdown_sans-serif_24kX9\",\n\t\"handwriting\": \"font-dropdown_handwriting_Y7s5d\",\n\t\"marker\": \"font-dropdown_marker_3AmLD\",\n\t\"curly\": \"font-dropdown_curly_1UQYh\",\n\t\"pixel\": \"font-dropdown_pixel_3aRC6\",\n\t\"chinese\": \"font-dropdown_chinese_zV1Hj\",\n\t\"japanese\": \"font-dropdown_japanese_2SlYs\",\n\t\"korean\": \"font-dropdown_korean_1Fx37\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.mode-tools_mode-tools_UREem {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    min-height: 3rem;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\\n.mode-tools_mode-tools-icon_3yoZ2 {\\n    margin-right: calc(2 * .25rem);\\n    width: 2rem;\\n    height: 2rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .mode-tools_mod-dashed-border_3Bmy_ {\\n    border-right: 1px dashed #D9D9D9;\\n    padding-right: calc(3 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .mode-tools_mod-dashed-border_3Bmy_ {\\n    border-left: 1px dashed #D9D9D9;\\n    padding-left: calc(3 * .25rem);\\n}\\n\\n.mode-tools_mod-labeled-icon-height_kRA3W {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    height: 2.85rem; /* for the second row so the dashed borders are equal in size */\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"mode-tools\": \"mode-tools_mode-tools_UREem\",\n\t\"modeTools\": \"mode-tools_mode-tools_UREem\",\n\t\"mode-tools-icon\": \"mode-tools_mode-tools-icon_3yoZ2\",\n\t\"modeToolsIcon\": \"mode-tools_mode-tools-icon_3yoZ2\",\n\t\"mod-dashed-border\": \"mode-tools_mod-dashed-border_3Bmy_\",\n\t\"modDashedBorder\": \"mode-tools_mod-dashed-border_3Bmy_\",\n\t\"mod-labeled-icon-height\": \"mode-tools_mod-labeled-icon-height_kRA3W\",\n\t\"modLabeledIconHeight\": \"mode-tools_mod-labeled-icon-height_kRA3W\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.paint-editor_editor-container_3ajxi {\\n    width: 100%;\\n    height: 100%;\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: vertical;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: column;\\n        -ms-flex-direction: column;\\n            flex-direction: column;\\n    padding: calc(3 * .25rem);\\n}\\n\\n.paint-editor_row_1psvV {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\\n.paint-editor_editor-container-top_23HHq {\\n    border-bottom: 1px dashed #D9D9D9;\\n    padding-bottom: calc(2 * .25rem);\\n}\\n\\n.paint-editor_top-align-row_2Ky-F {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    height: 100%;\\n    padding-top: calc(5 * .25rem);\\n    min-width: 524px;\\n}\\n\\n.paint-editor_row_1psvV + .paint-editor_row_1psvV {\\n    margin-top: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"ltr\\\"] .paint-editor_mod-dashed-border_1xeKo {\\n    border-right: 1px dashed #D9D9D9;\\n    padding-right: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .paint-editor_mod-dashed-border_1xeKo {\\n    border-left: 1px dashed #D9D9D9;\\n    padding-left: calc(2 * .25rem);\\n}\\n\\n.paint-editor_mod-labeled-icon-height_3hBCl {\\n    height: 2.85rem; /* for the second row so the dashed borders are equal in size */\\n}\\n\\n.paint-editor_button-group-button_1gq5A {\\n    display: inline-block;\\n    border: 1px solid #D9D9D9;\\n    border-radius: 0;\\n    padding: .35rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .paint-editor_button-group-button_1gq5A {\\n    border-left: none;\\n}\\n\\n[dir=\\\"rtl\\\"] .paint-editor_button-group-button_1gq5A {\\n    border-right: none;\\n}\\n\\n[dir=\\\"ltr\\\"] .paint-editor_button-group-button_1gq5A:last-of-type {\\n    border-top-right-radius: 0.25rem;\\n    border-bottom-right-radius: 0.25rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .paint-editor_button-group-button_1gq5A:first-of-type {\\n    border-left: 1px solid #D9D9D9;\\n    border-top-left-radius: 0.25rem;\\n    border-bottom-left-radius: 0.25rem;\\n}\\n\\n[dir=\\\"rtl\\\"] .paint-editor_button-group-button_1gq5A:last-of-type {\\n    border-top-left-radius: 0.25rem;\\n    border-bottom-left-radius: 0.25rem;\\n}\\n\\n[dir=\\\"rtl\\\"] .paint-editor_button-group-button_1gq5A:first-of-type {\\n    border-right: 1px solid #D9D9D9;\\n    border-top-right-radius: 0.25rem;\\n    border-bottom-right-radius: 0.25rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .paint-editor_button-group-button_1gq5A.paint-editor_mod-start-border_jVIRO {\\n    border-left: 1px solid #D9D9D9;\\n}\\n\\n[dir=\\\"rtl\\\"] .paint-editor_button-group-button_1gq5A.paint-editor_mod-start-border_jVIRO {\\n    border-right: 1px solid #D9D9D9;\\n}\\n\\n[dir=\\\"ltr\\\"].paint-editor_button-group-button_1gq5A.paint-editor_mod-no-end-border_XiRoc {\\n    border-right: none;\\n}\\n\\n[dir=\\\"rtl\\\"].paint-editor_button-group-button_1gq5A.paint-editor_mod-no-end-border_XiRoc {\\n    border-left: none;\\n}\\n\\n.paint-editor_button-group-button-icon_3BPxO {\\n    width: 1.25rem;\\n    height: 1.25rem;\\n    vertical-align: middle;\\n}\\n\\n.paint-editor_mod-mode-tools_1IXSj {\\n    margin-left: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"ltr\\\"] .paint-editor_mod-margin-after_1OgHf {\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .paint-editor_mod-margin-after_1OgHf {\\n    margin-left: calc(2 * .25rem);\\n}\\n\\n.paint-editor_controls-container_3HDxz {\\n    width: 100%;\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: vertical;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-flow: column;\\n        -ms-flex-flow: column;\\n            flex-flow: column;\\n    -webkit-box-flex: 1;\\n    -webkit-flex-grow: 1;\\n        -ms-flex-positive: 1;\\n            flex-grow: 1;\\n    margin-left: calc(2 * .25rem);\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n.paint-editor_canvas-container_2rN98 {\\n    width: 100%;\\n    -webkit-box-flex: 1;\\n    -webkit-flex-grow: 1;\\n        -ms-flex-positive: 1;\\n            flex-grow: 1;\\n    min-width: 402px; /* Leave room for the border */\\n    -webkit-box-sizing: content-box;\\n            box-sizing: content-box;\\n    border: 1px solid #e8edf1;\\n    border-radius: .25rem;\\n    position: relative;\\n    overflow: visible;\\n}\\n\\n.paint-editor_mode-selector_1edhd {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    max-width: 7.5rem;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    -webkit-flex-wrap: wrap;\\n        -ms-flex-wrap: wrap;\\n            flex-wrap: wrap;\\n    -webkit-box-align: start;\\n    -webkit-align-items: flex-start;\\n        -ms-flex-align: start;\\n            align-items: flex-start;\\n    -webkit-align-content: flex-start;\\n        -ms-flex-line-pack: start;\\n            align-content: flex-start;\\n    -webkit-box-pack: justify;\\n    -webkit-justify-content: space-between;\\n        -ms-flex-pack: justify;\\n            justify-content: space-between;\\n}\\n\\n.paint-editor_zoom-controls_3Qe-- {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: reverse;\\n    -webkit-flex-direction: row-reverse;\\n        -ms-flex-direction: row-reverse;\\n            flex-direction: row-reverse;\\n}\\n\\n.paint-editor_color-picker-wrapper_1IC0W {\\n    position: absolute;\\n    top: 0;\\n    left: 0;\\n    width: 100%;\\n    height: 100%;\\n    pointer-events: none;\\n}\\n\\n.paint-editor_canvas-controls_e2K-q {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    height: 36px;\\n    margin-top: .25rem;\\n    -webkit-box-pack: justify;\\n    -webkit-justify-content: space-between;\\n        -ms-flex-pack: justify;\\n            justify-content: space-between;\\n}\\n\\n.paint-editor_bitmap-button_GsX3L {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    border-radius: 5px;\\n    background-color: #855CD6;\\n    padding: calc(2 * .25rem);\\n    line-height: 1.5rem;\\n    font-size: calc(3 * .25rem);\\n    font-weight: bold;\\n    color: white;\\n    -webkit-box-pack: center;\\n    -webkit-justify-content: center;\\n        -ms-flex-pack: center;\\n            justify-content: center;\\n}\\n\\n[dir=\\\"ltr\\\"] .paint-editor_bitmap-button-icon_wPoPh {\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .paint-editor_bitmap-button-icon_wPoPh {\\n    margin-left: calc(2 * .25rem);\\n}\\n\\n@media only screen and (max-width: 1256px) {\\n    .paint-editor_editor-container_3ajxi {\\n        padding: calc(3 * .25rem) .25rem;\\n    }\\n\\n    .paint-editor_mode-selector_1edhd {\\n        -webkit-box-orient: vertical;\\n        -webkit-box-direction: normal;\\n        -webkit-flex-direction: column;\\n            -ms-flex-direction: column;\\n                flex-direction: column;\\n        -webkit-box-pack: start;\\n        -webkit-justify-content: flex-start;\\n            -ms-flex-pack: start;\\n                justify-content: flex-start;\\n    }\\n\\n    .paint-editor_controls-container_3HDxz {\\n        margin-right: .25rem;\\n        margin-left: .25rem;\\n    }\\n}\\n\\n.paint-editor_text-area_3VRLj {\\n    background: transparent;\\n    border: none;\\n    display: none;\\n    margin: 0px;\\n    opacity: .8;\\n    outline: none;\\n    overflow: hidden;\\n    padding: 0px;\\n    position: absolute;\\n    resize: none;\\n    -webkit-text-fill-color: transparent;\\n    text-fill-color: transparent;\\n}\\n\\n.paint-editor_button-text_2sm18 {\\n    width: 100%; /* Fixes button text wrapping in Edge */\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"editor-container\": \"paint-editor_editor-container_3ajxi\",\n\t\"editorContainer\": \"paint-editor_editor-container_3ajxi\",\n\t\"row\": \"paint-editor_row_1psvV\",\n\t\"editor-container-top\": \"paint-editor_editor-container-top_23HHq\",\n\t\"editorContainerTop\": \"paint-editor_editor-container-top_23HHq\",\n\t\"top-align-row\": \"paint-editor_top-align-row_2Ky-F\",\n\t\"topAlignRow\": \"paint-editor_top-align-row_2Ky-F\",\n\t\"mod-dashed-border\": \"paint-editor_mod-dashed-border_1xeKo\",\n\t\"modDashedBorder\": \"paint-editor_mod-dashed-border_1xeKo\",\n\t\"mod-labeled-icon-height\": \"paint-editor_mod-labeled-icon-height_3hBCl\",\n\t\"modLabeledIconHeight\": \"paint-editor_mod-labeled-icon-height_3hBCl\",\n\t\"button-group-button\": \"paint-editor_button-group-button_1gq5A\",\n\t\"buttonGroupButton\": \"paint-editor_button-group-button_1gq5A\",\n\t\"mod-start-border\": \"paint-editor_mod-start-border_jVIRO\",\n\t\"modStartBorder\": \"paint-editor_mod-start-border_jVIRO\",\n\t\"mod-no-end-border\": \"paint-editor_mod-no-end-border_XiRoc\",\n\t\"modNoEndBorder\": \"paint-editor_mod-no-end-border_XiRoc\",\n\t\"button-group-button-icon\": \"paint-editor_button-group-button-icon_3BPxO\",\n\t\"buttonGroupButtonIcon\": \"paint-editor_button-group-button-icon_3BPxO\",\n\t\"mod-mode-tools\": \"paint-editor_mod-mode-tools_1IXSj\",\n\t\"modModeTools\": \"paint-editor_mod-mode-tools_1IXSj\",\n\t\"mod-margin-after\": \"paint-editor_mod-margin-after_1OgHf\",\n\t\"modMarginAfter\": \"paint-editor_mod-margin-after_1OgHf\",\n\t\"controls-container\": \"paint-editor_controls-container_3HDxz\",\n\t\"controlsContainer\": \"paint-editor_controls-container_3HDxz\",\n\t\"canvas-container\": \"paint-editor_canvas-container_2rN98\",\n\t\"canvasContainer\": \"paint-editor_canvas-container_2rN98\",\n\t\"mode-selector\": \"paint-editor_mode-selector_1edhd\",\n\t\"modeSelector\": \"paint-editor_mode-selector_1edhd\",\n\t\"zoom-controls\": \"paint-editor_zoom-controls_3Qe--\",\n\t\"zoomControls\": \"paint-editor_zoom-controls_3Qe--\",\n\t\"color-picker-wrapper\": \"paint-editor_color-picker-wrapper_1IC0W\",\n\t\"colorPickerWrapper\": \"paint-editor_color-picker-wrapper_1IC0W\",\n\t\"canvas-controls\": \"paint-editor_canvas-controls_e2K-q\",\n\t\"canvasControls\": \"paint-editor_canvas-controls_e2K-q\",\n\t\"bitmap-button\": \"paint-editor_bitmap-button_GsX3L\",\n\t\"bitmapButton\": \"paint-editor_bitmap-button_GsX3L\",\n\t\"bitmap-button-icon\": \"paint-editor_bitmap-button-icon_wPoPh\",\n\t\"bitmapButtonIcon\": \"paint-editor_bitmap-button-icon_wPoPh\",\n\t\"text-area\": \"paint-editor_text-area_3VRLj\",\n\t\"textArea\": \"paint-editor_text-area_3VRLj\",\n\t\"button-text\": \"paint-editor_button-text_2sm18\",\n\t\"buttonText\": \"paint-editor_button-text_2sm18\"\n};\nmodule.exports = exports;\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction 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}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _reactRedux = require(\"react-redux\");\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _IntlProvider = _interopRequireDefault(require(\"./IntlProvider\"));\nvar Provider = function Provider(_ref) {\n  var store = _ref.store,\n    children = _ref.children;\n  return /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n    store: store\n  }, /*#__PURE__*/_react.default.createElement(_IntlProvider.default, null, children));\n};\nProvider.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  children: _propTypes.default.element.isRequired\n} : {};\nvar _default = exports.default = Provider;","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\\nbody {\\n    font-family: \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif;\\n    margin: 0px;\\n}\\n\\nbody, html, .playground_wrapper_27Lh0 {\\n\\theight: 100%\\n}\\n\\n.playground_playgroundContainer_3CQoG{\\n\\theight: 90%;\\n\\twidth: 90%;\\n\\tmargin: auto;\\n}\\n\\n#playground_fileInput_fFns4 {\\n\\tdisplay: none;\\n}\\n\\n.playground_playgroundButton_hZeTH {\\n\\tmargin: 4px;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"wrapper\": \"playground_wrapper_27Lh0\",\n\t\"playgroundContainer\": \"playground_playgroundContainer_3CQoG\",\n\t\"fileInput\": \"playground_fileInput_fFns4\",\n\t\"playgroundButton\": \"playground_playgroundButton_hZeTH\"\n};\nmodule.exports = exports;\n","// Synchronously load TTF fonts.\n// First, have Webpack load their data as Base 64 strings.\nlet FONTS;\n\nconst getFonts = function () {\n    if (FONTS) return FONTS;\n    /* eslint-disable global-require */\n    FONTS = {\n        'Sans Serif': require('base64-loader!./NotoSans-Medium.ttf'),\n        'Serif': require('base64-loader!./SourceSerifPro-Regular.otf'),\n        'Handwriting': require('base64-loader!./handlee-regular.ttf'),\n        'Marker': require('base64-loader!./Knewave.ttf'),\n        'Curly': require('base64-loader!./Griffy-Regular.ttf'),\n        'Pixel': require('base64-loader!./Grand9K-Pixel.ttf'),\n        'Scratch': require('base64-loader!./Scratch.ttf')\n    };\n    /* eslint-enable global-require */\n\n    // For each Base 64 string,\n    // 1. Replace each with a usable @font-face tag that points to a Data URI.\n    // 2. Inject the font into a style on `document.body`, so measurements\n    //    can be accurately taken in SvgRenderer._transformMeasurements.\n    for (const fontName in FONTS) {\n        const fontData = FONTS[fontName];\n        FONTS[fontName] = '@font-face {' +\n            `font-family: \"${fontName}\";src: url(\"data:application/x-font-ttf;charset=utf-8;base64,${fontData}\");}`;\n    }\n\n    if (!document.getElementById('scratch-font-styles')) {\n        const documentStyleTag = document.createElement('style');\n        documentStyleTag.id = 'scratch-font-styles';\n        for (const fontName in FONTS) {\n            documentStyleTag.textContent += FONTS[fontName];\n        }\n        document.body.insertBefore(documentStyleTag, document.body.firstChild);\n    }\n\n    return FONTS;\n};\n\nmodule.exports = getFonts;\n","module.exports = \"AAEAAAASAQAABAAgR0RFRvDX3ecAAAEsAAAFwEdQT1MvEF4NAAAG7AAA6sZHU1VCRDfqagAA8bQAABaAT1MvMmx0h2AAAQg0AAAAYFRURkG4URjDAAbmAAAAAf9jbWFwwp/+5AABCJQAAAouY3Z0IH+0EkYABtYcAAABdGZwZ206KI58AAbXkAAADW1nYXNwAAAAEAAG1hQAAAAIZ2x5Zi0YCicAARLEAATOUGhlYWQQlAHGAAXhFAAAADZoaGVhDLIUJwAF4UwAAAAkaG10eHvlIUEABeFwAAAynGxvY2Ed1/m0AAYUDAAAMrxtYXhwD5AQAwAGRsgAAAAgbmFtZaT1yjEABkboAAAGlHBvc3Sx9QeqAAZNfAAAiJVwcmVwNpqJYAAG5QAAAAD9AAEAAgAOAAADWgAAA6wAAgCMACQAPQABAEQAXQABAIIAmAABAJoAuAABALoBSQABAVUBVQABAVcCAAABAhcCFwABAiACIAABAigCKAABAj0CPQABAkACQAABAkICRQABAkcCSgABAkwCaQABAm4CcQABAnUDVQABA2AEhQABBKIEpgABBMEEwQADBMUExwABBMkEzAABBM4FEQABBRUFFQABBRgFVgABBVwFXAABBWMFZAABBWYFaQABBWsFcAABBXQFdAABBYcFlQABBZcG6wABBu4G7gABBvEHFwABBxoHJgABB0AHRAABB0gHSAABB1wHcQABB4UHiAADB4kHqwABB8QH0wABB9YH2wABB98H3wABB+MH5AABB+kH7AABB+4H9gABB/kH+QABCAUIBQABCAoICwABCA0IDgABCBAIEgABCBUIFgABCBsIPAABCEYIRwABCEwITwABCFEIUgABCFQIVQABCFgIWQABCFwIXAABCF4IXwABCGQIZwABCGkIaQABCHQIewABCH0IhQABCIYIjAACCI0JDgABCRAJEwABCRYJGQABCRwJHAABCSoJMQABCTMJMwABCT0JSwABCU4JTwABCVYJVgABCVwJXwABCWMJYwABCWUJZQABCW8JbwABCXIJcgABCXQJeAABCXoJfgABCYwJjQABCZcJmAABCZwJnAABCawJrQABCa8JrwABCbEJsQABCbMJswABCbcJtwABCboJugABCbwJvAABCcMJxQABCdYJ1gABCd4J5gABCegJ6QABCesJ7AABCsgKyAABCtYK1gABCtgK3wABCuIK4wABCuoK6wABCu8K7wABC4ALgAABC4ELiwADC4wLjAABC40LoAADC6ELogABC6MLswADC7gL3QADC94L3wABC+AL4QADC+IL4gABC+YL6gABC+sL7AADC+0L7QABC+4L7gADC+8MBAABDAYMDwABDBIMKQABDCwMLQABDC8MMQABDDIMMgADDDoMPAABDD4MPwABDEAMQQADDEIMRgABDEcMRwADDEgMSAABDEsMUwADDFUMVQABDFYMVgADDFcMXAABDGAMYAABDGMMYwABDGYMcwADDHQMdAABDHUMhwADDIgMiAABDIoMigABDJAMkQABABIABwAkACwANAA0AEIAQgBKAAEABwDzAPQIhwiICIkIigi/AAEABAABAVMAAQAEAAEBAgACAAYACgABATsAAQJ3AAEABAABAS0AAQAEAAEBIwABAAQAAAAUAAAA2AAAAPoAAAG4AAIAIAIoAigAAAuWC5kAAQucC7IABQu4C7sAHAvCC8QAIAvIC8kAIwvOC9EAJQvUC9UAKQvXC9cAKwvaC9oALAvdC90ALQvhC+EALgvrC+sALwvwC/AAMAv3C/wAMQv/DAQANwwGDA0APQwQDCYARQwoDCkAXAwsDC0AXgwvDDEAYAwzDDkAYww8DDwAagxJDEkAawxODE4AbAxVDFwAbQxgDGAAdQxmDG0AdgxvDHMAfgx1DHcAgwx5DIAAhgyCDIcAjgABAA8Lswu0C7ULtgu3DAYMDAwcDD0MbQxxDHYMegx+DIMAAgAfAVMBVAAABMEEwQACBuwG7AADBu4G8AAEBvsG/QAHBwgHCgAKBxgHGgANByUHJgAQB1YHVgASB4UHiAATCt4K3gAXC4ELlAAYC7wLwQAsC8ULxwAyC8sLzQA1C9IL0gA4C9YL1gA5C9gL2QA6C9sL3AA8C94L4AA+C+IL6gBBC+wL7wBKC/EL9gBOC/0L/gBUDAAMDwBWDBIMMQBmDDoMOwCGDD4MSACIDEsMTQCTDE8MYgCWDGYMhwCqAAEALAuVC5oLmwvTDAEMAgwEDAYMBwwJDAoMCwwMDA0MHAweDB8MIQwnDCgMKQxYDGsMbQxvDHAMcQxyDHUMdgx3DHkMegx8DH0Mfgx/DIAMggyDDIQMhQyGDIcAAQAAAAoANABuAARERkxUABpjeXJsABpncmVrABpsYXRuABoABAAAAAD//wADAAAAAQACAANrZXJuABRtYXJrABpta21rAC4AAAABAAAAAAAIAAEAAgADAAQABQAGAAcACAAAAAQACQAKAAsADAANABxv7pEglsC+1NFS0wLTytWC2Bbd8N6Q6MoAAgAIAAIAChumAAEDVgAEAAABpg/6BqYP+giGEAwP9BAMFpYJfBdmFrIWpAb0B64XZgloFrIJNBayB9wIRhb0D+oP6hdmFtwJcgiGCHQW7hbuFu4IhgiQECoQMAjiFpYWlhaWFpYWlhaWFqQXZhakFqQWpBakFrIWshayFrIWshayFrIW3Ak0Fu4W7haWFpYJQhdmF2YXZhdmFrIJXhayFqQWpBakFqQWpAlYF2YJaAloCWgJXgloCWgWshayFrIWpBb0FvQW9A/qFu4W3BbuFtwJcglyCXIWlhakFrIXFBdGFyIXYBcUCXwKaBcUCZIXRgrYFxQJ5BdGFzQKIgpoFyIKggrYCt4XYBciFw4XDg3gC1gNDg0kDXIN4A3mFMoUlg60FQgUvBSWDr4UyhaMFQgVCBDSFJYUyhS8DwQVCBaMFowUnBScEMwQzBDMEMwUyg/qFu4P6hbuD+oW7hbcFu4P9A/0D/QP+g/6EAwP+g/6EAwQKhAwF2AQRhciFpYWvBbGEMwUlhSWEFwUlhBcEGIUvBS8FJYWjBDMENIU5BDYEXIU9hScFPYVCBUIFQgWjBTkEYwSNhKcFJYUyhLWEtYU9haMFowS8BOaFQgT6BZ2FowWjBaMFJYUlhUIFJwUohS8FLwUvBTKFOQU9hUIFRIVEhaMFRIVEhUYFXoVyBZ2FowWlhaWFpYWlhaWFpYWlhaWFpYWlhaWFpYWpBakFqQWpBakFqQWpBakFrIWshayFrIWshayFrIWvBa8FrwWvBa8FsYWxhbGFsYWxhbcFu4W3BbuFtwW7hb0FyIXIhcOFw4XDhcOFw4XDhcOFw4XFBcUFxQXFBcUFxQXFBcUF0YXRhdGF0YXRhdGFyIXIhciFyIXYBdgF2AXYBdgF2AXYBdgFw4XDhcOFw4XDhcOFw4XDhcOFw4XDhcOFw4XDhcOFw4XDhcUFxQXFBcUFyIXIhciFyIXNBdGF0YXYBdgF2YXZhdmF2YXZhdmF2YXZhdmF2YXZhdwF4YXhheGF4YXhheGGLAYsBiwGLAXjBfWF9YX1hiwGLAYsBiwGLAYsBiwGLAYsBiwGLAX4BguGLAYthleGQwZXhleGV4ZbBm+Gb4Zvhm+Gb4ZyBouGi4aLhouGi4aPBpGGmQaqhq0G1oAAQGmAAUACQAKAAsADwAQABEAJAAlACYAJwAoACkAKgAuAC8AMgAzADQANQA2ADcAOQA6ADsAPAA9AD4ARgBZAFoAXABeAGMAbQB9AIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AkgCUAJUAlgCXAJgAmgCfAKAAvwDBAMIAxADGAMgAygDMAM4A0ADRANIA1ADWANgA2gDcAPAA9wD6APwA/gD/AQABAgENAQ8BEQETASMBJQEnATUBNgE3ATgBOQE6ATwBPgFCAUQBRgFVAVoBWwFcAV4BXwFgAWEBYwFlAWcBaAFrAWwBbgFvAXABcQFyAXMBdAF1AXcBeAF9AX8BggGEAYYBhwGJAZMBnQGeAZ8BpgGnAakBqgGsAa0BrwGzAbkBugG7AbwBvQG+Ab8BwgHLAdAB4wHlAfEB8gH3AfkB+gH7AfwB/QH+Af8CAAIBAgICAwIFAgYCBwIJAgoCCwITAhQCIAI/AkACRAJHAkkCUwJUAlYCVwJYAlkCYAJkAmYCcAJ1AngCeQJ7An0CfgJ/AoICgwKFAocCiQKLAo0CjwKQApECkwKVApcCmQKbAp0CnwKjAqQCqgKsAq0CrgKyArYCuQK7AsUCyALJAtcC2QLbAt8C4wLlAucC6wLtAu8C8QLzAvUC9gL3AvkC+wL9Av8DAQMDAwUDBwMJAwsDDQMPAxEDEwMVAxcDGQMbAx0DHwMhAyMDKQMrAy0DLwMxAzMDNQM3AzkDOwM9Az8DRQNHA0kDSwNNA08DUANRA1IDUwNUA2AEygTLBj4GPwZABkEGQgZDBkQGRQZGBkcGSAZJBkoGSwZMBk0GgAaBBoIGgwaEBoUGjgaPBpAGkQaaBpsGnAadBp4GnwagBqEGogajBrAGsQayBrMGtAa1BrYGtwbgBuEG4gbjBuQG5QbmBucG6AbpBuoHEwcUBxUHFgcXByAHIQciByMIjQiOCI8IkAiRCJIIkwiUCJUIlgiXCJoImwicCJ0IngifCKAIoQiiCKMIpAivCMcIyAjKCNQI1QjWCNcI2AjZCNoI2wjcCN0I3gjgCOEI4gjtCO4I7wjwCPEI8gj+CP8JAAkBCQIJAwkE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/+ICiv/sApX/4gKW/+wCl//sApn/7AKd/+ICnv/sAp//2AKg/+wCof/YAqL/7AK0/9gCtf/sAt3/2ALe/+wC7f/iAu7/4gLv/+IC8P/iAvf/4gL4/+wABgAF/+IACv/iAgb/4gIK/+IC7v/sAvD/7AAqAAX/sAAK/7ABnP/OAaIAMgGl/84Bu/+mAcD/xAHD/84B2//YAeD/7AHj/9gCBv+wAgr/sAJg/8QCZP+6Amb/ugKJ/84Civ/YApX/pgKW/9gCl//OApn/zgKd/84Cnv/YAp//xAKg/+wCof/EAqL/7AKl/+ICpv/sAqf/4gKo/+wCtP/EArX/7ALd/8QC3v/sAu3/pgLu/9gC7/+mAvD/2AL3/84C+P/YABkABf+6AAr/ugHb/84B4P/sAeP/zgIG/7oCCv+6AlH/7AJl/+wCZ//sAm//7AKK/84Clv/OApj/7AKa/+wCnv/OAqD/7AKi/+wCpv/sAqj/7AK1/+wC3v/sAu7/ugLw/7oC+P/OAA4BnP/sAaX/7AG7/+IBw//sAmT/9gJm//YCif/sApX/4gKX//YCmf/2Ap3/7ALt/+wC7//sAvf/7AAGAb3/4gHo/+wB7f/YAlv/7AJh/+wC+f/2ACoABf/iAAr/4gGc/+wBpf/sAbv/xAHA/9gBw//sAdv/7AHc//YB4P/2AeP/7AH1//YCBv/iAgr/4gJg/9gCZP/iAmb/4gKJ/+wCiv/sApX/xAKW/+wCl//OApn/zgKd/+wCnv/sAp//2AKg//YCof/YAqL/9gK0/9gCtf/2Atj/9gLa//YC3P/2At3/2ALe//YC7f/YAu7/7ALv/9gC8P/sAvf/7AL4/+wAEwAF/84ACv/OAdv/7AHc/+wB4//sAfX/7AIG/84CCv/OAor/7AKW/+wCmP/sApr/7AKe/+wC2P/sAtr/7ALc/+wC7v/YAvD/2AL4/+wAKwAF/+IACv/iAaIAMgG7/+wBvf/sAcD/2AHb/+IB4P/sAeP/4gIG/+ICCv/iAlH/9gJg/9gCZP/sAmX/9gJm/+wCZ//2Am//9gKK/+IClf/sApb/4gKX/+wCmP/2Apn/7AKa//YCnv/iAp//2AKg/+wCof/YAqL/7AKl/84Cpv/sAqf/zgKo/+wCtP/YArX/7ALd/9gC3v/sAu3/2ALu/84C7//YAvD/zgL4/+IAAQG9/+wAAQHo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AFkAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8QAAAAAAAAAAAAAAAAAAAAA/9gAAP/i//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ugAAAAAAAAAAAAD/2AAA/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+wAAAAAAAAAAAAA/+z/9v/s//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAA/+z/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAA/+IAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAA/84AAP/OAAAAMgAA/+L/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAA/+IAAP/Y/8QAAAAAAAAAAAAAAAD/xAAAAAD/zgAAAAAAAAAAAAAAAAAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4v+wAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nAAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAA/+wAAAAA/84AAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/84AAAAA/+z/7P/i/87/xP/EAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/OAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAD/xAAAAAAAAAAAAAAAAAAA/+z/7AAAAAD/9v/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/i/7AAAAAA/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAP/EAAAAAAAAAAAAAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/E/+wAAAAAAAD/ugAAAAAAAAAAAAAAAAAAAAAAAAAAADIAAAAAAAAAAAAA/7oAAP/i/+wAAAAAAAAAAAAA/+z/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAAAAAABQAAAAAAAAAAAAAAAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8QAAAAAAAAAAP/i/9j/9v+6/8T/2AAAAAAAAAA8AAAAAP/sAAAAAP/OAAD/ugAAAAoAAAAAAAD/7P/EABQAAAAAABQAAAAAAAAAAAAAAAAAAP/i/+wAAAAAAAAAAAAA/7oAFP+6AAAAAAAAAAAAAP/iAAAAAAAAAAD/4gAAAAAAAP+6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7AAAP+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAAAAAAAAAUAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/Y/+IAAAAAAAAAAAAAAAAAAAAA/+wAAAAA/8QAAAAAAAAAAAAA/84AAAAAAAD/7AAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/84AAAAAAAAAAAAAAAD/ugAAAAAAAP/sAAAAAAAAAAAAAAAAAAD/7P/EAAAAAAAAAAD/2P+w/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/E/87/2P/sAAD/ugAAAAAAAAAAAAD/7AAAAAAAAP/YAAAAAAAAAAD/zgAA/7oAAP+6/87/2AAAAAAAAAAA/+L/xAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP/E/84AAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAD/7P/sAAD/7AAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAP/i/84AAAAAAAAAAP/s/87/2AAAAAAAAAAAAAD/zgAAAAAAAAAA/+wAAAAAAAD/9v/2/+z/9v/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+IAAAAA/8QAAAAAAAD/7AAAAAAAAP/2AAD/4gAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAARgAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAABGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAABGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAA/+wAAP/E/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAD/xAAA/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zgAAAAAAAAAAAAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAA/+wAAAAA/+wAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAA//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAA/87/zgAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7oAAAAAAAAAAAAA/+L/ugAA//YAAP/OAAD/xP/YAAAAAAAAAAAAAP+6AAAAAAAAAAD/ugAAAAD/7P/s/87/sP/E/7oAAAAAAAAAAAAAAAD/7AAAAAD/4gAA/7oAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAA/+z/4gAAAAAAAAAA/7oAAP/EAAAAAAAAAAAAAAAUAAD/7P/YAAAAAP/s/8QAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/xAAAAAD/pgAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/iAAAAAAAA/+IAAAAA/9j/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP/i/+IAAAAAAAAAAAAAAAAAAAAA/84AAAAAAAAAAAAA/+z/4gAAAAAAAAAAAAD/2P/iAAAAAAAAAAAAAP+6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAP/s/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAD/7AAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAD/zgAAAAD/9gAAAAAAAP/sAAD/zgAAAAAAAAAA//YAAAAAAAAAAAAA/8QAAAAA/84AAAAA/7r/sAAA/8T/xP/Y/+wAAAAAAAAAAAAAAAAAAP/EAAAAAAAAAAD/ugAAAAAAAAAAAAD/zgAAAAAAAAAAAAAAAAAA/87/ugAAAAAAAP/EAAD/xP/EAAAAAAAAAAAAAP+6AAD/2AAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAP/YAAAAAAAA/+wAAAAAAAAAAAAAAAAAAP/s/84AAAAAAAAAAAAAAAD/2AAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/87/zgAA/+wAAP/EAAAAAAAAAAAAAAAAAAAAAAAA/+wAFAAAAAAAAP/sAAD/zgAA/+L/7AAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/87/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAD/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAD/9v/2AAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAP/OAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAA/84AAAAAAAAAAAAA/9j/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8T/2AAAAAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAP/sAAD/2P/2/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4v/iAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP+6AAAAAAAAAAAAAP/EAAAAAAAA/+wAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAA/+z/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAD/zgAAAAAAAAAAAAD/4v/iAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P+wAAAAAAAAAAAAAP/Y/+wAAP/i/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAA//YAAAAA//b/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAABGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/87/7AAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/34AAAAAAAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/fgAAAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAD/sAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAP/sAAAAAAAA/+wAAAAAAAD/zgAAAAAAAAAAAAAAAAAAAAD/ugAA/7oAAAAeAAD/zv/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zgAAAAD/2AAA/87/xAAAAAAAAAAAAAAAAP+wAAAAAP/OAAAAAAAAAAD/2AAAAAD/ugAA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AT4APQFCAUIAAwFDAUMAAgFEAUQABQFGAUYABAFVAVUACQFZAVkACgFaAVoAFwFbAVsADgFcAVwAEAFdAV0ADAFeAV4ACQFgAWAAVwFhAWEACQFlAWUAFwFmAWYACgFnAWcAVgFoAWgACQFsAWwAFwFuAW4AVAFwAXAAVwFxAXEADgFzAXMAVgF1AXUAEAF2AXYACgF3AXcADgF4AXgAFQF6AXoAFAF7AXsAAQF9AX0AFQF/AX8ATwGDAYMAFAGFAYUAAQGJAYkATwGLAYsAGAGNAY0AGAGPAY8AWAGSAZIAGAGWAZYADAGYAZgAGAGcAZwAJgGdAZ0AJQGeAZ4AMQGjAaUAJgGmAaYAGQGnAacAHwGpAakAMwGrAasAMgGsAawAJQGtAa0AEgGvAa8AGQGwAbAAMgGzAbMAGQG3AbcADQG5AbkAUwG6AboAMQG7AbsAJQG8AbwAHwG+Ab4AGQG/Ab8AEgHCAcIAEgHDAcMAJgHFAcUAJgHGAccADQHJAckAQgHMAcwAHgHNAc0AEQHOAc4AHQHPAc8AGgHTAdMAGgHXAdcABgHZAdkABgHbAdsAHgHcAdwAHAHdAd0ABgHeAd4AGgHfAd8AEQHiAeIAEQHjAeMAJAHlAeUAJAHmAecABgHpAekAHQHqAeoAUgHrAesAHgHxAfIAJAHzAfMAUgH0AfQAGgH1AfUAHAH3AfcAJQH4AfgAHgH5AfkAJwH6AfoACwH7AfsAJwH8AfwACwH9Af0AJwH+Af4ACwH/Af8AGwIAAgAACwIBAgMAOwIFAgYAIQIHAgcAPAIJAgoAIQILAgsAPAITAhMATgIUAhQATQIgAiAAEAJAAkAADgJDAkMAAgJEAkQAAwJFAkUAAgJHAkcAKQJIAkgAIgJJAkkAKAJKAkoAIAJOAk4AHQJQAlAADQJRAlEAOAJSAlIASwJTAlMAJAJUAlQAMQJWAlYAMwJXAlcASgJYAlgAMwJZAlkASgJaAloASQJcAlwASQJeAl4AMgJhAmEABgJiAmIADQJjAmMABgJkAmQAHwJlAmUAOAJmAmYAHwJnAmcAOAJoAmkAHAJqAmoADQJrAmsABgJsAmwADQJtAm0ABgJuAm4ADQJvAm8AOAJwAnAAMQJ1AnUAEgJ2AnYAEQJ3AncASwJ4AngAJAJ5AnkAUwJ6AnoABgJ7AnsAPgJ8AnwASAJ/An8ANwKAAoAALwKBAoEAMgKDAoMANwKEAoQALwKFAoUAGQKGAoYAGgKHAocAGQKIAogAGgKJAokAGQKKAooAGgKLAosAEgKMAowAEQKNAo0APgKOAo4AHgKSApIABgKTApMAMQKVApUAJQKWApYAHgKXApcARwKYApgARgKZApkARwKaApoARgKbApsANwKcApwALwKdAp0AEgKeAp4AEQKfAp8AEgKgAqAAEQKlAqUARQKmAqYAHQKnAqcARQKoAqgAHQKqAqoAGQKrAqsAGgKuAq4AEgKvAq8AEQKyArIAEgKzArMAEQK2ArYAEgK3ArcAEQK5ArkAMwK6AroAQgK7ArsAMwK8ArwAQgK+Ar4AHQLAAsAAHQLBAsEADQLCAsIABgLDAsMADQLEAsQABgLFAsUAGQLGAsYAGgLHAscAMgLPAs8ADQLQAtAABgLRAtEADQLSAtIABgLTAtMADQLUAtQABgLVAtUADQLWAtYABgLXAtcAHwLYAtgAHALZAtkAHwLaAtoAHALbAtsAHwLcAtwAHALfAt8AJQLgAuAAHgLjAuMAPgLkAuQASALlAuUANwLmAuYALwLnAucAGQLoAugALwLrAusANgLsAuwALgLtAu0ANgLuAu4ALgLvAu8AEgLwAvAAEQLxAvEANgLyAvIALgLzAvMANgL0AvQALgL4AvgALgL7AvsAEgL8AvwAEQL9Av0AAwL+Av4AAgL/Av8AAwMAAwAAAgMBAwEAAwMCAwIAAgMDAwMAAwMEAwQAAgMFAwUAAwMGAwYAAgMHAwcAAwMIAwgAAgMJAwkAAwMKAwoAAgMLAwsAAwMMAwwAAgMNAw0AAwMOAw4AAgMPAw8AAwMQAxAAAgMRAxEAAwMSAxIAAgMTAxMAAwMUAxQAAgMVAxUABQMXAxcABQMZAxkABQMbAxsABQMdAx0ABQMfAx8ABQMhAyEABQMjAyMABQMpAykABAMrAysABAMtAy0ABAMvAy8ABAMxAzEABAMzAzMABAM1AzUABAM3AzcAKQM4AzgAIgM5AzkAKQM6AzoAIgM7AzsAKQM8AzwAIgM9Az0AKQM+Az4AIgM/Az8AKQNAA0AAIgNBA0EADwNDA0MADwNFA0UAKANGA0YAIANHA0cAKANIA0gAIANJA0kAKANKA0oAIANLA0sAKANMA0wAIANNA00AKANOA04AIANPA08AGwNQA1AACwNRA1EAGwNSA1IACwNTA1MAGwNUA1QACwNgA2AANANhA2EAMATKBMsADgY+Bj8AFQZABkUABwZGBk0ACQZaBlsAFAZqBmsAAQZsBnEADAZyBnkACgZ6BnsAGAaABoUAFwaOBpEADgaaBqEAEAaiBqMAFQamBqcAFAaoBqkAAQaqBqsAGAawBrEAFQayBrcABwa4Br8AAQbABsEAFAbIBs8AAQbYBt8AAQbgBuEABwbiBuQAFQblBuYABwbnBuoACQbrBusAAQbxBvMAFAb6BvoAAQb+BwMADAcEBwcACgcPBxAAGAcTBxYADgcXBxcAVAcgByEAFwciByMAEAckByQAAQiGCIYAUAiNCJcAFgibCKAAIwihCKQACAjFCMYATAjHCMgAQAjJCMkAPwjKCMoAQAjLCMwAPwjUCN4ACAjiCOIACAjuCO4AOQjwCPIAOQjzCP0AEwj/CQMALQkFCQkALAkKCQ0ANQqlCqUAQQqnCqcAQQquCq4AQQACAgwABQAFADoACgAKADoADAAMAD8ADwAPACwAEAAQADsAEQARACwAJAAkAAkAJgAmAAUAKgAqAAUAMgAyAAUANAA0AAUANwA3ADIAOAA4AAwAOQA6ACIAPAA8ABkAPQA9AD0AQABAAD8ARABEAAcARQBFABQARgBIAAEASQBJABsASgBKACoASwBLABQATgBPABQAUABRAAYAUgBSAAEAUwBTAAYAVABUAAEAVQBVAAYAVgBWADkAVwBXACgAWABYAAYAWQBcABAAXQBdADUAYABgAD8AbQBtAEwAfQB9AEsAggCHAAkAiACIAFEAiQCJAAUAlACYAAUAmgCaAAUAmwCeAAwAnwCfABkAogCiAAEAowCoAAcAqQCtAAEAtAC4AAEAugC6AAEAuwC+AAYAvwC/ABAAwADAABQAwQDBABAAwgDCAAkAwwDDAAcAxADEAAkAxQDFAAcAxgDGAAkAxwDHAAcAyADIAAUAyQDJAAEAygDKAAUAywDLAAEAzADMAAUAzQDNAAEAzgDOAAUAzwDPAAEA0QDRAAEA0wDTAAEA1QDVAAEA1wDXAAEA2QDZAAEA2wDbAAEA3QDdAAEA3gDeAAUA3wDfACoA4ADgAAUA4QDhACoA4gDiAAUA4wDjACoA5ADkAAUA5QDlACoA5wDnABQA+AD4ABQA+QD5AAYA+wD7ABQA/QD9ABQA/wD/ABQBAQEBABQBBQEFAAYBBwEHAAYBDAEMAAYBDQENAAUBDgEOAAEBDwEPAAUBEAEQAAEBEQERAAUBEgESAAEBEwETAAUBFAEUAAEBFgEWAAYBGAEYAAYBHAEcADkBIAEgADkBIwEjADIBJAEkACgBJQElADIBJgEmACgBJwEnADIBKAEoACgBKQEpAAwBKgEqAAYBKwErAAwBLAEsAAYBLQEtAAwBLgEuAAYBLwEvAAwBMAEwAAYBMQExAAwBMgEyAAYBMwEzAAwBNAE0AAYBNQE1ACIBNgE2ABABNwE3ABkBOAE4ABABOQE5ABkBOgE6AD0BOwE7ADUBPAE8AD0BPQE9ADUBPgE+AD0BPwE/ADUBQgFCAAkBQwFDAAcBRAFEAFEBRQFFAAcBRgFGAAUBRwFHAAEBSQFJADkBXQFdAA8BXgFeADMBYQFhADMBZQFlAFABaAFoADMBbAFsAFABcQFxACMBdwF3ACMBeAF4AAsBeQF5ACsBegF6ABIBewF7ACkBfAF8AAIBfQF9AAsBfwF/AE0BgQGBACsBgwGDABIBhQGFACkBhgGGABIBiAGIABIBiQGJAE0BiwGLAAsBjAGMAEkBjQGNAD4BjgGPAAsBkAGQAEkBkQGRAAIBkgGSAAsBlAGVAAIBlgGWAA8BlwGXAAIBmAGYAAsBmQGaAAIBnAGcAB8BngGeAA4BowGjAB4BpQGlAB8BpwGnADABqQGpADEBrQGtAB4BrwGvABgBsAGwACEBtAG0AB4BtwG3AA4BugG6AA4BuwG7AE4BvAG8ADABvgG+ABgBwAHAACABwwHDAB8BxgHGACEByQHJAB0BywHMAAMBzQHNABcBzgHOAAoBzwHPABYB0AHQAC8B0QHTAAMB1AHUABcB1QHWAAMB1wHXAAoB2AHZAAMB2gHaAAoB2wHbABwB3AHcAC4B3QHdAAoB3gHeABYB3wHfAAMB4AHgAC0B4QHiAAMB4wHjABwB5AHlAAMB5gHmAC8B5wHnAAMB6QHpAAoB6gHqADwB6wHrAAMB7AHsAAoB8QHxABcB8gHyAAMB8wHzADwB9AH0AAMB9QH1AC4B9gH2AAMB+AH4AAMB+QH5ACIB+gH6ABAB+wH7ACIB/AH8ABAB/QH9ACIB/gH+ABAB/wH/ABkCAQIDADsCBgIGADoCBwIHACwCCgIKADoCCwILACwCDwIPACwCEwITAEwCFAIUAEsCQAJAACMCQwJDAAYCRAJEAAkCRQJFAAcCRwJHAAUCSAJIAAECSQJJAAwCSgJKAAYCTgJOAAoCTwJPAAMCUAJQAA4CUQJRADcCUgJSACcCVQJVAAMCVgJWADECVwJXABcCWQJZAAMCXQJdAAMCXgJeACECYAJgACACYgJiAA4CYwJjAAoCZAJkAEgCZQJlADcCZgJmAEgCZwJnADcCaAJoAA4CaQJpAAoCagJqAA4CawJrAAoCbAJsAA4CbQJtAAoCbgJuAA4CbwJvADcCcAJwAA4CcQJxAAoCdgJ2AAMCdwJ3ACcCeAJ4ADwCegJ6AAMCewJ7ACcCfgJ+AAMCfwJ/ABgCgAKAABYCgQKBACECggKCAC8ChAKEAAMChgKGAAMChwKHACcCiAKIADwCiQKJAB8CigKKABwCjAKMAAMCjgKOAAMCkAKQAAMCkQKRAA4CkgKSAAoCkwKTAA4ClAKUAAoClQKVAE4ClgKWABwClwKXAEcCmAKYAEYCmQKZAEcCmgKaAEYCmwKbABgCnAKcABYCnQKdAB8CngKeABwCnwKfACACoAKgAC0CoQKhACACogKiAC0CpAKkAAMCpQKlAEUCpgKmAEQCpwKnAEUCqAKoAEQCqgKqABgCqwKrABYCrQKtAAMCrgKuAB4CrwKvABcCsQKxAAMCswKzAAMCtAK0ACACtQK1AC0CtwK3AAMCuQK5ADECugK6AB0CuwK7ADECvAK8AB0CvQK9ADECvgK+AB0CwALAAAoCwQLBAEMCwgLCAB0CwwLDAEMCxALEAB0CxQLFABgCxgLGABYCxwLHACECyALIAC8CzALMAAMCzgLOAAMCzwLPAA4C0ALQAAoC0QLRAA4C0gLSAAoC0wLTAA4C1ALUAAoC1QLVACEC1gLWAC8C1wLXADAC2ALYAC4C2QLZADAC2gLaAC4C2wLbADAC3ALcAC4C3QLdACAC3gLeAC0C4ALgAAMC4gLiAAMC4wLjACcC5QLlABgC5gLmABYC5wLnABgC6ALoABYC6QLpAEIC6gLqAAoC6wLrAEIC7ALsAAoC7QLtAEEC7gLuAEAC7wLvAEEC8ALwAEAC8QLxAB4C8gLyABcC9AL0AAMC9QL1AA4C9gL2AAoC9wL3AB8C+AL4ABwC+gL6AAoC+wL7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G1wPUBPQG8ga0huwD1YPXBrSG7Aa0huwGtIbsBrwG84PYhNYGvAbzhquGkgZZF/gYARf4GAEX+BgBBm+G7YekhvUD2gPbh6SG9Qa9hziGvYc4g90E44a9hziD3oPgF9AXy5fQF8uHBYbCBwWGwgcFhsIHBYbCBwWGwgPhhv+F+QZpkwoGAhMKBsgGAIbIBgCGyAYAhtKD4wdtBu8GmwUfh0wHKwPkg+YD54PpBfkEiAachl2GZQdhF9SEzobMhrSGwgbIBrqX+AZgh3YHCgdJBrwG8hf4BwWHp5HYF9ATCgSyBysGjAduhmCTCgenhyaGWQdhBo8Hp5IJhvaYAQcmg+2GWQbCB2EG8hfQB02R2YPqmAED7AZjg+2EiAUYBo8D7weDhsaGaYdhBo8YAQaPBmmGwgPwhsyHbQa9hmCGYIdwBmyExwPwhp4QOIPyF9SHhQdchsyHSobCBR+X84duh26GngdHh0kGupf4BwWHp4a6l9AQOISyBysER4RWg/OD9QP2hQMD+AemA/mFHIbvF/OE74P8h2cGyAdMF/yHcwdzBxqHZZIJhPKYAQd6huYHeQazBgIFE4dxg/sEWAdbB1sEwQa2BsgGswdihKGGyAZZA/yHJQc4h6MGzgbXBgUD/gbzhxqGAgP/hAEEy4X5BmmF+QZphfkGaZMKBgIFkYduhtcHSQbthAKEBAdMF/OGuobCBsIHbobIB3MF+QQXhAWHXIQHBAiECgTvhAuEDQQOkDiG4YQQBBGEEwaMBsaHTAcrF9SGipfUhoqEFIQWBfkEF4b8hBkEGoQcB14GyAVyBukHBwTNBB2EHwQghCIEI4QlBCaEKAaeBxqGngbyBFaE8oQphCsHWATyhCyELgRABPKEL4QxBDKENBMKBJETCgSRBDWENwQ4hDoEO4Q9BFaHCgRWh3qEPoRABEGEQwZghR+HTAREhEYER4RJBEqETARNhE8EUIRSBFOEVQZgl9SG7xfUhu8GmwUfhsIGyASPhssEj4bLBR+HTBfzl/yGYgTsh26Hcwduh3MX+BgBB0wHKwdMBysHpgazEDiGAhA4hgIQOIYCBFaEWARZhFsFAwa2BFyEXgRfhGEHKwdxh4UG6oZmhg+GD4RihGQEZYRnBmUEaIRqBGuFHIRtBG6YAQcmhHAEcYRzBHSX1IbvF9SG7xfUhu8X1IbvF9SG7wRzBHSX1IbvF9SG7xfUhu8X1IbvBHMEdISAhf2GwgbIBsIGyAbCBsgGwgbIBsIGyAbCBsgEgIX9hmCGzgR2BHeEeQR6l/gYARf4GAEX+BgBF/gYARf4GAEEeQR6hquGngarhp4Gq4aeBquGngR8BH2EfwSAhwWGwgSCBMEEggTBBIIEwQSCBMEEg4SFBIaGAhMKBgITCgYCBIgHg4SJh4UHWAeFB4UHXIVyBrMGuod5BIsGjAeFB4UEjISOBI+X84SRBrYErAYbhJKGYId6hvIGzhfQF9qElAZZB0wE/QSVhJcG6QSYhJoHOJHYBJuE5oSdBJ6Hg4duhKATCgeDhu8GyYZiBmIE7ITshKGE8Rf8hKMFtwSkh1gEpgSnhLUEtoS4BKkEqoSsBK2ErwSwl9SG7wZghs4X+BgBBwWGwgcFhsIHBYbCBwWGwgcFhsIX1IbvF9SG7wabBR+EsgbpBquG8Id2BvIEs4cxBLOHMQZiBOyEtQS2hLgGq4bwhMcEuYa8BvOX1IbvF9SG7wbCBsgGwgbIBmCGzgZghs4X+BgBF/gYAQekhvUHpIb1BwWGwgcFhsIEuwS8hrqHeoS+BL+EwRfzhMKExBfUhu8FtwW4l/gYARf4GAEX+BgBF/gYARMKBgIExYZcB1mExwTIl9SGuoTKBrSX0ATjhOmEy4TNBM6HBYcKBsIE0ATRhuYE0wbpB6SG9RMKBgIG7weFB4UHhQZ7hwcG6QeFBssGywcmmAEG5gbpBvCE8QTUhz0E1gbzhlkHowdhF64Ge4TXhuYE2QYbhNqE2oZZBlkE3AcrBN2Gq4UTh2EHYQTfBN8E3wTghOIG7wbvBOOG5gbmBuYG5gTlBOaGwgVyBvOHPQZphboE6ATphOsE7ITshPcE9wT3BO4X+ATvmAEE8QTyhuYE9AT1hukE9wT3BPiE+gT7hP0E/oUABQGFAwa8BQSHC4UGBQYFB4WRhtuFDwV/hQkFSwUKhQwFDYUPBZSFEIVXBuMHeQbjBRIFE5IJhmOHhQUVBtEFFoUYBRmHC4UbBRyGY4d5BtcHTAclBrMHp4bpBrqSooUeBmOGnga6hp4GuQbnhfkGaYcHBq6FH4deBzWGyAbIB1aHNwUhBSKGvYcfBSQHeoUlhzWHCgcKBwoG7ZHZj+eG84UqBsyGzIdWh6eHCga2BScHNYcFhgCG4wUohSoFKgUrhS0FLoUuhTAFmoUxhTMFNIU2BTeFOQVShTqFXQVdBTwFPYeqhT8FQIVCBUOFRQVFBXUFRoVIBUmHagVLBUyFTgV8hU+FUQeUBYWFUoVUECCFkYVVhVcFmoV1BViFWgVbhV0FXoWIhWAFYYVjB4mFZIVmBWeFaQVqhWwFbYbzhW8FcJeuB2EG5gVyBuSG6pfZBvCFc4bmBXUFdoV4BYiFeYV7BY0FfIV+BzoFf4WBBYEFjQWNBYKFhAWEBYWFhYWHBYiFigWLhY0FjoWahZAHqoWRhZMFlIWWBZeFmQWah1yG5IWcBZ2FnwWghb6FogWjhuqFpQWmhagFqYWrBayFrgWvhsIGyAbCBsgFsQWyhbQFtYW3BbiFuhfZBquG8Ia6h3qFu4W9BrqHeoW+hsUFwAXBhcMFxIZghs4HdgbyBcYFx4XJBcqFzAXNhcwFzYXPBdCF0gXTh0kG7YXVBdaGvAbzhdgF2YXbBdyF3gXfl/gYARf4GAEX+BgBF/gYAQenhuYHp4bmB6SG9QXhBeKF4QXiheQF5Ya9hziF5wXohr2HOIa9hziF5wXol9AXy4XqBeuF7QXuhfAF8YcFhsIHBYbCBfMF9IcFhsIHBYbCB14HNYX2BfeF+QZphfqF/AcrB3GHKwdxkwoGAgbIBgCF/YX/BsgGAId6l8uGaYYCBu8G0oenh6eHp4enh6eHp4enh6eX1JfUhgOGD4YIBgUGBoYIByaHJocmhyaHJocmkwiTCIYJhgsGDIYOBlkGWQZZBlkGWQZZBlkGWQYPh1sGEQYShhQGFYYXBhiHYQdhB2EHYQdhB2EHYQdhGAEHC4ZmhhoGG4YdEqKSopgBGAEYARgBGAEYAQachh6GIAYhhiMGJIaPBo8GjwaPBo8GjwaPBo8GcQYmBieGKQZphmmGaYZphmmGaYZphmmGZQYqhiwGLYYvBjCGMgYzh6eHp4cmhyaGWQZZB2EHYRgBGAEGjwaPBmmGaYZUhlSGVIZUhlSGVIZUhlSGNQY2hjgGOYY7Bl8GPIY+BlkGWQZZBlkGWQZZBlkGWQY/hkEGQoZEBkWGSIZHBkiGawZrBmsGawZrBmsGawZrBkoGS4ZNBk0GToZQBlGGUwenh6eGVIZUhlSHp4ZUl9SX1IZWF9SGV4ZZBlkGWQZZBlkGWoZcBl2HWwZfB2EHYQdhB2EHYQdhBmCGYIdEhmIGjwaPBo8GjwZjhmOGjwaPEwoTCgZlBmaGaAZrBmsGawZphmsGbIZuBm+GcQZyhnQGdYZ3BniGegbthnuGzIbsBsyHp4dNhn0GfoaABoGGgwaEhoYGh4aJBoqGlQaMBz0HBAdWho2Hp4enh6eHp4enh6eHp4enh2EHYQdhB2EHYQdhB2EHYQaPBo8GjwaPBo8GjwaPBo8HYQdhB2EHYQaPBo8GjwaPBpCGkgaThpUGloaYBpmGmwachp4HGoafhqEGooakBqWGpwaohqoGq4atBq6HbQawB4UGsYazB3YHdgd2BrSX+Bf4B6eGtga3hrkGuQenh50GvAa6h3YGvAa9hr8X85D3BsCX1IbCBsOHBYbFBsaHLIbOBtcYAQbIF/yGyYbLBsyGzgbPhtcG0QbShtKHKwbUBtWG1wbXBtuG1wbYhtoHOgbbht0G3obgBuGG4wbyBvIG8gbsBuSG5gbnhueHNYbpBukG6obsBu2G84bvBvOYAQbwhvIG84b1BziSCZLJhwuG9ob4BvmG+wb8hv4G/4cBBziHBAcEBwQHBAcEBwQHBAcChwQHBAcEBwWHBYcHBwoHCgcKBwiHCgcKBwuHC4cLhwuHDQcNBw0HDQcNBw0HDQcNBw0HDocQBxMHEwcTBxGHEwenmAEHp4cXhxeHF4cXhxeHF4cXhxSHF4cWBxeHGQcZBxqHHAc3BzcHNwcdhzcHHwcgh1yHXIdchyIHI4dch1yHXIdch1yHXIdch1yHXIdch1yHXJIJhyUHJocoBz0HPQc9BymS25LbktuHLhLbhy+HKwcsktuS24cuBy+YARgBGAEYARgBGAEYARgBBzEYARgBBzKHNAc0BzQHNAc0BzWHNwc3BzcHNwc3BziHOIc4hziHOgc7hz0Hp5EBhz6HQAdBh0MHRIdGB0qHR4dJF/gX+AdKh0wHTYdPB1CHUgdTh1UHVodYB1mHWwemB1yHXgdfh2EHYodkB2cHZZIJh2cHaIdqB2uHbQduh3AHfwdxh3MHdJKqF9SX84d2B3eHeQd6l9kYAQenh3wHfYd/B4CHggeCB4OHhQeGh4gHiYeLB4yHjgePh5EHkoeUB5WHlweYh5oHm4edEqEHnoegB6GHowekh6YHp4epB6qHrAetgABAUr/HgABAY7/IwABAXcAAAABAUL/PAABAAL/UAABAU//IwABAS7/IwABAIj/IwABAYT/IwABAVH/IwABAIf/IwABAQT/EAABARr/IwABAN7/IwABAXD/HgABAR7/EAABAQT/IwABAPP/IwABAVAAAAABAYsAAAABAPL/QAABAVYAAAABAPT/QAABAXX/EAABAXwAAAABAXD/PgABAg0AAAABAhQAAAABAV8AAAABAUAAAAABAhEAAAABAT//QwABAN8AAAABAbsAAAABAUD/RAABAREAAAABAUr+6QABAR/+6QABAVIAAAABApAAAAABAhcAAAABAV0AAAABAloAAAABAggAAAABAXgAAAABAiEAAAABASz/JgABAP//NAABAnH/EAABAi//EAABAZkAAAABAPv/EAABAYj/PgABAVP/RAABAVL/BgABARX/CwABAdf/PgABAaT/RAABAS//HgABAP//HgABAVz/PgABASf/QwABAXv/PgABAUP/RAABAiH/BgABAbX/CwABAXP/HgABARz/HgABARr/PgABAPn/RAABAU3/PgABASH/QwABAbn/PgABAXT/RAABAW//PgABAUb/QwABAfsAAAABAYYAAAABAfv/PgABAYb/RAABAWX/BgABASb/CwABAXn/PgABATv/RAABAXP/BgABAT3/CwABAYn/PgABAVf/RAABAWH/PgABATn/QwABAdz/PgABAZP/RAABAWEAAAABATkAAAABAQ7/PgABAN//RAABAQ3/LgABAOL/MQABAUv/LgABASH/MQABAZ4AAAABAUf/PgABAR//RAABAfQAAAABAgAAAAABAdAAAAABAYIAAAABAWwAAAABAVQAAAABAXT/LgABATn/MQABAUr/RgABAR//RgABALH/RgABAIr/RgABAYr/RgABATD/RgABAY7/RgABAT3/RgABAXD/RgABAS3/RgABAZYAAAABAZb/RgABAV7/RgABAST/RgABAToAAAABAN7/EAABAW4AAAABATD/IQABAQoAAAABAX4AAAABAQj/EAABANQAAAABAYT/EAABAbP/EAABAWAAAAABAT3/nAABARMAAAABALz/EAABASYAAAABAMAAAAABAW8AAAABAR0AAAABAO0AAAABAKIAAAABAQL//wABAIkAAAABAhr/PAABAjL/EAABASn/EAABAwn/PAABAyH/EAABAo//EAABAZoAAAABAYr/HgABA/8AAAABA9EAAAABA2AAAAABAU3/EAABASX/jAABAPT/UgABAXb/EAABAbH/lwABAV4AAAABASz/LgABAO7/MQABAMcAAAABAeUAAAABAeX/EAABARz/MAABAOUAAAABAOIAAAABAUgAAAABASz/MAABAJL/PAABAYH/EAABAQf/EQABATv/IwABALcAAAABAVj/EAABAdv/EAABAUkAAAABAbEAAAABANX/EAABALUAAAABALX/EAABAPP/EAABAMD/hwABAMD/EAABAPsAAAABAO7/EAABART/qQABAQX/EAABAPH/EQABASgAAAABASMAAAABAUMAAAABARj/IwABAOAAAAABAN0AAAABAswAAAABAsX/EAABAsz/qQABAiIAAAABAV//EAABApD/9gABAkz/EAABAbQAAAABAQMAAAABAT7/EAABAM4BHwABAIoAjwABAQYBHwABAEIAjwABAKsAkAABAFgBHwABALEBHwABASz/9gABAXj/EAABAPT/MwABAO//EAABAPkAAAABARX/EAABAQL/EAABAUQAAAABAXn/EAABAbgAAAABAI7/MwABAOL/bwABAXIAAAABAT8AAAABATb/hQABAOcAAAABAP4AAAABANcBHwABASUBHwABANEBHwABAN8BHwABAK0BHwABAQMBHwABAPEBHwABAHMBHwABAAEAtQABANoBHwABASYBHwABAQABHwABAOMBHwABANsBHwABALcBHwABAO8BHwABAS4BHwABALsBHwABAR4BHwABANMBHwABAMABHwABALoBHwABAKQBHwABAKEBHwABAF0ApAABALYBHwABAMUBHwABAIEBHwABAFkAjwABAJABHwABATUBHwABAKoBHwABAKUBHwABAPwBHwABAK0AjwABAPIAjwABALcAjwABAFr/oAABAMT/oAABAKr/oAABAPz/oAABAK3/EAABAMb/EAABAPL/EAABALf/EAABAUMDCwABANIBHwABATUAAAABARj/MQABAMoBHwABALkBHwABAK8BHwABAKYBHwABAGgBHwABAMIAjwABAM0AmgABAIoBHwABAGwBHwABAJIBHwABATUAjwABAM0AjwABANYBHwABAMYBHwABAPQAjwABAJ4AjwABAFgAjwABAH0AjwABAMkBHwABAM0BHwABAKsBHwABAJ4BHwABAJoAjwABALMA6wABAKoAjwABAMQBHwABAUL/RgABAUX/RgABAUL/ZQABAUX/ZQABARz/EAABAVcAAAABAVf/RgABASf/RgABAVf/ZQABASf/ZQABAVf/EAABASf/EAABAVf/OAABASf/OAABAS3/OAABASz/OAABAS3/PgABASz/PwABAS3/EAABASz/EAABAQgAAAABAXP/RgABATz/RgABAXP/EAABAXP/PgABATz/PgABALH/QQABAIr/QQABAU//RgABARj/RgABAU//ZAABARj/XwABAS7/RgABAIj/RgABAS7/awABAIj/aQABAS7/OAABAIj/OAABAcX/RgABAd7/RgABAYT/RgABATv/RgABAYT/XAABATv/WgABAYT/OAABATv/OAABAVH/RgABAIf/RgABAVH/YQABAIf/ZwABAQT/RgABAPP/RgABARr/RgABAN7/RgABARr/awABAN7/ZAABARr/OAABAN7/MQABAXD/OAABAS3/MQABATP/RgABAQX/RgABAdEAAAABAdH/RgABAZP/RgABASz/RgABAPT/RgABAPQAAAABAGb/EAABAcIAAAABAawAAAABAacAAAABAaoAAAABAh4AAAABAhkAAAABAg8AAAABAg4AAAABAcYAAAABAlsAAAABAlkAAAABAmQAAAABAlgAAAABAmIAAAABAl4AAAABAboAAAABAdsAAAABAdQAAAABAdIAAAABAm4AAAABAmwAAAABAjsAAAABAjwAAAABAkgAAAABAl8AAAABAncAAAABAckAAAABAmkAAAABAmcAAAABAj8AAAABAkQAAAABAjIAAAABAk8AAAABA1wAAAABA1cAAAABA8wAAAABA9QAAAABA70AAAABA8AAAAABA8MAAAABBBwAAAABBBcAAAABBLYAAAABBLUAAAABBLIAAAABBLEAAAABBKkAAAABBCUAAAABBDIAAAABBMgAAAABBKMAAAABBKsAAAABBJAAAAABBJgAAAABATL/HgABAUwAAAABA2MAAAABATv/EAABAXsAAAABAXkAAAABAcgAAAABA8EAAAABALEAAAABASUAAAABATH/EAABAbkAAAABAccAAAABAYwAAAABAZMAAAABAZP/HgABAd0AAAABAa4AAAABAdcAAAABAbIAAAABA+QAAAABALv/oAABAMP/oAABAMX/oAABALH/oAABALr/oAABAMYAAAABAR//MAABAN7/MAABAYf/PgABATz/QwABAU//PgABARj/QwABAR//PgABAO7/QwABAYEAAAABAQ8AAAABAZ0AAAABAXUAAAABATgAAAABAW//PAABAYT/PAABAWoAAAABAeQAAAABAaAAAAABAZwAAAABAZ//EAABAcMAAAABAbwAAAABAT0AAAABAgn/BgABAaL/CwABAiv/BgABAbz/CwABAXX/PgABATz/RAABAX7/PgABAU7/RAABAY4AAAABAcf/OwABAWsAAAABAXEAAAABAwcAAAABAPoAAAABAS4AAAABAZAAAAABAjgAAAABAYn/VgABAXMAAAABAYQAAAABAQQAAAABAeYAAAABARkCygABAS0AAAABALH/HgABATz/EAABAYj/EAABASwAAAABAO4AAAABAR4AAAABAQwAAAABAIwAAAABAIz/HgABAQ4AAAABAKwAAAABABH/EAABANYAAAABABr/EAABAFv/oAABAIj/MQABABEAjwABAIz/QQABAIz/RgABAnUAAAABAoEAAAABAPUAAAABAUUAAAABAIj/EAABAeT/EAABATf/EAABAScAAAABAIgAAAABAd4AAAABAR8AAAABASr/EAABARgAAAABATsAAAABAIcAAAABAQr/EAABAR//HgABASz/HgABAI//EAABAUf/EAABAIr/HgABAS3/HgABATQAAAABARL/HgABARIAAAABAXAAAAABAQ0AAAABATb/EAABATYAAAABASkAAAABAPgAAAABAPj/HgABANgAAAABAUv/IwABAUsAAAABARf/XQABAJr/HgABAJoAAAABAH3/XQABARYAAAABARb/IwABAPf/IwABAOEAAAABAXoAAAABAUL/IwABAUL/XAABAPwAAAABAP0AAAABAUL/dwABAQf/IwABATEAAAABAOgAAAABAOb/EAABAOb/IwABATD/HgABAQYAAAABAY0AAAABAQUAAAABAPcAAAABAPMAAAABAFoBHwABADIBdAABAQcAAAABAXH/KQABAsb/PgABAWf/OwABAXT/OwABASAAAAABAXj/PgABAWgAAAABAcUAAAABAWX/PgABAYkAAAABAT3/EAABAlf/QwABATX/QwABATr/QwABARsAAAABAS//EAABAOkAAAABAXYAAAABAMsAAAABAcwAAAABAUIAAAABATMAAAABAPIAAAABANUAAAABAagAAAABAUn/QwABASsAAAABAS//QwABAOQBHwABAMMBHwABAOQAAAABAUcAAAABAYgAAAABAAL/PAABARAAAAABAU0AAAABAT//9gABAU8AAAABAZgAAAABARwAAAABATwAAAABAgUAAAABANkAAAABAMwAAAABAd4CIgABAekCHAABARr/EAABATcAAAABAM7/oAABALb/oAABAFj/oAABATf/oAABAM3/oAABAFn/EAABAJ7/oAABAJD/oAABAPMBHwABATcBHwABAI0BHwABAIABHwABAX8CygABAOoAAAABAUUCywABAOoCygABA6gBaQABAucAAAABAnIAAAABAIoAAAABAVEAAAABAUEAAAABATIAAAABAJgCFwABAMcBHwABAYACygABAjMAAAAEAAAAAQAIAAFM3gAMAAFNBAIWAAEBAwAnACsALwAyADcARwBLAE8AUgBXAJQAlQCWAJcAmAC0ALUAtgC3ALgA0ADRAOYA5wD6APsA/AD9AP4A/wEAAQEBDQEOAQ8BEAERARIBIwEkASUBJgEoAVgBWgFkAWUBbAFwAYsBmAG2AbcBuwHXAmkCpALPAtAC6gMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDYANhA6EDogOjA6QDpQOmA64DrwPGA8cDyAPJA8wDzQPOA+ED4gPjA+QD7wPwA/sD/AP9A/4D/wQABAEEAgQNBA4EMgRUBGUEfQSjBP0FHAUgBSQFKAUsBTQFPgVDBW0FjwW0BbUFtgW3BbgFuQW6BbsFvAW9BcwFzQXOBc8F0AXRBdIF0wXUBdUF4AXhBeIF4wXkBeUF5gXnBfQF9QX2BfcF+AX5BfoF+wYSBhMGFAYVBhYGFwYYBhkGOAY5BmIGYwZkBmUGZgZnBmgGaQZ6BnsGfAZ9Bn4GfwaABoEGggaDBoQGhQaqBqsGyAbJBsoGywbMBs0GzgbPBvgG+Qb6ByAHIQdCB2MHZQffB+QH7gfvB/AIBQgRCBYIHwhHCFEIUghkCGUIggiICIoIiwiMCKEIowi1CLcIxwjICMkIygjLCNQI1QjWCNcI2AjZCNoI2wjeCO4I8AjxCPIJLgmtCboJvAnfCeEJ5gnrCtYK2QvKAQMCXALaA3ZANALyAxYexEAWQEZABEA0QDRANEA0QDRARkBGQEZARkBGAlwDFgLaHsQDdkAWA3ZAFgN2QBYDdkAWQDRARkA0QEZANEBGAvJABALyQARABAIIAoYC2kA0QDQC8kBGQEYC2kA0AvJARkBGHsRANEBGAxZANEBGQDRARkA0QEZANEBGQDRARkA0QEZANEBGAvJABAJcAlwDFgN2A3ZAFkA0QEZANEBGQDRARgJcAlwDFkA0QEZANEBGAtoexEA0QEZANEBGQDRARkA0QEYDdgLyHsQCDkA0AhQCGgIgAiYCLAIyAjgCPgJEAkoCUAMWAlYCXAMWAlwDFgJcAxYCXAMWAlwDFgLaHsQC2h7EAtoexALaHsQC2h7EA3ZAFgN2QBYDdkAWA3ZAFkA0QEZANEBGQDRARkA0QEYC8kAEAvJABALyQAQC8kAEHsRABAJiAtQCaAJuAsICdAJ6AoBARkBGQEZARkBGQEYChgKMApICtgKYAp5ARkBGAqQCqgKwArYCvALIAsICyALOAtQC2gLgAuYC7EAEHsQC8gL4A3ZANEA0A3YC/gMEA3YDCkAWAxADFkAWQBYDHAMiAygDLgM0AzQDOgM6A0ADQANAA0ADQANGA0YDRgNGA0YDRgNGA0YDRgNMA0wDTANMQDQexANSA1gDXgNkA2oDcAN2A3YDfAABAdQBZQABAL8BDQABAM0BwQABAFgBwQABASkBDAABAO4B9QABAPMB9QABAK4B9QABAP8B9QABALcB9QABAMoBwQABAMYBwQABAH0BwQABAMwBwQABAW4BZQABAcoBZQABAl4BZQABAlwBZQABAlsBZQABAmUBZQABAmIBZQABAbsBZQABAdEBZQABAm0BZQABAjoBZQABAjsBZQABAdIBZQABAc0BZQABAmwBZQABAmsBZQABAmgBZQABAmcBZQABAl8BZQABAcsBZQABAc8BZQABAXcBZQABAdwBZQABAa0BZQABAMYAQgABARoBZQABAwYBZQABAekBZQABARkBZQABAoIBDQABAUcBDQABATcBDQABA1EBDQABAe0BDQABAgQBDQABAqQBDQABASkBHwABATIBHwABAOIBHwABAUIBHwABAOYBHwABANkBDQABAMwBDQABAM0AQgABAFgAQgABAH0AQgABAI0BwQABAQwBZQABAAABZQAEAAAAAQAIAAFH3gAMAAFJfgJuAAIAZQAkAD0AAABEAF0AGgCCAJgANACaALgASwC6AUkAagFVAVUA+gFXAgAA+wIXAhcBpQIgAiABpgI9Aj0BpwJAAkABqAJCAkUBqQJHAkoBrQJMAmkBsQJuAnEBzwJ1A1UB0wNgBIUCtASiBKYD2gTFBMcD3wTJBMwD4gTOBRED5gUVBRUEKgUYBVYEKwVcBVwEagVjBWQEawVnBWkEbQVrBXAEcAV0BXQEdgWHBZUEdwWXBusEhgbxBvoF2wb+BwcF5QcLBxcF7wcbByQF/AdAB0QGBgdIB0gGCwdcB3EGDAeJB6sGIgfEB9MGRQfWB9sGVQfkB+QGWwfpB+wGXAfuB/AGYAfyB/YGYwf5B/kGaAgFCAUGaQgKCAsGaggNCA4GbAgQCBIGbggVCBYGcQgbCDwGcwhGCEcGlQhMCE8GlwhRCFIGmwhVCFUGnQhYCFkGnghcCFwGoAheCF8GoQhkCGcGowhpCGkGpwh0CHsGqAh9CIUGsAiLCQ4GuQkQCRMHPQkWCRkHQQkcCRwHRQkqCS8HRgkxCTEHTAk+CUsHTQlOCU8HWwlWCVYHXQlcCV8HXgljCWMHYgl0CXgHYwl6CX4HaAmMCY0HbQmXCZgHbwmcCZwHcQmsCa0HcgmvCa8HdAmxCbEHdQmzCbMHdgm3CbcHdwm6CboHeAm8CbwHeQnDCcUHegnWCdYHfQneCeYHfgnoCekHhwnrCewHiQrICsgHiwrWCtYHjArYCt0HjQrfCt8HkwriCuMHlArqCusHlgrvCu8HmAuAC4AHmQyIDIgHmgyKDIoHmwyQDJAHnAedOyAehCB8GtYgmjt8ENobKiCgJH4kriCmI+ggrDuOJXo7jiV6III7Dj0iJYYfPiCaI7IcdCFmIEZKUCE2IWw7OkpoJLoldCV0IUIhciE8IXg7siEkJPAhSCF+OvwheCEqHyARTBciIMoWOBY4FjgPPBLAJKIPQiB8FkoWShZKHFAWVhZWFlYQvBUMD0gWYhZiFmIPThuED1QWjBaMFowb9hGyH3QhThY+Fj4WPg9aEsYPYA9mSlAWUBZQFlARWBdkF2QXZBFkHaYcCBZoFmgWaA9sExo7shaSFpIWkhv8E0QhMBM4Hn4Pch54FkQPeCFmGsQayhrEGsoPfg+EGsQayg+KITYVDBT0D5APlhruGvQcRA+cIJohbBZKFlAWGhYgD6IPqA+uD7QQ2hYgFrAWthsqJLoPug/AHtIPxh7MFlwgoCV0D8wU+g/SD9gXZCSuIUIXrA/eD+QgpiFyIKYhciCmIXIgpiFyFjIWkiCsIXgWMhaSF1IgrCF4FfAV9hZuFnQWYhZoHz4YwBucFnoleiFIG5wWehvGG8wbxhvMIIIhfhvGG8w7Djr8D+ofgDsOOvwcAhwID/AP9haYFp4P/BACFowWkj0iIXgRmhGgEbITRBBcHGgcbhAIEA4caBxuEBQQGhAgECYQLBAyFmIWaCCCIX4QOCBMHRwQPh0uEEQfFBBKOyAehCBeEFAgmhx0Gyo7jiCgJK4lhiPoIKwQVjuOEOwlehVOOw4jshD4IJogcCR4ELwQXBBiEGgQbhB0EHokxiFOIWAguCTqEIAekBCGJDwXrBUwI/QYxhCMO7IQkjuyIUgkxhJ4GNgfsCTqEgwfIBCYEJ4QpBCqELAcUBDIELYkciCCIKAQvCR+EMIWJhDIEM4Q1BDsOyAgXh6EIF4j7iCaHxQ7fBDaEOAQ5iPiI+gbKjuOEOwleiB8Ow4Q8hD4IJoSohD+EQQRChEQERYRHCWAHM4RIiFmESgXmhEuJFohbBE0O6AROhFAGJAkTiRUF6Y7siA6ISRKUBFGFyIYQhFMGLo7siQeJB4U1hFSIL4YciRCSlARWBF2EV4YbCF+JXQRZCV0EWoRcBF2EXwRghGIEY4RlBGaEaARmhGgEaYRrBGyE0QamiR4F2QcdBG4Eb47ICFmO447sj0iIXgWShHEFlARyh00EioSSBHQEdYR3BHiF5oR6BHuI9wX+hH0EfoSABIGIHASDDuOO7ISEhh+EhgSHjUuEiQdNBIqJHIXfBIwEjYcMhI8EkIk8BUSGKISSBJOHz4SVCSoIMQSWhJgIBxKXCAcEmYStBemIHwXpha8F6YcyBJsEnIXpiB8SlA7DhJ4I7IXIiOyFyIWLEpuHxQSfh/yEoQStBjYErQkuhKKEpASihKQIKASlhKcI+4YkBKiIXgSqCP0O44SrhK0E6ofMh8gIKASujteEsASxiAWGIoSzBLSH/Ig0BLYEt4S5BLqEvAS9h7eISoS/BMCEwgTDhuEExo7jjuyExQTGhMgEyYTLBb+EzITOBM+E0QTShNQN24TVhNcE2IVEhiiE2hKbhNuE3QgXiE2IFITejUcE4AkciFmE4YTjBOSE5gTnhhmGtYTpCCaJOoj0BOqOyAhZhOwE7YTvBPCE7wTwhPIE84T1BPaFjgWPhPgE+YT4BPmE+wT8hP4E/4eeBZEIJohbBQEFAoUEBQWFBwUIhQcFCIUKBQuFDQUOhZKFlAUQBRGIKAldDuOO7IUTBRSFFgUXhRYFF4UZBRqFHAUdhZiFmgUfBSCFHwUghSIFI4UlBSaIEwj9D0iIXgUoBSmFKwUshSsFLIUuBS+FMQUyhTQFNYjshciFNwU4hToFO4U9DsOOvwhMBa8IF4hMBT6FQAgahUGFWYVDCBwIF4hMCTAFRIgQCSoHHQVGB0KF0YkfiCgFR4VJBUqFTAVNiCsHpA7jjLQFTwVQhcoIBwVSCF+FU4VVBdwFVoVYDsOJHgf8iOyJOofjCDKHt4e3iEqISoVZhx0IMQVbEp6FXIVeBV+FYQVihWQFZY1+hWcFaI0khWoFa4WOBY+FlYXZBZiFmgWjBaSFbQVuhXAFcYcDhwUFcAVxhXMFdgV0hXYFd4V5BXqJPAWGhYgGzwbQjuOO7IV8BX2FfwWAhYIFg4WFBYaFiAWJhYsFjIWkhY4Fj4eeBZEFkoWUBruGvQWVhdkHswWXBZiFmgWbhZ0G5wWehaAFoYWjBaSFpgWnhakFqoWsBa2FrwWwhbIFs4cdCDKFtQW2iCaIWwW4Bb4FuAW+BbmFuwW8hb4Hw4W/iFCGHgXBBcKITw7ICB8FxAgpjsOIX4gyhcWGKIehD0iJYYgmhccJH4ldB+SJPAleiFII7IXIiFmJPAk8BcoH2gYfiEwF7gg0BesJOokwCEGF7hKaEpWH6QfpCF4Fy4XLiV0JDwaHBc0FzohchdAF0YXRhdGIXgheCRIO7IXTBdSGEIYchdYGHIYchhyF14XXiFmIWYhfhdkF2QhBhdkF2oXcCF4JAAheB+kHyAXdhd8IMoXgiEqISoXvhe+F4gXjheUF5okwBegF6YldBesF7IXuBe+F74XyhfEF8oX0BfWF9wX4hfoF+4X9B0KF/oX+hgAGAYjoBgMGBIYEhgYGB4YJBqgGlgafBgqGDAhGEpQIRgYNhg8HHQYQhhIO7IgXiFIN24YThhUGFodChhgGGY7skpQJXQ7jhhsGHIfdCEwIHwj6Bh4O7IgHCB8IBw7jiTwHz4fIBh+GIQYihiQISogviC+JAwYlhicGKIYqBiuGLQgOhi6ISoY2BjYGNgYwBjGIXgYzBj2INYg1iQMGNIY2BjeGOQhKhjqIMohGBjwGPYY9hj8GQIZCBkIGQ4ZFBkaGSAlJhkmGSwZMhk4GT4ZRBlEGUoZUBlWGVwZYhloGW4ZhhmGGiIZdBl6GYAZhhmMGeYZkhpGGZgZnhmkGpoacBmqGpoZsBm2GbwamhoiGmQZwhnIGc4Z1BnaGeAZ5iDoGewlDhnyGfgZ/h9WGgQaCiF4GhAaFhocJDwhJCQAIEYhNjs6SmghQiEkGiIaKBouGjQaOhpAIQAaRhqaI6AaTBpSGlIjoBpYGl4aZBpkGpoamhpqGnAadhp8GoIaiBqaGo4alBqaGqAaphqmGqwashq4Gr4gRh6EIEYehCBGGsQayhrQITYa1iE2GtYhNhrWITYa1iE2HFAa3BriGuggmiFsIJohbBruGvQa+hsAGwYbDBsSGxgbKiS6Gx4bJBsqJLobKiS6IKAldBswGzYbPBtCJK4hQiSuIUIgpiFyG0gbTiCmIXIgpiFyG1QbWiPoITwbYBtmIKwheCCsIXggrCF4G2wbcht4G34bhBuKG5AblhucG6IbrhuoG64btCV6IUgbuhvAJXohSBveG+QggiF+G8YbzBvSG9gb3hvkG+ob8DsOOvw7Djr8Ow46/Bv2G/wcAhwIPSIheBwOHBQcGhwgHCYcLBwyISocOBw+Hz4fIBxEHEocUBxWHFwcYhxoHG4cdCDKHHQgyiS6HHocgByGHIwckh2yHbIduB24HbgduB2+Hb47IDsgHJgcnhykHKocsBy2HLwcvBzCHMIcwhzCJHgkeBzIPbI2QhzOHegd6B3uHe4d7h3uHfQd9BzUHqIc2hzgNTQc5hzsHPIc+Bz4HP4c/hz+HP4dBB0EIJodCiBSHRAdFh0cHSIdIh72HvYdKB0oHSgdKB0uHTQdOh1AHUYdTB1SHVIdWB1YHVgdWB1eHV4fRB1kHWodcB4kHiQeKh4qHioeKh4wHjAfFB12HXw1NB2CHYgdjh2UHmwebB2aHZoelh6WHaAdoB2mHaYdrB2sHyYfJh2yHbIduB24HbgduB2+Hb4dxB3KNoQd0B3WHdweqB3iHegd6B3uHe4d7h3uHfQd9B36HgAeBh4MHhIeHh4YHh4eJB4kHioeKh4qHioeMB4wHjYePB5CHkIeSB5OHlQeWh5gHmYebCTGHmwech5yHngefh6EOyAeih6WHpAelh6cHpwgQCB8I+geoh6oHq4etB66HroewB7GHswe0h7YHt4e5B7qHvAe8B72HvYe/B8CHwgfDh8UIFIfGh8mHyAfJh8sHywfMh84Hz4fRB9KH1AfUB9WH1wfYiE8H2gfbiFyH24fdCAcH3ofgB+GJLokriFCH4wgyh+SH5gf/h+eH6QfqiQMH7Afth+2H7Yfth+8H7wfvB+8H8Ifwh/CH8IfyB/IH8gfyB/OH84fzh/OH9Qf1B/UH9Qf2h/aH+Af4B/mH+Yf7B/sH/IgrB/4H/4gBCAKIBAgFjaiIBxKXCAiICggLjaiIDQgOiBAIEYgTCBSIFgkciO+IF4gZCBqJK4kriSuIKY7jjuOJXogcCB2O447jiWGJVAgrCB8JK4grCCCIIg7fCCOIJQ7ICCaIKA9IiCmIKwgsiEGIQYguCC+IMQgyiDQINYhBiEGIQYg3CDiIOI7siDoIO4hBiEGIQAhBiD0IQYg+iEAIQYhBiEMIRIhGCFCIUIhQiFyIR4hJCTwJPAhKiEwITAhNiFyITwheCFmIXg7skpoIUIheCFIIX4hTiFUIVohYCFmIWwhciF4JXQheCHqIX4hhCGKIZAhliGcIaIhqCGuIbQhuiHAIcYhzCHSId4h2CHkId4h5CHqSyJLIiHwSyIjiCOOIfYjlCOUIfwjmiICIggjiCIOIhQiGiIgIiYiLCIyIy4iOCJoIj4iRCJKIlAiViJcInoiYiJoIm4ihiJ0InoieiKGIoAihiKGIoYijCKSIuAiyCKYIuAi4CKeIuAiyCKkIrYiqiKwIrYivCLCIsgiziLUNvwi2iLgIvIi5iLsIvI29iL4Iv429iL+NvYjBDb2NvYi/jb2NvYjBCMKIxAjIiMWIxwjIiMoIy4jNCM6I0AjRiNMI1IjWCNeI2QjaiNwI3YjfCOCI4gjjiOUI5ojoCOmI6wjsiO4I74jxCPKI9Aj1iPcI+4j4iPoO447jiPuO44j9CP6JAAkxiQGJFokDCQSJBgkHiQkJCokMCQ2JDwkQiRIJFokTiRUJFokYCRmJGwkciR4JH4khCSKJJAkliScJKIkqCSuJLRKUCS6OzokwCTGJMwk0iTYJN4k5CTkJOok8CT2JPwlAiUIJQ4lFCUaJSAlJiUsJTIlOCU+JUQlSiVQJVYlXCViJWglbjS8JXQleiWAJYYljCWSJZg2tAABAUYDlQABAfECygABAYQDlQABAYkDlQABAYsCygABAR8C5QABAR8DNwABAb8CGwABATEC5QABAR8CrgABAUYCzQABAXsDlwABAR0C6AABAWwDrQABATADXQABASACrgABASAC6AABAZQDnAABAS4C7QABAZQDlwABAS4C6AABALEDlQABAIgC5QABAIgCrgABALEDlwABAZgC6AABAJIDrQABAJMDrQABAIgD2wABARoDrQABAXIDXQABATsCrgABAXID5gABATsDNwABASMDlwABAO4C6AABANsC/QABAW4C1AABAUcDvgABAR8DvgABAcMDrQABAbgC/gABAUwCygABAToCygABAcgCygABAIsDRgABAS4CygABARgCygABASQDkAABAToDIgABARoDIgABAUoDIgABAIsDIgABATYDRgABAPQC+AABAS0C/QABAPIC+AABAVYCGwABAIsC4AABATYC4AABATEDIgABATYDIgABAZMDIgABATcDrQABALEDkAABAd0CygABAXwCygABAT0DrQABAT4DrAABAZQCygABAZEDrAABAVkCygABAXACygABAUoCygABAZoCygABAVQCygABAg0CygABAhQCygABAV8CygABAbYCygABAUACygABAUQCygABAS8C/QABAQACGwABAYcCGwABAVMCGwABAVEC/QABAPoCGwABAQ4CGwABAYwCGwABASAC4AABAN8C/gABAIgC4AABAawCGwABAbsCGwABATsC+AABARYC/gABAQgC/QABAUACGwABAREDXgABAOUCtQABAdcDrQABAZMC/gABAdcDkAABAZMC4AABASQDrQABAcsDrQABAeUC/gABAYgDrQABAU0C/gABAUIChAABApACygABAhcCGwABAV0CygABAloCygABAggCGwABAoECygABAiECGwABASwDWQABAP8CmwABAYgC9wABAT4CygABAUoDrQABAQ8C/gABAi8CGwABAZkCGwABAYgDogABAVMC/QABASwC+AABATUCygABAVICygABARUCGwABAaQCGwABAVwCygABAScCGwABAIcC+AABAbUCGwABAYYCygABAPkCGwABAXQCGwABAUYCGwABAfsCygABAYYCGwABAbgDrAABAYkC/QABAXkCygABAXMCygABAVcCGwABAWECygABAUYDrAABAUYDkAABAR8C4AABATADrAABASAC/QABAX4DkAABAR4C4AABAbgDkAABAYkC4AABAS8DkAABAP8C4AABAYgDXQABAU0CrgABAYgDkAABAU0C4AABAYkDhQABATEC4AABAUEDhQABAPoC4AABAT4DXQABAT4DkAABAQgC4AABAT4DrQABAQgC/gABAWEDkAABATkC4AABAN8CGwABAbQDkAABAZAC4AABAUsCygABATECygABARACGwABAcYC+AABAZ4CGwABAfQCygABAbkCGwABAgACygABAdACGwABAYICygABAVQCGwABATkCGwABAUYD3QABAR8DOAABAUYD0QABAR8DLAABAUYEDAABAR8DZwABAUYEGgABAR8DdQABAUYD8QABAR8DTAABAUYEEwABAR8DbgABAUYEGAABAR8DcwABATAD3QABASADOAABATADlQABASAC5QABATAD0QABASADLAABATAEDAABASADZwABATAEGgABASADdQABALED3QABAIgDOAABAYkD3QABATEDOAABAYkD0QABATEDLAABAYkEDAABATEDZwABAYkEGgABATEDdQABAY4DrQABAT0C/gABAY4D3QABAT0DOAABAY4DlQABAT0C5QABAXID3QABATsDOAABAZYDrQABAV4C/gABAZYD3QABAV4DOAABAZYDlQABAV4C5QABAZYCygABAV4CGwABASQD3QABAQgDOAABASQDlQABAQgC5QABAToC+AABAUICygABATUC+AABAXsDUgABAW4CygABAQ0CygABAbADGwABATwCygABARgC/gABAIwC+AABARoC/gABAgQCygABAbMCGwABAWACygABARMCygABASECygABALwC/gABASYCygABAMAC/QABAR0C/QABAO0ClAABAKIC+AABAXUC+AABAQIC+AABAIkCygABA/YDrQABA8sC/gABA1oC/gABAqAC6AABAZgC+AABA5AC6AABAv4C6AABAXID+QABATsDSgABAXIEGQABATsDagABAUYD+QABAUYD7wABAR8DSgABAcMDXQABAbgCrgABAawCygABAYkDXQABATECrgABASUDrQABAQUC/gABA/YCygABA8sCGwABA1oC+AABAZQDrQABAS4C/gABAeUCygABAU0CygABAYQDrQABAUYDrQABAR8C/gABAR8C7QABATADrQABASAC/gABALEDrQABAIgC7QABAYkDrQABATEC/gABAYkDnAABATEC7QABAPQC/gABAT8DnAABAPQC7QABAXIDrQABATsC/gABAXIDnAABATsC7QABARwCygABAOoCGwABAXcDrQABAIkD2wABAXYCygABAbEC+AABAV4CygABAS8C+AABAUYDlwABAR8C6AABAYkD+QABAYkDlwABATEC6AABAYkD7wABATEDSgABAQgCrgABAMsClAABAeUC+AABAR0C+AABAOUCygABASAC+AABAQgCGwABATcC/QABATsC/QABAMYC+AABALcC+AABAVgC+AABAdsCGwABAbECGwABAY4CGwABANUC+AABALUCGwABAIgC/gABAMACGwABAMAClAABAQgDCwABAPsCGwABARQCGwABAN0C+AABAPECGwABAYkC1QABASgCGwABASMC/QABAUMCGwABARgCGwABAOACGwABATcC/gABAN0C/QABAugC+AABAswC+AABAiIClAABAdQC/QABApMClAABAlYC/QABAakC+AABAYQC+AABAQMCygABAT4CGwABAFkC5wABAM0C6gABAJ8CYgABAIoCYgABALoCYgABAQYCYgABAKwCYgABALACYgABAJAC6gABASwC/QABAa8CygABAXgC+AABAYMCygABAO8CGwABAPkCygABARUC/gABAQIC/QABAUQCGwABAPwCGwABANUCGwABAXkCGwABAQ0CGwABAWsCGwABAbgCGwABASYCGwABAOMCGwABAI4CGwABAOICGwABAQQCGwABAOECGwABAXICGwABAT8CGwABAd4CGwABARkCGwABATsBDQABATICGwABATYCGwABAZACGwABATYCmAABAXACGwABAOcCGwABAP4CGwABANQCywABAUMCywABANUCywABAOwCywABAMUCywABAK8CywABAQYCywABAHMCywABAF8CywABAN8CywABAGACywABASoCywABAPwCywABAP8CywABAOMCywABANACywABAM8CywABALcCywABAPACywABATICywABAR4CYgABANkC5wABAK4C5wABALsCYgABALYCYgABAJQCYgABAF0CYgABAFoC5wABATwCYgABAIECYgABAM0BwAABANkCYgABAG0CqwABAKkCYgABAKUCYgABANUC6gABAK0CYgABAMYC6AABAPICYgABALcCYgABAJ8A4wABAKkA4wABANUBawABAK0A4wABAPIA4wABALcA4wABAT4AAAABANICYgABAKYCGwABAMoCYgABALkCYgABAK8CYgABAMYC6gABAKYCYgABAKcC6gABAMQCYgABAFoCYgABAGwCYgABAFgC5wABAJICYgABATUCYgABANYCYgABAMYCYgABAPQC5wABAJ4CYgABAFgC6gABAH0CqwABAMkCYgABAMcCYgABAM0CYgABAKsCYgABAJoCYgABALMCYgABAKoCYgABAMQC6gABAUgDlwABAXsDrQABAR0C/gABAWwDlwABAWwCygABASAC4QABATADmQABASAC6gABATADnAABASAC7QABASoDlwABAQEDoQABAZQDXQABAS4CrgABAXcDlwABAIkDxQABAXcDkAABAIkDvgABAXcCygABALEEGQABAIgDagABAVcDrQABAIoD2wABAJMDXQABAIgDiwABAcsDlwABAeUC6AABAYQDlwABATsC6AABAYkEIAABATEDcQABAYkEBQABATEDVgABAYkDkAABATEC4QABAYkDmQABATEC6gABAT8DrQABAU4C/gABAU4C6AABAT8DlwABAPQC6AABAT8DXQABAPQCrgABAR0DrQABAPMC/gABAR0EBQABAPMDVgABAR0DlwABAPMC6AABARoDlwABAKcDXAABAXIDkAABATsC4AABAXIDlQABATsC5QABAXIEIAABATsDcQABAXIEBQABATsDVgABATMDlQABAQUC5QABATMCygABAdcDlwABAZMC6AABATADlwABAQ4C6AABATADkAABAQ4C4AABASQDlwABAQgC6AABASMDrQABAO4C/gABASMCygABAKcDWAABAZMDNwABAQgDNwABAR8DGAABANsDoQABAb4CygABAcICygABAaYCygABAagCygABAaMDKgABAaYDKgABARoDDAABARoDBwABAiECygABAhECygABAcoCygABAl4CygABAlwCygABAlsCygABAmUDKgABAmIDKgABAIsDDAABAIsDBwABAIsDXAABASkCygABAboCygABAdsCygABAdQCygABAcsDKgABATEDBwABAbsCygABAdECygABAm0CygABAmsCygABAjoCygABAjsCygABATYDDAABATYDBwABATYDXAABAkgCygABAl8CygABAncDKgABAckCygABAmkCygABAj8CygABAkQCygABAjIDKgABAk8DKgABARoC/QABAIsC/QABATEC/QABATYC/QABAToDDAABAToDBwABAToDXAABAxICGwABAw0CGwABA4sCGwABA3MCGwABA3gCGwABA3oCGwABAUoDDAABAUoDBwABAUoDXAABA9MCGwABA80CGwABBG0CGwABBGwCGwABBGkCGwABBGgCGwABBGACGwABAZMDDAABAZMDBwABAZMDXAABA9wCGwABA+kCGwABBH4CGwABBFoCGwABBGICGwABBEcCGwABBE8CGwABAToC7QABAToCrgABAToC/QABAToC5QABAUYDnAABAUYDXQABAUgCygABAxkCGwABAUoCGwABAUoC/QABAUoC5QABAc8CygABA3cCGwABAIsC7QABAIsCrgABAIsDCgABAIsC5QABAIsDXQABALEDnAABALEDXQABASACygABASUCygABATYC7QABATYCrgABATYDCgABATEDDAABATYC5QABATYDXQABASQDnAABASQDXQABAbkCygABAZkCygABAZMCGwABAZMC/QABAZMC5QABAdwCygABAa0CygABAdcCygABAbICygABA5oCGwABALsA4wABAMYA4wABALAA4wABALYA4wABAMYCGwABAQwCygABATICygABAR8C+AABAKcC+AABAYcCygABAR8CygABAYECygABAQ8CGwABAZ0CGwABAQcCGwABARICygABAXUCGwABAToDawABAToDiQABAIsDawABAIsDiQABATYDawABATYDiQABAIsDuQABAIsDtwABATYDuQABATYDtwABAW8CygABAWoCygABAeQCygABAaACGwABAZwCygABAZ8CGwABAcMCygABAT0CygABAgkCygABAaICGwABAisCygABAXUCygABATwCGwABAX4CygABAU4C+AABAY4CygABAccCygABAWsCygABATcCygABAwYCygABAPoCygABAZ0CygABAkUCygABAXsCygABAR0CygABAekCygABASEAAAABARkAAAABATACygABALECygABAJMCygABAYQCygABAOgCGwABATAC+QABASwCGwABAP8CGwABAO4CGwABAR4CGwABAQwCGwABAQ4C+AABAKwC/QABAFgBXgABANYC/QABAFgA4wABAFgCYwABAFgCYgABAIgCGwABAnUCGwABAoICGwABAPUCGwABAUcCGwABAU4CGwABAQUCGwABATcC+AABAQsC+AABAeUCGwABAIoC+AABAPQCGwABAUgC/QABAYMAAAABASkC/QABAQoCGwABAR8CGwABASACGwABAIgC+AABATsCGwABAPMCGwABARMCPwABARIDFAABARIDEQABARIDIgABARIC9AABARIDFwABARIC0gABARICPwABARIDWwABARIDqgABARIDCQABAX4CPwABAXADFAABAQ0CPwABATkDFAABATkCPwABATkDIgABATkC/QABASkDIgABAPMDEQABAPMC9AABAPMDFwABAPMC0gABAO8CPwABAUYCPwABAUYDEQABAUYDIgABAUYCRwABAUYC/QABATICPwABATIDIgABAJoDFAABAJoDEQABAJoDIgABAJoC9AABAJoDDAABAJoDFwABAJoC0gABAJoCPwABAJoDCQABAH0DIgABARcCPwABAH0DFAABAH0CPwABAOECPwABAXoCPwABAUIDIgABAUIDCQABAUIDFQABAUIC9AABAUIDFwABAUIDJgABAUIC1gABAUQCQAABAUIDFAABAUIDDQABAYMCPwABAP0CPwABAUICPwABAQcDFAABAQcDJgABAQcCPwABAOYDFAABAOYDIgABATECPwABATADFAABATADEQABATAC9AABATADFwABATADIgABATAC0gABATACPwABATADWwABATADCQABAQYCPwABAY0CPwABAY0DFAABAY0DIgABAY0C9AABAY0DFwABAQUCPwABAPcCPwABAPcDFAABAPcDIgABAPcC9AABAPcDFwABAPMCPwABAPMDFAABAPMDIgABAPMDDAABAFgC3QABAvwBdAABAOYCygABASQCygABAcsAAAABAXECygABAsYCygABAWcCygABAXQCygABAQcCygABAXgCygABAWgCygABAcsCygABAWUCygABAT0CGwABAlcCGwABATUCGwABARsDAAABAOkCGwABAXgCGwABAMsCygABAcwCGwABAFYC+AABALEC+AABATMC+AABAPICGwABAIsCGwABAagCGwABAUkCGwABASsCGwABAYMCGwABAS8CGwABAOQCYgABAMMCYgABAOQCygABAUcCygABAYgCygABAJICygABAMwCGwABARAC+gABAU0CGwABAT8C/QABAOYAAAABAUYDbwABAS8CygABAVcCygABAZ4CygABAIkC+AABATACGwABAToCGwABAfkCGwABANkC+AABAMwC+AABAd4ABwABAekAAQABARoCGwABATcCGwABAFkBaAABAFoBaAABAFgBaAABATwA4wABAM0A4wABANkA4wABAJ4A4wABAG0BLAABAPMCywABATcCYgABAI0C5wABAIAC5wABAX8AAAABAYUCygABAUAAAQABAYUAAAABASQAAAABADQBaQABAj4BUwABAiMBWQABAu8CygABAIgC6AABAT8CygABAPcCygABATYCygABAOL//AABAMkCywABAYAAAAAEAAAAAQAIAAEqBAAMAAEqZAUyAAIA2wAkAD0AAABEAF0AGgCCAIcANACJAJEAOgCTAJgAQwCbAJ8ASQCiAKcATgCpAK0AVACzALgAWQC7AL8AXwDBANEAZADUAOcAdQDqAOoAiQDsAOwAigDuAO4AiwDwAPIAjAD1APUAjwD3APgAkAD6AQEAkgEEAQoAmgENARIAoQEVASYApwEoAT8AuQFIAUkA0QFVAVUA0wFXAVsA1AFeAV8A2QFiAWcA2wFpAWoA4QFsAWwA4wFuAW4A5AFwAXEA5QFzAXMA5wF2AXcA6AF+AX8A6gGEAYQA7AGLAYsA7QGTAZMA7gGYAZgA7wGbAZsA8AGfAaIA8QGpAakA9QGrAasA9gGuAa4A9wG1AbcA+AG5AbsA+wG+Ab4A/gHJAckA/wHOAc4BAAHXAdcBAQHZAdoBAgHcAdwBBAHeAd4BBQHpAekBBgHtAe4BBwHwAfABCQH1AfUBCgH5AgABCwIXAhcBEwJCAkUBFAJMAkwBGAJOAk4BGQKTApQBGgKXApcBHAKkAqQBHQKpAqkBHgK4ArwBHwK/AsABJALPAtABJgLYAtgBKALaAtoBKQLcAtwBKgLqAuoBKwL9AyUBLAMnAzYBVQNBA0QBZQNPA1QBaQNgA2EBbwNwA3ABcQOPA48BcgOqA6wBcwOuA70BdgPCA8kBhgPPA9ABjgPTA90BkAPfA98BmwPhA+wBnAPvA/ABqAP1A/UBqgP3BAQBqwQKBA4BuQQUBBQBvgQWBBcBvwQcBCABwQQoBCgBxgQuBC4BxwQyBDIByAQ1BDUByQQ8BDwBygRGBEYBywRUBFQBzARWBFYBzQRZBFsBzgRlBGUB0QRrBGsB0gR9BH0B0wR/BIEB1ASEBIUB1wSjBKUB2QTGBMYB3ATMBMwB3QTaBNsB3gThBOEB4ATmBOYB4QToBOsB4gT9BP4B5gUJBQwB6AUOBQ4B7AUYBRgB7QUaBSgB7gUqBTAB/QUzBTUCBAU5BTkCBwU7BTwCCAU+BT4CCgVCBUcCCwVJBUoCEQVNBVMCEwVWBVYCGgVcBVwCGwVjBWMCHAVpBWkCHQVsBXACHgV0BXQCIwWIBYgCJAWMBYwCJQWOBZACJgWiBaICKQWmBacCKgWrBdgCLAXaBjwCWgZGBk0CvQZUBlkCxQZiBmkCywZyBoUC0waOBpEC5waqBqsC6wa4Br8C7QbIBs8C9QbnBusC/Qb2BvoDAgcEBwcDBwcTBxcDCwcgByEDEAdAB0MDEgdIB0gDFgdiB2MDFwdlB2cDGQfZB9kDHAffB98DHQfkB+QDHgfqB+wDHwfuB/ADIgfyB/YDJQf5B/kDKggFCAUDKwgKCAsDLAgNCA4DLggQCBEDMAgVCBYDMggbCCADNAgxCDEDOgg5CDkDOwhGCEcDPAhNCE8DPghRCFIDQQhVCFUDQwhYCFkDRAhcCFwDRghkCGcDRwh0CHsDSwiACIUDUwiLCJcDWQiaCKEDZgijCKMDbgilCLUDbwi3CL4DgAjACMsDiAjNCNEDlAjTCNsDmQjeCN4DogjgCOADowjiCOwDpAjuCO4DrwjwCQ4DsAkQCRMDzwkcCRwD0wktCS4D1AlOCU4D1gl6CXoD1wmMCY0D2AmYCZgD2gmcCZwD2wmsCa0D3AmvCa8D3gm3CbcD3wm6CboD4Am8CbwD4QnWCdYD4gnfCeYD4wnrCesD6wrWCtYD7ArYCtsD7QrfCt8D8QriCuMD8grqCuoD9ArvCu8D9QyIDIgD9gyQDJAD9wP4EtoJ/A0sEqQLdgmuCbQLBBIUDJYMnBJKDIoSdBNcC1gTXA0sC2oLTAt8DTIJugnACxYJzAvWCagMqBK2C9wTMgu4DK4SJhImC74S7AusEoYTbgugC7gLxAvKEsgL4gumCdgJxgneCdIS2hLaEtoS2hLaEtoNLAt2C3YLdgt2EhQSFBIUEhQSdBNcE1wTXBNcE1wLfAt8C3wLfAsWC9YL1gvWC9YL1gvWDKgL3AvcC9wL3BKGE24TbhNuE24TbgviC+IL4gviCd4J3hLaC9YS2gvWEtoL1g0sDKgNLAyoDSwMqA0sDKgSpBK2C3YL3At2C9wLdgvcC3YL3At2C9wJtAu4CbQLuAm0C7gJtAu4CwQMrhIUEhQSFBIUEiYSFAyWDJwLvhJKEuwSShLsEkoS7BJKEuwSdBKGEnQShhJ0EoYH8hNcE24TXBNuE1wTbg0sC8QNLAvEDSwLxAtqC8oLagvKC2oLygtqC8oLTBLIC0wSyBLIC3wL4gt8C+ILfAviC3wL4gt8C+ILfAviCboJ2AsWCd4LFgnMCdIJzAnSCcwJ0gtqC8oH+ApQB/4IBAr+CwQS2gn8C3YJzAsEE1wSFAycDIoSdBNcC1gLTAsWCcASFAsWC9AJxggKE24MxhNuC3YLahIUEhQMlhLaCfwLdgyKCwQTXAtYDSwLTAnAC9YL3BNuC6AMqAneCcYL3AvKEiYSJgneCboJ2Am6CdgJugnYCxYJ3ggQDIoLrBLaC9YLdgvcDSwMqAsWDK4SFBIUEtoL1hLaC9YLdgvcE1wTbgneCd4J3hK2EtoL1hLaC9YS2gvWEtoL1hLaC9YS2gvWEtoL1hLaC9YS2gvWEtoL1hLaC9YS2gvWC3YL3At2C9wLdgvcC3YL3At2C9wLdgvcC3YL3At2C9wSFBIUEiYTXBNuE1wTbhNcE24TXBNuE1wTbhNcE24TXBNuC3wL4gt8C+ILFgneCxYJ3gsWCd4LTBLICBYLfBLaC9YSFBNcE24LfAviC3wL4gt8C+ILfAviC3wL4hLaC9YS2gvWCbQLuAycC74TXBNuE1wTbgm0C7gSdBKGEtoL1hLaC9YLdgvcC3YL3BIUEhQTXBNuE1wTbg0sC8QNLAvEC3wL4gt8C+ILBAyuCcwS2gvWC3YL3BNcE24TXBNuE1wTbhNcE24LFgneEtoNLAyoEkoLTAt8C3YL3A0sC8QLFgneCCgIHAu4CCISJggoDRQILgviDRQNFA0UE1wINAg6DHIIQAmWCEYITAhSCFgJSAyoCF4MqBImDSwNLBNcC7gJugnYCGQIaghwCHYIfAiCCdIIiAiOCI4IlAiaCKAIpgisCLIIuAi+CMQIygjQCNYI3AjiCOgI7gj0CPoJSAk2CQAJBgkMCYQJEgkYCR4JJAkqCZAJMAk2CTwJQglICU4LgglUCVoJYAlmC0AJbBKGCXILoAmoErYTMgu4C74LoAl4CX4JhAmKDHIJkAmWCZwJogn8CagJ/AmoCfwJqA0sDKgSpBK2EqQSthKkErYSpBK2EqQStgt2C9wLdgvcC3YL3At2C9wLdgvcCa4TMgm0C7gLBAyuCwQMrgsEDK4LBAyuCwQMrhIUEiYSFAycC74MnAu+DJwLvhJKEuwSShLsEkoS7BJKEuwMigusDIoLrBJ0EoYSdBKGEnQShhJ0EoYTXBNuE1wTbhNcE24TXBNuC1gLoAtYC6ANLAvEDSwLxA0sC8QNLAvEC2oLygtqC8oLagvKC2oLygtqC8oLTBLIC0wSyAtMEsgLTBLIC3wL4gt8C+ILfAviC3wL4gt8C+INMgumDTILpgm6CdgJugnYCcAJxgnACcYLFgneCcwJ0gnMCdIJzAnSDK4SyAnYCd4L1hLaEtoJ5AnqCfwJ8An2CfwKVgpWCgIKCAoOChQKGgogCuYKJgrgCiwKMgo4Cj4KRAycCkoKUApWClwKXBNuE24TbhNuE24TbgpiCmgKbgp0CnoKegqACoYKjAqSE24TbgqYEtoKngqkCqoKsAq2CrwKwgrICs4KzgrUCtoK4ArmEtoS2grsEtoS2gryDSwK+Ar+CwQSFBIUCwoLEAsWCxYSpAscCyILKAsuC0ALNAs6C0ALrAvWEsgMrgycC74LRgtMC1IMnAycDJwSShNcE1wLWAteC2QTXBNcDTINDhJ0DSwMnBJ0C2oLcA0UDRQS2gt2EhQLfBJKEnQLgguIC44LlAu+C74LvhLsC5oLoAu4C7gLphK2EuwLrBKGEoYLsgu4C74ShgvEC8oL0AvWC9wS7BKGEiYL4gvoC+4L9Av0C/QL9Av0C/QL9Av0C/QL9Av0C/oMYAxgDGAMYAxgDGAMAAwADAYMBgwGDAYMBgwGDAYMBgwGDAYMDAwSDBIMEgwSDBIMGAwYIFwgXCBcIFwgXCBcIFwgXCBcIFwMHgweDFQMVAwkDCQMJAwkDCQMKgw2DDYMNgw2DDYMNgw2DDYMNgw2DDYMNgw2DDYMMAw2DDwMPAw8DDwMQgxCDEIMQgxCDEIMSAxIDEgMSAxODE4MTgxODE4MTgxODE4MTgxODE4MVAxaDFoMWgxaDFoMYAxmDGYMZgxmDGYMbAxsDGwMbAxyDHgMfgx+DRQMhAyKE1wMkAyWDRQS2gycDKIMqAyuEzIMtAy6DMAMxgzMDNIM2AzeDOQM6gzwDPYM/A0CDQgNDg0UDRoNIA0mEiYNLA0yDTgNPgABApICGwABAiICygABAzYCygABAdYCygABAgoC/QABAXYCYgABAfYCygABABQCGwABAFb/IwABADIAAAABAB7/hwABAAT/IwABAWEC5wABAQcCYgABAf8CYgABAUoCYgABAIwC5wABASECYgABAtsC+AABAjf/9wABAkQAPAABAkEADgABANkCFAABAkP/aAABAdQCGwABAV8CywABAZ4CywABAc8CywABAV0CywABAUYCywABAcsCywABAdkCywABANkCywABALACywABAY4CywABAPECywABAkcCywABAesCywABAfUCywABAfICywABAYECywABAY8CywABAWECywABAdMCywABAlcCywABAVQC5wABAW0C5wABAWcCYgABAWkC5wABAkgCYgABAXoCYgABAYICYgABAOUCqwABAXcBJwABACABHwABAUkCYgABAW8C6gABAVQCYgABAWECYgABAQcA4wABAXUA4wABAUkA4wABAW8BawABAWEA4wABADoAAAABATACYgABAP4C6gABAW4CYgABADgAmgABAXUCYgABAA0BHwABAR0CYgABAVMC6gABAgsC+AABAfwCygABAsMCygABA5kCygABAk4CygABAgsCGwABAioCygABAbYCGwABAxMCGwABAfsCGwABApQCygABApgCygABAn4CygABAnkCygABAnwCygABAwoCygABAwUCygABAvsCygABAvoCygABAysCygABAzECygABA74CygABA70CygABA8cCygABA8MCygABAcwCygABAcYCygABAlYCygABAncCygABAnECygABAmcCygABAy8CygABA0UCygABA+ECygABA98CygABA68CygABAsICygABA1gCygABA28CygABA4cCygABAiACygABApMCygABApsCygABAoQCygABAogCygABAoUCygABAoMCygABAzQCygABAy4CygABA80CygABA8kCygABA8ECygABA8gCygABA8ACygABAh4CygABAmgCygABAy0CygABAzACygABAtgCygABAbwCygABAcECygABAjMCygABAtYCygABAqoCygABA1ACygABAyECygABAWcA4wABAXoA4wABAVQA4wABAHIAAAABAh8CygABBHoCygABAlACygABAq0CygABA1YCygABAhICygABA0sCygABAhkCygABAs4CygABAKQBXgABAKQCYwABA2ICGwABA5cCGwABAlwCGwABAlECGwABAfoCGwABA4MCGwABAegCGwABAjICGwABAisC+AABAZUCGwABAbwCGwABAjUC/QABAgwCGwABAigCGwABAj4CGwABAqUClAABA0EClAABAg8CPwABAgUCPwABAj0CPwABAbECPwABAZsCPwABAkICPwABAlACPwABAOYCPwABAPwCPwABAuACPwABAeMCPwABAm8CPwABAfkCPwABAbcCPwABAbkCPwABAkwCPwABAfgCPwABAwUCPwABAfYCPwABAdkCPwABAdECPwABAKQC3QABAvwA1wABABQCygABABMCygABA4ICygABACgCGwABAQ4CygABAmQCygABAtMCygABAdMCGwABAh8C+AABAwECGwABASkC+AABARwC+AABAh8CGwABAWEBaAABAWkBaAABAIwBaAABAkgA4wABAXYA4wABAYIA4wABASEA4wABAOUBLAABAMEC5wABAKYCygABABAAAQABAKYAAAABABQAAAABADQC3QABA9kCygABA2YCygABAmUCygABAlMCygABAYMCywABAzACGwAFAAAAAQAIAAEG0gKEAAEIEgAMABIAJgA4AEoA2AD8AFwAbgB8AJYAqAC6AMYA2ADqAPwBDgFIAYoAAgAGAAwAAQDeAAAAAQK7AAAAAgAGAAwAAQEaAAAAAQIt/xkAAgAGAAwAAQFKAAAAAQNoAAAAAgAGAAwAAQCgAAAAAQIEAAAAAwAWABwACAABA1MAAAADAAgADgAUAAEAkAAAAAEB9QAAAAEDUQAAAAIABgAMAAEAngAAAAEB7QAAAAIABgAMAAEAnQAAAAEB7AAAAAIABgAkAAEDrgAAAAIABgAMAAEBLwAAAAEDhQAAAAIABgAMAAEBigAAAAEDswAAAAIABgAMAAEA/wAAAAEDAQAAAAIABgAMAAEBMAAAAAECvgAAAAcAEAAWABwAIgAoAC4ANAABAqwAjgABAMAAjgABAjEBkgABAbYAjgAB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ADYANwA4ADkAOgA7ADwAPQA+AEAAXgBgAGMAcQCBAIIAgwCEAIUAhgCHAIgAiQCKAIsAjACNAI4AjwCQAJEAkgCTAJQAlQCWAJcAmACaAJsAnACdAJ4AnwCgAMIAxADGAMgAygDOANAA0gDUANYA2ADaANwA3gDgAOQA5gDoAOoA7ADuAPAA8gDzAPUA9wD6APwA/gEAAQIBBAEGAQgBCwENAQ8BEQETARUBFwEZARsBHQEfASEBIwElAScBKQErAS0BLwExATMBNQE3ATkBOgE8AT4BQgFEAUYBSAH5AfsB/QH/AhMCFAIVA2AH2AuBC4ILgwuEC4ULhguHC4gLiQuKC4sLpwABAAAAAQAIAAIBPACbCqkLfwquCq8KsAqnCqgIjQiaCJsIoQilCK8IsAi1CLgIwwjFCMcIzQjOCNQI4AjiCOMI5wjuCPMI/gj/CQQJBQkKCqUKpgqrDEoKsQjtCJIIjgiQCJcIkQiVCJgIngisCKYIqQiqCL4IuQi7CLwIogjTCNkI1QjXCN4I2AjcCPgI9Aj2CPcJBgjhCQgIkwiPCJQInAifCKAInQijCKQIrQinCKsIrgioCLIIsQi0CLMItwi2CMIIwAi6CMEIvwjECMYIyAjKCMkIywjMCM8I0QjQCNII2wjWCNoI3wjkCOYI5QjoCOsI6gjpCPII8AjvCP0I+gj1CPwI+Qj7CQEJBwkLCQ0JDAiWCJkI3QjsCQMJAAkCCQkKrAqtCqoI8Qw+DD8MQAxBDEIMQwxEDEUMRgxHDEgMSQABAJsABAAJAAsADAAiAD4AQABEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBgAGMAcQCBAKEAogCjAKQApQCmAKcAqACpAKoAqwCsAK0ArgCvALAAsQCyALMAtAC1ALYAtwC4ALoAuwC8AL0AvgC/AMAAwQDDAMUAxwDJAMsAzQDPANEA0wDVANcA2QDbAN0A3wDhAOMA5QDnAOkA6wDtAO8A8QD0APYA+AD7AP0A/wEBAQMBBQEHAQkBDAEOARABEgEUARYBGAEaARwBHgEgASIBJAEmASgBKgEsAS4BMAEyATQBNgE4ATsBPQE/AUMBRQFHAUkB+gH8Af4CAAITAhQCFQNhC4ELgguDC4QLhQuGC4cLiAuJC4oLiwun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CksKdgqiCk4KSgqCCk0KQgp8BzYKtAq/CrcKugq5CrgKuwq8Cr0Kvgc3BzgHOQc6BzsHPAc9CQ4CKgIrBz4CLAItBz8K1QrSCs8KmAqZAhcK1ArRCs4KjgqPB0UHRgdHAhgCGQdIB0kCGgdKB0sKwwNVAhsKwArECsUHVQfVCsYKwQrCCscMlArcCt0JjgrfCuACHAreCZcK6wriCasJhwmACY8JpwmoCYgJgQmJAh0K5QmQAh4HVwrwCZEJkgmLCYIJkwroCuoK7AruAh8K7wmUCuYCIArICYMLgAmYCY0Jhgl/AiEJqQmZCZoJjAmbCaoKyQrLCtAKzQrjCtsK4QmmCaUJlgmKCtcK2ArZCtYK2gmVCaEJogmjCaQK6QrKCucHWAdZCu0KKgorCiwHWgdbCiQKJQomCicKKAopAiICIwIkAiUKIgfXB9kMigdrB2wHbQduB28HcAdxCCUIMggwCCEIMQyIDIsMjApsCmsKVwpwClQKbQpkCmMKRQpYCnEKZQpWCm8KRwpeCkwKZwpRCkMKRgqMCkQHcgpSCl0Kmgp5ClUKbgp3CngKWQpyCpIKkwqQCpEKlgqXCpQKlQqDClwKdApJCmkJ7gpzCo0KfQpiCmEKfwpACkEKfgp7Cp4KnQqGCocKiAqJCp8KigqkDJUMlgkaCUwJGwlNCRwJTgkdCU8JHglQCR8JUQkgCVIJIQlTCSIJVAkjCVUJJAlWCSUJVwkmCVgJJwlZCSgJWgkpCVsJKglcCSsJXQksCV4JLQlfCS4JYAkvCWEJMAliCXIMVAxjDGQMZQqLCrMJcwkxCWMJMglkCTMJZQk0CWYJNQlnCTYJaAk3CWkJOAlqCTkJawk6CWwJOwltCTwJbgk9CW8JPglwCXQJdQxfDGAH3Ag9B90IPgfeCD8H3whAB+AIQQfhCEIH4ghDCEQIRQfjCEYH5AhHB+UISAfmCEkH5whKB+gISwfpCEwH6ghNB+sITgfsCE8H7QhQB+4IUQfvCFIH8AhTB/EIVAfyCFUH8whWB/QIVwf1CFgH9ghZB/cIWgf4CFsH+QhcB/oIXQmECYUH+wheB/wIXwf9CGAH/ghhB/8IYggACGMJ5whkCGUIZghnCGgIaQhqCGsIAQhsCAIIbQgDCAQIbggFCG8IBghwCAcIcQgICHIHfgd/B4AHgQeCCAkIcwkPCAoIdAgL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ACYBTVUAAAcLowI9AAAAAP//AF//RgHxAsoCJgAoAAAABwujAlsAAP//ADT/RgILAiUCJgBIAAAABwujAloAAP//AF8AAAHxA90CJgAoAAABBwJLAlgApQAIsQEBsKWwMysAAP//ADT/9gILAzgCJgBIAAAABwJLAlkAAP//AF8AAAHxA5QCJgAoAAABBwFRAEoArwAIsQEBsK+wMysAAP//ADT/9gILAuUCJgBIAAAABgFROwAAAP//AF8AAAJCA9ECJgAoAAABBwNWAlEApQAIsQECsKWwMysAAP//ADT/9gI/AywCJgBIAAAABwNWAk4AAP//ABMAAAHxA9ECJgAoAAABBwNXAlIApQAIsQECsKWwMysAAP//ABH/9gILAywCJgBIAAAABwNXAlAAAP//AF8AAAIhBAwCJgAoAAABBwNYAlAApQAIsQECsKWwMysAAP//ADT/9gIbA2cCJgBIAAAABwNYAkoAAP//AF8AAAHxBBoCJgAoAAABBwNZAk8ApQAIsQECsKWwMysAAP//ADT/9gILA3UCJgBIAAAABwNZAkoAAP//AF//RgHxA60CJgAoAAAAJwujAlsAAAEHAUoAVACvAAixAgGwr7AzKwAA//8ANP9GAgsC/gImAEgAAAAmAUpEAAAHC6MCWgAAAAD//wAmAAABOwPdAiYALAAAAQcCSwHfAKUACLEBAbClsDMrAAD//wA7AAAA/AM4AiYIKgAAAAcCSwG2AAD//wAm/0YBOwLKAiYALAAAAAcLowHfAAD//wBM/0YAxQLoAiYATAAAAAcLowG4AAD//wA8/0YC1QLVAiYAMgAAAAcLowK4AAD//wA0/0YCLgIlAiYAUgAAAAcLowJeAAD//wA8//YC1QPdAiYAMgAAAQcCSwK3AKUACLECAbClsDMrAAD//wA0//YCLgM4AiYAUgAAAAcCSwJeAAD//wA8//YC1QPRAiYAMgAAAQcDVgKvAKUACLECArClsDMrAAD//wA0//YCRwMsAiYAUgAAAAcDVgJWAAD//wA8//YC1QPRAiYAMgAAAQcDVwKvAKUACLECArClsDMrAAD//wAY//YCLgMsAiYAUgAAAAcDVwJXAAD//wA8//YC1QQMAiYAMgAAAQcDWAKuAKUACLECArClsDMrAAD//wA0//YCLgNnAiYAUgAAAAcDWAJWAAD//wA8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AQcAagBQAK8ACLEBArCvsDMrAAD////0AAACJgO9AiYASwAAAQcAav9jAN0ACLEBArDdsDMrAAD//wAt/xACjALKAiYAKwAAAAYAeigAAAD//wAf/xACJgL4AiYASwAAAAYAehoAAAD//wBf/z4CjALKAiYAKwAAAAcLrQF3AAD//wBT/z4CJgL4AiYASwAAAAcLrQE7AAD////0/0IBbgLKAiYALAAAAAcLrwCxAAD////L/0IBRQLoAiYATAAAAQcBUf+j/OQACbECAbj85LAzKwD//wAeAAABUAQZAiYALAAAAQcHgwCxAK8ACLEBA7CvsDMrAAD////1AAABJwNqAiYIKgAAAAcHgwCIAAD//wBfAAACeAOtAiYALgAAAQcAdgDqAK8ACLEBAbCvsDMrAAD//wBFAAACKQPbAiYATgAAAQcAdgAdAN0ACLEBAbDdsDMrAAD//wBf/0YCeALKAiYALgAAAAcLowJ9AAD//wBT/0YCKQL4AiYATgAAAAcLowJGAAD//wBf/2QCeALKAiYALgAAAAcLsAFPAAD//wBT/18CKQL4AiYATgAAAQcBTABw/QEACbEBAbj9AbAzKwD//wBf/0YB/ALKAiYALwAAAAcLowJcAAD//wBK/0YAwwL4AiYATwAAAAcLowG2AAD////5/0YB/ANdAiYALwAAACcLowJcAAABBwFM/9EArwAIsQIBsK+wMysAAP///+7/RgEhA4sCJgBPAAAAJwujAbYAAAEHAUz/xgDdAAixAgGw3bAzKwAA//8AX/9rAfwCygImAC8AAAEHAUwAbP0NAAmxAQG4/Q2wMysA////7f9pASAC+AImAE8AAAEHAUz/xf0LAAmxAQG4/QuwMysA//8AX/84AfwCygImAC8AAAAHC6wBLgAA////1P84AT8C+AImAE8AAAEHAUr/rPzaAAmxAQG4/NqwMysA//8AXwAAAzcDlwImADAAAAEHAU4BaQCvAAixAQGwr7AzKwAA//8AUwAAA2YC6AImAFAAAAAHAU4BhAAA//8AX/9GAzcCygImADAAAAAHC6MC8wAA//8AU/9GA2YCJQImAFAAAAAHC6MDDAAA//8AXwAAAqkDlwImADEAAAEHAU4BIgCvAAixAQGwr7AzKwAA//8AUwAAAiYC6AImAFEAAAAHAU4A2QAA//8AX/9GAqkCygIm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/82wMysAAAD////nAAADewMqACcAKwDvAAABBwb9/3H/zgAJsQECuP/OsDMrAAAA////5wAAA3cDKgAnACsA6wAAAQcHCv9x/84ACbEBArj/zrAzKwAAAP//AFH/9gFZAwwCJgGFAAAABgbsCwAAAP//AE//9gFZAwwCJgGFAAAABgcmAgAAAP//AAP/9gFZAwcCJgGFAAAABwb7/24AAP//AAP/9gFZAwcCJgGFAAAABwcI/3UAAP//ABT/9gFZAwcCJgGFAAAABwb8/2gAAP//ABL/9gFZAwcCJgGFAAAABwcJ/28AAP///97/9gFZA1wCJgGFAAAABwb9/2gAAP///9P/9gFZA1wCJgGFAAAABwcK/10AAP//AAAAAAG5AtQAJgAsfgABBgbsucgACbEBAbj/yLAzKwAAAP//AAAAAAGzAtQAJgAseAABBgcms8gACbEBAbj/yLAzKwAAAP//AAAAAAJRAtQAJwAsARYAAAEHBvv/a//NAAmxAQK4/82wMysAAAD//wAAAAACQwLUACcALAEIAAABBwcI/3L/zQAJsQECuP/NsDMrAAAA//8ACQAAAmQC1AAnACwBKQAAAQcG/P9d/80ACbEBArj/zbAzKwAAAP//AAAAAAJeAtQAJwAsASMAAAEHBwn/Xf/NAAmxAQK4/82wMysAAAD////nAAACVQMqACcALAEaAAABBwb9/3H/zgAJsQECuP/OsDMrAAAA////5wAAAlQDKgAnACwBGQAAAQcHCv9x/84ACbEBArj/zrAzKwAAAP//ADT/9gIuAwwCJgBSAAAABwbsALEAAP//ADT/9gIuAwwCJgBSAAAABwcmAKgAAP//ADT/9gIuAwcCJgBSAAAABgb7FAAAAP//ADT/9gIuAwcCJgBSAAAABgcIGwAAAP//ADT/9gIuAwcCJgBSAAAABgb8DgAAAP//ADT/9gIuAwcCJgBSAAAABgcJFQAAAP//AAD/9gMHAtUAJgAyMgABBgbsucgACbECAbj/yLAzKwAAAP//AAD/9gMdAtUAJgAySAABBgcms8gACbECAbj/yLAzKwAAAP//AAD/9gO5AtUAJwAyAOQAAAEHBvv/a//NAAmxAgK4/82wMysAAAD//wAA//YDtwLVACcAMgDiAAABBwcI/3L/zQAJsQICuP/NsDMrAAAA//8AA//2A4YC1QAn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ARD/8wJhADQCdgBTAmEANAJhADQCYQA0AmEANAJhADQCPAAwAmEANAJ2AE4CdgBOAnYATgJ2AE4CDwABAmwAUwIPAAECjgAAAj4ALQKOAAACPgAtAo4AAAI+AC0CeQA8AeoANAJ5ADwB6gA0AnkAPAHqADQCeQA8AeoANALdAF8CbAA0At0AHAJyADQCLQBfAjwANAItAF8CPAA0Ai0AXwI8ADQCLQBfAjwANAItAF8CPAA0AtcAPAJsADQC1wA8AmwANALXADwCbAA0AtcAPAJsADQC7ABfAnb/1QLsAAACdgAHAWL/9AEQ/8oBYgAYARD/7gFiAA8BEP/mAWIAJgEQACABYgAmAoQAJgIgAEwBIv+zARD/xgJ4AF8CLwBTAi8AUwIYAE4BEABDAhgAXwEQAEMCGABfARAAUwIYAF8BKABTAhgACQEQ//YDCABfAnYAUwMIAF8CdgBTAwgAXwJ2AFMCyAABAwgAXwJ2AFMDEQA8AmEANAMRADwCYQA0AxEAPAJhADQDrQA8A7sAMwJ5AF8BqQBTAnkAXwGpAEECeQBfAakAPwImADIB5AAxAiYAMgHkADECJgAyAeQAMQImADIB5AAxAjMADQF/ABICMwANAX8AEgIzAA0BfwASAuIAWQJ2AE4C4gBZAnYATgLiAFkCdgBOAuIAWQJ2AE4C4gBZAnYATgLiAFkCdgBOA60ACAMnAAsCRwAAAg8AAQJHAAACPgAiAdsAIwI+ACIB2wAjAj4AIgHbACMBVwBTAjwAXgKPAAACPgAtA4b//wNwAC0DEQA8AmEANAImADIB5AAxAbsAKAG7ACgBgwAoAZ0AKADIACgBMwAoAP8AKAHKACgBzgAoAkEA+AJBAH4ClAAGAREARAKLAAADSgAAAeoAAANEAAAC7AAAA0H/+wFs/+gCjgAAApAAXwIXAF8CXAAWAi0AXwI+ACIC7ABfAxEAPAFiACYCeABfAmwAAAOWAF8DCABfAjAAJAMRADwC3wBfAmQAXwJBACUCMwANAkcAAAM1ADECYgADAzkANQMPACMBYgAcAkcAAAJwADQB+AAqAnYAUwFsAFECbgBMAnAANAKAAFMCFQAEAmAAMwH4ACoB6AA0AnYAUwJaADQBbABRAi8AUwI0//0CegBTAjEAAQHjADMCYQA0AqsADAJhAEkB6AA0AnQANAHwAA0CbgBM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ARAABwFsAFEBTAAfAYsABAFu//YBDwBTAq8AUwO1AE8DtQBPA7UAUwJ2/+MCdgBTApIAUwJhADQDYgA0AxwANQLvADMBqQARAakAEQGpABEBqQBTAakAUwFpAFABaQATAj0AVQI9AFUB5AAxARD/4wEQ/+MBEP/tARD/mAF/ABkBfwASAnYABwJqAB0CdgBPAg4AAAMnAAsCDwAAAfYAAAHbACMCKAAjAgoAEgIK//IBugAJAboAGgG6AAkB4gA0AxEAPAJQAFMCYQArAkUANAKEAFMBEP+iAi8ABgHAAFMCbAA0AboACQG6ABkDzgA0A+4ANAQaADQDCAASAiAAEgNvABIDfAAQAqcAUwJxAFMCBQAAAlMAUwJ8/+wCfP/sAZkANgGZADYAsf/aARQANgEUAAsBFAALAXQANwIMAAcBVwABALsADAGAAAwAuwAMALsADACtAB4ArQAeASkACAEpABMBHQAYAR0AGAEdABEBHQAKAKYAKAExACgBMQAoAKYAKAGDACgBMQAoATEAKAE5AEQBOQBEAMEAKADBACgBDgAeAQ4AHgEOAB4BGgAeARwAKAFWAAAAsQA2ATsAIAFhAAkBHwARAaIATgGiAE4BogBOAaIATgGiAE4BogBOAaIATgG7ACgB7wAoAYAADAGeACgBngAoAUsAKAFLACgBMQAoAc4AKAHOACgBygAoAREARAD2ACgA9gAoAPYAKAD2ACgCDgAoAg4AKAIWACgAAP6FAOYAFADmABQCQQDyAeoAIAHqADQB6gAgARIAHwJXADAC2f/oAk0AAALvADMCif/6AwUAPAJhADQCbAA8AegANAIcAF8B3QBUAfH/+wIrAC8CUf/zAgT/tQKJ//oCYQA0AeoANAEQ/8YDEgA8AfgANAHzAB8CZABfAmwAUwJ5ADwDlgBfAvIAUwJhAAMCeQAgAnkAPAJ5ACADEQA8AmwANAOtAAgDJwALAhkACgLVAAgDcAAxAlAACgIJADsCWABWAlgAIwHRAFYB/QAiARwAUgFkADICCQBWAcEAFQLkAFYCeABWAn8AOwIJACMCbQASAm0AHwJtAAgDuwAxAjAAOQJ2ADcCdgA3AfwAVgIXABUCFwAVAdEAFQJlAE8CbQAmAx8AFAJtACgB5wAAAt8ACgHbACMB6gAhAc4ALQH8ABABwgBWAfsACgJaAFYB/ABWApwANQJMAA4BqQAAAkv//wGrAD4BqwANAd0APgFqAD4BagAnAdgAJwHmAD4A5gAZALz/zgGbAD4BXQA+AlUAPgH4AD4B+AA+Af8AJwHGACUBjQA+AZsAPgFtAAgB4AA6AmQABQF1AB0BdQA0AZMAIgI8ACABkwA2AZMAIgF0ACIBdAAgAUgAGwFGABYBkwAiALkANQFsADYCaQA2AZkANgGMACIBPgAVAZkAJAGZACQBkwA2APkADAGZADMBlAAZAmkAMwFWAAABSgAKAaAANgFaAAMBjAAhAeQAIgFu//YAsQAxARQANgGZADMBVgAAAaAANgFaAAMBjAAvAeQAIgFu//YDrgBPAmz/1wJsADQBZf/wA7X/7AJ5/+wCbP/VAan/1QFp/9QB5P/7AX//5AHbABkCbABTAaMANgJEACAD9AASAUwAHwFsAAQCbAAHAmYABwJqAAcCbABTAmwANAFlABADHQA0Ai8AUwEQACwDtQBTAnYAUwJsAFMBqQAsAeQAMQHB/+MCDgAAAh8ADgHbACMCPgAtAmwANAJsADQCPAA0Af8AKgH9ACICpAAxARAATAHqACABEP/jAnYATgH9ACIBkwA2AT4AIgFdAB8BjAAiAUsAFgDoAAoAsf/aAZMAIgGZADQAsQAFAO0ANQDYABQA2AAUALH/wwCwADYAsQAdASMANgJpADYCaQAzAZn/7QGZADYBrAA2AYwAIgHoACEBOwAgALH/7QD5AAwBmQAFAZEAEwGOADMBmQAzAVYAAAE1ABcBNQAXAWYAFwFUAAwBhwAiApAAXwJsAFMCkABfAmwAUwKQAF8CbABTAnkAPAHqADQC3QBfAmwANALdAF8CbAA0At0AXwJsADQC3QBfAmwANALdAF8CbAA0Ai0AXwI8ADQCLQBfAjwANAItAF8CPAA0Ai0AXwI8ADQCLQBfAjwANAIQAF8BZQAQAtcAPAJsADQC7ABfAnYAUALsAF8CdgBTAuwAXwJ2//QC7AAtAnYAHwLsAF8CdgBTAWL/9AEQ/8sBYgAeARD/9QJ4AF8CLwBFAngAXwIvAFMCeABfAi8AUwIYAF8BEABKAhj/+QEQ/+4CGABfARD/7QIYAF8BEP/UA5YAXwO1AFMDlgBfA7UAUwMIAF8CdgBTAwgAXwJ2AFMDCABfAnYAUwMIAF8CdgBTAxEAPAJhADQDEQA8AmEANAMRADwCYQA0AxEAPAJhADQCZABfAmwAUwJkAF8CbABTAnkAXwGpAFMCeQBfAakASQJ5AF8BqQBJAnkAXwGpAA4CJgAyAeQAMQImADIB5AAxAiYAMgHkADECJgAyAeQAMQImADIB5AAxAjMADQF/ABICMwANAX8AEgIzAA0BfwASAjMADQF/ABIC4gBZAnYATgLiAFkCdgBOAuIAWQJ2AE4C4gBZAnYATgLiAFkCdgBOAmcAAAIOAAACZwAAAg4AAAOtAAgDJwALA60ACAMnAAsCYgADAh8ADgJiAAMCHwAOAkcAAAIPAAECPgAiAdsAIwI+ACIB2wAjAj4AIgHbACMCdgBTAX8AEgMnAAsCDwABAj4ALQFXAFMCcAA0AnAANAJwADQCcAA0AnAANAJwADQCcAA0AnAANAKOAAACjgAAAwYAAgMKAAAC7gACAvAAAALr/+oC7v/qAfgAKgH4ACoB+AAqAfgAKgH4ACoB+AAqAoUAAAKFAAADHgAAAxkAAAMPAAADDv/9AnYAUwJ2AFMCdgBTAnYAUwJ2AFMCdgBTAnYAUwJ2AFMDPwAAA0UAAAPUAAAD0gAAA9wACQPR//0D2//nA9f/5wFsAFEBbABPAWwAAwFsAAMBbAAUAWwAEgFs/94BbP/TAeAAAAHaAAACeAAAAmoAAAKLAAkChQAAAnv/5wJ7/+cCYQA0AmEANAJhADQCYQA0AmEANAJhADQDQwAAA1kAAAP1AAAD8wAAA8MAAwPDAAACbgBMAm4ATAJuAEwCbgBMAm4ATAJuAEwCbgBMAm4ATALWAAADbAAAA4MAAAOb//sDJgA3AyYANwMmADcDJgA3AyYANwMmADcDJgA3AyYANwNBAAADUQAAA/EAAAPuAAADxgAAA8wAAAO6/+cD1//7AnAANAJwADQB+AAqAfgAKgJ2AFMCdgBTAWwAHwFsAFECYQA0AmEANAJuAEwCbgBMAyYANwMmADcCcAA0AnAANAJwADQCcAA0AnAANAJwADQCcAA0AnAANAPzAAQD7gAABGQAAARsAAAEVAAABFkAAARY/+oEW//qAnYAUwJ2AFMCdgBTAnYAUwJ2AFMCdgBTAnYAUwJ2AFMEtAAABK4AAAVNAAAFTQAABUkACQVB//0FSP/nBUD/5wMmADcDJgA3AyYANwMmADcDJgA3AyYANwMmADcDJgA3BL0AAATKAAAFXwAABV8AAAU7//8FQwAABSj/5wUv/+cCcAA0AnAANAJwADQCcAA0AnAANAJwADQCcAA0Ao4AAAKOAAACkAACAo4AAAP6AAABCABHAkEA8gEIAEcCVQBtAkQAdAJ2AFMCdgBTAnYAUwJ2AFMCdgBTAnz/5wJ5//QDQf/xA0T/9QRYAF8CQQCVAkEArAJRAHYBbP/pAWz/8QFs/9wBbP/ZAWz/zgFs/94BYgAPAWIAFwHQ/+cB1f/nAkEAjgJBAKMCUQB2Am4ATAJuAEwCbgBMAm4ATAJhAEkCYQBJAm4ATAJuAEwCRwAAAkcAAALd/+cC6v/5Ar4AAAJBAHICQQByAkEAwQMmADcDJgA3AyYANwMmADcDJgA3A2T/8QM1/+kDXv/oAzn/8QR7ACMCQQDrAQgATQAA/+sAAP+TAAD/7AAA/ysCPAAoAicAdgGAAAwAAP/sAAD/LAAA/4wAAP+MAAD/jADIAAACeAApAfT//QERAEQAAP+MAAD/jAAA/4sAAP+LAAD/iwAA/4wBZwATAWcAFQFnABIBdQAdAXQAIgGMACIBYQAJAXQAIAI8ACACRQAvAjwAMgO1AFMCPAAKA1kAUQKyAAoCPAANAjwAEwPWABcCRwAIAjwACgLaADwCbAAAAiwACwJ5ADwCPABLAAD/FANAADEC7AAFAcQAHgNPABcDmAAWAeoAIAIYAAcBEAAHAhj/9QJkAAoCeQBfAj4ALQF/ABIDDABfAoIAUwKYAF8CQwBTAj4AIgHbACMDAQA8Ah4AAAPIAAgDOQALAg4ACgIkAF8B0wBTAukANAFSABABPgAoAXIAKAF4ACgBWgAoAeYARgHmAEYBDQBGAQ0ARwENAEcBtgAoAbYAKAG7ACgBEQBBAccAMgESAEsBDQBMAAD/bQAA/2EAAP57AAD/+wAA/nwAAAAAAnAANAJwADQCcAA0AnAANAJwADQCcAA0AnAANAJwADQBbP/0AWz/9AFs//QBbP/0AWz/8AFs/+4BbP/vAWz/7wJuAEwCbgBMAm4ATAJuAEwCbgBMAm4ATAJuAEwCbgBMAWz/8gFs//IBbP/pAWz/6gJuAEwCbgBMAm4ATAJuAEwC3QBgAwgAXwLUAFkBkAAvAZAALwGQAC8BkAAvAAD/dAAA/1MAAP9nAAD/TwAA/1cAAP9nAAD/ZwAA/1MAAP9mAAD/VwAA/2YAAP9mAAAAKQAAACkAAAAxAAAAMQGUACsBlAArAZQAKwGPACkDxwACAz4ABQM4AF8DPwBTA4YADgN3AAsCegBfAiwAUwQQAAMDQwAFBFUAXwN3AFMC/wBfApoAUwL6AF8CnABTAkEAVgI8ABADGgBfA40AXwLVAFkCjgABAuEAPAJtAAoBfABGAcQAMQLpAF8DUgANAlsALgIwACACdgAgBKsAAASOAAAEWgAAA44AAAOUAAADjgAAAnkAIAJ4ABACeABfAngAEAKGAF8CGAAVAxEAAAOuADwFOgA8AmQAEgLBAAUDagAOAxEAPAO9ADwCUQAsApgAOgJrAAADpwALAmIABgJiAAYCfgApAiYALgIkAAUCZgAyAw8ACAH4AFwCWgA5AloAOQIYABwDIABbAfgAXAJxADcC6QBfAxsAXwJt//4C0wACAnUAAwMGAAMCeAADAiQAAwNdAAsCXgAqAukAPAJo//kCeAAAAjMADgE5/60Ck//0AokAXQQUADwCjgAAAi0AXwFiACYC4gBZAhgAXwMIAF8B0QA6ARAAUwEQ/8YCYAAzAq0AMwH9ACIC2QAiAjwAMQMgADEBEABTARAAIAEQ/8YCHQAEAVcAAAFXAAsCYQAzALH/2gGrABQBEP/GARD/ogCx/9oBEP/GALEANgEQAFMAsQAEALH/wwEQ/8sBEABOAUYARgGSACsCdQBTA0wAEgI0ACwCGAASAmAAEgGnAFEBrAAoA5QALQOzAC0DqwAtAzEALQMxAC0DMQAtAeoAIAIvAAcCLwBTAi8ABwF5AFMBEAAQAocAAAKvADMD8AA0AmwAAgLdAAUDdgAFAmwANAL4ADQB7gAfAlgAJwIKAAADIAAMAmwACwJsAAsCHABTAf4ADwIL//0CVAAzAyYANAHMAFMEagBTAzQAUwIhAFMDAwBVAu8AEgIPAD4CXQAzAasAUwJEACoBDwBTArIAUwGrAFMB8QAeAZL/+AKEAFMB6gAAAmwAAwIyAAMCdQADAav//AHkAAMCgABTA5gAOgMHAFQCUgAzAhT/+QI+AC0CPAA0ARAAJwJ2AFMBEAAgAnYATgLJABAD2QAQA9kAEAJ1ABACdQAQAsEAUwNjADECIwAAAiMAAAIjAAACIwAAAiMAAAIjAAACIwAAAiMAAAIjAAACIwAAAiMAAALg//4C4P/+AhkASQIKAC4CCgAuAgoALgIKAC4CCgAuAgoALgJRAEkCUQAMAlEASQJRAAwBxQBJAcUASQHFAEkBxQA+AcUAPwHFAEkBxQBJAcUAPAHFAEkBxQBJAa8ASQJWAC8CVgAvAlYALwJWAC8CVgAvAmQASQJgAAcCZABJATQAIgE0ACIBNP/5ATT/5wE0AAQBNAAiATT/4wIuACIBNAABATQAIgE0/90A+v+8APr/vAIMAEkCDABJAcMASQHDAEkBwwBJAcMASQHDAEkBwv/uAvQASQKDAEkCgwBJAoMASQKDAEkCgwBJAoMASQKDADACgwAwAoMAMAKDADACgwAwAoMAMAKDADACgwAwAoMAMAKDADACgwAwAwYAMAH3AEkB+QBJAoMAMAINAEkCDQBJAg0ASQINAEkBywAoAcsAKAHLACgBywAoAcsAKAHLACgCYABDAc0ADQHNAA0BzQANAc0ADQHNAA0CYABEAmAARAJgAEQCYABEAmAARAJgAEQCYABEAmAARAJgAEQCYABEAmAARAIMAAADGQAOAxkADgMZAA4DGQAOAxkADgIKAAEB7QAAAe0AAAHtAAAB7QAAAe0AAAHlABsB5QAbAeUAGwHlABsAsQAxAUcAQQMuADICEAAfAmQAMQOWAF8BYgAmBHIACwLi/+oFlwAGAsoABgLhAAMCQgAfAkIAHwIkACsBmAAoAuQAWQMPADwEFAA8Ao//4gOuAAIDXgBfBBwAPAPsAF8CogAAAvUAEAPsAF8CrwAMAvEAFQOVAAYDrAADBFsAXwMRADwDDwA8BTIAPALJAAYCJAAyBL4AKgQ/AEUDfgAGAvYADgIsAA4C3ABfAiwADgNmAA4CvwBfBBgAXwU6ADwDEgA8Ann/1wS4ABICaQARAmkABQI3ADMCXQASAdIANAJpADQBlf+4A5cAUwKC/9ICggAGAmcALwHdACEB3QAhAeQAKwFsAFECeQBPAdkAHAOQADoCrgACA3sACQM7AFMDUAA0A2kAUwIzAAACaAAIA2gAUgIwAAICiQARAvoAEgMFAAUDsQBTAmEANAKLADMD9QA0Al0AEgHkACwEEgAiA8UARAL/ABEC8gAWAfsAFgKCAFMB+wAWAwwAFgJ1AFMDlwBTA/AANAJhADQCYAAzA2oALAJCAKYBxwAIAYYANgHHAF8CjgAbAxAAYAJ1AF8BIv+zAZcAUwIfABUCmgBTAn0AUgKgAD0C3gABAi8AIANRABgCSgALAjQAEwIYABsDRgACBCL//ALn//wDQQALAwkAYQNo//wCEAAfAo4AAAJ4ADIDCQBhAwoAYQKPAGEDDQA9AsoAYQJ2ACYC2gAkAigAYQJeADMCeABfAlsAHAM4//wEg//8AucACQIR/+4C7AAvAt8ALwLsAEoCQwAJAfMACQFXACABV/9vAh8ABQMJADECdgAfAnMAHgHOABgB4AAYAkT/qwHsADQCdgBTA04ANAFcABACWwAqAmEAKwJbADsCbwADA4gALQGfADoCPQADAxYAEQFeAAgCaQAzAbL//wGLAAABlwAdA6wAUwJ1AFMCdQBTAcsALAHLACwCTwAxA7sAMwPGAD0DxgA9A7wAMwO8ADMCeQBPAjYAVgFNAFMCZQBTAe4AAAKpAAABwwAWAoYADwFlABMCdQBPAnUABAOsAE8DrABTAqwAEwIz//ECYf/xAjn/6QKEAA4CIP+FAoT/hQIg/3oCdQBPAmwANAGZADYBbAA2ALEANgJpADYBmQA2AZMANgE7ACAA+QAMAYQAIQHmAAACbQAhAZkANgEa//8BAQADAb0ADAJBANsCTgA2Ac8AFQIsACUCPAArAj8AFAI8ADsCRQA2AgYACQJPADcCRQAxAlIANAGlABECKQArAh8AHQI/ABcCNAA5AkEANAIXABcCPAAtAkEAKwI8AC0CLAAhAiwAPgIsAC4CLAAkAiwACAIsADECLAApAiwAIQIsACUCLAAgAWcAEwFnACcBZwAZAWcAFQFnAAkBZwAhAWcAFQFnABwBZwAYAWcAEgFnABMBZwAnAWcAGQFnABUBZwAJAWcAIQFnABUBZwAcAWcAGAFnABIBvwAnA3QAEwM9ACcDcgAZA2UAFQNoAAkDJQAnA1AAIQNQACcDNgAnBC4AJwFnABMBZwAnAWcAGQFnABUBZwAJAWcAIQFnABUBZwAcAWcAGAFnABIEXgAMAoQANgKEAFgBRgBMAUYAGAGPABQBhQASAmEAFgJcABYBvAA8AcAAkQMtACYCrwBKAjsANAH0ADAC7gCEBBIADwLCAEQDRAA1A0oANgI4AB0D6AAAApoANgNFADUBEQBEAUIAJQE1AGQBxgAdAlwAFgH0AHoB9AA9AfQAPQH0AIEB9AAwAicApgIlACYB9AC2A0QANgLuAKYD6AAAA3MACQLAAAkBEQAmAREARAH0ACMB9AAjAfQAPANJADID6AAAAo8AWAHFACAA+wAwAfQAeAH0AHgB9ACHAfQAPQH0AD0B9ACBAfQAMAInALICPABmA0oANgPoAEMCFwA2AjsAMAI8ADACPAAwAksAJgH4AEABEQBEAREASAHjAC4BEQBFAiUAJgIiAEQA8AA2A0QANgJhABYBcgBAAAD/oQEJAEABUwBEAsIANgD+ADUCIwBDAu4AegERAEQA5wAmAOcAHQFMAFABTAAZAUwAUAFMABkCFwAoAhcAGgPoANMD6ADUAOcAJgDnAB0BQgAJAUIAJQFCACULGAAoB4AAKAE+ACUB9P/9ASD//QNZACkCp//9AcQAPQFEABgBRQAbAQoAOQEKABcA2gAxAa0AMQDaADIBEgAfARIAHQEFAB8BBQAXAX0ACgF9ABYB7QAVAkIAcQG3AAACWAAAAlgAAAJYAAACWAAAAlgAAAJYAAAAAAAAAAAAAAAAAAAAAAAAAlgAAAKDABYDPQA5AksACgNCAFUC1wAVAiwAEgMWAA0CcQA3Av4AGgJeACUC4QABAhUAIQGCAAUB0wACAVgAIwFYACMBfwAHAVgAIwFYACMGKwApAVgAIwFYACMCGAAcAmwAGgLTAEgCGAAcAkcAAAOoACkC5QAdAsQAHQNoACkD6AAyAkUAIAV1AF8DegAyARAATAHGAA8DbAAEAikAGwKPACwCegBfArUAYgJVAF8CggAfAyAAMwQH//IDHgARAmsAAANEACwA+P+DAh4ATgIeAE4CHgBOAh4ATgF/ABQCHgAOAh4AFwIeAAsCHgAaAh4AGgF/ACICHgAmAh4AIgIeACgCHgAmAh4AJgF/ABICHgASAh4AFwIeABICHgATAh4AEgF/ABYCHgAaAh4AIwIeABoCHgAWAh4AJwF/ABQCHgAXAh4ADgIeABoCHgALAh4AGgIeAE4CHgBOAh4ATgIeAE4BfwASAh4AFwIeABICHgATAh4AEgIeABIBfwAiAh4AIgIeACYCHgAmAh4AKAIeACYBfwAWAh4AIwIeABoCHgAWAh4AGgIeACcBfwAlAh4AJwIeAC4CHgAlAh4AJQIeACUBfwAaAh4AGgIeABoCHgAaAh4AGgIeABoCHgBOAh4ATgIeAE4CHgBOAX8AHwIeABcCHgAf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AACwhAAAsewAALLUAACz4AAAtKAAALWQAAC2NAAAtkQAALb8AAC4VAAAukwAALwEAAC9WAAAvbgAAL4EAAC+GAAAvoQAAL8AAAC/oAAAv/AAAMC8AADAvAAAwLwAAMC8AADAvAAAwLwAAMC8AADAvAAAwLwAAMC8AADAvAAAwLwAAMC8AADAvAAAxXQAAMZEAADGXAAAxmwAAMd0AADIZAAAyTAAAMlUAADJbAAAyYQAAMmcAADKIAAAysAAAMtcAADL5AAAzKAAAM0MAADNMAAAzVQAAM1sAADNhAAAzigAAM7EAADPUAAAz+AAAND4AADSCAAA0ogAANMAAADTmAAA1CgAANTUAADVfAAA1kAAANb8AADYwAAA2oAAANqQAADaoAAA20AAANvYAADchAAA3UgAAN1sAADdhAAA3nQAAN6MAADfWAAA4AwAAOGIAADi+AAA4xwAAOM8AADjyAAA5FgAAOSsAADm0AAA6CAAAOjsAADpsAAA6kAAAOrQAADraAAA7GgAAOzIAADtJAAA7ggAAO6wAADvRAAA79AAAO/oAADwAAAA8HAAAPDYAADxTAAA8cQAAPI8AADyvAAA8yQAAPOIAADz9AAA9FwAAPS8AAD1GAAA9gAAAPawAAD4RAAA+ZAAAPmoAAD5wAAA+hgAAPpwAAD6gAAA+twAAPtIAAD7xAAA/DQAAPygAAD9DAAA/XQAAP38AAD+fAAA/wwAAP+cAAEACAABABgAAQGAAAECgAABBAgAAQUQAAEFIAABBUQAAQVcAAEGOAABBtQAAQfQAAEIuAABCXAAAQn8AAEKYAABCsgAAQtEAAELxAABDFAAAQzYAAEM6AABDQwAAQ0kAAENSAABDWAAAQ1wAAENgAABDaQAAQ28AAEOZAABDnQAAQ6YAAEOsAABDtQAAQ7sAAEPEAABDygAAQ+8AAEQVAABEHgAARCQAAEQtAABEMwAARDwAAERCAABERgAAREoAAERTAABEWQAARGIAAERoAABEcQAARHcAAESAAABEhgAARI8AAESVAABEngAARKQAAES5AABEzQAARNYAAETcAABE4gAARQsAAEU0AABFWwAARXgAAEWTAABFsQAARbUAAEXqAABGHgAARmEAAEaTAABGvwAARuoAAEcrAABHTwAAR3sAAEeoAABHzwAAR/MAAEgRAABILgAASGAAAEhkAABIvgAASPwAAEkCAABJCAAASREAAEkXAABJIAAASSYAAEkvAABJNQAAST4AAElEAABJTQAASVMAAEleAABJZgAASW8AAEl1AABJfgAASYQAAEmNAABJkwAASZwAAEmiAABJrQAASbUAAEm7AABJwQAAScoAAEnQAABJ2QAASd8AAEnoAABJ7gAASfcAAEn9AABKBgAASgwAAEoVAABKGwAASiYAAEouAABKNwAASj0AAEpDAABKSQAASk8AAEpVAABKXgAASmQAAEptAABKcwAASnwAAEqCAABKiwAASpEAAEqaAABKoAAASqsAAEqzAABKvAAASsIAAErLAABK0QAAStoAAErgAABK6QAASu8AAEr1AABK+wAASwEAAEsHAABLEAAASxYAAEsfAABLJQAASy4AAEs0AABLPQAAS0MAAEtMAABLUgAAS1gAAEteAABLZAAAS20AAEt2AABLfAAAS4UAAEuLAABLkQAAS7UAAEvdAABMFQAATEQAAExoAABMjQAATMYAAE0AAABNIgAATTwAAE1CAABNSAAATY0AAE3NAABN0QAAThAAAE4wAABOVQAATnkAAE6qAABO5AAATugAAE8XAABPOAAAT3gAAE+AAABPlwAAT5sAAE/NAABP7gAAUCUAAFBOAABQkAAAUKkAAFDHAABQ+wAAUSsAAFFAAABRjwAAUccAAFHtAABR8QAAUfUAAFIrAABSVQAAUocAAFLMAABS8AAAUx0AAFNIAABTTAAAU4IAAFOuAABT0gAAVAsAAFQnAABUTgAAVHsAAFSoAABU5gAAVQMAAFUiAABVJgAAVU4AAFV1AABVpwAAVd0AAFYDAABWKAAAVlIAAFaCAABWjwAAVpUAAFaxAABWtQAAVsAAAFbIAABW0AAAVtYAAFbcAABW4gAAVugAAFbuAABW9AAAVv0AAFcDAABXDAAAVxIAAFcbAABXIQAAVyoAAFcwAABXOQAAVz8AAFdIAABXTgAAV1cAAFddAABXZgAAV2wAAFd1AABXewAAV4EAAFeHAABXkAAAV5YAAFfIAABYJgAAWC8AAFg1AABYPgAAWEcAAFhNAABYUwAAWF4AAFhmAABYbwAAWHUAAFh7AABYgQAAWIcAAFiQAABYlgAAWMIAAFjtAABY9gAAWPwAAFkFAABZCwAAWRQAAFkaAABZIwAAWSkAAFkyAABZOAAAWUEAAFlHAABZUAAAWVYAAFlfAABZZQAAWW4AAFl0AABZfQAAWYMAAFmMAABZkgAAWZsAAFmhAABZqgAAWbAAAFnYAABZ/wAAWggAAFoRAABaOQAAWpgAAFrGAABa9AAAWvoAAFr+AABbBwAAWw0AAFsTAABbGQAAWyIAAFsoAABbMQAAWzcAAFtAAABbRgAAW0wAAFtSAABbWwAAW2EAAFuKAABb1gAAXAYAAFxBAABcfQAAXKgAAFzdAABdDwAAXSYAAF1GAABdhAAAXawAAF3KAABd5wAAXhcAAF47AABePwAAXmcAAF6oAABeygAAXvcAAF88AABfhQAAX6wAAF/dAABf/AAAYCkAAGAxAABgaQAAYHEAAGDFAABg6AAAYSEAAGFaAABhrgAAYbQAAGHcAABh4AAAYgwAAGItAABifQAAYoEAAGKqAABi1AAAYxAAAGMYAABjSgAAY4wAAGOuAABjsgAAY8gAAGPwAABkFQAAZCwAAGRZAABkYQAAZIoAAGTRAABlCgAAZToAAGVTAABlVwAAZcQAAGXzAABl9wAAZf8AAGYoAABmUgAAZnwAAGayAABmywAAZuQAAGcEAABnDQAAZ0QAAGdxAABnqgAAZ80AAGgHAABoDwAAaDIAAGhkAABoiQAAaLsAAGjDAABoywAAaNMAAGjmAABpDAAAaTcAAGk7AABpeAAAaZ0AAGmjAABpwQAAaeQAAGnqAABp7gAAahoAAGpdAABqYQAAapEAAGqZAABqqAAAau0AAGscAABrSwAAa6kAAGwmAABsngAAbPcAAG1GAABtoAAAbgUAAG5HAABuYgAAbo0AAG6mAABu4AAAbygAAG8xAABvOgAAb0MAAG9MAABvVQAAb14AAG9nAABvcAAAb3kAAG99AABvgQAAb4UAAG+JAABvoAAAb7cAAG/WAABv3AAAb+QAAG/sAABv/wAAcAcAAHALAABwDwAAcBMAAHAbAABwIwAAcCgAAHAtAABwQQAAcEwAAHBUAABwXAAAcGQAAHBsAABwdAAAcIIAAHCHAABwkAAAcJkAAHCiAABwqwAAcLQAAHDHAABw3AAAcPEAAHEGAABxFwAAcSgAAHE7AABxQwAAcUsAAHFPAABxYQAAcXMAAHF9AABxhwAAcY8AAHGYAABxoAAAcagAAHGvAABxwAAAcdMAAHHlAABx9QAAchAAAHIpAAByQAAAckQAAHJVAAByawAAcm8AAHJzAAByfAAAcoUAAHKJAAByxAAAcs4AAHLXAABy2wAAczcAAHNkAABzhwAAc7AAAHPcAAB0CQAAdCkAAHRcAAB0jQAAdLoAAHTZAAB1NAAAdW0AAHVxAAB1dQAAdXkAAHV9AAB1gQAAdYUAAHWJAAB1jQAAdbUAAHXbAAB2CgAAdg4AAHYUAAB2GgAAdh4AAHYiAAB2JgAAdioAAHZFAAB2ZAAAdrIAAHbdAAB3AAAAdxcAAHc5AAB3TgAAd34AAHeXAAB3sAAAd8cAAHffAAB3+wAAeBMAAHgxAAB4VAAAeF4AAHhoAAB4cgAAeHoAAHimAAB4vAAAeNEAAHjvAAB5EAAAeTIAAHlBAAB5WQAAeWMAAHltAAB5dwAAeXwAAHmnAAB5qwAAec8AAHn6AAB6JAAAejQAAHpKAAB6WgAAel4AAHp8AAB6pQAAeq4AAHq3AAB6wAAAevgAAHsBAAB7CgAAexMAAHscAAB7JQAAey4AAHs3AAB7QAAAe0kAAHtSAAB7WwAAe3sAAHuEAAB7jQAAe5YAAHufAAB7qAAAe7EAAHu6AAB7wwAAe8wAAHvVAAB73gAAe+cAAHvwAAB7+QAAfAIAAHwLAAB8FAAAfB0AAHwmAAB8LwAAfDgAAHxBAAB8SgAAfFMAAHxcAAB8ZQAAfG4AAHx3AAB8gAAAfIkAAHySAAB8mwAAfKQAAHytAAB8tgAAfL8AAHzIAAB80QAAfNkAAHzhAAB86QAAfPEAAHz5AAB9AQAAfQkAAH0RAAB9GQAAfVoAAH2zAAB+EAAAflgAAH6sAAB+9AAAf0YAAH+NAAB/vgAAgAEAAIA/AACAiAAAgJAAAICZAACAxAAAgS8AAIFNAACBbQAAgbkAAIHgAACCFgAAgmMAAILFAACDBQAAg2UAAIOQAACDrQAAg/IAAIQrAACEegAAhLkAAIT1AACFOAAAhV8AAIWFAACFqQAAhhYAAIZ2AACGxwAAhv0AAIc7AACHeAAAh7IAAIfdAACIDAAAiEYAAIiSAACIxgAAiM8AAIjYAACI4QAAiOoAAIjzAACI/AAAiQUAAIkOAACJFwAAiSAAAIkpAACJMgAAiTsAAIlEAACJTQAAiVYAAIlfAACJaAAAiXEAAIl6AACJgwAAiYwAAImVAACJngAAiacAAImwAACJuQAAicIAAInLAACJ1AAAid0AAInmAACJ7wAAifgAAIoBAACKCgAAihMAAIocAACKIgAAiigAAIouAACKNwAAikAAAIpLAACKUwAAilwAAIpiAACKaAAAim4AAIp3AACKgAAAiq0AAIsBAACLBwAAiw0AAIsWAACLHAAAiyUAAIsrAACLMQAAizcAAIs9AACLRgAAi1EAAItZAACLYgAAi2sAAIt0AACLegAAi4MAAIuMAACLkgAAi5gAAIuhAACLqgAAi7AAAIu2AACLvAAAi8IAAIvIAACL0QAAi9oAAIvgAACL6QAAi/IAAIv4AACL/gAAjAQAAIwNAACMEwAAjBkAAIwkAACMLwAAjDgAAIxBAACMRwAAjFAAAIxZAACMXwAAjGUAAIxrAACMdAAAjHoAAIyAAACMhgAAjI8AAIyYAACMngAAjKQAAIytAACMswAAjLwAAIzCAACMywAAjNEAAIzaAACM4AAAjOkAAIzvAACM+AAAjP4AAI0HAACNDQAAjRMAAI0ZAACNJAAAjSwAAI01AACNPgAAjUcAAI1NAACNUwAAjVkAAI1iAACNaAAAjXEAAI13AACNggAAjYoAAI2TAACNmwAAjaEAAI2nAACNsAAAjbYAAI28AACNxQAAjc4AAI3UAACN3QAAjeMAAI3pAACN8gAAjfsAAI4BAACOCgAAjhAAAI4ZAACOHwAAjiUAAI4rAACONAAAjjoAAI5AAACORgAAjk8AAI5VAACOXgAAjmQAAI5tAACOcwAAjnwAAI6CAACOiAAAjo4AAI6UAACOmgAAjqAAAI6oAACOrgAAjrQAAI66AACOwwAAjskAAI7PAACO1QAAjtsAAI7hAACO5wAAju0AAI7zAACO/AAAjwUAAI8OAACPFwAAjyAAAI8pAACPMgAAjzsAAI9BAACPRwAAj00AAI9TAACPWQAAj18AAI9oAACPcQAAj3sAAI+FAACPjwAAj5kAAI+fAACPpQAAj6sAAI+xAACPtwAAj70AAI/DAACPyQAAj9IAAI/bAACP5QAAj+8AAI/5AACQAwAAkA0AAJAXAACQHQAAkCMAAJApAACQLwAAkDUAAJA7AACQQQAAkEcAAJBQAACQWQAAkGMAAJBtAACQdwAAkIEAAJCLAACQlQAAkJsAAJChAACQpwAAkK0AAJCzAACQuQAAkMIAAJDLAACQ1QAAkN8AAJDpAACQ8wAAkPkAAJD/AACRBQAAkQsAAJERAACRFwAAkR0AAJEjAACRLAAAkTYAAJFAAACRSQAAkU8AAJFVAACRWwAAkWEAAJFnAACRbQAAkXMAAJF5AACRggAAkYsAAJGVAACRnwAAkakAAJGzAACRvQAAkcYAAJHMAACR0gAAkdgAAJHeAACR5AAAkeoAAJHwAACR9gAAkfwAAJICAACSCAAAkg4AAJIUAACSGgAAkiIAAJIqAACSMQAAkjgAAJI/AACSRgAAkk0AAJJUAACSXwAAkmoAAJJ1AACSgAAAkosAAJKWAACSoQAAkqwAAJK0AACSvAAAksQAAJLMAACS1AAAktwAAJLkAACS7AAAkvcAAJMCAACTDgAAkxoAAJMmAACTMgAAkz4AAJNKAACTUgAAk1oAAJNhAACTaAAAk28AAJN2AACTfQAAk4QAAJOPAACTmgAAk6YAAJOyAACTvgAAk8oAAJPWAACT4gAAk+gAAJPuAACT9QAAk/sAAJQCAACUCAAAlA8AAJQYAACUIQAAlCoAAJQzAACUOQAAlFMAAJR1AACUeQAAlH0AAJSzAACUuwAAlMEAAJTJAACUzwAAlNcAAJTgAACU6QAAlPIAAJT7AACVAQAAlUcAAJWNAACVvAAAlcIAAJXIAACVzgAAldQAAJXaAACV4AAAlekAAJXyAACV+wAAlgQAAJZIAACWjAAAlrsAAJbBAACWxwAAls0AAJbTAACW2QAAlt8AAJblAACW6wAAlvQAAJb9AACXBwAAlxEAAJcaAACXTQAAl4UAAJeaAACXoQAAl6cAAJevAACXtQAAl70AAJfGAACXzwAAl9gAAJfhAACX5wAAl/0AAJgWAACYJAAAmDsAAJhUAACYbQAAmHsAAJiBAACYnAAAmK0AAJi+AACY0AAAmQMAAJk2AACZNgAAmVEAAJlVAACZmQAAmdEAAJoFAACaFgAAmiYAAJo6AACabwAAmo0AAJq+AACa7wAAmvcAAJr/AACbBwAAmw8AAJsXAACbQQAAm38AAJvLAACcFwAAnE0AAJylAACc6AAAnQcAAJ0oAACdggAAnbkAAJ31AACeKQAAnlYAAJ6XAACezQAAnvIAAJ75AACfOAAAn58AAJ+0AACgCAAAoIMAAKCHAACgpgAAoMIAAKDtAAChHAAAoUsAAKGcAAChygAAoc4AAKHwAACiDgAAoi4AAKJIAACiYgAAopcAAKKbAACi3AAAoxkAAKNXAACjaQAAo3oAAKOhAACjrgAAo8gAAKPgAACj9wAApBAAAKQdAACkKgAApEIAAKRaAACkYgAApG4AAKR6AACkggAApJwAAKSxAACkvAAApMoAAKT0AAClHgAApTIAAKVGAAClXQAApXQAAKV6AAClgAAApYYAAKWMAAClkgAApZgAAKWeAAClpAAApaoAAKWwAACltgAApbwAAKXCAAClyAAApc4AAKXUAACl2gAApeAAAKXmAACl7AAApfIAAKX4AACl/gAApgQAAKYKAACmEAAAphYAAKYcAACmIgAApigAAKYuAACmNAAApmgAAKZsAACmpAAApu4AAKdGAACnoAAAp/YAAKggAACoUQAAqH8AAKizAACo3gAAqQMAAKkoAACpWAAAqXsAAKmqAACpwwAAqd0AAKonAACqcgAAqrEAAKrvAACrRQAAq5sAAKvzAACsSwAArIkAAKy/AACs4wAArSEAAK1MAACtoAAArbsAAK3XAACuOwAArokAAK7HAACvHgAArzUAAK9LAACvbQAAr48AAK+yAACv2wAAr/EAALAZAACwWwAAsGMAALCKAACwsQAAsNwAALD0AACxFwAAsSAAALFMAACxdQAAscUAALHLAACyFQAAskoAALJwAACymwAAss4AALLWAACy9wAAsxYAALM8AACzUQAAs2gAALOXAACznQAAs6MAALPIAACz9QAAtEkAALR2AAC0rQAAtMgAALTvAAC1GQAAtUwAALV1AAC1mQAAtbYAALXkAAC2EQAAtjoAALZmAAC2lwAAtsMAALbLAAC20wAAtwUAALcvAAC3UAAAt2IAALd/AAC3qQAAt9gAALf2AAC4HwAAuEkAALh6AAC4mwAAuJ8AALjiAAC5FwAAuR8AALknAAC5VgAAuZcAALnAAAC5xAAAucoAALnQAAC51gAAudwAALniAAC56AAAuf4AALoCAAC6BgAAugoAALpgAAC6ZAAAuqQAALqoAAC63wAAuuoAALrwAAC7CQAAuyIAALtHAAC7bwAAu5wAALukAAC73wAAvAAAALwjAAC8LAAAvDAAALw4AAC8VgAAvGsAALx0AAC8fQAAvIMAALysAAC8zQAAvPcAAL0yAAC9WwAAvYIAAL3PAAC94QAAvgkAAL5jAAC+xAAAvzUAAL+IAAC/5AAAwDkAAMA9AADAYAAAwIEAAMCpAADAuwAAwM0AAMD5AADBQQAAwUcAAMGGAADB5gAAwjAAAMJ0AADCvwAAwtkAAMMBAADDIQAAw1gAAMOJAADDvAAAw9AAAMP+AADEKgAAxFEAAMSzAADEywAAxRQAAMVPAADFmgAAxcYAAMYPAADGPAAAxmIAAMaUAADGnAAAxqcAAMbXAADHAQAAxyEAAMdPAADHdwAAx58AAMf0AADIFQAAyEUAAMh0AADIogAAyKYAAMiqAADIsgAAyNgAAMj9AADJAwAAyQkAAMkPAADJFQAAyRsAAMkhAADJJwAAyS8AAMk3AADJPQAAyUMAAMmTAADKHQAAyjoAAMpAAADKSAAAylAAAMpWAADKXAAAymQAAMpqAADKcgAAyn8AAMqHAADKpgAAyqwAAMrWAADK+QAAyv8AAMsHAADLDQAAyxUAAMsbAADLMgAAy1IAAMtaAADLXgAAy3MAAMt5AADLgQAAy4kAAMuRAADLlwAAy6AAAMumAADLrgAAy7QAAMvGAADL6wAAy/MAAMv7AADMAQAAzAcAAMwdAADMPgAAzEYAAMxbAADMYQAAzGkAAMxxAADMdwAAzH8AAMyFAADMiwAAzJMAAMyZAADMoQAAzLgAAMzAAADM1wAAzN0AAMztAADM8wAAzPwAAM0CAADNCwAAzSMAAM1BAADNWwAAzWEAAM1pAADNbwAAzZQAAM2cAADNugAAzcAAAM3IAADN0AAAzdYAAM3cAADN5QAAze4AAM4hAADOKQAAzjEAAM6PAADOqgAAzsYAAM7pAADPCAAAzw4AAM8WAADPHAAAz0cAAM9NAADPVQAAz1sAAM9jAADPaQAAz6UAAM+2AADPzgAAz9YAAM/cAADP4gAAz/gAAM/+AADQBgAA0A4AANAUAADQGgAA0CMAANArAADQUgAA0FsAANBjAADQeQAA0J8AANClAADQrgAA0LQAANC6AADQzwAA0OMAANDpAADQ8QAA0PcAAND9AADRFAAA0RoAANEiAADRKwAA0TQAANFFAADRTwAA0VUAANFbAADRYwAA0XcAANGnAADRxwAA0foAANIuAADScAAA0qwAANLyAADS+AAA0xIAANM0AADTWgAA05c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AAQ4QAAEOQQABDn8AAQ6uAAEPSgABD3QAAQ+bAAEP0wABD9cAARAaAAEQggABEKsAARDLAAERHAABETkAARFNAAERYQABEXYAARGLAAERnQABEa8AARHCAAER1AABEeYAARH4AAESCgABEh0AARIxAAESTgABEmIAARJ1AAESiAABEp0AARKwAAESxgABEtwAARLxAAETBAABExkAARMsAAETQQABE1YAARNsAAETewABE4sAAROdAAETsAABE8YAARPZAAET7gABFAQAARQaAAEUMAABFEAAARRRAAEUYwABFH4AARSQAAEUogABFLIAARTDAAEU1gABFOcAART8AAEVDwABFR8AARUuAAEVQAABFVEAARVjAAEVdgABFYcAARWZAAEVrQABFcIAARXXAAEV7AABFf0AARYPAAEWIgABFjQAARZGAAEWWAABFnQAARaRAAEWrwABFswAARbeAAEW8gABFwUAARcaAAEXLwABF0QAARdWAAEXagABF30AAReRAAEXpAABF7kAARfKAAEX3QABF/IAARgHAAEYHQABGDMAARhEAAEYVQABGGgAARh6AAEYjAABGJ4AARiwAAEYwwABGNcAARj1AAEZCgABGR8AARkzAAEZRwABGVwAARlxAAEZgwABGZYAARmqAAEZvQABGdEAARnmAAEZ9wABGgoAARofAAEaNAABGkkAARpfAAEacAABGoEAARqUAAEapgABGrgAARrLAAEa3QABGu8AARsDAAEbIAABGzQAARtIAAEbWgABG24AARuAAAEblAABG6kAARu9AAEb0QABG+UAARv6AAEcDwABHBkAARxnAAEcbwABHHQAARx4AAEcfQABHIIAARyHAAEcjAABHJEAARyWAAEcmwABHKAAARylAAEctAABHMQAARzaAAEc/AABHSIAAR08AAEdQAABHUQAAR1IAAEdTAABHVQAAR1cAAEdbwABHYIAAR2TAAEdpAABHboAAR3XAAEd8wABHgoAAR4SAAEeLQABHkcAAR5cAAEeZAABHmwAAR5wAAEedAABHnwAAR6XAAEetwABHr8AAR7HAAEezwABHtcAAR7fAAEe5wABHvYAAR77AAEfAwABHwsAAR8bAAEfJAABHzQAAR9LAAEfZgABH3sAAR+bAAEfqgABH8YAAR/OAAEf0wABH9cAAR/yAAEf9wABH/8AASAYAAEgRAABIH0AASC1AAEgywABINwAASJPAAEibAABInMAASKZAAEipwABIsQAASLhAAEjHgABIyUAASMpAAEjQQABI3MAASOTAAEjrAABI7QAASPDAAEjywABI+wAASQGAAEkGgABJCYAASQ5AAEkVgABJJQAASSfAAEkrAABJLMAASS6AAElAwABJU0AASVpAAEldQABJYgAASW6AAElzQABJegAASX7AAEmFgABJkAAASZcAAEmYgABJpoAASbTAAEm8AABJxcAAScwAAEnbgABJ4EAASecAAEnqQABJ70AASfbAAEoDgABKBYAASgfAAEoKAABKDEAASg6AAEoQwABKEwAAShaAAEoYwABKGwAASh6AAEogwABKIwAASiVAAEongABKKYAASirAAEoxQABKQEAASkKAAEpEwABKRwAASklAAEpLgABKTcAASlAAAEpSQABKVIAASlbAAEpZAABKW0AASl2AAEpfwABKYgAASmRAAEpmgABKaMAASmsAAEptQABKb4AASnxAAEp+gABKgMAASoMAAEqFQABKh4AASonAAEqMAABKjkAASpCAAEqSwABKksAASpUAAEqXAABKmQAASpsAAEqdAABKnwAASqEAAEquAABKt4AASrmAAErBAABKx4AASsxAAErRQABK1kAASt5AAErkQABK6oAASvBAAEr3QABK/sAASwIAAEsIgABLCYAASwrAAEsMwABLDgAASw9AAEsYwABLIAAASyWAAEsqwABLMcAASzoAAEs8QABLPoAAS0DAAEtDAABLRUAAS0eAAEtJwABLTAAAS1IAAEtZwABLY0AAS2WAAEtsQABLcwAAS31AAEuBQABLlMAAS5cAAEuZQABLm4AAS53AAEugAABLokAAS6SAAEumwABLqQAAS6tAAEutgABLr8AAS7IAAEu0QABLtcAAS7gAAEu6QABLvIAAS77AAEvBAABLw0AAS8WAAEvHwABLygAAS8xAAEvOgABL0MAAS9MAAEvVQABL14AAS9nAAEvcAABL3kAAS+CAAEviwABL6YAAS+uAAEv+QABMCoAATBQAAEwYwABMIQAATDmAAEw8AABMS0AATFUAAExngABMbYAATHDAAEx2wABMfsAATIDAAEyCwABMiMAATJCAAEySgABMlIAATJsAAEyhwABMqIAATK9AAEy1gABMvAAATMLAAEzJgABM0AAATNZAAEzYQABM2kAATN8AAEzhAABM5QAAEAAAyuAMoAGAEYABUAAgCYAKoAiwAAAYkNbQAIAAgAAAARANIAAwABBAkAAABeAAAAAwABBAkAAQAaAF4AAwABBAkAAgAOAHgAAwABBAkAAwA0AIYAAwABBAkABAAgALoAAwABBAkABQCQANoAAwABBAkABgAeAWoAAwABBAkABwBEAYgAAwABBAkACAAqAcwAAwABBAkACQAoAfYAAwABBAkACgBCAh4AAwABBAkACwA+AmAAAwABBAkADAA8Ap4AAwABBAkADQKWAtoAAwABBAkADgA0BXAAAwABBAkAEAASBaQAAwABBAkAEQAMBbYAQwBvAHAAeQByAGkAZwBoAHQAIAAyADAAMQA1ACAARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAQQBsAGwAIABSAGkAZwBoAHQAcwAgAFIAZQBzAGUAcgB2AGUAZAAuAE4AbwB0AG8AIABTAGEAbgBzACAATQBlAGQAUgBlAGcAdQBsAGEAcgAyAC4AMAAwADAAOwBHAE8ATwBHADsATgBvAHQAbwBTAGEAbgBzAC0ATQBlAGQAaQB1AG0ATgBvAHQAbwAgAFMAYQBuAHMAIABNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMgAuADAAMAAwADsARwBPAE8ARwA7AG4AbwB0AG8ALQBzAG8AdQByAGMAZQA6ADIAMAAxADcAMAA5ADEANQA6ADkAMABlAGYAOQA5ADMAMwA4ADcAYwAwADsAIAB0AHQAZgBhAHUAdABvAGgAaQBuAHQAIAAoAHYAMQAuADcAKQBOAG8AdABvAFMAYQBuAHMALQBNAGUAZABpAHUAbQBOAG8AdABvACAAaQBzACAAYQAgAHQAcgBhAGQAZQBtAGEAcgBrACAAbwBmACAARwBvAG8AZwBsAGUAIABJAG4AYwAuAE0AbwBuAG8AdAB5AHAAZQAgAEkAbQBhAGcAaQBuAGcAIABJAG4AYwAuAE0AbwBuAG8AdAB5AHAAZQAgAEQAZQBzAGkAZwBuACAAVABlAGEAbQBEAGUAcwBpAGcAbgBlAGQAIABiAHkAIABNAG8AbgBvAHQAeQBwAGUAIABkAGUAcwBpAGcAbgAgAHQAZQBhAG0ALgBoAHQAdABwADoALwAvAHcAdwB3AC4AZwBvAG8AZwBsAGUALgBjAG8AbQAvAGcAZQB0AC8AbgBvAHQAbwAvAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBtAG8AbgBvAHQAeQBwAGUALgBjAG8AbQAvAHMAdAB1AGQAaQBvAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADEALgAxAC4AIABUAGgAaQBzACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAGkAcwAgAGQAaQBzAHQAcgBpAGIAdQB0AGUAZAAgAG8AbgAgAGEAbgAgACIAQQBTACAASQBTACIAIABCAEEAUwBJAFMALAAgAFcASQBUAEgATwBVAFQAIABXAEEAUgBSAEEATgBUAEkARQBTACAATwBSACAAQwBPAE4ARABJAFQASQBPAE4AUwAgAE8ARgAgAEEATgBZACAASwBJAE4ARAAsACAAZQBpAHQAaABlAHIAIABlAHgAcAByAGUAcwBzACAAbwByACAAaQBtAHAAbABpAGUAZAAuACAAUwBlAGUAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACAAZgBvAHIAIAB0AGgAZQAgAHMAcABlAGMAaQBmAGkAYwAgAGwAYQBuAGcAdQBhAGcAZQAsACAAcABlAHIAbQBpAHMAcwBpAG8AbgBzACAAYQBuAGQAIABsAGkAbQBpAHQAYQB0AGkAbwBuAHMAIABnAG8AdgBlAHIAbgBpAG4AZwAgAHkAbwB1AHIAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlAC4AaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAE4AbwB0AG8AIABTAGEAbgBzAE0AZQBkAGkAdQBtAAIAAAAAAAD/nAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAMrgAAAQIBAwADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEBBACjAIQAhQC9AJYA6ACGAI4AiwCdAKkApAEFAIoBBgCDAJMBBwEIAI0BCQCIAMMA3gEKAJ4AqgD1APQA9gCiAK0AyQDHAK4AYgBjAJAAZADLAGUAyADKAM8AzADNAM4A6QBmANMA0ADRAK8AZwDwAJEA1gDUANUAaADrAO0AiQBqAGkAawBtAGwAbgCgAG8AcQBwAHIAcwB1AHQAdgB3AOoAeAB6AHkAewB9AHwAuAChAH8AfgCAAIEA7ADuALoBCwEMAQ0BDgEPARAA/QD+AREBEgETARQA/wEAARUBFgEXAQEBGAEZARoBGwEcAR0BHgEfASABIQEiASMA+AD5ASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMA+gE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgDiAOMBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEAsACxAVIBUwFUAVUBVgFXAVgBWQFaAVsA+wD8AOQA5QFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxALsBcgFzAXQBdQDmAOcBdgCmAXcBeAF5AXoBewF8AX0BfgDYAOEA2gDbANwA3QDgANkA3wF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwCbAbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AgACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwCyALMCLAItALYAtwDEAi4AtAC1AMUAggDCAIcAqwDGAi8CMAC+AL8CMQC8AjIA9wIzAjQCNQI2AjcCOACMAjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA9QD1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5APlA+YD5wPoA+kD6gPrA+wD7QPuA+8D8APxA/ID8wP0A/UD9gP3A/gD+QP6A/sD/AP9A/4D/wQABAEEAgQDBAQEBQQGBAcECAQJBAoECwQMBA0EDgQPBBAEEQQSBBMEFAQVBBYEFwQYBBkEGgQbBBwEHQQeBB8EIAQhBCIEIwQkBCUEJgQnBCgEKQQqBCsELAQtBC4ELwQwBDEEMgQzBDQENQQ2BDcEOAQ5BDoEOwQ8BD0EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwETQROBE8EUARRBFIEUwRUBFUEVgRXBFgEWQRaBFsEXARdBF4EXwRgBGEEYgRjBGQEZQRmBGcEaARpBGoEawRsBG0EbgRvBHAEcQRyBHMEdAR1BHYEdwR4BHkEegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSHBIgEiQSKBIsEjASNBI4EjwSQBJEEkgSTBJQElQSWBJcEmASZBJoEmwScBJ0EngSfBKAEoQSiBKMEpASlBKYEpwSoBKkEqgSrBKwErQSuBK8EsASxBLIEswS0BLUEtgS3BLgEuQS6BLsEvAS9BL4EvwTABMEEwgTDBMQExQTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNYE1wTYBNkE2gTbBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFKAUpBSoFKwUsBS0FLgUvBTAFMQUyBTMFNAU1BTYFNwU4BTkFOgU7BTwFPQU+BT8FQAVBBUIFQwVEBUUFRgVHBUgFSQVKBUsFTAVNBU4FTwVQBVEFUgVTBVQFVQVWBVcFWAVZBVoFWwVcBV0FXgVfBWAFYQViBWMFZAVlBWYFZwVoBWkFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWbBZwFnQWeBZ8FoAWhBaIFowWkBaUFpgWnBagFqQWqBasFrAWtBa4FrwWwBbEFsgWzBbQFtQW2BbcFuAW5BboFuwW8Bb0FvgW/BcAFwQXCBcMFxAXFBcYFxwXIBckFygXLBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBdsF3AXdBd4F3wXgBeEF4gXjBeQF5QXmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfkF+gX7BfwF/QX+Bf8GAAYBBgIGAwYEBgUGBgYHBggGCQYKBgsGDAYNBg4GDwYQBhEGEgYTBhQGFQYWBhcGGAYZBhoGGwYcBh0GHgYfBiAGIQYiBiMGJAYlBiYGJwYoBikGKgYrBiwGLQYuBi8GMAYxBjIGMwY0BjUGNgY3BjgGOQY6BjsGPAY9Bj4GPwZABkEGQgZDBkQGRQZGBkcGSAZJBkoGSwZMBk0GTgZPBlAGUQZSBlMGVAZVBlYGVwZYBlkGWgZbBlwGXQZeBl8GYAZhBmIGYwZkBmUGZgZnBmgGaQZqBmsGbAZtBm4GbwZwBnEGcgZzBnQGdQZ2BncGeAZ5BnoGewZ8Bn0GfgZ/BoAGgQaCBoMGhAaFBoYGhwaIBokGigaLBowGjQaOBo8GkAaRBpIGkwaUBpUGlgaXBpgGmQaaBpsGnAadBp4GnwagBqEGogajBqQGpQamBqcGqAapBqoGqwasBq0GrgavBrAGsQayBrMGtAa1BrYGtwa4BrkGuga7BrwGvQa+Br8GwAbBBsIGwwbEBsUGxgbHBsgGyQbKBssGzAbNBs4GzwbQBtEG0gbTBtQG1QbWBtcG2AbZBtoG2wbcBt0G3gbfBuAG4QbiBuMG5AblBuYG5wboBukG6gbrBuwG7QbuBu8G8AbxBvIG8wb0BvUG9gb3BvgG+Qb6BvsG/Ab9Bv4G/wcABwEHAgcDBwQHBQcGBwcHCAcJBwoHCwcMBw0HDgcPBxAHEQcSBxMHFAcVBxYHFwcYBxkHGgcbBxwHHQceBx8HIAchByIHIwckByUHJgcnBygHKQcqBysHLActBy4HLwcwBzEHMgczBzQHNQc2BzcHOAc5BzoHOwc8Bz0HPgc/B0AHQQdCB0MHRAdFB0YHRwdIB0kHSgdLB0wHTQdOB08HUAdRB1IHUwdUB1UHVgdXB1gHWQdaB1sHXAddB14HXwdgB2EHYgdjB2QHZQdmB2cHaAdpB2oHawdsB20HbgdvB3AHcQdyB3MHdAd1B3YHdwd4B3kHegd7B3wHfQd+B38HgAeBB4IHgweEB4UHhgeHB4gHiQeKB4sHjAeNB44HjweQB5EHkgeTB5QHlQeWB5cHmAeZB5oHmwecB50HngefB6AHoQeiB6MHpAelB6YHpweoB6kHqgerB6wHrQeuB68HsAexB7IHswe0B7UHtge3B7gHuQe6B7sHvAe9B74HvwfAB8EHwgfDB8QHxQfGB8cHyAfJB8oHywfMB80HzgfPB9AH0QfSB9MH1AfVB9YH1wfYB9kH2gfbB9wH3QfeB98H4AfhB+IH4wfkB+UH5gfnB+gH6QfqB+sH7AftB+4H7wfwB/EH8gfzB/QH9Qf2B/cH+Af5B/oH+wf8B/0H/gf/CAAIAQgCCAMIBAgFCAYIBwgICAkICggLCAwIDQgOCA8IEAgRCBIIEwgUCBUIFggXCBgIGQgaCBsIHAgdCB4IHwggCCEIIggjCCQIJQgmCCcIKAgpCCoIKwgsCC0ILggvCDAIMQgyCDMINAg1CDYINwg4CDkIOgg7CDwIPQg+CD8IQAhBCEIA1whDCEQIRQhGCEcISAhJCEoISwhMCE0ITghPCFAIUQhSCFMIVAhVCFYIVwhYCFkIWghbCFwIXQheCF8IYAhhCGIIYwhkCGUIZghnCGgIaQhqCGsIbAhtCG4IbwhwCHEIcghzCHQIdQh2CHcIeAh5CHoIewh8CH0Ifgh/CIAIgQiCCIMIhAiFCIYIhwiICIkIigiLCIwIjQiOCI8IkAiRCJIIkwiUCJUIlgiXCJgImQiaCJsInAidCJ4InwigCKEIogijCKQIpQimCKcIqAipCKoIqwisCK0IrgivCLAIsQiyCLMItAi1CLYItwi4CLkIugi7CLwIvQi+CL8IwAjBCMIIwwjECMUIxgjHCMgIyQjKCMsIzAjNCM4IzwjQCNEI0gjTCNQI1QjWCNcI2AjZCNoI2wjcCN0I3gjfCOAI4QjiCOMI5AjlCOYI5wjoCOkI6gjrCOwI7QjuCO8I8AjxCPII8wj0CPUI9gj3CPgI+Qj6CPsI/Aj9CP4I/wkACQEJAgkDCQQJBQkGCQcJCAkJCQoJCwkMCQ0JDgkPCRAJEQkSCRMJFAkVCRYJFwkYCRkJGgkbCRwJHQkeCR8JIAkhCSIJIwkkCSUJJgknCSgJKQkqCSsJLAktCS4JLwkwCTEJMgkzCTQJNQk2CTcJOAk5CToJOwk8CT0JPgk/CUAJQQlCCUMJRAlFCUYJRwlICUkJSglLCUwJTQlOCU8JUAlRCVIJUwlUCVUJVglXCVgJWQlaCVsJXAldCV4JXwlgCWEJYgljCWQJZQlmCWcJaAlpCWoJawlsCW0JbglvCXAJcQlyCXMJdAl1CXYJdwl4CXkJegl7CXwJfQl+CX8JgAmBCYIJgwmECYUJhgmHCYgJiQmKCYsJjAmNCY4JjwmQCZEJkgmTCZQJlQmWCZcJmAmZCZoJmwmcCZ0JngmfCaAJoQmiCaMJpAmlCaYJpwmoCakJqgmrCawJrQmuCa8JsAmxCbIJswm0CbUJtgm3CbgJuQm6CbsJvAm9Cb4JvwnACcEJwgnDCcQJxQnGCccJyAnJCcoJywnMCc0JzgnPCdAJ0QnSCdMJ1AnVCdYJ1wnYCdkJ2gnbCdwJ3QneCd8J4AnhCeIJ4wnkCeUJ5gnnCegJ6QnqCesJ7AntCe4J7wnwCfEJ8gnzCfQJ9Qn2CfcJ+An5CfoJ+wn8Cf0J/gn/CgAKAQoCCgMKBAoFCgYKBwoICgkKCgoLCgwKDQoOCg8KEAoRChIKEwoUChUKFgoXChgKGQoaChsKHAodCh4KHwogCiEKIgojCiQKJQomCicKKAopCioKKwosCi0KLgovCjAKMQoyCjMKNAo1CjYKNwo4CjkKOgo7CjwKPQo+Cj8KQApBCkIKQwpECkUKRgpHCkgKSQpKCksKTApNCk4KTwpQClEKUgpTClQKVQpWClcKWApZCloKWwpcCl0KXgpfCmAKYQpiCmMKZAplCmYKZwpoCmkKagprCmwKbQpuCm8KcApxCnIKcwp0CnUKdgp3CngKeQp6CnsKfAp9Cn4KfwqACoEKggqDCoQKhQqGCocKiAqJCooKiwqMCo0KjgqPCpAKkQqSCpMKlAqVCpYKlwqYCpkKmgqbCpwKnQqeCp8KoAqhCqIKowqkCqUKpgqnCqgKqQqqCqsKrAqtCq4KrwqwCrEKsgqzCrQKtQq2CrcKuAq5CroKuwq8Cr0Kvgq/CsAKwQrCCsMKxArFCsYKxwrICskKygrLCswKzQrOCs8K0ArRCtIK0wrUCtUK1grXCtgK2QraCtsK3ArdCt4K3wrgCuEK4grjCuQK5QrmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+Cv8LAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwscCx0LHgsfCyALIQsiCyMLJAslCyYLJwsoCykLKgsrCywLLQsuCy8LMAsxCzILMws0CzULNgs3CzgLOQs6CzsLPAs9Cz4LPwtAC0ELQgtDC0QLRQtGC0cLSAtJC0oLSwtMC00LTgtPC1ALUQtSC1MLVAtVC1YLVwtYC1kLWgtbC1wLXQteC18LYAthC2ILYwtkC2ULZgtnC2gLaQtqC2sLbAttC24LbwtwC3ELcgtzC3QLdQt2C3cLeAt5C3oLewt8C30Lfgt/C4ALgQuCC4MLhAuFC4YLhwuIC4kLiguLC4wLjQuOC48LkAuRC5ILkwuUC5ULlguXC5gLmQuaC5sLnAudC54LnwugC6ELogujC6QLpQumC6cLqAupC6oLqwusC60LrguvC7ALsQuyC7MLtAu1C7YLtwu4C7kLugu7C7wLvQu+C78LwAvBC8ILwwvEC8ULxgvHC8gLyQvKC8sLzAvNC84LzwvQC9EL0gvTC9QL1QvWC9cL2AvZC9oL2wvcC90L3gvfC+AL4QviC+ML5AvlC+YL5wvoC+kL6gvrC+wL7QvuC+8L8AvxC/IL8wv0C/UL9gv3C/gL+Qv6C/sL/Av9C/4L/wwADAEMAgwDDAQMBQwGDAcMCAwJDAoMCwwMDA0MDgwPDBAMEQwSDBMMFAwVDBYMFwwYDBkMGgwbDBwMHQweDB8MIAwhDCIMIwwkDCUMJgwnDCgMKQwqDCsMLAwtDC4MLwwwDDEMMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/DEAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4DHkMegx7DHwMfQx+DH8MgAyBDIIMgwyEDIUMhgyHDIgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoMmwycDJ0MngyfDKAMoQyiDKMMpAylDKYMpwyoDKkMqgyrDKwMrQyuDK8MsAyxDLIMswy0DLUMtgy3DLgMuQy6DLsMvAy9DL4MvwzADMEMwgzDDMQMxQROVUxMAkNSB3VuaTAwQTAHdW5pMDBBRAlvdmVyc2NvcmUHdW5pMDBCMgd1bmkwMEIzB3VuaTAwQjUHdW5pMDBCOQdBbWFjcm9uB2FtYWNyb24GQWJyZXZlBmFicmV2ZQdBb2dvbmVrB2FvZ29uZWsLQ2NpcmN1bWZsZXgLY2NpcmN1bWZsZXgEQ2RvdARjZG90BkRjYXJvbgZkY2Fyb24GRGNyb2F0B0VtYWNyb24HZW1hY3JvbgZFYnJldmUGZWJyZXZlCkVkb3RhY2NlbnQKZWRvdGFjY2VudAdFb2dvbmVrB2VvZ29uZWsGRWNhcm9uBmVjYXJvbgtHY2lyY3VtZmxleAtnY2lyY3VtZmxleARHZG90BGdkb3QHdW5pMDEyMgd1bmkwMTIzC0hjaXJjdW1mbGV4C2hjaXJjdW1mbGV4BEhiYXIEaGJhcgZJdGlsZGUGaXRpbGRlB0ltYWNyb24HaW1hY3JvbgZJYnJldmUGaWJyZXZlB0lvZ29uZWsHaW9nb25lawJJSgJpagtKY2lyY3VtZmxleAtqY2lyY3VtZmxleAd1bmkwMTM2B3VuaTAxMzcMa2dyZWVubGFuZGljBkxhY3V0ZQZsYWN1dGUHdW5pMDEzQgd1bmkwMTNDBkxjYXJvbgZsY2Fyb24ETGRvdARsZG90Bk5hY3V0ZQZuYWN1dGUHdW5pMDE0NQd1bmkwMTQ2Bk5jYXJvbgZuY2Fyb24LbmFwb3N0cm9waGUDRW5nA2VuZwdPbWFjcm9uB29tYWNyb24GT2JyZXZlBm9icmV2ZQ1PaHVuZ2FydW1sYXV0DW9odW5nYXJ1bWxhdXQGUmFjdXRlBnJhY3V0ZQd1bmkwMTU2B3VuaTAxNTcGUmNhcm9uBnJjYXJvbgZTYWN1dGUGc2FjdXRlC1NjaXJjdW1mbGV4C3NjaXJjdW1mbGV4B3VuaTAyMUEHdW5pMDIxQgZUY2Fyb24GdGNhcm9uBFRiYXIEdGJhcgZVdGlsZGUGdXRpbGRlB1VtYWNyb24HdW1hY3JvbgZVYnJldmUGdWJyZXZlBVVyaW5nBXVyaW5nDVVodW5nYXJ1bWxhdXQNdWh1bmdhcnVtbGF1dAdVb2dvbmVrB3VvZ29uZWsLV2NpcmN1bWZsZXgLd2NpcmN1bWZsZXgLWWNpcmN1bWZsZXgLeWNpcmN1bWZsZXgGWmFjdXRlBnphY3V0ZQpaZG90YWNjZW50Cnpkb3RhY2NlbnQFbG9uZ3MKQXJpbmdhY3V0ZQphcmluZ2FjdXRlB0FFYWN1dGUHYWVhY3V0ZQtPc2xhc2hhY3V0ZQtvc2xhc2hhY3V0ZQd1bmkwMjE4B3VuaTAyMTkFdG9ub3MNZGllcmVzaXN0b25vcwpBbHBoYXRvbm9zCWFub3RlbGVpYQxFcHNpbG9udG9ub3MIRXRhdG9ub3MJSW90YXRvbm9zDE9taWNyb250b25vcwxVcHNpbG9udG9ub3MKT21lZ2F0b25vcxFpb3RhZGllcmVzaXN0b25vcwVBbHBoYQRCZXRhBUdhbW1hB3VuaTAzOTQHRXBzaWxvbgRaZXRhA0V0YQVUaGV0YQRJb3RhBUthcHBhBkxhbWJkYQJNdQJOdQJYaQdPbWljcm9uAlBpA1JobwVTaWdtYQNUYXUHVXBzaWxvbgNQaGkDQ2hpA1BzaQd1bmkwM0E5DElvdGFkaWVyZXNpcw9VcHNpbG9uZGllcmVzaXMKYWxwaGF0b25vcwxlcHNpbG9udG9ub3MIZXRhdG9ub3MJaW90YXRvbm9zFHVwc2lsb25kaWVyZXNpc3Rvbm9zBWFscGhhBGJldGEFZ2FtbWEFZGVsdGEHZXBzaWxvbgR6ZXRhA2V0YQV0aGV0YQRpb3RhBWthcHBhBmxhbWJkYQd1bmkwM0JDAm51AnhpB29taWNyb24DcmhvBnNpZ21hMQVzaWdtYQN0YXUHdXBzaWxvbgNwaGkDY2hpA3BzaQVvbWVnYQxpb3RhZGllcmVzaXMPdXBzaWxvbmRpZXJlc2lzDG9taWNyb250b25vcwx1cHNpbG9udG9ub3MKb21lZ2F0b25vcwlhZmlpMTAwMjMJYWZpaTEwMDUxCWFmaWkxMDA1MglhZmlpMTAwNTMJYWZpaTEwMDU0CWFmaWkxMDA1NQlhZmlpMTAwNTYJYWZpaTEwMDU3CWFmaWkxMDA1OAlhZmlpMTAwNTkJYWZpaTEwMDYwCWFmaWkxMDA2MQlhZmlpMTAwNjIJYWZpaTEwMTQ1CWFmaWkxMDAxNwlhZmlpMTAwMTgJYWZpaTEwMDE5CWFmaWkxMDAyMAlhZmlpMTAwMjEJYWZpaTEwMDIyCWFmaWkxMDAyNAlhZmlpMTAwMjUJYWZpaTEwMDI2CWFmaWkxMDAyNwlhZmlpMTAwMjgJYWZpaTEwMDI5CWFmaWkxMDAzMAlhZmlpMTAwMzEJYWZpaTEwMDMyCWFmaWkxMDAzMwlhZmlpMTAwMzQJYWZpaTEwMDM1CWFmaWkxMDAzNglhZmlpMTAwMzcJYWZpaTEwMDM4CWFmaWkxMDAzOQlhZmlpMTAwNDAJYWZpaTEwMDQxCWFmaWkxMDA0MglhZmlpMTAwNDMJYWZpaTEwMDQ0CWFmaWkxMDA0NQlhZmlpMTAwNDYJYWZpaTEwMDQ3CWFmaWkxMDA0OAlhZmlpMTAwNDkJYWZpaTEwMDY1CWFmaWkxMDA2NglhZmlpMTAwNjcJYWZpaTEwMDY4CWFmaWkxMDA2OQlhZmlpMTAwNzAJYWZpaTEwMDcyCWFmaWkxMDA3MwlhZmlpMTAwNzQJYWZpaTEwMDc1CWFmaWkxMDA3NglhZmlpMTAwNzcJYWZpaTEwMDc4CWFmaWkxMDA3OQlhZmlpMTAwODAJYWZpaTEwMDgxCWFmaWkxMDA4MglhZmlpMTAwODMJYWZpaTEwMDg0CWFmaWkxMDA4NQlhZmlpMTAwODYJYWZpaTEwMDg3CWFmaWkxMDA4OAlhZmlpMTAwODkJYWZpaTEwMDkwCWFmaWkxMDA5MQlhZmlpMTAwOTIJYWZpaTEwMDkzCWFmaWkxMDA5NAlhZmlpMTAwOTUJYWZpaTEwMDk2CWFmaWkxMDA5NwlhZmlpMTAwNzEJYWZpaTEwMDk5CWFmaWkxMDEwMAlhZmlpMTAxMDEJYWZpaTEwMTAyCWFmaWkxMDEwMwlhZmlpMTAxMDQJYWZpaTEwMTA1CWFmaWkxMDEwNglhZmlpMTAxMDcJYWZpaTEwMTA4CWFmaWkxMDEwOQlhZmlpMTAxMTAJYWZpaTEwMTkzCWFmaWkxMDA1MAlhZmlpMTAwOTgGV2dyYXZlBndncmF2ZQZXYWN1dGUGd2FjdXRlCVdkaWVyZXNpcwl3ZGllcmVzaXMGWWdyYXZlBnlncmF2ZQlhZmlpMDAyMDgNdW5kZXJzY29yZWRibA1xdW90ZXJldmVyc2VkBm1pbnV0ZQZzZWNvbmQJZXhjbGFtZGJsCW5zdXBlcmlvcglhZmlpMDg5NDEGcGVzZXRhBEV1cm8JYWZpaTYxMjQ4CWFmaWk2MTI4OQlhZmlpNjEzNTIHdW5pMjEyNgllc3RpbWF0ZWQJb25lZWlnaHRoDHRocmVlZWlnaHRocwtmaXZlZWlnaHRocwxzZXZlbmVpZ2h0aHMNY3lyaWxsaWNicmV2ZRBjYXJvbmNvbW1hYWNjZW50C2NvbW1hYWNjZW50EWNvbW1hYWNjZW50cm90YXRlB3VuaTIwNzQHdW5pMjA3NQd1bmkyMDc3B3VuaTIwNzgHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMEIHdW5pRkVGRgd1bmlGRkZDB3VuaUZGRkQHdW5pMDFGMAd1bmkwMkJDB3VuaTAzRDEHdW5pMDNEMgd1bmkwM0Q2B3VuaTFFM0UHdW5pMUUzRgd1bmkxRTAwB3VuaTFFMDEHdW5pMDJGMwVPaG9ybgVvaG9ybgVVaG9ybgV1aG9ybgRob29rB3VuaTA0MDAHdW5pMDQwRAd1bmkwNDUwB3VuaTA0NUQHdW5pMDQ2MAd1bmkwNDYxB3VuaTA0NjIHdW5pMDQ2Mwd1bmkwNDY0B3VuaTA0NjUHdW5pMDQ2Ngd1bmkwNDY3B3VuaTA0NjgHdW5pMDQ2OQd1bmkwNDZBB3VuaTA0NkIHdW5pMDQ2Qwd1bmkwNDZEB3VuaTA0NkUHdW5pMDQ2Rgd1bmkwNDcwB3VuaTA0NzEHdW5pMDQ3Mgd1bmkwNDczB3VuaTA0NzQHdW5pMDQ3NQd1bmkwNDc2B3VuaTA0NzcHdW5pMDQ3OAd1bmkwNDc5B3VuaTA0N0EHdW5pMDQ3Qgd1bmkwNDdDB3VuaTA0N0QHdW5pMDQ3RQd1bmkwNDdGB3VuaTA0ODAHdW5pMDQ4MQd1bmkwNDgyB3VuaTA0ODgHdW5pMDQ4OQd1bmkwNDhBB3VuaTA0OEIHdW5pMDQ4Qwd1bmkwNDhEB3VuaTA0OEUHdW5pMDQ4Rgd1bmkwNDkyB3VuaTA0OTMHdW5pMDQ5NAd1bmkwNDk1B3VuaTA0OTYHdW5pMDQ5Nwd1bmkwNDk4B3VuaTA0OTkHdW5pMDQ5QQd1bmkwNDlCB3VuaTA0OUMHdW5pMDQ5RAd1bmkwNDlFB3VuaTA0OUYHdW5pMDRBMAd1bmkwNEExB3VuaTA0QTIHdW5pMDRBMwd1bmkwNEE0B3VuaTA0QTUHdW5pMDRBNgd1bmkwNEE3B3VuaTA0QTgHdW5pMDRBOQd1bmkwNEFBB3VuaTA0QUIHdW5pMDRBQwd1bmkwNEFEB3VuaTA0QUUHdW5pMDRBRgd1bmkwNEIwB3VuaTA0QjEHdW5pMDRCMgd1bmkwNEIzB3VuaTA0QjQHdW5pMDRCNQd1bmkwNEI2B3VuaTA0QjcHdW5pMDRCOAd1bmkwNEI5B3VuaTA0QkEHdW5pMDRCQgd1bmkwNEJDB3VuaTA0QkQHdW5pMDRCRQd1bmkwNEJGB3VuaTA0QzAHdW5pMDRDMQd1bmkwNEMyB3VuaTA0QzMHdW5pMDRDNAd1bmkwNEM1B3VuaTA0QzYHdW5pMDRDNwd1bmkwNEM4B3VuaTA0QzkHdW5pMDRDQQd1bmkwNENCB3VuaTA0Q0MHdW5pMDRDRAd1bmkwNENFB3VuaTA0Q0YHdW5pMDREMAd1bmkwNEQxB3VuaTA0RDIHdW5pMDREMwd1bmkwNEQ0B3VuaTA0RDUHdW5pMDRENgd1bmkwNEQ3B3VuaTA0RDgHdW5pMDREOQd1bmkwNERBB3VuaTA0REIHdW5pMDREQwd1bmkwNEREB3VuaTA0REUHdW5pMDRERgd1bmkwNEUwB3VuaTA0RTEHdW5pMDRFMgd1bmkwNEUzB3VuaTA0RTQHdW5pMDRFNQd1bmkwNEU2B3VuaTA0RTcHdW5pMDRFOAd1bmkwNEU5B3VuaTA0RUEHdW5pMDRFQgd1bmkwNEVDB3VuaTA0RUQHdW5pMDRFRQd1bmkwNEVGB3VuaTA0RjAHdW5pMDRGMQd1bmkwNEYyB3VuaTA0RjMHdW5pMDRGNAd1bmkwNEY1B3VuaTA0RjYHdW5pMDRGNwd1bmkwNEY4B3VuaTA0RjkHdW5pMDRGQQd1bmkwNEZCB3VuaTA0RkMHdW5pMDRGRAd1bmkwNEZFB3VuaTA0RkYHdW5pMDUwMAd1bmkwNTAxB3VuaTA1MDIHdW5pMDUwMwd1bmkwNTA0B3VuaTA1MDUHdW5pMDUwNgd1bmkwNTA3B3VuaTA1MDgHdW5pMDUwOQd1bmkwNTBBB3VuaTA1MEIHdW5pMDUwQwd1bmkwNTBEB3VuaTA1MEUHdW5pMDUwRgd1bmkwNTEwB3VuaTA1MTEHdW5pMDUxMgd1bmkwNTEzB3VuaTFFQTAHdW5pMUVBMQd1bmkxRUEyB3VuaTFFQTMHdW5pMUVBNAd1bmkxRUE1B3VuaTFFQTYHdW5pMUVBNwd1bmkxRUE4B3VuaTFFQTkHdW5pMUVBQQd1bmkxRUFCB3VuaTFFQUMHdW5pMUVBRAd1bmkxRUFFB3VuaTFFQUYHdW5pMUVCMAd1bmkxRUIxB3VuaTFFQjIHdW5pMUVCMwd1bmkxRUI0B3VuaTFFQjUHdW5pMUVCNgd1bmkxRUI3B3VuaTFFQjgHdW5pMUVCOQd1bmkxRUJBB3VuaTFFQkIHdW5pMUVCQwd1bmkxRUJEB3VuaTFFQkUHdW5pMUVCRgd1bmkxRUMwB3VuaTFFQzEHdW5pMUVDMgd1bmkxRUMzB3VuaTFFQzQHdW5pMUVDNQd1bmkxRUM2B3VuaTFFQzcHdW5pMUVDOAd1bmkxRUM5B3VuaTFFQ0EHdW5pMUVDQgd1bmkxRUNDB3VuaTFFQ0QHdW5pMUVDRQd1bmkxRUNGB3VuaTFFRDAHdW5pMUVEMQd1bmkxRUQyB3VuaTFFRDMHdW5pMUVENAd1bmkxRUQ1B3VuaTFFRDYHdW5pMUVENwd1bmkxRUQ4B3VuaTFFRDkHdW5pMUVEQQd1bmkxRURCB3VuaTFFREMHdW5pMUVERAd1bmkxRURFB3VuaTFFREYHdW5pMUVFMAd1bmkxRUUxB3VuaTFFRTIHdW5pMUVFMwd1bmkxRUU0B3VuaTFFRTUHdW5pMUVFNgd1bmkxRUU3B3VuaTFFRTgHdW5pMUVFOQd1bmkxRUVBB3VuaTFFRUIHdW5pMUVFQwd1bmkxRUVEB3VuaTFFRUUHdW5pMUVFRgd1bmkxRUYwB3VuaTFFRjEHdW5pMUVGNAd1bmkxRUY1B3VuaTFFRjYHdW5pMUVGNwd1bmkxRUY4B3VuaTFFRjkHdW5pMjBBQhNjaXJjdW1mbGV4YWN1dGVjb21iE2NpcmN1bWZsZXhncmF2ZWNvbWISY2lyY3VtZmxleGhvb2tjb21iE2NpcmN1bWZsZXh0aWxkZWNvbWIOYnJldmVhY3V0ZWNvbWIOYnJldmVncmF2ZWNvbWINYnJldmVob29rY29tYg5icmV2ZXRpbGRlY29tYhBjeXJpbGxpY2hvb2tsZWZ0EWN5cmlsbGljYmlnaG9va1VDB3VuaTAxNjIHdW5pMDE2Mwd1bmkwMTgwB3VuaTAxODEHdW5pMDE4Mgd1bmkwMTgzB3VuaTAxODQHdW5pMDE4NQd1bmkwMTg2B3VuaTAxODcHdW5pMDE4OAd1bmkwMTg5B3VuaTAxOEEHdW5pMDE4Qgd1bmkwMThDB3VuaTAxOEQHdW5pMDE4RQd1bmkwMThGB3VuaTAxOTAHdW5pMDE5MQd1bmkwMTkzB3VuaTAxOTQHdW5pMDE5NQd1bmkwMTk2B3VuaTAxOTcHdW5pMDE5OAd1bmkwMTk5B3VuaTAxOUEHdW5pMDE5Qgd1bmkwMTlDB3VuaTAxOUQHdW5pMDE5RQd1bmkwMTlGB3VuaTAxQTIHdW5pMDFBMwd1bmkwMUE0B3VuaTAxQTUHdW5pMDFBNgd1bmkwMUE3B3VuaTAxQTgHdW5pMDFBOQd1bmkwMUFBB3VuaTAxQUIHdW5pMDFBQwd1bmkwMUFEB3VuaTAxQUUHdW5pMDFCMQd1bmkwMUIyB3VuaTAxQjMHdW5pMDFCNAd1bmkwMUI1B3VuaTAxQjYHdW5pMDFCNwd1bmkwMUI4B3VuaTAxQjkHdW5pMDFCQQd1bmkwMUJCB3VuaTAxQkMHdW5pMDFCRAd1bmkwMUJFB3VuaTAxQkYHdW5pMDFDMAd1bmkwMUMxB3VuaTAxQzIHdW5pMDFDMwd1bmkwMUM0B3VuaTAxQzUHdW5pMDFDNgd1bmkwMUM3B3VuaTAxQzgHdW5pMDFDOQd1bmkwMUNBB3VuaTAxQ0IHdW5pMDFDQwd1bmkwMUNEB3VuaTAxQ0UHdW5pMDFDRgd1bmkwMUQwB3VuaTAxRDEHdW5pMDFEMgd1bmkwMUQzB3VuaTAxRDQHdW5pMDFENQd1bmkwMUQ2B3VuaTAxRDcHdW5pMDFEOAd1bmkwMUQ5B3VuaTAxREEHdW5pMDFEQgd1bmkwMURDB3VuaTAxREUHdW5pMDFERgd1bmkwMUUwB3VuaTAxRTEHdW5pMDFFMgd1bmkwMUUzB3VuaTAxRTQHdW5pMDFFNQd1bmkwMUU2B3VuaTAxRTcHdW5pMDFFOAd1bmkwMUU5B3VuaTAxRUEHdW5pMDFFQgd1bmkwMUVDB3VuaTAxRUQHdW5pMDFFRQd1bmkwMUVGB3VuaTAxRjEHdW5pMDFGMgd1bmkwMUYzB3VuaTAxRjQHdW5pMDFGNQd1bmkwMUY2B3VuaTAxRjcHdW5pMDFGOAd1bmkwMUY5B3VuaTAyMDAHdW5pMDIwMQd1bmkwMjAyB3VuaTAyMDMHdW5pMDIwNAd1bmkwMjA1B3VuaTAyMDYHdW5pMDIwNwd1bmkwMjA4B3VuaTAyMDkHdW5pMDIwQQd1bmkwMjBCB3VuaTAyMEMHdW5pMDIwRAd1bmkwMjBFB3VuaTAyMEYHdW5pMDIxMAd1bmkwMjExB3VuaTAyMTIHdW5pMDIxMwd1bmkwMjE0B3VuaTAyMTUHdW5pMDIxNgd1bmkwMjE3B3VuaTAyMUMHdW5pMDIxRAd1bmkwMjFFB3VuaTAyMUYHdW5pMDIyMAd1bmkwMjIxB3VuaTAyMjIHdW5pMDIyMwd1bmkwMjI0B3VuaTAyMjUHdW5pMDIyNgd1bmkwMjI3B3VuaTAyMjgHdW5pMDIyOQd1bmkwMjJBB3VuaTAyMkIHdW5pMDIyQwd1bmkwMjJEB3VuaTAyMkUHdW5pMDIyRgd1bmkwMjMwB3VuaTAyMzEHdW5pMDIzMgd1bmkwMjMzB3VuaTAyMzQHdW5pMDIzNQd1bmkwMjM2B3VuaTAyMzgHdW5pMDIzOQd1bmkwMjNBB3VuaTAyM0IHdW5pMDIzQwd1bmkwMjNEB3VuaTAyM0UHdW5pMDIzRgd1bmkwMjQwB3VuaTAyNDEHdW5pMDI0Mgd1bmkwMjQzB3VuaTAyNDQHdW5pMDI0NQd1bmkwMjQ2B3VuaTAyNDcHdW5pMDI0OAd1bmkwMjQ5B3VuaTAyNEEHdW5pMDI0Qgd1bmkwMjRDB3VuaTAyNEQHdW5pMDI0RQd1bmkwMjRGB3VuaTAyNTAHdW5pMDI1MQd1bmkwMjUyB3VuaTAyNTMHdW5pMDI1NAd1bmkwMjU1B3VuaTAyNTYHdW5pMDI1Nwd1bmkwMjU4B3VuaTAyNTkHdW5pMDI1Qgd1bmkwMjVFB3VuaTAyNUYHdW5pMDI2MAd1bmkwMjYxB3VuaTAyNjIHdW5pMDI2Mwd1bmkwMjY0B3VuaTAyNjUHdW5pMDI2Ngd1bmkwMjY3B3VuaTAyNjgJaW90YUxhdGluB3VuaTAyNkEHdW5pMDI2Qgd1bmkwMjZDB3VuaTAyNkQHdW5pMDI2RQd1bmkwMjZGB3VuaTAyNzAHdW5pMDI3MQd1bmkwMjcyB3VuaTAyNzMHdW5pMDI3NAd1bmkwMjc1B3VuaTAyNzYLb21lZ2FjbG9zZWQHdW5pMDI3OAd1bmkwMjc5B3VuaTAyN0EHdW5pMDI3Qgd1bmkwMjdDB3VuaTAyN0QHdW5pMDI3RQd1bmkwMjdGB3VuaTAyODAHdW5pMDI4MQd1bmkwMjgyB3VuaTAyODMHdW5pMDI4NAd1bmkwMjg1B3VuaTAyODYHdW5pMDI4Nwd1bmkwMjg4B3VuaTAyODkHdW5pMDI4QQd1bmkwMjhCB3VuaTAyOEMHdW5pMDI4RAd1bmkwMjhFB3VuaTAyOEYHdW5pMDI5MAd1bmkwMjkxB3VuaTAyOTIHdW5pMDI5Mwd1bmkwMjk0B3VuaTAyOTUNZ2xvdHRhbHR1cm5lZAd1bmkwMjk3B3VuaTAyOTgHdW5pMDI5OQd1bmkwMjlBB3VuaTAyOUIHdW5pMDI5Qwd1bmkwMjlEB3VuaTAyOUUHdW5pMDI5Rgd1bmkwMkEwB3VuaTAyQTEHdW5pMDJBMgVkemxpZwd1bmkwMkE0CWR6bGlnY3VybAV0c2xpZwd1bmkwMkE3CXRjbGlnY3VybAd1bmkwMkE5B3VuaTAyQUEHdW5pMDJBQgd1bmkwMkFDB3VuaTAyQUQHdW5pMDJBRQd1bmkwMkFGB3VuaTAyQjAHdW5pMDJCMQd1bmkwMkIyB3VuaTAyQjMHdW5pMDJCNAd1bmkwMkI1B3VuaTAyQjYHdW5pMDJCNwd1bmkwMkI4B3VuaTAyQjkHdW5pMDJCQQd1bmkwMkJCB3VuaTAyQkQHdW5pMDJCRQd1bmkwMkJGB3VuaTAyQzAHdW5pMDJDMQd1bmkwMkMyB3VuaTAyQzMHdW5pMDJDNAd1bmkwMkM1B3VuaTAyQzgHdW5pMDJDQQd1bmkwMkNCB3VuaTAyQ0MHdW5pMDJDRAd1bmkwMkNFB3VuaTAyQ0YHdW5pMDJEMAd1bmkwMkQxB3VuaTAyRDIHdW5pMDJEMwd1bmkwMkQ0B3VuaTAyRDUHdW5pMDJENgd1bmkwMkQ3B3VuaTAyREYHdW5pMDJFMAd1bmkwMkUxB3VuaTAyRTIHdW5pMDJFMwd1bmkwMkU0B3VuaTAyRTUHdW5pMDJFNgd1bmkwMkU3B3VuaTAyRTgHdW5pMDJFOQd1bmkwMkVBB3VuaTAyRUIHdW5pMDJFQwd1bmkwMkVEB3VuaTAyRUUHdW5pMDJFRgd1bmkwMkYwB3VuaTAyRjEHdW5pMDJGMgd1bmkwMkY0B3VuaTAyRjUHdW5pMDJGNgd1bmkwMkY3B3VuaTAyRjgHdW5pMDJGOQd1bmkwMkZBB3VuaTAyRkIHdW5pMDJGQwd1bmkwMkZEB3VuaTAyRkUHdW5pMDJGRg1ob29rYWJvdmVjb21iB3VuaTAzNzQHdW5pMDM3NQd1bmkwMzdBB3VuaTAzN0IHdW5pMDM3Qwd1bmkwMzdEB3VuaTAzN0UHdW5pMDNEMAd1bmkwM0QzB3VuaTAzRDQEcGhpMQd1bmkwM0Q3B3VuaTAzRDgHdW5pMDNEOQd1bmkwM0RBB3VuaTAzREIHdW5pMDNEQwd1bmkwM0REB3VuaTAzREUHdW5pMDNERgd1bmkwM0UwB3VuaTAzRTEHdW5pMDNGMAd1bmkwM0YxB3VuaTAzRjIHdW5pMDNGMwd1bmkwM0Y0B3VuaTAzRjUHdW5pMDNGNgd1bmkwM0Y3B3VuaTAzRjgHdW5pMDNGOQd1bmkwM0ZBB3VuaTAzRkIHdW5pMDNGQwd1bmkwM0ZEB3VuaTAzRkUHdW5pMDNGRgd1bmkwNTFBB3VuaTA1MUIHdW5pMDUxQwd1bmkwNTFEB3VuaTFEMDAHdW5pMUQwMQd1bmkxRDAyB3VuaTFEMDMHdW5pMUQwNAd1bmkxRDA1B3VuaTFEMDYHdW5pMUQwNwd1bmkxRDA4B3VuaTFEMDkHdW5pMUQwQQd1bmkxRDBCB3VuaTFEMEMHdW5pMUQwRAd1bmkxRDBFB3VuaTFEMEYHdW5pMUQxMAd1bmkxRDExB3VuaTFEMTIHdW5pMUQxMwd1bmkxRDE0B3VuaTFEMTUHdW5pMUQxNgd1bmkxRDE3B3VuaTFEMTgHdW5pMUQxOQd1bmkxRDFBB3VuaTFEMUIHdW5pMUQxQwd1bmkxRDFEB3VuaTFEMUUHdW5pMUQxRgd1bmkxRDIwB3VuaTFEMjEHdW5pMUQyMgd1bmkxRDIzB3VuaTFEMjQHdW5pMUQyNQd1bmkxRDI2B3VuaTFEMjcHdW5pMUQyOAd1bmkxRDI5B3VuaTFEMkEHdW5pMUQyQgd1bmkxRDJDB3VuaTFEMkQHdW5pMUQyRQd1bmkxRDJGB3VuaTFEMzAHdW5pMUQzMQd1bmkxRDMyB3VuaTFEMzMHdW5pMUQzNAd1bmkxRDM1B3VuaTFEMzYHdW5pMUQzNwd1bmkxRDM4B3VuaTFEMzkHdW5pMUQzQQd1bmkxRDNCB3VuaTFEM0MHdW5pMUQzRAd1bmkxRDNFB3VuaTFEM0YHdW5pMUQ0MAd1bmkxRDQxB3VuaTFENDIHdW5pMUQ0Mwd1bmkxRDQ0B3VuaTFENDUHdW5pMUQ0Ngd1bmkxRDQ3B3VuaTFENDgHdW5pMUQ0OQd1bmkxRDRBB3VuaTFENEIHdW5pMUQ0Qwd1bmkxRDREB3VuaTFENEUHdW5pMUQ0Rgd1bmkxRDUwB3VuaTFENTEHdW5pMUQ1Mgd1bmkxRDUzB3VuaTFENTQHdW5pMUQ1NQd1bmkxRDU2B3VuaTFENTcHdW5pMUQ1OAd1bmkxRDU5B3VuaTFENUEHdW5pMUQ1Qgd1bmkxRDVDB3VuaTFENUQHdW5pMUQ1RQd1bmkxRDVGB3VuaTFENjAHdW5pMUQ2MQd1bmkxRDYyB3VuaTFENjMHdW5pMUQ2NAd1bmkxRDY1B3VuaTFENjYHdW5pMUQ2Nwd1bmkxRDY4B3VuaTFENjkHdW5pMUQ2QQd1bmkxRDZCB3VuaTFENkMHdW5pMUQ2RAd1bmkxRDZFB3VuaTFENkYHdW5pMUQ3MAd1bmkxRDcxB3VuaTFENzIHdW5pMUQ3Mwd1bmkxRDc0B3VuaTFENzUHdW5pMUQ3Ngd1bmkxRDc3B3VuaTFENzgHdW5pMUQ3OQd1bmkxRDdBB3VuaTFEN0IHdW5pMUQ3Qwd1bmkxRDdEB3VuaTFEN0UHdW5pMUQ3Rgd1bmkxRDgwB3VuaTFEODEHdW5pMUQ4Mgd1bmkxRDgzB3VuaTFEODQHdW5pMUQ4NQd1bmkxRDg2B3VuaTFEODcHdW5pMUQ4OAd1bmkxRDg5B3VuaTFEOEEHdW5pMUQ4Qgd1bmkxRDhDB3VuaTFEOEQHdW5pMUQ4RQd1bmkxRDhGB3VuaTFEOTAHdW5pMUQ5MQd1bmkxRDkyB3VuaTFEOTMHdW5pMUQ5NAd1bmkxRDk1B3VuaTFEOTYHdW5pMUQ5Nwd1bmkxRDk4B3VuaTFEOTkHdW5pMUQ5QQd1bmkxRDlCB3VuaTFEOUMHdW5pMUQ5RAd1bmkxRDlFB3VuaTFEOUYHdW5pMURBMAd1bmkxREExB3VuaTFEQTIHdW5pMURBMwd1bmkxREE0B3VuaTFEQTUHdW5pMURBNgd1bmkxREE3B3VuaTFEQTgHdW5pMURBOQd1bmkxREFBB3VuaTFEQUIHdW5pMURBQwd1bmkxREFEB3VuaTFEQUUHdW5pMURBRgd1bmkxREIwB3VuaTFEQjEHdW5pMURCMgd1bmkxREIzB3VuaTFEQjQHdW5pMURCNQd1bmkxREI2B3VuaTFEQjcHdW5pMURCOAd1bmkxREI5B3VuaTFEQkEHdW5pMURCQgd1bmkxREJDB3VuaTFEQkQHdW5pMURCRQd1bmkxREJGB3VuaTFFMDIHdW5pMUUwMwd1bmkxRTA0B3VuaTFFMDUHdW5pMUUwNgd1bmkxRTA3B3VuaTFFMDgHdW5pMUUwOQd1bmkxRTBBB3VuaTFFMEIHdW5pMUUwQwd1bmkxRTBEB3VuaTFFMEUHdW5pMUUwRgd1bmkxRTEwB3VuaTFFMTEHdW5pMUUxMgd1bmkxRTEzB3VuaTFFMTQHdW5pMUUxNQd1bmkxRTE2B3VuaTFFMTcHdW5pMUUxOAd1bmkxRTE5B3VuaTFFMUEHdW5pMUUxQgd1bmkxRTFDB3VuaTFFMUQHdW5pMUUxRQd1bmkxRTFGB3VuaTFFMjAHdW5pMUUyMQd1bmkxRTIyB3VuaTFFMjMHdW5pMUUyNAd1bmkxRTI1B3VuaTFFMjYHdW5pMUUyNwd1bmkxRTI4B3VuaTFFMjkHdW5pMUUyQQd1bmkxRTJCB3VuaTFFMkMHdW5pMUUyRAd1bmkxRTJFB3VuaTFFMkYHdW5pMUUzMAd1bmkxRTMxB3VuaTFFMzIHdW5pMUUzMwd1bmkxRTM0B3VuaTFFMzUHdW5pMUUzNgd1bmkxRTM3B3VuaTFFMzgHdW5pMUUzOQd1bmkxRTNBB3VuaTFFM0IHdW5pMUUzQwd1bmkxRTNEB3VuaTFFNDAHdW5pMUU0MQd1bmkxRTQyB3VuaTFFNDMHdW5pMUU0NAd1bmkxRTQ1B3VuaTFFNDYHdW5pMUU0Nwd1bmkxRTQ4B3VuaTFFNDkHdW5pMUU0QQd1bmkxRTRCB3VuaTFFNEMHdW5pMUU0RAd1bmkxRTRFB3VuaTFFNEYHdW5pMUU1MAd1bmkxRTUxB3VuaTFFNTIHdW5pMUU1Mwd1bmkxRTU0B3VuaTFFNTUHdW5pMUU1Ngd1bmkxRTU3B3VuaTFFNTgHdW5pMUU1OQd1bmkxRTVBB3VuaTFFNUIHdW5pMUU1Qwd1bmkxRTVEB3VuaTFFNUUHdW5pMUU1Rgd1bmkxRTYwB3VuaTFFNjEHdW5pMUU2Mgd1bmkxRTYzB3VuaTFFNjQHdW5pMUU2NQd1bmkxRTY2B3VuaTFFNjcHdW5pMUU2OAd1bmkxRTY5B3VuaTFFNkEHdW5pMUU2Qgd1bmkxRTZDB3VuaTFFNkQHdW5pMUU2RQd1bmkxRTZGB3VuaTFFNzAHdW5pMUU3MQd1bmkxRTcyB3VuaTFFNzMHdW5pMUU3NAd1bmkxRTc1B3VuaTFFNzYHdW5pMUU3Nwd1bmkxRTc4B3VuaTFFNzkHdW5pMUU3QQd1bmkxRTdCB3VuaTFFN0MHdW5pMUU3RAd1bmkxRTdFB3VuaTFFN0YHdW5pMUU4Ngd1bmkxRTg3B3VuaTFFODgHdW5pMUU4OQd1bmkxRThBB3VuaTFFOEIHdW5pMUU4Qwd1bmkxRThEB3VuaTFFOEUHdW5pMUU4Rgd1bmkxRTkwB3VuaTFFOTEHdW5pMUU5Mgd1bmkxRTkzB3VuaTFFOTQHdW5pMUU5NQd1bmkxRTk2B3VuaTFFOTcHdW5pMUU5OAd1bmkxRTk5B3VuaTFFOUEHdW5pMUU5Qgd1bmkxRjAwB3VuaTFGMDEHdW5pMUYwMgd1bmkxRjAzB3VuaTFGMDQHdW5pMUYwNQd1bmkxRjA2B3VuaTFGMDcHdW5pMUYwOAd1bmkxRjA5B3VuaTFGMEEHdW5pMUYwQgd1bmkxRjBDB3VuaTFGMEQHdW5pMUYwRQd1bmkxRjBGB3VuaTFGMTAHdW5pMUYxMQd1bmkxRjEyB3VuaTFGMTMHdW5pMUYxNAd1bmkxRjE1B3VuaTFGMTgHdW5pMUYxOQd1bmkxRjFBB3VuaTFGMUIHdW5pMUYxQwd1bmkxRjFEB3VuaTFGMjAHdW5pMUYyMQd1bmkxRjIyB3VuaTFGMjMHdW5pMUYyNAd1bmkxRjI1B3VuaTFGMjYHdW5pMUYyNwd1bmkxRjI4B3VuaTFGMjkHdW5pMUYyQQd1bmkxRjJCB3VuaTFGMkMHdW5pMUYyRAd1bmkxRjJFB3VuaTFGMkYHdW5pMUYzMAd1bmkxRjMxB3VuaTFGMzIHdW5pMUYzMwd1bmkxRjM0B3VuaTFGMzUHdW5pMUYzNgd1bmkxRjM3B3VuaTFGMzgHdW5pMUYzOQd1bmkxRjNBB3VuaTFGM0IHdW5pMUYzQwd1bmkxRjNEB3VuaTFGM0UHdW5pMUYzRgd1bmkxRjQwB3VuaTFGNDEHdW5pMUY0Mgd1bmkxRjQzB3VuaTFGNDQHdW5pMUY0NQd1bmkxRjQ4B3VuaTFGNDkHdW5pMUY0QQd1bmkxRjRCB3VuaTFGNEMHdW5pMUY0RAd1bmkxRjUwB3VuaTFGNTEHdW5pMUY1Mgd1bmkxRjUzB3VuaTFGNTQHdW5pMUY1NQd1bmkxRjU2B3VuaTFGNTcHdW5pMUY1OQd1bmkxRjVCB3VuaTFGNUQHdW5pMUY1Rgd1bmkxRjYwB3VuaTFGNjEHdW5pMUY2Mgd1bmkxRjYzB3VuaTFGNjQHdW5pMUY2NQd1bmkxRjY2B3VuaTFGNjcHdW5pMUY2OAd1bmkxRjY5B3VuaTFGNkEHdW5pMUY2Qgd1bmkxRjZDB3VuaTFGNkQHdW5pMUY2RQd1bmkxRjZGB3VuaTFGNzAHdW5pMUY3MQd1bmkxRjcyB3VuaTFGNzMHdW5pMUY3NAd1bmkxRjc1B3VuaTFGNzYHdW5pMUY3Nwd1bmkxRjc4B3VuaTFGNzkHdW5pMUY3QQd1bmkxRjdCB3VuaTFGN0MHdW5pMUY3RAd1bmkxRjgwB3VuaTFGODEHdW5pMUY4Mgd1bmkxRjgzB3VuaTFGODQHdW5pMUY4NQd1bmkxRjg2B3VuaTFGODcHdW5pMUY4OAd1bmkxRjg5B3VuaTFGOEEHdW5pMUY4Qgd1bmkxRjhDB3VuaTFGOEQHdW5pMUY4RQd1bmkxRjhGB3VuaTFGOTAHdW5pMUY5MQd1bmkxRjkyB3VuaTFGOTMHdW5pMUY5NAd1bmkxRjk1B3VuaTFGOTYHdW5pMUY5Nwd1bmkxRjk4B3VuaTFGOTkHdW5pMUY5QQd1bmkxRjlCB3VuaTFGOUMHdW5pMUY5RAd1bmkxRjlFB3VuaTFGOUYHdW5pMUZBMAd1bmkxRkExB3VuaTFGQTIHdW5pMUZBMwd1bmkxRkE0B3VuaTFGQTUHdW5pMUZBNgd1bmkxRkE3B3VuaTFGQTgHdW5pMUZBOQd1bmkxRkFBB3VuaTFGQUIHdW5pMUZBQwd1bmkxRkFEB3VuaTFGQUUHdW5pMUZBRgd1bmkxRkIwB3VuaTFGQjEHdW5pMUZCMgd1bmkxRkIzB3VuaTFGQjQHdW5pMUZCNgd1bmkxRkI3B3VuaTFGQjgHdW5pMUZCOQd1bmkxRkJBB3VuaTFGQkIHdW5pMUZCQwd1bmkxRkJEB3VuaTFGQkUHdW5pMUZCRgd1bmkxRkMwB3VuaTFGQzEHdW5pMUZDMgd1bmkxRkMzB3VuaTFGQzQHdW5pMUZDNgd1bmkxRkM3B3VuaTFGQzgHdW5pMUZDOQd1bmkxRkNBB3VuaTFGQ0IHdW5pMUZDQwd1bmkxRkNEB3VuaTFGQ0UHdW5pMUZDRgd1bmkxRkQwB3VuaTFGRDEHdW5pMUZEMgd1bmkxRkQzB3VuaTFGRDYHdW5pMUZENwd1bmkxRkQ4B3VuaTFGRDkHdW5pMUZEQQd1bmkxRkRCB3VuaTFGREQHdW5pMUZERQd1bmkxRkRGB3VuaTFGRTAHdW5pMUZFMQd1bmkxRkUyB3VuaTFGRTMHdW5pMUZFNAd1bmkxRkU1B3VuaTFGRTYHdW5pMUZFNwd1bmkxRkU4B3VuaTFGRTkHdW5pMUZFQQd1bmkxRkVCB3VuaTFGRUMHdW5pMUZFRAd1bmkxRkVFB3VuaTFGRUYHdW5pMUZGMgd1bmkxRkYzB3VuaTFGRjQHdW5pMUZGNgd1bmkxRkY3B3VuaTFGRjgHdW5pMUZGOQd1bmkxRkZBB3VuaTFGRkIHdW5pMUZGQwd1bmkxRkZEB3VuaTFGRkUHdW5pMjAwQwd1bmkyMDBEB3VuaTIwMEUHdW5pMjAwRgd1bmkyMDEyB3VuaTIwMTYHdW5pMjAxRgd1bmkyMDJBB3VuaTIwMkIHdW5pMjAyQwd1bmkyMDJEB3VuaTIwMkUHdW5pMjAyRgd1bmkyMDM0B3VuaTIwM0UHdW5pMjA1RQd1bmkyMDZBB3VuaTIwNkIHdW5pMjA2Qwd1bmkyMDZEB3VuaTIwNkUHdW5pMjA2Rgd1bmkyMDcwB3VuaTIwNzYHdW5pMjA3OQd1bmkyMDkwB3VuaTIwOTEHdW5pMjA5Mgd1bmkyMDkzB3VuaTIwOTQHdW5pMjBBMAd1bmkyMEExB3VuaTIwQTIHdW5pMjBBNQd1bmkyMEE2B3VuaTIwQTgHdW5pMjBBOQd1bmkyMEFEB3VuaTIwQUUHdW5pMjBBRgd1bmkyMEIwB3VuaTIwQjEHdW5pMjBCMgd1bmkyMEIzB3VuaTIwQjQHdW5pMjBCNQd1bmkyMEI5B3VuaTIwRjAHdW5pMjExNwd1bmkyMTREB3VuaTIxNEUHdW5pMjE1Mwd1bmkyMTU0B3VuaTIxODQHdW5pMkM2MAd1bmkyQzYxB3VuaTJDNjIHdW5pMkM2Mwd1bmkyQzY0B3VuaTJDNjUHdW5pMkM2Ngd1bmkyQzY3B3VuaTJDNjgHdW5pMkM2OQd1bmkyQzZBB3VuaTJDNkIHdW5pMkM2Qwd1bmkyQzZEB3VuaTJDNzEHdW5pMkM3Mgd1bmkyQzczB3VuaTJDNzQHdW5pMkM3NQd1bmkyQzc2B3VuaTJDNzcHdW5pMkUxNwd1bmlBNzE3B3VuaUE3MTgHdW5pQTcxOQd1bmlBNzFBB3VuaUE3MUIHdW5pQTcxQwd1bmlBNzFEB3VuaUE3MUUHdW5pQTcxRgd1bmlBNzIwB3VuaUE3MjEHdW5pQTc4OAd1bmlBNzg5B3VuaUE3OEEHdW5pQTc4Qgd1bmlBNzhDDWRpZXJlc2lzYWN1dGUNZGllcmVzaXNncmF2ZQd1bmlGRTIwB3VuaUZFMjEHdW5pRkUyMgd1bmlGRTIzE3VuaTAzQjEwMzA0MDMxMzAzMDATdW5pMDNCMTAzMDQwMzEzMDMwMRN1bmkwM0IxMDMwNDAzMTQwMzAwE3VuaTAzQjEwMzA0MDMxNDAzMDETdW5pMDNCMTAzMDYwMzEzMDMwMBN1bmkwM0IxMDMwNjAzMTMwMzAxE3VuaTAzQjEwMzA2MDMxNDAzMDATdW5pMDNCMTAzMDYwMzE0MDMwMRN1bmkwM0I5MDMwNDAzMTMwMzAwE3VuaTAzQjkwMzA0MDMxMzAzMDETdW5pMDNCOTAzMDQwMzE0MDMwMBN1bmkwM0I5MDMwNDAzMTQwMzAxE3VuaTAzQjkwMzA2MDMxMzAzMDATdW5pMDNCOTAzMDYwMzEzMDMwMRN1bmkwM0I5MDMwNjAzMTQwMzAwE3VuaTAzQjkwMzA2MDMxNDAzMDETdW5pMDNDNTAzMDQwMzEzMDMwMBN1bmkwM0M1MDMwNDAzMTMwMzAxE3VuaTAzQzUwMzA0MDMxNDAzMDATdW5pMDNDNTAzMDQwMzE0MDMwMRN1bmkwM0M1MDMwNjAzMTMwMzAwE3VuaTAzQzUwMzA2MDMxMzAzMDETdW5pMDNDNTAzMDYwMzE0MDMwMBN1bmkwM0M1MDMwNjAzMTQwMzAxE3VuaTAzQjkwMzA4MDMwNDAzMDATdW5pMDNCOTAzMDgwMzA0MDMwMRN1bmkwM0I5MDMwODAzMDYwMzAwE3VuaTAzQjkwMzA4MDMwNjAzMDETdW5pMDNDNTAzMDgwMzA0MDMwMBN1bmkwM0M1MDMwODAzMDQwMzAxE3VuaTAzQzUwMzA4MDMwNjAzMDATdW5pMDNDNTAzMDgwMzA2MDMwMQhFbmcuYWx0MQhFbmcuYWx0MghFbmcuYWx0Mwt1bmkxRkNEMDJDOQt1bmkxRkNFMDJDOQt1bmkxRkREMDJDOQt1bmkxRkRFMDJDOQhkb3RhY3V0ZQhjYXJvbmRvdA5tYWNyb25kaWVyZXNpcw10aWxkZWRpZXJlc2lzCnRpbGRlYWN1dGULbWFjcm9uZ3JhdmULbWFjcm9uYWN1dGUNZGllcmVzaXNjYXJvbg5kaWVyZXNpc21hY3Jvbgt0aWxkZW1hY3Jvbglkb3RtYWNyb24NZG90bWFjcm9uLmNhcA91bmkwMzAxMDMwNjAzMDgPdW5pMDMwMDAzMDYwMzA4D3VuaTAzMDEwMzA0MDMwOA91bmkwMzAwMDMwNDAzMDgLdW5pMUZERTAzMDYLdW5pMUZERDAzMDYLdW5pMUZDRTAzMDYLdW5pMUZDRDAzMDYHdW5pMDUxNAd1bmkwNTE1B3VuaTA1MTYHdW5pMDUxNwd1bmkwNTE4B3VuaTA1MTkHdW5pMDUxRQd1bmkwNTFGB3VuaTA1MjAHdW5pMDUyMQd1bmkwNTIyB3VuaTA1MjMHdW5pMDUyNAd1bmkwNTI1B3VuaTA1MjYHdW5pMDUyNw9jeXJpbGxpY19vdG1hcmsHdW5pMjBCQQd1bmkxRUZBB3VuaTJDNkUHdW5pMUU5RQdUdXJuZWRhB3VuaTFFRkMHdW5pMUVGRQd1bmlBNzIyB3VuaUE3MjQHdW5pQTcyNgd1bmlBNzI4B3VuaUE3MkEHdW5pQTcyQwd1bmlBNzJFB3VuaUE3MzIHdW5pQTczNAd1bmlBNzM2B3VuaUE3MzgHdW5pQTczQQd1bmlBNzNDB3VuaUE3M0UHdW5pQTc0MAd1bmlBNzQyB3VuaUE3NDQHdW5pQTc0Ngd1bmlBNzQ4B3VuaUE3NEEHdW5pQTc0Qwd1bmlBNzRFB3VuaUE3NTAHdW5pQTc1Mgd1bmlBNzU0B3VuaUE3NTYHdW5pQTc1OAd1bmlBNzVBB3VuaUE3NUMHdW5pQTc1RQd1bmlBNzYwB3VuaUE3NjQHdW5pQTc2Ngd1bmlBNzY4B3VuaUE3NkEHdW5pQTc2Qwd1bmlBNzZFB3VuaUE3NzkHdW5pQTc3Qgd1bmlBNzdEB3VuaUE3N0UHdW5pQTc4MAd1bmlBNzgyB3VuaUE3ODQHdW5pQTc4Ngd1bmlBNzhEB3VuaUE3OTAHdW5pQTc5Mgd1bmlBN0EwB3VuaUE3QTIHdW5pQTdBNAd1bmlBN0E2B3VuaUE3QTgHdW5pQTdBQQd1bmlBN0FCB3VuaUE3QUMHdW5pQTdBRAd1bmlBN0IwB3VuaUE3QjEHdW5pQTdCMgd1bmlBN0IzB3VuaUE3QjQHdW5pQTdCNg9Bb2dvbmVrLmxvY2xOQVYPRW9nb25lay5sb2NsTkFWD0lvZ29uZWsubG9jbE5BVg9Vb2dvbmVrLmxvY2xOQVYUTGNvbW1hYWNjZW50LmxvY2xNQUgUTmNvbW1hYWNjZW50LmxvY2xNQUgHVHVybmVkZRBhZmlpMTAxMDNkb3RsZXNzEGFmaWkxMDEwNWRvdGxlc3MKZGVsdGFsYXRpbgd1bmkyQzc4B3VuaTAyNUMHdW5pMDI1RAd1bmkwMUREB3VuaTAyNUEOaW9nb25la2RvdGxlc3MHdW5pMDIzNwd1bmkxRUZCB3VuaTFFOUMHdW5pMUU5RAd1bmkyQzdBCnN1YnNjcmlwdGoHdW5pMkM3OQ51bmkwMjQ5ZG90bGVzcw51bmkwMjlEZG90bGVzcw51bmkwMkIyZG90bGVzcw51bmkwM0YzZG90bGVzcw51bmkxRDYyZG90bGVzcw51bmkxRDk2ZG90bGVzcw51bmkxREE0ZG90bGVzcw51bmkxREE4ZG90bGVzcw51bmkxRTJEZG90bGVzcw51bmkxRUNCZG90bGVzcwd1bmlBNzIzB3VuaUE3MjUHdW5pQTcyNwd1bmlBNzI5B3VuaUE3MkIHdW5pQTcyRAd1bmlBNzJGB3VuaUE3MzAHdW5pQTczMQd1bmlBNzMzB3VuaUE3MzUHdW5pQTczNwd1bmlBNzM5B3VuaUE3M0IHdW5pQTczRAd1bmlBNzNGB3VuaUE3NDEHdW5pQTc0Mwd1bmlBNzQ1B3VuaUE3NDcHdW5pQTc0OQd1bmlBNzRCB3VuaUE3NEQHdW5pQTc0Rgd1bmlBNzUxB3VuaUE3NTMHdW5pQTc1NQd1bmlBNzU3B3VuaUE3NTkHdW5pQTc1Qgd1bmlBNzVEB3VuaUE3NUYHdW5pQTc2MQd1bmlBNzY1B3VuaUE3NjcHdW5pQTc2OQd1bmlBNzZCB3VuaUE3NkQHdW5pQTc2Rgd1bmlBNzcxB3VuaUE3NzIHdW5pQTc3Mwd1bmlBNzc0B3VuaUE3NzUHdW5pQTc3Ngd1bmlBNzc3B3VuaUE3NzgHdW5pQTc3QQd1bmlBNzdDB3VuaUE3N0YHdW5pQTc4MQd1bmlBNzgzB3VuaUE3ODUHdW5pQTc4Nwd1bmlBNzhFB3VuaUE3OTEHdW5pQTc5Mwd1bmlBN0ExB3VuaUE3QTMHdW5pQTdBNQd1bmlBN0E3B3VuaUE3QTkHdW5pQTdCNQd1bmlBN0I3B3VuaUE3RkEHdW5pMUVGRAd1bmkxRUZGD2FvZ29uZWsubG9jbE5BVg9lb2dvbmVrLmxvY2xOQVYUbGNvbW1hYWNjZW50LmxvY2xNQUgUbmNvbW1hYWNjZW50LmxvY2xNQUgPaW9nb25lay5sb2NsTkFWD3VvZ29uZWsubG9jbE5BVgNmX2YFZl9mX2kFZl9mX2wDZl9pA2ZfbAdsb25nc190A3NfdARhLnNjCWFhY3V0ZS5zYwlhYnJldmUuc2MOYWNpcmN1bWZsZXguc2MMYWRpZXJlc2lzLnNjCWFncmF2ZS5zYwphbWFjcm9uLnNjCmFvZ29uZWsuc2MIYXJpbmcuc2MNYXJpbmdhY3V0ZS5zYwlhdGlsZGUuc2MFYWUuc2MKYWVhY3V0ZS5zYwRiLnNjBGMuc2MJY2FjdXRlLnNjCWNjYXJvbi5zYwtjY2VkaWxsYS5zYw5jY2lyY3VtZmxleC5zYwdjZG90LnNjBGQuc2MGZXRoLnNjCWRjYXJvbi5zYwlkY3JvYXQuc2MEZS5zYwllYWN1dGUuc2MJZWJyZXZlLnNjCWVjYXJvbi5zYw5lY2lyY3VtZmxleC5zYwxlZGllcmVzaXMuc2MNZWRvdGFjY2VudC5zYwllZ3JhdmUuc2MKZW1hY3Jvbi5zYwplb2dvbmVrLnNjBGYuc2MEZy5zYwlnYnJldmUuc2MOZ2NpcmN1bWZsZXguc2MPZ2NvbW1hYWNjZW50LnNjB2dkb3Quc2MEaC5zYwdoYmFyLnNjDmhjaXJjdW1mbGV4LnNjBGkuc2MJaWFjdXRlLnNjCWlicmV2ZS5zYw5pY2lyY3VtZmxleC5zYwxpZGllcmVzaXMuc2MNaWRvdGFjY2VudC5zYwlpZ3JhdmUuc2MFaWouc2MKaW1hY3Jvbi5zYwppb2dvbmVrLnNjCWl0aWxkZS5zYwRqLnNjDmpjaXJjdW1mbGV4LnNjBGsuc2MPa2NvbW1hYWNjZW50LnNjBGwuc2MJbGFjdXRlLnNjCWxjYXJvbi5zYw9sY29tbWFhY2NlbnQuc2MHbGRvdC5zYwlsc2xhc2guc2MEbS5zYwRuLnNjCW5hY3V0ZS5zYwluY2Fyb24uc2MPbmNvbW1hYWNjZW50LnNjBmVuZy5zYwludGlsZGUuc2MEby5zYwlvYWN1dGUuc2MJb2JyZXZlLnNjDm9jaXJjdW1mbGV4LnNjDG9kaWVyZXNpcy5zYwlvZ3JhdmUuc2MQb2h1bmdhcnVtbGF1dC5zYwpvbWFjcm9uLnNjCW9zbGFzaC5zYw5vc2xhc2hhY3V0ZS5zYwlvdGlsZGUuc2MFb2Uuc2MEcC5zYwh0aG9ybi5zYwRxLnNjBHIuc2MJcmFjdXRlLnNjCXJjYXJvbi5zYw9yY29tbWFhY2NlbnQuc2MEcy5zYwlzYWN1dGUuc2MJc2Nhcm9uLnNjC3NjZWRpbGxhLnNjDnNjaXJjdW1mbGV4LnNjD3Njb21tYWFjY2VudC5zYw1nZXJtYW5kYmxzLnNjBHQuc2MHdGJhci5zYwl0Y2Fyb24uc2MLdGNlZGlsbGEuc2MPdGNvbW1hYWNjZW50LnNjBHUuc2MJdWFjdXRlLnNjCXVicmV2ZS5zYw51Y2lyY3VtZmxleC5zYwx1ZGllcmVzaXMuc2MJdWdyYXZlLnNjEHVodW5nYXJ1bWxhdXQuc2MKdW1hY3Jvbi5zYwp1b2dvbmVrLnNjCHVyaW5nLnNjCXV0aWxkZS5zYwR2LnNjBHcuc2MJd2FjdXRlLnNjDndjaXJjdW1mbGV4LnNjDHdkaWVyZXNpcy5zYwl3Z3JhdmUuc2MEeC5zYwR5LnNjCXlhY3V0ZS5zYw55Y2lyY3VtZmxleC5zYwx5ZGllcmVzaXMuc2MJeWdyYXZlLnNjBHouc2MJemFjdXRlLnNjCXpjYXJvbi5zYw16ZG90YWNjZW50LnNjB3VuaTIwNzEHdW5pQTc4Rgd1bmlBN0Y3B3VuaUE3RkIHdW5pQTdGQwd1bmlBN0ZEB3VuaUE3RkUHdW5pQTdGRgd1bmkwNTI4B3VuaTA1MkEHdW5pMDUyQwd1bmkwNTJFB3VuaUE2NDAHdW5pQTY0Mgd1bmlBNjQ0B3VuaUE2NDYHdW5pQTY0OAd1bmlBNjRBB3VuaUE2NEMHdW5pQTY0RQd1bmlBNjUwB3VuaUE2NTIHdW5pQTY1NAd1bmlBNjU2B3VuaUE2NTgHdW5pQTY1QQd1bmlBNjVDB3VuaUE2NUUHdW5pQTY2MAd1bmlBNjYyB3VuaUE2NjQHdW5pQTY2Ngd1bmlBNjY4B3VuaUE2NkEHdW5pQTY2Qwd1bmlBNjgwB3VuaUE2ODIHdW5pQTY4NAd1bmlBNjg2B3VuaUE2ODgHdW5pQTY4QQd1bmlBNjhDB3VuaUE2OEUHdW5pQTY5MAd1bmlBNjkyB3VuaUE2OTQHdW5pQTY5Ngd1bmlBNjk4B3VuaUE2OUEHdW5pMDUyOQd1bmkwNTJCB3VuaTA1MkQHdW5pMDUyRgd1bmkxQzgwB3VuaTFDODEHdW5pMUM4Mgd1bmkxQzgzB3VuaTFDODQHdW5pMUM4NQd1bmkxQzg2B3VuaTFDODcHdW5pMUM4OAd1bmlBNjQxB3VuaUE2NDMHdW5pQTY0NQd1bmlBNjQ3B3VuaUE2NDkHdW5pQTY0Qgd1bmlBNjREB3VuaUE2NEYHdW5pQTY1MQd1bmlBNjUzB3VuaUE2NTUHdW5pQTY1Nwd1bmlBNjU5B3VuaUE2NUIHdW5pQTY1RAd1bmlBNjVGB3VuaUE2NjEHdW5pQTY2Mwd1bmlBNjY1B3VuaUE2NjcHdW5pQTY2OQd1bmlBNjZCB3VuaUE2NkQHdW5pQTY4MQd1bmlBNjgzB3VuaUE2ODUHdW5pQTY4Nwd1bmlBNjg5B3VuaUE2OEIHdW5pQTY4RAd1bmlBNjhGB3VuaUE2OTEHdW5pQTY5Mwd1bmlBNjk1B3VuaUE2OTcHdW5pQTY5OQd1bmlBNjlCEWFmaWkxMDA2Ni5sb2NsU1JCB3VuaUE2NkUHdW5pQTY3Rgd1bmlBNjlDB3VuaUE2OUQHdW5pMDM3MAd1bmkwMzcyB3VuaTAzNzYHdW5pMDNDRgd1bmkwMzdGB3VuaTAzNzEHdW5pMDM3Mwd1bmkwMzc3C3VuaTAzRDAuYWx0CENmcmFrdHVyCEhmcmFrdHVyCElmcmFrdHVyCFJmcmFrdHVyCFpmcmFrdHVyB3VuaUE3NjIHdW5pQTc2Mwd1bmkyMTJDB3VuaTIxMEIHdW5pMjExMAd1bmkyMTEyDlBpRG91YmxlU3RydWNrB3VuaTIxMUIHVHVybmVkRgd1bmkyMTJCDUNEb3VibGVTdHJ1Y2sNSERvdWJsZVN0cnVjaw1ORG91YmxlU3RydWNrDVBEb3VibGVTdHJ1Y2sNUURvdWJsZVN0cnVjaw1SRG91YmxlU3RydWNrDVpEb3VibGVTdHJ1Y2sTSXRhbGljRERvdWJsZVN0cnVjaxFHYW1tYURvdWJsZVN0cnVjawd1bmkyMTA3B3VuaTIxMkEHdW5pMjEzMAd1bmkyMTMxB3VuaTIxMzMHdW5pQTc5Ngd1bmlBNzk4B3VuaUE3OUEHdW5pQTc5Qwd1bmlBNzlFE0l0YWxpY2REb3VibGVTdHJ1Y2sTSXRhbGljZURvdWJsZVN0cnVjaxNJdGFsaWNpRG91YmxlU3RydWNrE0l0YWxpY2pEb3VibGVTdHJ1Y2sRZ2FtbWFEb3VibGVTdHJ1Y2sOcGlEb3VibGVTdHJ1Y2sHdW5pMjEwRQd1bmkyMTBGB3NjcmlwdGUHc2NyaXB0bwdzY3JpcHRnB3VuaUE3OTQHdW5pQTc5NQd1bmlBNzk3B3VuaUE3OTkHdW5pQTc5Qgd1bmlBNzlEB3VuaUE3OUYHdW5pQUIzMAd1bmlBQjMxB3VuaUFCMzIHdW5pQUIzMwd1bmlBQjM0B3VuaUFCMzUHdW5pQUIzNgd1bmlBQjM3B3VuaUFCMzgHdW5pQUIzOQd1bmlBQjNBB3VuaUFCM0IHdW5pQUIzQwd1bmlBQjNEB3VuaUFCM0UHdW5pQUIzRgd1bmlBQjQwB3VuaUFCNDEHdW5pQUI0Mgd1bmlBQjQzB3VuaUFCNDQHdW5pQUI0NQd1bmlBQjQ2B3VuaUFCNDcHdW5pQUI0OAd1bmlBQjQ5B3VuaUFCNEEHdW5pQUI0Qgd1bmlBQjRDB3VuaUFCNEQHdW5pQUI0RQd1bmlBQjRGB3VuaUFCNTAHdW5pQUI1MQd1bmlBQjUyB3VuaUFCNTMHdW5pQUI1NAd1bmlBQjU1B3VuaUFCNTYHdW5pQUI1Nwd1bmlBQjU4B3VuaUFCNTkHdW5pQUI1QQd1bmlBQjY0B3VuaTIwOTUHdW5pMjA5Ngd1bmkyMDk3B3VuaTIwOTgHdW5pMjA5OQd1bmkyMDlBB3VuaTIwOUIHdW5pMjA5Qwd1bmlBNzcwB3VuaUE3RjgHdW5pQTdGOQd1bmlBQjVDB3VuaUFCNUQHdW5pQUI1RQd1bmlBQjVGB3VuaTJFMkYHemVyby5sZgZvbmUubGYGdHdvLmxmCHRocmVlLmxmB2ZvdXIubGYHZml2ZS5sZgZzaXgubGYIc2V2ZW4ubGYIZWlnaHQubGYHbmluZS5sZgh6ZXJvLm9zZgdvbmUub3NmB3R3by5vc2YJdGhyZWUub3NmCGZvdXIub3NmCGZpdmUub3NmB3NpeC5vc2YJc2V2ZW4ub3NmCWVpZ2h0Lm9zZghuaW5lLm9zZgp6ZXJvLnNsYXNoCXplcm8udG9zZghvbmUudG9zZgh0d28udG9zZgp0aHJlZS50b3NmCWZvdXIudG9zZglmaXZlLnRvc2YIc2l4LnRvc2YKc2V2ZW4udG9zZgplaWdodC50b3NmCW5pbmUudG9zZgl6ZXJvLmRub20Ib25lLmRub20IdHdvLmRub20KdGhyZWUuZG5vbQlmb3VyLmRub20JZml2ZS5kbm9tCHNpeC5kbm9tCnNldmVuLmRub20KZWlnaHQuZG5vbQluaW5lLmRub20JemVyby5udW1yCG9uZS5udW1yCHR3by5udW1yCnRocmVlLm51bXIJZm91ci5udW1yCWZpdmUubnVtcghzaXgubnVtcgpzZXZlbi5udW1yCmVpZ2h0Lm51bXIJbmluZS5udW1yB3VuaTIxNUYHdW5pMjE4OQd1bmkyMTU1B3VuaTIxNTYHdW5pMjE1Nwd1bmkyMTU4B3VuaTIxNTkHdW5pMjE1QQd1bmkyMTUwB3VuaTIxNTEHdW5pMjE1Mgd1bmkyMDgwB3VuaTIwODEHdW5pMjA4Mgd1bmkyMDgzB3VuaTIwODQHdW5pMjA4NQd1bmkyMDg2B3VuaTIwODcHdW5pMjA4OAd1bmkyMDg5B3VuaTIwNDIHdW5pMjA0Qwd1bmkyMDREB3VuaTIwNDUHdW5pMjA0NgVjYXJldAd1bmkyMDQxB3VuaTIwNDAHdW5pMjA1MAd1bmkyRTM2B3VuaTJFMzcHdW5pMjA1Qwd1bmkyRTEzB3VuaTJFMTYHdW5pMkUwOA9kb3dud2FyZHNhbmNvcmEHdW5pMkUwRQd1bmkyMDQ5B3VuaTJFMkQHdW5pMjA1OQd1bmkyMDU1B3VuaTJFMTAHdW5pMjA1Qgd1bmkyMDU4B3VuaTIwMjcHdW5pMjA0Mwd1bmkyRTEyB3VuaTJFMTgHdW5pMjA1NAd1bmkyRTA0B3VuaTJFMUMHdW5pMkUwQwd1bmkyRTAyB3VuaTJFMDkHdW5pMkUyMAd1bmkyMDRFDm9uZWRvdGVubGVhZGVyHG9uZWRvdG92ZXJ0d29kb3RzcHVuY3R1YXRpb24HdW5pMkUxOQd1bmkyRTBGB3VuaTIwNDcHdW5pMjA0OAd1bmkyRTM0B3VuaTJFMzMHdW5pMkUwNwd1bmkyRTA2B3VuaTJFMEIHdW5pMjAzQgd1bmkyRTExEXJldmVyc2VkcGFyYWdyYXBoFHJldmVyc2VkcXVlc3Rpb25tYXJrB3VuaTIwNEYHdW5pMkUwMQd1bmkyRTAwB3VuaTJFMDUHdW5pMkUxRAd1bmkyRTBEB3VuaTJFMDMHdW5pMkUwQQd1bmkyRTIxB3VuaTJFMzAZc3F1YXJlZGZvdXJkb3RwdW5jdHVhdGlvbgd1bmkyMDUzB3VuaTIwNTYHdW5pMkUxRQd1bmkyRTFGB3VuaTJFMUIHdW5pMjA0QQd1bmkyRTM5B3VuaTIwNUQHdW5pMkUzMgd1bmkyRTM4B3VuaTJFMzUHdW5pMjA1MQ50d29kb3RlbmxlYWRlcgd1bmkyMDVBHHR3b2RvdHNvdmVyb25lZG90cHVuY3R1YXRpb24HdW5pMjAzRgd1bmkyMDIzB3VuaTJFM0MHdW5pMkUzRAd1bmkyRTNFB3VuaTJFM0YHdW5pMkU0MQd1bmlBNjczDXVwd2FyZHNhbmNvcmEHdW5pMkUzMQd1bmkyMDhEB3VuaTIwOEUTYnJhY2toYWxmYm90dG9tbGVmdBRicmFja2hhbGZib3R0b21yaWdodBBicmFja2hhbGZ0b3BsZWZ0EWJyYWNraGFsZnRvcHJpZ2h0FWxlZnRkb3VibGVwYXJlbnRoZXNpcxZyaWdodGRvdWJsZXBhcmVudGhlc2lzB3VuaTJFMjYHdW5pMkUyNwd1bmkyMDdEB3VuaTIwN0UHdW5pMkUxQQd1bmkyMDEwB3VuaTIwMTEHdW5pMkUzQgd1bmkyRTNBB3VuaTJFNDAHdW5pMjAzNgd1bmkyMDM1B3VuaTIwNTcHdW5pMjAzNwd1bmkyRTQyDGJyYWNlbGVmdC5zYw1icmFjZXJpZ2h0LnNjDmJyYWNrZXRsZWZ0LnNjD2JyYWNrZXRyaWdodC5zYwlleGNsYW0uc2MMZXhjbGFtZGJsLnNjDWV4Y2xhbWRvd24uc2MQZ3VpbHNpbmdsbGVmdC5zYxFndWlsc2luZ2xyaWdodC5zYwxwYXJlbmxlZnQuc2MNcGFyZW5yaWdodC5zYwtxdWVzdGlvbi5zYw9xdWVzdGlvbmRvd24uc2MHdW5pQTkyRQd1bmlBNjdFB3VuaTIwNUYHdW5pMjAyOAd1bmkyMDI5B3VuaTIwNjEHdW5pMjA2NAd1bmkyMDYzB3VuaTIwNjIHdW5pMjA2Ngd1bmkyMDY3B3VuaTIwNjgHdW5pMjA2OQd1bmkyMDYwB3VuaTIwQjYHdW5pMjBCQwd1bmkyMEJEB3VuaTIwQUEHdW5pMjBCNwd1bmkyMEI4B3VuaTIwQkIHdW5pMjBCRQd1bmkyMTI3B3VuaTIxMzUHdW5pMjE0Qgd1bmkyMTM2B3VuaTIwNTIHdW5pMjEzOAd1bmkyMDhDB3VuaTIwN0MHdW5pMjEzNwd1bmkyMDhCB3VuaTIwN0IHdW5pMjAzMQd1bmkyMDhBB3VuaTIwN0EScmV2ZXJzZWRTYW5zU2VyaWZMFXN1bW1hdGlvbkRvdWJsZVN0cnVjaxB0dXJuZWRTYW5zU2VyaWZHEHR1cm5lZFNhbnNTZXJpZkwQdHVybmVkU2Fuc1NlcmlmWQhSb3RhdGVkUQd1bmkyMTAwB3VuaTIxMDEHdW5pMjEwNgd1bmkyMTAzB3VuaTIxMDQHdW5pMjEzQgd1bmkyMTA5B3VuaTIxMzkHdW5pMjAzRAd1bmkyMTE0B3VuaTIxMjUHdW5pMjE0QwxwcmVzY3JpcHRpb24HdW5pMjE0QQd1bmkyMTFGB3VuaTIxMDgHdW5pMjEyMBhzeW1ib2xmb3JzYW1hcml0YW5zb3VyY2UHdW5pMjEyMQd1bmkyMTIzC3dlaWVyc3RyYXNzB3VuaTAyREUXdW5pMDJFNV91bmkwMkU1X3VuaTAyRTkXdW5pMDJFNV91bmkwMkU1X3VuaTAyRTYXdW5pMDJFNV91bmkwMkU1X3VuaTAyRTgXdW5pMDJFNV91bmkwMkU1X3VuaTAyRTcPdW5pMDJFNV91bmkwMkU5F3VuaTAyRTVfdW5pMDJFOV91bmkwMkU1F3VuaTAyRTVfdW5pMDJFOV91bmkwMkU5F3VuaTAyRTVfdW5pMDJFOV91bmkwMkU2F3VuaTAyRTVfdW5pMDJFOV91bmkwMkU4F3VuaTAyRTVfdW5pMDJFOV91bmkwMkU3D3VuaTAyRTVfdW5pMDJFNhd1bmkwMkU1X3VuaTAyRTZfdW5pMDJFNRd1bmkwMkU1X3VuaTAyRTZfdW5pMDJFORd1bmkwMkU1X3VuaTAyRTZfdW5pMDJFNhd1bmkwMkU1X3VuaTAyRTZfdW5pMDJFOBd1bmkwMkU1X3VuaTAyRTZfdW5pMDJFNw91bmkwMkU1X3VuaTAyRTgXdW5pMDJFNV91bmkwMkU4X3VuaTAyRTUXdW5pMDJFNV91bmkwMkU4X3VuaTAyRTkXdW5pMDJFNV91bmkwMkU4X3VuaTAyRTYXdW5pMDJFNV91bmkwMkU4X3VuaTAyRTgXdW5pMDJFNV91bmkwMkU4X3VuaTAyRTcPdW5pMDJFNV91bmkwMkU3F3VuaTAyRTVfdW5pMDJFN191bmkwMkU1F3VuaTAyRTVfdW5pMDJFN191bmkwMkU5F3VuaTAyRTVfdW5pMDJFN191bmkwMkU2F3VuaTAyRTVfdW5pMDJFN191bmkwMkU4F3VuaTAyRTVfdW5pMDJFN191bmkwMkU3D3VuaTAyRTlfdW5pMDJFNRd1bmkwMkU5X3VuaTAyRTVfdW5pMDJFNRd1bmkwMkU5X3VuaTAyRTVfdW5pMDJFORd1bmkwMkU5X3VuaTAyRTVfdW5pMDJFNhd1bmkwMkU5X3VuaTAyRTVfdW5pMDJFOBd1bmkwMkU5X3VuaTAyRTVfdW5pMDJFNxd1bmkwMkU5X3VuaTAyRTlfdW5pMDJFNRd1bmkwMkU5X3VuaTAyRTlfdW5pMDJFNhd1bmkwMkU5X3VuaTAyRTlfdW5pMDJFOBd1bmkwMkU5X3VuaTAyRTlfdW5pMDJFNw91bmkwMkU5X3VuaTAyRTYXdW5pMDJFOV91bmkwMkU2X3VuaTAyRTUXdW5pMDJFOV91bmkwMkU2X3VuaTAyRTkXdW5pMDJFOV91bmkwMkU2X3VuaTAyRTYXdW5pMDJFOV91bmkwMkU2X3VuaTAyRTgXdW5pMDJFOV91bmkwMkU2X3VuaTAyRTcPdW5pMDJFOV91bmkwMkU4F3VuaTAyRTlfdW5pMDJFOF91bmkwMkU1F3VuaTAyRTlfdW5pMDJFOF91bmkwMkU5F3VuaTAyRTlfdW5pMDJFOF91bmkwMkU2F3VuaTAyRTlfdW5pMDJFOF91bmkwMkU4F3VuaTAyRTlfdW5pMDJFOF91bmkwMkU3D3VuaTAyRTlfdW5pMDJFNxd1bmkwMkU5X3VuaTAyRTdfdW5pMDJFNRd1bmkwMkU5X3VuaTAyRTdfdW5pMDJFORd1bmkwMkU5X3VuaTAyRTdfdW5pMDJFNhd1bmkwMkU5X3VuaTAyRTdfdW5pMDJFOBd1bmkwMkU5X3VuaTAyRTdfdW5pMDJFNw91bmkwMkU2X3VuaTAyRTUXdW5pMDJFNl91bmkwMkU1X3VuaTAyRTUXdW5pMDJFNl91bmkwMkU1X3VuaTAyRTkXdW5pMDJFNl91bmkwMkU1X3VuaTAyRTYXdW5pMDJFNl91bmkwMkU1X3VuaTAyRTgXdW5pMDJFNl91bmkwMkU1X3VuaTAyRTcPdW5pMDJFNl91bmkwMkU5F3VuaTAyRTZfdW5pMDJFOV91bmkwMkU1F3VuaTAyRTZfdW5pMDJFOV91bmkwMkU5F3VuaTAyRTZfdW5pMDJFOV91bmkwMkU2F3VuaTAyRTZfdW5pMDJFOV91bmkwMkU4F3VuaTAyRTZfdW5pMDJFOV91bmkwMkU3F3VuaTAyRTZfdW5pMDJFNl91bmkwMkU1F3VuaTAyRTZfdW5pMDJFNl91bmkwMkU5F3VuaTAyRTZfdW5pMDJFNl91bmkwMkU4F3VuaTAyRTZfdW5pMDJFNl91bmkwMkU3D3VuaTAyRTZfdW5pMDJFOBd1bmkwMkU2X3VuaTAyRThfdW5pMDJFNRd1bmkwMkU2X3VuaTAyRThfdW5pMDJFORd1bmkwMkU2X3VuaTAyRThfdW5pMDJFNhd1bmkwMkU2X3VuaTAyRThfdW5pMDJFOBd1bmkwMkU2X3VuaTAyRThfdW5pMDJFNw91bmkwMkU2X3VuaTAyRTcXdW5pMDJFNl91bmkwMkU3X3VuaTAyRTUXdW5pMDJFNl91bmkwMkU3X3VuaTAyRTkXdW5pMDJFNl91bmkwMkU3X3VuaTAyRTYXdW5pMDJFNl91bmkwMkU3X3VuaTAyRTgXdW5pMDJFNl91bmkwMkU3X3VuaTAyRTcPdW5pMDJFOF91bmkwMkU1F3VuaTAyRThfdW5pMDJFNV91bmkwMkU1F3VuaTAyRThfdW5pMDJFNV91bmkwMkU5F3VuaTAyRThfdW5pMDJFNV91bmkwMkU2F3VuaTAyRThfdW5pMDJFNV91bmkwMkU4F3VuaTAyRThfdW5pMDJFNV91bmkwMkU3D3VuaTAyRThfdW5pMDJFORd1bmkwMkU4X3VuaTAyRTlfdW5pMDJFNRd1bmkwMkU4X3VuaTAyRTlfdW5pMDJFORd1bmkwMkU4X3VuaTAyRTlfdW5pMDJFNhd1bmkwMkU4X3VuaTAyRTlfdW5pMDJFOBd1bmkwMkU4X3VuaTAyRTlfdW5pMDJFNw91bmkwMkU4X3VuaTAyRTYXdW5pMDJFOF91bmkwMkU2X3VuaTAyRTUXdW5pMDJFOF91bmkwMkU2X3VuaTAyRTkXdW5pMDJFOF91bmkwMkU2X3VuaTAyRTYXdW5pMDJFOF91bmkwMkU2X3VuaTAyRTgXdW5pMDJFOF91bmkwMkU2X3VuaTAyRTcXdW5pMDJFOF91bmkwMkU4X3VuaTAyRTUXdW5pMDJFOF91bmkwMkU4X3VuaTAyRTkXdW5pMDJFOF91bmkwMkU4X3VuaTAyRTYXdW5pMDJFOF91bmkwMkU4X3VuaTAyRTcPdW5pMDJFOF91bmkwMkU3F3VuaTAyRThfdW5pMDJFN191bmkwMkU1F3VuaTAyRThfdW5pMDJFN191bmkwMkU5F3VuaTAyRThfdW5pMDJFN191bmkwMkU2F3VuaTAyRThfdW5pMDJFN191bmkwMkU4F3VuaTAyRThfdW5pMDJFN191bmkwMkU3D3VuaTAyRTdfdW5pMDJFNRd1bmkwMkU3X3VuaTAyRTVfdW5pMDJFNRd1bmkwMkU3X3VuaTAyRTVfdW5pMDJFORd1bmkwMkU3X3VuaTAyRTVfdW5pMDJFNhd1bmkwMkU3X3VuaTAyRTVfdW5pMDJFOBd1bmkwMkU3X3VuaTAyRTVfdW5pMDJFNw91bmkwMkU3X3VuaTAyRTkXdW5pMDJFN191bmkwMkU5X3VuaTAyRTUXdW5pMDJFN191bmkwMkU5X3VuaTAyRTkXdW5pMDJFN191bmkwMkU5X3VuaTAyRTYXdW5pMDJFN191bmkwMkU5X3VuaTAyRTgXdW5pMDJFN191bmkwMkU5X3VuaTAyRTcPdW5pMDJFN191bmkwMkU2F3VuaTAyRTdfdW5pMDJFNl91bmkwMkU1F3VuaTAyRTdfdW5pMDJFNl91bmkwMkU5F3VuaTAyRTdfdW5pMDJFNl91bmkwMkU2F3VuaTAyRTdfdW5pMDJFNl91bmkwMkU4F3VuaTAyRTdfdW5pMDJFNl91bmkwMkU3D3VuaTAyRTdfdW5pMDJFOBd1bmkwMkU3X3VuaTAyRThfdW5pMDJFNRd1bmkwMkU3X3VuaTAyRThfdW5pMDJFORd1bmkwMkU3X3VuaTAyRThfdW5pMDJFNhd1bmkwMkU3X3VuaTAyRThfdW5pMDJFOBd1bmkwMkU3X3VuaTAyRThfdW5pMDJFNxd1bmkwMkU3X3VuaTAyRTdfdW5pMDJFNRd1bmkwMkU3X3VuaTAyRTdfdW5pMDJFORd1bmkwMkU3X3VuaTAyRTdfdW5pMDJFNhd1bmkwMkU3X3VuaTAyRTdfdW5pMDJFOAd1bmlBQjVCDGFtcGVyc2FuZC5zYwd1bmkyMTI5B3VuaTAzMDgHdW5pMDMwNwlncmF2ZWNvbWIJYWN1dGVjb21iB3VuaTAzMEIHdW5pMDMwMgd1bmkwMzBDB3VuaTAzMDYHdW5pMDMwQQl0aWxkZWNvbWIHdW5pMDMwNAtvdmVybGluZWNtYgd1bmkwMzBEB3VuaTAzMEUHdW5pMDMwRgd1bmkwMzEwB3VuaTAzMTEHdW5pMDMxMgd1bmkwMzEzB3VuaTAzMTQHdW5pMDMxNQd1bmkwMzE2B3VuaTAzMTcHdW5pMDMxOAd1bmkwMzE5B3VuaTAzMUEHdW5pMDMxQgd1bmkwMzFDB3VuaTAzMUQHdW5pMDMxRQd1bmkwMzFGB3VuaTAzMjAYaG9va3BhbGF0YWxpemVkYmVsb3djb21iFmhvb2tyZXRyb2ZsZXhiZWxvd2NvbWIMZG90YmVsb3djb21iB3VuaTAzMjQHdW5pMDMyNQd1bmkwMzI3B3VuaTAzMjgHdW5pMDMyOQd1bmkwMzJBB3VuaTAzMkIHdW5pMDMyQwd1bmkwMzJEB3VuaTAzMkUHdW5pMDMyRgd1bmkwMzMwB3VuaTAzMzEHdW5pMDMzMgd1bmkwMzMzB3VuaTAzMzQWc3Ryb2tlc2hvcnRvdmVybGF5Y29tYhVzdHJva2Vsb25nb3ZlcmxheWNvbWIVc2xhc2hzaG9ydG92ZXJsYXljb21iFHNsYXNobG9uZ292ZXJsYXljb21iB3VuaTAzMzkHdW5pMDMzQQd1bmkwMzNCB3VuaTAzM0MHdW5pMDMzRAd1bmkwMzNFB3VuaTAzM0YHdW5pMDM0MAd1bmkwMzQxB3VuaTAzNDYHdW5pMDM0Nwd1bmkwMzQ4B3VuaTAzNDkHdW5pMDM0QQd1bmkwMzRCB3VuaTAzNEMHdW5pMDM0RAd1bmkwMzRFB3VuaTAzNEYHdW5pMDM1MAd1bmkwMzUxB3VuaTAzNTIHdW5pMDM1Mwd1bmkwMzU0B3VuaTAzNTUHdW5pMDM1Ngd1bmkwMzU3B3VuaTAzNTgHdW5pMDM1OQd1bmkwMzVBB3VuaTAzNUIHdW5pMDM1Qwd1bmkwMzVEB3VuaTAzNUUHdW5pMDM1Rgd1bmkwMzYwB3VuaTAzNjEHdW5pMDM2Mg9hY3V0ZWdyYXZlYWN1dGULYWN1dGVtYWNyb24HdW5pMURGRQd1bmkxREZGC2JyZXZlbWFjcm9uGWNvbWJpbmluZ2NvbmpvaW5pbmdtYWNyb24XY29tYmluaW5nbWFjcm9ubGVmdGhhbGYYY29tYmluaW5nbWFjcm9ucmlnaHRoYWxmC2RvdHRlZGFjdXRlC2RvdHRlZGdyYXZlFWRvdWJsZWNpcmN1bWZsZXhhYm92ZQ9ncmF2ZWFjdXRlZ3JhdmULZ3JhdmVtYWNyb24HdW5pMUREMAd1bmkxREM0C21hY3JvbmJyZXZlB3VuaTFEQzYLb2dvbmVrYWJvdmUKc25ha2ViZWxvdw5zdXNwZW5zaW9ubWFyawd1bmkxQUIwB3VuaTFBQjEHdW5pMUFCMgd1bmkxQUIzB3VuaTFBQjQHdW5pMUFCNQd1bmkxQUI2B3VuaTFBQjcHdW5pMUFCOAd1bmkxQUI5B3VuaTFBQkEHdW5pMUFCQgd1bmkxQUJDB3VuaTFBQkQHdW5pMURFNwd1bmkxREU4B3VuaTFERTkHdW5pMURFQQd1bmkxREVCB3VuaTFERUMHdW5pMURFRAd1bmkxREVFB3VuaTFERUYHdW5pMURGMAd1bmkxREYxB3VuaTFERjIHdW5pMURGMwd1bmkxREY0B3VuaTFERjUHdW5pMURGQgd1bmkxREZDB3VuaTFERkQHdW5pMkRFMAd1bmkyREUxB3VuaTJERTIHdW5pMkRFMwd1bmkyREU0B3VuaTJERTUHdW5pMkRFNgd1bmkyREU3B3VuaTJERTgHdW5pMkRFOQd1bmkyREVBB3VuaTJERUIHdW5pMkRFQwd1bmkyREVEB3VuaTJERUUHdW5pMkRFRgd1bmkyREYwB3VuaTJERjEHdW5pMkRGMgd1bmkyREYzB3VuaTJERjQHdW5pMkRGNQd1bmkyREY2B3VuaTJERjcHdW5pMkRGOAd1bmkyREY5B3VuaTJERkEHdW5pMkRGQgd1bmkyREZDB3VuaTJERkQHdW5pMkRGRQd1bmkyREZGB3VuaUZFMDAHdW5pRkUyNwd1bmlGRTI4B3VuaUZFMjkHdW5pRkUyQQd1bmlGRTJCB3VuaUZFMkMHdW5pRkUyRAd1cmFib3ZlB3VzYWJvdmULemlnemFnYmVsb3cHdW5pMUFCRQ9kaWVyZXNpc2NvbWIuc2MQZG90YWNjZW50Y29tYi5zYwxncmF2ZWNvbWIuc2MMYWN1dGVjb21iLnNjE2h1bmdhcnVtbGF1dGNvbWIuc2MRY2lyY3VtZmxleGNvbWIuc2MMY2Fyb25jb21iLnNjDGJyZXZlY29tYi5zYwtyaW5nY29tYi5zYwx0aWxkZWNvbWIuc2MNbWFjcm9uY29tYi5zYw1vZ29uZWtjb21iLnNjDG92ZXJzY29yZS5zYwd1bmkwMzQyB3VuaTAzNDMHdW5pMDM0NAd1bmkwMzQ1B3VuaTA0ODMHdW5pMDQ4NAd1bmkwNDg1B3VuaTA0ODYHdW5pMDQ4Nwd1bmlBNjZGB3VuaUE2NzQHdW5pQTY3NQd1bmlBNjc2B3VuaUE2NzcHdW5pQTY3OAd1bmlBNjc5B3VuaUE2N0EHdW5pQTY3Qgd1bmlBNjdDB3VuaUE2N0QHdW5pQTY5RQd1bmlBNjlGB3VuaUZFMkUHdW5pRkUyRgd1bmlBNjcwB3VuaUE2NzEHdW5pQTY3Mgd1bmkxRERCB3VuaTFEREUHdW5pMURERgd1bmkxREUxB3VuaTFERTIHdW5pMDM2Mwd1bmkxREQ0B3VuaTFERDUHdW5pMURENgd1bmkxREQ3B3VuaTAzNjgHdW5pMDM2OQd1bmkwMzY0B3VuaTFERDkTZmxhdHRlbmVkb3BlbmFhYm92ZQd1bmkxRERBB3VuaTAzNkEHdW5pMDM2NQd1bmkxREQ4B3VuaTFEREMHdW5pMURERAd1bmkxREU1B3VuaTAzNkIHdW5pMURFMAd1bmkwMzY2B3VuaTFEQ0EHdW5pMDM2Qwd1bmkxREUzB3VuaTFERTQHdW5pMDM2RAd1bmkwMzY3B3VuaTAzNkUHdW5pMDM2Rgd1bmkxREU2B3VuaTJDN0QMY29tbWFhY2NlbnQyB3VuaTJDNzAHdW5pMkM3RQd1bmkyQzdGB3VuaUFCNjUHdW5pQTdBRQd1bmlBQjYwB3VuaUFCNjEHdW5pQUI2Mgd1bmlBQjYzGXN1bW1hdGlvbkRvdWJsZVN0cnVjay5taXIHdW5pMjBCRgd1bmkyRTQzB3VuaTJFNDQHdW5pQTcwMAd1bmlBNzAxB3VuaUE3MDIHdW5pQTcwMwd1bmlBNzA0B3VuaUE3MDUHdW5pQTcwNgd1bmlBNzA3B3VuaUE3MDgHdW5pQTcwOQd1bmlBNzBBB3VuaUE3MEIHdW5pQTcwQwd1bmlBNzBEB3VuaUE3MEUHdW5pQTcwRgd1bmlBNzEwB3VuaUE3MTEHdW5pQTcxMgd1bmlBNzEzB3VuaUE3MTQHdW5pQTcxNQd1bmlBNzE2AAAAAAEAAf//AA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtAG0AVwBXAsoAAAIbAAD/EAQt/tsC1P/2AiX/9v8QBC3+2wBtAG0AVwBXAsr/9gL4Ahv/9v8QBC3+2wLV//YC/QIl//b/EAQt/tsAbQBtAFcAVwI/AAAELf7bAkj/+AQt/tsAbQBt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QCstsIksswkEAgNFWCEbIyFZQiuwCGWwAyRQeLEFARVFWDBZLQAAAABLuADIUlixAQGOWbABuQgACABjcLEAB0JAC7WhjQBvXwBDLwkAKrEAB0JAFKgIlAiACHYDZgZWBkoENggkBwkIKrEAB0JAFLIGngaKBnsBbgReBFACQAYtBQkIKrEAEEJBCypAJUAgQB3AGcAVwBLADcAJQAAJAAkqsQAZQkELAEAAQABAAEAAQABAAEAAQABAAAkACSqxAwBEsSQBiFFYsECIWLEDZESxKAGIUVi4CACIWLEDAERZG7EnAYhRWLoIgAABBECIY1RYsQMARFlZWVlZQBSqCJYIggh4A2gGWAZMBDgIJgcJDCq4Af+FsASNsQIARLMFZAYAREQAAAAKdHRmYXV0b2hpbnQgdmVyc2lvbiA9IDEuNwoKYWRqdXN0LXN1YmdseXBocyA9IDAKZGVmYXVsdC1zY3JpcHQgPSBsYXRuCmR3LWNsZWFydHlwZS1zdHJvbmctc3RlbS13aWR0aCA9IDAKZmFsbGJhY2stc2NhbGluZyA9IDAKZmFsbGJhY2stc2NyaXB0ID0gbm9uZQpmYWxsYmFjay1zdGVtLXdpZHRoID0gMApnZGktY2xlYXJ0eXBlLXN0cm9uZy1zdGVtLXdpZHRoID0gMQpncmF5LXN0cm9uZy1zdGVtLXdpZHRoID0gMApoaW50aW5nLWxpbWl0ID0gMjAwCmhpbnRpbmctcmFuZ2UtbWF4ID0gNTAKaGludGluZy1yYW5nZS1taW4gPSA4CmhpbnQtY29tcG9zaXRlcyA9IDAKaWdub3JlLXJlc3RyaWN0aW9ucyA9IDAKaW5jcmVhc2UteC1oZWlnaHQgPSAxNApyZWZlcmVuY2UgPSAKcmVmZXJlbmNlLWluZGV4ID0gMApzeW1ib2wgPSAwClRURkEtaW5mbyA9IDEKd2luZG93cy1jb21wYXRpYmlsaXR5ID0gMQp4LWhlaWdodC1zbmFwcGluZy1leGNlcHRpb25zID0gCmNvbnRyb2wtaW5zdHJ1Y3Rpb25zID0gCgoKAA==\"","module.exports = \"T1RUTwAOAIAAAwBgQkFTRYselLEAA0f4AAAAOkNGRiCkrsYlAAA1cAABsWFEU0lH3DVp8QADSDQAABx4R0RFRmHWY74AAf0wAAACtEdQT1PojzgVAAIeMAABKchHU1VCbjuk3AAB/+QAAB5MT1MvMl+WmtkAAAFQAAAAYGNtYXB2jTkgAAAMDAAAKURoZWFkEAhqGQAAAOwAAAA2aGhlYQvaDEUAAAEkAAAAJGhtdHiQIqJwAAHm1AAAFlptYXhwBZdQAAAAAUgAAAAGbmFtZdba4s8AAAGwAAAKWXBvc3T/uAAyAAA1UAAAACAAAQAAAAIAAERZq0ZfDzz1AAMD6AAAAADUkpNPAAAAANSSk0//EP6xCLsD6gAAAAMAAgAAAAAAAAABAAAEDP6xAAAI4/8Q/xoIuwABAAAAAAAAAAAAAAAAAAAFlgAAUAAFlwAAAAMCKgGQAAUAAAKKAlgAAABLAooCWAAAAV4AMgEdAAACBAYDBQQFAgIEIAAChwIAAAMAAAAAAAAAAEFEQk8AQAAg//8C2v7yAAAEDAFPIAABnwAAAAAB2wKeAAAAIAADAAAAGgE+AAEAAAAAAAAAcAAAAAEAAAAAAAEAEABwAAEAAAAAAAIABwCAAAEAAAAAAAMAJwCHAAEAAAAAAAQAEABwAAEAAAAAAAUAOQCuAAEAAAAAAAYAFgDnAAEAAAAAAAcAYAD9AAEAAAAAAAgAGgFdAAEAAAAAAAkAEQF3AAEAAAAAAAsAGQGIAAEAAAAAAA0BTgGhAAEAAAAAAA4AGgLvAAMAAQQJAAAA4AMJAAMAAQQJAAEAIAPpAAMAAQQJAAIADgQJAAMAAQQJAAMATgQXAAMAAQQJAAQAIAPpAAMAAQQJAAUAcgRlAAMAAQQJAAYALATXAAMAAQQJAAcAwAUDAAMAAQQJAAgANAXDAAMAAQQJAAkAIgX3AAMAAQQJAAsAMgYZAAMAAQQJAA0CnAZLAAMAAQQJAA4ANAjnQ29weXJpZ2h0IDIwMTQsIDIwMTUsIDIwMTYgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgKGh0dHA6Ly93d3cuYWRvYmUuY29tLyksIHdpdGggUmVzZXJ2ZWQgRm9udCBOYW1lICdTb3VyY2UnLlNvdXJjZSBTZXJpZiBQcm9SZWd1bGFyMi4wMDA7QURCTztTb3VyY2VTZXJpZlByby1SZWd1bGFyO0FET0JFVmVyc2lvbiAyLjAwMDtQUyAxLjA7aG90Y29udiAxNi42LjUxO21ha2VvdGYubGliMi41LjY1MjIwU291cmNlU2VyaWZQcm8tUmVndWxhclNvdXJjZSBpcyBhIHRyYWRlbWFyayBvZiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZCBpbiB0aGUgVW5pdGVkIFN0YXRlcyBhbmQvb3Igb3RoZXIgY291bnRyaWVzLkFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkRnJhbmsgR3JpZadoYW1tZXJodHRwOi8vd3d3LmFkb2JlLmNvbS90eXBlVGhpcyBGb250IFNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBTSUwgT3BlbiBGb250IExpY2Vuc2UsIFZlcnNpb24gMS4xLg0KDQpUaGlzIEZvbnQgU29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgU0lMIE9wZW4gRm9udCBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UsIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyBnb3Zlcm5pbmcgeW91ciB1c2Ugb2YgdGhpcyBGb250IFNvZnR3YXJlLmh0dHA6Ly9zY3JpcHRzLnNpbC5vcmcvT0ZMAEMAbwBwAHkAcgBpAGcAaAB0ACAAMgAwADEANAAsACAAMgAwADEANQAsACAAMgAwADEANgAgAEEAZABvAGIAZQAgAFMAeQBzAHQAZQBtAHMAIABJAG4AYwBvAHIAcABvAHIAYQB0AGUAZAAgACgAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAZABvAGIAZQAuAGMAbwBtAC8AKQAsACAAdwBpAHQAaAAgAFIAZQBzAGUAcgB2AGUAZAAgAEYAbwBuAHQAIABOAGEAbQBlACAAJwBTAG8AdQByAGMAZQAnAC4AUwBvAHUAcgBjAGUAIABTAGUAcgBpAGYAIABQAHIAbwBSAGUAZwB1AGwAYQByADIALgAwADAAMAA7AEEARABCAE8AOwBTAG8AdQByAGMAZQBTAGUAcgBpAGYAUAByAG8ALQBSAGUAZwB1AGwAYQByADsAQQBEAE8AQgBFAFYAZQByAHMAaQBvAG4AIAAyAC4AMAAwADAAOwBQAFMAIAAxAC4AMAA7AGgAbwB0AGMAbwBuAHYAIAAxADYALgA2AC4ANQAxADsAbQBhAGsAZQBvAHQAZgAuAGwAaQBiADIALgA1AC4ANgA1ADIAMgAwAFMAbwB1AHIAYwBlAFMAZQByAGkAZgBQAHIAbwAtAFIAZQBnAHUAbABhAHIAUwBvAHUAcgBjAGUAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABBAGQAbwBiAGUAIABTAHkAcwB0AGUAbQBzACAASQBuAGMAbwByAHAAbwByAGEAdABlAGQAIABpAG4AIAB0AGgAZQAgAFUAbgBpAHQAZQBkACAAUwB0AGEAdABlAHMAIABhAG4AZAAvAG8AcgAgAG8AdABoAGUAcgAgAGMAbwB1AG4AdAByAGkAZQBzAC4AQQBkAG8AYgBlACAAUwB5AHMAdABlAG0AcwAgAEkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkAEYAcgBhAG4AawAgAEcAcgBpAGUA3wBoAGEAbQBtAGUAcgBoAHQAdABwADoALwAvAHcAdwB3AC4AYQBkAG8AYgBlAC4AYwBvAG0ALwB0AHkAcABlAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADEALgAxAC4ADQAKAA0ACgBUAGgAaQBzACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAGkAcwAgAGQAaQBzAHQAcgBpAGIAdQB0AGUAZAAgAG8AbgAgAGEAbgAgACcAQQBTACAASQBTACcAIABCAEEAUwBJAFMALAAgAFcASQBUAEgATwBVAFQAIABXAEEAUgBSAEEATgBUAEkARQBTACAATwBSACAAQwBPAE4ARABJAFQASQBPAE4AUwAgAE8ARgAgAEEATgBZACAASwBJAE4ARAAsACAAZQBpAHQAaABlAHIAIABlAHgAcAByAGUAcwBzACAAbwByACAAaQBtAHAAbABpAGUAZAAuACAAUwBlAGUAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACAAZgBvAHIAIAB0AGgAZQAgAHMAcABlAGMAaQBmAGkAYwAgAGwAYQBuAGcAdQBhAGcAZQAsACAAcABlAHIAbQBpAHMAcwBpAG8AbgBzACAAYQBuAGQAIABsAGkAbQBpAHQAYQB0AGkAbwBuAHMAIABnAG8AdgBlAHIAbgBpAG4AZwAgAHkAbwB1AHIAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlAC4AaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAAAAAAAABQAAAAMAAAIkAAAABAAADJwAAQAAAAAALAADAAEAAAIkAAMACgAADJwABgH4AAAACQD3AAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAd4B5QIfAp4CuwGkAeQB+gH7AhMCxgHaAfAB2QIPAaUBpgGnAagBqQGqAasBrAGtAa4B2wHcAswCywLNAeECHQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsB/AIRAf0C0QH5AwUAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1Af4CEAH/AtMAAAA6AEoATQBXAIwAlgC/AOcA5gDoAOoA6QD6AP0BBwEGAQgBCgEjASIBJAElAT8BRgFFAUgBSgFJAXMBcgF0AXUCFAKcAp8CoAIWAfgCFwFrAhoCGAIbAwYDCgLSAEwApwLWAtACzgLPAqEC1wLYAt0C3gN9AtkCZAJlA2QA/AFbAeIB3wLVAtoCogLUAtsB7gHvAd0CtwA2ADkAlQCoAVwB8wH0AegB6QHmAecCyQL5AY4A2AK0AqkB7AHtAZ4BnwIVAfcB6gHrArwAOABYADcAWgBWAHMAdAB1AHIAkgCUAAAAkQC9AL4AvAEtAwcDCQMLAwwDDwMNAxADDgMTAwgABAp4AAABTAEAAAcATAAvAEAAYAB+AL8AywDYAN8A6wD4ASsBMQFJAWUBfwGPAZIBoQGwAdwB5wH5AhsCNwJRAlkCYQKwArMCuAK8Ar8CxwLMAt0C4wMEAwwDGwMkAykDLgMxA3UDfgOKA4wDkAOhA6sDsAPCA84D1wPZA9sD3QPhBA8ELwRfBGMEdQSTBJsEowSrBLMEtwS7BMIE0QTZBOME6QTvBPMdQx1JHU0dUB1SHVgdWx2cHaAdux4PHiEeJR4rHjsePx5JHmMebx6FHo8ekx6XHp4e+SAHIBAgFSAaIB4gIiAmIDAgMyA6IDwgRCBJIHEgeSB/IIkgjiChIKQgpyCpIKwgriCyILUguiC9IL8hEyEXISAhIiEmIS4hVCFeIZMhmSICIgYiDyISIhUiGiIeIisiSCJgImUloCWzJbclvSXBJcYlyiYRJmonEydSLjv7BP//AAAAIAAwAEEAYQCgAMAAzADZAOAA7AD5AS4BNAFMAWgBjwGSAaABrwHNAeYB+AIYAjcCUQJZAmECsAKyArcCuwK+AsYCyALYAuEDAAMGAxsDIwMmAy4DMQN0A34DhAOMA44DkQOjA6wDsQPDA9cD2QPbA90D4QQABBAEMARiBHIEkASWBKAEqgSuBLYEugTABM8E1ATiBOYE7gTyHUMdRx1NHU8dUh1WHVsdnB2gHbseDB4gHiQeKh42Hj4eQh5aHmwegB6OHpIelx6eHqAgByAQIBIgGCAcICAgJSAwIDIgOSA8IEQgRyBwIHQgfSCAII0goSCkIKYgqSCrIK4gsSC0ILggvSC/IRMhFiEgISIhJiEuIVMhWyGQIZYiAiIGIg8iESIVIhkiHiIrIkgiYCJkJaAlsiW2JbwlwCXGJckmECZqJxMnUi46+wD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9WARAAAAAAAAAAAAAAAAD+9/9L/0L/PP/XAAAAAABBAAAAQQA4AAAAAAAAAAAAGAAAAAQAAAADACYAGQAA/94AAP+8AAAAAAAAAAD/u/+6/7n/uP+1/8H/kf+8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADlPQAA5TkAAOU8AADlOuTm5OXk3gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLY4hgAAOKx4eIAAAAAAAAAAAAA4oziyOGz5AbicOP8AADhsAAA4bThseIC4gDh/+H+4f3h/OH64fkAAOH14fThzAAA4Pzg+eG24bLhbeFnAAAAAODW4NXgzwAA4KAAAOC44K7gjOBy4GrdSd073TndNd0z3SQAANzl3I7b5Nua1gIAAAABAUwBagGKAcgCAgJAAlYCbgJ6ApACqAMMAxIDPANuAAAAAAOYA5oDnAO6A7wDvgAAAAAAAAAAAAADugO8AAADvAAAAAADugPEA8gD0AAAA9oAAAAAAAAAAAAAA9IAAAPcAAAD3gPuA/YEGAAAAAAAAAAAAAAAAAAAAAAEHgQgBCYELAQ2BDwEPgRIBEoETARQBFQEXgRgBGYEaAAABGgAAARqAAAEagAAAAAAAAAABGYEbARuBHAEcgR8BH4EjASeBKQErgSwAAAAAASuAAAAAAVcBWIFZgVqBW4AAAAAAAAAAAAAAAAFZAAABWQAAAAAAAAAAAAAAAAAAAAAAAAAAAVUAAAAAAAABVIAAAAAAAAAAAAAAAAFSAVOAAAAAAAABU4AAAVOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU6AAAAAAAAAAAAAAUyAAAAAQHeAeUCHwKeArsBpAHkAfoB+wITAsYB2gHwAdkCDwGlAaYBpwGoAakBqgGrAawBrQGuAdsB3ALMAssCzQHhAh0AAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbAfwCEQH9AtEB+QMFABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQH+AhAB/wLTArcB3wKfAqACnQKhAhICFgMKAhgCZAHuAtUB8QIaAwsCnALQAiICIwMGAtcCFwH3AxACIQJlAe8CvQK+Ar8B4gA2ADcAOAA5ADoASgBMAE0AVgBXAFgAWgByAHMAdAB1AOMAjACRAJIAlACVAJYCyACnALwAvQC+AL8A1wDkAWsA5gDnAOgA6QDqAPoA/AD9AQYBBwEIAQoBIgEjASQBJQGZAT8BRQFGAUgBSQFKAskBWwFyAXMBdAF1AY0BmgGOADsA6wA8AOwASwD7AE4A/gBQAQAAUQEBAE8A/wBSAQIAUwEDAFsBCwBeAQ4AXAEMAF0BDQBZAQkAawEbAGcBFwBoARgAaQEZAHABIABuAR4AfAEsAHYBJgB4AScAdwEtAH0BLwB+ATABMQB/ATIAgQE0AIABMwCCATUAhgE5AIkBPACNAUAAigE9AUIAlwFLAJMBRwCYAUwAqAFcAKkBXQCrAV4AqgFfAK8BYwCzAWcAsQFlALABZAC4AW0AtwFsANIBiADAAXYAxAF6AMEBdwDCAXgAwwF5ANQBigDZAY8A2ADfAZUA4QGXAOABlgFqAKEBVQDMAYIAQgDyAHkBKQCZAU0AxQF7AMkBfwDGAXwAxwF9AMgBfgBqARoAiwE+ALIBZgC5AW4CiQKRApYCmAL/Av4DDAMPAw0DEwMJAw4CiwKSApcDFAMWAxgDGgMcAx4DIAMiAzEDJAMmAygDMAMvA5wDngNlA5gDZgNnA2gDawNtA5ADXgNfA2ADYQNiA2MDZANpA2wDhwOIA4kDigORA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgOGA38DgAOBA4IDgwOEA4UDiwOOA4wDjQOPA9EEHAPSBB0D0wQeA9QEHwPVBCAD1gQhA9cEIgPYBCMD2QQkA9oEJQPbBCYD3AQnA90EKAPeBCkD3wQqA+AEKwPhA+IELAQtA+MELgPkBC8D5QQwA+YEMQPnBDID6AQzA+kENAPqBDUD6wQ2AoECgwKEAooCjAKPApMClABUAQQAVQEFAGwBHABxASEAbwEfAIMBNgCEATcAhQE4AIcBOgCIATsAjgFBAI8BQwCQAUQArAFgAK0BYQCuAWIAtAFoALUBaQC6AXAAuwFxANYBjADTAYkA1QGLANoBkADiAZgASAD4AEkA+QBDAPMARQD1AEYA9gBHAPcARAD0AD0A7QA/AO8AQADwAEEA8QA+AO4AZAEUAGUBFQBmARYAXwEPAGEBEQBiARIAYwETAGABEAB7ASsAegEqAJ8BUwCgAVQAmgFOAJwBUACdAVEAngFSAJsBTwCiAVYApAFYAKUBWQCmAVoAowFXAMoBgADLAYEAzQGDAM8BhQDQAYYA0QGHAM4BhADcAZIA2wGRAN0BkwDeAZQB9QHzAfQB9gHmAecB6gHoAekB6wIUAhUB+ARBAd0CIAKIAioCKwKNArECrwKwBDgCGQLhAuMC5QLnAuIC5ALmAugC3QLHAsoC2gLrAvkBoQGeAZ8BogGjAAwAAAAAHKgAAAAAAAACYgAAACAAAAAgAAAAAQAAACEAAAAhAAAB3gAAACIAAAAiAAAB5QAAACMAAAAjAAACHwAAACQAAAAkAAACngAAACUAAAAlAAACuwAAACYAAAAmAAABpAAAACcAAAAnAAAB5AAAACgAAAApAAAB+gAAACoAAAAqAAACEwAAACsAAAArAAACxgAAACwAAAAsAAAB2gAAAC0AAAAtAAAB8AAAAC4AAAAuAAAB2QAAAC8AAAAvAAACDwAAADAAAAA5AAABpQAAADoAAAA7AAAB2wAAADwAAAA8AAACzAAAAD0AAAA9AAACywAAAD4AAAA+AAACzQAAAD8AAAA/AAAB4QAAAEAAAABAAAACHQAAAEEAAABaAAAAAgAAAFsAAABbAAAB/AAAAFwAAABcAAACEQAAAF0AAABdAAAB/QAAAF4AAABeAAAC0QAAAF8AAABfAAAB+QAAAGAAAABgAAADBQAAAGEAAAB6AAAAHAAAAHsAAAB7AAAB/gAAAHwAAAB8AAACEAAAAH0AAAB9AAAB/wAAAH4AAAB+AAAC0wAAAKAAAACgAAACtwAAAKEAAAChAAAB3wAAAKIAAACjAAACnwAAAKQAAACkAAACnQAAAKUAAAClAAACoQAAAKYAAACmAAACEgAAAKcAAACnAAACFgAAAKgAAACoAAADCgAAAKkAAACpAAACGAAAAKoAAACqAAACZAAAAKsAAACrAAAB7gAAAKwAAACsAAAC1QAAAK0AAACtAAAB8QAAAK4AAACuAAACGgAAAK8AAACvAAADCwAAALAAAACwAAACnAAAALEAAACxAAAC0AAAALIAAACzAAACIgAAALQAAAC0AAADBgAAALUAAAC1AAAC1wAAALYAAAC2AAACFwAAALcAAAC3AAAB9wAAALgAAAC4AAADEAAAALkAAAC5AAACIQAAALoAAAC6AAACZQAAALsAAAC7AAAB7wAAALwAAAC+AAACvQAAAL8AAAC/AAAB4gAAAMAAAADEAAAANgAAAMUAAADFAAAASgAAAMYAAADHAAAATAAAAMgAAADKAAAAVgAAAMsAAADLAAAAWgAAAMwAAADPAAAAcgAAANAAAADQAAAA4wAAANEAAADRAAAAjAAAANIAAADTAAAAkQAAANQAAADWAAAAlAAAANcAAADXAAACyAAAANgAAADYAAAApwAAANkAAADcAAAAvAAAAN0AAADdAAAA1wAAAN4AAADeAAAA5AAAAN8AAADfAAABawAAAOAAAADkAAAA5gAAAOUAAADlAAAA+gAAAOYAAADnAAAA/AAAAOgAAADqAAABBgAAAOsAAADrAAABCgAAAOwAAADvAAABIgAAAPAAAADwAAABmQAAAPEAAADxAAABPwAAAPIAAADzAAABRQAAAPQAAAD2AAABSAAAAPcAAAD3AAACyQAAAPgAAAD4AAABWwAAAPkAAAD8AAABcgAAAP0AAAD9AAABjQAAAP4AAAD+AAABmgAAAP8AAAD/AAABjgAAAQAAAAEAAAAAOwAAAQEAAAEBAAAA6wAAAQIAAAECAAAAPAAAAQMAAAEDAAAA7AAAAQQAAAEEAAAASwAAAQUAAAEFAAAA+wAAAQYAAAEGAAAATgAAAQcAAAEHAAAA/gAAAQgAAAEIAAAAUAAAAQkAAAEJAAABAAAAAQoAAAEKAAAAUQAAAQsAAAELAAABAQAAAQwAAAEMAAAATwAAAQ0AAAENAAAA/wAAAQ4AAAEOAAAAUgAAAQ8AAAEPAAABAgAAARAAAAEQAAAAUwAAAREAAAERAAABAwAAARIAAAESAAAAWwAAARMAAAETAAABCwAAARQAAAEUAAAAXgAAARUAAAEVAAABDgAAARYAAAEWAAAAXAAAARcAAAEXAAABDAAAARgAAAEYAAAAXQAAARkAAAEZAAABDQAAARoAAAEaAAAAWQAAARsAAAEbAAABCQAAARwAAAEcAAAAawAAAR0AAAEdAAABGwAAAR4AAAEeAAAAZwAAAR8AAAEfAAABFwAAASAAAAEgAAAAaAAAASEAAAEhAAABGAAAASIAAAEiAAAAaQAAASMAAAEjAAABGQAAASQAAAEkAAAAcAAAASUAAAElAAABIAAAASYAAAEmAAAAbgAAAScAAAEnAAABHgAAASgAAAEoAAAAfAAAASkAAAEpAAABLAAAASoAAAEqAAAAdgAAASsAAAErAAABJgAAAS4AAAEuAAAAeAAAAS8AAAEvAAABJwAAATAAAAEwAAAAdwAAATEAAAExAAABLQAAATQAAAE0AAAAfQAAATUAAAE1AAABLwAAATYAAAE2AAAAfgAAATcAAAE4AAABMAAAATkAAAE5AAAAfwAAAToAAAE6AAABMgAAATsAAAE7AAAAgQAAATwAAAE8AAABNAAAAT0AAAE9AAAAgAAAAT4AAAE+AAABMwAAAT8AAAE/AAAAggAAAUAAAAFAAAABNQAAAUEAAAFBAAAAhgAAAUIAAAFCAAABOQAAAUMAAAFDAAAAiQAAAUQAAAFEAAABPAAAAUUAAAFFAAAAjQAAAUYAAAFGAAABQAAAAUcAAAFHAAAAigAAAUgAAAFIAAABPQAAAUkAAAFJAAABQgAAAUwAAAFMAAAAlwAAAU0AAAFNAAABSwAAAU4AAAFOAAAAkwAAAU8AAAFPAAABRwAAAVAAAAFQAAAAmAAAAVEAAAFRAAABTAAAAVIAAAFSAAAAqAAAAVMAAAFTAAABXAAAAVQAAAFUAAAAqQAAAVUAAAFVAAABXQAAAVYAAAFWAAAAqwAAAVcAAAFXAAABXgAAAVgAAAFYAAAAqgAAAVkAAAFZAAABXwAAAVoAAAFaAAAArwAAAVsAAAFbAAABYwAAAVwAAAFcAAAAswAAAV0AAAFdAAABZwAAAV4AAAFeAAAAsQAAAV8AAAFfAAABZQAAAWAAAAFgAAAAsAAAAWEAAAFhAAABZAAAAWIAAAFiAAAAuAAAAWMAAAFjAAABbQAAAWQAAAFkAAAAtwAAAWUAAAFlAAABbAAAAWgAAAFoAAAA0gAAAWkAAAFpAAABiAAAAWoAAAFqAAAAwAAAAWsAAAFrAAABdgAAAWwAAAFsAAAAxAAAAW0AAAFtAAABegAAAW4AAAFuAAAAwQAAAW8AAAFvAAABdwAAAXAAAAFwAAAAwgAAAXEAAAFxAAABeAAAAXIAAAFyAAAAwwAAAXMAAAFzAAABeQAAAXQAAAF0AAAA1AAAAXUAAAF1AAABigAAAXYAAAF2AAAA2QAAAXcAAAF3AAABjwAAAXgAAAF4AAAA2AAAAXkAAAF5AAAA3wAAAXoAAAF6AAABlQAAAXsAAAF7AAAA4QAAAXwAAAF8AAABlwAAAX0AAAF9AAAA4AAAAX4AAAF+AAABlgAAAX8AAAF/AAABagAAAY8AAAGPAAAA5QAAAZIAAAGSAAACogAAAaAAAAGgAAAAoQAAAaEAAAGhAAABVQAAAa8AAAGvAAAAzAAAAbAAAAGwAAABggAAAc0AAAHNAAAAQgAAAc4AAAHOAAAA8gAAAc8AAAHPAAAAeQAAAdAAAAHQAAABKQAAAdEAAAHRAAAAmQAAAdIAAAHSAAABTQAAAdMAAAHTAAAAxQAAAdQAAAHUAAABewAAAdUAAAHVAAAAyQAAAdYAAAHWAAABfwAAAdcAAAHXAAAAxgAAAdgAAAHYAAABfAAAAdkAAAHZAAAAxwAAAdoAAAHaAAABfQAAAdsAAAHbAAAAyAAAAdwAAAHcAAABfgAAAeYAAAHmAAAAagAAAecAAAHnAAABGgAAAfgAAAH4AAAAiwAAAfkAAAH5AAABPgAAAhgAAAIYAAAAsgAAAhkAAAIZAAABZgAAAhoAAAIaAAAAuQAAAhsAAAIbAAABbgAAAjcAAAI3AAABLgAAAlEAAAJRAAABnAAAAlkAAAJZAAABmwAAAmEAAAJhAAABnQAAArAAAAKwAAAChwAAArIAAAKyAAACiQAAArMAAAKzAAACkQAAArcAAAK3AAAClgAAArgAAAK4AAACmAAAArsAAAK8AAAC/AAAAr4AAAK+AAAC/wAAAr8AAAK/AAAC/gAAAsYAAALHAAADBwAAAsgAAALMAAADAAAAAtgAAALYAAADDAAAAtkAAALZAAADDwAAAtoAAALaAAADDQAAAtsAAALbAAADEwAAAtwAAALcAAADCQAAAt0AAALdAAADDgAAAuEAAALhAAACiwAAAuIAAALiAAACkgAAAuMAAALjAAAClwAAAwAAAAMAAAADFAAAAwEAAAMBAAADFgAAAwIAAAMCAAADGAAAAwMAAAMDAAADGgAAAwQAAAMEAAADHAAAAwYAAAMGAAADHgAAAwcAAAMHAAADIAAAAwgAAAMIAAADIgAAAwkAAAMJAAADMQAAAwoAAAMKAAADJAAAAwsAAAMLAAADJgAAAwwAAAMMAAADKAAAAxsAAAMbAAADMwAAAyMAAAMjAAADMAAAAyQAAAMkAAADLwAAAyYAAAMpAAADKgAAAy4AAAMuAAADLgAAAzEAAAMxAAADNAAAA3QAAAN1AAADmgAAA34AAAN+AAADlwAAA4QAAAOEAAADnAAAA4UAAAOFAAADngAAA4YAAAOGAAADZQAAA4cAAAOHAAADmAAAA4gAAAOKAAADZgAAA4wAAAOMAAADagAAA44AAAOOAAADawAAA48AAAOPAAADbQAAA5AAAAOQAAADkAAAA5EAAAOhAAADTQAAA6MAAAOpAAADXgAAA6oAAAOqAAADaQAAA6sAAAOrAAADbAAAA6wAAAOvAAADhwAAA7AAAAOwAAADkQAAA7EAAAPBAAADbgAAA8IAAAPCAAADhgAAA8MAAAPJAAADfwAAA8oAAAPKAAADiwAAA8sAAAPLAAADjgAAA8wAAAPNAAADjAAAA84AAAPOAAADjwAAA9cAAAPXAAADkgAAA9kAAAPZAAADkwAAA9sAAAPbAAADlAAAA90AAAPdAAADlQAAA+EAAAPhAAADlgAABAAAAAQPAAADwQAABBAAAAQvAAADoQAABDAAAARfAAAD7AAABGIAAARiAAAD0QAABGMAAARjAAAEHAAABHIAAARyAAAD0gAABHMAAARzAAAEHQAABHQAAAR0AAAD0wAABHUAAAR1AAAEHgAABJAAAASQAAAD1AAABJEAAASRAAAEHwAABJIAAASSAAAD1QAABJMAAASTAAAEIAAABJYAAASWAAAD1gAABJcAAASXAAAEIQAABJgAAASYAAAD1wAABJkAAASZAAAEIgAABJoAAASaAAAD2AAABJsAAASbAAAEIwAABKAAAASgAAAD2QAABKEAAAShAAAEJAAABKIAAASiAAAD2gAABKMAAASjAAAEJQAABKoAAASqAAAD2wAABKsAAASrAAAEJgAABK4AAASuAAAD3AAABK8AAASvAAAEJwAABLAAAASwAAAD3QAABLEAAASxAAAEKAAABLIAAASyAAAD3gAABLMAAASzAAAEKQAABLYAAAS2AAAD3wAABLcAAAS3AAAEKgAABLoAAAS6AAAD4AAABLsAAAS7AAAEKwAABMAAAATBAAAD4QAABMIAAATCAAAELAAABM8AAATPAAAELQAABNAAAATQAAAD4wAABNEAAATRAAAELgAABNQAAATUAAAD5AAABNUAAATVAAAELwAABNYAAATWAAAD5QAABNcAAATXAAAEMAAABNgAAATYAAAD5gAABNkAAATZAAAEMQAABOIAAATiAAAD5wAABOMAAATjAAAEMgAABOYAAATmAAAD6AAABOcAAATnAAAEMwAABOgAAAToAAAD6QAABOkAAATpAAAENAAABO4AAATuAAAD6gAABO8AAATvAAAENQAABPIAAATyAAAD6wAABPMAAATzAAAENgAAHUMAAB1DAAACgAAAHUcAAB1HAAACgQAAHUgAAB1JAAACgwAAHU0AAB1N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AAAA3gAAHvkAAB75AAABlAAAIAcAACAHAAACuAAAIBAAACAQAAAB8gAAIBIAACASAAAB9QAAIBMAACAUAAAB8wAAIBUAACAVAAAB9gAAIBgAACAZAAAB5gAAIBoAACAaAAAB6gAAIBwAACAdAAAB6AAAIB4AACAeAAAB6wAAICAAACAhAAACFAAAICIAACAiAAAB+AAAICUAACAlAAAEQQAAICYAACAmAAAB3QAAIDAAACAwAAACvAAAIDIAACAzAAAC+gAAIDkAACA6AAAB7AAAIDwAACA8AAAEQgAAIEQAACBEAAACtAAAIEcAACBJAAAEQwAAIHAAACBwAAACIAAAIHEAACBxAAACiAAAIHQAACB5AAACJAAAIH0AACB+AAACKgAAIH8AACB/AAACjQAAIIAAACCJAAACNAAAII0AACCOAAACPgAAIKEAACChAAACowAAIKQAACCkAAACpAAAIKYAACCnAAACpQAAIKkAACCpAAACpwAAIKsAACCsAAACqAAAIK4AACCuAAACqgAAILEAACCyAAACqwAAILQAACC1AAACrQAAILgAACC4AAACsQAAILkAACC6AAACrwAAIL0AACC9AAACsgAAIL8AACC/AAACswAAIRMAACETAAAC3wAAIRYAACEWAAAEOAAAIRcAACEXAAACGQAAISAAACEgAAACHAAAISIAACEiAAACGwAAISYAACEmAAAC3AAAIS4AACEuAAAC4AAAIVMAACFUAAACwAAAIVsAACFeAAACwgAAIZAAACGQAAAC4QAAIZEAACGRAAAC4wAAIZIAACGSAAAC5QAAIZMAACGTAAAC5wAAIZYAACGWAAAC4gAAIZcAACGXAAAC5AAAIZgAACGYAAAC5gAAIZkAACGZAAAC6AAAIgIAACICAAAC2AAAIgYAACIGAAAC2wAAIg8AACIPAAAC3gAAIhEAACIRAAAC3QAAIhIAACISAAACxwAAIhUAACIVAAACtQAAIhkAACIZAAACygAAIhoAACIaAAAC2gAAIh4AACIeAAAC1gAAIisAACIrAAAC2QAAIkgAACJIAAAC1AAAImAAACJgAAAC0gAAImQAACJlAAACzgAAJaAAACWgAAAC6QAAJbIAACWzAAAC7QAAJbYAACW3AAAC7wAAJbwAACW9AAAC8QAAJcAAACXBAAAC8wAAJcYAACXG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qxeyF7kXwBfHF84X1RfcF+MX6hfxF/gX/xgGGA0YFBgbGCIYKRgwGDcYPhhFGEwYUxhaGGEYaBhvGHYYfRiEGIsYkhiZGKAYpxiuGLUYvBjDGMoY0RjYGN8Y5hjtGPQY+xkCGQkZEBkXGR4ZJRksGTMZOhlBGUgZTxlWGV0ZZBlrGXIZeRmAGYcZjhmVGZwZoxmqGbEZuBm/GcYZzRnUGdsZ5hntGfkaCBoUGhsaIhooGi4aNBo9GkQaSxpSGlYaWhpeGmIaZhpqGm4achp2GnoafhqCGoYaihqOGpIalhqaGp4aohqmGqoarhqyGrYauhrDGswa2hrjGu8a+RsCGwwbFhsgGyobNBs+G0gbUhtcG2YbcBt6G4QbjBuWG5sbphuvG7gbxhvTG9wb5RvvG/kcAhwLHBkcIhwuHDgcRRxPHFgcYhxsHHYcgByKHJQcnhyoHLEcvhzIHNEc3xzpHPMdAR0IHRIdIB0qHTMdPB1KHVYdYB1tHXcdgR2LHZUdnh2sHbYdvx3IHdId2R3jHe0d9x4AHgoeFB4dHiceMB45HkMeTR5XHmEeah5zHn0eix6UHqAeqh66HsQezh7YHuIe7B72HwAfCh8SHxwfJh8wHzofRB9NH1IfWx9kH24feB+CH4wflR+eH6gfsh/AH8of1B/dH+cf8R/7IAUgDyAYICEgLyA7IEUgTSBdIGcgcCB6IIQgjiCYIKIgrCC2IL4gyCDSINwg5iDwIPkhAiEQIRwhJSEuITohSCFSIVwhZSFvIXkhgiGLIZghoiGoIbAhuiHCIckh0SHZIeMh6iHwIfgh/yIHIhAiFSIaIh8iKSIuIjQiPCJCIkwiUiJYIl4iZiJ1IocilCKaIqAirCKzIrkivyLHIs4i1SLbIuMi6yLyIvsjCCMTIyIjMCM7I0cjVCNjI3MjfCOFI44jmiOnI7UjxCPQI90j5yPxI/skBSQPJBkkIyQtJDckQSRLJFUkXyRpJHMkfSSHJJEkmySlJK8kuSTDJM0k1yThJOsk9ST/JQklEyUdJSclMSU7JUUlTyVZJWMlbSV3JYEliyWVJZ8lqSWzJb0lxyXRJdsl5SXvJfkmAyYNJhcmISYrJjUmPyZJJlMmXSZnJnEmeyaFJo8mmSajJq0mtybBJssmzicuJ20nfUFtYWNyb25BYnJldmV1bmkxRUFFdW5pMUVCNnVuaTFFQjB1bmkxRUIydW5pMUVCNHVuaTAxQ0R1bmkxRUE0dW5pMUVBQ3VuaTFFQTZ1bmkxRUE4dW5pMUVBQXVuaTFFQTB1bmkxRUEyQW9nb25la0NhY3V0ZUNjYXJvbkNjaXJjdW1mbGV4Q2RvdGFjY2VudERjYXJvbkRjcm9hdHVuaTFFMEN1bmkxRTBFRWNhcm9uRW1hY3JvbkVkb3RhY2NlbnRFb2dvbmVrRWJyZXZldW5pMUVCRXVuaTFFQzZ1bmkxRUMwdW5pMUVDMnVuaTFFQzR1bmkxRUI4dW5pMUVCQXVuaTFFQkNHYnJldmVHZG90YWNjZW50dW5pMDEyMkdjYXJvbkdjaXJjdW1mbGV4dW5pMUUyMHVuaTAwNDcwMzAzSGJhcnVuaTFFMkFIY2lyY3VtZmxleHVuaTFFMjRJbWFjcm9uSWRvdGFjY2VudElvZ29uZWt1bmkwMUNGdW5pMUVDQXVuaTFFQzhJdGlsZGVKY2lyY3VtZmxleHVuaTAxMzZMYWN1dGVMY2Fyb251bmkwMTNCTGRvdHVuaTFFMzZ1bmkxRTM4dW5pMUUzQXVuaTFFM0V1bmkxRTQyTmFjdXRlTmNhcm9udW5pMDFGOHVuaTAxNDV1bmkxRTQ0dW5pMUU0NnVuaTFFNDh1bmkwMTRFT21hY3Jvbk9odW5nYXJ1bWxhdXR1bmkwMUQxdW5pMUVEMHVuaTFFRDh1bmkxRUQydW5pMUVENHVuaTFFRDZ1bmkxRUNDdW5pMUVDRU9ob3JudW5pMUVEQXVuaTFFRTJ1bmkxRURDdW5pMUVERXVuaTFFRTBSYWN1dGVSY2Fyb251bmkwMTU2dW5pMUU1QXVuaTFFNUN1bmkxRTVFU2FjdXRldW5pMDE1RXVuaTAyMThTY2lyY3VtZmxleHVuaTFFNjB1bmkxRTYydW5pMUU5RVRjYXJvbnVuaTAxNjJ1bmkwMjFBdW5pMUU2Q3VuaTFFNkVVbWFjcm9uVXJpbmdVaHVuZ2FydW1sYXV0VW9nb25la1VicmV2ZXVuaTAxRDN1bmkwMUQ3dW5pMDFEOXVuaTAxREJ1bmkwMUQ1dW5pMUVFNHVuaTFFRTZVaG9ybnVuaTFFRTh1bmkxRUYwdW5pMUVFQXVuaTFFRUN1bmkxRUVFVXRpbGRlV2FjdXRlV2NpcmN1bWZsZXhXZGllcmVzaXNXZ3JhdmVZY2lyY3VtZmxleHVuaTFFOEV1bmkxRUY0WWdyYXZldW5pMUVGNnVuaTFFRjhaYWN1dGVaZG90YWNjZW50dW5pMUU5MnVuaTAxOEZhbWFjcm9uYWJyZXZldW5pMUVBRnVuaTFFQjd1bmkxRUIxdW5pMUVCM3VuaTFFQjV1bmkwMUNFdW5pMUVBNXVuaTFFQUR1bmkxRUE3dW5pMUVBOXVuaTFFQUJ1bmkxRUExdW5pMUVBM2FvZ29uZWtjYWN1dGVjY2Fyb25jY2lyY3VtZmxleGNkb3RhY2NlbnRkY2Fyb25kY3JvYXR1bmkxRTBEdW5pMUUwRmVjYXJvbmVtYWNyb25lZG90YWNjZW50ZW9nb25la2VicmV2ZXVuaTFFQkZ1bmkxRUM3dW5pMUVDMXVuaTFFQzN1bmkxRUM1dW5pMUVCOXVuaTFFQkJ1bmkxRUJEZ2JyZXZlZ2RvdGFjY2VudHVuaTAxMjNnY2Fyb25nY2lyY3VtZmxleHVuaTFFMjF1bmkwMDY3MDMwM2hiYXJ1bmkxRTJCaGNpcmN1bWZsZXh1bmkxRTI1aW1hY3JvbmlvZ29uZWtpLnRya3VuaTAxRDB1bmkxRUNCdW5pMUVDOWl0aWxkZXVuaTAyMzdqY2lyY3VtZmxleHVuaTAxMzdrZ3JlZW5sYW5kaWNsYWN1dGVsY2Fyb251bmkwMTNDbGRvdHVuaTFFMzd1bmkxRTM5dW5pMUUzQnVuaTFFM0Z1bmkxRTQzbmFjdXRlbmNhcm9udW5pMDFGOXVuaTAxNDZ1bmkxRTQ1bmFwb3N0cm9waGV1bmkxRTQ3dW5pMUU0OXVuaTAxNEZvbWFjcm9ub2h1bmdhcnVtbGF1dHVuaTAxRDJ1bmkxRUQxdW5pMUVEOXVuaTFFRDN1bmkxRUQ1dW5pMUVEN3VuaTFFQ0R1bmkxRUNGb2hvcm51bmkxRURCdW5pMUVFM3VuaTFFRER1bmkxRURGdW5pMUVFMXJhY3V0ZXVuaTAxNTdyY2Fyb251bmkxRTVCdW5pMUU1RHVuaTFFNUZzYWN1dGV1bmkwMTVGdW5pMDIxOXNjaXJjdW1mbGV4dW5pMUU2MXVuaTFFNjNsb25nc3RjYXJvbnVuaTAxNjN1bmkwMjFCdW5pMUU5N3VuaTFFNkR1bmkxRTZGdW1hY3JvbnVyaW5ndWh1bmdhcnVtbGF1dHVvZ29uZWt1YnJldmV1bmkwMUQ0dW5pMDFEOHVuaTAxREF1bmkwMURDdW5pMDFENnVuaTFFRTV1bmkxRUU3dWhvcm51bmkxRUU5dW5pMUVGMXVuaTFFRUJ1bmkxRUVEdW5pMUVFRnV0aWxkZXdhY3V0ZXdjaXJjdW1mbGV4d2RpZXJlc2lzd2dyYXZleWNpcmN1bWZsZXh1bmkxRThGdW5pMUVGNXlncmF2ZXVuaTFFRjd1bmkxRUY5emFjdXRlemRvdGFjY2VudHVuaTFFOTN1bmkwMjU5dW5pMDI1MXVuaTAyNjFmX2lmX2xmX3RmX2ZmX2ZfaWZfZl9semVyby5zbGFzaHplcm8ubGZvbmUubGZ0d28ubGZ0aHJlZS5sZmZvdXIubGZmaXZlLmxmc2l4Lmxmc2V2ZW4ubGZlaWdodC5sZm5pbmUubGZ6ZXJvLmxmc2xhc2h6ZXJvLnRvc2ZvbmUudG9zZnR3by50b3NmdGhyZWUudG9zZmZvdXIudG9zZmZpdmUudG9zZnNpeC50b3Nmc2V2ZW4udG9zZmVpZ2h0LnRvc2ZuaW5lLnRvc2Z6ZXJvLm9zZm9uZS5vc2Z0d28ub3NmdGhyZWUub3NmZm91ci5vc2ZmaXZlLm9zZnNpeC5vc2ZzZXZlbi5vc2ZlaWdodC5vc2ZuaW5lLm9zZnplcm8uY2Fwb25lLmNhcHR3by5jYXB0aHJlZS5jYXBmb3VyLmNhcGZpdmUuY2Fwc2l4LmNhcHNldmVuLmNhcGVpZ2h0LmNhcG5pbmUuY2FwZXhjbGFtZG93bi5jYXBxdWVzdGlvbmRvd24uY2FwdW5pMDBBRHVuaTIwMTB1bmkyMDE1Z3VpbHNpbmdsbGVmdC5jYXBndWlsc2luZ2xyaWdodC5jYXBndWlsbGVtb3RsZWZ0LmNhcGd1aWxsZW1vdHJpZ2h0LmNhcGh5cGhlbi5jYXBzZnRoeXBoZW4uY2FwZW5kYXNoLmNhcGVtZGFzaC5jYXBob3Jpem9udGFsYmFyLmNhcHBhcmVubGVmdC5jYXBwYXJlbnJpZ2h0LmNhcGJyYWNrZXRsZWZ0LmNhcGJyYWNrZXRyaWdodC5jYXBicmFjZWxlZnQuY2FwYnJhY2VyaWdodC5jYXB1bmkyMTE3dW5pMjEyMGF0LmNhcHplcm8uc3Vwc29uZS5zdXBzdHdvLnN1cHN0aHJlZS5zdXBzZm91ci5zdXBzZml2ZS5zdXBzc2l4LnN1cHNzZXZlbi5zdXBzZWlnaHQuc3Vwc25pbmUuc3Vwc3BhcmVubGVmdC5zdXBzcGFyZW5yaWdodC5zdXBzYnJhY2tldGxlZnQuc3Vwc2JyYWNrZXRyaWdodC5zdXBzcGVyaW9kLnN1cHNjb21tYS5zdXBzY29sb24uc3Vwc2h5cGhlbi5zdXBzZW5kYXNoLnN1cHNlbWRhc2guc3Vwc3plcm8uc3Vic29uZS5zdWJzdHdvLnN1YnN0aHJlZS5zdWJzZm91ci5zdWJzZml2ZS5zdWJzc2l4LnN1YnNzZXZlbi5zdWJzZWlnaHQuc3Vic25pbmUuc3Vic3BhcmVubGVmdC5zdWJzcGFyZW5yaWdodC5zdWJzYnJhY2tldGxlZnQuc3Vic2JyYWNrZXRyaWdodC5zdWJzcGVyaW9kLnN1YnNjb21tYS5zdWJzemVyby5kbm9tb25lLmRub210d28uZG5vbXRocmVlLmRub21mb3VyLmRub21maXZlLmRub21zaXguZG5vbXNldmVuLmRub21laWdodC5kbm9tbmluZS5kbm9tcGFyZW5sZWZ0LmRub21wYXJlbnJpZ2h0LmRub21icmFja2V0bGVmdC5kbm9tYnJhY2tldHJpZ2h0LmRub21wZXJpb2QuZG5vbWNvbW1hLmRub216ZXJvLm51bXJvbmUubnVtcnR3by5udW1ydGhyZWUubnVtcmZvdXIubnVtcmZpdmUubnVtcnNpeC5udW1yc2V2ZW4ubnVtcmVpZ2h0Lm51bXJuaW5lLm51bXJwYXJlbmxlZnQubnVtcnBhcmVucmlnaHQubnVtcmJyYWNrZXRsZWZ0Lm51bXJicmFja2V0cmlnaHQubnVtcnBlcmlvZC5udW1yY29tbWEubnVtckEuc3Vwc0Iuc3Vwc0Muc3Vwc0Quc3Vwc0Uuc3Vwc0Yuc3Vwc0cuc3Vwc0guc3Vwc0kuc3Vwc0ouc3Vwc0suc3Vwc0wuc3Vwc00uc3Vwc04uc3Vwc08uc3Vwc1Auc3Vwc1Euc3Vwc1Iuc3Vwc1Muc3Vwc1Quc3Vwc1Uuc3Vwc1Yuc3Vwc1cuc3Vwc1guc3Vwc1kuc3Vwc1ouc3Vwc2Euc3Vwc2Iuc3Vwc2Muc3Vwc2Quc3Vwc2Uuc3Vwc2Yuc3Vwc2cuc3Vwc2guc3Vwc2kuc3Vwc2ouc3Vwc2suc3Vwc2wuc3Vwc20uc3Vwc24uc3Vwc28uc3Vwc3Auc3Vwc3Euc3Vwc3Iuc3Vwc3Muc3Vwc3Quc3Vwc3Uuc3Vwc3Yuc3Vwc3cuc3Vwc3guc3Vwc3kuc3Vwc3ouc3Vwc2VncmF2ZS5zdXBzZWFjdXRlLnN1cHN1bmkwMTkybGlyYXVuaTIwQTZwZXNldGF1bmkyMEE5ZG9uZ0V1cm91bmkyMEFFdW5pMjBCMXVuaTIwQjJ1bmkyMEI0dW5pMjBCNXVuaTIwQjl1bmkyMEJBdW5pMjBCOHVuaTIwQkR1bmkyMEJGdW5pMjIxNXNsYXNoLmZyYWN1bmkwMEEwdW5pMjAwN3NwYWNlLmZyYWN1bmkwMEEwLmZyYWN1bmkyMjE5bGVzc2VxdWFsZ3JlYXRlcmVxdWFsbm90ZXF1YWxhcHByb3hlcXVhbGluZmluaXR5dW5pMDBCNXBhcnRpYWxkaWZmaW50ZWdyYWxyYWRpY2FsdW5pMjIwNnVuaTIxMjZzdW1tYXRpb25wcm9kdWN0dW5pMjExM2VzdGltYXRlZHVuaTIxOTB1bmkyMTk2YXJyb3d1cHVuaTIxOTd1bmkyMTkydW5pMjE5OGFycm93ZG93bnVuaTIxOTl1bmkyNUEwdW5pMjVDNnVuaTI1Qzl1bmkyNzUydHJpYWd1cHVuaTI1QjN1bmkyNUI2dW5pMjVCN3RyaWFnZG51bmkyNUJEdW5pMjVDMHVuaTI1QzF1bmkyNjEwdW5pMjYxMXVuaTI3MTNtdXNpY2Fsbm90ZWxvemVuZ2V1bmkyMDMydW5pMjAzM3VuaTAyQkJ1bmkwMkJDdW5pMDJCRnVuaTAyQkV1bmkwMkM4dW5pMDJDOXVuaTAyQ0F1bmkwMkNCdW5pMDJDQ2Nhcm9uLmFsdGNvbW1hYmVsb3djbWIuYWx0dW5pMDMwMGdyYXZlY21iLmNhcHVuaTAzMDFhY3V0ZWNtYi5jYXB1bmkwMzAyY2lyY3VtZmxleGNtYi5jYXB1bmkwMzAzdGlsZGVjbWIuY2FwdW5pMDMwNG1hY3JvbmNtYi5jYXB1bmkwMzA2YnJldmVjbWIuY2FwdW5pMDMwN2RvdGFjY2VudGNtYi5jYXB1bmkwMzA4ZGllcmVzaXNjbWIuY2FwdW5pMDMwQXJpbmdjbWIuY2FwdW5pMDMwQmh1bmdhcnVtbGF1dGNtYi5jYXB1bmkwMzBDY2Fyb25jbWIuY2FwdW5pMDMyNnVuaTAzMjd1bmkwMzI4dW5pMDMyOXVuaTAzMkV1bmkwMzI0dW5pMDMyM3VuaTAzMDl1bmkwMzA5LmNhcHVuaTAzMUJ1bmkwMzMxdW5pMDMwODAzMDF1bmkwMzA4MDMwMS5jYXB1bmkwMzA4MDMwMHVuaTAzMDgwMzAwLmNhcHVuaTAzMDgwMzA0dW5pMDMwODAzMDQuY2FwdW5pMDMwODAzMEN1bmkwMzA4MDMwQy5jYXB1bmkwMzAyMDMwMXVuaTAzMDIwMzAxLmNhcHVuaTAzMDIwMzAwdW5pMDMwMjAzMDAuY2FwdW5pMDMwMjAzMDl1bmkwMzAyMDMwOS5jYXB1bmkwMzAyMDMwM3VuaTAzMDIwMzAzLmNhcHVuaTAzMDYwMzAxdW5pMDMwNjAzMDEuY2FwdW5pMDMwNjAzMDB1bmkwMzA2MDMwMC5jYXB1bmkwMzA2MDMwOXVuaTAzMDYwMzA5LmNhcHVuaTAzMDYwMzAzdW5pMDMwNjAzMDMuY2FwQWxwaGFCZXRhR2FtbWF1bmkwMzk0RXBzaWxvblpldGFFdGFUaGV0YUlvdGFLYXBwYUxhbWJkYU11TnVYaU9taWNyb25QaVJob1NpZ21hVGF1VXBzaWxvblBoaUNoaVBzaXVuaTAzQTlBbHBoYXRvbm9zRXBzaWxvbnRvbm9zRXRhdG9ub3NJb3RhdG9ub3NJb3RhZGllcmVzaXNPbWljcm9udG9ub3NVcHNpbG9udG9ub3NVcHNpbG9uZGllcmVzaXNPbWVnYXRvbm9zYWxwaGFiZXRhZ2FtbWFkZWx0YWVwc2lsb256ZXRhZXRhdGhldGFpb3Rha2FwcGFsYW1iZGF1bmkwM0JDbnV4aW9taWNyb25waXJob3NpZ21hdGF1dXBzaWxvbnBoaWNoaXBzaW9tZWdhdW5pMDNDMmFscGhhdG9ub3NlcHNpbG9udG9ub3NldGF0b25vc2lvdGF0b25vc2lvdGFkaWVyZXNpc29taWNyb250b25vc3Vwc2lsb250b25vc3Vwc2lsb25kaWVyZXNpc29tZWdhdG9ub3Npb3RhZGllcmVzaXN0b25vc3Vwc2lsb25kaWVyZXNpc3Rvbm9zdW5pMDNEN3VuaTAzRDl1bmkwM0RCdW5pMDNERHVuaTAzRTF1bmkwMzdFYW5vdGVsZWlhYW5vdGVsZWlhLmNhcHVuaTAzNzR1bmkwMzc1dG9ub3N0b25vcy5jYXBkaWVyZXNpc3Rvbm9zdW5pMDMwMS5ndW5pMDMwODAzMDEuZ3VuaTA0MTB1bmkwNDExdW5pMDQxMnVuaTA0MTN1bmkwNDE0dW5pMDQxNXVuaTA0MTZ1bmkwNDE3dW5pMDQxOHVuaTA0MTl1bmkwNDFBdW5pMDQxQnVuaTA0MUN1bmkwNDFEdW5pMDQxRXVuaTA0MUZ1bmkwNDIwdW5pMDQyMXVuaTA0MjJ1bmkwNDIzdW5pMDQyNHVuaTA0MjV1bmkwNDI2dW5pMDQyN3VuaTA0Mjh1bmkwNDI5dW5pMDQyQXVuaTA0MkJ1bmkwNDJDdW5pMDQyRHVuaTA0MkV1bmkwNDJGdW5pMDQwMHVuaTA0MDF1bmkwNDAydW5pMDQwM3VuaTA0MDR1bmkwNDA1dW5pMDQwNnVuaTA0MDd1bmkwNDA4dW5pMDQwOXVuaTA0MEF1bmkwNDBCdW5pMDQwQ3VuaTA0MER1bmkwNDBFdW5pMDQwRnVuaTA0NjJ1bmkwNDcydW5pMDQ3NHVuaTA0OTB1bmkwNDkydW5pMDQ5NnVuaTA0OTh1bmkwNDlBdW5pMDRBMHVuaTA0QTJ1bmkwNEFBdW5pMDRBRXVuaTA0QjB1bmkwNEIydW5pMDRCNnVuaTA0QkF1bmkwNEMwdW5pMDRDMXVuaTA0RDB1bmkwNEQ0dW5pMDRENnVuaTA0RDh1bmkwNEUydW5pMDRFNnVuaTA0RTh1bmkwNEVFdW5pMDRGMnVuaTA0MzB1bmkwNDMxdW5pMDQzMnVuaTA0MzN1bmkwNDM0dW5pMDQzNXVuaTA0MzZ1bmkwNDM3dW5pMDQzOHVuaTA0Mzl1bmkwNDNBdW5pMDQzQnVuaTA0M0N1bmkwNDNEdW5pMDQzRXVuaTA0M0Z1bmkwNDQwdW5pMDQ0MXVuaTA0NDJ1bmkwNDQzdW5pMDQ0NHVuaTA0NDV1bmkwNDQ2dW5pMDQ0N3VuaTA0NDh1bmkwNDQ5dW5pMDQ0QXVuaTA0NEJ1bmkwNDRDdW5pMDQ0RHVuaTA0NEV1bmkwNDRGdW5pMDQ1MHVuaTA0NTF1bmkwNDUydW5pMDQ1M3VuaTA0NTR1bmkwNDU1dW5pMDQ1NnVuaTA0NTd1bmkwNDU4dW5pMDQ1OXVuaTA0NUF1bmkwNDVCdW5pMDQ1Q3VuaTA0NUR1bmkwNDVFdW5pMDQ1RnVuaTA0NjN1bmkwNDczdW5pMDQ3NXVuaTA0OTF1bmkwNDkzdW5pMDQ5N3VuaTA0OTl1bmkwNDlCdW5pMDRBMXVuaTA0QTN1bmkwNEFCdW5pMDRBRnVuaTA0QjF1bmkwNEIzdW5pMDRCN3VuaTA0QkJ1bmkwNEMydW5pMDRDRnVuaTA0RDF1bmkwNEQ1dW5pMDREN3VuaTA0RDl1bmkwNEUzdW5pMDRFN3VuaTA0RTl1bmkwNEVGdW5pMDRGM3VuaTA0MzEuc3JidW5pMjExNmJyZXZlY21iLmN5cmJyZXZlY21iLmN5cmNhcHR1cmtpY2RzY2NtYnVuaTJFM0F1bmkyRTNCdTFGMTJGdTFGMTZBdTFGMTZCZXhjbGFtZGJsdW5pMjA0N3VuaTIwNDh1bmkyMDQ5QS5zY0Iuc2NDLnNjRC5zY0Uuc2NGLnNjRy5zY0guc2NJLnNjSi5zY0suc2NMLnNjTS5zY04uc2NPLnNjUC5zY1Euc2NSLnNjUy5zY1Quc2NVLnNjVi5zY1cuc2NYLnNjWS5zY1ouc2NBZ3JhdmUuc2NBYWN1dGUuc2NBY2lyY3VtZmxleC5zY0F0aWxkZS5zY0FkaWVyZXNpcy5zY0FtYWNyb24uc2NBYnJldmUuc2N1bmkxRUFFLnNjdW5pMUVCNi5zY3VuaTFFQjAuc2N1bmkxRUIyLnNjdW5pMUVCNC5zY3VuaTAxQ0Quc2N1bmkxRUE0LnNjdW5pMUVBQy5zY3VuaTFFQTYuc2N1bmkxRUE4LnNjdW5pMUVBQS5zY3VuaTFFQTAuc2N1bmkxRUEyLnNjQXJpbmcuc2NBb2dvbmVrLnNjQUUuc2NDY2VkaWxsYS5zY0NhY3V0ZS5zY0NjYXJvbi5zY0NjaXJjdW1mbGV4LnNjQ2RvdGFjY2VudC5zY0RjYXJvbi5zY0Rjcm9hdC5zY3VuaTFFMEMuc2N1bmkxRTBFLnNjRWdyYXZlLnNjRWFjdXRlLnNjRWNpcmN1bWZsZXguc2NFY2Fyb24uc2NFZGllcmVzaXMuc2NFbWFjcm9uLnNjRWRvdGFjY2VudC5zY0VvZ29uZWsuc2NFYnJldmUuc2N1bmkxRUJFLnNjdW5pMUVDNi5zY3VuaTFFQzAuc2N1bmkxRUMyLnNjdW5pMUVDNC5zY3VuaTFFQjguc2N1bmkxRUJBLnNjdW5pMUVCQy5zY0dicmV2ZS5zY0dkb3RhY2NlbnQuc2N1bmkwMTIyLnNjR2Nhcm9uLnNjR2NpcmN1bWZsZXguc2N1bmkxRTlFLnNjdW5pMUUyMC5zY3VuaTAwNDcwMzAzLnNjSGJhci5zY3VuaTFFMkEuc2NIY2lyY3VtZmxleC5zY3VuaTFFMjQuc2NJZ3JhdmUuc2NJYWN1dGUuc2NJY2lyY3VtZmxleC5zY0lkaWVyZXNpcy5zY0ltYWNyb24uc2NJZG90YWNjZW50LnNjSW9nb25lay5zY3VuaTAxQ0Yuc2N1bmkxRUNBLnNjdW5pMUVDOC5zY0l0aWxkZS5zY0pjaXJjdW1mbGV4LnNjdW5pMDEzNi5zY0xhY3V0ZS5zY0xjYXJvbi5zY3VuaTAxM0Iuc2NMZG90LnNjdW5pMUUzNi5zY3VuaTFFMzguc2N1bmkxRTNBLnNjTHNsYXNoLnNjdW5pMUUzRS5zY3VuaTFFNDIuc2NOYWN1dGUuc2N1bmkwMUY4LnNjTmNhcm9uLnNjTnRpbGRlLnNjdW5pMDE0NS5zY3VuaTFFNDQuc2N1bmkxRTQ2LnNjdW5pMUU0OC5zY09ncmF2ZS5zY09hY3V0ZS5zY3VuaTAxNEUuc2NPY2lyY3VtZmxleC5zY090aWxkZS5zY09kaWVyZXNpcy5zY09tYWNyb24uc2NPaHVuZ2FydW1sYXV0LnNjdW5pMDFEMS5zY3VuaTFFRDAuc2N1bmkxRUQ4LnNjdW5pMUVEMi5zY3VuaTFFRDQuc2N1bmkxRUQ2LnNjdW5pMUVDQy5zY3VuaTFFQ0Uuc2NPaG9ybi5zY3VuaTFFREEuc2N1bmkxRUUyLnNjdW5pMUVEQy5zY3VuaTFFREUuc2N1bmkxRUUwLnNjT3NsYXNoLnNjT0Uuc2NSYWN1dGUuc2NSY2Fyb24uc2N1bmkwMTU2LnNjdW5pMUU1QS5zY3VuaTFFNUMuc2N1bmkxRTVFLnNjU2FjdXRlLnNjU2Nhcm9uLnNjdW5pMDE1RS5zY3VuaTAyMTguc2NTY2lyY3VtZmxleC5zY3VuaTFFNjAuc2N1bmkxRTYyLnNjVGNhcm9uLnNjdW5pMDE2Mi5zY3VuaTAyMUEuc2N1bmkxRTk3LnNjdW5pMUU2Qy5zY3VuaTFFNkUuc2NVZ3JhdmUuc2NVYWN1dGUuc2NVY2lyY3VtZmxleC5zY1VkaWVyZXNpcy5zY1VtYWNyb24uc2NVcmluZy5zY1VodW5nYXJ1bWxhdXQuc2NVb2dvbmVrLnNjVWJyZXZlLnNjdW5pMDFEMy5zY3VuaTAxRDcuc2N1bmkwMUQ5LnNjdW5pMDFEQi5zY3VuaTAxRDUuc2N1bmkxRUU0LnNjdW5pMUVFNi5zY1Vob3JuLnNjdW5pMUVFOC5zY3VuaTFFRjAuc2N1bmkxRUVBLnNjdW5pMUVFQy5zY3VuaTFFRUUuc2NVdGlsZGUuc2NXYWN1dGUuc2NXY2lyY3VtZmxleC5zY1dkaWVyZXNpcy5zY1dncmF2ZS5zY1lhY3V0ZS5zY1lkaWVyZXNpcy5zY1ljaXJjdW1mbGV4LnNjdW5pMUU4RS5zY3VuaTFFRjQuc2NZZ3JhdmUuc2N1bmkxRUY2LnNjdW5pMUVGOC5zY1phY3V0ZS5zY1pjYXJvbi5zY1pkb3RhY2NlbnQuc2N1bmkxRTkyLnNjRXRoLnNjVGhvcm4uc2N1bmkwMThGLnNjQWxwaGEuc2NCZXRhLnNjR2FtbWEuc2NEZWx0YS5zY0Vwc2lsb24uc2NaZXRhLnNjRXRhLnNjVGhldGEuc2NJb3RhLnNjS2FwcGEuc2NMYW1iZGEuc2NNdS5zY051LnNjWGkuc2NPbWljcm9uLnNjUGkuc2NSaG8uc2NTaWdtYS5zY1RhdS5zY1Vwc2lsb24uc2NQaGkuc2NDaGkuc2NQc2kuc2NPbWVnYS5zY0lvdGFkaWVyZXNpcy5zY1Vwc2lsb25kaWVyZXNpcy5zY2dlcm1hbmRibHMuc2NmX2kuc2NmX2wuc2NhbXBlcnNhbmQuc2N6ZXJvLnNjb25lLnNjdHdvLnNjdGhyZWUuc2Nmb3VyLnNjZml2ZS5zY3NpeC5zY3NldmVuLnNjZWlnaHQuc2NuaW5lLnNjZXhjbGFtLnNjZXhjbGFtZG93bi5zY3F1ZXN0aW9uLnNjcXVlc3Rpb25kb3duLnNjcXVvdGVzaW5nbGUuc2NxdW90ZWRibC5zY3F1b3RlbGVmdC5zY3F1b3RlcmlnaHQuc2NxdW90ZWRibGxlZnQuc2NxdW90ZWRibHJpZ2h0LnNjaHlwaGVuLnNjZW5kYXNoLnNjZW1kYXNoLnNjcGFyZW5sZWZ0LnNjcGFyZW5yaWdodC5zY2JyYWNrZXRsZWZ0LnNjYnJhY2tldHJpZ2h0LnNjYnJhY2VsZWZ0LnNjYnJhY2VyaWdodC5zY3VuaTA0MTAuc2N1bmkwNDExLnNjdW5pMDQxMi5zY3VuaTA0MTMuc2N1bmkwNDE0LnNjdW5pMDQxNS5zY3VuaTA0MTYuc2N1bmkwNDE3LnNjdW5pMDQxOC5zY3VuaTA0MTkuc2N1bmkwNDFBLnNjdW5pMDQxQi5zY3VuaTA0MUMuc2N1bmkwNDFELnNjdW5pMDQxRS5zY3VuaTA0MUYuc2N1bmkwNDIwLnNjdW5pMDQyMS5zY3VuaTA0MjIuc2N1bmkwNDIzLnNjdW5pMDQyNC5zY3VuaTA0MjUuc2N1bmkwNDI2LnNjdW5pMDQyNy5zY3VuaTA0Mjguc2N1bmkwNDI5LnNjdW5pMDQyQS5zY3VuaTA0MkIuc2N1bmkwNDJDLnNjdW5pMDQyRC5zY3VuaTA0MkUuc2N1bmkwNDJGLnNjdW5pMDQwMC5zY3VuaTA0MDEuc2N1bmkwNDAyLnNjdW5pMDQwMy5zY3VuaTA0MDQuc2N1bmkwNDA1LnNjdW5pMDQwNi5zY3VuaTA0MDcuc2N1bmkwNDA4LnNjdW5pMDQwOS5zY3VuaTA0MEEuc2N1bmkwNDBCLnNjdW5pMDQwQy5zY3VuaTA0MEQuc2N1bmkwNDBFLnNjdW5pMDQwRi5zY3VuaTA0NjIuc2N1bmkwNDcyLnNjdW5pMDQ3NC5zY3VuaTA0OTAuc2N1bmkwNDkyLnNjdW5pMDQ5Ni5zY3VuaTA0OTguc2N1bmkwNDlBLnNjdW5pMDRBMC5zY3VuaTA0QTIuc2N1bmkwNEFBLnNjdW5pMDRBRS5zY3VuaTA0QjAuc2N1bmkwNEIyLnNjdW5pMDRCNi5zY3VuaTA0QkEuc2N1bmkwNEMwLnNjdW5pMDRDMS5zY3VuaTA0RDAuc2N1bmkwNEQ0LnNjdW5pMDRENi5zY3VuaTA0RDguc2N1bmkwNEUyLnNjdW5pMDRFNi5zY3VuaTA0RTguc2N1bmkwNEVFLnNjdW5pMDRGMi5z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pnqYC3MabFN1JYEeDgEAAQAAIhkAQhkArgAAqwEAsAAArQABhw4ArwABlgAAigAAsQABlwcAtQAAsgEBnwAAtAABoBYAuQAAtgIBtw8AjAABxwQAugABzAMAvgAAuwAB0AAAvAAAvwAAvQAB0Q8AjQEB4QYAwAAB6AoAxAAAwQIB8xYAxQECCgYAxwACEQEAmgAAnQACEwAAywAAyAEAzQAAygACFA4AzAACIwAAkAAAzgACJAcA0gAAzwECLAAA0QACLRYA1gAA0wICRAYAkQACSwoAkgACVgQA1wACWwQA2wAA2AACYAAA2QAA3AAA2gACYQ8AkwECcQYA3QACeAUAlQACfgUA4QAA3gIChBYA4gECmwYA5AACogEApwAAogACpAgABwAAEQkCrSkADwAADQAAGwEAeQAAAgAAYAAC1wAAIAAAewAC2AAAaAAAAwAAQQAACAAAaQAAdwAAdQEAawEAagAAeAAADgAC2QEAbwAAiQABOgAC2wAAcgAAdAAAQAAACQEAPAAAPgAAXAAAXgAC3A4AEAAAXQAAPQAAoAAACwAAcAEAZgAAcwAAqgAC6wAApQAAmQAC7AAAIQAC7QAABAAC7kMAiwAAjwADMjUAoQAAZwAABQAAYQEAZAADaAABLAADaQ8AYwADeQUABgAAegAAngAAmwAAowABRAEBQAMADAAApgAAqAAAnwADfwAAHgAAHQAAHwADgAEAnAAAPwADggAAXwADgwAAlwADhC4AfAIAiAAAfwAAgwAAgAEAhAAAhgAAggAAhQADswEAhwADtf8EtSwA7QAE4v8F4lQFlwMAAAEAAE0AAFAAAFgAAFoAAGQAAJgAAJsAAP4AARMAAUUAAVEAAVQAAaQAAcQAAdEAAdQAAecAAekAAmgAAoQAApAAArQAArcAAwYAAwkAA20AA3AAA3MAA4oAA/0ABAYABDMABD4ABHgABK8ABLIABLQABN0ABPwABRUABTAABUcABVQABYMABfcABhMABiIABkQABkcABoMABokABosABpYABpoABqcABrUABsIABwgABzcAB1MAB2oAB6oAB+AACCQACE4ACJQACKsACLgACO0ACPsACRkACVQACYMACaEACdkAChUACmwACuIACvEACwQACxMACykAC3EAC3MAC7MAC/EAC/oADAMADAwADFoADLIADL4ADRQA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ufjAFfctvfstBg77e/jAvQG5960DufjAFfetvfutBg5k+MC9Abn4bQO5+MAV+G29/G0GDvt++3H3cQp9WwoO+377aPgsCvcztx33rR0O+377aPdvCvto+DoKE9BtHRPgLjIFDvt++3H3SQqbSwoT8E8KDvt++wPEAfdezAOr+wP3Fgr7fvtx9wIK+3FqHft++3H3cR37cYEK+373Bvf1Hfti9y8d+377cfdKHfsPUh37flL3hR37cYMK+/T71ffYHWPUCvv0+9X3wQpj1B378PvL98AK+8v3MB378PvL96wd+8v3Lh38CPtx8ff4HftxFfcPCvwU++P32gr7UbcK+36C93EK91pbCg77fov4LAr4B7cd960dDvt+i/dvChb3cgoT0G0dE+AuMgUO+36C90kK93hLChPwTwoO+36L9zJSxBL3XswTYKvwFfc+BhOgJswHE2Dwy8RL94lcB/c5Cvt+gvcCCoJqHft+gvdxHYKBCvt+oHb32vf1HZH3Lx37foL3Sh3kUh37fpd29zj3hR2Cgwr79PsB99gd90DUCvv0+wH3wQr3QNQd+/Ao98AKKPcwHfvwKPesHSj3Lh38CILx9/gdghX3Dwr8FPsP99oKorcK+373iPdxCvhXWwoO+373kaj4BHeldxL3MNITsNr5BLcdE9D3rR0O+373kfdvCveR+DoKE9BtHRPgLjIFDvt+94j3SQr3MAoT8E8KDvt+9/bE94l3AfdezAOr9/b3Fgr7fveI9wIK94hqHft+94j3cR33iIEK+3741/f1HfeX9y8d+373iPdKHffqUh37fvgs94Ud94iDCvv09yT32B34PdQK+/T3JPfBCvg91B378Pcu98AK9y73MB378Pcu96wd9y73Lh38CPeI8ff4HfeIFfcPCvwU9xb32gr3qLcKmR33Hgr7Nvg9rWn/ACKAAP//3YAAr2f3uB3/AFiAAK4Sk/co6PdKEy6T+D0V9yirBlKTqOAF9ygGE06qNFGEBWz3SgcTjqoHW5H7IPgRBV8GEx77GvwNUoIF95P3FBX7DgbH90EFDvtL95cd/wClgACgdqz/AJSAAPdgHRLk0/ce0FjVE5aAq/g9FfdIBvcYusrBHxOmgMNmsjGVHhOnANeZp7K3GsRatS0e+1UGE1qA9x0KE5cA9z/38xXLq3VaV2txQB9s9ykGrPtKFROWgOGw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AXMAIwFzACwBcwAsAXMALAFzACwBcwAsAXMABQF2/9UCmwAsAlQALAJUACwCVAAsAlQALAJUACwCVAAlAlQALAJUACwDhgAnA4YAJwLfACcC3wAnAt8AJwLfACcC3wAnAt8AJwLfACcC3wAnAsMALwLDAC8CwwAvAsMALwLDAC8CwwAvAsMALwLDAC8CwwAvAsMALwLDAC8CwwAvAsMALwLDAC8CwwAvAsMALwLDAC8CwwAvAsMALwLDAC8CwwAvAsMALwLDAC8DqgAvAosALAKLACwCiwAsAosALAKLACwCiwAsAgAAKAIAACgCAAAoAgAAKAIAACgCAAAoAgAAKAKyACwCXAAUAlwAFAJcABQCXAAUAlwAFALXACcC1wAnAtcAJwLXACcC1wAnAtcAJwLXACcC1wAnAtcAJwLXACcC1wAnAtcAJwLXACcC1wAnAtcAJwLXACcC1wAnAtcAJwLXACcC1wAnAtcAJwLXACcC1wAnA8IADwPCAA8DwgAPA8IADwJ5AA8CeQAPAnkADwJ5AA8CeQAPAnkADwJ5AA8CeQAPAicAFAInABQCJwAUAicAFALGACwCYwAsApEALwH9AC0B/QAtAf0ALQH9AC0B/QAtAf0ALQH9AC0B/QAtAf0ALQH9AC0B/QAtAf0ALQH9AC0B/QAtAf0ALQH9ACUB/QAtAf0ALQH9AC0B/QAtAf0ALQH9AC0DDgAtAegAKgHoACoB6AAqAegAKgHoACoCWQAtAjcALQI3AC0CNwAtAf4ALQH+AC0B/gAtAf4ALQH+AC0B/gAtAf4ALQH+AC0B/gAtAf4ALQH+AC0B/gAtAf4ALQH+AC0B/gAtAf4ALQH+AC0CBgAkAgYAJAIGACQCBgAkAgYAJAIGACQCBgAkAlkAGQJZABkCWQAZAlkAGQEqABABKgAdASoAAwEq/+wBKgALASoAHQEqAB0BKgAKASoAHQEqAB0BKv/yASoAHQEV/60BFf+tAiMAGQItACIBKgAZAUIAGQEqABkBawAZASoAGQEqAAUBKgASASoAGQOFACIDhQAiAl4AIgJeACICXgAiAl4AIgJeACICXgAiAwQAEgJeACICXgAiAiUALQIlAC0CJQAtAiUALQIlAC0CJQAtAiUALQIlAC0CJQAtAiUALQIlAC0CJQAtAiUALQIlAC0CJQAtAiUALQIlAC0CJQAtAiUALQIlAC0CJQAtAiUALQIlAC0DZAAtAacAIgGnACIBpwAiAacAIgGnACIBpwAgAbIALwGyAC8BsgAvAbIALwGyAC8BsgAvAbIALwFYABkCUAAZAUUACQFFAAkBRQAJAUX/9AFFAAkBRQAJAkcAGQJHABkCRwAZAkcAGQJHABkCRwAZAkcAGQJHABkCRwAZAkcAGQJHABkCRwAZAkcAGQJHABkCRwAZAkcAGQJHABkCRwAZAkcAGQJHABkCRwAZAkcAGQJHABkC/AAAAvwAAAL8AAAC/AAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAByAAdAcgAHQHIAB0ByAAdAiIALQIqAAYCBwAvAi0ALQIwAC0CaQAiAmQAIgKEACICkgAiA5gAIgOTACIC0AAbAfQAKQH0AEoB9AAsAfQALAH0ABgB9AAmAfQAKAH0ADMB9AAsAfQAHQH0ACQB9gAnAaoAPwH8ADMB9wAkAfEAHQH7ACkB/QAzAd8AHAH9ADECCAAuAfYAJAH0ACEB9ABJAfQAKwH0ACsB9AAYAfQAJgH0ACgB9AAuAfQALQH0ACMCJgAjAbQAPwH8ADQB9wAkAfEAHQH7ACkB/QAzAd8AHAH9ADECCAAuAfQAKAH0AEoB9AAsAfQALAH0ABgB9AAmAfQAJwH0ADIB9AAsAfQAHQEsAE8BLAAGASwATwEsAAYDhABPASEAUAEhAFABIQBQAaAAQgGgAEIBoABCALcAKAFjACgA1AAlANQAEgGfACUBnwASANQAEgGfABIBHQAeAR0AGgHnAB4B5wAaATgAKAE4ACgBOAAoAgAAKAMsACgB9AAoAywAKAEsAE8BMQAqAgAAKAFTAFABUwAZAUAAZAFAAB0BWAAoAVgAHgEdAB4BHQAaAecAHgHnABoBOAAoATgAKAIAACgDLAAoAywAKAFTAFABUwAZAUAAZAFAAB0BWAAoAVgAHgFKAAIA+wBgAUoAAgD7AGABtwAUAf8AKAH/ACgB6wAtAlYAGQLzAB4C8wAeAcsAHgLSAAwCrQAeA0MAIwNDACMCDgAZAXIALQFyAEIBcgAwAXIALQFyACABcgAvAXIAMQFyADgBcgAxAXIAKQD8ADUA/AAlAQAAVgEAACgA6ABDANwAIwDoAEMA9QAuAXUALgI1AC4BcgAtAXIAQgFyADABcgAtAXIAIAFyAC8BcgAxAXIAOAFyADEBcgApAPwANQD8ACUBAABWAQAAKADoAEMA3AAjAXIALQFyAEIBcgAwAXIALQFyACABcgAvAXIAMQFyADgBcgAxAXIAKQD8ADUA/AAlAQAAVgEAACgA6ABDANwAIwFyAC0BcgBCAXIAMAFyAC0BcgAgAXIALwFyADEBcgA4AXIAMQFyACkA/AA1APwAJQEAAFYBAAAoAOgAQwDcACMBXwAcAXkAHAG6AAgBpQAgAaIAIgHWACABkAAgAYEAIAHDACICBwAgAPsAIAD//+EBvgAgAYsAIAJTABoB5gAdAdQAIgGLACAB1AAiAbQAIAFZAB0BlQARAeMAHQG+AA0CfQANAbAACwGjAA0BcQARAV8AHAGNABABTAAeAYYAHQFfAB4A5wAWAWUAEwGcABAAzQAVAMH/wQF2ABAAzAAQAmkAFwGgABcBeQAcAZEAFwGAAB4BJQAXAS0AIQDiAAcBkQASAV0AAAIPAAABXgAHAVz//QE1ABEBXwAeAV8AHgFIACUB9gAdAfQAMwH0ACsB9AAjAfT/9QH0/+gB9AAUAfQAIwH0AAAB9AAKAfT/9AH0ACUB9AALAfQABwH0AAoB9AAhAfQAFwH0ADIB9AAwAfQAGgH0AAcB9AAUAfQAGwCM/04AjP9OAIz/TgDpAAAB9AAAAIUAAACFAAADXQBFBKwARQNdAEMDXQA7A10ATgNdAEEDXQA9A10AQANdADwDXQA/A10AVQITAB0CEwAdAhMAKwITAB0BLABPAhMAHQITADkCEwA5AhMAHQITAB0CEwAdAhMAWAITAB0CEwAxAhMAMQITABgDEQAoAjkATwISACgBZ/+wAi4AKwJ+ABkC1wAmAjEAFAMGACgB0wAfAyAALgKUABQClABnApQAJQKUAFUClAAUApQAVQKUACUClABnAtAANwLsABQBvgAYA3UANwJGABoCRgAaAkYAUgJGAFICRgAaAkYAGgJGACoCRgAqAyAANwMgADcCXAA7AfkAIgJGAFIA+QBBAbAAQQDUACUA1AASAKcAGgCnABoAdAAWAZAARQGQAI0BkABMAHQAFgGQAEsBkACMAZAAMwGQAD0BkAAnAZAAJAGQAEUBkAAxAZAAXwGQAEUBkACFAZAAaQAZ/+8AAP/CAZAAYgAA/4IAAP+BAAD/xQAA/70AAP9rAAD/bAAA/10AAP9MAAD/fQAA/2kAAP9pAAD/cAAA/70AAP+9AAD/XAAA/1YAAP+XAAD/oAAA/5AAAP+QAAD/dQAA/3UAAP+tAAD/vQAA/58AAP/cAAD/aQAA/1wAAP+9AAD/xgAA/8YAAP/2AAD/fQAA/2IAAP9WAAD/YgAA/1YAAP9cAAD/VgAA/1wAAP9WAAD/bAAA/2wAAP8kAAD/EAAA/2wAAP9sAAD/XQAA/10AAP9wAAD/cAAA/3AAAP9wAAD/cAAA/3AAAP9dAAD/XQKYAAUCdQAsAjAALAJ+ABkCWwAsAicAFAMVACwCwwAvAXMALAKbACwClwAFA4YAJwLfACcCSQAjAsMALwMBACwCTQAsAh0AFAJcABQCeQAPAs0AJAKIAAoDAgAJAtcAJgKuABsCxv/3A37/9wHd//cBcwAQAwf/9wMB//cCeQAPAxL/8wIuACcCNwBPAesAAAIHACcBogAoAaQALQImABcB/wAxAR8AYgISABcCFQAUAjkATwHrAAABtgAoAggAJwJRABMCHwBFAlMAJwHsABMCHgAXArwAJwHoAAUC1AAXAt0AJwHJACwCLgAnAaIAKAImABcBHwBiAR//6wIIACcCHgAXAh4AFwLdACcBH//zAh4AFwKCAA8CBAAnAbsAJgGdAE8CQwAqATsACwEsAE8BLABPAPkAQQD5AEYBkAClAEP/4wGQABUAAP/dAAD/TQKYAAUCagAsAnUALAIwACwCswAFAlsALAOWAAICJgAeAx0ALAMdACwCjQAsArMACQOGACcDFQAsAsMALwMHACwCTQAsAncALwJcABQCeAAOAtEAHQKIAAoDAgAsAr0AGAQTACoEFAAqAtcAFAOSACwCYQAsAmQAKQPjACwCggAAAlsALAJbACwCxgAUAjAALAJnAC8CAAAoAXMALAFzABABdv/VA34ACQPMACwDBwAUAo0ALAMdACwCeAAOAwEALALCABQCwwAvAqoADwIwACwCMAAsA7QAAgImAB4CsQAsAwsAFAMZACwCdwAvAnkADwJ5AA8CowAKAsEAGALCACwBcwAsA5YAAgKYAAUDmAAFAlsALAKbAC8DHQAsAsMALwLDAC8CeAAOAngADgH9AC0CHwA3AgUALAG/ACwCNwATAf4ALQL2AA8BrgAjAoUALAKFACwCGgAsAkAAEALmACwCeQAsAiUALQJyACwCRwAjAegAKgIQABkCAAAAAt8AJwIOAAoCbQAsAioACgNYACwDWQAsAmIAHgLuACwB+AAsAeAAKQMfACwCFAAKAf4ALQH+AC0CFwAeAb8ALAHoAC8BsgAvASoAHQEq/+wBFf+tAvEAEAMgACwCWQAZAhoALAKFACwCAAAAAnoALAJdABkCJQAtAhQAAAHEACwByAAsAwwADwGuACMCMQAsAokAHgJ6ACwB6AAqAgMAAAIDAAACJwAKAisACgJZABkC9gAPASoAGQH9AC0DDgAtAf4ALQIHAC8ChQAsAiUALQIlAC0CAAAAAgAAAAIfADQD8QAKAAD/WQAA/1UAAP+kBgcAKAjjACgC8wAeAtIADgLSAAoCWABPAi4AUAMXAEICrQBCAqwAUAJNAAUCUQA3AkkAOgKTADcCMQA3AhoANwJuADoC1gA3AWsANwFo/+kCXQA3AjUANwM4ADICpQAyApIAOgIfADcCkgA6AlIANwHfADACIwAaApgAMQJeABYDVAAUAkAACwIzABEB8QAYAk0ABQJNAAUCTQAFAk0ABQJNAAUCTQAFAk0ABQJNAAUCTQAFAk0ABQJNAAUCTQAFAk0ABQJNAAUCTQAFAk0ABQJNAAUCTQAFAk0ABQJNAAUCTQAFAk0ABQM4AAUCSQA6AkkAOgJJADoCSQA6AkkAOgKTADcCkwA3ApMANwKTADcCMQA3AjEANwIxADcCMQA3AjEANwIxADcCMQA3AjEANwIxADcCMQA3AjEANwIxADcCMQA3AjEANwIxADcCMQA3AjEANwJuADoCbgA6Am4AOgJuADoCbgA6AncANwJuADoCbgA6AsoAJgLWADcC1gA3AtYANwFrADcBawA3AWsAIgFrAAwBawAfAWsANwFrADcBawArAWsANwFrADcBawACAWj/6QJdADcCNQA3AjUANwI1ADcCNQA3AjUANwI1ACACNQA3AjUANwM4ADIDOAAyAqUAMgKlADICpQAyAqUAMgKlADICpQAyAqUAMgKlADICkgA6ApIAOgKSADoCkgA6ApIAOgKSADoCkgA6ApIAOgKSADoCkgA6ApIAOgKSADoCkgA6ApIAOgKSADoCkgA6ApIAOgKSADoCkgA6ApIAOgKSADoCkgA6ApIAOgNaADoCUgA3AlIANwJSADcCUgA3AlIANwJSADcB3wAwAd8AMAHfADAB3wAwAd8AMAHfADAB3wAwAiMAGgIjABoCIwAaAiMAGgIjABoCIwAaApgAMQKYADECmAAxApgAMQKYADECmAAxApgAMQKYADECmAAxApgAMQKYADECmAAxApgAMQKYADECmAAxApgAMQKBADECgQAxAoEAMQKBADECgQAxAoEAMQKYADEDVAAUA1QAFANUABQDVAAUAjMAEQIzABECMwARAjMAEQIzABECMwARAjMAEQIzABEB8QAYAfEAGAHxABgB8QAYApMANwI1ADcCZgA6Ak0ABQJRADcCCAA3AkUAHAIxADcB8QAYAtYANwKSADoBawA3Al0ANwJMAAgDOAAyAqUAMgIdACsCkgA6AsIANwIfADcB6wAZAiMAGgIzABECkwArAkAACwK2ABMClQAvAWsADAIzABEDtQAwA3sANwRFADcClQAeAdYAMgHtAF8B2QA5AdcAOQHGAB0B1wAyAdYAMQHZAEIB2wA4AdUAIQFGAGYBRgBlAa4AVAGuAFwAtwAoAWMAKADUACUA1AASAZ8AJQGfABIBNAA1AeQANQLpADUBWgBmAVoAIgFRAIMBUQAgAUoANQFKACcCTQAFAkIANwJRADcCCAA3AmkAAwIxADcDIwADAgEAJgLdADcC3QA3AksANwJxAAwDOAAyAtYANwKSADoCyQA3Ah8ANwJJADoCIwAaAkIAFAKUACYCQAALAsAANwKAABwDsAA0A60ANAKQABoDSAA3AjEANwI4ADIDjwA3Ajz/+wIxADcCMQA3An4AGgIIADcCOgA6Ad8AMAFrADcBawAMAWj/6QMZAAwDbQA3ArcAGgJLADcC3QA3AkIAFALEADcCfgAVApIAOgJcABYCCAA3AggALwM+AAMCAQAmAmwANwKvABoC1gA3AkkAOgIzABECMwARAlgACwKAABwChgA3AWsANwMjAAMCTQAFAzgABQIxADcCcAA6At0ANwKSADoCkgA6AkIAFAAUAAAAAQAAAAwAAAAAAg4AAgBVAAIADQABAA8ANQABAEsATAABAF0AXQABAG0AbQACAHgAeAABAKEAoQABAKcAqAABAMMAwwABAMwAzAABAOUA5QABAPsA/AABAQIBAgACAQ0BDQABARkBGQACAR0BHQACAScBJwACAS0BLgABATMBMwACAVUBVQABAVsBXAABAWwBbAACAXkBeQABAYIBggABAZoBnQABAZ4BowACAwcDBwABAwwDDAABAxIDEgADAxQDTAADA24DbgABA3IDcgABA3QDdAABA3YDdgABA3wDfAABA34DfgABA4EDgQABA4UDhQABA5MDkwABA5UDlQABA58DoAADA6EDoQABA6QDpAABA6YDpwABA6kDqQABA6sDqwABA68DrwABA7QDtAABA7cDuAABA7wDvAABA74DwAABA9ID0gABA9wD3QABA+kD6QABA+wD7AABA+8D7wABA/ED8gABA/QD9AABA/YD9gABA/oD+gABA/8D/wABBAIEAwABBAcEBwABBAkECwABBBAEEAABBB0EHQABBCcEKAABBDQENAABBDkEOgADBEYEUQABBFMEXwABBHYEdgABBNIE0wABBO4E7gABBPcE9wABBRAFEAABBVIFUgABBVQFVAABBVYFVgABBV8FXwABBWIFYwABBWcFZwABBWkFawABBX0FfQABBYgFiAABAAIAGwMSAxIAAQMUAxQAAQMWAxYAAQMYAxgAAQMaAxoAAQMcAxwAAQMeAx4AAQMgAyAAAQMiAyIAAQMkAyQAAQMmAyYAAQMoAygAAQMxAzEAAQM1AzUAAQM3AzcAAQM5AzkAAQM7AzsAAQM9Az0AAQM/Az8AAQNBA0EAAQNDA0MAAQNFA0UAAQNHA0cAAQNJA0kAAQNLA0sAAQOfA6AAAQQ5BDkAAQABAAAACgG0CWIABERGTFQAGmN5cmwASGdyZWsAuGxhdG4A5gAEAAAAAP//ABIAAAAIABAAGAAgACgAMAA4AEYATgBWAF4AZgBuAHYAfgCGAI4AEAACTUtEIAA8U1JCIABEAAD//wATAAEACQARABkAIQApADEAOQBAAEcATwBXAF8AZwBvAHcAfwCHAI8AAP//AAEAQQAA//8AEwACAAoAEgAaACIAKgAyADoAQgBIAFAAWABgAGgAcAB4AIAAiACQAAQAAAAA//8AEgADAAsAEwAbACMAKwAzADsASQBRAFkAYQBpAHEAeQCBAIkAkQAWAANBWkUgAEBDUlQgAGxUUksgAJgAAP//ABIABAAMABQAHAAkACwANAA8AEoAUgBaAGIAagByAHoAggCKAJIAAP//ABMABQANABUAHQAlAC0ANQA9AEMASwBTAFsAYwBrAHMAewCDAIsAkwAA//8AEwAGAA4AFgAeACYALgA2AD4ARABMAFQAXABkAGwAdAB8AIQAjACUAAD//wATAAcADwAXAB8AJwAvADcAPwBFAE0AVQBdAGUAbQB1AH0AhQCNAJUAlmFhbHQDhmFhbHQDjmFhbHQDlmFhbHQDnmFhbHQDpmFhbHQDrmFhbHQDtmFhbHQDvmMyc2MDxmMyc2MD0GMyc2MD2mMyc2MD5GMyc2MD7mMyc2MD+GMyc2MEAmMyc2MEDGNhc2UEFmNhc2UEHGNhc2UEImNhc2UEKGNhc2UELmNhc2UENGNhc2UEOmNhc2UEQGNjbXAERmNjbXAETmNjbXAEVmNjbXAEXmNjbXAEZmNjbXAEbmNjbXAEdmNjbXAEfmRub20EhmRub20EjGRub20EkmRub20EmGRub20EnmRub20EpGRub20EqmRub20EsGZyYWMEtmZyYWMEwGZyYWMEymZyYWME1GZyYWME3mZyYWME6GZyYWME8mZyYWME/GxpZ2EFBmxpZ2EFDGxpZ2EFEmxpZ2EFGGxpZ2EFHmxpZ2EFJGxpZ2EFKmxpZ2EFMGxudW0FNmxudW0FPGxudW0FQmxudW0FSGxudW0FTmxudW0FVGxudW0FWmxudW0FYGxvY2wFZmxvY2wFbGxvY2wFdGxvY2wFfGxvY2wFgmxvY2wFiG51bXIFjm51bXIFlG51bXIFmm51bXIFoG51bXIFpm51bXIFrG51bXIFsm51bXIFuG9udW0Fvm9udW0FxG9udW0Fym9udW0F0G9udW0F1m9udW0F3G9udW0F4m9udW0F6G9yZG4F7m9yZG4F9G9yZG4F+m9yZG4GAG9yZG4GBm9yZG4GDG9yZG4GEm9yZG4GGHBudW0GHnBudW0GJHBudW0GKnBudW0GMHBudW0GNnBudW0GPHBudW0GQnBudW0GSHNpbmYGTnNpbmYGVHNpbmYGWnNpbmYGYHNpbmYGZnNpbmYGbHNpbmYGcnNpbmYGeHNtY3AGfnNtY3AGhnNtY3AGjnNtY3AGlnNtY3AGnnNtY3AGpnNtY3AGrnNtY3AGtnN1YnMGvnN1YnMGxHN1YnMGynN1YnMG0HN1YnMG1nN1YnMG3HN1YnMG4nN1YnMG6HN1cHMG7nN1cHMG+nN1cHMHBnN1cHMHEnN1cHMHHnN1cHMHKnN1cHMHNnN1cHMHQnRudW0HTnRudW0HVHRudW0HWnRudW0HYHRudW0HZnRudW0HbHRudW0HcnRudW0HeHplcm8Hfnplcm8HhHplcm8Hinplcm8HkHplcm8Hlnplcm8HnHplcm8Honplcm8HqAAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAADAAgACQAKAAAAAwAIAAkACgAAAAMACAAJAAoAAAADAAgACQAKAAAAAwAIAAkACgAAAAMACAAJAAoAAAADAAgACQAKAAAAAwAIAAkACgAAAAEABwAAAAEABwAAAAEABwAAAAEABwAAAAEABwAAAAEABwAAAAEABwAAAAEABwAAAAIABQAGAAAAAgAFAAYAAAACAAUABgAAAAIABQAGAAAAAgAFAAYAAAACAAUABgAAAAIABQAGAAAAAgAFAAYAAAABAA0AAAABAA0AAAABAA0AAAABAA0AAAABAA0AAAABAA0AAAABAA0AAAABAA0AAAADAAwADgAPAAAAAwAMAA4ADwAAAAMADAAOAA8AAAADAAwADgAPAAAAAwAMAA4ADwAAAAMADAAOAA8AAAADAAwADgAPAAAAAwAMAA4ADwAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGAAAAAEAGAAAAAEAGAAAAAEAGAAAAAEAGAAAAAEAGAAAAAEAGAAAAAEAGAAAAAEAAwAAAAIAAwAEAAAAAgADAAQAAAABAAIAAAABAAIAAAABAAIAAAABAAwAAAABAAwAAAABAAwAAAABAAwAAAABAAwAAAABAAwAAAABAAwAAAABAAwAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABAAAAABABAAAAABABAAAAABABAAAAABABAAAAABABAAAAABABAAAAABABAAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAACAAkACwAAAAIACQALAAAAAgAJAAsAAAACAAkACwAAAAIACQALAAAAAgAJAAsAAAACAAkACwAAAAIACQALAAAAAQAUAAAAAQAUAAAAAQAUAAAAAQAUAAAAAQAUAAAAAQAUAAAAAQAUAAAAAQAUAAAABAAQABEAEgATAAAABAAQABEAEgATAAAABAAQABEAEgATAAAABAAQABEAEgATAAAABAAQABEAEgATAAAABAAQABEAEgATAAAABAAQABEAEgATAAAABAAQABEAEgATAAAAAQAVAAAAAQAVAAAAAQAVAAAAAQAVAAAAAQAVAAAAAQAVAAAAAQAVAAAAAQAVAAAAAQAZAAAAAQAZAAAAAQAZAAAAAQAZAAAAAQAZAAAAAQAZAAAAAQAZAAAAAQAZABwAOgBCAEoAUgBaAGIAagB0AHwAhACMAJQAnACkAKwAtADAAMgA0ADYAOAA6ADwAPgBAAEIARABGAABAAAAAQlYAAMAAAABDiQAAQAAAAEA1gABAAAAAQDUAAEAAAABANIABAAAAAEA0AAGAAAAAgFyAYQAAQAAAAEBjAABAAAAAQHEAAEAAAABBC4AAQAAAAEELAABAAAAAQRSAAEAAAABBtIAAQAAAAEG8AABAAAAAQcOAAYAAAADBwwHHgcwAAEAAAABBzgAAQAAAAEHbgABAAAAAQdsAAEAAAABB4oAAQAAAAEHkAABAAAAAQeuAAEAAAABB9QAAQAAAAEH+gABAAAAAQggAAEAAAABCEYABAAAAAEIRAABAAAAARB2AAEQrgEEAAEQrgEbAAEQsABKAAEQsAANACAAKgA0AD4ASABSAFwAZgBwAIIAjACWAKAAAQAEAEsAAgMsAAEABABdAAIDLAABAAQAbQACAxoAAQAEAHgAAgMsAAEABADDAAIDLAABAAQA+wACAywAAQAEAQIAAgMoAAEABAENAAIDLAACAAYADAEdAAIDGgEZAAIDKwABAAQBJwACAywAAQAEATMAAgMoAAEABAFsAAIDKAABAAQBeQACAywAAwABECQAARBeAAAAAQAAABsAAwABEGYAARBMAAAAAQAAABsAAhBuAB0BzwHQAdEB0gHTAdQB1QHWAdcB2AHgAeMCAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CHgOZAAIQaAE2BEYERwRIBEkESgRLBEwETQROBE8EUARRBFIEUwRUBFUEVgRXBFgEWQRaBFsEXARdBF4EXwRgBGEEYgRjBGQEZQRmBGcEaARpBGoEawRsBG0EbgRvBHAEcQRyBHMEdAR1BHYEdwR4BHkEegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSHBIgEiQSKBIsEjASNBI4EjwSQBJEEkgSTBJQElQSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS2BLUEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAElgThBOIE4wTlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wUABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRkFGgUbBRwFHQUeBR8FIAUhBSIFIwUkBSUFJgUnBSgFEQUVBRcFGQUpBR8FJAUqBSgFTAVNBU4FTwVQBVEFUgVTBVQFVQVWBVcFWAVZBVoFWwVcBV0FXgVfBWAFYQViBWMFZAVlBWYFZwVoBWkFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYAAQ4SA4oAAg4WABQFLgU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLAAIOFAFBBEYERwRIBEkESgRLBEwETQROBE8EUARRBFIEUwRUBFUEVgRXBFgEWQRaBFsEXARdBF4EXwRgBGEEYgRjBGQEZQRmBGcEaARpBGoEawRsBG0EbgRvBHAEcQRyBHMEdAR1BHYEdwR4BHkEegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSHBIgEiQSKBIsEjASNBI4EjwSQBJEEkgSTBJQElQSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEowSiBKQEpQSmBKcETgRPBKgEqQRQBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS2BLUEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1gTVBNcE2ATZBNoE2wTcBN0E3gTfBOAEWAUrBOEE4gTjBOQE5QTmBOcE6ATpBOoE6wTsBO0E7gTvBPAE8QTyBPME9AT1BPYE9wT4BPkE+gT7BPwE/QT+BP8FAAUBBQIFAwUEBQUFBgUHBQgFCQUKBQsFDAUNBQ4FDwUQBSwFLQURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFKAUiBREFFQUXBRkFKQUfBSQFKgUoBSkFKgVMBU0FTgVPBVAFUQVSBVMFVAVVBVYFVwVYBVkFWgVbBVwFXQVeBV8FYAVhBWIFYwVkBWUFZgVnBWgFaQVqBWsFbAVtBW4FbwVwBXEFcgVzBXQFdQV2BXcFeAV5BXoFewV8BX0FfgV/BYAFgQWCBYMFhAWFBYYFhwWIBYkFigWLBY0FjAWOBY8FkAWRBZIFkwWUBZUFlgVNAAILtAAQAlQCVQJWAlcCWAJZAloCWwJcAl0CYgJjAl4CXwJgAmEAAguOABACRAJFAkYCRwJIAkkCSgJLAkwCTQJSAlMCTgJPAlACUQABC34ApwADAAELfgABC4gAAAABAAAAGwADAAELfgABC44AAAABAAAAGwADAAILkAuGAAELfAAAAAEAAAAbAAILhAAcAoACgQKCAoMChAKFAoYChwKIAokCigKLAowCjQKOAo8CkAKRApICkwKUApUClgKXApgCmQKaApsAAQtWAmQAAgrmABACIAIhAiICIwIkAiUCJgInAigCKQIuAi8CKgIrAiwCLQACCzQABAIwAjECMgIzAAIKsgAQAjQCNQI2AjcCOAI5AjoCOwI8Aj0CQgJDAj4CPwJAAkEAAgsMABQBpQGmAacBqAGpAaoBqwGsAa0BrgG7AbwBvQG+Ab8BwAHBAcIBwwHEAAIK7gAUAbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgACCtAAFAGwAbEBsgGzAbQBtQG2AbcBuAG5AcUBxgHHAcgByQHKAcsBzAHNAc4AAgqyABQBpQGmAacBqAGpAaoBqwGsAa0BrgGwAbEBsgGzAbQBtQG2AbcBuAG5AAEKjgAKAAEKkAABAAgABgAOABYAHgAkACoAMAGiAAMAIQAkAaMAAwAhACcBoQACACEBngACACQBnwACACcBoAACAC8AAgpYAmcEYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElwSYBJkEmgSbBJwEnQSeBJ8EoAShBKIEowSkBKUEpgSnBKgEqQSqBKsErAStBK4ErwSwBLEEsgSzBLQEtgS1BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYExwTIBMkEygTLBMwEzQTOBM8E0ATRBNIE0wTUBNUE1gTXBNgE2QTaBNsE3ATdBN4E3wTgBJYE4QTiBOME5QTmBOcE6ATpBOoE6wTsBO0E7gTvBPAE8QTyBPME9AT1BPYE9wT4BPkE+gT7BPwE/QT+BP8FAAUBBQIFAwUEBQUFBgUHBQgFCQUKBQsFDAUNBQ4FDwUQBGAEYQRiBGMEZARlBGYEZwRoBGkEagRrBGwEbQRuBG8EcARxBHIEcwR0BHUEdgR3BHgEeQR6BHsEfAR9BH4EfwSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElwSYBJkEmgSbBJwEnQSeBJ8EoAShBKMEogSkBKUEpgSnBE4ETwSoBKkEUASqBKsErAStBK4ErwSwBLEEsgSzBLQEtgS1BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYExwTIBMkEygTLBMwEzQTOBM8E0ATRBNIE0wTUBNYE1QTXBNgE2QTaBNsE3ATdBN4E3wTgBFgFKwThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAUsBS0FLgHGAccByAHJAcoBywHMAc0BzgHFAcYBxwHIAckBygHLAcwBzQHOAjAFOQU7BT0FPgU/BUAFQQVCAgACAQICAgMCBQIIAh4EOQQ6BREFEgUTBRQFFQUWBRcFGAUZBRoFGwUcBR0FHgUfBSAFIQUiBSMFJAUlBSYFJwUoBREFFQUXBRkFKQUfBSQFKgUoBREFEgUTBRQFFQUWBRcFGAUZBRoFGwUcBR0FHgUfBSAFIQUiBSMFJAUl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AAEI2AAGAQAAAQlqAAIAAAAMCgAg4i8CPuJPZl7kcVCC7pMQopSyGMCwAGQAAAAAAAAAAAABx6bH4gABAAwAfgAcAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgBHAJYAnACiAKgArgC0ALoAwADGAMwA0gDYAN4A5ACiAOoA8AD2APwBAgEIAQ4BFAEaASABJgCWASwBMgE4AT4AogCiAUQBCAEIAUoBUAFWAQgBXAFiAWgBbgF0AXoBdAGAAYYBjACiAZIAlgGYAK4BngGkAQgAogEgAaoBsAG2AbwBwgEIARoAogEOAQ4AogABAAAB+wABAPUB+wABAIQC4gABARIB+wABAY4C4gABARQB+wABASYC7gABAQMB+wABAIoC4gABAJkCwwABAJgCwwABAJYC4gABAJAC4gABAcQB+wABATYB+wABATAB+wABAS0B+wABAPIB+wABAOIB+wABAKICfgABARsB+wABAQgB+wABAYgB+wABAQ0B+wABAQ8B+wABAO8B+wABAZEB+wABAQkB+wABAJQB+wABAJoB9wABAccB+wABAQ8C4gABAP0B9wABASAB+wABAMgC3gABAMgCyQABAR8B+wABAOUB+wABARUB+wABAJEB+wABASkB+wABARgB8QABAW4B+wABAPwB+wABAP4B+wABAXsB+wABAUIB+wABATgB+wABAQAB+wABAXgB8QABAOQB+wABAYMB+wABxi7GZAABAAwAcgAZAAABKAAAASgAAAEoAAABKAAAASgAAAEoAAABKAAAASgAAAEoAAABKAAAASgAAAEoAAABKAAAASgAAAEoAAABKAAAASgAAAEoAAABKAAAASgAAAEoAAABKAAAASgAAAEoAAABKABgAMgAzgDUANoA4ADmAOwA8gD4AP4BBAEKARABFgEcARYBIgEoAS4BNAE6AUABRgFMAVIAyAFYAOAA+AFeARYBZAE0AWoA4ADIAOYA4AFwAXYBfAEWAYIBiAGOAZQBmgGgAQQBFgGmAaYBFgGsAawBsgG4Ab4BuAHEAcoB0AHWAdwB1gHiAegB7gH0AfoCAAIGAgwCEgIY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/9AAu//QANP/xwDU/8cA1f/HANb/xwDX/8cA2P/HANn/xwDa/8cA2//HANz/xwDd/8cA3v/HAeT/vAHl/7wB5gAAAecAAQHoAAAB6QABAhP/xgIa/8YCG///Ahz//wIg/70CIf+9AiL/vQIj/70CJP+9AiX/vQIm/70CJ/+9Aij/vQIp/70CZP/HAmX/xwJm/8YCZ//GAmj/xwJp/8YCav/GAmv/xgJs/8cCbf/GAm7/xgJw/8YCcf/GAnL/xgJz/8YCdP/HAnX/xgJ2/8cCd//GAnj/xwJ5/9ECev/HAnv/0QJ8/9ECff/GAn7/0QJ//8YCgP/HAoH/xgKC/8cCg//HAoT/xwKF/8YChv/HAof/xgKI/8YCiv/GAov/xgKM/8YCjf/GAo7/xwKP/8cCkP/HApH/xgKS/8cCk//HApT/xwKV/9EClv/RApf/xgKY/8cCmf/GApr/xwKb/8cEP///BED//wABASQAAAABASQAAAABAST//wABAST//wABAST//wABAST//wABAST//wABAST//wABAST//wABAST//wABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAAFAOn/0ADq//4BJAAAASUAKAEmAAEABQDp/9AA6v/+ASQAAAElACgBJgABAAUA6f/QAOr//gEkAAABJQAoASYAAQAFAOn/0ADq//4BJAAAASUAKAEmAAEABADp/8YA6v/+ASL/7QEk/+0ABADp/8YA6v/+ASL/7QEk/+0ABADp/8YA6v/+ASL/7QEk/+0ABADp/8YA6v/+ASL/7QEk/+0ABADp/8YA6v/+ASL/7QEk/+0ABADp/8YA6v/+ASL/7QEk/+0ABADp/8YA6v/+ASL/7QEk/+0ABADp/8YA6v/+ASL/7QEk/+0ADAAX/8QAGf/EAEz/sAGa/+wBsf/tAbL/9QGz/+wBt//hAfn/cwIP/+ECEf/rAh4AEwAGADEAAQAyAAEBiQABAYoAAQGLAAEBjAABAAYA6gAC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AbT/7QIP/9oABAGx//YBt//1Abn/9gHG//YABQGx/+MBs//2Abf/7QG5/+0Byv/tAAUBs//2AbT/4wG3//YBuf/2Ac7/7AACAbcAEwHK//YACQG0/80BtwATAcX/7AHG/+MBx//ZAcj/2QHJ/6YByv/XAc7/7AABAcwAEwALAbL/9gGz/+wBtP/OAbX/6wG5/+wBxf/rAcf/7AHI/+wByf/sAcr/7AHO/+IACAGx/+wBsv/tAbf/4QG5/+wBx//sAcj/7AHK/+0BzP/ZAAIBtP/tAc7/7QACAbf/4gHM/+MAAwG3/+IBuf/2Acz/7QACAbT/2AHJ/7sAEgGx/+wBsv/sAbP/9gG3//UBuf/2Afn/6gIP/+sCEf/sA1L/9gNe//YDX//sA2L/4gNj/84Db//2A3j/9gOA/+IDg//1A5n/7AAJAbn/9gH4/+wCHgAKA1//9gNh/+IDY//sA4D/2AOD/+EDmP/sAAoBuf/rAfj/zgIe/+wDUgAKA2H/zANk//YDcf/2A4D/xAOD/80DmP/DAF8BsP//AbH/4gGy/+sBs//rAbT/4QG1/+sBtv/rAbj/9QG5/+wBuv//Acv/6wHN//UB2f/hAdr/4QHb//YB3P/2Ad3/4QHt//UB7//1AfD//wHy//8B8///AfT//wH1//8B9v//Aff/9gH5/8QB+v//Afz//wH+//8CAf/1AgP/9QIE//8CBv//Agf//wII//8CCf//Agv//wIN//8CD//gAh7/9gI0/9YCNf/WAjb/1gI3/9YCOP/WAjn/1gI6/9YCO//WAjz/1gI9/9YCbwAeAokAHgLK//YDTf/XA07/9gNP//YDUP/XA1H/9gNT//YDVP/sA1X/9gNW//YDV//XA1v/7ANc//YDXf/2A2L/9gNp//YDbv/0A3D/6wN0//UDd//1A3r/6wN8//QDf//0A4H/6wOC//QDg//rA4T/6wOF//QDhv/0A4f/9AOJ//UDjP/0A43/6wOO/+sDj//0A5H/6wOT//QDlP/0A5f/9gOY//YEPP//BD3//wARAbT/6wH5/3ICD//NAhEACgIeAAkDUgAJA17/9gNfAAoDYv/sA2P/9gNk//YDcf/sA3P/7AN4/+wDfv/YA4MAFAOXAAoADwGx/+wBsv/1AbP/7AG3/+EB+f9zAg//4QIR/+sCHgATA1L/9QNe/+ADX//0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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/y//b/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7EAAAAA//YAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAD/uv/s//b/xAAAAAAAAAAA/+IACv/2/+v/9v/Y/+z/6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/r//X/2P/2//UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s//YAAAAA//YAAP/2/+v/7AAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+L/4v/rAAAAAP/s//b/9v/2//b/9v/2/+z/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAA//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/uv/iAAAAAAAAAAD/zP+6/+wARgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAKAAAAAAAA//b/1//OAAAAAAAAAAD/zP/Y/+v/7P/O//YAAAAAAAAAAAAAAAr/4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAP/W/+EAAAAA/+L/9f/2ABT/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5v/9gAAAAoAHgAU/4j/9QAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAKAAAAAAAAAAAAAAAAAAD/7AAAABQAAAAA/8L/sAAK//b/7AAAAAAACgAAAAAAAAAA/8MAAAAAAAAAAAAA/+IACv/2ABQAFAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAD/zAAAAAAAAP+6ABQAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+4//YAAAAA//YACgAAAAAAAAAA/+IAAP/r/+v/6/+mAAD/4gAKABQACv+IAAAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/9f/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAHf/X/8T/9QAU/+v/1//T/+L/4f/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAA/+wAAAAAAAD/zgAAAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP/2AAD/7AAAAAAAAAAA/+H/4gAAAAD/1//1AAAAAAAAAAD/4f/i/+sAAAAA//b/4QAAAAAAAAAAAAD/4v/6/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+v/7P/m/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACnWQABAAAqhqqnAAWAFwAAAAK/+L/9v/s/83/7AAU/+z/4f/q//b/4v+w/+wAEgAS//UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAP/1ABMAAAAAAAD/wv/2//YACgAK/+z/9v/sAAn/7AAK//b/7AATAAoAFAAK/5v/9gAKABQAFAAU/4gAHwAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/XABMAE//2//YAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1gAK/7oAAAAAAAAAAAAAAAAACgAAAAoAAAAA/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/sP/iAAAAAAAAAAD/zABGAAAAAAAAAAAAAAAAAAD/4f/q/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+v/9P/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+S/+wAAP/NAAD/xAAe/9j/uwAA/+wAAAAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v+vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/X/+L/6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5z/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/r//b/2P+x/+sAAAAAAAAAAAAAAAAAAAAAAAD/9v/2AAAAAAAKAAAAAAAA/+L/4v+6/87/9gAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAP/t//b/2AAA/8//7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+r/4QAK/+z/4f/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/0/+sAFP/2/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKNtAAEAACiBKKkABsATgAA//b/9v/i//b/6//2ACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wwAAAAAAAAAAAAD/xP/D//b/9v/2/8T/4v/D/8P/9v/2/+v/4v/r/+0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4P/2//3//f/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr/4gAAAAAAAAAAAAAACv/iAAAAAP/2AAr/9v/s/+IAAAAAAAAAAAAAAAD//AAA//z//AAAAAD/9gAK//X/9v/2AAoACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/sf/rAAD/2P+wAAD/w/+xAAAAAABH/8P/zf+m/7EAAAAT/+H/6wAA/+0AAAAAAAAAAAAAAAAAAP/iAAAAAAAA/+IAAAAd/+sAXP/1/+sAHf+w/7AAE//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAD/7P/YAAAAAP/t/+wAAP/h/9gAAAAAAAAAAP/XAAD/4AAA/+D/4AAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAUAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAP/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2ACj/4v+nAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP/1AAD/9v/2AAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/rAAAAAAAAAAAAAAAAAAD/9v/2/7n/4v/s/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAP/1/+L/4v/h/+EAAP/iAAAACv/2AAAAAAAAAAD/4f/3AAAAAAAAAAAAAP/sAAAAAAAAAAAACQAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/7AAAAAAACf/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW//X/7P/X/8T/9gAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAIAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9v/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/1AAD/9gAAADwAAP/2AAAAAAAAAAD/9v/2//YAAP/aAAAAAAAA//b/7AAA/+z/7AAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAA//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAP/2AAD/9gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/0AAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAA//b/9v/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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/+wAAP/2/+z/9gAAAAAAAAAA//b/9v/s/+wAAP/2AAD/2f/j//b/4/+y/+P/xP/O/9j/z//s/7z/z/+n/7L/vP/O//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA/7sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zv/Y/7H/9gAAAAAAAAATAAAAAAAAAAAAAP/2AAAAAAAA/+z/7AAA/+wAAAAAAAD/w//iAAD/7AAhABIAAAAA/+wAIP/s//YACgAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/iQAAAAAAAAAAAAAAAP/XAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/X//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/2P/F/+z/7P/s//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAAAAAAAAABYAAP/2AAAAAAAA//X/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+4//b/uP/2/7j/9gAA/9gAAAAAAAD/4f/Y//b/9gAA/9f/9v/1AAD/9gAA/+H/2P/r//b/9v/s/+cAAP/2AAD/zv/E/8//6wAAAAAAFAAA/9gAAAAAAAAAAAAAAAAAAP+RAAAAAAAAAAAAAAAAAAAAKf/s//b/4f/s/9b/zQAU/+L/7P/iABP/4v+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAKAAAAAP/1//YAAAAAAAD/9gAAAAAAAAAAAAD/9f/2AAAAAAAAAAAAAAAAAAD/7P/s/+z/4//2AAAAFQATABP/9QAAAAD/2gAAAAAAEwAA/68AAAAAAAAAAAAA//YAAAAzAAAAAAAAAAAAAP/rAAAAAAAAAAAAAAAA/7D/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+5AAD/uQAA/7kAAAAK/+EAAAAAAAD/4f/iAAAAAAAA/+IAAP/1AAAAAAAA/+H/4v/1AAAAAAAA//YAAAAAAAD/1v/E/+EAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAP91AAAAAAAAAAAAAAAAAAAAAP/9AAD/6//rAAAAAAAe/+z/9f/sAB7/7AAAAAD//f+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAA/+3/4gAAAAAAAAAA/+IAAAAAAAD/7QAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//f/7f/t/+P/4wAA/+L/4v/s/+MAAP/t//f/sf/P/+z/4gAA/+0AAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6wAAAAAAAP/iAAD/9gAAAAD/4v/2AAD/9gAA/+v/4gAA//YAAAAAAAAAAAAAAAD/9gAA/+z/2f/ZAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+0AAP/t/+P/7f/sAAAAAP/tAAD/7f/t/7H/z//tAAAAAAAAAAAAAAAAAAAAAAAA//YAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zQAA/80AAP/N/3MAAP/N/67/kv/1/87/xv+5/5L/zv+5/9j/rv+c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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//IAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAP/sAAD/1wAA/9cAAP/sAAAAAAAAAAAAAP/sABQACwAUAAAAAAAAAAAAAAAAAAoAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/uAAAAAoAAP/2AAAAAP/W/8T/uv/E/9f/2AAA/87/1v/sAAD/2AAdABUAHgAU/+oACgAUAB0AEwAUABwAAP/2AAAAAAAUAAD/7P/Y/80AAAAAAAoAAP/gAAAAAAAAAAAAAAAAAAAAAAAA/80AAP/EAAAAAAAnAAAAAAAA/67/uf+v/+D/zf+c//b/r/91/+v//f/h/7D/1v/t/6YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wgAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/D/3//9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//EAAP/sAAD/7P/s/+sAAAAAAAAAAAAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//X/7AAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAA/+IAAP/2//b/uf/s/9f/zv/D/+r/4f/iAAAAAP+wAAAAAAAAAAD/7AAAAAAAEgAAAAAAEv/1/9gAAP/iAAD/4v/O/+IAAAAA/+sAAAAA/9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAP/sAAAAAP/iAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAA//b/6AAK/+H/2AAAAAAAAAAAAAAAAAAKAAoACgAA/+wAAP/jAAAAAP/2AAAAAAAA/87/9QAKAAAAAAAA/9gAAP/2AAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAA0AAD/9gAA/87/6//iAAAAAP/PAAD/2P/i//YAAAAU/+L/7QAA//UAAAAAAAAAFP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAFP/r/+IAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1/+wAAAAAAAD/8v/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/zf/gAAAAAP/h/8MAAAAAAAAAAP/1//AAAAAAAAAAAAAAAAD/zv/NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+5AAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1//qAAD/6//NAAD/wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+RAAoAFAAA/+IAFAAe/7D/xP+5/87/xP/X/+L/sf+6/88AAP+7AB4AHgAAAAD/ugAAAAAACgAAAAAACv/Y/+IAFAAAAAoAAP/X/8T/r//s/+wACv/s/9gAAAAAAAAAAAAAAAAAAAAAAAD/ugAA/6YAAP/YACf/4f/u/+L/X/+u/5v/xP+6/2H/xP9q/37/4v/W/8z/nP+m/9n/pAAAAAAAAP/YABQAAAAAAAr/2P/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+bABQAHv/sAB4AKP/sAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7r/if/sAAAAAAAAAB8AAAAAAAAAFAAAAAAAAAAAAAD/pgAAAAAAAP/OAAAAAP+w/7D/pf+5/7r/uv/Z/7H/sf/PAAD/qAAAAAoAAAAA/7oAAAAAABQAAAAAAAr/4f/OAAAAAAAL/87/zv+m/6//7P/ZAAD/4v/NAAAAAAAAAAAAAAAAAAAAAAAA/68AAP+wAAD/2AAA/9j/4//i/5L/xP+l/7v/w/+d/7v/nAAA/9j/1v/N/6b/pv/j/5wAAAAAAAD/xQAAAAAAAAAA/8X/2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/sAAAAAD/2AAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAD/4gAAAAAAAAAAAAAAAAAAAAD/4wAAAAAAAAAA/+L/7P/s/+gAAP/1/+IAAP/2AAAAAP/s/+sAAAAAAAAAAP/s//b/9f/2AAD/9gAAAAAAAP/i/+MAAAAAAAAAAP/rAAD/7AAAAAAAAAAAAAD/9v/1//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPQAA/+z/7P/qAAD/9gAAAAD/4wAA/+wAAAAAAAAAAP/s/+sAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/9v/2AAAAAP/sAAD/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//L/9gAAAAAAAAAAAAAAAAAAAAAAAAAKAAD/zgAA//YAAP+wAAD/4gAA/+z/9v/sAAAAAP/2AAAAAAAA/8T/zv/i/9j/9v/Y/+P/kv/E/9j/zgAAAAAAAAAA/9gAAP/2AAD/7AAA/+L/6wAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAP/tAAAAAAAAAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/6wACXCwABAAAhx6I/AAVAGsAAP/2/+z/7P/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAD/9//2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA//YAAP/1/9j/9f/E/+z/7P/2/8T/6wAz//b/9f/s/+z/9P/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+H/zv/iAAAAAAAAAAAAAAAA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AAAAAAAA/+wAAAAAAAAACv/2//b/2f+m/+z/w//s/+z/7P/X//X/7v/E/+D/nP/D/7v/kv/2/83/9v/D/+z/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFP/j/7D/4f+m/80AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAD/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//EAAP/1AAAAAAAA//YAAAAA/+v/5//2AAAAAAAAAAD/6wAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+//xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAAD/2P/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAA//YAAP/2AAAAAAAAAAD/9gAA/+wAAAAAAAAAAP/sAAAAAAAAAAAAAAAA/+gAAP/s/9j/7AAA/+z/4gAAAAAAAP/hAAAAAAAAAAAAAP/i//b/zv/2AAAAAAAAAAAAAAAAAAD/7P/2//b/9v/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+P/8gAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+vAAAAAAAAAAAAAAAAAAAAAAAUAB0AEwAnAAAAAP/NAAAACv+uAAAAAAAAAB0AAAAAAAAAAP/WAAAAHgAU/68ACgAUABwAAAAUAAAAAAAA/9YAAAAAAAAAAAAAABQAAAAA/+wAAAAAAAAAAAAA/+r//f/rAAD/sAAAAAD/9gAA/8T/6//OAAv/zv/hAAD/7P/Y/9cAAAAKAAAAAP/2/+v/9f/OAAAAAAAAAAAAAAAAAAAAAP/gAAD/4v/Y/6b/4gAJ/+3/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ugAAAAD/4QAAABQAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAP/Y/+wAAP/OAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAA/87/9QA0AAAAAAAA//YAAP/OAAAAAAAA/+MAAAAAAAAAAAAK/+wAAP/2/9gAAAAKAAAAAP/2AAAAAAAA/+3/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAD/2P/o/+wACv/ZAAAAAAAAAAAAAAAAAAoAAAAAAAD/7P/2AAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/7AAU//UAAksoAAQAAH1WfnQAEQB5AAD/4v/y//YAFP/j/+z/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/pv/O/6v/uf+6/8T/ugAe/7r/sP/F/53/2f/Y/8T/sf/P/6j/uv+cABQACv/h/7r/zP/W/8T/zf/FAAv/2P/O/7D/4v/Y/6//2f/j/8T/xf+m/6b/4/+m/+L/4v/i/5L/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7AAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoABQAAAAAAAAAAP/sAAAAAAAV//sAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAUABQACgAKABUAFQAVABUAKQAVAAoAHgAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/i//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8wAAAAAAAAAAAAFAAAAAAAAAAAAAP/EAAAAAAAJ//YAAAAAAAD/rv/iAAAACgAAAAD/9AAA//YAAAAAAAAAAAAJAAD/9f/1AAr/7AAAAAD/9v/XAAAAAAAA//X/9v+4AAAAAP/r/9wAFAAUAAAACgAKAAAAJwAT/87//QAAAAD/6//r/87/9f/h//QAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAD/9gAA/+wAAAAAAAAACgAAAAAAAP/i/6b/4gAAAAAAAAAA//YAAAAA/+sAAAAA//YAAP/2AAAAAP/jAAAAAAAA/+wAAP/sAAD/9v/2/84AAAAA//X/9f/O/+z/6//tAAD/zgA9/+P/6//EAAD/1//2/+z/sP/2//b/1//s//X/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9QAAAAD/4v/u/8T/7AAA/2r/pP/1AAAAAAAAAAAAAAAA/8QAAP/hAAAAAAAA/9n/6wAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAD/4v+I/5L/kv+c/6b/dAAA/5IAAAAAAAD/hwAAAAAAAAAAAAD/4QAAAAAAAAAK//b/8f/2/9n/w/+7/53/pv/7//b/7P/s/+v/xP/O/+L/f//i/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT//v/4//N/8X/p/+w/4kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAACwAUAAAAAAAAAAAAKAAKAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2/+0AAAAAAAAAAP/2AAAAAAAA//b/9gAAAAAAAAAAAAAAAAAAAAAAAP/tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAKAAAAAAAAAAAAAAAA/87/2AAAAAAAAAAAAAAAAAATABP/7AAAAAAAAAAAAAD/9gAA//YAAAAAAAD/4gAAAAAAAP/2/+z/uQAAAAAAAP/s/+0AAAAAAAAAAP/sADQAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAA/8T/4v/2/+wACv/s/+z/z//FAAAAAAAAAAAAAAAAAAAAAP/P//YAAAAAAAAAAAAAAAAAAAAAAAD/sAAA//b/9v/2//b/2P/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/84AAAAU//b/9v/Z/8//2QAA/7sAAAAAAAAAAAAAAAD/7P/2/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/x//H/8QAAAAAAAAAA//b/6//sAAD/8f/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAACO6wABAAAdQp2agAXAFYAAP/7//v/+//7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AGECAgICAGACAwIDAGECBAIEADUCBgIIADUCCQIJADYCCgIKABECCwILADYCDAIMABECDQINADYCDgIOABECEwITABUCGAIZADMCGgIaABUCGwIcAFcCIAIpABgCNAI9ABYCZAJlAFYCaAJoAFYCbAJsAFYCbwJvABkCdAJ0AFYCdgJ2AFYCeAJ4AFYCeQJ5ABcCegJ6AFYCewJ8ABcCfgJ+ABcCgAKAAFYCggKEAFYCiQKJABkCjgKOAFYCkAKQAFYCkgKUAFYClQKWABcCmgKbAFYCygLKABIDTQNNACIDTgNPACMDUANQACIDUQNRACMDUwNTACMDVANUACUDVQNWACMDVwNXACIDWANZACQDWwNbACUDXANdACMDYANgACYDaQNpACMDbANsACYDbgNuADADcANwACgDcgNyACcDdgN2ACkDeQN5ACoDegN6ACgDfAN8ADADfwN/ADADgQOBACsDggOCADADhAOEACsDhQOHADADiAOIACcDigOKACkDiwOLADEDjAOMADADjQOOACsDjwOPADADkAOQADEDkQORACsDkwOUADADlQOVACoDoQOhAEADogOkAEMDpQOlAEEDpgOmAEMDpwOnAEQDqQOrAEMDrAOsAEEDrQOuAEMDrwOvAEsDsAOxAEMDsgOyAEsDswOzAEIDtAO0ADoDtgO2AEQDtwO3AEMDuAO4ADkDuQO6AEMDuwO7AEIDvAO9AEMDvwO/AEMDwQPCAEMDwwPDAEIDxAPEAEMDxQPFAEsDxwPIAEMDygPKAEEDywPLAEMDzAPMAEIDzQPOAEMDzwPPADoD0APQAEMD0gPSAEsD1APVAEMD1gPWAEQD2APYAEMD2QPZAEID2gPaAEMD2wPbAEsD3APdADsD3gPeAEQD3wPfADkD4APhAEMD4gPiAEQD4wPjAEAD5QPlAEMD5gPmAEsD5wPnAEMD6APpAEsD6gPrADoD7APsAGID7gPvAFQD8QPxAFID8gPyAEgD8wPzAGMD9AP2AFQD9wP3AEwD+AP5AFQD+gP6AFID+wP7AFQD/QP9AFID/gP+AEYD/wP/AD0EAAQAAFIEAQQBAEgEAgQCAFQEAwQDADwEBAQFAFQEBgQGAEYEBwQIAFQECQQJAGMECgQKAFQEDAQNAFIEDgQOAEUEDwQPAFQEEAQQAFIEEgQTAFMEFQQVAEwEFgQWAFQEFwQXAEUEGAQZAFQEGgQaAD0EGwQbAFQEHQQdAFIEHgQeAEcEHwQgAFQEIQQhAEgEIgQiAGMEIwQjAFQEJAQkAEYEJQQlAFQEJgQmAFIEJwQoAEcEKQQpAEgEKgQqADwEKwQrAEUELAQsAEgELQQtAEUELgQvAGIEMAQxAFIEMgQyAFQEMwQ0AFIENQQ2AD0EPAQ9ADUEPgQ+ADMEPwRAAFcERgRGABoERwRHABsESQRLABsETQROABsETwRPABwEUARRABsEUgRTAB0EVQRVABsEVwRXABsEWQRZAB4EWgRaAB8EXARcACAEXgReACEEYAR1ABoEfASQABsEmQSnABsEqASoABwEqQSxABsEsgS7AB0E1ATZABsE4QTmAB4E5wT9AB8E/gUBACAFAgUJACEFDgUPABsFEQURACwFEgUTAC0FFAUUACwFFQUVAC0FFwUXAC0FGAUYADgFGQUaAC0FGwUbACwFHAUdAC4FHwUfADgFIAUhAC0FJAUkAC8FKQUpAC0FKgUqAC8FTAVMAEkFTQVPAE8FUAVQAE0FUQVRAE8FUgVSAFEFVAVWAE8FVwVXAE0FWAVZAE8FWgVaAFAFWwVcAE8FXQVdAFAFXgVeAE4FXwVfAEoFYQVhAFEFYgViAE8FYwVjAD4FZAVlAE8FZgVmAE4FZwVoAE8FagVqAE8FbAVtAE8FbgVuAE4FbwVvAE8FcAVwAFAFcgVzAE8FdQV1AE0FdgV2AE8FdwV3AE4FeAV5AE8FegV6AEoFewV7AE8FfQV9AFAFfwWAAE8FgQWBAFEFgwWDAE8FhAWEAE4FhQWFAE8FhgWGAFAFhwWIAD8FiQWJAFEFigWKAD4FiwWMAE8FjQWNAFEFjgWOAEkFkAWQAE8FkQWRAFAFkgWSAE8FkwWUAFAFlQWWAEoAAgAVABEAEQACABcAFwAQABkAGQASAOQA5AAMA10DXQAIA2EDYQAEA2MDYwAGA8wDzAAOA9ED0QAUA+AD4AAKBFUEVQADBFsEWwARBF0EXQATBQ8FDwANBRoFGgABBSEFIQAJBSUFJQAFBScFJwAHBXcFdwAPBXwFfAAVBYsFiwALAAIBNgACAAIAFAADAAMAFQAEAAQATAAFAAcAFQAIAAgATAAJAAoAFQALAAsAFgAMAA0AFQAOAA8ASwAQABAATAARABEAFQASABIATAATABMAFQAUABQAFwAVABUAGAAWABYAGQAYABgAGgAaABoAGwAbABsAHAAcABwAUgAdAB0ATQAeACAAIAAhACEAUwAiACIAHQAjACMATQAkACQAVAAlACUAVQAmACcATQAoACkAHwAqACoAIAAsACwAIAAtAC0AHwAuAC4AVgAvAC8AIQAwADAAVwAxADIAIgA0ADQAIwA1ADUAWAA2AEsAFABNAFEATABSAGYAFQBnAG0ATABuAHwAFQB9AH0AFgB+AIYAFQCHAJAASwCRAKgATACpAK4AFQCvALUAFwC3ALsAGAC8ANIAGQDTANYAGgDXAN4AGwDfAOIAHADjAOQAFQDlAOUATADmAPwAUgD9ARYAIAEXAR0AHQEeASEATQEiASMAVAEkASYAHgEnASgAVAEpASkAHgEqASsAVAEsASwAHgEtAS0AHwEuAS8AVQEwATAATQExATEAHwEyATkATQE6AUEAHwFDAUQAHwFFAVwAIAFdAWIAHwFjAWkAVgFqAWsAUwFsAXEAIQFyAYgAVwGJAYwAIgGNAZQAIwGVAZgAWAGZAZkAIAGbAZsAIAGeAaMAUwGwAbAAEQG2AbYADgG4AbgACwG6AboAEQHLAcsADgHNAc0ACwHZAdoAJQHbAdwAJAHdAd0AJQHkAeUAJwHmAeYAKAHnAecAKQHoAegAKAHpAekAKQHsAewAWQHtAe0APAHuAe4AWQHvAe8APAHwAfAADAHyAfYADAH3AfcADQH6AfoAWgH7AfsAJgH8AfwAWgH9Af0AJgH+Af4AWgH/Af8AJgIAAgAAWQIBAgEAPAICAgIAWQIDAgMAPAIEAgQADAIGAggADAIJAgkAWgIKAgoAJgILAgsAWgIMAgwAJgINAg0AWgIOAg4AJgITAhMAKgIYAhkACgIaAhoAKgIbAhwAEAIgAikANgI0Aj0AKwJkAmUALQJoAmgALQJsAmwALQJvAm8ALAJ0AnQALQJ2AnYALQJ4AngALQJ5AnkADwJ6AnoALQJ7AnwADwJ+An4ADwKAAoAALQKCAoQALQKJAokALAKOAo4ALQKQApAALQKSApQALQKVApYADwKaApsALQLKAsoADQNNA00AAQNOA08ANANQA1AAAQNRA1EANANTA1MANANUA1QAAgNVA1YANANXA1cAAQNYA1kANQNbA1sAAgNcA10ANANgA2AAAwNpA2kANANsA2wAAwNuA24ABANwA3AABQNyA3IAOgN0A3QAOwN2A3YABgN3A3cAOwN5A3kACAN6A3oABQN8A3wABAN/A38ABAOBA4EACQOCA4IABAOEA4QACQOFA4cABAOIA4gAOgOJA4kAOwOKA4oABgOLA4sABwOMA4wABAONA44ACQOPA48ABAOQA5AABwORA5EACQOTA5QABAOVA5UACAOiA6QAWwOmA6YAWwOpA6sAWwOtA64AWwOvA68APwOwA7EAWwOyA7IAPwOzA7MAPgO0A7QAQAO3A7cAWwO4A7gAPQO5A7oAWwO7A7sAPgO8A70AWwO/A78AWwPBA8IAWwPDA8MAPgPEA8QAWwPFA8UAPwPHA8gAWwPLA8sAWwPMA8wAPgPNA84AWwPPA88AQAPQA9AAWwPSA9IAPwPUA9UAWwPYA9gAWwPZA9kAPgPaA9oAWwPbA9sAPwPcA90AQQPfA98APQPgA+EAWwPlA+UAWwPmA+YAPwPnA+cAWwPoA+kAPwPqA+sAQAP+A/4AQwP/A/8ARAQDBAMAQgQGBAYAQwQaBBoARAQeBB4ARQQkBCQAQwQnBCgARQQqBCoAQgQ1BDYARAQ8BD0ADAQ+BD4ACgQ/BEAAEARGBEYALgRHBEcATgRIBEgAUARJBEsATgRMBEwAUARNBE4ATgRQBFEATgRSBFMATwRUBFQAUARVBFUATgRWBFYAUARXBFcATgRYBFgALwRZBFkAMARaBFoAMQRcBFwAUQReBF4AMgRfBF8AMwRgBHUALgR3BHsAUAR8BJAATgSRBJUAUASXBJgAUASZBKcATgSpBLEATgSyBLsATwS8BNMAUATUBNkATgTaBOAALwThBOYAMATnBP0AMQT+BQEAUQUCBQkAMgUKBQ0AMwUOBQ8ATgUQBRAAUAURBREAEgUSBRMANwUUBRQAEgUVBRUANwUXBRcANwUYBRgAEwUZBRoANwUbBRsAEgUcBR0AOAUfBR8AEwUgBSEANwUkBSQAOQUpBSkANwUqBSoAOQUrBSsALwVaBVoASAVdBV0ASAVeBV4ARwVfBV8ASQVjBWMARgVmBWYARwVuBW4ARwVwBXAASAV3BXcARwV6BXoASQV9BX0ASAWEBYQARwWGBYYASAWHBYgASgWKBYoARgWRBZEASAWTBZQASAWVBZYASQACABoBawFrABQBmQGZAAwBpAGkAAEBtAG0ABIBtQG1AA8BuQG5ABkByQHJABMBygHKABABzgHOABoB3wHfAA0B4AHgAA4B+AH4AAYCEQIRAAQCHQIdAAICHgIeAAMCnwKfAAcCogKiABEDbwNvAAUDcQNxAAkDdwN3ABcDeAN4ABgDgwODAAgEDgQOAAoEEQQRAAsEFAQUABYEHgQeABUAAgElAAIAAgAaAAMAAwAhAAQABAAiAAUABwAhAAgACAAiAAkACgAhAAsACwAMAAwADQAhAA4ADwBMABAAEAAiABEAEQAhABIAEgAiABMAEwAhABUAFQANABYAFgAOABgAGAAPABoAGgAQABsAGwAjABwAHAA6AB0AHQAcAB4AIAARACEAIQA7ACIAIgAbACMAIwAcACQAJAA4ACUAJQAmACYAJwAcACgAKQBNACoAKgARACwALAARAC0ALQBNAC8ALwAnADAAMAA8ADEAMgAoADQANAApADYASwAaAE0AUQAiAFIAZgAhAGcAbQAiAG4AfAAhAH0AfQAMAH4AhgAhAIcAkABMAJEAqAAiAKkArgAhALcAuwANALwA0gAOANMA1gAPANcA3gAQAN8A4gAjAOMA5AAhAOUA5QAiAOYA/AA6AP0BFgARARcBHQAbAR4BIQAcASIBIwA4AScBKAA4ASoBKwA4AS0BLQBNAS4BLwAmATABMAAcATEBMQBNATIBOQAcAToBQQBNAUMBRABNAUUBXAARAV0BYgBNAWoBawA7AWwBcQAnAXIBiAA8AYkBjAAoAY0BlAApAZkBmQARAZsBmwARAZ4BowA7AbABsAAtAbYBtgAWAbgBuAAuAboBugAtAcsBywAWAc0BzQAuAdkB2gASAdsB3ABHAd0B3QASAeQB5QAqAeYB5gAGAecB5wArAegB6AAGAekB6QArAeoB6wAsAewB7AATAe4B7gATAfAB8AAUAfIB9gAUAfcB9wAFAfoB+gBBAfsB+wAVAfwB/ABBAf0B/QAVAf4B/gBBAf8B/wAVAgACAAATAgICAgATAgQCBAAUAgYCCAAUAgkCCQBBAgoCCgAVAgsCCwBBAgwCDAAVAg0CDQBBAg4CDgAVAhMCEwAzAhoCGgAzAhsCHAA3AiACKQA1AjQCPQA5AmQCZQA2AmYCZwBCAmgCaAA2AmkCawBCAmwCbAA2Am0CbgBCAm8CbwAHAnACcwBC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ADgCAAIAACECAQIBADoCAgICACECAwIDADoCBAIEACICBgIIACICCQIJAEgCCgIKADgCCwILAEgCDAIMADgCDQINAEgCDgIOADgCEwITACgCGgIaACgCGwIcAC8CIAIpAC0CNAI9AEYCZAJlAC4CZgJnACoCaAJoAC4CaQJrACoCbAJsAC4CbQJuACoCbwJvADkCcAJzACoCdAJ0AC4CdQJ1ACoCdgJ2AC4CdwJ3ACoCeAJ4AC4CeQJ5ACwCegJ6AC4CewJ8ACwCfQJ9ACoCfgJ+ACwCfwJ/ACoCgAKAAC4CgQKBACoCggKEAC4ChQKFACoChgKGACsChwKIACoCiQKJADkCigKNACoCjgKOAC4CjwKPACsCkAKQAC4CkQKRACoCkgKUAC4ClQKWACwClwKXACoCmAKYACsCmQKZACoCmgKbAC4CuwLFAB8CxgLHACQCyALIACACyQLJACQCygLKACMCywLLAB4CzALMACQCzQLNACAC0gLSAB4C0wLTACQC1ALUAB4C1QLVACQDTQNNAAMDUANQAAMDVANUAAQDVwNXAAMDWwNbAAQDYANgABADbANsABADbgNuABEDcANwABIDcgNyAE0DdAN0AEMDdgN2AE4DdwN3AEMDegN6ABIDfAN8ABEDfwN/ABEDgQOBABMDggOCABEDhAOEABMDhQOHABEDiAOIAE0DiQOJAEMDigOKAE4DiwOLAEwDjAOMABEDjQOOABMDjwOPABEDkAOQAEwDkQORABMDkwOUABEDoQOhAAEDpQOlAD4DrAOsAD4DrwOvAAIDsgOyAAIDswOzAAoDuwO7AAoDwwPDAAoDxQPFAAIDygPKAD4DzAPMAAoD0gPSAAID2QPZAAoD2wPbAAID3APdAAsD4wPjAAED5gPmAAID6APpAAID7APsAAwD7gPvAEED8QPxAA0D8gPyAEID9AP2AEED9wP3AD8D+AP5AEED+gP6AA0D+wP7AEED/QP9AA0D/gP+ADMD/wP/AA4EAAQAAA0EAQQBAEIEAgQCAEEEAwQDADIEBAQFAEEEBgQGADMEBwQIAEEECgQKAEEEDAQNAA0EDgQOAEcEDwQPAEEEEAQQAA0EEgQTAEAEFQQVAD8EFgQWAEEEFwQXAEcEGAQZAEEEGgQaAA4EGwQbAEEEHQQdAA0EHgQeAA8EHwQgAEEEIQQhAEIEIwQj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AGICAwIDABcCBAIEABgCBgIIABgCCQIJABkCCgIKADwCCwILABkCDAIMADwCDQINABkCDgIOADwCDwIPADICEQIRACYCEwITAD8CGAIZABUCGgIaAD8CGwIcAB4CHQIdACQCHgIeACUCIAIpAEICNAI9ABwCZAJlAEQCZgJnAEACaAJoAEQCaQJrAEACbAJsAEQCbQJuAEACbwJvAEMCcAJzAEACdAJ0AEQCdQJ1AEACdgJ2AEQCdwJ3AEACeAJ4AEQCeQJ5AB0CegJ6AEQCewJ8AB0CfQJ9AEACfgJ+AB0CfwJ/AEACgAKAAEQCgQKBAEACggKEAEQChQKFAEAChgKGAEEChwKIAEACiQKJAEMCigKNAEACjgKOAEQCjwKPAEECkAKQAEQCkQKRAEACkgKUAEQClQKWAB0ClwKXAEACmAKYAEECmQKZAEACmgKbAEQCygLKABoDTQNNAAkDTgNPAEoDUANQAAkDUQNRAEoDUgNSAEcDUwNTAEoDVANUAAoDVQNWAEoDVwNXAAkDWANZADsDWwNbAAoDXANdAEoDXwNfAEYDYANgAEsDYQNhACEDYgNiAEUDZANkACADaQNpAEoDbANsAEsDbgNuAAsDbwNvACcDcANwAA4DcQNxACoDcgNyAAwDcwNzADkDdAN0AA0DdQN1ADUDdgN2AA8DdwN3AA0DeAN4AEkDeQN5ABEDegN6AA4DfAN8AAsDfQN9AC8DfgN+ADEDfwN/AAsDgAOAADQDgQOBABIDggOCAAsDgwODACkDhAOEABIDhQOHAAsDiAOIAAwDiQOJAA0DigOKAA8DiwOLABADjAOMAAsDjQOOABIDjwOPAAsDkAOQABADkQORABIDkwOUAAsDlQOVABEDlwOXADADmAOYACMEPAQ9ABgEPgQ+ABUEPwRAAB4ERgRGAGYERwRHAHYESARIAGgESQRLAHYETARMAGgETQROAHYETwRPAGcEUARRAHYEUgRTAHcEVARUAGgEVQRVAHYEVgRWAGgEVwRXAHYEWQRZAGkEWgRaAGoEWwRbAG0EXARcAGsEXQRdAHgEXgReAGwEYAR1AGYEdgR2AG8EdwR7AGgEfASQAHYEkQSVAGgElwSYAGgEmQSnAHYEqASoAGcEqQSxAHYEsgS7AHcEvATTAGgE1ATZAHYE4QTmAGkE5wT9AGoE/gUBAGsFAgUJAGwFDgUPAHYFEAUQAGgFEQURAAEFEgUTAAIFFAUUAAEFFQUVAAIFFwUXAAIFGAUYAAQFGQUaAAIFGwUbAAEFHAUdAAMFHwUfAAQFIAUhAAIFIgUiAAgFJAUkAAUFJQUlADoFJgUmAAYFJwUnAAcFKQUpAAIFKgUqAAUAAgA6AAgACAABAAkACgADAAsACwAFAAwADAAHAA0ADQAJAA4ADgADAA8ADwALABAAEAANABIAEgANABMAEwAPABQAFAARABUAFQATABYAFgAVAGcAbQABAG4AfAADAH0AfQAFAH4AfgAHAH8AgQAJAIMAhgAJAIcAiAADAIkAkAALAJEApwANAKkArgAPAK8AtQARALcAuwATALwA0gAVAOUA5QANBEwETAACBE0ETgAEBE8ETwAGBFAEUAAIBFEEUQAKBFIEUgAEBFMEUwAMBFQEVAAOBFYEVgAOBFcEVwAQBFgEWAASBFkEWQAUBFoEWgAWBJEElQACBJcEmAACBJkEpwAEBKgEqAAGBKkEqQAIBKoErAAKBK4EsQAKBLIEswAEBLQEuwAMBLwE0gAOBNQE2QAQBNoE4AASBOEE5gAUBOcE/QAWBRAFEAAOBSsFKwASBSwFLAADBS0FLQAKAAIA6gABAAEAVQACAAIABQADAAMABgAEAAQABwAFAAcABgAIAAgABwAJAAoABgALAAsAPgAMAA0ABgAOAA8AQwAQABAABwARABEABgASABIABwATABMABgAUABQANAAVABUACAAWABYACQAXABcAFwAYABgACgAZABkAGAAaABoACwAbABsADAAcABwAJAAdAB0AUwAeACAAKAAhACEAJQAiACIAJgAjACMAUwAkACQANQAlACUANgAmACcAUwAoACkANwAqACoAKAArACsAHAAsACwAKAAtAC0ANwAuAC4AKQAvAC8AKgAwADAAKwAxADIALAAzADMAPAA0ADQALQA1ADUAOAA2AEsABQBMAEwAFgBNAFEABwBSAGYABgBnAG0ABwBuAHwABgB9AH0APgB+AIYABgCHAJAAQwCRAKgABwCpAK4ABgCvALUANAC3ALsACAC8ANIACQDTANYACgDXAN4ACwDfAOIADADjAOQABgDlAOUABwDmAPwAJAD9ARYAKAEXAR0AJgEeASEAUwEiASMANQEkASYAJwEnASgANQEpASkAJwEqASsANQEsASwAJwEtAS0ANwEuAS8ANgEwATAAUwExATEANwEyATkAUwE6AUEANwFDAUQANwFFAVwAKAFdAWIANwFjAWkAKQFqAWsAJQFsAXEAKgFyAYgAKwGJAYwALAGNAZQALQGVAZgAOAGZAZkAKAGaAZoATQGbAZsAKAGeAaMAJQGkAaQAVAGwAbAAMAGxAbEAGwGyAbIAHwGzAbMAHgG0AbQAMgG1AbUAMQG2AbYALwG3AbcATAG4AbgALgG5AbkAMwG6AboAMAHLAcsALwHNAc0ALgHZAdoADQHbAdwAOQHdAd0ADQHkAeUARAHmAeYARQHnAecARgHoAegARQHpAekARgHsAewADgHtAe0AOgHuAe4ADgHvAe8AOgHwAfAADwHyAfYADwH3AfcAOwH4AfgAQQH5AfkAIAH6AfoAEAH7AfsAEQH8AfwAEAH9Af0AEQH+Af4AEAH/Af8AEQIAAgAADgIBAgEAOgICAgIADgIDAgMAOgIEAgQADwIGAggADwIJAgkAEAIKAgoAEQILAgsAEAIMAgwAEQINAg0AEAIOAg4AEQIPAg8AHQIRAhEASwITAhMARwIYAhkAPwIaAhoARwIbAhwAQAIdAh0AGQIeAh4AGgIgAikAFAI0Aj0AEgJkAmUASgJmAmcASAJoAmgASgJpAmsASAJsAmwASgJtAm4ASAJvAm8AFQJwAnMASAJ0AnQASgJ1AnUASAJ2AnYASgJ3AncASAJ4AngASgJ5AnkAEwJ6AnoASgJ7AnwAEwJ9An0ASAJ+An4AEwJ/An8ASAKAAoAASgKBAoEASAKCAoQASgKFAoUASAKGAoYASQKHAogASAKJAokAFQKKAo0ASAKOAo4ASgKPAo8ASQKQApAASgKRApEASAKSApQASgKVApYAEwKXApcASAKYApgASQKZApkASAKaApsASgLKAsoAOwQ8BD0ADwQ+BD4APwQ/BEAAQARGBEYAPQRHBEcATgRIBEgAIQRJBEsATgRMBEwAIQRNBE4ATgRPBE8ATwRQBFEATgRSBFMAUgRUBFQAIQRVBFUATgRWBFYAIQRXBFcATgRYBFgAUARZBFkAUQRaBFoAAQRbBFsABARcBFwAAgRdBF0AIwReBF4AAwRfBF8AQgRgBHUAPQR2BHYAIgR3BHsAIQR8BJAATgSRBJUAIQSXBJgAIQSZBKcATgSoBKgATwSpBLEATgSyBLsAUgS8BNMAIQTUBNkATgTaBOAAUAThBOYAUQTnBP0AAQT+BQEAAgUCBQkAAwUKBQ0AQgUOBQ8ATgUQBRAAIQUrBSsAUAACAEMAGgAaAAIAGwAbAAQAHAAcAAYAHQAdAAcAHgAeAAgAHwAfABIAIAAgAAoAIQAhAAsAIgAiAAwAIwAjAA0AJAAkAA4AJQAlABAAJgAmABEAJwAnABIAKAApAA0AKgArAAcALQAtABMALgAuABQALwAvABUAMAAwABYA1wDeAAIA3wDiAAQA5gD7AAYA/AD8AAoA/QEBAAgBAgECAAkBAwEFABIBBgEWAAoBFwEdAAwBHgEhAA0BIgEjAA4BJAEmAA8BJwEoAA4BKQEpAA8BKgErAA4BLAEsAA8BLQEtAA4BLgEvABABMAExABEBMgEyABIBMwEzAAkBNAE0ABIBNgE5ABIBOgFBAA0BQwFEAA0BRQFUAAcBWwFbAAcBXAFcAAoBXQFiABMBYwFpABQBagFqAAsBbAFxABUBcgGBABYBiAGIABYBmgGbAAcBngGeAA4BnwGfABIBoAGgABUBoQGhAAsBogGiAA4BowGjABIEXARcAAEEXgReAAMEXwRfAAUE/gUBAAEFAgUJAAMFCgUNAAUAAgDaAAEAAQAwAAIAAgABAAMAAwBLAAQABAADAAUABwBLAAgACAADAAkACgBLAAsACwBAAAwADQBLAA4ADwACABAAEAADABEAEQBLABIAEgADABMAEwBLABQAFAAEABUAFQA6ABYAFgAFABcAFwA+ABgAGAA7ABkAGQBOABoAGgA8ABsAGwAGABwAHAAHAB0AHQBMAB4AIAANACEAIQAIACIAIgAJACMAIwBMACQAJAAKACUAJQALACYAJwBMACgAKQAMACoAKgANACsAKwAuACwALAANAC0ALQAMAC4ALgAOAC8ALwAPADAAMAAQADEAMgARADMAMwA0ADQANAASADUANQATADYASwABAEwATAAkAE0AUQADAFIAZgBLAGcAbQADAG4AfABLAH0AfQBAAH4AhgBLAIcAkAACAJEAqAADAKkArgBLAK8AtQAEALcAuwA6ALwA0gAFANMA1gA7ANcA3gA8AN8A4gAGAOMA5ABLAOUA5QADAOYA/AAHAP0BFgANARcBHQAJAR4BIQBMASIBIwAKASQBJgA5AScBKAAKASkBKQA5ASoBKwAKASwBLAA5AS0BLQAMAS4BLwALATABMABMATEBMQAMATIBOQBMAToBQQAMAUMBRAAMAUUBXAANAV0BYgAMAWMBaQAOAWoBawAIAWwBcQAPAXIBiAAQAYkBjAARAY0BlAASAZUBmAATAZkBmQANAZoBmgBKAZsBmwANAZ4BowAIAaQBpAAlAbABsAAjAbEBsQAtAbIBsgAyAbMBswAxAbQBtAArAbUBtQAqAbYBtgAeAbcBtwBIAbgBuAAXAbkBuQAsAboBugAjAcYBxgBVAccBxwBSAcgByABRAckByQBQAcoBygBPAcsBywAeAcwBzABJAc0BzQAXAc4BzgBHAdkB2gAVAdsB3AAUAd0B3QAVAd4B3gBTAeEB4QBUAeQB5QBBAeYB5gA9AecB5wAdAegB6AA9AekB6QAdAewB7AAYAe0B7QAZAe4B7gAYAe8B7wAZAfAB8AAaAfIB9gAaAfcB9wAcAfgB+AApAfkB+QAzAfoB+gAbAfsB+wBNAfwB/AAbAf0B/QBNAf4B/gAbAf8B/wBNAgACAAAYAgECAQAZAgICAgAYAgMCAwAZAgQCBAAaAgYCCAAaAgkCCQAbAgoCCgBNAgsCCwAbAgwCDABNAg0CDQAbAg4CDgBNAg8CDwAvAhECEQAoAhMCEwBCAhgCGQAWAhoCGgBCAhsCHAAiAh0CHQAmAh4CHgAnAiACKQBFAjQCPQAfAmQCZQBGAmYCZwBDAmgCaABGAmkCawBDAmwCbABGAm0CbgBDAm8CbwAhAnACcwBDAnQCdABGAnUCdQBDAnYCdgBGAncCdwBDAngCeABGAnkCeQAgAnoCegBGAnsCfAAgAn0CfQBDAn4CfgAgAn8CfwBDAoACgABGAoECgQBDAoIChABGAoUChQBDAoYChgBEAocCiABDAokCiQAhAooCjQBDAo4CjgBGAo8CjwBEApACkABGApECkQBDApIClABGApUClgAgApcClwBDApgCmABEApkCmQBDApoCmwBGAsoCygAcBDwEPQAaBD4EPgAWBD8EQAAiBEYERgA1BEgESAA2BEwETAA2BFQEVAA2BFYEVgA2BFgEWAA3BFoEWgA/BGAEdQA1BHYEdgA4BHcEewA2BJEElQA2BJcEmAA2BLwE0wA2BNoE4AA3BOcE/QA/BRAFEAA2BSsFKwA3AAIALgA1ADUAAQGVAZgAAQGzAbMABQG4AbgABQHNAc0ABQHZAdoAAwHbAdwAAgHdAd0AAwHsAewABwHtAe0ACAHuAe4ABwHvAe8ACAHwAfAACQHyAfYACQH3AfcADQH6AfoACwH7AfsADAH8AfwACwH9Af0ADAH+Af4ACwH/Af8ADAIAAgAABwIBAgEACAICAgIABwIDAgMACAIEAgQACQIGAggACQIJAgkACwIKAgoADAILAgsACwIMAgwADAINAg0ACwIOAg4ADAIYAhkABALGAscADgLIAsgACgLJAskADgLKAsoADQLLAssABgLMAswACgLNAs0ADgLSAtIABgLTAtMADgLUAtUABgQ8BD0ACQQ+BD4ABAACAVMAAgACAAEAAwADAAIABAAEAD8ABQAHAAIACAAIAD8ACQAKAAIACwALAAMADAANAAIADgAPAAQAEAAQAD8AEQARAAIAEgASAD8AEwATAAIAFAAUAG8AFQAVAAUAFgAWAAYAFwAXAB8AGAAYAAcAGQAZACAAGgAaAAgAGwAbAHAAHAAcAAkAHQAdAAsAHgAgAAwAIQAhAFwAIgAiAAoAIwAjAAsAJQAlAEAAJgAnAAsAKAApAHkAKgAqAAwAKwArAC8ALAAsAAwALQAtAHkALgAuAA0ALwAvAA4AMAAwAEEAMQAyAA8AMwAzAHUANAA0ABAANQA1AEIANgBLAAEATABMAB4ATQBRAD8AUgBmAAIAZwBtAD8AbgB8AAIAfQB9AAMAfgCGAAIAhwCQAAQAkQCoAD8AqQCuAAIArwC1AG8AtwC7AAUAvADSAAYA0wDWAAcA1wDeAAgA3wDiAHAA4wDkAAIA5QDlAD8A5gD8AAkA/QEWAAwBFwEdAAoBHgEhAAsBJAEmAHgBKQEpAHgBLAEsAHgBLQEtAHkBLgEvAEABMAEwAAsBMQExAHkBMgE5AAsBOgFBAHkBQwFEAHkBRQFcAAwBXQFiAHkBYwFpAA0BagFrAFwBbAFxAA4BcgGIAEEBiQGMAA8BjQGUABABlQGYAEIBmQGZAAwBmgGaADABmwGbAAwBngGjAFwBpAGkACEBsAGwAEcBsQGxACgBsgGyAFMBswGzACwBtAG0ACUBtQG1ACMBtgG2ABcBtwG3ACkBuAG4AEMBuQG5ACcBugG6AEcBxQHFAFUBxgHGAFEBxwHHAFQByAHIAC0ByQHJACYBygHKACQBywHLABcBzAHMACoBzQHNAEMBzgHOAFAB2QHaABEB2wHcAHoB3QHdABEB3gHeAHMB4gHiAHQB5AHlAEUB5gHmABUB5wHnABYB6AHoABUB6QHpABYB7AHsABIB7QHtAHEB7gHuABIB7wHvAHEB8AHwABMB8gH2ABMB9wH3AF8B+AH4AGIB+QH5AC4B+gH6AEQB+wH7ABQB/AH8AEQB/QH9ABQB/gH+AEQB/wH/ABQCAAIAABICAQIBAHECAgICABICAwIDAHECBAIEABMCBgIIABMCCQIJAEQCCgIKABQCCwILAEQCDAIMABQCDQINAEQCDgIOABQCDwIPACsCEQIRAEsCEwITAEYCGgIaAEYCHQIdACICHwIfAHsCIAIpAGECNAI9ABgCZAJlAB0CZgJnABkCaAJoAB0CaQJrABkCbAJsAB0CbQJuABkCbwJvABwCcAJzABkCdAJ0AB0CdQJ1ABkCdgJ2AB0CdwJ3ABkCeAJ4AB0CeQJ5ABsCegJ6AB0CewJ8ABsCfQJ9ABkCfgJ+ABsCfwJ/ABkCgAKAAB0CgQKBABkCggKEAB0ChQKFABkChgKGABoChwKIABkCiQKJABwCigKNABkCjgKOAB0CjwKPABoCkAKQAB0CkQKRABkCkgKUAB0ClQKWABsClwKXABkCmAKYABoCmQKZABkCmgKbAB0CnAKcAGQCngKeAGUCnwKfAGMCrwKvAGcCuwLFAF0CxgLHAGACyALIAF4CyQLJAGACygLKAF8CzALMAGACzQLNAF4C0wLTAGAC1QLVAGADTQNNAFcDTgNPAFkDUANQAFcDUQNRAFkDUgNSAHYDUwNTAFkDVANUADsDVQNWAFkDVwNXAFcDWANZAFoDWwNbADsDXANdAFkDXwNfAEoDYANgADMDYQNhAEgDYgNiADQDYwNjAEkDaQNpAFkDbANsADMDbgNuADwDcANwAD0DcQNxAE0DdAN0AFsDdwN3AFsDeAN4AGYDegN6AD0DfAN8ADwDfwN/ADwDgAOAAFIDgQOBAD4DggOCADwDgwODAEwDhAOEAD4DhQOHADwDiQOJAFsDjAOMADwDjQOOAD4DjwOPADwDkQORAD4DkwOUADwDoQOhAFYDogOkAFgDpgOmAFgDpwOnADIDqQOrAFgDrQOuAFgDrwOvADYDsAOxAFgDsgOyADYDswOzADUDtAO0AGkDtgO2ADIDtwO3AFgDuAO4AGgDuQO6AFgDuwO7ADUDvAO9AFgDvwO/AFgDwQPCAFgDwwPDADUDxAPEAFgDxQPFADYDxgPGAHIDxwPIAFgDywPLAFgDzAPMADUDzQPOAFgDzwPPAGkD0APQAFgD0gPSADYD0wPTAGsD1APVAFgD1gPWADID2APYAFgD2QPZADUD2gPaAFgD2wPbADYD3APdADED3gPeADID3wPfAGgD4APhAFgD4gPiADID4wPjAFYD5QPlAFgD5gPmADYD5wPnAFgD6APpADYD6gPrAGkD7APsADcD7gPvAHcD8APwAGwD8QPxADgD8gPyAG4D9AP2AHcD+AP5AHcD+gP6ADgD+wP7AHcD/QP9ADgD/wP/ADkEAAQAADgEAQQBAG4EAgQCAHcEBAQFAHcEBwQIAHcECgQKAHcEDAQNADgEDgQOAG0EDwQPAHcEEAQQADgEEQQRAE4EEgQTAGoEFAQUAE8EFgQWAHcEFwQXAG0EGAQZAHcEGgQaADkEGwQbAHcEHQQdADgEHgQeADoEHwQgAHcEIQQhAG4EIwQjAHcEJQQlAHcEJgQmADgEJwQoADoEKQQpAG4EKwQrAG0ELAQsAG4ELQQtAG0ELgQvADcEMAQxADgEMgQyAHcEMwQ0ADgENQQ2ADkEPAQ9ABMAAgALAbABsAAGAbYBtgAFAboBugAGAcsBywAFAeYB5gABAecB5wACAegB6AABAekB6QACAeoB6wADAhMCEwAEAhoCGgAEAAIBVAACAAIADgADAAMAPQAEAAQAEAAFAAcAPQAIAAgAEAAJAAoAPQALAAsADwAMAA0APQAQABAAEAARABEAPQASABIAEAATABMAPQAUABQAEQAVABUAEgAWABYAEwAXABcAbQAYABgAVgAZABkAbgAaABoAaAAbABsAPgAcABwAFAAeACAAGAAhACEAVwAiACIAFQAkACQAfQAlACUAWAAoACkAFwAqACoAGAArACsALQAsACwAGAAtAC0AFwAuAC4AGQAvAC8APwAwADAAWQAxADIAQAAzADMAVAA0ADQAQQA1ADUAGgA2AEsADgBMAEwAHgBNAFEAEABSAGYAPQBnAG0AEABuAHwAPQB9AH0ADwB+AIYAPQCRAKgAEACpAK4APQCvALUAEQC3ALsAEgC8ANIAEwDTANYAVgDXAN4AaADfAOIAPgDjAOQAPQDlAOUAEADmAPwAFAD9ARYAGAEXAR0AFQEiASMAfQEkASYAFgEnASgAfQEpASkAFgEqASsAfQEsASwAFgEtAS0AFwEuAS8AWAExATEAFwE6AUEAFwFDAUQAFwFFAVwAGAFdAWIAFwFjAWkAGQFqAWsAVwFsAXEAPwFyAYgAWQGJAYwAQAGNAZQAQQGVAZgAGgGZAZkAGAGaAZoAMQGbAZsAGAGeAaMAVwGkAaQASAGwAbAAXAGxAbEAXwGyAbIAYAGzAbMAUgG0AbQAKQG1AbUAJwG2AbYAHQG3AbcAUAG4AbgAQgG5AbkAXgG6AboAXAHFAcUANQHGAcYALAHHAccAMwHIAcgAMgHJAckAKgHKAcoAKAHLAcsAHQHMAcwAUQHNAc0AQgHOAc4AKwHZAdoAGwHdAd0AGwHeAd4ATAHfAd8ATQHhAeEATwHiAeIALgHmAeYARgHnAecAfwHoAegARgHpAekAfwHqAesAWwHsAewAHAHtAe0AQwHuAe4AHAHvAe8AQwHwAfAARAHyAfYARAH3AfcAWgH4AfgASgH5AfkAUwH6AfoARQH7AfsAfgH8AfwARQH9Af0AfgH+Af4ARQH/Af8AfgIAAgAAHAIBAgEAQwICAgIAHAIDAgMAQwIEAgQARAIGAggARAIJAgkARQIKAgoAfgILAgsARQIMAgwAfgINAg0ARQIOAg4AfgIPAg8AMAIdAh0ASQIfAh8ATgIgAikAdgI0Aj0AcwJkAmUAeAJmAmcAdAJoAmgAeAJpAmsAdAJsAmwAeAJtAm4AdAJvAm8AdwJwAnMAdAJ0AnQAeAJ1AnUAdAJ2AnYAeAJ3AncAdAJ4AngAeAJ5AnkAdQJ6AnoAeAJ7AnwAdQJ9An0AdAJ+An4AdQJ/An8AdAKAAoAAeAKBAoEAdAKCAoQAeAKFAoUAdAKGAoYAgAKHAogAdAKJAokAdwKKAo0AdAKOAo4AeAKPAo8AgAKQApAAeAKRApEAdAKSApQAeAKVApYAdQKXApcAdAKYApgAgAKZApkAdAKaApsAeAKcApwAeQKeAp4AegKiAqIAewKvAq8AfALIAsgAcgLKAsoAWgLNAs0AcgNNA00ACQNOA08AOwNQA1AACQNRA1EAOwNSA1IARwNTA1MAOwNUA1QACgNVA1YAOwNXA1cACQNb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\"","module.exports = \"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AEj/5gBK//AAUv/yAFP/7wBU//AAVwAXAFsABgB8/7IAngAjAJ8AFACgACEAoQAfAAQAFP/nABX/6AAW/+0AGv/YAAEATQAIABUAFP/bABX/2QAW/+AAGP/yABr/ywAb/+0ALf+7ADD/+AA2/+4AN/+yADn/5AA7/8wAPP+6AD3/4wBJ/+YATv/4AFb/9QBZ//UAW//3AF3/0QB8/98AFAAF/48ACv+jABT/4QAX/+oAGv/pABz/zgAm//MAKv/yADL/7gA0/+sAN/+4ADj/7AA5/8gAPP/QAEn/8QBZ/98Auf+iALr/oQC8/48Avf+PACMAEv8lABP/7gAV//QAF//wABj/8QAZ/+IAG//yACT/4QAm/+cAJ//0ACr/6QAt/8gAMv/qADT/7AA6//UARP/TAEb/1QBH/9kASP/SAEr/1wBQ/90AUf/lAFL/2ABT/9YAVP/VAFX/6gBW/90AWP/gAFn/8gBa/9sAW//tAFz/5ABd/+oAfP/EAJH/7AANAAz/7wAR/+kAEv/jABX/7gAa//UAN//tADv/8wA8//AAPf/wAD//7QBA/+YAYP/uAHz/8gABABL/7wARAAr/8wAO//UAEP/hABUACAAX/+wAHP/xACD/6wAy//YANP/1ADf/7wA4//UAOf/vADz/7gA//+UAbP/1AHH/4QB8AAsABAAM//UAEv/rAD//9QBA//IAEgAK//QADP/wABH/8AAS/+gAFP/1ABX/9AAW//UAGv/xAC3/9QA3//QAOf/1ADz/7gA9//UAP//rAED/7gBg//AAbP/0AHz/9gACABL/7QBA//YADAAK/+QADP/1ABL/8QAU/+oAGv/hADf/4wA5/+4APP/kAD//4ABA/+YAYP/tAGz/4QALAAb/7gAO/+4AEP/jABH/xwAS/84AIP/1ACT/9AAt/9gAY//wAHH/9AB8/9UABAAQ/+cAEv/uACD/9gBx/+cABgAM//YAEv/zADf/8QA8//MAP//uAED/9QADADf/twA5/+4APP/ZAAQAFP/jABX/5QAW/+oAGv/VAAUACv/wADf/twA5/+cAPP/UALr/5QAjAAr/9AAN//EAFP/xABr/8AAi//YAN//aADj/+QA5/+wAPP/cAD//4gBF//kARv/7AEj/+wBJ//MASv/7AEv/+gBM//oATf/6AE7/+wBP//kAUP/7AFH/+gBS//sAVP/7AFX/+QBX//cAWP/5AFn/8QBa//kAW//7AFz/+QCR//sAuf/sALr/8ADF/+sAGAAS/+0ALf/7ADf/4gA7/+kAPP/4AD3/+QA///UAQP/tAEn/+ABN//sATv/7AFH/+wBV//sAVv/5AFf/+ABZ//kAW//4AFz/+wBd//MAYP/2AHz/+wCR//sAoAAXAKEAFQASAA3/8wAm//sAKv/6ADL/+QA0//kANv/5ADf/3AA4//sAOf/7ADr/+gA7/94APP/6AD//8wBJ//cAV//4AFn/9gBb//gAoAATACUADP/uABH/2wAS/94AFf/qACL/9QAk//sALf/gADf/2QA5//oAO//fADz/8AA9/+YAP//vAED/5QBE//YARf/6AEb/+ABH//kASP/3AEr/+QBL//oATP/5AE3/+gBO//gAT//6AFD/+gBR//sAUv/6AFP/9wBU//kAVv/6AFr/+gBg/+4AfP/dAJH/+ACgAAkAoQAGAB8AEP/rABf/9QAc//IAJv/pACr/6QAy/+YANP/mADb/+gA4//YAOv/0AEX/+QBG//kAR//6AEj/+QBJ//AASv/4AE//+ABQ//gAUf/1AFL/9wBT//sAVP/6AFX/8gBX/+0AWP/yAFn/4gBa//QAW//2AFz/7gCR//sAr//4ADcACf/1AA0AFwAQ/+MAEf/EABL/xAAV//EAFv/yABj/9gAZ//EAG//wAB3/5wAj/+IAJP/dACb/3wAn//gAKv/gAC3/eQAy/+EANP/lADX/+wA2/+YAOP/3ADr/7wBE/70ARf/4AEb/xABH/8cASP+/AEn/8QBK/8cAS//6AE7/9wBP//YAUP/IAFH/0ABS/8sAU/+8AFT/xQBV/9kAVv/PAFf/7wBY/9UAWf/nAFr/xgBb/98AXP/RAF3/2wBr//YAfP+GAJH/3wCeABMAr//IAML/8wDD//EAxQALAAoAEf/xABL/6wA3//YAO//qADz/+QA9//UAQP/1AEn/+QB8//sAoAAJABwAEv/zAET/9QBF//cARv/0AEf/9gBI//MASv/2AEv/+QBM//kATf/5AE7/+QBP//gAUP/5AFH/+QBS//YAU//2AFT/9gBV//gAVv/3AFj/9wBZ//oAWv/3AFv/+QBc//cAXf/5AJH/+QCgAAoAoQANAB4AEP/4ABL/9QBE//QARf/3AEb/9ABH//YASP/yAEn/+wBK//UAS//5AEz/+ABN//gATv/5AE//+ABQ//gAUf/4AFL/9QBT//YAVP/2AFX/+ABW//cAWP/2AFn/+QBa//cAW//4AFz/9wBd//gAkf/5AKAACwChAA0AHwAR//cAEv/rADv/+wBE//gARf/4AEb/+ABH//kASP/4AEr/+QBL//kATP/5AE3/+QBO//kAT//4AFD/+ABR//kAUv/5AFP/9gBU//kAVf/4AFb/+ABY//oAWf/7AFr/+ABb//oAXP/3AF3/+QB8//sAkf/5AKAABgChAAcAIwAQ/9sAFQASABf/8AAc//AAJv/dACr/3QAy/94ANP/gADb/+wA4//MAOv/0AEAACABE//oARf/0AEb/7gBH//QASP/tAEn/6gBK/+4AS//6AE//8ABQ//oAUf/1AFL/7ABU//EAVf/xAFf/2wBY/+EAWf/XAFr/6gBc/+EAYAALAGv/8gChABEAwv/lACwACf/wAAr/owAN/6IAEP+rABT/5QAVAAsAF//HABr/6gAc/7YAIv/yACb/4gAq/+AAMv/XADT/0QA3/4YAOP/YADn/qwA6//YAPP/DAD//uABF//EARv/1AEf/+gBI//UASf/iAEr/9gBL//kAT//wAFH/+ABS//IAVP/4AFX/9ABX/6UAWP/mAFn/rgBa//UAXP/lAGv/4gBx/5YAuf+kALr/pADC/8UAw//sAMX/oQAdABL/8gBE//UARf/4AEb/9QBH//cASP/0AEn/+wBK//YAS//5AEz/+QBN//kATv/5AE//+ABQ//kAUf/5AFL/9gBT//cAVP/2AFX/+QBW//cAWP/3AFn/+gBa//gAW//5AFz/9wBd//gAkf/5AKAACgChAAwAHQAS//YARP/1AEX/+ABG//QAR//3AEj/8wBJ//sASv/2AEv/+QBM//kATf/5AE7/+QBP//gAUP/5AFH/+QBS//YAU//3AFT/9gBV//kAVv/3AFj/9wBZ//oAWv/4AFv/+QBc//cAXf/5AJH/+QCgAAwAoQAOACYADP/uABH/6AAS/+IAFf/tABr/8gAi//IALf/wADf/0AA5//gAO//gADz/6QA9/+gAP//sAED/4wBE//gARf/7AEb/+gBH//oASP/5AEr/+gBL//oATP/6AE3/+gBO//kAT//7AFD/+wBR//sAUv/7AFP/+ABU//oAVf/7AFb/+wBa//oAXP/7AGD/7QB8/+wAkf/4AKAAAwAbABD/8wAR/9MAEv/SABX/8wAj//YAJP/5AC3/qgA7/+sAPf/1AET/7wBG//IAR//0AEj/7wBK//QATP/7AE7/+wBQ//kAUv/1AFP/8QBU//IAVv/6AFr/9wB8/7IAkf/5AJ8AGACgADgAoQA0AB0ALf/2ADf/2QA5//kAO//3ADz/8AA//+4ARP/5AEX/+gBG//kAR//6AEj/9wBK//kAS//6AEz/+gBN//sATv/6AE//+gBQ//sAUf/7AFL/+gBT//kAVP/5AFX/+wBW//sAWv/5AFz/+gCR//oAoAAIAKEACQAHABUAIAA3/94AQAANAGAAFQCfAAoAoAAhAKEAHgAWABL/9AA7//cASf/3AEv/+wBM//sATv/7AE//+gBQ//oAUf/5AFP/+wBV//kAV//2AFj/+wBZ//UAWv/7AFv/9wBc//gAXf/4AJH/+gCfABEAoAAeAKEAJwBMAAn/7QANABsAEP+3ABH/vAAS/8EAE//wABf/9gAZ/9MAG//vABz/9AAd/7sAIgAPACP/ugAk/8sAJv/HACf/9wAq/8oAK//7AC3/ngAy/8gAM//6ADT/2QA1//sANv/5ADr/+AA/AAkAQAAgAET/cwBF/+UARv9zAEf/dABI/3EASf/OAEr/dABL/+QATP/tAE7/3wBP//gAUP9zAFH/dQBS/3QAU/9wAFT/cwBV/4cAVv96AFf/zwBY/3YAWf+hAFr/cABb/40AXP9yAF3/gABgABEAa//kAHz/qgCR/88Akv+VAJP/ggCU/4YAlf+BAJf/lgCa/48AnP9+AJ4AMACg//UAof/iAKL/nwCj/68Apf+FAKb/hQCq/8wArP+GAK//nADC/70Aw//AAMUAHQAiAAz/9gAR/+MAEv/gABX/9gAk//sALf/qADv/6gA9//gARP/1AEX/+QBG//YAR//3AEj/9QBK//cAS//6AEz/9wBN//oATv/4AE//+QBQ//kAUf/6AFL/+ABT//QAVP/2AFX/+wBW//kAWP/7AFr/+ABc//oAfP/mAJH/9wCf//0AoAAcAKEAHwAuAAn/9gANABQAEP/hABH/ywAS/8sAGf/uAB3/6QAj/+AAJP/sACb/7gAn//sAKv/wAC3/yQAy//MANP/0ADr/+wBAABUARP/RAEb/0gBH/9UASP/OAEn/+gBK/9QATv/7AFD/1wBR/9kAUv/TAFP/1ABU/9UAVf/jAFb/1QBX//gAWP/WAFn/8wBa/9YAW//sAFz/2QBd/+gAfP+8AJH/4gCeABUAnwAJAKAAHAChACkAr//ZAML/6wAgABH/5wAS/+EAJP/6AC3/7gA7//MAPf/6AET/8wBF//gARv/0AEf/9QBI//MASv/1AEv/+ABM//gATf/6AE7/9gBP//cAUP/2AFH/+ABS//YAU//yAFT/9QBV//kAVv/2AFj/+QBa//UAXP/4AF3/+wB8/+kAkf/0AKAAGwChABsAIAAK//YAEP/cABUAGQAX/+wAHP/pACb/4wAq/+IAMv/iADT/5AA4/+0AOv/0AEAAEABF//MARv/2AEf/+gBI//YASf/oAEr/9wBL//sAT//wAFH/+wBS//QAVP/4AFX/9wBX/9gAWP/qAFn/0gBa//MAXP/qAGAADgBr//UAwv/kAEAACf/sAA0AIQAQ/8QAEf+zABL/vgAT//AAF//zABj/9QAZ/+EAG//zAB3/1QAj/80AJP/bACb/2gAn//UAKP/6ACr/2gAr//kALf+yADL/3gAz//kANP/kADX/+QA2//oAOv/3AEAAEwBE/6oARf/7AEb/rgBH/7UASP+mAEn/9ABK/7QAS//7AE7/+QBP//oAUP+2AFH/vQBS/7YAU/+vAFT/sQBV/88AVv+pAFf/8ABY/7YAWf/hAFr/uABb/9YAXP+6AF3/zgBgAAsAa//rAHz/oQCR/9kAkv+wAJr/sACeABwAoAARAKEAIQCj/8IAqv/JAK//uwDC/9kAw//uACEACf/2ABD/6QAX/+4AHP/tACb/7wAq/+8AMv/sADT/7AA4//cAOv/7AEX/+QBG//kAR//7AEj/+gBJ/+4ASv/5AEv/+gBO//sAT//4AFD/+QBR//YAUv/4AFT/+gBV//MAV//rAFj/8wBZ/+EAWv/2AFv/+QBc//AAa//wAJH/+wChABIAIgAT/+sAFv/1ABf/5QAY//QAGf/iABv/7QAc/+QAJv/fACr/4AAt/+8AMv/gADT/4gA3ABoAOv/2AET/8wBG/+YAR//rAEj/5QBJ//UASv/nAFD/8wBR/+8AUv/mAFT/6ABV/+8AVv/wAFf/7wBY/+MAWf/nAFr/5QBc/+UAXv/tAJ4ADgChAA4AGwAK/8IAE//yABT/3wAX/+QAGf/0ABr/5AAc/9kAJf/2ACb/7wAq/+4AMv/sADT/6wA3/8IAOP/pADn/zwA6//MAPP/YAEX/9QBJ/+wAT//0AFX/9gBX/+IAWP/wAFn/3wBa//UAXP/wALr/vAAIACMACAA3/4IAOf/hADz/xAA//+kAQAALAGAAEgDF//gAJAAK//gADP/tAA3/9AAR//YAEv/oACL/7AAk//oAJf/2ACf/9wAo//gAKf/2ACv/+AAs//YALf/4AC7/9gAv//YAMP/0ADH/9QAz//UANf/4ADb/9wA3/3EAOP/4ADn/1gA6//oAO//SADz/tAA9/+kAP//fAED/5gBJ//wAYP/sAHz/8gC5/+cAuv/tAMX/6QAfAAz/9gAQ/+UAEv/0ACL/7wAl//oAJv/5ACr/+QAs//oALv/7AC//+wAw//gAMf/6ADL/+QAz//sANP/5ADb/+QA3/2kAOP/0ADn/2AA6//gAO//eADz/sQA9//gAP//dAED/8ABW//wAWP/8AFv/+gBg//QAuf/2AMX/7gAWABD/9wAl//oAJv/6ACf/+gAo//oAKf/5ACr/+gAr//oALP/5AC7/+QAv//kAMP/5ADH/+QAy//kAM//5ADT/+QA1//oAOP/4ADr/+gA9//sAoAAVAKEAGQAeAAz/9QAQ/+sAEv/0ACL/7gAl//gAJ//6ACj/+gAp//oAK//7ACz/+QAu//gAL//4ADD/9wAx//gAMv/7ADP/+AA0//sANf/6ADf/aAA4//QAOf/VADr/+gA7/+sAPP+zAD3/+gA//9wAQP/wAEn//ABg//UAxf/tADEABQAhAAoAFwAMABUADQA6ABD/3wAR/+4AEv/lAB3/8gAiAC4AI//vACT/9QAlAAYAJv/6ACr/+wAt/+EAMAAHADMACgA3AGMAOQBCADsAMwA8AEEAPQAwAD8AGABAAEEARP/tAEb/7QBH//EASP/oAEr/8ABMAAwAUP/wAFL/8ABT/+4AVP/tAFb/9wBY//sAWv/1AF8AFwBgADsAfP/hAJ4AUwCfAAMAoAAUAKEAQgCv//sAuQArALoADgDC/+8AxQA2ACAADf/1ACL/7gAl//YAJv/7ACf/+AAo//gAKf/4ACr/+wAr//gALP/4AC7/9wAv//cAMP/2ADH/9wAy//oAM//3ADT/+QA1//gANv/7ADf/XQA4//EAOf/SADr/+AA8/7cAPf/6AD//1ABJ//UAV//8AFn/+QC5/+wAuv/yAMX/5wASAAQADgAK//YADf/yAA8ABwARABIAHQAKAB4AAQAjABQAN/+CADn/3QA8/8QAP//iAFn/+wC5/+YAuv/tALsABwC+AAcAxf/lABoAEv/0ACT/+wAl//kAJv/7ACf/+gAo//oAKf/6ACr/+wAr//oALP/6AC7/+QAv//kAMP/4ADH/+QAy//oAM//5ADT/+wA1//oANv/7ADf/4wA4//YAOv/7ADv/+wA8//sAPf/2AKEABwAXACX/+QAm//sAJ//6ACj/+gAp//oAKv/7ACv/+wAs//oALv/5AC//+gAw//gAMf/5ADL/+gAz//kANP/6ADX/+gA2//sAN//3ADj/9AA5//kAOv/6ADz/9wA9//sAGQAQ/9oAJf/6ACb/6QAq/+oAMv/qADT/6gA3/5AAOP/wADn/6gA6//QAPP/cAD//7ABE//wARv/wAEf/9gBI/+8ASv/xAE///ABS/+8AVP/zAFb/+gBY//MAWv/wAML/6QDF/+8AAwBAAAUAYAAJAHH/4wAOAAQADgAPAAgAEQAaACMAEwA3/4kAOP/6ADn/3gA8/8gAP//jAEAADwBgABMAuwAIAL4ACADF//IACgAQ//gAJf/7ADT/+wA3/2wAOP/3ADn/1wA8/7gAP//bALn/+ADF/+wAIwAM/+0ADf/3ABL/6gAi/+wAJP/7ACX/9QAn//cAKP/3ACn/9gAr//gALP/2AC7/9gAv//YAMP/zADH/9AAz//UANf/3ADb/+AA3/10AOP/1ADn/0wA6//oAO//WADz/sAA9/+8AP//WAED/5wBJ//QAWf/8AF3/+ABg/+wAfP/4ALn/7QC6//MAxf/qACEADP/uABL/6wAi/+0AJP/7ACX/9QAn//cAKP/3ACn/9gAr//kALP/2AC7/9QAv//UAMP/0ADH/9AAz//UANf/4ADb/+QA3/14AOP/1ADn/1AA6//oAO//WADz/swA9/+8AP//XAED/5wBJ//cAXf/6AGD/7AB8//gAuf/wALr/9wDF/+sAIwAN//YADwAJACL/7QAl//YAJv/6ACf/+AAo//gAKf/4ACr/+gAr//gALP/4AC7/9wAv//cAMP/2ADH/9wAy//kAM//3ADT/+QA1//gANv/6ADf/WQA4//EAOf/RADr/9wA8/7QAPf/4AD//1ABJ//MAV//8AFn/+QC5/+4Auv/0ALsACQC+AAkAxf/pACcADP/uAA0ABQAQ/8sAEf/HABL/1AAi/+wAI//yACT/8gAl//oAJ//4ACj/+QAp//YAK//4ACz/+AAt/6AALv/4AC//+AAw//YAMf/3ADP/+AA1//kANv/6ADf/kgA5//QAO/+1ADz/2wA9/9QAP//uAED/4wBE//QARv/3AEf/+wBI/+8ASv/6AFL//ABT//kAVP/5AGD/7QB8/7sAHgAM//UAEP/yABL/9AAi/+8AJf/4ACf/+gAo//kAKf/5ACv/+wAs//kALv/4AC//+AAw//cAMf/3ADL/+wAz//gANP/7ADX/+QA3/2UAOP/1ADn/1gA6//oAO//tADz/sQA9//oAP//cAED/8QBJ//sAYP/2AMX/7gAIABD/4AA3/5cAOP/6ADn/7gA8/+AAP//tAML/7gDF//UAHwAM/+4AEf/3ABL/6AAi/+4AJP/6ACX/9wAn//gAKP/4ACn/9wAr//gALP/3AC3/+QAu//cAL//3ADD/9gAx//YAM//3ADX/+AA2//kAN/9qADj/+AA5/90AOv/6ADv/1QA8/78APf/rAD//4gBA/+cAYP/tAHz/8wDF//MAJwAM//EADQAPABD/6QAR/+EAEv/ZAB3/+AAi//MAI//vACT/8gAn//sAKf/5ACv/+wAs//sALf/PAC7/+wAv//sAMP/5ADH/+wA1//sAN/+XADn/+wA7/9UAPP/uAD3/5gA///UAQP/sAET/8ABG//MAR//2AEj/7ABK//YAUP/7AFL/9wBT//MAVP/zAFb//ABa//oAYP/yAHz/zgAhAAz/8QAN//YAEv/wACL/7QAl//YAJ//4ACj/+AAp//gAK//5ACz/9wAu//YAL//2ADD/9QAx//YAM//2ADX/+AA2//sAN/9gADj/9AA5/9YAOv/6ADv/4AA8/7YAPf/0AD//1gBA/+0ASf/3AFn/+wBd//sAYP/wALn/7QC6//QAxf/oABQABAAUAAwACAAPAA8AEP/pABEAGAAdABIAHgABACMAGwAm//gAKv/2ADL/8gA0//IAN/+eADn/4wA8/98AP//wAEAADQBgAA0AuwAPAL4ADwAaABD/+AAi//AAJf/4ACb/+gAn//oAKP/6ACn/+gAq//oAK//6ACz/+gAu//kAL//5ADD/+AAx//kAMv/5ADP/+QA0//kANf/6ADf/cQA4//QAOf/YADr/+QA8/8IAPf/7AD//4ADF/+8AGgAQ/+UAIv/yACX/9wAm//kAJ//6ACj/+QAp//oAKv/5ACv/+gAs//kALv/4AC//+AAw//cAMf/4ADL/+AAz//gANP/4ADX/+QA3/2wAOP/yADn/1gA6//gAO//7ADz/xAA//98Axf/vABIAC//2ABP/9AAX/+cAGf/xABz/5gAm/+0AKv/tADL/6wA0/+sAOP/0ADsAFgBJ//YAV//vAFj/8wBZ/+oAXP/zAF7/7wB8AA0AAgCgABEAoQATAAEADP/2AAMAN/++ADz/7gBNACUAAgAX//EAGv/xAAYALf/uADf/4AA7/+sAPP/sAD3/6gB8/+sAAQAZ//IABQAU/+IAFf/RABb/4AAa/9sAT//jADIAJP/pACX/6wAm/+wAJ//rACj/6wAp/+wAKv/tACv/6wAs/+wALf/dAC7/6wAv/+sAMP/rADH/7gAy/+0AM//tADT/7QA1/+0ANv/uADf/sAA4/+wAOf/jADr/7AA7/+wAPP/dAD3/5ABE/+gARf/rAEb/6ABH/+gASP/nAEn/9ABKAAYAS//rAEz/6QBO/+sAT//qAFD/6QBR/+wAUv/pAFT/5wBV/+0AVv/mAFf/8QBY/+sAWf/xAFr/6QBb//AAXf/sAHz/4AABAAwACAACAAwAOAA/ADIAAgAMAB4APwANACIACv/2AAz/9gAN//IAEv/yACX/9QAn//gAKP/3ACn/+AAr//kALP/2AC7/9gAv//UAMP/0ADH/9QAy//oAM//1ADT/+gA1//gAN//aADj/8QA5/+gAOv/5ADv/5gA8/+IAPf/3AD//7ABJ//cAV//5AFn/+ABb//sAXf/5ALn/9gC6//gAxf/1AAIADQAZAMUABwABAMUAFgAGAA0AIgAiAAkAQAArAGAAHAC5AA4AxQAQAA8ABAATAAUAMgAKADAADQAUACIADgBFABkASwAZAE4AFQBPAAcAXwAqAGAABwBrAAcAuQAnALoAOADFACAAEwAEABQABQAyAAoALAAMAA8ADQAsACIAPAA/ABsAQAAkAEUAGgBLABkATAAUAE0AGQBOABUATwAHAF8ALABgAC4AuQA1ALoALwDFAFIADwAR/6IAJP/uAC3/swBE/+kARv/sAEf/3wBI/+YASv/wAFL/8gBT//AAVP/wAHz/sACfAA4AoAAtAKEALgATABH/oQAS/7oAI//VACT/6wAm//UAKv/3AC3/swBE/+UARv/pAEf/2wBI/+IASv/sAFL/7gBT/+wAVP/tAHz/rQCgAB0AoQAmAML/9AAEABH/jwCfAAsAoAAqAKEAKAADABH/jwCgABoAoQAkAAIABf+CAE0ACAADADf/uwA5//AAPP/nAAkALf/wADf/twA5/+sAO//cADz/zgA9//YASf/0AF3/7wB8/+4AAwAX//YAGv/2ABz/8AAIACT/9wAt/68ANwAKAEf/9gB8/8QAnwAVAKAANAChADQAAgASAAUABgAAAAkACwACAA0AHQAFACAAIAAWACMAPwAXAEQAYAA0AGIAYgBRAGQAZABSAGsAbABTAHEAcQBVAHUAdQBWAIIAggBXAIQAhQBYAJEAkQBaAJUAlQBbAJ4AoQBcALkAvgBgAMIAxQBmAAAAAAABAAAAAMmJbzEAAAAAywVUGwAAAADLBcTm\"","module.exports = \"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\"","module.exports = \"AAEAAAAOAIAAAwBgT1MvMoC0NVIAAAFoAAAAYGNtYXCqFtWJAAAF0AAAA0hjdnQgBG8BHgAACoQAAAAgZnBnbZJB2voAAAkYAAABYWdhc3AAAAAQAAMvgAAAAAhnbHlmseoi6QAADrAAAxZoaGVhZPtgDPIAAADsAAAANmhoZWEHUgKwAAABJAAAACRobXR44Dv8iQAAAcgAAAQIbG9jYQHqXfQAAAqkAAAEDG1heHADGAjIAAABSAAAACBuYW1lfdw2MgADJRgAAAdocG9zdD72VQUAAyyAAAADAHByZXBoBoyFAAAKfAAAAAcAAQAAAAEAAANt2+5fDzz1AAsEAAAAAADMWwccAAAAAMxuwo7/Zv5xBBED2AAAAAkAAgABAAAAAAABAAAD2P5xAAAEE/9m/ykEEQABAAAAAAAAAAAAAAAAAAABAgABAAABAgQVAAQDPgAEAAEAAAAAAAoAAAIAAXMAAwABAAMBrAGQAAUAAALNApoAAACPAs0CmgAAAegAMwEAAAACAAAAAAAAAAAAgAAAL1gAIEoUAAAAAAAAAERJTlIAQAAg+wID2P5xAAAD2AGPAAAAAQAAAAAAAAAAAAAAIAAAAWYAAALU/+4B7AAeAlL/9gDa/+wCDgAJAawAGQG4/2YB3P/NApP/ogHm/8MCbf/sAdcAHAJxABQCYAAUAPcAFAJyACgBPAAoAU8AHwCyADgBrwAJAcoAFAFmAAAAtwAAAQoADgIZ//UBjgAUAnAACgIlAB8AewAOANgAHgDt//UCBwAfAdQACQCmABMBrwAJAI4AEQEOAAECZQAoAUr/9wIsAAkCIAAUAir/6gI5ADICVQAfAjYAMwJMACkCTgAUAJAAEwCmABMBTf/3AbYACgFNABQB3v//AxoAHgLv/8sC0/+3AnUAHgLU/+4Clv+9Ai7/4gMAAAAC1P96ASL/1QIBAAACWP/sAlL/9gMw/+EC5P+kAvQAHgJw/94C5gAtAmz/xwIOAAkCEP/DAoP/zgIi/40DMP+JAmb/ewG4/2YCbf/sAK8AJwD6/+wApf/gAXMACgIp//8BfgBoAdcAIwH3/7wB3wAkAgoAKQHRACQBcf//AgEAJAHb/8YA9v/5AOL/pAGW/9sA2v/wAqn/3wIP//MB5wAeAfv/1wIHAB8Buv/sAawAGQFO/80CB//xAcr/7gJt/9IB1P/DAdz/zQHXABwA3wAoAMQANgDkABQBhwAVAu//ywLv/8sCdQAeApb/vQLk/6QC9AAeAoP/zgHXACMB1wAjAdcAIwHXACMB1wAjAdcAIwHfACQB0QAkAdEAJAHRACQB0QAkAPb/+QD2//kA9v/OAPb/+QIP//MB5wAeAecAHgHnAB4B5wAeAecAHgIH//ECB//xAgf/8QIH//EBIQAXAOcAFAHFABQB2f/xAW4AKADTABICDQApAn3//wJ+ABkCfgAZAx3//wF+AGgBfgA3AbYACgOM/60C9AAeAa8ACQGvAAkBrwAJAd7/9gH6AAoCMQAfAU4ACgFDAAoDBwAjAecAHgHeAAkAt//2AbgACQGv/64BhwAVAXIAFAFyAAkBmQARAWYAAALv/8sC7//LAvQAHgQTACQDMQAeAa8ACQI9AAkBJAAfAQ8ACgCUAB8AgAAKAa8ACQFJ//gB3P/NAbj/ZgIoADMCNv/+APAAFgDwAAkB////Agj//wE6ABQAoQAeAIAACgEPAAoCcAAKAu//ywKW/70C7//LApb/vQKW/70BIv/VASL/1QEi/9UBIv/VAvQAHgL0AB4C9AAeAoP/zgKD/84Cg//OAPb/+QF+AB8BfgAPAX4AJgF+ACMBfgCMAX4AXwF+AEsBfgAmAX4ASAF+AB8CRQAPAa8ACQDi/6QDI//VAdj/+QHb/8YBIv/RAPb/vQIBAAAA4v+kAX4AgAGW/9sBlv/bAmz/xwG6/+wCUv/2AUn/8ALk/6QCD//zAmz/xwJs/8cBuv/sAAAAAwAAAAMAAAAcAAEAAAAAAkIAAwABAAAAHAAEAiYAAABEAEAABQAEAH4A/wEpATUBOAFEAVQBWQFhAXgBfgGSAjcCxwLdIBQgGiAeICIgJiAwIDogRCCsISIiAiISIkgiYCJlJcr2w/sC//8AAAAgAKABJwExATcBPwFSAVYBYAF4AX0BkgI3AsYC2CATIBggHCAgICYgMCA5IEQgrCEiIgIiEiJIImAiZCXK9sP7Af////YAAP/KAAD/wAAAAAAAAP6l/07+jv8g/rcAAAAA4KoAAAAAAADgkOCh4JDgg+Ac333eqN4C3mveQt5C2voKMwXKAAEAAABCAAAA/gAAAQQBDgESAAAAAAAAAAAAAAEOARAAAAEYARwBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3ALAAlwCYAOwAqAATAJkAoQCeAKsAtACxAO0AnQDkAJYApQASABEAoACpAJsAzgDoAA8ArAC1AA4ADQAQAK8AuADUANIAuQB1AHYAowB3ANYAeADTANUA2gDXANgA2QABAHkA3QDbANwAugB6ABUApADgAN4A3wB7AAcACQCcAH0AfAB+AIAAfwCBAK0AggCEAIMAhQCGAIgAhwCJAIoAAgCLAI0AjACOAJAAjwDDAK4AkgCRAJMAlAAIAAoAxQDhAO8A8AD0APUA+wD8AAMABAD9AP4AuwC8AP8A+QD6AQABAQDiAOsA5QDmAOcA6gDjAOkAwQDCAM8AvwDAANAAlQDNAJoAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0AHV2d3h5ent8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpAClpqeoqaoAAAAAq6wAra6vsLEAsrMAtLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29wA3d7f4OHi4+Tl5ufo6errsAAsS7AJUFixAQGOWbgB/4WwRB2xCQNfXi2wASwgIEVpRLABYC2wAiywASohLbADLCBGsAMlRlJYI1kgiiCKSWSKIEYgaGFksAQlRiBoYWRSWCNlilkvILAAU1hpILAAVFghsEBZG2kgsABUWCGwQGVZWTotsAQsIEawBCVGUlgjilkgRiBqYWSwBCVGIGphZFJYI4pZL/0tsAUsSyCwAyZQWFFYsIBEG7BARFkbISEgRbDAUFiwwEQbIVlZLbAGLCAgRWlEsAFgICBFfWkYRLABYC2wByywBiotsAgsSyCwAyZTWLBAG7AAWYqKILADJlNYIyGwgIqKG4ojWSCwAyZTWCMhsMCKihuKI1kgsAMmU1gjIbgBAIqKG4ojWSCwAyZTWCMhuAFAioobiiNZILADJlNYsAMlRbgBgFBYIyG4AYAjIRuwAyVFIyEjIVkbIVlELbAJLEtTWEVEGyEhWS0AAAC4Af+FsASNAAAVADsALwA2ADQAPgBEAEoAAAAe/qkABwINAAAC/QAAAAAAAAAAAAAAAAYYAAAL8AAAEOgAABNwAAATiAAAE6AAABO4AAAT0AAAG4AAACEYAAAhMAAAIUgAACjUAAAvXAAAMQwAADkkAAA8ZAAAP6gAAEFIAABCVAAARegAAEXoAABIMAAASdQAAE8AAABUFAAAXRwAAGTUAABlrAAAaEAAAGrkAABuyAAAcOwAAHGgAAByrAAAc0AAAHWAAAB7zAAAfsQAAIYcAACNdAAAkvAAAJmIAACgVAAApSAAAKs8AACy3AAAs+AAALUIAAC3RAAAuQgAALsgAADA/AAAyuQAANLcAADa7AAA4jQAAOfMAADumAAA9JQAAQBcAAEIbAABC7QAARG4AAEaKAABHngAASaAAAEtNAABNOAAATsUAAFDSAABSvQAAVI4AAFWSAABW6QAAWF8AAFqOAABccgAAXd0AAF9aAABf8gAAYIEAAGEcAABhqwAAYfMAAGIhAABjggAAZP8AAGXjAABnYgAAaFsAAGmKAABrewAAbNQAAG1oAABueAAAb8UAAHBFAABx3AAAczMAAHRZAAB1vwAAdwIAAHgVAAB5PwAAelEAAHtIAAB8PgAAfZoAAH7KAACAvgAAgcAAAIKGAACC/QAAg70AAIQWAACEHAAAhlgAAIh4AACIfgAAiIQAAIiKAACIkAAAiJYAAIicAACIogAAiKgAAIiuAACKTwAAi38AAIuFAACLiwAAi5EAAIuXAACLnQAAi6MAAIupAACLrwAAi7UAAIu7AACLwQAAi8cAAIvNAACL0wAAi9kAAIvfAACL5QAAi+sAAIx0AACMyAAAjdcAAI9BAACQuAAAkOoAAJIyAACTyAAAlfwAAJgeAACZiQAAmbgAAJnuAACaiwAAnSEAAJ9mAACgIQAAoPwAAKHKAACjMQAApEQAAKYRAACnEQAAp+AAAKniAACrWAAAq10AAKtiAACrtwAArUUAAK1LAACuPAAAry0AAK81AACvNQAArzsAAK9BAACvRwAAsg4AALOzAACz9gAAtEAAALSYAAC07gAAtR0AALVMAAC10wAAtoQAALaKAAC2kAAAtz4AALiMAAC5CQAAuYUAALsGAAC8PgAAvOYAAL0EAAC9MQAAvYcAAL2LAAC9kQAAvZcAAL2dAAC9owAAvakAAL2vAAC9tQAAvbsAAL3BAAC9xwAAvc0AAL3TAAC92QAAvd8AAL3lAAC+WgAAvq4AAL8DAAC/PQAAv5AAAL+tAAC//wAAwFkAAMCvAADA7QAAwTgAAMJ6AADCvQAAw7MAAMO5AADDvwAAxRgAAMUeAADFJAAAxSoAAMUwAADFWgAAxWAAAMVkAADFagAAxXAAAMV2AADFfAAAxYIAAMWIAADFjgAAxZQAAMWaAAC/+7/6QLDAvMBVAIdAAA3NDY3NjY1NiY1NDY3NDQ3NjY1NjY3NCY3NiY3JgYHBgYHBgYHNicmJjU2FjMyNhcyFjMWNjM2JicmJicmJic0JjU2JjU0JjUmJicmNCc0NCcmNicmJicmJicmIyYmJyYmJyYjJiYnJiY3NhY3MjY3NhYXFjYXMhYXNhcyNhcyFjMWNjM2FhcWNjc2FjMyNjMyFjMyNhcWFhcWFhcWNhcWFxYWFxcWFhcWFhcWFxYWFxYWFxYWFxYxFhcWFhcWFhcWFhcWFhcWFhcWFgcUFhcWFRYWBwYGFQYUBwYGBwYGBwYGBwcGBgcGBwYGBwYHBgYHBgYHBgcGBgcGIgcGBwYGBwYHBgYHBgYHBgYHBgYHBiYHBhQjBgYHBgYHBgcGBgcGBgcGBgcGBwYjIiYjJiInIwYmJyYiIyciIicmJicmIicmJycmJjc2FjM2NjMWFjcyNjc2NjcWBhcWFRYVFhYXFBcWFhcWBhcWFhcWNjc2Njc2Njc2Njc2Njc2Njc2NDc2NzYzNjY3Fjc2Njc2Njc2Njc2Njc2Njc2Njc2NzQmNTQ2NSY2JyYnJiYnJiYnJicmJicmJicmJicmJicmJicmNCcmJicmJicmJycmJicmJiMmIgcmJgciBgcGJgcGBgcGBgcGBgcGFgcGBhcGFhUGBgcGFAcVFAYVBhQVFBYXFhYXNjY3MhY3MjYXFgYVFgYXFhUGJgcGBgcGJgcWFnECAQIDAQICAQIBAQEBAQEBAgIBBgwHBwwHDRkNAQEBBQYMBQULBgQHBAsXDQIDAgMBAgECAgIBAQEBAwEDAgEDAQICCAQCBQMJBAYKBQQGAwcDBwcDAgcBAgoFBQcFBAkGBQwHBQcFCAgIEAkCCgQIDQcOHg0OHQ8DCwQFCgUKFAsMFw0IEAkDBwQFEAcFBgcDAgsEBQMCAwMDBwINBgcBAQcCAggHBQUFAwMFAgQCAgULAwICAgYGAgQBAgQJBgIDAQIEAQEBAgICBwQHAwYCAgQEBwMEBgMFAgUCAQkIAwUDBwIBBgQKCAUJAQoIBAMGBAQGBAcHAwcEAgoBBQkFCREJBgwMCQQJFQsLFQ0ECAsKAwgEBQ4GCw0IBAUJAw8FCAUFCgYGDAULDRENCgYCCgcKCwkFIAkFBwMMAVsBAQEEAQQCAgEBAQIBAQIBCgIHFAoNFAgPDwcLAwIMBgQMDQUIAQwCCAMIDQYJBwIFAwUEAgYNAgMCBQcJAgQFAwcBAgIEAQEDBQYBAgQCAgYCAgQCAwcCAgMCAwUCAgMCBwICCgQLCAUGBwwIDAoFCAQIGQYRHw8FBwUFCgQJBgIKBQICBQIFAQICCAEBAQEFAQEBAgEBAQECAw0dDwUIBQUJBQICBQEBBg4bDAUIBQYNBgIGKwUIBAYJBQMGAwUKBQggEAkRCggSCQgPCA4lEQECAQEBAgIEAQwECA8LAwECAQIBBBIlEBISCwgOCwMGAgQFAgQGAwMHBQkWCwULBQsGAgYIBQIEAgcFBQMFAwIGBgMCAgMFBgEBAQEBAQEBAgEDAQICAQIDAQQBAwEBAQEBAQIDAgICAgIBAQICAgIDBAUBAgoCBQMDBQIDAggJBwoDAgsEAw0NBAkIBQMFBQkIBAkRCAQKBQ0OBgEHAgoFFDISAwcCAwkDCAMCAgUDBQ8GDAMIBAQGCAcFCgkDBgIIAQILDAMEAwkBBgMIBwMIAQkGAgIEAgICAgcDAgcBAgYCAwUDBAcDAwEBAwECAgICAwEBAgMDAQEBAgEBAwEBAgIBAQQFBgYIBQICAQIBAQIDAQMD2QcPCAwICwIXIQ8JBAcMBwYLBQQIAQIFAgMEAgQHAwMDAQYEAggJBAQCAQcBBgoKBQIEAQUCBAMCBQkFERYFDRAJCxkNHBgECAQFBwQNBgMQEA4MBQgJAg0EBQgEBQwFAwYCBAYDBAgFCQUCBAYEDwcFBAQJBAUDAQICAgEBAgIBAQEBCAEBBQEBAggCBgcECBgHBgYBCREIAwcDCwMGAw4SCw4cDg4cDQIGAgEBAwINBwEEBgIJAQQDAgECAQEBAxUpAAACAB4AAwHNAyQBHAH9AAABFgYVFBYVBhQHBgYHBjEGBwYGBwYGBwYGBwYGBwYGBwYGBwYUBwYGBwYHBgYHBgYHBgYjBiYHIgYnIicmJicm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AQsFAQQCAQEDAQEGAgQBBgECAgIBAgEBAQMBAQIBAQEBAQECAwIBAgEGBwUFBQMIAgcGAgQGBA0LBQQGBAQHBRAhDgQGAwwIBAQHAwoMBgwGBAIGAwUJBQIGAgIDBQUCAwUDAgMCBgEBAQEBAgECAgoCCAQCEQwHDAgCBgMJDggKEQgGDAMDCQIICAICAgEEBAUEBgcIEQgFCQUFCQUCBgIBAQEEAQcBDQMDCAUCBgIDAgMFCAUGDAUCBAECAQMBAgECBAkECRILEQMLBAIGBgsGBAMCAwICBQIBBQIHAQIDCQUEBwQIEQYDCAMQFQsOBwcOBwUHBQUJBQgPAi8OCAoFCgEHBwQBBwICBQMGAgEFAQECBAIDAQICAgEDAQEDAQEBAwEBAQICAgICAgIEAggDBAcCAgkBBwUCAgQCCQYFCggFDAgFBQwFBg8HCwcFBw0HDAUDBAkFDiURBQkFCBEKEQYEBgQLBgMDBQMGBAUKBQMHAwUIBQYGBAgIBQgBAQgIBAUFBAICAQECBgICAwICBQMIAgQDAQIFBQMFAwQHAwMLBAQaHhoDGhoMBQIIAgIHAgEBAQECBwYEBQQIBgQMCAQFDAcDBgMDBgIFDAUDBwMIBAoUCwwHCAILBQUIBQgQCg4gDgUHBQUQBggNCgQGBAcPCQYSBQQGAgUNBgsDBA4QAgcDBAgFAwkFBQsGBQ8HCAEBBQIBAwcCBgQCBgICAgIGAQUBAQMGAwIDBgQEAQECAwIBAgQBAwEBAQECAQIBAwEBAgIJCAUEBgQPEwIGAxEEBgoGCAMEEAgGBQL+SQoSBQYHBAIEAgQHAgkBBgQBEw8ECAgOCA8FCAQJAwMFBAUKBAwbDQMHAwMGAxALBQcNBQMGAwQHBQUIBAMFAwMGBQIIAgMCAgUBAgEBAgYCAwMCAgIBAQEDAgICAQIEAQICBgMBCQMDBAICAgIFDQUDBQMDBwEDBAIFBgUDBwQOAwIHBAQHBBQkFAULBxANBQIIAwwLBwcKAgILBAQGAgEBBAEBAQECAQgCCw8LCgwICwURCwUFAgICBQEBAQIEAgMECwIRAggFAQkCAwkEBgkFDAQCCwsEAQIBAwYGBQ0IBAgDBAcEBAgEAwQCAgEDAQYBBAIGCwoCAQQIBAcTBwUJBAcHAgcGAgMEAwEGAgEBAgUCAgEEAgMCAgICAgECAwkAAAL/w/6zAdMCpgF+AfUAABMUBgcGBxwDBgYHMjY3NjY3NjY3NjY3NjY3NjQ3NjY3NjY3FjY3Njc2NjcyFjc2FhcWMhcWFxYWFxYWFxYWFxYWFxYWFxYWFxYiFxYWFxYWFxYUFxYXFgYXFBQHBgYHBhQHBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGIgcGBiMmBiciJicmJicmJicmJiMmJicmJicmJicWBhcWFhUUBhUGFBcWFhcGFhUUBhUWBhUUFhcWFhcWFhcUFBcXFhYXFhYXFhYXFhYVBgYjIiYHIgYjBiYjBgYHBiIjBgYHBiIHBiIHBgYnNjY3Njc2Njc2Njc2Njc2Njc2Njc1NDQ3NCY3NDY1NCY1NDY1NDYnNCY3NDYnJjU0NjUmJicmJjU2Njc0NzU0NjU2Jjc0NjU0Nic0JjU0NjU2JjU0NicmNjUmNSYmNTYmJzQuAjU0NjUuAycnJiYnJiYnJiYnJiInJicmBiMmJic2Fjc2Njc2FDM2Njc2FhcWNjMWNhMmJicmJicmJicmJicmIicmBiMiJgcGBgcGBgcGBgcGBgcGBgcGBgcGIgcGFAcGBgcGBgcGBgcGFgcGBhcUFhcWFhcWMhcWFhcWFhcWFhcWFhcWFhcWMzYWNzY2NzY2NzY2NzY3NjY3NjY3NiY3NzY2JyYmNyYmjgYCBwIBAQEFAwMLDwcDBwMCBgIEBwMIAQgBAQIGAgQGAwQIBgoHAgcDDQUEAwgDFhUKCAMFAgIEBAMEAgEIAgIDAgEGAQECBQIBAwICAQMBAgMBAQEBAgQBBw4DBQMFBAEFDQUGDgUDBAMCBwMNBwUFCQUFCAQLBQIDCgUPBwQJEAgHAgEKBQMMBgIOCgcBAQEBAwEBAgECAQEDAQMCAwECAgIBAgEBAwMFCQMMBQMFBAoJBA0HBw0HBQkFBAYDBg0FCA8ICRIIAwUECQcEBQkFBAQCCQYCBgMCBwIGCAcBBAIDAwECAwEDAQEBAgICAQEEAgEDAQIBAQUCAgEBAgEBAgECAQEBAQEBAQQBAgECAQECAQEBAQIFBAoCBQMKBgQLAgICCAMIBgcEAwIEAQYNBwUJBgwBCQ0GBRQFEB8OCwnsBggECgUEAgQCCgYCCQECDQ4HBQcDAw0ECQECCAMCAgYCBQgFCgUCBwICCAEJCwIDAQEBAgECAgIBAgIHAQIIAgQDAgQHAwgRCAMFBAUMBQ4OBAwHDQQCCwoDDAcEAgQCCAYCAgMECAICAgIFAgEBAQIBAgUCpAUFBBkXBSItMi0hBQgDDA4GAgUEAgYDAgUCBwMBBAMBAgIDAQMBAgICBQIBAQEDAQEBBw8IBwQGBgIDBQUIAQELBwIGAwIJAQIJAwMFBQUFBxEFDhcQBwgGBBEIBwgDJSUICgcLAgIIDQUFBQICAwIBBAIEBAICAgIFAQIBBQMFAgMFBgQEAQcBAggEAgoQAwcOCAUJBQQIBQwgDwUNBQoMBwgCAgwDAgMYBgsZCwgFBAUIBQwJDQUGCAUDCAIKAQUEAQEBAgECAQMBAQEDAgIBAwECBQIKBQIHAwIGAgIFAgUOBAMGAwUEAxQJFQkKEgkHDAcFDAUDBgQGDQkJEgsHDAgIAwMFAwMIBQQKBAUFBQcEEQYOBwwSCAULBQUHBAMGAwIGAwUNBwILBgwFAg0GBgsFDQsHAxgdGQQDBgMRKiwkAwYBAwIDBgIFAgECAQIEBAEDBAUFAQEBAgEBAgEBAQICAQECAQP+3woHBQ0HBAIFAgUBAQQBAgEBAQECAggCAQQDAgIDAgMGBAoCAgoBCAIBCQ8MESQTBw0GChMKCRQHAggCBQgDBwEEBwQIDgYCBAIDBwIHBAEFAwEBBgcCCAoGBAcFDhEGCwYGBwcIFQgeFSsUCxQLBAcAAP///+z/8wJoA8cCJgBQAAAABwDrAFIA7P//ABz//gG/Ar0CJgBwAAAABgDrM+IAAAADABT/5AJkAvYA5gIDApUAAAEGBgcGBgcGBgcGBgcGBgcGBwYGBwYGBwYGBwYHBgYHBgYHBhQHBgYHBgYHBgYHBgYHBgYHBgcGBgcGBgcGBgcGFQYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYHBgYHBhUGBgciJicmMSYnJjY3NjY1NjY3JjY3NjY3NjY3NjY3NjY3Njc2Njc2Njc2Jjc2Jjc2Njc2Njc2Njc2MzYyNzY2NzY2NzY2NzY2NzY1NjY3NjY3Njc2Njc2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY3NjQ3NjY3NjIXFhQXFhcWFhcWMhcWMgMWNjc2FjMWMjY2NzY3NjY3NjYXFgYVFAYXFhUWBhciBiMiJgcmIiMmBgcmBiMGJgcGBgciJiM2NzY2NzY3NjY3NjY3Njc2Njc2Njc2Njc2Njc2Njc2NzY2NzY2JyYmJyYnIiYnJiInIiYjIgYHBgYHBgcGBwYHBgYXFhYXFhYXFjY3Njc2NzY2NSYGBwYGJyY2NzY3NjYXFhYXFAYXFgYVFAYVBiMGBgcGIgcGByIGIyY0JyYmJyYmJyY2JyY0JzQmNTU2Njc2Njc2Njc2Njc2Njc2Njc2NzY2NzYWNzY2NzIWNzIWFxY2FxYWFxcWFhcWFhcWFhcWFxYGBxQUBwYHBiIHBgYHBhQHBgYHBiIHBgYHBgcGIhUGBgcGBgEGBgcGBhUWBhUGFRYWBxQGFQYXFBYVFhYXFhYXBhYXFgYXFhcWFhcWFhcWMhcWNgcGIiMGJgcGBiMiJic0Njc2Njc2Fjc2Njc2Fjc2Nic0NjcmNjU0Jic2JjU2JjU2JicmNCcGBgcGBgcGBgcGBgcGJic2Fjc2Njc2Njc2Nic2Fjc2Njc2NzY2NzY2NzYWMzIyAh8BAwIEBwQHAwICAgICAwMGAQkFBAIHAwUIBQoMBw0HAgICBgECAwIFCgYECAUFAQIGBQIDBQIEAgUCAgUBAggHBQUCCAQDBwMEAwEGAQICBgMEBgIGDAYEAwUEAQUCAQQJDAgLDAEICgMBAwQIBgIGAQICAggCBAIIBAUHBgQEBQECAwkCBQIBCQECAQQCBgYDBwgEBAEEAgEICAMCAgICBQIGBAIHAgYCAgcDBAMDAwICBAIGAgYCAwIJBAICAgMDAQQFAggHBAoIBwIEAQEFBgIIAQkDBQYFBwICBQVZCBAIChIIAggKCQIIBwUKBQYEBQQDAgQGAQUCBxAJCBEFBQ4HDi0UCQUDDBYLAwgECAECAgQBAgMEAwgEAwsZCwcDBQcECgECBg4FBAQFAggEAwMEAgECAgIBBwIIAgUKBQYRBgMGAwgXCQcNBQ8KBAEEAgMCAgMIBQcEAgwXBgQGBAMCBAURBQsIAgMHBAsOBQwGBQYBAQECAQEFAQYBBAgJBRAQBg4CCgEIAQIEBAMGAQEDAQIEAQIBAwEHAQIDCwMDBAMDBwMKBAMIBAUKBQYJBAMGAgoMBgcOBQMEBQ0CAwIEAwECAQEDBgEDAgEEAQMCAQMGAwgBBgICCAEBBw4IBgQGAwUEAgUD/tsBAQEBAgEBAgEBAgICAgIBAgEBAwEBAwIBAgIDAgUPCgcFAgQIBAkGAhAdDhQqHQgRDgsTAQQEBAUFCAcEAwgECwMCCQIBAQEBAgIBAQEBAQEBAgMDBAYDAgYCBAYCAgYDDBIEBwIBBgUCAgICAgQBBgIBAwECBwgCCgUCAgMEEwgGDALLBQkDBQcFCAUCAgYDAgUCCAELCwIHDAYIDwgWFAsaCwMHAgcDAgMGAgkSCwgNCAkHAwgLBQcFBAcECAUCCAUCCAMHDAUIDAcFEAgIAwIJCwIFCgUJCQQPHA0HCgsJBAoBBAoDDAQEAgEMBQUJAQEGDgUFBQMFBwMMBwILEggKEQcPCAcGAwUJBQcDAQoCAgIIAwoLBQsNBwoIAhAOBgMHAwUHBAkIBAkDBQYEBQsFBwYGAwIECgUIBgkGAgkRCAMGBAcBAggFAxARCRYVCwUEBgYCDAIGAQEGAgMEBQgBA/1UAwQBAQEBAgIBAQcFDAcKCAECBgMUFQcKBwoCBAEBAgIBAQEBAgEBAQECAQEMBAULBQoDDAYEEBULBwMDCQUIBAIHDAgDCgQGDggGCQsCAg4GBwUHBQQEBQIDAQIFAgIDBQ4WBQYEBgsOBQQGAwQDAgIHBQIIBAcDCQYEBAIGAQIGBgILBwMEBAcHAwMHAwwHAwMGAgoKAwMFAgUBAwUCAQMDAgQHBAYDAgYJBAgBBAsLCQMCBgIJBAIFDAgCBQICBAIGAQEDAQEBAQECAQEBAQEBAQIBBgMNAggCBwECBwcDCAcOFwwECAQIAgoBBQoFCQIBCAECCgIIEQgGAgoBBwUCCBECtgUKBQUIBQcHAwoGChAJAgYEFBQIDQgLCgQEBgQQDQcHDwkOAgYGAgMFAgIBBQEECQEDAgECAwcDAwIEAgMDAQEBBQIFAQIJDg0JEQoKFAIFCAULBgUDCgUFBgYPCwUCCQUDBQQGBgQCBgIKAwoKAQEJAwIDBgUCBgQHAQEGAwITCgsSCgMKBQMCAAAEABT/5AJDAvYA4gF+AagCOgAAAQYGBwYGBwYHBgYHBgcGFgcGBgcGBgcGBgcGBwYGBwYGBwYUBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYUBwYGBwYGBwYGBwYHBgYHBgYHBgcGBgcGBgcGBgcGMQYGByImJyYxJyY2NzY3NjY3JjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NiY3Njc2Njc2Njc2Njc2MzYyNzY2NzY2NzY2NzY2NzY3Njc2Njc2Njc2NzY2NzY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NjQ3NjY3NjIXFjYXFhYXFjIXFjIDFgYHBhYVFAYVFBYVFBQHFBQWFhcWNjc2NjMWBhUUFgcGBgciJiMmBiMGFxYGFRYWFxYWFxYWFxQGFwYGBwYGBwYiBwYGJzQ2Nzc2NDc2Njc2JjcmBiMmIyIGBwYGBwYiBwYGIyYmJyY0JyY0JyYmNTY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzYmNzYWFjYHBgYHBgYHBgYHBgcGBgcGBgcGBgcWNhcXNhcyNhczNDYnJiYnJjQ1BgYBBgYHBgYVFgYVBhUWFgcUBhUGFxQWFRYWFxYWFwYWFxYGFxYXFhYXFhYXFjIXFjYHBiIjBiYHBgYjIiYnNDY3NjY3NhY3NjY3NhY3NjYnNDY3JjY1NCYnNiY1NiY1NiYnJjQnBgYHBgYHBgYHBgYHBiYnNhY3NjY3NjY3NjYnNhY3NjY3Njc2Njc2Njc2FjMyMgIcAQMCBAcEBwYBAwIEAwcBAQkFBAIHAwUIBQoMCAwHAgICBgECAwIGCgUFBwUFAQIGBQMCAwICBAIFAgIFAgIHAQYFBgIHBAQGAwQFBQIBAgYDCAQGDAYCBAIFAwEFAgEECQwICw4HCQMCAwQIBQIGAgICAggBBQIIBAUHBgQBAgYBAgMHBAUCAQgCAQQCBgYDBwgEBAIDAgEIBwQCAgICBQIFBQIGAQMHAgcDAgMCBQICAgIGBQYCAwIIBQICAgMCAQUFAgcHBQUIBQcCBAEBBQYCCQMBDQYECAIBBQUUAgUBAQIBAgEBAQEIFgsEBgQGAgIBAQMBBgwFCRMJBAEBAQEHAwoBAg8SCAYBESURCRMIBwcEAwgDCAUJAgIDCAECBAMLFgsOCgwHBAQIBQgRCAQIBAQBAwIBBAICAQQIAwQKBQkCAgkJCAIFAgQGAwMFBAIGAwMGAgICAgECAQIDAQECAwkVFBQ7AgQCBgIBBAECBAUGAwIGAgUEEAUDBgQPCAkPDAgVBAIBAwEBBgb+3AEBAQECAQECAQECAgICAgECAQEDAQEDAgECAgMCBQ8KBwUCBAgECQYCEB0OFCodCBEOCxMBBAQEBQUIBwQDCAQLAwIJAgEBAQECAgEBAQEBAQECAwMEBgMCBgIEBgICBgMMEgQHAgEGBQICAgICBAEGAgEDAQIHCAIKBQICAwQTCAYMAssFCQMFBwUJBgIGAwYDBgIBCwsCBwwGCA8IFhQLGgsDBwIHAwIDBgIJEgsIDQgJBwMICwUEBgIEBwQIBQIIBQIIAgEHDAUIDAcFEAgIBQkLAgUKBQwKDxwNBAgFCwkECwQKAwwEBAMMBQUIAwYOBQUFAwUHAwwHAgsSCAoRBw0FBQcGAwUJBQcDAQwCAggDCgsFCw0HCggCEA4GAwcDBQcECQgECwEHCAULBQYEAwgDAwcECQoJBgIJEQgDBgQHAQIIBQMQEQkQEQoLBQQGBgIMAgoCAgkEBQgBA/6sExUKBwsFAwUDBhMIBQgFBRMVFAYBAQIBAwMOBQUTBwoBAgUBARMRAwYCBAoDBQIBBgkFBQEEBQQCAgECBAEBAwUHBAQJBAYEBxQJDRgLAgUBAgEBAQICAgEDAQcCBwcDDgcFBA4GAgEBAgYCBwMBBQ0EBQUFAwcEBAgCBgsFBQkFBAkFAwYECAUCBQoFAQEBAWUCBAIJAQEGBAIIBQsGAgUFAg4RCwECAQMCAgECFSsWBw0GBg0GBAgBzQUKBQUIBQcHAwoGChAJAgYEFBQIDQgLCgQEBgQQDQcHDwkOAgYGAgMFAgIBBQEECQEDAgECAwcDAwIEAgMDAQEBBQIFAQIJDg0JEQoKFAIFCAULBgUDCgUFBgYPCwUCCQUDBQQGBgQCBgIKAwoKAQEJAwIDBgUCBgQHAQEGAwITCgsSCgMKBQMCAAAAAQAUAXwA+ALkAJEAABMGBgcGBhUWBhUGFRYWBxQGFQYXFBYVFhYXFhYXBhYXFgYXFhcWFhcWFhcWMhcWNgcGIiMGJgcGBiMiJic0Njc2Njc2Fjc2Njc2Fjc2Nic0NjcmNjU0Jic2JjU2JjU2JicmNCcGBgcGBgcGBgcGBgcGJic2Fjc2Njc2Njc2Nic2Fjc2Njc2NzY2NzY2NzYWMzIyogEBAQECAQECAQECAgICAgECAQEDAQEDAgECAgMCBQ8KBwUCBAgECQYCEB0OFCodCBEOCxMBBAQEBQUIBwQDCAQLAwIJAgEBAQECAgEBAQEBAQECAwMEBgMCBgIEBgICBgMMEgQHAgEGBQICAgICBAEGAgEDAQIHCAIKBQICAwQTCAYMAuAFCgUFCAUHBwMKBgoQCQIGBBQUCA0ICwoEBAYEEA0HBw8JDgIGBgIDBQICAQUBBAkBAwIBAgMHAwMCBAIDAwEBAQUCBQECCQ4NCREKChQCBQgFCwYFAwoFBQYGDwsFAgkFAwUEBgYEAgYCCgMKCgEBCQMCAwYFAgYEBwEBBgMCEwoLEgoDCgUDAgAABAAo/+QCVAL2AOMB/QKYAsIAAAEGBgcGBgcGBwYGBwYHBwYGBwYGBwYGBwYGBwYGBwYGBwYUBwYGBwcGBgcGBgcGBgcGBwcGBgcGBgcGBwYGBwYGBwYGBwYHBgYHBgYHBgYHBgYHBgYHBgYHBjEGBgciJicmFSInJiYjNjY3NjY3NjY3JjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NiY3NjQ3NjY3NjY3NjY3NjM2Mjc2Njc2Njc2Njc2Njc2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2Nzc2Njc2Njc2Njc2Jjc2Njc2MhcWNhcWFhcWMhcWMgUWNhcyFhcWMhcWFhcWFgcGBgcGFAcGBgcGBgcGBgcGBgcGBgcGIgcGBgcGJgcGBiciJicmBicmJjcGJicmJicmJyYmJzY2NzY2NzY2NzYGFxYWFxYXFhYXMhYXFjIXFhY3MjY3Njc2Njc2NzYxJiYnJiYnJiYjBiYjBgYHBiIHBgYnJjYnJiY3NjY3NjY3NjI3NjY3NjY3NzY3NjQ3JiYnJiYHBgYHBhQHBgcGBwYGBwYGBwYGBwYGBwYGJyY2NTQmJyYnJiYnJjQ1NCY3NhYjFgYXFhYXFhYXFhYXFjY3NjY3NjY3NjY3NjY3NjI3NjY3NjM2NjMyFhc2MhcWFhcWFhcWFhcWFhUWFAcGBgcGBgcGFAcGBgcGBgUWBgcGFhUUBhUUFhUUBhUUBhYWFxY2NzY2MxYGFRQWFQYGByImIyYGIwYGFxQGFxYWFxYXFhYXFgYVBgYHBgYHBiIHBgYnNjY3NzY0NzY2NzYmNyYGIyYjIgYHBgYHBiIHBgYjJiYnJjYnJjQnJjU2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Jjc2FhY2BwYGBwYGBwYGBwYHBgYHBgYHBgYHFjYXFzYXMjYXMzQ2JzQmJyY0JwYGAi0BAwIDBwUHBgICAgQDBwgGBAIHBAQIBQcKBQgLBwIDAgYBAgQCEwUIBQYBAgQFAwMFCQQCAgYBAgYBBgYGAgcEBAUDBAYFAgECBgMFBAIGDgYCAwIFAgEFAgEECgwHCwkCCQECAQkDAgIBBQcGAgUCAgICCAEEAwkEBAcGBAECBgICAwcDBAEBCAECBAIGBgMHCAQDAwMCAggHAwICAgIEAgYGAgYBAgQCAgcEAgMCAgQCAgICAgYCBgEEAggFAgMCBgQFAgcIBQUHBQcBAgQCAQUHAggDAQwHBQgCAQUE/rYECgUDBQQFCQMGBwUEAwIBAQIFAgYFAQQEAgMGAwIFAwUSCAoHAwcOBwcJBAIFBQMHAwcEAQkFAQMFAgcGAgYCBwcBAggDAwYEBAkFDAECAgcECAMNAgQGCAQDBgQFBwgGDgUFBgUHAwQCAgIFAgIIAgYHCAoCAggKBAkDAgUGBQMCAQQDAgIGBQIFAwUHAgUFBQUEBQYLAwQDAgECBh0PBQgFBwELBQYCBAQCAwECCQMBBgwHAwcGBQYFAQECAwIBAQICCQUBAQIBAQIBAgQCAwIEAgcEBwMBBQUCAwEBBAYCCQYCAwUCCAoKBAIDCQMJCQMNBgQOBwkBAQIBAgECBAECBQoFCAECBwIGBgE1AgUBAQIBAwIBAQECCBYKBQcEBQMCAQIBBg0FCRIKAwEBAQEBCAMJAw4UBwEGESQSCRIJBwcDBAgEAggFCAICAgkBAgQDCxYMDQoLCAUEBwUIEQgEBwQEAQMDAQIEAgQECQQECQQKAgIKCAgCBQIEBgQDBAUCBQMDBgICAgIBAgICAwEBAgMJFBQUOwIEAgUCAQUCAQQFBwICBQMEBBEFAwYEEAcIDw0HFgQDAwEBAQUGAssFCQMFBwUJBgIGAwYDCwkLAgcMBggPCA4TCQsaCwMHAgcDAgMGAiYIDQgJBwMICwUHBQ8IBQIIBQIKAQcMBQgMBwUQCAkECQsCBQoFCQkEDxwNBAgFCwkECwQKAwwEBQEBBQMGBQUJAQEGDgUFBQMFBwMMBwILEggKEQcNBQUHBgMFCQUHAwEKAgICCAMKCwULDQcKCAIQDgYDBwMFBwQJCAQLAQUGBAULBQYEAwYDAgMHBAUIBgkGAgkRCAMGBAoIBQMQEQkQEQoLBQQGBgIMAgoCAgkEBQgBA5cBAgEDAgIBAwkCCxANBg0FCgcDCwMCBwYDAgYDAgQCBQgEBgECAgIEAQEBAgECAQUBAQkDAwEFAgUFAg0G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AwUGBgIFCAIFBAQCBQIKAQIJCAMIEgUKBQQIBAQHBAMGBAQHBAMGBAoEBAQCCgQCCgYDBgQCAwMDBAMEAwECAgIEAQYNBAgFBAYDBQoFBwICBgAAAAQACv/lAmYC9AHUAjECvQMSAAABBhYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYVBgcGBgcGBgcGBgcGBgcGBwYHBiIHBgYHBgYHBgYHBgYHBgYHBhQHBgYHBgYHBgYHBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYHBgYHBgYHBhQHBgYHBgYHBhYHBiYnJiYjJgYjIgYnJjY3NjI1NjM2NDc2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzQ3NiY3NjY3Njc2Njc2Njc2Njc2Njc2Njc2NDc2Njc2Njc2NzYyNzY3NjY3NjY3NjY3NjY3NjYnNjY3NDY3NiY3Njc2Njc2NTY2NzY2NzY2NzY2NSYGBwYGBwYGBwYiBwYGBwYGBwYmJwYWFRQUBwYGBwYGBwYGBwYVBgcGBgcGMgcGBgcGBgcGBgcGIgcGBgcGBgciJiciJicmJyYmJyYnJiYnJic0JicmNSYmJyYnJjQnNCY1NDY3NDY3NDY3NjY3NiY3NjY3NjY3NjY3NjY3NjY3NjY3FjY3NjY3NjYzNhYXFhYXFhYXFjIXFhYXFhcWFzIWFxYWFxYyFxYWMzYyNzY2NzYyNzYWNzY2FzY2NzY2NzY2NzY2NzYmNzYWFxYWFxYWFxYWBSYGBwYHBgYHBgYHBgcGBgcGBgcGFAcGBgcUBhcWFhcWFhcXFhYXFgYzFhY3Njc2Njc2Njc2Njc3NjY3NjY3Njc2Njc2Njc2Njc2NjU0JicmJicmNCcmJyYmJyYmAQYGBwYHBgYjBiIHJiYnJiYnJiYnJgYnJiYHNCYnJiYnJicmJicmJicmJicmJicmNjc0Jjc0Njc2Njc2Jjc2NzY2NzYzNjY3NjY3NjY3Njc2Njc2NzY2NzY2NzY2MzYyNxYWFxYWFxYWFxYUFxYWFxYWFRQWBxQGFQYUBwYGBwYGBwYHBhYHBgYHBgYDBiIHBgYHBgYHBgcGFAcGFgcGBhUUFhUWFCMWFhUWFhcWFhcWFhcWFjc2Njc2NDc2Njc2Njc2NDc2NjUmNjU2JicmNjUmJicmNCcmJicmJiMiJgcGAjwCAQECBgIFAgEGAgIHCAIFAwICBAIGAQIFBAUBAgICCwUFBggDBggDBgEICAQCAQcCAQIDAgIDAQUDAgICAgYBBAICBAMCBAcDCQIFAwUHBQcBAQIEBAMIBQUKBQQBAgUEBwgGAQcCAgICCAMCBgIDAgUKEwsDBgMFBwUDCAQCBgQGAgcBBwIFAwIIAwUCAQIDBAIFAwUJBQIEAgIGAgUCAgICAwQEBAIFAQEKBQMKAQIDBQIHAwMGAwQGAwMFAwICBwQCBAUCAQQHAQEEAgYEAQUBAgQDAgkFAgUEAgMCBAMBBQEBBwEEBgIGBQQCAgMCAwYCAwIFAwMDBQILGAsDBgIEBwQEDgQJHQ0CAQEEAgICBAIDBgMHCwYDBgUJAgIFCwUHBwUDBgIIBQMECAUFBwUFCwYEBgUIBAQCAwUFBAwGAgQFAgQFAQEEAQEBAgQCAgEDAQMGAgMBAgUCAgIGAggBAQcFAwYJCwINBAUIAwkBAggFAggaCAQFBAUEBAYCAgIEAxIOAwIDBQMHBQQKBQIECAULBQMDCwUHBwMIAwICBwUNBQMEBwIEBQMFAgUBCwQKDAYDBgQECAMIDP6ICBUGCQYFBAQGBQIHAgcCBQEFAgIBAQIBAgEBBgMBAQEIAwICBwEBBw0ECQEJBwIEAwIEAwILAwICBwcBAgEFAQIHAgIGBAIBAQMCAgECAQEEAQIEAggQAVkDBQQHBgQRAwQGAg4LBQYLBQMGBAoCAgQDAwYCAgECBgICAQICCAICAgICBgEBAwEBAgMCAQEBBQEBAgIHAgIEAwQCAQIGAgUIBQoEAwUDBAkEBwQFBwUJAgIFCgUKDgUIEgcFBgMFAQIGAgECAQECAQIBBQICBQIFCAYBAQYLBQIERwcDAQQIBAMDAQcDAgEBAQEBBAMBAQMDAwQCAgUFAgcCBRQEBwsEAwEFAQIDCAICAgECAQIBAQEBAQEEAQcBAgICCAMDAw4FBwLQAwYCBQcEBwcCBAcDDQYECwICBAgECgQCBwEBBwMDBQIODAcMDQUMCgUMAQoIBwIKAQECBwQHAQIJAQIDCQMJBAIDBwMGBAIQDAYPAwcEBw4ICwMCAwcCCBAHCAwHAwcCCQYJDwYGCgYCBwQHEAgFDAUJCAQCBwMBAgECAwQFCAMJAQoKAgIIAwUEBQgBAgIHAgQHBQcPCAQIBAQGBAsCAgIIAwUJ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BgQDCAICBwUEBwUGAgUFAwoFBwIBAgQCCgMKBwUIBQoLBQUJBQUHBAQDBQIFAgMFAgQEAgUGAgIDAQEDAgIHAgkEAgICBQYFCQgFBQYCAgsFAwcEBAYFDAYDCAQIFwYSFAkIBQgJAwQHBQsHBAwECg8KCwIHAQQDAwgGBwQEAtYFBgIFCgUJAQIGAgMFAwYLBQMGBQoFCQMCCgQJBAIGAgYCAgIEAwwFAgUDBQYFAwcECAQECxYKAgIDBwQLBAgQCREHAQcDBwICAgIBAwEBAgQCBgQDBwYDBw4ICAMFBwQDCA0FAw8OBQsOBggICgUCCwEEBwEBAggDAgEBAQECAgEBAQQCChYNCgMCBQsFBAMFBAEBAgMBAgMBAgMCBQYDBAQEAwEFAwEGAwEIBgUJAQICBAMJCgQHBwMDBgIFCQUDCAMICQgOCwYCDw4GCAsIDAYDAwcDAwgDBAUCAgIFBQMBAgMCBAIGEAsIAQgDAggCAgUGDgcIDwMMCQMGDQgIAQEGAgMEAgcEAgMJAwQIAgEKCwgDCwYCCQQEBwMEBgMGAwQEBQEDAgMEAQEBAgECBgQCBQIGBAgBAQoECQMHBgMHBwMDBQQFBAIFBwIIBgQEBAMHAgICAwMBCREIBQgFDAoFDQUCAgUEDAUCCQULEAcJCwIBAgIBAQMEBgcCAwQCAwQKBgQEAgQEAgMCBAICBAQJAQIBBQIEBQkBCAMFBgQKBQQHBAwVCw0FAQYDCAINBwMCBwYIAgIHAQYCAgQCAgIBAQEBAQEBAQIBAgIBAQEEAQEFAgIGAwkDCAYDDw0GAwcEAwYEAwYDCgUKCQMGCwUJBwMDBgMFCgUFCwUFCAQKBAIKBgMHBgIHCAUHBQQEBwQDBgQGAQECBQIHAgMBCQEBAgQBAgMCAgICAQQEAgMCBQwFCgYDFycRBAoCCwYCAgUEBQkFDgQDBQMCCAMHCAQFBAICBgICAgICAwIHBAIEAQICAQYEAgEFAgICBAIFAwQKCAIIAQQCCAEDAgYEBAQCAAABAA4BqgBrAuAATQAAExYWFAYHBhYVFAYUFBUUBhUUFhQWFRwDBwYGBwYjJgYjJiYnJiY3NCYnNDY1JjY1JiY1NDYnJiY1NDYnJiYnJjY1JjY1NjYzOgIWaAIBAwIDAwECAQEBAQEDAg8ICQIIBQUCAwEDAQEDAQEBAQEBAgEB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CwYFCwULEwoJAg4gDAsMDAQCBwwFDg0FFBMJCQYCAgECBgQCBAEEAQcDAgMCAgEFBwEBAQMCAQICAQMBAwECAQECBAUFAgYDAwIKAQQDAwIBBwQDCQUDAgYCAwUDERAHCgQECwYDBQgFBQgFCREJBQgFBQkFBQoFBgwKAgQFCxILBAIGEAgOGwsIAgIRBQoICQUlDA0fDgUCAQoGBwsDAgMBAQQBAgcDBgQCCgQDCgIDAQUCBAQCBgcFAQcCAwYCCRAKBgoFAQIBAQMBAgUCAQEAAAAAAQAJ/+QCGQMEAoQAADcWNhcWFjMyNjMyFjM2NzIWMzY2FzYyMzI2MzY3NhYzNjY3NjY3Njc2Njc2Njc2NDc2Njc2Njc2NjU2Jjc0NjcWBhUWFhcWFhcWBhUWBhcWFhUGFhUUFhUUBhcWFhUWFgcmJicmJyYnJiYnJiInIiYnIgYnJiYHBiIHBgYHBgYHBgYHBgYHBgYnNiY1JjY3NjY3NjY3NjY3NjI1NjY3NjY3NjQ3NjY3NjY3NjQ3NjY3Njc2Njc2MTY2NzY2NzY2NzY2NzY2NzY3NjY3NjY3NjY3NjY3NjY3NiY3Njc2Njc2Njc2NTY2NzY2JyYmJyYmJyYmJyYmJyYmJyYGBwYGBwYmBwYGBwYiBwYjBiYHBwYiBwYGBwYGBwYHBwYGBwYGBwYGBwYUBwYGFxYUFxYWFxYWFxYWFzIWNzI2NxY3MjY3NjY3NjM2Njc2NzY2NzYnNCYnJiYnJgYnJiYjBgcGBgcGFhcWNjM2NhcUBgcGBwYGBwYmNzY2NzY3NjY3NjY3NjM3FjYzFhYXFhYXFhYXBhYVFhYXFhcWFgcUBgcGBgcGBwYHBgYHBgYHBgcGBgcGIgcGBicmJicmJyYmJyYmJyYmJyY2JyY0JyYmJyYmNzc2NDc2JjU2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2NzY2NzY2NzY3NjM2Njc2Mjc2NjM2Fjc2Fjc2NhcWFjMWFhcWNhcWFhcWFhcWFhcWIhcWFhcWFxYWFxYWFxYWFxQWBwYWBwYWBwYUBwYGFQYWBwYGBwYHBgYHBiYVBiMGMgcGBgcGBwYGBwYxBgYHBgYHBgYHBgYHBiMGBgcGBgcGBgcUBgcGBgcWBgcUFhcWBhcGFsIFDAYDBgQFDAYIDwgIBQMHBAQIBQMTBQUKBgcECQQCCwcDBAYCBgYDBQMJBwIBAQEBAQIDAwMEAQIBAgELAgECAgICAgIBBQICAgIBAQEBAQEDAgECCQ0HDQ8HCQUYCBg1GAUJBQUIBAgLBw8NCAQFBQobDAkVCQMGBAUMBgIFAQEBAQQEAgICAgMDBAICBAICAgIEAQIEAgMEAggBBwQFCAICCQQJBgICDgwGAgYCCRUJAwYDBwECCQMDBQIDBwICAQIECAMIAQEEAwIBAgUCAgMEBAICAQICCwYFCgUGCwcGDAYLBAIJDwgJEQgFBgIEBgQDCAMJBQUFAgsLAwEFCQULAwIGBAoEAwIHAwICAwIFAQIBAgEBAgcEBQQCDhQNBgwGBQoFDQMIFAoFCgUHAwYGAwYDAwcCAgICAwIFBAMOCAULBw0FBQICAgICDA0IBAoFCAQHBggOCBMPAgEFAgEEAQEDAgMCCAgRAQcDBAgEBQcFCA0IAQIEBgMDAgMCAQMBAQEBDAEHBgUKBQoEAgYIBQgJBw8IFzkVAwgEBwIFDgYDBQIBAQIHAQEEAgIBAQMGAQEDAQQBAgQCAwECAgMBAwMCAQUCAgICAgYCBgMDAgcDBgMJAwULDQgFBQ8CCQQCBQkFBQcEBgsGEiAOBhMIAwUEDgkEBQwFDAMCCgICCBAFBQECAwgCBQIEBAIBAgEBAQEDAgIDAgMBAQUBAgQEAQICBQIHAgQDAgcCCQEIAQECBwQJAwMIAwsFDQYDBQMJAQIOEAgJAxIcDgYMBgUKBgEBAQMBAQEBAwICAQMDBjcCAgEBAgIBAgEBAQMCAQEBAQMBBQIBAgECBAcDBQQPDAcCBgMCBwIIEwgLCgMDCAMIDgsCCAUECAUIEQkKAgEQDwgKBwMRHggFCQUGCwUDBwMNEwkBBAMGAgUFAwMBAwMDAQEBAQECAwIBAQEDCQICAwIBAgECAgILFwwLGgsRIwsDBAMGDAYLAQYJBAMFBQgGAwUGBAQHAgsBAgkGBAQDAgMDCQQDAgkKBQMDAwkQCAIGAwgBAwcDAwcDAwUEAgYDBQcFCgQCBwQECQULCQUIAxEgFQoWCQcJBQUIBQIIAwMIAgIBAQECAgIEAgQBAQEDAQICBAQCAggGAQIFAggCAgQHCgYCAg0HCQUKBQ0IAwgKCgQIAwYNCAwLBREYCQEBAgEBAQMDAgUCBQYEAwcDAwsGCAoJEwoECgICAQECAwIDAwgFEhMJDQkDBQIFBQIEBAUJAQIiFQcOBwsCBQIEAgUECgUCAgEGAgIFAgUMAwQFAwQKBQgCBQUICQUDAwYCCwIGBwQIBQcBAQQGBAIBAgICBAYFBwUKBAcNCAQFAgIHAgYCAgUHAwMGAgsRDAsRDAUHAgIECwUIAwQDBwIIBgQDAwICBgICAwIGBQICBgIGAgQBAQUBAgUBAwIBAQEBAQMCAgEFAQEBAQEBAgEDAQIBAQUDAggCAgcKBggCAw8FBAcGCwgFCgUFDwkIDAoGAwMFBQIMBQIFCgUCBgIEBQMLCgEIAwkBAQ0IAQIKBAUDAgUCBwcHBgIFAgUCAQkKBggOFAoGDQcIDggFCQUFBwQHBwUMFQsMCAMKDwAAAAABABT/2wIGAycCiAAAExYWFxYWFxYWFxYWFxY2NzY3NjY3NjY3NjY3NjU2Mjc2Njc2NjMyNjMyFjcWMhcWMxYWFxYWFxYWFxY2FxYWFxYWFxYWFxYWFxYWFxYWFRQWFRYHFAYVFBYVBhYHBgYHBwYGBwYGBwYGBwYGBxYWFxYXFhcWFhcWFhcWFxYWFxYUFxYUFxYXFhQXFgYVFgYHBhUGBgcGBgcGBwYGBwYGBwYGBwYUBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYiBwYGBwYGBwYnBiYnJiMmIyYmJyYmJyYmNSYmIyYmJycmJicmJicmNjUmJjU0NjU0JjUmNDc0Jjc0NDc2Fjc2NhcWBhUUFhUWFBcWBhcWFhcWFhcWMhcWFhcWMhcWFhcWFhcWFhcWFhc2Njc2Njc2Njc2Njc2Njc2Njc2Jjc2Njc2MzY2NzY2NzYmNzY2NzY2NzQ2NTY0NSYmJyY0JyYmJyYnJiYnJicmIicmJiciJicmJicmJgcGBgcGBhcWFhcyFhcWFjc2Njc2NjU2JicmJjc2FxYWFxYXFhYXFgYHBgYjIiYnJiInJiInJiYnJiY3NjY3NjY3NjY3NjY3JiYnJjYnJjY1NjY3NiY3NDY3NjY3NjY3NjYzFhYXFhYXFhYXBgYHBhYHBgYnJiInJjU2Fhc2Njc2JicmBgcGBgcGBhUUFxY3MxY3MjY3NjY3NjY3Njc2Njc2Njc2NjU0NDc1NDYnJiYnJiYnJiYnJiYnJiYnJiInJgYHBiIHBgYnBgYHBgYHBgYHBgYHBgYHBgYHFAYHBwYGBwYGBwYGBwYGBwYnNiY3JjYnNCY1JjYnJicmNicmNCcmNCcmJjUmNCcmJjY2NTQ2NTY2NzQ0Ny4HAgIBAwECAgMHCQYICQgJBgoGBQMEBQYEAwoNBwMDBwIGCAgEBgMJFAoECAUGBgwGAwUJBQQMBQgFAgUHAwsUCwgFBAMIAgEGAQEBAQIBAgEBAQUBBAIGAwoEBQgFCw4GBQgDAgcDBwYHCAsEAwgFBAQHAggCAQEEAgMBBQEDAgIBAgICAQICAgIDBQIEAgMGAgcEAgoBBwICAwgDCgICAgcDCxkNBQwFAwUDAgcDBgsGChAJDRQKEQMKAwgFBQgCCwQCCQYKCQoFEQUKAQYCAgMCAwEBBAECAgICAgILBQIFCAMBAgIBAgQBAQEDAgMFAwcEAgoNBQcEAgUKBAMEAwwGBQUMBgUMBwYPBQoMBQoOBgkJBAIFAwsBAQkEAgkCAwgEAwUBAgECAQECAgUCAgIBBAEBAgIHBAoCBwECDwkEBQQDBgUIBgUDBwMMGQ8HCQgIDQIBBQMCBgMFEwgEBwMJAQIJBQYLAgsEBQcCBgMDCQIDAQgQFgsGEAgCBwICCwMICAUCBwEBBAICBQIDBwIDBQIBCQICAQIEAgIBAQQBBAQBBAsDCAwICA4ICAYFBAkCAwcCAQUCAgEDBRYKCgQBCAoQBgMKAQIGAggYCwkPAwUEExAUHAYHBQwFAgcDBAgFDAMIAwIIBAQBAQEFBAIFAwICBAoFAgoMBRAJBQsHAwoGBQQGAwULBgIHBQkRCwQHBAoEAgoLBgUKCAIBBgQEAgICAgIDAgIFAgsCAQEBAQIBAgICAQECAQECAwEBAQMBAgIDAgECAQECAQEDJwIRCAQGBAcMBw0IAgQEBQYCBwUDAwMCAgECBAEDAgECAQIBAQICAwIDAwIBAgECAgUCBQECAgcDAw8GBQgEAwUDBQUCBhQJDAgEDQUFBwUDBgMYHQsDBQIWCAwIAgcECQ8GBAcFAwQBBAECBAYDAwgGAgoLBAkFAgYDCQYFCQQOCAQJAwISEw0IBgcKBQQHBgsCBgICBgYDCgICBgIBAgICAgQCBQQBAQEBBQwFAgICAQMBAQICAgECBQIDAgECBQIHBQECCAICCQEDAQwGBwcMBgYCBRAHCwYDCA4LBQgEAwcDBgsFAwYCBgsGBQEBAQMDDxwPBw0IBQwFCQcEAgYDAgQCBgEJBgUGAgUEAgIFAgQDAgIEAgMBAQIDAwQCAgUEAgQBAgECAgQBAQQDAgcFCggEBgMDBgMECAUFDgkLAwIIEQcIEAgGCgUFCgQIAQcEAQYFAgIBAQICAQEBAQIEBAIGAgcZDgUIBQMCAQECAgQCBgEBBQsCBQEHBwIBCQIFAwIHBQgcBgEFAwIBAQICBA4HDRIMBQgEAwYDAwYEAwcCBQgFBgIDCA8FCAMCEQwFAgkBBQYFAgcCAgYBBQMCBAIEBwMICQQECAUGCAEFAQQECQICAgQFBQYGBQEEBgcECBkFFwkKAQICBAIBBQIDCAMLAwsEAgwSDgUDBgULBwwOKREIEAgHBwQHAgIHBgQGBAMHAQUCAQEBAQIBAgEBBAkDBAQCBgECBwsFDBcKBQgDDAQGBAUJBQUJBQUSBQkJCgIFCwICAwgCCxkLBAoGDQQFBQIFCgYFBgIKBwMFEhMTBgQHBQUGAggBAgAAAAL/6v/0AgwC+wF2AewAAAEWBgcGBgcGBgcUFhUUBgcGFhUGBgcUFAcGFhUGFRYWFRQGBxQUBwYWBzY2NzI3NjY3NzY2NzY2NzY2NzY2NzY3NjY3JhcWBgcGFBUGFAcWBhUGBgcUBwYGBwYGBwYWFRQGFwYGByYmJyYmJyYmJyYmJyY0JyYnJiYnJgYnBhYVFBYHFRQGFRQGFxYWFxYVFhYXFjIXFjYXFhYXFhYXMhcWIhciBgciIgciBiMGJiMGBiMiJgciBiMGJiMGBgcmBiMmBgcGIgcGJyY+Aic2NzY2NzY2NzY0NzY2NzYmNzY2NTYmNTY2NSY2JyYiJyYjIiYjIgYnIiIHBgYjBgYHIjEiBiMGBgciIgcGBgcmJicmJicmIjc0NzY2NzY2NzY2NzY2NTY3NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzYxNjE2NzY2NzY3NjY3NjYnNjY3NjY3NjY3NjY3Njc3NjY3NjY3NjQ3FhYXFjIXFhYXFjIXFjYzFjM2AzYmNTY2NSY2NTY3NjY3JjQ3NjY3NicmJicmJic0Jic0JyYmJyY2JwYiBwYiBwcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGFAcGBgcHBhYHBhQHBhYHBgYHBgcGBgcGBgcWMhc2MjM2FhcyNjMyNjMyFjcmNgGXAwMBAwECAQIBAQIBAQEBAQEBAQEEAQICAQECAgIPCwUIAwgHAggEBAICCAIDAQIFBAIDAgEBAgEKBAUBAQECAQICAgEBAQQBAgECAQEHBQEFAgUDAgYBAgIDAgIBAQMCAwcDBwkGCwYCAQECAQICAgcEBwQHBAkCAQcBAgwKAw8WCwcDAQgBHjUXBgsFAwYCBAcFAgYDBQkFBQoFBQsFAwUDDAQCDgsGAwcDCwoBAgMDAQQIChgMBg4FBgEHBQIBAQEBAQEBAgEBAgELFgsKAQsZCAwZDAgTCQgLAgoBAgwDBQMDBwMDBwILFQsEAwICBAIDBgIGCAUCBwcEBQECAgQGBgkGCwUFCAQGAwICAwIDAgICBgIFBQIGBwIEAgECBQMEBgUBAgEGBgQCBQMDBgMCBAMKAQgGAgECAgQBAgsHBQsFAgUJBAcPCgoBAgkCDFYBAQEEAgIBBQEBAgEBAQMBAgIBAgEBAgEDAgEFAgECAQUIAQEFAQEHCQUDAwUCBwICBQUECQQCAwgDAwUCCAYDAwEHBgIEBwEBBAEGAQEEBgIIBgUDAQQFAgwSCwMGAwoOBg0lERAMBgsVCgECAuYGDQYPHQ4HDQcFCgUJEgsFBwUGDgcIDwgHAQMSBQMHAwgRCAgTCBUpFAECAQEEBAIJAgYEBQsGBwcDCgwFCgQDBgILAREOCAUJBQcRBgwCAhEOCAoEAwcEBxcLCAYFChMLBAIEAQkFBgYCAwYCCQECBQQCCAMIBgIBAgIIDwgFDAgUDQ8HCA8FBgUECQMDBQMJAQUBAQcBBAILBAUFBQQCAQIBAQECAQECAQEBAQEBAgECAQEBAwMEAwMDBAEGCA4IBQwIBgMCCggLCA0JCxMJBQwFCwEBDhQJAwECAgIBAgEBAgEBAgEBAQECCgIGDwgEBgQJAwYGCgQCCggFBgICAgcFAgUJEQwIBw4FCgICAgYCBQYCBAcFDQYECgoEBgMFAgoHBQ0FBQEFBQwGAwkFBQoFBAcEDAwIDAECAwcCBQkDAQYCAgECBAECAQMCAQT+YwQJBAUKBQgCARwXAwwBBwgFCBAIFhYDBwMDBgMNGwkKBA0FAwoUCAgBCQIKCwgEBAYDDAQCCQkFDQsFCA0IBQkFCgwGBgMCDQkFCwsDAgQIAgkBAQQGBA8GCwICBg0GAgICAgEBAwEDAgUIAAEAMv/MAhsDAQJSAAABFgYVBgYVFAcWBgcGFgcGBgcGFAcGBgcGFAcGFAcGBgcGFgcGBgcmNic0JyYmJyY2JzQmJyYmJyYmJyYmJyYmJyYmJyYmJyYmIwYGBwYmByIGIyImIwYGBwYGBwYGBwYUFxQGFRQWFRQGFQYXFBYVBhYVFAYHBhQHBhYVFBYVFgYXNjY3NjY3Njc2Njc2Njc2NzY2NzYyNzY2NzYWNzI3NhYzFjIXFhYXFhYXFhYXFhQXFhYXFhQXFhYXFhYXFhQXFgYXFhYHFBQVFhYVBhYVBhQHBhQHBgYHBgYHBjEGBgcGBgcGBgcGBgcGBgcGBwYGBwYGBwYGBwYGBwYHBgYHBgYHBgYHBgYHBgYjIiYjJiYnJiYnJiYnJicmJicmJicGBgcGBgcGFhUGBgcGByY2NSYmJzQ3NDY3NjQ3NDY1NiY1NjY3NiY3NDY3NDY3NjQ3FgYVFBcWFhcWFhcWFBcWFhcWFhcWMhcWFhcWFhcWFhcWMhcWNjMyFjM2Njc2Njc2NzYzNjY/AjY2NzY2NzY3NjY3NjY3NjY1NjQ3NDQnJjYnJjQnJiYnJiYnJiYnJiYnJiYnJiYjIgYHBgYHBgYHBgYHBgYHBgYHBiIHBgYHBgYHBgYHBgYHJiYnJiciBwYGBwYGJyY2NzYmNzY2NzY2NzY0NzQ2NSY2NTQmNzQ2NTQmNTU0NCcmJjc1NDY1NjQ3NhYzFhcWFjM2FjMyNhcWMzI2MzIWMzYUMzI2MzYWMzc2NjMWNjM3FjYzFjYzNjY3NhY3NjY3NjI3MjYzNjI3NhYCBQUDBAMCAQIBAQEBAQMBAQEBAwECAQIBAQIBAQEBAQMHBAEBAgEBAgUCAgQCAgECBgICAgICBAcIBwsJBQoICBYJBQoFDRYLBAYECQMBBQcFBw0JBg0IBAEBAQEBAQEBBAMBAQEEAwEBAQMEAwIJBgIHAwUKAgIFAw0DCgsFAwYDAwcCBhEGDAIMCQUMEggDBgUFCQUIEQwKAgkBAQoCBQMEAQQCAwEFAQICBgEBBAEEAQEGAgQCAgQDAQYIBgMFAgEGAgIDBgMCBwQIBgkEBAYHBQULBgYNBgYGAwUCCwYFCAwGDw4IBg8FAwcDCwgHBAUCAwUFAQYDBAMDCAkFBQQCAgIDAQUEAgYDBAEBAQECAQECAgMBAQECAQEBAQIBAQEBBggEAgMGAgECAQIEAQICAgUCBQIBBQYCCQwIBQoFBAgCAwgGBQkFBw8ICBEJCgEGBQQLBQoNAwUCBgoFBgEBAwIECwQEAwEBAgMCAQQBAgYDAwcFBQkFCAEBCAcFBQcHBQwGBg0FBQgFBAkEAgcCCgIBBQQCCwgEAwQCAgQCCQUECA8ICBESCwkHAwQPAwYFAQEBAQEBAQEBAQIBAgEBAgECBgEBAQEBAQMEBQMHCwsFAgUGAwUJCA4QBAgEBAYDCwIDBwQDBgMLCQUCCQcDDQIHAgoKCAoGBQQHBBYZCwUJBAQGBAgQBwcFAwEDBgIRGg4ECAwGAwMHBAYLBgcOBwUKBQgNBwcNBwIFBAMGAwQNAQULBgQIBQsHDwsFBgoFBQsFDwgGBQcGBgMFBAUCAQICAgIBAQEBAQEBAQEDAgIBAgIDAhEXDAcMBQUKBQQHAwwNBQsGDAcEBQoFAgYDDQwFBQcFCxMKAQYDBwUDBQMCAwEBAgIFAQQEAgEBAQIBAQEBAQEDAQQCAwEBAQEFCgIHAgEGAgEGAwIDBwIFDAYIBAIKCQQHCQoECQUIDgkPCwYHEgUNCgYKBAIHBgIKCwMCBgEBAwMCAgQDAgUCBQMHAgIEAwICBwIDBQIDAgIDAQICAQMCAgYBAgECAQEBAwQBAQIIAQMGBQgHBgoCAwkFBQcFBgMCDhEJBgEDCQUFCQUWDAgNBhMSCgUJBQgNCAUNCAUIBgIKBQMFAwUMAgURCAcIBQwIAwcEBwoEAQcCBAYECgEHBQQEDQMCAQEBAQICAgEEAQIBAgMBAgIDAgUGAgICBQ4IDQICBgQIDwkOBwUECgUJEggNBgQMCAQLEwoECAQDBwMDAgEFBAICBAMCAgECAgQCAgIDAgIBBwEBBQIIBwMCAwICBQIFBwICAwICAgMDAgEBAwINEAgKFgsDCQMLFAwGDQYFDAUDBwMKEgkGDQYJEAsnDQsHCxINDAMIAgkCAgIEAwEDAgEBAQIEAQIBAQIBAQICAQEBBAIDAQIBAQEBAQEFAgIBAQMCAgQBAAAAAgAf/98CNgMkAeQCTgAAARYUFQYUBxQGFQYWBwYGBxQGFRQGBwYGBxQWBwYWBxYGByYmNSY2NSYnJicmJicmJicmJicmJicmJicmJicmJyYmJyYmJyYmBwYHBgYnBgYHBgYHBgYHBgYHBgYHBgcGBgcGFQYGBwYGBwYGBwYGBwYGBwYGBwYG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AwMFAgUMBgULBQMIBQgKCwgJBAkMBwgKBQwKBQICBgEBAgIDAQFbAwMCCAYDAgYDCwUHAwgBAgsCAwgFBQgDBQYEBAgEDAMEBgUCCAMKFAgFBQIHAwIDCAIIDAcDCwMBAgEEAgIDAgIBAQICAQIBAgICAgYCAQEBBQIKBwMFDQYFBwUNBwMLCwUMGgwDBgIGBQIHBQIFBgQFCAgSCAQJAgYHAgMFAgICAQQBAQICAwECAQIEAQEDCAIFCAUNGA8ICQUIAwQCAgQHAgcCCAICAwECAwIFBAcFCBYGEgYDBgsDBwIFEAUCCAEKAwcHBwUIAg0GAgIFAgECAQMIAgMICwgEBgUIDQcBCg0CBwMEBwIDBQIEAgIDAQMBAgUCBwMDCAMDBwMIDAgDCAwDBgsGCQIKBwUUCwcCAgQCVQQCAQkRCAkDAwEDAgEBAgECAwMBBQcBAQgBAgcCAQIDAgYBAgwMAwgDCwcDCQUDCgECBwMCBQgFCBEJCwwFCAUEBwwFCg0FDgkFCAsFDgkFCwUGAwcBAQcIBAIGAgQDDQsFBQEBAQECAgIBAgIBAQEDAQICAQECBgEGAgEDBgMFBwUCCgUIAQwNBQoBAhAFBQoEAwYECBQJFwcOCAYEAgkKBQsSCgEIAwQIBQUHAggHBgYFAgMEAwYCBQMCAgQDAwEBAQICAwECBAQBAgYCAgMCBwEBBwIBBwEKBAIKBwQDBAICDAULAwIGDwcHDAUFCgUIAw4NCAgSCgsYDgcOBgcDAgMFBAUJBQwEAg8LBQUMBQQHBQsDAQ8LBgsCAQcICBAICAcEDQcCCAUEAgQDCgQCBAIPBgIBAQIGAgEBAQMBAgMCAgUCAQECAgIBAgQDBAQCAwYKBQUJAwUKBgIKAhMGBAILBgICBgIHAQMGAgUCAQgBAgICAgIBAQIBAQMBAQMCAwIFCggCBQIFBgIDBwMNDQcKFAsCBgMJAwcKCQMCBQUCCAICAwcEBw8HBgwGBQcDBAUECQYEBQYFBgIDAgEGAgUBBQMBAQUBAQUBAQIBAgIEBAgEAgQCAwsCAwoEAwQEBAgDBAcECQYDAgcEBwwFBQQFAwgGCgcDCgUFCwIBAwMCAwYBAQUFAgYHCAYFCAUKFwsIAwUFBAEFAgMDBw8RAQIEBAICAQMFBAIFAQECCAQCBwQFDQQCAwkCDQECCAECAQEBAQIB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BwEJCAMDAQgTCQULBQ4iDwEDAQQCAgMBAgIFAwECAQEBAQEBAQEBAQIBBQECAgUGBgMDBgMFEgQKCwYKBAsaChIHDAUKBAICBgUCAggKAwICAQIBAgEEBAQCAQEBBAMBBAEICAIGAwQMBgMIBQ0IBwMCAwwFAwcDAwcDBAUDCBQJBAcECREUEgUIBAMHBwQCAQICAwIFAgIEAgEDAQMCAwQCBAkICAQGCAMRHg0KAgUFAgcCAQICAgUEAwQBAQQCCQUDAwUEBQkFCQkIDwMDCQgLAwcDCQQJBQUIBgsEAgoEBQkBAQECAwQIBgUFCAUHDAcIDwYEBQQGBgcCAgECAgMBAQICAwICBgQFBgMGAQEDCAUDBwQIDwkFCAUFCgULCwcMBQoLBQIGAwQHAgcBCQcCAgEBBQEBAQMBAgIECAYECQMCCwcFCQIFCwcGCggGDggGDQYhEB8PBQgEBAcECwECCAMCAwYDBggFBQwDBQQCDQUCBAIHAwQCAwIGAQICBAIGAwIBAwEBAQIBAQEBAwIDAgQEBgUDBQICBAgFBwkIAwoFBAgEAwcDDxMMBwQFBgQECAMDBgMEBwUIEAwDAgIEAQECAgIICQYFCQUIDQYNDggMCAMIBQQIBQYCAwQEBREMDBcBKRY3FQUCBQ4MBgUHAwwFAgEBAQUKCwMJBQIHAwMHBA0OAwYDAwYEBgkIBQkFCRIGBQcFBQsDAgcCAgcCAwQBAwEBAwEBAQQIBwgFCAMCAwcCAgcCCw0GAwgCBQcEAwgOBgMECwUODAYHEQYTIgsDCQICBgQCBAMGAgIBAgEBAwEBAQECAQECAQIBAwUDBAIDBgcCBQMLBg4IBQcFBhgFAwQDBgMCBgUFAwICAQIKBgECAwIKAQEDBwQICwgJBwUKBQwGAgMFAQECAgEEAggIEw4BBAsCCAkFBAgCBAEBBQMDCQgJEAgQBAgCAQEBAgIHAQIFAwMEBQgICQQDBgMEDgYIDgUKAgEFCwMKCAYCAQICAgIEAQICAQEDBAIGAgQBAgEEAgMDAwoCAgsLBQgPCAwYEQMIAwMGBAQGAwgIBwMFBAIHBgIEAQICAgIDAgECAQEBAQICAQIBAwEBAgECAgMEAwIFAgIKBQMIAwgBBQQDCAQMCAQDBwUeJhMKEwsLAQEDBgMIAgIGDgUFBwQIEQgGBQgHBAYBBQcEBQoDAgQBAgEBAgICAgEBAQICAQPZAwMEAgMEAgsDBg4GDgsEAgQCBAUBAQYHCAkEEAgGCAIDBAMDBQUFBAICAQAAAAACAB7/7wMGAv0C4wNgAAABBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBwYmIyYmJyYmJyYnJiYnJiYnJiYnJicmJjUmJic2JicmNzYmNTQ2NSY0NzY2NzQ3NiY3Njc0Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2NDc2Njc2Njc2Njc2Njc2Njc2NhcWFxYWFxYWFxYWFxYWFxYXFgYHBhQHBgYHBhQHBgYHFAYVBhQHBgYVBhYVBgYHFBYHBhYVBgYVFBYXFhYXFhY3NjY3NjY3NjY3Njc2Njc2Njc2NjU2Njc2NjU2Njc2NjU0NjU2JyY0JyY2JyY2JyYmJyYmJyYmJyYmJyY0JyYmJycmJicmJiciJicmJicmJicmIicmJicmBicmIyIHBiYHBgYHIgcGBgcGIgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBwYGBwYGBwYUBwYHFgYVBhYHFAYHBgYHBhYXFgYXFBYVFhQXFBYVFhQXFhcWFhcWFhcWFhcWFhcWFhcWFhcWFxYXFhYXFhYXFhcWFhcWMxYWFxYWFxYWFxY3Njc2NzYzNjI3NjY3NjY3Njc2NzYXFhYXFhYXBgYHBgYHBgYHBgYHBgYHBgYHBgYjBiYjBiYnJiYnJiYnJicmJicmJicmJyYnJiYnJiYnJicmJicmJicmBicmJyYmJyYmJyYnJiYnJiYnJiYnJjYnJiYnJiY1JjYnJjYnJjY1NiY1NjcmNjU2NDc2NjU2Njc2Njc2Njc2Njc2Njc2NzY2NzY3NjY3NjY3NjY3Njc2NzY2NzY2NzY2NzY2NzY2NzY2NzYWMzY2FzIWFxYWFxYWFxYWFxYXFhYXFhYXFhcWFhcWFxYWFxYWFxYWFxYWFRYWFxYWFxYWBwYGBwYGBxYGFQYWFQYWFQYUFQYGBwYGBwYGBwYGBwYUBwYGBwYGBwYHBgYHBgYHBgcGBgcGBgciIicGJicmJicmJicmJicmNjc2Njc2Jgc2Njc2NzY2NzY2NzY2NzY2NTY2NyY2NzY2NzY2NzYmNTYmNSY0JyY1JiYnJiInJiYnJiYjBgYHBgYHBiIHBgYHBiMHBgYHBgcGBgcGBgcHBgYHBgYHBhQHBgYHBgYVFBYXFhYXFhYXFhYXFhYXFxYWFxYyFxYWFxYWFzY2AhYJAgIHBgMGAQICBwMDBAIHAwICBAMDBgUPFg4MDAsFCxAICQQCCAELBgMCBAIHAgIEAQICAwMDAQEBAQEEAwMCAgEDAgIBAQMCAgYCAgICAgQCBgYCAgQBAQQCBwICAgYECwoFCQIHBwMLAwIMAwIFBwQNCQkKFg0QDQYCAgUBAQIGAgsRBQkFAgcCAQECAwEBAQECAQEDAQECAgICAgEBAQMBAQQEAQYMCAYNBwQFAwIFAgMFAgcDAgIBBAMCAQICAQIBAgMEAgIGAgICBAEDAQEGAQECBgIEBgUFAgIGCgYLAgsIAhAEBgUHDQcFBgUECgQDBQUNCAUDCAMFCQUKBgQKBQgDBQkCBwQDBQIIAgIFDwYIBQMKBwMDCQMDBAIFBQICCQQGBwMMCAQIAwIDAgICAgQCBQIBAQEBAQICBQEDAQMCAgEBAgEBAQMBAgIFAwECAQIECQUGAgIJBgIFCAQGBQYECwYCBgYLCQcKAQUJBAMJBg0GAhocDgIICQYFBwMBAwUCBAcDBQYHCw0BAwIBAQICBwYDBAcCAwwGCgIBCQgFBAYEDioUCRMFBAoEAgsFBAcFDAoIBgMGCgUVERQRAgQCAgMCBgMCBAICAwIDBAETDwECAQkEAwIDAgQCAgUCAgMBAgECAwQCAgMCAQECAQECAgECAgQBAgEBAQMGBAIIBQQCAwIHBAIEBwcECAYKBQYEDgwGAwoFBQUDCAYPBAUKBQIEBAYFAgoXCwcYBQUSBwwBAQseDAYNCA8LBwcJBQIHAwwKCxULAwgEBwkDBQEJCAIDAgoIBQQGBQUDAgUDBQoFAwMBAQQCAQIBAQMBAgMCAQEFAgEBAQQEAwIDAQYBAgQCAwgFBgICAwMCCAIDBgUFBQgPDgYKBQoMBwkHAwIGBAIEAgICAQIEAQIBZwYLBgQDBgEBBgQBCgYEBQIIAQoCBwEFAQECAQEBAgEBAQEFBQICBAMBBgQBBw8HDA4MCgICCQMCAgYCBwMHCQUDDAoKBwIFAQEGBgIBAgMBAQECBQEDAgEBAgMCAwYCAgECAgMCCAQDAQgFAgcQCAkUCwUFAQYIAQIKBQUIAwIDBQQFBgIJAQICBAIDBgIIDwQDAgEBAgQGAQIIAQsIBQMKBgwFBAkBCQICExgKBgcEDhEKBgIFCwUFBgUECQQMBAMIAgsEBgoFAwcFAgYECwQDBQIEAwQCCQECAgYCBgkCAwEBAwMCAgIBAwIBAgMCBAMBAQMBAgcEAQIEBAIEBgQNCAYBBwsVCQUNBwcNBwgQCAUKBQQGAg0KBQUKBQYNBwUJBQIGAwUIBQUOBwcOBwEBAgEBAgIIBQUJAwUIBAwEAQgECggECgECBgwGAwYEChELDyIOBQkFEAwKBgMHAwELAgIFCwYHBwUDBAIGCgQFAgEIBgIGAgQCAwYFBQIDAgEBAgIFAgEDAQEBAQICAQEBAQIBAQIBAgMBAgYDBgICBgUCAwQDAgUCAgUCAwcDCQYDFggJEQoFCAUFCgUFBgQGAwYNBwYMBQgRChUbDAYOCAIGBAIHAgQFAwgMBgoHAgUDCwQCAwUCBgsHCAMCCAYCBgQDCAEGAwYEAgQDBQcDBAIBAgIBAgMCAQUFAwECAwMGAQIEAQIBAgQCBQYBAgcBAwIGAwcGAwgFAwUHAwgBAQcFAwIFAgcDAQEBAgEBAQIBAQEDBAYBAgIIBA8PDxECBAICBgIGAwIEAgIHAgwBARcWAgcCCwoFAgkFCQUFCQUFBQYEBgUIEgkGBAIJBwIDCwUMBgIFCwYPDQUGBQMHAwoBAg0IBQsLBQIFAwoIAwUKBQQGBgoFBgILCwUDBQMDBQIGAgkCAwYDAQICBAEBAwoEAgQCAgEBAgIBAQIDAQMCAQIDAgIBAQUDBQoEBAYFBQgCBAMFCgIFAg0HBAQHBAkCAQQKBQwXDQgaDggRCQQJBAUHBAMFAwsBAQIMBQYMBQQFAwgUCAYLBwkEAgUIBQgRCAoEBAkFBAoEAwQEAwMFBwEBAQcDBQMCAgQCAwYFBRQICA0HBgskBg0GCAMFAwIGAwIMDAUIAQERGwsICQUOBgIGDggKFAoLBQMFCgQMAwsCAgkBBwIBBgUBCgcFAgEGAgIGAgcJBwYCCgwICQMDBgIKCAEBCAQCAwYDBgkFChgIBg4FCAYGBgsFBQYCAgUCCAcDAQkBBAkCAgICAwgAAv/L//MDQQL2AlACwwAAAQYiBwYGBwcGBgcGBgcWBhUUFxQWFxYWFxYWFxcUFhcWFhcWFhcWFhcWFhcWFxYWFxcWFhcWFhcWFhcWFhcWFxYUFxYWFxYWFxYXFxYUFxYUFxYWFxYWFxYXFhYXFhcWFxYyFxYWFxYWFxY2FwYUIyImIyYGBwYiByIGIyIGBwYmByIGIwYGByImBwYGJyImIyIGIyYGJyInNjY3NjY3Njc2NzY2NzYyNzYWNzY2NzI2NzY3NjYnJjYnJjQnJjQnJiYnJiYnJiYnJiIjJiYjIgYjBgYjIyYHBiYnJgcHBiIjIiYHBgYHBgYHFBYVFAYXFhcGFhUGBhcWFhcWFhcWFhcWFhcWFgcGJiMGIgciBiMmBgciJicmBiciJiMiBiMiNCMGBiMiJiMiBiMGBiMmNjc2NzY3NjY3NjY3NjY3NjY3NjY3NiY3NjYnNjY3NjY3NjY3NjY3NjY3NiY3NzY2NzY2NzY2NzY2JzY2NzY2NTYmJzY2NzY2NzY3NjY3NjQ3NjY3NjY3NjY3NiY3NDY3NjY3NjYnJiYnBiYnJiInIiYHBgYHBgcGFAcGBgcGFBcUBhcUFhcWFxYWFxYWFxY2NzY2NzY2NzY2NzYmJyYGBwYGBwcmBzY3NjM2Njc2Njc2NhcWFhcWFhUGBwYGBwYGBwYzBgYHBiIHBiIHBgYnJiYnJiYnJiYnJiYnJiYnJiY3NjY3NiY3NjY3NjY3NjY3NjY3NjY3NhYzMjY3NhYzMjYzMhYzNhYzMhYzMjYXFjYzMzY2NzYWNzY2NzY2NzYXNhYHJyYmJyYmJyYmJyYnJicmMSYnBgYVBgYHBgYHBgYHBwYHBgYHBgYVBgYHBhQHBgYHBgYHBgYHBgYHBhQHBgYHBgYHFjYXFhYXFjYXMhYzMjYzMhYzMjY3NjY3NiYnNDQnJiYnJiY1NiYnJiYnJyYmJzQmAjwCBgIDCAQKBwsIAgUDAQMCAwECAQIGAgIEAgECBQUCBQQBAwICAwMDBQIEAQUCBAIGAQICBgMDBgQEAwICBAUCBAICAwIFBQIFAQIEAgYGAgkGCAgFCAINBAcEAgUNBQUHBQQJBAkCAwgFCRULBw8IDw0IBAUCCxYKBgwGDhoNBgwGChIJBQcFAwYDDhMIDwoFBgQHDwgFCgwIBQkFAwYCCwMCBwMCBQUCCAMBBAEGAQEEAQMBAgUCAwMCBw0HDAoGBw0HAggEER0UCwYHCwYDERAMCA8HCAwHCBAGAgcBAQMCAQQDAQEBBAIIBQUQBgcFAwcSBwMIAQoHBAUJBQQHBRgkEQoUCgsUCgQHBQQHBAsBBQkFCA0GBQoFAwsFDAkCDAELAQkPBQsGBAMHAwYIBwIIBAUBAQIFAQkIAgICAQQGBQIDAgMEAQICAgcCAwICAgIHAgICBAEFBQQCAwECAgIDAQQDAgMFAgMCBgEECAQCAgICBAECAQICAQsJBgIFAQINBAsVCgseEQgSCAoSCBERCgIJBAMEAQEBBgICBwQGAwUDBg4GBQgKBwIHAgIBAgUNBgsHAwQFAg0JBAEFBwEIBwMDBAUEBgQLDwgEDAMCAgcFBAcECwEJBAIJBQIFBgUEBAUHCgUFCQMGDQUDBwICAgEBAQIBAwEBAQEDDQUCAgMHCwUFBwUPDwYFCwUDBwQPIg0IDwgJEgwEBgMIEQgNHw4DCwQUDQgEBQoFDBYLBAgFBgkDDH0JAwYDAQIBAgICAQQEBAUHBwkDAgUCAgECBAgCCgcBBwQDAQMCAQEBAQcDAwIDAQgMBwIGAgICAQQCAwIBCxgMCA4HBxEJBw4HBwsHBQoFDBgNDh8IAgwFAQYBAQEDAQMBAgEDCQMFAwcC8w4CBQUFCAYOBQUGAwwHAgQKBw0IBg0FDgkFDQgFAggQBgkSCA0MBQYKBQsKBwUDDwYLBgkIAwcKCAkSCQgHAwcCCwsGCQsEBQUKCAcEBwYDBAYEDAgEDgUECQMFAwcCBwECBQICAgEBAQQFAgIBBAEBAQICAQEBAQIBAQEBAQEDAQIBAQMBBgwCAgMGBAEEBwICBgICAgcBAQQFAgUCBgMGDQgKAgIHCQUMBQIFCwUMCQUHAgIDAQMBAQEBAQECAQICAwECAQEDAQkVDAMGBAUHBQkJDQoFCBEHBAsEBAYEBgECAwoFAgEFBgIBAgMBAwECAQEDAQICAQECAwEBAgkBAggBBwEJBgIGAwICAgIECgQICgUIAQECCgUNDwgMAgIKGQsFCggMBQQEBwQMAwUDBQgFDAgFBQwIBRIIAwMFBQgFBQgFBwYDBwkECQUKBQIIEAgFCAQFBwUEBwQCBgMUEQwGDQQFAwMCBQMDAQEBAgcCBQcHAgEIBwILEg0ECAQEDgUDBQkGBAUGBAQCAgIEBgIEAgIGAhAOBQcDAgEDAgYCAgkLCQYCAgIBAgECAQERBQgOChEDAwUFAwgDCQUDAgcBBAEBAgIBCAIFBAMHDggHDgcIEwsLEQkECAUECAMFCwUCBQIGAwICBQICBAEBAQIBAQEBAwEBAQECAQEBAgEBAQECBQQBAQEBAQQC+xUIEAgDBgIHDAUEBg0IDQkCBAQBAgUCAwcFAwoECxMDDQ8HCAIBAwcDAwcDCw8EAwgCFycQBQoFBQgEBAcFCBMJBAMCAQUBAQIBAgIBAQECBQUVIhICBwIMCgUCCwIICAUIEAUJBAcDBgkAAAAAA/+3//ECugMCAbcCSALSAAADJiYnJiYnJjYnJjY3Njc2Njc2Njc2Jjc2NzYWNzY2NzYWNzY3NjI3NjY3FjI3MhcyFjMWFhcyNhcyFhcyFxYWMxYzNhYXMjYzMhY3FjYzMhYXMhYzMjYzMhYzFjYzFhYXFjIXFjIXFhYHFhYXFhYXFxYUFxYWFxYUFxYUFxYWFxYWFxYWBwYWFQYGBwYGBwYHBgcGJgcGBgcGBgcGBgcGIgcGBgcWFhcWFhcWFhcWFxYWFxYWFwYWFxYGFRYGBwYGBwYUFQYUBwYGBwYGBwYGBwYHBgYHBgYHBgYHBgYHJgYHBiIHBgYHBiIHBgYjIgcGJicmJicmJgcGJgciBiMiJgcGBicmNjc2Njc2NzY2NzY2NzY2NTY0NzYmNzQ2NTQmNTQ2JzQmNyYmJyYmJzYyNzYWNzYyNzY2NTQmNTQ2NTYmNTQ2NzYmNSYGJyYiJyYmJyImBwYGBwYGBwYGIwYGBwYGBwYGBwYGFxYWFxYVFjcyNjc2Njc2NicmJiMGBgcGBgcmNCcmNjc2Njc2Njc2FhcWNhcWMhcWFhcUFhUUBhcWBgcGBgcGBgcGJgcGBiMiJiciBicmJhcWBjMWFxYWNxY2MxYXMhYzMjYzMhYzNhYzMjYzFjYzFjY3Fjc2NzYWNzY2NzY2NzY2NzYyNTY2NzY2NzY1Njc2Njc2NzYmNzY2JyYmJyYmJyYmJyYmJyYnJiYnBiYnBiYnJiIjJgYjJgYjJiMmIiMiBicGBgcGBgcGBgcGBgcGBgcUBhUGFAcUBgcHFgYVFhYTFhYXMjYXMhYzNhYzMjYzNhQ3NhY3FhY3FxY3NjM2Nhc2Njc2Njc2Njc2Mjc2Njc2Njc2Njc2Njc3Njc2Njc2JicmNCcmJicmJyYmJyYmJyImJyYmJyYmIyYiJyYGJyYmJyYiJyYmIyIGIyImIyImByImIyIGJwYHBgYHBgYXFBQXFhQVFhYXFjIqAwgEAgUDAwIBBAICAgUCAgICBAIGAQIJAgoCAgkGAwoFAgsIBAgEBAUFBg0IDA4ECAQIDggGDQUNDQcIBAUKBg4EDiQSDRIIDR0LCQoFBAkFCQQDAwYDAwoDCwUCBgwGCBEGCAoCAgcCBQcDAgICBQYBCAICCAEDAQIEAgIDAQIDAQMCBQYEBAQCBAIGBgYCAQMHAgMEAwQIBQgDAQcNBAUPBQ0IBgQIAgwCAgcCAgICAgUBAQEBBAMCAwEBBAICBQICBAQFDggIAgQGAgIEAwYIBQsPBAQFBAMHAwUKBQMJBgUICBMFBRUICxYLHDMcCREICA4HEiMSBw0IBQoDDQkFCQMEAgEBAQECBAEBAgIBBAMCAQQBDBEIDA8IAw0ICQMBCQ8GAQEBAQEBAgEBAQIFBAcIBQMHAw4JBQQIBAUIAwUGBQMFBAEGAgIEAwcKAgEEAwcOEggPCAUEAwIGAQgMBQYJAgQDBQUEAQUCAgYDBAMECBAFBQcEBQMCBQEBAwEBAQUEAgQDBQYIDQgEBQYEAwgFBgsFCAj7CwEBBAoFCQILBwIFBg4ZCgQHAgMGBAoDAggMBQwGAg4JBQkEDAEFBAIHDwUICwMCAQIGAgQDAgIBAgIDAgEBAQMCAQEBAQIDAgQBBgsCAwUDAgUDDwMOEQcEBwILFQsLFwsQFAsHAQMKAQcLBAoTCgMFAgMEAgECAQICAgECAQEDAQEBAwIDBAYUBQcFBAgEAgYEBwICAwYDDAMICwgDBQMUCQcKCAYKBQQIBAgNBgoUCgcDAQMJAgYGAgIEAgIDAgUCAgMDAgIDBAYBBwICDgQDBQMHDwUEBQIIBAILBAIKBwINCgMIDggGDQcGDQYDBwQIDQYEBgELAwIFDQQRDAUHBAEBAgEBAgYFBAgCGgUIBAYGBQcJBRUZCg8NBAkCBQECCwICDAMGAQIHAgIHAQEEBAEBAQMBAgEDAQECAQECAgIBAQICAQEBAQEBAQMBAQIBAwICAQIBAgMFAgYCBQIKBwQHBQoIBgIKBgILBAIHAwEEAwQDCQIFDAkKAgIRDggLBwQIAggIBwEBBwUDAgYDAwUDBwEIAwUFAwIGBQICBQUFAwIGAwEHAgkHBwMHBRI1EwcMBwMHAwoIBQUKBQUIBQcNBgcCAwUCAgQCBAYDCQcGAQQCAgICAwICAgEBAQIBAQEDAQIEAQIBAQIDAgEEAwMHAwsMBg0LCgICBAgEBQoHBQgFFSoWDhsOBg4HBAcFCRYLDg8ICQEHBwICAQEEAgsZDAMGAwMHAwYLBgsXCyZDIAUBAgQCAQQBAgEBAQIBAQECCQMGAgUFAgMGAw0jEwYQBwcDEAIFAQMPCwgMBQ0FAQoFBQ0DAQkCCRAIAgMDAgUBAgMBAwICAwIDDgkFDAMFCgYFCwYEAwQFBQMGAQEBAgIBAgICDHkBAQECAQIBAwICAgEBAgEBAQEBAQMBAgICAQQEAgUKBAcJBgIGAgsCBwkIBAoCCAMIBwMIBAcGBAgFCQgFAwYBCQkFAgQCAgUCCQIIBgYCAgIBBQEBAgICAgICAwEHEQYKFQgHBgMLFgwGCwYECAEICwUHDggPEhMIAQL+kgEDAQIBAgEBAQIGAgICAgICAwEBAQIBAwECAgICBgQFCgUEAgIJAggKBQQIAwUIBQsOBg0bDAoNBwcEAQcBAgoEAgQCBQgFAwECAgEBAgMBBQEBAgECAQIBAwEBAQIBAgECAwEBAh1OJgoUCQUJBRo2FwIAAAAAAQAe/7oChAMIAn0AAAE2FAcGBgcUFgcUBgcGBgcGBgcGFgcGBgcGBgcGFhUGBgcGFgcGBgcUBwYxBgcGBgcGBgcGBiMGBwYGBwYGIwYnJiYnJiYnJjEmJicmJicmJicmJicmJicmJjU2Njc2NDc2Njc2Njc2NzY2NzY2FxYWFxYGBwYGBwYiBwYGJyYnJiY3NhYXFhYXFhYXFhY3NjY3NjY1NjQnJiYnJicmBgcGBgcGBwYGFRYiFxQWFxYWFxYWFxYWNzc2Njc2Njc2Njc2Njc2NzY2NzYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmIwYmIyYGBwYGBwYGBwYGBwYGBwYGIwYGBwYGBwYGBwYGBwYGBwYWBwYGFRQWFRQGBwYGFRYUFxYGFRYWFxYUFxYWBwYUFRQGFRYWBwYGFRYGFRQXFhUWFhcWFxYUFxYWFxYUFxYWFxYWFxYyFxYWFxYXFhYXFxYWFxYWNzY2NzY2NxY2NzYyNzY2NzY2NzYWNzY3NjY3NjY3NzY2NzYWNzY2NzY2Nzc2Njc2FhcWFxYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYiBwYGBwYiBwYGIwYmJyYmJyYiJycmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyY0JyY0JyYmJyYmJyY0JyY0NSYmNzY0NzQ2NTYmNTc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2NzY2NTY3NjQ3NjY3NjY3Njc2MTY2NzY2NzY2NzY2NzY2FzY2NzY2NzI2MzIWFxY2MzIXFhY3FhcWNhcWMhcWNhcWFhcWFxYWFxYWFxYWMzI2NzY2NzY2NzY2NzY2NzY0NzY0An0HAQEEAQEBAgECAgECAgEBAQEBAgIFBAIDAQECAQUBAQECAgEIBQUDBgQECQQHBgIIAwoHBQQRBgoLAwYDAgcDCg4EBQIFAQIBAgQBAgICAQICAQMCBQEFCAQHBwMECwYOCAsfDgQDAQEBAwIFBAIIBBEWDQQCAQEDBQQCAgUDAgMCBAUIBAQCAgIBAgMGAgUHDR0GBAQEBQQBAgECAQMBAwYFAwMFCBMPEQQHBAoDAgQGAwUKBQUDBwICAwQDAQMCAwsGBQsFAgUCAgYDDw0GBQkFDQkEERwOAwcDCggFBQgGAggDEhEKBQkEAwcDAwUFAgcFAQUCAgMCBAcEBAcEAQMBAwEBAQEBAgECAwECAwEBAQEBAQECAQMBAwEBAgUDAwQCAQQCAgIDAgICCAIBCwECBgMBAgUCBQUEBgUKAwkFBwYHCAsHCw0CCgYFBAgEBAgFDxAJCAICDQcFBgQECQQSAgMDBwIBAwYCBQUCBgIBAwQFAwoDAgkEAwYEBw0GBgYEBQsFBwsFBw4ICgoFCwgEBQUDBAcECRYLCB4JBAcEBQgFDw8NCgoIDg8IBw4FCwECBwICDAYDBQUCAgMBAgMCAgEDAQMCAQMCAQEBAQIBAQEBAgEBAQICAQMFAwIHAgMCAQECAgIDAgMDAQIBAQUBBQIDAwUBAwgDCRQICAcKCg4IBQoEAwYCAwUDBwkFCRQKBAsHBQcFBg4HDQcEBwoMBQEHBAMHAwcCAggDAQIDAgYDCQUCBQYDCgkEBQYFAwoFBQIBAwICAgUCAgIFAwYCDQUODwwHDAUFCwULHAsNBwIEBwQCBQMSFAsNBQMCBgMNBgQFCQYKAgoDBwMFBAQGAwUDBAMDBAICBAMDAQMCAgICBQYEBgIFAgIGAwkJBQMEBAYOBAQKBQoEAgUKAwUHAQICAgMCAwQHCBUMCRMJBwcDAgIFAwIMDgcPBwEHAgMEAgYDAgUEBAQCBAUFCAcNBQYBAgUCAggFAgsFCgwECAIKAQMIBQcMBgYIBgoKBQYCBAIHAQICBQIFCQUIBQ4KBQkWCgUKAwYMBgYMBQIEAwIDAgkLBAMFAwYGAwoFAwECAQEBAQIBAwILCgUCBAMCBQIDBgUCAgMDAgIFAgQJBQgOBwUFBAsFBAMHAwoMBQcLCQcQDAgFAgcPCAUHBQgLCgUKCAQGAwgOCAkBAQsJBQoRDAIGDggECAcOCAMGAwMGAwkFAggDAgUBAgMCAwMDBgIFAgICAgICAQQDBAQGCAYBAgICBAIHCAUFAQEHBgMIAwQGBBMCBwMFAQEEAgIMCQUMAggCAgYCAgMIDAcGDQYMGQsLCAUJEQoODAcFDQUFBwMGAQEDAQEBAgUEAgMCBAEBAQYHBAQFBQoQBwcLBwQCAQIDAggHBAcOBQIFAwULBQQFAw4HAgsDAgsCAgQIBAUHBBAYEggPBgMFAwgMBA4JBgQKFAsIFAsJBgQDCwUFBwUIBAMDCAMMAwoBAgkDBwICBQ0ICAwJAQYFCAcEAgUDAgUCAgYCAQQDBgUFAgEBAgEBAQMCAgIEBwICAQEFAQUBAQIGAgQDCgMCBAQCBwkHAQsUCwoCAgcFBAsGBAQIAwQFAAAAAAL/7v/pAsMC8wE8AfAAABMmJicmJic0JjU2JjU0JjUmJicmNCc0NCcmNicmJicmJicmIyYmJyYmJyYjJiYnJiY3NhY3MjY3NhYXFjYXMhYXNhcyNhcyFjMWNjM2FhcWNjc2FjMyNjMyFjMyNhcWFhcWFhcWNhcWFxYWFxcWFhcWFhcWFxYWFxYWFxYWFxYxFhcWFhcWFhcWFhcWFhcWFhcWFgcUFhcWFRYWBwYGFQYUBwYGBwYGBwYGBwcGBgcGBwYGBwYHBgYHBgYHBgcGBgcGIgcGBwYGBwYHBgYHBgYHBgYHBgYHBiYHBhQjBgYHBgYHBgcGBgcGBgcGBgcGBwYjIiYjJiInIwYmJyYiIyciIicmJicmIicmJycmJjc2FjM2NjMWFjcyNjc2NjM0Njc2NjU2JjU0Njc0NDc2NjU2Njc0Jjc2NDQ2NSYmFxYWFxYGFxYVFhUWFhcUFxYWFxYGFxYWFxY2NzY2NzY2NzY2NzY2NzY2NzY0NzY3NjM2NjcWNzY2NzY2NzY2NzY2NzY2NzY2NzY3NCY1NDY1JjYnJicmJicmJicmJyYmJyYmJyYmJyYmJyYmJyY0JyYmJyYmJyYnJyYmJyYmIyYiByYmByIGBwYmBwYGBwYGBwYGBwYWBwYGFwYWFQYGBwYUBxUUBhUGFBUUFhcWFhcWFxYWfwMBAgECAgIBAQEBAwEDAgEDAQICCAQCBQMJBAYKBQQGAwcDBwcDAgcBAgoFBQcFBAkGBQwHBQcFCAgIEAkCCgQIDQcOHg0OHQ8DCwQFCgUKFAsMFw0IEAkDBwQFEAcFBgcDAgsEBQMCAwMDBwINBgcBAQcCAggHBQUFAwMFAgQCAgULAwICAgYGAgQBAgQJBgIDAQIEAQEBAgICBwQHAwYCAgQEBwMEBgMFAgUCAQkIAwUDBwIBBgQKCAUJAQoIBAMGBAQGBAcHAwcEAgoBBQkFCREJBgwMCQQJFQsLFQ0ECAsKAwgEBQ4GCw0IBAUJAw8FCAUFCgYGDAULDRENCgYCCgcKCwkFIAkFBwMMAQICAQIDAQICAQIBAQEBAQEBAQECAUACBgEBAQEEAQQCAgEBAQIBAQIBCgIHFAoNFAgPDwcLAwIMBgQMDQUIAQwCCAMIDQYJBwIFAwUEAgYNAgMCBQcJAgQFAwcBAgIEAQEDBQYBAgQCAgYCAgQCAwcCAgMCAwUCAgMCBwICCgQLCAUGBwwIDAoFCAQIGQYRHw8FBwUFCgQJBgIKBQICBQIFAQICCAEBAQEFAQEBAgEBAQEEAQICAgIBwhISCwgOCwMGAgQFAgQGAwMHBQkWCwULBQsGAgYIBQIEAgcFBQMFAwIGBgMCAgMFBgEBAQEBAQEBAgEDAQICAQIDAQQBAwEBAQEBAQIDAgICAgIBAQICAgIDBAUBAgoCBQMDBQIDAggJBwoDAgsEAw0NBAkIBQMFBQkIBAkRCAQKBQ0OBgEHAgoFFDISAwcCAwkDCAMCAgUDBQ8GDAMIBAQGCAcFCgkDBgIIAQILDAMEAwkBBgMIBwMIAQkGAgIEAgICAgcDAgcBAgYCAwUDBAcDAwEBAwECAgICAwEBAgMDAQEBAgEBAwEBAgIBAQQFBgYIBQICAQIBAQIDAQMDBQgEBgkFAwYDBQoFCCAQCREKCBIJCA8IBxkcGwgXLl0VKRMHDwgMCAsCFyEPCQQHDAcGCwUECAECBQIDBAIEBwMDAwEGBAIICQQEAgEHAQYKCgUCBAEFAgQDAgUJBREWBQ0QCQsZDRwYBAgEBQcEDQYDEBAODAUICQINBAUIBAUMBQMGAgQGAwQIBQkFAgQGBA8HBQQECQQFAwECAgIBAQICAQEBAQgBAQUBAQIIAgYHBAgYBwYGAQkRCAMHAwsDBgMOEgsOHA4OFxIKCQgNAAAB/73/4QJ4Av0CYwAAARYGBwYGFQYWFRQGBwYGBwYGFxQGBwYGBwYGBwcGBgc2JicmJyYmJyY2JzQmNSY2JyY2JyYnJiYnJiYnJiYnJicmBicmBicmJicmJicmJgciBgcGBgcGBgcGJgcGBgcGBgcWBgcGFgcUBhUGFhUGBgcWBhUWBxQGBxY2FzIWNzMyFjc2Njc2Njc2NDc2Njc2NDc2FTY3NjY3NiY3NjY3NjY3NhYzFgYHBhQHBgYHBgYHBgYVBhQHBgYVFAYVBhYVBhcWFhUUBhcGJicmJicmJyY0JyYmJyY0JyYmJyYmJyYmIyYmJyYGIyMGBicGBhcUFBcWFhUUBgcGFhcWMhcWFxYWFxYXFjYXFhYXMjIXMhYzFjYzNjI3NjY3NhY3NjY3NjY3NjY3NjY3NjY3NjQ3NjY3NjY3Njc2Njc2NDc2Jjc2NzY2NzYGFxQXFgYXFhUWFBcWFhcUBgcWBhUWBhcUFhcWBhcWFhcWFhcWFgcGJgciJicmBicmJgciBiMmBiciJiMmBiMiJiciJiMGJgcGBgcGBiMGBgcGBiMiBiMGBgcGBgcGBgcGIgcGBic2NzY2NzY2NzY2NzY2NzY3NjY3NjU2Jic0JjUmNicmNic0JjUmNjc0NjU0JicmNicmJicmNjU0NCcmNDUmJicmJic0NCcmJicmJicmJicmJicmJicmJicmJyYmJzYWFxY2FzIyMzI2NzYWNzYWMzI2MxYWMzYWMzI0MxY2FzM2FhcWMxYWMzI2MzIWMzI2MxcWNjcyFjc2FjMyNhcyFjMyNjMyFjc2FjcyNjM2NzY2NzY2NzY2NzYzAnABAQIEBAECAwIDAgICBgICAQIDAgEBAgUBBAcCBwIFAgQCAQIBAQMBAgEDAQEEAgIEAQUFAwMIAwkDCAQCDgwFAwYCBwoFCxcLBQoFFCUUCBILCwUFDgoFAQcBAgQBAQMCAgEBAQEBAgIBAQIBBRAJEBsODQkXCAYOBwcCAQYBBgECBgQGAQQBAQEFAQECBQMCAwIFAQQCBwICAQEBAQIDAwECAQEBAQIBAQEBAQEDAQgEAQMCAgUDAQIEAQEBAgUEAgQGBQsBAQQOBgUKBiwUFQwBAwEBAQMCAQENAwcCAgUICgYCEAsDBgMDBgUEBwUEBwQFDQcSJhMIDQcLFQgFDgUIBAMBAgEFAwIBBAECAgQBAgIDAgEDAQUCAgIHAQEDBAMDAQ0CAgQCAgIEAgEBAgEBAQECAgECAgEDAQEDAwICAQIBBAIFCwgQEwgNGwkEBgUFCwUWIg8FBgQDBgMFCwcNBwUDCwQVIQ4FCQUJEQYHCQgHBgMHDAYGCwcIDwkLBgINBwQCAQcGAgYIBAIDAgIGAgQDBgIBAwIDAQICAQEBAgEDAgEBAQQCAgECAQYBAQEBAQECAQEBAQICBgMCBQIECAIJBwIKBgINCQUQBAUKAgUSCA8gDg4MBw8RCQQEBQoBAgMGAgoKAwQLBAkCDQQFKgoEAgQIBQkFBQkFBgoFAwYCFQ4LBQQFAwoBAQQHBQYLBQMGAwUJBgQLBQMHBBAHBQYFBAkCDAcDBAsC+wUHBQwHBAULBgYOBw4bDQkUCAQIBAsZDggNBhEFDQISFgsICQkHAwQHBAMGAwMJBAYGBQsCAwYDAggDAwUEAwUEAgIGAQEBAgECAgEBAQEBAQMHBAICAgMBAgUGBQMCAgsUCxEhEAMFAwMHAwgMBgwFAhITDBgNBQICAgUCAwIKBQgEAwkGAw8LBQoJAg0BAwoDBwMHAgIGDgUDBQIIAQgOCAgQCQgPCA0XDAsDAgQIBQsTDAkGAwgNBwcICR4ODx4PBggEAgYDCg4DBwMLDAUGDAULBQMFBQQHAgIGAgEBAQEBFCYTBg0HBQwFBAgFFSQUCAIFAgYBAgkEAgICAQIBAQIBAwEBAQEBAgEFAgIFCggCAwgDCAsGAgYDBQkFCAMCAwYECwMIBwQDBQQKAwIFCQoFAgcFAgUGAwcECgEGDgcGDAYGDAUEDAUREQgEBgMHAwIKCQUHDAcGDQYFAwECAQECAgEBAQEBAQEBAQICAQEBAgEHAgIBAQICAQICAgEBAQECAgIBBAQBAgICDwMJBQQJBwUCBgQCBQMGBgkEAhABCxQKCAUEDhsQCwQCCAwHDh0LBQsECBILCRMICRIJCxULCiMOBgwGBQwFBQ0FBw0FBQgFBQoDBQYFBgMCCQECBwYCBAICAwYHAwEBAwIBAgEBAQICAgQCAQQBBAIB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Njc2Njc2Njc2Njc2NzY3NjY3Njc2Mjc2NzY3NiY3NjY3NicmJicmJiMiBiMGJiMHBgYHBgYHBgcGBgcGFQYGBwYGBwYGBwYGJyI2NTY0NzQ2NTU0Nic0JjU2Jjc2FhcWNhcyFjMWMhc2Fjc2FxYWFxYyMxY2MzIWNzY3NhY3MjYzMhYXFhUUBhUVFAYVBhYVBhQXBhYXFhUWBhUWFhUGFgcWBhUWBgcVFAYHBgYVBgYHBgYHBgYXBgYHBgcGBgcGJgcGBiMGIgcGIgcGBgcGBgcGBgcGBgcGIgcGBicmIiMmJicmJicmJyYmByYmJyYmJyYmJyYmJyYmJyYnJiYnJiYnJiYnJiYnJicmJicmJicmJicmJjU2JjU0NjU2NDc2Njc2Njc2Njc2Njc2Fjc2MjM2FzIXFhYXFhYXFhYXFhYXFhUWBhUWFgcGBgcGBwYGBwYGBwYiJyIGJyYmJyYmJyYmJyYnNiY1NDY3NjY3NjY3NhYXFhYXFhYXFAYHIicmNCcmJicGBgcWFDcWFhcWFhcWNzY3NjY3NjYnJiYnJiYnJicmJiMmJyYHBgYHBjUGBgcGFxYWFxYWFxYWFxYXFxYVFhYXFhYXFhcWFhcWFhcWFhcWMhcWFhcyNjcyNjMWFhcWMjMWMjc2Njc2Njc2NjcWNjc2Fjc2Njc2Mjc2Njc2Njc2NTY2NzY2NzY0NzY2NzYVNjY3NCY3NyY2NSYmJzU0Jjc3NiY1NjY3NjQnJiY3NDYnBgYHBgcGBgcGBgcGBgcGBwYGBwYGBwYHBgYHBiIHBiMGBgcGJyYmJyYiJyYnJgYnJiYnJiYnJgYnJiInJicmJicnJiYnJiYnJiYnJiYnJiYnJiYnJjYnJiYnJiYnJiYnJiYnJjYnNCYnJjc2NDc2Njc2Njc2NDc2Njc2Njc2NzY0NzYmNzY2NzYmNzY2NzY2NzY3NjY3NjY3NjY3NjY3Njc2Njc2Fjc2Njc2NzY2NzY2NzY2NzY3NhYzNjY3NjYzMhYXMjYXFjIXFhcWFhcWFhcWFhcWFjMWFhcWMxYWFxcWFhcWFhcWFhc2Njc2Njc2Njc3NjY3NjY3NjY3NjY3NjQ3NjY1NjQ3NjYC0wUBAQIBBAICAQECAwEDAQEBAgEBAgEBAQECAQEBAQMBAQICAQMFCgMCBAICCAcDAgECAQIGAQIGAwQEAwkECAICAwYECggGBQMGAwMHAhgPBw0HAwcEBAYFAwkFBAgFCxgMCgICBQwFDAoFCgULFgoEAwIGCQYIAQIDAQIEAwUDBQIEAgIBAgIFBQEBAQEBAQMBAgICAwICBAMDBQICAgICBQMFBAUICAMCAwUDAgYDCA8IBQsGHz0eBwsFBQwGBQoFBQkFBgUJCAgQBwYDAgQBBgIKAQIBAgIGAQMGCxYLCBMKBgwIBQgFEg4cDwkRCQ0DDQsGCQgDAgMKBQMGBAIGBQUDAQIBAgECAQECCRILBQoFBQsFCRAIDx8KFBIGCwYHFAoFCAcDBAQNFgwEAgUJBQgOCAUBAgECAQEBAQECAQIBAgEBAgICAgEBAQEBAQEBAwIFAwIEAQUKBQoGCRAJCAICCQQDAwYDBgMCBgwHBQoGBxMJBw8ICBAJESEVCBQIBgwGBg0GCw0FDAYHDwgFCwMBCAIFCwYKAgIJAQkCAgoDAgIFAgcGAQUFBwkFAgICAgECBAEBAQIBAQQCBQIHAwICAwYJBAILAgUSBwoECQwHBQMLBwMFCwICAgIFAwIBAwEBCgYDCAMFAwMLBQUDBQUKBQQHAwQGBAUEAwwDAQQFAwUIAwMGBQIIAwUHBQwIAQEGCQEDBAUNBgMHAgUEAQUDAgEFDwwHCAUGBQILBQIHAgUHBgMIBQIFCAQKCA4aCAgBAQEFBgECAgIEAgICAgQIBwUDCQQODAgHCQsLBQsIBgkBAgQIBQgGAwMJBQQHBAkTCwUMBgoRCg0QBgwDAgULBQYJBQYLBQUHBAQHAwYJCAwJBAkJAwICBQIEAQUEAgUFBgECAQEBAQECAQEBAwQBAgUCAgEBAgEFAgkGBAUGBAQCAgUCAgQCCwcHAwIHAQILDQMFBQIHAwoGDyESFBIFDAYGCwYIDQMGAgwCAgcKBQgDAgUFAgoBAwUDDAUJBQkWCQMFAwcFAwQJBAgBAggBAQMFAwMJAgQEAgIBAwQBAQEBBQIBAQEDAgEDAgEBAQEBAwIBAgEEAgUBAQIGAgUBAgIEAgIDAQQEAQMCAgICBQUCBQMDCgMCBAIJAQEEBAIGCAUDAggUCw0LBgwBDAICBQwFCxYMCxgIAgYDBAgECgQDCAMCBgIGDQcCBQQCCwUIAwcFAgwEBQMGDQcCAwQGCQUCAwIGBQMLCAICAgMCAQIBAgMCAgIDAwICAQMDGAcGAw4HBAsZDQMGAwgNCQsFAwgRCAUKBgkKAwYECwICBgwGBAgCBgMFCAUECgMLAQgDCAICBQgDAwYDBAgECg0JAQIDBwIGAgIFCwUJCAYJBgkDAgQJBQgKAwUDBwMDBAQLDgEJAwIBAgEEAQEBAQECAQEBAQEBAgIDAgUBCRMLBAQDCRYKCwcEBAUDCAQNDBkNBgwIBgwGCwECGTkdAwYCDAMEBgQFCwcGDAUFCgUIDgcGDQcECAUEBwUCBQIEAwYCAgQCAgIDCAMCAwEHBAkCAwICAwQCBQICBAMBBAYGBg4HBgQMAQkEDgMECgULGQ0fGgMDAgECAgEBAwEEAwIFAwUBBgkEBQMEAwIFCgYDCQMCBgMIAwkRCwMFAwwFCwYIEAgOCgUDBgMBAQECAQIDAwICAgEBAgIBAQICBAIBAgECAQENCgMFAy8QEgkDBgMHBAUECQUKBQgRCQ4eDg0RBAsBAQ4iDw8PHQ4IDwgNEwsFCwYDBAMFCAUMCgMLBAUBAQYCAgEDAQIIAwIEAgMHBAIEAgIBAQICAQEDAQIBAQEFAQIBBAYFAwQDAQIBBAkEBQMCBAEGAwIHBgICBQIKBQQBBwoVCwUHBQMIBA4JBAcDAgMGBQQIAw4MBQMFAwIGAgYGBQMCAwQCAgcDAgEFCQQFBgQCCAQIBQoDAgQHBgcQCAQIBAYCAgUCAgEBAQEDAgICAgMBBREMAggDBQkFCQYCAwYBAQEBAQMCBQwHBAkDBgIIAQIDAgMFBAwHAQYIAwMIAQMEAgMCCAIKDwwFCgYECwMKBgMBAQIBAQMPCwoBBAQFFxMFCAUFCAQIDggLCwoLAQQGBQ0LBAQEBAUCAwICAgEBAQIBAgEBAQEBAwEBAQIEAQMCAgECBAQCAwEBAQEBAwECAgIFAwUIAwgBCQQCAgcCBQMCCAcFDQEPDAkHCwcXBwICBQoFDgYJBwsMAgEDBwQDBQUMBQMMGA0MCgUGAwQEAgIDAgIFAgkEBAQCAgIBBwYCAwIBAgQFCAICAgECAQEBAQQBAQEDAgEDAQIGAQEEAQMBAQMCBgIEAgUMBgIEAgUFAgMKBQoGAggBAQMPBQUJBQoTCAgQCAcHBAMGBSYtBAYEDRIIBQwFBAYEAwcCCAECCAUFBQIHAgIGDQUHBgIDCwUEBQIIAwIGAgIGAwkHBAgEAgUFAgQCCAEBBQICAwYBAwEGBAIEAQEDAQMBAQEBAQICBAICAwICAQEBAgEDAgMFAwEEBQQECAcHAgYCAwEHCgcCBQEDBgYFAwIHCAQWDAUDAwUDAgcCAgYCBAcFCgICBAcFBAkAAAAB/3r/ygLZAuQC3wAAAQYGBwYGBwYGBwYGBwYGBwYGBwYWBwYUFxQUFxYWFxYGFxY2FzY2MzIWFxY2MxYWFzI2NzIWNzYWMzI2FzIWMzI2MzYWMzI2MzYWMzY2NzY3Njc2Fjc0NCcmNDUmJic2JjUmJyYmJyY0JyY1JjQnJiYnJicmJicmJicmJjU2JicmJicmJyYmIyYmJzYXMjc2Njc2Fjc2FjMyNzI2MzMyNhcyNjM2MhcGBwYGBwYGBwYUIwYGBwYGFQYWFQYGBwYHBhUGFhUUBhcUFhUUFAcUBhUGFhUVBhYVFhQXFBYVBhYHFAYHBgYHBhcWFhUUBhcUFhUWFBcWFBcWFhcWNhUWFhcWFxYWFxYXFgYjBiYHBgYHBiYjIgYHBgYnJiInNjc2Njc2Njc2Njc2Njc2NzY2NzY2NzY0NTYmJyYmNTY0JzQmJyY0NTQ2NSYmJyYiIwYmIyYGBwYmIwYmIyIGIwYiByIGIyImIyMmJicmBiMiJgcUBhcWBhcUBhcUFhUUBhUWFhcWFhcWBhUWFhcWFBcWIhUWFhcWFxYWFxYWFxYXFhYXFhYVBiIjIiYjJiYHIgYjBgYHBgYHBgYjIiIHBgYjBiYjBgYnNjY3NjM2Njc2Njc2Njc2Fjc2Njc2Jjc2JjU0NjU0Jjc2Jic0JjU0Nic0JjU2NCciBgciJicmBicmJicmIicmJicmJicmJicmJjc2Jjc2JjcmNic2Njc2Njc2Njc2Njc2MjcyNjMWFhcWFhcWFhcWFhcWFgcGBgcGBgcGJicmNjc2NzIGFRYWFxY2NzY2NzY2JyYmJyYmJyIiBwYHBgYHBgYHBgYHBgcGFRQWFRYXFBQXFhYXFhYXFhYXFhYXFhYzMjcWFjMyNjcyNjc2NjcmNjc0JjU0NjUmJjU0JjUmJjU2IjU2JicmNicnJicmNicmJicmJyYmJyYmJyYnJiYnJiYnJiY3FhYXFhcWNhcWFhcWNjMWNjMyFjc2MgEFCgoCCAcFAgYCAgQDAwwDAwMBBgECBAEBAQEBAgEBAxIEBg0IBAkFCRIIBQYEBQwFAwYCDwgFBAoECBAIBgwGCA4IAgYDAwcDBAYEDQIQBQwIBQEBAQIBAQIBAgEEAQEBBwIBAwECAwQCAwICAQIDAgEDAQMFBQQEAgUDAgEBBQYLBQsWDQkOBwsNCwsPBQkFFwUIBAgCAggPCAQDCA8IBQgFBwIIAQIBAwEBAQMBBgQCAQICAQQBAwECAQQBAQIBAwEEAQEFAQEFAgUBAQEEAQICAQQCBAMEBgUKBQoGAgcMAgoGDiERChULCBMKDhoOCRQJAwYCAQoBBgIIAQEHAQIFCgUQBgMBAgEBAgMBAwEBAQEBAQEBAQQJBQsTCQoKBQkRCQoUCw0IBQUNCAYOBgQHBAUIBBQIEAkIDggHDwgBAgIBAQEBAgEBBAMEBAIEAgEDAQECBQIFBAMGBQUJBAUFAhIKAwYDBQsFDAUFCwUTLhwDBgIJEggIEQkLBAEECQUEBAMDBgMHEAkBCgUHAwcJBgULBQMFAgYCAgIJBAUBAQMCAgICAQIBAQICAgECEiUTEScTCAwHBQ4GBQcDBAYFAggCAgEBAgMBAwUBBAEEAQIBBQIEBQEDAgMCCQQDDBEDAQsCBQcDCQ0FBQcFCAQBAQECAQQCCQ0ICCAFCgEFAQcFAQEDBgsVBgIFAgIBAwgRBQkTCwEMAwUEAgMCBAEBBQICAQMBAQECAQEGAwMGAgMHBQQHAwkCAQMIDA0FBw4IBw4HDxoNAgQBAgIBAwECAwEBAQQBAQIBAgICAwEBAQIBBQoDCwUIBAIIAQQEAgIJAwMGAw8ZDQkHBw4HBQcFCxgMECEOBQsFBgMCzw4HBQINBQIFAgMGAQkNCgsCAQ0EBQwQCg4eERAeEA4hEQIFBQIDAwEBAgIDAQIBAQEDAgIBAwIBAgIBAQEEAQMBAwIDAQEIEAgDCAMCBgMDBwIFCAcMBgYKBRABBAkEDQsFDgkEBwYFCAUKAQEGAwIKDgcHAwIFAgcEBAMBAgMBAQEBAgICAgIBAQECDAIECQMDCQQGAgsJBQUJBQQJBQYNBiEiCAQDBQMHDwoOGw4HDAYFDAYFCgYPCg0GBAYECQ8FCgwFBQgEDAcEDQ0FDgkFCQYEBgIKCQQJDQIEAwMIAQMDBgQHBAgBAgQECwEBAQEBAgEBAQMCAgQCAQMFAgMCAgQCAQMCAQIEAwgIBQkIBgwHDAcDCRMLBgQEBREICBAIEygSBwwHAwIBAgECAQIB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AgYCBQICAgQCAgYCBQgFCgcEBgIDCAUKAwIEEAIHDwgEBwQFCwQEAwQECAQUJBIMBgIDCAUEBAIGAgQFAgQDCAUDAgYCAgMCBAUEAQIBAQECAwECAgECAQEDAQEDAgUGAgIGAgIFAwUMBAkRBwUECAcEBgsLDQoPCQUKBwIFAwICBAMLBAIJBQYEAgECAQEBAgIGAQcCBgUCBwIBCQEIBwIGDAgHBgQKAgIGCgUHAgIFBAICBwcJAgIKBgUNBQUKAggFBQEKAgcBAgMCBAIBAgMICBQIBwgFAgYCDxMFBwYDBAkEAgUDCgQCBAoECRMLAwYEBwcFBAQGAgIDAgICAQMCBAMCBAIBAQIBAgICAQEEAgIBAwIIBgwCBQIFBgQDCAMKEwoEBwUHCwgTBgQJBQgIBQQGCA8IAgUCAgECAwUBAQYGAgIBAQEEAQQBAgMDAgECAQUBAQEBAQIBAQEBAQEBBAIBAQEBAQQHAgECAgMCBAMOBgYHBAgEAgYDDgsFBhUKBAkEAwgIAwUMCQgVCwYNBQULBggPCgcCAhMOCQUMGg0ECAUFCAUECAURAt8MCQYBCQIDAgkGBQgCAgMKBQYNCAgDDBoOGkIeECQTBQwFBgsHCxcMBQcFBgsFBQ4GCA8JDRgNDQwGBAcCBwMDBQIDBgIEBQMKAgIDBgMDBQQCBwIFBgMDAQIBAQYBAQQBAgECAQECAQIBAQECAwUBAQEEAgMDAgUCBwUCBQQMBwUECAUFCAULFAoCBgMCBgMFCQUJGQsECAIDBgMEBgMLAwIDCAQKDAcFCAUFCAQKDwoLCwUDAgIBAQICAgICBQICBgEBBQEBAgcCCAYCCgMFBQ0GCgsFCgUFCwULBQILAgoJCQEBCAEBBgIBAgQCBAEEAQEGCAYDCRAQDBAICgQCBwIEAgQFCQgCCQEBAggCBQMFCAoLCgcGBAICBwUCBAIaIBQJBQMECAUDCAIHAwECBAQBAwMBBAIFBwgHBgYEAgMGAwQIBQQFBAsJBgUVCAUGBAsZCgMFAwcKAwQHBRMYBgUIBQEGAgIDBAUBAQECAQICAwECAQQDBgUDBAMCBgMIBAUDAggNBQYNBwQJBQsICxYMESISBgoFBQoFBQoFFAsTCgcOCAULBQYJBg4OCAUMBQYIAwUDBgYKAQEJAQEHDgcIEggHBwQJAgEBAQcFAgIBAQEBAQEFBQEBAgMBAQEBAQMBAQECAQEBAgMBAQEBAQECAQAAAf/s/wwDJQLsAuwAAAEGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcHBiIHBgYHBgYHBgcGBgcGBgcGBgcGBgcGBgcGBgcGFRY2MxYWFxY2MzIWFxYXFhYXFhYXFhQXFhQXFhYXFhcWFhcWFhUWBgcGFgcGBgcHBhQHBgYHBgYHBgcGBgcGBgcGBgcGBwYWBwYGBwYGFRQWFxYWFxYWFxYGFxYWFxYWFxYWFxYWFxYWFxcWMhcWMhcWFjc2NzY0NzY2JyYmJyY1JiYnJiYnJgYnBgYHFAYVFBYXFhYXNjc2Njc2JjcyFBUUBhUGFAcGBgcGJicmJyY0JyY2NzY2NzY2NzY2NzY3NjY3NhYXFhYXFhYXFhYXFhcUBgcGFAcGBgcGBgcGBgcGBwYiBwYjIiYnJiIjJiYnJiInJiMmJicmJicmIicmJicmNSY0JyYmJyYmJyYmJyY0JyYmJyY0JyYmJyY0JyYmNTQ2NTQmJyY3NjY3NjY3NiY3NjY3NjY3NjY3NjY3NiYnJiYnJiI1JiYnJiYnJiYnIiYnBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgcGBgcGBgcGFhUUFhcWBhUUFhUWFhUUBhcUFhUWFhcWFxYWFxYXFxYWFxYWFxYiIwYjBgYHBgYHIiYHIgYHBgYHBgYHBgYHBiIHBgYnNDY3Njc2Njc2Njc2Njc2Njc2Njc2Njc2NDc2Njc2NDU2Jjc0NDc0NjU2JjU2Njc2NjU2Jic0Nj0CNCY1NjY1NiYnNDQnJiYnNDQnJiYnJjQnJicmJyYmJyYmJyYmNzYWNzMWNhcWFjcyMzY2FxY2FwYGBwYHBgYHBgYHBgYHBgcGBwYGBwYWBwYGBwYWBwYGBxUHBgYHFBYXFBYVBhYXFgYXNjc2Njc2NzI2MzY2NzY2NzY2NzY2NzY2NzY3NjU2NDc2Njc2Njc2Njc2Njc2NDc2Njc2Njc2NjUmMSYnJiYnJgYnNhYzFjYXMjYzFjc3MjYzMhYC4AQRCAUMBQYOCAQHBQcEBAMGAwIGAwoIBQQFAgMEAwIGAgkHBAEMEgkHAgIFBAoIBQwMCAQNBQMHAwMFAwMGAg4IDwgEBgQIEAgLEwsKAQMPBggKAwMBBQIHAgQFAwIDAgECAQIBAQEBAQMBAwEBAQEDAQMCBAMBAgECAgIDBwQEAQIBAgEEAgIECAQCAgIEAgECAQEFBQMGBgEIDgYECAUDBgMTCQcECQ0ICikNDQkGAQcHAgIBAggCAgIFBAMDCAMOEgkFAwIEDAYHAwECAgUCBgUBAQICBwgLCwUHAwoBBgECAgYCAwEFCgQCBggHCAcNDQgCBAIGBAIGBgMEAQMCBAECBAICAwIKBwMMBgULBhkWBQgFBQkEBQgEBgkFCQQODAcKAwIDBgICBgIICQEGAgIFBAIGBAIGAQIGAwcCBgICAgICBgECAQEBAgUEAwEBBAEBAgMCAgIDAgECAQIBAQICAggIBQIDAQIJBQIDBgMOFg0LFgsJDgYIBgMEBAIIBQUCBgIHBQMECAUJBAUIAgIBAQQEAgEBAgEBAgECAQEEAgMHAwgWBAUFAwcDAwcDBAoFCgUECQUFBwUGDAYHDAYNGQ0OGAwHDQYFCwUEBQcBCQUDCAQCAgUCAgUDAg4FAgQCAgEBAwEBAQQBAQIBAQEBAQICAQcBAgIBAgEDAgEBAgEBAQICAQIDBwkDBQYCBQgFAggCAg0GFBEjDggNCAgKEB4ODxoLAgIDCQMLBQIMCAQKBgQJAwcBBQIBAgECAQIBAQEBAQMBAQEBAQEBAQEDAgUGAw8MAgcDEwkFBAYCBQQJEQoFCQUODAYJCwUGBAoCAwIFBAMIBAYEAgYCAgUBAgIDBgECAwgEBgEIAgMKFgUDEAUVKhQIFQkJDhoMDgYdMgLoCQMDAgUCAgUCAgICBQEBAQIBAQECBAYDAgECAgYEAgUDCQcCERIICAMDBQcLBwUODAYGCQUCBQICBwICBQIJBAMHAQMBAgMIAgkDBQ0FCA8HBgMCBQYCBwkEBgoECAUDBgIECQUFCAQDBwIPAwgDAwYCChEIDQ4DBwMFCgcLGAwIBAUJBAUHBAUMBwwYCwUKBQcEAgIGAw0MBQwGBAUJBgECAgIGAgUDAgQCAgUFCQkIBQILFBILBQQHAgIKBAEEAgIBAwMQCAYLBQINAwYDBAEHAgUDCwwBCgUFCgQFCgQGBAICBgIDAggFAw8XBgULBQUCBAcGAQQCAwQBAQkJAgYCCAUDCREICgMDCgUKBQIEBwQFCAIJDAIFBQIBBQEBAQEBAQEBBggIBQYDAgIBAgcCCAEFAgEDAwEDBQIKBwQIAwIF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BgcCBQsECAMKBgMCCAgDBAYEBgIBBQUEBwYCBgQCCAICBgMMDQkIBQMFEAUMCgUIAwEICAMIAQ0CBAUDBgMBCQYDBgICBwYBBAEBAgQCBgEBBgIDAgEBAQEBAQEBAQIBAQEBBAEBAgIGAgMBBQIIBgUGAQEGAgEHAQICBQIJCwUIBwcCDhITDQ4hDwQHBAMGBAUIAwUKBQMGAwUDAgEBAgEFAgYCBQgFAwcEEwgHBAgECwIFBwMDAgIBAgIBBgIHBwgLBgMGAgQCBAIMBAIJCQcBBQIBBQEEAgICCQICBQsHBQkFDAYCCAIEBQIIAgQFDAYFBQQQDAcGDggKEwUHBwUFAQYDAgcCAQIBAwICAwYBBQMBERwQBxAIChIKAgkC8gECAgIBAgQBAQQBAgIEAgICAgICBQEBBQEBCAgFAgYCBQMCBgICBQIBBQgEBgsHCAkFBQQCCQQCBAsFBQkFBhAIDwYIBQ4iEBctFgwDBwMICwcDBgQCBgQDBgMIEQkWEwUJBQsIBQYCAQQBAgMGAgQGBgIJBwQCBAIDAwEHBgUCAgICBQEBAQEFAgEBAQEBAgUCAQIEAQMBAQIBAgQJBgMHBAMEBgIEAwIFAgQGAgMDAgQIBAgDAgMJBAYIBAUHCAoECgUDBQQFCQUHBwMNDAURIhIDBwMYGgsEBgILAQkCAQQHBAIGAwgFBwQCBgQPAgMGAwsLAwYGAwIHAwkBAgcNBgcBBwsFAgQHAgQDAgYCAgMFBwICAjYDBgICBQEDAgUIBAYBAQkBAQIFAgcGAQEGCwUTDQoTCSksBQ4CCAwFDRgNDRkNDBwICAQCBQgFBAcCAwcCCAEIBgMFCAMGAQIDCAMGCgYBAggFAgIFAQkBAQMGAgUEAgQCAgEBAgEBBQEBAQIFAgMEAgYCAgMFAgUDBgICBgIFAgEKBAILBAMKAwYDAgUIBQcMBQgFAg0KBQsFAgMJBAMHAwgQCAUHBA0MAgoMBwgPCA8KBQYEAgsHAhELBwoCAgkBAQoEAgIIAQkMBgkBBgEFBQYCAgIBAgECAgEBAQIHAwIBAgUICAoNCAsdCAkDAgMLAwIGAQMEAwIEAwcBAgQCBQsGBw4GBAgEDAICBQICAgoKBQUMBQoBAQQBBwIBCA4JBQoDCwMCBQUCAgQCBgECBgYCAgsmDRQWBgEFAggEAgMGCgQFBQYFAwIGBAMLCBINBgULBQYLBRALCQICBAICFAsFAgUBAgIFAQAAAv/e/+sCcALvAX0CIgAAExYGBwYGBxQGBwYGBwYGBwYVBgYHBgYHNjI3NjY1NjY3NjY3Njc2Njc2Njc2Njc2Fjc2Njc2NjcWNjMyFjMWNhcyMhcWFhcWFxYWFxYWFxYWFxYWFxYWFxYWFxYWFxYWFxYUFxYWFxYGFxYWFRYWFRQGFRQWFRQHBgYHBgYHBhQHFgYHBgYHBgYHBgYHBgYHBgYHBgYHBgcGBgcGBgcGBwYGBwYGBwYGBwYGBwYiIwYGJyYmJyYnJicmJicmJicmJicmJyYmJyYmJyYmJxYWFxQWFRYUFxYWFxYWFxYXFhcWFhcWBgciIgciBiMGJgcGBgcGIgcGBgcGIiMGBgcGBgciBic2NDc3NjY3NjY3NjY3Njc2NzY0NzQmNSY2NTQmJzQ2JzYmNSYmNSYmNzY2NzY2NzYmJyY1JjY1JiYnJjYnJic0NjU0Jjc2NicmNTYmJyYmNSYmJyYmJyYmJyYGJyImJyYmJyYWNzI2MzY2NzI2MxY2NzY2MxY3NjM2NhciBgcGJgcGBgcGBgcHBiIHBgYHBgYHBgcGBgcHBgYHBgYHFAYVBhYVBjIVBgYVBhYVBgYHBhYVFhYXFhYXFhYXFhYXFhcWFhcWFhcWFhcXFjIXFhYXFjYzMhY3NjY3NjY3NjY3NjY3NjY3NjY3NjQ1Nic2NzY2NzY2NzYmJzYmNSY2JzQmJyYmJyYmJyYmJyYnJiYnJiYnJiYnJiYnJjUmJicGJuYCAwIDBgMDAgICAgMHAwUCAwEDBQEHAwEECgoNCQcEAgYDBgYCAwYDAwYCCwQCAwYECRIIChMJBAgFDBcOBgkFAwcDCgMDBQMDBgIHAwECBgMGDQUFAwIEAgIDBwMHAgEDAQEBAQEBAgQCAQUBAQICBAICBAEDAQUCAgIEAgQHBQYCAgQBAgIFAgsKBAUFBAwFBwkIBQQHCwcFCAQFCAQFDgcLEwgOEgkIAwYEBAkFBQYFBgYCDAIICQQJBQMDBgMBBgQCAgIBAwIBAgIDBg8PCBcHBQoFAgcEAgcCCQ8IBw0HBw4HDBgOAwgECAsIBQ0GBAgEAgIIAwcCAwYCBg4IAgUHAQYBAQECAgEBAQEDAQEBAgEBAgECAQECCAIEAQEBAQEBAQECAQIBAQEGAQMCBAECAwIBAgMBAQwQCAoFAgQKBQMIAwQNCAMGAxAkEQMGAhITCAULBwkICAUOG8AJFAsCBwIOCAQIEggKCgMCCAICCgMCFQ0KFAgIBAMCBAICAwEBAwIDAwEBAQIBAQIBAQIKBwMFCQUCBAMJBAUEAg0QCAMIBAsICQUEBwQMEQkFCwUPGwoECAQGBQINCQQCBQMEBwEBAgEFAgIJAgIBAgQBAQECAgQBAQECAQIBAQECAgICAgUDAQUBAQMGAwcCAgcKAgIKEwLvCAcCAg0CBAYEAwcCBwsHCQEHBgMGDggGAgkFBQURCAQDAgQDBAICAgYCAgICBwEBAQICAgIFAQUCAgICAgEDAgQCAgMCAgMECAECAwcECREIDAQCCAcDBwwHFBgOAwcEAwgEBQUEBw0GBQsFBQcECgwFCgQEBQQDCQIECAQMBQQFCwUGDQYIBAMEAwICBgIJDAMGAwMJAwUFBQICAgQCAgECAgMBAQEBAgMIBgQDBAICAgICAgIEAQEFAQcGAwgHAwQFAxcwGAkDAgUPCAUKBQMIAwQGCAIFBAcMBAIBAQECAgIDAgICAggCAQIBAgIBAQMECQQCCAMGAgIDAgUOAwUGCwELDgcHDgYJEQgFCgUFDQcDFAEHFAgIDwYEBQMIAQILGgsXHgYNBwYLBQkUCAgDBAkEBQkEEiAWDgUCCQQJAQIDBgMEBQIIAwMEAQEDAQEBAg0DAQIDAgIBAQIBAQIBAgICAUcHAgEBAQYEAgUGBQUJAQcDAgYCARILCRIJCAYGBQYFCAQFAgMFAwwBDw4IBAgFBgwFBg4IBw4FDAcEBQgEAgUBCAcDAgIMBwQCAwIFBQEBAwECAgEBAgcGAgYCBgMBDAkFAwcEBAcCAwcCCgQFDQQGAgIHAgcNCAQHAg8YDwQIBQoSBgMFAw0VCw4HCwQCDAYCAwQECAUCCgEFBAEBBQAAAAMALf70AvYC8QHFAqcCzgAAJRYWFxYXFhYXFhYXFhYXFhYXFhYXFgYXFhYfAhYWFxYWFxYWNzY2NzY2NzY2NzY3NjY3Njc2NCcmJgciBgcGJgcGBwYHBhUUFxYzFjY3NjM2FAcGBgcGBicmJicmJicmNjc2Jjc2Njc2Njc2Mjc2Njc2Fjc2FhcWNBcWFhcWFBcWFhUUBhUUBgcGBwYGBwYiBwYGBwYGBwYGBwYGIyI0BwYmJyYmJwYmJyYnJiYnJiYnJicmJyYmJyYnJjQnJiYnJiYnJiYnIgYHIiYjBgYHBgYjIicmJyYmJyYmJyYiJyYmJyYmJyYmJyYmJyYmJyY2NSYnJiYnJiYnJiY1NiY3NCYnJjc2Njc2NjU2NDc2Njc2NzY2NzY2NzY2NzY2NzY2Nzc2Fjc2NzY3NjY3Njc2Mjc2NzY2NzY2NzYWNzY2NzYyMzY2FzIWFxYWFxYyFxcWFhc2FhcWNhcWFhcWFxYWFxYWFxYWFxYXFhQXFhcWFhcWFhcWFhcWFhcWFhcWFhcWFxYGFRQWFQYWFRQGBxQUBwYGBwYGFQYUBwYHBhQHBgYHBgYHBgYXBgYHBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBwYGJzYyNzY3NjY3Njc3NjY3NjY3NjY3NjY1NiY3NjY3Njc2Njc2NDc2Jjc2Njc2Njc0NjU1NjY1NiY1NjQnJiYnJiYnJiYnJiYnJiYnJiYnJjQnJiYnJiYnJicmJiMmIgcmJgcGBgcGBgcGIwYmBwYGBwYiBwYGBwYGBwYVBgYHBgYHBgcGIhUGBgcGFAcGFAcGBgcGBgcUBhUUBgcUBgcGFBUGFhcGFhcXFhYXFhYXFhYXFhYXFhYXFhYXFhY3NjY3NjY3NzY2NzY2NzYyNzY2FxYXFhYXFhYXFhYXFhcWFhc2NicGBgcGBgcGBgcGBhUGFgcWFhcWNjc2Mjc2MjcmJicmJjUmJicmJgHRAQQCBAEBAgECAgICBAICBgIEBQQFAQECCAUJCQQKBQYJBAUTCgQGBQQIBAYLBgkGBwwFBQMEBwgjEQIJAgcDAQgCCgYGBggHBQkDBgEMAgIBAgQOCAIHAwgJBAUBAQEBAQIEAgEFAgQGAwULBQYNBg4TDAoBCwkDAQEBAgQFBQYCCgYCBwICBggFCAMFBgoCCQEBCgEJFgoQCQUIDAYMAwkGBQUDAwcCBQEHAwMGAQIBCAIBAwYGAwgFBQcEBAYEBQkFEBoMFhUIBAcPBwMFAwgBAgkCAggMCAYOCAcGBQwJBQYBBQQCAwIHAQECBAECAQMBAgIBBAEBAQEBAhALBwoHAgIIAgEIAQIDBgcMBAYMBAYCCgEGCgMHBAQGDAcEBgcGDAYHDgYIAwIDBgIEBwIHDAgFBgUIEQgECAMKBAYCDhEKBAcCBAcEAwgDBgUCBgIHCQIFBwQCCgcCAgICBAIEBQMCBAICBAIDCAMBAwYCAwEDAQECAgUCAwIFAQYCBAEFAwEFBwQCBgEHBQMEAwgCAgQIBQMKBQQHBQoEAggRCgkHBQYEAgcECAICEgoDAgEIBwcBAwEEBQIDCwUGBQIEAgEDAQICAgMBAQEEAgECAQIBAwECAQEBAgECAgMCBQQDAgcEBAIBCQoCBwICCAIJAgUFDAYIBQcKCAUJAgcKBQgUBgQJBQ4EAwcFAw4CBQUCBQYFBAgFCgwHBAMIAQcBBQIGAgEDAgYCAggCAgQBAQEBAQECAQEBAQMBAwICAgICAgYEAgIEAQMDAgcFAgMEAwMGAwICAQYIBAEGCwUIBgMREwUQDwMEAgkHAwQFAgoNAwcHAwWWCBIFAgECAQQBAQECAgIIEg0KDggECAUKEAcCCwQBAgUDBwsPBAQIBQkLBAYEBg4HBwwHBwsGChMKBgMBBQsFDAkDBQQDCAICAQIBBAICAQICBwQGBQUTCAcHCxIJCggCAQIFAQEEAgwFCgIJCAgBCgMJAhcIBAYCBQEBAQIBAwQHCA8MBQoFBwwGBwMBAgEBAgECAQEBAQMGAQEKBQQDBgMEBwQFEAcLEQcKAggEAgYCBAcEBQQCAwMBAQICAQEDAgQCBQEIAwgFCwgFBQUCDwMHAwwNBgoEAwkFDAsDDBUKBQsFBAECAQIBAgQIBAECAgICAwEEAQICAQUKCAcLBgYMBQwOCAcDAQ4IBw4HDAoFCA4GBwICFhoMHBoNGAwIDAcHDggZKxQODQkGAwkGAgoHAwYHBAgJAQ4DAgIIAQQEAgECBAMIAgEEAgQCAgQCAwEBAgMBAQEBAgIBAgECAQEFAwECAQcDAQQDAQQCAgQCBgQCBQIHCAMLBwQEAg4NAwUDAwsFBQwFBQkHBw0ICBULCQsTGQwKEQoDCgMCCQUJDwgIEAgIAQEMBAILAgcCAQsBAgkLBQMFBQkGBAUFCAQDBgoFBAgFBAcDCQQCBw4GBgICBAEBATwHARILCAEBDQwJBwECBQ4FBgQFCgMCBgwHAwYDBQoHEAgKEAgHBQIHDQcFCgIMBwQQBQcFBwsGDx8PCw8HDw8FBQYFBgICDQgDCAUCBAMBBQQCAgcCAgECBAEBAwMCAQECAQQCBwECAQEGAgQCAwkDAgICCAEKBQMDCAIJAQkBCgICBAUECggECxAJCxgLBAkCCQkFBQkFDhoLDRwKEBQJEgkNBQYLBQ8HBQMIAwgEAg0JBQEHAgUPBQcBAgsLAwIBBQIEAQUBAgQNAgQCCAYFBQcEFxUFCwMCBkoFBwoCCQQEBgQMAgEGDAUIBQIBAQEBAQEECxULCAECChEHAggAAAL/x/8lAtcC3QIpAqwAACUGFhcWFhcWFhcWBhcWFhcWFhcWFhcWFhcWFhcWFBcWFhcWFBUWBwYWBxQGFQcGFAcGBhUGBhUWFhcUBhcWFBcWFhcWFhcyFjM2FjMyNjc2NzY3NjY3NiYnJicmJyYnJiYnJgYHBgYXFhY3NjY3FgcGBgcGBgciJyYmJyYmJyYmNTY2NzY3NjY3NhYXFhYXFgYXFhcWFBcWFhUWFBcGFhUGBgcGBgcGBgcGBwYGIyIGIyYGJyYmJyYmJyYiJyYmJyYmJyYnJiYnJiYnJiY3NzY2NzY2NTY0NzY2NzQ2NTQmNTQmJyY1JicmJicmJicmJicmBiciJiMmJicmIicmJgcGFhcWBhcUFhcWFhcWFhcWFhcWFhcWFhUGIgcGBgcGJgciBgcGIgciBiMmBiMGBgcGBicmNjc2Njc2Njc2Nzc2Njc2Nic0JicmNzQ2NTYmNTQmJyY0JzQmJzQ0JyY0NTQ2NTQmNzQ2NzY2NTQnJiYnJjYnJiYnJjYnJjQnJjY1JiYnJjQnJiYnJiYnJiYnJiYnJiInJiYnJyY3NhYXMhYzMjYzMjYXMjYzMhYXFjYXFjc2Fjc2NjcWNjMWFjM2NjMyFhcyNhcyFhcWFhcWFhcWFBcWFxYXFhYXFhYXFhYHFhYVFhYXFhYXFhYXBhYHFhcWFBcWFhUWBhUGFgcGBgcUBgcGFgcGBgcGFAcGBgcGBgcGBgcGBhUGBgcGBwYGBwYGBwYiBwYGBwYmJxYWFxYWFxYWMzMyNjc2Njc2Njc2Nhc2Njc2Njc2Njc2MjU2Njc2NDc2Njc2Njc2JjU0NCcnJiYnNicmNCcmJicmIjUmJicmJicmJicmBicmIicmIicmJgcGJgcGIwYGBwYGBwYGBwYUBwYHBgYVFAYHBhYVBhYVFRQUFxYGFxYWFxYBlwEIBAQIBAIHBAoBAQIIAwgBAQgCAgUGBQMDAgICAQMBAQEBAQIBAgMCAgEDAQEBAQEBAQMDAw4ICBIOCQEBBgcDCBEECgsMAwMMAgIBAQEDAQMEBAYGBA8cCwMFCQQGBAwFAgsBBgMCCgMDBQYEDAYDBAQCBgEFAggMAw0GBg8IDhAICgEBCQUFAgEDAQEBAQEJAwUWDAUNBQQIBQcICgYDBg0FBAcDCRMLCgUCBgkFBQoHBQUDCAMDBgIDBQEBAQMEAQICAQEDAgIBAQMEBAcFCAcIDgkFDQUOHA4CBgMOEggFDAULFgwBAgIGAQMEAgMCAgQMBQQFBQcJBQkECAYCCxwNEhIJBAkFCx0OBAcECAQCCxUKCwcDAgwFCQ4ICQEBCwgPDQMCAQIBBAIGAwMBAwECAQICAQEBAQMBAgECAgICAwICAQEBAwECAQECAgMBAQICAQECBQICBgIFBwUFBwQEDAYNAwILDwEECggDBwUECAUFDQYGDQYMGg0YNRsWGA0aDQgSCAcKBQgNCQcRCAUKBQsGAgIHBAUHAwgHAggBCQYEBAMEAgIDAgIEAgMGAgUCAgQCAgIEAQQCCQMEAQECAQMBAgEBAgECAQMBAQQFAgUDBwICAggDAgICAgQICAUGDwIEBAgEAwcGBAQJBAgR3Q4TCA8NBwgKCA0RIxAFCQUQCQUHEQYCCAMCAQICAwEDAgICAgICBAEBAgMBAgECAgICAgECAQEBAwIDAgMFAwMQBAcHBw8QCAsbCAsLBwkQCQ4ZDQgDCwsIAwEBAQMBAQEIAQEBBAECAgEBAQUCAgYCAgf3BAUCAwUBBAQDBQIBAwYDBgMBAwIBAwgFAwQCAwgEAwUDAggDDw8JGw0EBwQQCBAJCAsLCQ8GBQsGAgYDEBMHBgcDAgQBAQEBBQIIBQgCAwgFBRQFBwUHBggCAwUCBgkGCRsGAQIBBQIBBQIGAwIJBAECAQIDBwwHBQ4HBAYEDAkCCAEBAgICBAcHAgEKBwYGAgMHBQQMBQYLBAUMBQgPBgIFAgICAgIBAQEBAQIBAgECBwEFCAMECwQEBgMIBQcEAwUJCRQTJBEDBQMGEAgTIxIDBwMCBgMHCwcJBgoIBQgFBQsEBwsHAgEBAQICAgIBAQQCCBQKHkMZAgsCBAUCBAQDAwUDBQICBgEDCQEEBAQEAQIBAQICAgEBAQIDAwMDCAYFCA4FBQIBBgMJDSoRBQwDBAgFFg4EBQQFEAUJDQcLEgsCBwMFCQUIEAkCBgMFDAUEBwQKAwIHCAMEAwwMCAUMBQoTCg8bDgsDAgUJBQUKBAMFAgIDAwEDAgIEAQICBQEBBQcGAgEBAgEBAQEFAQIGAQEBAQIBAQMBAgIBAQEBAgECAQIBAQIBBQECBgIBCAYIAgYBAQIGAgIFBAECBAMDAwcFAgUHAwUFBQwKBwkFBAcDBQgFBgwFBwYFCQQCCQMBCwwIDQgECwsFCAwGAwcDAwcEBQwGCAsCAgIEAwICAQECAQEBPwMGAgMEAgIBAwQCAwEFAgICBwIFAwICBwMDBQMMAQkCAgQHAwoHAwsGBAgWCwUWAhAHEQUHBgYOBQIGAwsBBgwFBQsFCAICBQEBAQQCAQIFAgIBAQICBAIDCgQCBQMECQQaEQkVCggRBQsDAgwgDxIFCwUNBgETGA4HAAAAAQAJ/+MCAQMRAn0AAAEWBgcGFgcGBgcGBgcGFAcGBgcGBgcGBgcGBgcGBgciNicmJjUmNCc0NCcmJicmJicmJicmJicmNCcmNCcmJyYmJyYmJyYGJyYmJyYiJyYmJyYmJwYmIyYmJyImBwYGBwYGBwYGBwYWBwYGBwYWFxYGFRYGFQYXFhQXFhYXFhQXFhcWFxYWFxYWFxYWFxYyFxYWFxY2FxY2FxYWFxYXFjYXFhYXFjMWFhcWMhcWFhcWNhcWMhcWFhcWFhcWFxYWFRYWFxYWFQYWFQYGBwYGBwYGBwYGBwYWBwYGBwYGBwYGBwYGBwYGBwcGBwYGBwYGBwYGBwYGBwYGJwYiJiYnJiYnJiYnJiYnJiInJiYnJiYnJicmIicmJicmJyYnJiYnJiYnJjYnJiY1JjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NjYzNhYzNjIXFhcWFhcWFhcWFhcWFhUWBwYUFQYGBwYGBwYGBwYmJyYiJyYUJyY0JzQ2NzY2NzYWMwYGBwYGFxY2NzY2NzYmJyYmNSYmJyYmIyIHBwYGBwYGBwYGBwYGBwYGBxQWBxQUFxYVFhQXFhYXFhYXFhY3NjI3NjY3NjI3NjYzNjY3NjY3NzY3NjY3Njc2Njc0JjU0NjU1NDYnJiYnJiY1JiInJicmJiMmJicmJicmIicmJiMmMSYmJyYjJicmBicmJyYmJyY0JyYmJyYmJycmJicmJicmJyYmJyYmJyYiNSYmJyY0NSYmNzY2NzY3NjY3NjU2NzY3NjY3NjY3NjY3NjY3NjY3NhY3NjYzNhYzMjYXMhcWNhcWFxYWFxYWFxYWFxYWFxYWFxYXFjY3NjY3NjY3NjY3NjY3AfsGBQECAQEBAQMBBAIBAgICAgEBAQECAgIEAgQBAgUCAQEBAQEBAQQCAgQCAgUCAwIBAgIDAgwGCQUEBA4FBAYCBQoFBQgEBgwFAwcCBAUCBQ0FDQ4ICA4GBgwEBwUCBQEBAgMBAwECAQEBAgQBBAIBAgICAgIGBgECBQMCBQEIDAcJBwIFCAQGBAICCAUECwYLCwcCAgMHAg4IAwcCBQUBBQkEBQMCBQYCChIIDQ0FBwEEAwIBAQEBAQEBAwIDAwIFCAUFAwIGAQEIAgIJAgECBAMIAwEFBAIJDgYODAYFCQYGDggFEwgMGw0DCQsLAgcIBQQIBQgFAgcFAgIFAwMFAgQGBQIBCAECBAIDAgIEAwUCAQYCAgMDAgQDAgMCAwgCBAgEBAcFAwkDAwYEBwcIDwkDAgcDBhAFDQIJBgIGAgIHAQIBAgICAwcDBQMGBAEGAwQYAwoCAggBCQEBAgIGBQ0LCQIHBQULAhIMCgUJBAUEBAQFAwkEAwkFBQcKCAECDQcEBAcEBwQCAQQBAQEDAwYCBAgFCQsHCREOCBYIBQsHBAkGBw8JBg4GAwcDDBILAgQCBgICBgEDAQQBAQUDBAMHAwEKAQsCAgwLBg4GBQUIAgoDAgwJDQcKBgoFBQgEDAgEBwQMAgMFBQQIAgkLAwUDBwIDAgIBAgICAgMBBQUCAQEBAgIEAgUDAgQCBQIDBgsGAwIGBQIIAgMFCQQLCwcKDAYEBwUFCQUFBwQGCAQIAw4FBQ0FCwoCBwwHBQQEBgYEAwsPGQYJCgYDCwUCBAMHAgMDEQIMBQcPBw0cDQYLBgUMBQoUCwUMBgUKBQoUCwsFAQkFBAYEBAcEAwcDBAcFBQsFAwYECgICBQgEBAUCDAQIAgICBQIEAQECBQECAQIDAgIDAQECAQIBAwIBCAUHBwQKCgYIBAIEBgIPCAUFCAUIAgIMDxALBAMEAwMGAgUIBgMDCQQCBQUCCAUIAgQBAQQCAgEBAQECAgEDAwEBAQECBAEBAQMBAQECBQEBBQEFBwYKEQgMAgoCAgQLBQgQCwgCAgUNBgwGBQsWCAcDAgoEAgoGAgoBAQIJAwcBAQYCAgcHBQcFAgIFAgQFAwIFAQIEAgECAgEEAQICAwIFAQEIAgIGAgIBAwEI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BgcGJhUHBgYHBgYHBgYHBgYHBjEGBgcGBgcGJicmJjcmJicmJjcmJic0JicmJicmJicmNCcmJjU2JjUmJicmJicmJicmJyYmJyYmJyYmJyYmJyYmJyY2JyYmJyYmJyY0JyY0JyYmJyYmJyYmJyYmJyYmJyYiJyYiJyY0JyYmJyYmNzYWNzc2NzYWMxYWFzI3NjYzFjYzNjY3MhY3NhYzNjYzMhY3MjYzMjYzMjYXFhYzMjYXFgYHBgYHBgYHBgYHBgYHBgYHBgcWFhcWBhUWFxYWFxYXFhYXFhYXFhcWFxYWFxYXFhQXFhQXFhYXFhQXFhYXFhYXFhcWFBcWFRYWFzY2NzY2NzY2NzY2NzY2NzY3NjY3NjY3NjY3NiY3NjY3NhU2Njc2Njc2Njc2NzY2NzY2NyY2NyY2Nzc2Jjc2Jjc2NzY2NzY2NzY2NzY2NzY2NyY2NzY2NzY2FxYGBxYHFhYXFhcWFxYWFxYWFxcWFhcWFBcWFhcWFxYGFxYWFxYWFxYWFxYWFxYUFxYWFxYWFxYWFxY2NzY2NzY2NTY3Njc2Njc2Nzc2Njc2Jjc2NjcmNjc2Jjc2Njc2NDc2Jjc2NDc2Njc2NDc2Njc2Njc2Njc2NicmJicmJyYiJyYnJiYnJiYnJiI3NhY3FjY3FjYzMhYzNhY3NhYzMhYzFjcyNhc2NhcWNjMyFjM2NhYWFxY2FzYWA+4TBwsIAgMGBAQGBQoXCwgOBwgNCAMFAwMJBgMCBAECBAEBBgsDBQIEBAQFAQUCAgIBAQEFAQIDAQEFAQECBwIDCAUBAQEBAwECAgUDBgMCAQMFBwICAQICAgIBAgIEBAMCAQIGFgQGAwIEAQICAgIFAwECAwECAQEBAgICBAICBQsIAgQCAgQDBAIBAQEEAgICAgQCAQEBAgICBQUCBAYNBgIBAgMEAgEFAgMCAgUBAgECBAIHBAECAQQCAgECAQQCAwUDAgICAwIBAgUEAgQCAgEEAgECAQMCBgECAgICAgEHAgICAwQCAgECAQQJFwgCBQECAwIFBAIFAQICAQEBAQIHBAEBAgIBAwIEAwECAgIDAgMBAQMCAgICAQICAQEBAQIBAwIBAQIBAgECBAIHAQwHBgUDBQkBAQYDAgUKBQYCAg0IBAkBCAgEBwQBBAoHHwsIBAoGAwcDBgoLEwoKDQcIDQcECAMKBAIECAQFCAUFCAUFDAQGBAUOCAQFCAUCCAMIEgkMEggMCgUMDQYFBwUFBgMBAgMBAQQCAgIDAQIDAgIDAgQCAwICAQIEAQEFBgECAwEBAQEFAgIBAgQCAgEFBwECBQQCBAMEAQIBAgUDAgMCAgUCAwIDCQMDBAMFAgEFAwUEAgECAgQCAgECBAQFAQIDAgIBBQIBBAIDBQEBBQEBAQQDBwIDAQICAwICAQIBAQQCBgIEBwUHAgMEAQIHAQYCAgIDAQUCBgMCAgIDAQEBAQEBAwECAgEBAQEEAgMGBAIEAgIBAQICAgMCAgUCBAIDCQUCAgMCAQQCAgICBwECBQEGBQUDBAECBQQEAQIBAgIBAQIBAQEEAQEBAQIDAgECBQQCBgQCAQECAQEBAgYDCQEDCAMECAcNBwYOCAsKAQIGBAMIAgkCAQQHAwUOBggPCwoIBQgECQ8HFxsQDAUCCA8GDhYXFQgFBwQCCQL6CgcDBQMDAQECAgIFCAUFBgQEBgIGCwcFEQoFDgcFBQIKAgENGhAEDQYHEggFBgUDBQMDBAQKCQQHAgIFAwIFDwcLFgsDBQMCBQMIBwsVCw4NBQkGFBsOCA8ICAUIBQYLBhMWCgcBAwUKBQQGCgQDBg0HDAgFCRMKDhYNBwoHAwYDCwMCBwwHEBAIFCUTBQcFCBQJCRIFCAQKEQgJEwkLBwICBgQGBQgQBwIIDRwPAgYDBgwKBQgECAUFCAUFCAUICAMLCAMCCQQDBQQECAUECAMIDwgFBgQLAgIGDgYEBgkDAg0GAgMGAwkBAgwGBQQCBwIIDQcHDAYLCgcDBw8HAgECAgcCCBEIDA0GCxgMBQoHBwkEER4QBAgFBAUGAwYEDCEQBw8JCBQLCgkGDwgJEwsFCAUFCQYFCwULBgMCBQQIGgkKBQIJAgEJAQEECgQEAgEDAwIDBAMEAgcCBAIBBAUCCgIFAwEBBgECAQEBAQECAQIBAQECAQEBAwEBAgIBAgIDAgECBQIFAgIFBwUJCQUGCAQHCQYDCAIMBRAcFA0GAwgLChILDwIFBgUHDgcLBAcNBg8ICQkIDgUHBgIEBwUCBgMDBgQFDgYLAQcIBAkFCwkEAgsFCxkMBAYCCAsHBAgDBQYDCwUIDggGCwcHAgMDDgIMAQkFAgMEAwIGBAkIBQYDBAMCBgUCBAYDDAgDAgcDAQYHCBIKAgcEAwgEAwgDAwYBBQoFDhEKCgQCAgcECQ4NCAUJCwoOCBEIBg0HDAcDAgUKBQIGAwgEBAcDBQsFCxYLBQsFBw4IBwoGCBoLBw0JDhkLAQ8GBw4HBgYCCgQIBRIQBwsKHg8OBwoJBAsJBAUGBQgCAwQGBAMIBAUHBAUHBQoIBAQHAwoLBxIPCAMEBAsGBQMCAgQBBAIBBAIDAgIDAgQGBAEBAQEBAQICAgEBAQEBAgEDAgIBAQECAQEBAQEBAQECAgIAAf97/9sC4gLuApcAABMGBgcGBgcGBgcGBgcGFhcWFBcWFhcWFhcWFhcWFhcWFhcWFxYWFxYWFxYWFxYWFxYWFxYWFzY2Nzc2NDc2Njc2Njc2Njc2Njc2Njc2Nzc2Njc2NzY2NzY2NzY2NzY2NzYnNCcmJicmJicmJyYiJzY2NzI2MzI2MzYWNzY2NzYWFzYWNzY2NzYyMzYWNzYzFgYHBgYHBgYHBgYHBgcGBgcGBgcGBgcGIwYGBwYGBwYUIwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYWFxYWFxcWFhcWFhcWFBcWFhcWFhcWFhcWFxYXFhYXFhYXFhYXFhYXFhcWFhcWMhcWFhcWFhcWFhcWFhcWFhcWFhcWFhcWFhcUJgciBiMjIgYjIiYjIgYnJgYHBiYHIgcGBgcGJgciBgcGJic2NjU2Njc2NzY2NzY2NyY0JyYmJyYmJyYmJyYmJyYnJicmJyYmJyYmJyYmJyYmJyYnJiYnJicmJicmJwYGBwYGBwYGBwYGBwYHBhQHBgcGBgcGBgcGFQYGBwYGBwYHBgYXFhYXFhcWFhcWFhcGJgcGBiMiJiMiBgcHBiYjBiYjIgYHBgYHIiYHIgYHBiIjBiYjBiIHBgYnNDY3NjI3NjI3NjY3NjY3NjY3NjY3NjY3NjY3NzY2NzY2NzY2NzY3NjY1NjY3NjY3NjY3NjY3NjY3Njc2Njc2Njc2Njc2Njc2Nz4DNzY2NyYmJyY0JyYmJyYmJyY0JyYmJyYnJiYnJyY0IyYmJyY1JiYnJjQnJiYnJiYnJiYnJiYnJiYnJiYnJiInJicmJjU2Njc2FjcyNjMyFjMyNjMyFjMWNjMWNjMzMjYzMzYyFzYWzwEMCAUIBwsGBAMFAgYGAgYCAgcCAgMCBAgEAgYCBAQCCgcDBwQDCQUDBQQDCAMFBgQHAwQDBAIHBQICBgIEAQIGAQIIBwQDBgMFAg4FAwEGAQkGAgUCAgIDAgQDAgQEBAQNCgcXCQ0GDwsDBRYMBQwHBQsFChMLBQkGEC4UCxULBQkFChQMChgOCgUCBwMDBwQNCwUDBwQDCAUMBgoEAwUHAg0BBgQCBg0FCQEECQMLBgQCBQIFBgMCBQMCAwICBwIECAMDBQMGCwQHAgUCAgQBBgQCBQIFAgIBAwIBBAIFBgQIBQYFCAsFBwECBgICAQIHAwIGAQQCBwYCBAcCAwECCAYDCAUHDAQKAwINDQUFBgQLBwUHAwILBgMHBwIHAgEGBgINBAULBRIEBgMCBgMJEwsJAwUFGgYUFQoVCgQKBAIHAg0KBQcDCxQJBAMIAQECBgIEAgcFAwMJAgQCAQYBAQgIAgYDAgMIBQcFAgIHAgUBAQMGAgQCCAEIAQICBgsDAgQFAggOBgUDAQ0IBAIFAgQIBQMGAgYEBAMCAwIGCAQDCQIKBA4DAwYECBACBgQEDAkEAwcDBQsGCwYOBwcNCAgTCQ8aEQsDAgMGAwQIBAoDAgoLBQgOCAUCCAQCCQICAwUDCgICBgsFBAUEBAUDAwUDCwgHAwQFAgMFAwcCBwIHBQEGCAUHCgYHAQIGCwUFAwQHAwgDAgICAgQEAQgBAQoNDQYGDgkEDQUGAQQGAgUHAwcBCAICCAQEAwIIBwEJDQUGBQMCCAIICwQCAQIJBgEKGQsLEwoOCgUDBgUODwUHAQoCCBEIBhAGAgsFBw4HBQwFCxYLBwkFCwULBicECgUHBgLpCAYBAwYCBAYCAwYEDAYECAgCBAYDCQYEBgsFBQkFCQQCDQoFCgUFCwUFCwUFBgUECgUGCAICBAIJAgUCAwQFBwUCBgMCCggEAwYEBQYQBgEBCQELCgQIBQICBwIEBgIPBwgIBwYDAwMCAwQEBAgBAQECAQIBAQEBAgECBQMBAQIBAQEBAQIEBAICAgIFBQICAgIDAwIHAgUEAgMBAgcEAgICBAMEAgIKBQ4MBgQHBgIIBAIIAgIFAgIHAwUJBQQHBAcLBQgJAgIJAQcLBQMLBQcDAQIFAwwIBQQIBQoGCgYJCgUHAgICBgQCBgILAgIHAgMICwYFCAcFBAYCCQkFDAUPCQgFAggFAgIBAgMFAgICAgcDAgUCAQcBAQMDAQoCAQIBAQMBAQIBAQIBAwICAgIBAQMBBAICCQICBQoIBAYIBAECBgQHBgMKCAUFCwgHBgMGAwIJDwQIBwMFEQYIBwQDCAQIAwEEBgYDAwoBBQMCAwYHBwMDBwMMEwoMAgIRDAgDAgUGBg4ICAcECQEKBwMCCQMICggQBQEGAQQBAgMCAwIGBQQCAQIBAgICAgEBAQMBAgEBAQEDAQECAgQBAgUDBQQCBQEFAQIEAQICAQIFAgICAgICAwICAgUFAgIEAgICBgMGAggBAQsEAgoIBQoJBggDAgcMCAUEBgkECwUCAgcCAwICDQELDwsLBg8bDQkPCAsCAQQHBAUJBQkCAQkEAgYJAwYCDAgCCA4HBwQEBwMIAgEICQUCBgILCAULDgkCCQUEBAICAgUJBAMDBQIBAgIBAwIDAwEDAgIBAQQCAwAAAAH/Zv/kAo8C+wH5AAATFgYHBgYHBgYHBiIHBiIHBjEGBgcGBgcGBgcWFhcWFhcWFhcWFhcWFhcWFhcWFxYWFxYXFhYXFhQXFhYXFhYXFjc2Njc2Njc2Njc2Njc2NjU2Njc2Njc2Njc3NjY3NjY3NjY3NjQnJicmJicmJicmJjc2FjcWNjcyFjc2FjM2FjMWNjcyNjMyFjMWNhc2MjMWNjMyNjMWNjM2NhcGBgcGBgcGIgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcHBgYHBgYHBgYHBgcGBgcGBgcGBgcGBwYGBwYiBwYGFQYGBwYGBxYGFRQWFxYGFxYWFxQGFxQWFRYGFRQWFxYGFRQGFxYWFxYXFhYXFjIXFhYXFhYXFhYXFjYXFiYHIgcGBgcGJiciJiMiBiMiJiMGBiMmBiciJiMmBicmJicmIicmJiMGJiMiBic2Njc2Njc2NzY2NzY3NjY3NjQ1NCY1JjY3NjY3NjQ3NiY3NSY2NTQmNzYmNTYmNTQ2JzQmNSY0JyYmJyYnJiYnJiYnJiYnJicmNCcmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYnJiYnJiYnJjQnJiYnJiYnJicmJicmJicmJicmIicmIjU0NjIWMzIyMzI2MzI2MxY2Nzc2Njc2Mjc2Njc2FjcyNjMyNjM2Njc2FrYDAQICBgICBQIDBgIIAwEJDAcECggCBwIBAQcEBgMCAgMCBwEBAgUCBAQCBAICBAIBBgICAgcBCAUEBAcEDgkDCQMECQUCBAIECAIDBAUGBAYLBgcKBg0EBAUBBgMCAgIFCAkCBQUFBA0DCAUCAgsFAxMGAgYDDQsFAgsCBQgFBQcECA8IChAGBQsFBAwFBQcEBgUECxsPAgcFBAgFCgQCCgICBAgECA8IBAgFCA4IAwYDBw0HBwMEBwMCEQYDAgoIBAIDAggCAgQCCBAIAgMCCAYGBQIDAgEEBAMCAgIGAgIDAgEEAQEBAgEBAQMCAwQBAQEBAQECBAEEAgIEBgMCCwYEDR4PCQQDCQECAwYCBwQFBwULGAsKBgIDBwQGAwIIDwgNGw4DBwMFBwQGCgYFDQYGCwULAQECCAELBgUHBgMLBAQJBQQGBgwCAgIBAQQCAwEBAQICAQEBAgIEAgICAQECAQICBQMEAgYBAgIGAwIEAgkCCgIJAgUCAgMHAgQGBQcEAgYHAgIFAgUEAgIHAwUCBgEBAgYCCAEDCgYEBwUIBggEAwsJBgQIBAcFAg4NCAoJAwIYAwsHBQwIBA0hChMJEQgFCAQFBwQHDgcDBwMDBwIFBwQFCgL7BgYCAgIBAgMCAQIGAggGBAIIBQIJAQILEggLBwIBBwIJAwIECgUIAwIIAgQGBQEIAgQECgIBCQ4FBQYFBQkDCAUFCgUCBgIFBAMHAgIIBgQHDggGDgcNAwcCAwkDAQoECA0CCAIFBgMEBQIGBQUIBAEBBQEBAQMCAQIBAQEBAgEEAwIBAQIBAQEDBQQDAgIBAgUBBQIBAgICAwcDAgICAwsEAgECBAsHBQMCBQQCDwgEAgwKBQMEAwkEAgQCCRAIAgUCBg0IBwQIAgoJBQIEAwMGBAoRCQgQCg8OBgUIBQQHBQYMBgUNBQUKBgUNBgUJBRQmFggLBwoFBwEHBQIGBwUDAgEDAQINAwECAQMBAQQBAQMBAQIBAQICAQEBAgYCAgEBAgEBAwUIBAMFAQIIAwIDAgIEBAYEAgkDBg8ICA4IBAUEAgsFDQwIIQUIBA0aDgwCAgUNAwMKBQMGBAQIAgUHBAYFCAYCAwYDAgQCCQIHAwILBAUFAwcFAwUOBwgDAwwFAwMHAwoEAgQJBQoBBwMCAgUDCAEBAwQCAgYCAgQCAwEDBwICAQMEAQUFBAMBAQIBAQICAgMCAQIBBAEBAQEBAQEDAQIBAAH/7P/zAmgDKwILAAABBgcGBgcGBgcG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ogIGAgIBAgIEAQECAQYBAgECAQMBAQIBBgICAgQDBwMFAwIKCwcBCgMFBAMJAg4JBQwJBQgCAgkSDAsSCAgBBgMHAgIFAgkGAgIIBAUCAgICAgICBAEDAgEDAQIBAgEBAQECAQEBAQMCAQEFBQMEAgICBgMBAgMCBwQCBQcEBQkGCBMKCxAHAwYECBEIBQ0HBgcFCwcLAQMIBAgFCAIFAwYBBgkGGiYXCRUNBAcBBgMFBQkDBgQDCAoJBQMHAgICAQEBAgECAQEBAQECAQICAgYBAQECAQQBAgQBAQEEBQEHAgIFCgoIAwweDgQJAwIIAgEHBQMLCA4MBgsXDAQHBQoEBQcEESJSAQMBCQgNCgIFBwIFAwEGCwMECQMDCQILCgQHEwUFAwIBAgkCAwUECgMFAwoDDQ8HAwUCDgoEAwcCBAUCBAYCCAECCAECBQcFBQgDBQECAgQCAQECAQEEAQQBAQEDAQQBAQICAwEGCAIFAgsEAgUMBQcDDwMFBgQHAwsGBAQHAgsCBQICCggCCwkFAwcEBgEBBQEBAQIFAgICCgIEBgoGAgYIBQgBAQUOCAIGBAMIAgUKAwIBAgUFAgMCAQwGBxYMBQ0FBQsCAQIBAQYDAgMCBQMCjBAOCAgOCAMIDiAQBg4JAxUFCxUKCBAIDQkFAgYDBQMCAgcEBgUJAgwKBgIBCQECCQIFAQkHAgMCAgQBAQICAwIKBQcGAQgCAgYBAgoGBQUMBQQFAwoFBgUIBAINBAgGAhILBwcNCAULBgUKBQkDAgcQCAQIBBESDAcDBwMIAgEDBwIFBQMFAwMGAgIHAwQDAQIBAgIHAgIEAwQIBQMEBwUICQkGAhMhFAoIAgMCAgQBAgUFAgEFAQgDBAQDBAMIBQMGAwMLBQUKBQQIAwsCCxsMGBYuFwMFAwQHAgcFAw8JCAwHBAcDAwYEDQYLBgUGBAoWDAoSCgsVCA0NBQQCBQEDAQQGAwECAgIFBQQBAQEBBAIBAQEBAQEDAQIF/iMFBgcLBwIBBQIDCAMMAg0JAgoHAgUDAQQBAwUCBAwHCwgFBQUFBxgGCgQECwQDAwYDCAoDBAECBQQBAQEBAQQCBAICBAIBBAQEBwoHDAkFAwYDAgcECBkIDBoJCw8GBRQCDgwGAggPBgkGAgwGBAgCBwECAwICAQMBAwkFAwMKBQMDBAIIAgMDAQgG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NCcmJicmNicmJicmJicmJicnJiYnJiYnJiYnJiYnIiYCNgkFEgsBAQoIBQIFBAgIAgYDBgoCAQEBAQEBAgEBAQECAgsEAQECAgEDAgEDAQEBAQMDAQEBAgIBAQgDBgYCAgQCBAgFAgQCBQsFDQkFCAkJBQsFCgsEBwUFDQYECAUGEAcZCBIJCA8IDgYHBAIHAQICBQIDAgEEBgICAgUEAQEBAQgCBgoIDAcFDQoFBgwHBxMGBQ8FDA4HBgYCAgIEBAIBAQMCCQICBgIFAwkJBAgRBQUQAgICAQEEAwQDAwIJBQUIBQUEBgEBBAUDAQUEBgcCAgIBAQcEChAKBAUCCwEBAgIJCgMJBQcIBgULBwQMBQYKBwcEAQECAgEBBAEBAQECBAMEAgIGAwgDAgUHBQsJBAgQCAUGAwUNBQcMBQUIBAgGAwkJBAUOBg4EBQIHAwMCAwMCBQECAgECAgEBAgEBAQEBAQICAQMEAggEAgQCAwcIAgQCAwYCBQMJAQIJCAQQEw0JDQgPDwUCCAIKBAIJAQkGAwQGBAcLCAIGAwYDAwYDAgIBAQECAQMBBAEEAgEBAQEGAgMEAQIGAQINEgsHBAIDBgIIAgIGCgUDBgQCBQQIBAMGAwQIBAULCAIFBAQNBAsECAQCAwUCBgMCBQMCCgYDBQUCAwEBAQIBAQEBAQEBBQgMGgwIDwgGDAYIDQcGDAcHDv7RBwoCBgwFAwcDBAkDCgIHBAEHAgUJBAICAgIEAQIBAQEBAQEBAgEBAQMCAQEBAgEBAQUCAgYCAggDBgoFCgMIDwUKBwgGDAQGCwUMDAYDBAMGBAYFAgUJAwcCAgECAgEBAQECAgEFAgIGAggJBgwEBwMGAQECBQIFCgQHCwIACQYCCQYCAQMEAgIEAgUEAgMCBRQHAwgDBAUCBgwIBQkFDyEQCREIFisRDgkFChMOHxEFCgUFCQUFCwUFCAUTKhUFCgULFAsFBwUFDQUJBAICBQIECAQCBAIEBgUJBAMFCAICBAMEBwIEAgIEAwIBAQICAgEEAgIFBAkFBQYDBgECAgMCCQICBgwIBQoRDg0bDgUIBQsSCwUUBgYEAgUCAQECAQIBAQYDBxEKCQkFBA0EBAgHCAIDBQILBAIFAggDBwYCAgQDAw0FAg4EDBQICgIDAgEBAgIHFQgECgECCAUFCQMCCQUEEAUFCQMKCwkHBgUNBQQNDQ0GAgMDBAoCAgIBAQEBAggBCgoEBgQGCwgLDwQEBwUHDAgOCgYGBAIDCQQHAQEGAwIFAQIBAgEDAQEBAQQCAwQCBAgEBAkFDAMCAgcGBg4HBQYIFwsIEAsIAwUIBQcLCAcHAwsWCwsUChYpFAEHAwsJBAYEAw0KAgQCCAYCAQIGAQEFBgIGBQEFAgMEAgIBAgYCAgYFBwMDBQMGDQQEBwQGCwUKBAILAgIHEQYQEwoFBwUDBwMaEQIHAg4HBQMGAwwHBAYDAggCAgsUCAQDAgIBAgUBAQIHAgICAQIBBAEBAgEBAQMCAgEKAgQCAgMFAgcEAwgDAgkIBQkDBQwGAgoFBAUDAwcDAwcDBgsFCAMBAgIBAQEBAwEBAScBAgECAQMCAgICBwgBAQoCDQ4HAwgEBAYEBQsFChIKEA4ICA4IBwwFBAYFBAkFBAcFBAkFCgkFDAoDCwIGBQQHAQMBBAUDBwMFCQMIDQcDCAQJAggIBAcPBwkJBAoFDBwLBAYFBw8HBQgFBQkFBQ8HDAQIAwcDAQQIBAUFBQQAAAH/xv9gAigClwHkAAADFjYXMhYzFjYXFjYXMhY3MjYzFjYzFjYXFgYHBhYHBhQHFAYVBhYVFAYHFBYVFBYVFAYVBhYVNjY3NjY3NjY3NjY3NjY3Fjc2NjMyNjcWNjMyFjMyFhcWFhcWFhcWMxYWFxYWFxYUFxYWFxYWFxYWBwYGBwYGBxQGFRYGFQYUFQYGBxQGFRYGFRQxFgYXFAYHBhQHBhYXFhYXFhQXFhYXFhcWFhcWFjM2Njc2NicmNicmJicmJgcGBhUGFhcyNhcWBwYGBwYmJyYmJyYmJyYmJzY3FhYXFhYXFhQXFhYXFBYVFAYXBiIVBgYHBgYHBgYHIiYnJgYnJiYHJiInJiYnJiYnJiYnJicmJic0JicmJyY0NSYmJyY2NTYmNTQ3NjY1NSY2NzQmNSY3NCY1NDY3JjU0NicmJicmJicmJicmJicmIicmJiMmBgcGBgcGBgcGBgcGBgcGFgcUBgcGBhcWFhcWFhcWFhcUFxYXFhYXFhYXFhYHFCYjIgYnIiYjIgYHBgYjBiYjBjQjBgYnNjY3Njc2Njc2Njc2Njc2Njc2Njc2JjU0Nic0JjU0NjcmNzQmNzY2NyYmJyY0JyYnJjYnJiYnNiYnNDQnJiYnJiY1JiYnJgYnJiYnJiYnJicmJiMmBicmJjYGCwUEBgUIDQgGBwYIFgkKBgMKBwUNDQUBBQICAQEDAQIBAQIBAgICAQEFBQMDBwIICwUFCgUFCQMHCgYIBwoIBQYOAwIHBQYOBwYNCAsHBQcDBQMCAgQCAgICAwIBAQECAwEBAgECAQICAQEBAgEBAgEDAgEBAQEBAQEBAgECAQEBBgICCwsCBgMCCwUHDQUKDAIEAQEGBQIGDwcDAwILCAcJBgMGAgICBxIGBQUCAgECAgMBBRQIDgcPEAUCAgICAQICAQQDBAkEAgQDBQgKBAYFBAcEBAYDBwQBAwYDBgQCAwUCDAQCBQQJAgEGAgEBAQEBAQIDAQEBBQEBAwMDAQIDAQIBBQIDBAICBgQDBwQFDAcQBwUPIQsEBwQDBQQDDQUECAQGAQECAQUBAgEDAQIDAgEBAQEBBQEBAQMGAgUKAwsEBAYFCBYLBw8HCBMMCA8ICwEIDggJDwYEBwgBAgoRCAgDAgMDAQMCAQgEAgEBAwEBAgEBAQMBAQIBAgIBAgIDAgIDAgEBAQEBBAMCAwULBQcCAgUGBgIGBAUOAwcCBQgFAgQClwICAQQCAgIBAQEDAgIBAwECBQsUCwkFBQYGAwQFAgQGAwMGAgMHBQgWCwoUCwsXDAEJAwMGBQQLBQIGAgIDBQEDAgQEAQEDAQEBAgYCBwMBCAYCAgIEAwMOCAcMBQcMCAoTDAUMBgkUCwsCAgwGBQYNBxQaDgMFAwkJAwsCDwUIDwkLFgwLGAwDBgMDBwIJBAINBQEDAgIEAQcEBw4SDQYCBwcDBQYFBQMCCxIEBwIGBgMFAgUDAgIEBAMGBAIHAyAOAQEBBgUGAgYEBgsJAwYDBQ0ICgEIBgMCBQIFBgECAQEBAQECAQIBAQUCAwECAgYCBgYDCAIHCAcIDQUGBgYRCAsUCwYLBRoeBxIHCw4LBwUNBxESBAcEBQsFFQ4JDwgIDwgOCwcCBAICBAECAgQCAQIFAgYDAwcCCw8JBxAHDQkFAgcEFC8ZCA4IDiEPBAgDCwQIBwQIAwgNBQgHBQUCAQEDAgICBgECAQEBAgMOBAQBBQMCAQUFBwcCAgYBAggCAhAyEwsVCQMGAwMIBQcGAwYCBQkFBwYFCA8KExwaMxkNGAsGBgMFBwUGEAcDBQQEBgMHAQEDBQIBAgICBAECAgECAgsAAAL/+f/5AO0CfAApAMkAABM2FhcWFhcWFxYWFxYWFwYHBgYHBiMGJgcGJicmJicmNDU2Njc2Njc2NhcWBhUUFgcUBgcGBgcGBgcUFhUGBgcGFhcWFhcWFhcWFhcWFxYWFxYWFxYWBwYGBwYHBiIHBiYjBgYHBgYHBgYHBiYHNjY3NjY3Njc2Njc2NjU2JjU2Njc2NDU0JjU0JicmNDc2Njc0Njc3NDY1NDYnJiYnJicmJyYmJyYmJyYGJyYmJyImJyY3NhY3NhYzMjYzMjYzNjY3FjYzFjYzMjZzAw4FBg0FBAUCBQEEBQEGBgoHCAMICwYDDwsFAwUCAQILAwYBAgIIQgEDAwEBAQIBAgEEAQIBAQICAgEBAgICBwMEAgEEBAIFAgMKBQgFAQUIBQkEBw4ICQECDhYKCQ8IAgYCBw0HBgQCBgcEAQcEBwMGAwECAQIBAQIEBgUDCAYCAgIBAQEBAQMCAwgJDQMHAwUGAgQHBAwGAQUIBAwCAhoJCQEBBgMCAwcFBQcDCgMCCwwFCxsCegIDAQIBAgIHAgQCCgoFEgQJDAIBAwEBAQcCBg0IBgYHDQoFBwIBAgKYBQYFBw4HBQkFEy8WCxULCxIKBw8ICxwMDBgLBw4GCwEBCAQDBgIFBgUJAwMBAQECAgEBAwIDBAICAgIBAwECAgIMBAIKCAIIBwUOBwsOBwgPCAYNBggQBwUHBQsKAgwGBQ0GBQcMBgwFCQUFCwYDCAQPCAsKAgQCAgUBAgECBQEDBQMHBgYCAgIBAQIBAQEBAgEBAwAC/6T+hgC1An8AIQF7AAATFhYXFhcWBwYGFQYHBgYnJiYnJiY3NjY3NzY2NzY2NzIWFzIGFRYGBwYWBwYGBwYWFQYWFRQWFxQGFxYWFxQGFxYUFxYWFxYGBwYWFQYGBxQWBxQGFRYGFQYWBxQGBwYGBwYUBwYGBwYUBwYGBwYGBwYGBwYjBgYHBgYHBgYnIicmJyYmJyYnJiYnJiYnJjQ3NiI1NjY3NiY3NjQ3Njc2Njc2Mjc2NjcyFhcWMxYjFhcWFhUWBgcGBwYGBwYGJyYmJyY0JyY2NxYGFxQXFhYXMjc2Njc2NicmJicmJicmJgcGBgcGBhUGFhUUBhcWFhcWFxYWFzY2NzY2NzY2NzY2NzY3NjY3NjY3NiY3NjY3NiY3NSY2NzQmNzQ2NTQmNTUnJiYnJjQnJjYnJiY1NiY3NjY3NCY1NCYnNDYnJjY1JiY1NDY1NCY1NDY1NDYnNCYnJjY1NCc0NicmJicmJicmIicmBic0Njc2NDM2Fjc2FjMyNjcyMjc2Mjc2MnoCBgMQBQgHAQQMEQkVDA0JBQMDAgIBAwkKBgICEQQFCTEFAgEHAgICAQECAQECAQICAQEBAQMBAQEDAgMDAQIBAgEBAgEBAQECAQEBAQIBAQEDAQEBAQMBAQIGAgIDAwMEAwEIAwoMBQgOCwggDQMIDQ4IAwIJBQkBAgYBAggBAwIBAgEBAQEEAgQGBwwGAwcEAwYEBhEGAwgMAQoEAgQCAQIGAQMEAgcTCggDBQIDAgELCAYBBwIGAwgGAgICBQcCAQgEAwoFBw8ICA0FBAIBAQEBAQMCAwQHEggIDggGDQUGCAQDBgIIAgIBAgEDAQEBAgECAQEBAQEFAQEBAgEBAQICAgEDAQECBwQBAQEDAQECAQEBAwEBAwMEAQEBAwEBAwICAgEDBRMSCAUMBw8KBQsCCgECCAMLCAQIEAkECAUIEwgPGAJ/AwICCQwOEgUFBgkEAgMCAgYIBgcKBQUEDwgEAgIHAQGQCgQMDwgGDAYGCwYJFQgJAgILCAUGCgUIDggFCQUWHRAWIRAYNxoFBwQSDwgIDwcEBgQDBwMRLRYHDQYFCAUGCgUDBgMDBwQMBwQFAgQHAQIICQcEBQoEAwUCAgQLBAMCBgcIBgQFBgMNBwkKAQMGAwQHAwYFAwUGCAoDAgEBAgEDAgIIBQgCBgMHGAYOAwUFBAIQAQEIAwMHAQ4YBQgHBgcKBAYBCAIJAwcNCQYJBAMEAgICAwMQCQgBAgMJBQULBAMIBAYGCQ4GAgUCAgMFAwUCAgYCBgQDCAQFCAQJFAsFCAULFAoOBgoHBAcFBQYDBQsGHRINGgwMBQIGCQMHDAUHAwEDBAMDBwMOCAUFBwMKBAIECAMFCgUIEAkFBwUFCgUHDAcOGAkGCgkSDAkRCAIEBAICBQECBgEFAQICAgIDAgICAQEBBgAAAAH/2/9SAj4CrQHMAAATFgYHBgYHBwYGBwYUFRQWFRQGFxQWFQYWBxQGFQYWBwYGFxY2NzY2NzY2NzY3NzY3NjY3NzY2NzY2NzY2NzY2NzY2JyYmJyYmJyYmJzYyNzYyMzYWMzYWNzYWNzMyNjMyFhcGBgcGBwYGBwYGBwYGBwYGBwYGBwYGBwcGBgcGBgcWFhcWFxYXFhYXFhYXFhYXFhcWFhcWFxcWFhcWMxYWFxYXFhYXFhQXFhYXFgYXFhQXFhYXFhYXFhQXFhYXFhYXFjYXFhYXFjIzMjY3NjcWBhUGBgcGJicmJicmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyY0JyYmJyYmJzYmJyYmJyYnJiYnJiYnJiYnBjEGBwYHBgYHFhYHBgYVBhYXFAYXFhYXFhYXFhYXFhcWFhcWFhcWBgcmBiMiJiciBgciJicHIgYjBiIHBgYHIiInJjY3NjYXNjY3NjY3NjY3NjQ3NjY3NjQ3NjY3NCY1NCY1NjY1NCYnNDYnNCY1NCY3NjYnNCY1NDY1NTQmNzQ2NTYmNTQ2JyYmJyYnJicmJicmJic2Njc2Njc2NjM2FjMyNjc2Fjc2NjcWNjMyFqMCBQMFCwQEAgMBAQECAQEBBAICAQEBAQEBBAQCAwYCBAUCCgILDAsFCwULBQkFCAECBQgFAgQBAQQBAhQHBQYEBAcCAQoFBAkFAwcCESMQERcMIgcOBgULBQIJBgYGDRQKBQkFBhUIDQwFAgUEAgYDDBEXCwcOBQEFAgkCAgQKCAEFBQQGAwIIAgIDAgEGBgUFCAgDBQYCBAYCBAIGAgcDAwUBAQgBBAsFAgMCBQEIBAIDCAUECgUFCAQFDAUKEAQHAwIBDSITFB4SBQgFEAcIDAcCBQICAQICAgICAwECAQIDBQMDAgEEAgEGBAIEAwEFBgMHBAEHAgUEAwICAwEEAgICAgMDAQEBAgYCBg0KCggFDQMFDAUBAgMBAgIBAQIEAgcCBggCBQoFBwcIAwIHBwQEAQIHDAcDBwIKEgoKEwsNBAgEDxwPCBQHAwcCAQcDAgYDBgYEBQkEEBYEAQEBAwECAQIGAQECAQICAQEBAgEBAQEBAgECAQMBAgIBAwMCAggEBA8NCAoTBQUIBAcOCQMHAwQGBAUMBQ0bCwIGAgMGBAQGAqoIDAgMGA4NBQoICxcMBw4HEB8OBAYFDiUQBQcECRIICBAJAgYCAgYCAgUCBgIICwcECQQJBQoFBQICBQoHBgMCAhMEBggDAgMCAgEEBQEBAQIBAgIEAwEBAQMFAwMDAwUKBQIEAwQGBAsKBQIEAQUGAw8SGAsGDAcFBAIHAgQGDggGBAoFBwQDDggFCQUECAwLEwcIBQoEAggDCQUIBQIKCwUHAQIIBAIIEAkDBwMIBAIIBwMDCQICAQIBBQEBAwUIDwoaDQgFAgIFBgIDAgcGBxQLAgQCAwYDAgYCAgUDBAUDBQsFCAEBCQEBDggFCgIBCw0FCwMCCgUCCAgFAgcCBAYCAwcCBwUDBwMEBwQNGgsHBQMHAQMFBg8eDgMGBA0mDAcNAwIBAgMFAQIEAwMEAwMBBQICBgMCAgMCAQEBAQECAgIDAQMBAwUBAgIDAQYFAgIEBAgKCAIJBAMHBAcPBxAfDgMHAw8VCQYPBwULBQkTCQsaEAgPBwYRCgQHBAUJBQ8JEggHDAcECgUJBAIREQYDBgcCBwcDAwYGDQEBAQICAQIBAgQBAgMCAQEDAQMCAAH/8AALAMQCmwCzAAATFgYHBhUUFgcVFhYVFAYHFBQHBgYVFBYVFAYHFBYHBgYVBgYHFgcGFQYGBwYUFRYGFxQWFRYUFxYWFxYWFxYyFRYGBwYnJgYHIiYHIgYjIyIGIwYGBwYmIyInNjY3NjYzNhQ3NjY3NjY3NjY3NTUmJic0JjU2JjU2JicmNjc0NDc2NjU2JzYmNTQmNSY2JyYmJyY2JyYmJyYmJyYmNzYXFjYXFhYXMjYzMhYzNjYXFhYXFjagAgQBAwEBAQICAQEBAQECAgICAQMBAQEBAQMCAQEBAQEBAgECAg4HBQwGCAIBBgIRCw0GAgQGBAULBRUEBwUGBQIDBgMKBQEIBQkBAQoBAgYCCQUCAQIBAgUCAgECAQIBAQMBAQEBAQICAgIBAgEBAgEBAQICCQUNKwwDBQEDCgcFAwUMBQQHBAQFBAwaEAUJBQcMAo0KEwsXFhEfERgGDAUFCQQIDwgIDgcGDAYEBgQFCAQLEg0OCQURBA0DChULBQgFCxAHAwYDCA4FBgkFBAkFBwEJAwIEAwEDAQEBAgEBAgEBAQcGBgMFAwYBAQECAggFCQQJBRANFzAZBQkGBwgDDhEIFSsXBQsFBQkFBAoIBAMLGw4JHQ0FDQgJDQQDBQMKDwsBBAYDAgUCAgECAQICAQUCAQMBAQIAAAAAAf/f/4EDFgHsAjgAAAE2Njc3Njc2NzY2NzYWNzY2NzY2NzYWFxYyFxYXFhYXFhYXFBYXFhUUBhUUFhcWBgcUFhUUBhcWFhcWFhcUBgcGBgcGBxQUBwYGBwYGFxYWFxYWFxYXFhYXFhcWFjMyNjc2NzY2NzY2NzY3NiY3JiYnJgcGFjMWNhcGBwYnJiY3NjY3NjIXFjYXFhYHBgYHBgYHBgYHBiYHBgYHBgYnJicmJicmJicmJicmNicmJicmNjU0JjU0NjU1NiY3NjY3NjQ1NjQ3NDY1NCY1NDY1JjY1NCY1NDYnJiYnJicmJicmIgcGBgcGBgcGBgcGBgcGBgcHBgYHBgYHBhQVBhYHBgYHBhYHFAYVBgYXFjYXFhYXFjMWNhcGBiMiBiMGBgcGBgcGBgcGBicmNjc2Njc2Njc2NDM2NzY2NzY2JzQmNSY2JyYmJzQ2JzQmNTQ2JyY3NjQnJicmJicmJicmBgcGBgcGBgcGBwYWBwYGBwYGBwYGBwYGFBYHBhQVBgYXFhUWFhcWFhcWFgcGIgciJgciBiMGJgcGBiciJiMiBgciJgciBicmNjc2Njc2Njc2Njc2Njc2Njc2Njc2NDU0Jic0JjU0NjU2Jic0JjU2Njc2Nic0JyYmJyYmJyYmJyYmJyYmJyYmJyYmNzYWMzIWMzI2FzIWMzI2MzIWMzI2NzI2MzYyNxY2FxYGBwYGBzY2NzY3NzY1NjY3NzY2NzY2NzY3Njc2MjMyFhcWFhcWFxYyFxYWFxQWFxYUFxYWAYgFAgMNCAUKBgQIAwoDAgsGAwULBhUcCAsBAQYEAggCBAYGAgEEBAIBAQMBAwEBAQQBAQIBBgMBAgICAwEEAgIDAgECBwQFAQIFAwgFAwcLAwYCBAkFCgsFBwUFCQIHAwYBAgIDAxYNBgYCDgsDAhAJEwMIBQMEAw8hBgcDAQUEAwEFAgMJBQUTCAsHBA0FAwYTCxAMBwoGCQkEAwcCAgIBAQIBAQIBAQEBAQECAQEBAQIBAgEBAQECAQICBAMGCgcHFwcDBwQDBwIFBgQFCgICAgIGAQEBAgIBAQQBAgEBAQECAQICBAIBBwIKBgILBwoJAgIGBwYDAgQJBQsZDAwbDQsUCgwFAgIEBAMJAggBBQUGBwQGAQECAQMBAQMBAQECAgEBAQECAwgDCAIGCAYGEwgIBgIQDwcICQYBAgUBAgIDAQMEBAMBAQIBAgIBCwUEAg4QCAcBAQIJBAUOBQQIBQsaDgoSCQkRCAUJBQsVCQQFAgMJAgUKBQUOCA0HBQ0RCAQFAgIBAQEDAgECAgEBAQEDAQEBAQUFAQgCCAMKAwIDCAUDBgMECQQCCAIBCAIDCAIFBwQDBgQECAQEBwMGDQgHAgIIDQcFBAUCAwEGBAEGBQIDBg4IBgIBBwcGBA4HBQQKCQYCDAQICwUKBgIEBgcDAgIDAwYCAQEBAwGLAwUDCgkFDAkEBwIHAQEGAgECAgIGAwMDAQEEAgUCBQsFBAcFCAYFDQYFCAUKEAgIEQgIEQkJEQgJEggSIhIGDAcNDgQHBREQCBEQCgkSCAsEAgUDCAIBAwIBAgMBAQQCAwICAwIGBggEAgUMBQUKCgEGAwUHBQMCCAoJBgYFCwQGAQIKFgsECQUFBgQEBwUFAQEEAQECBAEBCAIIBAQGAggHBwkVCwsUCgsWCwoTCAUIBRANDgYEBwQIEggIDggFBwQEBgQKGg0HAgIGDQYMFQsFBAQFBQgOAgMDAQQCAgQCAwcEBQYDAggEDAMIBQQGAwQIBRgfEAQIBAoTCggSCRcyFQQBAgYCAQYEAQUFAgIBAQECBQECAgEBAgMHAgICBAIFAgIFAgIDBAcHDg0HBAcEChMLCBQKBQoFBQkEBwwHHR4OGgsUDAUGBQEFAgIDAwQDAgkSCAkOBQQBBgcCAwQDBQwEEi0wMhYFDAgMDwUKAQUBAgwIBwUDAQIBAQECAQIBAQEBAQIBAQIFAwYEAgIBAgIJAwQFAgYQCAQFBQQQBQgQBw0WDwQIBAMHBAsXDAQGAggQCAkSCAoNExUIAwUDBwMBAgEDAgMCAgECAQQDBQEBBAECAQEEAQECBQEDAgIGAxMyGQYEAwMIEAoCBwEBCQUHBAYFAgICAQMCAQMDBAIDBgYBAgYCBgkFBQoFBQgAAAAB//P/YAJTAgkB4QAABQYGBwYGFxYyFRY2NzY2FwYmBwYGJyYmNzQ3NiY3NzY2NzYWFxYWFxYWFxYWFxYUFRYWBxQGBwYUIwYGBwYiBwYGBwYGByYxIiYnJiYnJiYnJicmNCcmJicmJicmJicmJjUmNjUmNjU1NjY3NjQ3Njc0Jjc0NjUmNjU2NDU2Njc2JjU0NjU2JicmNicmJicmJyYmBwYGBwYGBwYGBwYGBwYHBgYHBgYHBgcGBwYGBwYGBwYGBxYGFRQWFxQGFxQXFhYXFAYXFBYHFhYXFhYXFhcWMhcWFhcWFgcGJiMmIiMmBgcmBiMiJiMiBiMGBicmNjc2MzY3Njc2NzY2NzY2NzY0JyYmNTQ2NyYmNyY2NTQmNSY2NSYmNTYnNCcmNCcmJicmJicmJyYmJyYWMzI2MzYXMjI3NhYzMjY3NhY3FgYHBhQHBhYVBgYHBhYHBgYHBgYXNjY3NjY3NjY3NjY3NjY3Njc2Njc2Njc2Njc2Mjc2Njc2Fjc2MjMyFjMWNjMWFhcWFxYWFxYXFhYXFhYXFhYXFgYXFhYXFhYVFgYHBhYVBgYHFgYVFBYVFAYVBhYVBgYVFBYVFBQHFRQGFRQWFRQGFRQWFQYXFgYXFhYXFhYXFjc2NjcmNjc2NDU2JyYnJiYCCgMFAgMDBQcBBQgEBAYFAQYCCBoNAgMCAgEBAggDBAUIDwcHDgUCBQIEBAICAQECAwIEAQMIBAYDAgsHCQIHAgwJDggLBgUFBwUJAgYBAQMCAgMBAgMBBgYBAwEBAQEBAQEBAgEBAgICAQIEAQECAQEDAQIDAQgQDQkBDhEMBgoFBgwIBQkFCgQEAwYCCAMCBQICBgYGAgECAgcDBgwFAgICAQEBAgICAQEBBAICAgEECwYDBgQGAgYIAQkEAgYPBwQIBA8pEg8WCggCAgUJCAsNBQEJAgkDCwYHCA4BDAgDAQEBAQEBAgQBBgEBAQECAgIBAQICBgUCAgcCDAcFBQcIEgUHCwQFCAUVFgUFBQcOBwUIBQoVCwIEAQIBAwEBAgEBAQEBAgICAgEEAwIECgQFAgICBQMHDwcHAgIGAgQFBQcDAwoDAgUIBAIGAwUKAgQIBAQIBAMHBAcGBw0GCQkBBgMGCQQCAwIGAQICBQIBAQIEAQEBAgcBAQEBAgEBAQIBAQIBAQECAgEDAgEDAgICAhAjDA4IAQUCAQMHBQUIDhICBwMHDggIAQIFAgICAgsBAgYKBwULBQQKBQkFDAUKAgIFAgIFBAEHAgUGCAUNCQgNBwIFBAoBBAgEBgEIAwIBAQEBAwIFAwMDBgUKAwkFAgIGBQQGBAUPBhASCwsXCwcKBRcDBQMKDwgKDgYMBgMFAw0MBQgSCA4dDggPBwQHBAsWCgMDBRcQCAQBBQICAgICAgUCBQgFBwcDAgYDCQQCBAIDBgcGAwUCBAYECBIICA8KBAgFBQgFCAoNGQ0JFAkIEQcKCAUEBAMDBAICBQQEBwQCBQIBAQEBAQIBAgEDBQYBAgQEBQYCCAMGBwMFCgYNJBEDBwMHDQYLGhAKBQMEBwMLEw8KFQgGBxUSCgYCBQcFCQUDBAQHBQUMAgEBAQECAgIBAQIBBQYEBQkFCwUCBQcFBgoFBAgFChIJAQUCBQoFBgECAgcDCBAJCgICAgIEBwUEAgIHAQIHAgEBAQECAQEBBAEEAQMGBQEGAQUCBQoFAwQGCwkFBgoFCgUCDR0OCBEIFikYCgICBQYECA0HBQgEAwYDBAgFBQcFDwUJBQUMBgYOBgMHAxIUCBQHAwYDBAYEEwQBBwcFCgUCBwMWDwsDBAEAAAAAAgAeAAMBygIJALIBjQAAEzI2MxYWFxYWMxY2MxYWFxYWFxYWFxYyFxYWFxYWFxYWFxYWFxYWFxYWFxYXFhYHFhQHBgYHBgYHBgYHBgYHBgYHBgYHBgcGBgcGFAcGBgcHBgYHBgYHBgcGJgciBiciJyYmJyYmJyYmJyYmJyYmJyYGJyYmJyYmJyYmJyYmJyYmJyY2JyYmJyYmJyY0JyYmJyY2NzY2NzY0NzY2NzY2NzY2NzY2NzY2NzY3NjY3NjY3NjYHBgYHBgYHBhQVBgYXFBYVFhYXFhcWFBcWFhcWFhcWFBcWFhcWFhcWFhcWMhcWMxYWNzY2FzY2NzY3NjY3NjY3NjY3NjY3Njc2NjU2Njc2NDc2JicmJyYmNSYmJyYmJyYnJicmJicmIicmJicmJicmJyYmJyYmJyYGIyIGBwcGBwYUBwYWBxQGFRYWFxYWFxY2NzY2NzY2NzQ2JyYmIyYGBwYWFgYHJiYnJiY3Njc2NhYWFxYWFQYGBwYGBwYGBwYjBiYnJgYnJiYnJjQnJiI1JiYnJiYnJiYnBgblAQoBCAUCBAoFBAYDBQkFCRMJBQgEAwYCCQcEBAgDAwICBQMCAgMCAwIBCgYCAwMBAgIDAwUFAgICAQIFAgICAgYIBAQCAgQCBQIDCgUJAgoFCwwGCgQDDAUFBwMCCgkRCAUKBggOBgYKBQMHAwkCAQkDAwsFAgIGAQIBAQMCAgQBAQICAgIEAgEBAQMCAwUDAgEDBQEHBgQIAwIGBgICBAICBgIHAwkWCAgRCQ8KXAUGAwIDAQIBAwIFBQECBQEKAgkHAgsHAwgBAwgEBAgDBQkCBAYCBgUFDQUIDAcCCgIJAgQIBAYEAgMFAgICAgcBBAMEBQICAQUEAgcIAwIDBAMCBQIFBAgEAggDBAECAgICCQIBDQMECAMIDwUFBAQLBAMPCQQHAQQBAQEBEAQHCAUOEwkGDAMDAgMJCQMOBgUNAgECAgMGAwUDBQYBAQkKGBYRAwEFAwQDBQkKBQwGCAUDCAUECQIKBAEGAQgCAwsEAgECAwUDAgUCBgMBAgEBAgEBAQICAwYCAgICAgIFCAUEBwMFCgMIBwUECAULBAIXIgwkEQ4dCwUOBQsKBQkCAgUHBQMFAwoKBQgDAgQDBgQCBAgFCQIEAwgEAgQBAQIBAwECAgMCAgQDAgQDBQQCAgQCCAEBBwUCCQYCAwUCAgYDBAUFBwYCBQoFCxUNAwcCBxIIGSYPCAwGCgUCDg4ICwYCCQUDBAgCAgECBgIJDQgDBQIFBmcKEwoFCgUGDggTLhQHEAQVFwgMAQgDAgUFAgsIBAcCAgMHAwQHAgYFAQUBBQIDAQEHAQQFAgcEBggFCgYEBgcCAwUCCgILAgIOCwUGDAYSDAkWEgsBAQsTCQUNBQ4HGAUECAUHAgMGAgQBAQUBAQMCAwYBAQECAgkGBggIAgYIBAUHBBEbCwQKBAkEBQIGBAIHAg4ZCgMEAQMHBQwMCQICCAQHCAsRBwIBAwgHBQoFFRMHCw4FBAUCBQECAQEBAQcBAQUCAgsCCRILCgMCCxcLBAcAAv/X/rMB5wIMAXoB8wAAExQGBwYGBwYWBzI2NzY2NzY2NzY2NzY2NzY0NzY2NzY2NxY2NzY3NjY3MhY3MjYzMhYXFjIXFhcWFhcWFhcWFhcWFhcWFxYWFxYiFxYWFxYWFxYUFxYXFgYXFBQHBgYHBhQHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBiIHBgYjJgYnIiYnJiYnJiYnJiYjJiYnJiYnJiYnFgYXFhYVFAYVBhQXFhYXBhYVFAYVFgYVFBYXFhYXFhYXFBQXFxYWFxYWFxYWFxYWFQYGIyImByIGIwYmIwYGBwYiIwYGBwYiBwYiBwYGJzY2NzY3NjY3NjY3NjY3NjY3NjY3NSY2NzQmNzQ2NTQmNTQ2NTQ2JzQmNzQ2JyY1NDY1JiYnJiY1NjY3NDc1NDY1NiY3NDY1NDYnNCY1NDY1NiY1NDYnJjY1JjUmJjU2JicmJic0NjU0JjUmJi8CJiYnJiYnJiInJicmIyYmJzYWNzY2NzYUMzY2NzYWMxY2MxY2FyYmJyYmJyYmJyYmJyYiJyYGIyImBwYGBwYGBwYGBwYGBwYHBgYHBgYHBiIHBhQHBgYHBgYHBgYHBhYHBgYXFBYXFhYXFjIXFhYXFhYXFhYXFhYXFhYXFjM2Fjc2Njc2Njc2Njc2NzY2NzY2NzYmNzc2NicmJjcmJqMGAgQFAQEBAwUEAwsOBwMIAwIGAgMHAwgBCQEBAgYCAwYDBQgGCgYCBwMDBAQDBQQDBwMXFAoJAwUCAgMEAwQCAQkEAwIBBgEBAgQCAQMCAgEDAQIDAQEBAQIEAQQJBwMGAwUEAQUMBQcOBQIEAwIHAw4HBAUKBQUIBAoFAgMLBQ8GBAoQBwcCAQsFAwsGAg8KBwEBAQEDAQECAQIBAQMBAwIDAQIDAgECAQEDAwUIAwwGAwUECQkEDAcHDgcFCAUEBwMGDAUIEAgIEwgDBQMJBwUFCQUEBAIICAIGAwIGAgYICAEEAgMDAQEBAQIBAgEBAQIBAQEBAwIBAwECAQEFAgEBAQIBAQIBAgEBAQEBAQEDAQIBAgEBAgEBAQEDCQoKCQYEDAICAgcDCgQJBgIEAQYNCAUJBQwBCg0FBRUFDyANDAnrBgcECgYEAgQCCQYCCQICDQ0HBQgDAwwECQECCQMCAgYCBwoCBAICBgIHAgEIAQoLAgMBAQECAQEBAQECAgYBAggCBQMCBAcDCBEIAwUDBQ0FDg0EDAgMBAILCwMLBwQCBAIJBgICAwMIAgICAgUCAgIBAgECBQIKBQUEDxULESAPCAMMDgYCBQQCBgMCBQIHAwEEAwECAgMBAwECAgIFAgEBAQMBAQEHDwgHBAYGAgMFBQgBARAEBgMCCQECCQMDBQUFBQcRBQ4XEAcIBgQRCAcIAxQkEggKBwsCAggNBQUFAgIDAgEEAgQEAgICAgUBAgEFAwUCAwUGBAQBBwECCAQCChADBw4IBQkFBAgFDCAPBQ0FCgwHCAICDAMCAxgGCxkLCAUEBQgFDAkNBQYIBQMIAgoBBQQBAQECAQIBAwEBAQMCAgEDAQIFAgoFAgYEAgYCAgUCBQ4EAwYDBQQDFAkVCQoSCQcMBwUMBQMGBAYNCQkSCwcMCAkCAwUDAwgFBAoEBQUFBwQRBg4HDBIIBQsFBQcEAwYDAgYDBQ0HAgsGDAUCDQYGCwUNCwcFCwYDBQMDBgINGAUGBQMGAgUCAQIBBAMDAwQEBQEBAQIBAQIBAQECAwECAQOHCgcFDQcEAgUCBQEBBAECAQEBAQICCAIBBAMCAgMCBQgCBAICAgIKAQgCAQkPDBEkEwcNBgoTCgkUBwIIAgUIAwcBBAcECA4GAgQCAwcCBwQBBQMBAQYHAggKBgQHBQ0SBgsGBgcHCBUIHhUrFAsUCwQHAAAAAAIAH/6pAg0CAgFEAb8AAAEWBgcGFAcGBgcGBgcGBgcGBgcGFhUUBhUUFhcGFwYWFwYWFQYGFxQGFQYXFAYVFRYWFxQGFxYWFxQWFxYUFxYWFxYUFxYWFxYWFxQWBwYGBwYiByIGJzQ2NzY2MzY2NzY0NzY2NzY2NzY2NzY2NTY2NzY2NzY2NTQmNTYmNTQ2NTQmNzY2NzQ0NzQ2NTQmNyY0NQYxBgYHBgYHBwYGBwYHBgYHBgYHBgYnIicmJicnJiYnJiYnJjQnJiYnJiYnJiYnJiYnJiYnJjQnJiYnJjQnJzU0NDc0NzY2NzQmJzY3NjY3NjY3Njc2Njc2Njc2Njc2NzYzNjY3NjY3NjY3NjYzNhYzMjYXMhYXFhYXFhYXFhYXFhYXFhYXFhYXFhYXFhYXFhYXNjYnJjY1JiYnJiYnJiYnJjYzNhY3NjYXMjIXMhYzMjYHNCY1NDYnJiYnJiYnJgYnJiYnJiYnJiYnJicmBgcGIgcGBgcGIgcGIgcGBgcUBgcGBgcGBgcGBwYXFhYXBhcWFBcWFhcWFBcWFBcWFhcWFhcWFhcWNzY2NzYyNzY3NjY3Njc2NzY2NzY2NzY2NzY3NjQ3NjY3NjY3NjYCCwIEAgkBAgcDCgwCAwIBAgIBAgIEAgECAgIBAQEBAQMBAgICAwEBAQECAQECAwECAgECAgEBAgYCBgsFBwEcOR0PKBAOCAQGBAIGBQEFAgcBBwIBBQ4FAgQCAwICAQECAgEBAgEBAwECAgECAQECBgMCCwUCAQIDAhEIEQkTDgUQCAgVDAkUCwgKBRAFDwoEAwYBAQYCAwoEAgICBAIBAgECAgMCAQEEAgIBAgMCAQEDAQEBAQIBAwICBgICAgICAgkGAgMJBQsECAQCBgMGDggHEAcFDAcDBgQEBwMHEwkFBgQFDgcFBQMHBgQCAwIGAwIFAgICAwICBAIFAQIDAQIDAgIDBAYDAQMIBAwWCgQPCAQPBgUJBgcOdQICAQEGBAYNBQgDAQsGBAQJAgwRBwUICA0EBAkEBAgFBwQBCQUCEw8LAwEEBQIFBAIFAgMBAQIBAQIGAQICAQECBQEGBAMFEAYMDAYNAgwIBQwIAwsICgYCBgQIAwcJBQUJAgcDAgUEBwEFAwICAgECAQH+BQYEBQIBAgQEDAkFBgwGBg0HDBsPDRwLCA4ICQILBQULHQ0LHQ0DDwUUEggQCCMcNBwOIA0IGQkFBwUFCgMDBAMDBgIFCQQJEQgEAQUDAgICAgQDBgICAgUFBAMHAQIKAQEFBwcDCAUIAQEDCQUJEgwTIREMAwIWJxIFCAUIEwoEBQQDCQMFCAMJEwgUEA0KCAEBAgUCEQoRCA0NBQgEBAgDBAQCBgIFAwkIAwIEBQIHAwIHEQkDCAMKAgIEBwQEBgIDBwQIBQUCBQQTDAsTCwoEBQgFAwUECgcFEAcEBwQGCAIFAw0KBQULBQoEBQIDAQICAgMFAQECAQICAQQCAQMCAgQCAgMECgYFAwQCCAMCCAECBQQCBgQCCRoMBwMCAwYDBgkFCQICCgICAgEBAQEBAgXmBg8HCRAGBAgFCRAICgECCgYCAgQCCQkEAgICAQECAgICAgMBBgINFgoEBQIIBgUIEgkTFhoUBQkFDAgKBwIGCQUECAMKAgIICQQJEwMCAwEBAQEBAQMCBgIJAwIFAgQCBQ4FAwcECwMCBwQJAgIHBgQDBQIWGgAAAf/sAAEBuwIQAXoAAAEmNjc2JyIGBwYHBhYXFhY3NjY3NjY3NjY3NjYnNCcmNCcmJicmJicmJicmJgcGBgcGIgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGFhUUBhUWBhcWFhcUFBcWFhcXFhYXFhYXBgYHBgYHIgYjIiYnIgYnIiYnJiInJiYnBiYnNjY3NjY3NjY3NjY3NjY3JjY1NCY3NDY3NCY1NDYnNCY1NDY3NjQ3NiY1NiYnJiYnNCYnJiYnJicmJicmJicmJicmJicmJyYmJyYnJiI1NjIXFjIzFhYzMjYXMhYzMjYzMhYzMjYzMhYzMjIXFgYHBhYVFgYHBhQHNjY3NzY2NzY1NjY3NjY3NjY3Njc2Njc2Fjc2NhcWFhcWFxYWFxYWFxYWFxYWFxYWFxYGBwYWBwYGBwYUBwYGBwYGFQYGBwYHBiYHBgYnJiYnJgYnJiYnJiYnJiYnJjYnJjc2NDc2Njc2NjU2NzY2NzYXFhYXFhYXFgYHBgYHBgYBQgcJAgMGCQ0FCgQFBQgOGggECgMDCAMCAgEDBgICAQEHAQEGAwIDAwIEEAgOCAUECgUFCAUGCgMHDAcIAQICAwIEAgECBQMGBQMCBgECAwECAwIBAQECAxYICwgFAwUMAgwZEAgPCQMIAwUIBAcOBgMGAwUJBAgUCAQFAgkHAgoFAwkFBAcDAggEAwIDAgEDAQIBAQEDAQECAQEBAwEBAQECAQMFAgECAgMDAgMCAgUEAgUCDQYFCgUPAgoFAgoEBAgCBAcFBAgFChQKAwcDBAkEBAcEAgYDBRAFAQQBAQEBAQIBAQYCAQwCAwEFCQQDAgYDBwcDCQkEDQcJBAMGEAwFDAYDCAQHAgsLBAgPBAIBAgcDAQIBAgMBAQEDAQEBAgYCAwUICQYFBAMDBgUBBwQKBQMGAg4KBQUFBQcTAgIBAQICAQEBBAEDAgIICAcLDAkEBwQCCAICBwQCAwICAwFcBQcGDAoJBg8KFAYFBwgDAQwFBAsFBQMCERALBQgDBgIJAwEICQMEBwIDBgIDBAICAgIGAgQEAgQOCAoEAgIGAgQFAgQMBQwRCgYKBQsYCwoCAhlBFwULBgYMAwgRBQgEAwIDBggFBAIBAgEBAgECAgIBAgICBAIDBwIGAgIHBQMFBwQFAgIGCAMECQUCBgMDBwQEBgUGDggDBwMFCQUJEwUCBwQODgYGDQcFCQULHA0DCAoPCQULBAIEAwIEAgUEAgMCCQIIBAQBAwECAgECAQICAQQIDAcLFgoIDwgDDwYIAQIZAgUDCQQLBwQDCAQICQQHAwUGAwUBAQIFAgEIAwIEAgECCggEBQoFAgYCChEIDhYLCwUCAwUDBAYDBAcEBwQEBAkFBQICAQEBAgEBAgEBAQEGAQIBAwICCAQDBwUQDgQJBQMGAwgBAQYGBgMCAQEBBgICAwQJDAUDBgICBwABABn/4AGsAicBlgAAARQGBwYGBwYWBwYGBwYGBwYGBwYGBwYHBgcGFAcGBgcGBgcGBwYGJyY2NzYmJyYmJyYmJyYnJiYnJiYnJiMiBiMGIgcGBgcGIgcGBgcGBgcGFBUUBhUUFhcUFhcWFhcWFhcWFhcWFhcWFhcWFhcWFjMWMhcWFhcWFxYWFxYWFxcWFhcXFjUWFhcWBhcWFhUWFBUWBwYHBgYHBgYHBgYHBiIHBgcGIwYmIyIGJyImJyYmJyYnJiYnJiYnJiYnJgYHBgYHBgcGBwYGBwYGJyY2NTY2NzY2NzY2NzY2NzY2NzY2NzY2NzY0NzYmNxYGFxYWFxYWFxYWFxYWFxYWFxYWFxYWFxY2NzY2NzY2NzY2NzYxNjY3NjQ1NiY1NDY3NCYnJiYnJiYnJiYnJiYnJiInJiYnJiInJiYnJiYnJiYnJiInJiYnJiYnJiInJiYnJiY3NDQ1NzY2NzY0NzY2NzY2NzY3NjY3NjY3NhY3NjY3NjY3NhY3NhYzMjYXFhcWFjMWFhcWFhcWMhcWFhc2Njc2NzY3NjY3NjcBrAcCAgICBQEBAQUCAgECAQICBAYDAwEBBAEBAQMBAgMFBAQCAgUBBQECAwIEDQsCBQIGAgcBAggFAgYJBAkGDhoJAwcFBwMCBAUCCgYCBAEDAgMBAgIBAgcDCQIBAwkDDA4FCgQCCAQCBAcEBQsGAwgECQUMAgIPBwUDCwoGAgIGAQECAwEBCAUFBAgGAggEBwMCCgUCDAYKAREOCAUKBQ0aCwgQCQMIBQUEAgYDAwUFBgMDAgQCCAQDCAMEAgMEAwYCAQIBAQICAgICAQICAgICAwUFAgYCAQEBAQUKAgIBBAICAwMCBQICAwIGDwgHCgYFDwcOGA4GDAgDCQMDEQMGAQMBAQEBBAECAQEBBAkEAgkKCwsbDAwGAgQGBAMIBAQKBwgMBwQDBAQGAgIGAggNBAUCAgcHAgQGAQECBgIEAQUGBQEGAgMFAwkGDQoDAwUEBQcEDAQCAwYDCQsHCBEKERYLAgEDBwUFBgIGAgIEBwcEBgMHCAcBBQQCBQMCJwgNBwUJBQcDAgMJBAIKAwQGBAkSCggHBAgDCAMEBwQGCwURCAIHAQwJBggTCxc0EQIGAwgDAwIBAwIBAwMBAwIFAwYBAwMCDwUICA8JAwYDBw4JCgYDAwYCAgUEBgMBAgMCBgQCBgECCAICAgIDAgECAQMCAgMBBgEEAgUGAQkHAwsMBgYLBggNCCQZDwUFDQYECAMEBAIEAgkBBAMCAgEIBAIIBQMGAwQFAggDBAkDAQcBAgQCDAYECAQHAgcHAgEKAwQIAwcFAgcJBwULBQgPCBEfEAgNBwQJBAMIAhAYCQcPBwgOBgUIBAQIBAsSCAIIAgICAQIBBgIIBAIEAwMKBQoIBwQECAUKBQIFCwUDCQUICgUHAgIHCAIDBAMDAgEEAgEBAgECAgQFAwECAwIBBAIHBgMGAQkNBQgNCgcNBwsGDQYGBQIGDAMFBgUGAwQLAggEBAECAQEHAgMCAQEBAQQCAgIEBwIBAQECBAMDCAEECAMBBgMGCwoCCQUCBQkAAf/N/+MBUwLOAX0AABMWBgcGFAcGBgcGFgcGBgcGBgcUBgcGFAcWNhcWFhcWFhcGBgcGBgcGIwYGBwYGJwYWFxYGFxYGFQYGFRQGFxQWFxYWFxYXFhQXFhYXFhYXFhYXFhYXFhYXFhYXFjIXFhYXMjI3NjY3Njc0Njc2Njc2Njc2JicmJicmJicmBgcGIgcGBgcGBwYGFQYWFxYXFhYzMjY3NjU0JicmJic2MzIWFxYWBwYHBgYjIiYjJiYnJiYnJjI1JjY3NCY3NDYnNjY3NhYzNjYXFhcWFhcWFhcWFBcWFhUUBgcGFgcGBgcGBgcGBgcGBwYiBwYGBwYmByIGIyYmJyYiJyYmJyYmJyYmJyYnJjQnJiYnJiY1JjY1NjY1NCY3NiY1NDY3NjQ3NDY1NiY3NDY3NiY3JiInJicmJiMmJicmNjc2FjM2FjM2Nhc2JjU0Njc1NCY1JjYnJiYnJiYnJicmJicmJicmJicmBic0NjcWNjMyFjcyNjM2MjM2NjMWFjc2MTY3NjabAQQBAQIBAQEBAQEBAgICAwICAQEDESMUBQYEFCUSAQgFCBIKCgkOHw8IDwsFBAEBAgICAQEBAgICAQMFAwICAgIBAwICAQECBgMIBgQDCQQEBgMCBgMFDggFAwUFCAYCBwYCAQECAQIBAQMBAQgCBAcFBxAGBgICBgUBAgICAwIBAQYJAwcFBAoCBQUCAwkBBAwEDAIFBAIDCgUPBAMHAgUIBAQGBQQCAwIBAwEHAQQFBAQJBQgPCA4JBAgFCgQCAgICAwIBAQECBAMDBQgDBQcFFBMDBQMDBgIFCAULBAIKEwgFBQUDCQQGBAEDAwIHAgYBAwgCAwcBAgEBAQIBAgEBAQECAgEBAgEBAgIIEwoDCAMFAwIHAwoHAwMJBAgFAggVCwQBAQEDAgEBAgYICQEBEQkFCAYFCAYDCAYOCgMHAwgDAQgRCAIGAwMIAwoTDQgMCAsNCwQMAsoFDQYEBwQECAUIEggHDAYLGA0HDAcLFQkBAgIBAQECAQMFAwIDAQICAgICAgQCDB0QCBEIDAYECRULDxsJBAgFFC0WDgoGDwYDBgMDBwIDAwMFBwICAQICAwEBAQEBAgIDBgQHBwUIBgQKBQUJBQkUCQYNBQUJAgMBAwUBBgMCAwoDCAIJEwkDAwIDBQMMAwQGAgIFBgUCAgQTCA0HBAUBAgMCAgICCwELDAUFCQULEgsBBAEBAgEFAQIFAgoFCAcCAgcEBwwKBgwIBwwHEgoICBAHAgUCCgUBAgECAQEBAQIBAgIBAQIGAgYBAQQGAwgGCAMCCwgDBQwIBAoFCxEIFykUDQgEBw4ICBAHBAcFFCYRCA4ICgoEBQIBAgEBAQEBCQIBAgEDAQECAQcNCAkRCg0EBwUIEggNFgcEAgEGBQIBAgIDAgEBAgUBBQIEAQMBAQIEAQIEAQEBAQECAQEAAAH/8f/nAkUB9wFXAAATBgYHBgYHBgYHBgYHBgYHBgYHBgYVBgYVFBYHFBYHFAYVBhcWBhcWFBcWFhcWFhcWFxYWFxYWFxYyFxYWMzIyNzY2NzY3NjI3NjI3NjY3NjY3Njc2Njc2Jjc2Njc2Njc2NjU2JjUmNSY2NzQmNTQ0JzQmNTYmNTYmNTQ2JyYmJyYmJyYmNTYWNzI2MzYyNzYWMxY2FwYHBgYHBgYHBgcGBgcGFAcGBgcGBgcGFAcGFgcGBgcVFhYXFhYXFxYWFxYWFxYXFjIXFjIXBiIjIiIHBiYjBgYnJiY1JjY1JiYnJjUmJicGBgcGBgcGBgcGBgcGBgcGIgcGBiMGJicmIicmJicmJicmJicmJicmJyYmJyYmJzQmJzQ2NyY2NzY0NzQ2NTYmNzQ2NzQmNzYmNyY2JyYmJyYnJicmJicmJiciJicmJjU2FjMyNjM2Njc2NhcWNjc2MjMWFt8DCwUDBQMJAgEHCAIJAgIFAwIBAQECAQECAQIBAQEBAQECAggDAgUDBgMCCAQIAwIFAwIPFwcDBwMGDwUGBgcDAQcCAQIGAwIEAgsFBAIBAgEBBgEBBAEBAQEBAgIBAQEBAgIBAQEBAgIBBQMFAwEHCggVCwQHAwUJBAgQCAwXCwQCBAIDAQECBwICBgIBAgIDAgQDAgQDAgECAQUBAQQCBQgEBwkSCgcMBwkPDQYFCQoBDx0OCRMJDQYCDBsOBAICAgICAQICBAMDAgIFCAUODQYECAUFCggNCgUIEAgJFAgEBgICBgMFCwUJBAIGDgYIAwcDAQMEAwMBAQEBAgIBAgMCAQEEAQEBAwECAwICAgQFBggMEQMFBAQJAwUIAwMHBQkFAwYCBQkGBw0KCQICBhEEIDkB7wYEAwIFAgUDAQkIBgwHBwwQCAUMBwUKBQYMCAgSCggNCB8YCxMMDwsFBQgFAwYDCAMCAwIHAQEFAQcMAQQFAgMEBgEHAQIGAgIGAgwKCQECAwgFDQYFEhQJCAsLCwIBCgQHDggHDggMFQsCBwMJAgIIAwIIDgcFBQUJAQIJCgUFAgIDAQEBAQEEAgsGAwgCAgYDCwYFCgcDCAQDBQIHBgQLIA4IGgwMFg4RCA4IFzEXCQ0KBQMGAgMDAwIGBQsBAwECDgEMDgYFBwQEBgQKAgcNBQIJBAYNBg8NCAIDAgMGAgQBAgYBBgIBAQIDAQIFAwQCAQQIBQMDCgICAwgCCA8ICxMLFTEUCBUIBQgECA0HCA8HBQgEDgwEChIIBgwDBQQJBgIDAgIDBAMCAgQFAwIBAQIBAQIBAQIBAQEBAAAB/+7/+AIMAfsBTQAAEwYGBwYGBwYGBwYGBwYGBxYWFxYUFxYWFxYUFxYWFxQWFRYWFRYXFhQXFhYXFhYXFhYXFhYXFhc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc3NjY3Njc2Njc2NicmJicmIicmJicmJyYWMxY2MxY2MzIWMzI2NzIyNxY2MzYWMzYWMxY2FxQHBgYHBgYHBgcGBgcGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYHBgYHBgYHBgYHBgYHBhQHBwYUBwYHBgYHBgcGBgcGBgcGFAcGBgciNicmJyY2JyYmJyYmJyYmJyYmJyYmJyY0JyYmJyY0JyYmNyYmJyYmJyY0JyYmJyYmJyYmJyYnJiYnJiYnJiYnJjQnJiYnJicmJicmJicmBicmIicmNjMWNjMWNjMyFjM2NjcyMjc2Njc2Fjc2NjcyFhcWFuQMBgYOBwUFDAYLBAMKBgMDAQQEAQIDAQICAQIBAgECAQIEAgMEAQIBAgICAgMHAwYHBQYCBAgEBAcGAggEBAYFAgMCBAECAgECAgICAgYCBQQFAwQIAgICAwQFCggEBgICAwQEDgMGBgISEQgKBQIEBgUNGQ4JEgkGBgMFDAUIAwIFCwIKAgcEBAYFCQQEBwQHCAIFAwMJAgIBAgIHAwUGBQEBAQMHBQIFAgQBAgMDBgIBBAYEAgQCBgEIBQEICwMEBAQCAggCAwcEBwEHBAIOAgEIBgMBAQIFAgEBAQIBAgIGAgEDAgEBBAECBAEBBAEDBQMDAgECAgEEAgMFBgEDAgQCAgUCAgUCAwMBAgECAgIEAQIBAgIMBQcEAQUHAgUBBAYEAg0SCAULBQgPCAcPBwQHBQYOBgcMBgULBQYLAfMLAwIFAgICBQMEBAMKDQYUJxQKCAUHDAYGDAcCBQQIAgIDBgMIBAYEAgoIBQUJBQUJBQoSCRURAQsFCBAIBxAHCBAICBAIBAgFCwYEAgYEBAkEBQgGDAkSCBERBAgFCxcOCAICBQECBQIGAQwBAQMBAQECAQIBAgECAQIBAgYKAgQBAgIGAgQCAgcDBwQCBAICCAQECQUFCQULGAsDBQMLGQsFCwYGBAUNBQkDAgYKCAUHBQkGBQoJAwISEAUJBQYEAwkFBQsGCgIBCgMCBgUOEQgDAgUPBgIHAwUJBQcMBgMHAwMIAwYIBAkHBQEHBAUKBQkBAQIHAgMEAwgRBgULBQoEBQ4GBQgFDAEBBwcCBAQGCgUFDAUFCAUHAQEFAQgFAQEBBAIBAQEBAQIBAQEBAQIBAgEBAQAAAAAB/9L/7ALEAg0B2gAAAQYUBwYGBwYGBwYGBwYGBwYGBwYGBwYUBwYGBwYUBwYWBwYGBwYGBwYGBwYVBgYHBgYHBhUGFgcUBgcGFAcGBgcGBgcmBiMmJicmJicmJicmJicmJyYmJyY2JyYmJyYmJyYmJyYmJyYmJyY0JyYmJyY0JwYGBwYGBwYGBwYGBwYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgcGBwYGBwYUBwYGByI2JyYmJyYnJiYnJjYnJiYnJiYnJjUmJicmNCcnJiYnJicmJicmJicmJicmJicmJyYmJyYmJzYWMzYWMzY2NzYWNzI2NzY2FxY2NzI2MxYyFwYmBwYGBwYGBwYHBhYHFAYVFBYXFhQXFgYVFhQXFhYXFgYXFhQXFhYXFgYXFhYXFhYXFhYXNjY3NjQ3NjQ3NjY3NjI3Njc2Njc2Njc2Njc2Njc2Njc2NjU2NDc2Njc2Njc2Njc2Njc2Njc2NDc2Njc2Njc2NBc2BhcWFhcWFhcWFhcWFBcWFhcWFhcWFhcWFhcWFhcWFxYWFxYWFzI0NzY3NjY3NjQ3NjY3NjQ3NjY3NjY3NjY3NjY3NicmJicmJicmJicmJicmIic2Mjc2MjM2NjMyFjMyNjc2NjcyNjMyNjMyFwLECAIFCQUIBQIFCgUKAwIJEAcDCgQBAQQFAgEBBAEBAgcEAgMCAwoCAQIEAgECAQQEAQECAQICAgQCAgQEBQIFAgECBAMCAgYCAgUCAQQBBAECAgICBgIBAwIFBgMDAwQBAgEBAQQBAQIBBQECAgECAQEBAgcCBQUEAwIECQYHBAICBQIFBwQCBgICAwIFCQIGAwMDBAECCAICBQUEAgIMGw0CAgECAQEDAgEKAgQDAwQCAwIBAQIEAQEGBAMHBQMGCAQJBgMJBQYGBgwGAwcBAQkDDgUCBQwHCxYLCBAIDBIICSMNCgMCDAYCAgsCBxMIBAcDCwMBAgEBAgEBAQMCBAEBAwEBAQEBAQECAQEBAQIGAgIBAgYMBgcCAQQBAwEHAgIHAgEGAgUBAgIEAgICAgIDAgMFAwQCAgICBgMDAgEEBAMECAUDAgECAQQCAQIBAgQFBQEBAgIDAgYCAgQCAQECBAICAwICAwIGAgICAQIDBQUIBAIFBAUBBAMBAQEEAQIDAgEBBAkDAgYDBAUCAQEBAwEBBgMDBgQCBQMHBQMKCAEFAwIDCQIOGg4DBwQGDQYPHA8DBgIGBgMDCAIKBgICAgUCBQQCBAMDBgIBBQoGEiIRAwYDCRoLBQkFBwYEEB4PBQ0GCxkMBAcFDAYECAUGBQcIBAQHBQUMBgYMBgcOBgIHBAcECQcDBw4HBQoFBwcDBgMFDAYIDwkECgUNGg4NHA4DBwQDBwMHCAUIFQkBCAMDBwMECAQGDAcRCwoIBQ8cDgsHBQQIBQgQCAUIBAUIBAYMBQ0DBwMJAwIKAwIDCAIJAihPKgMIAgYDBw8HBQkFCBEJCgYFBgQFCAUMBwgFFg4JEQoIDQUCBQQCBQIEBAMGBAIBBAgBAgIBAgEBAgECAgECAQEDAgIDAg8DAwUGBQUDAgYRCBQJBAcEBAgFCxIJCgMCCAsFBQcFBQcEAwYDAwUDBAcDCA0HBQYDECYQCQMCCQECBAUDCggECAIIBgYHBAQFBAQIBAQHAwgQCAoCAgUIBQgQCAsDAggPCAwXCwwCAgUIBQsCAgQIBAYIAgEKBQwbDAcOCAYRCAYLBQcPCAgOCAgOCAsLBQQGBAwJCxgNBg0GBwMLDgMIAgcCAgUMBgQHAgwWDAkTCgsjEAUOBg8MBAcDAwQDAgQCBAYCCQMIAQECAwECAQICAQECAgAAAAAB/8P/9wIRAgEBngAAAQYGBwYGBwYGBwYGBwYGBwYHBgYHBgYHBgYHBhQHBgYHBhYHBgYHBgYHBgcGBgcGBgcWFhcWFBcWFhcWFhcWFxYWFxYWFxYVFhYXFxYWFxYyFxYWFxYWFwYmByIGIyIUIwcGBiMGJiMGBgciIgcGBgcGBic2Njc2Njc2NjcmJicmJicmJicmJicmNCcmJyYmJwYGBwYHBhQHBgYHBgYHBgcGBhcWFxYUFxYUMxcWFhcGBgciJgciBgcGJiMjIgYnJiYnIgYHBiYjIiInNjI3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3Njc2Njc2NjcmJicmJicmJicmJicmJic2JicmJicmJicmJicmNSYmJyYnJiYnJgYnNhY3NhYzNjc2Fjc2NjcyFjMyNjc2Mjc2NjcyFjMyNhcWBgcGBgcGBgcGBwYGFRQWFxcWFhcWFhcWFhcWFBcWFhcWNjc2Njc2NDc2Njc2NzY3NjY3NjY3NjY3NjYnJiYnJiYnJicmNjc2Fjc2NjMyFjc2NjMWMjc2NjM2FhcWNhcWNgIRAwwHDhgLCAECDgkGAgUCCAYDBgMFCAQDAwMEAgkLBQcCAgIGAgQEAgYCAgECAgkCAgsFCQEJBAICBwIDBwYMBgULBgkFDAUQBwgECAQCBQwHBxMFDRALBA0FCgEPBwwIAwcECBEKCBEIBQkFBAkDCAUCChIKAgICBRAIBw4IAgYEAgUCBQILAgkEAgoLBwcCBQICBgIDAgIEAwMIBQIGCAEKAQoEBAIBCgUECQUEBwURHhEaChIJBgsFBAUFBhAIBw4CAQgDCRMLCRcLCggEBAYFAwYEAwUCAgMCCwgEBgsFCAQCAgQCBQIEBgICCAQDBgMFAgEFCQQFBgUBCAUDBgMFDAcHAgIHAwUDChAGDQYHGQwHBgcNCwUDCAUKBwwLBQgNBQYOBwsYDgoSCwMHBAUHBAEPBwsJBAgLBQYBAwIIBAYDBAMDAwEHBAUGAgoKBgoBAggFBAgBAgUDBAYFBwYFAgULBgIGAwYIBwMMBwUJBwgFCAkDBAcCCBAICBIKBQcDCAgEBwwHBQoHCxsLAwgB+gYGAgYLCAUDAQgNAwMEAgYGAggEAgkFAgQCBQMCDg0HBwIBAwYECQMCCQQCBgIFDAYIDQUIAgEKAwICBwMEBwUPCAULBQgDBQsFEAcBAgUBAgQCAgQFCQICAwECAQIBAQEDAQEBAgEBAwQLAQEGDwUEBgQKDggIDggCBgMDBgQFAgINAgoDAggTCwkEBQUCAwUDBAgCBwcGGAsGAwYBAQUCBgQCAgsBAQEBAQECAQMCAQQBAgEBAQYFAQMLAgYIBQYBAgIGAgIFAgIBAgMIBAsKBQgTCwsHBQMIAgcDBQ0IBwkFBQoFCgMCBg4GCA4HCxQICA4FCAwFCQQCCAEDBQIHAQIBAgMBAgsBAgMBAQIBAQEBAgECAgEBAQEDAQECAgcEAwUGAgQFBQYDCwIBBQ0IDAYIBQgBAgsPBQgEAgwNBQYFAgoGBQoCAQIDAgcIDAgIBwQHDgYDBgQHDwgFAwMCAwICAgkCAQEBAQECAgEBAwEBAQIBAgEBAQEBAQAAAf/N/nECAwH2ArkAAAEGBgcGIwYiBwcGBwYHBgYHBgcGFgcGBgcGFgcUBhcGFhUUBgcGBhUGFBUGFhcWFBUGFhUWFhUUBhcUFhUGFAcUBhUGFhUGBhUWBhUGBgcGFgcGBgcGBgcGBgcGFAcGBwYHBgYHBgcGBgcGBgcGBgcGIgcGBiMiJiMmBicmJicmBicmJicmJicmJicmJyYmJyYmJyYmJyY0JycmNicmJicmJjU0NjU1NDQ3NjY3Njc3NhY3Njc2Njc2MhcWFhcWMhcWFhcWFxYWFxYWFxYWFxYWFxYWFxYWFxYWFxQGFxQWFQYGBwYxBgYHBhQHBgYHBgYHBiYnJgYnJgYnJjYnJicmNicmNzY2NzY2NzYzFjMWFhcWFgcGBicmNicmJgcGBwYHBhYXFhYXFhY3MjY3NjY3NjQ3NiYnJjQnJicmJyYnJiYnJiYnJiYnJiYnIiInIiYjIiIHBgYHBgYXFhYXFhYXFhQXFhcWBhcWFhcWBhcWFhcWFhcWFhcWFhcWFjc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2NzYmNzY2NzY2NzY2NyY2NzY0NTQ2NzQ0NzY0NzY0NzYmNzc2JjcmBgcGBgcHBgYHBgYHBgcGIicmJicmIicmJicmJyYjJiYnJiYnJjQnJyY2JyYnJiYnJiY1NDY1NDY1JiYnJjQ1NjY1JiY3NDQnJiYnJiYnJiInJiYnJiInJgYjJiYnNjYzNhY3NjYzNjIzNjY3NhYzMxYWMxY2NzIWFzIyNxYyFxYGBwYGBwcGFAcGBgcGFgcUBhUGFgcGBgcUFhcUFhUWFhcWFRYWFxYUFxYWFxYWFxYWFxYWNzY2NzY2NzY2NzY2NzY2NzQmNzQ2NzY2NzQ2NTY2NzY0NzY2NSY2NTQmNTQ2JyYmJyYmJzYWMxY2FxYWMzI2NzYWNzYWMzYWMzYWAgMFDAUJAwYDAgoLCQYEAQICCQMBAQEBAwIEAQIDAQEBAgEBAgEBAgEBAQIBAgIBAgMCAgIBAQMBAgICAgIBAgYBAQYBAgIFAgUBDQQLAQgBAQkBCgcEBwUFBQgEBQoFBQgEAgYDChUKBQkFBwgGBwkGCwICBQoFCwoFBwUMCwUFAwIFAgUDAQEFBQICAgEBAgQCCQwKCQIBDAQMCwUIFAYOFAkDBgIDBwMMCAQFAgkBAggCAgQHAgIGAgUIBAIDAQEBAQEDAgQEAwIFAQMLBQIEAg4kCgsBAgkCAQcBAQwGAgECBQkKBwYKBAILAQoBBQIBBQcFBAYCAwEDAgYGCQIHBQUCBQIGAwsWCwgOCAEHAgECCQECAQEFBwgBCAMCCAIIDwkECAQFCAYECgUFCAQDCwIECAQHCQMBCAECBgMCAgUGBQEBBQICBgEBCRUKBAcEBAsEAw4FCA4IAggEAgUCAwcCBAYFBQ4FAgUDAwcEAwcBAgICBAIBAgEBAgEBAQEBAwEBAQEBAQICAQEBAwIFAwIGAgESAwYECQICCAkIFwkECQYFBgUCCAMKAggDAwYCAgYCBQEIAgECAQYFAgICAgICAQoCAQECAQUBAQIKBQIFAwIHAwYLCAMHAgoCAQYOBQsFAgUJBAwDAgUIBAgOCAoKBRIGDAYHDwcJBwMFCwUECQQCBQIIBgIHAwICCQICAQIDAgICAQQBAQECAQEFBgICAgQBAwoFBAYDAQwCBRAFBxIGAwUCBQMBAwQCAQMBAQEDAQIDAgMCAgEBAQECAQEBAgQEBwIFCgQCDQcFCwUHDQgHDAgFBwgGCgUKAQEQGQH0BQkFCAYCCw4NCwQBCgIeHAcMCAgOCBEgFAoUCgcFBAUNBgsXDAgbBwcKBQUIBQMKAwQHBQUNBQYKBQ8KBgMGAgoUCwgNCA0HAwgLBwMIAgsEAgsFAwQGBQgCAg8HCgEEAwEEAQgGAwQFAwIGAgIBAgMBAQEBAQIBAQMCAgUEBQIBAwUCBwcEBgUOFQkHBQQHAgIKCAQDDQ0HBQYCBAcEDwcOBQULBgoLCQYBAQgCAgQBAQIFBgIBAgEEAgMHBQECCAEBBAICBAUFAQUCBQoHAgYDAgcEBAUDBAUECwUHBAgCAgQGAwIEAggBBAcBAQcBAQUDAQ4PAwQEFgwMCwICAQEBBggBAgsJAgoDAgIIBQMJAQMCBgsIGgoFAwUCBwEHBQMDAwIIBBAHCAUJAw0FBgEEBAIGBAQHBAIEAgIIAQECAQILBQkTEQgSCAgQCgMIBA8MCQMCBQgDBwIBCAkEAgQCAwUCAgMCAgUFAQMCAgMCAgECAgcCAwoEAgYDBAkFEQsCBwIGDwkDCAUECAQHCAQJGAgQHA4GCgUIDwsCBwIMDgMRBgwHAgoFCQICEgMHAgUEAQMDAwIBAwIBAgIBAgcDCAIHAgMFAgsCAQsDBgMGCg4TCgcNBgQGBQMGBAcNBQQNBQcMCg4cEQQIBg4cDgULAgICAgMCAQEHAgYEAgMBAQEBAgMBAQEBAQEBBAEBAQMBAgIBAwYCCgYDCQMFAgYPBwUPCAQHBAsXCwsUCwcPCAQHBQwUCQwMBw0IBAYDBgoHBAgCAgYBAQEBAhEIBAQFCAgDBREHBQcDAwcCBQoGChIJBQ4ECxcMCxgMBQwICAICBAYEDhsLBgUDDAcFDAIBAQEBBAMCAQEBAgIBAQQCAAABABz//gG/AfYBYgAAAQYGBwYiBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYHBgYHBgYHBgYHBwYGBwYGBxYyFxYzFhYzMjY3NhYzNjI3Mjc2Njc2Fjc2NzY2NzY3NjY3NjY3NiY3NjY3NjY3NjY1NiYXFgYVFAYVFBYHFAYVFBQXFhYVFgYVFBYHBiInJiYnJiYnJiInBiYnJiMGJicmBgcGBgcGIgcGBgcGBgcGBgcGBgcGBgcGBicmJicmJyYmNzY2NzY2NzY2NzY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NzYyNTY3NjY3NjY3NjY3NjY3NjY3NjY3NjcmJyYmJyYmIyIGBwYGBwYiBwYiBwYGBwYGBwYHBgcGBgcGBgcGBgcGNCcmJjU0NjU0JicmNyY2JyYmJyY2JyYmNzYWFxYWFxYWNzYyMzIWNzY2NzY2MxY2NzYWNzI2MzIWMzI2MzY2NxYUFRUUFAG5CBAICQIBBwkECAEBBwMCChkLAgMCAwcCBgkDBw4IBwMJCAUIAQIKBQMMAwYDAwgCBQsIDgsMAwIFDAYDBgIMCAQHCgQHBAUIBRAPBgsFCQcEAQEFBQMFAQECBAIEAQECAwIBBQYBAQQCAwEBAQECBQIGAwUCBgMEBwUNDQQFDQYECgwHBBEfEgYOBwcLBwQGBAkUCgUJBQUKBQUJBQsFAggDAgcEBQMBBAoGBQkECAYDBAYGCwUJEgoFAQEEBgUDBwQGAwICAgICBAIGAwIPBAIEBgUCAgYBAggGBAIEBAEFAgIHAgcFDREECQUFCAUFCwUFCQUMBgMFCwUIDwgOIggEAgQCAwcDBAcFAgICCgEBAwEBAgEBAQMBAQEBAQECAgYFBAYDBQ4KEBcODwsFExQLChQKBgwLAw4EChQJBQgFCwQCBAcEChQKDgGjBQUICAEGBwMGAgEDBgMMGA4FAgIGBQIKCAUJEwcMAwwOBgsGAw4KBRIFCQUFBwUFAgYBAgQCAQEDAQIBAgEBAQEBBQIEBAgMBwMBCggFCAMCBAgFCBEGBQoFAgsBAgwFBQgEDh0PBwwGBQcFBQgECRIICRIKBAIBAQIBBAIEBQIFAQEBAgEBBAICAQEBAQEBAQEBAQIDAQIBAgICAgQDAQkHBA8ICQQCCAoFAwcECAQEAwgFCgULFgsGAgEFCQMFCQUIBAICBQMCBAIKBQISCQEGCwkBAggDAgsIBQMGAgUGAwIHAwgLDgQCAgEBAwMBAQQBAwEBAQIFAwUIDgYHBgYFEggLGAsFCAUICgQDCQIDCAQLEAgFCA8VCwUJBQsWCgcKCAIFAgQHAgMDAQQCAQECAgEBAQMBAgICAQECAgQCAgwGFgsVAAABACj/ugDaAyEBDgAAExYWFQYiBwYGBwYGBwYHBgYHBgcUBhUUFhUWBhUWFhcWFBcWFhcWFhcWFhcWFhcWFBcWBhcUFhUWBgcGBgcGBgcGBgcWFhcWFhcWFhcWFBcWFgcUBgcGBgcGBgcGFAcGBgcUFAcGBhUGFhcUBhcWFhcWFhcWFhcWMhcWFxQGBwYmJyYiJyYmJyYmJyYmJyYmJyYnJiYnJiYnNDY1JiY1NDY1NjY3NjQ3NiY3NjU2Nic2Jjc2Njc2NTU0JicmJicmJicmIicmJic0Jjc2Njc2NzYWNzY2NzQ2NzYnNCYnJiYnJiYnJiYnJicmJjc2Njc2Njc2Njc2NDc2Njc2NDc2Njc2Njc2Njc2Njc2Njc2Ns0CCwQLBAQIBAYMBg0DCAICCQECAgECAQIBAQEFAgICBwIDBAIDBwICAgMBAQIBAgUDAgEDCAUHDQoGBQUBBAICCAIBAQEBAQICBQMCAwMBAgIBAwEBAQECAgEBAQEGBQIJBQ0QBwkEAQYEDQUJDwcECAMCBAMDBwIEBQULAgIKCQQDAgUDAQIBAwIBAgIBAQMBAQICAwIEAQIBAwIDAgECAgIEBwQHAgIDBwIDAwUHBAsGCQIBBwQDCAIDAgIBAgMBCAUCBQQCAwMDBwMBAgIBAQECAgIFAQIEAgUCBAUEAggEAwgDBQgDAwYECg4DHQUNBwUEBQMCAwoFCQMKCQUUFQQFAgIHAwMGAgMHBAQHAwkLBQUKBgUMBgcNCAIFBQYEAggDAw4QCgUDAgQKBQgOBgoIAgUJBQUJBQMJBQUJBQMGBQkFBAsFAwULBgYKBQUMBQcMBRAfDgoQCAoZBQIIAwgBAgQBAgYIDgUBAwICAQIEAgIBAgIHBAcCAgoMBQwKDwoIAwcCBgwIAwYFCRUJBwwGCAMCCQIGDQUGDwcFBgUQAg0CBwIFBwQDCAUHAQQBAg0XCQIBAgcEBwEBBwYCBAYFFAwDCAQFCAIMBgUJBQcJDw0aEAUKBQUKBQUJBAwEAgIEAgUEAgMIAgUIBAQGBAEBAgIFAwMIAAABADb/+ACWAu8ArQAAEwYGFQYWFQYWBwYGFQYWFQYGFRYUBxQGFRQWFRQGBxQGFRQWFRUWFhcUFhcWFBcWFhcWFBcWFBcWFhcGIgciBiMiJiMiIgcGBicmNjU0JjU0NjU2NyY2NSYmNTYmNyY2NTQmNTQ2NTYmNzY2NzQ2NSY2NzY1NjY1NjQ1NDY1JjY3JiY1NCY1NDY3NCY1NiY1NDY1NCYnJjYnJjYnNCY1JjQnNic2HgI3FhYXMjKQBQIBAQMCAQECAQEBAgEBAgEDAQMBAgEBAQECAgECAgIBAwEBAwIHEgsDCAMCBgMDCQUCCAQEBAEBAgECAgECAQEFAQMCAwEFAQIBAgIBAQEBAQIBAQECAQEBAQIBAgECAQEBAQEBBAEBAgEBAQEEDxEQBQMEAgMHAuAMBgMEBgUHAgIHDAYJEQkFDQYOEAgDEQYECAUUNhcUKRULGAwZESgSChALCxwNBg0FBAkHDQgFCBAIBwICAQEBAwMECAMFCAQDBgMLEQkDAQYNBhUgCwoEAgMHBAUVCQsVDggPCA8LBQYPBAMMCwUCBQoFAwYCDQcDDwoFBgsFBQkFAwUDDwgFAwYCChMICAsJFBkMAwcDBw4GCQIDAQIDAQIEAgAAAAEAFP+6AMgDIQEFAAATNhYXFhYXFhcWFhcWFhcWFhcXFhYXFhYXFhYXFhYXFhYVFgYHBgcGBgcGBgcGBwYVBhcWFhUWFhcXFhcWFhcWBgcGBgcGFgcGBgcGBgcGBhUWIhUWFBcWFhcWBhcGFhcUFhUXFhQXFhYXBhYVFAYVBhYVFAYHBgYHBgYHBgYHBgYHBgYHBgYHBiIHBgYnJiY1Njc2NjM2Njc2Njc2Njc2JjU2NicmJyY2JyYmJyYmJyYmJyYmJyYmNSY2NzY0NzY2NzY3NjY3JiYnJiYnJicmJjc0NTYmNzY0NzY2NzY2NzY2NzY2NzY0NzY1NCY1NDY1JiMmJyYmJyYmJyYmJyYmJyYiJzQ2IgoOBQoGBAQKBAgEAwgCBAQCBwUEAgMBAQMDAQEBAgEDAgUEAwMCBAIGBAIJAgQCAgMHAwQDCQwEDQcFBAMBAggCBwEBCAcDAwIBAgMCAgQBAQMCAgEEAgICAgMBAQIBAgECAwECAwIFAwQFCQUIBQIEBgMCCAMDBQICCAQHDwkEDgQGCQICBxEFDQgCBgYBAQEBAgECAQEBAQEDAQIBAgEDAgMCAgQDAQEBAQECBwIFAwUFAwcOBwQIAwQCBgIBBAEBBAIDBgMCBAIDBgICBAEEAQQBAgEBAQUGAwIIAwIODQYEBwIGCwUMAx0ECAIEBQICAgQGBAQIBQIIAgkFBAIKAQIJCQUFCgUFCgUQGg0PCQcFBAoGAw4KCgUMCw4GBAIGAgkGAggBAgkXDQIBAQYCAQcIAwQHBQIHAgsCCwUCBQYFBw8GBQ0GCAECDQYMBwkVCAYGAwgMBgIHAwgKBRQMBQYLBQgBAgQHAgIBAgIEAgECAgMBBQ4IBQMCAwIBAgkIAgUZCggQCg4fEAoOBQwFBQoGBgsFAwUDDAUDCwYDBQkFBQkDBQkFCQoCCAMNDggFCgQIAgoQDgkCBQQCCQUCCA0HBgwFBgoFBQsDCQcECgQCBgMDBwILFA4MCQMJAgILCgMCAwMGBQcNAAEAFQERAYgBgwB2AAABHgMHFAYHBgYHBgYHBgYHBgYHBgYHBgYjJiYnJiYnJiYnJjUmJicmJicmJicmBgcGBgcGBgcGJgcGJyYmJyYmJyYmNzY3MD4CNzI2MzYyNzYzNhY3NhYXFhYXFhYXFhYXFhcWFhcWNDMyFjMyNjc2Njc2NgFvAgkIBgEMBAcDBQQHBAQMAgkIBwUIBwQIBwwLCAUHBQUKBQsGBQIEBgQKAQIDDQUIEAgFCAYMAwMMAgIEAgEEAgMCAw4FBwsMBAILAgkFAwkCAw4GBRYFBgwICAQCAwUDCQkDBQULAQEOAwsSDAQHBAkIAXsECgwLBgQGAgUEAgEHAgIGBAEGAgICAgECAQEDAgICAggCAgEFAQICBQIDAgECAQIDBgQCBwIJAQMCBQMGBAIKAgkKAgQFBQYHAQcFAQUCAQIBCAICBwICBAEBBgECBQIDAQMCAw8CAgYCBgr////L//MDQQOQAiYANwAAAAcAoQDDAM0AA//L//MDQQN0AG4C9gMYAAABJycmJicmNCcmJyYxJicGBhUGBgcGBgcGBgcHBgcGBgcGBhUGBgcGFAcGBgcGBgcGBgcGBgcGFAcGBgcGBgcWNhcWFhcWNhcyFjMyNjMyFjMyNjc2Njc2JicmNCcmJicmJjU0JicmJicnJiYnNCYTFhYXFgYHBgYHBhUGBgcGBgc2Njc2Fjc2Njc2Njc2FzYWFwYiBwYGBwcGBgcGBgcWBhUUFxQWFxYWFxYWFxcUFhcWFhcWFhcWFhcWFhcWFxYWFxcWFhcWFhcWFhcWFhcWFhcWFBcWFhcWFhcWFhcXFhQXFgYXFhYXFhYXFhcWFhcWFxYWFxYyFxYWFxYWFxY2FwYUIyImIyYGBwYiByIGIyIGBwYmByIGIwYGByImBwYGIyImIyIGIyYGJyInNjY3NjY3Njc2Njc2Njc2Njc2MzY2NzI2NzY3NjYnJjYnJjQnJjQnJiYnJiYnJiYnJiIjJiYjIgYjBgYnIgYnIycmBwcGIiMiJgcGBgcGBgcUFhUUBhcWFwYWFQYGFxYWFxYWFxYWFxYWFxYWBwYmIwYiByIGIyYGByImJyYGJyImIyIGIyI0IwYGIyImIyIGIwYGIyY2NzY3NzY2NzY2NzY2NzY2NzY2NzY3NjYnNjY3NjY3NjY3NjY3NjY3NiY3NzY2NzY2NzY2NzY2JzY2NzY2NTYmJzY2NzY2NzY3NjY3NjQ3NjY3NjY3NjY3NjQ3Njc2Njc2NicmJicGJicmIiciJgcGBgcGBwYUBwYGBwYUFxQGFxQWFxYXFhYXFhYXFjY3NjY3NjY3NjY3NiYnJgYHBgYHByYHNjc2NzY2NzY2NzY2FxYWFxYWFQYHBgYHBgYHBjMGBgcGBwYiBwYGJyYmJyYmJyYmJyYmJyYmJyYmNzY2NzYmNzY2NzY2NzY2NzY2NzY2NzYWMzI2NzYWMxY2MzIWMzYWMzIWMzMmJyYmJyYmJyYmJyYmNTQ2NzYmNzY2NzY2NzYyNzY3NjYzMhYXFjIXFhYXFhYHJiYnJgYnIiYHBgYHBgYHBgYVFhYXFhYzMjY3NjY3NjY3AbsJDAYCAgYCAQQFBwcJAwIFAgIBAgQIAgoHAQcEAwEDAgEBAQEHAwMCAwEIDAcCBgICAgEEAgMCAQsYDAgOBwcRCQcOBwcLBwUKBQwYDQ4fCAILBQEBBgEBAQMCAQIBAwkDBQMHJQIDBQIEAgIJAwgLBwYHAQIMCAQFCwULFgsECAUGCQMMBAIGAgMIBAoHCggCBgMBAwIDAQIBAgYCAgQCAQIFBQIFBAEDAgIDAwMFAgQBBQMDAwUBAgMFAwMGBAIDAgICBAUCBAICAgIBBQUCBgEBAgQCBwUCCQYICAUIAgkFAwcEAgUNBQUHBQQJBAkCAwgEChULBw8IDw0IBAUCCxYKBgwGDhoNBgwGChIJBQcFAwYDDhMIDwoEBwQHDgkFCgoHAwUKBQwFAggEAgMCBQUCCAMBBAEGAQEEAQMBAgUCAwMCBw0HCwsGBw0HAggEER0UAgYDDRQREAwIDwcIDAcIEAYCBwEBAwIBBAMBAQEEAggFBRAGBwUDBxIHAwgBCgcDBQoFBAcEGSQRChQKCxQKBAcFAwgECwEFCQUIDQYFCgUDCwUMCQIMAQwJDwULBgQDBwMGCAcCCAQEAQIFAQkIAgICAQQGBQIDAgMEAgECAgcCAwICAgIHAgICBAEFBQQCAwECAgIDAQQDAgMFAgMCBgEECAQCAgICBAEBAgECCwkGAgUBAg0ECxUKCx4RCBIIChIIEREKAgkEAwQBAQEGAgIHBAcCBQMHDQYFCAoHAgcCAgECBQ0FDAcDBAUCDQoDAQYGAQgHAwMEBQQGBQoPCAQMAwICBwUEBwQLAQkEAgoGBQYFBAQFBwoFBQkDBg0FAwcCAgIBAQECAQMBAQEBAw0FAgIDBwsFBQcFDw8GBQsFAwcEDyINCA8ICRIMBAYDCBEIDwsGBQUEAwYBAgECAQMDAQIBAgMWCAMHAgIFBQ0DBAsFBQoFBgkFBQsFCQgkBwYDAwsFBQkDCBUEAwIBBAEECQcGDQUEDwYKDAUBBAIB+RUhEQwGCwYCAwgNCQIEBAECBQIDBwUDCgQLEwMNDwcIAgEDBwMDBwMLDwQDCAIXJxAFCgUFCAQEBwUIEwkEAwIBBQEBAgECAgEBAQIFBRUiEgIHAgwKBQILAggIBQgQBQkEBwMGCQFiCRAIBBkGBAkFCAEHCQIEAQEBAgEBAQECBQQBAQEBAQQCAQ4CBQUFCAYOBAUHAwwGAgUKBw0IBg0FDgkFDQgFAggQBgkSCA0MBQYKBQsKBwUDDwYLBQoIAwcKCAkSCAUGBQMGAwsLBgkLBAMFAgoIBwQHBgMEBgQMCAQOBQQJAwUDBgECBwECBQICAgEBAQQFAgIBBAEBAQICAQEBAQIBAQEBAQECAgEBAwEGDAICAwYEAQQHAQECBgIFAwIDAgUCBQIGAwYNCAsBAgcKBQsFAgULBQwJBQYDAgMBAwEBAQEBAQECAgMBAgEBAwEJFQwDBgQFBwUJCQ0KBQgRBwQLBAQGBAYBAgMKBQIBBQYCAQIDAQMBAgEBAwECAgEBAgMBAQIJAQIIAQgJBQMGAwICAgIECgQICgUJAQIKBQ0PCAwCAgoZCwUKCAwFBQMHBAwDBQMFCAUMCAYEDAgFEggDAwUFCAUFCAUHBgMHCQQJBQoFAggQCAUIBAUHBQQHBAMIFRAMBg0EBQMDAgUDAwEBAQIHAgUHBwIBCAcCCxINBAgEBA4FAwUJBgMGBgQEAgICBAYCBAICBgIQDgUHAwECAwIGAgIKCgkBBQICAgECAQIBAREFCA4KEQMDBgQDCAMJBQMCBgIEAQECAgEIAgUEAwcOCAcOBwgTDAsQCQQIBQQIAwULBQIFAwUDAgIFAgIEAQEBAgEBAQECAwEBAQQEBAcDAwUCAwkEBQcEBQYFBQcFCBEGAgYBAQIDAQEDAgEBAQIIAwUFGQQGAQIBAQIBAg4FCAECBwkGBQoCAgcEAgQKBgkPCQABAB7+8wKEAwgC7AAABRY2FxYWFxYWFxcWFhcUFgcGBgcGBgcGIgcGBgcGBgcGIicmJicmIicmJicmJicmNjMyFhcWFhcWFx4CMjc2Njc2Njc2JjU2JicmJicmJicmJicmBgciByIHBgYnNDY3NjY1NjY3NjY3NDY1JiYnJiInJiYnJiYnJiYnJiYnJiYnJiYnJiYnJiYnJiYnJiYnJiYnJjQnJjQ1JiYnJiYnJjQnJjQ1JiY3NDQ3NDY1NiY1NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY3NjY1Njc2NDc2Njc2Njc2NzYWNzY2NzY2NzY2NzY2NzI2FzY2NzY2NzI2MzIWFxY2MzIXFhY3FhcWNhcWMhcWNhcWFhcWFxYWFxYWFxYWMzI2NzY2NzY3NjY3NjY3NjQ3NjQ3NhQHBgYHFBYHFAYHBgYHBgYHBhYHBgYVBgcGFhUGBgcGFgcGBgcGFgcGMQYHBgYHBgYHBgYjBhQjBgYHBgYjBiciJicmJicmMSYmJyYmJyYmJyYmJyYmJyY3NDY3NjQ3NjY3NjY3Njc2Njc2NhcWFhcWBgcGBgcGIgcGBicmJyYmNzYWFxYWFxYWFxYWNzY2NzY2NTY0JyYmJyYnJgYHBgYHBgcGBhUWIhcUFhcWFxYWFxYWNzc2Njc2Njc2Njc2Njc2NzY2NzY2NzYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmIwYmIyYGBwYHBgYHBgYHBgYHBgYjBgYHBgYHBgYHBgYHBgYHBhYHBgYVFBYVFAYHBgYXFBQXFgYVFhYXFhQXFBYHBhQVFAYVFhYHBgYVFgYVFBcWFhcWFhcWFxYWFxYWFxYUFxYWFxYWFxYyFxYWFxYXFhYXFxYWFxYWNzY2NzY2NxY2NzYyNzY2NzY2NzYWNzY3NjY3NjY3NzY2NzYWNzY2NzY2Nzc2Njc2FhcWFxYGBwYGBwYGBwYGBwcGBgcGBgcGBgcGIgcGBgcGIgcGBgcGBgFODBgLCQ8HBgICBgICBAIEAQQBAgYCAwgFBA4GDAgFBiAIChoFDAYCBwgFBQICCQsGAwwECgUCBwgEERIRBAMGBAMWAgIBAwICBQICBwsFBgIICQcECgQICgQEBAUBBAEBBQEBAwEGBAcEBQgFBAYECA4HCgoIDg8ICA0FCwEBCAICDAYDBQUCAgMBAgMCAgEDBAIBAwIBAQEBAgECAQIBAQECAgEDBQMCBwIDAgEBAgICAwIDAwECAQEFAQUCAwMFAQMIAwkUCAgHBwECCg4IBQoEAwYCAwUDBwkFCRQKBAsHBQcFBg4HDQcEBwoMBQEHBAMHAwcCAggDAQIDAgYDCQUCBAcDCgkEBQYFAwoFBQQCAgICBQICAgUDBwEBBAEBAQIBAgIBAgIBAQEBBgEGAwMBAQIBBQEBAQICAQEBCAUFAwUFBAkEBwYCCgEKBwQFEQYKCwMFBAIHAwoOBAUCBQECAQIEAQICAgEFAgMCBQEFCAQHBwMGCQYOCAsfDgQDAQEBAwIFBAIIBBAXDQQCAQEDBQQCAgUDAgMCBAUIBAQCAgIBAgMGAgUHDR0GBAQEBQQBAgECAQMCBQgDAwUJEg8RBAcFCQMCBAYDBQoFBQMCAgECAgIDBAMBAwIDCwYFCwUCBQICBgMPDQYFCQUNCQQRHA4DBwMKCAUFCAUGCBIRCgUJBAMHAwMFBQIHBAIFAgIDAgQHBAQHBAEDAQMBAQEBAQIBAgMBAgMBAQECAQECAQMBAwEBAgUCAQECBAIBBAIBAgEDAgICCAIBCwECBgMBAgUCBQUEBgUKAwkFBwYHCAsHCw0DCQYFBAgEBAgFEA8JCAICDQcFBgQECQQSAgMDBwIBAwYCBQUCBgIBAwQFAwoDAgkEAwYEBw0GBgYEFQcLBQcOCAoKBQsIBAUFAwQHBAUNBwgQaAEDAwMEBQcBBAwECQMKGA4DCQMDCQQJBQQEAwUBAQEBAQgCBgEFCAUGAQIKDwMCBAQCBQICAwMBAgMBBAkFBwMCDgkFCwYCAQIBAQECAgIBAQIBAQIHBQgLAQICBgIFCgMDBgQCBAEBAQICAgMGAgQFBQoQBwcLBwQCAQIDAggHBAcOBQIFAwULBQQFAw4HAgsDAgsCAgQIBAUHBBAZEQgPBgMFAwgMBA4JBgQKFAsIFAsJBgQDCwUFBwUIBQIDCAMMAwoBAgkDBwICBQ0ICAwJAQYFAQEIBwQCBQMCBQICBgIFAwYFBQIBAQIBAQEDAgICBAcCAgEBBQEFAQECBgIEAwoCAgUEAgcJBwILEwsKBAcFBAsGBAUHAwQFAQINBQ4PDAYNBQULBQscCw0GAwQHBAwFAhIWDQUDAgYDDQYEBQkGBAYCCgMHAwUEBAYDBQMEAgQEAgIEAwMEAgICAgUGBAYCBQICBgMJCQUDBAQOCgQKBQoEAgUKAwUHAgECAgMCAwQHCBUMCRMJBwcDAgIFAwIMDgcPBwEHAgIFAgYDAgUEBAQCBAUFCAcNBQYBAgUCAggFAgoGCgwECAIKAQMIBQ4LBggGCgoFBgIEAgcBAgIFAgUJBQgFBQIDBAoFCRYKBQoDBgwGBgwFAgQDAgMCCQsEAwUDBgYDCgUDAQIBAQEBAgIECwoFAgQDAgUCAwYFAgIDAwICBQIECQUIDgcFBQQLBQQDBwMKDAUHCwkHEAwIBQIHDwgFBwUICwoFCggEBgMIDgcKAQELCQUKEQoCAgYOCAQIBw4IAwYDAwYDCQUCCAMCBQECAwIDAwMGAgUCAgICAgIBBAMFAwYIBgECAgIEAgcIBQUBAQcGAwgDBAYEEwIHAwUBAQQDAgsJBQwDBwICBgICAwgMBwYNBgwZCwsIBSQODAcFDQUFBwMGAQEDAQEBAgICCRb///+9/+ECeAPDAiYAOwAAAAcAoAC4AOH///+k/9wDBAOXAiYARAAAAAcA4wDNAM3//wAe//YC1QOQAiYARQAAAAcAoQDDAM3////O/+ICpwOaAiYASwAAAAcAoQBxANf//wAj/+wB4QLZAiYAVwAAAAYAoFL3AAD//wAj/+wB4QLZAiYAVwAAAAYAVkj3AAD//wAj/+wB4QLSAiYAVwAAAAYA4j33AAD//wAj/+wB4QKwAiYAVwAAAAYAoT3tAAD//wAj/+wB4QLBAiYAVwAAAAYA40j3AAAAAwAj/+wB4QKSAGwCGAI5AAA3Njc2Njc2Njc2NzY2NzY2NzY3NjY3NjY3NiYnJjQnJiYnJiYnJiYnJiYnJicmJicmJicmBiMmJicmByIGByIiBwYGBwYGBwYGBwYGBwYGBwYGBwYWFRQGFxQWFxYWFxYWFxYWFxYWFxY2FzY2ExYWFxYGBwYGBwYVBgYHFhYXFhYXFhYXFhYXFhcWFhcWFhcWFhcWFxYUFRYGFRQWBwYGFQYGBwYGFRQWFRQUFxYWFxYWFxYzFhYXFjYzFhYVBiYHIiYHIgYHBgYjIiInNjY3NjY3NjY3NzY2NzY2NwYGBwYGBwYGBwYHBgYHBgYHBgYHBgYjBiYnJiYnJiYnJyYmJyYnJiYnJiYnJiYnJicmJjU2Jjc2JjU2NDc2NzY0NzY3NjY3NjY3NjY3NjY3NjY3Njc2Njc2FhcWFhcWFhcWFhcWFhcWFhcWFhc0JyYmJyY0JyYmJyY2NSYmJyY2JyYmJyYmJyYnJiYnJicmIicmJicmJgciBgcGBgcGIgcGBgcGBgcGBwYHBhYHBgYXFhYXFhYXNjY3NjI3NjY3NiYHBgYVBjYVBiInJj4CNzIXFjIXFhcWFgcGBgcGBgcGBgcGBgciBicGBicmIicmJicmNCcmJjU2Njc2NDc2Njc2Njc2Mjc2NhcWMjcmJyYnJiYnJiYnJiYnJiY1NDY3NiY3NjY3NjY3NhY3Njc2NjMyFhcWMhcWFhcWFgcmJicmBiciJgcGBgcGBgcGBhUWFhcWFjMyNjc2NzY2N+MEBgkLBQQIBAYGCAcDAwMCCQQLCAMEAwEDAQIBAQEEAQMFAgIBAgMOCA0HCAgEAwUDCwICBAgDCQIEBgIDBgICBQMODAIHAwIFCAIDAwICBQEBAQEBAwIFCQYEBwQFAQEIBQIDBgMMEm4CAwQCAwICCQMJCwcFAg0ICAQFBA0DBAMDCwYFBgUHAwICBAIEAQEBAQEBAQICBQQCBAECAQICAgcECQQKCAQHAwENAwMEBQMFBAQJBRUvFwoRBQIHAQYEBAEFAwgCAwIBAQEMCgIGCggOCgYJBAMGAgUJBAUJBA4GBQsXCAcIBQsGAwwEBwIHAQgDAwILBQIFAggBAQIBAgEBAQMBBAEEAQkGBAYBBwoGCgUCCgMCCQgDEREECQQLFwkLAwIECQUHBwIDCAUJDQgDBgUGAQIBBAEBAgEDAQECAQEBAQEEAQYEAgUECAUDEAQKAwIJBQgEDAUFDgUDBQIDBgIECgUGCwUHBgQDAwEBAgMFAgYHCQwFDQYDBwICBQgFBBQLBAcCCgIPBgQDBwsFBw4FCQIDBAMDAgQBAQIGAwIEAgcKBQMHAwUOCwkNBQgNAgEBAQIGBAQIAgYNCwIGAg8PBgQFBgYPCAQKCAYFBQMDBgECAQIBBAQBAgECAxUIAwgCAgUEDQMEDAUFCQUGCgUFCgUJCSQHBwMDCwUFCAMJFAQDAgEEAQQJBgYOBQQOBhELAQQBOQIEBggEAgYCBQYDCgICBAIIAgsJAwgCAQkGBwUIAwIGAwYOBgQIAgUMBwoFCAECAgQCBQICAwECAQQBAgEDAgkJBAoDAgkJBQUOCAYNBgUNBQUMBQMIAw4dDAcLBgcDAQYDAQIBAgILAkEKDwgEGgUECQUIAQgIAgMCAgIBAwIHAgUDAwkLCBMICgcFBAwGCgMGDAUQIhEMFwwIEQgRIBAIDggDCAUIDggDBgIDAwIFBQMCBAIIAQMIAQEBAQEBAgQGBwMCBwYCBQYECwIQBQUKBgsJBwMLBQkJBQgCAwMCAgUCAgYCBQQCAgICAgMGBwILBAQDDQELBgMLEwsFCgUREAMFAwkBAQoLBQoEAgwBBgMBCAQHAwUDCwUIAQIGBAIIAwIKCAIEAgICAgICAgIDAgUCAQIFAwUNBgIGAg8OBAgGDAgFAgUEBwICAwYCAwYDBQcFCwUEBAgGBAIIAgUBBAICAQEBBAIBAwEBAQIGAwUIBgkIBAgGAwIJDgcFAgIFAgIFAgMGAgMLBBEGAwECBQYCBQYCBwsIBgMDAQECCAUJBQYGAgIEAgIFAwMIAgICBQEBAQMDFAkDCAQIEQkHDwgHAwIICAUCAgIGAgEEAQEBAQQCBAMHAwQFAgMJBAUGBAUHBQUHBAgSBgIGAQEBAgMBAQMCAQEBAgcDBQUZAwYBAgEBAwECDgUIAQIHCgYFCQICBwQCBwwKDwkAAQAk/zoB1gInAZsAAAUWNhcWFhcWFhcXFhYXFBYHBgYHBgYHBiIHBgYHBgcGIicmJicmIyY2JyYmJyYmJyY2MzIWFxYWFxYXHgIyNzY2NzY2NzYmNTYmJyYmJyYmJyYmJyYGByIHIgYHBgYnNDY3NjY1NjY3NjY3NDY1JiYnJicmJicmJicnJicmJicmJicmJicmJyYmJyY1JiYnJiYnJjQnJiY1JiYnJjYnJiYnNDY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NhYXFhcWFxYWFxYWFxYWFxY2NzY2NzY2NzY3NjY3NjY3MgYVBgYHBgYHBgYHBgYHBwYGBwYGIyY0JyYmJyYmJyYmJyYmJyY0JyYmNSYmJyYmJyYnJgcGBgcHBgYHBgYHBgYHBgYHBgcGBwYGBwYGBwYGBwYXFhYXFhYXFhUWBhcWFhcWFxYWFxYWFxYzFhcWFhcXFjYXFhYzMjI3NhY3NhY3NjY3NjY3NjY3NjY3NzY2NTI2NzIWFxYVFgYHBgcGBgcGBgcGBgcGBgcGBwYGBwYGBwYGBwYjDgMBBg0XCwoPBgYCAgYCAgUCBQEEAQIGAgMIBAQPBg8JBx8ICxkFCAMLAQIFBwUGAgIJCwcDCwQKBQIICAQQEhEEAwYFAxUCAgEDAgIFAgIGCwYGAggIBwQLBAMLAwQEBAUBBAEBBAEBAwEGFhMLCwMCBgICBgMKBgYJAQICAwICAgIEAQUEAgMCAQIBAwEBAQMBAQMBAQIBBQUBAwYHAgICBgQKFgkDBgQMBwQFCAUEBwQKEwgFDAcNHgoKDgkCCQQCDA0FCgQCDRAFAgUDBwIBBQQBAwECAgIIAwIFAwQCAQMDAgUMBwUBAwIBAQYEAgUDAgIFBAICAgIDAQEBAQIDAgIFBgIVFw0OCBUICwgGAwIFAwULBQIGAgcBBgQCAQIIBgQDBgICAgIFAgICAgMFAQEGAwMDBgICAgIFAwQCAgkDCAgNBQ4IBwwHCAwHBg4GCgYEBAUEBAcEBwoHAggEBQIFBgIFBQICBgIGAgIDBAECBQoGBwMBAwUDFA4LAwIECAUECAQECgMKCQUhAQMDAgQFBwEEDQQIAwoYDgMJAwQJAwkFBAQDBwEBAQEJAgQEAQECCAQGAQILDwMCBAQCBQICBAMBAgMBBQkFBwICDwkFCwUCAQIBAQECAwMBAQEBAQECCAUICwEBAgYCBQsDBAYDAwMECAMCAQICBgMMBwsMBwQCBgQDBwMJAQwIBQkDAwYDAwYDBAYECAICAwUDAgcDFRkMEB0LDgsFAwoFFhYPAgQDCAUCAgICAgMBAwECAgYBAgYDBAYDBAUDAgQGAwcBAQISBwQJBAkEAg0CAQgCAwcCCgMNGw4PDQYKEQgVJxQLCgcEAgoDCAUJCwUIEAkFBQYJBQMDBwMDBgMDCAQIBwULBgQBAgIEBgUDAgIEAgYLBwMHAw0CDAgEBwUQFgwJEgsXFwYNBwcOBwgFBwMCCgwFBQcCBgIDBQMLBQcDBQIEAQEBAQEBAQEBBAECAgICAgMDBhAFBwwFCgIIBQsCCAMIBQQLBAYGBwUCBw0ICQEBAgYCCgMCAgEBAQECAQEBBQsMDAAA//8AJAAEAa4C2QImAFsAAAAGAKBc9wAA//8AJAAEAa4C2QImAFsAAAAGAFZS9wAA//8AJAAEAbEC0gImAFsAAAAGAOJS9wAA//8AJAAEAa4CsAImAFsAAAAGAKFc7QAA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AwIDBQQCBwIBAQEDBgIJHhAaDwkEAgcDAgMCBAEDAgIBAQQCAgIFAQICBAEGCAQEBgMHDggKEQsIAgcBBwIHAgMDAQMDAQEBAQEBAQQBAQkKAgIFBQUDBQcCCgUCBwEBBAoEBQIEAgEEAwMBBAIEAgEBAQMBAQIBBgIDBQIEAgoHAgIKAQMLBAUIBAYLBgkPCQkRBQUIBAkHBAQIBQUEAwQLBAkGAQkIAgQBAgIEAwQBBwcCBQEBAQMCAgECAQFrAgwDDAICCAUDCAEBBwUBAQEDAQIGAgUBCAcGAgYCAwMDDBcLDQECAQIFAgINAQICAQIDBAQCBwIHBQQFCwIFBQI6BgQCCwQCBwMFCgUGDggODQgKBgIEBwIFCAIBAgIFBgECAgQCBQsIBQ4IAwkECBENBw4ECQQJAgICAwIDAgEIAgIEAgIIAgYBAQUCAQMGAgkCBg0GBAYECAIJBAcFBQkGAwUDBhEIBAgGBgsPBw0CAwUCCAEIAQIDAgICBQQEAgIGAgQGDAcDAwUDBQQCCAgJBgMFCgQJDgUFDAUHAwIJCQUDBQIDBAQFAwIBAwMCAwQBBAECAQIDAQMEAgkIAggDAgYHAQ4KBQUFAgMJBQUIBQUIBQcRBgwDAwYDBQcECAMCBw4MAgcCAgoDCBEJCA8JBQgECBEICw0GBQkHBwILBwoHDAwGAwYEBgsFCQMGCQUEBwUKBgQEBgQHDAcKGAsIAgEJBAkCAwkFAwYGCwcFAwkDBQYFCgQCDggHAgMFAgYCAgQFCAQDBgMBBQcGCQEHAQIKCQQGCAUIBwsEBAkHBQsBAQMJAwQFBAwHBAIFAggHAgcBAQMFAwMBAgICAQEFBQIFCAUDBwICCQUECAQJCAEGCAUPDwgFDQYLBAIMEggMDAcFCAQECAUDBv7QAggFAQIHBgIJAQwGBAIHBAsLBQYIBQgGBQ0GBAgCAwQCCxULBQQDBwIGBAsKCgIKBgsFCg4IBQwECgkDBwoHAggAAQASAPgAvwGhAD8AABMWFhcWFBcWBhUUBgcGFAcGFAcGBgcGBicmJicmIicmJicmJicmJjc2Njc2MzY2NzYzNjY3NjY3NhcWMhcXFhanAw8DAQEBAQEFBQEIAQkGBgoeEgoEAwYFAQMGBAYHBAQJBAEGAwcBAwQEBwMKBQMECgYGDgkHBAwJBAGLCwoIAgcDBgwI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JyYmJyYnJicnJiYnJicmJicmNCcmJyYnJjQnJjY1NjY3NjY3NjY3NjY3NjY3NjY3NjY3NzY2NzY0NzY0NzY2NzY2NzY3NjI3NjY3Njc2Njc2Njc2NzYzNjYzNhY3Njc2MjM2MjMyFzI2FzIWFxYWFxYWByYjJiYjJiYjIgYHBiYHBgcGBwYiBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYHBhUGBgcGBgcGBgcGFAcGFgcGBwYGFxYWFxYUFxQWFRYWFxYWFRYXFhUWNRYWFxYWFxYWFxYWMxYWFxYWFxcWFxYXFhYXFhYXFjYXMhYzNjYjNhY3NjY3NjY3NjYzNjc2Njc2Fjc2Njc2NzY2NzY2NzY3NzY2NzY1NjY3NjY3NTY2NTQ2NTY2NTQmNTQ2NSY0JyYmNyYmJyYxJjQnJiYnJiYnJiYnJiY1JiYnJjUmJycmJicmJicmJhcXFAYHBgYHBhQHBgYHBhQHBjEGFAcGJicmJicmJicmJicmIicmJyYmJyYmJyYmJwYmBwYHBjEGBgcGBgcGBgcGBwYUBwYUBwcGBgcGBxYGFRYWBxUWFhcWFhcWFhcWFhcWFhcWFjMWNjcWNzI2NzY2NzY3Njc2Njc2Njc2JjM2Njc2NjU2NjU2FhcWFgcGBgcGBwYGBwYGBwYGBwYiBwYxBgYHBgYHBgYHBiIHBgYnJiYnJiMmJyYmJycmJyYmJyYnJiYnJiYnJjc2NTY2NSY2NTY2NzY1Njc2MTY2NzY0NzY2NzYxNjYzJjY3Njc2Jj8CNjY3NzYzFhcWFhcWFhcWNjc2Njc2NjcB2AMIBAkJBgkLBgkFAgIFAgcFBAMCAgICAgIDAgUBAQMDAgQDAgIFBgIDAgMFBAICBAIGAQEEAwIHAQIDAwYBAQYBAgIHAgYBAgcCCQgGBQoECBAIDQcFBQgFCgwCBQoFBAgEBAkFCgUOEAoGBAUGAwwMBgQHBQMHAwIEAgQIBwIBCgQCCQYDBgECBQYHAggIBgMEAQUEAgECAgEDAQEBAwIBBAIBAwIEAQICAwIDCQEHAgICAwIICAICBgEHAgQDAgYKCAcBCgIBCgMCBggDBQMJEwsKBAoCBAcDBgwGCA0MCwYFCgMGCQgOBwQIBQkDAgMFJgoHAgUEBQwGBQoHChMIEAYLBwcHAwUHBA4GAwUHBQIHAgUFAgUCAgIHAgcDAgcEAgYBBwcCAgIEAwICAgUBBQEBAwIDAgMBBAICAQIEAQIBAwcDBQgGAgIFBQQFBAIHAgICCQIFBQQJDQYGBAYNBQcFAw4IBQUJBQsBAQYEAwUHBQUJBQwBAQsFAwYCCQQBBQsECAEMCQUFBwQGBAcEAgIEAgECAgMBAQEBAQECAQICAQIBBQICBwECBgQEBQECAgQCBAEDBAIGBwIJAwMCBwIBAwcaAwICAgICAQECAgIBAQQCBAYBAgEEAgQBAgIFAgcCAgcBAwQCCQQCCgkDAggEBwQHAgQCAgUCAQEBAgMGAQUBBAQCAgECAQEBAQEBAQICBQQIAwICBgIJAgQFBwIEBgMLAQQGAwYIBQkBAwUKBQIHAgIHAQEEAwIFAgYDCAcCAgECCQoGBQMDBQQDBAMIBQMGAgEJBAgEAwUDAggECQMDCBMHBQgGCQMGBQQGAg4GBAYCAQYFAQMBAgMBAgIBAQIBAgEBAQQCAQMEAQIHAQQCAQYEAQQBAgEHAgcBARAQBQMDDgkIEAUHDAYGAgIFGgQGBwIEBQUC2AUGBQgMCw0OBwwJBAMEAwwJBQYEAgUHBQUHBAsBCQgFCwQCDAIXKRQFCwYKAgsOAwMNBAoBAQQFAggEAwUCBwEIBAQDBQQEAgYBBwcDAwUFAgcCBQECAQIBAwEBAQIBAgEBAgECAwMFAgIDAgcFBAIEAgICAgQCAgIGBQEJAgIHCAMDAgIHBgsGCQsLBQgCBwoFAwYDBwUGBQIHAwwJBhIdDggPBgkGBAcNBQgNCAgEAgIEAwkLBAIIAgEFAgEBBQIGCgUHAQYBBwQBAgICAgIEBwICAQIBAgEBAgEEAgEDAwEEAQMEAgICFQQBAgEBAgEBAQICAQIBBAIBAgEFAgEDBwEEBAIDBgIEBAIDBQMJBAIKCQQKAQkDCAgFBAYEBAkECQUCCQIBCQINIQwFCQUHDAYECAIOBgMDCAIMBgoCCQEGBQIGBwIEBQEIAwQFAwQGAgcHAgMCAgUDAwIBBQEBAgEBAQECAgICAgUCBAIDBAIBAggBAgQFBAcBCggFBAsFCAkJDAcECwIEBwUFCgURAwUDBwoFBgsFBQkFBQsFAwcDAwcEBQ8HDAMIBA0LBQkEAgMIAgcCAQQEAgoBCAMJAgUCBQECAgI9EAUKBQYOCAIHAwUMBQUIBQsDBwEDBwQD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BAEBAQUEBAsFAAAAAAL/rf/VA4cDCwNXA6YAAAEWBgcGBwYHBgYVBhUHBgYHBhUWBhUGFhUGFAcGFgcUBwYHBgYHBjEGJicmJicmJjU0NjU0NCcmJicmJicmJyYmJyYmByYmJwYiJyYGIwYGBwYiByIGIyYGBwYmBwYGBwYHBgYHBhYXFQYGFRQGFRYGFRYGFRUGBhUUFhcUBhcWFhc2Njc2MjcyNjc2NjM2Fjc2Njc2MTY2JyYmJyYmJyYiJyYmBwYGBwYGBwYUFxY2NzY0NxYGBwYGBwYHBiYHBicmJicmNSY2NzY3NjY3NjY3NjY3NjI3NjYzNhYzNhYXFhYXFhYXFhQXFxYWFxYGBwYGBwYGBwYGBwYGIxY2MxYWMxYXFjIXFhcWFwYWFRQHFBQHFgcGBgcGBgcGBgcGIgciBiMiJicmJicmIyYmJyYmNTQ3NjY3NjIzNhcWFwYmJyImBwYHFhYXFhYXFhY3NjY3NjY3NjY1JicmJicmBicmJicmJicGIicmJiMmJiMmIgciBiMGBgcGFhUGFhUWBhUWFBcWFgcWFxYWFxY2FxYWFxYyFxYyMzI2MzI2NxY2MzY2NzY2NzY2NzY2NzY2Nzc2Njc2NjU2NDc2NzY2MzIWFQYGFRQGBwYGFRQWFRQXBhYXFgYXFhYVFgYXFhYVBiYjJiYnJiYnJicmJiciIiciBgciJiMGBiMmJgcGBgciIyImIwYGIyImIyIGByMiBwYiIwYGJzY2NzY2MzY2NzY2NzY1JiY1NDYnJjQnNCYnJjY1JiYnNCY1JjYnJgYHJhQjIiYjBiYjBgcmIgcGBwYGBwYUBwYGBwYiBwcGFAcGBgcGBgcGBwYXFhYXFhYXFhYXFhYXFhYHBiYHIgYHBgYjIiYjIgYnIiYjIgYjBiYnIgciJiMiBgciJgcGBicmNjc2Njc2Njc2Njc2NzY2NzY2Nzc2Mjc2NzYxNjc2Njc2Njc3Njc2Njc2Njc2NzY2NzY0NzY2NzYmNzY2NzY3Njc2NzY2NzY0MzY3NjY3NjY3NjY3NjY3NjY3NjY3Njc2NzY2NzY3NiYnJiYnJiYjJhYXFhYXFjIXFhYzNhYXFjYzFjYzMjYXMhYXMjYXMhYzNxY2MxYWNzYWMzY2NzMyNjM2FjM2NjcWNjM2Njc2Mjc2Njc2Mjc2NjcFBhQHBgYHBgYHBhYHBgYHBgYHBgYHBgYHBgYHBgYHBgcGBgcGBgcGBgcGBgcWNjcWNjcyNzYWNzY0JzQ0JyY0NTQ0NzY2NzQ2JzY0NQYGA38IAgECAQEFAQIBBwMDAQIBAgEBAQIEAQICBAEDAQIEDQEBBAIBAQMBAQIFAwQNCAcFBQYFBQ4FCB0ODAsFCAIBCQcFBQkHBQYGCQcCAgYEChAIBgICAgEDAgEBAgEBAgEBAQICAQEBAQQBECgVCA4HBgwFDQQDCRAFCAECBQoEAQEIBgMGBAMJBQgPCwoGBwQGAgICChYGAwYHAQEBAgIEDgUPCAYGCAYEBwEFAwUCBgICBAsGBAcCCAMCAgYEBAcECA0IAwUDBQYCBwIHCAkCAgQFAgICAwwCCQICDwsICgIBCAEBCwgHAgEGAgsFAwMEAQECAgQEBQcFDgcFBAgFBAcEBQsHAgYDBwUIBAIIBAUCAwMPCQcSCggBCQkFBQkDCQQBCAQECAQLFQwFDgMCAQICAwMBAgQEBwcEDgcEBQYEBAkECgMCCAcBBRIKBAgFCRQKAQQBAgEDAQEBAgECEAoJBAQIBQcMBwMHAgwUDAYMBQkGBA8MBw4WCgQEAwcEAwYDAQIBAgYCAgIFAgECCAECAQYFAQEDAgQCBAECAQUCAQEBAQICAgIBAg0CBAcMBQUHBAsBAwoGBxMHCBEICxQLChMKDhkNBQkECwUCBgQEBwQFBwQJEQgMDQgCBwMFCgUDBAIFAwIBBAIEBQIDAQQCAgIBAgECAgECAQIBAQEPIBEIAwQHBAgCAgUICQwFGhgFBgQFAQYCAgQBAQwEAgsLBQQCAgUBAQICBQIDCAMJEwsKDwUGCwEHDQYJFAoFCQUDBwUDBgIDBgIDBwMLEgoGCAwWCwgSCAwTCgsGBAEGAwwHBQMHAwYLBgoNAgUDAgQDDAYCAgoIBQYECQYDBAMCCQQGBQIBAgQDBgECAgMHAQUDAQQBAgIKAwcDBQENDwECAgMDAQkFAQICAwEFBQUGBQICBgMFBgIFBQMEBgEDAgUCBgUGAgQLCAsGEgUOGwsFDAYEBwMMBgILGAsJBgIFCAUFCwcDBQQEBQUUCgUDExYKBwkFBQkFDQkGAwMFAwUJBQcJBAUKBQUIBQoTCQQGBAgJBf4nBAEIAQEFBAIHAQICBAIEBgcCCgIEBQIEAwEIAgIDAwUCAQcBAQYGBAQHAggTBwkVCiYSCQ8HAgEBAgEBAgEBAQIDBQMLBgsGBQcOEQIGAwQHEAoEAgoGBwcDBQsFBQkFDA0GBQgPAQ0IBQ0EBQQIGg4IDgcDBwMECAQOHA4FBAMCAwIDAgEBAQMBAQEBAQICAQICAQEBAgECAgEFBAUGBwURCwwJBRcHDAgLCAQEDgULCwgQCgcDAwYDBQgECBAIBAECAQEDAgECAgEFCwMCCw8UCwYIBQQIAwEBAQMCAQUJBgwJCAoHAgIFBA4BAQ0EBgsDBgcCAQICBAYCAw8BCA8HCAQJAwIECQMDAgIHAQECAQEBAQMCAgICAwMEAgIJDxILCxELBQkEBwsJBgIBBQUHAQMCBQYHAQYCCQIFDAUGCgQIBQUICgsIAwgECAUBAQECBQIBAQIDCAMDDAYFCQ0GCgIEAgkEBAkBAQEBBA0FAgICAQIDCAUCDQYDCAMFCQIRAgUFBAUBAgYBAQECAQEBAQICAQEBAQEBAwsTCw0GBAUKBREmDAkXDBIFAgQBAQEBAgMCAQEBAQQBAQEBBwMECQUREAcLBQIFCQUSBwwGCQEBBgcEDgMFDw0FBw0JDSQOBhUKBQcECQgJDQcJBgMJCwYLFwoGCQUGBgMKBQQFAggBAgcBAQIBAgEBAQMBAQEBAgEDAQQBAgECBAMJBgIDBQUHBAYLCAoLEg8IBw8GBRAGBQwGCgMCDQwIAgYEBw4HAgMCAgMDAgIBAgEBAgQKEgoJBQILBQIJARgJBQIPEQkHBAMIDQYHBQwFBQgFAgoEBAECAgUIBQEBAQEBAwMCAQICAQYBAgMCAQECAQMEBQYDCAUCAgMCBAgFCgUCBAMCBAIHBwIHDAsHBg4JBQcDAw8KCgwBAgMGBAkBBAcFCgECCQMCCQkEBAcFBwYIAxwdAgYEBAYPDgYGAwMFAggNCAsMBQULBgkIBAkNDQYIBgILBxAYDAgGAwgHDwIBAgMCAQIBAgECAQIBAQEBAQMBAQECAQECAQEBAQEBAQEDAQEBAwEBAgEDAQEBAgYCAgIEAQKeBwIBCgMBBgUEBwMCAwUDBg0FCgsJAwgDCAICCgUECgQKAQILAgIMDQcHDggBAQEBAgEFAgQCDhsOBQsFEiQTCBEICA0IBBcBBw4HAgcAAAAABAAe/6oC1QM7AKcBEAGnAxcAAAEGBwYGBwYGBwYGBwYGBwYGBwYGBwcGBgcGBgcHBgYHBgYHBgYHBwYUBwYGBwYGBwYGBxYXFhYXFhYXFhcWFhcWFhcWNjcWNjc2Njc2Njc2Fjc2Njc2NDM2NzY2NzY3NjY3NjY3NjQ3NjQ3NjY3NjY3NiY3NjQ3NjY3NjQ1NjY3NiY3NjY3NiY1NiYnJjYnJjQnJjY1JjQnJiYnJjYnJiYnJicmJicmJwc2Njc2Njc0NicmJicmJyYGBwYUBwYGFxYWFwYGJiYnJiYnJjY3NjY3NjY3NjY3FhYXFjIXFjMWFhc2NjcmIyYGBwcGBgcGBgcGBgcGBgcGBgcGFhcWFhcWFhUWFhcWFhc2Njc2Njc2NwM2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2NjcGBiMiJicmJicmNCcmJicmJicmJjU0NjU0JjUmNzY2NzY2NzY2NzY2NzYyNyYmJyYmBwYiBwYHBgYHBiMGJgcGBgcHBhYHBgYHBgYHBgYHBgcGBhUUBgcGBgcGBhcUFhcWFBcWFhcWFhcWFhcWMhUWFhcWFhcWFhcWFhcHBiciBgcGIgciBic2Njc2Njc2Njc2Njc2Njc2NyYmJyYnJicmJyYnJiYnJiYnJiYnJiYnJiYnJiYnJiYnJicmNCcmJicmNicmJjUmJicmJjc0NDc2Jjc2NDc2Njc0NjU2NDc2Njc2NTYmNzY3Njc2Njc3NjE2NzY0NzY1NjY3NjY3NjU2Njc2NzI2NzY2NzY0MzY3NjY3NjY3FjYzMhYzMjYzNjIXFjYXFhYXFhYXFhcWFhcWNhcWNhcWFzY2NzY2NzYzNjY3NjY3NjY3NjY3NhY3NjIzNjYXFgYHBgcGBgcGBgcGBgcGBgcGBgcGBgcWFxYWFxYWFxYWFxQWFxYWFxYWFxYWFxYWFxYXFhcWBgcUFAcHFBQHBgYHBhYHBgYHBhYHBgYHBgcGBwYGBwYUBwYGBwYGBwYHBgYjBgYHBgYHBgYHBwYGBwYGBwYiBwYGIyYmJyYmJyYiJyYmJyY2IycmJicmJiMGBgcGBgcGBgIfBwEEBwMFCAQFCAUECAQDBwMDBAQMBAYFBAcFCwUFAgkHBwMHAwYCAgMGAwcCAgcDAg0BCQUEBwYCBgQCCAICBgMMDQkIBAQFEAUMCgUIAwEICAMIAQ0CBAUDCAIJBgMGAgIHAQUBBAEBAgQCBgEBBgIDAgEBAQEBAQEBAQIBAQEBBAEBAgIGAgMBBQIIBgUGAQEGAgEGBAIFAg8KdgIDAgQFAgEBAQYCBwcICwYMAQICBAIMBAIJCQcBBQIBBQEEAgICCQICBQsHBQkFDAYCCAIEAwIGCQUQDQ4hDw8DBgQFCAMFCgUDBgMFAwIBAQIBBQIGAgUIBQQGBBMIBwQIBAsCsQcOCA0aCwIBAgICAgMFAgUIAgIGAwIDAgUMBgkOCAoTBQcHBQUBBgMCBQMBAQICAgIDBgEBBAMBERwQCA8IChIKAgkFCA4KECEOBgcLFgwGBAcCAQMFAwkIAQEFCgQKCAMFBgURBwEBAgECAQEBAwEEAgMBAgMCAgECAwsDBQIIBwMGCAUGBwIFCwUXCQcFBgUCGQIFDAQFCAMCBAICBQMCBwIDBAUFAgUKBQQIDAMEBgYFBQUDAgUCBAYFCAECAgMCBAICAgUCAgMCAgICAQIBAgMDAwEBAgMCAQYCAwMBAQIBAgEBAQIBAgMBAQUBAgMCAwIFBQIGBgEHCAEBBQkHCQkJBQcDBQYEBgQCCgIJBQkSCwkPBwUHBQQHBAMHAwUOBQoHBAsLBQUKBQgEBAYEBgICCgQCDgcCBQMHAQIEAQQCAQMCAQUDAQIBBAMGBQcbBgYRAwECAQIEBwwHBgQCAwcDAgECAgICAgYCDgMKBwQGDQcJCgUJAgcCAgIGAwIEAgMJAwMDAgECAQECAwEBAwIBAQEBAgEBAQECBwMICgYHCggEBgEFAgIDBgMECAcBAQ4LBQMGBAoCAQoKCwYDCAULCgUIGQ8PDQYEBwUDBwMIDQgKAQIMBgICCQEBBwQDAwgEBwkCYxEDBgwFCREKCBEJChEKCA4IBgwHGAkSCAgPCBYNCQQPEwkFEAYLAwcEBg0HDAgEDAsFCwIEBgIFBAIEAgIBAQIBAQUBAQIBAQEFAgMEAgYCAgMFAgUDBgICBgIGAgoEAgsEAwoCAQYDAgUIBQYNBQgFAg0KBQsFAgMJBAMHAwgQCAUHBA0MAgoMBwgPCA8KBgUEAgsHAxALBwoCAgkBAQoGAggBDQ5rBAYECAgFBQkFBAkDDAICBQIFAwIECgUFDAUKAQEEAQcCAQgOCQUKAwsDAgUFAgIEAgYBBgUCAhIXCgkCAgIDAQICAQEBAgcDAgECBQgICg0ICx0ICQMCAwsDAgYBAwQDAgQDBwH+lQ8cDhYrFwMH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AQEBAQIBAgMBAQEEAgIEAQQDAgQFAwIFAgQDAQUHBQUIBQQGAwUCAQgICQQFCAUFBgQCBwMWEAgHDQYEBwMLESEMCQYCBAYGCwUOAgQIAQcIAQEBAQICAQEBAwICAQIDBgMCBAUCBQUCBwICDwQGBAkFAgYGAgUDAg0DDgQEBwMHDQcECAQbBAcEAgkECQEBCQYFCxEBCAIDAQUDAgkNBg0HBAkHBwoGBwMCCwgLBgMIAwkBBAMEAQEBAQEFAwIEAwYCAwcEDAgFAgoGDQcFBgQHCgUFAgIEAgEBAQUGAgwCBAMCCAYFBwUECQIHAgUOBQIIAwsEAgUJDRUIBQcEAwICAwEBAwMDAQMDAgIGAwkFAgUICQ4YDgUJBQIJBAICBQICAgEBAgIDAQECAQUDAwIFAgUIBAYRCAMIBAYDCgIDCgELChkLBQoGDgcMCQUGDAYDCAMGBQICAgIHAgMEAwEDAQEBAQEBAQMBAwkCBQoEBgcIAgECBAQGEwkPBgQLAQIEBwQEBQUFCAQECAMIAQcECQYECgECAwcDAwYCAgMCAgMCAkYCCgIFCQUFCgUFCwIJAgIGCQIHBwQCBAIDAQIBAgEBAQQCAQIBAQMGBQMBCAICAQICAgMDBAIGAwYGAgsNBwsBDAEFCgYJAQINBwQFCQUVDh0MAwIMDQcNGQoJFAkHDAgLBgIFCwUGDQYIEAcNBQUOAgIGAgQHAgkDAgcECgIEAgIIAwEEBAIDBQMEBwQCAQIKBAIFBwEBAgEDAQEBAQEDAgIFAQEFCQMHAQcCBgYEEw8KBQoFBQQCIAMGAxEUCAMGAwQLBgUQAgcEAwUOBQIEAwcDAQYMAwUJBgQIAwcBCQYFAgIDAgIEAgIBCgIBAQECAQECBQQCAQIEAgYCBgICBQMcAQoFCQgFDQ0FEAYGAgUHBAUHBQwNCAoHDAEJAwIJBgISBAcDBQEFAQEEAgEGAQMCAQEBAgIFAQICBQIIAQEMEgoCAv5LAxAFAwQCBQkDBgYCAgICAgIBBQIECAYKBgUGCAQCBwMQEwgDBAMIBAQIBQwFAQEFAgEBAQECBQMKBwMCBgMPBQYMAgUCAQICAgQCBAEFBAIBAQkFBAICEg0HAgIEBAcFBgMECxYJCQcKAQIHAQECAwIJAQECAwURCAYMBQgLBgYGBQQGBQsGBQcDAwUDCQcDBAcEDQgC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CAcGCAYCBQICBAYDBAEFAwIEAgMBAQEC/vUCAwIEAQEBAgEEAgIIAgIPAg4PBwsHCAECBwIMEAUECgMDBwMGBQIOAwgCAgcBAQIEAgQBAQIBAQICAgUCBAkEAgYDCgcIBAcEDxEOFw0LBwMBCgUHCgMDaQUHBQgOBgQBAQIBAgICAQMCAgIBAgcQCAULBAECAQEBAgEBAQECAQMBAQEBAQECAgAAAwAj/+QC4wIIAg8CaALIAAAlBiYnBiYjBiMiJiciBiMiJgcGBiMiJiMiBiMiJgcGBgcGJgcGFBcWFhcWFhcWFhcWFhcWFxYWFxYyFxYWFxYWMzYWNzYyNzY2NzY2NzY2NzY1NjI1NjU0JjU0JjU2FxYWFxYWMxYWFxYGBwYHBgYHBgYHBgYHBgYHBiIHBgYHBiYjJiYnJiYnJiYjJiYnJiYnJiYnBwYGBwYGBwYHBgcGBgcGBiMGIgciBiMGJyImJyYjJiYnJiInJiYnJiYnJiYnJiYnJiYnJiYnJiY1JjY3NiY3NjY3NjY3NjY3NjI3NjY3NjI3NjY3NjYzNhY3NjY3MjI3NjI3NjY3NjY3NiY1NDYnNCYnJiYnJiYnIiYnJiYnJiYHIgYHBiIHBgcGBgcGBwYGBwYGBwYGBwYGFxYWFxYWFxYXFhYXFjIXFjY3NiI3NjY3NjY1JicmJgcGIgcGBgcWFhcGJicmNjc2Njc2FhcWFhcWFhcUBgcGBgcGBgcGBgcGBgciJiMjJiYnJicmJicmNicmJjc2Jjc2NDc2NDc2Njc2Njc2NzY0MzY2NzY2NzY2NzY2NzYWNzY3MhYXMhYXFhYzFxYWFxYWFxYWFxYXFhYXFhYXNjY3Njc2Njc2Njc2NzY3Njc2NzY2NzY2NzYyNzY2NzI3NjY3NjIzNhYzFhYXFhYXFhYXFhYXFhYXFhYXFhQXFhYXFBYVFAYnNCYnJiY1JicmJyYmIwYjBgYHBgYHBgYHBgYHBgYHBgYHBiIHBgcGFBUGBgcGBgcGFAcGFgcGBhcWNhcyFjcyNjMyFjM2FjMWNjMyNjc2MjcyNjM2Fjc0NgUGBgcGBwYiBwYGBwYGBwYHBiIHBgYnBgYHBgYHBgYHBhQHBgYVFhYVBhYVFhQXFhcWFBcWFxYWMzI2FzY2NzY2NzY2NzY2NzYWNzY2NzY2NzY2NyY0JyY0NSYmNSY2NwLeBQsGCxIHCAYFCAQIDggTNRgFCQUFCQQFBwUFDAUFCwUFDAYDAQECAgIEAgIBAgMJAwkFBQsFBQQEAwcFER8LCwgECwUCBAcDBgoFCAQFBgECBAEBCgIEBgQJAwIFCgYCBgICAgIHAgIBAgsOBAgLBwYDAgQPBwsVDRg4FwgGBQcJBQoSBgIEAgMHAggIAwIJFQsDCAUHAwoFDAQCBAcDAwYCCw0GCgUECAIGAgQHBQsWCQIEAgUBAgcDAgQCAgYBAgEDAgICAgEFAgcECAYCCQkEBgQCAgUDBgQCBQ4ICAIBBQgECBEJBQkFDAICDA8HCxgLAgECAQMFBgYCBAYDBgkFBQcFBA4IBQkFBQoFCAMODAYKAgsFAgYCAgMGBAQOAQEIBQIFAwYDAgoEAwUHCgkFBgEBBQcCAgMDBwUICAgHAgYCBQMPBQcPBxENBAYNCAgQCAUIAwQDAwECAgMCAwUIAgcEBw4HAwcEDggSCQgJDQIDBwEBBAYCAwIBBQEFAQgEBAoLAwoFCwEJCwUDBgQLDwYCBwIECAUECgcOBgQJBQsCAg8MCAULBwMFCAUDAwQFAwIDAQQBAQMBBQQCBAECCAECBgYDBQMFBgMKBAIFAwILCAQFCAQFAwYPBwgHBAgOCAsPCgIGAgwJAggDBQgKAwEBBQICAgNgBwQEAwYBCwIJDwULBgYKCAUJBQQFAwwGAwIHAwUDAgQCAQcBBgIDAQMFAwQBBQEBAwgCDRoMBQgEBQkFAwcDCwECBQQCCg8IBg8HAwcECBIIBf7NBAgGBAgIBQMFBwQDBwILAQgIAgsTCQULBAsKBQIGAQIBAQMBBAEBAQIHCAYCDAMFBwQIDAcHFAcECAMFCwUIAQIIAgECAwMGAwIFCwECAQQCAgEBAeYCBAEBAQICAQEDAgEDAQEBAQEDAQEBAgwZDgwZCw0HAwQIAwcLBwcIAQUCBAEBAQIBAgIBAQUBAgUCAwYECAgBCgEJAg0FBQwGAgYDCQUCBAIFAwIBAgcJBgoFBQgFAgUDEg8JBAoFBQECBQICAgECBQEBAwQGCxINAQYCBQ0FCAcFAwsYCwMGBgQCBgIFAwIBAwICAQEBAQMBAQIDEQcBBQIDAwIHBAIGCQUOBgYLCQMLGAsIDAYLDwgIBQILBQIFAQIEAgQBAgUDAgIBAQECBQIBBAEEAwQFDQcLHA4HDAYKFAcEAgICAwQGAgICAgIDAQQBAQECAQYFAgMCBwQCBgECAwYFBh4JBQwDAgICBgIBBAICAgIFBwkBBQ0DBA4CBgICBgMFAgQMBAUDBQ8BBhEZCwIJAQEGAgIBAgIHAgoQCAcIBQgHBQIDAgMIAQEBBgICBAUBAwgCAQYJCAYHAgkEAgoFAgwIBQ0HBwUGAwIFAwMCBgIDBAIBAgEBAQEBAgEBAgEDAwYGBgMGBQIEBwYDCAgYCwcQCQEIAgsBBAgEBwYCCgEEBggDBQYCBwMIAQIFAQgEAwMBAwEBAQMCAQIDCAYCBQIGDAUPEQUbKBQHDwcQEwwFBgQFCJAOHwwKAwEKAQUBBQECAgMBBQcDBAYCCAYDAwUDCgICCQEJAgkEAQMGAgYLBQYEAgcDAggPCgICAQMBAgEBAQECAQEBAQICAwQYNkADAwMCBgMCAgMCAgECBwEJAQcCBAMHAgYHBQMHBQMEBQUSBggNBwoFAwUNAhQMBwICBwECAgYBBQUDAgMCAgoEBAICBwEBAgQCBAMCBQsECgYDCAgECxcLFyQTAAAAAAQAHv/HAcoCRwBsALsBAgH5AAABBgYHBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGFAcGBgcGBwYGBxYzFhYXFjIXFjMWFjc2Nhc2Njc2Njc2Njc2Njc2Njc2NzY2NzY2NTY2NzY0NzYmJyYnJiY1JiYnJiYnJiYnBzY2NzY2NzY3JicmJiMmBgcGFhYGByYmJyYmNzY3NhYXNjY3NjQ3JjQjJicmJicmJicmBiMiBgcGBgcGBwYUBwYWBxQGFRYWFxYWFxY2Nwc2NzY2NzY3NjY3NjY3Njc2NwYmJyYGJyYmJyYiJyYmJyYmJyYmJyYmJwYGBwYGBwYGBwYUFQYGFxQWFRYWFxYXFhQXFhYXFQYiIyYGByIGIiIjBgYnNjY3NjY3NjY3NjY3NjY3NjQ3NicmBicmJicmJyYmJyYmJyYmJyYmJyY2JycmJicmNCcmJicmNjc2Njc2NDc2Njc2Njc2Njc2Njc2Njc2NzY2NzY2NzY2FxY2MxYWFxYWMxY2MxYWFxYWFzc2NzY2NTY2NTY2NzY0NzcyNjIyMzY2FwYGBwYGBwYGBwYHBgYHBhYXFhYXFhYXFhYXFhYXFhYXFhYXFhYHFhQHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBhQHBgYHBgcGBgcGBgcGBiMGJgciBiciJyYmJyYmJwYGBwcGBgFeAwUCBwQDBgMCBAICAwICBAIDBAMCBwICBAIDAgIGBQQCBQMFAgIDAgYBBAIBCQEDCQIEBgIGBQUNBQgMBwIKAgcDAQQIBAYEAgMFAgIEBAMBBAMEBQICAQUEAgcIAwIDBAMCBQIDBAJdAwcEAwUBAwMCAwMOBQYNAgECAgMGAwUDBQYBAQkTLAoCBwMBAgoBCwMECAMIDwUFBAQLBAMKAwEKBAcBBAEBAQIPBAYJBQ4TCV4DBAgRCAUDAgICBAQCAwQKBA0IBQQJAgIFAggCAQQCAgcLBAIBAgMFAwIFAgUGAwIDAQIBAwIFBQECBQEKAgkHAgQGAgMFAwEMDgwBAwgDBAUCAgECAgMCAgMCAwMCBAIBBQgCAQIDAgYDAwQDAgUCAgEBAwICBAEBBgIEAgEBAQMCAwUDAgEDBQEHBgQIAwMFBgICBAICBgIHAwkXCAcRCQ8KCQEKAQgFAgQKBQQGAwUJBQUMBggDAgMCAgIDAgECBAsBDQ8NAgQMAgICAQUHBQQCAgYDBQIBAQICAwgDAwICBQMCAgMCBAEBBQgDAgMDAQICAwMFBQICAgECBQICAgIGCAQCAgICBAIFAQQKBQMGAgoFCwwGBAcDAwwFBQcDAgoJEQgFCgYFAgILAwYBjQULBQ0MBwsHBwkFBQgFBAgFBgwGBQwFBQgCCQYECg4FBAsFCQYCBQgFCwYIBQIJAwUBBQEFAgMBAQcBBAUCBAUCBggFCgYEBgcCBAYIAgILAgIOCwUGDAYSDAkWEgsBAQsSCgUNBQoHBTcGDwgHBwMLAwcDAwQBAwcFDAwJAgIIBAcICxEHBAMLBg8HAwYCBQIDAQEDAgMGAQEBAgIEAwIGBggIAgYHBQUHBBEbCwQKBAkEBdIHBxAeEA0EBAcFCQoECQkTCgQCAQEBAQEEAgUBCAQCDRILCgMCCxcLBAcEChMKBQoFBg4IEy4UBxAEFRcIDAEIAwIFBQKzAQECAQEBAQMLBgQEBwUEBwQDBgMFCQQGBAIMBQYBAQIFAgQDAgYCAwUCAgYDBAUFBwYCFQoVDQMHAgcSCBkmEAgLBgoFAg4OCAsGAwgFBAMIAgIBAgYCCQ0IBAQCBQYBAQMBAgEBAgEBAQICAgMCDgkECAIC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NyYmJyYmJyYmByIGIyImBwYGByIHIgcGIgcWBhcWFhcWFBcWFhUWBhcWFxYWFxYWFxYWMxY2NzY2NzY2MzY2NzYmNzY2NzY2NzY2NzY2NzY2NTY2NzY2NzY3NjQ3FgYVFhYVFRYWFxYUFxYWFxYWFxYGFxYWFxYVFgcGJicmBicmMSYmJyYmIyYGJyYmJyYGByImByYGByIGIwYmIwYiBwYGBwYGBwYiIwYGBzQ2JwYUBwYGBwYGBwYGBwYGBwYGBwYGJyImIyIGIyImJyYmJyYnJgYnJiYnJiYnJiYnJiYnJiYnJicmJicmJyYmJyY0IyYmJyYmNSY0JyYmNSY0JyYmJyY1JjY1NCY1JjQnJiYnNiYnJjQ1NiY1NiY3NjQ3NTQ2NzQ3JjY3NjY3NjY3NjY3NjY3NjQ3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3Njc2Mjc2Njc2Njc2Mjc2NhcyMhcyFhcWFhcWFhcWFhcWFhc2JjUmNTYyMxYWFxY2FxY2FxY3FhYzFxYzFjYXMhYXMhYzMjYzMhYXFjIzMzI2NzIWNzI2MzYWNzY2NzY3NjY3NjY3BSYmJyYmJyYmJyYmJyYjJiYjBiYHBgYHBgYHBgYHBgcGBgcGBgcGIgcGBgcGFAcGIwYGBwYUBwYGBwYGBwYHBgcGBwYGBwYGBwYGBwYGBwYUBxQGFRQWFxYUFxYWFxYWFxYWFxYXFhYXFhQXFhQXFhYXFhYXFhYXFhYXFhcWFhcWFxYWFxYWFxY2MzY2NzY2NzYyNzY2NzY3Njc2NzY0NzYyNzY2NzY2NyY2NyY2NTQmNTQ2NSY2JzUmNjU0JjU1JiYnNCY1NDYnJiYnJiYnJiYnBAkIBwICBAQCAgIFAQICAwICAgICAwEFAQECBgIBAwMCBgEEBQEBAwICAwEDBAMCAwECAQMEAwUBAQIEAQkKBAoGAwYDBQgFAwgCAg0FBxAGCg8KAwgDBgYCFQkUJhEFAQIBAQEBAgEBAQECAQECBQcFAwkFCxgOESEQBQsFBQgECwICBwEBAQUCAQQCBgIFDAcJBwQVBQwFCQUCBwUBAgQCAwgNEQkEBQQMAwIJBAQDBwMEBQIKEAgGDgIEAgIEBQoHBAkCAQUFAw0LBgkOBwYNBggPCAECAQIEAQIBAwECAQECAwECAQICCgIIBwQECQUEBAoEBgQFCgICBAIKAwMDAgIEAgYBAgoCAgcCBg8ICA8FBQwDAgYBAQEBAQIBAgILCwsFCwkGAwgHBQEKAgsCAwUEBgUFEQYLBAEEBwQGAwECCAUEBgcLDA4FDAUFDAUFCwcHBAcEEhEGAgIBAQIBAQIBAgIBAgIHDx0OChMLCBULCRIIDRYLDAQCCxcLBwECBQICBAMEAQYCBAIBAQMCAgICBwIDAwEFCgQBAwECAQECAwEBAgECBAIDAQQCAgMBCQEGBQsFDBEdDgYMBRAlCwQHBQoVCwsSBwkTCQoBAQUMBQUIBQYMBwwHBAUMBQ4dDwEBCAIHEQkDBgQEBgQFCAUJDwYLGxMDBgQDBgIDBQMJCQUMCgcCAgIIBAYIBQgFAwMHAgwJBQYDBQcFCAUGBAIFAQQFBAUCAgIFAwQBAgMCBQECAgEBAQEDAgIBAQEBAwECAQEDAQUCAwECAQIEBAEEAgIFAQIFAQYEAgYEAgUKBQYKBQUGBQgXDgUJBQQGBAkGAgkFBQcFCBAJAgYFCBQLBw8IBAkFBgwFDAoFBAMCCgoGAwEGAgYDAwUDCwkFCwsFDQsHBAIQDAIGDgcLFwsDBgMDBgQCBwQKGQsjDQcDBQgEBAgECBAGChELBwQLEwkECAT9zAkIBQIFAwIIBAQHBAUKBQYECwwGAwgEBAYFCBMFBQcDBgQDBgIIAQEFCQQIAQUBBwICBwECAgIEAgEDAgEEAgECAwECAgEFAwIBAQEBAQIBAQECAgMBAwUBAgMCAgECAwECAgICAgcEAwQCBgMCAwQCEg0FBQQGCQMFAwMFAwkUCwsXDgIIAgcCAQYEAgMEBgMHBAYBBAMBAwMCDg4HAgIBAQIBAgIBAQECAQEDAQEBAgEFAgIEAgQIAgMSBA8FAwgGBAUIBAcFAwMMBQQFAwUKBQ0PCA4aDgULBRUYCQIJAQEIAgQHBAgEAg0RBQQJAgcEBgwHCwYCBQoFDAgFAgIBAwEBAQEDAQEBAQEDAgEDAQEBAgMECQgOIBAECAULFw0HDQcGDQYWLRcCAgMCAQEBAQECAgEEAgECAQkCAggCAgYEDQcDBwYIBwcFAgcCBQsCAQMBAQYCBQECBwUEBgoEBwUCBgIBAQECBQMJAwIBAQICAQQCChgOBAYFBgkECAQBBwEBBAEDAgEBAQMCAwMECwICBgMFCQkFDgUICQUECAMEBwQF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CQUFCQUKGQsQCQQCCAICBQICBwcFCwIGBgMHAgICAQEBAQEBBAECAgMBAgIEDQUSFQcLDQEBDwgFBQMPBwgIBQQHAgQCAQECAgEBAQEBBAIBAgIGAQIEAgQCAgcDBAQCBwkDAgsLBgcTBwcDBQkFAgUDBAgEBAYCBwwFCBgKCwEKBQICAwIHAwICBQEBAgIBAgIBAQYGAwYEAgEHAQIGCAQJBQsUEQgPCAQGAgcBAQIJAgMGAgIDAQUCBwIJBAcMBQMEBQgHAwoFBQkBAQIBAQIFBwIMCwYFAgULCggEBAIFAQQBAQIBBwoFAgkKBwQQCwQGBgEBAQEEAwEBAQECAQECBwEIBQQIBAUIBQkECQcFEQoFCQoECQEDBQQDBQMBBQICAwICBQMCAQIBBAICAQMGAgQFAgIJAwUIDh8QCwEBFhEHBwUMEQUJBgoEAgoMBQwaDgEDAwECAgECAQQBAgEBAgICAQIBAgIHAwUCAQICAwIFAgMKBRcHAgIBAQIBAgMCAQECBQEBCwMGBgMDBgIDCwQJCwYFCwYFCQUGDAUDBwMOBAoGCgYCBQkFDQYEBAgFAgUDCwQEAwcEAgMCAgQBAQEBAgEBAQECBQUKBgUGBRMTCwUIBAoVCRAMDQgEAgQJBQgQCA4NBQ0HCwQCAgQBAgIBAwEFAQUDAgINAwUCDAoFCQUNCwgRJw4QDggFCgUFCQUIEAgHDgcHCwcFAQEDAgIGCAQCAQICAQQBAQIBAQEPFwwJDwoIAwoBBBAGCw0GCwgIDwkCCAQGBAMGBAYDAwYDCQEICAUFCAYCAwIDAgICAwEBBAEEAQMCAgcGCAIKBgMCBQIODAUFDAUSAhIEBQsGBQ0FEBAIDAcBAgwDCAUCBgIGCgUCBgQDAQIHAQEDBwUECgQEDwgEDAcMAwwGBAYEAgECAgEDBgUECQQEBgQDBwIFAwMCCAwHDwcCCgMJBgQHBAURBgkCAgcIAgEEAgIIBAoNBAMHAw4HBQgOCAUJBQUJBQQIAwkOCAYCAgECBgEBAwIBBwoEBwcFDAYFBggIAQEMCAIHCgkSCwUHBQIPAwoDCA4JDhUMAwEBAgECAgECAgEBAgIBAgEBAgQFBAUKBQUKDiMRCBAICA0IBQsGCBUJCRMIBQoFCQECBQICBAIDBQMAAf////EB8gLJAbcAAAEWFhcWFxYGFRUUFgcU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ADIAMAAxADIAIABiAHkAIABGAG8AbgB0ACAARABpAG4AZQByACwAIABJAG4AYwAgAEQAQgBBACAATgBlAGEAcABvAGwAaQB0AGEAbgAgACgAZABpAG4AZQByAEAAZgBvAG4AdABkAGkAbgBlAHIALgBjAG8AbQApACAAdwBpAHQAaAAgAFIAZQBzAGUAdgBlAGQAIABGAG8AbgB0ACAATgBhAG0AZQAgACIARwByAGkAZgBmAHkAIgBHAHIAaQBmAGYAeQBSAGUAZwB1AGwAYQByAEYAbwBuAHQARABpAG4AZQByACwASQBuAGMARABCAEEATgBlAGEAcABvAGwAaQB0AGEAbgA6ACAARwByAGkAZgBmAHkAOgAgADIAMAAxADIAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMABHAHIAaQBmAGYAeQAtAFIAZQBnAHUAbABhAHIARwByAGkAZgBmAHkAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABGAG8AbgB0ACAARABpAG4AZQByACwAIABJAG4AYwAgAEQAQgBBACAATgBlAGEAcABvAGwAaQB0AGEAbgAuAEYAbwBuAHQAIABEAGkAbgBlAHIALAAgAEkAbgBjACAARABCAEEAIABOAGUAYQBwAG8AbABpAHQAYQBuAFMAcQB1AGkAZABoAHQAdABwADoALwAvAHcAdwB3AC4AZgBvAG4AdABiAHIAbwBzAC4AYwBvAG0ALwBmAG8AdQBuAGQAcgBpAGUAcwAvAG4AZQBhAHAAbwBsAGkAdABhAG4AaAB0AHQAcAA6AC8ALwB3AHcAdwAuAHMAcQB1AGkAZABhAHIAdAAuAGMAbwBtAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsAA0AVgBlAHIAcwBpAG8AbgAgADEALgAxAC4AIABUAGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGkAcwAgAGEAdgBhAGkAbABhAGIAbABlACAAdwBpAHQAaAAgAGEAIABGAEEAUQAgAGEAdAA6AA0AaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATAACAAAAAAAA/7MAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAAADpAOoA4gDjAOQA5QDrAOwA7QDuAOYA5wD0APUA8QD2APMA8gDoAO8A8AADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAIIAgwCEAIUAhgCHAIgAiQCKAIsAjACNAI4AjwCQAJEAkwCUAJUAlgCXAJgAnQCeAKAAoQCiAKMApACmAKcAqQCqAKsBAgCtAK4ArwCwALEAsgCzALQAtQC2ALcAuAC5ALoAuwC8AQMAvgC/AMAAwQDCAQQAxADFAMYAxwDIAMkAygDLAMwAzQDOAM8A0ADRANMA1ADVANYA1wDYANkBBQDbANwA3QDeAN8A4ADhAL0BBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoHdW5pMDBBMARFdXJvDnBlcmlvZGNlbnRlcmVkBm1hY3JvbglzZnRoeXBoZW4IZG90bGVzc2oCSUoCaWoEaGJhcgZJdGlsZGUGaXRpbGRlC0pjaXJjdW1mbGV4C2pjaXJjdW1mbGV4C2NvbW1hYWNjZW50DGtjb21tYWFjY2VudAxrZ3JlZW5sYW5kaWMMUmNvbW1hYWNjZW50DHJjb21tYWFjY2VudARMZG90Cmxkb3RhY2NlbnQGTmFjdXRlBm5hY3V0ZQZSYWN1dGUGUmNhcm9uBnJjYXJvbgABAAH//wAP\"","module.exports = \"AAEAAAALAIAAAwAwT1MvMkI5aIoAAAE4AAAAVmNtYXCyQkCkAAAE9AAABEZnYXNw//8AAwAAVlQAAAAIZ2x5ZgytTTAAAArwAABEaGhlYWQCi2lDAAAAvAAAADZoaGVhEwIH2gAAAPQAAAAkaG10eE8AAgAAAAGQAAADZGxvY2HZvurEAAAJPAAAAbRtYXhwAOkAPAAAARgAAAAgbmFtZXqzGMUAAE9YAAAExXBvc3QrW32LAABUIAAAAjMAAQAAAAEAAHFc9f1fDzz1AAsIAAAAAADNtoviAAAAAM22j2YAAP4ACAALAAAAAAYAAQAAAAAAAAABAAAKAP4AAQAJAAAAAAAIAAABAAAAAAAAAAAAAAAAAAAA2QABAAAA2QA8AA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEOwGQAAUACAWaBTMAAAEbBZoFMwAAA9EAZgISAAACAQUBAQEBAQEBgAAADwAAAAoAAAAAAAAAAEhMICAAQAAgISIHAP8AAM0KAAIAIAABEUAAAAAAAAYAAAACAAAAAgAAAAQAAAAHAAAABgAAAAgAAAAGAAAAAgAAAAQAAAAEAAAABgAAAAYAAAACAAAABQAAAAIAAAAEAAAABgAAAAMAAAAGAAAABQAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAIAAAACAAAABQAAAAUAAAAFAAAABQAAAAgAAAAGAAAABgAAAAUAAAAGAAAABQAAAAUAAAAGAAAABgAAAAIAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAQAAAAEAAAABAAAAAYAAAAEAAAAAwAAAAUAAAAFAAAABAAAAAUAAAAFAAAABQAAAAUAAAAFAAAAAgAAAAQAAAAFAAAAAgAAAAYAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAYAAAAGAAAABgAAAAUAAAAGAAAABQAAAAIAAAAFAAAABwAAAAIAAAACAAAABQAAAAYAAAAGAAAAAgAAAAQAAAAJAAAABwAAAAUAAAAJAAAABAAAAAYAAAADAAAABQAAAAYAAAACAAAAAwAAAAcAAAAFAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAAUAAAAFAAAABQAAAAUAAAAFAAAAAwABAAMAAAADAAAAAwAAAAcAAAAGAAAABgAAAAYAAAAGAAAABwAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAGAAAABAAAAAUAAAAFAAAABQAAAAUAAAADAAAAAwABAAMAAAADAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAYAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAEAAAABgAAAAcAAAAFAAAABQAAAAIAAAAGAAAABQAAAAcAAAAGAAAABgAAAAUAAAAGAAAABQAAAAYAAAAHAAAABgAAAAUAAAAGAAAABgAAAAYAAAAGAAAABgAAAAIAAAACAAAAAgAAAAQAAAAEAAAABAAAAAYAAAACAAAABgAAAAQAAAAEAAAABgAAAAkAAAAAAAADAAAAAwAAABwAAQAAAAABNAADAAEAAAM2AAQBGAAAAEIAQAAFAAIAfgCjAKYAqQCsAK4AsQC4ALsA/wEPARsBMQFIAVMBWQFhAWUBbwF4AX4BkgN+IBQgGiAeICAgIiAmIDogrCEi//8AAAAgAKAApQCoAKsArgCwALQAuwC/AQwBGgExAUcBUgFYAWABZAFuAXgBfQGSA34gFCAYIBwgICAiICYgOSCsISL////h/8D/v/++/73/vP+7/7n/t/+0/6j/nv+J/3T/a/9n/2H/X/9X/0//S/84/J7gt+C04LPgsuCx4K7gnOAr37YAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAgIAAAABAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AAAB4AHkAewB9AIUAigCQAJUAlACWAJgAlwCZAJsAnQCcAJ4AnwChAKAAogCjAKUApwCmAKgAqgCpAK4ArQCvALAA0gBrAGIAYwAAANMAbwCTAGoAZwDYAG0AZgAAAHoAjAAAAGwAAAAAAGQAbgAAAAAAAAAAAAAAAAAAAAAAmgCsAHMAYQBpAAAAygAAAAAAaAByANQAYAB0AHcAiQC9AL4AAADLAM8A0ADMAM0AqwAAALMAxwAAAAAA1QDWAAAAAAAAAHAAzgDRAAAAdgB+AHUAfwB8AIEAggCDAIAAhwCIAAAAhgCOAI8AjQC6AAAAAAAAAAAAAAAAAHEABAEQAAAAQABAAAUAAAB+AKMApgCpAKwArgCxALgAuwD/AQ8BGwExAUgBUwFZAWEBZQFvAXgBfgGSIBQgGiAeICAgIiAmIDogrCEi//8AAAAgAKAApQCoAKsArgCwALQAuwC/AQwBGgExAUcBUgFYAWABZAFuAXgBfQGSIBQgGCAcICAgIiAmIDkgrCEi////4f/A/7//vv+9/7z/u/+5/7f/tP+o/57/if90/2v/Z/9h/1//V/9P/0v/OOC34LTgs+Cy4LHgruCc4CvftgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAWACoAPgB4ALoBLgFgAW4BigGmAd4B+AIGAhQCIAI6AnICggKoAtIC/AMeA0YDZAOgA8wD4AP2BDAERgR+BKgE5gUGBTAFTAVoBYAFlgW4BdAF3AXwBjIGQgZsBpYGugbaBwgHLgdYB2wHiAe0B94IJghICHYIiAimCLgI5AjyCQgJLglOCWoJiAmuCc4J9AoOCiIKPgpwCnwKpAq8CuALAAseCzgLYguEC5wLyAvyDDoMXgyGDLAMvAzmDQoNCg0eDUwNcg2uDcIN1g4yDoQOlg76DyAPQA9UD3APjg+cD7AQABAqEFoQiBC+EPwRKhFmEY4RuBHgEggSOBJgEnwSmhK+EtoTAhNKE34TshPuFDAUZBSuFOYVEhU+FXIVnhXQFfIWJhZcFpAWzBcQF0QXiBfAF+YYHBhQGIwYwBjeGPoZHhk6GWQZmhnOGgIaPhqAGrQa0hr+GyYbTBt6G6Ab0hv0HCYcWhyOHMIc6B0YHVQdYB2gHc4d9B4wHm4eoB7gHyAfSh90H7Af5iAYIF4gnCDCINAg3iDsIPohDiEiITYhUCFeIXghpCHOIgIiNAACAAAAAAUABwAAAwAHAAABESERAREhEQUA+wABAAMABwD5AAcA/v/7AQUAAAIAAAAAAQAHAAADAAcAADERIREBESERAQD/AAEAAQD/AAIABQD7AAACAAAFAAMABwAAAwAHAAAZASERIREhEQEAAQABAAUAAgD+AAIA/gAAAgAAAAAGAAcAAAMAHwAAAREhEQERIREhESERIREhESERIREhESERIREhESERIREEAP4A/wD/AAEA/wABAAEAAgABAAEA/wABAP8A/wD+AAIAAwD9AP4AAQABAAMAAQABAP8AAQD/AP8A/QD/AP8AAQD/AAADAAAAAAUABwAAAwAHACMAAAERIREBESERAREhESERIREhESERIREhESERIREhESERIREhEQQAAQD7AAEAAQD+AAIA/wABAP8AAQABAAIA/gABAP8AAQD/AAIAAQD/AAIAAQD/APwAAQABAAEAAQABAAEAAQD/AP8A/wD/AP8A/wD/AAAPAAAAAAcABwAAAwAHAAsADwATABcAGwAfACMAJwArAC8AMwA3ADsAADERIREhESERAREhGQIhEQERIREhESERAREhESERIREhESERAREhESERIREhESERAREhEQERIREhESERAQAEAAEA+wABAAEAAQABAAEAAQD6AAEAAQABAAEAAQD+AAEA+wABAAEAAQACAAEA+wABAAQAAQABAP8AAQD/AAEAAQD/AAEAAQD/AP8AAgD+AAIA/gACAAEA/wABAP8AAQD/AAEAAQD/AAIA/gACAP4AAQABAP8AAQABAP8AAQD/AAAABQAAAAAFAAcAAAMABwAPABMAFwAAIREhEQERIREhESERIREhEQERIRkCIREBAAMA/AABAAMA/QADAAEA+wABAAMAAQD/AAEAAgD+AAIAAQABAPwAAwACAP4AAgABAP8AAAAAAAEAAAUAAQAHAAADAAAZASERAQAFAAIA/gAAAAADAAAAAAMABwAAAwAHAAsAACERIREBESEZAiERAQACAP0AAQACAAEA/wABAAUA+wAFAAEA/wAAAAMAAAAAAwAHAAADAAcACwAAMREhGQIhEQERIRECAAEA/QACAAEA/wABAAUA+wAFAAEA/wAAAAAABQAAAgAFAAcAAAMABwALAA8AGwAAGQEhESERIREBESERIREhEQERIREhESERIREhEQEAAwABAPsAAQADAAEA/QD/AAEAAQABAP8AAwABAP8AAQD/AAIAAQD/AAEA/wD9AAIAAQACAP4A/wD+AAAAAAEAAAEABQAGAAALAAABESERIREhESERIRECAP4AAgABAAIA/gABAAIAAQACAP4A/wD+AAABAAD/AAEAAQAAAwAAGQEhEQEA/wACAP4AAAAAAQAAAwAEAAQAAAMAABkBIREEAAMAAQD/AAAAAAEAAAAAAQABAAADAAAxESERAQABAP8AAAMAAAAAAwAHAAADAAcACwAAMREhGQIhGQIhEQEAAQABAAIA/gACAAMA/QADAAIA/gAAAAAFAAAAAAUABwAAAwAHAA8AFwAbAAAhESERAREhEQERIREhESERIREhESERIREBESERAQADAP4AAQD9AAEAAQD/AAMA/wABAAEA/AADAAEA/wADAAEA/wD+AAUA/QD/AP8AAwABAAEA+wAFAAEA/wAAAQAAAAACAAcAAAUAACERIREhEQEA/wACAAYAAQD5AAAEAAAAAAUABwAABQAJAA0AEQAAMREhESERAREhGQIhEQERIREBAAQA/AADAAEA+wAEAAMA/gD/AAMAAQD/AAEAAgD+AAIAAQD/AAAABQAAAAAEAAcAAAMABwALAA8AEwAAMREhGQIhEQERIRkCIREBESERAwABAPwAAwABAPwAAwABAP8AAQACAP4AAgABAP8AAQACAP4AAgABAP8AAAAAAwAAAAAFAAcAAAMABwATAAABESEZAiERAREhESERIREhESERAQABAAEAAQD8AAEAAwD/AAIABAABAP8AAQABAP8A+wACAAIA/wADAAEA+QAAAAAAAwAAAAAFAAcAAAMABwAPAAAxESEZAiERAREhESERIREEAAEA+wAFAPwAAwABAP8AAQACAP4AAgAEAP8A/gD/AAAAAAAEAAAAAAUABwAAAwAHAA8AEwAAIREhGQIhESERIREhESEZAiERAQADAAEA+wABAAMA/QADAAEA/wABAAIA/gAFAP4A/wD+AAUAAQD/AAAAAAMAAAAABQAHAAADAAcADQAAIREhGQIhGQIhESERAgABAAEA/AAFAAMA/QADAAIA/gACAAEAAQD+AAAAAAcAAAAABQAHAAADAAcACwAPABMAFwAbAAAhESERAREhESERIREBESERAREhESERIREBESERAQADAPwAAQADAAEA/AADAPwAAQADAAEA/AADAAEA/wABAAIA/gACAP4AAgABAP8AAQACAP4AAgD+AAIAAQD/AAAAAAQAAAAABQAHAAADAAcADwATAAAhESERAREhEQERIREhESERAREhEQEAAwD8AAEAAwD9AAMAAQD8AAMAAQD/AAQAAgD+AP0AAgABAAIA+wAFAAEA/wAAAAACAAAAAAEABQAAAwAHAAAxESERAREhEQEA/wABAAEA/wAEAAEA/wAAAgAA/wABAAUAAAMABwAAGQEhEQERIREBAP8AAQD/AAIA/gAFAAEA/wAAAAAHAAAAAAQABwAAAwAHAAsADwATABcAGwAAIREhEQERIREBESERAREhGQIhGQIhGQIhEQMAAQD+AAEA/gABAP4AAQABAAEAAQABAP8AAQABAP8AAQABAP8AAQABAP8AAQABAP8AAQABAP8AAQABAP8AAAAAAAIAAAIABAAFAAADAAcAABkBIREBESERBAD8AAQAAgABAP8AAgABAP8AAAAABwAAAAAEAAcAAAMABwALAA8AEwAXABsAADERIRkCIRkCIRkCIREBESERAREhEQERIREBAAEAAQABAP4AAQD+AAEA/gABAAEA/wABAAEA/wABAAEA/wABAAEA/wABAAEA/wABAAEA/wABAAEA/wAAAAUAAAAABAAHAAADAAcACwAPABMAACERIREBESEZAiEZAiERAREhEQEAAQD/AAEAAQABAPwAAwABAP8AAgABAP8AAQABAP8AAQACAP4AAgABAP8AAAYAAP8ABwAHAAADAAcAEQAVABkAHQAAAREhEQERIRkCIREhESERIREBESERAREhEQERIREBAAUA/AABAAEA/wACAAEA+gABAAUAAQD6AAUA/wABAP8AAwACAP4A/wABAAIAAQD9AP8A/wAGAPoAAgAEAPwABAABAP8AAAACAAAAAAUABwAACwAPAAAxESERIREhESERIRkCIREBAAMAAQD/AP0AAwAGAP0AAwD6AAIA/gAGAAEA/wAAAAAAAwAAAAAFAAcAAAMABwATAAABESERAREhEQERIREhESERIREhEQQAAQD/AAEA+wAEAP0AAwD9AAMAAQACAP4AAwACAP4A/AAHAP8A/gD/AP4A/wAAAwAAAAAEAAcAAAMABwALAAAhESERAREhGQIhEQEAAwD8AAEAAwABAP8AAQAFAPsABQABAP8AAAACAAAAAAUABwAAAwALAAABESERAREhESERIREEAAEA+wAEAP0AAwABAAUA+wD/AAcA/wD7AP8AAAEAAAAABAAHAAALAAAxESERIREhESERIREEAP0AAwD9AAMABwD/AP4A/wD+AP8AAAEAAAAABAAHAAAJAAAxESERIREhESERBAD9AAMA/QAHAP8A/gD/AP0AAAAAAwAAAAAFAAcAAAcACwAPAAAhESERIREhEQERIRkCIREBAAMA/wACAPsAAQAEAAEAAgABAPwAAQAFAPsABQABAP8AAAABAAAAAAUABwAACwAAMREhESERIREhESERAQADAAEA/wD9AAcA/QADAPkAAwD9AAABAAAAAAEABwAAAwAAMREhEQEABwD5AAACAAAAAAUABwAAAwAHAAAxESEZAiERBAABAAEA/wABAAYA+gAAAAAABwAAAAAFAAcAAAMABwALAA8AEwAbAB8AACERIREBESERAREhEQERIRkCIREBESERIREhEQERIREEAAEA/gABAP4AAQD/AAEAAQD8AAEAAQD/AAMAAQABAP8AAQABAP8AAQABAP8AAgABAP8AAQABAP8A+wAHAP0A/wD9AAYAAQD/AAAAAQAAAAAFAAcAAAUAADERIREhEQEABAAHAPoA/wAAAAADAAAAAAUABwAAAwALABMAAAERIREBESERIREhESERIREhESERAgABAP0AAQABAP8AAwD/AAEAAQAEAAEA/wD8AAcA/wD/APsABQABAAEA+QAAAAADAAAAAAUABwAAAwALABMAAAERIREBESERIREhESERIREhESERAgABAP0AAQABAP8AAwD/AAEAAQAEAAEA/wD8AAcA/wD/APsAAwABAAMA+QAAAAAEAAAAAAUABwAAAwAHAAsADwAAIREhEQERIREhESERAREhEQEAAwD8AAEAAwABAPwAAwABAP8AAQAFAPsABQD7AAUAAQD/AAACAAAAAAUABwAAAwANAAABESERAREhESERIREhEQQAAQD7AAQA/QADAP0AAwADAP0A/QAHAP8A/QD/AP4AAAAABQAA/wAGAAcAAAMABwALAA8AEwAAAREhEQERIREBESERIREhEQERIREEAAIA+wADAPwAAQADAAEA/AADAP8AAQD/AAEAAQD/AAEABQD7AAUA+wAFAAEA/wAAAAADAAAAAAUABwAAAwAHABEAACERIREBESERAREhESERIREhEQQAAQD/AAEA+wAEAP0AAwD9AAIA/gADAAMA/QD9AAcA/wD9AP8A/gAABQAAAAAFAAcAAAMABwALAA8AEwAAMREhGQIhEQERIREBESEZAiERBAABAPwAAwD8AAEABAABAP8AAQACAP4AAgABAP8AAQACAP4AAgABAP8AAAAAAQAAAAAFAAcAAAcAACERIREhESERAgD+AAUA/gAGAAEA/wD6AAAAAAMAAAAABQAHAAADAAcACwAAIREhEQERIREhESERAQADAPwAAQADAAEAAQD/AAEABgD6AAYA+gAABQAAAAAFAAcAAAMABwALAA8AEwAAIREhEQERIREhESERAREhESERIRECAAEA/gABAAEAAQD8AAEAAwABAAEA/wABAAEA/wABAP8AAQAFAPsABQD7AAAAAAMAAAAABQAHAAADAAsAEwAAAREhEQERIREhESERIREhESERIRECAAEA/QABAAEA/wADAP8AAQABAAIAAQD/AP4ABwD7AP8A/wABAAEABQD5AAAAAAkAAAAABQAHAAADAAcACwAPABMAFwAbAB8AIwAAMREhESERIREBESERIREhEQERIREBESERIREhEQERIREhESERAQADAAEA/AABAAEAAQD+AAEA/gABAAEAAQD8AAEAAwABAAIA/gACAP4AAgABAP8AAQD/AAEAAQD/AAEAAQD/AAEA/wABAAIA/gACAP4AAAMAAAAABQAHAAAHAAsADwAAIREhESERIREBESERIREhEQIA/wADAP8A/QABAAMAAQADAAEA/wD9AAQAAwD9AAMA/QAABQAAAAAFAAcAAAUACQANABEAFwAAMREhESERAREhGQIhGQIhGQIhESERAQAEAPwAAQABAAEA/AAFAAIA/wD/AAIAAQD/AAEAAQD/AAEAAQD/AAEAAQABAP4AAAABAAAAAAMABwAABwAAMREhESERIREDAP4AAgAHAP8A+wD/AAADAAAAAAMABwAAAwAHAAsAACERIREBESERAREhEQIAAQD+AAEA/gABAAIA/gACAAMA/QADAAIA/gAAAAABAAAAAAMABwAABwAAMREhESERIRECAP4AAwABAAUAAQD5AAAFAAAEAAUABwAAAwAHAAsADwATAAAZASERIREhEQERIREhESERAREhEQEAAwABAPwAAQABAAEA/gABAAQAAQD/AAEA/wABAAEA/wABAP8AAQABAP8AAAAAAQAA/wAEAAAAAAMAABkBIREEAP8AAQD/AAAAAAIAAAUAAgAHAAADAAcAAAERIREBESERAQABAP4AAQAFAAEA/wABAAEA/wAAAwAAAAAEAAUAAAMADQARAAAZASEZAiERIREhESERAREhEQEAAgD+AAIAAQD9AAIAAQABAP8A/wABAAEAAQABAPwABAABAP8AAAAAAAIAAAAABAAHAAADAA0AAAERIREBESERIREhESERAwABAPwAAQACAP4AAgABAAMA/QD/AAcA/gD/AP0A/wAAAAADAAAAAAMABQAAAwAHAAsAACERIREBESEZAiERAQACAP0AAQACAAEA/wABAAMA/QADAAEA/wAAAAIAAAAABAAHAAADAA0AABkBIRkCIREhESERIREBAAIA/gACAAEAAQADAP0A/wABAAMAAQACAPkAAAAAAAMAAAAABAAFAAADAA0AEQAAIREhEQERIREhESERIRkCIREBAAMA/AABAAIAAQD9AAIAAQD/AAEAAwD/AAEA/gD/AAMAAQD/AAAAAAACAAAAAAQABwAACwAPAAAhESERIREhESERIRkCIREBAP8AAQABAAIA/gACAAQAAQABAP8A/wD8AAYAAQD/AAAAAwAA/wAEAAUAAAMABwARAAAZASERAREhEQERIREhESERIREDAP0AAQACAP4AAgD+AAMA/wABAP8AAwACAP4A/gABAAEAAgABAPsAAAIAAAAABAAHAAADAAsAACERIREhESERIREhEQMAAQD8AAEAAgD+AAQA/AAHAP4A/wD8AAACAAAAAAEABwAAAwAHAAAxESERAREhEQEA/wABAAUA+wAGAAEA/wAAAwAA/wADAAcAAAMABwALAAAZASEZAiERAREhEQIAAQD/AAEA/wABAP8AAQAFAPsABgABAP8AAAAFAAAAAAQABwAAAwAHAAsADwAXAAAhESERAREhEQERIRkCIREBESERIREhEQMAAQD+AAEA/wABAAEA/AABAAEA/wABAP8AAQABAP8AAgABAP8AAQABAP8A/AAHAPwA/wD+AAAAAQAAAAABAAcAAAMAADERIREBAAcA+QAABAAAAAAFAAUAAAMABwANABEAAAERIREBESERIREhESERAREhEQIAAQABAAEA+wACAP8AAgABAAEAAwD9AP8ABAD8AAUA/wD8AAQAAQD/AAACAAAAAAQABQAAAwAJAAAhESERIREhESERAwABAPwAAwD+AAQA/AAFAP8A/AAAAAAEAAAAAAQABQAAAwAHAAsADwAAIREhEQERIREhESERAREhEQEAAgD9AAEAAgABAP0AAgABAP8AAQADAP0AAwD9AAMAAQD/AAACAAD/AAQABQAAAwANAAABESERAREhESERIREhEQMAAQD8AAMA/gACAP4AAQADAP0A/gAGAP8A/QD/AP8AAAAAAgAA/wAEAAUAAAMADQAAGQEhEQERIREhESERIREBAAIA/gACAP4AAwABAAMA/QD+AAEAAQADAAEA+gAAAgAAAAAEAAUAAAcACwAAMREhESERIREBESERAQABAP8AAQACAAUA/wD/AP0ABAABAP8AAAUAAAAABAAFAAADAAcACwAPABMAADERIRkCIREBESERAREhGQIhEQMAAQD9AAIA/QABAAMAAQD/AAEAAQD/AAEAAQD/AAEAAQD/AAEAAQD/AAAAAAIAAAAABAAHAAADAA8AACERIREBESERIREhESERIRECAAIA/QD/AAEAAQACAP4AAQD/AAEAAwABAAIA/gD/AP0AAAAAAgAAAAAEAAUAAAMACQAAGQEhGQIhESERAQACAAEAAQAEAPwA/wABAAQA+wAAAAAABQAAAAAFAAUAAAMABwALAA8AEwAAIREhEQERIREhESERAREhESERIRECAAEA/gABAAEAAQD8AAEAAwABAAEA/wABAAEA/wABAP8AAQADAP0AAwD9AAAAAAUAAAAABQAFAAADAAcACwAPABMAACERIREhESERAREhESERIREhESERAQABAAEAAQD+AAEA/QABAAMAAQABAP8AAQD/AAEAAwD9AAQA/AAEAPwAAAkAAAAABQAFAAADAAcACwAPABMAFwAbAB8AIwAAMREhESERIREBESERIREhEQERIREBESERIREhEQERIREhESERAQADAAEA/AABAAEAAQD+AAEA/gABAAEAAQD8AAEAAwABAAEA/wABAP8AAQABAP8AAQD/AAEAAQD/AAEAAQD/AAEA/wABAAEA/wABAP8AAAMAAP8ABAAFAAADAAcADwAAGQEhEQERIREBESERIREhEQMA/QABAAIA/gACAAEA/wABAP8AAwADAP0A/gABAAEAAwD7AAAAAAMAAAAABQAFAAAHAAsAEwAAMREhESERIREBESEZAiERIREhEQEAAQADAP0AAQD9AAUA/wABAAEA/wD/AAIAAQD/AAEAAQABAP8A/wAAAAAABQAAAAAEAAcAAAMABwALAA8AEwAAIREhEQERIREBESEZAiEZAiERAgACAP0AAQD+AAEAAQACAAEA/wABAAIA/gACAAEA/wABAAIA/gACAAEA/wAAAQAAAAABAAcAAAMAADERIREBAAcA+QAABQAAAAAEAAcAAAMABwALAA8AEwAAMREhGQIhGQIhEQERIREBESERAgABAAEA/gABAP0AAgABAP8AAQACAP4AAgABAP8AAQACAP4AAgABAP8AAAAABAAABQAGAAcAAAMABwALAA8AABkBIREhESERAREhESERIREBAAIAAgD8AAIAAgABAAUAAQD/AAEA/wABAAEA/wABAP8AAAAAAgAAAAABAAcAAAMABwAAMREhEQERIREBAP8AAQAFAPsABgABAP8AAAIAAAAABAAHAAADABcAABkBIREBESERIREhESERIREhESERIREhEQEAAQD/AAEA/wABAAEAAQD/AAEA/wACAAMA/QD+AAEAAQADAAEAAQD/AP8A/QD/AP8AAAAAAgAAAAAFAAcAAA8AEwAAMREhESERIREhESERIREhEQERIREBAP8AAQABAAIA/gADAP0AAwABAAIAAQACAP4A/wD+AP8ABgABAP8AAAMAAP8ABQAHAAAXABsAHwAAAREhESERIREhESERIREhESERIREhESERAREhESERIRECAP4AAgD+AAIA/wADAP8AAgD+AAIA/gD9AAEAAwABAP8AAQABAAEAAQABAAEA/wD/AP8A/wD/AP8ABgACAP4AAgD+AAAAAAIAAAAAAQAHAAADAAcAADERIREBESERAQD/AAEAAwD9AAQAAwD9AAACAAAGAAMABwAAAwAHAAAZASERIREhEQEAAQABAAYAAQD/AAEA/wAACwAA/wAIAAcAAAMABwALAA8AEwAXABsAHwAjACcAKwAAAREhEQERIREhESERAREhEQERIREBESERAREhEQERIREBESERIREhEQERIRECAAQA+wABAAQAAQD8AAIA/QABAP0AAQACAAIAAgABAPkAAQAEAAEA+wAEAP8AAQD/AAEAAQD/AAEA/wABAAEA/wABAAIA/gD/AAQA/AADAAEA/wD9AAQA/AAEAAEA/wABAP8AAQABAP8AAAoAAAEABgAGAAADAAcACwAPABMAFwAbAB8AIwAnAAABESERIREhEQERIREhESERAREhESERIREBESERIREhEQERIREhESERAgABAAIAAQD7AAEAAgABAPsAAQACAAEA/QABAAIAAQD9AAEAAgABAAEAAQD/AAEA/wABAAEA/wABAP8AAQABAP8AAQD/AAEAAQD/AAEA/wABAAEA/wABAP8AAAAAAQAAAQAEAAQAAAUAAAERIREhEQMA/QAEAAEAAgABAP0AAAAACwAA/wAIAAcAAAMABwALAA8AEwAXACEAJQApAC0AMQAAAREhEQERIREhESERAREhEQERIREBESERIREhESERIREhESERIREBESERIREhEQERIRECAAQA+wABAAQAAQD+AAEA/wABAPoAAQABAAMA/gACAP4ABAABAPkAAQAEAAEA+wAEAP8AAQD/AAEAAQD/AAEA/wABAAEA/wACAAEA/wD+AAQA/AAEAP8A/wD/AP8ABAD8AAQAAQD/AAEA/wABAAEA/wAAAAAEAAAEAAMABwAAAwAHAAsADwAAAREhEQERIREhESERAREhEQEAAQD+AAEAAQABAP4AAQAEAAEA/wABAAEA/wABAP8AAQABAP8AAAAAAgAAAAAFAAcAAAMADwAAMREhEQERIREhESERIREhEQUA/QD+AAIAAQACAP4AAQD/AAIAAgABAAIA/gD/AP4AAAIAAAUAAgAHAAADAAcAABkBIRkCIREBAAEABQABAP8AAQABAP8AAAACAAD/AAQABQAABwALAAAZASERIREhEQERIREBAAIA/gACAAEA/wAGAPwA/wD/AAIABAD8AAAAAAEAAP8ABQAHAAANAAABESERIREhESERIREhEQIA/wD/AAEABAD/AP8A/wAEAAEAAgABAPgABwD5AAAAAAEAAAMAAQAEAAADAAAZASERAQADAAEA/wAAAAACAAD+AAIAAAAAAwAHAAAZASEZAiERAQABAP4AAQD/AAEAAQD/AAAACgAAAQAGAAYAAAMABwALAA8AEwAXABsAHwAjACcAABkBIREhESERAREhESERIREBESERIREhEQERIREhESERAREhESERIREBAAIAAQD9AAEAAgABAP0AAQACAAEA+wABAAIAAQD7AAEAAgABAAEAAQD/AAEA/wABAAEA/wABAP8AAQABAP8AAQD/AAEAAQD/AAEA/wABAAEA/wABAP8AAAUAAAAABAAHAAADAAcACwAPABMAACERIREBESEZAiEZAiERAREhEQEAAwD8AAEAAQABAP8AAQABAP8AAQACAP4AAgABAP8AAQABAP8AAgABAP8AAAQAAAAABQAKAAALAA8AEwAXAAAxESERIREhESERIRkCIREBESERAREhEQEAAwABAP8A/QADAP4AAQD+AAEABgD9AAMA+gACAP4ABgABAP8AAgABAP8AAQABAP8AAAAAAAQAAAAABQAKAAALAA8AEwAXAAAxESERIREhESERIRkCIREBESEZAiERAQADAAEA/wD9AAMA/gABAAEABgD9AAMA+gACAP4ABgABAP8AAgABAP8AAQABAP8AAAAABQAAAAAFAAoAAAsADwATABcAGwAAMREhESERIREhESEZAiERAREhESERIREBESERAQADAAEA/wD9AAMA/QABAAEAAQD+AAEABgD9AAMA+gACAP4ABgABAP8AAgABAP8AAQD/AAEAAQD/AAAABgAAAAAGAAoAAAsADwATABcAGwAfAAAxESERIREhESERIRkCIREBESERIREhEQERIREhESERAQADAAEA/wD9AAMA/AABAAIAAgD8AAIAAgABAAYA/QADAPoAAgD+AAYAAQD/AAIAAQD/AAEA/wABAAEA/wABAP8AAAAAAAQAAAAABQAJAAALAA8AEwAXAAAxESERIREhESERIRkCIREBESERIREhEQEAAwABAP8A/QADAPwAAQADAAEABgD9AAMA+gACAP4ABgABAP8AAgABAP8AAQD/AAAABQAAAAAFAAoAAAsAEwAXABsAHwAAMREhESERIREhESEZAiERIREhEQERIREhESERAREhEQEAAwABAP8A/QABAAEAAQD9AAEAAQABAP4AAQAGAP0AAwD6AAIA/gAGAAEAAQD/AP8AAgABAP8AAQD/AAEAAQD/AAAAAQAAAAAGAAcAABUAADERIREhESERIREhESERIREhESERIREBAAIA/gAFAP4AAgD+AAIA/QD+AAYA/QADAAEA/wD+AP8A/gD/AAIA/gAAAAAEAAD+AAQABwAAAwALAA8AEwAAAREhGQIhESERIREBESEZAiERAQABAP8AAwD/AP0AAQADAP4AAQD/AAEAAQABAP8A/wACAAUA+wAFAAEA/wAAAAADAAAAAAQACgAACwAPABMAADERIREhESERIREhEQERIREBESERBAD9AAMA/QADAP4AAQD+AAEABwD/AP4A/wD+AP8ACAABAP8AAQABAP8AAAMAAAAABAAKAAALAA8AEwAAMREhESERIREhESERAREhGQIhEQQA/QADAP0AAwD9AAEAAQAHAP8A/gD/AP4A/wAIAAEA/wABAAEA/wAAAAAABAAAAAAEAAoAAAsADwATABcAADERIREhESERIREhEQERIREhESERAREhEQQA/QADAP0AAwD9AAEAAQABAP4AAQAHAP8A/gD/AP4A/wAIAAEA/wABAP8AAQABAP8AAAAAAwAAAAAEAAkAAAsADwATAAAxESERIREhESERIREBESERIREhEQQA/QADAP0AAwD8AAEAAgABAAcA/wD+AP8A/gD/AAgAAQD/AAEA/wAAAAADAQAAAAMACgAAAwAHAAsAACERIREBESEZAiERAQABAP8AAQABAAcA+QAIAAEA/wABAAEA/wAAAAMAAAAAAgAKAAADAAcACwAAIREhEQERIREBESERAQABAP8AAQD+AAEABwD5AAgAAQD/AAEAAQD/AAAAAAQAAAAAAwAKAAADAAcACwAPAAAhESERAREhESERIREBESERAQABAP4AAQABAAEA/gABAAcA+QAIAAEA/wABAP8AAQABAP8AAAMAAAAAAwAJAAADAAcACwAAIREhEQERIREhESERAQABAP4AAQABAAEABwD5AAgAAQD/AAEA/wAAAgAAAAAGAAcAAAMAEwAAAREhEQERIREhESERIREhESERIREFAAEA+wD/AAEABAD9AAEA/wADAAEABQD7AP8AAwABAAMA/wD+AP8A/gD/AAAHAAAAAAYACgAAAwALABMAFwAbAB8AIwAAAREhEQERIREhESERIREhESERIREBESERIREhEQERIREhESERAgABAP0AAQABAP8AAwD/AAEAAQD7AAEAAgACAPwAAgACAAEABAABAP8A/AAHAP8A/wD7AAMAAQADAPkACAABAP8AAQD/AAEAAQD/AAEA/wAAAAAGAAAAAAUACgAAAwAHAAsADwATABcAACERIREBESERIREhEQERIREBESERAREhEQEAAwD8AAEAAwABAPwAAwD+AAEA/gABAAEA/wABAAUA+wAFAPsABQABAP8AAgABAP8AAQABAP8AAAYAAAAABQAKAAADAAcACwAPABMAFwAAIREhEQERIREhESERAREhEQERIRkCIREBAAMA/AABAAMAAQD8AAMA/gABAAEAAQD/AAEABQD7AAUA+wAFAAEA/wACAAEA/wABAAEA/wAAAAAABwAAAAAFAAoAAAMABwALAA8AEwAXABsAACERIREBESERIREhEQERIREBESERIREhEQERIREBAAMA/AABAAMAAQD8AAMA/QABAAEAAQD+AAEAAQD/AAEABQD7AAUA+wAFAAEA/wACAAEA/wABAP8AAQABAP8AAAAACAAAAAAGAAoAAAMABwALAA8AEwAXABsAHwAAIREhEQERIREhESERAREhEQERIREhESERAREhESERIREBAAMA/AABAAMAAQD8AAMA/AABAAIAAgD8AAIAAgABAAEA/wABAAUA+wAFAPsABQABAP8AAgABAP8AAQD/AAEAAQD/AAEA/wAABgAAAAAFAAkAAAMABwALAA8AEwAXAAAhESERAREhESERIREBESERAREhESERIREBAAMA/AABAAMAAQD8AAMA/AABAAMAAQABAP8AAQAFAPsABQD7AAUAAQD/AAIAAQD/AAEA/wAAAAAJAAABAAUABgAAAwAHAAsADwATABcAGwAfACMAABkBIREhESERAREhESERIREBESERAREhESERIREBESERIREhEQEAAwABAPwAAQABAAEA/gABAP4AAQABAAEA/AABAAMAAQABAAEA/wABAP8AAQABAP8AAQD/AAEAAQD/AAEAAQD/AAEA/wABAAEA/wABAP8AAAAABQAAAAAFAAcAAAMABwAPABcAGwAAIREhEQERIREBESERIREhESERIREhESERAREhEQEAAwD+AAEA/QABAAEA/wADAP8AAQABAPwAAwABAP8AAwABAP8A/gAFAP0A/wD/AAMAAQABAPsABQABAP8AAAUAAAAABQAKAAADAAcACwAPABMAACERIREBESERIREhEQERIREBESERAQADAPwAAQADAAEA/QABAP4AAQABAP8AAQAGAPoABgD6AAcAAQD/AAEAAQD/AAAFAAAAAAUACgAAAwAHAAsADwATAAAhESERAREhESERIREBESEZAiERAQADAPwAAQADAAEA/QABAAEAAQD/AAEABgD6AAYA+gAHAAEA/wABAAEA/wAAAAAABgAAAAAFAAoAAAMABwALAA8AEwAXAAAhESERAREhESERIREBESERIREhEQERIREBAAMA/AABAAMAAQD8AAEAAQABAP4AAQABAP8AAQAGAPoABgD6AAcAAQD/AAEA/wABAAEA/wAAAAAFAAAAAAUACQAAAwAHAAsADwATAAAhESERAREhESERIREBESERIREhEQEAAwD8AAEAAwABAPsAAQADAAEAAQD/AAEABgD6AAYA+gAHAAEA/wABAP8AAAAABQAAAAAFAAoAAAcACwAPABMAFwAAIREhESERIREBESERIREhEQERIRkCIRECAP8AAwD/AP0AAQADAAEA/QABAAEAAwABAP8A/QAEAAMA/QADAP0ABAABAP8AAQABAP8AAAAAAAIAAAAABQAHAAADAA8AAAERIREBESERIREhESERIREEAAEA+wABAAMA/QADAP0AAgADAP0A/gAHAP8A/wD9AP8A/wAABgAAAAAFAAcAAAMABwALAA8AEwAXAAAhESEZAiERAREhEQERIREBESERAREhEQIAAgABAP0AAgD8AAEAAwABAPwAAwABAP8AAQACAP4AAgABAP8A/QAGAPoABAACAP4AAgABAP8AAAAFAAAAAAQACAAAAwANABEAFQAZAAAZASEZAiERIREhESERAREhEQERIREBESERAQACAP4AAgABAP0AAgD/AAEA/gABAAEAAQD/AP8AAQABAAEAAQD8AAQAAQD/AAIAAQD/AAEAAQD/AAAAAAAFAAAAAAQACAAAAwANABEAFQAZAAAZASEZAiERIREhESERAREhEQERIRkCIREBAAIA/gACAAEA/QACAP4AAQABAAEAAQD/AP8AAQABAAEAAQD8AAQAAQD/AAIAAQD/AAEAAQD/AAAAAAYAAAAABAAIAAADAA0AEQAVABkAHQAAGQEhGQIhESERIREhEQERIREBESERIREhEQERIREBAAIA/gACAAEA/QACAP4AAQABAAEA/gABAAEAAQD/AP8AAQABAAEAAQD8AAQAAQD/AAIAAQD/AAEA/wABAAEA/wAAAAcAAAAABAAIAAADAA0AEQAVABkAHQAhAAAZASEZAiERIREhESERAREhEQERIREhESERAREhESERIREBAAIA/gACAAEA/QACAP0AAQABAAEA/gABAAEAAQABAAEA/wD/AAEAAQABAAEA/AAEAAEA/wACAAEA/wABAP8AAQABAP8AAQD/AAAAAAAFAAAAAAQABwAAAwANABEAFQAZAAAZASEZAiERIREhESERAREhEQERIREhESERAQACAP4AAgABAP0AAgD9AAEAAgABAAEAAQD/AP8AAQABAAEAAQD8AAQAAQD/AAIAAQD/AAEA/wAAAAcAAAAABAAJAAADAA0AEQAVABkAHQAhAAAZASEZAiERIREhESERAREhEQERIREBESERIREhEQERIREBAAIA/gACAAEA/QACAP8AAQD+AAEAAQABAP4AAQABAAEA/wD/AAEAAQABAAEA/AAEAAEA/wACAAEA/wABAAEA/wABAP8AAQABAP8AAAAEAAAAAAUABQAAAwAVABkAHQAAGQEhGQIhESERIREhESERIREhESERAREhESERIREBAAEA/wABAAEAAQABAP4AAgD8AAEAAQABAAEAAQD/AP8AAQABAAEAAQD/AAEA/gD/AP8ABAABAP8AAQD/AAAABAAA/gADAAUAAAMACQANABEAABkBIRkCIREhEQERIRkCIREBAAIA/wD+AAEAAgD+AAEA/wABAAIA/wD/AAIAAwD9AAMAAQD/AAAAAAUAAAAABAAIAAADAA0AEQAVABkAACERIREBESERIREhESEZAiERAREhEQERIREBAAMA/AABAAIAAQD9AAIA/wABAP4AAQABAP8AAQADAP8AAQD+AP8AAwABAP8AAgABAP8AAQABAP8AAAAAAAUAAAAABAAIAAADAA0AEQAVABkAACERIREBESERIREhESEZAiERAREhGQIhEQEAAwD8AAEAAgABAP0AAgD+AAEAAQABAP8AAQADAP8AAQD+AP8AAwABAP8AAgABAP8AAQABAP8AAAAABgAAAAAEAAgAAAMADQARABUAGQAdAAAhESERAREhESERIREhGQIhEQERIREhESERAREhEQEAAwD8AAEAAgABAP0AAgD+AAEAAQABAP4AAQABAP8AAQADAP8AAQD+AP8AAwABAP8AAgABAP8AAQD/AAEAAQD/AAAABQAAAAAEAAcAAAMADQARABUAGQAAIREhEQERIREhESERIRkCIREBESERIREhEQEAAwD8AAEAAgABAP0AAgD9AAEAAgABAAEA/wABAAMA/wABAP4A/wADAAEA/wACAAEA/wABAP8AAAADAAAAAAIACAAAAwAHAAsAACERIREBESERAREhEQEAAQD/AAEA/gABAAUA+wAGAAEA/wABAAEA/wAAAAADAQAAAAMACAAAAwAHAAsAACERIREBESEZAiERAQABAP8AAQABAAUA+wAGAAEA/wABAAEA/wAAAAQAAAAAAwAIAAADAAcACwAPAAAhESERAREhESERIREBESERAQABAP4AAQABAAEA/gABAAUA+wAGAAEA/wABAP8AAQABAP8AAAMAAAAAAwAHAAADAAcACwAAIREhEQERIREhESERAQABAP4AAQABAAEABQD7AAYAAQD/AAEA/wAAAgAAAAAFAAgAAAMAFQAAGQEhGQIhESERIREhESERIREhESERAQACAP4AAgD/AAEAAQABAP8AAQADAP0A/wABAAMAAQABAAEAAQD/AP8A+gAAAAAABgAAAAAEAAgAAAMACQANABEAFQAZAAAhESERIREhESERAREhESERIREBESERIREhEQMAAQD8AAMA/gD/AAEAAQABAP4AAQABAAEABAD8AAUA/wD8AAYAAQD/AAEA/wABAAEA/wABAP8AAAAABgAAAAAEAAgAAAMABwALAA8AEwAXAAAhESERAREhESERIREBESERAREhEQERIREBAAIA/QABAAIAAQD9AAIA/wABAP4AAQABAP8AAQADAP0AAwD9AAMAAQD/AAIAAQD/AAEAAQD/AAAGAAAAAAQACAAAAwAHAAsADwATABcAACERIREBESERIREhEQERIREBESEZAiERAQACAP0AAQACAAEA/QACAP4AAQABAAEA/wABAAMA/QADAP0AAwABAP8AAgABAP8AAQABAP8AAAAAAAcAAAAABAAIAAADAAcACwAPABMAFwAbAAAhESERAREhESERIREBESERAREhESERIREBESERAQACAP0AAQACAAEA/QACAP4AAQABAAEA/gABAAEA/wABAAMA/QADAP0AAwABAP8AAgABAP8AAQD/AAEAAQD/AAAAAAgAAAAABAAIAAADAAcACwAPABMAFwAbAB8AACERIREBESERIREhEQERIREBESERIREhEQERIREhESERAQACAP0AAQACAAEA/QACAP0AAQABAAEA/gABAAEAAQABAP8AAQADAP0AAwD9AAMAAQD/AAIAAQD/AAEA/wABAAEA/wABAP8AAAYAAAAABAAHAAADAAcACwAPABMAFwAAIREhEQERIREhESERAREhEQERIREhESERAQACAP0AAQACAAEA/QACAP0AAQACAAEAAQD/AAEAAwD9AAMA/QADAAEA/wACAAEA/wABAP8AAAAAAwAAAQAFAAYAAAMABwALAAABESERAREhEQERIRECAAEA/QAFAP0AAQABAAEA/wACAAEA/wACAAEA/wAAAwAAAAAEAAUAAAMACwAVAAAhESERAREhESERIREhESERIREhESERAQACAP0AAQABAP8AAgD/AP8AAgABAAEA/wABAAMA/wD/AP8AAgABAAEA/wD9AAAAAAQAAAAABAAIAAADAAkADQARAAAZASEZAiERIREBESERAREhEQEAAgABAP4AAQD+AAEAAQAEAPwA/wABAAQA+wAGAAEA/wABAAEA/wAAAAAABAAAAAAEAAgAAAMACQANABEAABkBIRkCIREhEQERIRkCIREBAAIAAQD9AAEAAQABAAQA/AD/AAEABAD7AAYAAQD/AAEAAQD/AAAAAAUAAAAABAAIAAADAAkADQARABUAABkBIRkCIREhEQERIREhESERAREhEQEAAgABAP0AAQABAAEA/gABAAEABAD8AP8AAQAEAPsABgABAP8AAQD/AAEAAQD/AAAABAAAAAAEAAcAAAMACQANABEAABkBIRkCIREhEQERIREhESERAQACAAEA/AABAAIAAQABAAQA/AD/AAEABAD7AAYAAQD/AAEA/wAAAAUAAP8ABAAIAAADAAcADwATABcAABkBIREBESERAREhESERIREBESEZAiERAwD9AAEAAgD+AAIAAQD9AAEAAQD/AAEA/wADAAMA/QD+AAEAAQADAPsABgABAP8AAQABAP8AAAACAAD/AAQABwAAAwAPAAABESERAREhESERIREhESERAwABAPwAAQACAP4AAgD+AAEAAwD9AP4ACAD+AP8A/QD/AP8AAAUAAP8ABAAHAAADAAcADwATABcAABkBIREBESERAREhESERIREBESERIREhEQMA/QABAAIA/gACAAEA/AABAAIAAQD/AAEA/wADAAMA/QD+AAEAAQADAPsABgABAP8AAQD/AAAGAAAAAAQACgAAAwAHAAsADwATABcAACERIREBESEZAiERAREhEQERIREhESERAQADAPwAAQADAP4AAQD+AAEAAQABAAEA/wABAAUA+wAFAAEA/wACAAEA/wABAAEA/wABAP8AAAAAAAYAAAAAAwAIAAADAAcACwAPABMAFwAAIREhEQERIRkCIREBESERAREhESERIREBAAIA/QABAAIA/gABAP4AAQABAAEAAQD/AAEAAwD9AAMAAQD/AAIAAQD/AAEAAQD/AAEA/wAAAAAABQAAAAAFAAoAAAMACwAPABMAFwAAAREhEQERIREhESERAREhEQERIREhESERBAABAPsABAD9AAMA/gABAP4AAQABAAEAAQAFAPsA/wAHAP8A+wD/AAgAAQD/AAEAAQD/AAEA/wAAAAADAAAAAAYABwAAAwANABEAABkBIRkCIREhESERIREBESERAQACAP4AAgABAAEAAQABAAMA/QD/AAEAAwABAAIA+QAFAAIA/gAAAAAABAAAAAAEAAoAAAsADwATABcAADERIREhESERIREhEQERIREBESERIREhEQQA/QADAP0AAwD+AAEA/gABAAEAAQAHAP8A/gD/AP4A/wAIAAEA/wABAAEA/wABAP8AAAAABgAAAAAEAAgAAAMADQARABUAGQAdAAAhESERAREhESERIREhGQIhEQERIREBESERIREhEQEAAwD8AAEAAgABAP0AAgD/AAEA/gABAAEAAQABAP8AAQADAP8AAQD+AP8AAwABAP8AAgABAP8AAQABAP8AAQD/AAAAAQAAAAABAAUAAAMAADERIREBAAUA+wAABgAAAAAFAAoAAAMACwATABcAGwAfAAABESERAREhESERIREhESERIREhEQERIREBESERIREhEQIAAQD9AAEAAQD/AAMA/wABAAEA/QABAP4AAQABAAEABAABAP8A/AAHAP8A/wD7AAMAAQADAPkACAABAP8AAQABAP8AAQD/AAAFAAAAAAQACAAAAwAJAA0AEQAVAAAhESERIREhESERAREhEQERIREhESERAwABAPwAAwD+AAEAAQD+AAEAAQABAAQA/AAFAP8A/AAGAAEA/wABAAEA/wABAP8AAAIAAAAABgAHAAADABMAABkBIRkCIREhESERIREhESERIREBAAIA/gAFAP4AAgD+AAIAAQAFAPsA/wABAAUAAQD/AP4A/wD+AP8AAAAGAAAAAAUABQAAAwAHAAsAFQAZAB0AACERIREhESERAREhESERIREhESERIREBESERIREhEQEAAQABAAIA+wABAAEAAQABAAEA/gD+AAEAAQABAAEA/wABAP8AAQADAP0AAwD/AAEA/gD/AAMAAQD/AAEA/wAAAAAGAAAAAAUACgAAAwAHABEAFQAZAB0AACERIREBESERAREhESERIREhEQERIREBESERIREhEQQAAQD/AAEA+wAEAP0AAwD9AAEAAQD+AAEAAQABAAIA/gADAAMA/QD9AAcA/wD9AP8A/gAIAAEA/wABAAEA/wABAP8AAAAABQAAAAAEAAgAAAcACwAPABMAFwAAMREhESERIREBESERAREhEQERIREhESERAQABAP8AAQACAP4AAQD+AAEAAQABAAUA/wD/AP0ABAABAP8AAgABAP8AAQABAP8AAQD/AAAAAAgAAAAABQAKAAADAAcACwAPABMAFwAbAB8AADERIRkCIREBESERAREhGQIhEQERIREBESERIREhEQQAAQD8AAMA/AABAAQA/QABAP4AAQABAAEAAQD/AAEAAgD+AAIAAQD/AAEAAgD+AAIAAQD/AAIAAQD/AAEAAQD/AAEA/wAACAAAAAAEAAgAAAMABwALAA8AEwAXABsAHwAAMREhGQIhEQERIREBESEZAiERAREhEQERIREhESERAwABAP0AAgD9AAEAAwD+AAEA/gABAAEAAQABAP8AAQABAP8AAQABAP8AAQABAP8AAQABAP8AAgABAP8AAQABAP8AAQD/AAAEAAAAAAUACgAABwALAA8AEwAAIREhESERIREBESERAREhESERIRECAP4ABQD+AP8AAQD+AAEAAQABAAYAAQD/APoACAABAP8AAQABAP8AAQD/AAADAAAAAAYABwAAAwAPABMAACERIREBESERIREhESERIREBESERAgACAP0A/wABAAEAAgD+AAMAAQABAP8AAQADAAEAAgD+AP8A/QAEAAIA/gAAAAAHAAAAAAUACwAAAwAHAAsADwATABcAGwAAIREhEQERIREhESERAREhEQERIREhESERAREhEQEAAwD8AAEAAwABAP0AAQD+AAEAAQABAP4AAQABAP8AAQAGAPoABgD6AAcAAQD/AAEAAQD/AAEA/wABAAEA/wAAAAAGAAAAAAQACQAAAwAJAA0AEQAVABkAABkBIRkCIREhEQERIREBESERIREhEQERIREBAAIAAQD+AAEA/gABAAEAAQD+AAEAAQAEAPwA/wABAAQA+wAGAAEA/wABAAEA/wABAP8AAQABAP8AAAAFAAAAAAUACQAABwALAA8AEwAXAAAhESERIREhEQERIREhESERAREhESERIRECAP8AAwD/AP0AAQADAAEA+wABAAMAAQADAAEA/wD9AAQAAwD9AAMA/QAEAAEA/wABAP8AAAAACAAAAAAFAAoAAAUACQANABEAFwAbAB8AIwAAMREhESERAREhGQIhGQIhGQIhESERAREhEQERIREhESERAQAEAPwAAQABAAEA/AAFAP0AAQD+AAEAAQABAAIA/wD/AAIAAQD/AAEAAQD/AAEAAQD/AAEAAQABAP4AAwABAP8AAQABAP8AAQD/AAAAAAAGAAAAAAUACAAABwALABMAFwAbAB8AADERIREhESERAREhGQIhESERIREBESERAREhESERIREBAAEAAwD9AAEA/QAFAP8A/gABAP4AAQABAAEAAQABAP8A/wACAAEA/wABAAEAAQD/AP8AAwABAP8AAQABAP8AAQD/AAAAAwAA/wAFAAcAAAMADwATAAAZASEZAiERIREhESERIRkCIRECAP8AAQABAAEA/wACAP8AAQD/AAEAAwABAAIA/gD/AP0ABgABAP8AAAEAAAMABQAEAAADAAAZASERBQADAAEA/wAAAAABAAAFAAEABwAAAwAAGQEhEQEABQACAP4AAAAAAQAABQABAAcAAAMAABkBIREBAAUAAgD+AAAAAAEAAP8AAQABAAADAAAZASERAQD/AAIA/gAAAAACAAAFAAMABwAAAwAHAAAZASERIREhEQEAAQABAAUAAgD+AAIA/gAAAgAABQADAAcAAAMABwAAGQEhESERIREBAAEAAQAFAAIA/gACAP4AAAIAAP8AAwABAAADAAcAABkBIREhESERAQABAAEA/wACAP4AAgD+AAABAAAAAAUABwAACwAAIREhESERIREhESERAgD+AAIAAQACAP4ABQABAAEA/wD/APsAAAAAAQAAAwABAAQAAAMAABkBIREBAAMAAQD/AAAAAAMAAAAABQABAAADAAcACwAAMREhESERIREhESERAQABAAEAAQABAAEA/wABAP8AAQD/AAAFAAABAAMABgAAAwAHAAsADwATAAABESERAREhEQERIRkCIRkCIRECAAEA/gABAP4AAQABAAEAAQABAP8AAQABAP8AAQABAP8AAQABAP8AAQABAP8AAAAABQAAAQADAAYAAAMABwALAA8AEwAAGQEhGQIhGQIhEQERIREBESERAQABAAEA/gABAP4AAQABAAEA/wABAAEA/wABAAEA/wABAAEA/wABAAEA/wAAAwAAAAAFAAcAAAMAFwAbAAAhESERAREhESERIREhESERIREhESERIRkCIRECAAMA/AD/AAEA/wABAAEAAgD+AAIA/gADAAEA/wABAAEAAQABAAEAAQD/AP8A/wD/AP8ABQABAP8AAAADAAADAAgABwAAAwARABkAAAERIREBESERIREhESERIREhESERIREhESERBQABAPsA/wAEAAEA/wD/AP8ABQD/AAEAAQAEAAEA/wD/AAMAAQD/AP8A/gADAP0AAgABAAEA/AAAAAAWAQ4AAQAAAAAAAABNAAAAAQAAAAAAAQANAE0AAQAAAAAAAgAHAFsAAQAAAAAAAwAVAE0AAQAAAAAABAAVAE0AAQAAAAAABQAXAGIAAQAAAAAABgATAHkAAQAAAAAACQAfAIwAAQAAAAAACgA/AKsAAQAAAAAADAAlAOoAAQAAAAAADgAuAQ8AAwABBAkAAACaAT0AAwABBAkAAQAaAdcAAwABBAkAAgAOAfMAAwABBAkAAwAqAdcAAwABBAkABAAqAdcAAwABBAkABQAuAgEAAwABBAkABgAmAi8AAwABBAkACQA+AlUAAwABBAkACgB+ApMAAwABBAkADABKAxEAAwABBAkADgBcA1upIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgR3JhbmQgQ2hhb3MgUHJvZHVjdGlvbnMuIFNvbWUgUmlnaHRzIFJlc2VydmVkLkdyYW5kOUsgUGl4ZWwgUmVndWxhclZlcnNpb24gMS4wIC0gNS8xMy8yMDEzR3JhbmQ5S1BpeGVsUmVndWxhckpheXZlZSBELiBFbmFndWFzIChHcmFuZCBDaGFvcylUaGlzIGZvbnQgd2FzIGNyZWF0ZWQgdXNpbmcgRm9udENyZWF0b3IgNS42IGZyb20gSGlnaC1Mb2dpYy5jb21odHRwOi8vZ3JhbmRjaGFvczkwMDAuZGV2aWFudGFydC5jb20vaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMy4wLwCpACAAMgAwADAAOQAsACAAMgAwADEAMAAsACAAMgAwADEAMQAsACAAMgAwADEAMgAsACAAMgAwADEAMwAgAEcAcgBhAG4AZAAgAEMAaABhAG8AcwAgAFAAcgBvAGQAdQBjAHQAaQBvAG4AcwAuACAAUwBvAG0AZQAgAFIAaQBnAGgAdABzACAAUgBlAHMAZQByAHYAZQBkAC4ARwByAGEAbgBkADkASwAgAFAAaQB4AGUAbAAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwACAALQAgADUALwAxADMALwAyADAAMQAzAEcAcgBhAG4AZAA5AEsAUABpAHgAZQBsAFIAZQBnAHUAbABhAHIASgBhAHkAdgBlAGUAIABEAC4AIABFAG4AYQBnAHUAYQBzACAAKABHAHIAYQBuAGQAIABDAGgAYQBvAHMAKQBUAGgAaQBzACAAZgBvAG4AdAAgAHcAYQBzACAAYwByAGUAYQB0AGUAZAAgAHUAcwBpAG4AZwAgAEYAbwBuAHQAQwByAGUAYQB0AG8AcgAgADUALgA2ACAAZgByAG8AbQAgAEgAaQBnAGgALQBMAG8AZwBpAGMALgBjAG8AbQBoAHQAdABwADoALwAvAGcAcgBhAG4AZABjAGgAYQBvAHMAOQAwADAAMAAuAGQAZQB2AGkAYQBuAHQAYQByAHQALgBjAG8AbQAvAGgAdAB0AHAAOgAvAC8AYwByAGUAYQB0AGkAdgBlAGMAbwBtAG0AbwBuAHMALgBvAHIAZwAvAGwAaQBjAGUAbgBzAGUAcwAvAGIAeQAtAHMAYQAvADMALgAwAC8AAAAAAgAAAAAAAP8nAJYAAAAAAAAAAAAAAAAAAAAAAAAAAADZAAAAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAQIAowCEAIUAlgDoAI4AiwCpAKQAigCDAJMAjQCXAIgAwwDeAKoAogCtAMkAxwCuAGIAYwCQAGQAywBlAMgAygDPAMwAzQDOAOkAZgDTANAA0QCvAGcA8ACRANYA1ADVAGgA6wDtAIkAagBpAGsAbQBsAG4AoABvAHEAcAByAHMAdQB0AHYAdwDqAHgAegB5AHsAfQB8ALgAoQB/AH4AgACBAOwA7gC6AP8BAAEDAQQBBQEGANcBBwEIALAAsQEJAQoA5ADlAQsBDAENAQ4AuwDmAOcApgCzALYAtwDEALQAtQDFAIIAhwCrAL4AvwEPAIwHdW5pMDBBMAZEY2Fyb24GZGNhcm9uBkVjYXJvbgZlY2Fyb24GTmNhcm9uBm5jYXJvbgZSY2Fyb24GcmNhcm9uBlRjYXJvbgZ0Y2Fyb24FVXJpbmcFdXJpbmcERXVybwAAAAAB//8AAg==\"","module.exports = \"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BgYCAgQDAwYBAwMEBAIEAgMFBAUFBQUFBQUFAgIDBAMEBQYFBAYGBgUGAwUHBQgGBQUFBgQGBgYIBwcFAgMCBAQDBQQEBQYDAwYDCQUEBQQEBAQGBQcGBQQAAAAMCgYABgYCAwUDBAYBAwMEBQMEAgMFBAUGBQUFBgUFAgIDBAQEBQcGBQYGBgYGAwUHBgkHBgYGBwUGBwcJCAcFAgMDBAUEBQQEBgcDBAYDCgYEBQQFBQQGBQgGBgQAAAANCwcABwcCAwUDBAcBAwMFBQMEAgQGBAUGBgYGBgYFAgIDBAQEBQcGBQcHBwYHAwYIBgkIBgYGBwUHBwcKCAgGAwMDBAUEBQQEBgcEBAcDCwYFBQQFBQQHBggHBgUAAAAOCwcABwcCAwUEBAcCBAQFBQMFAwQGBQYHBgYGBgYGAgIEBQQEBggHBQgHBwcHAwYJBwoIBwYHCAUHCAgKCQgGAwQDBQYEBgUFBwgEBAcDCwcFBgUGBQUHBgkHBwUAAAAPDAgACAgCAwYEBAgCBAQFBgMFAwQGBQYHBwcGBwcGAgIEBQUFBgkHBggICAcIBAYJBwsJBwcHCAYICAgLCgkHAwQDBQYEBgUFBwgEBQgEDAcFBgUGBgUIBwoIBwUAAAAQDQgACAgCBAYEBQgCBAQGBgMFAwQHBQcIBwcHBwcHAgMEBgUFBwkIBgkICAgIBAcKCAwJCAcICQYICQkMCgoHAwQEBQYFBwUFBwkEBQgEDQgGBwYGBgUIBwoICAYAAAARDgkACQkDBAYFBQkCBAQGBgQGAwUHBgcICAcHCAgHAwMEBgUFBwoIBgkJCQgJBAcKCAwKCAgICQYJCgkNCwoIBAQEBgcFBwYGCAkFBQkEDggGBwYHBwYJCAsJCAYAAAASDwkACQkDBAcFBQkCBQUGBwQGAwUIBgcJCAgICAgHAwMFBgUGBwoJBwoKCQkKBAgLCQ0LCQgJCgcJCgoNDAsIBAUEBgcFCAYGCAoFBQkEDwkHCAYHBwYJCAwJCAYAAAATEAoACgoDBAcFBgoCBQUHBwQGAwUIBggJCQgICQgIAwMFBwYGCAsJBwoKCgkKBQgMCQ4LCQkJCgcKCwoODAsIBAUEBggGCAYGCQoFBgoFEAkHCAcIBwYKCQwKCQcAAAAUEAoACgoDBAgFBgoCBQUHCAQHBAYJBggKCQkICQkIAwMFBwYGCAsKCAsLCgkLBQkMCg4MCgkKCwgKCwsPDQwJBAUEBwgGCAcHCQsGBgoFEAoHCAcICAcKCQ0KCQcAAAAVEQsACwsDBQgGBgsCBQUHCAQHBAYJBwkKCgkJCgkJAwMFBwYHCQwKCAsLCwoLBQkNCg8MCgoKCwgLDAwQDgwJBAUFBwgGCQcHCgsGBgsFEQoICQcICAcLCQ4LCgcAAAAWEgsACwsDBQgGBwsCBgYICAUHBAYKBwkLCgoJCgoJAwMGCAcHCQ0LCAwMDAoMBQkNCxANCwoLDAgLDAwQDg0KBQYFBwkHCQcHCgwGBwsFEgsICQgJCAcLCg4LCggAAAAXEwwADAwDBQkGBwwCBgYICQUIBAYKBwkLCgoKCwoJAwQGCAcHCQ0LCQwMDAsMBgoOCxENCwsLDQkMDQ0RDw4KBQYFCAkHCggICwwGBwwFEwsICggJCQgMCg8MCwgAAAAYFAwADAwEBQkGBwwDBgYICQUIBAcKCAoMCwoKCwsKBAQGCAcICg4MCQ0NDQsNBgoPDBEODAsMDQkMDg0SEA4LBQYFCAoHCggICw0HBwwGFAwJCggKCQgMCxAMCwgAAAAAAQAAAZAABQACArwCigAAAI8CvAKKAAABxQAyAQMAAAAABAAAAAAAAAAAAAADAAAAAAAAAAAAAAAATUFDUgBAACAAegKz/zsAAAKzAMUAAAABAAAAAAAAAAEAAIAAAAAB9AGKAABgAAKzAnVCbGFjayBib3lzIG8gICAg/////zf///5CTEFSMDAAAAAAAAAAAQAAAAEAABIO2bBfDzz1AAAD6AAAAAC0STWnAAAAALRJNaf/mf87A2oDIAAAAAMAAgABAAAAAAABAAADIP84AAADMP+Z/7gDagABAAAAAAAAAAAAAAAAAAAAWwABAAAAWwChAAMAAAAAAAIACABAAAoAAABeALsAAQABAAAAEADGAAEAAAAAAAAAMgAAAAEAAAAAAAEACwAyAAEAAAAAAAIABwA9AAEAAAAAAAMACwBEAAEAAAAAAAQACwBPAAEAAAAAAAUAIABaAAEAAAAAAAYACwB6AAEAAAAAAAcAGgCFAAMAAQQJAAAAZACfAAMAAQQJAAEAFgEDAAMAAQQJAAIADgEZAAMAAQQJAAMAFgEnAAMAAQQJAAQAFgE9AAMAAQQJAAUAQAFTAAMAAQQJAAYAFgGTAAMAAQQJAAcANAGpQnkgSmFrb2IgRmlzY2hlciBha2EgUGl6emFEdWRlICpEaXN0cmlidXRlIGZyZWVseSpTY3JhdGNoRm9udFJlZ3VsYXJTY3JhdGNoRm9udFNjcmF0Y2hGb250aHR0cDovL2hqZW0uZ2V0Mm5ldC5kay9qZmlzY2hlci9TY3JhdGNoRm9udCoqKiBObyBUcmFkZU1hcmsgRm91bmQgKioqAEIAeQAgAEoAYQBrAG8AYgAgAEYAaQBzAGMAaABlAHIAIABhAGsAYQAgAFAAaQB6AHoAYQBEAHUAZABlACAAKgBEAGkAcwB0AHIAaQBiAHUAdABlACAAZgByAGUAZQBsAHkAKgBTAGMAcgBhAHQAYwBoAEYAbwBuAHQAUgBlAGcAdQBsAGEAcgBTAGMAcgBhAHQAYwBoAEYAbwBuAHQAUwBjAHIAYQB0AGMAaABGAG8AbgB0AGgAdAB0AHAAOgAvAC8AaABqAGUAbQAuAGcAZQB0ADIAbgBlAHQALgBkAGsALwBqAGYAaQBzAGMAaABlAHIALwBTAGMAcgBhAHQAYwBoAEYAbwBuAHQAKgAqACoAIABOAG8AIABUAHIAYQBkAGUATQBhAHIAawAgAEYAbwB1AG4AZAAgACoAKgAqAAAAAABUAGgAaQBzACAARgBvAG4AdAAgAFIAZQBuAGEAbQBlAGQAAAAAAAAA/AAAAxg=\"","import minilog from 'minilog';\nminilog.enable();\n\nexport default minilog('scratch-paint');\n","import keyMirror from 'keymirror';\n\nconst Formats = keyMirror({\n    BITMAP: null,\n    VECTOR: null,\n    // Format changes which should not trigger conversions, for instance undo\n    BITMAP_SKIP_CONVERT: null,\n    VECTOR_SKIP_CONVERT: null\n});\n\nconst isVector = function (format) {\n    return format === Formats.VECTOR || format === Formats.VECTOR_SKIP_CONVERT;\n};\n\nconst isBitmap = function (format) {\n    return format === Formats.BITMAP || format === Formats.BITMAP_SKIP_CONVERT;\n};\n\nexport {\n    Formats as default,\n    isVector,\n    isBitmap\n};\n","import keyMirror from 'keymirror';\n\nconst vectorModesObj = {\n    BRUSH: null,\n    ERASER: null,\n    LINE: null,\n    FILL: null,\n    SELECT: null,\n    RESHAPE: null,\n    OVAL: null,\n    RECT: null,\n    ROUNDED_RECT: null,\n    TEXT: null\n};\nconst bitmapModesObj = {\n    BIT_BRUSH: null,\n    BIT_LINE: null,\n    BIT_OVAL: null,\n    BIT_RECT: null,\n    BIT_TEXT: null,\n    BIT_FILL: null,\n    BIT_ERASER: null,\n    BIT_SELECT: null\n};\nconst VectorModes = keyMirror(vectorModesObj);\nconst BitmapModes = keyMirror(bitmapModesObj);\nconst Modes = keyMirror({...vectorModesObj, ...bitmapModesObj});\n\nconst GradientToolsModes = keyMirror({\n    FILL: null,\n    SELECT: null,\n    RESHAPE: null,\n    OVAL: null,\n    RECT: null,\n    LINE: null,\n\n    BIT_OVAL: null,\n    BIT_RECT: null,\n    BIT_SELECT: null,\n    BIT_FILL: null\n});\n\nexport {\n    Modes as default,\n    VectorModes,\n    BitmapModes,\n    GradientToolsModes\n};\n","import paper from '@scratch/paper';\n\nconst getRootItem = function (item) {\n    if (item.parent.className === 'Layer') {\n        return item;\n    }\n    return getRootItem(item.parent);\n};\n\nconst isBoundsItem = function (item) {\n    if (item.className === 'PointText' ||\n        item.className === 'Shape' ||\n        item.className === 'PlacedSymbol' ||\n        item.className === 'Raster') {\n        return true;\n    }\n    return false;\n};\n\n\nconst isPathItem = function (item) {\n    return item.className === 'Path';\n};\n\n\nconst isCompoundPathItem = function (item) {\n    return item.className === 'CompoundPath';\n};\n\n\nconst isGroupItem = function (item) {\n    return item && item.className && item.className === 'Group';\n};\n\n\nconst isPointTextItem = function (item) {\n    return item.className === 'PointText';\n};\n\n\nconst isPGTextItem = function (item) {\n    return getRootItem(item).data.isPGTextItem;\n};\n\nconst setPivot = function (item, point) {\n    if (isBoundsItem(item)) {\n        item.pivot = item.globalToLocal(point);\n    } else {\n        item.pivot = point;\n    }\n};\n\n\nconst getPositionInView = function (item) {\n    const itemPos = new paper.Point();\n    itemPos.x = item.position.x - paper.view.bounds.x;\n    itemPos.y = item.position.y - paper.view.bounds.y;\n    return itemPos;\n};\n\n\nconst setPositionInView = function (item, pos) {\n    item.position.x = paper.view.bounds.x + pos.x;\n    item.position.y = paper.view.bounds.y + pos.y;\n};\n\nexport {\n    isBoundsItem,\n    isPathItem,\n    isCompoundPathItem,\n    isGroupItem,\n    isPointTextItem,\n    isPGTextItem,\n    setPivot,\n    getPositionInView,\n    setPositionInView,\n    getRootItem\n};\n","import paper from '@scratch/paper';\nimport {getRootItem, isGroupItem} from './item';\nimport {clearSelection, getSelectedRootItems, setItemSelection} from './selection';\n\nconst isGroup = function (item) {\n    return isGroupItem(item);\n};\n\n/**\n * Groups the given items. Other things are then deselected and the new group is selected.\n * @param {!Array<paper.Item>} items Root level items to group\n * @param {!function} clearSelectedItems Function to clear Redux state's selected items\n * @param {!function} setSelectedItems Function to set Redux state with new list of selected items\n * @param {!function} onUpdateImage Function to let listeners know that SVG has changed.\n * @return {paper.Group} the group if one is created, otherwise false.\n */\nconst groupItems = function (items, clearSelectedItems, setSelectedItems, onUpdateImage) {\n    if (items.length > 0) {\n        const group = new paper.Group(items);\n        clearSelection(clearSelectedItems);\n        setItemSelection(group, true);\n        for (let i = 0; i < group.children.length; i++) {\n            group.children[i].selected = true;\n        }\n        setSelectedItems();\n        onUpdateImage();\n        return group;\n    }\n    return false;\n};\n\n/**\n * Groups the selected items. Other things are then deselected and the new group is selected.\n * @param {!function} clearSelectedItems Function to clear Redux state's selected items\n * @param {!function} setSelectedItems Function to set Redux state with new list of selected items\n * @param {!function} onUpdateImage Function to let listeners know that SVG has changed.\n * @return {paper.Group} the group if one is created, otherwise false.\n */\nconst groupSelection = function (clearSelectedItems, setSelectedItems, onUpdateImage) {\n    const items = getSelectedRootItems();\n    return groupItems(items, clearSelectedItems, setSelectedItems, onUpdateImage);\n};\n\nconst _ungroupLoop = function (group, recursive, setSelectedItems) {\n    // Can't ungroup items that are not groups\n    if (!group || !group.children || !isGroup(group)) return;\n            \n    group.applyMatrix = true;\n    // iterate over group children recursively\n    for (let i = 0; i < group.children.length; i++) {\n        let groupChild = group.children[i];\n        if (groupChild instanceof paper.Group && groupChild.hasChildren()) {\n            // recursion (groups can contain groups, ie. from SVG import)\n            if (recursive) {\n                _ungroupLoop(groupChild, recursive, setSelectedItems);\n                continue;\n            }\n            if (groupChild.children.length === 1) {\n                groupChild = groupChild.reduce();\n            }\n        }\n        groupChild.applyMatrix = true;\n        // move items from the group to the activeLayer (ungrouping)\n        groupChild.insertBelow(group);\n        if (setSelectedItems) {\n            groupChild.selected = true;\n        }\n        i--;\n    }\n};\n\n/**\n * Ungroups the given items. The new group is selected only if setSelectedItems is passed in.\n * onUpdateImage is called to notify listeners of a change on the SVG only if onUpdateImage is passed in.\n * The reason these arguments are optional on ungroupItems is because ungroupItems is used for parts of\n * SVG import, which shouldn't change the selection or undo state.\n *\n * @param {!Array<paper.Item>} items Items to ungroup if they are groups\n * @param {?function} setSelectedItems Function to set Redux state with new list of selected items\n * @param {?function} onUpdateImage Function to let listeners know that SVG has changed.\n */\nconst ungroupItems = function (items, setSelectedItems, onUpdateImage) {\n    if (items.length === 0) {\n        return;\n    }\n    const emptyGroups = [];\n    for (let i = 0; i < items.length; i++) {\n        const item = items[i];\n        if (isGroup(item) && !item.data.isPGTextItem) {\n            _ungroupLoop(item, false /* recursive */, setSelectedItems);\n\n            if (!item.hasChildren()) {\n                emptyGroups.push(item);\n            }\n        } else if (setSelectedItems) {\n            item.selected = true;\n        }\n    }\n    if (setSelectedItems) {\n        setSelectedItems();\n    }\n    // remove all empty groups after ungrouping\n    for (let j = 0; j < emptyGroups.length; j++) {\n        emptyGroups[j].remove();\n    }\n    // @todo: enable/disable grouping icons\n    if (onUpdateImage) {\n        onUpdateImage();\n    }\n};\n\n/**\n * Ungroups the selected items. Other items are deselected and the ungrouped items are selected.\n *\n * @param {!function} clearSelectedItems Function to clear Redux state's selected items\n * @param {!function} setSelectedItems Function to set Redux state with new list of selected items\n * @param {!function} onUpdateImage Function to let listeners know that SVG has changed.\n */\nconst ungroupSelection = function (clearSelectedItems, setSelectedItems, onUpdateImage) {\n    const items = getSelectedRootItems();\n    clearSelection(clearSelectedItems);\n    ungroupItems(items, setSelectedItems, onUpdateImage);\n};\n\nconst getItemsGroup = function (item) {\n    const itemParent = item.parent;\n\n    if (isGroup(itemParent)) {\n        return itemParent;\n    }\n    return null;\n};\n\nconst isGroupChild = function (item) {\n    const rootItem = getRootItem(item);\n    return isGroup(rootItem);\n};\n\nconst shouldShowGroup = function () {\n    const items = getSelectedRootItems();\n    return items.length > 1;\n};\n\nconst shouldShowUngroup = function () {\n    const items = getSelectedRootItems();\n    for (let i = 0; i < items.length; i++) {\n        const item = items[i];\n        if (isGroup(item) && !item.data.isPGTextItem && item.children && item.children.length > 0) {\n            return true;\n        }\n    }\n    return false;\n};\n\nexport {\n    groupSelection,\n    ungroupSelection,\n    groupItems,\n    ungroupItems,\n    getItemsGroup,\n    isGroup,\n    isGroupChild,\n    shouldShowGroup,\n    shouldShowUngroup\n};\n","const isCompoundPath = function (item) {\n    return item && item.className === 'CompoundPath';\n};\n\nconst isCompoundPathChild = function (item) {\n    if (item.parent) {\n        return item.parent.className === 'CompoundPath';\n    }\n    return false;\n};\n\n\nconst getItemsCompoundPath = function (item) {\n    const itemParent = item.parent;\n\n    if (isCompoundPath(itemParent)) {\n        return itemParent;\n    }\n    return null;\n    \n};\n\nexport {\n    isCompoundPath,\n    isCompoundPathChild,\n    getItemsCompoundPath\n};\n","import paper from '@scratch/paper';\n\n/** The ratio of the curve length to use for the handle length to convert squares into approximately circles. */\nconst HANDLE_RATIO = 0.3902628565;\n\nconst checkPointsClose = function (startPos, eventPoint, threshold) {\n    const xOff = Math.abs(startPos.x - eventPoint.x);\n    const yOff = Math.abs(startPos.y - eventPoint.y);\n    if (xOff < threshold && yOff < threshold) {\n        return true;\n    }\n    return false;\n};\n\nconst getRandomInt = function (min, max) {\n    return Math.floor(Math.random() * (max - min)) + min;\n};\n\nconst getRandomBoolean = function () {\n    return getRandomInt(0, 2) === 1;\n};\n\n// Thanks Mikko Mononen! https://github.com/memononen/stylii\nconst snapDeltaToAngle = function (delta, snapAngle) {\n    let angle = Math.atan2(delta.y, delta.x);\n    angle = Math.round(angle / snapAngle) * snapAngle;\n    const dirx = Math.cos(angle);\n    const diry = Math.sin(angle);\n    const d = (dirx * delta.x) + (diry * delta.y);\n    return new paper.Point(dirx * d, diry * d);\n};\n\nconst _getDepth = function (item) {\n    let temp = item;\n    let depth = 0;\n    while (!(temp instanceof paper.Layer)) {\n        depth++;\n        if (temp.parent === null) {\n            // This item isn't attached to a layer, so it's not on the canvas and can't be compared.\n            return null;\n        }\n        temp = temp.parent;\n    }\n    return depth;\n};\n\nconst sortItemsByZIndex = function (a, b) {\n    if (a === null || b === null) {\n        return null;\n    }\n\n    // Get to the same depth in the project tree\n    let tempA = a;\n    let tempB = b;\n    let aDepth = _getDepth(a);\n    let bDepth = _getDepth(b);\n    while (bDepth > aDepth) {\n        tempB = tempB.parent;\n        bDepth--;\n    }\n    while (aDepth > bDepth) {\n        tempA = tempA.parent;\n        aDepth--;\n    }\n\n    // Step up until they share parents. When they share parents, compare indices.\n    while (tempA && tempB) {\n        if (tempB === tempA) {\n            return 0;\n        } else if (tempB.parent === tempA.parent) {\n            if (tempB.parent instanceof paper.CompoundPath) {\n                // Neither is on top of the other in a compound path. Return in order of decreasing size.\n                return Math.abs(tempB.area) - Math.abs(tempA.area);\n            }\n            return parseFloat(tempA.index) - parseFloat(tempB.index);\n        }\n        tempB = tempB.parent;\n        tempA = tempA.parent;\n    }\n\n    // No shared hierarchy\n    return null;\n};\n\n// Expand the size of the path by amount all around\nconst expandBy = function (path, amount) {\n    const center = path.position;\n    let pathArea = path.area;\n    for (const seg of path.segments) {\n        const delta = seg.point.subtract(center)\n            .normalize()\n            .multiply(amount);\n        seg.point = seg.point.add(delta);\n        // If that made the path area smaller, go the other way.\n        if (path.area < pathArea) seg.point = seg.point.subtract(delta.multiply(2));\n        pathArea = path.area;\n    }\n};\n\n// Do for all nested items in groups\nconst _doRecursively = function (item, func) {\n    if (item instanceof paper.Group) {\n        for (const child of item.children) {\n            _doRecursively(child, func);\n        }\n    } else {\n        func(item);\n    }\n};\n\n// Make item clockwise. Drill down into groups.\nconst ensureClockwise = function (root) {\n    _doRecursively(root, item => {\n        if (item instanceof paper.PathItem) {\n            item.clockwise = true;\n        }\n    });\n};\n\n// Scale item and its strokes by factor\nconst scaleWithStrokes = function (root, factor, pivot) {\n    _doRecursively(root, item => {\n        if (item instanceof paper.PointText) {\n            // Text outline size is controlled by text transform matrix, thus it's already scaled.\n            return;\n        }\n        if (item.strokeWidth) {\n            item.strokeWidth = item.strokeWidth * factor;\n        }\n    });\n    root.scale(factor, pivot);\n};\n\n/**\n * Get the size and position of a square, as in if the user were holding the shift key down while drawing the shape,\n * from the point where the drag started and the point where the mouse is currently positioned. (Note: This also works\n * for shapes like circles (\"square ovals\"), which fill the same dimensions.)\n * @param {!paper.Point} startPos The point where the user started dragging\n * @param {!paper.Point} eventPoint The point where the user has currently dragged to\n * @return {object} Information about the size and position of how the square should be drawn\n */\nconst getSquareDimensions = function (startPos, eventPoint) {\n    // These variables are used for determining the relative quadrant that the shape will appear in.\n    // So if you drag up and right, it'll show up above and to the right of where you started dragging, etc.\n    let offsetX = eventPoint.x - startPos.x;\n    let offsetY = eventPoint.y - startPos.y;\n\n    // If the offset variables are zero, the shape ends up having zero width or height, which is bad.\n    // Deal with this by forcing them to be non-zero (we arbitrarily choose 1; any non-zero value would work).\n    offsetX = offsetX ? offsetX : 1;\n    offsetY = offsetY ? offsetY : 1;\n\n    // The length of the shape is the greater of the X and Y offsets.\n    const offsetDistance = eventPoint.subtract(startPos).abs();\n    const length = Math.max(offsetDistance.x, offsetDistance.y);\n\n    const size = new paper.Point(\n        length * offsetX / Math.abs(offsetX),\n        length * offsetY / Math.abs(offsetY)\n    );\n\n    const position = startPos.add(size.multiply(0.5));\n\n    return {size, position};\n};\n\nexport {\n    HANDLE_RATIO,\n    checkPointsClose,\n    ensureClockwise,\n    expandBy,\n    getRandomInt,\n    getRandomBoolean,\n    getSquareDimensions,\n    scaleWithStrokes,\n    snapDeltaToAngle,\n    sortItemsByZIndex\n};\n","import paper from '@scratch/paper';\nimport Modes from '../lib/modes';\n\nimport {getItemsGroup, isGroup} from './group';\nimport {getRootItem, isCompoundPathItem, isBoundsItem, isPathItem, isPGTextItem} from './item';\nimport {getItemsCompoundPath, isCompoundPath, isCompoundPathChild} from './compound-path';\nimport {sortItemsByZIndex} from './math';\n\n/**\n * Wrapper for paper.project.getItems that excludes our helper items\n * @param {?object} options See paper.js docs for paper.Item.getItems\n * @return {Array<paper.Item>} items that match options\n */\nconst getItems = function (options) {\n    const newMatcher = function (item) {\n        return !(item instanceof paper.Layer) &&\n            item.layer.data && item.layer.data.isPaintingLayer &&\n            !item.locked &&\n            !item.isClipMask() &&\n            !(item.data && item.data.isHelperItem) &&\n            (!options.match || options.match(item));\n    };\n    const newOptions = {...options, match: newMatcher};\n    return paper.project.getItems(newOptions);\n};\n\n/**\n * @param {boolean} includeGuides True if guide layer items like the bounding box should\n *     be included in the returned items.\n * @return {Array<paper.item>} all top-level (direct descendants of a paper.Layer) items\n */\nconst getAllRootItems = function (includeGuides) {\n    includeGuides = includeGuides || false;\n    const allItems = [];\n    for (const layer of paper.project.layers) {\n        for (const child of layer.children) {\n            // don't give guides back\n            if (!includeGuides && child.guide) {\n                continue;\n            }\n            allItems.push(child);\n        }\n    }\n    return allItems;\n};\n\n/**\n * @return {Array<paper.item>} all top-level (direct descendants of a paper.Layer) items\n *     that aren't guide items or helper items.\n */\nconst getAllSelectableRootItems = function () {\n    const allItems = getAllRootItems();\n    const selectables = [];\n    for (let i = 0; i < allItems.length; i++) {\n        if (allItems[i].data && !allItems[i].data.isHelperItem) {\n            selectables.push(allItems[i]);\n        }\n    }\n    return selectables;\n};\n\nconst selectItemSegments = function (item, state) {\n    if (item.children) {\n        for (let i = 0; i < item.children.length; i++) {\n            const child = item.children[i];\n            if (child.children && child.children.length > 0) {\n                selectItemSegments(child, state);\n            } else {\n                child.fullySelected = state;\n            }\n        }\n    } else {\n        for (let i = 0; i < item.segments.length; i++) {\n            item.segments[i].selected = state;\n        }\n    }\n};\n\nconst _setGroupSelection = function (root, selected, fullySelected) {\n    root.fullySelected = fullySelected;\n    root.selected = selected;\n    // select children of compound-path or group\n    if (isCompoundPath(root) || isGroup(root)) {\n        const children = root.children;\n        if (children) {\n            for (const child of children) {\n                if (isGroup(child)) {\n                    _setGroupSelection(child, selected, fullySelected);\n                } else {\n                    child.fullySelected = fullySelected;\n                    child.selected = selected;\n                }\n            }\n        }\n    }\n};\n\nconst setItemSelection = function (item, state, fullySelected) {\n    const parentGroup = getItemsGroup(item);\n    const itemsCompoundPath = getItemsCompoundPath(item);\n    \n    // if selection is in a group, select group\n    if (parentGroup) {\n        // do it recursive\n        setItemSelection(parentGroup, state, fullySelected);\n    } else if (itemsCompoundPath) {\n        _setGroupSelection(itemsCompoundPath, state, fullySelected);\n    } else {\n        if (item.data && item.data.noSelect) {\n            return;\n        }\n        _setGroupSelection(item, state, fullySelected);\n    }\n    \n};\n\n/** @return {boolean} true if anything was selected */\nconst selectAllItems = function () {\n    const items = getAllSelectableRootItems();\n    if (items.length === 0) return false;\n    \n    for (let i = 0; i < items.length; i++) {\n        setItemSelection(items[i], true);\n    }\n    return true;\n};\n\n/** @return {boolean} true if anything was selected */\nconst selectAllSegments = function () {\n    const items = getAllSelectableRootItems();\n    if (items.length === 0) return false;\n    \n    for (let i = 0; i < items.length; i++) {\n        selectItemSegments(items[i], true);\n    }\n    return true;\n};\n\n/** @param {!function} dispatchClearSelect Function to update the Redux select state */\nconst clearSelection = function (dispatchClearSelect) {\n    paper.project.deselectAll();\n    dispatchClearSelect();\n};\n\n/**\n * This gets all selected non-grouped items and groups\n * (alternative to paper.project.selectedItems, which includes\n * group children in addition to the group)\n * @return {Array<paper.Item>} in increasing Z order.\n */\nconst getSelectedRootItems = function () {\n    const allItems = getAllSelectableRootItems();\n    const items = [];\n\n    for (const item of allItems) {\n        if (item.selected) {\n            items.push(item);\n        } else if (item instanceof paper.CompoundPath) {\n            // Consider a compound path selected if any of its paths are selected\n            for (const child of item.children) {\n                if (child.selected) {\n                    items.push(item);\n                    break;\n                }\n            }\n        }\n    }\n\n    // sort items by index (0 at bottom)\n    items.sort((a, b) => parseFloat(a.index) - parseFloat(b.index));\n    return items;\n};\n\n/**\n * This gets all selected items that are as deeply nested as possible. Does not\n * return the parent groups.\n * @return {Array<paper.Item>} in increasing Z order.\n */\nconst getSelectedLeafItems = function () {\n    const allItems = paper.project.selectedItems;\n    const items = [];\n\n    for (let i = 0; i < allItems.length; i++) {\n        const item = allItems[i];\n        if (!(item instanceof paper.Layer) && !isGroup(item) && item.data && !item.data.isSelectionBound) {\n            items.push(item);\n        }\n    }\n    items.sort(sortItemsByZIndex);\n    return items;\n};\n\n/**\n * This gets all selected path segments.\n * @return {Array<paper.Segment>} selected segments\n */\nconst getSelectedSegments = function () {\n    const selected = getSelectedLeafItems();\n    const segments = [];\n    for (const item of selected) {\n        if (!item.segments) {\n            continue;\n        }\n        for (const seg of item.segments) {\n            if (seg.selected) {\n                segments.push(seg);\n            }\n        }\n    }\n    return segments;\n};\n\nconst _deleteItemSelection = function (items, onUpdateImage) {\n    // @todo: Update toolbar state on change\n    if (items.length === 0) {\n        return false;\n    }\n    for (let i = 0; i < items.length; i++) {\n        items[i].remove();\n    }\n    onUpdateImage();\n    return true;\n};\n\n// Return true if anything was removed\nconst _removeSelectedSegments = function (items, onUpdateImage) {\n    const segmentsToRemove = [];\n    \n    for (let i = 0; i < items.length; i++) {\n        if (!items[i].segments) continue;\n        const segments = items[i].segments;\n        for (let j = 0; j < segments.length; j++) {\n            const seg = segments[j];\n            if (seg.selected) {\n                segmentsToRemove.push(seg);\n            }\n        }\n    }\n    \n    let removedSegments = false;\n    for (let i = 0; i < segmentsToRemove.length; i++) {\n        const seg = segmentsToRemove[i];\n        seg.remove();\n        removedSegments = true;\n    }\n    if (removedSegments) {\n        onUpdateImage();\n    }\n    return removedSegments;\n};\n\n// Return whether anything was deleted\nconst deleteSelection = function (mode, onUpdateImage) {\n    if (mode === Modes.RESHAPE) {\n        const selectedItems = getSelectedLeafItems();\n        // If there are points selected remove them. If not delete the item selected.\n        if (_removeSelectedSegments(selectedItems, onUpdateImage)) {\n            return true;\n        }\n        return _deleteItemSelection(selectedItems, onUpdateImage);\n    }\n    const selectedItems = getSelectedRootItems();\n    return _deleteItemSelection(selectedItems, onUpdateImage);\n};\n\nconst cloneSelection = function (recursive, onUpdateImage) {\n    const selectedItems = recursive ? getSelectedLeafItems() : getSelectedRootItems();\n    for (let i = 0; i < selectedItems.length; i++) {\n        const item = selectedItems[i];\n        item.clone();\n        item.selected = false;\n    }\n    onUpdateImage();\n};\n\nconst _checkBoundsItem = function (selectionRect, item, event) {\n    const itemBounds = new paper.Path([\n        item.localToGlobal(item.internalBounds.topLeft),\n        item.localToGlobal(item.internalBounds.topRight),\n        item.localToGlobal(item.internalBounds.bottomRight),\n        item.localToGlobal(item.internalBounds.bottomLeft)\n    ]);\n    itemBounds.closed = true;\n    itemBounds.guide = true;\n\n    for (let i = 0; i < itemBounds.segments.length; i++) {\n        const seg = itemBounds.segments[i];\n        if (selectionRect.contains(seg.point) ||\n            (i === 0 && selectionRect.getIntersections(itemBounds).length > 0)) {\n            if (event.modifiers.shift && item.selected) {\n                setItemSelection(item, false);\n\n            } else {\n                setItemSelection(item, true);\n            }\n            itemBounds.remove();\n            return true;\n            \n        }\n    }\n\n    itemBounds.remove();\n};\n\nconst _handleRectangularSelectionItems = function (item, event, rect, mode, root) {\n    if (isPathItem(item)) {\n        let segmentMode = false;\n        \n        // first round checks for segments inside the selectionRect\n        for (let j = 0; j < item.segments.length; j++) {\n            const seg = item.segments[j];\n            if (rect.contains(seg.point)) {\n                if (mode === Modes.RESHAPE) {\n                    if (event.modifiers.shift && seg.selected) {\n                        seg.selected = false;\n                    } else {\n                        seg.selected = true;\n                    }\n                    segmentMode = true;\n                } else {\n                    if (event.modifiers.shift && item.selected) {\n                        setItemSelection(root, false);\n                    } else {\n                        setItemSelection(root, true, true /* fullySelected */);\n                    }\n                    return false;\n                }\n            }\n        }\n\n        // second round checks for path intersections\n        const intersections = item.getIntersections(rect);\n        if (intersections.length > 0 && !segmentMode) {\n            // if in reshape mode, select the curves that intersect\n            // with the selectionRect\n            if (mode === Modes.RESHAPE) {\n                for (let k = 0; k < intersections.length; k++) {\n                    const curve = intersections[k].curve;\n                    // intersections contains every curve twice because\n                    // the selectionRect intersects a circle always at\n                    // two points. so we skip every other curve\n                    if (k % 2 === 1) {\n                        continue;\n                    }\n\n                    if (event.modifiers.shift) {\n                        curve.selected = !curve.selected;\n                    } else {\n                        curve.selected = true;\n                    }\n                }\n            } else {\n                if (event.modifiers.shift && item.selected) {\n                    setItemSelection(item, false);\n\n                } else {\n                    setItemSelection(item, true);\n                }\n                return false;\n            }\n        }\n        // @todo: Update toolbar state on change\n\n    } else if (isBoundsItem(item)) {\n        if (_checkBoundsItem(rect, item, event)) {\n            return false;\n        }\n    }\n    return true;\n};\n\n// if the rectangular selection found a group, drill into it recursively\nconst _rectangularSelectionGroupLoop = function (group, rect, root, event, mode) {\n    for (let i = 0; i < group.children.length; i++) {\n        const child = group.children[i];\n        \n        if (isGroup(child) || isCompoundPathItem(child)) {\n            _rectangularSelectionGroupLoop(child, rect, root, event, mode);\n        } else {\n            _handleRectangularSelectionItems(child, event, rect, mode, root);\n        }\n    }\n    return true;\n};\n\n/**\n * Called after drawing a selection rectangle in a select mode. In reshape mode, this\n * selects all control points and curves within the rectangle. In select mode, this\n * selects all items and groups that intersect the rectangle\n * @param {!MouseEvent} event The mouse event to draw the rectangle\n * @param {!paper.Rect} rect The selection rectangle\n * @param {Modes} mode The mode of the paint editor when drawing the rectangle\n */\nconst processRectangularSelection = function (event, rect, mode) {\n    const allItems = getAllSelectableRootItems();\n    \n    for (let i = 0; i < allItems.length; i++) {\n        const item = allItems[i];\n        if (mode === Modes.RESHAPE && isPGTextItem(getRootItem(item))) {\n            continue;\n        }\n        if (isGroup(item) || isCompoundPathItem(item)) {\n            // check for item segment points inside\n            _rectangularSelectionGroupLoop(item, rect, item, event, mode);\n        } else {\n            _handleRectangularSelectionItems(item, event, rect, mode, item);\n        }\n    }\n};\n\n/**\n * When switching to the select tool while having a child object of a\n * compound path selected, deselect the child and select the compound path\n * instead. (otherwise the compound path breaks because of scale-grouping)\n */\nconst selectRootItem = function () {\n    const items = getSelectedLeafItems();\n    for (const item of items) {\n        if (isCompoundPathChild(item)) {\n            const cp = getItemsCompoundPath(item);\n            setItemSelection(cp, true, true /* fullySelected */);\n        }\n        const rootItem = getRootItem(item);\n        if (item !== rootItem) {\n            setItemSelection(rootItem, true, true /* fullySelected */);\n        }\n    }\n};\n\nexport {\n    getItems,\n    getAllRootItems,\n    getAllSelectableRootItems,\n    selectAllItems,\n    selectAllSegments,\n    clearSelection,\n    deleteSelection,\n    cloneSelection,\n    setItemSelection,\n    getSelectedLeafItems,\n    getSelectedRootItems,\n    getSelectedSegments,\n    processRectangularSelection,\n    selectRootItem\n};\n","import paper from '@scratch/paper';\nimport {getGuideLayer} from './layer';\nimport {getAllRootItems} from './selection';\n\nconst GUIDE_BLUE = '#009dec';\nconst GUIDE_GREY = '#aaaaaa';\n\nconst setDefaultGuideStyle = function (item) {\n    item.strokeWidth = 1 / paper.view.zoom;\n    item.opacity = 1;\n    item.blendMode = 'normal';\n    item.guide = true;\n};\n\nconst hoverItem = function (item) {\n    const segments = item.segments;\n    const clone = new paper.Path(segments);\n    setDefaultGuideStyle(clone);\n    if (item.closed) {\n        clone.closed = true;\n    }\n    clone.parent = getGuideLayer();\n    clone.position = item.position;\n    clone.strokeColor = GUIDE_BLUE;\n    clone.fillColor = null;\n    clone.data.isHelperItem = true;\n    clone.data.origItem = item;\n    clone.bringToFront();\n\n    return clone;\n};\n\nconst hoverBounds = function (item, expandBy) {\n    let bounds = item.internalBounds;\n    if (expandBy) {\n        bounds = bounds.expand(expandBy);\n    }\n    const rect = new paper.Path.Rectangle(bounds);\n    rect.matrix = item.matrix;\n    setDefaultGuideStyle(rect);\n    rect.parent = getGuideLayer();\n    rect.strokeColor = GUIDE_BLUE;\n    rect.fillColor = null;\n    rect.data.isHelperItem = true;\n    rect.data.origItem = item;\n    rect.bringToFront();\n\n    return rect;\n};\n\nconst rectSelect = function (event, color) {\n    const half = new paper.Point(0.5 / paper.view.zoom, 0.5 / paper.view.zoom);\n    const start = event.downPoint.add(half);\n    const end = event.point.add(half);\n    const rect = new paper.Path.Rectangle(start, end);\n    const zoom = 1.0 / paper.view.zoom;\n    setDefaultGuideStyle(rect);\n    if (!color) color = GUIDE_GREY;\n    rect.parent = getGuideLayer();\n    rect.strokeColor = color;\n    rect.data.isRectSelect = true;\n    rect.data.isHelperItem = true;\n    rect.dashArray = [3.0 * zoom, 3.0 * zoom];\n    return rect;\n};\n\nconst getGuideColor = function () {\n    return GUIDE_BLUE;\n};\n\nconst _removePaperItemsByDataTags = function (tags) {\n    const allItems = getAllRootItems(true);\n    for (const item of allItems) {\n        for (const tag of tags) {\n            if (item.data && item.data[tag]) {\n                item.remove();\n            }\n        }\n    }\n};\n\nconst _removePaperItemsByTags = function (tags) {\n    const allItems = getAllRootItems(true);\n    for (const item of allItems) {\n        for (const tag of tags) {\n            if (item[tag]) {\n                item.remove();\n            }\n        }\n    }\n};\n\nconst removeBoundsPath = function () {\n    _removePaperItemsByDataTags(['isSelectionBound', 'isRotHandle', 'isScaleHandle']);\n};\n\nconst removeBoundsHandles = function () {\n    _removePaperItemsByDataTags(['isRotHandle', 'isScaleHandle']);\n};\n\nconst removeAllGuides = function () {\n    _removePaperItemsByTags(['guide']);\n};\n\nconst removeHitPoint = function () {\n    _removePaperItemsByDataTags(['isHitPoint']);\n};\n\nconst drawHitPoint = function (point) {\n    removeHitPoint();\n    if (point) {\n        const hitPoint = paper.Path.Circle(point, 4 / paper.view.zoom /* radius */);\n        hitPoint.strokeWidth = 1 / paper.view.zoom;\n        hitPoint.strokeColor = GUIDE_BLUE;\n        hitPoint.fillColor = new paper.Color(1, 1, 1, 0.5);\n        hitPoint.parent = getGuideLayer();\n        hitPoint.data.isHitPoint = true;\n        hitPoint.data.isHelperItem = true;\n    }\n};\n\nexport {\n    hoverItem,\n    hoverBounds,\n    rectSelect,\n    removeAllGuides,\n    removeBoundsHandles,\n    removeBoundsPath,\n    drawHitPoint,\n    removeHitPoint,\n    getGuideColor,\n    setDefaultGuideStyle\n};\n","import paper from '@scratch/paper';\nimport {createCanvas, clearRaster, getRaster, hideGuideLayers, showGuideLayers} from './layer';\nimport {getGuideColor} from './guides';\nimport {clearSelection} from './selection';\nimport {ART_BOARD_WIDTH, ART_BOARD_HEIGHT, CENTER, MAX_WORKSPACE_BOUNDS} from './view';\nimport Formats from '../lib/format';\nimport log from '../log/log';\n\nconst forEachLinePoint = function (point1, point2, callback) {\n    // Bresenham line algorithm\n    let x1 = ~~point1.x;\n    const x2 = ~~point2.x;\n    let y1 = ~~point1.y;\n    const y2 = ~~point2.y;\n\n    const dx = Math.abs(x2 - x1);\n    const dy = Math.abs(y2 - y1);\n    const sx = (x1 < x2) ? 1 : -1;\n    const sy = (y1 < y2) ? 1 : -1;\n    let err = dx - dy;\n\n    callback(x1, y1);\n    while (x1 !== x2 || y1 !== y2) {\n        const e2 = err * 2;\n        if (e2 > -dy) {\n            err -= dy;\n            x1 += sx;\n        }\n        if (e2 < dx) {\n            err += dx;\n            y1 += sy;\n        }\n        callback(x1, y1);\n    }\n};\n\n/**\n * @param {!number} a Coefficient in ax^2 + bx + c = 0\n * @param {!number} b Coefficient in ax^2 + bx + c = 0\n * @param {!number} c Coefficient in ax^2 + bx + c = 0\n * @return {Array<number>} Array of 2 solutions, with the larger solution first\n */\nconst solveQuadratic_ = function (a, b, c) {\n    const soln1 = (-b + Math.sqrt((b * b) - (4 * a * c))) / 2 / a;\n    const soln2 = (-b - Math.sqrt((b * b) - (4 * a * c))) / 2 / a;\n    return soln1 > soln2 ? [soln1, soln2] : [soln2, soln1];\n};\n\n/**\n * @param {!object} options drawing options\n * @param {!number} options.centerX center of ellipse, x\n * @param {!number} options.centerY center of ellipse, y\n * @param {!number} options.radiusX major radius of ellipse\n * @param {!number} options.radiusY minor radius of ellipse\n * @param {!number} options.shearSlope slope of the sheared x axis\n * @param {?boolean} options.isFilled true if isFilled\n * @param {?function} options.drawFn The function called on each point in the outline, used only\n *     if isFilled is false.\n * @param {!CanvasRenderingContext2D} context for drawing\n * @return {boolean} true if anything was drawn, false if not\n */\nconst drawShearedEllipse_ = function (options, context) {\n    const centerX = ~~options.centerX;\n    const centerY = ~~options.centerY;\n    const radiusX = ~~Math.abs(options.radiusX) - .5;\n    const radiusY = ~~Math.abs(options.radiusY) - .5;\n    const shearSlope = options.shearSlope;\n    const isFilled = options.isFilled;\n    const drawFn = options.drawFn;\n    if (shearSlope === Infinity || radiusX < 1 || radiusY < 1) {\n        return false;\n    }\n    // A, B, and C represent Ax^2 + Bxy + Cy^2 = 1 coefficients in a skewed ellipse formula\n    const A = (1 / radiusX / radiusX) + (shearSlope * shearSlope / radiusY / radiusY);\n    const B = -2 * shearSlope / radiusY / radiusY;\n    const C = 1 / radiusY / radiusY;\n    // Line with slope1 intersects the ellipse where its derivative is 1\n    const slope1 = ((-2 * A) - B) / ((2 * C) + B);\n    // Line with slope2 intersects the ellipse where its derivative is -1\n    const slope2 = (-(2 * A) + B) / (-(2 * C) + B);\n    const verticalStepsFirst = slope1 > slope2;\n\n    /**\n     * Vertical stepping portion of ellipse drawing algorithm\n     * @param {!number} startY y to start drawing from\n     * @param {!function} conditionFn function which should become true when we should stop stepping\n     * @return {object} last point drawn to the canvas, or null if no points drawn\n     */\n    const drawEllipseStepVertical_ = function (startY, conditionFn) {\n        // Points on the ellipse\n        let y = startY;\n        let x = solveQuadratic_(A, B * y, (C * y * y) - 1);\n        // last pixel position at which a draw was performed\n        let pY;\n        let pX1;\n        let pX2;\n        while (conditionFn(x[0], y)) {\n            pY = Math.floor(y);\n            pX1 = Math.floor(x[0]);\n            pX2 = Math.floor(x[1]);\n            if (isFilled) {\n                context.fillRect(centerX - pX1 - 1, centerY + pY, pX1 - pX2 + 1, 1);\n                context.fillRect(centerX + pX2, centerY - pY - 1, pX1 - pX2 + 1, 1);\n            } else {\n                drawFn(centerX - pX1 - 1, centerY + pY);\n                drawFn(centerX + pX1, centerY - pY - 1);\n            }\n            y--;\n            x = solveQuadratic_(A, B * y, (C * y * y) - 1);\n        }\n        return pX1 || pY ? {x: pX1, y: pY} : null;\n    };\n\n    /**\n     * Horizontal stepping portion of ellipse drawing algorithm\n     * @param {!number} startX x to start drawing from\n     * @param {!function} conditionFn function which should become false when we should stop stepping\n     * @return {object} last point drawn to the canvas, or null if no points drawn\n     */\n    const drawEllipseStepHorizontal_ = function (startX, conditionFn) {\n        // Points on the ellipse\n        let x = startX;\n        let y = solveQuadratic_(C, B * x, (A * x * x) - 1);\n        // last pixel position at which a draw was performed\n        let pX;\n        let pY1;\n        let pY2;\n        while (conditionFn(x, y[0])) {\n            pX = Math.floor(x);\n            pY1 = Math.floor(y[0]);\n            pY2 = Math.floor(y[1]);\n            if (isFilled) {\n                context.fillRect(centerX - pX - 1, centerY + pY2, 1, pY1 - pY2 + 1);\n                context.fillRect(centerX + pX, centerY - pY1 - 1, 1, pY1 - pY2 + 1);\n            } else {\n                drawFn(centerX - pX - 1, centerY + pY1);\n                drawFn(centerX + pX, centerY - pY1 - 1);\n            }\n            x++;\n            y = solveQuadratic_(C, B * x, (A * x * x) - 1);\n        }\n        return pX || pY1 ? {x: pX, y: pY1} : null;\n    };\n\n    // Last point drawn\n    let lastPoint;\n    if (verticalStepsFirst) {\n        let forwardLeaning = false;\n        if (slope1 > 0) forwardLeaning = true;\n\n        // step vertically\n        lastPoint = drawEllipseStepVertical_(\n            forwardLeaning ? -radiusY : radiusY,\n            (x, y) => {\n                if (x === 0 && y > 0) return true;\n                if (x === 0 && y < 0) return false;\n                return y / x > slope1;\n            }\n        );\n        // step horizontally while slope is flat\n        lastPoint = drawEllipseStepHorizontal_(\n            lastPoint ? -lastPoint.x + .5 : .5,\n            (x, y) => y / x > slope2\n        ) || {x: -lastPoint.x - .5, y: -lastPoint.y - .5};\n        // step vertically until back to start\n        drawEllipseStepVertical_(\n            lastPoint.y - .5,\n            (x, y) => {\n                if (forwardLeaning) return y > -radiusY;\n                return y > radiusY;\n            }\n        );\n    } else {\n        // step horizontally forward\n        lastPoint = drawEllipseStepHorizontal_(\n            .5,\n            (x, y) => y / x > slope2\n        );\n        // step vertically while slope is steep\n        lastPoint = drawEllipseStepVertical_(\n            lastPoint ? lastPoint.y - .5 : radiusY,\n            (x, y) => {\n                if (x === 0 && y > 0) return true;\n                if (x === 0 && y < 0) return false;\n                return y / x > slope1;\n            }\n        ) || lastPoint;\n        // step horizontally until back to start\n        drawEllipseStepHorizontal_(\n            -lastPoint.x + .5,\n            x => x < 0\n        );\n    }\n    return true;\n};\n\n/**\n * @param {!number} size The diameter of the brush\n * @param {!string} color The css color of the brush\n * @param {?boolean} isEraser True if we want the brush mark for the eraser\n * @return {HTMLCanvasElement} a canvas with the brush mark printed on it\n */\nconst getBrushMark = function (size, color, isEraser) {\n    size = ~~size;\n    const canvas = document.createElement('canvas');\n    const roundedUpRadius = Math.ceil(size / 2);\n    canvas.width = roundedUpRadius * 2;\n    canvas.height = roundedUpRadius * 2;\n    const context = canvas.getContext('2d');\n    context.imageSmoothingEnabled = false;\n    context.fillStyle = isEraser ? 'white' : color;\n    // Small squares for pixel artists\n    if (size <= 5) {\n        let offset = 0;\n        if (size % 2) offset = 1;\n        if (isEraser) {\n            context.fillStyle = getGuideColor();\n            context.fillRect(offset, offset, size, size);\n            context.fillStyle = 'white';\n            context.fillRect(offset + 1, offset + 1, size - 2, size - 2);\n        } else {\n            context.fillRect(offset, offset, size, size);\n        }\n    } else {\n        drawShearedEllipse_({\n            centerX: size / 2,\n            centerY: size / 2,\n            radiusX: size / 2,\n            radiusY: size / 2,\n            shearSlope: 0,\n            isFilled: true\n        }, context);\n        if (isEraser) {\n            // Add outline\n            context.fillStyle = getGuideColor();\n            drawShearedEllipse_({\n                centerX: size / 2,\n                centerY: size / 2,\n                radiusX: size / 2,\n                radiusY: size / 2,\n                shearSlope: 0,\n                isFilled: false,\n                drawFn: (x, y) => context.fillRect(x, y, 1, 1)\n            }, context);\n        }\n    }\n    return canvas;\n};\n\n/**\n * Draw an ellipse, given the original axis-aligned radii and\n * an affine transformation. Returns false if the ellipse could\n * not be drawn; for instance, the matrix is non-invertible.\n *\n * @param {!options} options Parameters for the ellipse\n * @param {!paper.Point} options.position Center of ellipse\n * @param {!number} options.radiusX x-aligned radius of ellipse\n * @param {!number} options.radiusY y-aligned radius of ellipse\n * @param {!paper.Matrix} options.matrix affine transformation matrix\n * @param {?boolean} options.isFilled true if isFilled\n * @param {?number} options.thickness Thickness of outline, used only if isFilled is false.\n * @param {!CanvasRenderingContext2D} context for drawing\n * @return {boolean} true if anything was drawn, false if not\n */\nconst drawEllipse = function (options, context) {\n    const positionX = options.position.x;\n    const positionY = options.position.y;\n    const radiusX = options.radiusX;\n    const radiusY = options.radiusY;\n    const matrix = options.matrix;\n    const isFilled = options.isFilled;\n    const thickness = options.thickness;\n    let drawFn = null;\n\n    if (!matrix.isInvertible()) return false;\n    const inverse = matrix.clone().invert();\n\n    const isGradient = context.fillStyle instanceof CanvasGradient;\n\n    // If drawing a gradient, we need to draw the shape onto a temporary canvas, then draw the gradient atop that canvas\n    // only where the shape appears. drawShearedEllipse draws some pixels twice, which would be a problem if the\n    // gradient fades to transparent as those pixels would end up looking more opaque. Instead, mask in the gradient.\n    // https://github.com/LLK/scratch-paint/issues/1152\n    // Outlines are drawn as a series of brush mark images and as such can't be drawn as gradients in the first place.\n    let origContext;\n    let tmpCanvas;\n    const {width: canvasWidth, height: canvasHeight} = context.canvas;\n    if (isGradient) {\n        tmpCanvas = createCanvas(canvasWidth, canvasHeight);\n        origContext = context;\n        context = tmpCanvas.getContext('2d');\n    }\n\n    if (!isFilled) {\n        const brushMark = getBrushMark(thickness, isGradient ? 'black' : context.fillStyle);\n        const roundedUpRadius = Math.ceil(thickness / 2);\n        drawFn = (x, y) => {\n            context.drawImage(brushMark, ~~x - roundedUpRadius, ~~y - roundedUpRadius);\n        };\n    }\n\n    // Calculate the ellipse formula\n    // A, B, and C represent Ax^2 + Bxy + Cy^2 = 1 coefficients in a transformed ellipse formula\n    const A = (inverse.a * inverse.a / radiusX / radiusX) + (inverse.b * inverse.b / radiusY / radiusY);\n    const B = (2 * inverse.a * inverse.c / radiusX / radiusX) + (2 * inverse.b * inverse.d / radiusY / radiusY);\n    const C = (inverse.c * inverse.c / radiusX / radiusX) + (inverse.d * inverse.d / radiusY / radiusY);\n\n    // Convert to a sheared ellipse formula. All ellipses are equivalent to some sheared axis-aligned ellipse.\n    // radiusA, radiusB, and slope are parameters of a skewed ellipse with the above formula\n    const radiusB = 1 / Math.sqrt(C);\n    const radiusA = Math.sqrt(-4 * C / ((B * B) - (4 * A * C)));\n    const slope = B / 2 / C;\n\n    const wasDrawn = drawShearedEllipse_({\n        centerX: positionX,\n        centerY: positionY,\n        radiusX: radiusA,\n        radiusY: radiusB,\n        shearSlope: slope,\n        isFilled: isFilled,\n        drawFn: drawFn\n    }, context);\n\n    // Mask in the gradient only where the shape was drawn, and draw it. Then draw the gradientified shape onto the\n    // original canvas normally.\n    if (isGradient && wasDrawn) {\n        context.globalCompositeOperation = 'source-in';\n        context.fillStyle = origContext.fillStyle;\n        context.fillRect(0, 0, canvasWidth, canvasHeight);\n        origContext.drawImage(tmpCanvas, 0, 0);\n    }\n\n    return wasDrawn;\n};\n\nconst rowBlank_ = function (imageData, width, y) {\n    for (let x = 0; x < width; ++x) {\n        if (imageData.data[(y * width << 2) + (x << 2) + 3] !== 0) return false;\n    }\n    return true;\n};\n\nconst columnBlank_ = function (imageData, width, x, top, bottom) {\n    for (let y = top; y < bottom; ++y) {\n        if (imageData.data[(y * width << 2) + (x << 2) + 3] !== 0) return false;\n    }\n    return true;\n};\n\n/**\n * Get bounds around the contents of a raster, trimming transparent pixels from edges.\n * Adapted from Tim Down's https://gist.github.com/timdown/021d9c8f2aabc7092df564996f5afbbf\n * @param {paper.Raster} raster The raster to get the bounds around\n * @param {paper.Rectangle} [rect] Optionally, an alternative bounding rectangle to limit the check to.\n * @returns {paper.Rectangle} The bounds around the opaque area of the passed raster\n * (or opaque within the passed rectangle)\n */\nconst getHitBounds = function (raster, rect) {\n    const bounds = rect || raster.bounds;\n    const width = bounds.width;\n    const imageData = raster.getImageData(bounds);\n    let top = 0;\n    let bottom = imageData.height;\n    let left = 0;\n    let right = imageData.width;\n\n    while (top < bottom && rowBlank_(imageData, width, top)) ++top;\n    while (bottom - 1 > top && rowBlank_(imageData, width, bottom - 1)) --bottom;\n    while (left < right && columnBlank_(imageData, width, left, top, bottom)) ++left;\n    while (right - 1 > left && columnBlank_(imageData, width, right - 1, top, bottom)) --right;\n\n    // Center an empty bitmap\n    if (top === bottom) {\n        top = bottom = imageData.height / 2;\n    }\n    if (left === right) {\n        left = right = imageData.width / 2;\n    }\n\n    return new paper.Rectangle(left + bounds.left, top + bounds.top, right - left, bottom - top);\n};\n\nconst trim_ = function (raster) {\n    const hitBounds = getHitBounds(raster);\n    if (hitBounds.width && hitBounds.height) {\n        return raster.getSubRaster(getHitBounds(raster));\n    }\n    return null;\n};\n\n/**\n * @param {boolean} shouldInsert True if the trimmed raster should be added to the active layer.\n * @returns {paper.Raster} raster layer with whitespace trimmed from ends, or null if there is\n * nothing on the raster layer.\n */\nconst getTrimmedRaster = function (shouldInsert) {\n    const trimmedRaster = trim_(getRaster());\n    if (!trimmedRaster) return null;\n    if (shouldInsert) {\n        paper.project.activeLayer.addChild(trimmedRaster);\n    } else {\n        trimmedRaster.remove();\n    }\n    return trimmedRaster;\n};\n\nconst convertToBitmap = function (clearSelectedItems, onUpdateImage, optFontInlineFn) {\n    // @todo if the active layer contains only rasters, drawing them directly to the raster layer\n    // would be more efficient.\n\n    clearSelection(clearSelectedItems);\n\n    // Export svg\n    const guideLayers = hideGuideLayers(true /* includeRaster */);\n    const bounds = paper.project.activeLayer.drawnBounds;\n    const svg = paper.project.exportSVG({\n        bounds: 'content',\n        matrix: new paper.Matrix().translate(-bounds.x, -bounds.y)\n    });\n    showGuideLayers(guideLayers);\n\n    // Get rid of anti-aliasing\n    // @todo get crisp text https://github.com/LLK/scratch-paint/issues/508\n    svg.setAttribute('shape-rendering', 'crispEdges');\n\n    let svgString = (new XMLSerializer()).serializeToString(svg);\n    if (optFontInlineFn) {\n        svgString = optFontInlineFn(svgString);\n    } else {\n        log.error('Fonts may be converted to bitmap incorrectly if fontInlineFn prop is not set on PaintEditor.');\n    }\n\n    // Put anti-aliased SVG into image, and dump image back into canvas\n    const img = new Image();\n    img.onload = () => {\n        if (img.width && img.height) {\n            getRaster().drawImage(\n                img,\n                new paper.Point(Math.floor(bounds.topLeft.x), Math.floor(bounds.topLeft.y)));\n        }\n        for (let i = paper.project.activeLayer.children.length - 1; i >= 0; i--) {\n            const item = paper.project.activeLayer.children[i];\n            if (item.clipMask === false) {\n                item.remove();\n            } else {\n                // Resize mask for bitmap bounds\n                item.size.height = ART_BOARD_HEIGHT;\n                item.size.width = ART_BOARD_WIDTH;\n                item.setPosition(CENTER);\n            }\n        }\n        onUpdateImage(false /* skipSnapshot */, Formats.BITMAP /* formatOverride */);\n    };\n    img.onerror = () => {\n        // Fallback if browser does not support SVG data URIs in images.\n        // The problem with rasterize is that it will anti-alias.\n        const raster = paper.project.activeLayer.rasterize(72, false /* insert */);\n        raster.onLoad = () => {\n            if (raster.canvas.width && raster.canvas.height) {\n                getRaster().drawImage(raster.canvas, raster.bounds.topLeft);\n            }\n            paper.project.activeLayer.removeChildren();\n            onUpdateImage(false /* skipSnapshot */, Formats.BITMAP /* formatOverride */);\n        };\n    };\n    // Hash tags will break image loading without being encoded first\n    img.src = `data:image/svg+xml;utf8,${encodeURIComponent(svgString)}`;\n};\n\nconst convertToVector = function (clearSelectedItems, onUpdateImage) {\n    clearSelection(clearSelectedItems);\n    for (const item of paper.project.activeLayer.children) {\n        if (item.clipMask === true) {\n            // Resize mask for vector bounds\n            item.size.height = MAX_WORKSPACE_BOUNDS.height;\n            item.size.width = MAX_WORKSPACE_BOUNDS.width;\n            item.setPosition(CENTER);\n        }\n    }\n    getTrimmedRaster(true /* shouldInsert */);\n\n    clearRaster();\n    onUpdateImage(false /* skipSnapshot */, Formats.VECTOR /* formatOverride */);\n};\n\nconst getColor_ = function (x, y, context) {\n    return context.getImageData(x, y, 1, 1).data;\n};\n\nconst matchesColor_ = function (x, y, imageData, oldColor) {\n    const index = ((y * imageData.width) + x) * 4;\n    return (\n        imageData.data[index + 0] === oldColor[0] &&\n        imageData.data[index + 1] === oldColor[1] &&\n        imageData.data[index + 2] === oldColor[2] &&\n        imageData.data[index + 3 ] === oldColor[3]\n    );\n};\n\nconst colorPixel_ = function (x, y, imageData, newColor) {\n    const index = ((y * imageData.width) + x) * 4;\n    imageData.data[index + 0] = newColor[0];\n    imageData.data[index + 1] = newColor[1];\n    imageData.data[index + 2] = newColor[2];\n    imageData.data[index + 3] = newColor[3];\n};\n\n/**\n * Flood fill beginning at the given point.\n * Based on http://www.williammalone.com/articles/html5-canvas-javascript-paint-bucket-tool/\n *\n * @param {!int} x The x coordinate on the context at which to begin\n * @param {!int} y The y coordinate on the context at which to begin\n * @param {!ImageData} sourceImageData The image data to sample from. This is edited by the function.\n * @param {!ImageData} destImageData The image data to edit. May match sourceImageData. Should match\n *     size of sourceImageData.\n * @param {!Array<number>} newColor The color to replace with. A length 4 array [r, g, b, a].\n * @param {!Array<number>} oldColor The color to replace. A length 4 array [r, g, b, a].\n *     This must be different from newColor.\n * @param {!Array<Array<int>>} stack The stack of pixels we need to look at\n */\nconst floodFillInternal_ = function (x, y, sourceImageData, destImageData, newColor, oldColor, stack) {\n    while (y > 0 && matchesColor_(x, y - 1, sourceImageData, oldColor)) {\n        y--;\n    }\n    let lastLeftMatchedColor = false;\n    let lastRightMatchedColor = false;\n    for (; y < sourceImageData.height; y++) {\n        if (!matchesColor_(x, y, sourceImageData, oldColor)) break;\n        colorPixel_(x, y, sourceImageData, newColor);\n        colorPixel_(x, y, destImageData, newColor);\n        if (x > 0) {\n            if (matchesColor_(x - 1, y, sourceImageData, oldColor)) {\n                if (!lastLeftMatchedColor) {\n                    stack.push([x - 1, y]);\n                    lastLeftMatchedColor = true;\n                }\n            } else {\n                lastLeftMatchedColor = false;\n            }\n        }\n        if (x < sourceImageData.width - 1) {\n            if (matchesColor_(x + 1, y, sourceImageData, oldColor)) {\n                if (!lastRightMatchedColor) {\n                    stack.push([x + 1, y]);\n                    lastRightMatchedColor = true;\n                }\n            } else {\n                lastRightMatchedColor = false;\n            }\n        }\n    }\n};\n\n/**\n * Given a fill style string, get the color\n * @param {string} fillStyleString the fill style\n * @return {Array<int>} Color, a length 4 array\n */\nconst fillStyleToColor_ = function (fillStyleString) {\n    const tmpCanvas = document.createElement('canvas');\n    tmpCanvas.width = 1;\n    tmpCanvas.height = 1;\n    const context = tmpCanvas.getContext('2d');\n    context.fillStyle = fillStyleString;\n    context.fillRect(0, 0, 1, 1);\n    return context.getImageData(0, 0, 1, 1).data;\n};\n\n/**\n * Flood fill beginning at the given point\n * @param {!number} x The x coordinate on the context at which to begin\n * @param {!number} y The y coordinate on the context at which to begin\n * @param {!string} color A color string, which would go into context.fillStyle\n * @param {!HTMLCanvas2DContext} sourceContext The context from which to sample to determine where to flood fill\n * @param {!HTMLCanvas2DContext} destContext The context to which to draw. May match sourceContext. Should match\n *     the size of sourceContext.\n * @return {boolean} True if image changed, false otherwise\n */\nconst floodFill = function (x, y, color, sourceContext, destContext) {\n    x = ~~x;\n    y = ~~y;\n    const newColor = fillStyleToColor_(color);\n    const oldColor = getColor_(x, y, sourceContext);\n    const sourceImageData = sourceContext.getImageData(0, 0, sourceContext.canvas.width, sourceContext.canvas.height);\n    let destImageData = sourceImageData;\n    if (destContext !== sourceContext) {\n        destImageData = new ImageData(sourceContext.canvas.width, sourceContext.canvas.height);\n    }\n    if (oldColor[0] === newColor[0] &&\n            oldColor[1] === newColor[1] &&\n            oldColor[2] === newColor[2] &&\n            oldColor[3] === newColor[3]) { // no-op\n        return false;\n    }\n    const stack = [[x, y]];\n    while (stack.length) {\n        const pop = stack.pop();\n        floodFillInternal_(pop[0], pop[1], sourceImageData, destImageData, newColor, oldColor, stack);\n    }\n    destContext.putImageData(destImageData, 0, 0);\n    return true;\n};\n\n/**\n * Replace all instances of the color at the given point\n * @param {!number} x The x coordinate on the context of the start color\n * @param {!number} y The y coordinate on the context of the start color\n * @param {!string} color A color string, which would go into context.fillStyle\n * @param {!HTMLCanvas2DContext} sourceContext The context from which to sample to determine where to flood fill\n * @param {!HTMLCanvas2DContext} destContext The context to which to draw. May match sourceContext. Should match\n * @return {boolean} True if image changed, false otherwise\n */\nconst floodFillAll = function (x, y, color, sourceContext, destContext) {\n    x = ~~x;\n    y = ~~y;\n    const newColor = fillStyleToColor_(color);\n    const oldColor = getColor_(x, y, sourceContext);\n    const sourceImageData = sourceContext.getImageData(0, 0, sourceContext.canvas.width, sourceContext.canvas.height);\n    let destImageData = sourceImageData;\n    if (destContext !== sourceContext) {\n        destImageData = new ImageData(sourceContext.canvas.width, sourceContext.canvas.height);\n    }\n    if (oldColor[0] === newColor[0] &&\n            oldColor[1] === newColor[1] &&\n            oldColor[2] === newColor[2] &&\n            oldColor[3] === newColor[3]) { // no-op\n        return false;\n    }\n    for (let i = 0; i < sourceImageData.width; i++) {\n        for (let j = 0; j < sourceImageData.height; j++) {\n            if (matchesColor_(i, j, sourceImageData, oldColor)) {\n                colorPixel_(i, j, destImageData, newColor);\n            }\n        }\n    }\n    destContext.putImageData(destImageData, 0, 0);\n    return true;\n};\n\n/**\n * @param {!paper.Shape.Rectangle} rect The rectangle to draw to the canvas\n * @param {!HTMLCanvas2DContext} context The context in which to draw\n */\nconst fillRect = function (rect, context) {\n    // No rotation component to matrix\n    if (rect.matrix.b === 0 && rect.matrix.c === 0) {\n        const width = rect.size.width * rect.matrix.a;\n        const height = rect.size.height * rect.matrix.d;\n        context.fillRect(\n            Math.round(rect.matrix.tx - (width / 2)),\n            Math.round(rect.matrix.ty - (height / 2)),\n            Math.round(width),\n            Math.round(height)\n        );\n        return;\n    }\n    const startPoint = rect.matrix.transform(new paper.Point(-rect.size.width / 2, -rect.size.height / 2));\n    const widthPoint = rect.matrix.transform(new paper.Point(rect.size.width / 2, -rect.size.height / 2));\n    const heightPoint = rect.matrix.transform(new paper.Point(-rect.size.width / 2, rect.size.height / 2));\n    const endPoint = rect.matrix.transform(new paper.Point(rect.size.width / 2, rect.size.height / 2));\n    const center = rect.matrix.transform(new paper.Point());\n    const points = [startPoint, widthPoint, heightPoint, endPoint].sort((a, b) => a.x - b.x);\n\n    const solveY = (point1, point2, x) => {\n        if (point2.x === point1.x) return center.x > point1.x ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY;\n        return ((point2.y - point1.y) / (point2.x - point1.x) * (x - point1.x)) + point1.y;\n    };\n    for (let x = Math.round(points[0].x); x < Math.round(points[3].x); x++) {\n        const ys = [\n            solveY(startPoint, widthPoint, x + .5),\n            solveY(startPoint, heightPoint, x + .5),\n            solveY(endPoint, widthPoint, x + .5),\n            solveY(endPoint, heightPoint, x + .5)\n        ].sort((a, b) => a - b);\n        context.fillRect(x, Math.round(ys[1]), 1, Math.max(1, Math.round(ys[2]) - Math.round(ys[1])));\n    }\n};\n\n/**\n * @param {!paper.Shape.Rectangle} rect The rectangle to draw to the canvas\n * @param {!number} thickness The thickness of the outline\n * @param {!HTMLCanvas2DContext} context The context in which to draw\n */\nconst outlineRect = function (rect, thickness, context) {\n    const brushMark = getBrushMark(thickness, context.fillStyle);\n    const roundedUpRadius = Math.ceil(thickness / 2);\n    const drawFn = (x, y) => {\n        context.drawImage(brushMark, ~~x - roundedUpRadius, ~~y - roundedUpRadius);\n    };\n\n    const isGradient = context.fillStyle instanceof CanvasGradient;\n\n    // If drawing a gradient, we need to draw the shape onto a temporary canvas, then draw the gradient atop that canvas\n    // only where the shape appears. Outlines are drawn as a series of brush mark images and as such can't be drawn as\n    // gradients.\n    let origContext;\n    let tmpCanvas;\n    const {width: canvasWidth, height: canvasHeight} = context.canvas;\n    if (isGradient) {\n        tmpCanvas = createCanvas(canvasWidth, canvasHeight);\n        origContext = context;\n        context = tmpCanvas.getContext('2d');\n    }\n\n    const startPoint = rect.matrix.transform(new paper.Point(-rect.size.width / 2, -rect.size.height / 2));\n    const widthPoint = rect.matrix.transform(new paper.Point(rect.size.width / 2, -rect.size.height / 2));\n    const heightPoint = rect.matrix.transform(new paper.Point(-rect.size.width / 2, rect.size.height / 2));\n    const endPoint = rect.matrix.transform(new paper.Point(rect.size.width / 2, rect.size.height / 2));\n\n    forEachLinePoint(startPoint, widthPoint, drawFn);\n    forEachLinePoint(startPoint, heightPoint, drawFn);\n    forEachLinePoint(endPoint, widthPoint, drawFn);\n    forEachLinePoint(endPoint, heightPoint, drawFn);\n\n    // Mask in the gradient only where the shape was drawn, and draw it. Then draw the gradientified shape onto the\n    // original canvas normally.\n    if (isGradient) {\n        context.globalCompositeOperation = 'source-in';\n        context.fillStyle = origContext.fillStyle;\n        context.fillRect(0, 0, canvasWidth, canvasHeight);\n        origContext.drawImage(tmpCanvas, 0, 0);\n    }\n\n};\n\nconst flipBitmapHorizontal = function (canvas) {\n    const tmpCanvas = createCanvas(canvas.width, canvas.height);\n    const context = tmpCanvas.getContext('2d');\n    context.save();\n    context.scale(-1, 1);\n    context.drawImage(canvas, 0, 0, -tmpCanvas.width, tmpCanvas.height);\n    context.restore();\n    return tmpCanvas;\n};\n\nconst flipBitmapVertical = function (canvas) {\n    const tmpCanvas = createCanvas(canvas.width, canvas.height);\n    const context = tmpCanvas.getContext('2d');\n    context.save();\n    context.scale(1, -1);\n    context.drawImage(canvas, 0, 0, tmpCanvas.width, -tmpCanvas.height);\n    context.restore();\n    return tmpCanvas;\n};\n\nconst scaleBitmap = function (canvas, scale) {\n    let tmpCanvas = createCanvas(Math.round(canvas.width * Math.abs(scale.x)), canvas.height);\n    if (scale.x < 0) {\n        canvas = flipBitmapHorizontal(canvas);\n    }\n    tmpCanvas.getContext('2d').drawImage(canvas, 0, 0, tmpCanvas.width, tmpCanvas.height);\n    canvas = tmpCanvas;\n    tmpCanvas = createCanvas(canvas.width, Math.round(canvas.height * Math.abs(scale.y)));\n    if (scale.y < 0) {\n        canvas = flipBitmapVertical(canvas);\n    }\n    tmpCanvas.getContext('2d').drawImage(canvas, 0, 0, tmpCanvas.width, tmpCanvas.height);\n    return tmpCanvas;\n};\n\n/**\n * Given a raster, take the scale on the transform and apply it to the raster's canvas, then remove\n * the scale from the item's transform matrix. Do this only if scale.x or scale.y is less than 1.\n * @param {paper.Raster} item raster to change\n */\nconst maybeApplyScaleToCanvas_ = function (item) {\n    // context.drawImage will anti-alias the image if both width and height are reduced.\n    // However, it will preserve pixel colors if only one or the other is reduced, and\n    // imageSmoothingEnabled is set to false. Therefore, we can avoid aliasing by scaling\n    // down images in a 2 step process.\n    const decomposed = item.matrix.decompose(); // Decomposition order: translate, rotate, scale, skew\n    if (Math.abs(decomposed.scaling.x) < 1 && Math.abs(decomposed.scaling.y) < 1 &&\n            decomposed.scaling.x !== 0 && decomposed.scaling.y !== 0) {\n        item.canvas = scaleBitmap(item.canvas, decomposed.scaling);\n        if (item.data && item.data.expanded) {\n            item.data.expanded.canvas = scaleBitmap(item.data.expanded.canvas, decomposed.scaling);\n        }\n        // Remove the scale from the item's matrix\n        item.matrix.append(\n            new paper.Matrix().scale(new paper.Point(1 / decomposed.scaling.x, 1 / decomposed.scaling.y)));\n    }\n};\n\n/**\n * Given a raster, apply its transformation matrix to its canvas. Call maybeApplyScaleToCanvas_ first\n * to avoid introducing anti-aliasing to scaled-down rasters.\n * @param {paper.Raster} item raster to resolve transform of\n * @param {paper.Raster} destination raster to draw selection to\n */\nconst commitArbitraryTransformation_ = function (item, destination) {\n    // Create a canvas to perform masking\n    const tmpCanvas = createCanvas();\n    const context = tmpCanvas.getContext('2d');\n    // Draw mask\n    const rect = new paper.Shape.Rectangle(new paper.Point(), item.size);\n    rect.matrix = item.matrix;\n    fillRect(rect, context);\n    rect.remove();\n    context.globalCompositeOperation = 'source-in';\n\n    // Draw image onto mask\n    const m = item.matrix;\n    context.transform(m.a, m.b, m.c, m.d, m.tx, m.ty);\n    let canvas = item.canvas;\n    if (item.data && item.data.expanded) {\n        canvas = item.data.expanded.canvas;\n    }\n    context.transform(1, 0, 0, 1, -canvas.width / 2, -canvas.height / 2);\n    context.drawImage(canvas, 0, 0);\n\n    // Draw temp canvas onto raster layer\n    destination.drawImage(tmpCanvas, new paper.Point());\n};\n\n/**\n * Given a raster item, take its transform matrix and apply it to its canvas. Try to avoid\n * introducing anti-aliasing.\n * @param {paper.Raster} selection raster to resolve transform of\n * @param {paper.Raster} bitmap raster to draw selection to\n */\nconst commitSelectionToBitmap = function (selection, bitmap) {\n    if (!selection.matrix.isInvertible()) {\n        return;\n    }\n\n    maybeApplyScaleToCanvas_(selection);\n    commitArbitraryTransformation_(selection, bitmap);\n};\n\n/**\n * Converts a Paper.js color style (an item's fillColor or strokeColor) into a canvas-applicable color style.\n * Note that a \"color style\" as applied to an item is different from a plain paper.Color or paper.Gradient.\n * For instance, a gradient \"color style\" has origin and destination points whereas an unattached paper.Gradient\n * does not.\n * @param {paper.Color} color The color to convert to a canvas color/gradient\n * @param {CanvasRenderingContext2D} context The rendering context on which the style will be used\n * @returns {string|CanvasGradient} The canvas fill/stroke style.\n */\nconst _paperColorToCanvasStyle = function (color, context) {\n    if (!color) return null;\n    if (color.type === 'gradient') {\n        let canvasGradient;\n        const {origin, destination} = color;\n        if (color.gradient.radial) {\n            // Adapted from:\n            // https://github.com/paperjs/paper.js/blob/b081fd72c72cd61331313c3961edb48f3dfaffbd/src/style/Color.js#L926-L935\n            let {highlight} = color;\n            const start = highlight || origin;\n            const radius = destination.getDistance(origin);\n            if (highlight) {\n                const vector = highlight.subtract(origin);\n                if (vector.getLength() > radius) {\n                    // Paper ¯\\_(ツ)_/¯\n                    highlight = origin.add(vector.normalize(radius - 0.1));\n                }\n            }\n            canvasGradient = context.createRadialGradient(\n                start.x, start.y,\n                0,\n                origin.x, origin.y,\n                radius\n            );\n        } else {\n            canvasGradient = context.createLinearGradient(\n                origin.x, origin.y,\n                destination.x, destination.y\n            );\n        }\n\n        const {stops} = color.gradient;\n        // Adapted from:\n        // https://github.com/paperjs/paper.js/blob/b081fd72c72cd61331313c3961edb48f3dfaffbd/src/style/Color.js#L940-L950\n        for (let i = 0, len = stops.length; i < len; i++) {\n            const stop = stops[i];\n            const offset = stop.offset;\n            canvasGradient.addColorStop(\n                offset || i / (len - 1),\n                stop.color.toCSS()\n            );\n        }\n        return canvasGradient;\n    }\n    return color.toCSS();\n};\n\n/**\n * @param {paper.Shape.Ellipse} oval Vector oval to convert\n * @param {paper.Raster} bitmap raster to draw selection\n * @return {bool} true if the oval was drawn\n */\nconst commitOvalToBitmap = function (oval, bitmap) {\n    const radiusX = Math.abs(oval.size.width / 2);\n    const radiusY = Math.abs(oval.size.height / 2);\n    const context = bitmap.getContext('2d');\n    const filled = oval.strokeWidth === 0;\n\n    const canvasColor = _paperColorToCanvasStyle(filled ? oval.fillColor : oval.strokeColor, context);\n    // If the color is null (e.g. fully transparent/\"no fill\"), don't bother drawing anything\n    if (!canvasColor) return;\n\n    context.fillStyle = canvasColor;\n\n    const drew = drawEllipse({\n        position: oval.position,\n        radiusX,\n        radiusY,\n        matrix: oval.matrix,\n        isFilled: filled,\n        thickness: oval.strokeWidth / paper.view.zoom\n    }, context);\n\n    return drew;\n};\n\n/**\n * @param {paper.Rectangle} rect Vector rectangle to convert\n * @param {paper.Raster} bitmap raster to draw selection to\n */\nconst commitRectToBitmap = function (rect, bitmap) {\n    const tmpCanvas = createCanvas();\n    const context = tmpCanvas.getContext('2d');\n    const filled = rect.strokeWidth === 0;\n\n    const canvasColor = _paperColorToCanvasStyle(filled ? rect.fillColor : rect.strokeColor, context);\n    // If the color is null (e.g. fully transparent/\"no fill\"), don't bother drawing anything\n    if (!canvasColor) return;\n\n    context.fillStyle = canvasColor;\n\n    if (filled) {\n        fillRect(rect, context);\n    } else {\n        outlineRect(rect, rect.strokeWidth / paper.view.zoom, context);\n    }\n    bitmap.drawImage(tmpCanvas, new paper.Point());\n};\n\nconst selectAllBitmap = function (clearSelectedItems) {\n    clearSelection(clearSelectedItems);\n\n    // Copy trimmed raster to active layer. If the raster layer was empty, nothing is selected.\n    const trimmedRaster = getTrimmedRaster(true /* shouldInsert */);\n    if (trimmedRaster) {\n        trimmedRaster.selected = true;\n    }\n\n    // Clear raster layer\n    clearRaster();\n};\n\nexport {\n    commitSelectionToBitmap,\n    commitOvalToBitmap,\n    commitRectToBitmap,\n    convertToBitmap,\n    convertToVector,\n    fillRect,\n    outlineRect,\n    floodFill,\n    floodFillAll,\n    getBrushMark,\n    getHitBounds,\n    getTrimmedRaster,\n    drawEllipse,\n    forEachLinePoint,\n    flipBitmapHorizontal,\n    flipBitmapVertical,\n    scaleBitmap,\n    selectAllBitmap\n};\n","import paper from '@scratch/paper';\nimport {CROSSHAIR_SIZE, getBackgroundGuideLayer, getDragCrosshairLayer, getRaster} from './layer';\nimport {getAllRootItems, getSelectedRootItems} from './selection';\nimport {getHitBounds} from './bitmap';\nimport log from '../log/log';\n\n// Vectors are imported and exported at SVG_ART_BOARD size.\n// Once they are imported however, both SVGs and bitmaps are on\n// canvases of ART_BOARD size.\n// (This is for backwards compatibility, to handle both assets\n// designed for 480 x 360, and bitmap resolution 2 bitmaps)\nconst SVG_ART_BOARD_WIDTH = 480;\nconst SVG_ART_BOARD_HEIGHT = 360;\nconst ART_BOARD_WIDTH = SVG_ART_BOARD_WIDTH * 2;\nconst ART_BOARD_HEIGHT = SVG_ART_BOARD_HEIGHT * 2;\nconst CENTER = new paper.Point(ART_BOARD_WIDTH / 2, ART_BOARD_HEIGHT / 2);\nconst PADDING_PERCENT = 25; // Padding as a percent of the max of width/height of the sprite\nconst BUFFER = 50; // Number of pixels of allowance around objects at the edges of the workspace\nconst MIN_RATIO = .125; // Zoom in to at least 1/8 of the screen. This way you don't end up incredibly\n//                         zoomed in for tiny costumes.\nconst OUTERMOST_ZOOM_LEVEL = 0.333;\nconst ART_BOARD_BOUNDS = new paper.Rectangle(0, 0, ART_BOARD_WIDTH, ART_BOARD_HEIGHT);\nconst MAX_WORKSPACE_BOUNDS = new paper.Rectangle(\n    -ART_BOARD_WIDTH / 4,\n    -ART_BOARD_HEIGHT / 4,\n    ART_BOARD_WIDTH * 1.5,\n    ART_BOARD_HEIGHT * 1.5);\n\nlet _workspaceBounds = ART_BOARD_BOUNDS;\n\nconst getWorkspaceBounds = () => _workspaceBounds;\n\n/**\n* The workspace bounds define the areas that the scroll bars can access.\n* They include at minimum the artboard, and extend to a bit beyond the\n* farthest item off tne edge in any given direction (so items can't be\n* \"lost\" off the edge)\n*\n* @param {boolean} clipEmpty Clip empty space from bounds, even if it\n* means discontinuously jumping the viewport. This should probably be\n* false unless the viewport is going to move discontinuously anyway\n* (such as in a zoom button click)\n*/\nconst setWorkspaceBounds = clipEmpty => {\n    const items = getAllRootItems();\n    // Include the artboard and what's visible in the viewport\n    let bounds = ART_BOARD_BOUNDS;\n    if (!clipEmpty) {\n        bounds = bounds.unite(paper.view.bounds);\n    }\n    // Include everything the user has drawn and a buffer around it\n    for (const item of items) {\n        bounds = bounds.unite(item.bounds.expand(BUFFER));\n    }\n    // Limit to max workspace bounds\n    bounds = bounds.intersect(MAX_WORKSPACE_BOUNDS.expand(BUFFER));\n    let top = bounds.top;\n    let left = bounds.left;\n    let bottom = bounds.bottom;\n    let right = bounds.right;\n\n    // Center in view if viewport is larger than workspace\n    let hDiff = 0;\n    let vDiff = 0;\n    if (bounds.width < paper.view.bounds.width) {\n        hDiff = (paper.view.bounds.width - bounds.width) / 2;\n        left -= hDiff;\n        right += hDiff;\n    }\n    if (bounds.height < paper.view.bounds.height) {\n        vDiff = (paper.view.bounds.height - bounds.height) / 2;\n        top -= vDiff;\n        bottom += vDiff;\n    }\n\n    _workspaceBounds = new paper.Rectangle(left, top, right - left, bottom - top);\n};\n\nconst clampViewBounds = () => {\n    const {left, right, top, bottom} = paper.project.view.bounds;\n    if (left < _workspaceBounds.left) {\n        paper.project.view.scrollBy(new paper.Point(_workspaceBounds.left - left, 0));\n    }\n    if (top < _workspaceBounds.top) {\n        paper.project.view.scrollBy(new paper.Point(0, _workspaceBounds.top - top));\n    }\n    if (bottom > _workspaceBounds.bottom) {\n        paper.project.view.scrollBy(new paper.Point(0, _workspaceBounds.bottom - bottom));\n    }\n    if (right > _workspaceBounds.right) {\n        paper.project.view.scrollBy(new paper.Point(_workspaceBounds.right - right, 0));\n    }\n    setWorkspaceBounds();\n};\n\nconst resizeCrosshair = () => {\n    if (getDragCrosshairLayer() && getDragCrosshairLayer().dragCrosshair) {\n        getDragCrosshairLayer().dragCrosshair.scale(\n            CROSSHAIR_SIZE / getDragCrosshairLayer().dragCrosshair.bounds.width / paper.view.zoom);\n    }\n    if (getBackgroundGuideLayer() && getBackgroundGuideLayer().dragCrosshair) {\n        getBackgroundGuideLayer().dragCrosshair.scale(\n            CROSSHAIR_SIZE / getBackgroundGuideLayer().dragCrosshair.bounds.width / paper.view.zoom);\n    }\n};\n\n// Zoom keeping a project-space point fixed.\n// This article was helpful http://matthiasberth.com/tech/stable-zoom-and-pan-in-paperjs\nconst zoomOnFixedPoint = (deltaZoom, fixedPoint) => {\n    const view = paper.view;\n    const preZoomCenter = view.center;\n    const newZoom = Math.max(OUTERMOST_ZOOM_LEVEL, view.zoom + deltaZoom);\n    const scaling = view.zoom / newZoom;\n    const preZoomOffset = fixedPoint.subtract(preZoomCenter);\n    const postZoomOffset = fixedPoint.subtract(preZoomOffset.multiply(scaling))\n        .subtract(preZoomCenter);\n    view.zoom = newZoom;\n    view.translate(postZoomOffset.multiply(-1));\n\n    setWorkspaceBounds(true /* clipEmpty */);\n    clampViewBounds();\n    resizeCrosshair();\n};\n\n// Zoom keeping the selection center (if any) fixed.\nconst zoomOnSelection = deltaZoom => {\n    let fixedPoint;\n    const items = getSelectedRootItems();\n    if (items.length > 0) {\n        let rect = null;\n        for (const item of items) {\n            if (rect) {\n                rect = rect.unite(item.bounds);\n            } else {\n                rect = item.bounds;\n            }\n        }\n        fixedPoint = rect.center;\n    } else {\n        fixedPoint = paper.project.view.center;\n    }\n    zoomOnFixedPoint(deltaZoom, fixedPoint);\n};\n\nconst resetZoom = () => {\n    paper.project.view.zoom = .5;\n    setWorkspaceBounds(true /* clipEmpty */);\n    resizeCrosshair();\n    clampViewBounds();\n};\n\nconst pan = (dx, dy) => {\n    paper.project.view.scrollBy(new paper.Point(dx, dy));\n    clampViewBounds();\n};\n\n/**\n * Mouse actions are clamped to action bounds\n * @param {boolean} isBitmap True if the editor is in bitmap mode, false if it is in vector mode\n * @returns {paper.Rectangle} the bounds within which mouse events should work in the paint editor\n */\nconst getActionBounds = isBitmap => {\n    if (isBitmap) {\n        return ART_BOARD_BOUNDS;\n    }\n    return paper.view.bounds.unite(ART_BOARD_BOUNDS).intersect(MAX_WORKSPACE_BOUNDS);\n};\n\nconst zoomToFit = isBitmap => {\n    resetZoom();\n    let bounds;\n    if (isBitmap) {\n        bounds = getHitBounds(getRaster()).expand(BUFFER);\n    } else {\n        const items = getAllRootItems();\n        for (const item of items) {\n            if (bounds) {\n                bounds = bounds.unite(item.bounds);\n            } else {\n                bounds = item.bounds;\n            }\n        }\n    }\n    if (bounds && bounds.width && bounds.height) {\n        const canvas = paper.view.element;\n        // Ratio of (sprite length plus padding on all sides) to viewport length.\n        let ratio = paper.view.zoom *\n            Math.max(\n                bounds.width * (1 + (2 * PADDING_PERCENT / 100)) / canvas.clientWidth,\n                bounds.height * (1 + (2 * PADDING_PERCENT / 100)) / canvas.clientHeight);\n        // Clamp ratio\n        ratio = Math.max(Math.min(1, ratio), MIN_RATIO);\n        if (ratio < 1) {\n            paper.view.center = bounds.center;\n            paper.view.zoom = paper.view.zoom / ratio;\n            resizeCrosshair();\n            clampViewBounds();\n        }\n    } else {\n        log.warn('No bounds!');\n    }\n};\n\nexport {\n    ART_BOARD_BOUNDS,\n    ART_BOARD_HEIGHT,\n    ART_BOARD_WIDTH,\n    CENTER,\n    OUTERMOST_ZOOM_LEVEL,\n    SVG_ART_BOARD_WIDTH,\n    SVG_ART_BOARD_HEIGHT,\n    MAX_WORKSPACE_BOUNDS,\n    clampViewBounds,\n    getActionBounds,\n    pan,\n    resetZoom,\n    setWorkspaceBounds,\n    getWorkspaceBounds,\n    resizeCrosshair,\n    zoomOnSelection,\n    zoomOnFixedPoint,\n    zoomToFit\n};\n","import paper from '@scratch/paper';\nimport log from '../log/log';\nimport {ART_BOARD_BOUNDS, ART_BOARD_WIDTH, ART_BOARD_HEIGHT, CENTER, MAX_WORKSPACE_BOUNDS} from './view';\nimport {isGroupItem} from './item';\nimport {isBitmap, isVector} from '../lib/format';\n\nconst CHECKERBOARD_SIZE = 8;\nconst CROSSHAIR_SIZE = 16;\nconst CROSSHAIR_FULL_OPACITY = 0.75;\n\nconst _getLayer = function (layerString) {\n    for (const layer of paper.project.layers) {\n        if (layer.data && layer.data[layerString]) {\n            return layer;\n        }\n    }\n};\n\nconst _getPaintingLayer = function () {\n    return _getLayer('isPaintingLayer');\n};\n\n/**\n * Creates a canvas with width and height matching the art board size.\n * @param {?number} width Width of the canvas. Defaults to ART_BOARD_WIDTH.\n * @param {?number} height Height of the canvas. Defaults to ART_BOARD_HEIGHT.\n * @return {HTMLCanvasElement} the canvas\n */\nconst createCanvas = function (width, height) {\n    const canvas = document.createElement('canvas');\n    canvas.width = width ? width : ART_BOARD_WIDTH;\n    canvas.height = height ? height : ART_BOARD_HEIGHT;\n    canvas.getContext('2d').imageSmoothingEnabled = false;\n    return canvas;\n};\n\nconst clearRaster = function () {\n    const layer = _getLayer('isRasterLayer');\n    layer.removeChildren();\n    \n    // Generate blank raster\n    const raster = new paper.Raster(createCanvas());\n    raster.canvas.getContext('2d').imageSmoothingEnabled = false;\n    raster.parent = layer;\n    raster.guide = true;\n    raster.locked = true;\n    raster.position = CENTER;\n};\n\nconst getRaster = function () {\n    const layer = _getLayer('isRasterLayer');\n    // Generate blank raster\n    if (layer.children.length === 0) {\n        clearRaster();\n    }\n    return _getLayer('isRasterLayer').children[0];\n};\n\nconst getDragCrosshairLayer = function () {\n    return _getLayer('isDragCrosshairLayer');\n};\n\nconst getBackgroundGuideLayer = function () {\n    return _getLayer('isBackgroundGuideLayer');\n};\n\nconst _convertLayer = function (layer, format) {\n    layer.bitmapBackground.visible = isBitmap(format);\n    layer.vectorBackground.visible = isVector(format);\n};\n\nconst convertBackgroundGuideLayer = function (format) {\n    _convertLayer(getBackgroundGuideLayer(), format);\n};\n\nconst _makeGuideLayer = function () {\n    const guideLayer = new paper.Layer();\n    guideLayer.data.isGuideLayer = true;\n    return guideLayer;\n};\n\nconst getGuideLayer = function () {\n    let layer = _getLayer('isGuideLayer');\n    if (!layer) {\n        layer = _makeGuideLayer();\n        _getPaintingLayer().activate();\n    }\n    return layer;\n};\n\nconst setGuideItem = function (item) {\n    item.locked = true;\n    item.guide = true;\n    if (isGroupItem(item)) {\n        for (let i = 0; i < item.children.length; i++) {\n            setGuideItem(item.children[i]);\n        }\n    }\n};\n\n/**\n * Removes the guide layers, e.g. for purposes of exporting the image. Must call showGuideLayers to re-add them.\n * @param {boolean} includeRaster true if the raster layer should also be hidden\n * @return {object} an object of the removed layers, which should be passed to showGuideLayers to re-add them.\n */\nconst hideGuideLayers = function (includeRaster) {\n    const backgroundGuideLayer = getBackgroundGuideLayer();\n    const dragCrosshairLayer = getDragCrosshairLayer();\n    const outlineLayer = _getLayer('isOutlineLayer');\n    const guideLayer = getGuideLayer();\n    dragCrosshairLayer.remove();\n    outlineLayer.remove();\n    guideLayer.remove();\n    backgroundGuideLayer.remove();\n    let rasterLayer;\n    if (includeRaster) {\n        rasterLayer = _getLayer('isRasterLayer');\n        rasterLayer.remove();\n    }\n    return {\n        dragCrosshairLayer: dragCrosshairLayer,\n        outlineLayer: outlineLayer,\n        guideLayer: guideLayer,\n        backgroundGuideLayer: backgroundGuideLayer,\n        rasterLayer: rasterLayer\n    };\n};\n\n/**\n * Add back the guide layers removed by calling hideGuideLayers. This must be done before any editing operations are\n * taken in the paint editor.\n * @param {!object} guideLayers object of the removed layers, which was returned by hideGuideLayers\n */\nconst showGuideLayers = function (guideLayers) {\n    const backgroundGuideLayer = guideLayers.backgroundGuideLayer;\n    const dragCrosshairLayer = guideLayers.dragCrosshairLayer;\n    const outlineLayer = guideLayers.outlineLayer;\n    const guideLayer = guideLayers.guideLayer;\n    const rasterLayer = guideLayers.rasterLayer;\n    if (rasterLayer && !rasterLayer.index) {\n        paper.project.addLayer(rasterLayer);\n        rasterLayer.sendToBack();\n    }\n    if (!backgroundGuideLayer.index) {\n        paper.project.addLayer(backgroundGuideLayer);\n        backgroundGuideLayer.sendToBack();\n    }\n    if (!dragCrosshairLayer.index) {\n        paper.project.addLayer(dragCrosshairLayer);\n        dragCrosshairLayer.bringToFront();\n    }\n    if (!outlineLayer.index) {\n        paper.project.addLayer(outlineLayer);\n        outlineLayer.bringToFront();\n    }\n    if (!guideLayer.index) {\n        paper.project.addLayer(guideLayer);\n        guideLayer.bringToFront();\n    }\n    if (paper.project.activeLayer !== _getPaintingLayer()) {\n        log.error(`Wrong active layer`);\n        log.error(paper.project.activeLayer.data);\n    }\n};\n\nconst _makePaintingLayer = function () {\n    const paintingLayer = new paper.Layer();\n    paintingLayer.data.isPaintingLayer = true;\n    return paintingLayer;\n};\n\nconst _makeRasterLayer = function () {\n    const rasterLayer = new paper.Layer();\n    rasterLayer.data.isRasterLayer = true;\n    clearRaster();\n    return rasterLayer;\n};\n\nconst _makeBackgroundPaper = function (width, height, color, opacity) {\n    // creates a checkerboard path of width * height squares in color on white\n    let x = 0;\n    let y = 0;\n    const pathPoints = [];\n    while (x < width) {\n        pathPoints.push(new paper.Point(x, y));\n        x++;\n        pathPoints.push(new paper.Point(x, y));\n        y = y === 0 ? height : 0;\n    }\n    y = height - 1;\n    x = width;\n    while (y > 0) {\n        pathPoints.push(new paper.Point(x, y));\n        x = (x === 0 ? width : 0);\n        pathPoints.push(new paper.Point(x, y));\n        y--;\n    }\n    const vRect = new paper.Shape.Rectangle(\n        new paper.Point(0, 0),\n        new paper.Point(ART_BOARD_WIDTH / CHECKERBOARD_SIZE, ART_BOARD_HEIGHT / CHECKERBOARD_SIZE));\n    vRect.fillColor = '#fff';\n    vRect.guide = true;\n    vRect.locked = true;\n    vRect.position = CENTER;\n    const vPath = new paper.Path(pathPoints);\n    vPath.fillRule = 'evenodd';\n    vPath.fillColor = color;\n    vPath.opacity = opacity;\n    vPath.guide = true;\n    vPath.locked = true;\n    vPath.position = CENTER;\n    const mask = new paper.Shape.Rectangle(MAX_WORKSPACE_BOUNDS);\n    mask.position = CENTER;\n    mask.guide = true;\n    mask.locked = true;\n    mask.scale(1 / CHECKERBOARD_SIZE);\n    const vGroup = new paper.Group([vRect, vPath, mask]);\n    mask.clipMask = true;\n    return vGroup;\n};\n\n// Helper function for drawing a crosshair\nconst _makeCrosshair = function (opacity, parent) {\n    const crosshair = new paper.Group();\n\n    const vLine2 = new paper.Path.Line(new paper.Point(0, -7), new paper.Point(0, 7));\n    vLine2.strokeWidth = 6;\n    vLine2.strokeColor = 'white';\n    vLine2.strokeCap = 'round';\n    crosshair.addChild(vLine2);\n    const hLine2 = new paper.Path.Line(new paper.Point(-7, 0), new paper.Point(7, 0));\n    hLine2.strokeWidth = 6;\n    hLine2.strokeColor = 'white';\n    hLine2.strokeCap = 'round';\n    crosshair.addChild(hLine2);\n    const circle2 = new paper.Shape.Circle(new paper.Point(0, 0), 5.5);\n    circle2.strokeWidth = 6;\n    circle2.strokeColor = 'white';\n    crosshair.addChild(circle2);\n\n    const vLine = new paper.Path.Line(new paper.Point(0, -7), new paper.Point(0, 7));\n    vLine.strokeWidth = 2;\n    vLine.strokeColor = 'black';\n    vLine.strokeCap = 'round';\n    crosshair.addChild(vLine);\n    const hLine = new paper.Path.Line(new paper.Point(-7, 0), new paper.Point(7, 0));\n    hLine.strokeWidth = 2;\n    hLine.strokeColor = 'black';\n    hLine.strokeCap = 'round';\n    crosshair.addChild(hLine);\n    const circle = new paper.Shape.Circle(new paper.Point(0, 0), 5.5);\n    circle.strokeWidth = 2;\n    circle.strokeColor = 'black';\n    crosshair.addChild(circle);\n\n    setGuideItem(crosshair);\n    crosshair.position = CENTER;\n    crosshair.opacity = opacity;\n    crosshair.parent = parent;\n    crosshair.applyMatrix = false;\n    parent.dragCrosshair = crosshair;\n    crosshair.scale(CROSSHAIR_SIZE / crosshair.bounds.width / paper.view.zoom);\n};\n\nconst _makeDragCrosshairLayer = function () {\n    const dragCrosshairLayer = new paper.Layer();\n    _makeCrosshair(CROSSHAIR_FULL_OPACITY, dragCrosshairLayer);\n    dragCrosshairLayer.data.isDragCrosshairLayer = true;\n    dragCrosshairLayer.visible = false;\n    return dragCrosshairLayer;\n};\n\nconst _makeOutlineLayer = function () {\n    const outlineLayer = new paper.Layer();\n    const whiteRect = new paper.Shape.Rectangle(ART_BOARD_BOUNDS.expand(1));\n    whiteRect.strokeWidth = 2;\n    whiteRect.strokeColor = 'white';\n    setGuideItem(whiteRect);\n    const blueRect = new paper.Shape.Rectangle(ART_BOARD_BOUNDS.expand(5));\n    blueRect.strokeWidth = 2;\n    blueRect.strokeColor = '#4280D7';\n    blueRect.opacity = 0.25;\n    setGuideItem(blueRect);\n    outlineLayer.data.isOutlineLayer = true;\n    return outlineLayer;\n};\n\nconst _makeBackgroundGuideLayer = function (format) {\n    const guideLayer = new paper.Layer();\n    guideLayer.locked = true;\n    \n    const vWorkspaceBounds = new paper.Shape.Rectangle(MAX_WORKSPACE_BOUNDS);\n    vWorkspaceBounds.fillColor = '#ECF1F9';\n    vWorkspaceBounds.position = CENTER;\n\n    // Add 1 to the height because it's an odd number otherwise, and we want it to be even\n    // so the corner of the checkerboard to line up with the center crosshair\n    const vBackground = _makeBackgroundPaper(\n        MAX_WORKSPACE_BOUNDS.width / CHECKERBOARD_SIZE,\n        (MAX_WORKSPACE_BOUNDS.height / CHECKERBOARD_SIZE) + 1,\n        '#D9E3F2', 0.55);\n    vBackground.position = CENTER;\n    vBackground.scaling = new paper.Point(CHECKERBOARD_SIZE, CHECKERBOARD_SIZE);\n\n    const vectorBackground = new paper.Group();\n    vectorBackground.addChild(vWorkspaceBounds);\n    vectorBackground.addChild(vBackground);\n    setGuideItem(vectorBackground);\n    guideLayer.vectorBackground = vectorBackground;\n\n    const bitmapBackground = _makeBackgroundPaper(\n        ART_BOARD_WIDTH / CHECKERBOARD_SIZE,\n        ART_BOARD_HEIGHT / CHECKERBOARD_SIZE,\n        '#D9E3F2', 0.55);\n    bitmapBackground.position = CENTER;\n    bitmapBackground.scaling = new paper.Point(CHECKERBOARD_SIZE, CHECKERBOARD_SIZE);\n    bitmapBackground.guide = true;\n    bitmapBackground.locked = true;\n    guideLayer.bitmapBackground = bitmapBackground;\n\n    _convertLayer(guideLayer, format);\n    \n    _makeCrosshair(0.16, guideLayer);\n\n    guideLayer.data.isBackgroundGuideLayer = true;\n    return guideLayer;\n};\n\nconst setupLayers = function (format) {\n    const backgroundGuideLayer = _makeBackgroundGuideLayer(format);\n    _makeRasterLayer();\n    const paintLayer = _makePaintingLayer();\n    const dragCrosshairLayer = _makeDragCrosshairLayer();\n    const outlineLayer = _makeOutlineLayer();\n    const guideLayer = _makeGuideLayer();\n    backgroundGuideLayer.sendToBack();\n    dragCrosshairLayer.bringToFront();\n    outlineLayer.bringToFront();\n    guideLayer.bringToFront();\n    paintLayer.activate();\n};\n\nexport {\n    CROSSHAIR_SIZE,\n    CROSSHAIR_FULL_OPACITY,\n    createCanvas,\n    hideGuideLayers,\n    showGuideLayers,\n    getDragCrosshairLayer,\n    getGuideLayer,\n    getBackgroundGuideLayer,\n    convertBackgroundGuideLayer,\n    clearRaster,\n    getRaster,\n    setGuideItem,\n    setupLayers\n};\n","// undo functionality\n// modifed from https://github.com/memononen/stylii\nimport paper from '@scratch/paper';\nimport {hideGuideLayers, showGuideLayers, getRaster} from '../helper/layer';\nimport {getSelectedLeafItems} from '../helper/selection';\nimport Formats, {isVector, isBitmap} from '../lib/format';\nimport log from '../log/log';\n\n/**\n * Take an undo snapshot\n * @param {function} dispatchPerformSnapshot Callback to dispatch a state update\n * @param {Formats} format Either Formats.BITMAP or Formats.VECTOR\n */\nconst performSnapshot = function (dispatchPerformSnapshot, format) {\n    if (!format) {\n        log.error('Format must be specified.');\n    }\n    const guideLayers = hideGuideLayers();\n    dispatchPerformSnapshot({\n        json: paper.project.exportJSON({asString: false}),\n        paintEditorFormat: format\n    });\n    showGuideLayers(guideLayers);\n};\n\nconst _restore = function (entry, setSelectedItems, onUpdateImage, isBitmapMode) {\n    for (let i = paper.project.layers.length - 1; i >= 0; i--) {\n        const layer = paper.project.layers[i];\n        if (!layer.data.isBackgroundGuideLayer &&\n            !layer.data.isDragCrosshairLayer &&\n            !layer.data.isOutlineLayer) {\n            layer.removeChildren();\n            layer.remove();\n        }\n    }\n    paper.project.importJSON(entry.json);\n    setSelectedItems();\n\n    // Ensure that all rasters are loaded before updating storage with new image data.\n    const rastersThatNeedToLoad = [];\n    const onLoad = () => {\n        if (!getRaster().loaded) return;\n        for (const raster of rastersThatNeedToLoad) {\n            if (!raster.loaded) return;\n        }\n        onUpdateImage(true /* skipSnapshot */);\n    };\n\n    // Bitmap mode should have at most 1 selected item\n    if (isBitmapMode) {\n        const selectedItems = getSelectedLeafItems();\n        if (selectedItems.length === 1 && selectedItems[0] instanceof paper.Raster) {\n            rastersThatNeedToLoad.push(selectedItems[0]);\n            if (selectedItems[0].data && selectedItems[0].data.expanded instanceof paper.Raster) {\n                rastersThatNeedToLoad.push(selectedItems[0].data.expanded);\n            }\n        }\n    }\n\n    getRaster().onLoad = onLoad;\n    for (const raster of rastersThatNeedToLoad) {\n        raster.onLoad = onLoad;\n        if (raster.loaded) raster.onLoad();\n    }\n};\n\nconst performUndo = function (undoState, dispatchPerformUndo, setSelectedItems, onUpdateImage) {\n    if (undoState.pointer > 0) {\n        const state = undoState.stack[undoState.pointer - 1];\n        _restore(state, setSelectedItems, onUpdateImage, isBitmap(state.paintEditorFormat));\n        const format = isVector(state.paintEditorFormat) ? Formats.VECTOR_SKIP_CONVERT :\n            isBitmap(state.paintEditorFormat) ? Formats.BITMAP_SKIP_CONVERT : null;\n        dispatchPerformUndo(format);\n    }\n};\n\n\nconst performRedo = function (undoState, dispatchPerformRedo, setSelectedItems, onUpdateImage) {\n    if (undoState.pointer >= 0 && undoState.pointer < undoState.stack.length - 1) {\n        const state = undoState.stack[undoState.pointer + 1];\n        _restore(state, setSelectedItems, onUpdateImage, isBitmap(state.paintEditorFormat));\n        const format = isVector(state.paintEditorFormat) ? Formats.VECTOR_SKIP_CONVERT :\n            isBitmap(state.paintEditorFormat) ? Formats.BITMAP_SKIP_CONVERT : null;\n        dispatchPerformRedo(format);\n    }\n};\n\nconst shouldShowUndo = function (undoState) {\n    return undoState.pointer > 0;\n};\n\nconst shouldShowRedo = function (undoState) {\n    return (undoState.pointer > -1 && undoState.pointer !== (undoState.stack.length - 1));\n};\n\nexport {\n    performSnapshot,\n    performUndo,\n    performRedo,\n    shouldShowUndo,\n    shouldShowRedo\n};\n","import log from '../log/log';\n\nconst UNDO = 'scratch-paint/undo/UNDO';\nconst REDO = 'scratch-paint/undo/REDO';\nconst SNAPSHOT = 'scratch-paint/undo/SNAPSHOT';\nconst CLEAR = 'scratch-paint/undo/CLEAR';\nconst MAX_STACK_SIZE = 100;\nconst initialState = {\n    stack: [],\n    pointer: -1\n};\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case UNDO:\n        if (state.pointer <= 0) {\n            log.warn(`Can't undo, undo stack is empty`);\n            return state;\n        }\n        return {\n            stack: state.stack,\n            pointer: state.pointer - 1\n        };\n    case REDO:\n        if (state.pointer <= -1 || state.pointer === state.stack.length - 1) {\n            log.warn(`Can't redo, redo stack is empty`);\n            return state;\n        }\n        return {\n            stack: state.stack,\n            pointer: state.pointer + 1\n        };\n    case SNAPSHOT:\n        if (!action.snapshot) {\n            log.warn(`Couldn't create undo snapshot, no data provided`);\n            return state;\n        }\n        // Overflowed or about to overflow\n        if (state.pointer >= MAX_STACK_SIZE - 1) {\n            return {\n                // Make a stack of size MAX_STACK_SIZE, cutting off the oldest snapshots.\n                stack: state.stack.slice(state.pointer - MAX_STACK_SIZE + 2, state.pointer + 1).concat(action.snapshot),\n                pointer: MAX_STACK_SIZE - 1\n            };\n        }\n        return {\n            // Performing an action clears the redo stack\n            stack: state.stack.slice(0, state.pointer + 1).concat(action.snapshot),\n            pointer: state.pointer + 1\n        };\n    case CLEAR:\n        return initialState;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst undoSnapshot = function (snapshot) {\n    return {\n        type: SNAPSHOT,\n        snapshot: snapshot\n    };\n};\n/**\n * @param {Format} format Either VECTOR_SKIP_CONVERT or BITMAP_SKIP_CONVERT\n * @return {Action} undo action\n */\nconst undo = function (format) {\n    return {\n        type: UNDO,\n        format: format\n    };\n};\n/**\n * @param {Format} format Either VECTOR_SKIP_CONVERT or BITMAP_SKIP_CONVERT\n * @return {Action} undo action\n */\nconst redo = function (format) {\n    return {\n        type: REDO,\n        format: format\n    };\n};\nconst clearUndoState = function () {\n    return {\n        type: CLEAR\n    };\n};\n\nexport {\n    reducer as default,\n    undo,\n    redo,\n    undoSnapshot,\n    clearUndoState,\n    MAX_STACK_SIZE,\n    UNDO,\n    REDO\n};\n","import log from '../log/log';\nconst CHANGE_SELECTED_ITEMS = 'scratch-paint/select/CHANGE_SELECTED_ITEMS';\nconst REDRAW_SELECTION_BOX = 'scratch-paint/select/REDRAW_SELECTION_BOX';\nconst initialState = [];\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case REDRAW_SELECTION_BOX:\n        if (state.length > 0) return state.slice(0); // Sends an update even though the items haven't changed\n        return state;\n    case CHANGE_SELECTED_ITEMS:\n        if (!action.selectedItems || !(action.selectedItems instanceof Array)) {\n            log.warn(`No selected items or wrong format provided: ${action.selectedItems}`);\n            return state;\n        }\n        if (action.selectedItems.length > 1 && action.bitmapMode) {\n            log.warn(`Multiselect should not be possible in bitmap mode: ${action.selectedItems}`);\n            return state;\n        }\n        // If they are both empty, no change\n        if (action.selectedItems.length === 0 && state.length === 0) {\n            return state;\n        }\n        return action.selectedItems;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\n/**\n * Set the selected item state to the given array of items\n * @param {Array<paper.Item>} selectedItems from paper.project.selectedItems\n * @param {?boolean} bitmapMode True if the items are being selected in bitmap mode\n * @return {object} Redux action to change the selected items.\n */\nconst setSelectedItems = function (selectedItems, bitmapMode) {\n    return {\n        type: CHANGE_SELECTED_ITEMS,\n        selectedItems: selectedItems,\n        bitmapMode: bitmapMode\n    };\n};\nconst clearSelectedItems = function () {\n    return {\n        type: CHANGE_SELECTED_ITEMS,\n        selectedItems: []\n    };\n};\nconst redrawSelectionBox = function () {\n    return {\n        type: REDRAW_SELECTION_BOX\n    };\n};\n\nexport {\n    reducer as default,\n    redrawSelectionBox,\n    setSelectedItems,\n    clearSelectedItems,\n    CHANGE_SELECTED_ITEMS\n};\n","import log from '../log/log';\n\nconst CHANGE_HOVERED = 'scratch-paint/hover/CHANGE_HOVERED';\nconst initialState = null;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_HOVERED:\n        if (typeof action.hoveredItemId === 'undefined') {\n            log.warn(`Hovered item should not be set to undefined. Use null.`);\n            return state;\n        } else if (typeof action.hoveredItemId === 'undefined' || isNaN(action.hoveredItemId)) {\n            log.warn(`Hovered item should be an item ID number. Got: ${action.hoveredItemId}`);\n            return state;\n        }\n        return action.hoveredItemId;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\n/**\n * Set the hovered item state to the given item ID\n * @param {number} hoveredItemId The paper.Item ID of the hover indicator item.\n * @return {object} Redux action to change the hovered item.\n */\nconst setHoveredItem = function (hoveredItemId) {\n    return {\n        type: CHANGE_HOVERED,\n        hoveredItemId: hoveredItemId\n    };\n};\n\nconst clearHoveredItem = function () {\n    return {\n        type: CHANGE_HOVERED,\n        hoveredItemId: null\n    };\n};\n\nexport {\n    reducer as default,\n    setHoveredItem,\n    clearHoveredItem\n};\n","import log from '../log/log';\n\nconst SET = 'scratch-paint/clipboard/SET';\nconst INCREMENT_PASTE_OFFSET = 'scratch-paint/clipboard/INCREMENT_PASTE_OFFSET';\nconst CLEAR_PASTE_OFFSET = 'scratch-paint/clipboard/CLEAR_PASTE_OFFSET';\nconst initialState = {\n    items: [],\n    pasteOffset: 0\n};\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case SET:\n        if (!action.clipboardItems || !(action.clipboardItems instanceof Array) || action.clipboardItems.length === 0) {\n            log.warn(`Invalid clipboard item format`);\n            return state;\n        }\n        return {\n            items: action.clipboardItems,\n            pasteOffset: 1\n        };\n    case INCREMENT_PASTE_OFFSET:\n        return {\n            items: state.items,\n            pasteOffset: state.pasteOffset + 1\n        };\n    case CLEAR_PASTE_OFFSET:\n        return {\n            items: state.items,\n            pasteOffset: 0\n        };\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst setClipboardItems = function (clipboardItems) {\n    return {\n        type: SET,\n        clipboardItems: clipboardItems\n    };\n};\n\nconst incrementPasteOffset = function () {\n    return {\n        type: INCREMENT_PASTE_OFFSET\n    };\n};\n\nconst clearPasteOffset = function () {\n    return {\n        type: CLEAR_PASTE_OFFSET\n    };\n};\n\nexport {\n    reducer as default,\n    setClipboardItems,\n    incrementPasteOffset,\n    clearPasteOffset\n};\n","import Formats from '../lib/format';\nimport log from '../log/log';\nimport {UNDO, REDO} from './undo';\n\nconst CHANGE_FORMAT = 'scratch-paint/formats/CHANGE_FORMAT';\nconst initialState = null;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case UNDO:\n        /* falls through */\n    case REDO:\n        /* falls through */\n    case CHANGE_FORMAT:\n        if (!action.format) return state;\n        if (action.format in Formats) {\n            return action.format;\n        }\n        log.warn(`Format does not exist: ${action.format}`);\n        /* falls through */\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeFormat = function (format) {\n    return {\n        type: CHANGE_FORMAT,\n        format: format\n    };\n};\n\nexport {\n    reducer as default,\n    changeFormat\n};\n","import paper from '@scratch/paper';\nimport log from '../log/log';\n\nconst UPDATE_VIEW_BOUNDS = 'scratch-paint/view/UPDATE_VIEW_BOUNDS';\nconst initialState = new paper.Matrix(); // Identity\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case UPDATE_VIEW_BOUNDS:\n        if (!(action.viewBounds instanceof paper.Matrix)) {\n            log.warn(`View bounds should be a paper.Matrix.`);\n            return state;\n        }\n        return action.viewBounds;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\n/**\n * Set the view bounds, which defines the zoom and scroll of the paper canvas.\n * @param {paper.Matrix} matrix The matrix applied to the view\n * @return {object} Redux action to set the view bounds\n */\nconst updateViewBounds = function (matrix) {\n    return {\n        type: UPDATE_VIEW_BOUNDS,\n        viewBounds: matrix.clone()\n    };\n};\n\nexport {\n    reducer as default,\n    updateViewBounds\n};\n","import paper from '@scratch/paper';\nimport log from '../log/log';\n\nconst SAVE_ZOOM_LEVEL = 'scratch-paint/zoom-levels/SAVE_ZOOM_LEVEL';\nconst SET_ZOOM_LEVEL_ID = 'scratch-paint/zoom-levels/SET_ZOOM_LEVEL_ID';\nconst initialState = {};\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case SET_ZOOM_LEVEL_ID:\n        if (action.zoomLevelId === 'currentZoomLevelId') {\n            log.warn(`currentZoomLevelId is an invalid string for zoomLevel`);\n            return state;\n        }\n        return Object.assign({}, state, {\n            currentZoomLevelId: action.zoomLevelId\n        });\n    case SAVE_ZOOM_LEVEL:\n        return Object.assign({}, state, {\n            [state.currentZoomLevelId]: action.zoomLevel\n        });\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst saveZoomLevel = function (zoomLevel) {\n    if (!(zoomLevel instanceof paper.Matrix)) {\n        log.warn(`Not a matrix: ${zoomLevel}`);\n    }\n    return {\n        type: SAVE_ZOOM_LEVEL,\n        zoomLevel: new paper.Matrix(zoomLevel)\n    };\n};\nconst setZoomLevelId = function (zoomLevelId) {\n    return {\n        type: SET_ZOOM_LEVEL_ID,\n        zoomLevelId: zoomLevelId\n    };\n};\n\nexport {\n    reducer as default,\n    saveZoomLevel,\n    setZoomLevelId\n};\n","import bindAll from 'lodash.bindall';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport paper from '@scratch/paper';\nimport Formats from '../lib/format';\nimport log from '../log/log';\n\nimport {performSnapshot} from '../helper/undo';\nimport {undoSnapshot, clearUndoState} from '../reducers/undo';\nimport {isGroup, ungroupItems} from '../helper/group';\nimport {clearRaster, convertBackgroundGuideLayer, getRaster, setupLayers} from '../helper/layer';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {\n    ART_BOARD_WIDTH, ART_BOARD_HEIGHT, CENTER, MAX_WORKSPACE_BOUNDS,\n    clampViewBounds, resetZoom, setWorkspaceBounds, zoomToFit, resizeCrosshair\n} from '../helper/view';\nimport {ensureClockwise, scaleWithStrokes} from '../helper/math';\nimport {clearHoveredItem} from '../reducers/hover';\nimport {clearPasteOffset} from '../reducers/clipboard';\nimport {changeFormat} from '../reducers/format';\nimport {updateViewBounds} from '../reducers/view-bounds';\nimport {saveZoomLevel, setZoomLevelId} from '../reducers/zoom-levels';\n\nimport styles from './paper-canvas.css';\n\nclass PaperCanvas extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'clearQueuedImport',\n            'setCanvas',\n            'importSvg',\n            'initializeSvg',\n            'maybeZoomToFit',\n            'switchCostume',\n            'onViewResize',\n            'recalibrateSize'\n        ]);\n    }\n    componentDidMount () {\n        paper.setup(this.canvas);\n        paper.view.on('resize', this.onViewResize);\n        resetZoom();\n        if (this.props.zoomLevelId) {\n            this.props.setZoomLevelId(this.props.zoomLevelId);\n            if (this.props.zoomLevels[this.props.zoomLevelId]) {\n                // This is the matrix that the view should be zoomed to after image import\n                this.shouldZoomToFit = this.props.zoomLevels[this.props.zoomLevelId];\n            } else {\n                // Zoom to fit true means find a comfortable zoom level for viewing the costume\n                this.shouldZoomToFit = true;\n            }\n        } else {\n            this.props.updateViewBounds(paper.view.matrix);\n        }\n\n        const context = this.canvas.getContext('2d');\n        context.webkitImageSmoothingEnabled = false;\n        context.imageSmoothingEnabled = false;\n\n        // Don't show handles by default\n        paper.settings.handleSize = 0;\n        // Make layers.\n        setupLayers(this.props.format);\n        this.importImage(\n            this.props.imageFormat, this.props.image, this.props.rotationCenterX, this.props.rotationCenterY);\n    }\n    componentWillReceiveProps (newProps) {\n        if (this.props.imageId !== newProps.imageId) {\n            this.switchCostume(newProps.imageFormat, newProps.image,\n                newProps.rotationCenterX, newProps.rotationCenterY,\n                this.props.zoomLevelId, newProps.zoomLevelId);\n        }\n        if (this.props.format !== newProps.format) {\n            this.recalibrateSize();\n            convertBackgroundGuideLayer(newProps.format);\n        }\n    }\n    componentWillUnmount () {\n        this.clearQueuedImport();\n        // shouldZoomToFit means the zoom level hasn't been initialized yet\n        if (!this.shouldZoomToFit) {\n            this.props.saveZoomLevel();\n        }\n        paper.remove();\n    }\n    clearQueuedImport () {\n        if (this.queuedImport) {\n            window.clearTimeout(this.queuedImport);\n            this.queuedImport = null;\n        }\n        if (this.queuedImageToLoad) {\n            this.queuedImageToLoad.src = '';\n            this.queuedImageToLoad.onload = null;\n            this.queuedImageToLoad = null;\n        }\n    }\n    switchCostume (format, image, rotationCenterX, rotationCenterY, oldZoomLevelId, newZoomLevelId) {\n        if (oldZoomLevelId && oldZoomLevelId !== newZoomLevelId) {\n            this.props.saveZoomLevel();\n        }\n        if (newZoomLevelId && oldZoomLevelId !== newZoomLevelId) {\n            if (this.props.zoomLevels[newZoomLevelId]) {\n                this.shouldZoomToFit = this.props.zoomLevels[newZoomLevelId];\n            } else {\n                this.shouldZoomToFit = true;\n            }\n            this.props.setZoomLevelId(newZoomLevelId);\n        }\n        for (const layer of paper.project.layers) {\n            if (layer.data.isRasterLayer) {\n                clearRaster();\n            } else if (!layer.data.isBackgroundGuideLayer &&\n                !layer.data.isDragCrosshairLayer &&\n                !layer.data.isOutlineLayer) {\n                layer.removeChildren();\n            }\n        }\n        this.props.clearUndo();\n        this.props.clearSelectedItems();\n        this.props.clearHoveredItem();\n        this.props.clearPasteOffset();\n        this.importImage(format, image, rotationCenterX, rotationCenterY);\n    }\n    importImage (format, image, rotationCenterX, rotationCenterY) {\n        // Stop any in-progress imports\n        this.clearQueuedImport();\n\n        if (!image) {\n            this.props.changeFormat(Formats.VECTOR_SKIP_CONVERT);\n            performSnapshot(this.props.undoSnapshot, Formats.VECTOR_SKIP_CONVERT);\n            this.recalibrateSize();\n            return;\n        }\n\n        if (format === 'jpg' || format === 'png') {\n            // import bitmap\n            this.props.changeFormat(Formats.BITMAP_SKIP_CONVERT);\n\n            const mask = new paper.Shape.Rectangle(getRaster().getBounds());\n            mask.guide = true;\n            mask.locked = true;\n            mask.setPosition(CENTER);\n            mask.clipMask = true;\n\n            const imgElement = new Image();\n            this.queuedImageToLoad = imgElement;\n            imgElement.onload = () => {\n                if (!this.queuedImageToLoad) return;\n                this.queuedImageToLoad = null;\n\n                if (typeof rotationCenterX === 'undefined') {\n                    rotationCenterX = imgElement.width / 2;\n                }\n                if (typeof rotationCenterY === 'undefined') {\n                    rotationCenterY = imgElement.height / 2;\n                }\n\n                getRaster().drawImage(\n                    imgElement,\n                    (ART_BOARD_WIDTH / 2) - rotationCenterX,\n                    (ART_BOARD_HEIGHT / 2) - rotationCenterY);\n                getRaster().drawImage(\n                    imgElement,\n                    (ART_BOARD_WIDTH / 2) - rotationCenterX,\n                    (ART_BOARD_HEIGHT / 2) - rotationCenterY);\n\n                this.maybeZoomToFit(true /* isBitmap */);\n                performSnapshot(this.props.undoSnapshot, Formats.BITMAP_SKIP_CONVERT);\n                this.recalibrateSize();\n            };\n            imgElement.src = image;\n        } else if (format === 'svg') {\n            this.props.changeFormat(Formats.VECTOR_SKIP_CONVERT);\n            this.importSvg(image, rotationCenterX, rotationCenterY);\n        } else {\n            log.error(`Didn't recognize format: ${format}. Use 'jpg', 'png' or 'svg'.`);\n            this.props.changeFormat(Formats.VECTOR_SKIP_CONVERT);\n            performSnapshot(this.props.undoSnapshot, Formats.VECTOR_SKIP_CONVERT);\n            this.recalibrateSize();\n        }\n    }\n    maybeZoomToFit (isBitmapMode) {\n        if (this.shouldZoomToFit instanceof paper.Matrix) {\n            paper.view.matrix = this.shouldZoomToFit;\n            this.props.updateViewBounds(paper.view.matrix);\n            resizeCrosshair();\n        } else if (this.shouldZoomToFit === true) {\n            zoomToFit(isBitmapMode);\n        }\n        this.shouldZoomToFit = false;\n        setWorkspaceBounds();\n        this.props.updateViewBounds(paper.view.matrix);\n    }\n    importSvg (svg, rotationCenterX, rotationCenterY) {\n        const paperCanvas = this;\n        // Pre-process SVG to prevent parsing errors (discussion from #213)\n        // 1. Remove svg: namespace on elements.\n        // TODO: remove\n        svg = svg.split(/<\\s*svg:/).join('<');\n        svg = svg.split(/<\\/\\s*svg:/).join('</');\n        // 2. Add root svg namespace if it does not exist.\n        const svgAttrs = svg.match(/<svg [^>]*>/);\n        if (svgAttrs && svgAttrs[0].indexOf('xmlns=') === -1) {\n            svg = svg.replace(\n                '<svg ', '<svg xmlns=\"http://www.w3.org/2000/svg\" ');\n        }\n\n        // Get the origin which the viewBox is defined relative to. During import, Paper will translate\n        // the viewBox to start at (0, 0), and we need to translate it back for some costumes to render\n        // correctly.\n        const parser = new DOMParser();\n        const svgDom = parser.parseFromString(svg, 'text/xml');\n        const viewBox = svgDom.documentElement.attributes.viewBox ?\n            svgDom.documentElement.attributes.viewBox.value.match(/\\S+/g) : null;\n        if (viewBox) {\n            for (let i = 0; i < viewBox.length; i++) {\n                viewBox[i] = parseFloat(viewBox[i]);\n            }\n        }\n\n        paper.project.importSVG(svg, {\n            expandShapes: true,\n            onLoad: function (item) {\n                if (!item) {\n                    log.error('SVG import failed:');\n                    log.info(svg);\n                    this.props.changeFormat(Formats.VECTOR_SKIP_CONVERT);\n                    performSnapshot(paperCanvas.props.undoSnapshot, Formats.VECTOR_SKIP_CONVERT);\n                    return;\n                }\n                item.remove();\n\n                // Without the callback, rasters' load function has not been called yet, and they are\n                // positioned incorrectly\n                paperCanvas.queuedImport = paperCanvas.recalibrateSize(() => {\n                    paperCanvas.props.updateViewBounds(paper.view.matrix);\n                    paperCanvas.initializeSvg(item, rotationCenterX, rotationCenterY, viewBox);\n                });\n            }\n        });\n    }\n    initializeSvg (item, rotationCenterX, rotationCenterY, viewBox) {\n        if (this.queuedImport) this.queuedImport = null;\n        const itemWidth = item.bounds.width;\n        const itemHeight = item.bounds.height;\n\n        // Get reference to viewbox\n        let mask;\n        if (item.clipped) {\n            for (const child of item.children) {\n                if (child.isClipMask()) {\n                    mask = child;\n                    break;\n                }\n            }\n            mask.clipMask = false;\n        } else {\n            mask = new paper.Shape.Rectangle(item.bounds);\n        }\n        mask.guide = true;\n        mask.locked = true;\n        mask.matrix = new paper.Matrix(); // Identity\n        // Set the artwork to get clipped at the max costume size\n        mask.size.height = MAX_WORKSPACE_BOUNDS.height;\n        mask.size.width = MAX_WORKSPACE_BOUNDS.width;\n        mask.setPosition(CENTER);\n        paper.project.activeLayer.addChild(mask);\n        mask.clipMask = true;\n\n        // Reduce single item nested in groups\n        if (item instanceof paper.Group && item.children.length === 1) {\n            item = item.reduce();\n        }\n\n        ensureClockwise(item);\n        scaleWithStrokes(item, 2, new paper.Point()); // Import at 2x\n\n        // Apply rotation center\n        if (typeof rotationCenterX !== 'undefined' && typeof rotationCenterY !== 'undefined') {\n            let rotationPoint = new paper.Point(rotationCenterX, rotationCenterY);\n            if (viewBox && viewBox.length >= 2 && !isNaN(viewBox[0]) && !isNaN(viewBox[1])) {\n                rotationPoint = rotationPoint.subtract(viewBox[0], viewBox[1]);\n            }\n            item.translate(CENTER.subtract(rotationPoint.multiply(2)));\n        } else {\n            // Center\n            item.translate(CENTER.subtract(itemWidth, itemHeight));\n        }\n\n        paper.project.activeLayer.insertChild(0, item);\n        if (isGroup(item)) {\n            // Fixes an issue where we may export empty groups\n            for (const child of item.children) {\n                if (isGroup(child) && child.children.length === 0) {\n                    child.remove();\n                }\n            }\n            ungroupItems([item]);\n        }\n\n        performSnapshot(this.props.undoSnapshot, Formats.VECTOR_SKIP_CONVERT);\n        this.maybeZoomToFit();\n    }\n    onViewResize () {\n        setWorkspaceBounds(true /* clipEmpty */);\n        clampViewBounds();\n        // Fix incorrect paper canvas scale on browser zoom reset\n        this.recalibrateSize();\n        this.props.updateViewBounds(paper.view.matrix);\n    }\n    recalibrateSize (callback) {\n        // Sets the size that Paper thinks the canvas is to the size the canvas element actually is.\n        // When these are out of sync, the mouse events in the paint editor don't line up correctly.\n        return window.setTimeout(() => {\n            // If the component unmounts, the canvas will be removed from the page, detaching paper.view.\n            // This could also be called before paper.view exists.\n            // In either case, return early if so without running the callback.\n            if (!paper.view) return;\n            // Prevent blurriness caused if the \"CSS size\" of the element is a float--\n            // setting canvas dimensions to floats floors them, but we need to round instead\n            const elemSize = paper.DomElement.getSize(paper.view.element);\n            elemSize.width = Math.round(elemSize.width);\n            elemSize.height = Math.round(elemSize.height);\n            paper.view.setViewSize(elemSize);\n\n            if (callback) callback();\n        }, 0);\n    }\n    setCanvas (canvas) {\n        this.canvas = canvas;\n        if (this.props.canvasRef) {\n            this.props.canvasRef(canvas);\n        }\n    }\n    render () {\n        return (\n            <canvas\n                className={styles.paperCanvas}\n                ref={this.setCanvas}\n                style={{cursor: this.props.cursor}}\n                resize=\"true\"\n            />\n        );\n    }\n}\n\nPaperCanvas.propTypes = {\n    canvasRef: PropTypes.func,\n    changeFormat: PropTypes.func.isRequired,\n    clearHoveredItem: PropTypes.func.isRequired,\n    clearPasteOffset: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    clearUndo: PropTypes.func.isRequired,\n    cursor: PropTypes.string,\n    format: PropTypes.oneOf(Object.keys(Formats)),\n    image: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.instanceOf(HTMLImageElement)\n    ]),\n    imageFormat: PropTypes.string, // The incoming image's data format, used during import. The user could switch this.\n    imageId: PropTypes.string,\n    rotationCenterX: PropTypes.number,\n    rotationCenterY: PropTypes.number,\n    saveZoomLevel: PropTypes.func.isRequired,\n    setZoomLevelId: PropTypes.func.isRequired,\n    undoSnapshot: PropTypes.func.isRequired,\n    updateViewBounds: PropTypes.func.isRequired,\n    zoomLevelId: PropTypes.string,\n    zoomLevels: PropTypes.shape({\n        currentZoomLevelId: PropTypes.string\n    })\n};\nconst mapStateToProps = state => ({\n    mode: state.scratchPaint.mode,\n    cursor: state.scratchPaint.cursor,\n    format: state.scratchPaint.format,\n    zoomLevels: state.scratchPaint.zoomLevels\n});\nconst mapDispatchToProps = dispatch => ({\n    undoSnapshot: snapshot => {\n        dispatch(undoSnapshot(snapshot));\n    },\n    clearUndo: () => {\n        dispatch(clearUndoState());\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearHoveredItem: () => {\n        dispatch(clearHoveredItem());\n    },\n    clearPasteOffset: () => {\n        dispatch(clearPasteOffset());\n    },\n    changeFormat: format => {\n        dispatch(changeFormat(format));\n    },\n    saveZoomLevel: () => {\n        dispatch(saveZoomLevel(paper.view.matrix));\n    },\n    setZoomLevelId: zoomLevelId => {\n        dispatch(setZoomLevelId(zoomLevelId));\n    },\n    updateViewBounds: matrix => {\n        dispatch(updateViewBounds(matrix));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(PaperCanvas);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './scrollable-canvas.css';\n\nconst ScrollableCanvasComponent = props => (\n    <div\n        className={props.style}\n    >\n        {props.children}\n        <div\n            className={styles.horizontalScrollbarWrapper}\n            style={{pointerEvents: 'none'}}\n        >\n            <div\n                className={styles.horizontalScrollbarHitbox}\n                style={{\n                    width: `${props.horizontalScrollLengthPercent}%`,\n                    left: `${props.horizontalScrollStartPercent}%`,\n                    pointerEvents: 'auto',\n                    display: `${props.hideScrollbars ||\n                        Math.abs(props.horizontalScrollLengthPercent - 100) < 1e-8 ? 'none' : 'block'}`\n                }}\n                onMouseDown={props.onHorizontalScrollbarMouseDown}\n                onTouchStart={props.onHorizontalScrollbarMouseDown}\n            >\n                <div\n                    className={styles.horizontalScrollbar}\n                />\n            </div>\n        </div>\n        <div\n            className={styles.verticalScrollbarWrapper}\n            style={{pointerEvents: 'none'}}\n        >\n            <div\n                className={styles.verticalScrollbarHitbox}\n                style={{\n                    height: `${props.verticalScrollLengthPercent}%`,\n                    top: `${props.verticalScrollStartPercent}%`,\n                    pointerEvents: 'auto',\n                    display: `${props.hideScrollbars ||\n                        Math.abs(props.verticalScrollLengthPercent - 100) < 1e-8 ? 'none' : 'block'}`\n                }}\n                onMouseDown={props.onVerticalScrollbarMouseDown}\n                onTouchStart={props.onVerticalScrollbarMouseDown}\n            >\n                <div\n                    className={styles.verticalScrollbar}\n                />\n            </div>\n        </div>\n    </div>\n);\n\nScrollableCanvasComponent.propTypes = {\n    children: PropTypes.node.isRequired,\n    hideScrollbars: PropTypes.bool,\n    horizontalScrollLengthPercent: PropTypes.number,\n    horizontalScrollStartPercent: PropTypes.number,\n    onHorizontalScrollbarMouseDown: PropTypes.func.isRequired,\n    onVerticalScrollbarMouseDown: PropTypes.func.isRequired,\n    style: PropTypes.string,\n    verticalScrollLengthPercent: PropTypes.number,\n    verticalScrollStartPercent: PropTypes.number\n};\n\nexport default ScrollableCanvasComponent;\n","/* DO NOT EDIT\n@todo This file is copied from GUI and should be pulled out into a shared library.\nSee https://github.com/LLK/scratch-paint/issues/13 */\n\nconst getEventXY = e => {\n    if (e.touches && e.touches[0]) {\n        return {x: e.touches[0].clientX, y: e.touches[0].clientY};\n    } else if (e.changedTouches && e.changedTouches[0]) {\n        return {x: e.changedTouches[0].clientX, y: e.changedTouches[0].clientY};\n    }\n    return {x: e.clientX, y: e.clientY};\n};\n\nexport {\n    getEventXY\n};\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\n\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport ScrollableCanvasComponent from '../components/scrollable-canvas/scrollable-canvas.jsx';\n\nimport {clampViewBounds, pan, zoomOnFixedPoint, getWorkspaceBounds} from '../helper/view';\nimport {updateViewBounds} from '../reducers/view-bounds';\nimport {redrawSelectionBox} from '../reducers/selected-items';\n\nimport {getEventXY} from '../lib/touch-utils';\nimport bindAll from 'lodash.bindall';\n\nclass ScrollableCanvas extends React.Component {\n    static get ZOOM_INCREMENT () {\n        return 0.5;\n    }\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'handleHorizontalScrollbarMouseDown',\n            'handleHorizontalScrollbarMouseMove',\n            'handleHorizontalScrollbarMouseUp',\n            'handleVerticalScrollbarMouseDown',\n            'handleVerticalScrollbarMouseMove',\n            'handleVerticalScrollbarMouseUp',\n            'handleWheel'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.canvas) {\n            this.props.canvas.addEventListener('wheel', this.handleWheel);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (nextProps.canvas) {\n            if (this.props.canvas) {\n                this.props.canvas.removeEventListener('wheel', this.handleWheel);\n            }\n            nextProps.canvas.addEventListener('wheel', this.handleWheel);\n        }\n    }\n    handleHorizontalScrollbarMouseDown (event) {\n        this.initialMouseX = getEventXY(event).x;\n        this.initialScreenX = paper.view.matrix.tx;\n        window.addEventListener('mousemove', this.handleHorizontalScrollbarMouseMove);\n        window.addEventListener('touchmove', this.handleHorizontalScrollbarMouseMove, {passive: false});\n        window.addEventListener('mouseup', this.handleHorizontalScrollbarMouseUp);\n        window.addEventListener('touchend', this.handleHorizontalScrollbarMouseUp);\n        event.preventDefault();\n    }\n    handleHorizontalScrollbarMouseMove (event) {\n        const dx = this.initialMouseX - getEventXY(event).x;\n        paper.view.matrix.tx = this.initialScreenX + (dx * paper.view.zoom * 2);\n        clampViewBounds();\n        this.props.updateViewBounds(paper.view.matrix);\n        event.preventDefault();\n    }\n    handleHorizontalScrollbarMouseUp () {\n        window.removeEventListener('mousemove', this.handleHorizontalScrollbarMouseMove);\n        window.removeEventListener('touchmove', this.handleHorizontalScrollbarMouseMove, {passive: false});\n        window.removeEventListener('mouseup', this.handleHorizontalScrollbarMouseUp);\n        window.removeEventListener('touchend', this.handleHorizontalScrollbarMouseUp);\n        this.initialMouseX = null;\n        this.initialScreenX = null;\n        event.preventDefault();\n    }\n    handleVerticalScrollbarMouseDown (event) {\n        this.initialMouseY = getEventXY(event).y;\n        this.initialScreenY = paper.view.matrix.ty;\n        window.addEventListener('mousemove', this.handleVerticalScrollbarMouseMove);\n        window.addEventListener('touchmove', this.handleVerticalScrollbarMouseMove, {passive: false});\n        window.addEventListener('mouseup', this.handleVerticalScrollbarMouseUp);\n        window.addEventListener('touchend', this.handleVerticalScrollbarMouseUp);\n        event.preventDefault();\n    }\n    handleVerticalScrollbarMouseMove (event) {\n        const dy = this.initialMouseY - getEventXY(event).y;\n        paper.view.matrix.ty = this.initialScreenY + (dy * paper.view.zoom * 2);\n        clampViewBounds();\n        this.props.updateViewBounds(paper.view.matrix);\n        event.preventDefault();\n    }\n    handleVerticalScrollbarMouseUp (event) {\n        window.removeEventListener('mousemove', this.handleVerticalScrollbarMouseMove);\n        window.removeEventListener('touchmove', this.handleVerticalScrollbarMouseMove, {passive: false});\n        window.removeEventListener('mouseup', this.handleVerticalScrollbarMouseUp);\n        window.removeEventListener('touchend', this.handleVerticalScrollbarMouseUp);\n        this.initialMouseY = null;\n        this.initialScreenY = null;\n        event.preventDefault();\n    }\n    handleWheel (event) {\n        // Multiplier variable, so that non-pixel-deltaModes are supported. Needed for Firefox.\n        // See #529 (or LLK/scratch-blocks#1190).\n        const multiplier = event.deltaMode === 0x1 ? 15 : 1;\n        const deltaX = event.deltaX * multiplier;\n        const deltaY = event.deltaY * multiplier;\n        const canvasRect = this.props.canvas.getBoundingClientRect();\n        const offsetX = event.clientX - canvasRect.left;\n        const offsetY = event.clientY - canvasRect.top;\n        const fixedPoint = paper.view.viewToProject(\n            new paper.Point(offsetX, offsetY)\n        );\n        if (event.metaKey || event.ctrlKey) {\n            // Zoom keeping mouse location fixed\n            zoomOnFixedPoint(-deltaY / 1000, fixedPoint);\n            this.props.updateViewBounds(paper.view.matrix);\n            this.props.redrawSelectionBox(); // Selection handles need to be resized after zoom\n        } else if (event.shiftKey && event.deltaX === 0) {\n            // Scroll horizontally (based on vertical scroll delta)\n            // This is needed as for some browser/system combinations which do not set deltaX.\n            // See #156.\n            const dx = deltaY / paper.view.zoom;\n            pan(dx, 0);\n            this.props.updateViewBounds(paper.view.matrix);\n        } else {\n            const dx = deltaX / paper.view.zoom;\n            const dy = deltaY / paper.view.zoom;\n            pan(dx, dy);\n            this.props.updateViewBounds(paper.view.matrix);\n            if (paper.tool) {\n                paper.tool.view._handleMouseEvent('mousemove', event, fixedPoint);\n            }\n        }\n        event.preventDefault();\n    }\n    render () {\n        let widthPercent = 0;\n        let heightPercent = 0;\n        let topPercent = 0;\n        let leftPercent = 0;\n        if (paper.project) {\n            const bounds = getWorkspaceBounds();\n            const {x, y, width, height} = paper.view.bounds;\n            widthPercent = Math.min(100, 100 * width / bounds.width);\n            heightPercent = Math.min(100, 100 * height / bounds.height);\n            const centerX = (x + (width / 2) - bounds.x) / bounds.width;\n            const centerY = (y + (height / 2) - bounds.y) / bounds.height;\n            topPercent = Math.max(0, (100 * centerY) - (heightPercent / 2));\n            leftPercent = Math.max(0, (100 * centerX) - (widthPercent / 2));\n        }\n        return (\n            <ScrollableCanvasComponent\n                hideScrollbars={this.props.hideScrollbars}\n                horizontalScrollLengthPercent={widthPercent}\n                horizontalScrollStartPercent={leftPercent}\n                style={this.props.style}\n                verticalScrollLengthPercent={heightPercent}\n                verticalScrollStartPercent={topPercent}\n                onHorizontalScrollbarMouseDown={this.handleHorizontalScrollbarMouseDown}\n                onVerticalScrollbarMouseDown={this.handleVerticalScrollbarMouseDown}\n            >\n                {this.props.children}\n            </ScrollableCanvasComponent>\n        );\n    }\n}\n\nScrollableCanvas.propTypes = {\n    canvas: PropTypes.instanceOf(Element),\n    children: PropTypes.node.isRequired,\n    hideScrollbars: PropTypes.bool,\n    redrawSelectionBox: PropTypes.func.isRequired,\n    style: PropTypes.string,\n    updateViewBounds: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    viewBounds: state.scratchPaint.viewBounds\n});\nconst mapDispatchToProps = dispatch => ({\n    redrawSelectionBox: () => {\n        dispatch(redrawSelectionBox());\n    },\n    updateViewBounds: matrix => {\n        dispatch(updateViewBounds(matrix));\n    }\n});\n\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ScrollableCanvas);\n","import keyMirror from 'keymirror';\n\nconst GradientTypes = keyMirror({\n    SOLID: null,\n    HORIZONTAL: null,\n    VERTICAL: null,\n    RADIAL: null\n});\nexport default GradientTypes;\n","import log from '../log/log';\nimport {CHANGE_SELECTED_ITEMS} from '../reducers/selected-items';\nimport {getColorsFromSelection, MIXED} from '../helper/style-path';\nimport GradientTypes from './gradient-types';\n\n// Matches hex colors\nconst hexRegex = /^#([0-9a-f]{3}){1,2}$/i;\n\nconst isValidHexColor = color => {\n    if (!hexRegex.test(color) && color !== null && color !== MIXED) {\n        log.warn(`Invalid hex color code: ${color}`);\n        return false;\n    }\n    return true;\n};\n\nconst makeColorStyleReducer = ({\n    // Action name for changing the primary color\n    changePrimaryColorAction,\n    // Action name for changing the secondary color\n    changeSecondaryColorAction,\n    // Action name for changing the gradient type\n    changeGradientTypeAction,\n    // Action name for clearing the gradient\n    clearGradientAction,\n    // Initial color when not set\n    defaultColor,\n    // The name of the property read from getColorsFromSelection to get the primary color.\n    // e.g. `fillColor` or `strokeColor`.\n    selectionPrimaryColorKey,\n    // The name of the property read from getColorsFromSelection to get the secondary color.\n    // e.g. `fillColor2` or `strokeColor2`.\n    selectionSecondaryColorKey,\n    // The name of the property read from getColorsFromSelection to get the gradient type.\n    // e.g. `fillGradientType` or `strokeGradientType`.\n    selectionGradientTypeKey\n}) => function colorReducer (state, action) {\n    if (typeof state === 'undefined') {\n        state = {\n            primary: defaultColor,\n            secondary: null,\n            gradientType: GradientTypes.SOLID\n        };\n    }\n    switch (action.type) {\n    case changePrimaryColorAction:\n        if (!isValidHexColor(action.color)) return state;\n        return {...state, primary: action.color};\n    case changeSecondaryColorAction:\n        if (!isValidHexColor(action.color)) return state;\n        return {...state, secondary: action.color};\n    case CHANGE_SELECTED_ITEMS: {\n        // Don't change state if no selection\n        if (!action.selectedItems || !action.selectedItems.length) {\n            return state;\n        }\n        const colors = getColorsFromSelection(action.selectedItems, action.bitmapMode);\n\n        // Only set the primary color + gradient type if they exist in what getColorsFromSelection gave us.\n        // E.g. in bitmap mode, getColorsFromSelection will not return stroke color/gradient type. This allows us to\n        // preserve stroke swatch state across bitmap mode-- if getColorsFromSelection set them to null, then selecting\n        // anything in bitmap mode would overwrite the stroke state.\n        const newState = {...state};\n        if (selectionPrimaryColorKey in colors) {\n            newState.primary = colors[selectionPrimaryColorKey];\n        }\n        if (selectionGradientTypeKey in colors) {\n            newState.gradientType = colors[selectionGradientTypeKey];\n        }\n\n        // Gradient type may be solid when multiple gradient types are selected.\n        // In this case, changing the first color should not change the second color.\n        if (\n            selectionSecondaryColorKey in colors &&\n            (colors[selectionGradientTypeKey] !== GradientTypes.SOLID ||\n            colors[selectionSecondaryColorKey] === MIXED)\n        ) {\n            newState.secondary = colors[selectionSecondaryColorKey];\n        }\n        return newState;\n    }\n    case changeGradientTypeAction:\n        if (action.gradientType in GradientTypes) {\n            return {...state, gradientType: action.gradientType};\n        }\n        log.warn(`Gradient type does not exist: ${action.gradientType}`);\n        return state;\n    case clearGradientAction:\n        return {...state, secondary: null, gradientType: GradientTypes.SOLID};\n    default:\n        return state;\n    }\n};\n\nexport default makeColorStyleReducer;\n","import makeColorStyleReducer from '../lib/make-color-style-reducer';\n\nconst CHANGE_FILL_COLOR = 'scratch-paint/fill-style/CHANGE_FILL_COLOR';\nconst CHANGE_FILL_COLOR_2 = 'scratch-paint/fill-style/CHANGE_FILL_COLOR_2';\nconst CHANGE_FILL_GRADIENT_TYPE = 'scratch-paint/fill-style/CHANGE_FILL_GRADIENT_TYPE';\nconst CLEAR_FILL_GRADIENT = 'scratch-paint/fill-style/CLEAR_FILL_GRADIENT';\nconst DEFAULT_COLOR = '#9966FF';\n\nconst reducer = makeColorStyleReducer({\n    changePrimaryColorAction: CHANGE_FILL_COLOR,\n    changeSecondaryColorAction: CHANGE_FILL_COLOR_2,\n    changeGradientTypeAction: CHANGE_FILL_GRADIENT_TYPE,\n    clearGradientAction: CLEAR_FILL_GRADIENT,\n    defaultColor: DEFAULT_COLOR,\n    selectionPrimaryColorKey: 'fillColor',\n    selectionSecondaryColorKey: 'fillColor2',\n    selectionGradientTypeKey: 'fillGradientType'\n});\n\n// Action creators ==================================\nconst changeFillColor = function (fillColor) {\n    return {\n        type: CHANGE_FILL_COLOR,\n        color: fillColor\n    };\n};\n\nconst changeFillColor2 = function (fillColor) {\n    return {\n        type: CHANGE_FILL_COLOR_2,\n        color: fillColor\n    };\n};\n\nconst changeFillGradientType = function (gradientType) {\n    return {\n        type: CHANGE_FILL_GRADIENT_TYPE,\n        gradientType\n    };\n};\n\nconst clearFillGradient = function () {\n    return {\n        type: CLEAR_FILL_GRADIENT\n    };\n};\n\nexport {\n    reducer as default,\n    changeFillColor,\n    changeFillColor2,\n    changeFillGradientType,\n    clearFillGradient,\n    DEFAULT_COLOR,\n    CHANGE_FILL_GRADIENT_TYPE\n};\n","import paper from '@scratch/paper';\nimport {getSelectedLeafItems, getItems} from './selection';\nimport {isPointTextItem} from './item';\nimport {isGroup} from './group';\nimport GradientTypes from '../lib/gradient-types';\nimport {DEFAULT_COLOR} from '../reducers/fill-style';\nimport {isCompoundPathChild} from '../helper/compound-path';\nimport log from '../log/log';\n\nconst MIXED = 'scratch-paint/style-path/mixed';\n\n// Check if the item color matches the incoming color. If the item color is a gradient, we assume\n// that the incoming color never matches, since we don't support gradients yet.\nconst _colorMatch = function (itemColor, incomingColor) {\n    if (itemColor && itemColor.type === 'gradient') return false;\n    // Either both are null or both are the same color when converted to CSS.\n    return (!itemColor && !incomingColor) ||\n            (itemColor && incomingColor && itemColor.toCSS() === new paper.Color(incomingColor).toCSS());\n};\n\n// Selected items and currently active text edit items respond to color changes.\nconst _getColorStateListeners = function (textEditTargetId) {\n    const items = getSelectedLeafItems();\n    if (textEditTargetId) {\n        const matches = getItems({\n            match: item => item.id === textEditTargetId\n        });\n        if (matches.length) {\n            items.push(matches[0]);\n        }\n    }\n    return items;\n};\n\n/**\n * Transparent R, G, B values need to match the other color of the gradient\n * in order to form a smooth gradient, otherwise it fades through black. This\n * function gets the transparent color for a given color string.\n * @param {?string} colorToMatch CSS string of other color of gradient, or null for transparent\n * @return {string} CSS string for matching color of transparent\n */\nconst getColorStringForTransparent = function (colorToMatch) {\n    const color = new paper.Color(colorToMatch);\n    color.alpha = 0;\n    return color.toCSS();\n};\n\n/**\n * Generate a color that contrasts well with the passed-in color.\n * @param {string} firstColor The \"primary\" color\n * @return {string} CSS string for generated color\n */\nconst generateSecondaryColor = function (firstColor) {\n    if (firstColor === MIXED) return null;\n    const color = new paper.Color(firstColor);\n    if (!firstColor || color.alpha === 0) return DEFAULT_COLOR;\n\n    color.type = 'hsb';\n    const desaturated = color.saturation <= 0.15;\n    // If the color is desaturated or dark enough that a hue shift would be hard to see, do a brightness shift.\n    if (desaturated || color.brightness <= 0.4) {\n        // Choose the shade that contrasts the most with the given color.\n        // Use a brightness of 0.1 instead of 0 because if the brightness is 0, it's black and we lose the hue.\n        color.brightness = (color.brightness < 0.55 ? 1 : 0.1);\n    }\n    // If the color was desaturated, don't do a hue shift, as it would be hard to see anyway.\n    if (!desaturated) {\n        color.hue -= 72;\n    }\n    // The returned color will be one of three things:\n    // 1. If the color was bright and saturated (e.g. colorful), it will be that color, hue-shifted.\n    // 2. If the color was dark and saturated, it will be that color, brightened and hue-shifted.\n    // 3. If the color was not saturated, it will be that color, brightened or darkened as needed to contrast most.\n    return color.toCSS(true /* hex */);\n};\n\n/**\n * Convert params to a paper.Color gradient object\n * @param {?string} color1 CSS string, or null for transparent\n * @param {?string} color2 CSS string, or null for transparent\n * @param {GradientType} gradientType gradient type\n * @param {paper.Rectangle} bounds Bounds of the object\n * @param {?paper.Point} [radialCenter] Where the center of a radial gradient should be, if the gradient is radial.\n * Defaults to center of bounds.\n * @param {number} [minSize] The minimum width/height of the gradient object.\n * @return {paper.Color} Color object with gradient, may be null or color string if the gradient type is solid\n */\nconst createGradientObject = function (color1, color2, gradientType, bounds, radialCenter, minSize) {\n    if (gradientType === GradientTypes.SOLID) return color1;\n    if (color1 === null) {\n        color1 = getColorStringForTransparent(color2);\n    }\n    if (color2 === null) {\n        color2 = getColorStringForTransparent(color1);\n    }\n\n    // Force gradients to have a minimum length. If the gradient start and end points are the same or very close\n    // (e.g. applying a vertical gradient to a perfectly horizontal line or vice versa), the gradient will not appear.\n    if (!minSize) minSize = 1e-2;\n\n    let start;\n    let end;\n    switch (gradientType) {\n    case GradientTypes.HORIZONTAL: {\n        // clone these points so that adding/subtracting doesn't affect actual bounds\n        start = bounds.leftCenter.clone();\n        end = bounds.rightCenter.clone();\n\n        const gradientSize = Math.abs(end.x - start.x);\n        if (gradientSize < minSize) {\n            const sizeDiff = (minSize - gradientSize) / 2;\n            end.x += sizeDiff;\n            start.x -= sizeDiff;\n        }\n        break;\n    }\n    case GradientTypes.VERTICAL: {\n        // clone these points so that adding/subtracting doesn't affect actual bounds\n        start = bounds.topCenter.clone();\n        end = bounds.bottomCenter.clone();\n\n        const gradientSize = Math.abs(end.y - start.y);\n        if (gradientSize < minSize) {\n            const sizeDiff = (minSize - gradientSize) / 2;\n            end.y += sizeDiff;\n            start.y -= sizeDiff;\n        }\n        break;\n    }\n\n    case GradientTypes.RADIAL: {\n        const halfLongestDimension = Math.max(bounds.width, bounds.height) / 2;\n        start = radialCenter || bounds.center;\n        end = start.add(new paper.Point(\n            Math.max(halfLongestDimension, minSize / 2),\n            0));\n        break;\n    }\n    }\n    return {\n        gradient: {\n            stops: [color1, color2],\n            radial: gradientType === GradientTypes.RADIAL\n        },\n        origin: start,\n        destination: end\n    };\n};\n\n/**\n * Called when setting an item's color\n * @param {string} colorString color, css format, or null if completely transparent\n * @param {number} colorIndex index of color being changed\n * @param {boolean} isSolidGradient True if is solid gradient. Sometimes the item has a gradient but the color\n *     picker is set to a solid gradient. This happens when a mix of colors and gradient types is selected.\n *     When changing the color in this case, the solid gradient should override the existing gradient on the item.\n * @param {?boolean} applyToStroke True if changing the selection's stroke, false if changing its fill.\n * @param {?string} textEditTargetId paper.Item.id of text editing target, if any\n * @return {boolean} Whether the color application actually changed visibly.\n */\nconst applyColorToSelection = function (\n    colorString,\n    colorIndex,\n    isSolidGradient,\n    applyToStroke,\n    textEditTargetId\n) {\n    const items = _getColorStateListeners(textEditTargetId);\n    let changed = false;\n    for (let item of items) {\n        if (item.parent instanceof paper.CompoundPath) {\n            item = item.parent;\n        }\n\n        const itemColorProp = applyToStroke ? 'strokeColor' : 'fillColor';\n        const itemColor = item[itemColorProp];\n\n        if (isSolidGradient || !itemColor || !itemColor.gradient ||\n                !itemColor.gradient.stops.length === 2) {\n            // Applying a solid color\n            if (!_colorMatch(itemColor, colorString)) {\n                changed = true;\n                if (isPointTextItem(item) && !colorString) {\n                    // Allows transparent text to be hit\n                    item[itemColorProp] = 'rgba(0,0,0,0)';\n                } else {\n                    item[itemColorProp] = colorString;\n                }\n            }\n        } else if (!_colorMatch(itemColor.gradient.stops[colorIndex].color, colorString)) {\n            // Changing one color of an existing gradient\n            changed = true;\n            const otherIndex = colorIndex === 0 ? 1 : 0;\n            if (colorString === null) {\n                colorString = getColorStringForTransparent(itemColor.gradient.stops[otherIndex].color.toCSS());\n            }\n            const colors = [0, 0];\n            colors[colorIndex] = colorString;\n            // If the other color is transparent, its RGB values need to be adjusted for the gradient to be smooth\n            if (itemColor.gradient.stops[otherIndex].color.alpha === 0) {\n                colors[otherIndex] = getColorStringForTransparent(colorString);\n            } else {\n                colors[otherIndex] = itemColor.gradient.stops[otherIndex].color.toCSS();\n            }\n            // There seems to be a bug where setting colors on stops doesn't always update the view, so set gradient.\n            itemColor.gradient = {stops: colors, radial: itemColor.gradient.radial};\n        }\n    }\n    return changed;\n};\n\n/**\n * Called to swap gradient colors\n * @param {?boolean} applyToStroke True if changing the selection's stroke, false if changing its fill.\n * @param {?string} textEditTargetId paper.Item.id of text editing target, if any\n * @return {boolean} Whether the color application actually changed visibly.\n */\nconst swapColorsInSelection = function (applyToStroke, textEditTargetId) {\n    const items = _getColorStateListeners(textEditTargetId);\n    let changed = false;\n    for (const item of items) {\n        // If an item is a child path, do not swap colors.\n        // At some point, we'll iterate over its parent path, and we don't want to swap colors twice--\n        // that would leave us right where we started.\n        if (isCompoundPathChild(item)) continue;\n\n        const itemColor = applyToStroke ? item.strokeColor : item.fillColor;\n        if (!itemColor || !itemColor.gradient || !itemColor.gradient.stops.length === 2) {\n            // Only one color; nothing to swap\n            continue;\n        } else if (!itemColor.gradient.stops[0].color.equals(itemColor.gradient.stops[1].color)) {\n            // Changing one color of an existing gradient\n            changed = true;\n            const colors = [\n                itemColor.gradient.stops[1].color.toCSS(),\n                itemColor.gradient.stops[0].color.toCSS()\n            ];\n            // There seems to be a bug where setting colors on stops doesn't always update the view, so set gradient.\n            itemColor.gradient = {stops: colors, radial: itemColor.gradient.radial};\n        }\n    }\n    return changed;\n};\n\n/**\n * Called when setting gradient type\n * @param {GradientType} gradientType gradient type\n * @param {?boolean} applyToStroke True if changing the selection's stroke, false if changing its fill.\n * @param {?string} textEditTargetId paper.Item.id of text editing target, if any\n * @return {boolean} Whether the color application actually changed visibly.\n */\nconst applyGradientTypeToSelection = function (gradientType, applyToStroke, textEditTargetId) {\n    const items = _getColorStateListeners(textEditTargetId);\n    let changed = false;\n    for (let item of items) {\n        if (item.parent instanceof paper.CompoundPath) {\n            item = item.parent;\n        }\n\n        const itemColorProp = applyToStroke ? 'strokeColor' : 'fillColor';\n        const itemColor = item[itemColorProp];\n\n        const hasGradient = itemColor && itemColor.gradient;\n\n        let itemColor1;\n        if (itemColor === null || itemColor.alpha === 0) {\n            // Transparent\n            itemColor1 = null;\n        } else if (!hasGradient) {\n            // Solid color\n            itemColor1 = itemColor.toCSS();\n        } else if (!itemColor.gradient.stops[0] || itemColor.gradient.stops[0].color.alpha === 0) {\n            // Gradient where first color is transparent\n            itemColor1 = null;\n        } else {\n            // Gradient where first color is not transparent\n            itemColor1 = itemColor.gradient.stops[0].color.toCSS();\n        }\n\n        let itemColor2;\n        if (!hasGradient || !itemColor.gradient.stops[1]) {\n            // If item color is solid or a gradient that has no 2nd color, set the 2nd color based on the first color\n            itemColor2 = generateSecondaryColor(itemColor1);\n        } else if (itemColor.gradient.stops[1].color.alpha === 0) {\n            // Gradient has 2nd color which is transparent\n            itemColor2 = null;\n        } else {\n            // Gradient has 2nd color which is not transparent\n            itemColor2 = itemColor.gradient.stops[1].color.toCSS();\n        }\n\n        if (gradientType === GradientTypes.SOLID) {\n            if (itemColor && itemColor.gradient) {\n                changed = true;\n                item[itemColorProp] = itemColor1;\n            }\n            continue;\n        }\n\n        // If this is a stroke, we don't display it as having a gradient in the color picker\n        // if there's no stroke width. Then treat it as if it doesn't have a gradient.\n        let hasDisplayGradient = hasGradient;\n        if (applyToStroke) hasDisplayGradient = hasGradient && item.strokeWidth > 0;\n        if (!hasDisplayGradient) {\n            const noColorOriginally = !itemColor ||\n                (itemColor.gradient &&\n                itemColor.gradient.stops &&\n                itemColor.gradient.stops[0].color.alpha === 0);\n            const addingStroke = applyToStroke && item.strokeWidth === 0;\n            const hasGradientNow = itemColor1 || itemColor2;\n            if ((noColorOriginally || addingStroke) && hasGradientNow) {\n                if (applyToStroke) {\n                    // Make outline visible\n                    item.strokeWidth = 1;\n                }\n                // Make the gradient black to white\n                itemColor1 = 'black';\n                itemColor2 = 'white';\n            }\n        }\n\n        if (itemColor1 === null) {\n            itemColor1 = getColorStringForTransparent(itemColor2);\n        }\n        if (itemColor2 === null) {\n            itemColor2 = getColorStringForTransparent(itemColor1);\n        }\n\n        let gradientTypeDiffers = false;\n        // If the item's gradient type differs from the gradient type we want to apply, then we change it\n        switch (gradientType) {\n        case GradientTypes.RADIAL: {\n            const hasRadialGradient = hasDisplayGradient && itemColor.gradient.radial;\n            gradientTypeDiffers = !hasRadialGradient;\n            break;\n        }\n        case GradientTypes.HORIZONTAL: {\n            const hasHorizontalGradient = hasDisplayGradient && !itemColor.gradient.radial &&\n                Math.abs(itemColor.origin.y - itemColor.destination.y) < 1e-8;\n            gradientTypeDiffers = !hasHorizontalGradient;\n            break;\n        }\n        case GradientTypes.VERTICAL: {\n            const hasVerticalGradient = hasDisplayGradient && !itemColor.gradient.radial &&\n                Math.abs(itemColor.origin.x - itemColor.destination.x) < 1e-8;\n            gradientTypeDiffers = !hasVerticalGradient;\n            break;\n        }\n        }\n\n        if (gradientTypeDiffers) {\n            changed = true;\n            item[itemColorProp] = createGradientObject(\n                itemColor1,\n                itemColor2,\n                gradientType,\n                item.bounds,\n                null, // radialCenter\n                item.strokeWidth\n            );\n        }\n    }\n    return changed;\n};\n\n/**\n * Called when setting stroke width\n * @param {number} value New stroke width\n * @param {?string} textEditTargetId paper.Item.id of text editing target, if any\n * @return {boolean} Whether the color application actually changed visibly.\n */\nconst applyStrokeWidthToSelection = function (value, textEditTargetId) {\n    let changed = false;\n    const items = _getColorStateListeners(textEditTargetId);\n    for (let item of items) {\n        if (item.parent instanceof paper.CompoundPath) {\n            item = item.parent;\n        }\n        if (isGroup(item)) {\n            continue;\n        } else if (item.strokeWidth !== value) {\n            item.strokeWidth = value;\n            changed = true;\n        }\n    }\n    return changed;\n};\n\nconst _colorStateFromGradient = gradient => {\n    const colorState = {};\n    // Scratch only recognizes 2 color gradients\n    if (gradient.stops.length === 2) {\n        if (gradient.radial) {\n            colorState.gradientType = GradientTypes.RADIAL;\n        } else {\n            // Always use horizontal for linear gradients, since horizontal and vertical gradients\n            // are the same with rotation. We don't want to show MIXED just because anything is rotated.\n            colorState.gradientType = GradientTypes.HORIZONTAL;\n        }\n        colorState.primary = gradient.stops[0].color.alpha === 0 ?\n            null :\n            gradient.stops[0].color.toCSS();\n        colorState.secondary = gradient.stops[1].color.alpha === 0 ?\n            null :\n            gradient.stops[1].color.toCSS();\n    } else {\n        if (gradient.stops.length < 2) log.warn(`Gradient has ${gradient.stops.length} stop(s)`);\n\n        colorState.primary = MIXED;\n        colorState.secondary = MIXED;\n    }\n\n    return colorState;\n};\n\n/**\n * Get state of colors and stroke width for selection\n * @param {!Array<paper.Item>} selectedItems Selected paper items\n * @param {?boolean} bitmapMode True if the item is being selected in bitmap mode\n * @return {?object} Object of strokeColor, strokeWidth, fillColor, thickness of the selection.\n *     Gives MIXED when there are mixed values for a color, and null for transparent.\n *     Gives null when there are mixed values for stroke width.\n *     Thickness is line thickness, used in the bitmap editor\n */\nconst getColorsFromSelection = function (selectedItems, bitmapMode) {\n    // TODO: DRY out this code\n    let selectionFillColorString;\n    let selectionFillColor2String;\n    let selectionStrokeColorString;\n    let selectionStrokeColor2String;\n    let selectionStrokeWidth;\n    let selectionThickness;\n    let selectionFillGradientType;\n    let selectionStrokeGradientType;\n    let firstChild = true;\n\n    for (let item of selectedItems) {\n        if (item.parent instanceof paper.CompoundPath) {\n            // Compound path children inherit fill and stroke color from their parent.\n            item = item.parent;\n        }\n        let itemFillColorString;\n        let itemFillColor2String;\n        let itemStrokeColorString;\n        let itemStrokeColor2String;\n        let itemFillGradientType = GradientTypes.SOLID;\n        let itemStrokeGradientType = GradientTypes.SOLID;\n\n        if (!isGroup(item)) {\n            if (item.fillColor) {\n                // hack bc text items with null fill can't be detected by fill-hitTest anymore\n                if (isPointTextItem(item) && item.fillColor.alpha === 0) {\n                    itemFillColorString = null;\n                } else if (item.fillColor.type === 'gradient') {\n                    const {primary, secondary, gradientType} = _colorStateFromGradient(item.fillColor.gradient);\n                    itemFillColorString = primary;\n                    itemFillColor2String = secondary;\n                    itemFillGradientType = gradientType;\n                } else {\n                    itemFillColorString = item.fillColor.alpha === 0 ?\n                        null :\n                        item.fillColor.toCSS();\n                    itemFillColor2String = null;\n                }\n            }\n            if (item.strokeColor) {\n                if (item.strokeColor.type === 'gradient') {\n                    const {primary, secondary, gradientType} = _colorStateFromGradient(item.strokeColor.gradient);\n\n                    let strokeColorString = primary;\n                    const strokeColor2String = secondary;\n                    let strokeGradientType = gradientType;\n\n                    // If the item's stroke width is 0, pretend the stroke color is null\n                    if (!item.strokeWidth) {\n                        strokeColorString = null;\n                        // Hide the second color. This way if you choose a second color, remove\n                        // the gradient, and re-add it, your second color selection is preserved.\n                        strokeGradientType = GradientTypes.SOLID;\n                    }\n\n                    // Stroke color is fill color in bitmap\n                    if (bitmapMode) {\n                        itemFillColorString = strokeColorString;\n                        itemFillColor2String = strokeColor2String;\n                        itemFillGradientType = strokeGradientType;\n                    } else {\n                        itemStrokeColorString = strokeColorString;\n                        itemStrokeColor2String = strokeColor2String;\n                        itemStrokeGradientType = strokeGradientType;\n                    }\n                } else {\n                    const strokeColorString = item.strokeColor.alpha === 0 || !item.strokeWidth ?\n                        null :\n                        item.strokeColor.toCSS();\n\n                    // Stroke color is fill color in bitmap\n                    if (bitmapMode) {\n                        itemFillColorString = strokeColorString;\n                    } else {\n                        itemStrokeColorString = strokeColorString;\n                    }\n                }\n            } else {\n                itemStrokeColorString = null;\n                itemStrokeColor2String = null;\n            }\n            // check every style against the first of the items\n            if (firstChild) {\n                firstChild = false;\n                selectionFillColorString = itemFillColorString;\n                selectionFillColor2String = itemFillColor2String;\n                selectionStrokeColorString = itemStrokeColorString;\n                selectionStrokeColor2String = itemStrokeColor2String;\n                selectionFillGradientType = itemFillGradientType;\n                selectionStrokeGradientType = itemStrokeGradientType;\n                selectionStrokeWidth = itemStrokeColorString || itemStrokeColor2String ? item.strokeWidth : 0;\n                if (item.strokeWidth && item.data && item.data.zoomLevel) {\n                    selectionThickness = item.strokeWidth / item.data.zoomLevel;\n                }\n            }\n            if (itemFillColorString !== selectionFillColorString) {\n                selectionFillColorString = MIXED;\n            }\n            if (itemFillColor2String !== selectionFillColor2String) {\n                selectionFillColor2String = MIXED;\n            }\n            if (itemFillGradientType !== selectionFillGradientType) {\n                selectionFillGradientType = GradientTypes.SOLID;\n                selectionFillColorString = MIXED;\n                selectionFillColor2String = MIXED;\n            }\n            if (itemStrokeGradientType !== selectionStrokeGradientType) {\n                selectionStrokeGradientType = GradientTypes.SOLID;\n                selectionStrokeColorString = MIXED;\n                selectionStrokeColor2String = MIXED;\n            }\n            if (itemStrokeColorString !== selectionStrokeColorString) {\n                selectionStrokeColorString = MIXED;\n            }\n            if (itemStrokeColor2String !== selectionStrokeColor2String) {\n                selectionStrokeColor2String = MIXED;\n            }\n            const itemStrokeWidth = itemStrokeColorString || itemStrokeColor2String ? item.strokeWidth : 0;\n            if (selectionStrokeWidth !== itemStrokeWidth) {\n                selectionStrokeWidth = null;\n            }\n        }\n    }\n    // Convert selection gradient type from horizontal to vertical if first item is exactly vertical\n    // This is because up to this point, we assume all non-radial gradients are horizontal\n    // Otherwise, if there were a mix of horizontal/vertical gradient types in the selection, they would show as MIXED\n    // whereas we want them to show as horizontal (or vertical if the first item is vertical)\n    if (selectedItems && selectedItems.length) {\n        let firstItem = selectedItems[0];\n        if (firstItem.parent instanceof paper.CompoundPath) firstItem = firstItem.parent;\n\n        if (selectionFillGradientType !== GradientTypes.SOLID) {\n            // Stroke color is fill color in bitmap if fill color is missing\n            // TODO: this whole \"treat horizontal/vertical gradients specially\" logic is janky; refactor at some point\n            const firstItemColor = (bitmapMode && firstItem.strokeColor) ? firstItem.strokeColor : firstItem.fillColor;\n            const direction = firstItemColor.destination.subtract(firstItemColor.origin);\n            if (Math.abs(direction.angle) === 90) {\n                selectionFillGradientType = GradientTypes.VERTICAL;\n            }\n        }\n\n        if (selectionStrokeGradientType !== GradientTypes.SOLID) {\n            const direction = firstItem.strokeColor.destination.subtract(firstItem.strokeColor.origin);\n            if (Math.abs(direction.angle) === 90) {\n                selectionStrokeGradientType = GradientTypes.VERTICAL;\n            }\n        }\n    }\n    if (bitmapMode) {\n        return {\n            fillColor: selectionFillColorString ? selectionFillColorString : null,\n            fillColor2: selectionFillColor2String ? selectionFillColor2String : null,\n            fillGradientType: selectionFillGradientType,\n            thickness: selectionThickness\n        };\n    }\n    return {\n        fillColor: selectionFillColorString ? selectionFillColorString : null,\n        fillColor2: selectionFillColor2String ? selectionFillColor2String : null,\n        fillGradientType: selectionFillGradientType,\n        strokeColor: selectionStrokeColorString ? selectionStrokeColorString : null,\n        strokeColor2: selectionStrokeColor2String ? selectionStrokeColor2String : null,\n        strokeGradientType: selectionStrokeGradientType,\n        strokeWidth: selectionStrokeWidth || (selectionStrokeWidth === null) ? selectionStrokeWidth : 0\n    };\n};\n\nconst styleBlob = function (path, options) {\n    if (options.isEraser) {\n        path.fillColor = 'white';\n    } else if (options.fillColor) {\n        path.fillColor = options.fillColor;\n    } else {\n        // Make sure something visible is drawn\n        path.fillColor = 'black';\n    }\n};\n\nconst styleCursorPreview = function (path, options) {\n    if (options.isEraser) {\n        path.fillColor = 'white';\n        path.strokeColor = 'cornflowerblue';\n        path.strokeWidth = 1;\n    } else if (options.fillColor) {\n        path.fillColor = options.fillColor;\n    } else {\n        // Make sure something visible is drawn\n        path.fillColor = 'black';\n    }\n};\n\nconst styleShape = function (path, options) {\n    for (const colorKey of ['fillColor', 'strokeColor']) {\n        if (options[colorKey] === null) {\n            path[colorKey] = null;\n        } else if (options[colorKey].gradientType === GradientTypes.SOLID) {\n            path[colorKey] = options[colorKey].primary;\n        } else {\n            const {primary, secondary, gradientType} = options[colorKey];\n            path[colorKey] = createGradientObject(\n                primary,\n                secondary,\n                gradientType,\n                path.bounds,\n                null, // radialCenter\n                options.strokeWidth // minimum gradient size is stroke width\n            );\n        }\n    }\n    if (Object.prototype.hasOwnProperty.call(options, 'strokeWidth')) path.strokeWidth = options.strokeWidth;\n};\n\nexport {\n    applyColorToSelection,\n    applyGradientTypeToSelection,\n    applyStrokeWidthToSelection,\n    createGradientObject,\n    getColorsFromSelection,\n    generateSecondaryColor,\n    MIXED,\n    styleBlob,\n    styleShape,\n    styleCursorPreview,\n    swapColorsInSelection\n};\n","import Modes from '../lib/modes';\nimport log from '../log/log';\n\nconst CHANGE_MODE = 'scratch-paint/modes/CHANGE_MODE';\nconst initialState = Modes.SELECT;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_MODE:\n        if (action.mode in Modes) {\n            return action.mode;\n        }\n        log.warn(`Mode does not exist: ${action.mode}`);\n        /* falls through */\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeMode = function (mode) {\n    return {\n        type: CHANGE_MODE,\n        mode: mode\n    };\n};\n\nexport {\n    reducer as default,\n    changeMode\n};\n","/* DO NOT EDIT\n@todo This file is copied from GUI and should be pulled out into a shared library.\nSee #13 */\n\n/* ACTUALLY, THIS IS EDITED ;)\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD HANDLING FOR DISABLED STATES.*/\n\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport styles from './button.css';\n\nconst ButtonComponent = ({\n    className,\n    highlighted,\n    onClick,\n    children,\n    ...props\n}) => {\n    const disabled = props.disabled || false;\n    if (disabled === false) {\n        // if not disabled, add `onClick()` to be applied\n        // in props. If disabled, don't add `onClick()`\n        props.onClick = onClick;\n    }\n    return (\n        <span\n            className={classNames(\n                styles.button,\n                className,\n                {\n                    [styles.modDisabled]: disabled,\n                    [styles.highlighted]: highlighted\n                }\n            )}\n            role=\"button\"\n            {...props}\n        >\n            {children}\n        </span>\n    );\n};\n\nButtonComponent.propTypes = {\n    children: PropTypes.node,\n    className: PropTypes.string,\n    disabled: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.bool\n    ]),\n    highlighted: PropTypes.bool,\n    onClick: PropTypes.func.isRequired\n};\nexport default ButtonComponent;\n","import classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {injectIntl, intlShape} from 'react-intl';\n\nimport Button from '../button/button.jsx';\n\nimport styles from './tool-select-base.css';\n\nconst ToolSelectComponent = props => (\n    <Button\n        className={\n            classNames(props.className, styles.modToolSelect, {\n                [styles.isSelected]: props.isSelected\n            })\n        }\n        disabled={props.disabled}\n        title={props.intl.formatMessage(props.imgDescriptor)}\n        onClick={props.onMouseDown}\n    >\n        <img\n            alt={props.intl.formatMessage(props.imgDescriptor)}\n            className={styles.toolSelectIcon}\n            draggable={false}\n            src={props.imgSrc}\n        />\n    </Button>\n);\n\nToolSelectComponent.propTypes = {\n    className: PropTypes.string,\n    disabled: PropTypes.bool,\n    imgDescriptor: PropTypes.shape({\n        defaultMessage: PropTypes.string,\n        description: PropTypes.string,\n        id: PropTypes.string\n    }).isRequired,\n    imgSrc: PropTypes.string.isRequired,\n    intl: intlShape.isRequired,\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default injectIntl(ToolSelectComponent);\n","import {defineMessages} from 'react-intl';\n\nconst messages = defineMessages({\n    brush: {\n        defaultMessage: 'Brush',\n        description: 'Label for the brush tool',\n        id: 'paint.brushMode.brush'\n    },\n    eraser: {\n        defaultMessage: 'Eraser',\n        description: 'Label for the eraser tool',\n        id: 'paint.eraserMode.eraser'\n    },\n    fill: {\n        defaultMessage: 'Fill',\n        description: 'Label for the fill tool',\n        id: 'paint.fillMode.fill'\n    },\n    line: {\n        defaultMessage: 'Line',\n        description: 'Label for the line tool',\n        id: 'paint.lineMode.line'\n    },\n    oval: {\n        defaultMessage: 'Circle',\n        description: 'Label for the oval-drawing tool',\n        id: 'paint.ovalMode.oval'\n    },\n    rect: {\n        defaultMessage: 'Rectangle',\n        description: 'Label for the rectangle tool',\n        id: 'paint.rectMode.rect'\n    },\n    reshape: {\n        defaultMessage: 'Reshape',\n        description: 'Label for the reshape tool, which allows changing the points in the lines of the vectors',\n        id: 'paint.reshapeMode.reshape'\n    },\n    roundedRect: {\n        defaultMessage: 'Rounded Rectangle',\n        description: 'Label for the rounded rectangle tool',\n        id: 'paint.roundedRectMode.roundedRect'\n    },\n    select: {\n        defaultMessage: 'Select',\n        description: 'Label for the select tool, which allows selecting, moving, and resizing shapes',\n        id: 'paint.selectMode.select'\n    },\n    text: {\n        defaultMessage: 'Text',\n        description: 'Label for the text tool',\n        id: 'paint.textMode.text'\n    }\n});\n\nexport default messages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\n\nimport brushIcon from './brush.svg';\n\nconst BitBrushModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.brush}\n        imgSrc={brushIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitBrushModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitBrushModeComponent;\n","import paper from '@scratch/paper';\nimport {getRaster, getGuideLayer} from '../layer';\nimport {forEachLinePoint, getBrushMark} from '../bitmap';\n\n/**\n * Tool for drawing with the bitmap brush and eraser\n */\nclass BrushTool extends paper.Tool {\n    /**\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     * @param {boolean} isEraser True if brush should erase\n     */\n    constructor (onUpdateImage, isEraser) {\n        super();\n        this.onUpdateImage = onUpdateImage;\n        this.isEraser = isEraser;\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseUp = this.handleMouseUp;\n\n        this.colorState = null;\n        this.active = false;\n        this.lastPoint = null;\n        this.cursorPreview = null;\n    }\n    setColor (color) {\n        this.color = color;\n        this.tmpCanvas = getBrushMark(this.size, this.color, this.isEraser || !this.color);\n    }\n    setBrushSize (size) {\n        // For performance, make sure this is an integer\n        this.size = Math.max(1, ~~size);\n        this.tmpCanvas = getBrushMark(this.size, this.color, this.isEraser || !this.color);\n    }\n    // Draw a brush mark at the given point\n    draw (x, y) {\n        const roundedUpRadius = Math.ceil(this.size / 2);\n        const context = getRaster().getContext('2d');\n        if (this.isEraser || !this.color) {\n            context.globalCompositeOperation = 'destination-out';\n        }\n        getRaster().drawImage(this.tmpCanvas, new paper.Point(~~x - roundedUpRadius, ~~y - roundedUpRadius));\n        if (this.isEraser || !this.color) {\n            context.globalCompositeOperation = 'source-over';\n        }\n    }\n    updateCursorIfNeeded () {\n        if (!this.size) {\n            return;\n        }\n\n        // The cursor preview was unattached from the view by an outside process,\n        // such as changing costumes or undo.\n        if (this.cursorPreview && !this.cursorPreview.parent) {\n            this.cursorPreview = null;\n        }\n\n        if (!this.cursorPreview || !(this.lastSize === this.size && this.lastColor === this.color)) {\n            if (this.cursorPreview) {\n                this.cursorPreview.remove();\n            }\n\n            this.tmpCanvas = getBrushMark(this.size, this.color, this.isEraser || !this.color);\n            this.cursorPreview = new paper.Raster(this.tmpCanvas);\n            this.cursorPreview.guide = true;\n            this.cursorPreview.parent = getGuideLayer();\n            this.cursorPreview.data.isHelperItem = true;\n        }\n\n        this.lastSize = this.size;\n        this.lastColor = this.color;\n    }\n    handleMouseMove (event) {\n        this.updateCursorIfNeeded();\n        this.cursorPreview.position = new paper.Point(~~event.point.x, ~~event.point.y);\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        if (this.cursorPreview) {\n            this.cursorPreview.remove();\n        }\n\n        this.draw(event.point.x, event.point.y);\n        this.lastPoint = event.point;\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        forEachLinePoint(this.lastPoint, event.point, this.draw.bind(this));\n        this.lastPoint = event.point;\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        forEachLinePoint(this.lastPoint, event.point, this.draw.bind(this));\n        this.onUpdateImage();\n\n        this.lastPoint = null;\n        this.active = false;\n\n        this.updateCursorIfNeeded();\n        this.cursorPreview.position = new paper.Point(~~event.point.x, ~~event.point.y);\n    }\n    deactivateTool () {\n        this.active = false;\n        this.tmpCanvas = null;\n        if (this.cursorPreview) {\n            this.cursorPreview.remove();\n            this.cursorPreview = null;\n        }\n    }\n}\n\nexport default BrushTool;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport {MIXED} from '../helper/style-path';\n\nimport {changeFillColor, clearFillGradient, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {clearSelection} from '../helper/selection';\n\nimport BitBrushModeComponent from '../components/bit-brush-mode/bit-brush-mode.jsx';\nimport BitBrushTool from '../helper/bit-tools/brush-tool';\n\nclass BitBrushMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isBitBrushModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.color !== this.props.color) {\n            this.tool.setColor(nextProps.color);\n        }\n        if (this.tool && nextProps.bitBrushSize !== this.props.bitBrushSize) {\n            this.tool.setBrushSize(nextProps.bitBrushSize);\n        }\n\n        if (nextProps.isBitBrushModeActive && !this.props.isBitBrushModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isBitBrushModeActive && this.props.isBitBrushModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isBitBrushModeActive !== this.props.isBitBrushModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        this.props.clearGradient();\n        // Force the default brush color if fill is MIXED or transparent\n        let color = this.props.color;\n        if (!color || color === MIXED) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n            color = DEFAULT_COLOR;\n        }\n        this.tool = new BitBrushTool(\n            this.props.onUpdateImage\n        );\n        this.tool.setColor(color);\n        this.tool.setBrushSize(this.props.bitBrushSize);\n\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <BitBrushModeComponent\n                isSelected={this.props.isBitBrushModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBitBrushMode.propTypes = {\n    bitBrushSize: PropTypes.number.isRequired,\n    clearGradient: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    color: PropTypes.string,\n    handleMouseDown: PropTypes.func.isRequired,\n    isBitBrushModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    bitBrushSize: state.scratchPaint.bitBrushSize,\n    color: state.scratchPaint.color.fillColor.primary,\n    isBitBrushModeActive: state.scratchPaint.mode === Modes.BIT_BRUSH\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearGradient: () => {\n        dispatch(clearFillGradient());\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BIT_BRUSH));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BitBrushMode);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport lineIcon from './line.svg';\n\nconst BitLineComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.line}\n        imgSrc={lineIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitLineComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitLineComponent;\n","import paper from '@scratch/paper';\nimport {getRaster, createCanvas, getGuideLayer} from '../layer';\nimport {forEachLinePoint, getBrushMark} from '../bitmap';\nimport {ART_BOARD_WIDTH, ART_BOARD_HEIGHT} from '../view';\n\n/**\n * Tool for drawing lines with the bitmap brush.\n */\nclass LineTool extends paper.Tool {\n    /**\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (onUpdateImage) {\n        super();\n        this.onUpdateImage = onUpdateImage;\n        \n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseUp = this.handleMouseUp;\n\n        this.colorState = null;\n        this.active = false;\n        this.startPoint = null;\n        this.cursorPreview = null;\n        // Raster to which to draw\n        this.drawTarget = null;\n    }\n    setColor (color) {\n        this.color = color;\n        this.tmpCanvas = getBrushMark(this.size, this.color);\n    }\n    setLineSize (size) {\n        // For performance, make sure this is an integer\n        this.size = Math.max(1, ~~size);\n        this.tmpCanvas = getBrushMark(this.size, this.color);\n    }\n    // Draw a brush mark at the given point\n    draw (x, y) {\n        const roundedUpRadius = Math.ceil(this.size / 2);\n        this.drawTarget.drawImage(this.tmpCanvas, new paper.Point(~~x - roundedUpRadius, ~~y - roundedUpRadius));\n    }\n    updateCursorIfNeeded () {\n        if (!this.size) {\n            return;\n        }\n        // The cursor preview was unattached from the view by an outside process,\n        // such as changing costumes or undo.\n        if (this.cursorPreview && !this.cursorPreview.parent) {\n            this.cursorPreview = null;\n        }\n\n        if (!this.cursorPreview || !(this.lastSize === this.size && this.lastColor === this.color)) {\n            if (this.cursorPreview) {\n                this.cursorPreview.remove();\n            }\n\n            this.tmpCanvas = getBrushMark(this.size, this.color);\n            this.cursorPreview = new paper.Raster(this.tmpCanvas);\n            this.cursorPreview.guide = true;\n            this.cursorPreview.parent = getGuideLayer();\n            this.cursorPreview.data.isHelperItem = true;\n        }\n        this.lastSize = this.size;\n        this.lastColor = this.color;\n    }\n    handleMouseMove (event) {\n        this.updateCursorIfNeeded();\n        this.cursorPreview.position = new paper.Point(~~event.point.x, ~~event.point.y);\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        if (this.cursorPreview) this.cursorPreview.remove();\n\n        const tmpCanvas = createCanvas();\n        this.drawTarget = new paper.Raster(tmpCanvas);\n        this.drawTarget.parent = getGuideLayer();\n        this.drawTarget.guide = true;\n        this.drawTarget.locked = true;\n        this.drawTarget.position = getRaster().position;\n\n        this.draw(event.point.x, event.point.y);\n        this.startPoint = event.point;\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        // Clear\n        const context = this.drawTarget.canvas.getContext('2d');\n        context.clearRect(0, 0, ART_BOARD_WIDTH, ART_BOARD_HEIGHT);\n\n        forEachLinePoint(this.startPoint, event.point, this.draw.bind(this));\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n        \n        this.drawTarget.remove();\n        this.drawTarget = getRaster();\n        forEachLinePoint(this.startPoint, event.point, this.draw.bind(this));\n        this.drawTarget = null;\n        this.onUpdateImage();\n\n        this.lastPoint = null;\n        this.active = false;\n\n        this.updateCursorIfNeeded();\n        this.cursorPreview.position = new paper.Point(~~event.point.x, ~~event.point.y);\n    }\n    deactivateTool () {\n        this.active = false;\n        this.tmpCanvas = null;\n        if (this.cursorPreview) {\n            this.cursorPreview.remove();\n            this.cursorPreview = null;\n        }\n    }\n}\n\nexport default LineTool;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport {MIXED} from '../helper/style-path';\n\nimport {changeFillColor, clearFillGradient, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {clearSelection} from '../helper/selection';\n\nimport BitLineModeComponent from '../components/bit-line-mode/bit-line-mode.jsx';\nimport BitLineTool from '../helper/bit-tools/line-tool';\n\nclass BitLineMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isBitLineModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.color !== this.props.color) {\n            this.tool.setColor(nextProps.color);\n        }\n        if (this.tool && nextProps.bitBrushSize !== this.props.bitBrushSize) {\n            this.tool.setLineSize(nextProps.bitBrushSize);\n        }\n\n        if (nextProps.isBitLineModeActive && !this.props.isBitLineModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isBitLineModeActive && this.props.isBitLineModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isBitLineModeActive !== this.props.isBitLineModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        this.props.clearGradient();\n        // Force the default line color if fill is MIXED or transparent\n        let color = this.props.color;\n        if (!color || color === MIXED) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n            color = DEFAULT_COLOR;\n        }\n        this.tool = new BitLineTool(\n            this.props.onUpdateImage\n        );\n        this.tool.setColor(color);\n        this.tool.setLineSize(this.props.bitBrushSize);\n\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <BitLineModeComponent\n                isSelected={this.props.isBitLineModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBitLineMode.propTypes = {\n    bitBrushSize: PropTypes.number.isRequired,\n    clearGradient: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    color: PropTypes.string,\n    handleMouseDown: PropTypes.func.isRequired,\n    isBitLineModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    bitBrushSize: state.scratchPaint.bitBrushSize,\n    color: state.scratchPaint.color.fillColor.primary,\n    isBitLineModeActive: state.scratchPaint.mode === Modes.BIT_LINE\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearGradient: () => {\n        dispatch(clearFillGradient());\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BIT_LINE));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BitLineMode);\n","import {PropTypes} from 'prop-types';\n\nimport GradientTypes from './gradient-types';\n\nexport default PropTypes.shape({\n    primary: PropTypes.string,\n    secondary: PropTypes.string,\n    gradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired\n});\n","const Cursors = {\n    DEFAULT: 'default',\n    GRAB: 'grab',\n    GRABBING: 'grabbing',\n    NONE: 'none',\n    RESIZE_EW: 'ew-resize',\n    RESIZE_NS: 'ns-resize',\n    RESIZE_NESW: 'nesw-resize',\n    RESIZE_NWSE: 'nwse-resize'\n};\n\nexport default Cursors;\n","const ACTIVATE_EYE_DROPPER = 'scratch-paint/eye-dropper/ACTIVATE_COLOR_PICKER';\nconst DEACTIVATE_EYE_DROPPER = 'scratch-paint/eye-dropper/DEACTIVATE_COLOR_PICKER';\n\nconst initialState = {\n    active: false,\n    callback: () => {}, // this will either be `onChangeFillColor` or `onChangeOutlineColor`\n    previousTool: null // the tool that was previously active before eye dropper\n};\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case ACTIVATE_EYE_DROPPER:\n        return Object.assign(\n            {},\n            state,\n            {\n                active: true,\n                callback: action.callback,\n                previousTool: action.previousMode\n            }\n        );\n    case DEACTIVATE_EYE_DROPPER:\n        return Object.assign(\n            {},\n            state,\n            {\n                active: false,\n                callback: () => {},\n                previousTool: null\n            }\n        );\n    default:\n        return state;\n    }\n};\n\nconst activateEyeDropper = function (currentMode, callback) {\n    return {\n        type: ACTIVATE_EYE_DROPPER,\n        callback: callback,\n        previousMode: currentMode\n    };\n};\nconst deactivateEyeDropper = function () {\n    return {\n        type: DEACTIVATE_EYE_DROPPER\n    };\n};\n\nexport {\n    reducer as default,\n    activateEyeDropper,\n    deactivateEyeDropper,\n    ACTIVATE_EYE_DROPPER,\n    DEACTIVATE_EYE_DROPPER\n};\n","import log from '../log/log';\n\nimport Cursors from '../lib/cursors';\nimport {ACTIVATE_EYE_DROPPER, DEACTIVATE_EYE_DROPPER} from './eye-dropper';\n\nconst CHANGE_CURSOR = 'scratch-paint/cursor/CHANGE_CURSOR';\nconst initialState = Cursors.DEFAULT;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_CURSOR:\n        if (typeof action.cursorString === 'undefined') {\n            log.warn(`Cursor should not be set to undefined. Use 'default'.`);\n            return state;\n        } else if (!Object.values(Cursors).includes(action.cursorString)) {\n            log.warn(`Cursor should be a valid cursor string. Got: ${action.cursorString}`);\n        }\n        return action.cursorString;\n    case ACTIVATE_EYE_DROPPER:\n        return Cursors.NONE;\n    case DEACTIVATE_EYE_DROPPER:\n        return Cursors.DEFAULT;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\n/**\n * Set the mouse cursor state to the given string\n * @param {string} cursorString The CSS cursor string.\n * @return {object} Redux action to change the cursor.\n */\nconst setCursor = function (cursorString) {\n    return {\n        type: CHANGE_CURSOR,\n        cursorString: cursorString\n    };\n};\n\nexport {\n    reducer as default,\n    setCursor\n};\n","import paper from '@scratch/paper';\nimport {getItems} from '../selection';\nimport {getActionBounds} from '../view';\nimport {BitmapModes} from '../../lib/modes';\n\nconst MIN_SCALE_FACTOR = 0.0001;\n\n/**\n * Tool to handle scaling items by pulling on the handles around the edges of the bounding\n * box when in the bounding box tool.\n */\nclass ScaleTool {\n    /**\n     * @param {Mode} mode Paint editor mode\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (mode, onUpdateImage) {\n        this.isBitmap = mode in BitmapModes;\n        this.active = false;\n        this.boundsPath = null;\n        this.pivot = null;\n        this.origPivot = null;\n        this.corner = null;\n        this.origSize = null;\n        this.origCenter = null;\n        this.itemGroup = null;\n        // Lowest item above all scale items in z index\n        this.itemToInsertBelow = null;\n        this.lastPoint = null;\n        this.onUpdateImage = onUpdateImage;\n    }\n\n    /**\n     * @param {!paper.HitResult} hitResult Data about the location of the mouse click\n     * @param {!object} boundsPath Where the boundaries of the hit item are\n     * @param {!Array.<paper.Item>} selectedItems Set of selected paper.Items\n     */\n    onMouseDown (hitResult, boundsPath, selectedItems) {\n        if (this.active) return;\n        this.active = true;\n\n        const index = hitResult.item.data.index;\n        this.pivot = boundsPath.bounds[this._getOpposingRectCornerNameByIndex(index)].clone();\n        this.origPivot = boundsPath.bounds[this._getOpposingRectCornerNameByIndex(index)].clone();\n        this.corner = boundsPath.bounds[this._getRectCornerNameByIndex(index)].clone();\n        this.selectionAnchor = boundsPath.selectionAnchor;\n        this.origSize = this.corner.subtract(this.pivot);\n        this.origCenter = boundsPath.bounds.center;\n        this.isCorner = this._isCorner(index);\n        this.centered = false;\n        this.lastSx = 1;\n        this.lastSy = 1;\n        this.boundsPath = boundsPath;\n\n        // Set itemGroup\n        // get item to insert below so that scaled items stay in same z position\n        const items = getItems({\n            match: function (item) {\n                for (const scaleItem of selectedItems) {\n                    if (!scaleItem.isBelow(item)) {\n                        return false;\n                    }\n                }\n                return true;\n            }\n        });\n        if (items.length > 0) {\n            this.itemToInsertBelow = items[0];\n        }\n\n        this.itemGroup = new paper.Group(selectedItems);\n        this.itemGroup.addChild(boundsPath);\n        this.itemGroup.insertBelow(this.itemToInsertBelow);\n        this.itemGroup.data.isHelperItem = true;\n    }\n    onMouseDrag (event) {\n        if (!this.active) return;\n        const point = event.point;\n        const bounds = getActionBounds(this.isBitmap);\n        point.x = Math.max(bounds.left, Math.min(point.x, bounds.right));\n        point.y = Math.max(bounds.top, Math.min(point.y, bounds.bottom));\n\n        if (!this.lastPoint) this.lastPoint = event.lastPoint;\n        const delta = point.subtract(this.lastPoint);\n        this.lastPoint = point;\n\n        if (event.modifiers.alt) {\n            this.centered = true;\n            this.itemGroup.position = this.origCenter;\n            this.pivot = this.origCenter;\n        } else {\n            if (this.centered) {\n                // Reset position if we were just in alt\n                this.centered = false;\n                this.itemGroup.scale(1 / this.lastSx, 1 / this.lastSy, this.pivot);\n                if (this.selectionAnchor) {\n                    this.selectionAnchor.scale(this.lastSx, this.lastSy);\n                }\n                this.lastSx = 1;\n                this.lastSy = 1;\n            }\n            this.pivot = this.origPivot;\n        }\n\n        this.corner = this.corner.add(delta);\n        let size = this.corner.subtract(this.pivot);\n        if (event.modifiers.alt) {\n            size = size.multiply(2);\n        }\n        let sx = 1.0;\n        let sy = 1.0;\n        if (Math.abs(this.origSize.x) > 0.0000001) {\n            sx = size.x / this.origSize.x;\n        }\n        if (Math.abs(this.origSize.y) > 0.0000001) {\n            sy = size.y / this.origSize.y;\n        }\n\n        const signx = sx > 0 ? 1 : -1;\n        const signy = sy > 0 ? 1 : -1;\n        if (this.isCorner && !event.modifiers.shift) {\n            sx = sy = Math.max(Math.abs(sx), Math.abs(sy));\n            sx *= signx;\n            sy *= signy;\n        }\n        sx = signx * Math.max(Math.abs(sx), MIN_SCALE_FACTOR);\n        sy = signy * Math.max(Math.abs(sy), MIN_SCALE_FACTOR);\n        this.itemGroup.scale(sx / this.lastSx, sy / this.lastSy, this.pivot);\n        if (this.selectionAnchor) {\n            this.selectionAnchor.scale(this.lastSx / sx, this.lastSy / sy);\n        }\n        this.lastSx = sx;\n        this.lastSy = sy;\n    }\n    onMouseUp () {\n        if (!this.active) return;\n        this.lastPoint = null;\n\n        this.pivot = null;\n        this.origPivot = null;\n        this.corner = null;\n        this.origSize = null;\n        this.origCenter = null;\n        this.lastSx = 1;\n        this.lastSy = 1;\n        this.centered = false;\n\n        if (!this.itemGroup) {\n            return;\n        }\n        this.boundsPath.remove();\n        this.boundsPath = null;\n        \n        // mark text items as scaled (for later use on font size calc)\n        for (let i = 0; i < this.itemGroup.children.length; i++) {\n            const child = this.itemGroup.children[i];\n            if (child.data.isPGTextItem) {\n                child.data.wasScaled = true;\n            }\n        }\n\n        if (this.itemToInsertBelow) {\n            // No increment step because itemGroup.children is getting depleted\n            for (const i = 0; i < this.itemGroup.children.length;) {\n                this.itemGroup.children[i].insertBelow(this.itemToInsertBelow);\n            }\n            this.itemToInsertBelow = null;\n        } else if (this.itemGroup.layer) {\n            this.itemGroup.layer.addChildren(this.itemGroup.children);\n        }\n        this.itemGroup.remove();\n        \n        this.onUpdateImage();\n        this.active = false;\n    }\n    _getRectCornerNameByIndex (index) {\n        switch (index) {\n        case 0:\n            return 'bottomLeft';\n        case 1:\n            return 'leftCenter';\n        case 2:\n            return 'topLeft';\n        case 3:\n            return 'topCenter';\n        case 4:\n            return 'topRight';\n        case 5:\n            return 'rightCenter';\n        case 6:\n            return 'bottomRight';\n        case 7:\n            return 'bottomCenter';\n        }\n    }\n    _getOpposingRectCornerNameByIndex (index) {\n        switch (index) {\n        case 0:\n            return 'topRight';\n        case 1:\n            return 'rightCenter';\n        case 2:\n            return 'bottomRight';\n        case 3:\n            return 'bottomCenter';\n        case 4:\n            return 'bottomLeft';\n        case 5:\n            return 'leftCenter';\n        case 6:\n            return 'topLeft';\n        case 7:\n            return 'topCenter';\n        }\n    }\n    _isCorner (index) {\n        switch (index) {\n        case 0:\n        case 2:\n        case 4:\n        case 6:\n            return true;\n        default:\n            return false;\n        }\n    }\n}\n\nexport default ScaleTool;\n","import paper from '@scratch/paper';\n\n/**\n * Tool to handle rotation when dragging the rotation handle in the bounding box tool.\n */\nclass RotateTool {\n    /**\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (onUpdateImage) {\n        this.rotItems = [];\n        this.rotGroupPivot = null;\n        this.prevRot = 90;\n        this.onUpdateImage = onUpdateImage;\n    }\n\n    /**\n     * @param {!paper.HitResult} hitResult Data about the location of the mouse click\n     * @param {!object} boundsPath Where the boundaries of the hit item are\n     * @param {!Array.<paper.Item>} selectedItems Set of selected paper.Items\n     */\n    onMouseDown (hitResult, boundsPath, selectedItems) {\n        this.rotGroupPivot = boundsPath.bounds.center;\n        for (const item of selectedItems) {\n            // Rotate only root items\n            if (item.parent instanceof paper.Layer) {\n                this.rotItems.push(item);\n            }\n        }\n        this.prevRot = 90;\n    }\n    onMouseDrag (event) {\n        let rotAngle = (event.point.subtract(this.rotGroupPivot)).angle;\n        if (event.modifiers.shift) {\n            rotAngle = Math.round(rotAngle / 45) * 45;\n        }\n\n        for (let i = 0; i < this.rotItems.length; i++) {\n            const item = this.rotItems[i];\n\n            item.rotate(rotAngle - this.prevRot, this.rotGroupPivot);\n        }\n\n        this.prevRot = rotAngle;\n    }\n    onMouseUp (event) {\n        if (event.event.button > 0) return; // only first mouse button\n\n        this.rotItems.length = 0;\n        this.rotGroupPivot = null;\n        this.prevRot = 90;\n\n        this.onUpdateImage();\n    }\n}\n\nexport default RotateTool;\n","import paper from '@scratch/paper';\nimport Modes, {BitmapModes} from '../../lib/modes';\nimport {isGroup} from '../group';\nimport {isCompoundPathItem, getRootItem} from '../item';\nimport {checkPointsClose, snapDeltaToAngle} from '../math';\nimport {getActionBounds, CENTER} from '../view';\nimport {\n    clearSelection, cloneSelection, getSelectedLeafItems, getSelectedRootItems, setItemSelection\n} from '../selection';\nimport {getDragCrosshairLayer, CROSSHAIR_FULL_OPACITY} from '../layer';\n\n/** Snap to align selection center to rotation center within this distance */\nconst SNAPPING_THRESHOLD = 4;\nconst FADE_DISTANCE = 10;\n\n/**\n * Tool to handle dragging an item to reposition it in a selection mode.\n */\nclass MoveTool {\n    /**\n     * @param {Modes} mode Paint editor mode\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     * @param {?function} switchToTextTool A callback to call to switch to the text tool\n     */\n    constructor (mode, setSelectedItems, clearSelectedItems, onUpdateImage, switchToTextTool) {\n        this.mode = mode;\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.selectedItems = null;\n        this.selectionCenter = null;\n        this.onUpdateImage = onUpdateImage;\n        this.switchToTextTool = switchToTextTool;\n        this.boundsPath = null;\n        this.firstDrag = false;\n    }\n\n    /**\n     * @param {!object} hitProperties Describes the mouse event\n     * @param {!paper.HitResult} hitProperties.hitResult Data about the location of the mouse click\n     * @param {?boolean} hitProperties.clone Whether to clone on mouse down (e.g. alt key held)\n     * @param {?boolean} hitProperties.multiselect Whether to multiselect on mouse down (e.g. shift key held)\n     * @param {?boolean} hitProperties.doubleClicked True if this is the second click in a short amout of time\n     * @param {?boolean} hitProperties.subselect True if we allow selection of subgroups, false if we should\n     *     select the whole group.\n     */\n    onMouseDown (hitProperties) {\n        let item = hitProperties.hitResult.item;\n        if (!hitProperties.subselect) {\n            const root = getRootItem(hitProperties.hitResult.item);\n            item = isCompoundPathItem(root) || isGroup(root) ? root : hitProperties.hitResult.item;\n        }\n        if (item.selected) {\n            // Double click causes all points to be selected in subselect mode. If the target is text, it\n            // enters text edit.\n            if (hitProperties.doubleClicked) {\n                if (!hitProperties.multiselect) {\n                    if (this.switchToTextTool && item instanceof paper.PointText) {\n                        this.switchToTextTool();\n                        return;\n                    }\n                    clearSelection(this.clearSelectedItems);\n                }\n                this._select(item, true /* state */, hitProperties.subselect, true /* fullySelect */);\n            } else if (hitProperties.multiselect) {\n                this._select(item, false /* state */, hitProperties.subselect);\n            }\n        } else {\n            // deselect all by default if multiselect isn't on\n            if (!hitProperties.multiselect) {\n                clearSelection(this.clearSelectedItems);\n            }\n            this._select(item, true, hitProperties.subselect);\n        }\n        if (hitProperties.clone) cloneSelection(hitProperties.subselect, this.onUpdateImage);\n\n        this.selectedItems = this.mode === Modes.RESHAPE ? getSelectedLeafItems() : getSelectedRootItems();\n        if (this.selectedItems.length === 0) {\n            return;\n        }\n\n        let selectionBounds;\n        for (const selectedItem of this.selectedItems) {\n            if (selectionBounds) {\n                selectionBounds = selectionBounds.unite(selectedItem.bounds);\n            } else {\n                selectionBounds = selectedItem.bounds;\n            }\n        }\n        this.selectionCenter = selectionBounds.center;\n\n        if (this.boundsPath) {\n            this.selectedItems.push(this.boundsPath);\n        }\n\n        this.firstDrag = true;\n    }\n    setBoundsPath (boundsPath) {\n        this.boundsPath = boundsPath;\n    }\n    /**\n     * Sets the selection state of an item.\n     * @param {!paper.Item} item Item to select or deselect\n     * @param {?boolean} state True if item should be selected, false if deselected\n     * @param {?boolean} subselect True if a subset of all points in an item are allowed to be\n     *     selected, false if items must be selected all or nothing.\n     * @param {?boolean} fullySelect True if in addition to the item being selected, all of its\n     *     control points should be selected. False if the item should be selected but not its\n     *     points. Only relevant when subselect is true.\n     */\n    _select (item, state, subselect, fullySelect) {\n        if (subselect) {\n            item.selected = false;\n            if (fullySelect) {\n                item.fullySelected = state;\n            } else {\n                item.selected = state;\n            }\n        } else {\n            setItemSelection(item, state);\n        }\n        this.setSelectedItems();\n    }\n    onMouseDrag (event) {\n        const point = event.point;\n        const actionBounds = getActionBounds(this.mode in BitmapModes);\n\n        point.x = Math.max(actionBounds.left, Math.min(point.x, actionBounds.right));\n        point.y = Math.max(actionBounds.top, Math.min(point.y, actionBounds.bottom));\n\n        const dragVector = point.subtract(event.downPoint);\n        let snapVector;\n\n        // Snapping to align center. Not in reshape mode, because reshape doesn't show center crosshair\n        if (!event.modifiers.shift && this.mode !== Modes.RESHAPE) {\n            if (checkPointsClose(\n                this.selectionCenter.add(dragVector),\n                CENTER,\n                SNAPPING_THRESHOLD / paper.view.zoom /* threshold */)) {\n\n                snapVector = CENTER.subtract(this.selectionCenter);\n            }\n        }\n        if (this.selectedItems.length === 0) {\n            return;\n        }\n\n        let bounds;\n        for (const item of this.selectedItems) {\n            // add the position of the item before the drag started\n            // for later use in the snap calculation\n            if (!item.data.origPos) {\n                item.data.origPos = item.position;\n            }\n\n            if (snapVector) {\n                item.position = item.data.origPos.add(snapVector);\n            } else if (event.modifiers.shift) {\n                item.position = item.data.origPos.add(snapDeltaToAngle(dragVector, Math.PI / 4));\n            } else {\n                item.position = item.data.origPos.add(dragVector);\n            }\n\n            if (bounds) {\n                bounds = bounds.unite(item.bounds);\n            } else {\n                bounds = item.bounds;\n            }\n        }\n\n        if (this.firstDrag) {\n            // Show the center crosshair above the selected item while dragging.\n            getDragCrosshairLayer().visible = true;\n            this.firstDrag = false;\n        }\n\n        // The rotation center crosshair should be opaque over the entire selection bounding box, and fade out to\n        // totally transparent outside the selection bounding box.\n        let opacityMultiplier = 1;\n        const newCenter = this.selectionCenter.add(dragVector);\n        if ((CENTER.y < bounds.top && CENTER.x < bounds.left) ||\n            (CENTER.y > bounds.bottom && CENTER.x < bounds.left) ||\n            (CENTER.y < bounds.top && CENTER.x > bounds.right) ||\n            (CENTER.y > bounds.bottom && CENTER.x > bounds.right)) {\n\n            // rotation center is to one of the 4 corners of the selection bounding box\n            const distX = Math.max(CENTER.x - bounds.right, bounds.left - CENTER.x);\n            const distY = Math.max(CENTER.y - bounds.bottom, bounds.top - CENTER.y);\n            const dist = Math.sqrt((distX * distX) + (distY * distY));\n            opacityMultiplier =\n                Math.max(0, (1 - (dist / (FADE_DISTANCE / paper.view.zoom))));\n        } else if (CENTER.y < bounds.top || CENTER.y > bounds.bottom) {\n            // rotation center is above or below the selection bounding box\n            opacityMultiplier = Math.max(0,\n                (1 - ((Math.abs(CENTER.y - newCenter.y) - (bounds.height / 2)) / (FADE_DISTANCE / paper.view.zoom))));\n        } else if (CENTER.x < bounds.left || CENTER.x > bounds.right) {\n            // rotation center is left or right of the selection bounding box\n            opacityMultiplier = Math.max(0,\n                (1 - ((Math.abs(CENTER.x - newCenter.x) - (bounds.width / 2)) / (FADE_DISTANCE / paper.view.zoom))));\n        } // else the rotation center is within selection bounds, always show drag crosshair at full opacity\n        getDragCrosshairLayer().opacity = CROSSHAIR_FULL_OPACITY * opacityMultiplier;\n    }\n    onMouseUp () {\n        this.firstDrag = false;\n        let moved = false;\n        // resetting the items origin point for the next usage\n        for (const item of this.selectedItems) {\n            if (item.data.origPos) {\n                if (!item.position.equals(item.data.origPos)) moved = true;\n                delete item.data.origPos;\n            }\n        }\n        this.selectedItems = null;\n        this.selectionCenter = null;\n\n        if (moved) {\n            this.onUpdateImage();\n        }\n\n        // Hide the crosshair we showed earlier.\n        getDragCrosshairLayer().visible = false;\n    }\n}\n\nexport default MoveTool;\n","import paper from '@scratch/paper';\nimport keyMirror from 'keymirror';\n\nimport {getSelectedRootItems} from '../selection';\nimport {getGuideColor, removeBoundsPath, removeBoundsHandles} from '../guides';\nimport {getGuideLayer, setGuideItem} from '../layer';\n\nimport Cursors from '../../lib/cursors';\nimport ScaleTool from './scale-tool';\nimport RotateTool from './rotate-tool';\nimport MoveTool from './move-tool';\n\nconst SELECTION_ANCHOR_SIZE = 12;\n/** SVG for the rotation icon on the bounding box */\nconst ARROW_PATH = 'M19.28,1.09C19.28.28,19,0,18.2,0c-1.67,0-3.34,0-5,0-.34,0-.88.24-1,.47a1.4,1.4,' +\n    '0,0,0,.36,1.08,15.27,15.27,0,0,0,1.46,1.36A6.4,6.4,0,0,1,6.52,4,5.85,5.85,0,0,1,5.24,3,15.27,15.27,' +\n    '0,0,0,6.7,1.61,1.4,1.4,0,0,0,7.06.54C7,.3,6.44.07,6.1.06c-1.67,0-3.34,0-5,0C.28,0,0,.31,0,1.12c0,1.67,' +\n    '0,3.34,0,5a1.23,1.23,0,0,0,.49,1,1.22,1.22,0,0,0,1-.31A14.38,14.38,0,0,0,2.84,5.26l.73.62a9.45,9.45,' +\n    '0,0,0,7.34,2,9.45,9.45,0,0,0,4.82-2.05l.73-.62a14.38,14.38,0,0,0,1.29,1.51,1.22,1.22,' +\n    '0,0,0,1,.31,1.23,1.23,0,0,0,.49-1C19.31,4.43,19.29,2.76,19.28,1.09Z';\n/** Modes of the bounding box tool, which can do many things depending on how it's used. */\nconst BoundingBoxModes = keyMirror({\n    SCALE: null,\n    ROTATE: null,\n    MOVE: null\n});\n\n/**\n * Tool that handles transforming the selection and drawing a bounding box with handles.\n * On mouse down, the type of function (move, scale, rotate) is determined based on what is clicked\n * (scale handle, rotate handle, the object itself). This determines the mode of the tool, which then\n * delegates actions to the MoveTool, RotateTool or ScaleTool accordingly.\n * @param {!function} onUpdateImage A callback to call when the image visibly changes\n */\nclass BoundingBoxTool {\n    /**\n     * @param {Modes} mode Paint editor mode\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     * @param {?function} switchToTextTool A callback to call to switch to the text tool\n     */\n    constructor (mode, setSelectedItems, clearSelectedItems, setCursor, onUpdateImage, switchToTextTool) {\n        this.dispatchSetCursor = setCursor;\n        this.onUpdateImage = onUpdateImage;\n        this.mode = null;\n        this.boundsPath = null;\n        this.boundsScaleHandles = [];\n        this.boundsRotHandles = [];\n        this._modeMap = {};\n        this._modeMap[BoundingBoxModes.SCALE] = new ScaleTool(mode, onUpdateImage);\n        this._modeMap[BoundingBoxModes.ROTATE] = new RotateTool(onUpdateImage);\n        this._modeMap[BoundingBoxModes.MOVE] =\n            new MoveTool(mode, setSelectedItems, clearSelectedItems, onUpdateImage, switchToTextTool);\n        this._currentCursor = null;\n    }\n\n    /**\n     * Should be called if the selection changes to update the bounds of the bounding box.\n     * @param {?Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        if (selectedItems && selectedItems.length) {\n            this.setSelectionBounds();\n        } else {\n            this.removeBoundsPath();\n        }\n    }\n\n    /**\n     * @param {!MouseEvent} event The mouse event\n     * @param {boolean} clone Whether to clone on mouse down (e.g. alt key held)\n     * @param {boolean} multiselect Whether to multiselect on mouse down (e.g. shift key held)\n     * @param {?boolean} doubleClicked True if this is the second click in a short amout of time\n     * @param {paper.hitOptions} hitOptions The options with which to detect whether mouse down has hit\n     *     anything editable\n     * @return {boolean} True if there was a hit, false otherwise\n     */\n    onMouseDown (event, clone, multiselect, doubleClicked, hitOptions) {\n        if (event.event.button > 0) return; // only first mouse button\n        const {hitResult, mode} = this._determineMode(event, multiselect, hitOptions);\n        if (!hitResult) {\n            if (!multiselect) {\n                this.removeBoundsPath();\n            }\n            return false;\n        }\n        this.mode = mode;\n\n        const hitProperties = {\n            hitResult: hitResult,\n            clone: clone,\n            multiselect: multiselect,\n            doubleClicked: doubleClicked\n        };\n        if (this.mode === BoundingBoxModes.MOVE) {\n            this._modeMap[this.mode].onMouseDown(hitProperties);\n            this.removeBoundsHandles();\n        } else if (this.mode === BoundingBoxModes.SCALE) {\n            this._modeMap[this.mode].onMouseDown(hitResult, this.boundsPath, getSelectedRootItems());\n            this.removeBoundsHandles();\n        } else if (this.mode === BoundingBoxModes.ROTATE) {\n            this.setCursor(Cursors.GRABBING);\n            this._modeMap[this.mode].onMouseDown(hitResult, this.boundsPath, getSelectedRootItems());\n            // While transforming, don't show bounds\n            this.removeBoundsPath();\n        }\n\n        return true;\n    }\n    onMouseMove (event, hitOptions) {\n        this._updateCursor(event, hitOptions);\n    }\n    _updateCursor (event, hitOptions) {\n        const {mode, hitResult} = this._determineMode(event, false, hitOptions);\n        if (hitResult) {\n            if (mode === BoundingBoxModes.MOVE) {\n                this.setCursor(Cursors.DEFAULT);\n            } else if (mode === BoundingBoxModes.ROTATE) {\n                this.setCursor(Cursors.GRAB);\n            } else if (mode === BoundingBoxModes.SCALE) {\n                this.setSelectionBounds();\n                if (this._impreciseEqual(hitResult.item.position.x, this.boundsPath.position.x)) {\n                    this.setCursor(Cursors.RESIZE_NS);\n                } else if (this._impreciseEqual(hitResult.item.position.y, this.boundsPath.position.y)) {\n                    this.setCursor(Cursors.RESIZE_EW);\n                } else if (\n                    hitResult.item.position.equals(this.boundsPath.bounds.bottomLeft) ||\n                    hitResult.item.position.equals(this.boundsPath.bounds.topRight)\n                ) {\n                    this.setCursor(Cursors.RESIZE_NESW);\n                } else {\n                    this.setCursor(Cursors.RESIZE_NWSE);\n                }\n            }\n        } else {\n            this.setCursor(Cursors.DEFAULT);\n        }\n    }\n    _impreciseEqual (a, b) {\n        // This is the same math paper.js uses to check if two numbers are \"equal\".\n        return Math.abs(a - b) < 1e-8;\n    }\n    _determineMode (event, multiselect, hitOptions) {\n        const hitResults = paper.project.hitTestAll(event.point, hitOptions);\n\n        let mode;\n\n        // Prefer scale to trigger over rotate, and scale and rotate to trigger over other hits\n        let hitResult = hitResults[0];\n        for (let i = 0; i < hitResults.length; i++) {\n            if (hitResults[i].item.data && hitResults[i].item.data.isScaleHandle) {\n                hitResult = hitResults[i];\n                mode = BoundingBoxModes.SCALE;\n                break;\n            } else if (hitResults[i].item.data && hitResults[i].item.data.isRotHandle) {\n                hitResult = hitResults[i];\n                mode = BoundingBoxModes.ROTATE;\n            }\n        }\n        if (!mode) {\n            mode = BoundingBoxModes.MOVE;\n        }\n\n        return {mode, hitResult};\n    }\n    onMouseDrag (event) {\n        if (event.event.button > 0 || !this.mode) return; // only first mouse button\n        this._modeMap[this.mode].onMouseDrag(event);\n\n        // Set the cursor for moving a sprite once the drag has actually started (i.e. the mouse has been moved while\n        // pressed), so that the mouse doesn't \"flash\" to the grabbing cursor every time a sprite is clicked.\n        if (this.mode === BoundingBoxModes.MOVE) {\n            this.setCursor(Cursors.GRABBING);\n        }\n    }\n    onMouseUp (event, hitOptions) {\n        if (event.event.button > 0 || !this.mode) return; // only first mouse button\n        this._modeMap[this.mode].onMouseUp(event);\n\n        // After transforming, show bounds again\n        this.setSelectionBounds();\n        this.mode = null;\n        this._updateCursor(event, hitOptions);\n    }\n    setSelectionBounds () {\n        this.removeBoundsPath();\n\n        const items = getSelectedRootItems();\n        if (items.length <= 0) return;\n\n        let rect = null;\n        for (const item of items) {\n            if (item instanceof paper.Raster && item.loaded === false) {\n                item.onLoad = this.setSelectionBounds.bind(this);\n                return;\n            }\n\n            if (rect) {\n                rect = rect.unite(item.bounds);\n            } else {\n                rect = item.bounds;\n            }\n        }\n\n        if (!this.boundsPath) {\n            this.boundsPath = new paper.Group();\n            this.boundsRect = paper.Path.Rectangle(rect);\n            this.boundsRect.curves[0].divideAtTime(0.5);\n            this.boundsRect.curves[2].divideAtTime(0.5);\n            this.boundsRect.curves[4].divideAtTime(0.5);\n            this.boundsRect.curves[6].divideAtTime(0.5);\n            this.boundsPath.addChild(this.boundsRect);\n\n            const vRect = new paper.Path.Rectangle({\n                point: [-1, -6],\n                size: [2, 12],\n                radius: 1,\n                insert: false\n            });\n            const hRect = new paper.Path.Rectangle({\n                point: [-6, -1],\n                size: [12, 2],\n                radius: 1,\n                insert: false\n            });\n            const anchorIcon = vRect.unite(hRect);\n\n            this.boundsPath.addChild(anchorIcon);\n            this.boundsPath.selectionAnchor = anchorIcon;\n            this._modeMap[BoundingBoxModes.MOVE].setBoundsPath(this.boundsPath);\n        }\n        setGuideItem(this.boundsPath);\n        this.boundsPath.data.isSelectionBound = true;\n        this.boundsPath.data.isHelperItem = true;\n        this.boundsPath.fillColor = null;\n        this.boundsPath.parent = getGuideLayer();\n        this.boundsPath.strokeWidth = 1 / paper.view.zoom;\n        this.boundsPath.strokeColor = getGuideColor();\n        this.boundsPath.selectionAnchor.scale(\n            SELECTION_ANCHOR_SIZE / paper.view.zoom / this.boundsPath.selectionAnchor.bounds.width);\n        this.boundsPath.selectionAnchor.position = rect.center;\n\n        // Make a template to copy\n        const boundsScaleCircleShadow =\n            new paper.Path.Circle({\n                center: new paper.Point(0, 0),\n                radius: 5.5 / paper.view.zoom,\n                fillColor: 'black',\n                opacity: .12,\n                data: {\n                    isHelperItem: true,\n                    noSelect: true,\n                    noHover: true\n                }\n            });\n        const boundsScaleCircle =\n            new paper.Path.Circle({\n                center: new paper.Point(0, 0),\n                radius: 4 / paper.view.zoom,\n                fillColor: getGuideColor(),\n                data: {\n                    isScaleHandle: true,\n                    isHelperItem: true,\n                    noSelect: true,\n                    noHover: true\n                }\n            });\n        const boundsScaleHandle = new paper.Group([boundsScaleCircleShadow, boundsScaleCircle]);\n        boundsScaleHandle.parent = getGuideLayer();\n\n        for (let index = 0; index < this.boundsRect.segments.length; index++) {\n            const segment = this.boundsRect.segments[index];\n\n            if (index === 7) {\n                const offset = new paper.Point(0, 20);\n\n                const arrows = new paper.Path(ARROW_PATH);\n                arrows.translate(segment.point.add(offset).add(-10.5, -5));\n\n                const line = new paper.Path.Rectangle(\n                    segment.point.add(offset).subtract(1, 0),\n                    segment.point);\n\n                const rotHandle = arrows.unite(line);\n                line.remove();\n                arrows.remove();\n                rotHandle.scale(1 / paper.view.zoom, segment.point);\n                rotHandle.data = {\n                    offset: offset,\n                    isRotHandle: true,\n                    isHelperItem: true,\n                    noSelect: true,\n                    noHover: true\n                };\n                rotHandle.fillColor = getGuideColor();\n                rotHandle.parent = getGuideLayer();\n                this.boundsRotHandles[index] = rotHandle;\n            }\n\n            this.boundsScaleHandles[index] = boundsScaleHandle.clone();\n            this.boundsScaleHandles[index].position = segment.point;\n            for (const child of this.boundsScaleHandles[index].children) {\n                child.data.index = index;\n            }\n            this.boundsScaleHandles[index].data = {\n                index: index,\n                isScaleHandle: true,\n                isHelperItem: true,\n                noSelect: true,\n                noHover: true\n            };\n        }\n        // Remove the template\n        boundsScaleHandle.remove();\n    }\n    removeBoundsPath () {\n        removeBoundsPath();\n        this.boundsPath = null;\n        this.boundsRect = null;\n        this.boundsScaleHandles.length = 0;\n        this.boundsRotHandles.length = 0;\n    }\n    removeBoundsHandles () {\n        removeBoundsHandles();\n        this.boundsScaleHandles.length = 0;\n        this.boundsRotHandles.length = 0;\n    }\n    deactivateTool () {\n        this.removeBoundsPath();\n        this.setCursor(Cursors.DEFAULT);\n    }\n\n    setCursor (cursorString) {\n        if (this._currentCursor !== cursorString) {\n            this.dispatchSetCursor(cursorString);\n            this._currentCursor = cursorString;\n        }\n    }\n}\n\nexport default BoundingBoxTool;\n","import paper from '@scratch/paper';\nimport {getSelectedRootItems} from '../selection';\nimport {getActionBounds} from '../view';\nimport {BitmapModes} from '../../lib/modes';\n\nconst NUDGE_MORE_MULTIPLIER = 15;\n\n/**\n * Tool containing handlers for arrow key events for nudging the selection.\n * Note that this tool is built for selection mode, not reshape mode.\n */\nclass NudgeTool {\n    /**\n     * @param {Mode} mode Paint editor mode\n     * @param {function} boundingBoxTool to control the bounding box\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (mode, boundingBoxTool, onUpdateImage) {\n        this.boundingBoxTool = boundingBoxTool;\n        this.onUpdateImage = onUpdateImage;\n        this.boundingBoxTool.isBitmap = mode in BitmapModes;\n    }\n    onKeyDown (event) {\n        if (event.event.target instanceof HTMLInputElement) {\n            // Ignore nudge if a text input field is focused\n            return;\n        }\n\n        let nudgeAmount = 1 / paper.view.zoom;\n        if (event.modifiers.shift) nudgeAmount *= NUDGE_MORE_MULTIPLIER;\n\n        const selected = getSelectedRootItems();\n        if (selected.length === 0) return;\n        \n        // Get bounds. Don't let item bounds go out of bounds.\n        let rect;\n        for (const item of selected) {\n            if (rect) {\n                rect = rect.unite(item.bounds);\n            } else {\n                rect = item.bounds;\n            }\n        }\n        const bounds = getActionBounds(this.boundingBoxTool.isBitmap);\n        const bottom = bounds.bottom - rect.top - 1;\n        const top = bounds.top - rect.bottom + 1;\n        const left = bounds.left - rect.right + 1;\n        const right = bounds.right - rect.left - 1;\n\n        let translation;\n        if (event.key === 'up') {\n            translation = new paper.Point(0, Math.min(bottom, Math.max(-nudgeAmount, top)));\n        } else if (event.key === 'down') {\n            translation = new paper.Point(0, Math.max(top, Math.min(nudgeAmount, bottom)));\n        } else if (event.key === 'left') {\n            translation = new paper.Point(Math.min(right, Math.max(-nudgeAmount, left)), 0);\n        } else if (event.key === 'right') {\n            translation = new paper.Point(Math.max(left, Math.min(nudgeAmount, right)), 0);\n        }\n\n        if (translation) {\n            for (const item of selected) {\n                item.translate(translation);\n            }\n            this.boundingBoxTool.setSelectionBounds();\n            event.preventDefault();\n        }\n    }\n    onKeyUp (event) {\n        const selected = getSelectedRootItems();\n        if (selected.length === 0) return;\n\n        if (event.key === 'up' || event.key === 'down' || event.key === 'left' || event.key === 'right') {\n            this.onUpdateImage();\n        }\n    }\n}\n\nexport default NudgeTool;\n","import paper from '@scratch/paper';\nimport Modes from '../../lib/modes';\nimport {styleShape} from '../style-path';\nimport {commitOvalToBitmap} from '../bitmap';\nimport {getRaster} from '../layer';\nimport {clearSelection} from '../selection';\nimport {getSquareDimensions} from '../math';\nimport BoundingBoxTool from '../selection-tools/bounding-box-tool';\nimport NudgeTool from '../selection-tools/nudge-tool';\n\n/**\n * Tool for drawing ovals.\n */\nclass OvalTool extends paper.Tool {\n    static get TOLERANCE () {\n        return 2;\n    }\n    /**\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setSelectedItems, clearSelectedItems, setCursor, onUpdateImage) {\n        super();\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.onUpdateImage = onUpdateImage;\n        this.boundingBoxTool = new BoundingBoxTool(\n            Modes.BIT_OVAL,\n            setSelectedItems,\n            clearSelectedItems,\n            setCursor,\n            onUpdateImage\n        );\n        const nudgeTool = new NudgeTool(Modes.BIT_OVAL, this.boundingBoxTool, onUpdateImage);\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseUp = this.handleMouseUp;\n        this.onKeyUp = nudgeTool.onKeyUp;\n        this.onKeyDown = nudgeTool.onKeyDown;\n\n        this.oval = null;\n        this.color = null;\n        this.active = false;\n    }\n    getHitOptions () {\n        return {\n            segments: false,\n            stroke: true,\n            curves: false,\n            fill: true,\n            guide: false,\n            match: hitResult =>\n                (hitResult.item.data && (hitResult.item.data.isScaleHandle || hitResult.item.data.isRotHandle)) ||\n                hitResult.item.selected, // Allow hits on bounding box and selected only\n            tolerance: OvalTool.TOLERANCE / paper.view.zoom\n        };\n    }\n    /**\n     * Should be called if the selection changes to update the bounds of the bounding box.\n     * @param {Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        this.boundingBoxTool.onSelectionChanged(selectedItems);\n        if ((!this.oval || !this.oval.isInserted()) &&\n                selectedItems && selectedItems.length === 1 && selectedItems[0].shape === 'ellipse') {\n            // Infer that an undo occurred and get back the active oval\n            this.oval = selectedItems[0];\n            if (this.oval.data.zoomLevel !== paper.view.zoom) {\n                this.oval.strokeWidth = this.oval.strokeWidth / this.oval.data.zoomLevel * paper.view.zoom;\n                this.oval.data.zoomLevel = paper.view.zoom;\n                this.thickness = this.oval.strokeWidth;\n            }\n            this.filled = this.oval.strokeWidth === 0;\n            // We don't need to set our color from the selected oval's color because the color state reducers will\n            // do that for us every time the selection changes.\n        } else if (this.oval && this.oval.isInserted() && !this.oval.selected) {\n            // Oval got deselected\n            this.commitOval();\n        }\n    }\n    styleOval () {\n        styleShape(this.oval, {\n            fillColor: this.filled ? this.color : null,\n            strokeColor: this.filled ? null : this.color,\n            strokeWidth: this.filled ? 0 : this.thickness\n        });\n    }\n    setColor (color) {\n        this.color = color;\n        if (this.oval) this.styleOval();\n    }\n    setFilled (filled) {\n        if (this.filled === filled) return;\n        this.filled = filled;\n        if (this.oval && this.oval.isInserted()) {\n            this.styleOval();\n            this.onUpdateImage();\n        }\n    }\n    setThickness (thickness) {\n        if (this.thickness === thickness * paper.view.zoom) return;\n        this.thickness = thickness * paper.view.zoom;\n        if (this.oval && this.oval.isInserted() && !this.filled) {\n            this.oval.strokeWidth = this.thickness;\n        }\n        if (this.oval && this.oval.isInserted()) {\n            this.oval.data.zoomLevel = paper.view.zoom;\n            this.onUpdateImage();\n        }\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        if (this.boundingBoxTool.onMouseDown(\n            event, false /* clone */, false /* multiselect */, false /* doubleClicked */, this.getHitOptions())) {\n            this.isBoundingBoxMode = true;\n        } else {\n            this.isBoundingBoxMode = false;\n            clearSelection(this.clearSelectedItems);\n            this.commitOval();\n            this.oval = new paper.Shape.Ellipse({\n                point: event.downPoint,\n                size: 0,\n                strokeScaling: false\n            });\n            this.styleOval();\n            this.oval.data = {zoomLevel: paper.view.zoom};\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseDrag(event);\n            return;\n        }\n\n        const downPoint = new paper.Point(event.downPoint.x, event.downPoint.y);\n        const point = new paper.Point(event.point.x, event.point.y);\n        const squareDimensions = getSquareDimensions(event.downPoint, event.point);\n        if (event.modifiers.shift) {\n            this.oval.size = squareDimensions.size.abs();\n        } else {\n            this.oval.size = downPoint.subtract(point);\n        }\n\n        if (event.modifiers.alt) {\n            this.oval.position = downPoint;\n        } else if (event.modifiers.shift) {\n            this.oval.position = squareDimensions.position;\n        } else {\n            this.oval.position = downPoint.subtract(this.oval.size.multiply(0.5));\n        }\n        this.styleOval();\n    }\n    handleMouseMove (event) {\n        this.boundingBoxTool.onMouseMove(event, this.getHitOptions());\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseUp(event);\n            this.isBoundingBoxMode = null;\n            return;\n        }\n\n        if (this.oval) {\n            if (Math.abs(this.oval.size.width * this.oval.size.height) < OvalTool.TOLERANCE / paper.view.zoom) {\n                // Tiny oval created unintentionally?\n                this.oval.remove();\n                this.oval = null;\n            } else {\n                // Hit testing does not work correctly unless the width and height are positive\n                this.oval.size = new paper.Point(Math.abs(this.oval.size.width), Math.abs(this.oval.size.height));\n                this.oval.selected = true;\n                this.styleOval();\n                this.setSelectedItems();\n            }\n        }\n        this.active = false;\n        this.onUpdateImage();\n    }\n    commitOval () {\n        if (!this.oval || !this.oval.isInserted()) return;\n\n        commitOvalToBitmap(this.oval, getRaster());\n        this.oval.remove();\n        this.oval = null;\n    }\n    deactivateTool () {\n        this.commitOval();\n        this.boundingBoxTool.deactivateTool();\n    }\n}\n\nexport default OvalTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport ovalIcon from './oval.svg';\n\nconst BitOvalComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.oval}\n        imgSrc={ovalIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitOvalComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitOvalComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport ColorStyleProptype from '../lib/color-style-proptype';\nimport {MIXED} from '../helper/style-path';\n\nimport {changeFillColor, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {setCursor} from '../reducers/cursor';\n\nimport {clearSelection, getSelectedLeafItems} from '../helper/selection';\nimport OvalTool from '../helper/bit-tools/oval-tool';\nimport OvalModeComponent from '../components/bit-oval-mode/bit-oval-mode.jsx';\n\nclass BitOvalMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isOvalModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool) {\n            if (nextProps.color !== this.props.color) {\n                this.tool.setColor(nextProps.color);\n            }\n            if (nextProps.selectedItems !== this.props.selectedItems) {\n                this.tool.onSelectionChanged(nextProps.selectedItems);\n            }\n            if (nextProps.filled !== this.props.filled) {\n                this.tool.setFilled(nextProps.filled);\n            }\n            if (nextProps.thickness !== this.props.thickness ||\n                    nextProps.zoom !== this.props.zoom) {\n                this.tool.setThickness(nextProps.thickness);\n            }\n        }\n\n        if (nextProps.isOvalModeActive && !this.props.isOvalModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isOvalModeActive && this.props.isOvalModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isOvalModeActive !== this.props.isOvalModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        // Force the default brush color if fill is MIXED or transparent\n        const fillColorPresent = this.props.color.primary !== MIXED && this.props.color.primary !== null;\n        if (!fillColorPresent) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n        }\n        this.tool = new OvalTool(\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.setCursor,\n            this.props.onUpdateImage\n        );\n        this.tool.setColor(this.props.color);\n        this.tool.setFilled(this.props.filled);\n        this.tool.setThickness(this.props.thickness);\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <OvalModeComponent\n                isSelected={this.props.isOvalModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBitOvalMode.propTypes = {\n    clearSelectedItems: PropTypes.func.isRequired,\n    color: ColorStyleProptype,\n    filled: PropTypes.bool,\n    handleMouseDown: PropTypes.func.isRequired,\n    isOvalModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    selectedItems: PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)),\n    setCursor: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired,\n    thickness: PropTypes.number.isRequired,\n    zoom: PropTypes.number.isRequired\n};\n\nconst mapStateToProps = state => ({\n    color: state.scratchPaint.color.fillColor,\n    filled: state.scratchPaint.fillBitmapShapes,\n    isOvalModeActive: state.scratchPaint.mode === Modes.BIT_OVAL,\n    selectedItems: state.scratchPaint.selectedItems,\n    thickness: state.scratchPaint.bitBrushSize,\n    zoom: state.scratchPaint.viewBounds.scaling.x\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    setCursor: cursorString => {\n        dispatch(setCursor(cursorString));\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), true /* bitmapMode */));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BIT_OVAL));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BitOvalMode);\n","import paper from '@scratch/paper';\nimport Modes from '../../lib/modes';\nimport {styleShape} from '../../helper/style-path';\nimport {commitRectToBitmap} from '../bitmap';\nimport {getRaster} from '../layer';\nimport {clearSelection} from '../selection';\nimport {getSquareDimensions} from '../math';\nimport BoundingBoxTool from '../selection-tools/bounding-box-tool';\nimport NudgeTool from '../selection-tools/nudge-tool';\n\n/**\n * Tool for drawing rects.\n */\nclass RectTool extends paper.Tool {\n    static get TOLERANCE () {\n        return 2;\n    }\n    /**\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setSelectedItems, clearSelectedItems, setCursor, onUpdateImage) {\n        super();\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.onUpdateImage = onUpdateImage;\n        this.boundingBoxTool = new BoundingBoxTool(\n            Modes.BIT_RECT,\n            setSelectedItems,\n            clearSelectedItems,\n            setCursor,\n            onUpdateImage\n        );\n        const nudgeTool = new NudgeTool(Modes.BIT_RECT, this.boundingBoxTool, onUpdateImage);\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseUp = this.handleMouseUp;\n        this.onKeyUp = nudgeTool.onKeyUp;\n        this.onKeyDown = nudgeTool.onKeyDown;\n\n        this.rect = null;\n        this.color = null;\n        this.active = false;\n    }\n    getHitOptions () {\n        return {\n            segments: false,\n            stroke: true,\n            curves: false,\n            fill: true,\n            guide: false,\n            match: hitResult =>\n                (hitResult.item.data && (hitResult.item.data.isScaleHandle || hitResult.item.data.isRotHandle)) ||\n                hitResult.item.selected, // Allow hits on bounding box and selected only\n            tolerance: RectTool.TOLERANCE / paper.view.zoom\n        };\n    }\n    /**\n     * Should be called if the selection changes to update the bounds of the bounding box.\n     * @param {Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        this.boundingBoxTool.onSelectionChanged(selectedItems);\n        if ((!this.rect || !this.rect.isInserted()) &&\n                selectedItems && selectedItems.length === 1 && selectedItems[0].shape === 'rectangle') {\n            // Infer that an undo occurred and get back the active rect\n            this.rect = selectedItems[0];\n            if (this.rect.data.zoomLevel !== paper.view.zoom) {\n                this.rect.strokeWidth = this.rect.strokeWidth / this.rect.data.zoomLevel * paper.view.zoom;\n                this.rect.data.zoomLevel = paper.view.zoom;\n                this.thickness = this.rect.strokeWidth;\n            }\n            this.filled = this.rect.strokeWidth === 0;\n        } else if (this.rect && this.rect.isInserted() && !this.rect.selected) {\n            // Rectangle got deselected\n            this.commitRect();\n        }\n    }\n    styleRect () {\n        styleShape(this.rect, {\n            fillColor: this.filled ? this.color : null,\n            strokeColor: this.filled ? null : this.color,\n            strokeWidth: this.filled ? 0 : this.thickness\n        });\n    }\n    setColor (color) {\n        this.color = color;\n        if (this.rect) this.styleRect();\n    }\n    setFilled (filled) {\n        if (this.filled === filled) return;\n        this.filled = filled;\n        if (this.rect && this.rect.isInserted()) {\n            this.styleRect();\n            this.onUpdateImage();\n        }\n    }\n    setThickness (thickness) {\n        if (this.thickness === thickness * paper.view.zoom) return;\n        this.thickness = thickness * paper.view.zoom;\n        if (this.rect && this.rect.isInserted() && !this.filled) {\n            this.rect.strokeWidth = this.thickness;\n        }\n        if (this.rect && this.rect.isInserted()) {\n            this.rect.data.zoomLevel = paper.view.zoom;\n            this.onUpdateImage();\n        }\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        if (this.boundingBoxTool.onMouseDown(\n            event, false /* clone */, false /* multiselect */, false /* doubleClicked */, this.getHitOptions())) {\n            this.isBoundingBoxMode = true;\n        } else {\n            this.isBoundingBoxMode = false;\n            clearSelection(this.clearSelectedItems);\n            this.commitRect();\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseDrag(event);\n            return;\n        }\n\n        const dimensions = event.point.subtract(event.downPoint);\n        const baseRect = new paper.Rectangle(event.downPoint, event.point);\n        const squareDimensions = getSquareDimensions(event.downPoint, event.point);\n        if (event.modifiers.shift) {\n            baseRect.size = squareDimensions.size.abs();\n        }\n\n        if (this.rect) this.rect.remove();\n        this.rect = new paper.Shape.Rectangle(baseRect);\n        this.rect.strokeJoin = 'round';\n        this.rect.strokeScaling = false;\n        this.rect.data = {zoomLevel: paper.view.zoom};\n        this.styleRect();\n\n        if (event.modifiers.alt) {\n            this.rect.position = event.downPoint;\n        } else if (event.modifiers.shift) {\n            this.rect.position = squareDimensions.position;\n        } else {\n            this.rect.position = event.downPoint.add(dimensions.multiply(.5));\n        }\n    }\n    handleMouseMove (event) {\n        this.boundingBoxTool.onMouseMove(event, this.getHitOptions());\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseUp(event);\n            this.isBoundingBoxMode = null;\n            return;\n        }\n\n        if (this.rect) {\n            if (Math.abs(this.rect.size.width * this.rect.size.height) < RectTool.TOLERANCE / paper.view.zoom) {\n                // Tiny shape created unintentionally?\n                this.rect.remove();\n                this.rect = null;\n            } else {\n                // Hit testing does not work correctly unless the width and height are positive\n                this.rect.size = new paper.Point(Math.abs(this.rect.size.width), Math.abs(this.rect.size.height));\n                this.rect.selected = true;\n                this.styleRect();\n                this.setSelectedItems();\n            }\n        }\n        this.active = false;\n        this.onUpdateImage();\n    }\n    commitRect () {\n        if (!this.rect || !this.rect.isInserted()) return;\n\n        commitRectToBitmap(this.rect, getRaster());\n\n        this.rect.remove();\n        this.rect = null;\n    }\n    deactivateTool () {\n        this.commitRect();\n        this.boundingBoxTool.deactivateTool();\n    }\n}\n\nexport default RectTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport rectIcon from './rectangle.svg';\n\nconst BitRectComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.rect}\n        imgSrc={rectIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitRectComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitRectComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport ColorStyleProptype from '../lib/color-style-proptype';\nimport {MIXED} from '../helper/style-path';\n\nimport {changeFillColor, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {setCursor} from '../reducers/cursor';\n\nimport {clearSelection, getSelectedLeafItems} from '../helper/selection';\nimport RectTool from '../helper/bit-tools/rect-tool';\nimport RectModeComponent from '../components/bit-rect-mode/bit-rect-mode.jsx';\n\nclass BitRectMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isRectModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool) {\n            if (nextProps.color !== this.props.color) {\n                this.tool.setColor(nextProps.color);\n            }\n            if (nextProps.selectedItems !== this.props.selectedItems) {\n                this.tool.onSelectionChanged(nextProps.selectedItems);\n            }\n            if (nextProps.filled !== this.props.filled) {\n                this.tool.setFilled(nextProps.filled);\n            }\n            if (nextProps.thickness !== this.props.thickness ||\n                    nextProps.zoom !== this.props.zoom) {\n                this.tool.setThickness(nextProps.thickness);\n            }\n        }\n\n        if (nextProps.isRectModeActive && !this.props.isRectModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isRectModeActive && this.props.isRectModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isRectModeActive !== this.props.isRectModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        // Force the default brush color if fill is MIXED or transparent\n        const fillColorPresent = this.props.color.primary !== MIXED && this.props.color.primary !== null;\n        if (!fillColorPresent) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n        }\n        this.tool = new RectTool(\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.setCursor,\n            this.props.onUpdateImage\n        );\n        this.tool.setColor(this.props.color);\n        this.tool.setFilled(this.props.filled);\n        this.tool.setThickness(this.props.thickness);\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <RectModeComponent\n                isSelected={this.props.isRectModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBitRectMode.propTypes = {\n    clearSelectedItems: PropTypes.func.isRequired,\n    color: ColorStyleProptype,\n    filled: PropTypes.bool,\n    handleMouseDown: PropTypes.func.isRequired,\n    isRectModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    selectedItems: PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)),\n    setCursor: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired,\n    thickness: PropTypes.number.isRequired,\n    zoom: PropTypes.number.isRequired\n};\n\nconst mapStateToProps = state => ({\n    color: state.scratchPaint.color.fillColor,\n    filled: state.scratchPaint.fillBitmapShapes,\n    isRectModeActive: state.scratchPaint.mode === Modes.BIT_RECT,\n    selectedItems: state.scratchPaint.selectedItems,\n    thickness: state.scratchPaint.bitBrushSize,\n    zoom: state.scratchPaint.viewBounds.scaling.x\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    setCursor: cursorString => {\n        dispatch(setCursor(cursorString));\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), true /* bitmapMode */));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BIT_RECT));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BitRectMode);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport fillIcon from './fill.svg';\n\nconst BitFillComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.fill}\n        imgSrc={fillIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitFillComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitFillComponent;\n","// Gradient type shown in the fill tool. This is the last gradient type explicitly chosen by the user,\n// and isn't overwritten by changing the selection.\nimport GradientTypes from '../lib/gradient-types';\nimport log from '../log/log';\nimport {CHANGE_FILL_GRADIENT_TYPE} from './fill-style';\n\nconst initialState = null;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_FILL_GRADIENT_TYPE:\n        if (action.gradientType in GradientTypes) {\n            return action.gradientType;\n        }\n        log.warn(`Gradient type does not exist: ${action.gradientType}`);\n        /* falls through */\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\n// Use this for user-initiated gradient type selections only.\n// See reducers/fill-style.js for other ways gradient type changes.\nconst changeGradientType = function (gradientType) {\n    return {\n        type: CHANGE_FILL_GRADIENT_TYPE,\n        gradientType: gradientType\n    };\n};\n\nexport {\n    reducer as default,\n    changeGradientType\n};\n","import paper from '@scratch/paper';\nimport {floodFill, floodFillAll, getHitBounds} from '../bitmap';\nimport {createGradientObject} from '../style-path';\nimport {createCanvas, getRaster} from '../layer';\nimport GradientTypes from '../../lib/gradient-types';\n\nconst TRANSPARENT = 'rgba(0,0,0,0)';\n/**\n * Tool for drawing fills.\n */\nclass FillTool extends paper.Tool {\n    /**\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (onUpdateImage) {\n        super();\n        this.onUpdateImage = onUpdateImage;\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n\n        this.color = null;\n        this.color2 = null;\n        this.gradientType = null;\n        this.active = false;\n    }\n    setColor (color) {\n        this.color = color;\n    }\n    setColor2 (color2) {\n        this.color2 = color2;\n    }\n    setGradientType (gradientType) {\n        this.gradientType = gradientType;\n    }\n    handleMouseDown (event) {\n        this.paint(event);\n    }\n    handleMouseDrag (event) {\n        this.paint(event);\n    }\n    paint (event) {\n        const sourceContext = getRaster().getContext('2d');\n        let destContext = sourceContext;\n        let color = this.color;\n        // Paint to a mask instead of the original canvas when drawing\n        if (this.gradientType !== GradientTypes.SOLID) {\n            const tmpCanvas = createCanvas();\n            destContext = tmpCanvas.getContext('2d');\n            color = 'black';\n        } else if (!color) {\n            // Null color means transparent because that is the standard in vector\n            color = TRANSPARENT;\n        }\n        let changed = false;\n        if (event.event.shiftKey) {\n            changed = floodFillAll(event.point.x, event.point.y, color, sourceContext, destContext);\n        } else {\n            changed = floodFill(event.point.x, event.point.y, color, sourceContext, destContext);\n        }\n        if (changed && this.gradientType !== GradientTypes.SOLID) {\n            const raster = new paper.Raster({insert: false});\n            raster.canvas = destContext.canvas;\n            raster.onLoad = () => {\n                raster.position = getRaster().position;\n                // Erase what's already there\n                getRaster().getContext().globalCompositeOperation = 'destination-out';\n                getRaster().drawImage(raster.canvas, new paper.Point());\n                getRaster().getContext().globalCompositeOperation = 'source-over';\n\n                // Create the gradient to be masked\n                const hitBounds = getHitBounds(raster);\n                if (!hitBounds.area) return;\n                const gradient = new paper.Shape.Rectangle({\n                    insert: false,\n                    rectangle: {\n                        topLeft: hitBounds.topLeft,\n                        bottomRight: hitBounds.bottomRight\n                    }\n                });\n                gradient.fillColor = createGradientObject(\n                    this.color,\n                    this.color2,\n                    this.gradientType,\n                    gradient.bounds,\n                    event.point);\n                const rasterGradient = gradient.rasterize(getRaster().resolution.width, false /* insert */);\n\n                // Mask gradient\n                raster.getContext().globalCompositeOperation = 'source-in';\n                raster.drawImage(rasterGradient.canvas, rasterGradient.bounds.topLeft);\n\n                // Draw masked gradient into raster layer\n                getRaster().drawImage(raster.canvas, new paper.Point());\n                this.onUpdateImage();\n            };\n        } else if (changed) {\n            this.onUpdateImage();\n        }\n    }\n    deactivateTool () {\n    }\n}\n\nexport default FillTool;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport GradientTypes from '../lib/gradient-types';\n\nimport FillModeComponent from '../components/bit-fill-mode/bit-fill-mode.jsx';\n\nimport {changeFillColor, changeFillColor2, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {changeGradientType} from '../reducers/fill-mode-gradient-type';\nimport {clearSelection} from '../helper/selection';\nimport FillTool from '../helper/bit-tools/fill-tool';\nimport {generateSecondaryColor, MIXED} from '../helper/style-path';\n\nclass BitFillMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isFillModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool) {\n            if (nextProps.color !== this.props.color) {\n                this.tool.setColor(nextProps.color);\n            }\n            if (nextProps.color2 !== this.props.color2) {\n                this.tool.setColor2(nextProps.color2);\n            }\n            if (nextProps.fillModeGradientType !== this.props.fillModeGradientType) {\n                this.tool.setGradientType(nextProps.fillModeGradientType);\n            }\n        }\n\n        if (nextProps.isFillModeActive && !this.props.isFillModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isFillModeActive && this.props.isFillModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isFillModeActive !== this.props.isFillModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n\n        // Force the default brush color if fill is MIXED or transparent\n        let color = this.props.color;\n        if (this.props.color === MIXED) {\n            color = DEFAULT_COLOR;\n            this.props.onChangeFillColor(DEFAULT_COLOR, 0);\n        }\n        const gradientType = this.props.fillModeGradientType ?\n            this.props.fillModeGradientType : this.props.styleGradientType;\n        let color2 = this.props.color2;\n        if (gradientType !== this.props.styleGradientType) {\n            if (this.props.styleGradientType === GradientTypes.SOLID) {\n                color2 = generateSecondaryColor(color);\n                this.props.onChangeFillColor(color2, 1);\n            }\n            this.props.changeGradientType(gradientType);\n        }\n        if (this.props.color2 === MIXED) {\n            color2 = generateSecondaryColor();\n            this.props.onChangeFillColor(color2, 1);\n        }\n        this.tool = new FillTool(this.props.onUpdateImage);\n        this.tool.setColor(color);\n        this.tool.setColor2(color2);\n        this.tool.setGradientType(gradientType);\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <FillModeComponent\n                isSelected={this.props.isFillModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBitFillMode.propTypes = {\n    changeGradientType: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    color: PropTypes.string,\n    color2: PropTypes.string,\n    styleGradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,\n    fillModeGradientType: PropTypes.oneOf(Object.keys(GradientTypes)),\n    handleMouseDown: PropTypes.func.isRequired,\n    isFillModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    fillModeGradientType: state.scratchPaint.fillMode.gradientType, // Last user-selected gradient type\n    color: state.scratchPaint.color.fillColor.primary,\n    color2: state.scratchPaint.color.fillColor.secondary,\n    styleGradientType: state.scratchPaint.color.fillColor.gradientType,\n    isFillModeActive: state.scratchPaint.mode === Modes.BIT_FILL\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    changeGradientType: gradientType => {\n        dispatch(changeGradientType(gradientType));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BIT_FILL));\n    },\n    onChangeFillColor: (fillColor, index) => {\n        if (index === 0) {\n            dispatch(changeFillColor(fillColor));\n        } else if (index === 1) {\n            dispatch(changeFillColor2(fillColor));\n        }\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BitFillMode);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport messages from '../../lib/messages.js';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\n\nimport eraserIcon from './eraser.svg';\n\nconst BitEraserComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.eraser}\n        imgSrc={eraserIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitEraserComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitEraserComponent;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\n\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {clearSelection} from '../helper/selection';\n\nimport BitEraserModeComponent from '../components/bit-eraser-mode/bit-eraser-mode.jsx';\nimport BitBrushTool from '../helper/bit-tools/brush-tool';\n\nclass BitEraserMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isBitEraserModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.bitEraserSize !== this.props.bitEraserSize) {\n            this.tool.setBrushSize(nextProps.bitEraserSize);\n        }\n        \n        if (nextProps.isBitEraserModeActive && !this.props.isBitEraserModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isBitEraserModeActive && this.props.isBitEraserModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isBitEraserModeActive !== this.props.isBitEraserModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        this.tool = new BitBrushTool(\n            this.props.onUpdateImage,\n            true /* isEraser */\n        );\n        this.tool.setBrushSize(this.props.bitEraserSize);\n\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <BitEraserModeComponent\n                isSelected={this.props.isBitEraserModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBitEraserMode.propTypes = {\n    bitEraserSize: PropTypes.number.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    isBitEraserModeActive: PropTypes.bool.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    bitEraserSize: state.scratchPaint.bitEraserSize,\n    isBitEraserModeActive: state.scratchPaint.mode === Modes.BIT_ERASER\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BIT_ERASER));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BitEraserMode);\n","import paper from '@scratch/paper';\nimport {rectSelect} from '../guides';\nimport {clearSelection, processRectangularSelection} from '../selection';\nimport {getRaster} from '../layer';\nimport {ART_BOARD_WIDTH, ART_BOARD_HEIGHT} from '../view';\nimport {getHitBounds} from '../../helper/bitmap';\n\n/** Tool to handle drag selection. A dotted line box appears and everything enclosed is selected. */\nclass SelectionBoxTool {\n    /**\n     * @param {!Modes} mode Current paint editor mode\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     */\n    constructor (mode, setSelectedItems, clearSelectedItems) {\n        this.selectionRect = null;\n        this.mode = mode;\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n    }\n    /**\n     * @param {boolean} multiselect Whether to multiselect on mouse down (e.g. shift key held)\n     */\n    onMouseDown (multiselect) {\n        if (!multiselect) {\n            clearSelection(this.clearSelectedItems);\n            this.clearSelectedItems();\n        }\n    }\n    onMouseDrag (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        if (this.selectionRect) {\n            this.selectionRect.remove();\n        }\n        this.selectionRect = rectSelect(event);\n    }\n    onMouseUpVector (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        if (this.selectionRect) {\n            processRectangularSelection(event, this.selectionRect, this.mode);\n            this.selectionRect.remove();\n            this.selectionRect = null;\n            this.setSelectedItems();\n        }\n    }\n    onMouseUpBitmap (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        if (this.selectionRect) {\n            let rect = new paper.Rectangle({\n                from: new paper.Point(\n                    Math.max(0, Math.round(this.selectionRect.bounds.topLeft.x)),\n                    Math.max(0, Math.round(this.selectionRect.bounds.topLeft.y))),\n                to: new paper.Point(\n                    Math.min(ART_BOARD_WIDTH, Math.round(this.selectionRect.bounds.bottomRight.x)),\n                    Math.min(ART_BOARD_HEIGHT, Math.round(this.selectionRect.bounds.bottomRight.y)))\n            });\n\n            // Trim/tighten selection bounds inwards to only the opaque region, excluding transparent pixels\n            rect = getHitBounds(getRaster(), rect);\n\n            if (rect.area) {\n                // Pull selected raster to active layer\n                const raster = getRaster().getSubRaster(rect);\n                raster.parent = paper.project.activeLayer;\n                raster.canvas.getContext('2d').imageSmoothingEnabled = false;\n                raster.selected = true;\n                // Gather a bit of extra data so that we can avoid aliasing at edges\n                const expanded = getRaster().getSubRaster(rect.expand(4));\n                expanded.remove();\n                raster.data = {expanded: expanded};\n\n                // Clear area from raster layer\n                const context = getRaster().getContext(true /* modify */);\n                context.clearRect(rect.x, rect.y, rect.width, rect.height);\n                this.setSelectedItems();\n            }\n\n            // Remove dotted rectangle\n            this.selectionRect.remove();\n            this.selectionRect = null;\n        }\n    }\n}\n\nexport default SelectionBoxTool;\n","import paper from '@scratch/paper';\nimport Modes from '../../lib/modes';\n\nimport {getRaster} from '../layer';\nimport {commitSelectionToBitmap} from '../bitmap';\n\nimport BoundingBoxTool from '../selection-tools/bounding-box-tool';\nimport NudgeTool from '../selection-tools/nudge-tool';\nimport SelectionBoxTool from '../selection-tools/selection-box-tool';\n\n/**\n * paper.Tool that handles select mode in bitmap. This is made up of 2 subtools.\n * - The selection box tool is active when the user clicks an empty space and drags.\n *   It selects all items in the rectangle.\n * - The bounding box tool is active if the user clicks on a non-empty space. It handles\n *   reshaping the selection.\n */\nclass SelectTool extends paper.Tool {\n    /** The distance within which mouse events count as a hit against an item */\n    static get TOLERANCE () {\n        return 2;\n    }\n    /**\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setSelectedItems, clearSelectedItems, setCursor, onUpdateImage) {\n        super();\n        this.onUpdateImage = onUpdateImage;\n        this.boundingBoxTool = new BoundingBoxTool(\n            Modes.BIT_SELECT,\n            setSelectedItems,\n            clearSelectedItems,\n            setCursor,\n            onUpdateImage\n        );\n        const nudgeTool = new NudgeTool(Modes.BIT_SELECT, this.boundingBoxTool, onUpdateImage);\n        this.selectionBoxTool = new SelectionBoxTool(Modes.BIT_SELECT, setSelectedItems, clearSelectedItems);\n        this.selectionBoxMode = false;\n        this.selection = null;\n        this.active = false;\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseUp = this.handleMouseUp;\n        this.onKeyUp = nudgeTool.onKeyUp;\n        this.onKeyDown = nudgeTool.onKeyDown;\n\n        this.boundingBoxTool.setSelectionBounds();\n    }\n    /**\n     * Should be called if the selection changes to update the bounds of the bounding box.\n     * @param {Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        this.boundingBoxTool.onSelectionChanged(selectedItems);\n        if (this.selection && this.selection.parent && !this.selection.selected) {\n            // Selection got deselected\n            this.commitSelection();\n        }\n        if ((!this.selection || !this.selection.parent) &&\n                selectedItems && selectedItems.length === 1 && selectedItems[0] instanceof paper.Raster) {\n            // Track the new active selection. This may happen via undo, paste, or drag to select.\n            this.selection = selectedItems[0];\n        }\n    }\n    /**\n     * Returns the hit options to use when conducting hit tests.\n     * @return {object} See paper.Item.hitTest for definition of options\n     */\n    getHitOptions () {\n        // Tolerance needs to be scaled when the view is zoomed in in order to represent the same\n        // distance for the user to move the mouse.\n        return {\n            segments: true,\n            stroke: true,\n            curves: true,\n            fill: true,\n            guide: false,\n            tolerance: SelectTool.TOLERANCE / paper.view.zoom,\n            match: hitResult => {\n                // Don't match helper items, unless they are handles.\n                if (!hitResult.item.data || !hitResult.item.data.isHelperItem) return true;\n                return hitResult.item.data.isScaleHandle || hitResult.item.data.isRotHandle;\n            }\n        };\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        // If bounding box tool does not find an item that was hit, rasterize the old selection,\n        // then use selection box tool.\n        if (!this.boundingBoxTool\n            .onMouseDown(\n                event,\n                event.modifiers.alt,\n                event.modifiers.shift,\n                false /* doubleClicked */,\n                this.getHitOptions())) {\n            this.commitSelection();\n            this.selectionBoxMode = true;\n            this.selectionBoxTool.onMouseDown(event.modifiers.shift);\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.selectionBoxMode) {\n            this.selectionBoxTool.onMouseDrag(event);\n        } else {\n            this.boundingBoxTool.onMouseDrag(event);\n        }\n    }\n    handleMouseMove (event) {\n        this.boundingBoxTool.onMouseMove(event, this.getHitOptions());\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.selectionBoxMode) {\n            this.selectionBoxTool.onMouseUpBitmap(event);\n        } else {\n            this.boundingBoxTool.onMouseUp(event);\n        }\n        this.selectionBoxMode = false;\n        this.active = false;\n    }\n    commitSelection () {\n        if (!this.selection || !this.selection.parent) return;\n\n        commitSelectionToBitmap(this.selection, getRaster());\n        this.selection.remove();\n        this.selection = null;\n        this.onUpdateImage();\n    }\n    deactivateTool () {\n        this.commitSelection();\n        this.boundingBoxTool.deactivateTool();\n        this.boundingBoxTool = null;\n        this.selectionBoxTool = null;\n    }\n}\n\nexport default SelectTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport selectIcon from './marquee.svg';\n\nconst BitSelectComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.select}\n        imgSrc={selectIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitSelectComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitSelectComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\n\nimport {clearFillGradient} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {setCursor} from '../reducers/cursor';\n\nimport {getSelectedLeafItems} from '../helper/selection';\nimport BitSelectTool from '../helper/bit-tools/select-tool';\nimport SelectModeComponent from '../components/bit-select-mode/bit-select-mode.jsx';\n\nclass BitSelectMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isSelectModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.selectedItems !== this.props.selectedItems) {\n            this.tool.onSelectionChanged(nextProps.selectedItems);\n        }\n\n        if (nextProps.isSelectModeActive && !this.props.isSelectModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isSelectModeActive && this.props.isSelectModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isSelectModeActive !== this.props.isSelectModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        this.props.clearGradient();\n        this.tool = new BitSelectTool(\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.setCursor,\n            this.props.onUpdateImage\n        );\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <SelectModeComponent\n                isSelected={this.props.isSelectModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBitSelectMode.propTypes = {\n    clearGradient: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    isSelectModeActive: PropTypes.bool.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    selectedItems: PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)),\n    setCursor: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    isSelectModeActive: state.scratchPaint.mode === Modes.BIT_SELECT,\n    selectedItems: state.scratchPaint.selectedItems\n});\nconst mapDispatchToProps = dispatch => ({\n    clearGradient: () => {\n        dispatch(clearFillGradient());\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    setCursor: cursorType => {\n        dispatch(setCursor(cursorType));\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems()));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BIT_SELECT));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BitSelectMode);\n","import classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './button-group.css';\n\nconst ButtonGroup = props => (\n    <div className={classNames(props.className, styles.buttonGroup)}>\n        {props.children}\n    </div>\n);\n\nButtonGroup.propTypes = {\n    children: PropTypes.node.isRequired,\n    className: PropTypes.string\n};\n\nexport default ButtonGroup;\n","// Broadbrush based on http://paperjs.org/tutorials/interaction/working-with-mouse-vectors/\nimport paper from '@scratch/paper';\nimport {styleBlob} from '../../helper/style-path';\nimport log from '../../log/log';\n\n/**\n * Broad brush functions to add as listeners on the mouse. Call them when the corresponding mouse event happens\n * to get the broad brush behavior.\n *\n * Broad brush draws strokes by drawing points equidistant from the mouse event, perpendicular to the\n * direction of motion. Shortcomings are that this path can cross itself, and 180 degree turns result\n * in a flat edge.\n *\n * @param {!Tool} tool paper.js mouse object\n */\nclass BroadBrushHelper {\n    constructor () {\n        // Direction vector of the last mouse move\n        this.lastVec = null;\n        // End point of the last mouse move\n        this.lastPoint = null;\n        // The path of the brush stroke we are building\n        this.finalPath = null;\n        // Number of points of finalPath that have already been processed\n        this.smoothed = 0;\n        // Number of steps to wait before performing another amortized smooth\n        this.smoothingThreshold = 20;\n        // Mouse moves since mouse down\n        this.steps = 0;\n        // End caps round out corners and are not merged into the path until the end.\n        this.endCaps = [];\n    }\n\n    onBroadMouseDown (event, tool, options) {\n        this.steps = 0;\n        this.smoothed = 0;\n        this.lastVec = null;\n        tool.minDistance = Math.min(5, Math.max(2 / paper.view.zoom, options.brushSize / 2));\n        tool.maxDistance = options.brushSize;\n        if (event.event.button > 0) return; // only first mouse button\n\n        this.finalPath = new paper.Path.Circle({\n            center: event.point,\n            radius: options.brushSize / 2\n        });\n        styleBlob(this.finalPath, options);\n        this.lastPoint = event.point;\n    }\n\n    onBroadMouseDrag (event, tool, options) {\n        this.steps++;\n        const step = (event.delta).normalize(options.brushSize / 2);\n\n        // Add an end cap if the mouse has changed direction very quickly\n        if (this.lastVec) {\n            const angle = this.lastVec.getDirectedAngle(step);\n            if (Math.abs(angle) > 126) {\n                // This will cause us to skip simplifying this sharp angle. Running simplify on\n                // sharp angles causes the stroke to blob outwards.\n                this.simplify(1);\n                this.smoothed++;\n\n                // If the angle is large, the broad brush tends to leave behind a flat edge.\n                // This code makes a shape to fill in that flat edge with a rounded cap.\n                const circ = new paper.Path.Circle(this.lastPoint, options.brushSize / 2);\n                circ.fillColor = options.fillColor;\n                const rect = new paper.Path.Rectangle(\n                    this.lastPoint.subtract(new paper.Point(-options.brushSize / 2, 0)),\n                    this.lastPoint.subtract(new paper.Point(options.brushSize / 2, this.lastVec.length))\n                );\n                rect.fillColor = options.fillColor;\n                rect.rotate(this.lastVec.angle - 90, this.lastPoint);\n                const rect2 = new paper.Path.Rectangle(\n                    event.point.subtract(new paper.Point(-options.brushSize / 2, 0)),\n                    event.point.subtract(new paper.Point(options.brushSize / 2, event.delta.length))\n                );\n                rect2.fillColor = options.fillColor;\n                rect2.rotate(step.angle - 90, event.point);\n                this.endCaps.push(this.union(circ, this.union(rect, rect2)));\n            }\n        }\n        step.angle += 90;\n\n        // Move the first point out away from the drag so that the end of the path is rounded\n        if (this.steps === 1) {\n            // Replace circle with path\n            this.finalPath.remove();\n            this.finalPath = new paper.Path();\n            const handleVec = event.delta.normalize(options.brushSize / 2);\n            this.finalPath.add(new paper.Segment(\n                this.lastPoint.subtract(handleVec),\n                handleVec.rotate(-90),\n                handleVec.rotate(90)\n            ));\n            styleBlob(this.finalPath, options);\n            this.finalPath.insert(0, new paper.Segment(this.lastPoint.subtract(step)));\n            this.finalPath.add(new paper.Segment(this.lastPoint.add(step)));\n        }\n\n        // Update angle of the last brush step's points to match the average angle of the last mouse vector and this\n        // mouse vector (aka the vertex normal).\n        if (this.lastVec) {\n            const lastNormal = this.lastVec.normalize(options.brushSize / 2).rotate(90);\n            const averageNormal = new paper.Point(\n                lastNormal.x + step.x,\n                lastNormal.y + step.y\n            ).normalize(options.brushSize / 2);\n\n            this.finalPath.segments[0].point = this.lastPoint.subtract(averageNormal);\n            this.finalPath.segments[this.finalPath.segments.length - 1].point = this.lastPoint.add(averageNormal);\n        }\n\n        this.finalPath.add(event.point.add(step));\n        this.finalPath.insert(0, event.point.subtract(step));\n\n        if (this.finalPath.segments.length > this.smoothed + (this.smoothingThreshold * 2)) {\n            this.simplify(1);\n        }\n\n        this.lastVec = event.delta;\n        this.lastPoint = event.point;\n    }\n\n    /**\n     * Simplify the path so that it looks almost the same while trying to have a reasonable number of handles.\n     * Without this, there would be 2 handles for every mouse move, which would make the path produced basically\n     * uneditable. This version of simplify keeps track of how much of the path has already been simplified to\n     * avoid repeating work.\n     * @param {number} threshold The simplify algorithm must try to stay within this distance of the actual line.\n     *     The algorithm will be faster and able to remove more points the higher this number is.\n     *     Note that 1 is about the lowest this algorithm can do (the result is about the same when 1 is\n     *     passed in as when 0 is passed in)\n     */\n    simplify (threshold) {\n        // Length of the current path\n        const length = this.finalPath.segments.length;\n        // Number of new points added to front and end of path since last simplify\n        const newPoints = Math.floor((length - this.smoothed) / 2) + 1;\n\n        // Where to cut. Don't go past the rounded start of the line (so there's always a tempPathMid)\n        const firstCutoff = Math.min(newPoints + 1, Math.floor((length / 2)));\n        const lastCutoff = Math.max(length - 1 - newPoints, Math.floor(length / 2) + 1);\n        if (firstCutoff <= 1 || lastCutoff >= length - 1) {\n            // Entire path is simplified already\n            return;\n        }\n        // Cut the path into 3 segments: the 2 ends where the new points are, and the middle, which will be\n        // staying the same\n        const tempPath1 = new paper.Path(this.finalPath.segments.slice(1, firstCutoff));\n        const tempPathMid = new paper.Path(this.finalPath.segments.slice(firstCutoff, lastCutoff));\n        const tempPath2 = new paper.Path(this.finalPath.segments.slice(lastCutoff, length - 1));\n\n        // Run simplify on the new ends. We need to graft the old handles back onto the newly\n        // simplified paths, since simplify removes the in handle from the start of the path, and\n        // the out handle from the end of the path it's simplifying.\n        const oldPath1End = tempPath1.segments[tempPath1.segments.length - 1];\n        const oldPath2End = tempPath2.segments[0];\n        tempPath1.simplify(threshold);\n        tempPath2.simplify(threshold);\n        const newPath1End = tempPath1.segments[tempPath1.segments.length - 1];\n        const newPath2End = tempPath2.segments[0];\n        newPath1End.handleOut = oldPath1End.handleOut;\n        newPath2End.handleIn = oldPath2End.handleIn;\n\n        // Delete the old contents of finalPath and replace it with the newly simplified segments, concatenated\n        this.finalPath.removeSegments(1, this.finalPath.segments.length - 1);\n        this.finalPath.insertSegments(1, tempPath1.segments.concat(tempPathMid.segments).concat(tempPath2.segments));\n\n        // Remove temp paths\n        tempPath1.remove();\n        tempPath2.remove();\n        tempPathMid.remove();\n\n        // Update how many points have been smoothed so far so that we don't redo work when\n        // simplify is called next time.\n        this.smoothed = Math.max(2, this.finalPath.segments.length);\n    }\n\n    /**\n     * Like paper.Path.unite, but it removes the original 2 paths\n     * @param {paper.Path} path1 to merge\n     * @param {paper.Path} path2 to merge\n     * @return {paper.Path} merged path. Original paths 1 and 2 will be removed from the view.\n     */\n    union (path1, path2) {\n        const temp = path1.unite(path2);\n        path1.remove();\n        path2.remove();\n        return temp;\n    }\n\n    onBroadMouseUp (event, tool, options) {\n        // If there was only a single click, draw a circle.\n        if (this.steps === 0) {\n            this.endCaps.length = 0;\n            return this.finalPath;\n        }\n\n        let delta = this.lastVec;\n\n        // If the mouse up is at the same point as the mouse drag event then we need\n        // the second to last point to get the right direction vector for the end cap\n        if (!event.point.equals(this.lastPoint)) {\n            // The given event.delta is the difference between the mouse down coords and the mouse up coords,\n            // but we want the difference between the last mouse drag coords and the mouse up coords.\n            delta = event.point.subtract(this.lastPoint);\n            const step = delta.normalize(options.brushSize / 2);\n            step.angle += 90;\n\n            const top = event.point.add(step);\n            const bottom = event.point.subtract(step);\n            this.finalPath.add(top);\n            this.finalPath.insert(0, bottom);\n        }\n\n        // Simplify before adding end cap so cap doesn't get warped\n        this.simplify(1);\n        const handleVec = delta.normalize(options.brushSize / 2);\n        this.finalPath.add(new paper.Segment(\n            event.point.add(handleVec),\n            handleVec.rotate(90),\n            handleVec.rotate(-90)\n        ));\n        this.finalPath.closePath();\n\n        // Resolve self-crossings\n        const newPath =\n            this.finalPath\n                .resolveCrossings()\n                .reorient(true /* nonZero */, true /* clockwise */)\n                .reduce({simplify: true});\n        if (newPath !== this.finalPath) {\n            newPath.copyAttributes(this.finalPath);\n            newPath.fillColor = this.finalPath.fillColor;\n            this.finalPath.remove();\n            this.finalPath = newPath;\n        }\n\n        // Try to merge end caps\n        for (const cap of this.endCaps) {\n            const temp = this.union(this.finalPath, cap);\n            if (temp.area >= this.finalPath.area &&\n                !(temp instanceof paper.CompoundPath && !(this.finalPath instanceof paper.CompoundPath))) {\n                this.finalPath = temp;\n            } else {\n                // If the union of the two shapes is smaller than the original shape,\n                // or it caused the path to become a compound path,\n                // then there must have been a glitch with paperjs's unite function.\n                // In this case, skip merging that segment. It's not great, but it's\n                // better than losing the whole path for instance. (Unfortunately, this\n                // happens reasonably often to scribbles, and this code doesn't catch\n                // all of the failures.)\n                this.finalPath.insertAbove(temp);\n                temp.remove();\n                log.warn('Skipping a merge.');\n            }\n        }\n        this.endCaps.length = 0;\n\n        return this.finalPath;\n    }\n}\n\nexport default BroadBrushHelper;\n","import paper from '@scratch/paper';\nimport {styleBlob} from '../../helper/style-path';\n\n/**\n * Segment brush functions to add as listeners on the mouse. Call them when the corresponding mouse event happens\n * to get the broad brush behavior.\n *\n * Segment brush draws by creating a rounded rectangle for each mouse move event and merging all of\n * those shapes. Unlike the broad brush, the resulting shape will not self-intersect and when you make\n * 180 degree turns, you will get a rounded point as expected. Shortcomings include that performance is\n * worse, especially as the number of segments to join increase, and that there are problems in paper.js\n * with union on shapes with curves, so that chunks of the union tend to disappear.\n * (https://github.com/paperjs/paper.js/issues/1321)\n *\n * @param {!Tool} tool paper.js mouse object\n */\nclass SegmentBrushHelper {\n    constructor () {\n        this.lastPoint = null;\n        this.finalPath = null;\n        this.firstCircle = null;\n    }\n    onSegmentMouseDown (event, tool, options) {\n        if (event.event.button > 0) return; // only first mouse button\n\n        tool.minDistance = 2 / paper.view.zoom;\n        tool.maxDistance = options.brushSize;\n        \n        this.firstCircle = new paper.Path.Circle({\n            center: event.point,\n            radius: options.brushSize / 2\n        });\n        this.finalPath = this.firstCircle;\n        styleBlob(this.finalPath, options);\n        this.lastPoint = event.point;\n    }\n    \n    onSegmentMouseDrag (event, tool, options) {\n        if (event.event.button > 0) return; // only first mouse button\n\n        const step = (event.delta).normalize(options.brushSize / 2);\n        const handleVec = step.clone();\n        handleVec.length = options.brushSize / 2;\n        handleVec.angle += 90;\n\n        const path = new paper.Path();\n        \n        styleBlob(path, options);\n\n        // Add handles to round the end caps\n        path.add(new paper.Segment(this.lastPoint.subtract(step), handleVec.multiply(-1), handleVec));\n        step.angle += 90;\n\n        path.add(event.lastPoint.add(step));\n        path.insert(0, event.lastPoint.subtract(step));\n        path.add(event.point.add(step));\n        path.insert(0, event.point.subtract(step));\n\n        // Add end cap\n        step.angle -= 90;\n        path.add(new paper.Segment(event.point.add(step), handleVec, handleVec.multiply(-1)));\n        path.closed = true;\n        // The unite function on curved paths does not always work (sometimes deletes half the path)\n        // so we have to flatten.\n        path.flatten(Math.min(5, options.brushSize / 5));\n        \n        this.lastPoint = event.point;\n        const newPath = this.finalPath.unite(path);\n        path.remove();\n        this.finalPath.remove();\n        this.finalPath = newPath;\n    }\n\n    onSegmentMouseUp (event) {\n        if (event.event.button > 0) return; // only first mouse button\n\n        // TODO: This smoothing tends to cut off large portions of the path! Would like to eventually\n        // add back smoothing, maybe a custom implementation that only applies to a subset of the line?\n\n        // Smooth the path. Make it unclosed first because smoothing of closed\n        // paths tends to cut off the path.\n        if (this.finalPath.segments && this.finalPath.segments.length > 4) {\n            this.finalPath.closed = false;\n            this.finalPath.simplify(2);\n            this.finalPath.closed = true;\n            // Merge again with the first point, since it gets distorted when we unclose the path.\n            const temp = this.finalPath.unite(this.firstCircle);\n            this.finalPath.remove();\n            this.finalPath = temp;\n        }\n        return this.finalPath;\n    }\n}\n\nexport default SegmentBrushHelper;\n","import paper from '@scratch/paper';\nimport log from '../../log/log';\nimport BroadBrushHelper from './broad-brush-helper';\nimport SegmentBrushHelper from './segment-brush-helper';\nimport {MIXED, styleCursorPreview} from '../../helper/style-path';\nimport {clearSelection, getItems} from '../../helper/selection';\nimport {getGuideLayer, setGuideItem} from '../../helper/layer';\nimport {isCompoundPathChild} from '../compound-path';\n\n/**\n * Shared code for the brush and eraser mode. Adds functions on the paper tool object\n * to handle mouse events, which are delegated to broad-brush-helper and segment-brush-helper\n * based on the brushSize in the state.\n */\nclass Blobbiness {\n    static get BROAD () {\n        return 'broadbrush';\n    }\n    static get SEGMENT () {\n        return 'segmentbrush';\n    }\n\n    // If brush size >= threshold use segment brush, else use broadbrush\n    // Segment brush has performance issues at low threshold, but broad brush has weird corners\n    // which get more obvious the bigger it is\n    static get THRESHOLD () {\n        return 30 / paper.view.zoom;\n    }\n\n    /**\n     * @param {function} onUpdateImage call when the drawing has changed to let listeners know\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     */\n    constructor (onUpdateImage, clearSelectedItems) {\n        this.broadBrushHelper = new BroadBrushHelper();\n        this.segmentBrushHelper = new SegmentBrushHelper();\n        this.onUpdateImage = onUpdateImage;\n        this.clearSelectedItems = clearSelectedItems;\n\n        // The following are stored to check whether these have changed and the cursor preview needs to be redrawn.\n        this.strokeColor = null;\n        this.brushSize = null;\n        this.fillColor = null;\n    }\n\n    /**\n     * Set configuration options for a blob\n     * @param {!object} options Configuration\n     * @param {!number} options.brushSize Width of blob marking made by mouse\n     * @param {!boolean} options.isEraser Whether the stroke should be treated as an erase path. If false,\n     *     the stroke is an additive path.\n     * @param {?string} options.fillColor Color of the brush stroke.\n     * @param {?string} options.strokeColor Color of the brush outline.\n     * @param {?number} options.strokeWidth Width of the brush outline.\n     */\n    setOptions (options) {\n        const oldFillColor = this.options ? this.options.fillColor : 'black';\n        const oldStrokeColor = this.options ? this.options.strokeColor : null;\n        const oldStrokeWidth = this.options ? this.options.strokeWidth : null;\n        // If values are mixed, it means the color was set by a selection contained multiple values.\n        // In this case keep drawing with the previous values if any. (For stroke width, null indicates\n        // mixed, because stroke width is required to be a number)\n        this.options = {\n            ...options,\n            fillColor: options.fillColor === MIXED ? oldFillColor : options.fillColor,\n            strokeColor: options.strokeColor === MIXED ? oldStrokeColor : options.strokeColor,\n            strokeWidth: options.strokeWidth === null ? oldStrokeWidth : options.strokeWidth\n        };\n        this.resizeCursorIfNeeded();\n    }\n\n    /**\n     * Adds handlers on the mouse tool to draw blobs. Initialize with configuration options for a blob.\n     * @param {!object} options Configuration\n     * @param {!number} options.brushSize Width of blob marking made by mouse\n     * @param {!boolean} options.isEraser Whether the stroke should be treated as an erase path. If false,\n     *     the stroke is an additive path.\n     * @param {?string} options.fillColor Color of the brush stroke.\n     * @param {?string} options.strokeColor Color of the brush outline.\n     * @param {?number} options.strokeWidth Width of the brush outline.\n     */\n    activateTool (options) {\n        this.tool = new paper.Tool();\n        this.cursorPreviewLastPoint = new paper.Point(-10000, -10000);\n        this.setOptions(options);\n        this.tool.active = false;\n        this.tool.fixedDistance = 1;\n\n        const blob = this;\n        this.tool.onMouseMove = function (event) {\n            blob.resizeCursorIfNeeded(event.point);\n            styleCursorPreview(blob.cursorPreview, blob.options);\n            blob.cursorPreview.bringToFront();\n            blob.cursorPreview.position = event.point;\n        };\n\n        this.tool.onMouseDown = function (event) {\n            blob.resizeCursorIfNeeded(event.point);\n            if (event.event.button > 0) return; // only first mouse button\n            this.active = true;\n\n            if (blob.options.brushSize < Blobbiness.THRESHOLD) {\n                blob.brush = Blobbiness.BROAD;\n                blob.broadBrushHelper.onBroadMouseDown(event, blob.tool, blob.options);\n            } else {\n                blob.brush = Blobbiness.SEGMENT;\n                blob.segmentBrushHelper.onSegmentMouseDown(event, blob.tool, blob.options);\n            }\n            blob.cursorPreview.bringToFront();\n            blob.cursorPreview.position = event.point;\n        };\n\n        this.tool.onMouseDrag = function (event) {\n            if (event.event.button > 0 || !this.active) return; // only first mouse button\n            if (blob.brush === Blobbiness.BROAD) {\n                blob.broadBrushHelper.onBroadMouseDrag(event, blob.tool, blob.options);\n            } else if (blob.brush === Blobbiness.SEGMENT) {\n                blob.segmentBrushHelper.onSegmentMouseDrag(event, blob.tool, blob.options);\n            } else {\n                log.warn(`Brush type does not exist: ${blob.brush}`);\n            }\n\n            blob.cursorPreview.bringToFront();\n            blob.cursorPreview.position = event.point;\n        };\n\n        this.tool.onMouseUp = function (event) {\n            if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n            let lastPath;\n            if (blob.brush === Blobbiness.BROAD) {\n                lastPath = blob.broadBrushHelper.onBroadMouseUp(event, blob.tool, blob.options);\n            } else if (blob.brush === Blobbiness.SEGMENT) {\n                lastPath = blob.segmentBrushHelper.onSegmentMouseUp(event, blob.tool, blob.options);\n            } else {\n                log.warn(`Brush type does not exist: ${blob.brush}`);\n            }\n\n            if (blob.options.isEraser) {\n                blob.mergeEraser(lastPath);\n            } else {\n                blob.mergeBrush(lastPath);\n            }\n\n            // Remove cursor preview during snapshot, then bring it back\n            blob.cursorPreview.remove();\n            blob.onUpdateImage();\n            blob.cursorPreview.parent = getGuideLayer();\n\n            // Reset\n            blob.brush = null;\n            this.fixedDistance = 1;\n            this.active = false;\n        };\n        this.tool.activate();\n    }\n\n    resizeCursorIfNeeded (point) {\n        if (!this.options) {\n            return;\n        }\n        // The cursor preview was unattached from the view by an outside process,\n        // such as changing costumes or undo.\n        if (this.cursorPreview && !this.cursorPreview.parent) {\n            this.cursorPreview = null;\n        }\n        if (this.cursorPreview &&\n                this.brushSize === this.options.brushSize &&\n                this.fillColor === this.options.fillColor &&\n                this.strokeColor === this.options.strokeColor &&\n                this.cursorPreviewLastPoint.equals(point)) {\n            return;\n        }\n        if (typeof point !== 'undefined') {\n            this.cursorPreviewLastPoint = point;\n        }\n\n        if (!this.cursorPreview) {\n            this.cursorPreview = new paper.Shape.Ellipse({\n                point: this.cursorPreviewLastPoint,\n                size: this.options.brushSize / 2\n            });\n            this.cursorPreview.parent = getGuideLayer();\n            this.cursorPreview.data.isHelperItem = true;\n            setGuideItem(this.cursorPreview);\n        }\n        this.cursorPreview.position = this.cursorPreviewLastPoint;\n        this.cursorPreview.radius = this.options.brushSize / 2;\n        this.brushSize = this.options.brushSize;\n        this.fillColor = this.options.fillColor;\n        this.strokeColor = this.options.strokeColor;\n        styleCursorPreview(this.cursorPreview, this.options);\n    }\n\n    mergeBrush (lastPath) {\n        const blob = this;\n\n        // Get all path items to merge with\n        const paths = getItems({\n            match: function (item) {\n                return blob.isMergeable(lastPath, item) &&\n                    item.parent instanceof paper.Layer; // don't merge with nested in group\n            }\n        });\n\n        let mergedPath = lastPath;\n        let i;\n        // Move down z order to first overlapping item\n        for (i = paths.length - 1; i >= 0 && !this.touches(paths[i], lastPath); i--) {\n            continue;\n        }\n        let mergedPathIndex = i;\n        for (; i >= 0; i--) {\n            if (!this.touches(paths[i], lastPath)) {\n                continue;\n            }\n            if (!paths[i].getFillColor()) {\n                // Ignore for merge. Paths without fill need to be in paths though,\n                // since they can visibly change if z order changes\n            } else if (this.colorMatch(paths[i], lastPath)) {\n                // Make sure the new shape isn't overlapped by anything that would\n                // visibly change if we change its z order\n                for (let j = mergedPathIndex; j > i; j--) {\n                    if (this.touches(paths[j], paths[i])) {\n                        continue;\n                    }\n                }\n                // Merge same fill color\n                const tempPath = mergedPath.unite(paths[i]);\n                tempPath.strokeColor = paths[i].strokeColor;\n                tempPath.strokeWidth = paths[i].strokeWidth;\n                if (mergedPath === lastPath) {\n                    tempPath.insertAbove(paths[i]); // First intersected path determines z position of the new path\n                } else {\n                    tempPath.insertAbove(mergedPath); // Rest of merges join z index of merged path\n                    mergedPathIndex--; // Removed an item, so the merged path index decreases\n                }\n                mergedPath.remove();\n                mergedPath = tempPath;\n                paths[i].remove();\n                paths.splice(i, 1);\n            }\n        }\n    }\n\n    mergeEraser (lastPath) {\n        const blob = this;\n\n        // Get all path items to merge with\n        // If there are selected items, try to erase from amongst those.\n        let items = getItems({\n            match: function (item) {\n                return item.selected && blob.isMergeable(lastPath, item) &&\n                    blob.touches(lastPath, item) &&\n                    // Boolean operations will produce incorrect results if directly applied to compound path children,\n                    // so exclude those. Their parents are also selected so boolean operations will apply to them.\n                    !isCompoundPathChild(item);\n            },\n            class: paper.PathItem\n        });\n        // Eraser didn't hit anything selected, so assume they meant to erase from all instead of from subset\n        // and deselect the selection\n        if (items.length === 0) {\n            clearSelection(this.clearSelectedItems);\n            items = getItems({\n                match: function (item) {\n                    return blob.isMergeable(lastPath, item) &&\n                        blob.touches(lastPath, item) &&\n                        !isCompoundPathChild(item);\n                },\n                class: paper.PathItem\n            });\n        }\n\n        for (let i = items.length - 1; i >= 0; i--) {\n            if (items[i] instanceof paper.Path && (!items[i].fillColor || items[i].fillColor._alpha === 0)) {\n                // Gather path segments\n                const subpaths = [];\n                const firstSeg = items[i];\n                const intersections = firstSeg.getIntersections(lastPath);\n                for (let j = intersections.length - 1; j >= 0; j--) {\n                    const split = firstSeg.splitAt(intersections[j]);\n                    if (split) {\n                        split.insertAbove(firstSeg);\n                        subpaths.push(split);\n                    }\n                }\n                subpaths.push(firstSeg);\n\n                // Remove the ones that are within the eraser stroke boundary\n                for (let k = subpaths.length - 1; k >= 0; k--) {\n                    const segMidpoint = subpaths[k].getLocationAt(subpaths[k].length / 2).point;\n                    if (lastPath.contains(segMidpoint)) {\n                        subpaths[k].remove();\n                        subpaths.splice(k, 1);\n                    }\n                }\n                lastPath.remove();\n                continue;\n            }\n\n            // Erase\n            const newPath = items[i].subtract(lastPath);\n            newPath.insertBelow(items[i]);\n\n            // Gather path segments\n            const subpaths = [];\n            if (items[i] instanceof paper.Path && !items[i].closed) {\n                const firstSeg = items[i].clone();\n                const intersections = firstSeg.getIntersections(lastPath);\n                // keep first and last segments\n                for (let j = intersections.length - 1; j >= 0; j--) {\n                    const split = firstSeg.splitAt(intersections[j]);\n                    split.insertAbove(firstSeg);\n                    subpaths.push(split);\n                }\n                subpaths.push(firstSeg);\n            }\n\n            // Remove the ones that are within the eraser stroke boundary, or are already part of new path.\n            // This way subpaths only remain if they didn't get turned into a shape by subtract.\n            for (let k = subpaths.length - 1; k >= 0; k--) {\n                const segMidpoint = subpaths[k].getLocationAt(subpaths[k].length / 2).point;\n                if (lastPath.contains(segMidpoint) || newPath.contains(segMidpoint)) {\n                    subpaths[k].remove();\n                    subpaths.splice(k, 1);\n                }\n            }\n\n            if (newPath.children) {\n                this.separateCompoundPath(newPath);\n                newPath.remove();\n            }\n            items[i].remove();\n        }\n        lastPath.remove();\n    }\n\n    separateCompoundPath (compoundPath) {\n        if (!compoundPath.isClockwise()) {\n            compoundPath.reverse();\n        }\n        // Divide topologically separate shapes into their own compound paths, instead of\n        // everything being stuck together.\n        const clockwiseChildren = [];\n        const ccwChildren = [];\n        for (let j = compoundPath.children.length - 1; j >= 0; j--) {\n            const child = compoundPath.children[j];\n            if (child.isClockwise()) {\n                clockwiseChildren.push(child);\n            } else {\n                ccwChildren.push(child);\n            }\n        }\n\n        // Sort by area smallest to largest\n        clockwiseChildren.sort((a, b) => a.area - b.area);\n        ccwChildren.sort((a, b) => Math.abs(a.area) - Math.abs(b.area));\n        // Go smallest to largest non-hole, so larger non-holes don't get the smaller pieces' holes\n        for (let j = 0; j < clockwiseChildren.length; j++) {\n            const cw = clockwiseChildren[j];\n            cw.copyAttributes(compoundPath);\n            cw.fillColor = compoundPath.fillColor;\n            cw.strokeColor = compoundPath.strokeColor;\n            cw.strokeWidth = compoundPath.strokeWidth;\n            cw.insertAbove(compoundPath);\n\n            // Go backward since we are deleting elements. Backwards is largest to smallest hole.\n            let newCw = cw;\n            for (let k = ccwChildren.length - 1; k >= 0; k--) {\n                const ccw = ccwChildren[k];\n                if (this.firstEnclosesSecond(cw, ccw)) {\n                    const temp = newCw.subtract(ccw);\n                    temp.insertAbove(compoundPath);\n                    newCw.remove();\n                    newCw = temp;\n                    ccw.remove();\n                    ccwChildren.splice(k, 1);\n                }\n            }\n        }\n    }\n\n    colorMatch (existingPath, addedPath) {\n        // Note: transparent fill colors do notdetect as touching\n        return existingPath.getFillColor().equals(addedPath.getFillColor()) &&\n                (addedPath.getStrokeColor() === existingPath.getStrokeColor() || // both null\n                    (addedPath.getStrokeColor() &&\n                        addedPath.getStrokeColor().equals(existingPath.getStrokeColor()))) &&\n                addedPath.getStrokeWidth() === existingPath.getStrokeWidth() &&\n                this.touches(existingPath, addedPath);\n    }\n\n    touches (path1, path2) {\n        // Two shapes are touching if their paths intersect\n        if (path1 && path2 && path1.intersects(path2)) {\n            return true;\n        }\n        return this.firstEnclosesSecond(path1, path2) || this.firstEnclosesSecond(path2, path1);\n    }\n\n    firstEnclosesSecond (path1, path2) {\n        // Two shapes are also touching if one is completely inside the other\n        if (path1 && path2 && path2.firstSegment && path2.firstSegment.point &&\n                path1.hitTest(path2.firstSegment.point)) {\n            return true;\n        }\n        // TODO: clean up these no point paths\n        return false;\n    }\n\n    matchesAnyChild (group, path) {\n        for (const child of group.children) {\n            if (child.children && this.matchesAnyChild(path, child)) {\n                return true;\n            }\n            if (path === child) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    isMergeable (newPath, existingPath) {\n        // Path or compound path\n        if (!(existingPath instanceof paper.PathItem)) {\n            return;\n        }\n        if (newPath.children) {\n            if (this.matchesAnyChild(newPath, existingPath)) { // Don't merge with children of self\n                return false;\n            }\n        }\n        return existingPath !== newPath; // don't merge with self\n    }\n\n    deactivateTool () {\n        if (this.cursorPreview) {\n            this.cursorPreview.remove();\n            this.cursorPreview = null;\n        }\n        this.tool.remove();\n        this.tool = null;\n    }\n}\n\nexport default Blobbiness;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport brushIcon from './brush.svg';\n\nconst BrushModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.brush}\n        imgSrc={brushIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBrushModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BrushModeComponent;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport ColorStyleProptype from '../lib/color-style-proptype';\nimport Blobbiness from '../helper/blob-tools/blob';\nimport {MIXED} from '../helper/style-path';\n\nimport {changeFillColor, clearFillGradient, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {clearSelection} from '../helper/selection';\n\nimport BrushModeComponent from '../components/brush-mode/brush-mode.jsx';\n\nclass BrushMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n        this.blob = new Blobbiness(\n            this.props.onUpdateImage, this.props.clearSelectedItems);\n    }\n    componentDidMount () {\n        if (this.props.isBrushModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (nextProps.isBrushModeActive && !this.props.isBrushModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isBrushModeActive && this.props.isBrushModeActive) {\n            this.deactivateTool();\n        } else if (nextProps.isBrushModeActive && this.props.isBrushModeActive) {\n            const {fillColor, strokeColor, strokeWidth} = nextProps.colorState;\n            this.blob.setOptions({\n                isEraser: false,\n                fillColor: fillColor.primary,\n                strokeColor: strokeColor.primary,\n                strokeWidth,\n                ...nextProps.brushModeState\n            });\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isBrushModeActive !== this.props.isBrushModeActive;\n    }\n    componentWillUnmount () {\n        if (this.blob.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        // TODO: Instead of clearing selection, consider a kind of \"draw inside\"\n        // analogous to how selection works with eraser\n        clearSelection(this.props.clearSelectedItems);\n        this.props.clearGradient();\n        // Force the default brush color if fill is MIXED or transparent\n        const fillColor = this.props.colorState.fillColor.primary;\n        if (fillColor === MIXED || fillColor === null) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n        }\n        this.blob.activateTool({\n            isEraser: false,\n            ...this.props.colorState,\n            ...this.props.brushModeState\n        });\n    }\n    deactivateTool () {\n        this.blob.deactivateTool();\n    }\n    render () {\n        return (\n            <BrushModeComponent\n                isSelected={this.props.isBrushModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBrushMode.propTypes = {\n    brushModeState: PropTypes.shape({\n        brushSize: PropTypes.number.isRequired\n    }),\n    clearGradient: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    colorState: PropTypes.shape({\n        fillColor: ColorStyleProptype,\n        strokeColor: ColorStyleProptype,\n        strokeWidth: PropTypes.number\n    }).isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    isBrushModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    brushModeState: state.scratchPaint.brushMode,\n    colorState: state.scratchPaint.color,\n    isBrushModeActive: state.scratchPaint.mode === Modes.BRUSH\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearGradient: () => {\n        dispatch(clearFillGradient());\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BRUSH));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BrushMode);\n","import log from '../log/log';\n\nconst CHANGE_ERASER_SIZE = 'scratch-paint/eraser-mode/CHANGE_ERASER_SIZE';\nconst initialState = {brushSize: 40};\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_ERASER_SIZE:\n        if (isNaN(action.brushSize)) {\n            log.warn(`Invalid brush size: ${action.brushSize}`);\n            return state;\n        }\n        return {brushSize: Math.max(1, action.brushSize)};\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeBrushSize = function (brushSize) {\n    return {\n        type: CHANGE_ERASER_SIZE,\n        brushSize: brushSize\n    };\n};\n\nexport {\n    reducer as default,\n    changeBrushSize\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport eraserIcon from './eraser.svg';\n\nconst EraserModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.eraser}\n        imgSrc={eraserIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nEraserModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default EraserModeComponent;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport Blobbiness from '../helper/blob-tools/blob';\nimport {changeBrushSize} from '../reducers/eraser-mode';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport EraserModeComponent from '../components/eraser-mode/eraser-mode.jsx';\nimport {changeMode} from '../reducers/modes';\n\nclass EraserMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n        this.blob = new Blobbiness(\n            this.props.onUpdateImage, this.props.clearSelectedItems);\n    }\n    componentDidMount () {\n        if (this.props.isEraserModeActive) {\n            this.activateTool();\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (nextProps.isEraserModeActive && !this.props.isEraserModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isEraserModeActive && this.props.isEraserModeActive) {\n            this.deactivateTool();\n        } else if (nextProps.isEraserModeActive && this.props.isEraserModeActive) {\n            this.blob.setOptions({\n                isEraser: true,\n                ...nextProps.eraserModeState\n            });\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isEraserModeActive !== this.props.isEraserModeActive;\n    }\n    componentWillUnmount () {\n        if (this.blob.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        this.blob.activateTool({isEraser: true, ...this.props.eraserModeState});\n    }\n    deactivateTool () {\n        this.blob.deactivateTool();\n    }\n    render () {\n        return (\n            <EraserModeComponent\n                isSelected={this.props.isEraserModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nEraserMode.propTypes = {\n    clearSelectedItems: PropTypes.func.isRequired,\n    eraserModeState: PropTypes.shape({\n        brushSize: PropTypes.number.isRequired\n    }),\n    handleMouseDown: PropTypes.func.isRequired,\n    isEraserModeActive: PropTypes.bool.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    eraserModeState: state.scratchPaint.eraserMode,\n    isEraserModeActive: state.scratchPaint.mode === Modes.ERASER\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    changeBrushSize: brushSize => {\n        dispatch(changeBrushSize(brushSize));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.ERASER));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(EraserMode);\n","import log from '../log/log';\nimport {CHANGE_FILL_GRADIENT_TYPE} from './fill-style';\nimport GradientTypes from '../lib/gradient-types';\n\nconst CHANGE_COLOR_INDEX = 'scratch-paint/color-index/CHANGE_COLOR_INDEX';\nconst initialState = 0;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_COLOR_INDEX:\n        if (action.index !== 1 && action.index !== 0) {\n            log.warn(`Invalid color index: ${action.index}`);\n            return state;\n        }\n        return action.index;\n    case CHANGE_FILL_GRADIENT_TYPE:\n        if (action.gradientType === GradientTypes.SOLID) return 0;\n        /* falls through */\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeColorIndex = function (index) {\n    return {\n        type: CHANGE_COLOR_INDEX,\n        index: index\n    };\n};\n\nexport {\n    reducer as default,\n    changeColorIndex\n};\n","const OPEN_MODAL = 'scratch-paint/modals/OPEN_MODAL';\nconst CLOSE_MODAL = 'scratch-paint/modals/CLOSE_MODAL';\n\nconst MODAL_FILL_COLOR = 'fillColor';\nconst MODAL_STROKE_COLOR = 'strokeColor';\n\nconst initialState = {\n    [MODAL_FILL_COLOR]: false,\n    [MODAL_STROKE_COLOR]: false\n};\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case OPEN_MODAL:\n        return Object.assign({}, initialState, {\n            [action.modal]: true\n        });\n    case CLOSE_MODAL:\n        return Object.assign({}, initialState, {\n            [action.modal]: false\n        });\n    default:\n        return state;\n    }\n};\n\nconst openModal = function (modal) {\n    return {\n        type: OPEN_MODAL,\n        modal: modal\n    };\n};\n\nconst closeModal = function (modal) {\n    return {\n        type: CLOSE_MODAL,\n        modal: modal\n    };\n};\n\n// Action creators ==================================\n\nconst openFillColor = function () {\n    return openModal(MODAL_FILL_COLOR);\n};\n\nconst openStrokeColor = function () {\n    return openModal(MODAL_STROKE_COLOR);\n};\n\nconst closeFillColor = function () {\n    return closeModal(MODAL_FILL_COLOR);\n};\n\nconst closeStrokeColor = function () {\n    return closeModal(MODAL_STROKE_COLOR);\n};\n\nexport {\n    reducer as default,\n    openFillColor,\n    openStrokeColor,\n    closeFillColor,\n    closeStrokeColor\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport {MIXED} from '../../helper/style-path';\n\nimport noFillIcon from './no-fill.svg';\nimport mixedFillIcon from './mixed-fill.svg';\nimport styles from './color-button.css';\nimport GradientTypes from '../../lib/gradient-types';\nimport log from '../../log/log';\n\nconst colorToBackground = (color, color2, gradientType) => {\n    if (color === MIXED || (gradientType !== GradientTypes.SOLID && color2 === MIXED)) return 'white';\n    if (color === null) color = 'white';\n    if (color2 === null) color2 = 'white';\n    switch (gradientType) {\n    case GradientTypes.SOLID: return color;\n    case GradientTypes.HORIZONTAL: return `linear-gradient(to right, ${color}, ${color2})`;\n    case GradientTypes.VERTICAL: return `linear-gradient(${color}, ${color2})`;\n    case GradientTypes.RADIAL: return `radial-gradient(${color}, ${color2})`;\n    default: log.error(`Unrecognized gradient type: ${gradientType}`);\n    }\n};\n\nconst ColorButtonComponent = props => (\n    <div\n        className={styles.colorButton}\n        onClick={props.onClick}\n    >\n        <div\n            className={classNames(styles.colorButtonSwatch, {\n                [styles.outlineSwatch]: props.outline && !(props.color === MIXED)\n            })}\n            style={{\n                background: colorToBackground(props.color, props.color2, props.gradientType)\n            }}\n        >\n            {props.color === null && (props.gradientType === GradientTypes.SOLID || props.color2 === null) ? (\n                <img\n                    className={styles.swatchIcon}\n                    draggable={false}\n                    src={noFillIcon}\n                />\n            ) : ((props.color === MIXED || (props.gradientType !== GradientTypes.SOLID && props.color2 === MIXED) ? (\n                <img\n                    className={styles.swatchIcon}\n                    draggable={false}\n                    src={mixedFillIcon}\n                />\n            ) : null))}\n        </div>\n        <div className={styles.colorButtonArrow}>▾</div>\n    </div>\n);\n\nColorButtonComponent.propTypes = {\n    color: PropTypes.string,\n    color2: PropTypes.string,\n    gradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,\n    onClick: PropTypes.func.isRequired,\n    outline: PropTypes.bool.isRequired\n};\n\nColorButtonComponent.defaultProps = {\n    outline: false\n};\n\nexport default ColorButtonComponent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport bindAll from 'lodash.bindall';\nimport classNames from 'classnames';\nimport {getEventXY} from '../../lib/touch-utils';\n\nimport styles from './slider.css';\n\nconst CONTAINER_WIDTH = 150;\nconst HANDLE_WIDTH = 26;\n\nclass SliderComponent extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'handleMouseDown',\n            'handleMouseUp',\n            'handleMouseMove',\n            'handleClickBackground',\n            'setBackground',\n            'setHandle'\n        ]);\n\n        // Distance from the left edge of the slider handle to the mouse down/click event\n        this.handleClickOffset = 0;\n    }\n\n    handleMouseDown (event) {\n        document.addEventListener('mousemove', this.handleMouseMove);\n        document.addEventListener('mouseup', this.handleMouseUp);\n        document.addEventListener('touchmove', this.handleMouseMove, {passive: false});\n        document.addEventListener('touchend', this.handleMouseUp);\n\n        this.handleClickOffset = getEventXY(event).x - this.handle.getBoundingClientRect().left;\n    }\n\n    handleMouseUp () {\n        document.removeEventListener('mousemove', this.handleMouseMove);\n        document.removeEventListener('mouseup', this.handleMouseUp);\n        document.removeEventListener('touchmove', this.handleMouseMove, {passive: false});\n        document.removeEventListener('touchend', this.handleMouseUp);\n    }\n\n    handleMouseMove (event) {\n        event.preventDefault();\n        this.props.onChange(this.scaleMouseToSliderPosition(event));\n    }\n\n    handleClickBackground (event) {\n        // Because the slider handle is a child of the \"background\" element this handler is registered to, it calls this\n        // when clicked as well. We only want to change the slider value if the user clicked on the background itself.\n        if (event.target !== this.background) return;\n        // Move slider handle's center to the cursor\n        this.handleClickOffset = HANDLE_WIDTH / 2;\n        this.props.onChange(this.scaleMouseToSliderPosition(event));\n    }\n\n    scaleMouseToSliderPosition (event){\n        const {x} = getEventXY(event);\n        const backgroundBBox = this.background.getBoundingClientRect();\n        const scaledX = x - backgroundBBox.left - this.handleClickOffset;\n        return Math.max(0, Math.min(100, 100 * scaledX / (backgroundBBox.width - HANDLE_WIDTH)));\n    }\n\n    setBackground (ref) {\n        this.background = ref;\n    }\n\n    setHandle (ref) {\n        this.handle = ref;\n    }\n\n    render () {\n        const halfHandleWidth = HANDLE_WIDTH / 2;\n        const pixelMin = halfHandleWidth;\n        const pixelMax = CONTAINER_WIDTH - halfHandleWidth;\n        const handleOffset = pixelMin +\n            ((pixelMax - pixelMin) * (this.props.value / 100)) -\n            halfHandleWidth;\n        return (\n            <div\n                className={classNames({\n                    [styles.container]: true,\n                    [styles.last]: this.props.lastSlider\n                })}\n                ref={this.setBackground}\n                style={{\n                    backgroundImage: this.props.background\n                }}\n                onClick={this.handleClickBackground}\n            >\n                <div\n                    className={styles.handle}\n                    ref={this.setHandle}\n                    style={{\n                        left: `${handleOffset}px`\n                    }}\n                    onMouseDown={this.handleMouseDown}\n                    onTouchStart={this.handleMouseDown}\n                />\n            </div>\n        );\n    }\n}\n\nSliderComponent.propTypes = {\n    background: PropTypes.string,\n    lastSlider: PropTypes.bool,\n    onChange: PropTypes.func.isRequired,\n    value: PropTypes.number.isRequired\n};\n\nSliderComponent.defaultProps = {\n    background: 'yellow'\n};\n\nexport default SliderComponent;\nexport {CONTAINER_WIDTH, HANDLE_WIDTH};\n","/* @todo This file should be pulled out into a shared library with scratch-gui,\nconsolidating this component with icon-button.jsx in gui.\nSee #13 */\n\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../button/button.jsx';\n\nimport styles from './labeled-icon-button.css';\n\nconst LabeledIconButton = ({\n    className,\n    hideLabel,\n    imgAlt,\n    imgSrc,\n    onClick,\n    title,\n    ...props\n}) => (\n    <Button\n        className={classNames(className, styles.modEditField)}\n        onClick={onClick}\n        {...props}\n    >\n        <img\n            alt={imgAlt || title}\n            className={styles.editFieldIcon}\n            draggable={false}\n            src={imgSrc}\n            title={title}\n        />\n        {!hideLabel && <span className={styles.editFieldTitle}>{title}</span>}\n    </Button>\n);\n\nLabeledIconButton.propTypes = {\n    className: PropTypes.string,\n    hideLabel: PropTypes.bool,\n    highlighted: PropTypes.bool,\n    imgAlt: PropTypes.string,\n    imgSrc: PropTypes.string.isRequired,\n    onClick: PropTypes.func.isRequired,\n    title: PropTypes.string.isRequired\n};\n\nexport default LabeledIconButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {defineMessages, FormattedMessage, injectIntl, intlShape} from 'react-intl';\n\nimport classNames from 'classnames';\nimport parseColor from 'parse-color';\n\nimport Slider, {CONTAINER_WIDTH, HANDLE_WIDTH} from '../forms/slider.jsx';\nimport LabeledIconButton from '../labeled-icon-button/labeled-icon-button.jsx';\nimport styles from './color-picker.css';\nimport GradientTypes from '../../lib/gradient-types';\nimport {MIXED} from '../../helper/style-path';\n\nimport eyeDropperIcon from './icons/eye-dropper.svg';\nimport noFillIcon from '../color-button/no-fill.svg';\nimport mixedFillIcon from '../color-button/mixed-fill.svg';\nimport fillHorzGradientIcon from './icons/fill-horz-gradient-enabled.svg';\nimport fillRadialIcon from './icons/fill-radial-enabled.svg';\nimport fillSolidIcon from './icons/fill-solid-enabled.svg';\nimport fillVertGradientIcon from './icons/fill-vert-gradient-enabled.svg';\nimport swapIcon from './icons/swap.svg';\nimport Modes from '../../lib/modes';\n\nconst hsvToHex = (h, s, v) =>\n    // Scale hue back up to [0, 360] from [0, 100]\n    parseColor(`hsv(${3.6 * h}, ${s}, ${v})`).hex\n;\n\nconst messages = defineMessages({\n    swap: {\n        defaultMessage: 'Swap',\n        description: 'Label for button that swaps the two colors in a gradient',\n        id: 'paint.colorPicker.swap'\n    }\n});\nclass ColorPickerComponent extends React.Component {\n    _makeBackground (channel) {\n        const stops = [];\n        // Generate the color slider background CSS gradients by adding\n        // color stops depending on the slider.\n        for (let n = 100; n >= 0; n -= 10) {\n            switch (channel) {\n            case 'hue':\n                stops.push(hsvToHex(n, this.props.saturation, this.props.brightness));\n                break;\n            case 'saturation':\n                stops.push(hsvToHex(this.props.hue, n, this.props.brightness));\n                break;\n            case 'brightness':\n                stops.push(hsvToHex(this.props.hue, this.props.saturation, n));\n                break;\n            default:\n                throw new Error(`Unknown channel for color sliders: ${channel}`);\n            }\n        }\n\n        // The sliders are a rounded capsule shape, and the slider handles are circles. As a consequence, when the\n        // slider handle is fully to one side, its center is actually moved away from the start/end of the slider by\n        // the slider handle's radius, meaning that the effective range of the slider excludes the rounded caps.\n        // To compensate for this, position the first stop to where the rounded cap ends, and position the last stop\n        // to where the rounded cap begins.\n        const halfHandleWidth = HANDLE_WIDTH / 2;\n        stops[0] += ` 0 ${halfHandleWidth}px`;\n        stops[stops.length - 1] += ` ${CONTAINER_WIDTH - halfHandleWidth}px 100%`;\n\n        return `linear-gradient(to left, ${stops.join(',')})`;\n    }\n    render () {\n        return (\n            <div\n                className={styles.colorPickerContainer}\n                dir={this.props.rtl ? 'rtl' : 'ltr'}\n            >\n                {this.props.shouldShowGradientTools ? (\n                    <div>\n                        <div className={styles.row}>\n                            <div className={styles.gradientPickerRow}>\n                                <img\n                                    className={classNames({\n                                        [styles.inactiveGradient]: this.props.gradientType !== GradientTypes.SOLID,\n                                        [styles.clickable]: true\n                                    })}\n                                    draggable={false}\n                                    src={fillSolidIcon}\n                                    onClick={this.props.onChangeGradientTypeSolid}\n                                />\n                                <img\n                                    className={classNames({\n                                        [styles.inactiveGradient]:\n                                            this.props.gradientType !== GradientTypes.HORIZONTAL,\n                                        [styles.clickable]: true\n                                    })}\n                                    draggable={false}\n                                    src={fillHorzGradientIcon}\n                                    onClick={this.props.onChangeGradientTypeHorizontal}\n                                />\n                                <img\n                                    className={classNames({\n                                        [styles.inactiveGradient]: this.props.gradientType !== GradientTypes.VERTICAL,\n                                        [styles.clickable]: true\n                                    })}\n                                    draggable={false}\n                                    src={fillVertGradientIcon}\n                                    onClick={this.props.onChangeGradientTypeVertical}\n                                />\n                                <img\n                                    className={classNames({\n                                        [styles.inactiveGradient]: this.props.gradientType !== GradientTypes.RADIAL,\n                                        [styles.clickable]: true\n                                    })}\n                                    draggable={false}\n                                    src={fillRadialIcon}\n                                    onClick={this.props.onChangeGradientTypeRadial}\n                                />\n                            </div>\n                        </div>\n                        <div className={styles.divider} />\n                        {this.props.gradientType === GradientTypes.SOLID ? null : (\n                            <div className={styles.row}>\n                                <div\n                                    className={classNames(\n                                        styles.gradientPickerRow,\n                                        styles.gradientSwatchesRow\n                                    )}\n                                >\n                                    <div\n                                        className={classNames({\n                                            [styles.clickable]: true,\n                                            [styles.swatch]: true,\n                                            [styles.largeSwatch]: true,\n                                            [styles.activeSwatch]: this.props.colorIndex === 0\n                                        })}\n                                        style={{\n                                            backgroundColor: this.props.color === null || this.props.color === MIXED ?\n                                                'white' : this.props.color\n                                        }}\n                                        onClick={this.props.onSelectColor}\n                                    >\n                                        {this.props.color === null ? (\n                                            <img\n                                                className={styles.largeSwatchIcon}\n                                                draggable={false}\n                                                src={noFillIcon}\n                                            />\n                                        ) : this.props.color === MIXED ? (\n                                            <img\n                                                className={styles.largeSwatchIcon}\n                                                draggable={false}\n                                                src={mixedFillIcon}\n                                            />\n                                        ) : null}\n                                    </div>\n                                    <LabeledIconButton\n                                        className={styles.swapButton}\n                                        imgSrc={swapIcon}\n                                        title={this.props.intl.formatMessage(messages.swap)}\n                                        onClick={this.props.onSwap}\n                                    />\n                                    <div\n                                        className={classNames({\n                                            [styles.clickable]: true,\n                                            [styles.swatch]: true,\n                                            [styles.largeSwatch]: true,\n                                            [styles.activeSwatch]: this.props.colorIndex === 1\n                                        })}\n                                        style={{\n                                            backgroundColor: this.props.color2 === null || this.props.color2 === MIXED ?\n                                                'white' : this.props.color2\n                                        }}\n                                        onClick={this.props.onSelectColor2}\n                                    >\n                                        {this.props.color2 === null ? (\n                                            <img\n                                                className={styles.largeSwatchIcon}\n                                                draggable={false}\n                                                src={noFillIcon}\n                                            />\n                                        ) : this.props.color2 === MIXED ? (\n                                            <img\n                                                className={styles.largeSwatchIcon}\n                                                draggable={false}\n                                                src={mixedFillIcon}\n                                            />\n                                        ) : null}\n                                    </div>\n                                </div>\n                            </div>\n                        )}\n                    </div>\n                ) : null}\n                <div className={styles.row}>\n                    <div className={styles.rowHeader}>\n                        <span className={styles.labelName}>\n                            <FormattedMessage\n                                defaultMessage=\"Color\"\n                                description=\"Label for the hue component in the color picker\"\n                                id=\"paint.paintEditor.hue\"\n                            />\n                        </span>\n                        <span className={styles.labelReadout}>\n                            {Math.round(this.props.hue)}\n                        </span>\n                    </div>\n                    <div className={styles.rowSlider}>\n                        <Slider\n                            background={this._makeBackground('hue')}\n                            value={this.props.hue}\n                            onChange={this.props.onHueChange}\n                        />\n                    </div>\n                </div>\n                <div className={styles.row}>\n                    <div className={styles.rowHeader}>\n                        <span className={styles.labelName}>\n                            <FormattedMessage\n                                defaultMessage=\"Saturation\"\n                                description=\"Label for the saturation component in the color picker\"\n                                id=\"paint.paintEditor.saturation\"\n                            />\n                        </span>\n                        <span className={styles.labelReadout}>\n                            {Math.round(this.props.saturation)}\n                        </span>\n                    </div>\n                    <div className={styles.rowSlider}>\n                        <Slider\n                            background={this._makeBackground('saturation')}\n                            value={this.props.saturation}\n                            onChange={this.props.onSaturationChange}\n                        />\n                    </div>\n                </div>\n                <div className={styles.row}>\n                    <div className={styles.rowHeader}>\n                        <span className={styles.labelName}>\n                            <FormattedMessage\n                                defaultMessage=\"Brightness\"\n                                description=\"Label for the brightness component in the color picker\"\n                                id=\"paint.paintEditor.brightness\"\n                            />\n                        </span>\n                        <span className={styles.labelReadout}>\n                            {Math.round(this.props.brightness)}\n                        </span>\n                    </div>\n                    <div className={styles.rowSlider}>\n                        <Slider\n                            lastSlider\n                            background={this._makeBackground('brightness')}\n                            value={this.props.brightness}\n                            onChange={this.props.onBrightnessChange}\n                        />\n                    </div>\n                </div>\n                <div className={styles.swatchRow}>\n                    <div className={styles.swatches}>\n                        {this.props.mode === Modes.BIT_LINE ||\n                            this.props.mode === Modes.BIT_RECT ||\n                            this.props.mode === Modes.BIT_OVAL ||\n                            this.props.mode === Modes.BIT_TEXT ? null :\n                            (<div\n                                className={classNames({\n                                    [styles.clickable]: true,\n                                    [styles.swatch]: true,\n                                    [styles.activeSwatch]:\n                                        (this.props.colorIndex === 0 && this.props.color === null) ||\n                                        (this.props.colorIndex === 1 && this.props.color2 === null)\n                                })}\n                                onClick={this.props.onTransparent}\n                            >\n                                <img\n                                    className={styles.swatchIcon}\n                                    draggable={false}\n                                    src={noFillIcon}\n                                />\n                            </div>)\n                        }\n                    </div>\n                    <div className={styles.swatches}>\n                        <div\n                            className={classNames({\n                                [styles.clickable]: true,\n                                [styles.swatch]: true,\n                                [styles.activeSwatch]: this.props.isEyeDropping\n                            })}\n                            onClick={this.props.onActivateEyeDropper}\n                        >\n                            <img\n                                className={styles.swatchIcon}\n                                draggable={false}\n                                src={eyeDropperIcon}\n                            />\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\n\nColorPickerComponent.propTypes = {\n    brightness: PropTypes.number.isRequired,\n    color: PropTypes.string,\n    color2: PropTypes.string,\n    colorIndex: PropTypes.number.isRequired,\n    gradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,\n    hue: PropTypes.number.isRequired,\n    intl: intlShape.isRequired,\n    isEyeDropping: PropTypes.bool.isRequired,\n    mode: PropTypes.oneOf(Object.keys(Modes)),\n    onActivateEyeDropper: PropTypes.func.isRequired,\n    onBrightnessChange: PropTypes.func.isRequired,\n    onChangeGradientTypeHorizontal: PropTypes.func.isRequired,\n    onChangeGradientTypeRadial: PropTypes.func.isRequired,\n    onChangeGradientTypeSolid: PropTypes.func.isRequired,\n    onChangeGradientTypeVertical: PropTypes.func.isRequired,\n    onHueChange: PropTypes.func.isRequired,\n    onSaturationChange: PropTypes.func.isRequired,\n    onSelectColor: PropTypes.func.isRequired,\n    onSelectColor2: PropTypes.func.isRequired,\n    onSwap: PropTypes.func,\n    onTransparent: PropTypes.func.isRequired,\n    rtl: PropTypes.bool.isRequired,\n    saturation: PropTypes.number.isRequired,\n    shouldShowGradientTools: PropTypes.bool.isRequired\n};\n\nexport default injectIntl(ColorPickerComponent);\n","import bindAll from 'lodash.bindall';\nimport {connect} from 'react-redux';\nimport paper from '@scratch/paper';\nimport parseColor from 'parse-color';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport {changeColorIndex} from '../reducers/color-index';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {activateEyeDropper} from '../reducers/eye-dropper';\nimport GradientTypes from '../lib/gradient-types';\n\nimport ColorPickerComponent from '../components/color-picker/color-picker.jsx';\nimport {MIXED} from '../helper/style-path';\nimport Modes from '../lib/modes';\n\nconst colorStringToHsv = hexString => {\n    const hsv = parseColor(hexString).hsv;\n    // Hue comes out in [0, 360], limit to [0, 100]\n    hsv[0] = hsv[0] / 3.6;\n    // Black is parsed as {0, 0, 0}, but turn saturation up to 100\n    // to make it easier to see slider values.\n    if (hsv[1] === 0 && hsv[2] === 0) {\n        hsv[1] = 100;\n    }\n    return hsv;\n};\n\nconst hsvToHex = (h, s, v) =>\n    // Scale hue back up to [0, 360] from [0, 100]\n    parseColor(`hsv(${3.6 * h}, ${s}, ${v})`).hex\n;\n\n// Important! This component ignores new color props except when isEyeDropping\n// This is to make the HSV <=> RGB conversion stable. The sliders manage their\n// own changes until unmounted or color changes with props.isEyeDropping = true.\nclass ColorPicker extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'getHsv',\n            'handleChangeGradientTypeHorizontal',\n            'handleChangeGradientTypeRadial',\n            'handleChangeGradientTypeSolid',\n            'handleChangeGradientTypeVertical',\n            'handleHueChange',\n            'handleSaturationChange',\n            'handleBrightnessChange',\n            'handleTransparent',\n            'handleActivateEyeDropper'\n        ]);\n\n        const color = props.colorIndex === 0 ? props.color : props.color2;\n        const hsv = this.getHsv(color);\n        this.state = {\n            hue: hsv[0],\n            saturation: hsv[1],\n            brightness: hsv[2]\n        };\n    }\n    componentWillReceiveProps (newProps) {\n        const color = newProps.colorIndex === 0 ? this.props.color : this.props.color2;\n        const newColor = newProps.colorIndex === 0 ? newProps.color : newProps.color2;\n        const colorSetByEyedropper = this.props.isEyeDropping && color !== newColor;\n        if (colorSetByEyedropper || this.props.colorIndex !== newProps.colorIndex) {\n            const hsv = this.getHsv(newColor);\n            this.setState({\n                hue: hsv[0],\n                saturation: hsv[1],\n                brightness: hsv[2]\n            });\n        }\n    }\n    getHsv (color) {\n        const isTransparent = color === null;\n        const isMixed = color === MIXED;\n        return isTransparent || isMixed ?\n            [50, 100, 100] : colorStringToHsv(color);\n    }\n    handleHueChange (hue) {\n        this.setState({hue: hue}, () => {\n            this.handleColorChange();\n        });\n    }\n    handleSaturationChange (saturation) {\n        this.setState({saturation: saturation}, () => {\n            this.handleColorChange();\n        });\n    }\n    handleBrightnessChange (brightness) {\n        this.setState({brightness: brightness}, () => {\n            this.handleColorChange();\n        });\n    }\n    handleColorChange () {\n        this.props.onChangeColor(hsvToHex(\n            this.state.hue,\n            this.state.saturation,\n            this.state.brightness\n        ));\n    }\n    handleTransparent () {\n        this.props.onChangeColor(null);\n    }\n    handleActivateEyeDropper () {\n        this.props.onActivateEyeDropper(\n            paper.tool, // get the currently active tool from paper\n            this.props.onChangeColor\n        );\n    }\n    handleChangeGradientTypeHorizontal () {\n        this.props.onChangeGradientType(GradientTypes.HORIZONTAL);\n    }\n    handleChangeGradientTypeRadial () {\n        this.props.onChangeGradientType(GradientTypes.RADIAL);\n    }\n    handleChangeGradientTypeSolid () {\n        this.props.onChangeGradientType(GradientTypes.SOLID);\n    }\n    handleChangeGradientTypeVertical () {\n        this.props.onChangeGradientType(GradientTypes.VERTICAL);\n    }\n    render () {\n        return (\n            <ColorPickerComponent\n                brightness={this.state.brightness}\n                color={this.props.color}\n                color2={this.props.color2}\n                colorIndex={this.props.colorIndex}\n                gradientType={this.props.gradientType}\n                hue={this.state.hue}\n                isEyeDropping={this.props.isEyeDropping}\n                mode={this.props.mode}\n                rtl={this.props.rtl}\n                saturation={this.state.saturation}\n                shouldShowGradientTools={this.props.shouldShowGradientTools}\n                onActivateEyeDropper={this.handleActivateEyeDropper}\n                onBrightnessChange={this.handleBrightnessChange}\n                onChangeGradientTypeHorizontal={this.handleChangeGradientTypeHorizontal}\n                onChangeGradientTypeRadial={this.handleChangeGradientTypeRadial}\n                onChangeGradientTypeSolid={this.handleChangeGradientTypeSolid}\n                onChangeGradientTypeVertical={this.handleChangeGradientTypeVertical}\n                onHueChange={this.handleHueChange}\n                onSaturationChange={this.handleSaturationChange}\n                onSelectColor={this.props.onSelectColor}\n                onSelectColor2={this.props.onSelectColor2}\n                onSwap={this.props.onSwap}\n                onTransparent={this.handleTransparent}\n            />\n        );\n    }\n}\n\nColorPicker.propTypes = {\n    color: PropTypes.string,\n    color2: PropTypes.string,\n    colorIndex: PropTypes.number.isRequired,\n    gradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,\n    isEyeDropping: PropTypes.bool.isRequired,\n    mode: PropTypes.oneOf(Object.keys(Modes)),\n    onActivateEyeDropper: PropTypes.func.isRequired,\n    onChangeColor: PropTypes.func.isRequired,\n    onChangeGradientType: PropTypes.func,\n    onSelectColor: PropTypes.func.isRequired,\n    onSelectColor2: PropTypes.func.isRequired,\n    onSwap: PropTypes.func,\n    rtl: PropTypes.bool.isRequired,\n    shouldShowGradientTools: PropTypes.bool.isRequired\n};\n\nconst mapStateToProps = state => ({\n    colorIndex: state.scratchPaint.fillMode.colorIndex,\n    isEyeDropping: state.scratchPaint.color.eyeDropper.active,\n    mode: state.scratchPaint.mode,\n    rtl: state.scratchPaint.layout.rtl\n});\n\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    onActivateEyeDropper: (currentTool, callback) => {\n        dispatch(activateEyeDropper(currentTool, callback));\n    },\n    onSelectColor: () => {\n        dispatch(changeColorIndex(0));\n    },\n    onSelectColor2: () => {\n        dispatch(changeColorIndex(1));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ColorPicker);\n","import classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './input-group.css';\n\nconst InputGroup = props => (\n    <div\n        className={classNames(props.className, styles.inputGroup, {\n            [styles.disabled]: props.disabled\n        })}\n        dir={props.rtl ? 'rtl' : ''}\n    >\n        {props.children}\n    </div>\n);\n\nInputGroup.propTypes = {\n    children: PropTypes.node.isRequired,\n    className: PropTypes.string,\n    disabled: PropTypes.bool,\n    rtl: PropTypes.bool\n};\n\nexport default InputGroup;\n","/* DO NOT EDIT\n@todo This file is copied from GUI and should be pulled out into a shared library.\nSee https://github.com/LLK/scratch-paint/issues/13 */\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport styles from './label.css';\n\nconst Label = props => (\n    <label className={styles.inputGroup}>\n        <span className={props.secondary ? styles.inputLabelSecondary : styles.inputLabel}>\n            {props.text}\n        </span>\n        {props.children}\n    </label>\n);\n\nLabel.propTypes = {\n    children: PropTypes.node,\n    secondary: PropTypes.bool,\n    text: PropTypes.string.isRequired\n};\n\nLabel.defaultProps = {\n    secondary: false\n};\n\nexport default Label;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Popover from 'react-popover';\n\nimport ColorButton from './color-button/color-button.jsx';\nimport ColorPicker from '../containers/color-picker.jsx';\nimport InputGroup from './input-group/input-group.jsx';\nimport Label from './forms/label.jsx';\n\nimport GradientTypes from '../lib/gradient-types';\n\nconst ColorIndicatorComponent = props => (\n    <InputGroup\n        className={props.className}\n        disabled={props.disabled}\n    >\n        <Popover\n            body={\n                <ColorPicker\n                    color={props.color}\n                    color2={props.color2}\n                    gradientType={props.gradientType}\n                    shouldShowGradientTools={props.shouldShowGradientTools}\n                    onChangeColor={props.onChangeColor}\n                    onChangeGradientType={props.onChangeGradientType}\n                    onSwap={props.onSwap}\n                />\n            }\n            isOpen={props.colorModalVisible}\n            preferPlace=\"below\"\n            onOuterAction={props.onCloseColor}\n        >\n            <Label text={props.label}>\n                <ColorButton\n                    color={props.color}\n                    color2={props.color2}\n                    gradientType={props.gradientType}\n                    onClick={props.onOpenColor}\n                    outline={props.outline}\n                />\n            </Label>\n        </Popover>\n    </InputGroup>\n);\n\nColorIndicatorComponent.propTypes = {\n    className: PropTypes.string,\n    disabled: PropTypes.bool.isRequired,\n    color: PropTypes.string,\n    color2: PropTypes.string,\n    colorModalVisible: PropTypes.bool.isRequired,\n    gradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,\n    label: PropTypes.string.isRequired,\n    onChangeColor: PropTypes.func.isRequired,\n    onChangeGradientType: PropTypes.func.isRequired,\n    onCloseColor: PropTypes.func.isRequired,\n    onOpenColor: PropTypes.func.isRequired,\n    onSwap: PropTypes.func.isRequired,\n    outline: PropTypes.bool.isRequired,\n    shouldShowGradientTools: PropTypes.bool.isRequired\n};\n\nexport default ColorIndicatorComponent;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport bindAll from 'lodash.bindall';\nimport parseColor from 'parse-color';\nimport {injectIntl, intlShape} from 'react-intl';\n\nimport {getSelectedLeafItems} from '../helper/selection';\nimport Formats, {isBitmap} from '../lib/format';\nimport GradientTypes from '../lib/gradient-types';\n\nimport ColorIndicatorComponent from '../components/color-indicator.jsx';\nimport {applyColorToSelection,\n    applyGradientTypeToSelection,\n    applyStrokeWidthToSelection,\n    generateSecondaryColor,\n    swapColorsInSelection,\n    MIXED} from '../helper/style-path';\n\nconst makeColorIndicator = (label, isStroke) => {\n    class ColorIndicator extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'handleChangeColor',\n                'handleChangeGradientType',\n                'handleCloseColor',\n                'handleSwap'\n            ]);\n\n            // Flag to track whether an svg-update-worthy change has been made\n            this._hasChanged = false;\n        }\n        componentWillReceiveProps (newProps) {\n            const {colorModalVisible, onUpdateImage} = this.props;\n            if (colorModalVisible && !newProps.colorModalVisible) {\n                // Submit the new SVG, which also stores a single undo/redo action.\n                if (this._hasChanged) onUpdateImage();\n                this._hasChanged = false;\n            }\n        }\n        handleChangeColor (newColor) {\n            // Stroke-selector-specific logic: if we change the stroke color from \"none\" to something visible, ensure\n            // there's a nonzero stroke width. If we change the stroke color to \"none\", set the stroke width to zero.\n            if (isStroke) {\n\n                // Whether the old color style in this color indicator was null (completely transparent).\n                // If it's a solid color, this means that the first color is null.\n                // If it's a gradient, this means both colors are null.\n                const oldStyleWasNull = this.props.gradientType === GradientTypes.SOLID ?\n                    this.props.color === null :\n                    this.props.color === null && this.props.color2 === null;\n\n                const otherColor = this.props.colorIndex === 1 ? this.props.color : this.props.color2;\n                // Whether the new color style in this color indicator is null.\n                const newStyleIsNull = this.props.gradientType === GradientTypes.SOLID ?\n                    newColor === null :\n                    newColor === null && otherColor === null;\n\n                if (oldStyleWasNull && !newStyleIsNull) {\n                    this._hasChanged = applyStrokeWidthToSelection(1, this.props.textEditTarget) || this._hasChanged;\n                    this.props.onChangeStrokeWidth(1);\n                } else if (!oldStyleWasNull && newStyleIsNull) {\n                    this._hasChanged = applyStrokeWidthToSelection(0, this.props.textEditTarget) || this._hasChanged;\n                    this.props.onChangeStrokeWidth(0);\n                }\n            }\n\n            const formatIsBitmap = isBitmap(this.props.format);\n            // Apply color and update redux, but do not update svg until picker closes.\n            const isDifferent = applyColorToSelection(\n                newColor,\n                this.props.colorIndex,\n                this.props.gradientType === GradientTypes.SOLID,\n                // In bitmap mode, only the fill color selector is used, but it applies to stroke if fillBitmapShapes\n                // is set to true via the \"Fill\"/\"Outline\" selector button\n                isStroke || (formatIsBitmap && !this.props.fillBitmapShapes),\n                this.props.textEditTarget);\n            this._hasChanged = this._hasChanged || isDifferent;\n            this.props.onChangeColor(newColor, this.props.colorIndex);\n        }\n        handleChangeGradientType (gradientType) {\n            const formatIsBitmap = isBitmap(this.props.format);\n            // Apply color and update redux, but do not update svg until picker closes.\n            const isDifferent = applyGradientTypeToSelection(\n                gradientType,\n                isStroke || (formatIsBitmap && !this.props.fillBitmapShapes),\n                this.props.textEditTarget);\n            this._hasChanged = this._hasChanged || isDifferent;\n            const hasSelectedItems = getSelectedLeafItems().length > 0;\n            if (hasSelectedItems) {\n                if (isDifferent) {\n                    // Recalculates the swatch colors\n                    this.props.setSelectedItems(this.props.format);\n                }\n            }\n            if (this.props.gradientType === GradientTypes.SOLID && gradientType !== GradientTypes.SOLID) {\n                // Generate color 2 and change to the 2nd swatch when switching from solid to gradient\n                if (!hasSelectedItems) {\n                    this.props.onChangeColor(generateSecondaryColor(this.props.color), 1);\n                }\n                this.props.onChangeColorIndex(1);\n            }\n            if (this.props.onChangeGradientType) this.props.onChangeGradientType(gradientType);\n        }\n        handleCloseColor () {\n            // If the eyedropper is currently being used, don't\n            // close the color menu.\n            if (this.props.isEyeDropping) return;\n\n            // Otherwise, close the color menu and\n            // also reset the color index to indicate\n            // that `color1` is selected.\n            this.props.onCloseColor();\n            this.props.onChangeColorIndex(0);\n        }\n        handleSwap () {\n            if (getSelectedLeafItems().length) {\n                const formatIsBitmap = isBitmap(this.props.format);\n                const isDifferent = swapColorsInSelection(\n                    isStroke || (formatIsBitmap && !this.props.fillBitmapShapes),\n                    this.props.textEditTarget);\n                this.props.setSelectedItems(this.props.format);\n                this._hasChanged = this._hasChanged || isDifferent;\n            } else {\n                let color1 = this.props.color;\n                let color2 = this.props.color2;\n                color1 = color1 === null || color1 === MIXED ? color1 : parseColor(color1).hex;\n                color2 = color2 === null || color2 === MIXED ? color2 : parseColor(color2).hex;\n                this.props.onChangeColor(color1, 1);\n                this.props.onChangeColor(color2, 0);\n            }\n        }\n        render () {\n            return (\n                <ColorIndicatorComponent\n                    {...this.props}\n                    label={this.props.intl.formatMessage(label)}\n                    outline={isStroke}\n                    onChangeColor={this.handleChangeColor}\n                    onChangeGradientType={this.handleChangeGradientType}\n                    onCloseColor={this.handleCloseColor}\n                    onSwap={this.handleSwap}\n                />\n            );\n        }\n    }\n\n    ColorIndicator.propTypes = {\n        colorIndex: PropTypes.number.isRequired,\n        disabled: PropTypes.bool.isRequired,\n        color: PropTypes.string,\n        color2: PropTypes.string,\n        colorModalVisible: PropTypes.bool.isRequired,\n        fillBitmapShapes: PropTypes.bool.isRequired,\n        format: PropTypes.oneOf(Object.keys(Formats)),\n        gradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,\n        intl: intlShape,\n        isEyeDropping: PropTypes.bool.isRequired,\n        onChangeColorIndex: PropTypes.func.isRequired,\n        onChangeColor: PropTypes.func.isRequired,\n        onChangeGradientType: PropTypes.func,\n        onChangeStrokeWidth: PropTypes.func,\n        onCloseColor: PropTypes.func.isRequired,\n        onUpdateImage: PropTypes.func.isRequired,\n        setSelectedItems: PropTypes.func.isRequired,\n        textEditTarget: PropTypes.number\n    };\n\n    return injectIntl(ColorIndicator);\n};\n\nexport default makeColorIndicator;\n","import {connect} from 'react-redux';\nimport {defineMessages} from 'react-intl';\n\nimport {changeColorIndex} from '../reducers/color-index';\nimport {changeFillColor, changeFillColor2} from '../reducers/fill-style';\nimport {changeGradientType} from '../reducers/fill-mode-gradient-type';\nimport {openFillColor, closeFillColor} from '../reducers/modals';\nimport {getSelectedLeafItems} from '../helper/selection';\nimport {setSelectedItems} from '../reducers/selected-items';\nimport Modes, {GradientToolsModes} from '../lib/modes';\nimport {isBitmap} from '../lib/format';\n\nimport makeColorIndicator from './color-indicator.jsx';\n\nconst messages = defineMessages({\n    label: {\n        id: 'paint.paintEditor.fill',\n        description: 'Label for the color picker for the fill color',\n        defaultMessage: 'Fill'\n    }\n});\n\nconst FillColorIndicator = makeColorIndicator(messages.label, false);\n\nconst mapStateToProps = state => ({\n    colorIndex: state.scratchPaint.fillMode.colorIndex,\n    disabled: state.scratchPaint.mode === Modes.LINE,\n    color: state.scratchPaint.color.fillColor.primary,\n    color2: state.scratchPaint.color.fillColor.secondary,\n    colorModalVisible: state.scratchPaint.modals.fillColor,\n    fillBitmapShapes: state.scratchPaint.fillBitmapShapes,\n    format: state.scratchPaint.format,\n    gradientType: state.scratchPaint.color.fillColor.gradientType,\n    isEyeDropping: state.scratchPaint.color.eyeDropper.active,\n    mode: state.scratchPaint.mode,\n    shouldShowGradientTools: state.scratchPaint.mode in GradientToolsModes,\n    textEditTarget: state.scratchPaint.textEditTarget\n});\n\nconst mapDispatchToProps = dispatch => ({\n    onChangeColorIndex: index => {\n        dispatch(changeColorIndex(index));\n    },\n    onChangeColor: (fillColor, index) => {\n        if (index === 0) {\n            dispatch(changeFillColor(fillColor));\n        } else if (index === 1) {\n            dispatch(changeFillColor2(fillColor));\n        }\n    },\n    onOpenColor: () => {\n        dispatch(openFillColor());\n    },\n    onCloseColor: () => {\n        dispatch(closeFillColor());\n    },\n    onChangeGradientType: gradientType => {\n        dispatch(changeGradientType(gradientType));\n    },\n    setSelectedItems: format => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(FillColorIndicator);\n","import paper from '@scratch/paper';\nimport {isBoundsItem, getRootItem} from './item';\nimport {hoverBounds, hoverItem} from './guides';\nimport {isGroupChild} from './group';\nimport {sortItemsByZIndex} from './math';\n\n/**\n * @param {!MouseEvent} event mouse event\n * @param {?object} hitOptions hit options to use\n * @param {?boolean} subselect Whether items within groups can be hovered. If false, the\n *    entire group should be hovered.\n * @return {paper.Item} the hovered item or null if there is none\n */\nconst getHoveredItem = function (event, hitOptions, subselect) {\n    const oldMatch = hitOptions.match;\n    hitOptions.match = hitResult => {\n        if (hitResult.item.data && hitResult.item.data.noHover) return false;\n        return oldMatch ? oldMatch(hitResult) : true;\n    };\n    const hitResults = paper.project.hitTestAll(event.point, hitOptions);\n    if (hitResults.length === 0) {\n        return null;\n    }\n\n    // Get highest z-index result\n    let hitResult;\n    for (const result of hitResults) {\n        if (!hitResult || sortItemsByZIndex(hitResult.item, result.item) < 0) {\n            hitResult = result;\n        }\n    }\n    const item = hitResult.item;\n    // If the hovered item is already selected, then there should be no hovered item.\n    if (!item || item.selected) {\n        return null;\n    }\n\n    let hoverGuide;\n    if (isBoundsItem(item)) {\n        hoverGuide = hoverBounds(item);\n    } else if (!subselect && isGroupChild(item)) {\n        hoverGuide = hoverBounds(getRootItem(item));\n    } else {\n        hoverGuide = hoverItem(item);\n    }\n    hoverGuide.data.hitResult = hitResult;\n\n    return hoverGuide;\n};\n\nexport {\n    getHoveredItem\n};\n","import paper from '@scratch/paper';\nimport {getHoveredItem} from '../hover';\nimport {expandBy} from '../math';\nimport {createGradientObject} from '../style-path';\nimport GradientTypes from '../../lib/gradient-types';\n\nclass FillTool extends paper.Tool {\n    static get TOLERANCE () {\n        return 2;\n    }\n    /**\n     * @param {function} setHoveredItem Callback to set the hovered item\n     * @param {function} clearHoveredItem Callback to clear the hovered item\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setHoveredItem, clearHoveredItem, onUpdateImage) {\n        super();\n        this.setHoveredItem = setHoveredItem;\n        this.clearHoveredItem = clearHoveredItem;\n        this.onUpdateImage = onUpdateImage;\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseUp = this.handleMouseUp;\n\n        // Color to fill with\n        this.fillColor = null;\n        this.fillColor2 = null;\n        this.gradientType = null;\n\n        // The path that's being hovered over.\n        this.fillItem = null;\n        // The style property that we're applying the color to (either fill or stroke).\n        this.fillProperty = null;\n        // If we're hovering over a hole in a compound path, we can't just recolor it. This is the\n        // added item that's the same shape as the hole that's drawn over the hole when we fill a hole.\n        this.addedFillItem = null;\n        this.fillItemOrigColor = null;\n        this.prevHoveredItemId = null;\n    }\n    getHitOptions () {\n        const isAlmostClosedPath = function (item) {\n            return item instanceof paper.Path && item.segments.length > 2 &&\n                item.lastSegment.point.getDistance(item.firstSegment.point) < 8;\n        };\n        return {\n            segments: false,\n            stroke: true,\n            curves: false,\n            fill: true,\n            guide: false,\n            match: function (hitResult) {\n                // Allow fills to be hit only if the item has a fill already or the path is closed/nearly closed\n                const hitFill = hitResult.item.hasFill() || hitResult.item.closed || isAlmostClosedPath(hitResult.item);\n                if (hitResult.item instanceof paper.Path &&\n                    // Disallow hits that don't qualify for the fill criteria, but only if they're fills\n                    (hitFill || hitResult.type !== 'fill')) {\n                    return true;\n                }\n                if (hitResult.item instanceof paper.PointText) {\n                    return true;\n                }\n            },\n            hitUnfilledPaths: true,\n            // If the color is transparent/none, then we need to be able to hit \"invisible\" outlines so that we don't\n            // prevent ourselves from hitting an outline when we make it transparent via the fill preview, causing it to\n            // flicker back and forth between transparent/its previous color as we hit it, then stop hitting it, etc.\n            // If the color *is* visible, then don't hit \"invisible\" outlines, since this would add visible outlines to\n            // non-outlined shapes when you hovered over where their outlines would be.\n            hitUnstrokedPaths: this.gradientType === GradientTypes.SOLID && this.fillColor === null,\n            tolerance: FillTool.TOLERANCE / paper.view.zoom\n        };\n    }\n    setFillColor (fillColor) {\n        this.fillColor = fillColor;\n    }\n    setFillColor2 (fillColor2) {\n        this.fillColor2 = fillColor2;\n    }\n    setGradientType (gradientType) {\n        this.gradientType = gradientType;\n    }\n    /**\n     * To be called when the hovered item changes. When the select tool hovers over a\n     * new item, it compares against this to see if a hover item change event needs to\n     * be fired.\n     * @param {paper.Item} prevHoveredItemId ID of the highlight item that indicates the mouse is\n     *     over a given item currently\n     */\n    setPrevHoveredItemId (prevHoveredItemId) {\n        this.prevHoveredItemId = prevHoveredItemId;\n    }\n    updateFillPreview (event) {\n        const hoveredItem = getHoveredItem(event, this.getHitOptions(), true /* subselect */);\n        if ((!hoveredItem && this.prevHoveredItemId) || // There is no longer a hovered item\n                (hoveredItem && !this.prevHoveredItemId) || // There is now a hovered item\n                (hoveredItem && this.prevHoveredItemId &&\n                    hoveredItem.id !== this.prevHoveredItemId)) { // hovered item changed\n            this.setHoveredItem(hoveredItem ? hoveredItem.id : null);\n        }\n        const hitItem = hoveredItem ? hoveredItem.data.origItem : null;\n        const hitType = hoveredItem ? hoveredItem.data.hitResult.type : null;\n\n        // The hit \"target\" changes if we switch items or switch between fill/outline on the same item\n        const hitTargetChanged = hitItem !== this.fillItem || hitType !== this.fillProperty;\n\n        // Still hitting the same thing\n        if (!hitTargetChanged) {\n            // Only radial gradient needs to be updated\n            if (this.gradientType === GradientTypes.RADIAL) {\n                this._setFillItemColor(this.fillColor, this.fillColor2, this.gradientType, event.point);\n            }\n            return;\n        }\n        if (this.fillItem) {\n            if (this.addedFillItem) {\n                this.addedFillItem.remove();\n                this.addedFillItem = null;\n            } else {\n                this._setFillItemColor(this.fillItemOrigColor);\n            }\n            this.fillItemOrigColor = null;\n            this.fillItem = null;\n            this.fillProperty = null;\n        }\n        if (hitItem) {\n            this.fillItem = hitItem;\n            this.fillProperty = hitType;\n            const colorProp = hitType === 'fill' ? 'fillColor' : 'strokeColor';\n            this.fillItemOrigColor = hitItem[colorProp];\n            if (hitItem.parent instanceof paper.CompoundPath && hitItem.area < 0 && hitType === 'fill') { // hole\n                if (!this.fillColor) {\n                    // Hole filled with transparent is no-op\n                    this.fillItem = null;\n                    this.fillProperty = null;\n                    this.fillItemOrigColor = null;\n                    return;\n                }\n                // Make an item to fill the hole\n                this.addedFillItem = hitItem.clone();\n                this.addedFillItem.setClockwise(true);\n                this.addedFillItem.data.noHover = true;\n                this.addedFillItem.data.origItem = hitItem;\n                // This usually fixes it so there isn't a teeny tiny gap in between the fill and the outline\n                // when filling in a hole\n                expandBy(this.addedFillItem, .1);\n                this.addedFillItem.insertAbove(hitItem.parent);\n            } else if (this.fillItem.parent instanceof paper.CompoundPath) {\n                this.fillItemOrigColor = hitItem.parent[colorProp];\n            }\n            this._setFillItemColor(this.fillColor, this.fillColor2, this.gradientType, event.point);\n        }\n    }\n    handleMouseDown (event) {\n        // on touch, the user might touch-and-hold to preview what the fill tool would do\n        // if they don't move their finger at all after the \"mouse down\" event\n        // then this might be our only chance to give them a good preview\n        this.updateFillPreview(event);\n    }\n    handleMouseMove (event) {\n        this.updateFillPreview(event);\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        if (this.fillItem) {\n            // If the hole we're filling in is the same color as the parent, and parent has no outline, remove the hole\n            if (this.addedFillItem &&\n                    this._noStroke(this.fillItem.parent) &&\n                    this.addedFillItem.fillColor.type !== 'gradient' &&\n                    this.fillItem.parent.fillColor.toCSS() === this.addedFillItem.fillColor.toCSS()) {\n                this.addedFillItem.remove();\n                this.addedFillItem = null;\n                let parent = this.fillItem.parent;\n                this.fillItem.remove();\n                parent = parent.reduce();\n                parent.fillColor = this.fillColor;\n            } else if (this.addedFillItem) {\n                // Fill in a hole.\n                this.addedFillItem.data.noHover = false;\n            } else if (!this.fillColor &&\n                    this.fillItem.data &&\n                    this.fillItem.data.origItem) {\n                // Filling a hole filler with transparent returns it to being gone\n                // instead of making a shape that's transparent\n                const group = this.fillItem.parent;\n                this.fillItem.remove();\n                if (!(group instanceof paper.Layer) && group.children.length === 1) {\n                    group.reduce();\n                }\n            }\n\n            this.clearHoveredItem();\n            this.fillItem = null;\n            this.fillProperty = null;\n            this.addedFillItem = null;\n            this.fillItemOrigColor = null;\n            this.onUpdateImage();\n        }\n    }\n    _noStroke (item) {\n        return !item.strokeColor ||\n                item.strokeColor.alpha === 0 ||\n                item.strokeWidth === 0;\n    }\n    // Either pass in a fully defined paper.Color as color1,\n    // or pass in 2 color strings, a gradient type, and a pointer location\n    _setFillItemColor (color1, color2, gradientType, pointerLocation) {\n        const item = this._getFillItem();\n        if (!item) return;\n        const colorProp = this.fillProperty === 'fill' ? 'fillColor' : 'strokeColor';\n        // Only create a gradient if specifically requested, else use color1 directly\n        // This ensures we do not set a gradient by accident (see scratch-paint#830).\n        if (gradientType && gradientType !== GradientTypes.SOLID) {\n            item[colorProp] = createGradientObject(\n                color1,\n                color2,\n                gradientType,\n                item.bounds,\n                pointerLocation,\n                item.strokeWidth\n            );\n        } else {\n            item[colorProp] = color1;\n        }\n    }\n    _getFillItem () {\n        if (this.addedFillItem) {\n            return this.addedFillItem;\n        } else if (this.fillItem && this.fillItem.parent instanceof paper.CompoundPath) {\n            return this.fillItem.parent;\n        }\n        return this.fillItem;\n    }\n    deactivateTool () {\n        if (this.fillItem) {\n            this._setFillItemColor(this.fillItemOrigColor);\n            this.fillItemOrigColor = null;\n            this.fillItem = null;\n            this.fillProperty = null;\n        }\n        this.clearHoveredItem();\n        this.setHoveredItem = null;\n        this.clearHoveredItem = null;\n    }\n}\n\nexport default FillTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport fillIcon from './fill.svg';\n\nconst FillModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.fill}\n        imgSrc={fillIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nFillModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default FillModeComponent;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport GradientTypes from '../lib/gradient-types';\nimport FillTool from '../helper/tools/fill-tool';\nimport {generateSecondaryColor, MIXED} from '../helper/style-path';\n\nimport {changeFillColor, changeFillColor2, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {clearSelection} from '../helper/selection';\nimport {clearHoveredItem, setHoveredItem} from '../reducers/hover';\nimport {changeGradientType} from '../reducers/fill-mode-gradient-type';\n\nimport FillModeComponent from '../components/fill-mode/fill-mode.jsx';\n\nclass FillMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isFillModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool) {\n            if (nextProps.fillColor !== this.props.fillColor) {\n                this.tool.setFillColor(nextProps.fillColor);\n            }\n            if (nextProps.fillColor2 !== this.props.fillColor2) {\n                this.tool.setFillColor2(nextProps.fillColor2);\n            }\n            if (nextProps.hoveredItemId !== this.props.hoveredItemId) {\n                this.tool.setPrevHoveredItemId(nextProps.hoveredItemId);\n            }\n            if (nextProps.fillModeGradientType !== this.props.fillModeGradientType) {\n                this.tool.setGradientType(nextProps.fillModeGradientType);\n            }\n        }\n\n        if (nextProps.isFillModeActive && !this.props.isFillModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isFillModeActive && this.props.isFillModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isFillModeActive !== this.props.isFillModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n\n        // Force the default fill color if fill is MIXED\n        let fillColor = this.props.fillColor;\n        if (this.props.fillColor === MIXED) {\n            fillColor = DEFAULT_COLOR;\n            this.props.onChangeFillColor(DEFAULT_COLOR, 0);\n        }\n        const gradientType = this.props.fillModeGradientType ?\n            this.props.fillModeGradientType : this.props.fillStyleGradientType;\n        let fillColor2 = this.props.fillColor2;\n        if (gradientType !== this.props.fillStyleGradientType) {\n            if (this.props.fillStyleGradientType === GradientTypes.SOLID) {\n                fillColor2 = generateSecondaryColor(fillColor);\n                this.props.onChangeFillColor(fillColor2, 1);\n            }\n            this.props.changeGradientType(gradientType);\n        }\n        if (this.props.fillColor2 === MIXED) {\n            fillColor2 = generateSecondaryColor(fillColor);\n            this.props.onChangeFillColor(fillColor2, 1);\n        }\n        this.tool = new FillTool(\n            this.props.setHoveredItem,\n            this.props.clearHoveredItem,\n            this.props.onUpdateImage\n        );\n        this.tool.setFillColor(fillColor);\n        this.tool.setFillColor2(fillColor2);\n        this.tool.setGradientType(gradientType);\n        this.tool.setPrevHoveredItemId(this.props.hoveredItemId);\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <FillModeComponent\n                isSelected={this.props.isFillModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nFillMode.propTypes = {\n    changeGradientType: PropTypes.func.isRequired,\n    clearHoveredItem: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    fillColor: PropTypes.string,\n    fillColor2: PropTypes.string,\n    fillStyleGradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,\n    fillModeGradientType: PropTypes.oneOf(Object.keys(GradientTypes)),\n    handleMouseDown: PropTypes.func.isRequired,\n    hoveredItemId: PropTypes.number,\n    isFillModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    setHoveredItem: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    fillModeGradientType: state.scratchPaint.fillMode.gradientType, // Last user-selected gradient type\n    fillColor: state.scratchPaint.color.fillColor.primary,\n    fillColor2: state.scratchPaint.color.fillColor.secondary,\n    fillStyleGradientType: state.scratchPaint.color.fillColor.gradientType, // Selected item(s)' gradient type\n    hoveredItemId: state.scratchPaint.hoveredItemId,\n    isFillModeActive: state.scratchPaint.mode === Modes.FILL\n});\nconst mapDispatchToProps = dispatch => ({\n    setHoveredItem: hoveredItemId => {\n        dispatch(setHoveredItem(hoveredItemId));\n    },\n    clearHoveredItem: () => {\n        dispatch(clearHoveredItem());\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    changeGradientType: gradientType => {\n        dispatch(changeGradientType(gradientType));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.FILL));\n    },\n    onChangeFillColor: (fillColor, index) => {\n        if (index === 0) {\n            dispatch(changeFillColor(fillColor));\n        } else if (index === 1) {\n            dispatch(changeFillColor2(fillColor));\n        }\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(FillMode);\n","import paper from '@scratch/paper';\nimport {getItems} from './selection';\n\n/**\n * @param {paper.Point} point1 point 1\n * @param {paper.Point} point2 point 2\n * @param {number} tolerance Distance allowed between points that are \"touching\"\n * @return {boolean} true if points are within the tolerance distance.\n */\nconst touching = function (point1, point2, tolerance) {\n    return point1.getDistance(point2, true) < Math.pow(tolerance / paper.view.zoom, 2);\n};\n\n/**\n * @param {!paper.Point} point Point to check line endpoint hits against\n * @param {!number} tolerance Distance within which it counts as a hit\n * @param {?paper.Path} excludePath Path to exclude from hit test, if any. For instance, you\n *     are drawing a line and don't want it to snap to its own start point.\n * @return {object} data about the end point of an unclosed path, if any such point is within the\n *     tolerance distance of the given point, or null if none exists.\n */\nconst endPointHit = function (point, tolerance, excludePath) {\n    const lines = getItems({\n        class: paper.Path\n    });\n    // Prefer more recent lines\n    for (let i = lines.length - 1; i >= 0; i--) {\n        if (lines[i].closed) {\n            continue;\n        }\n        if (!(lines[i].parent instanceof paper.Layer)) {\n            // Don't connect to lines inside of groups\n            continue;\n        }\n        if (excludePath && lines[i] === excludePath) {\n            continue;\n        }\n        if (lines[i].firstSegment && touching(lines[i].firstSegment.point, point, tolerance)) {\n            return {\n                path: lines[i],\n                segment: lines[i].firstSegment,\n                isFirst: true\n            };\n        }\n        if (lines[i].lastSegment && touching(lines[i].lastSegment.point, point, tolerance)) {\n            return {\n                path: lines[i],\n                segment: lines[i].lastSegment,\n                isFirst: false\n            };\n        }\n    }\n    return null;\n};\n\nexport {\n    endPointHit,\n    touching\n};\n","import log from '../log/log';\nimport {CHANGE_SELECTED_ITEMS} from './selected-items';\nimport {getColorsFromSelection} from '../helper/style-path';\n\nconst CHANGE_STROKE_WIDTH = 'scratch-paint/stroke-width/CHANGE_STROKE_WIDTH';\nconst MAX_STROKE_WIDTH = 100;\nconst initialState = 4;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_STROKE_WIDTH:\n        if (isNaN(action.strokeWidth)) {\n            log.warn(`Invalid brush size: ${action.strokeWidth}`);\n            return state;\n        }\n        return Math.min(MAX_STROKE_WIDTH, Math.max(0, action.strokeWidth));\n    case CHANGE_SELECTED_ITEMS:\n        // Don't change state if no selection\n        if (!action.selectedItems || !action.selectedItems.length) {\n            return state;\n        }\n        // Bitmap mode doesn't have stroke width\n        if (action.bitmapMode) {\n            return state;\n        }\n        return getColorsFromSelection(action.selectedItems, action.bitmapMode).strokeWidth;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeStrokeWidth = function (strokeWidth) {\n    return {\n        type: CHANGE_STROKE_WIDTH,\n        strokeWidth: strokeWidth\n    };\n};\n\nexport {\n    reducer as default,\n    changeStrokeWidth,\n    CHANGE_STROKE_WIDTH,\n    MAX_STROKE_WIDTH\n};\n","import makeColorStyleReducer from '../lib/make-color-style-reducer';\n\nconst CHANGE_STROKE_COLOR = 'scratch-paint/stroke-style/CHANGE_STROKE_COLOR';\nconst CHANGE_STROKE_COLOR_2 = 'scratch-paint/stroke-style/CHANGE_STROKE_COLOR_2';\nconst CHANGE_STROKE_GRADIENT_TYPE = 'scratch-paint/stroke-style/CHANGE_STROKE_GRADIENT_TYPE';\nconst CLEAR_STROKE_GRADIENT = 'scratch-paint/stroke-style/CLEAR_STROKE_GRADIENT';\nconst DEFAULT_COLOR = '#000000';\n\nimport {CHANGE_STROKE_WIDTH} from './stroke-width';\n\nconst reducer = makeColorStyleReducer({\n    changePrimaryColorAction: CHANGE_STROKE_COLOR,\n    changeSecondaryColorAction: CHANGE_STROKE_COLOR_2,\n    changeGradientTypeAction: CHANGE_STROKE_GRADIENT_TYPE,\n    clearGradientAction: CLEAR_STROKE_GRADIENT,\n    defaultColor: DEFAULT_COLOR,\n    selectionPrimaryColorKey: 'strokeColor',\n    selectionSecondaryColorKey: 'strokeColor2',\n    selectionGradientTypeKey: 'strokeGradientType'\n});\n\n// This is mostly the same as the generated reducer, but with one piece of extra logic to set the color to null when the\n// stroke width is set to 0.\n// https://redux.js.org/recipes/structuring-reducers/reusing-reducer-logic\nconst strokeReducer = function (state, action) {\n    if (action.type === CHANGE_STROKE_WIDTH && Math.max(action.strokeWidth, 0) === 0) {\n        // TODO: this preserves the gradient type when you change the stroke width to 0.\n        // Alternatively, we could set gradientType to SOLID instead of setting secondary to null, but since\n        // the stroke width is automatically set to 0 as soon as a \"null\" color is detected (including a gradient for\n        // which both colors are null), that would change the gradient type back to solid if you selected null for both\n        // gradient colors.\n        return {...state, primary: null, secondary: null};\n    }\n\n    return reducer(state, action);\n};\n\n// Action creators ==================================\nconst changeStrokeColor = function (strokeColor) {\n    return {\n        type: CHANGE_STROKE_COLOR,\n        color: strokeColor\n    };\n};\n\nconst changeStrokeColor2 = function (strokeColor) {\n    return {\n        type: CHANGE_STROKE_COLOR_2,\n        color: strokeColor\n    };\n};\n\nconst changeStrokeGradientType = function (gradientType) {\n    return {\n        type: CHANGE_STROKE_GRADIENT_TYPE,\n        gradientType\n    };\n};\n\nconst clearStrokeGradient = function () {\n    return {\n        type: CLEAR_STROKE_GRADIENT\n    };\n};\n\nexport {\n    strokeReducer as default,\n    changeStrokeColor,\n    changeStrokeColor2,\n    changeStrokeGradientType,\n    clearStrokeGradient,\n    DEFAULT_COLOR,\n    CHANGE_STROKE_GRADIENT_TYPE\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport lineIcon from './line.svg';\n\nconst LineModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.line}\n        imgSrc={lineIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nLineModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default LineModeComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport ColorStyleProptype from '../lib/color-style-proptype';\nimport {clearSelection} from '../helper/selection';\nimport {endPointHit, touching} from '../helper/snapping';\nimport {drawHitPoint, removeHitPoint} from '../helper/guides';\nimport {styleShape, MIXED} from '../helper/style-path';\nimport {changeStrokeColor, clearStrokeGradient} from '../reducers/stroke-style';\nimport {changeStrokeWidth} from '../reducers/stroke-width';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {snapDeltaToAngle} from '../helper/math';\n\nimport LineModeComponent from '../components/line-mode/line-mode.jsx';\n\nclass LineMode extends React.Component {\n    static get SNAP_TOLERANCE () {\n        return 6;\n    }\n    static get DEFAULT_COLOR () {\n        return '#000000';\n    }\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool',\n            'drawHitPoint',\n            'onMouseDown',\n            'onMouseMove',\n            'onMouseDrag',\n            'onMouseUp'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isLineModeActive) {\n            this.activateTool();\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (nextProps.isLineModeActive && !this.props.isLineModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isLineModeActive && this.props.isLineModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isLineModeActive !== this.props.isLineModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        // Force the default line color if stroke is MIXED or transparent\n        const strokeColor1 = this.props.colorState.strokeColor.primary;\n        const strokeColor2 = this.props.colorState.strokeColor.secondary;\n        if (strokeColor1 === MIXED ||\n            (strokeColor1 === null &&\n                (strokeColor2 === null || strokeColor2 === MIXED))) {\n            this.props.onChangeStrokeColor(LineMode.DEFAULT_COLOR);\n        }\n        if (strokeColor2 === MIXED) {\n            this.props.clearStrokeGradient();\n        }\n        // Force a minimum stroke width\n        if (!this.props.colorState.strokeWidth) {\n            this.props.onChangeStrokeWidth(1);\n        }\n        this.tool = new paper.Tool();\n        this.active = false;\n\n        this.path = null;\n        this.hitResult = null;\n\n        const lineMode = this;\n        this.tool.onMouseDown = function (event) {\n            if (event.event.button > 0) return; // only first mouse button\n            lineMode.onMouseDown(event);\n        };\n        this.tool.onMouseMove = function (event) {\n            lineMode.onMouseMove(event);\n        };\n        this.tool.onMouseDrag = function (event) {\n            if (event.event.button > 0) return; // only first mouse button\n            lineMode.onMouseDrag(event);\n        };\n        this.tool.onMouseUp = function (event) {\n            if (event.event.button > 0) return; // only first mouse button\n            lineMode.onMouseUp(event);\n        };\n\n        this.tool.activate();\n    }\n    onMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        // If you click near a point, continue that line instead of making a new line\n        this.hitResult = endPointHit(event.point, LineMode.SNAP_TOLERANCE);\n        if (this.hitResult) {\n            this.path = this.hitResult.path;\n            styleShape(this.path, {\n                fillColor: null,\n                strokeColor: this.props.colorState.strokeColor,\n                strokeWidth: this.props.colorState.strokeWidth\n            });\n            if (this.hitResult.isFirst) {\n                this.path.reverse();\n            }\n\n            this.path.lastSegment.handleOut = null; // Make sure added line isn't made curvy\n            this.path.add(this.hitResult.segment.point); // Add second point, which is what will move when dragged\n        }\n\n        // If not near other path, start a new path\n        if (!this.path) {\n            this.path = new paper.Path();\n            this.path.strokeCap = 'round';\n            styleShape(this.path, {\n                fillColor: null,\n                strokeColor: this.props.colorState.strokeColor,\n                strokeWidth: this.props.colorState.strokeWidth\n            });\n\n            this.path.add(event.point);\n            this.path.add(event.point); // Add second point, which is what will move when dragged\n        }\n    }\n    drawHitPoint (hitResult) {\n        // If near another path's endpoint, draw hit point to indicate that paths would merge\n        if (hitResult) {\n            const hitPath = hitResult.path;\n            if (hitResult.isFirst) {\n                drawHitPoint(hitPath.firstSegment.point);\n            } else {\n                drawHitPoint(hitPath.lastSegment.point);\n            }\n        }\n    }\n    onMouseMove (event) {\n        if (this.hitResult) {\n            removeHitPoint();\n        }\n        this.hitResult = endPointHit(event.point, LineMode.SNAP_TOLERANCE);\n        this.drawHitPoint(this.hitResult);\n    }\n    onMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        // Clear the last hit result\n        if (this.hitResult) {\n            removeHitPoint();\n            this.hitResult = null;\n        }\n\n        // If shift is held, act like event.point always lies on a straight or 45 degree line from the last point\n        let endPoint = event.point;\n        if (event.modifiers.shift) {\n            const line = event.point.subtract(this.path.lastSegment.previous.point);\n            endPoint = this.path.lastSegment.previous.point.add(snapDeltaToAngle(line, Math.PI / 4));\n        }\n\n        // Find an end point that endPoint is close to (to snap lines together)\n        if (this.path &&\n                !this.path.closed &&\n                this.path.segments.length > 3 &&\n                touching(this.path.firstSegment.point, endPoint, LineMode.SNAP_TOLERANCE)) {\n            this.hitResult = {\n                path: this.path,\n                segment: this.path.firstSegment,\n                isFirst: true\n            };\n        } else {\n            this.hitResult = endPointHit(endPoint, LineMode.SNAP_TOLERANCE, this.path);\n        }\n\n        // If shift is being held, we shouldn't snap to end points that change the slope by too much.\n        // In that case, clear the hit result.\n        if (this.hitResult && event.modifiers.shift) {\n            const lineToSnap = this.hitResult.segment.point.subtract(this.path.lastSegment.previous.point);\n            const lineToEndPoint = endPoint.subtract(this.path.lastSegment.previous.point);\n            if (lineToSnap.normalize().getDistance(lineToEndPoint.normalize()) > 1e-2) {\n                this.hitResult = null;\n            }\n        }\n\n        // If near another path's endpoint, or this path's beginpoint, clip to it to suggest\n        // joining/closing the paths.\n        if (this.hitResult) {\n            this.drawHitPoint(this.hitResult);\n            this.path.lastSegment.point = this.hitResult.segment.point;\n        } else {\n            this.path.lastSegment.point = endPoint;\n        }\n\n        styleShape(this.path, {\n            fillColor: null,\n            strokeColor: this.props.colorState.strokeColor,\n            strokeWidth: this.props.colorState.strokeWidth\n        });\n    }\n    onMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        // If I single clicked, don't do anything\n        if (this.path.segments.length < 2 ||\n                (this.path.segments.length === 2 &&\n                touching(this.path.firstSegment.point, event.point, LineMode.SNAP_TOLERANCE) &&\n                !this.hitResult)) { // Let lines be short if you're connecting them\n            this.path.remove();\n            this.path = null;\n            return;\n        } else if (!this.hitResult &&\n                touching(this.path.lastSegment.point, this.path.segments[this.path.segments.length - 2].point,\n                    LineMode.SNAP_TOLERANCE)) {\n            // Single click or short drag on an existing path end point\n            this.path.removeSegment(this.path.segments.length - 1);\n            this.path = null;\n            return;\n        }\n        // If I intersect other line end points, join or close\n        if (this.hitResult) {\n            this.path.removeSegment(this.path.segments.length - 1);\n            if (this.path.firstSegment.point.equals(this.hitResult.segment.point)) {\n                this.path.firstSegment.handleIn = null; // Make sure added line isn't made curvy\n                // close path\n                this.path.closed = true;\n            } else {\n                // joining two paths\n                if (!this.hitResult.isFirst) {\n                    this.hitResult.path.reverse();\n                }\n                this.hitResult.path.firstSegment.handleIn = null; // Make sure added line isn't made curvy\n                this.path.join(this.hitResult.path);\n            }\n            removeHitPoint();\n            this.hitResult = null;\n        }\n\n        styleShape(this.path, {\n            fillColor: null,\n            strokeColor: this.props.colorState.strokeColor,\n            strokeWidth: this.props.colorState.strokeWidth\n        });\n\n        if (this.path) {\n            this.props.onUpdateImage();\n            this.path = null;\n        }\n        this.active = false;\n    }\n    deactivateTool () {\n        this.tool.remove();\n        this.tool = null;\n        if (this.hitResult) {\n            removeHitPoint();\n            this.hitResult = null;\n        }\n        if (this.path) {\n            this.path = null;\n        }\n    }\n    render () {\n        return (\n            <LineModeComponent\n                isSelected={this.props.isLineModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nLineMode.propTypes = {\n    clearSelectedItems: PropTypes.func.isRequired,\n    clearStrokeGradient: PropTypes.func.isRequired,\n    colorState: PropTypes.shape({\n        fillColor: ColorStyleProptype,\n        strokeColor: ColorStyleProptype,\n        strokeWidth: PropTypes.number\n    }).isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    isLineModeActive: PropTypes.bool.isRequired,\n    onChangeStrokeColor: PropTypes.func.isRequired,\n    onChangeStrokeWidth: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    colorState: state.scratchPaint.color,\n    isLineModeActive: state.scratchPaint.mode === Modes.LINE\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearStrokeGradient: () => {\n        dispatch(clearStrokeGradient());\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.LINE));\n    },\n    onChangeStrokeColor: strokeColor => {\n        dispatch(changeStrokeColor(strokeColor));\n    },\n    onChangeStrokeWidth: strokeWidth => {\n        dispatch(changeStrokeWidth(strokeWidth));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(LineMode);\n","import paper from '@scratch/paper';\nimport {createCanvas, getRaster, getBackgroundGuideLayer} from '../layer';\n\nconst LOUPE_RADIUS = 20;\nconst ZOOM_SCALE = 3;\n\nclass EyeDropperTool extends paper.Tool {\n    constructor (canvas, width, height, pixelRatio, zoom, offsetX, offsetY, isBitmap) {\n        super();\n\n        const layer = isBitmap ? getRaster().layer : paper.project.activeLayer;\n        const contentRaster3x = layer.rasterize(\n            72 * ZOOM_SCALE * paper.view.zoom, false /* insert */, paper.view.bounds);\n        const backgroundRaster3x = getBackgroundGuideLayer().rasterize(\n            72 * ZOOM_SCALE * paper.view.zoom, false /* insert */, paper.view.bounds);\n\n        // Canvas from which loupe is cut, shows art and grid\n        this.bufferCanvas = createCanvas(canvas.width * ZOOM_SCALE, canvas.height * ZOOM_SCALE);\n        const bufferCanvasContext = this.bufferCanvas.getContext('2d');\n        // Canvas to sample colors from; just the art\n        this.colorCanvas = createCanvas(canvas.width * ZOOM_SCALE, canvas.height * ZOOM_SCALE);\n        const colorCanvasContext = this.colorCanvas.getContext('2d');\n\n        backgroundRaster3x.onLoad = () => {\n            bufferCanvasContext.drawImage(backgroundRaster3x.canvas, 0, 0);\n            contentRaster3x.onLoad = () => {\n                colorCanvasContext.drawImage(contentRaster3x.canvas, 0, 0);\n                bufferCanvasContext.drawImage(this.colorCanvas, 0, 0);\n                this.bufferLoaded = true;\n            };\n            if (contentRaster3x.loaded) contentRaster3x.onLoad();\n        };\n\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseUp = this.handleMouseUp;\n        this.onMouseMove = this.handleMouseMove;\n\n        this.canvas = canvas;\n        this.pixelRatio = pixelRatio;\n        this.zoom = zoom;\n        this.offsetX = offsetX;\n        this.offsetY = offsetY;\n        this.width = width * this.zoom * this.pixelRatio;\n        this.height = height * this.zoom * this.pixelRatio;\n        this.rect = canvas.getBoundingClientRect();\n        this.colorString = '';\n        this.pickX = -1;\n        this.pickY = -1;\n        this.hideLoupe = true;\n    }\n    handleMouseMove (event) {\n        // Set the pickX/Y for the color picker loop to pick up\n        this.pickX = (event.point.x - this.offsetX) * this.zoom * this.pixelRatio;\n        this.pickY = (event.point.y - this.offsetY) * this.zoom * this.pixelRatio;\n\n        // check if the x/y are outside of the canvas\n        this.hideLoupe = this.pickX > this.width ||\n            this.pickX < 0 ||\n            this.pickY > this.height ||\n            this.pickY < 0;\n    }\n    handleMouseDown (event) {\n        // Nothing special on mousedown, just send to move handler which will show the loupe,\n        // and the mouse up handler submits the color. This allows touch to drag\n        // with the loupe visible to find the correct color\n        this.handleMouseMove(event);\n    }\n    handleMouseUp () {\n        if (!this.hideLoupe) {\n            const colorInfo = this.getColorInfo(this.pickX, this.pickY, this.hideLoupe);\n            if (!colorInfo) return;\n            if (colorInfo.color[3] === 0) {\n                // Alpha 0\n                this.colorString = null;\n                return;\n            }\n            const r = colorInfo.color[0];\n            const g = colorInfo.color[1];\n            const b = colorInfo.color[2];\n\n            // from https://github.com/LLK/scratch-gui/blob/77e54a80a31b6cd4684d4b2a70f1aeec671f229e/src/containers/stage.jsx#L218-L222\n            // formats the color info from the canvas into hex for parsing by the color picker\n            const componentToString = c => {\n                const hex = c.toString(16);\n                return hex.length === 1 ? `0${hex}` : hex;\n            };\n            this.colorString = `#${componentToString(r)}${componentToString(g)}${componentToString(b)}`;\n        }\n    }\n    getColorInfo (x, y, hideLoupe) {\n        const artX = x / this.pixelRatio;\n        const artY = y / this.pixelRatio;\n        if (!this.bufferLoaded) return null;\n        const colorContext = this.colorCanvas.getContext('2d');\n        const bufferContext = this.bufferCanvas.getContext('2d');\n        const colors = colorContext.getImageData(artX * ZOOM_SCALE, artY * ZOOM_SCALE, 1, 1);\n        return {\n            x: x,\n            y: y,\n            color: colors.data,\n            data: bufferContext.getImageData(\n                ZOOM_SCALE * (artX - LOUPE_RADIUS),\n                ZOOM_SCALE * (artY - LOUPE_RADIUS),\n                LOUPE_RADIUS * 2 * ZOOM_SCALE,\n                LOUPE_RADIUS * 2 * ZOOM_SCALE\n            ).data,\n            hideLoupe: hideLoupe\n        };\n    }\n}\n\nexport {\n    EyeDropperTool as default,\n    LOUPE_RADIUS,\n    ZOOM_SCALE\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport bindAll from 'lodash.bindall';\n\nimport Box from '../box/box.jsx';\n\nimport {LOUPE_RADIUS, ZOOM_SCALE} from '../../helper/tools/eye-dropper';\n\nimport styles from './loupe.css';\n\nclass LoupeComponent extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'setCanvas'\n        ]);\n    }\n    componentDidUpdate () {\n        this.draw();\n    }\n    draw () {\n        const boxSize = 5;\n        const boxLineWidth = 1;\n        const colorRingWidth = 15;\n        const loupeRadius = ZOOM_SCALE * LOUPE_RADIUS;\n        const loupeDiameter = loupeRadius * 2;\n\n        const color = this.props.colorInfo.color;\n\n        const ctx = this.canvas.getContext('2d');\n        this.canvas.width = loupeDiameter;\n        this.canvas.height = loupeDiameter;\n        ctx.fillStyle = 'white';\n        ctx.fillRect(0, 0, loupeDiameter, loupeDiameter);\n\n        // In order to scale the image data, must draw to a tmp canvas first\n        const tmpCanvas = document.createElement('canvas');\n        tmpCanvas.width = loupeDiameter;\n        tmpCanvas.height = loupeDiameter;\n        const tmpCtx = tmpCanvas.getContext('2d');\n        const imageData = tmpCtx.createImageData(\n            loupeDiameter, loupeDiameter\n        );\n\n        // Since the color info comes from elsewhere there is no guarantee\n        // about the size. Make sure it matches to prevent data.set from throwing.\n        // See issue #966 for example of how that can happen.\n        if (this.props.colorInfo.data.length === imageData.data.length) {\n            imageData.data.set(this.props.colorInfo.data);\n        } else {\n            console.warn('Image data size mismatch drawing loupe'); // eslint-disable-line no-console\n        }\n\n        tmpCtx.putImageData(imageData, 0, 0);\n\n        // Scale the loupe canvas and draw the zoomed image\n        ctx.drawImage(tmpCanvas, 0, 0);\n\n        // Draw an outlined square at the cursor position (cursor is hidden)\n        ctx.lineWidth = boxLineWidth;\n        ctx.strokeStyle = 'black';\n        ctx.fillStyle = `rgba(${color[0]}, ${color[1]}, ${color[2]}, ${color[3]})`;\n        ctx.beginPath();\n        ctx.rect(loupeRadius - (boxSize / 2), loupeRadius - (boxSize / 2), boxSize, boxSize);\n        ctx.fill();\n        ctx.stroke();\n\n        // Draw a thick ring around the loupe showing the current color\n        ctx.strokeStyle = `rgba(${color[0]}, ${color[1]}, ${color[2]}, ${color[3]})`;\n        ctx.lineWidth = colorRingWidth;\n        ctx.beginPath();\n        ctx.moveTo(loupeDiameter, loupeDiameter);\n        ctx.arc(loupeRadius, loupeRadius, loupeRadius, 0, 2 * Math.PI);\n        ctx.stroke();\n    }\n    setCanvas (element) {\n        this.canvas = element;\n        // Make sure to draw a frame when this component is first mounted\n        // Check for null ref because refs are called with null when unmounted\n        if (this.canvas) {\n            this.draw();\n        }\n    }\n    render () {\n        const {\n            colorInfo,\n            pixelRatio,\n            ...boxProps\n        } = this.props;\n        const loupeDiameter = ZOOM_SCALE * LOUPE_RADIUS * 2;\n        return (\n            <Box\n                {...boxProps}\n                className={styles.eyeDropper}\n                componentRef={this.setCanvas}\n                element=\"canvas\"\n                height={LOUPE_RADIUS * 2}\n                style={{\n                    top: (colorInfo.y / pixelRatio) - (loupeDiameter / 2),\n                    left: (colorInfo.x / pixelRatio) - (loupeDiameter / 2),\n                    width: loupeDiameter,\n                    height: loupeDiameter\n                }}\n                width={LOUPE_RADIUS * 2}\n            />\n        );\n    }\n}\n\nLoupeComponent.propTypes = {\n    colorInfo: PropTypes.shape({\n        color: PropTypes.instanceOf(Uint8ClampedArray), // this is the [r,g,b,a] array\n        x: PropTypes.number,\n        y: PropTypes.number,\n        data: PropTypes.instanceOf(Uint8ClampedArray)\n    }),\n    pixelRatio: PropTypes.number.isRequired\n};\n\nexport default LoupeComponent;\n","import {getSelectedRootItems} from './selection';\n\nconst bringToFront = function (onUpdateImage) {\n    const items = getSelectedRootItems();\n    for (const item of items) {\n        item.bringToFront();\n    }\n    onUpdateImage();\n};\n\nconst sendToBack = function (onUpdateImage) {\n    const items = getSelectedRootItems();\n    for (let i = items.length - 1; i >= 0; i--) {\n        items[i].sendToBack();\n    }\n    onUpdateImage();\n};\n\nconst bringForward = function (onUpdateImage) {\n    const items = getSelectedRootItems();\n    // Already at front\n    if (items.length === 0 || !items[items.length - 1].nextSibling) {\n        return;\n    }\n\n    const nextSibling = items[items.length - 1].nextSibling;\n    for (let i = items.length - 1; i >= 0; i--) {\n        items[i].insertAbove(nextSibling);\n    }\n    onUpdateImage();\n};\n\nconst sendBackward = function (onUpdateImage) {\n    const items = getSelectedRootItems();\n    // Already at front\n    if (items.length === 0 || !items[0].previousSibling) {\n        return;\n    }\n\n    const previousSibling = items[0].previousSibling;\n    for (const item of items) {\n        item.insertBelow(previousSibling);\n    }\n    onUpdateImage();\n};\n\nconst shouldShowSendBackward = function () {\n    const items = getSelectedRootItems();\n    if (items.length === 0 || !items[0].previousSibling) {\n        return false;\n    }\n    return true;\n};\n\nconst shouldShowBringForward = function () {\n    const items = getSelectedRootItems();\n    if (items.length === 0 || !items[items.length - 1].nextSibling) {\n        return false;\n    }\n    return true;\n};\n\nexport {\n    bringToFront,\n    sendToBack,\n    bringForward,\n    sendBackward,\n    shouldShowBringForward,\n    shouldShowSendBackward\n};\n","/* DO NOT EDIT\n@todo This file is copied from GUI and should be pulled out into a shared library.\nSee https://github.com/LLK/scratch-paint/issues/13 */\n\nimport bindAll from 'lodash.bindall';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\n/**\n * Higher Order Component to manage inputs that submit on blur and <enter>\n * @param {React.Component} Input text input that consumes onChange, onBlur, onKeyPress\n * @returns {React.Component} Buffered input that calls onSubmit on blur and <enter>\n */\nexport default function (Input) {\n    class BufferedInput extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'handleChange',\n                'handleKeyPress',\n                'handleFlush'\n            ]);\n            this.state = {\n                value: null\n            };\n        }\n        handleKeyPress (e) {\n            if (e.key === 'Enter') {\n                this.handleFlush();\n                e.target.blur();\n            }\n        }\n        handleFlush () {\n            const isNumeric = typeof this.props.value === 'number';\n            const validatesNumeric = isNumeric ? !isNaN(this.state.value) : true;\n            if (this.state.value !== null && validatesNumeric) {\n                this.props.onSubmit(isNumeric ? Number(this.state.value) : this.state.value);\n            }\n            this.setState({value: null});\n        }\n        handleChange (e) {\n            this.setState({value: e.target.value});\n        }\n        render () {\n            const bufferedValue = this.state.value === null ? this.props.value : this.state.value;\n            return (\n                <Input\n                    {...this.props}\n                    value={bufferedValue}\n                    onBlur={this.handleFlush}\n                    onChange={this.handleChange}\n                    onKeyPress={this.handleKeyPress}\n                />\n            );\n        }\n    }\n\n    BufferedInput.propTypes = {\n        onSubmit: PropTypes.func.isRequired,\n        value: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n    };\n\n    return BufferedInput;\n}\n","import bindAll from 'lodash.bindall';\nimport classNames from 'classnames';\nimport Popover from 'react-popover';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport styles from './dropdown.css';\n\nimport dropdownIcon from './dropdown-caret.svg';\n\nclass Dropdown extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'handleClosePopover',\n            'handleToggleOpenState',\n            'isOpen'\n        ]);\n        this.state = {\n            isOpen: false\n        };\n    }\n    handleClosePopover () {\n        this.setState({\n            isOpen: false\n        });\n    }\n    handleToggleOpenState () {\n        const newState = !this.state.isOpen;\n        this.setState({\n            isOpen: newState\n        });\n        if (newState && this.props.onOpen) {\n            this.props.onOpen();\n        }\n    }\n    isOpen () {\n        return this.state.isOpen;\n    }\n    render () {\n        return (\n            <Popover\n                body={this.props.popoverContent}\n                isOpen={this.state.isOpen}\n                preferPlace=\"below\"\n                onOuterAction={this.props.onOuterAction ?\n                    this.props.onOuterAction : this.handleClosePopover}\n                {...this.props}\n            >\n                <div\n                    className={classNames(styles.dropdown, this.props.className, {\n                        [styles.modOpen]: this.state.isOpen,\n                        [styles.modClosed]: !this.state.isOpen\n                    })}\n                    onClick={this.handleToggleOpenState}\n                >\n                    {this.props.children}\n                    <img\n                        className={classNames(styles.dropdownIcon, {\n                            [styles.modCaretUp]: this.state.isOpen\n                        })}\n                        draggable={false}\n                        src={dropdownIcon}\n                    />\n                </div>\n            </Popover>\n        );\n    }\n}\n\nDropdown.propTypes = {\n    children: PropTypes.node.isRequired,\n    className: PropTypes.string,\n    onOpen: PropTypes.func,\n    onOuterAction: PropTypes.func,\n    popoverContent: PropTypes.node.isRequired\n};\n\nexport default Dropdown;\n","/* DO NOT EDIT\n@todo This file is copied from GUI and should be pulled out into a shared library.\nSee https://github.com/LLK/scratch-paint/issues/13 */\n\n/* NOTE:\nEdited to add range prop\n*/\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nimport styles from './input.css';\n\nconst Input = props => {\n    const {small, range, ...componentProps} = props;\n    return (\n        <input\n            {...componentProps}\n            className={classNames(\n                styles.inputForm,\n                props.className,\n                {\n                    [styles.inputSmall]: small && !range,\n                    [styles.inputSmallRange]: small && range\n                }\n            )}\n        />\n    );\n};\n\nInput.propTypes = {\n    className: PropTypes.string,\n    range: PropTypes.bool,\n    small: PropTypes.bool\n};\n\nInput.defaultProps = {\n    range: false,\n    small: false\n};\n\nexport default Input;\n","export default {\n    fullSizeEditorMinWidth: 1274\n};\n","const localeTooBig = [\n    'ab',\n    'ca',\n    'cy',\n    'de',\n    'et',\n    'el',\n    'ga',\n    'gd',\n    'gl',\n    'mi',\n    'nl',\n    'ja',\n    'ja-Hira',\n    'nb',\n    'nn',\n    'rap',\n    'th',\n    'sr',\n    'sk',\n    'sl',\n    'fi',\n    'sv',\n    'sw',\n    'vi',\n    'tr',\n    'uk'\n];\n\nconst hideLabel = locale => localeTooBig.includes(locale);\n\nexport {\n    hideLabel\n};\n","import classNames from 'classnames';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport MediaQuery from 'react-responsive';\n\nimport {shouldShowGroup, shouldShowUngroup} from '../../helper/group';\nimport {shouldShowBringForward, shouldShowSendBackward} from '../../helper/order';\n\nimport BufferedInputHOC from '../forms/buffered-input-hoc.jsx';\nimport Button from '../button/button.jsx';\nimport ButtonGroup from '../button-group/button-group.jsx';\nimport Dropdown from '../dropdown/dropdown.jsx';\nimport {defineMessages, injectIntl, intlShape} from 'react-intl';\nimport Formats, {isVector} from '../../lib/format';\nimport Input from '../forms/input.jsx';\nimport InputGroup from '../input-group/input-group.jsx';\nimport Label from '../forms/label.jsx';\nimport LabeledIconButton from '../labeled-icon-button/labeled-icon-button.jsx';\nimport layout from '../../lib/layout-constants';\nimport {hideLabel} from '../../lib/hide-label';\nimport styles from './fixed-tools.css';\n\nimport groupIcon from './icons/group.svg';\nimport redoIcon from './icons/redo.svg';\nimport sendBackIcon from './icons/send-back.svg';\nimport sendBackwardIcon from './icons/send-backward.svg';\nimport sendForwardIcon from './icons/send-forward.svg';\nimport sendFrontIcon from './icons/send-front.svg';\nimport undoIcon from './icons/undo.svg';\nimport ungroupIcon from './icons/ungroup.svg';\n\nconst BufferedInput = BufferedInputHOC(Input);\nconst messages = defineMessages({\n    costume: {\n        id: 'paint.paintEditor.costume',\n        description: 'Label for the name of a costume',\n        defaultMessage: 'Costume'\n    },\n    group: {\n        defaultMessage: 'Group',\n        description: 'Label for the button to group shapes',\n        id: 'paint.paintEditor.group'\n    },\n    ungroup: {\n        defaultMessage: 'Ungroup',\n        description: 'Label for the button to ungroup shapes',\n        id: 'paint.paintEditor.ungroup'\n    },\n    undo: {\n        defaultMessage: 'Undo',\n        description: 'Alt to image for the button to undo an action',\n        id: 'paint.paintEditor.undo'\n    },\n    redo: {\n        defaultMessage: 'Redo',\n        description: 'Alt to image for the button to redo an action',\n        id: 'paint.paintEditor.redo'\n    },\n    forward: {\n        defaultMessage: 'Forward',\n        description: 'Label for the `Send forward on canvas` button',\n        id: 'paint.paintEditor.forward'\n    },\n    backward: {\n        defaultMessage: 'Backward',\n        description: 'Label for the `Send backward on canvas` button',\n        id: 'paint.paintEditor.backward'\n    },\n    front: {\n        defaultMessage: 'Front',\n        description: 'Label for the `Send to front of canvas` button',\n        id: 'paint.paintEditor.front'\n    },\n    back: {\n        defaultMessage: 'Back',\n        description: 'Label for the `Send to back of canvas` button',\n        id: 'paint.paintEditor.back'\n    },\n    more: {\n        defaultMessage: 'More',\n        description: 'Label for dropdown to access more action buttons',\n        id: 'paint.paintEditor.more'\n    }\n});\n\nconst FixedToolsComponent = props => {\n    const redoDisabled = !props.canRedo();\n    const undoDisabled = !props.canUndo();\n\n    return (\n        <div className={styles.row}>\n            {/* Name field */}\n            <InputGroup>\n                <MediaQuery minWidth={layout.fullSizeEditorMinWidth}>\n                    <Label text={props.intl.formatMessage(messages.costume)}>\n                        <BufferedInput\n                            className={styles.costumeInput}\n                            type=\"text\"\n                            value={props.name}\n                            onSubmit={props.onUpdateName}\n                        />\n                    </Label>\n                </MediaQuery>\n                <MediaQuery maxWidth={layout.fullSizeEditorMinWidth - 1}>\n                    <BufferedInput\n                        className={styles.costumeInput}\n                        type=\"text\"\n                        value={props.name}\n                        onSubmit={props.onUpdateName}\n                    />\n                </MediaQuery>\n            </InputGroup>\n\n            {/* Undo/Redo */}\n            <InputGroup>\n                <ButtonGroup>\n                    <Button\n                        className={\n                            classNames(\n                                styles.buttonGroupButton,\n                                {\n                                    [styles.modNoEndBorder]: !redoDisabled\n                                }\n                            )\n                        }\n                        disabled={undoDisabled}\n                        onClick={props.onUndo}\n                    >\n                        <img\n                            alt={props.intl.formatMessage(messages.undo)}\n                            className={classNames(\n                                styles.buttonGroupButtonIcon,\n                                styles.undoIcon\n                            )}\n                            draggable={false}\n                            src={undoIcon}\n                        />\n                    </Button>\n                    <Button\n                        className={\n                            classNames(\n                                styles.buttonGroupButton,\n                                {\n                                    [styles.modStartBorder]: !redoDisabled\n                                }\n                            )\n                        }\n                        disabled={redoDisabled}\n                        onClick={props.onRedo}\n                    >\n                        <img\n                            alt={props.intl.formatMessage(messages.redo)}\n                            className={styles.buttonGroupButtonIcon}\n                            draggable={false}\n                            src={redoIcon}\n                        />\n                    </Button>\n                </ButtonGroup>\n            </InputGroup>\n\n            {/* Group/Ungroup */}\n            {isVector(props.format) ?\n                <InputGroup className={styles.modDashedBorder}>\n                    <LabeledIconButton\n                        disabled={!shouldShowGroup()}\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={groupIcon}\n                        title={props.intl.formatMessage(messages.group)}\n                        onClick={props.onGroup}\n                    />\n                    <LabeledIconButton\n                        disabled={!shouldShowUngroup()}\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={ungroupIcon}\n                        title={props.intl.formatMessage(messages.ungroup)}\n                        onClick={props.onUngroup}\n                    />\n                </InputGroup> : null\n            }\n\n            {/* Forward/Backward */}\n            {isVector(props.format) ?\n                <InputGroup className={styles.modDashedBorder}>\n                    <LabeledIconButton\n                        disabled={!shouldShowBringForward()}\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={sendForwardIcon}\n                        title={props.intl.formatMessage(messages.forward)}\n                        onClick={props.onSendForward}\n                    />\n                    <LabeledIconButton\n                        disabled={!shouldShowSendBackward()}\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={sendBackwardIcon}\n                        title={props.intl.formatMessage(messages.backward)}\n                        onClick={props.onSendBackward}\n                    />\n                </InputGroup> : null\n            }\n\n            {isVector(props.format) ?\n                <MediaQuery minWidth={layout.fullSizeEditorMinWidth}>\n                    <InputGroup className={styles.row}>\n                        <LabeledIconButton\n                            disabled={!shouldShowBringForward()}\n                            hideLabel={hideLabel(props.intl.locale)}\n                            imgSrc={sendFrontIcon}\n                            title={props.intl.formatMessage(messages.front)}\n                            onClick={props.onSendToFront}\n                        />\n                        <LabeledIconButton\n                            disabled={!shouldShowSendBackward()}\n                            hideLabel={hideLabel(props.intl.locale)}\n                            imgSrc={sendBackIcon}\n                            title={props.intl.formatMessage(messages.back)}\n                            onClick={props.onSendToBack}\n                        />\n                    </InputGroup>\n\n                    {/* To be rotation point */}\n                    {/* <InputGroup>\n                        <LabeledIconButton\n                            imgAlt=\"Rotation Point\"\n                            imgSrc={rotationPointIcon}\n                            title=\"Rotation Point\"\n                            onClick={function () {}}\n                        />\n                    </InputGroup> */}\n                </MediaQuery> : null\n            }\n            {isVector(props.format) ?\n                <MediaQuery maxWidth={layout.fullSizeEditorMinWidth - 1}>\n                    <InputGroup>\n                        <Dropdown\n                            className={styles.modUnselect}\n                            enterExitTransitionDurationMs={20}\n                            popoverContent={\n                                <InputGroup\n                                    className={styles.modContextMenu}\n                                    rtl={props.rtl}\n                                >\n                                    <Button\n                                        className={classNames(styles.modMenuItem, {\n                                            [styles.modDisabled]: !shouldShowBringForward()\n                                        })}\n                                        disabled={!shouldShowBringForward()}\n                                        onClick={props.onSendToFront}\n                                    >\n                                        <img\n                                            className={styles.menuItemIcon}\n                                            draggable={false}\n                                            src={sendFrontIcon}\n                                        />\n                                        <span>{props.intl.formatMessage(messages.front)}</span>\n                                    </Button>\n                                    <Button\n                                        className={classNames(styles.modMenuItem, {\n                                            [styles.modDisabled]: !shouldShowSendBackward()\n                                        })}\n                                        disabled={!shouldShowSendBackward()}\n                                        onClick={props.onSendToBack}\n                                    >\n                                        <img\n                                            className={styles.menuItemIcon}\n                                            draggable={false}\n                                            src={sendBackIcon}\n                                        />\n                                        <span>{props.intl.formatMessage(messages.back)}</span>\n                                    </Button>\n\n                                    {/* To be rotation point */}\n                                    {/* <Button\n                                        className={classNames(styles.modMenuItem, styles.modTopDivider)}\n                                        onClick={function () {}}\n                                    >\n                                        <img\n                                            className={styles.menuItemIcon}\n                                            draggable={false}\n                                            src={rotationPointIcon}\n                                        />\n                                        <span>{'Rotation Point'}</span>\n                                    </Button> */}\n                                </InputGroup>\n                            }\n                            tipSize={.01}\n                        >\n                            {props.intl.formatMessage(messages.more)}\n                        </Dropdown>\n                    </InputGroup>\n                </MediaQuery> : null\n            }\n        </div>\n    );\n};\n\nFixedToolsComponent.propTypes = {\n    canRedo: PropTypes.func.isRequired,\n    canUndo: PropTypes.func.isRequired,\n    format: PropTypes.oneOf(Object.keys(Formats)),\n    intl: intlShape,\n    name: PropTypes.string,\n    onGroup: PropTypes.func.isRequired,\n    onRedo: PropTypes.func.isRequired,\n    onSendBackward: PropTypes.func.isRequired,\n    onSendForward: PropTypes.func.isRequired,\n    onSendToBack: PropTypes.func.isRequired,\n    onSendToFront: PropTypes.func.isRequired,\n    onUndo: PropTypes.func.isRequired,\n    onUngroup: PropTypes.func.isRequired,\n    onUpdateName: PropTypes.func.isRequired,\n    rtl: PropTypes.bool.isRequired\n};\n\nconst mapStateToProps = state => ({\n    format: state.scratchPaint.format,\n    rtl: state.scratchPaint.layout.rtl,\n    selectedItems: state.scratchPaint.selectedItems,\n    undoState: state.scratchPaint.undo\n});\n\nexport default connect(\n    mapStateToProps\n)(injectIntl(FixedToolsComponent));\n","import log from '../log/log';\n\nconst CHANGE_TEXT_EDIT_TARGET = 'scratch-paint/text-tool/CHANGE_TEXT_EDIT_TARGET';\nconst initialState = null;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_TEXT_EDIT_TARGET:\n        if (typeof action.textEditTargetId === 'undefined') {\n            log.warn(`Text edit target should not be set to undefined. Use null.`);\n            return state;\n        } else if (typeof action.textEditTargetId === 'undefined' || isNaN(action.textEditTargetId)) {\n            log.warn(`Text edit target should be an item ID number. Got: ${action.textEditTargetId}`);\n            return state;\n        }\n        return action.textEditTargetId;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\n/**\n * Set the currently-being-edited text field to the given item ID\n * @param {?number} textEditTargetId The paper.Item ID of the active text field.\n *     Leave empty if there is no text editing target.\n * @return {object} Redux action to change the text edit target.\n */\nconst setTextEditTarget = function (textEditTargetId) {\n    return {\n        type: CHANGE_TEXT_EDIT_TARGET,\n        textEditTargetId: textEditTargetId ? textEditTargetId : null\n    };\n};\n\nexport {\n    reducer as default,\n    setTextEditTarget\n};\n","import log from '../log/log';\nconst SET_LAYOUT = 'scratch-paint/layout/SET_LAYOUT';\nconst initialState = {rtl: false};\n\nconst layouts = ['ltr', 'rtl'];\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case SET_LAYOUT:\n        if (layouts.indexOf(action.layout) === -1) {\n            log.warn(`Unrecognized layout provided: ${action.layout}`);\n            return state;\n        }\n        return {rtl: action.layout === 'rtl'};\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\n/**\n * Change the layout to the new layout\n * @param {string} layout either 'ltr' or 'rtl'\n * @return {object} Redux action to change the selected items.\n */\nconst setLayout = function (layout) {\n    return {\n        type: SET_LAYOUT,\n        layout: layout\n    };\n};\n\n\nexport {\n    reducer as default,\n    setLayout,\n    SET_LAYOUT\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\n\nimport FixedToolsComponent from '../components/fixed-tools/fixed-tools.jsx';\n\nimport {changeMode} from '../reducers/modes';\nimport {changeFormat} from '../reducers/format';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {deactivateEyeDropper} from '../reducers/eye-dropper';\nimport {setTextEditTarget} from '../reducers/text-edit-target';\nimport {setLayout} from '../reducers/layout';\n\nimport {getSelectedLeafItems} from '../helper/selection';\nimport {bringToFront, sendBackward, sendToBack, bringForward} from '../helper/order';\nimport {groupSelection, ungroupSelection} from '../helper/group';\n\nimport Formats, {isBitmap} from '../lib/format';\nimport bindAll from 'lodash.bindall';\n\nclass FixedTools extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'handleSendBackward',\n            'handleSendForward',\n            'handleSendToBack',\n            'handleSendToFront',\n            'handleSetSelectedItems',\n            'handleGroup',\n            'handleUngroup'\n        ]);\n    }\n    handleGroup () {\n        groupSelection(this.props.clearSelectedItems, this.handleSetSelectedItems, this.props.onUpdateImage);\n    }\n    handleUngroup () {\n        ungroupSelection(this.props.clearSelectedItems, this.handleSetSelectedItems, this.props.onUpdateImage);\n    }\n    handleSendBackward () {\n        sendBackward(this.props.onUpdateImage);\n    }\n    handleSendForward () {\n        bringForward(this.props.onUpdateImage);\n    }\n    handleSendToBack () {\n        sendToBack(this.props.onUpdateImage);\n    }\n    handleSendToFront () {\n        bringToFront(this.props.onUpdateImage);\n    }\n    handleSetSelectedItems () {\n        this.props.setSelectedItems(this.props.format);\n    }\n    render () {\n        return (\n            <FixedToolsComponent\n                canRedo={this.props.canRedo}\n                canUndo={this.props.canUndo}\n                name={this.props.name}\n                onGroup={this.handleGroup}\n                onRedo={this.props.onRedo}\n                onSendBackward={this.handleSendBackward}\n                onSendForward={this.handleSendForward}\n                onSendToBack={this.handleSendToBack}\n                onSendToFront={this.handleSendToFront}\n                onUndo={this.props.onUndo}\n                onUngroup={this.handleUngroup}\n                onUpdateImage={this.props.onUpdateImage}\n                onUpdateName={this.props.onUpdateName}\n            />\n        );\n    }\n}\n\nFixedTools.propTypes = {\n    canRedo: PropTypes.func.isRequired,\n    canUndo: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    format: PropTypes.oneOf(Object.keys(Formats)),\n    name: PropTypes.string,\n    onRedo: PropTypes.func.isRequired,\n    onUndo: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    onUpdateName: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    changeColorToEyeDropper: state.scratchPaint.color.eyeDropper.callback,\n    format: state.scratchPaint.format,\n    isEyeDropping: state.scratchPaint.color.eyeDropper.active,\n    mode: state.scratchPaint.mode,\n    pasteOffset: state.scratchPaint.clipboard.pasteOffset,\n    previousTool: state.scratchPaint.color.eyeDropper.previousTool,\n    selectedItems: state.scratchPaint.selectedItems,\n    viewBounds: state.scratchPaint.viewBounds\n});\nconst mapDispatchToProps = dispatch => ({\n    changeMode: mode => {\n        dispatch(changeMode(mode));\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    handleSwitchToBitmap: () => {\n        dispatch(changeFormat(Formats.BITMAP));\n    },\n    handleSwitchToVector: () => {\n        dispatch(changeFormat(Formats.VECTOR));\n    },\n    removeTextEditTarget: () => {\n        dispatch(setTextEditTarget());\n    },\n    setLayout: layout => {\n        dispatch(setLayout(layout));\n    },\n    setSelectedItems: format => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n    },\n    onDeactivateEyeDropper: () => {\n        // set redux values to default for eye dropper reducer\n        dispatch(deactivateEyeDropper());\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(FixedTools);\n","import paper from '@scratch/paper';\nimport bindAll from 'lodash.bindall';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport omit from 'lodash.omit';\nimport {connect} from 'react-redux';\n\nimport {\n    clearSelection,\n    getAllRootItems,\n    getSelectedLeafItems,\n    getSelectedRootItems\n} from '../helper/selection';\nimport {getTrimmedRaster} from '../helper/bitmap';\nimport Formats, {isBitmap} from '../lib/format';\nimport Modes from '../lib/modes';\n\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {incrementPasteOffset, setClipboardItems} from '../reducers/clipboard';\n\nconst CopyPasteHOC = function (WrappedComponent) {\n    class CopyPasteWrapper extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'handleCopy',\n                'handlePaste'\n            ]);\n        }\n        handleCopy () {\n            let selectedItems = [];\n            if (this.props.mode === Modes.RESHAPE) {\n                const leafItems = getSelectedLeafItems();\n                // Copy root of compound paths\n                for (const item of leafItems) {\n                    if (item.parent && item.parent instanceof paper.CompoundPath) {\n                        selectedItems.push(item.parent);\n                    } else {\n                        selectedItems.push(item);\n                    }\n                }\n            } else {\n                selectedItems = getSelectedRootItems();\n            }\n            if (selectedItems.length === 0) {\n                if (isBitmap(this.props.format)) {\n                    const raster = getTrimmedRaster(false /* shouldInsert */);\n                    if (!raster) return;\n                    selectedItems.push(raster);\n                } else {\n                    selectedItems = getAllRootItems();\n                }\n            }\n            const clipboardItems = [];\n            for (let i = 0; i < selectedItems.length; i++) {\n                const jsonItem = selectedItems[i].exportJSON({asString: false});\n                clipboardItems.push(jsonItem);\n            }\n            this.props.setClipboardItems(clipboardItems);\n        }\n        handlePaste () {\n            clearSelection(this.props.clearSelectedItems);\n\n            if (this.props.clipboardItems.length === 0) return;\n\n            let items = [];\n            for (let i = 0; i < this.props.clipboardItems.length; i++) {\n                const item = paper.Base.importJSON(this.props.clipboardItems[i]);\n                if (item) {\n                    items.push(item);\n                }\n            }\n            if (!items.length) return;\n            // If pasting a group or non-raster to bitmap, rasterize first\n            if (isBitmap(this.props.format) && !(items.length === 1 && items[0] instanceof paper.Raster)) {\n                const group = new paper.Group(items);\n                items = [group.rasterize()];\n                group.remove();\n            }\n            for (const item of items) {\n                const placedItem = paper.project.getActiveLayer().addChild(item);\n                placedItem.selected = true;\n                placedItem.position.x += 10 * this.props.pasteOffset;\n                placedItem.position.y += 10 * this.props.pasteOffset;\n            }\n            this.props.incrementPasteOffset();\n            this.props.setSelectedItems(this.props.format);\n            this.props.onUpdateImage();\n        }\n        render () {\n            const componentProps = omit(this.props, [\n                'clearSelectedItems',\n                'clipboardItems',\n                'format',\n                'incrementPasteOffset',\n                'mode',\n                'pasteOffset',\n                'setClipboardItems',\n                'setSelectedItems']);\n            return (\n                <WrappedComponent\n                    onCopyToClipboard={this.handleCopy}\n                    onPasteFromClipboard={this.handlePaste}\n                    {...componentProps}\n                />\n            );\n        }\n    }\n\n    CopyPasteWrapper.propTypes = {\n        clearSelectedItems: PropTypes.func.isRequired,\n        clipboardItems: PropTypes.arrayOf(PropTypes.array),\n        format: PropTypes.oneOf(Object.keys(Formats)),\n        incrementPasteOffset: PropTypes.func.isRequired,\n        mode: PropTypes.oneOf(Object.keys(Modes)),\n        onUpdateImage: PropTypes.func.isRequired,\n        pasteOffset: PropTypes.number,\n        setClipboardItems: PropTypes.func.isRequired,\n        setSelectedItems: PropTypes.func.isRequired\n    };\n    const mapStateToProps = state => ({\n        clipboardItems: state.scratchPaint.clipboard.items,\n        format: state.scratchPaint.format,\n        mode: state.scratchPaint.mode,\n        pasteOffset: state.scratchPaint.clipboard.pasteOffset\n    });\n    const mapDispatchToProps = dispatch => ({\n        setClipboardItems: items => {\n            dispatch(setClipboardItems(items));\n        },\n        incrementPasteOffset: () => {\n            dispatch(incrementPasteOffset());\n        },\n        clearSelectedItems: () => {\n            dispatch(clearSelectedItems());\n        },\n        setSelectedItems: format => {\n            dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n        }\n    });\n\n    return connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(CopyPasteWrapper);\n};\n\nexport default CopyPasteHOC;\n","import log from '../log/log';\n\nconst CHANGE_BRUSH_SIZE = 'scratch-paint/brush-mode/CHANGE_BRUSH_SIZE';\nconst initialState = {brushSize: 10};\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_BRUSH_SIZE:\n        if (isNaN(action.brushSize)) {\n            log.warn(`Invalid brush size: ${action.brushSize}`);\n            return state;\n        }\n        return {brushSize: Math.max(1, action.brushSize)};\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeBrushSize = function (brushSize) {\n    return {\n        type: CHANGE_BRUSH_SIZE,\n        brushSize: brushSize\n    };\n};\n\nexport {\n    reducer as default,\n    changeBrushSize\n};\n","import log from '../log/log';\nimport {CHANGE_SELECTED_ITEMS} from './selected-items';\nimport {getColorsFromSelection} from '../helper/style-path';\n\n// Bit brush size affects bit brush width, circle/rectangle outline drawing width, and line width\n// in the bitmap paint editor.\nconst CHANGE_BIT_BRUSH_SIZE = 'scratch-paint/brush-mode/CHANGE_BIT_BRUSH_SIZE';\nconst initialState = 10;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_BIT_BRUSH_SIZE:\n        if (isNaN(action.brushSize)) {\n            log.warn(`Invalid brush size: ${action.brushSize}`);\n            return state;\n        }\n        return Math.max(1, action.brushSize);\n    case CHANGE_SELECTED_ITEMS:\n    {\n        // Don't change state if no selection\n        if (!action.selectedItems || !action.selectedItems.length) {\n            return state;\n        }\n        // Vector mode doesn't have bit width\n        if (!action.bitmapMode) {\n            return state;\n        }\n        const colorState = getColorsFromSelection(action.selectedItems, action.bitmapMode);\n        if (colorState.thickness) return colorState.thickness;\n        return state;\n    }\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeBitBrushSize = function (brushSize) {\n    return {\n        type: CHANGE_BIT_BRUSH_SIZE,\n        brushSize: brushSize\n    };\n};\n\nexport {\n    reducer as default,\n    changeBitBrushSize\n};\n","import log from '../log/log';\n\nconst CHANGE_BIT_ERASER_SIZE = 'scratch-paint/eraser-mode/CHANGE_BIT_ERASER_SIZE';\nconst initialState = 40;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_BIT_ERASER_SIZE:\n        if (isNaN(action.eraserSize)) {\n            log.warn(`Invalid eraser size: ${action.eraserSize}`);\n            return state;\n        }\n        return Math.max(1, action.eraserSize);\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeBitEraserSize = function (eraserSize) {\n    return {\n        type: CHANGE_BIT_ERASER_SIZE,\n        eraserSize: eraserSize\n    };\n};\n\nexport {\n    reducer as default,\n    changeBitEraserSize\n};\n","import paper from '@scratch/paper';\nimport {CHANGE_SELECTED_ITEMS} from './selected-items';\n\nconst SET_FILLED = 'scratch-paint/fill-bitmap-shapes/SET_FILLED';\nconst initialState = true;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case SET_FILLED:\n        return action.filled;\n    case CHANGE_SELECTED_ITEMS:\n        if (action.bitmapMode &&\n            action.selectedItems &&\n            action.selectedItems[0] instanceof paper.Shape) {\n            return action.selectedItems[0].strokeWidth === 0;\n        }\n        return state;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst setShapesFilled = function (filled) {\n    return {\n        type: SET_FILLED,\n        filled: filled\n    };\n};\n\nexport {\n    reducer as default,\n    setShapesFilled\n};\n","const Fonts = {\n    SANS_SERIF: 'Sans Serif',\n    SERIF: 'Serif',\n    HANDWRITING: 'Handwriting',\n    MARKER: 'Marker',\n    CURLY: 'Curly',\n    PIXEL: 'Pixel',\n    CHINESE: '\"Microsoft YaHei\", \"微软雅黑\", STXihei, \"华文细黑\"',\n    JAPANESE: '\"ヒラギノ角ゴ Pro W3\", \"Hiragino Kaku Gothic Pro\", Osaka, \"メイリオ\", Meiryo, \"MS Pゴシック\", \"MS PGothic\"',\n    KOREAN: 'Malgun Gothic'\n};\n\nexport default Fonts;\n","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport Button from '../button/button.jsx';\nimport Dropdown from '../dropdown/dropdown.jsx';\nimport InputGroup from '../input-group/input-group.jsx';\nimport Fonts from '../../lib/fonts';\nimport styles from './font-dropdown.css';\n\nconst ModeToolsComponent = props => (\n    <Dropdown\n        className={classNames(styles.modUnselect, styles.fontDropdown)}\n        enterExitTransitionDurationMs={60}\n        popoverContent={\n            <InputGroup className={styles.modContextMenu}>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverSansSerif}\n                >\n                    <span className={styles.sansSerif}>\n                        {props.getFontName(Fonts.SANS_SERIF)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverSerif}\n                >\n                    <span className={styles.serif}>\n                        {props.getFontName(Fonts.SERIF)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverHandwriting}\n                >\n                    <span className={styles.handwriting}>\n                        {props.getFontName(Fonts.HANDWRITING)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverMarker}\n                >\n                    <span className={styles.marker}>\n                        {props.getFontName(Fonts.MARKER)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverCurly}\n                >\n                    <span className={styles.curly}>\n                        {props.getFontName(Fonts.CURLY)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverPixel}\n                >\n                    <span className={styles.pixel}>\n                        {props.getFontName(Fonts.PIXEL)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverChinese}\n                >\n                    <span className={styles.chinese}>\n                        {props.getFontName(Fonts.CHINESE)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverJapanese}\n                >\n                    <span className={styles.japanese}>\n                        {props.getFontName(Fonts.JAPANESE)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverKorean}\n                >\n                    <span className={styles.korean}>\n                        {props.getFontName(Fonts.KOREAN)}\n                    </span>\n                </Button>\n            </InputGroup>\n        }\n        ref={props.componentRef}\n        tipSize={.01}\n        onOpen={props.onOpenDropdown}\n        onOuterAction={props.onClickOutsideDropdown}\n    >\n        <span className={classNames(props.getFontStyle(props.font), styles.displayedFontName)}>\n            {props.getFontName(props.font)}\n        </span>\n    </Dropdown>\n);\n\nModeToolsComponent.propTypes = {\n    componentRef: PropTypes.func.isRequired,\n    font: PropTypes.string,\n    getFontName: PropTypes.func.isRequired,\n    getFontStyle: PropTypes.func.isRequired,\n    onChoose: PropTypes.func.isRequired,\n    onClickOutsideDropdown: PropTypes.func,\n    onHoverChinese: PropTypes.func,\n    onHoverCurly: PropTypes.func,\n    onHoverHandwriting: PropTypes.func,\n    onHoverJapanese: PropTypes.func,\n    onHoverKorean: PropTypes.func,\n    onHoverMarker: PropTypes.func,\n    onHoverPixel: PropTypes.func,\n    onHoverSansSerif: PropTypes.func,\n    onHoverSerif: PropTypes.func,\n    onOpenDropdown: PropTypes.func\n};\nexport default ModeToolsComponent;\n","import Fonts from '../lib/fonts';\n\nconst CHANGE_FONT = 'scratch-paint/fonts/CHANGE_FONT';\nconst initialState = Fonts.SANS_SERIF;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_FONT:\n        if (!action.font) return state;\n        return action.font;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeFont = function (font) {\n    return {\n        type: CHANGE_FONT,\n        font: font\n    };\n};\n\nexport {\n    reducer as default,\n    changeFont\n};\n","import paper from '@scratch/paper';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport FontDropdownComponent from '../components/font-dropdown/font-dropdown.jsx';\nimport Fonts from '../lib/fonts';\nimport {changeFont} from '../reducers/font';\nimport {getSelectedLeafItems} from '../helper/selection';\nimport styles from '../components/font-dropdown/font-dropdown.css';\n\nclass FontDropdown extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'getFontStyle',\n            'getFontName',\n            'handleChangeFontSerif',\n            'handleChangeFontSansSerif',\n            'handleChangeFontHandwriting',\n            'handleChangeFontMarker',\n            'handleChangeFontCurly',\n            'handleChangeFontPixel',\n            'handleChangeFontChinese',\n            'handleChangeFontJapanese',\n            'handleChangeFontKorean',\n            'handleOpenDropdown',\n            'handleClickOutsideDropdown',\n            'setDropdown',\n            'handleChoose'\n        ]);\n    }\n    getFontStyle (font) {\n        switch (font) {\n        case Fonts.SERIF:\n            return styles.serif;\n        case Fonts.SANS_SERIF:\n            return styles.sansSerif;\n        case Fonts.HANDWRITING:\n            return styles.handwriting;\n        case Fonts.MARKER:\n            return styles.marker;\n        case Fonts.CURLY:\n            return styles.curly;\n        case Fonts.PIXEL:\n            return styles.pixel;\n        case Fonts.CHINESE:\n            return styles.chinese;\n        case Fonts.JAPANESE:\n            return styles.japanese;\n        case Fonts.KOREAN:\n            return styles.korean;\n        default:\n            return '';\n        }\n    }\n    getFontName (font) {\n        switch (font) {\n        case Fonts.CHINESE:\n            return '中文';\n        case Fonts.KOREAN:\n            return '한국어';\n        case Fonts.JAPANESE:\n            return '日本語';\n        default:\n            return font;\n        }\n    }\n    handleChangeFontSansSerif () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.SANS_SERIF);\n        }\n    }\n    handleChangeFontSerif () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.SERIF);\n        }\n    }\n    handleChangeFontHandwriting () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.HANDWRITING);\n        }\n    }\n    handleChangeFontMarker () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.MARKER);\n        }\n    }\n    handleChangeFontCurly () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.CURLY);\n        }\n    }\n    handleChangeFontPixel () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.PIXEL);\n        }\n    }\n    handleChangeFontChinese () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.CHINESE);\n        }\n    }\n    handleChangeFontJapanese () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.JAPANESE);\n        }\n    }\n    handleChangeFontKorean () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.KOREAN);\n        }\n    }\n    handleChoose () {\n        if (this.dropDown.isOpen()) {\n            this.dropDown.handleClosePopover();\n            this.props.onUpdateImage();\n        }\n    }\n    handleOpenDropdown () {\n        this.savedFont = this.props.font;\n        this.savedSelection = getSelectedLeafItems();\n    }\n    handleClickOutsideDropdown (e) {\n        e.stopPropagation();\n        this.dropDown.handleClosePopover();\n\n        // Cancel font change\n        for (const item of this.savedSelection) {\n            if (item instanceof paper.PointText) {\n                item.font = this.savedFont;\n            }\n        }\n\n        this.props.changeFont(this.savedFont);\n        this.savedFont = null;\n        this.savedSelection = null;\n    }\n    setDropdown (element) {\n        this.dropDown = element;\n    }\n    render () {\n        return (\n            <FontDropdownComponent\n                componentRef={this.setDropdown}\n                font={this.props.font}\n                getFontName={this.getFontName}\n                getFontStyle={this.getFontStyle}\n                onChoose={this.handleChoose}\n                onClickOutsideDropdown={this.handleClickOutsideDropdown}\n                onHoverChinese={this.handleChangeFontChinese}\n                onHoverCurly={this.handleChangeFontCurly}\n                onHoverHandwriting={this.handleChangeFontHandwriting}\n                onHoverJapanese={this.handleChangeFontJapanese}\n                onHoverKorean={this.handleChangeFontKorean}\n                onHoverMarker={this.handleChangeFontMarker}\n                onHoverPixel={this.handleChangeFontPixel}\n                onHoverSansSerif={this.handleChangeFontSansSerif}\n                onHoverSerif={this.handleChangeFontSerif}\n                onOpenDropdown={this.handleOpenDropdown}\n            />\n        );\n    }\n}\n\nFontDropdown.propTypes = {\n    changeFont: PropTypes.func.isRequired,\n    font: PropTypes.string,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    font: state.scratchPaint.font\n});\nconst mapDispatchToProps = dispatch => ({\n    changeFont: font => {\n        dispatch(changeFont(font));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(FontDropdown);\n","import bindAll from 'lodash.bindall';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\n/**\n * Higher Order Component to manage inputs that submit on change and <enter>\n * @param {React.Component} Input text input that consumes onChange, onBlur, onKeyPress\n * @returns {React.Component} Live input that calls onSubmit on change and <enter>\n */\nexport default function (Input) {\n    class LiveInput extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'handleChange',\n                'handleKeyPress',\n                'handleFlush'\n            ]);\n            this.state = {\n                value: null\n            };\n        }\n        handleKeyPress (e) {\n            if (e.key === 'Enter') {\n                this.handleChange(e);\n                e.target.blur();\n            }\n        }\n        handleFlush () {\n            this.setState({value: null});\n        }\n        handleChange (e) {\n            const isNumeric = typeof this.props.value === 'number';\n            const validatesNumeric = isNumeric ? !isNaN(e.target.value) : true;\n            if (e.target.value !== null && validatesNumeric) {\n                let val = Number(e.target.value);\n                if (typeof this.props.max !== 'undefined' && val > Number(this.props.max)) {\n                    val = this.props.max;\n                }\n                if (typeof this.props.min !== 'undefined' && val < Number(this.props.min)) {\n                    val = this.props.min;\n                }\n                this.props.onSubmit(val);\n            }\n            this.setState({value: e.target.value});\n        }\n        render () {\n            const liveValue = this.state.value === null ? this.props.value : this.state.value;\n            return (\n                <Input\n                    {...this.props}\n                    value={liveValue}\n                    onBlur={this.handleFlush}\n                    onChange={this.handleChange}\n                    onKeyPress={this.handleKeyPress}\n                />\n            );\n        }\n    }\n\n    LiveInput.propTypes = {\n        max: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        min: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        onSubmit: PropTypes.func.isRequired,\n        value: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n    };\n\n    return LiveInput;\n}\n","import classNames from 'classnames';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport {changeBrushSize} from '../../reducers/brush-mode';\nimport {changeBrushSize as changeEraserSize} from '../../reducers/eraser-mode';\nimport {changeBitBrushSize} from '../../reducers/bit-brush-size';\nimport {changeBitEraserSize} from '../../reducers/bit-eraser-size';\nimport {setShapesFilled} from '../../reducers/fill-bitmap-shapes';\n\nimport FontDropdown from '../../containers/font-dropdown.jsx';\nimport LiveInputHOC from '../forms/live-input-hoc.jsx';\nimport Label from '../forms/label.jsx';\nimport {defineMessages, injectIntl, intlShape} from 'react-intl';\nimport Input from '../forms/input.jsx';\nimport InputGroup from '../input-group/input-group.jsx';\nimport LabeledIconButton from '../labeled-icon-button/labeled-icon-button.jsx';\nimport Modes from '../../lib/modes';\nimport Formats, {isBitmap, isVector} from '../../lib/format';\nimport {hideLabel} from '../../lib/hide-label';\nimport styles from './mode-tools.css';\n\nimport copyIcon from './icons/copy.svg';\nimport pasteIcon from './icons/paste.svg';\nimport deleteIcon from './icons/delete.svg';\n\nimport bitBrushIcon from '../bit-brush-mode/brush.svg';\nimport bitEraserIcon from '../bit-eraser-mode/eraser.svg';\nimport bitLineIcon from '../bit-line-mode/line.svg';\nimport brushIcon from '../brush-mode/brush.svg';\nimport curvedPointIcon from './icons/curved-point.svg';\nimport eraserIcon from '../eraser-mode/eraser.svg';\nimport flipHorizontalIcon from './icons/flip-horizontal.svg';\nimport flipVerticalIcon from './icons/flip-vertical.svg';\nimport straightPointIcon from './icons/straight-point.svg';\nimport bitOvalIcon from '../bit-oval-mode/oval.svg';\nimport bitRectIcon from '../bit-rect-mode/rectangle.svg';\nimport bitOvalOutlinedIcon from '../bit-oval-mode/oval-outlined.svg';\nimport bitRectOutlinedIcon from '../bit-rect-mode/rectangle-outlined.svg';\n\nimport {MAX_STROKE_WIDTH} from '../../reducers/stroke-width';\n\nconst LiveInput = LiveInputHOC(Input);\nconst ModeToolsComponent = props => {\n    const messages = defineMessages({\n        brushSize: {\n            defaultMessage: 'Size',\n            description: 'Label for the brush size input',\n            id: 'paint.modeTools.brushSize'\n        },\n        eraserSize: {\n            defaultMessage: 'Eraser size',\n            description: 'Label for the eraser size input',\n            id: 'paint.modeTools.eraserSize'\n        },\n        copy: {\n            defaultMessage: 'Copy',\n            description: 'Label for the copy button',\n            id: 'paint.modeTools.copy'\n        },\n        paste: {\n            defaultMessage: 'Paste',\n            description: 'Label for the paste button',\n            id: 'paint.modeTools.paste'\n        },\n        delete: {\n            defaultMessage: 'Delete',\n            description: 'Label for the delete button',\n            id: 'paint.modeTools.delete'\n        },\n        curved: {\n            defaultMessage: 'Curved',\n            description: 'Label for the button that converts selected points to curves',\n            id: 'paint.modeTools.curved'\n        },\n        pointed: {\n            defaultMessage: 'Pointed',\n            description: 'Label for the button that converts selected points to sharp points',\n            id: 'paint.modeTools.pointed'\n        },\n        thickness: {\n            defaultMessage: 'Thickness',\n            description: 'Label for the number input to choose the line thickness',\n            id: 'paint.modeTools.thickness'\n        },\n        flipHorizontal: {\n            defaultMessage: 'Flip Horizontal',\n            description: 'Label for the button to flip the image horizontally',\n            id: 'paint.modeTools.flipHorizontal'\n        },\n        flipVertical: {\n            defaultMessage: 'Flip Vertical',\n            description: 'Label for the button to flip the image vertically',\n            id: 'paint.modeTools.flipVertical'\n        },\n        filled: {\n            defaultMessage: 'Filled',\n            description: 'Label for the button that sets the bitmap rectangle/oval mode to draw outlines',\n            id: 'paint.modeTools.filled'\n        },\n        outlined: {\n            defaultMessage: 'Outlined',\n            description: 'Label for the button that sets the bitmap rectangle/oval mode to draw filled-in shapes',\n            id: 'paint.modeTools.outlined'\n        }\n    });\n\n    switch (props.mode) {\n    case Modes.BRUSH:\n        /* falls through */\n    case Modes.BIT_BRUSH:\n        /* falls through */\n    case Modes.BIT_LINE:\n    {\n        const currentIcon = isVector(props.format) ? brushIcon :\n            props.mode === Modes.BIT_LINE ? bitLineIcon : bitBrushIcon;\n        const currentBrushValue = isBitmap(props.format) ? props.bitBrushSize : props.brushValue;\n        const changeFunction = isBitmap(props.format) ? props.onBitBrushSliderChange : props.onBrushSliderChange;\n        const currentMessage = props.mode === Modes.BIT_LINE ? messages.thickness : messages.brushSize;\n        return (\n            <div className={classNames(props.className, styles.modeTools)}>\n                <div>\n                    <img\n                        alt={props.intl.formatMessage(currentMessage)}\n                        className={styles.modeToolsIcon}\n                        draggable={false}\n                        src={currentIcon}\n                    />\n                </div>\n                <LiveInput\n                    range\n                    small\n                    max={MAX_STROKE_WIDTH}\n                    min=\"1\"\n                    type=\"number\"\n                    value={currentBrushValue}\n                    onSubmit={changeFunction}\n                />\n            </div>\n        );\n    }\n    case Modes.BIT_ERASER:\n        /* falls through */\n    case Modes.ERASER:\n    {\n        const currentIcon = isVector(props.format) ? eraserIcon : bitEraserIcon;\n        const currentEraserValue = isBitmap(props.format) ? props.bitEraserSize : props.eraserValue;\n        const changeFunction = isBitmap(props.format) ? props.onBitEraserSliderChange : props.onEraserSliderChange;\n        return (\n            <div className={classNames(props.className, styles.modeTools)}>\n                <div>\n                    <img\n                        alt={props.intl.formatMessage(messages.eraserSize)}\n                        className={styles.modeToolsIcon}\n                        draggable={false}\n                        src={currentIcon}\n                    />\n                </div>\n                <LiveInput\n                    range\n                    small\n                    max={MAX_STROKE_WIDTH}\n                    min=\"1\"\n                    type=\"number\"\n                    value={currentEraserValue}\n                    onSubmit={changeFunction}\n                />\n            </div>\n        );\n    }\n    case Modes.RESHAPE:\n        return (\n            <div className={classNames(props.className, styles.modeTools)}>\n                <InputGroup className={classNames(styles.modDashedBorder, styles.modLabeledIconHeight)}>\n                    <LabeledIconButton\n                        disabled={!props.hasSelectedUncurvedPoints}\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={curvedPointIcon}\n                        title={props.intl.formatMessage(messages.curved)}\n                        onClick={props.onCurvePoints}\n                    />\n                    <LabeledIconButton\n                        disabled={!props.hasSelectedUnpointedPoints}\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={straightPointIcon}\n                        title={props.intl.formatMessage(messages.pointed)}\n                        onClick={props.onPointPoints}\n                    />\n                </InputGroup>\n                <InputGroup className={classNames(styles.modLabeledIconHeight)}>\n                    <LabeledIconButton\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={deleteIcon}\n                        title={props.intl.formatMessage(messages.delete)}\n                        onClick={props.onDelete}\n                    />\n                </InputGroup>\n            </div>\n        );\n    case Modes.BIT_SELECT:\n        /* falls through */\n    case Modes.SELECT:\n        return (\n            <div className={classNames(props.className, styles.modeTools)}>\n                <InputGroup className={classNames(styles.modDashedBorder, styles.modLabeledIconHeight)}>\n                    <LabeledIconButton\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={copyIcon}\n                        title={props.intl.formatMessage(messages.copy)}\n                        onClick={props.onCopyToClipboard}\n                    />\n                    <LabeledIconButton\n                        disabled={!(props.clipboardItems.length > 0)}\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={pasteIcon}\n                        title={props.intl.formatMessage(messages.paste)}\n                        onClick={props.onPasteFromClipboard}\n                    />\n                </InputGroup>\n                <InputGroup className={classNames(styles.modDashedBorder, styles.modLabeledIconHeight)}>\n                    <LabeledIconButton\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={deleteIcon}\n                        title={props.intl.formatMessage(messages.delete)}\n                        onClick={props.onDelete}\n                    />\n                </InputGroup>\n                <InputGroup className={classNames(styles.modLabeledIconHeight)}>\n                    <LabeledIconButton\n                        hideLabel={props.intl.locale !== 'en'}\n                        imgSrc={flipHorizontalIcon}\n                        title={props.intl.formatMessage(messages.flipHorizontal)}\n                        onClick={props.onFlipHorizontal}\n                    />\n                    <LabeledIconButton\n                        hideLabel={props.intl.locale !== 'en'}\n                        imgSrc={flipVerticalIcon}\n                        title={props.intl.formatMessage(messages.flipVertical)}\n                        onClick={props.onFlipVertical}\n                    />\n                </InputGroup>\n            </div>\n        );\n    case Modes.BIT_TEXT:\n        /* falls through */\n    case Modes.TEXT:\n        return (\n            <div className={classNames(props.className, styles.modeTools)}>\n                <InputGroup>\n                    <FontDropdown\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                </InputGroup>\n            </div>\n        );\n    case Modes.BIT_RECT:\n        /* falls through */\n    case Modes.BIT_OVAL:\n    {\n        const fillIcon = props.mode === Modes.BIT_RECT ? bitRectIcon : bitOvalIcon;\n        const outlineIcon = props.mode === Modes.BIT_RECT ? bitRectOutlinedIcon : bitOvalOutlinedIcon;\n        return (\n            <div className={classNames(props.className, styles.modeTools)}>\n                <InputGroup>\n                    <LabeledIconButton\n                        highlighted={props.fillBitmapShapes}\n                        imgSrc={fillIcon}\n                        title={props.intl.formatMessage(messages.filled)}\n                        onClick={props.onFillShapes}\n                    />\n                </InputGroup>\n                <InputGroup>\n                    <LabeledIconButton\n                        highlighted={!props.fillBitmapShapes}\n                        imgSrc={outlineIcon}\n                        title={props.intl.formatMessage(messages.outlined)}\n                        onClick={props.onOutlineShapes}\n                    />\n                </InputGroup>\n                {props.fillBitmapShapes ? null : (\n                    <InputGroup>\n                        <Label text={props.intl.formatMessage(messages.thickness)}>\n                            <LiveInput\n                                range\n                                small\n                                max={MAX_STROKE_WIDTH}\n                                min=\"1\"\n                                type=\"number\"\n                                value={props.bitBrushSize}\n                                onSubmit={props.onBitBrushSliderChange}\n                            />\n                        </Label>\n                    </InputGroup>)\n                }\n            </div>\n        );\n    }\n    default:\n        // Leave empty for now, if mode not supported\n        return (\n            <div className={classNames(props.className, styles.modeTools)} />\n        );\n    }\n};\n\nModeToolsComponent.propTypes = {\n    bitBrushSize: PropTypes.number,\n    bitEraserSize: PropTypes.number,\n    brushValue: PropTypes.number,\n    className: PropTypes.string,\n    clipboardItems: PropTypes.arrayOf(PropTypes.array),\n    eraserValue: PropTypes.number,\n    fillBitmapShapes: PropTypes.bool,\n    format: PropTypes.oneOf(Object.keys(Formats)),\n    hasSelectedUncurvedPoints: PropTypes.bool,\n    hasSelectedUnpointedPoints: PropTypes.bool,\n    intl: intlShape.isRequired,\n    mode: PropTypes.string.isRequired,\n    onBitBrushSliderChange: PropTypes.func.isRequired,\n    onBitEraserSliderChange: PropTypes.func.isRequired,\n    onBrushSliderChange: PropTypes.func.isRequired,\n    onCopyToClipboard: PropTypes.func.isRequired,\n    onCurvePoints: PropTypes.func.isRequired,\n    onDelete: PropTypes.func.isRequired,\n    onEraserSliderChange: PropTypes.func,\n    onFillShapes: PropTypes.func.isRequired,\n    onFlipHorizontal: PropTypes.func.isRequired,\n    onFlipVertical: PropTypes.func.isRequired,\n    onOutlineShapes: PropTypes.func.isRequired,\n    onPasteFromClipboard: PropTypes.func.isRequired,\n    onPointPoints: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    mode: state.scratchPaint.mode,\n    format: state.scratchPaint.format,\n    fillBitmapShapes: state.scratchPaint.fillBitmapShapes,\n    bitBrushSize: state.scratchPaint.bitBrushSize,\n    bitEraserSize: state.scratchPaint.bitEraserSize,\n    brushValue: state.scratchPaint.brushMode.brushSize,\n    clipboardItems: state.scratchPaint.clipboard.items,\n    eraserValue: state.scratchPaint.eraserMode.brushSize\n});\nconst mapDispatchToProps = dispatch => ({\n    onBrushSliderChange: brushSize => {\n        dispatch(changeBrushSize(brushSize));\n    },\n    onBitBrushSliderChange: bitBrushSize => {\n        dispatch(changeBitBrushSize(bitBrushSize));\n    },\n    onBitEraserSliderChange: eraserSize => {\n        dispatch(changeBitEraserSize(eraserSize));\n    },\n    onEraserSliderChange: eraserSize => {\n        dispatch(changeEraserSize(eraserSize));\n    },\n    onFillShapes: () => {\n        dispatch(setShapesFilled(true));\n    },\n    onOutlineShapes: () => {\n        dispatch(setShapesFilled(false));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(injectIntl(ModeToolsComponent));\n","import paper from '@scratch/paper';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\n\nimport CopyPasteHOC from '../hocs/copy-paste-hoc.jsx';\nimport ModeToolsComponent from '../components/mode-tools/mode-tools.jsx';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {\n    deleteSelection,\n    getSelectedLeafItems,\n    getSelectedRootItems,\n    getAllRootItems,\n    selectAllItems,\n    selectAllSegments\n} from '../helper/selection';\nimport {HANDLE_RATIO, ensureClockwise} from '../helper/math';\nimport {getRaster} from '../helper/layer';\nimport {flipBitmapHorizontal, flipBitmapVertical, selectAllBitmap} from '../helper/bitmap';\nimport Formats, {isBitmap} from '../lib/format';\nimport Modes from '../lib/modes';\n\nclass ModeTools extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            '_getSelectedUncurvedPoints',\n            '_getSelectedUnpointedPoints',\n            'hasSelectedUncurvedPoints',\n            'hasSelectedUnpointedPoints',\n            'handleCurvePoints',\n            'handleFlipHorizontal',\n            'handleFlipVertical',\n            'handleDelete',\n            'handlePasteFromClipboard',\n            'handlePointPoints'\n        ]);\n    }\n    _getSelectedUncurvedPoints () {\n        const items = [];\n        const selectedItems = getSelectedLeafItems();\n        for (const item of selectedItems) {\n            if (!item.segments) continue;\n            for (const seg of item.segments) {\n                if (seg.selected) {\n                    const prev = seg.getPrevious();\n                    const next = seg.getNext();\n                    const isCurved =\n                        (!prev || seg.handleIn.length > 0) &&\n                        (!next || seg.handleOut.length > 0) &&\n                        (prev && next ? seg.handleOut.isColinear(seg.handleIn) : true);\n                    if (!isCurved) items.push(seg);\n                }\n            }\n        }\n        return items;\n    }\n    _getSelectedUnpointedPoints () {\n        const points = [];\n        const selectedItems = getSelectedLeafItems();\n        for (const item of selectedItems) {\n            if (!item.segments) continue;\n            for (const seg of item.segments) {\n                if (seg.selected) {\n                    if (seg.handleIn.length > 0 || seg.handleOut.length > 0) {\n                        points.push(seg);\n                    }\n                }\n            }\n        }\n        return points;\n    }\n    hasSelectedUncurvedPoints () {\n        const points = this._getSelectedUncurvedPoints();\n        return points.length > 0;\n    }\n    hasSelectedUnpointedPoints () {\n        const points = this._getSelectedUnpointedPoints();\n        return points.length > 0;\n    }\n    handleCurvePoints () {\n        let changed;\n        const points = this._getSelectedUncurvedPoints();\n        for (const point of points) {\n            const prev = point.getPrevious();\n            const next = point.getNext();\n            const noHandles = point.handleIn.length === 0 && point.handleOut.length === 0;\n            if (!prev && !next) {\n                continue;\n            } else if (prev && next && noHandles) {\n                // Handles are parallel to the line from prev to next\n                point.handleIn = prev.point.subtract(next.point)\n                    .normalize()\n                    .multiply(prev.getCurve().length * HANDLE_RATIO);\n            } else if (prev && !next && point.handleIn.length === 0) {\n                // Point is end point\n                // Direction is average of normal at the point and direction to prev point, using the\n                // normal that points out from the convex side\n                // Lenth is curve length * HANDLE_RATIO\n                const convexity = prev.getCurve().getCurvatureAtTime(.5) < 0 ? -1 : 1;\n                point.handleIn = (prev.getCurve().getNormalAtTime(1)\n                    .multiply(convexity)\n                    .add(prev.point.subtract(point.point).normalize()))\n                    .normalize()\n                    .multiply(prev.getCurve().length * HANDLE_RATIO);\n            } else if (next && !prev && point.handleOut.length === 0) {\n                // Point is start point\n                // Direction is average of normal at the point and direction to prev point, using the\n                // normal that points out from the convex side\n                // Lenth is curve length * HANDLE_RATIO\n                const convexity = point.getCurve().getCurvatureAtTime(.5) < 0 ? -1 : 1;\n                point.handleOut = (point.getCurve().getNormalAtTime(0)\n                    .multiply(convexity)\n                    .add(next.point.subtract(point.point).normalize()))\n                    .normalize()\n                    .multiply(point.getCurve().length * HANDLE_RATIO);\n            }\n\n            // Point guaranteed to have a handle now. Make the second handle match the length and direction of first.\n            // This defines a curved point.\n            if (point.handleIn.length > 0 && next) {\n                point.handleOut = point.handleIn.multiply(-1);\n            } else if (point.handleOut.length > 0 && prev) {\n                point.handleIn = point.handleOut.multiply(-1);\n            }\n            changed = true;\n        }\n        if (changed) {\n            this.props.setSelectedItems(this.props.format);\n            this.props.onUpdateImage();\n        }\n    }\n    handlePointPoints () {\n        let changed;\n        const points = this._getSelectedUnpointedPoints();\n        for (const point of points) {\n            const noHandles = point.handleIn.length === 0 && point.handleOut.length === 0;\n            if (!noHandles) {\n                point.handleIn = null;\n                point.handleOut = null;\n                changed = true;\n            }\n        }\n        if (changed) {\n            this.props.setSelectedItems(this.props.format);\n            this.props.onUpdateImage();\n        }\n    }\n    _handleFlip (horizontalScale, verticalScale, selectedItems) {\n        if (selectedItems.length === 0) {\n            // If nothing is selected, select everything\n            selectedItems = getAllRootItems();\n        }\n        // Record old indices\n        for (const item of selectedItems) {\n            item.data.index = item.index;\n        }\n\n        // Group items so that they flip as a unit\n        const itemGroup = new paper.Group(selectedItems);\n        // Flip\n        itemGroup.scale(horizontalScale, verticalScale);\n        ensureClockwise(itemGroup);\n\n        // Remove flipped item from group and insert at old index. Must insert from bottom index up.\n        for (let i = 0; i < selectedItems.length; i++) {\n            itemGroup.layer.insertChild(selectedItems[i].data.index, selectedItems[i]);\n            selectedItems[i].data.index = null;\n        }\n        itemGroup.remove();\n\n        this.props.onUpdateImage();\n    }\n    handleFlipHorizontal () {\n        const selectedItems = getSelectedRootItems();\n        if (isBitmap(this.props.format) && selectedItems.length === 0) {\n            getRaster().canvas = flipBitmapHorizontal(getRaster().canvas);\n            this.props.onUpdateImage();\n        } else {\n            this._handleFlip(-1, 1, selectedItems);\n        }\n    }\n    handleFlipVertical () {\n        const selectedItems = getSelectedRootItems();\n        if (isBitmap(this.props.format) && selectedItems.length === 0) {\n            getRaster().canvas = flipBitmapVertical(getRaster().canvas);\n            this.props.onUpdateImage();\n        } else {\n            this._handleFlip(1, -1, selectedItems);\n        }\n    }\n    handlePasteFromClipboard () {\n        if (this.props.onPasteFromClipboard()) {\n            this.props.onUpdateImage();\n        }\n    }\n    handleDelete () {\n        if (!this.props.selectedItems.length) {\n            if (isBitmap(this.props.format)) {\n                selectAllBitmap(this.props.clearSelectedItems);\n            } else if (this.props.mode === Modes.RESHAPE) {\n                selectAllSegments();\n            } else {\n                selectAllItems();\n            }\n        }\n        if (deleteSelection(this.props.mode, this.props.onUpdateImage)) {\n            this.props.setSelectedItems(this.props.format);\n        }\n    }\n    render () {\n        return (\n            <ModeToolsComponent\n                hasSelectedUncurvedPoints={this.hasSelectedUncurvedPoints()}\n                hasSelectedUnpointedPoints={this.hasSelectedUnpointedPoints()}\n                onCopyToClipboard={this.props.onCopyToClipboard}\n                onCurvePoints={this.handleCurvePoints}\n                onDelete={this.handleDelete}\n                onFlipHorizontal={this.handleFlipHorizontal}\n                onFlipVertical={this.handleFlipVertical}\n                onPasteFromClipboard={this.handlePasteFromClipboard}\n                onPointPoints={this.handlePointPoints}\n                onUpdateImage={this.props.onUpdateImage}\n            />\n        );\n    }\n}\n\nModeTools.propTypes = {\n    clearSelectedItems: PropTypes.func.isRequired,\n    format: PropTypes.oneOf(Object.keys(Formats)),\n    mode: PropTypes.oneOf(Object.keys(Modes)),\n    onCopyToClipboard: PropTypes.func.isRequired,\n    onPasteFromClipboard: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    // Listen on selected items to update hasSelectedPoints\n    selectedItems:\n        PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)), // eslint-disable-line react/no-unused-prop-types\n    setSelectedItems: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    format: state.scratchPaint.format,\n    mode: state.scratchPaint.mode,\n    selectedItems: state.scratchPaint.selectedItems\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    setSelectedItems: format => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n    }\n});\n\nexport default CopyPasteHOC(connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ModeTools));\n","import paper from '@scratch/paper';\nimport Modes from '../../lib/modes';\nimport {styleShape} from '../style-path';\nimport {clearSelection} from '../selection';\nimport {getSquareDimensions} from '../math';\nimport BoundingBoxTool from '../selection-tools/bounding-box-tool';\nimport NudgeTool from '../selection-tools/nudge-tool';\n\n/**\n * Tool for drawing ovals.\n */\nclass OvalTool extends paper.Tool {\n    static get TOLERANCE () {\n        return 2;\n    }\n    /**\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setSelectedItems, clearSelectedItems, setCursor, onUpdateImage) {\n        super();\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.onUpdateImage = onUpdateImage;\n        this.boundingBoxTool = new BoundingBoxTool(\n            Modes.OVAL,\n            setSelectedItems,\n            clearSelectedItems,\n            setCursor,\n            onUpdateImage\n        );\n        const nudgeTool = new NudgeTool(Modes.OVAL, this.boundingBoxTool, onUpdateImage);\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseUp = this.handleMouseUp;\n        this.onKeyUp = nudgeTool.onKeyUp;\n        this.onKeyDown = nudgeTool.onKeyDown;\n\n        this.oval = null;\n        this.colorState = null;\n        this.isBoundingBoxMode = null;\n        this.active = false;\n    }\n    getHitOptions () {\n        return {\n            segments: true,\n            stroke: true,\n            curves: true,\n            fill: true,\n            guide: false,\n            match: hitResult =>\n                (hitResult.item.data && (hitResult.item.data.isScaleHandle || hitResult.item.data.isRotHandle)) ||\n                hitResult.item.selected, // Allow hits on bounding box and selected only\n            tolerance: OvalTool.TOLERANCE / paper.view.zoom\n        };\n    }\n    /**\n     * Should be called if the selection changes to update the bounds of the bounding box.\n     * @param {Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        this.boundingBoxTool.onSelectionChanged(selectedItems);\n    }\n    setColorState (colorState) {\n        this.colorState = colorState;\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        if (this.boundingBoxTool.onMouseDown(\n            event, false /* clone */, false /* multiselect */, false /* doubleClicked */, this.getHitOptions())) {\n            this.isBoundingBoxMode = true;\n        } else {\n            this.isBoundingBoxMode = false;\n            clearSelection(this.clearSelectedItems);\n            this.oval = new paper.Shape.Ellipse({\n                point: event.downPoint,\n                size: 0\n            });\n            styleShape(this.oval, this.colorState);\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseDrag(event);\n            return;\n        }\n\n        const downPoint = new paper.Point(event.downPoint.x, event.downPoint.y);\n        const point = new paper.Point(event.point.x, event.point.y);\n        const squareDimensions = getSquareDimensions(event.downPoint, event.point);\n        if (event.modifiers.shift) {\n            this.oval.size = squareDimensions.size.abs();\n        } else {\n            this.oval.size = downPoint.subtract(point);\n        }\n\n        if (event.modifiers.alt) {\n            this.oval.position = downPoint;\n        } else if (event.modifiers.shift) {\n            this.oval.position = squareDimensions.position;\n        } else {\n            this.oval.position = downPoint.subtract(this.oval.size.multiply(0.5));\n        }\n\n        styleShape(this.oval, this.colorState);\n    }\n    handleMouseMove (event) {\n        this.boundingBoxTool.onMouseMove(event, this.getHitOptions());\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseUp(event);\n            this.isBoundingBoxMode = null;\n            return;\n        }\n\n        if (this.oval) {\n            if (Math.abs(this.oval.size.width * this.oval.size.height) < OvalTool.TOLERANCE / paper.view.zoom) {\n                // Tiny oval created unintentionally?\n                this.oval.remove();\n                this.oval = null;\n            } else {\n                const ovalPath = this.oval.toPath(true /* insert */);\n                this.oval.remove();\n                this.oval = null;\n\n                ovalPath.selected = true;\n                this.setSelectedItems();\n                this.onUpdateImage();\n            }\n        }\n        this.active = false;\n    }\n    deactivateTool () {\n        this.boundingBoxTool.deactivateTool();\n    }\n}\n\nexport default OvalTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport ovalIcon from './oval.svg';\n\nconst OvalModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.oval}\n        imgSrc={ovalIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nOvalModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default OvalModeComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport {MIXED} from '../helper/style-path';\nimport ColorStyleProptype from '../lib/color-style-proptype';\nimport GradientTypes from '../lib/gradient-types';\n\nimport {changeFillColor, clearFillGradient, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeStrokeColor, clearStrokeGradient} from '../reducers/stroke-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {setCursor} from '../reducers/cursor';\n\nimport {clearSelection, getSelectedLeafItems} from '../helper/selection';\nimport OvalTool from '../helper/tools/oval-tool';\nimport OvalModeComponent from '../components/oval-mode/oval-mode.jsx';\n\nclass OvalMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool',\n            'validateColorState'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isOvalModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.colorState !== this.props.colorState) {\n            this.tool.setColorState(nextProps.colorState);\n        }\n        if (this.tool && nextProps.selectedItems !== this.props.selectedItems) {\n            this.tool.onSelectionChanged(nextProps.selectedItems);\n        }\n\n        if (nextProps.isOvalModeActive && !this.props.isOvalModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isOvalModeActive && this.props.isOvalModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isOvalModeActive !== this.props.isOvalModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        this.validateColorState();\n\n        this.tool = new OvalTool(\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.setCursor,\n            this.props.onUpdateImage\n        );\n        this.tool.setColorState(this.props.colorState);\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    validateColorState () {\n        // Make sure that at least one of fill/stroke is set, and that MIXED is not one of the colors.\n        // If fill and stroke color are both missing, set fill to default and stroke to transparent.\n        // If exactly one of fill or stroke color is set, set the other one to transparent.\n        const {strokeWidth} = this.props.colorState;\n        const fillColor1 = this.props.colorState.fillColor.primary;\n        let fillColor2 = this.props.colorState.fillColor.secondary;\n        let fillGradient = this.props.colorState.fillColor.gradientType;\n        const strokeColor1 = this.props.colorState.strokeColor.primary;\n        let strokeColor2 = this.props.colorState.strokeColor.secondary;\n        let strokeGradient = this.props.colorState.strokeColor.gradientType;\n\n        if (fillColor2 === MIXED) {\n            this.props.clearFillGradient();\n            fillColor2 = null;\n            fillGradient = GradientTypes.SOLID;\n        }\n        if (strokeColor2 === MIXED) {\n            this.props.clearStrokeGradient();\n            strokeColor2 = null;\n            strokeGradient = GradientTypes.SOLID;\n        }\n\n        const fillColorMissing = fillColor1 === MIXED ||\n            (fillGradient === GradientTypes.SOLID && fillColor1 === null) ||\n            (fillGradient !== GradientTypes.SOLID && fillColor1 === null && fillColor2 === null);\n        const strokeColorMissing = strokeColor1 === MIXED ||\n            strokeWidth === null ||\n            strokeWidth === 0 ||\n            (strokeGradient === GradientTypes.SOLID && strokeColor1 === null) ||\n            (strokeGradient !== GradientTypes.SOLID && strokeColor1 === null && strokeColor2 === null);\n\n        if (fillColorMissing && strokeColorMissing) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n            this.props.clearFillGradient();\n            this.props.onChangeStrokeColor(null);\n            this.props.clearStrokeGradient();\n        } else if (fillColorMissing && !strokeColorMissing) {\n            this.props.onChangeFillColor(null);\n            this.props.clearFillGradient();\n        } else if (!fillColorMissing && strokeColorMissing) {\n            this.props.onChangeStrokeColor(null);\n            this.props.clearStrokeGradient();\n        }\n    }\n    render () {\n        return (\n            <OvalModeComponent\n                isSelected={this.props.isOvalModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nOvalMode.propTypes = {\n    clearFillGradient: PropTypes.func.isRequired,\n    clearStrokeGradient: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    colorState: PropTypes.shape({\n        fillColor: ColorStyleProptype,\n        strokeColor: ColorStyleProptype,\n        strokeWidth: PropTypes.number\n    }).isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    isOvalModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onChangeStrokeColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    selectedItems: PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)),\n    setCursor: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    colorState: state.scratchPaint.color,\n    isOvalModeActive: state.scratchPaint.mode === Modes.OVAL,\n    selectedItems: state.scratchPaint.selectedItems\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearFillGradient: () => {\n        dispatch(clearFillGradient());\n    },\n    clearStrokeGradient: () => {\n        dispatch(clearStrokeGradient());\n    },\n    setCursor: cursorString => {\n        dispatch(setCursor(cursorString));\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), false /* bitmapMode */));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.OVAL));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    },\n    onChangeStrokeColor: strokeColor => {\n        dispatch(changeStrokeColor(strokeColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(OvalMode);\n","import paper from '@scratch/paper';\nimport Modes from '../../lib/modes';\nimport {styleShape} from '../style-path';\nimport {clearSelection} from '../selection';\nimport {getSquareDimensions} from '../math';\nimport BoundingBoxTool from '../selection-tools/bounding-box-tool';\nimport NudgeTool from '../selection-tools/nudge-tool';\n\n/**\n * Tool for drawing rectangles.\n */\nclass RectTool extends paper.Tool {\n    static get TOLERANCE () {\n        return 2;\n    }\n    /**\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setSelectedItems, clearSelectedItems, setCursor, onUpdateImage) {\n        super();\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.onUpdateImage = onUpdateImage;\n        this.boundingBoxTool = new BoundingBoxTool(\n            Modes.RECT,\n            setSelectedItems,\n            clearSelectedItems,\n            setCursor,\n            onUpdateImage\n        );\n        const nudgeTool = new NudgeTool(Modes.RECT, this.boundingBoxTool, onUpdateImage);\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseUp = this.handleMouseUp;\n        this.onKeyUp = nudgeTool.onKeyUp;\n        this.onKeyDown = nudgeTool.onKeyDown;\n\n        this.rect = null;\n        this.colorState = null;\n        this.isBoundingBoxMode = null;\n        this.active = false;\n    }\n    getHitOptions () {\n        return {\n            segments: true,\n            stroke: true,\n            curves: true,\n            fill: true,\n            guide: false,\n            match: hitResult =>\n                (hitResult.item.data && (hitResult.item.data.isScaleHandle || hitResult.item.data.isRotHandle)) ||\n                hitResult.item.selected, // Allow hits on bounding box and selected only\n            tolerance: RectTool.TOLERANCE / paper.view.zoom\n        };\n    }\n    /**\n     * Should be called if the selection changes to update the bounds of the bounding box.\n     * @param {Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        this.boundingBoxTool.onSelectionChanged(selectedItems);\n    }\n    setColorState (colorState) {\n        this.colorState = colorState;\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        if (this.boundingBoxTool.onMouseDown(\n            event, false /* clone */, false /* multiselect */, false /* doubleClicked */, this.getHitOptions())) {\n            this.isBoundingBoxMode = true;\n        } else {\n            this.isBoundingBoxMode = false;\n            clearSelection(this.clearSelectedItems);\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseDrag(event);\n            return;\n        }\n\n        if (this.rect) {\n            this.rect.remove();\n        }\n\n        const rect = new paper.Rectangle(event.downPoint, event.point);\n        const squareDimensions = getSquareDimensions(event.downPoint, event.point);\n        if (event.modifiers.shift) {\n            rect.size = squareDimensions.size.abs();\n        }\n\n        this.rect = new paper.Path.Rectangle(rect);\n        if (event.modifiers.alt) {\n            this.rect.position = event.downPoint;\n        } else if (event.modifiers.shift) {\n            this.rect.position = squareDimensions.position;\n        } else {\n            const dimensions = event.point.subtract(event.downPoint);\n            this.rect.position = event.downPoint.add(dimensions.multiply(0.5));\n        }\n\n        styleShape(this.rect, this.colorState);\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseUp(event);\n            this.isBoundingBoxMode = null;\n            return;\n        }\n\n        if (this.rect) {\n            if (this.rect.area < RectTool.TOLERANCE / paper.view.zoom) {\n                // Tiny rectangle created unintentionally?\n                this.rect.remove();\n                this.rect = null;\n            } else {\n                this.rect.selected = true;\n                this.setSelectedItems();\n                this.onUpdateImage();\n                this.rect = null;\n            }\n        }\n        this.active = false;\n    }\n    handleMouseMove (event) {\n        this.boundingBoxTool.onMouseMove(event, this.getHitOptions());\n    }\n    deactivateTool () {\n        this.boundingBoxTool.deactivateTool();\n    }\n}\n\nexport default RectTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport rectIcon from './rectangle.svg';\n\nconst RectModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.rect}\n        imgSrc={rectIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nRectModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default RectModeComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport {MIXED} from '../helper/style-path';\nimport ColorStyleProptype from '../lib/color-style-proptype';\nimport GradientTypes from '../lib/gradient-types';\n\nimport {changeFillColor, clearFillGradient, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeStrokeColor, clearStrokeGradient} from '../reducers/stroke-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {setCursor} from '../reducers/cursor';\n\nimport {clearSelection, getSelectedLeafItems} from '../helper/selection';\nimport RectTool from '../helper/tools/rect-tool';\nimport RectModeComponent from '../components/rect-mode/rect-mode.jsx';\n\nclass RectMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool',\n            'validateColorState'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isRectModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.colorState !== this.props.colorState) {\n            this.tool.setColorState(nextProps.colorState);\n        }\n        if (this.tool && nextProps.selectedItems !== this.props.selectedItems) {\n            this.tool.onSelectionChanged(nextProps.selectedItems);\n        }\n\n        if (nextProps.isRectModeActive && !this.props.isRectModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isRectModeActive && this.props.isRectModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isRectModeActive !== this.props.isRectModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        this.validateColorState();\n\n        this.tool = new RectTool(\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.setCursor,\n            this.props.onUpdateImage\n        );\n        this.tool.setColorState(this.props.colorState);\n        this.tool.activate();\n    }\n    validateColorState () { // TODO move to shared class\n        // Make sure that at least one of fill/stroke is set, and that MIXED is not one of the colors.\n        // If fill and stroke color are both missing, set fill to default and stroke to transparent.\n        // If exactly one of fill or stroke color is set, set the other one to transparent.\n        const {strokeWidth} = this.props.colorState;\n        const fillColor1 = this.props.colorState.fillColor.primary;\n        let fillColor2 = this.props.colorState.fillColor.secondary;\n        let fillGradient = this.props.colorState.fillColor.gradientType;\n        const strokeColor1 = this.props.colorState.strokeColor.primary;\n        let strokeColor2 = this.props.colorState.strokeColor.secondary;\n        let strokeGradient = this.props.colorState.strokeColor.gradientType;\n\n        if (fillColor2 === MIXED) {\n            this.props.clearFillGradient();\n            fillColor2 = null;\n            fillGradient = GradientTypes.SOLID;\n        }\n        if (strokeColor2 === MIXED) {\n            this.props.clearStrokeGradient();\n            strokeColor2 = null;\n            strokeGradient = GradientTypes.SOLID;\n        }\n\n        const fillColorMissing = fillColor1 === MIXED ||\n            (fillGradient === GradientTypes.SOLID && fillColor1 === null) ||\n            (fillGradient !== GradientTypes.SOLID && fillColor1 === null && fillColor2 === null);\n        const strokeColorMissing = strokeColor1 === MIXED ||\n            strokeWidth === null ||\n            strokeWidth === 0 ||\n            (strokeGradient === GradientTypes.SOLID && strokeColor1 === null) ||\n            (strokeGradient !== GradientTypes.SOLID && strokeColor1 === null && strokeColor2 === null);\n\n        if (fillColorMissing && strokeColorMissing) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n            this.props.clearFillGradient();\n            this.props.onChangeStrokeColor(null);\n            this.props.clearStrokeGradient();\n        } else if (fillColorMissing && !strokeColorMissing) {\n            this.props.onChangeFillColor(null);\n            this.props.clearFillGradient();\n        } else if (!fillColorMissing && strokeColorMissing) {\n            this.props.onChangeStrokeColor(null);\n            this.props.clearStrokeGradient();\n        }\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <RectModeComponent\n                isSelected={this.props.isRectModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nRectMode.propTypes = {\n    clearFillGradient: PropTypes.func.isRequired,\n    clearStrokeGradient: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    colorState: PropTypes.shape({\n        fillColor: ColorStyleProptype,\n        strokeColor: ColorStyleProptype,\n        strokeWidth: PropTypes.number\n    }).isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    isRectModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onChangeStrokeColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    selectedItems: PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)),\n    setCursor: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    colorState: state.scratchPaint.color,\n    isRectModeActive: state.scratchPaint.mode === Modes.RECT,\n    selectedItems: state.scratchPaint.selectedItems\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearFillGradient: () => {\n        dispatch(clearFillGradient());\n    },\n    clearStrokeGradient: () => {\n        dispatch(clearStrokeGradient());\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), false /* bitmapMode */));\n    },\n    setCursor: cursorString => {\n        dispatch(setCursor(cursorString));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.RECT));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    },\n    onChangeStrokeColor: strokeColor => {\n        dispatch(changeStrokeColor(strokeColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(RectMode);\n","import {HANDLE_RATIO, snapDeltaToAngle} from '../math';\nimport {getActionBounds} from '../view';\nimport {clearSelection, getSelectedLeafItems, getSelectedSegments} from '../selection';\n\n/** Subtool of ReshapeTool for moving control points. */\nclass PointTool {\n    /**\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setSelectedItems, clearSelectedItems, onUpdateImage) {\n        /**\n         * Deselection often does not happen until mouse up. If the mouse is dragged before\n         * mouse up, deselection is cancelled. This variable keeps track of which paper.Item to deselect.\n         */\n        this.deselectOnMouseUp = null;\n        /**\n         * Delete control point does not happen until mouse up. If the mouse is dragged before\n         * mouse up, delete is cancelled. This variable keeps track of the hitResult that triggers delete.\n         */\n        this.deleteOnMouseUp = null;\n        /**\n         * There are 2 cases for deselection: Deselect this, or deselect everything but this.\n         * When invert deselect is true, deselect everything but the item in deselectOnMouseUp.\n         */\n        this.invertDeselect = false;\n        this.selectedItems = null;\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.lastPoint = null;\n        this.onUpdateImage = onUpdateImage;\n    }\n\n    /**\n     * @param {!object} hitProperties Describes the mouse event\n     * @param {!paper.HitResult} hitProperties.hitResult Data about the location of the mouse click\n     * @param {?boolean} hitProperties.multiselect Whether to multiselect on mouse down (e.g. shift key held)\n     * @param {?boolean} hitProperties.doubleClicked Whether this is the second click in a short time\n     */\n    onMouseDown (hitProperties) {\n        // Remove point\n        if (hitProperties.doubleClicked) {\n            this.deleteOnMouseUp = hitProperties.hitResult;\n        }\n        if (hitProperties.hitResult.segment.selected) {\n            // selected points with no handles get handles if selected again\n            if (hitProperties.multiselect) {\n                this.deselectOnMouseUp = hitProperties.hitResult.segment;\n            } else {\n                this.deselectOnMouseUp = hitProperties.hitResult.segment;\n                this.invertDeselect = true;\n                hitProperties.hitResult.segment.selected = true;\n            }\n        } else {\n            if (!hitProperties.multiselect) {\n                clearSelection(this.clearSelectedItems);\n            }\n            hitProperties.hitResult.segment.selected = true;\n        }\n\n        this.selectedItems = getSelectedLeafItems();\n    }\n    /**\n     * @param {!object} hitProperties Describes the mouse event\n     * @param {!paper.HitResult} hitProperties.hitResult Data about the location of the mouse click\n     * @param {?boolean} hitProperties.multiselect Whether to multiselect on mouse down (e.g. shift key held)\n     */\n    addPoint (hitProperties) {\n        const newSegment = hitProperties.hitResult.item.divideAt(hitProperties.hitResult.location);\n\n        // If we're adding a point in the middle of a straight line, it won't be smooth by default, so smooth it\n        if (!newSegment.hasHandles()) newSegment.smooth();\n\n        hitProperties.hitResult.segment = newSegment;\n        if (!hitProperties.multiselect) {\n            clearSelection(this.clearSelectedItems);\n        }\n        newSegment.selected = true;\n    }\n    removePoint (hitResult) {\n        const index = hitResult.segment.index;\n        hitResult.item.removeSegment(index);\n\n        // Adjust handles of curve before and curve after to account for new curve length\n        const beforeSegment = hitResult.item.segments[index - 1];\n        const afterSegment = hitResult.item.segments[index];\n        const curveLength = beforeSegment ? beforeSegment.curve ? beforeSegment.curve.length : null : null;\n        if (beforeSegment && beforeSegment.handleOut) {\n            if (afterSegment) {\n                beforeSegment.handleOut =\n                    beforeSegment.handleOut.multiply(curveLength * HANDLE_RATIO / beforeSegment.handleOut.length);\n            } else {\n                beforeSegment.handleOut = null;\n            }\n        }\n        if (afterSegment && afterSegment.handleIn) {\n            if (beforeSegment) {\n                afterSegment.handleIn =\n                    afterSegment.handleIn.multiply(curveLength * HANDLE_RATIO / afterSegment.handleIn.length);\n            } else {\n                afterSegment.handleIn = null;\n            }\n        }\n    }\n    onMouseDrag (event) {\n        // A click will deselect, but a drag will not\n        this.deselectOnMouseUp = null;\n        this.invertDeselect = false;\n        this.deleteOnMouseUp = null;\n\n        const point = event.point;\n        const bounds = getActionBounds();\n        point.x = Math.max(bounds.left, Math.min(point.x, bounds.right));\n        point.y = Math.max(bounds.top, Math.min(point.y, bounds.bottom));\n\n        if (!this.lastPoint) this.lastPoint = event.lastPoint;\n        const dragVector = point.subtract(event.downPoint);\n        const delta = point.subtract(this.lastPoint);\n        this.lastPoint = point;\n\n        const selectedSegments = getSelectedSegments();\n        for (const seg of selectedSegments) {\n            // add the point of the segment before the drag started\n            // for later use in the snap calculation\n            if (!seg.origPoint) {\n                seg.origPoint = seg.point.clone();\n            }\n\n            if (event.modifiers.shift) {\n                seg.point = seg.origPoint.add(snapDeltaToAngle(dragVector, Math.PI / 4));\n            } else {\n                seg.point = seg.point.add(delta);\n            }\n        }\n    }\n    onMouseUp () {\n        this.lastPoint = null;\n\n        // resetting the items and segments origin points for the next usage\n        let moved = false;\n        const selectedSegments = getSelectedSegments();\n        for (const seg of selectedSegments) {\n            if (seg.origPoint && !seg.equals(seg.origPoint)) {\n                moved = true;\n            }\n            seg.origPoint = null;\n        }\n\n        // If no drag occurred between mouse down and mouse up, then we can go through with deselect\n        // and delete\n        if (this.deselectOnMouseUp) {\n            if (this.invertDeselect) {\n                clearSelection(this.clearSelectedItems);\n                this.deselectOnMouseUp.selected = true;\n            } else {\n                this.deselectOnMouseUp.selected = false;\n            }\n            this.deselectOnMouseUp = null;\n            this.invertDeselect = false;\n        }\n        if (this.deleteOnMouseUp) {\n            this.removePoint(this.deleteOnMouseUp);\n        }\n        this.selectedItems = null;\n        this.setSelectedItems();\n        if (moved || this.deleteOnMouseUp) {\n            this.deleteOnMouseUp = null;\n            this.onUpdateImage();\n        }\n    }\n}\n\nexport default PointTool;\n","import {clearSelection, getSelectedLeafItems} from '../selection';\n\n/** Sub tool of the Reshape tool for moving handles, which adjust bezier curves. */\nclass HandleTool {\n    /**\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setSelectedItems, clearSelectedItems, onUpdateImage) {\n        this.hitType = null;\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.onUpdateImage = onUpdateImage;\n        this.selectedItems = [];\n    }\n    /**\n     * @param {!object} hitProperties Describes the mouse event\n     * @param {?boolean} hitProperties.multiselect Whether to multiselect on mouse down (e.g. shift key held)\n     *     select the whole group.\n     */\n    onMouseDown (hitProperties) {\n        if (!hitProperties.multiselect) {\n            clearSelection(this.clearSelectedItems);\n        }\n        \n        hitProperties.hitResult.segment.handleIn.selected = true;\n        hitProperties.hitResult.segment.handleOut.selected = true;\n        this.hitType = hitProperties.hitResult.type;\n    }\n    onMouseDrag (event) {\n        this.selectedItems = getSelectedLeafItems();\n\n        for (const item of this.selectedItems) {\n            for (const seg of item.segments) {\n                // add the point of the segment before the drag started\n                // for later use in the snap calculation\n                if (!seg.origPoint) {\n                    seg.origPoint = seg.point.clone();\n                }\n\n                if (seg.handleOut.selected && this.hitType === 'handle-out'){\n                    // if option is pressed or handles have been split,\n                    // they're no longer parallel and move independently\n                    if (event.modifiers.option ||\n                        !seg.handleOut.isColinear(seg.handleIn)) {\n                        seg.handleOut = seg.handleOut.add(event.delta);\n                    } else {\n                        seg.handleOut = seg.handleOut.add(event.delta);\n                        seg.handleIn = seg.handleOut.multiply(-seg.handleIn.length / seg.handleOut.length);\n                    }\n                } else if (seg.handleIn.selected && this.hitType === 'handle-in') {\n                    // if option is pressed or handles have been split,\n                    // they're no longer parallel and move independently\n                    if (event.modifiers.option ||\n                        !seg.handleOut.isColinear(seg.handleIn)) {\n                        seg.handleIn = seg.handleIn.add(event.delta);\n\n                    } else {\n                        seg.handleIn = seg.handleIn.add(event.delta);\n                        seg.handleOut = seg.handleIn.multiply(-seg.handleOut.length / seg.handleIn.length);\n                    }\n                }\n            }\n        }\n    }\n    onMouseUp () {\n        // resetting the items and segments origin points for the next usage\n        let moved = false;\n        for (const item of this.selectedItems) {\n            if (!item.segments) {\n                return;\n            }\n            for (const seg of item.segments) {\n                if (seg.origPoint && !seg.equals(seg.origPoint)) {\n                    moved = true;\n                }\n                seg.origPoint = null;\n            }\n        }\n        if (moved) {\n            this.setSelectedItems();\n            this.onUpdateImage();\n        }\n        this.selectedItems = [];\n    }\n}\n\nexport default HandleTool;\n","import paper from '@scratch/paper';\nimport log from '../../log/log';\nimport keyMirror from 'keymirror';\n\nimport Modes from '../../lib/modes';\nimport {isBoundsItem} from '../item';\nimport {hoverBounds, hoverItem} from '../guides';\nimport {sortItemsByZIndex} from '../math';\nimport {getSelectedLeafItems, getSelectedSegments} from '../selection';\nimport MoveTool from './move-tool';\nimport PointTool from './point-tool';\nimport HandleTool from './handle-tool';\nimport SelectionBoxTool from './selection-box-tool';\n\n/** Modes of the reshape tool, which can do many things depending on how it's used. */\nconst ReshapeModes = keyMirror({\n    FILL: null,\n    POINT: null,\n    HANDLE: null,\n    SELECTION_BOX: null\n});\n\n/**\n * paper.Tool to handle reshape mode, which allows manipulation of control points and\n * handles of path items. Can be used to select items within groups and points within items.\n * Reshape is made up of 4 tools:\n * - Selection box tool, which is activated by clicking an empty area. Draws a box and selects\n *   points and curves inside it\n * - Move tool, which translates items\n * - Point tool, which translates, adds and removes points\n * - Handle tool, which translates handles, changing the shape of curves\n */\nclass ReshapeTool extends paper.Tool {\n    /** Distance within which mouse is considered to be hitting an item */\n    static get TOLERANCE () {\n        return ReshapeTool.HANDLE_RADIUS + ReshapeTool.HANDLE_PADDING;\n    }\n    /**\n     * Units of padding around the visible handle area that will still register clicks as \"touching the handle\"\n     */\n    static get HANDLE_PADDING () {\n        return 1;\n    }\n    /**\n     * Handles' radius, including the stroke\n     */\n    static get HANDLE_RADIUS () {\n        return 5.25;\n    }\n    /** Clicks registered within this amount of time are registered as double clicks */\n    static get DOUBLE_CLICK_MILLIS () {\n        return 250;\n    }\n    /**\n     * @param {function} setHoveredItem Callback to set the hovered item\n     * @param {function} clearHoveredItem Callback to clear the hovered item\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     * @param {!function} switchToTextTool A callback to call to switch to the text tool\n     */\n    constructor (setHoveredItem, clearHoveredItem, setSelectedItems, clearSelectedItems, onUpdateImage,\n        switchToTextTool) {\n        super();\n        this.setHoveredItem = setHoveredItem;\n        this.clearHoveredItem = clearHoveredItem;\n        this.onUpdateImage = onUpdateImage;\n        this.prevHoveredItemId = null;\n        this.lastEvent = null;\n        this.active = false;\n        this.mode = ReshapeModes.SELECTION_BOX;\n        this._modeMap = {};\n        this._modeMap[ReshapeModes.FILL] =\n            new MoveTool(Modes.RESHAPE, setSelectedItems, clearSelectedItems, onUpdateImage, switchToTextTool);\n        this._modeMap[ReshapeModes.POINT] = new PointTool(setSelectedItems, clearSelectedItems, onUpdateImage);\n        this._modeMap[ReshapeModes.HANDLE] = new HandleTool(setSelectedItems, clearSelectedItems, onUpdateImage);\n        this._modeMap[ReshapeModes.SELECTION_BOX] =\n            new SelectionBoxTool(Modes.RESHAPE, setSelectedItems, clearSelectedItems);\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseUp = this.handleMouseUp;\n        this.onKeyUp = this.handleKeyUp;\n        this.onKeyDown = this.handleKeyDown;\n\n        // A handle's size is given in diameter, and each handle has a 2.5-pixel stroke that isn't part of its size:\n        // https://github.com/LLK/paper.js/blob/a187e4c81cc63f3d48c5097b9a9fbddde9f057da/src/item/Item.js#L4480\n        // Size the handles such that clicking on either the stroke or the handle itself will be registered as a drag\n        paper.settings.handleSize = (ReshapeTool.HANDLE_RADIUS * 2) - 2.5;\n    }\n    /**\n     * Returns the hit options for segments to use when conducting hit tests. Segments are only visible\n     * when the shape is selected. Segments take precedence, since they are always over curves and need\n     * to be grabbable. (Segments are the little circles)\n     * @return {object} See paper.Item.hitTest for definition of options\n     */\n    getSelectedSegmentHitOptions () {\n        const hitOptions = {\n            segments: true,\n            tolerance: ReshapeTool.TOLERANCE / paper.view.zoom,\n            match: hitResult => {\n                if (hitResult.type !== 'segment') return false;\n                if (hitResult.item.data && hitResult.item.data.noHover) return false;\n                if (!hitResult.item.selected) return false;\n                return true;\n            }\n        };\n        return hitOptions;\n    }\n    /**\n     * Returns the hit options for handles to use when conducting hit tests. Handles need to be done\n     * separately because we want to ignore hidden handles, but we don't want hidden handles to negate\n     * legitimate hits on other things (like if the handle is over part of the fill). (Handles are the diamonds)\n     * @return {object} See paper.Item.hitTest for definition of options\n     */\n    getHandleHitOptions () {\n        const hitOptions = {\n            handles: true,\n            tolerance: ReshapeTool.TOLERANCE / paper.view.zoom,\n            match: hitResult => {\n                if (hitResult.item.data && hitResult.item.data.noHover) return false;\n                // Only hit test against handles that are visible, that is,\n                // their segment is selected\n                if (!hitResult.segment || !hitResult.segment.selected) return false;\n                // If the entire shape is selected, handles are hidden\n                if (hitResult.item.fullySelected) return false;\n                return true;\n            }\n        };\n        return hitOptions;\n    }\n    /**\n     * Returns the hit options for curves of selected objects, which take precedence over\n     * unselected things and fills.\n     * @return {object} See paper.Item.hitTest for definition of options\n     */\n    getSelectedStrokeHitOptions () {\n        const hitOptions = {\n            segments: false,\n            stroke: false,\n            curves: true,\n            handles: false,\n            fill: false,\n            guide: false,\n            tolerance: ReshapeTool.TOLERANCE / paper.view.zoom,\n            match: hitResult => {\n                if (hitResult.type !== 'curve') return false;\n                if (!hitResult.item.selected) return false;\n                if (hitResult.item.data && hitResult.item.data.noHover) return false;\n                return true;\n            }\n        };\n        return hitOptions;\n    }\n    /**\n     * Returns the hit options for fills and unselected strokes/curves to use when conducting hit tests.\n     * @param {boolean} preselectedOnly True if we should only return results that are already\n     *     selected.\n     * @return {object} See paper.Item.hitTest for definition of options\n     */\n    getUnselectedAndFillHitOptions () {\n        const hitOptions = {\n            fill: true,\n            stroke: true,\n            curves: true,\n            tolerance: ReshapeTool.TOLERANCE / paper.view.zoom,\n            match: hitResult => {\n                if (hitResult.item.data && hitResult.item.data.noHover) return false;\n                return true;\n            }\n        };\n        return hitOptions;\n    }\n    /**\n     * To be called when the hovered item changes. When the select tool hovers over a\n     * new item, it compares against this to see if a hover item change event needs to\n     * be fired.\n     * @param {paper.Item} prevHoveredItemId ID of the highlight item that indicates the mouse is\n     *     over a given item currently\n     */\n    setPrevHoveredItemId (prevHoveredItemId) {\n        this.prevHoveredItemId = prevHoveredItemId;\n    }\n    /**\n     * Given the point at which the mouse is, return the prioritized hit result, or null if nothing was hit.\n     * @param {paper.Point} point Point to hit test on canvas\n     * @return {?paper.HitResult} hitResult\n     */\n    getHitResult (point) {\n        // Prefer hits on segments to other types of hits, since segments always overlap curves.\n        let hitResults =\n            paper.project.hitTestAll(point, this.getSelectedSegmentHitOptions());\n        if (!hitResults.length) {\n            hitResults = paper.project.hitTestAll(point, this.getHandleHitOptions());\n        }\n        if (!hitResults.length) {\n            hitResults = paper.project.hitTestAll(point, this.getSelectedStrokeHitOptions());\n        }\n        if (!hitResults.length) {\n            hitResults = paper.project.hitTestAll(point, this.getUnselectedAndFillHitOptions());\n        }\n        if (!hitResults.length) {\n            return null;\n        }\n\n        // Get highest z-index result\n        let hitResult;\n        for (const result of hitResults) {\n            if (!hitResult || sortItemsByZIndex(hitResult.item, result.item) < 0) {\n                hitResult = result;\n            }\n        }\n        return hitResult;\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n        this.clearHoveredItem();\n\n        // Check if double clicked\n        let doubleClicked = false;\n        if (this.lastEvent) {\n            if ((event.event.timeStamp - this.lastEvent.event.timeStamp) < ReshapeTool.DOUBLE_CLICK_MILLIS) {\n                doubleClicked = true;\n            } else {\n                doubleClicked = false;\n            }\n        }\n        this.lastEvent = event;\n\n        const hitResult = this.getHitResult(event.point);\n        if (!hitResult) {\n            this._modeMap[ReshapeModes.SELECTION_BOX].onMouseDown(event.modifiers.shift);\n            return;\n        }\n\n        const hitProperties = {\n            hitResult: hitResult,\n            clone: event.modifiers.alt,\n            multiselect: event.modifiers.shift,\n            doubleClicked: doubleClicked,\n            subselect: true\n        };\n\n        // If item is not yet selected, don't behave differently depending on if they clicked a segment\n        // (since those were invisible), just select the whole thing as if they clicked the fill.\n        if (!hitResult.item.selected ||\n                hitResult.type === 'fill' ||\n                hitResult.type === 'stroke' ||\n                (hitResult.type !== 'segment' && doubleClicked)) {\n            this.mode = ReshapeModes.FILL;\n            this._modeMap[this.mode].onMouseDown(hitProperties);\n        } else if (hitResult.type === 'segment') {\n            this.mode = ReshapeModes.POINT;\n            this._modeMap[this.mode].onMouseDown(hitProperties);\n        } else if (\n            hitResult.type === 'curve') {\n            this.mode = ReshapeModes.POINT;\n            this._modeMap[this.mode].addPoint(hitProperties);\n            this.onUpdateImage();\n            this._modeMap[this.mode].onMouseDown(hitProperties);\n        } else if (\n            hitResult.type === 'handle-in' ||\n            hitResult.type === 'handle-out') {\n            this.mode = ReshapeModes.HANDLE;\n            this._modeMap[this.mode].onMouseDown(hitProperties);\n        } else {\n            log.warn(`Unhandled hit result type: ${hitResult.type}`);\n            this.mode = ReshapeModes.FILL;\n            this._modeMap[this.mode].onMouseDown(hitProperties);\n        }\n    }\n    handleMouseMove (event) {\n        const hitResult = this.getHitResult(event.point);\n        let hoveredItem;\n\n        if (hitResult) {\n            const item = hitResult.item;\n            if (item.selected) {\n                hoveredItem = null;\n            } else if (isBoundsItem(item)) {\n                hoveredItem = hoverBounds(item);\n            } else {\n                hoveredItem = hoverItem(item);\n            }\n        }\n\n        if ((!hoveredItem && this.prevHoveredItemId) || // There is no longer a hovered item\n                (hoveredItem && !this.prevHoveredItemId) || // There is now a hovered item\n                (hoveredItem && this.prevHoveredItemId &&\n                    hoveredItem.id !== this.prevHoveredItemId)) { // hovered item changed\n            this.setHoveredItem(hoveredItem ? hoveredItem.id : null);\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n        this._modeMap[this.mode].onMouseDrag(event);\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n        if (this.mode === ReshapeModes.SELECTION_BOX) {\n            this._modeMap[this.mode].onMouseUpVector(event);\n        } else {\n            this._modeMap[this.mode].onMouseUp(event);\n        }\n        this.mode = ReshapeModes.SELECTION_BOX;\n        this.active = false;\n    }\n    handleKeyDown (event) {\n        if (event.event.target instanceof HTMLInputElement) {\n            // Ignore nudge if a text input field is focused\n            return;\n        }\n\n        const nudgeAmount = 1 / paper.view.zoom;\n        const selected = getSelectedLeafItems();\n        if (selected.length === 0) return;\n\n        let translation;\n        if (event.key === 'up') {\n            translation = new paper.Point(0, -nudgeAmount);\n        } else if (event.key === 'down') {\n            translation = new paper.Point(0, nudgeAmount);\n        } else if (event.key === 'left') {\n            translation = new paper.Point(-nudgeAmount, 0);\n        } else if (event.key === 'right') {\n            translation = new paper.Point(nudgeAmount, 0);\n        }\n\n        if (translation) {\n            const segments = getSelectedSegments();\n            // If no segments are selected, translate selected paths\n            if (segments.length === 0) {\n                for (const item of selected) {\n                    item.translate(translation);\n                }\n            } else { // Translate segments\n                for (const seg of segments) {\n                    seg.point = seg.point.add(translation);\n                }\n            }\n        }\n    }\n    handleKeyUp (event) {\n        const selected = getSelectedLeafItems();\n        if (selected.length === 0) return;\n\n        if (event.key === 'up' || event.key === 'down' || event.key === 'left' || event.key === 'right') {\n            this.onUpdateImage();\n        }\n    }\n    deactivateTool () {\n        paper.settings.handleSize = 0;\n        this.clearHoveredItem();\n        this.setHoveredItem = null;\n        this.clearHoveredItem = null;\n        this.onUpdateImage = null;\n        this.lastEvent = null;\n    }\n}\n\nexport default ReshapeTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport messages from '../../lib/messages.js';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\n\nimport reshapeIcon from './reshape.svg';\n\nconst ReshapeModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.reshape}\n        imgSrc={reshapeIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nReshapeModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default ReshapeModeComponent;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\n\nimport {changeMode} from '../reducers/modes';\nimport {clearHoveredItem, setHoveredItem} from '../reducers/hover';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {getSelectedLeafItems} from '../helper/selection';\n\nimport ReshapeTool from '../helper/selection-tools/reshape-tool';\nimport ReshapeModeComponent from '../components/reshape-mode/reshape-mode.jsx';\n\nclass ReshapeMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isReshapeModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.hoveredItemId !== this.props.hoveredItemId) {\n            this.tool.setPrevHoveredItemId(nextProps.hoveredItemId);\n        }\n\n        if (nextProps.isReshapeModeActive && !this.props.isReshapeModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isReshapeModeActive && this.props.isReshapeModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isReshapeModeActive !== this.props.isReshapeModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        this.tool = new ReshapeTool(\n            this.props.setHoveredItem,\n            this.props.clearHoveredItem,\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.onUpdateImage,\n            this.props.switchToTextTool\n        );\n        this.tool.setPrevHoveredItemId(this.props.hoveredItemId);\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n        this.hitResult = null;\n    }\n    render () {\n        return (\n            <ReshapeModeComponent\n                isSelected={this.props.isReshapeModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nReshapeMode.propTypes = {\n    clearHoveredItem: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    hoveredItemId: PropTypes.number,\n    isReshapeModeActive: PropTypes.bool.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    setHoveredItem: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired,\n    switchToTextTool: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    isReshapeModeActive: state.scratchPaint.mode === Modes.RESHAPE,\n    hoveredItemId: state.scratchPaint.hoveredItemId\n});\nconst mapDispatchToProps = dispatch => ({\n    setHoveredItem: hoveredItemId => {\n        dispatch(setHoveredItem(hoveredItemId));\n    },\n    clearHoveredItem: () => {\n        dispatch(clearHoveredItem());\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), false /* bitmapMode */));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.RESHAPE));\n    },\n    switchToTextTool: () => {\n        dispatch(changeMode(Modes.TEXT));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ReshapeMode);\n","import Modes from '../../lib/modes';\n\nimport {getHoveredItem} from '../hover';\nimport {selectRootItem} from '../selection';\nimport BoundingBoxTool from './bounding-box-tool';\nimport NudgeTool from './nudge-tool';\nimport SelectionBoxTool from './selection-box-tool';\nimport paper from '@scratch/paper';\n\n/**\n * paper.Tool that handles select mode. This is made up of 2 subtools.\n * - The selection box tool is active when the user clicks an empty space and drags.\n *   It selects all items in the rectangle.\n * - The bounding box tool is active if the user clicks on a non-empty space. It handles\n *   reshaping the item that was clicked.\n */\nclass SelectTool extends paper.Tool {\n    /** The distance within which mouse events count as a hit against an item */\n    static get TOLERANCE () {\n        return 2;\n    }\n    /** Clicks registered within this amount of time are registered as double clicks */\n    static get DOUBLE_CLICK_MILLIS () {\n        return 250;\n    }\n    /**\n     * @param {function} setHoveredItem Callback to set the hovered item\n     * @param {function} clearHoveredItem Callback to clear the hovered item\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     * @param {!function} switchToTextTool A callback to call to switch to the text tool\n     */\n    constructor (setHoveredItem, clearHoveredItem, setSelectedItems, clearSelectedItems, setCursor, onUpdateImage,\n        switchToTextTool) {\n        super();\n        this.setHoveredItem = setHoveredItem;\n        this.clearHoveredItem = clearHoveredItem;\n        this.onUpdateImage = onUpdateImage;\n        this.boundingBoxTool = new BoundingBoxTool(\n            Modes.SELECT,\n            setSelectedItems,\n            clearSelectedItems,\n            setCursor,\n            onUpdateImage,\n            switchToTextTool\n        );\n        const nudgeTool = new NudgeTool(Modes.SELECT, this.boundingBoxTool, onUpdateImage);\n        this.selectionBoxTool = new SelectionBoxTool(Modes.SELECT, setSelectedItems, clearSelectedItems);\n        this.selectionBoxMode = false;\n        this.prevHoveredItemId = null;\n        this.active = false;\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseUp = this.handleMouseUp;\n        this.onKeyUp = nudgeTool.onKeyUp;\n        this.onKeyDown = nudgeTool.onKeyDown;\n\n        selectRootItem();\n        setSelectedItems();\n        this.boundingBoxTool.setSelectionBounds();\n    }\n    /**\n     * To be called when the hovered item changes. When the select tool hovers over a\n     * new item, it compares against this to see if a hover item change event needs to\n     * be fired.\n     * @param {paper.Item} prevHoveredItemId ID of the highlight item that indicates the mouse is\n     *     over a given item currently\n     */\n    setPrevHoveredItemId (prevHoveredItemId) {\n        this.prevHoveredItemId = prevHoveredItemId;\n    }\n    /**\n     * Should be called if the selection changes to update the bounds of the bounding box.\n     * @param {Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        this.boundingBoxTool.onSelectionChanged(selectedItems);\n    }\n    /**\n     * Returns the hit options to use when conducting hit tests.\n     * @param {boolean} preselectedOnly True if we should only return results that are already\n     *     selected.\n     * @return {object} See paper.Item.hitTest for definition of options\n     */\n    getHitOptions (preselectedOnly) {\n        // Tolerance needs to be scaled when the view is zoomed in in order to represent the same\n        // distance for the user to move the mouse.\n        const hitOptions = {\n            segments: true,\n            stroke: true,\n            curves: true,\n            fill: true,\n            guide: false,\n            tolerance: SelectTool.TOLERANCE / paper.view.zoom,\n            match: hitResult => {\n                // Don't match helper items, unless they are handles.\n                if (!hitResult.item.data || !hitResult.item.data.isHelperItem) return true;\n                return hitResult.item.data.isScaleHandle || hitResult.item.data.isRotHandle;\n            }\n        };\n        if (preselectedOnly) {\n            hitOptions.selected = true;\n        }\n        return hitOptions;\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n        this.clearHoveredItem();\n\n        // Check if double clicked\n        let doubleClicked = false;\n        if (this.lastEvent) {\n            if ((event.event.timeStamp - this.lastEvent.event.timeStamp) < SelectTool.DOUBLE_CLICK_MILLIS) {\n                doubleClicked = true;\n            } else {\n                doubleClicked = false;\n            }\n        }\n        this.lastEvent = event;\n\n        // If bounding box tool does not find an item that was hit, use selection box tool.\n        if (!this.boundingBoxTool\n            .onMouseDown(\n                event,\n                event.modifiers.alt,\n                event.modifiers.shift,\n                doubleClicked,\n                this.getHitOptions(false /* preseelectedOnly */))) {\n            this.selectionBoxMode = true;\n            this.selectionBoxTool.onMouseDown(event.modifiers.shift);\n        }\n    }\n    handleMouseMove (event) {\n        const hoveredItem = getHoveredItem(event, this.getHitOptions());\n        if ((!hoveredItem && this.prevHoveredItemId) || // There is no longer a hovered item\n                (hoveredItem && !this.prevHoveredItemId) || // There is now a hovered item\n                (hoveredItem && this.prevHoveredItemId &&\n                    hoveredItem.id !== this.prevHoveredItemId)) { // hovered item changed\n            this.setHoveredItem(hoveredItem ? hoveredItem.id : null);\n        }\n\n        if (!this.selectionBoxMode) {\n            this.boundingBoxTool.onMouseMove(event, this.getHitOptions(false));\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.selectionBoxMode) {\n            this.selectionBoxTool.onMouseDrag(event);\n        } else {\n            this.boundingBoxTool.onMouseDrag(event);\n        }\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.selectionBoxMode) {\n            this.selectionBoxTool.onMouseUpVector(event);\n        } else {\n            this.boundingBoxTool.onMouseUp(event, this.getHitOptions(false));\n        }\n        this.selectionBoxMode = false;\n        this.active = false;\n    }\n    deactivateTool () {\n        this.clearHoveredItem();\n        this.boundingBoxTool.deactivateTool();\n        this.setHoveredItem = null;\n        this.clearHoveredItem = null;\n        this.onUpdateImage = null;\n        this.boundingBoxTool = null;\n        this.selectionBoxTool = null;\n    }\n}\n\nexport default SelectTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport messages from '../../lib/messages.js';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\n\nimport selectIcon from './select.svg';\n\nconst SelectModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.select}\n        imgSrc={selectIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nSelectModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default SelectModeComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\n\nimport {changeMode} from '../reducers/modes';\nimport {clearHoveredItem, setHoveredItem} from '../reducers/hover';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {setCursor} from '../reducers/cursor';\n\nimport {getSelectedLeafItems} from '../helper/selection';\nimport SelectTool from '../helper/selection-tools/select-tool';\nimport SelectModeComponent from '../components/select-mode/select-mode.jsx';\n\nclass SelectMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isSelectModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.hoveredItemId !== this.props.hoveredItemId) {\n            this.tool.setPrevHoveredItemId(nextProps.hoveredItemId);\n        }\n        if (this.tool && nextProps.selectedItems !== this.props.selectedItems) {\n            this.tool.onSelectionChanged(nextProps.selectedItems);\n        }\n\n        if (nextProps.isSelectModeActive && !this.props.isSelectModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isSelectModeActive && this.props.isSelectModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isSelectModeActive !== this.props.isSelectModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        this.tool = new SelectTool(\n            this.props.setHoveredItem,\n            this.props.clearHoveredItem,\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.setCursor,\n            this.props.onUpdateImage,\n            this.props.switchToTextTool\n        );\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <SelectModeComponent\n                isSelected={this.props.isSelectModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nSelectMode.propTypes = {\n    clearHoveredItem: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    hoveredItemId: PropTypes.number,\n    isSelectModeActive: PropTypes.bool.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    selectedItems: PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)),\n    setCursor: PropTypes.func.isRequired,\n    setHoveredItem: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired,\n    switchToTextTool: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    isSelectModeActive: state.scratchPaint.mode === Modes.SELECT,\n    hoveredItemId: state.scratchPaint.hoveredItemId,\n    selectedItems: state.scratchPaint.selectedItems\n});\nconst mapDispatchToProps = dispatch => ({\n    setHoveredItem: hoveredItemId => {\n        dispatch(setHoveredItem(hoveredItemId));\n    },\n    clearHoveredItem: () => {\n        dispatch(clearHoveredItem());\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), false /* bitmapMode */));\n    },\n    setCursor: cursorString => {\n        dispatch(setCursor(cursorString));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.SELECT));\n    },\n    switchToTextTool: () => {\n        dispatch(changeMode(Modes.TEXT));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(SelectMode);\n","import {connect} from 'react-redux';\nimport {defineMessages} from 'react-intl';\n\nimport {changeColorIndex} from '../reducers/color-index';\nimport {changeStrokeColor, changeStrokeColor2, changeStrokeGradientType} from '../reducers/stroke-style';\nimport {changeStrokeWidth} from '../reducers/stroke-width';\nimport {openStrokeColor, closeStrokeColor} from '../reducers/modals';\nimport {getSelectedLeafItems} from '../helper/selection';\nimport {setSelectedItems} from '../reducers/selected-items';\nimport Modes, {GradientToolsModes} from '../lib/modes';\nimport {isBitmap} from '../lib/format';\n\nimport makeColorIndicator from './color-indicator.jsx';\n\nconst messages = defineMessages({\n    label: {\n        id: 'paint.paintEditor.stroke',\n        description: 'Label for the color picker for the outline color',\n        defaultMessage: 'Outline'\n    }\n});\n\nconst StrokeColorIndicator = makeColorIndicator(messages.label, true);\n\nconst mapStateToProps = state => ({\n    colorIndex: state.scratchPaint.fillMode.colorIndex,\n    disabled: state.scratchPaint.mode === Modes.BRUSH ||\n        state.scratchPaint.mode === Modes.TEXT ||\n        state.scratchPaint.mode === Modes.FILL,\n    color: state.scratchPaint.color.strokeColor.primary,\n    color2: state.scratchPaint.color.strokeColor.secondary,\n    fillBitmapShapes: state.scratchPaint.fillBitmapShapes,\n    colorModalVisible: state.scratchPaint.modals.strokeColor,\n    format: state.scratchPaint.format,\n    gradientType: state.scratchPaint.color.strokeColor.gradientType,\n    isEyeDropping: state.scratchPaint.color.eyeDropper.active,\n    mode: state.scratchPaint.mode,\n    shouldShowGradientTools: state.scratchPaint.mode in GradientToolsModes,\n    textEditTarget: state.scratchPaint.textEditTarget\n});\n\nconst mapDispatchToProps = dispatch => ({\n    onChangeColorIndex: index => {\n        dispatch(changeColorIndex(index));\n    },\n    onChangeColor: (strokeColor, index) => {\n        if (index === 0) {\n            dispatch(changeStrokeColor(strokeColor));\n        } else if (index === 1) {\n            dispatch(changeStrokeColor2(strokeColor));\n        }\n    },\n    onChangeStrokeWidth: strokeWidth => {\n        dispatch(changeStrokeWidth(strokeWidth));\n    },\n    onOpenColor: () => {\n        dispatch(openStrokeColor());\n    },\n    onCloseColor: () => {\n        dispatch(closeStrokeColor());\n    },\n    onChangeGradientType: gradientType => {\n        dispatch(changeStrokeGradientType(gradientType));\n    },\n    setSelectedItems: format => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(StrokeColorIndicator);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Input from './forms/input.jsx';\nimport InputGroup from './input-group/input-group.jsx';\nimport LiveInputHOC from './forms/live-input-hoc.jsx';\n\nimport {MAX_STROKE_WIDTH} from '../reducers/stroke-width';\n\nconst LiveInput = LiveInputHOC(Input);\nconst StrokeWidthIndicatorComponent = props => (\n    <InputGroup disabled={props.disabled}>\n        <LiveInput\n            range\n            small\n            disabled={props.disabled}\n            max={MAX_STROKE_WIDTH}\n            min=\"0\"\n            type=\"number\"\n            value={props.strokeWidth ? props.strokeWidth : 0}\n            onSubmit={props.onChangeStrokeWidth}\n        />\n    </InputGroup>\n);\n\nStrokeWidthIndicatorComponent.propTypes = {\n    disabled: PropTypes.bool.isRequired,\n    onChangeStrokeWidth: PropTypes.func.isRequired,\n    strokeWidth: PropTypes.number\n};\n\nexport default StrokeWidthIndicatorComponent;\n","import {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport bindAll from 'lodash.bindall';\nimport parseColor from 'parse-color';\nimport {changeStrokeColor, changeStrokeColor2, changeStrokeGradientType} from '../reducers/stroke-style';\nimport {changeStrokeWidth} from '../reducers/stroke-width';\nimport StrokeWidthIndicatorComponent from '../components/stroke-width-indicator.jsx';\nimport {getSelectedLeafItems} from '../helper/selection';\nimport {\n    applyColorToSelection, applyStrokeWidthToSelection, getColorsFromSelection, MIXED\n} from '../helper/style-path';\nimport GradientTypes from '../lib/gradient-types';\nimport Modes from '../lib/modes';\nimport Formats, {isBitmap} from '../lib/format';\n\nclass StrokeWidthIndicator extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'handleChangeStrokeWidth'\n        ]);\n    }\n    handleChangeStrokeWidth (newWidth) {\n        let changed = applyStrokeWidthToSelection(newWidth, this.props.textEditTarget);\n        if ((!this.props.strokeWidth || this.props.strokeWidth === 0) && newWidth > 0) {\n            const currentColorState = getColorsFromSelection(getSelectedLeafItems(), isBitmap(this.props.format));\n\n            // Color counts as null if either both colors are null or the primary color is null and it's solid\n            // TODO: consolidate this check in one place\n            const wasNull = currentColorState.strokeColor === null &&\n                (currentColorState.strokeColor2 === null ||\n                 currentColorState.strokeGradientType === GradientTypes.SOLID);\n\n            if (wasNull) {\n                changed = applyColorToSelection(\n                    '#000',\n                    0, // colorIndex,\n                    true, // isSolidGradient\n                    true, // applyToStroke\n                    this.props.textEditTarget) ||\n                    changed;\n                // If there's no previous stroke color, default to solid black\n                this.props.onChangeStrokeGradientType(GradientTypes.SOLID);\n                this.props.onChangeStrokeColor('#000');\n            } else if (currentColorState.strokeColor !== MIXED) {\n                // Set color state from the selected item's stroke color\n                this.props.onChangeStrokeGradientType(currentColorState.strokeGradientType);\n                this.props.onChangeStrokeColor(parseColor(currentColorState.strokeColor).hex);\n                this.props.onChangeStrokeColor2(parseColor(currentColorState.strokeColor2).hex);\n            }\n        }\n        this.props.onChangeStrokeWidth(newWidth);\n        if (changed) this.props.onUpdateImage();\n    }\n    render () {\n        return (\n            <StrokeWidthIndicatorComponent\n                disabled={this.props.disabled}\n                strokeWidth={this.props.strokeWidth}\n                onChangeStrokeWidth={this.handleChangeStrokeWidth}\n            />\n        );\n    }\n}\n\nconst mapStateToProps = state => ({\n    disabled: state.scratchPaint.mode === Modes.BRUSH ||\n        state.scratchPaint.mode === Modes.TEXT ||\n        state.scratchPaint.mode === Modes.FILL,\n    format: state.scratchPaint.format,\n    strokeWidth: state.scratchPaint.color.strokeWidth,\n    textEditTarget: state.scratchPaint.textEditTarget\n});\nconst mapDispatchToProps = dispatch => ({\n    onChangeStrokeColor: strokeColor => {\n        dispatch(changeStrokeColor(strokeColor));\n    },\n    onChangeStrokeColor2: strokeColor => {\n        dispatch(changeStrokeColor2(strokeColor));\n    },\n    onChangeStrokeGradientType: strokeColor => {\n        dispatch(changeStrokeGradientType(strokeColor));\n    },\n    onChangeStrokeWidth: strokeWidth => {\n        dispatch(changeStrokeWidth(strokeWidth));\n    }\n});\n\nStrokeWidthIndicator.propTypes = {\n    disabled: PropTypes.bool.isRequired,\n    format: PropTypes.oneOf(Object.keys(Formats)),\n    onChangeStrokeColor: PropTypes.func.isRequired,\n    onChangeStrokeColor2: PropTypes.func.isRequired,\n    onChangeStrokeGradientType: PropTypes.func.isRequired,\n    onChangeStrokeWidth: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    strokeWidth: PropTypes.number,\n    textEditTarget: PropTypes.number\n};\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(StrokeWidthIndicator);\n","import paper from '@scratch/paper';\nimport Modes from '../../lib/modes';\nimport {clearSelection, getSelectedLeafItems} from '../selection';\nimport BoundingBoxTool from '../selection-tools/bounding-box-tool';\nimport NudgeTool from '../selection-tools/nudge-tool';\nimport {hoverBounds} from '../guides';\nimport {getRaster} from '../layer';\n\n/**\n * Tool for adding text. Text elements have limited editability; they can't be reshaped,\n * drawn on or erased. This way they can preserve their ability to have the text edited.\n */\nclass TextTool extends paper.Tool {\n    static get TOLERANCE () {\n        return 2;\n    }\n    static get TEXT_EDIT_MODE () {\n        return 'TEXT_EDIT_MODE';\n    }\n    static get SELECT_MODE () {\n        return 'SELECT_MODE';\n    }\n    /** Clicks registered within this amount of time are registered as double clicks */\n    static get DOUBLE_CLICK_MILLIS () {\n        return 250;\n    }\n    /** Typing with no pauses longer than this amount of type will count as 1 action */\n    static get TYPING_TIMEOUT_MILLIS () {\n        return 1000;\n    }\n    static get TEXT_PADDING () {\n        return 8;\n    }\n    /**\n     * @param {HTMLTextAreaElement} textAreaElement dom element for the editable text field\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     * @param {!function} setTextEditTarget Call to set text editing target whenever text editing is active\n     * @param {!function} changeFont Call to change the font in the dropdown\n     * @param {?boolean} isBitmap True if text should be rasterized once it's deselected\n     */\n    constructor (textAreaElement, setSelectedItems, clearSelectedItems, setCursor, onUpdateImage, setTextEditTarget,\n        changeFont, isBitmap) {\n        super();\n        this.element = textAreaElement;\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.onUpdateImage = onUpdateImage;\n        this.setTextEditTarget = setTextEditTarget;\n        this.changeFont = changeFont;\n        const paintMode = isBitmap ? Modes.BIT_TEXT : Modes.TEXT;\n        this.boundingBoxTool = new BoundingBoxTool(\n            paintMode,\n            setSelectedItems,\n            clearSelectedItems,\n            setCursor,\n            onUpdateImage\n        );\n        this.nudgeTool = new NudgeTool(paintMode, this.boundingBoxTool, onUpdateImage);\n        this.isBitmap = isBitmap;\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseUp = this.handleMouseUp;\n        this.onMouseMove = this.handleMouseMove;\n        this.onKeyUp = this.handleKeyUp;\n        this.onKeyDown = this.handleKeyDown;\n\n        this.textBox = null;\n        this.guide = null;\n        this.colorState = null;\n        this.mode = null;\n        this.active = false;\n        this.lastTypeEvent = null;\n        this.lastEvent = null;\n\n        // If text selected and then activate this tool, switch to text edit mode for that text\n        // If double click on text while in select mode, does mode change to text mode? Text fully selected by default\n    }\n    getBoundingBoxHitOptions () {\n        return {\n            segments: true,\n            stroke: true,\n            curves: true,\n            fill: true,\n            guide: false,\n            match: hitResult =>\n                (hitResult.item.data && (hitResult.item.data.isScaleHandle || hitResult.item.data.isRotHandle)) ||\n                hitResult.item.selected, // Allow hits on bounding box and selected only\n            tolerance: TextTool.TOLERANCE / paper.view.zoom\n        };\n    }\n    getTextEditHitOptions () {\n        return {\n            class: paper.PointText,\n            segments: true,\n            stroke: true,\n            curves: true,\n            fill: true,\n            guide: false,\n            match: hitResult => hitResult.item &&\n                !(hitResult.item.data && hitResult.item.data.isHelperItem) &&\n                !hitResult.item.selected, // Unselected only\n            tolerance: TextTool.TOLERANCE / paper.view.zoom\n        };\n    }\n    /**\n     * Called when the selection changes to update the bounds of the bounding box.\n     * @param {Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        this.boundingBoxTool.onSelectionChanged(selectedItems);\n        if ((!this.textBox || !this.textBox.parent) &&\n                selectedItems && selectedItems.length === 1 && selectedItems[0] instanceof paper.PointText) {\n            // Infer that an undo occurred and get back the active text\n            this.textBox = selectedItems[0];\n            this.mode = TextTool.SELECT_MODE;\n        }\n    }\n    setFont (font) {\n        this.font = font;\n        if (this.textBox) {\n            this.textBox.font = font;\n        }\n        const selected = getSelectedLeafItems();\n        for (const item of selected) {\n            if (item instanceof paper.PointText) {\n                item.font = font;\n            }\n        }\n        this.element.style.fontFamily = font;\n        this.setSelectedItems();\n    }\n    // Allow other tools to cancel text edit mode\n    onTextEditCancelled () {\n        if (this.mode !== TextTool.TEXT_EDIT_MODE) {\n            return;\n        }\n        this.endTextEdit();\n        this.beginSelect();\n    }\n    /**\n     * Called when the view matrix changes\n     * @param {paper.Matrix} viewMtx applied to paper.view\n     */\n    onViewBoundsChanged (viewMtx) {\n        if (this.mode !== TextTool.TEXT_EDIT_MODE) {\n            return;\n        }\n        this.calculateMatrix(viewMtx);\n    }\n    calculateMatrix (viewMtx) {\n        const textBoxMtx = this.textBox.matrix;\n        const calculated = new paper.Matrix();\n\n        // In RTL, the element is moved relative to its parent's right edge instead of its left\n        // edge. We need to correct for this in order for the element to overlap the object in paper.\n        let tx = 0;\n        if (this.rtl && this.element.parentElement) {\n            tx = -this.element.parentElement.clientWidth;\n        }\n        // The transform origin in paper is x at justification side, y at the baseline of the text.\n        // The offset from (0, 0) to the upper left corner is recorded by internalBounds\n        // (so this.textBox.internalBounds.y is negative).\n        // Move the transform origin down to the text baseline to match paper\n        this.element.style.transformOrigin = `${-this.textBox.internalBounds.x}px ${-this.textBox.internalBounds.y}px`;\n        // Start by translating the element up so that its (0, 0) is now at the text baseline, like in paper\n        calculated.translate(tx, this.textBox.internalBounds.y);\n        calculated.append(viewMtx);\n        calculated.append(textBoxMtx);\n        this.element.style.transform = `matrix(${calculated.a}, ${calculated.b}, ${calculated.c}, ${calculated.d},\n             ${calculated.tx}, ${calculated.ty})`;\n    }\n    setColorState (colorState) {\n        this.colorState = colorState;\n    }\n    /** @param {boolean} isRtl True if paint editor is in right-to-left layout (e.g. Hebrew language) */\n    setRtl (isRtl) {\n        this.rtl = isRtl;\n    }\n    handleMouseMove (event) {\n        const hitResults = paper.project.hitTestAll(event.point, this.getTextEditHitOptions());\n        if (hitResults.length) {\n            document.body.style.cursor = 'text';\n        } else {\n            document.body.style.cursor = 'auto';\n        }\n        this.boundingBoxTool.onMouseMove(event, this.getBoundingBoxHitOptions());\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        // Check if double clicked\n        const doubleClicked = this.lastEvent &&\n            (event.event.timeStamp - this.lastEvent.event.timeStamp) < TextTool.DOUBLE_CLICK_MILLIS;\n        this.lastEvent = event;\n        if (doubleClicked &&\n                this.mode === TextTool.SELECT_MODE &&\n                this.textBox.hitTest(event.point)) {\n            // Double click in select mode moves you to text edit mode\n            this.endSelect();\n            this.beginTextEdit(this.textBox);\n            this.element.select();\n            return;\n        }\n\n        // In select mode staying in select mode\n        if (this.boundingBoxTool.onMouseDown(\n            event, false /* clone */, false /* multiselect */, false /* doubleClicked */,\n            this.getBoundingBoxHitOptions())) {\n            return;\n        }\n\n        // We clicked away from the item, so end the current mode\n        const lastMode = this.mode;\n        if (this.mode === TextTool.SELECT_MODE) {\n            this.endSelect();\n            if (this.isBitmap) {\n                this.commitText();\n            }\n        } else if (this.mode === TextTool.TEXT_EDIT_MODE) {\n            this.endTextEdit();\n        }\n\n        const hitResults = paper.project.hitTestAll(event.point, this.getTextEditHitOptions());\n        if (hitResults.length) {\n            // Clicking a different text item to begin text edit mode on that item\n            this.beginTextEdit(hitResults[0].item);\n        } else if (lastMode === TextTool.TEXT_EDIT_MODE) {\n            // In text mode clicking away to begin select mode\n            this.beginSelect();\n        } else {\n            // In no mode or select mode clicking away to begin text edit mode\n            this.textBox = new paper.PointText({\n                point: event.point,\n                content: '',\n                font: this.font,\n                fontSize: 40,\n                // TODO: style using gradient\n                // https://github.com/LLK/scratch-paint/issues/1164\n                fillColor: this.colorState.fillColor.primary,\n                // Default leading for both the HTML text area and paper.PointText\n                // is 120%, but for some reason they are slightly off from each other.\n                // This value was obtained experimentally.\n                leading: 46.15\n            });\n            this.beginTextEdit(this.textBox);\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.mode === TextTool.SELECT_MODE) {\n            this.boundingBoxTool.onMouseDrag(event);\n            return;\n        }\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.mode === TextTool.SELECT_MODE) {\n            this.boundingBoxTool.onMouseUp(event);\n            this.isBoundingBoxMode = null;\n            return;\n        }\n\n        this.active = false;\n    }\n    handleKeyUp (event) {\n        if (event.event.target instanceof HTMLInputElement) {\n            // Ignore nudge if a text input field is focused\n            return;\n        }\n\n        if (this.mode === TextTool.SELECT_MODE) {\n            this.nudgeTool.onKeyUp(event);\n        }\n    }\n    handleKeyDown (event) {\n        if (event.event.target instanceof HTMLInputElement) {\n            // Ignore nudge if a text input field is focused\n            return;\n        }\n        if (this.mode === TextTool.TEXT_EDIT_MODE && event.key === 'escape') {\n            this.endTextEdit();\n        }\n        if (this.mode === TextTool.SELECT_MODE) {\n            this.nudgeTool.onKeyDown(event);\n        }\n    }\n    handleTextInput (event) {\n        // Save undo state if you paused typing for long enough.\n        if (this.lastTypeEvent && event.timeStamp - this.lastTypeEvent.timeStamp > TextTool.TYPING_TIMEOUT_MILLIS) {\n            // Select the textbox so that it will be selected if the user performs undo.\n            this.textBox.selected = true;\n            this.onUpdateImage();\n            this.textBox.selected = false;\n        }\n        this.lastTypeEvent = event;\n        if (this.mode === TextTool.TEXT_EDIT_MODE) {\n            this.textBox.content = this.element.value;\n        }\n        this.resizeGuide();\n    }\n    resizeGuide () {\n        if (this.guide) this.guide.remove();\n        this.guide = hoverBounds(this.textBox, TextTool.TEXT_PADDING);\n        this.guide.dashArray = [4, 4];\n        // Prevent line from wrapping\n        this.element.style.width = `${this.textBox.internalBounds.width + 1}px`;\n        this.element.style.height = `${this.textBox.internalBounds.height}px`;\n        // The transform origin needs to be updated in RTL because this.textBox.internalBounds.x\n        // changes as you type\n        if (this.rtl) {\n            this.element.style.transformOrigin =\n                `${-this.textBox.internalBounds.x}px ${-this.textBox.internalBounds.y}px`;\n        }\n    }\n    beginSelect () {\n        if (this.textBox) {\n            this.mode = TextTool.SELECT_MODE;\n            this.textBox.selected = true;\n            this.setSelectedItems();\n        }\n    }\n    endSelect () {\n        clearSelection(this.clearSelectedItems);\n        this.mode = null;\n    }\n    /**\n     * @param {paper.PointText} textBox Text object to begin text edit on\n     */\n    beginTextEdit (textBox) {\n        this.textBox = textBox;\n        this.mode = TextTool.TEXT_EDIT_MODE;\n        this.setTextEditTarget(this.textBox.id);\n        if (this.font !== this.textBox.font) {\n            this.changeFont(this.textBox.font);\n        }\n        this.element.style.fontSize = `${this.textBox.fontSize}px`;\n        this.element.style.lineHeight = this.textBox.leading / this.textBox.fontSize;\n\n        this.element.style.display = 'initial';\n        this.element.value = textBox.content ? textBox.content : '';\n        this.calculateMatrix(paper.view.matrix);\n\n        if (this.rtl) {\n            // make both the textbox and the textarea element grow to the left\n            this.textBox.justification = 'right';\n        } else {\n            this.textBox.justification = 'left';\n        }\n\n        this.element.focus({preventScroll: true});\n        this.eventListener = this.handleTextInput.bind(this);\n        this.element.addEventListener('input', this.eventListener);\n        this.resizeGuide();\n    }\n    endTextEdit () {\n        if (this.mode !== TextTool.TEXT_EDIT_MODE) {\n            return;\n        }\n        this.mode = null;\n\n        // Remove invisible textboxes\n        if (this.textBox && this.textBox.content.trim() === '') {\n            this.textBox.remove();\n            this.textBox = null;\n        }\n\n        // Remove guide\n        if (this.guide) {\n            this.guide.remove();\n            this.guide = null;\n            this.setTextEditTarget();\n        }\n        this.element.style.display = 'none';\n        if (this.eventListener) {\n            this.element.removeEventListener('input', this.eventListener);\n            this.eventListener = null;\n        }\n        if (this.textBox && this.lastTypeEvent) {\n            // Finished editing a textbox, save undo state\n            // Select the textbox so that it will be selected if the user performs undo.\n            this.textBox.selected = true;\n            this.onUpdateImage();\n            this.textBox.selected = false;\n            this.lastTypeEvent = null;\n        }\n    }\n    commitText () {\n        if (!this.textBox || !this.textBox.parent) return;\n\n        // @todo get crisp text https://github.com/LLK/scratch-paint/issues/508\n        const textRaster = this.textBox.rasterize(72, false /* insert */, this.textBox.drawnBounds);\n        this.textBox.remove();\n        this.textBox = null;\n        getRaster().drawImage(\n            textRaster.canvas,\n            new paper.Point(Math.floor(textRaster.bounds.x), Math.floor(textRaster.bounds.y))\n        );\n        this.onUpdateImage();\n    }\n    deactivateTool () {\n        if (this.textBox && this.textBox.content.trim() === '') {\n            this.textBox.remove();\n            this.textBox = null;\n        }\n        this.endTextEdit();\n        if (this.isBitmap) {\n            this.commitText();\n        }\n        this.boundingBoxTool.deactivateTool();\n    }\n}\n\nexport default TextTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport messages from '../../lib/messages.js';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\n\nimport textIcon from './text.svg';\n\nconst TextModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.text}\n        imgSrc={textIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nTextModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default TextModeComponent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport textIcon from './text.svg';\n\nconst BitTextComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.text}\n        imgSrc={textIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitTextComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitTextComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Fonts from '../lib/fonts';\nimport Modes from '../lib/modes';\nimport ColorStyleProptype from '../lib/color-style-proptype';\nimport {MIXED} from '../helper/style-path';\n\nimport {changeFont} from '../reducers/font';\nimport {changeFillColor, clearFillGradient, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeStrokeColor} from '../reducers/stroke-style';\nimport {changeMode} from '../reducers/modes';\nimport {setTextEditTarget} from '../reducers/text-edit-target';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {setCursor} from '../reducers/cursor';\n\nimport {clearSelection, getSelectedLeafItems} from '../helper/selection';\nimport TextTool from '../helper/tools/text-tool';\nimport TextModeComponent from '../components/text-mode/text-mode.jsx';\nimport BitTextModeComponent from '../components/bit-text-mode/bit-text-mode.jsx';\n\nclass TextMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isTextModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool) {\n            if (nextProps.colorState !== this.props.colorState) {\n                this.tool.setColorState(nextProps.colorState);\n            }\n            if (nextProps.selectedItems !== this.props.selectedItems) {\n                this.tool.onSelectionChanged(nextProps.selectedItems);\n            }\n            if (!nextProps.textEditTarget && this.props.textEditTarget) {\n                this.tool.onTextEditCancelled();\n            }\n            if (!nextProps.viewBounds.equals(this.props.viewBounds)) {\n                this.tool.onViewBoundsChanged(nextProps.viewBounds);\n            }\n            if (nextProps.font !== this.props.font) {\n                this.tool.setFont(nextProps.font);\n            }\n            if (nextProps.rtl !== this.props.rtl) {\n                this.tool.setRtl(nextProps.rtl);\n            }\n        }\n\n        if (nextProps.isTextModeActive && !this.props.isTextModeActive) {\n            this.activateTool(nextProps);\n        } else if (!nextProps.isTextModeActive && this.props.isTextModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isTextModeActive !== this.props.isTextModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool (nextProps) {\n        const selected = getSelectedLeafItems();\n        let textBoxToStartEditing = null;\n        if (selected.length === 1 && selected[0] instanceof paper.PointText) {\n            textBoxToStartEditing = selected[0];\n        }\n        clearSelection(this.props.clearSelectedItems);\n        this.props.clearGradient();\n\n        // If fill and stroke color are both mixed/transparent/absent, set fill to default and stroke to transparent.\n        // If exactly one of fill or stroke color is set, set the other one to transparent.\n        // This way the tool won't draw an invisible state, or be unclear about what will be drawn.\n        const {strokeWidth} = nextProps.colorState;\n        const fillColor = nextProps.colorState.fillColor.primary;\n        const strokeColor = nextProps.colorState.strokeColor.primary;\n        const fillColorPresent = fillColor !== MIXED && fillColor !== null;\n        const strokeColorPresent = nextProps.isBitmap ? false :\n            strokeColor !== MIXED && strokeColor !== null && strokeWidth !== null && strokeWidth !== 0;\n        if (!fillColorPresent && !strokeColorPresent) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n            this.props.onChangeStrokeColor(null);\n        } else if (!fillColorPresent && strokeColorPresent) {\n            this.props.onChangeFillColor(null);\n        } else if (fillColorPresent && !strokeColorPresent) {\n            this.props.onChangeStrokeColor(null);\n        }\n        if (!nextProps.font || Object.keys(Fonts).map(key => Fonts[key])\n            .indexOf(nextProps.font) < 0) {\n            this.props.changeFont(Fonts.SANS_SERIF);\n        }\n\n        this.tool = new TextTool(\n            this.props.textArea,\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.setCursor,\n            this.props.onUpdateImage,\n            this.props.setTextEditTarget,\n            this.props.changeFont,\n            nextProps.isBitmap\n        );\n        this.tool.setRtl(this.props.rtl);\n        this.tool.setColorState(nextProps.colorState);\n        this.tool.setFont(nextProps.font);\n        this.tool.activate();\n        if (textBoxToStartEditing) {\n            this.tool.beginTextEdit(textBoxToStartEditing);\n            this.props.textArea.select();\n        }\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            this.props.isBitmap ?\n                <BitTextModeComponent\n                    isSelected={this.props.isTextModeActive}\n                    onMouseDown={this.props.handleChangeModeBitText}\n                /> :\n                <TextModeComponent\n                    isSelected={this.props.isTextModeActive}\n                    onMouseDown={this.props.handleChangeModeText}\n                />\n        );\n    }\n}\n\nTextMode.propTypes = {\n    changeFont: PropTypes.func.isRequired,\n    clearGradient: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    colorState: PropTypes.shape({\n        fillColor: ColorStyleProptype,\n        strokeColor: ColorStyleProptype,\n        strokeWidth: PropTypes.number\n    }).isRequired,\n    font: PropTypes.string,\n    handleChangeModeBitText: PropTypes.func.isRequired,\n    handleChangeModeText: PropTypes.func.isRequired,\n    isBitmap: PropTypes.bool,\n    isTextModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onChangeStrokeColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    rtl: PropTypes.bool,\n    selectedItems: PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)),\n    setCursor: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired,\n    setTextEditTarget: PropTypes.func.isRequired,\n    textArea: PropTypes.instanceOf(Element),\n    textEditTarget: PropTypes.number,\n    viewBounds: PropTypes.instanceOf(paper.Matrix).isRequired\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n    colorState: state.scratchPaint.color,\n    font: state.scratchPaint.font,\n    isTextModeActive: ownProps.isBitmap ?\n        state.scratchPaint.mode === Modes.BIT_TEXT :\n        state.scratchPaint.mode === Modes.TEXT,\n    rtl: state.scratchPaint.layout.rtl,\n    selectedItems: state.scratchPaint.selectedItems,\n    textEditTarget: state.scratchPaint.textEditTarget,\n    viewBounds: state.scratchPaint.viewBounds\n});\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n    changeFont: font => {\n        dispatch(changeFont(font));\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearGradient: () => {\n        dispatch(clearFillGradient());\n    },\n    handleChangeModeBitText: () => {\n        dispatch(changeMode(Modes.BIT_TEXT));\n    },\n    handleChangeModeText: () => {\n        dispatch(changeMode(Modes.TEXT));\n    },\n    setCursor: cursorString => {\n        dispatch(setCursor(cursorString));\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), ownProps.isBitmap));\n    },\n    setTextEditTarget: targetId => {\n        dispatch(setTextEditTarget(targetId));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    },\n    onChangeStrokeColor: strokeColor => {\n        dispatch(changeStrokeColor(strokeColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(TextMode);\n","import paper from '@scratch/paper';\nimport classNames from 'classnames';\nimport {defineMessages, injectIntl, intlShape} from 'react-intl';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport PaperCanvas from '../../containers/paper-canvas.jsx';\nimport ScrollableCanvas from '../../containers/scrollable-canvas.jsx';\n\nimport BitBrushMode from '../../containers/bit-brush-mode.jsx';\nimport BitLineMode from '../../containers/bit-line-mode.jsx';\nimport BitOvalMode from '../../containers/bit-oval-mode.jsx';\nimport BitRectMode from '../../containers/bit-rect-mode.jsx';\nimport BitFillMode from '../../containers/bit-fill-mode.jsx';\nimport BitEraserMode from '../../containers/bit-eraser-mode.jsx';\nimport BitSelectMode from '../../containers/bit-select-mode.jsx';\nimport Box from '../box/box.jsx';\nimport Button from '../button/button.jsx';\nimport ButtonGroup from '../button-group/button-group.jsx';\nimport BrushMode from '../../containers/brush-mode.jsx';\nimport EraserMode from '../../containers/eraser-mode.jsx';\nimport FillColorIndicatorComponent from '../../containers/fill-color-indicator.jsx';\nimport FillMode from '../../containers/fill-mode.jsx';\nimport InputGroup from '../input-group/input-group.jsx';\nimport LineMode from '../../containers/line-mode.jsx';\nimport Loupe from '../loupe/loupe.jsx';\nimport FixedToolsContainer from '../../containers/fixed-tools.jsx';\nimport ModeToolsContainer from '../../containers/mode-tools.jsx';\nimport OvalMode from '../../containers/oval-mode.jsx';\nimport RectMode from '../../containers/rect-mode.jsx';\nimport ReshapeMode from '../../containers/reshape-mode.jsx';\nimport SelectMode from '../../containers/select-mode.jsx';\nimport StrokeColorIndicatorComponent from '../../containers/stroke-color-indicator.jsx';\nimport StrokeWidthIndicatorComponent from '../../containers/stroke-width-indicator.jsx';\nimport TextMode from '../../containers/text-mode.jsx';\n\nimport Formats, {isBitmap, isVector} from '../../lib/format';\nimport styles from './paint-editor.css';\n\nimport bitmapIcon from './icons/bitmap.svg';\nimport zoomInIcon from './icons/zoom-in.svg';\nimport zoomOutIcon from './icons/zoom-out.svg';\nimport zoomResetIcon from './icons/zoom-reset.svg';\n\nconst messages = defineMessages({\n    bitmap: {\n        defaultMessage: 'Convert to Bitmap',\n        description: 'Label for button that converts the paint editor to bitmap mode',\n        id: 'paint.paintEditor.bitmap'\n    },\n    vector: {\n        defaultMessage: 'Convert to Vector',\n        description: 'Label for button that converts the paint editor to vector mode',\n        id: 'paint.paintEditor.vector'\n    }\n});\n\nconst PaintEditorComponent = props => (\n    <div\n        className={styles.editorContainer}\n        dir={props.rtl ? 'rtl' : 'ltr'}\n    >\n        {props.canvas !== null ? ( // eslint-disable-line no-negated-condition\n            <div className={styles.editorContainerTop}>\n                {/* First row */}\n                <div className={styles.row}>\n                    <FixedToolsContainer\n                        canRedo={props.canRedo}\n                        canUndo={props.canUndo}\n                        name={props.name}\n                        onRedo={props.onRedo}\n                        onUndo={props.onUndo}\n                        onUpdateImage={props.onUpdateImage}\n                        onUpdateName={props.onUpdateName}\n                    />\n                </div>\n                {/* Second Row */}\n                {isVector(props.format) ?\n                    <div className={styles.row}>\n                        <InputGroup\n                            className={classNames(\n                                styles.row,\n                                styles.modDashedBorder,\n                                styles.modLabeledIconHeight\n                            )}\n                        >\n                            {/* fill */}\n                            <FillColorIndicatorComponent\n                                className={styles.modMarginAfter}\n                                onUpdateImage={props.onUpdateImage}\n                            />\n                            {/* stroke */}\n                            <StrokeColorIndicatorComponent\n                                onUpdateImage={props.onUpdateImage}\n                            />\n                            {/* stroke width */}\n                            <StrokeWidthIndicatorComponent\n                                onUpdateImage={props.onUpdateImage}\n                            />\n                        </InputGroup>\n                        <InputGroup className={styles.modModeTools}>\n                            <ModeToolsContainer\n                                onUpdateImage={props.onUpdateImage}\n                            />\n                        </InputGroup>\n                    </div> :\n                    isBitmap(props.format) ?\n                        <div className={styles.row}>\n                            <InputGroup\n                                className={classNames(\n                                    styles.row,\n                                    styles.modDashedBorder,\n                                    styles.modLabeledIconHeight\n                                )}\n                            >\n                                {/* fill */}\n                                <FillColorIndicatorComponent\n                                    className={styles.modMarginAfter}\n                                    onUpdateImage={props.onUpdateImage}\n                                />\n                            </InputGroup>\n                            <InputGroup className={styles.modModeTools}>\n                                <ModeToolsContainer\n                                    onUpdateImage={props.onUpdateImage}\n                                />\n                            </InputGroup>\n                        </div> : null\n                }\n            </div>\n        ) : null}\n\n        <div className={styles.topAlignRow}>\n            {/* Modes */}\n            {props.canvas !== null && isVector(props.format) ? ( // eslint-disable-line no-negated-condition\n                <div className={styles.modeSelector}>\n                    <SelectMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <ReshapeMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <BrushMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <EraserMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <FillMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <TextMode\n                        textArea={props.textArea}\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <LineMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <OvalMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <RectMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                </div>\n            ) : null}\n\n            {props.canvas !== null && isBitmap(props.format) ? ( // eslint-disable-line no-negated-condition\n                <div className={styles.modeSelector}>\n                    <BitBrushMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <BitLineMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <BitOvalMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <BitRectMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <TextMode\n                        isBitmap\n                        textArea={props.textArea}\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <BitFillMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <BitEraserMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <BitSelectMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                </div>\n            ) : null}\n\n            <div className={styles.controlsContainer}>\n                {/* Canvas */}\n                <ScrollableCanvas\n                    canvas={props.canvas}\n                    hideScrollbars={props.isEyeDropping}\n                    style={styles.canvasContainer}\n                >\n                    <PaperCanvas\n                        canvasRef={props.setCanvas}\n                        image={props.image}\n                        imageFormat={props.imageFormat}\n                        imageId={props.imageId}\n                        rotationCenterX={props.rotationCenterX}\n                        rotationCenterY={props.rotationCenterY}\n                        zoomLevelId={props.zoomLevelId}\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <textarea\n                        className={styles.textArea}\n                        ref={props.setTextArea}\n                        spellCheck={false}\n                    />\n                    {props.isEyeDropping &&\n                        props.colorInfo !== null &&\n                        !props.colorInfo.hideLoupe ? (\n                            <Box className={styles.colorPickerWrapper}>\n                                <Loupe\n                                    colorInfo={props.colorInfo}\n                                    pixelRatio={paper.project.view.pixelRatio}\n                                />\n                            </Box>\n                        ) : null\n                    }\n                </ScrollableCanvas>\n                <div className={styles.canvasControls}>\n                    {isVector(props.format) ?\n                        <Button\n                            className={styles.bitmapButton}\n                            onClick={props.onSwitchToBitmap}\n                        >\n                            <img\n                                className={styles.bitmapButtonIcon}\n                                draggable={false}\n                                src={bitmapIcon}\n                            />\n                            <span className={styles.buttonText}>\n                                {props.intl.formatMessage(messages.bitmap)}\n                            </span>\n                        </Button> :\n                        isBitmap(props.format) ?\n                            <Button\n                                className={styles.bitmapButton}\n                                onClick={props.onSwitchToVector}\n                            >\n                                <img\n                                    className={styles.bitmapButtonIcon}\n                                    draggable={false}\n                                    src={bitmapIcon}\n                                />\n                                <span className={styles.buttonText}>\n                                    {props.intl.formatMessage(messages.vector)}\n                                </span>\n                            </Button> : null\n                    }\n                    {/* Zoom controls */}\n                    <InputGroup className={styles.zoomControls}>\n                        <ButtonGroup>\n                            <Button\n                                className={styles.buttonGroupButton}\n                                onClick={props.onZoomOut}\n                            >\n                                <img\n                                    alt=\"Zoom Out\"\n                                    className={styles.buttonGroupButtonIcon}\n                                    draggable={false}\n                                    src={zoomOutIcon}\n                                />\n                            </Button>\n                            <Button\n                                className={styles.buttonGroupButton}\n                                onClick={props.onZoomReset}\n                            >\n                                <img\n                                    alt=\"Zoom Reset\"\n                                    className={styles.buttonGroupButtonIcon}\n                                    draggable={false}\n                                    src={zoomResetIcon}\n                                />\n                            </Button>\n                            <Button\n                                className={styles.buttonGroupButton}\n                                onClick={props.onZoomIn}\n                            >\n                                <img\n                                    alt=\"Zoom In\"\n                                    className={styles.buttonGroupButtonIcon}\n                                    draggable={false}\n                                    src={zoomInIcon}\n                                />\n                            </Button>\n                        </ButtonGroup>\n                    </InputGroup>\n                </div>\n            </div>\n        </div>\n    </div>\n);\n\nPaintEditorComponent.propTypes = {\n    canRedo: PropTypes.func.isRequired,\n    canUndo: PropTypes.func.isRequired,\n    canvas: PropTypes.instanceOf(Element),\n    colorInfo: Loupe.propTypes.colorInfo,\n    format: PropTypes.oneOf(Object.keys(Formats)),\n    image: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.instanceOf(HTMLImageElement)\n    ]),\n    imageFormat: PropTypes.string,\n    imageId: PropTypes.string,\n    intl: intlShape,\n    isEyeDropping: PropTypes.bool,\n    name: PropTypes.string,\n    onRedo: PropTypes.func.isRequired,\n    onSwitchToBitmap: PropTypes.func.isRequired,\n    onSwitchToVector: PropTypes.func.isRequired,\n    onUndo: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    onUpdateName: PropTypes.func.isRequired,\n    onZoomIn: PropTypes.func.isRequired,\n    onZoomOut: PropTypes.func.isRequired,\n    onZoomReset: PropTypes.func.isRequired,\n    rotationCenterX: PropTypes.number,\n    rotationCenterY: PropTypes.number,\n    rtl: PropTypes.bool,\n    setCanvas: PropTypes.func.isRequired,\n    setTextArea: PropTypes.func.isRequired,\n    textArea: PropTypes.instanceOf(Element),\n    zoomLevelId: PropTypes.string\n};\n\nexport default injectIntl(PaintEditorComponent);\n","import bindAll from 'lodash.bindall';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport omit from 'lodash.omit';\nimport {connect} from 'react-redux';\n\nimport CopyPasteHOC from './copy-paste-hoc.jsx';\n\nimport {selectAllBitmap} from '../helper/bitmap';\nimport {clearSelection, deleteSelection, getSelectedLeafItems,\n    selectAllItems, selectAllSegments, getSelectedRootItems} from '../helper/selection';\nimport {groupSelection, shouldShowGroup, ungroupSelection, shouldShowUngroup} from '../helper/group';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {changeMode} from '../reducers/modes';\n\nimport Formats, {isBitmap} from '../lib/format';\nimport Modes from '../lib/modes';\n\nconst KeyboardShortcutsHOC = function (WrappedComponent) {\n    class KeyboardShortcutsWrapper extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'handleKeyPress',\n                'changeToASelectMode',\n                'selectAll'\n            ]);\n        }\n        handleKeyPress (event) {\n            if (event.target instanceof HTMLInputElement) {\n                // Ignore keyboard shortcuts if a text input field is focused\n                return;\n            }\n            // Don't activate keyboard shortcuts during text editing\n            if (this.props.textEditing) return;\n\n            if (event.key === 'Escape') {\n                event.preventDefault();\n                clearSelection(this.props.clearSelectedItems);\n            } else if (event.key === 'Delete' || event.key === 'Backspace') {\n                event.preventDefault();\n                if (deleteSelection(this.props.mode, this.props.onUpdateImage)) {\n                    this.props.setSelectedItems(this.props.format);\n                }\n            } else if (event.metaKey || event.ctrlKey) {\n                if (event.shiftKey && event.key.toLowerCase() === 'z') {\n                    this.props.onRedo();\n                } else if (event.key === 'z') {\n                    this.props.onUndo();\n                } else if (event.shiftKey && event.key.toLowerCase() === 'g') {\n                    if (shouldShowUngroup()) {\n                        ungroupSelection(clearSelectedItems, setSelectedItems, this.props.onUpdateImage);\n                    }\n                    event.preventDefault();\n                } else if (event.key === 'g') {\n                    if (shouldShowGroup()) {\n                        groupSelection(clearSelectedItems, setSelectedItems, this.props.onUpdateImage);\n                    }\n                    event.preventDefault();\n                } else if (event.key === 'c') {\n                    this.props.onCopyToClipboard();\n                } else if (event.key === 'v') {\n                    this.changeToASelectMode();\n                    this.props.onPasteFromClipboard();\n                } else if (event.key === 'x') {\n                    const selectedItems = getSelectedRootItems();\n                    if (selectedItems.length > 0) {\n                        this.props.onCopyToClipboard();\n                        if (deleteSelection(this.props.mode, this.props.onUpdateImage)) {\n                            this.props.setSelectedItems(this.props.format);\n                        }\n                    }\n                    event.preventDefault();\n                } else if (event.key === 'a') {\n                    this.changeToASelectMode();\n                    event.preventDefault();\n                    this.selectAll();\n                }\n            }\n        }\n        changeToASelectMode () {\n            if (isBitmap(this.props.format)) {\n                if (this.props.mode !== Modes.BIT_SELECT) {\n                    this.props.changeMode(Modes.BIT_SELECT);\n                }\n            } else if (this.props.mode !== Modes.SELECT && this.props.mode !== Modes.RESHAPE) {\n                this.props.changeMode(Modes.SELECT);\n            }\n        }\n        selectAll () {\n            if (isBitmap(this.props.format)) {\n                selectAllBitmap(this.props.clearSelectedItems);\n                this.props.setSelectedItems(this.props.format);\n            } else if (this.props.mode === Modes.RESHAPE) {\n                if (selectAllSegments()) this.props.setSelectedItems(this.props.format);\n            } else if (selectAllItems()) {\n                this.props.setSelectedItems(this.props.format);\n            }\n        }\n        render () {\n            const componentProps = omit(this.props, [\n                'changeMode',\n                'clearSelectedItems',\n                'format',\n                'mode',\n                'onCopyToClipboard',\n                'onPasteFromClipboard',\n                'setSelectedItems',\n                'textEditing']);\n            return (\n                <WrappedComponent\n                    onKeyPress={this.handleKeyPress}\n                    {...componentProps}\n                />\n            );\n        }\n    }\n\n    KeyboardShortcutsWrapper.propTypes = {\n        changeMode: PropTypes.func.isRequired,\n        clearSelectedItems: PropTypes.func.isRequired,\n        format: PropTypes.oneOf(Object.keys(Formats)),\n        mode: PropTypes.oneOf(Object.keys(Modes)).isRequired,\n        onCopyToClipboard: PropTypes.func.isRequired,\n        onPasteFromClipboard: PropTypes.func.isRequired,\n        onRedo: PropTypes.func.isRequired,\n        onUndo: PropTypes.func.isRequired,\n        onUpdateImage: PropTypes.func.isRequired,\n        setSelectedItems: PropTypes.func.isRequired,\n        textEditing: PropTypes.bool.isRequired\n    };\n\n    const mapStateToProps = state => ({\n        mode: state.scratchPaint.mode,\n        format: state.scratchPaint.format,\n        textEditing: state.scratchPaint.textEditTarget !== null\n    });\n    const mapDispatchToProps = dispatch => ({\n        changeMode: mode => {\n            dispatch(changeMode(mode));\n        },\n        clearSelectedItems: () => {\n            dispatch(clearSelectedItems());\n        },\n        setSelectedItems: format => {\n            dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n        }\n    });\n\n    return CopyPasteHOC(connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(KeyboardShortcutsWrapper));\n};\n\nexport default KeyboardShortcutsHOC;\n","import paper from '@scratch/paper';\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\n\nconst SelectionHOC = function (WrappedComponent) {\n    class SelectionComponent extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'removeItemById'\n            ]);\n        }\n        componentDidUpdate (prevProps) {\n            // Hovered item has changed\n            if ((this.props.hoveredItemId && this.props.hoveredItemId !== prevProps.hoveredItemId) ||\n                    (!this.props.hoveredItemId && prevProps.hoveredItemId)) {\n                // Remove the old hover item if any\n                this.removeItemById(prevProps.hoveredItemId);\n            }\n        }\n        removeItemById (itemId) {\n            if (itemId) {\n                const match = paper.project.getItem({\n                    match: item => (item.id === itemId)\n                });\n                if (match) {\n                    match.remove();\n                }\n            }\n        }\n        render () {\n            const {\n                hoveredItemId, // eslint-disable-line no-unused-vars\n                ...props\n            } = this.props;\n            return (\n                <WrappedComponent {...props} />\n            );\n        }\n    }\n    SelectionComponent.propTypes = {\n        hoveredItemId: PropTypes.number\n    };\n\n    const mapStateToProps = state => ({\n        hoveredItemId: state.scratchPaint.hoveredItemId\n    });\n    return connect(\n        mapStateToProps\n    )(SelectionComponent);\n};\n\nexport default SelectionHOC;\n","import bindAll from 'lodash.bindall';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport omit from 'lodash.omit';\nimport {connect} from 'react-redux';\n\nimport {getSelectedLeafItems} from '../helper/selection';\nimport {setSelectedItems} from '../reducers/selected-items';\nimport {\n    performUndo, performRedo, shouldShowUndo, shouldShowRedo\n} from '../helper/undo';\nimport {undo, redo} from '../reducers/undo';\n\nimport Formats, {isBitmap} from '../lib/format';\n\nconst UndoHOC = function (WrappedComponent) {\n    class UndoWrapper extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'handleUndo',\n                'handleRedo',\n                'handleSetSelectedItems',\n                'shouldShowUndo',\n                'shouldShowRedo'\n            ]);\n        }\n        handleUndo () {\n            performUndo(this.props.undoState, this.props.onUndo, this.handleSetSelectedItems, this.props.onUpdateImage);\n        }\n        handleRedo () {\n            performRedo(this.props.undoState, this.props.onRedo, this.handleSetSelectedItems, this.props.onUpdateImage);\n        }\n        handleSetSelectedItems () {\n            this.props.setSelectedItems(this.props.format);\n        }\n        shouldShowUndo () {\n            return shouldShowUndo(this.props.undoState);\n        }\n        shouldShowRedo () {\n            return shouldShowRedo(this.props.undoState);\n        }\n        render () {\n            const componentProps = omit(this.props, [\n                'format',\n                'onUndo',\n                'onRedo',\n                'setSelectedItems',\n                'undoState']);\n            return (\n                <WrappedComponent\n                    shouldShowRedo={this.shouldShowRedo}\n                    shouldShowUndo={this.shouldShowUndo}\n                    onRedo={this.handleRedo}\n                    onUndo={this.handleUndo}\n                    {...componentProps}\n                />\n            );\n        }\n    }\n\n    UndoWrapper.propTypes = {\n        format: PropTypes.oneOf(Object.keys(Formats)),\n        onRedo: PropTypes.func.isRequired,\n        onUndo: PropTypes.func.isRequired,\n        onUpdateImage: PropTypes.func.isRequired,\n        setSelectedItems: PropTypes.func.isRequired,\n        undoState: PropTypes.shape({\n            stack: PropTypes.arrayOf(PropTypes.object).isRequired,\n            pointer: PropTypes.number.isRequired\n        })\n    };\n\n    const mapStateToProps = state => ({\n        format: state.scratchPaint.format,\n        undoState: state.scratchPaint.undo\n    });\n    const mapDispatchToProps = dispatch => ({\n        setSelectedItems: format => {\n            dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n        },\n        onUndo: format => {\n            dispatch(undo(format));\n        },\n        onRedo: format => {\n            dispatch(redo(format));\n        }\n    });\n\n    return connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(UndoWrapper);\n};\n\nexport default UndoHOC;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport log from '../log/log';\nimport bindAll from 'lodash.bindall';\nimport React from 'react';\nimport omit from 'lodash.omit';\nimport {connect} from 'react-redux';\n\nimport {undoSnapshot} from '../reducers/undo';\nimport {setSelectedItems} from '../reducers/selected-items';\nimport {updateViewBounds} from '../reducers/view-bounds';\n\nimport {getSelectedLeafItems} from '../helper/selection';\nimport {getRaster, hideGuideLayers, showGuideLayers} from '../helper/layer';\nimport {commitRectToBitmap, commitOvalToBitmap, commitSelectionToBitmap, getHitBounds} from '../helper/bitmap';\nimport {performSnapshot} from '../helper/undo';\nimport {scaleWithStrokes} from '../helper/math';\n\nimport {\n    ART_BOARD_WIDTH, ART_BOARD_HEIGHT, SVG_ART_BOARD_WIDTH, SVG_ART_BOARD_HEIGHT,\n    setWorkspaceBounds\n} from '../helper/view';\n\nimport Modes, {BitmapModes} from '../lib/modes';\nimport Formats, {isBitmap, isVector} from '../lib/format';\n\nconst UpdateImageHOC = function (WrappedComponent) {\n    class UpdateImageWrapper extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'handleUpdateImage',\n                'handleUpdateBitmap',\n                'handleUpdateVector'\n            ]);\n        }\n        /**\n         * @param {?boolean} skipSnapshot True if the call to update image should not trigger saving\n         * an undo state. For instance after calling undo.\n         * @param {?Formats} formatOverride Normally the mode is used to determine the format of the image,\n         * but the format used can be overridden here. In particular when converting between formats,\n         * the does not accurately represent the format.\n         */\n        handleUpdateImage (skipSnapshot, formatOverride) {\n            // If in the middle of switching formats, rely on the current mode instead of format.\n            const actualFormat = formatOverride ? formatOverride :\n                BitmapModes[this.props.mode] ? Formats.BITMAP : Formats.VECTOR;\n            if (isBitmap(actualFormat)) {\n                this.handleUpdateBitmap(skipSnapshot);\n            } else if (isVector(actualFormat)) {\n                this.handleUpdateVector(skipSnapshot);\n            }\n            // Any time an image update is made, recalculate the bounds of the artwork\n            setWorkspaceBounds();\n            this.props.updateViewBounds(paper.view.matrix);\n        }\n        handleUpdateBitmap (skipSnapshot) {\n            if (!getRaster().loaded) {\n                // In general, callers of updateImage should wait for getRaster().loaded = true before\n                // calling updateImage.\n                // However, this may happen if the user is rapidly undoing/redoing. In this case it's safe\n                // to skip the update.\n                log.warn('Bitmap layer should be loaded before calling updateImage.');\n                return;\n            }\n            // Anything that is selected is on the vector layer waiting to be committed to the bitmap layer.\n            // Plaster the selection onto the raster layer before exporting, if there is a selection.\n            const plasteredRaster = getRaster().getSubRaster(getRaster().bounds); // Clone the raster layer\n            plasteredRaster.remove(); // Don't insert\n            const selectedItems = getSelectedLeafItems();\n            if (selectedItems.length === 1) {\n                const item = selectedItems[0];\n                if (item instanceof paper.Raster) {\n                    if (!item.loaded ||\n                        (item.data &&\n                            item.data.expanded &&\n                            !item.data.expanded.loaded)) {\n                        // This may get logged when rapidly undoing/redoing or changing costumes,\n                        // in which case the warning is not relevant.\n                        log.warn('Bitmap layer should be loaded before calling updateImage.');\n                        return;\n                    }\n                    commitSelectionToBitmap(item, plasteredRaster);\n                } else if (item instanceof paper.Shape && item.type === 'rectangle') {\n                    commitRectToBitmap(item, plasteredRaster);\n                } else if (item instanceof paper.Shape && item.type === 'ellipse') {\n                    commitOvalToBitmap(item, plasteredRaster);\n                } else if (item instanceof paper.PointText) {\n                    const bounds = item.drawnBounds;\n                    const textRaster = item.rasterize(72, false /* insert */, bounds);\n                    plasteredRaster.drawImage(\n                        textRaster.canvas,\n                        new paper.Point(Math.floor(bounds.x), Math.floor(bounds.y))\n                    );\n                }\n            }\n            const rect = getHitBounds(plasteredRaster);\n\n            // Use 1x1 instead of 0x0 for getting imageData since paper.js automagically\n            // returns the full artboard in the case of getImageData(0x0).\n            // Bitmaps need a non-zero width/height in order to be saved as PNG.\n            if (rect.width === 0 || rect.height === 0) {\n                rect.width = rect.height = 1;\n            }\n\n            const imageData = plasteredRaster.getImageData(rect);\n\n            this.props.onUpdateImage(\n                false /* isVector */,\n                imageData,\n                (ART_BOARD_WIDTH / 2) - rect.x,\n                (ART_BOARD_HEIGHT / 2) - rect.y);\n\n            if (!skipSnapshot) {\n                performSnapshot(this.props.undoSnapshot, Formats.BITMAP);\n            }\n        }\n        handleUpdateVector (skipSnapshot) {\n            // Remove viewbox (this would make it export at MAX_WORKSPACE_BOUNDS)\n            let workspaceMask;\n            if (paper.project.activeLayer.clipped) {\n                for (const child of paper.project.activeLayer.children) {\n                    if (child.isClipMask()) {\n                        workspaceMask = child;\n                        break;\n                    }\n                }\n                paper.project.activeLayer.clipped = false;\n                workspaceMask.remove();\n            }\n            const guideLayers = hideGuideLayers(true /* includeRaster */);\n\n            // Export at 0.5x\n            scaleWithStrokes(paper.project.activeLayer, .5, new paper.Point());\n\n            const bounds = paper.project.activeLayer.drawnBounds;\n\n            // `bounds.x` and `bounds.y` are relative to the top left corner,\n            // but if there is no content in the active layer, they default to 0,\n            // making the \"Scratch space\" rotation center ((SVG_ART_BOARD_WIDTH / 2), (SVG_ART_BOARD_HEIGHT / 2)),\n            // aka the upper left corner. Special-case this to be (0, 0), which is the center of the art board.\n            const centerX = bounds.width === 0 ? 0 : (SVG_ART_BOARD_WIDTH / 2) - bounds.x;\n            const centerY = bounds.height === 0 ? 0 : (SVG_ART_BOARD_HEIGHT / 2) - bounds.y;\n\n            this.props.onUpdateImage(\n                true /* isVector */,\n                paper.project.exportSVG({\n                    asString: true,\n                    bounds: 'content',\n                    matrix: new paper.Matrix().translate(-bounds.x, -bounds.y)\n                }),\n                centerX,\n                centerY);\n            scaleWithStrokes(paper.project.activeLayer, 2, new paper.Point());\n            paper.project.activeLayer.applyMatrix = true;\n\n            showGuideLayers(guideLayers);\n\n            // Add back viewbox\n            if (workspaceMask) {\n                paper.project.activeLayer.addChild(workspaceMask);\n                workspaceMask.clipMask = true;\n            }\n\n            if (!skipSnapshot) {\n                performSnapshot(this.props.undoSnapshot, Formats.VECTOR);\n            }\n        }\n        render () {\n            const componentProps = omit(this.props, [\n                'format',\n                'onUpdateImage',\n                'undoSnapshot'\n            ]);\n            return (\n                <WrappedComponent\n                    onUpdateImage={this.handleUpdateImage}\n                    {...componentProps}\n                />\n            );\n        }\n    }\n\n    UpdateImageWrapper.propTypes = {\n        format: PropTypes.oneOf(Object.keys(Formats)),\n        mode: PropTypes.oneOf(Object.keys(Modes)).isRequired,\n        onUpdateImage: PropTypes.func.isRequired,\n        undoSnapshot: PropTypes.func.isRequired,\n        updateViewBounds: PropTypes.func.isRequired\n    };\n\n    const mapStateToProps = state => ({\n        format: state.scratchPaint.format,\n        mode: state.scratchPaint.mode,\n        undoState: state.scratchPaint.undo\n    });\n    const mapDispatchToProps = dispatch => ({\n        setSelectedItems: format => {\n            dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n        },\n        undoSnapshot: snapshot => {\n            dispatch(undoSnapshot(snapshot));\n        },\n        updateViewBounds: matrix => {\n            dispatch(updateViewBounds(matrix));\n        }\n    });\n\n    return connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(UpdateImageWrapper);\n};\n\nexport default UpdateImageHOC;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport log from '../log/log';\nimport React from 'react';\nimport {connect} from 'react-redux';\n\nimport PaintEditorComponent from '../components/paint-editor/paint-editor.jsx';\nimport KeyboardShortcutsHOC from '../hocs/keyboard-shortcuts-hoc.jsx';\nimport SelectionHOC from '../hocs/selection-hoc.jsx';\nimport UndoHOC from '../hocs/undo-hoc.jsx';\nimport UpdateImageHOC from '../hocs/update-image-hoc.jsx';\n\nimport {changeMode} from '../reducers/modes';\nimport {changeFormat} from '../reducers/format';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {deactivateEyeDropper} from '../reducers/eye-dropper';\nimport {setTextEditTarget} from '../reducers/text-edit-target';\nimport {updateViewBounds} from '../reducers/view-bounds';\nimport {setLayout} from '../reducers/layout';\n\nimport {getSelectedLeafItems} from '../helper/selection';\nimport {convertToBitmap, convertToVector} from '../helper/bitmap';\nimport {resetZoom, zoomOnSelection, OUTERMOST_ZOOM_LEVEL} from '../helper/view';\nimport EyeDropperTool from '../helper/tools/eye-dropper';\n\nimport Modes, {BitmapModes, VectorModes} from '../lib/modes';\nimport Formats, {isBitmap, isVector} from '../lib/format';\nimport bindAll from 'lodash.bindall';\n\n/**\n * The top-level paint editor component. See README for more details on usage.\n *\n * <PaintEditor\n *     image={optionalImage}\n *     imageId={optionalId}\n *     imageFormat='svg'\n *     rotationCenterX={optionalCenterPointX}\n *     rotationCenterY={optionalCenterPointY}\n *     rtl={true|false}\n *     onUpdateImage={handleUpdateImageFunction}\n *     zoomLevelId={optionalZoomLevelId}\n * />\n *\n * `image`: may either be nothing, an SVG string or a base64 data URI)\n * SVGs of up to size 480 x 360 will fit into the view window of the paint editor,\n * while bitmaps of size up to 960 x 720 will fit into the paint editor. One unit\n * of an SVG will appear twice as tall and wide as one unit of a bitmap. This quirky\n * import behavior comes from needing to support legacy projects in Scratch.\n *\n * `imageId`: If this parameter changes, then the paint editor will be cleared, the\n * undo stack reset, and the image re-imported.\n *\n * `imageFormat`: 'svg', 'png', or 'jpg'. Other formats are currently not supported.\n *\n * `rotationCenterX`: x coordinate relative to the top left corner of the sprite of\n * the point that should be centered.\n *\n * `rotationCenterY`: y coordinate relative to the top left corner of the sprite of\n * the point that should be centered.\n *\n * `rtl`: True if the paint editor should be laid out right to left (meant for right\n * to left languages)\n *\n * `onUpdateImage`: A handler called with the new image (either an SVG string or an\n * ImageData) each time the drawing is edited.\n *\n * `zoomLevelId`: All costumes with the same zoom level ID will share the same saved\n * zoom level. When a new zoom level ID is encountered, the paint editor will zoom to\n * fit the current costume comfortably. Leave undefined to perform no zoom to fit.\n */\nclass PaintEditor extends React.Component {\n    static get ZOOM_INCREMENT () {\n        return 0.5;\n    }\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'switchModeForFormat',\n            'onMouseDown',\n            'onMouseUp',\n            'setCanvas',\n            'setTextArea',\n            'startEyeDroppingLoop',\n            'stopEyeDroppingLoop',\n            'handleSetSelectedItems',\n            'handleZoomIn',\n            'handleZoomOut',\n            'handleZoomReset'\n        ]);\n        this.state = {\n            canvas: null,\n            colorInfo: null\n        };\n        this.props.setLayout(this.props.rtl ? 'rtl' : 'ltr');\n    }\n    componentDidMount () {\n        document.addEventListener('keydown', this.props.onKeyPress);\n\n        // document listeners used to detect if a mouse is down outside of the\n        // canvas, and should therefore stop the eye dropper\n        document.addEventListener('mousedown', this.onMouseDown);\n        document.addEventListener('touchstart', this.onMouseDown);\n        document.addEventListener('mouseup', this.onMouseUp);\n        document.addEventListener('touchend', this.onMouseUp);\n    }\n    componentWillReceiveProps (newProps) {\n        if (!isBitmap(this.props.format) && isBitmap(newProps.format)) {\n            this.switchModeForFormat(Formats.BITMAP);\n        } else if (!isVector(this.props.format) && isVector(newProps.format)) {\n            this.switchModeForFormat(Formats.VECTOR);\n        }\n        if (newProps.rtl !== this.props.rtl) {\n            this.props.setLayout(newProps.rtl ? 'rtl' : 'ltr');\n        }\n    }\n    componentDidUpdate (prevProps) {\n        if (this.props.isEyeDropping && !prevProps.isEyeDropping) {\n            this.startEyeDroppingLoop();\n        } else if (!this.props.isEyeDropping && prevProps.isEyeDropping) {\n            this.stopEyeDroppingLoop();\n        } else if (this.props.isEyeDropping && this.props.viewBounds !== prevProps.viewBounds) {\n            if (this.props.previousTool) this.props.previousTool.activate();\n            this.props.onDeactivateEyeDropper();\n            this.stopEyeDroppingLoop();\n        }\n\n        if (this.props.format === Formats.VECTOR && isBitmap(prevProps.format)) {\n            convertToVector(this.props.clearSelectedItems, this.props.onUpdateImage);\n        } else if (isVector(prevProps.format) && this.props.format === Formats.BITMAP) {\n            convertToBitmap(this.props.clearSelectedItems, this.props.onUpdateImage, this.props.fontInlineFn);\n        }\n    }\n    componentWillUnmount () {\n        document.removeEventListener('keydown', this.props.onKeyPress);\n        this.stopEyeDroppingLoop();\n        document.removeEventListener('mousedown', this.onMouseDown);\n        document.removeEventListener('touchstart', this.onMouseDown);\n        document.removeEventListener('mouseup', this.onMouseUp);\n        document.removeEventListener('touchend', this.onMouseUp);\n    }\n    switchModeForFormat (newFormat) {\n        if ((isVector(newFormat) && (this.props.mode in VectorModes)) ||\n            (isBitmap(newFormat) && (this.props.mode in BitmapModes))) {\n            // Format didn't change; no mode change needed\n            return;\n        }\n        if (isVector(newFormat)) {\n            switch (this.props.mode) {\n            case Modes.BIT_BRUSH:\n                this.props.changeMode(Modes.BRUSH);\n                break;\n            case Modes.BIT_LINE:\n                this.props.changeMode(Modes.LINE);\n                break;\n            case Modes.BIT_OVAL:\n                this.props.changeMode(Modes.OVAL);\n                break;\n            case Modes.BIT_RECT:\n                this.props.changeMode(Modes.RECT);\n                break;\n            case Modes.BIT_TEXT:\n                this.props.changeMode(Modes.TEXT);\n                break;\n            case Modes.BIT_FILL:\n                this.props.changeMode(Modes.FILL);\n                break;\n            case Modes.BIT_ERASER:\n                this.props.changeMode(Modes.ERASER);\n                break;\n            case Modes.BIT_SELECT:\n                this.props.changeMode(Modes.SELECT);\n                break;\n            default:\n                log.error(`Mode not handled: ${this.props.mode}`);\n                this.props.changeMode(Modes.BRUSH);\n            }\n        } else if (isBitmap(newFormat)) {\n            switch (this.props.mode) {\n            case Modes.BRUSH:\n                this.props.changeMode(Modes.BIT_BRUSH);\n                break;\n            case Modes.LINE:\n                this.props.changeMode(Modes.BIT_LINE);\n                break;\n            case Modes.OVAL:\n                this.props.changeMode(Modes.BIT_OVAL);\n                break;\n            case Modes.RECT:\n                this.props.changeMode(Modes.BIT_RECT);\n                break;\n            case Modes.TEXT:\n                this.props.changeMode(Modes.BIT_TEXT);\n                break;\n            case Modes.FILL:\n                this.props.changeMode(Modes.BIT_FILL);\n                break;\n            case Modes.ERASER:\n                this.props.changeMode(Modes.BIT_ERASER);\n                break;\n            case Modes.RESHAPE:\n                /* falls through */\n            case Modes.SELECT:\n                this.props.changeMode(Modes.BIT_SELECT);\n                break;\n            default:\n                log.error(`Mode not handled: ${this.props.mode}`);\n                this.props.changeMode(Modes.BIT_BRUSH);\n            }\n        }\n    }\n    handleZoomIn () {\n        // Make the \"next step\" after the outermost zoom level be the default\n        // zoom level (0.5)\n        let zoomIncrement = PaintEditor.ZOOM_INCREMENT;\n        if (paper.view.zoom === OUTERMOST_ZOOM_LEVEL) {\n            zoomIncrement = 0.5 - OUTERMOST_ZOOM_LEVEL;\n        }\n        zoomOnSelection(zoomIncrement);\n        this.props.updateViewBounds(paper.view.matrix);\n        this.handleSetSelectedItems();\n    }\n    handleZoomOut () {\n        zoomOnSelection(-PaintEditor.ZOOM_INCREMENT);\n        this.props.updateViewBounds(paper.view.matrix);\n        this.handleSetSelectedItems();\n    }\n    handleZoomReset () {\n        resetZoom();\n        this.props.updateViewBounds(paper.view.matrix);\n        this.handleSetSelectedItems();\n    }\n    handleSetSelectedItems () {\n        this.props.setSelectedItems(this.props.format);\n    }\n    setCanvas (canvas) {\n        this.setState({canvas: canvas});\n        this.canvas = canvas;\n    }\n    setTextArea (element) {\n        this.setState({textArea: element});\n    }\n    onMouseDown (event) {\n        if (event.target === paper.view.element &&\n                document.activeElement instanceof HTMLInputElement) {\n            document.activeElement.blur();\n        }\n\n        if (event.target !== paper.view.element && event.target !== this.state.textArea) {\n            // Exit text edit mode if you click anywhere outside of canvas\n            this.props.removeTextEditTarget();\n        }\n    }\n    onMouseUp () {\n        if (this.props.isEyeDropping) {\n            const colorString = this.eyeDropper.colorString;\n            const callback = this.props.changeColorToEyeDropper;\n\n            this.eyeDropper.remove();\n            if (!this.eyeDropper.hideLoupe) {\n                // If not hide loupe, that means the click is inside the canvas,\n                // so apply the new color\n                callback(colorString);\n            }\n            if (this.props.previousTool) this.props.previousTool.activate();\n            this.props.onDeactivateEyeDropper();\n            this.stopEyeDroppingLoop();\n        }\n    }\n    startEyeDroppingLoop () {\n        this.eyeDropper = new EyeDropperTool(\n            this.canvas,\n            paper.project.view.bounds.width,\n            paper.project.view.bounds.height,\n            paper.project.view.pixelRatio,\n            paper.view.zoom,\n            paper.project.view.bounds.x,\n            paper.project.view.bounds.y,\n            isBitmap(this.props.format)\n        );\n        this.eyeDropper.pickX = -1;\n        this.eyeDropper.pickY = -1;\n        this.eyeDropper.activate();\n\n        this.intervalId = setInterval(() => {\n            const colorInfo = this.eyeDropper.getColorInfo(\n                this.eyeDropper.pickX,\n                this.eyeDropper.pickY,\n                this.eyeDropper.hideLoupe\n            );\n            if (!colorInfo) return;\n            if (\n                this.state.colorInfo === null ||\n                this.state.colorInfo.x !== colorInfo.x ||\n                this.state.colorInfo.y !== colorInfo.y\n            ) {\n                this.setState({\n                    colorInfo: colorInfo\n                });\n            }\n        }, 30);\n    }\n    stopEyeDroppingLoop () {\n        clearInterval(this.intervalId);\n        this.setState({colorInfo: null});\n    }\n    render () {\n        return (\n            <PaintEditorComponent\n                canRedo={this.props.shouldShowRedo}\n                canUndo={this.props.shouldShowUndo}\n                canvas={this.state.canvas}\n                colorInfo={this.state.colorInfo}\n                format={this.props.format}\n                image={this.props.image}\n                imageFormat={this.props.imageFormat}\n                imageId={this.props.imageId}\n                isEyeDropping={this.props.isEyeDropping}\n                name={this.props.name}\n                rotationCenterX={this.props.rotationCenterX}\n                rotationCenterY={this.props.rotationCenterY}\n                rtl={this.props.rtl}\n                setCanvas={this.setCanvas}\n                setTextArea={this.setTextArea}\n                textArea={this.state.textArea}\n                zoomLevelId={this.props.zoomLevelId}\n                onRedo={this.props.onRedo}\n                onSwitchToBitmap={this.props.handleSwitchToBitmap}\n                onSwitchToVector={this.props.handleSwitchToVector}\n                onUndo={this.props.onUndo}\n                onUpdateImage={this.props.onUpdateImage}\n                onUpdateName={this.props.onUpdateName}\n                onZoomIn={this.handleZoomIn}\n                onZoomOut={this.handleZoomOut}\n                onZoomReset={this.handleZoomReset}\n            />\n        );\n    }\n}\n\nPaintEditor.propTypes = {\n    changeColorToEyeDropper: PropTypes.func,\n    changeMode: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    format: PropTypes.oneOf(Object.keys(Formats)), // Internal, up-to-date data format\n    fontInlineFn: PropTypes.func,\n    handleSwitchToBitmap: PropTypes.func.isRequired,\n    handleSwitchToVector: PropTypes.func.isRequired,\n    image: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.instanceOf(HTMLImageElement)\n    ]),\n    imageFormat: PropTypes.string, // The incoming image's data format, used during import\n    imageId: PropTypes.string,\n    isEyeDropping: PropTypes.bool,\n    mode: PropTypes.oneOf(Object.keys(Modes)).isRequired,\n    name: PropTypes.string,\n    onDeactivateEyeDropper: PropTypes.func.isRequired,\n    onKeyPress: PropTypes.func.isRequired,\n    onRedo: PropTypes.func.isRequired,\n    onUndo: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    onUpdateName: PropTypes.func.isRequired,\n    previousTool: PropTypes.shape({ // paper.Tool\n        activate: PropTypes.func.isRequired,\n        remove: PropTypes.func.isRequired\n    }),\n    removeTextEditTarget: PropTypes.func.isRequired,\n    rotationCenterX: PropTypes.number,\n    rotationCenterY: PropTypes.number,\n    rtl: PropTypes.bool,\n    setLayout: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired,\n    shouldShowRedo: PropTypes.func.isRequired,\n    shouldShowUndo: PropTypes.func.isRequired,\n    updateViewBounds: PropTypes.func.isRequired,\n    viewBounds: PropTypes.instanceOf(paper.Matrix).isRequired,\n    zoomLevelId: PropTypes.string\n};\n\nconst mapStateToProps = state => ({\n    changeColorToEyeDropper: state.scratchPaint.color.eyeDropper.callback,\n    format: state.scratchPaint.format,\n    isEyeDropping: state.scratchPaint.color.eyeDropper.active,\n    mode: state.scratchPaint.mode,\n    previousTool: state.scratchPaint.color.eyeDropper.previousTool,\n    viewBounds: state.scratchPaint.viewBounds\n});\nconst mapDispatchToProps = dispatch => ({\n    changeMode: mode => {\n        dispatch(changeMode(mode));\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    handleSwitchToBitmap: () => {\n        dispatch(changeFormat(Formats.BITMAP));\n    },\n    handleSwitchToVector: () => {\n        dispatch(changeFormat(Formats.VECTOR));\n    },\n    removeTextEditTarget: () => {\n        dispatch(setTextEditTarget());\n    },\n    setLayout: layout => {\n        dispatch(setLayout(layout));\n    },\n    setSelectedItems: format => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n    },\n    onDeactivateEyeDropper: () => {\n        // set redux values to default for eye dropper reducer\n        dispatch(deactivateEyeDropper());\n    },\n    updateViewBounds: matrix => {\n        dispatch(updateViewBounds(matrix));\n    }\n});\n\nexport default UpdateImageHOC(SelectionHOC(UndoHOC(KeyboardShortcutsHOC(connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(PaintEditor)))));\n","import {combineReducers} from 'redux';\nimport eyeDropperReducer from './eye-dropper';\nimport fillColorReducer from './fill-style';\nimport strokeColorReducer from './stroke-style';\nimport strokeWidthReducer from './stroke-width';\n\nexport default combineReducers({\n    eyeDropper: eyeDropperReducer,\n    fillColor: fillColorReducer,\n    strokeColor: strokeColorReducer,\n    strokeWidth: strokeWidthReducer\n});\n","import {combineReducers} from 'redux';\nimport fillModeGradientTypeReducer from './fill-mode-gradient-type';\nimport colorIndexReducer from './color-index';\n\nexport default combineReducers({\n    gradientType: fillModeGradientTypeReducer,\n    colorIndex: colorIndexReducer\n});\n","import {combineReducers} from 'redux';\nimport modeReducer from './modes';\nimport bitBrushSizeReducer from './bit-brush-size';\nimport bitEraserSizeReducer from './bit-eraser-size';\nimport brushModeReducer from './brush-mode';\nimport eraserModeReducer from './eraser-mode';\nimport colorReducer from './color';\nimport clipboardReducer from './clipboard';\nimport cursorReducer from './cursor';\nimport fillBitmapShapesReducer from './fill-bitmap-shapes';\nimport fillModeReducer from './fill-mode';\nimport fontReducer from './font';\nimport formatReducer from './format';\nimport hoverReducer from './hover';\nimport layoutReducer from './layout';\nimport modalsReducer from './modals';\nimport selectedItemReducer from './selected-items';\nimport textEditTargetReducer from './text-edit-target';\nimport viewBoundsReducer from './view-bounds';\nimport undoReducer from './undo';\nimport zoomLevelsReducer from './zoom-levels';\n\nexport default combineReducers({\n    mode: modeReducer,\n    bitBrushSize: bitBrushSizeReducer,\n    bitEraserSize: bitEraserSizeReducer,\n    brushMode: brushModeReducer,\n    color: colorReducer,\n    clipboard: clipboardReducer,\n    cursor: cursorReducer,\n    eraserMode: eraserModeReducer,\n    fillBitmapShapes: fillBitmapShapesReducer,\n    fillMode: fillModeReducer,\n    font: fontReducer,\n    format: formatReducer,\n    hoveredItemId: hoverReducer,\n    layout: layoutReducer,\n    modals: modalsReducer,\n    selectedItems: selectedItemReducer,\n    textEditTarget: textEditTargetReducer,\n    undo: undoReducer,\n    viewBounds: viewBoundsReducer,\n    zoomLevels: zoomLevelsReducer\n});\n","import PaintEditor from './containers/paint-editor.jsx';\nimport ScratchPaintReducer from './reducers/scratch-paint-reducer';\n\nexport {\n    PaintEditor as default,\n    ScratchPaintReducer\n};\n","/**\n * Currently supported locales for the Scratch Project\n * @type {Object} Key Value pairs of locale code: Language name written in the language\n */\n\nconst locales = {\n    'ab': {name: 'Аҧсшәа'},\n    'af': {name: 'Afrikaans'},\n    'ar': {name: 'العربية'},\n    'am': {name: 'አማርኛ'},\n    'an': {name: 'Aragonés'},\n    'ast': {name: 'Asturianu'},\n    'az': {name: 'Azeri'},\n    'id': {name: 'Bahasa Indonesia'},\n    'bn': {name: 'বাংলা'},\n    'be': {name: 'Беларуская'},\n    'bg': {name: 'Български'},\n    'ca': {name: 'Català'},\n    'cs': {name: 'Česky'},\n    'cy': {name: 'Cymraeg'},\n    'da': {name: 'Dansk'},\n    'de': {name: 'Deutsch'},\n    'et': {name: 'Eesti'},\n    'el': {name: 'Ελληνικά'},\n    'en': {name: 'English'},\n    'es': {name: 'Español (España)'},\n    'es-419': {name: 'Español Latinoamericano'},\n    'eo': {name: 'Esperanto'},\n    'eu': {name: 'Euskara'},\n    'fa': {name: 'فارسی'},\n    'fil': {name: 'Filipino'},\n    'fr': {name: 'Français'},\n    'fy': {name: 'Frysk'},\n    'ga': {name: 'Gaeilge'},\n    'gd': {name: 'Gàidhlig'},\n    'gl': {name: 'Galego'},\n    'ko': {name: '한국어'},\n    'ha': {name: 'Hausa'},\n    'hy': {name: 'Հայերեն'},\n    'he': {name: 'עִבְרִית'},\n    'hi': {name: 'हिंदी'},\n    'hr': {name: 'Hrvatski'},\n    'xh': {name: 'isiXhosa'},\n    'zu': {name: 'isiZulu'},\n    'is': {name: 'Íslenska'},\n    'it': {name: 'Italiano'},\n    'ka': {name: 'ქართული ენა'},\n    'kk': {name: 'қазақша'},\n    'qu': {name: 'Kichwa'},\n    'sw': {name: 'Kiswahili'},\n    'ht': {name: 'Kreyòl ayisyen'},\n    'ku': {name: 'Kurdî'},\n    'ckb': {name: 'کوردیی ناوەندی'},\n    'lv': {name: 'Latviešu'},\n    'lt': {name: 'Lietuvių'},\n    'hu': {name: 'Magyar'},\n    'mi': {name: 'Māori'},\n    'mn': {name: 'Монгол хэл'},\n    'nl': {name: 'Nederlands'},\n    'ja': {name: '日本語'},\n    'ja-Hira': {name: 'にほんご'},\n    'nb': {name: 'Norsk Bokmål'},\n    'nn': {name: 'Norsk Nynorsk'},\n    'oc': {name: 'Occitan'},\n    'or': {name: 'ଓଡ଼ିଆ'},\n    'uz': {name: 'Oʻzbekcha'},\n    'th': {name: 'ไทย'},\n    'km': {name: 'ភាសាខ្មែរ'},\n    'pl': {name: 'Polski'},\n    'pt': {name: 'Português'},\n    'pt-br': {name: 'Português Brasileiro'},\n    'rap': {name: 'Rapa Nui'},\n    'ro': {name: 'Română'},\n    'ru': {name: 'Русский'},\n    'nso': {name: 'Sepedi'},\n    'tn': {name: 'Setswana'},\n    'sk': {name: 'Slovenčina'},\n    'sl': {name: 'Slovenščina'},\n    'sr': {name: 'Српски'},\n    'fi': {name: 'Suomi'},\n    'sv': {name: 'Svenska'},\n    'vi': {name: 'Tiếng Việt'},\n    'tr': {name: 'Türkçe'},\n    'uk': {name: 'Українська'},\n    'zh-cn': {name: '简体中文'},\n    'zh-tw': {name: '繁體中文'}\n};\n\nconst customLocales = {\n    'ab': {\n        locale: 'ab',\n        parentLocale: 'ru'\n    },\n    // Aragonese is not in the locale data, using es for Spain\n    'an': {\n        locale: 'an',\n        parentLocale: 'es'\n    },\n    // haitian creole is not in locale-langData\n    'ht': {\n        locale: 'ht',\n        parentLocale: 'fr'\n    },\n    'oc': {\n        locale: 'oc',\n        parentLocale: 'fr'\n    },\n    'rap': {\n        locale: 'rap',\n        parentLocale: 'es'\n    },\n    // TODO: replace zh-cn, zh-tw with zh-Hans and zh-Hant then customLocales is unnecessary\n    'zh-cn': {\n        locale: 'zh-cn',\n        parentLocale: 'zh'\n    },\n    'zh-tw': {\n        locale: 'zh-tw',\n        parentLocale: 'zh'\n    }\n};\n\nconst localeMap = {\n    'aa-dj': 'aa_DJ',\n    'es-419': 'es_419',\n    // ja-Hira: no map - it's 'ja-Hira' on transifex\n    'pt-br': 'pt_BR',\n    'zh-cn': 'zh_CN',\n    'zh-tw': 'zh_TW'\n};\n\n// list of RTL locales supported, and a function to check whether a locale is RTL\nconst rtlLocales = [\n    'ar',\n    'ckb',\n    'fa',\n    'he'\n];\n\nconst isRtl = locale => {\n    return rtlLocales.indexOf(locale) !== -1;\n};\n\nexport {locales as default, customLocales, localeMap, isRtl};\n","// temporarily we have all the locale data in scratch-l10n\n\nimport en from './locale-data/en.js';\nimport af from './locale-data/af.js';\nimport am from './locale-data/am.js';\nimport ar from './locale-data/ar.js';\nimport ast from './locale-data/ast.js';\nimport az from './locale-data/az.js';\nimport be from './locale-data/be.js';\nimport bn from './locale-data/bn.js';\nimport bg from './locale-data/bg.js';\nimport ca from './locale-data/ca.js';\nimport ckb from './locale-data/ckb.js';\nimport cs from './locale-data/cs.js';\nimport cy from './locale-data/cy.js';\nimport da from './locale-data/da.js';\nimport de from './locale-data/de.js';\nimport el from './locale-data/el.js';\nimport eo from './locale-data/eo.js';\nimport es from './locale-data/es.js';\nimport et from './locale-data/et.js';\nimport eu from './locale-data/eu.js';\nimport fa from './locale-data/fa.js';\nimport fi from './locale-data/fi.js';\nimport fil from './locale-data/fil.js';\nimport fr from './locale-data/fr.js';\nimport fy from './locale-data/fy.js';\nimport ga from './locale-data/ga.js';\nimport gd from './locale-data/gd.js';\nimport gl from './locale-data/gl.js';\nimport ha from './locale-data/ha.js';\nimport he from './locale-data/he.js';\nimport hi from './locale-data/hi.js';\nimport hu from './locale-data/hu.js';\nimport hr from './locale-data/hr.js';\nimport hy from './locale-data/hy.js';\nimport id from './locale-data/id.js';\nimport is from './locale-data/is.js';\nimport it from './locale-data/it.js';\nimport ja from './locale-data/ja.js';\nimport ka from './locale-data/ka.js';\nimport kk from './locale-data/kk.js';\nimport ko from './locale-data/ko.js';\nimport km from './locale-data/km.js';\nimport ku from './locale-data/ku.js';\nimport lt from './locale-data/lt.js';\nimport lv from './locale-data/lv.js';\nimport mi from './locale-data/mi.js';\nimport mn from './locale-data/mn.js';\nimport nl from './locale-data/nl.js';\nimport nb from './locale-data/nb.js';\nimport nn from './locale-data/nn.js';\nimport nso from './locale-data/nso.js';\nimport or from './locale-data/or.js';\nimport pl from './locale-data/pl.js';\nimport pt from './locale-data/pt.js';\nimport qu from './locale-data/qu.js';\nimport ro from './locale-data/ro.js';\nimport ru from './locale-data/ru.js';\nimport sl from './locale-data/sl.js';\nimport sk from './locale-data/sk.js';\nimport sr from './locale-data/sr.js';\nimport sv from './locale-data/sv.js';\nimport sw from './locale-data/sw.js';\nimport th from './locale-data/th.js';\nimport tr from './locale-data/tr.js';\nimport tn from './locale-data/tn.js';\nimport uk from './locale-data/uk.js';\nimport uz from './locale-data/uz.js';\nimport vi from './locale-data/vi.js';\nimport xh from './locale-data/xh.js';\nimport zh from './locale-data/zh.js';\nimport zu from './locale-data/zu.js';\n\nimport {customLocales} from './supported-locales.mjs';\n\nlet localeData = [].concat(\n    en,\n    af,\n    am,\n    ar,\n    ast,\n    az,\n    be,\n    bg,\n    bn,\n    ca,\n    ckb,\n    cs,\n    cy,\n    da,\n    de,\n    el,\n    eo,\n    es,\n    et,\n    eu,\n    fa,\n    fi,\n    fil,\n    fr,\n    fy,\n    ga,\n    gd,\n    gl,\n    ha,\n    he,\n    hi,\n    hu,\n    hr,\n    hy,\n    id,\n    is,\n    it,\n    ja,\n    ka,\n    kk,\n    ko,\n    km,\n    ku,\n    lt,\n    lv,\n    mi,\n    mn,\n    nl,\n    nb,\n    nn,\n    nso,\n    or,\n    pl,\n    pt,\n    sl,\n    sk,\n    sr,\n    sv,\n    sw,\n    qu,\n    ro,\n    ru,\n    th,\n    tn,\n    tr,\n    uk,\n    uz,\n    vi,\n    xh,\n    zh,\n    zu\n);\n\nfor (const lang in customLocales) {\n    localeData.push(customLocales[lang]);\n}\n\nexport {\n    localeData as default // data expected for initializing ReactIntl.addLocaleData\n};\n","import localeData from './locale-data.mjs';\nimport locales, {localeMap, isRtl} from './supported-locales.mjs';\nexport {locales as default, localeData, localeMap, isRtl};\n","// GENERATED FILE:\nexport default {\n  \"ab\": {\n    \"paint.paintEditor.hue\": \"Аԥштәы\",\n    \"paint.paintEditor.saturation\": \"Аԥштәылгазаара\",\n    \"paint.paintEditor.brightness\": \"Ажжара\",\n    \"gui.comingSoon.message1\": \"Шәгәы шәырҭынч, ари ҳара аус адулара ҳаҿуп {emoji}\",\n    \"gui.comingSoon.message2\": \"Иаарласны...\",\n    \"gui.comingSoon.message3\": \"Ари, ҳара аус адулара ҳаҿуп {emoji}\",\n    \"paint.paintEditor.costume\": \"Акостиум\",\n    \"paint.paintEditor.group\": \"Иргәыԥтәуп\",\n    \"paint.paintEditor.ungroup\": \"Аргәыԥра ықәгатәуп\",\n    \"paint.paintEditor.undo\": \"Иаҟәыхтәуп\",\n    \"paint.paintEditor.redo\": \"Ирхынҳәтәуп\",\n    \"paint.paintEditor.forward\": \"Ԥхьаҟа\",\n    \"paint.paintEditor.backward\": \"Шьҭахьҟа\",\n    \"paint.paintEditor.front\": \"Аԥхьатәи аплан ахь\",\n    \"paint.paintEditor.back\": \"Шьҭахьҟа\",\n    \"paint.paintEditor.more\": \"Иҵегь\",\n    \"paint.modeTools.brushSize\": \"Ашәагаа\",\n    \"paint.modeTools.eraserSize\": \"Аныхга аҭбаара\",\n    \"paint.modeTools.copy\": \"Акопиа ахыхтәуп\",\n    \"paint.modeTools.paste\": \"Иҭаргылатәуп\",\n    \"paint.modeTools.delete\": \"Ианыхтәуп\",\n    \"paint.modeTools.curved\": \"Архәақәа рахь\",\n    \"paint.modeTools.pointed\": \"Ирҵарқәоу рахь\",\n    \"paint.modeTools.thickness\": \"Ашәпара\",\n    \"paint.modeTools.flipHorizontal\": \"Горизонталла ианырԥшртәуп\",\n    \"paint.modeTools.flipVertical\": \"Вертикалла ианырԥштәуп\",\n    \"paint.modeTools.filled\": \"Иҭарҭәоу\",\n    \"paint.modeTools.outlined\": \"Иҿыкәыршоу\",\n    \"paint.paintEditor.bitmap\": \"Аконвертациа арастртә графика ахь\",\n    \"paint.paintEditor.vector\": \"Аконвертациа авектортә графика ахь \",\n    \"paint.paintEditor.fill\": \"Аҭарҭәара\",\n    \"paint.paintEditor.stroke\": \"Аконтур\",\n    \"paint.brushMode.brush\": \"Ашәыга\",\n    \"paint.eraserMode.eraser\": \"Аныхга\",\n    \"paint.fillMode.fill\": \"Аҭарҭәара\",\n    \"paint.lineMode.line\": \"Аҵәаӷәа\",\n    \"paint.ovalMode.oval\": \"Агьежь\",\n    \"paint.rectMode.rect\": \"Акәакьҭаиаша\",\n    \"paint.reshapeMode.reshape\": \"Аформа аԥсахра\",\n    \"paint.roundedRectMode.roundedRect\": \"Ихаргьежьу акәакьҭаиаша\",\n    \"paint.selectMode.select\": \"Иалхтәуп\",\n    \"paint.textMode.text\": \"Атекст\",\n    \"paint.colorPicker.swap\": \"Иалаԥсахтәуп\"\n  },\n  \"af\": {\n    \"paint.paintEditor.hue\": \"Kleur\",\n    \"paint.paintEditor.saturation\": \"Versadiging\",\n    \"paint.paintEditor.brightness\": \"Helderheid\",\n    \"gui.comingSoon.message1\": \"Moet nie bekommer nie, ons is op dit {emoji}\",\n    \"gui.comingSoon.message2\": \"Kom Binnekort...\",\n    \"gui.comingSoon.message3\": \"Ons werk daaraan{emoji}\",\n    \"paint.paintEditor.costume\": \"Kostuum\",\n    \"paint.paintEditor.group\": \"Groepeer\",\n    \"paint.paintEditor.ungroup\": \"Ontgroepeer\",\n    \"paint.paintEditor.undo\": \"Ontdoen\",\n    \"paint.paintEditor.redo\": \"Herdoen\",\n    \"paint.paintEditor.forward\": \"Vorentoe\",\n    \"paint.paintEditor.backward\": \"Agteruit\",\n    \"paint.paintEditor.front\": \"Voorkant\",\n    \"paint.paintEditor.back\": \"Terug\",\n    \"paint.paintEditor.more\": \"Meer\",\n    \"paint.modeTools.brushSize\": \"Grootte\",\n    \"paint.modeTools.eraserSize\": \"Uitveër grootte\",\n    \"paint.modeTools.copy\": \"Kopie\",\n    \"paint.modeTools.paste\": \"Plak\",\n    \"paint.modeTools.delete\": \"Verwyder\",\n    \"paint.modeTools.curved\": \"Kurwe\",\n    \"paint.modeTools.pointed\": \"Punt\",\n    \"paint.modeTools.thickness\": \"Dikte\",\n    \"paint.modeTools.flipHorizontal\": \"Draai Horisontaal\",\n    \"paint.modeTools.flipVertical\": \"Draai Vertikaal\",\n    \"paint.modeTools.filled\": \"Gevul\",\n    \"paint.modeTools.outlined\": \"Buitelyn \",\n    \"paint.paintEditor.bitmap\": \"Omskakel na Bitmap\",\n    \"paint.paintEditor.vector\": \"Omskakel in Vektor\",\n    \"paint.paintEditor.fill\": \"Vul\",\n    \"paint.paintEditor.stroke\": \"Buitelyn\",\n    \"paint.brushMode.brush\": \"Kwas\",\n    \"paint.eraserMode.eraser\": \"Uitveër\",\n    \"paint.fillMode.fill\": \"Vul\",\n    \"paint.lineMode.line\": \"Lyn\",\n    \"paint.ovalMode.oval\": \"Sirkel\",\n    \"paint.rectMode.rect\": \"Reghoek\",\n    \"paint.reshapeMode.reshape\": \"Hervorm\",\n    \"paint.roundedRectMode.roundedRect\": \"Geronde Reghoek\",\n    \"paint.selectMode.select\": \"Kies\",\n    \"paint.textMode.text\": \"Teks\",\n    \"paint.colorPicker.swap\": \"Ruil om\"\n  },\n  \"ar\": {\n    \"paint.paintEditor.hue\": \"اللون\",\n    \"paint.paintEditor.saturation\": \"تشبع اللون\",\n    \"paint.paintEditor.brightness\": \"السطوع\",\n    \"gui.comingSoon.message1\": \"لا تقلق، فنحن نعمل على الأمر {emoji}\",\n    \"gui.comingSoon.message2\": \"قريبًا...\",\n    \"gui.comingSoon.message3\": \"نحن نعمل على الأمر {emoji}\",\n    \"paint.paintEditor.costume\": \"المظهر\",\n    \"paint.paintEditor.group\": \"تجميع\",\n    \"paint.paintEditor.ungroup\": \"فك تجميع\",\n    \"paint.paintEditor.undo\": \"تراجع\",\n    \"paint.paintEditor.redo\": \"إعادة\",\n    \"paint.paintEditor.forward\": \"طبقة إلى الأمام\",\n    \"paint.paintEditor.backward\": \"طبقة إلى الخلف\",\n    \"paint.paintEditor.front\": \"وضع في الطبقة الأولى\",\n    \"paint.paintEditor.back\": \"وضع في الطبقة الأخيرة\",\n    \"paint.paintEditor.more\": \"المزيد\",\n    \"paint.modeTools.brushSize\": \"الحجم\",\n    \"paint.modeTools.eraserSize\": \"حجم الممحاة\",\n    \"paint.modeTools.copy\": \"نسخ\",\n    \"paint.modeTools.paste\": \"لصق\",\n    \"paint.modeTools.delete\": \"حذف\",\n    \"paint.modeTools.curved\": \"مقوَّس\",\n    \"paint.modeTools.pointed\": \"مدبب\",\n    \"paint.modeTools.thickness\": \"الثخانة\",\n    \"paint.modeTools.flipHorizontal\": \"اعكس أفقيًا\",\n    \"paint.modeTools.flipVertical\": \"اعكس شاقوليًا\",\n    \"paint.modeTools.filled\": \"مملوء\",\n    \"paint.modeTools.outlined\": \"مؤطَّر\",\n    \"paint.paintEditor.bitmap\": \"تحويل إلى رسم نقطي\",\n    \"paint.paintEditor.vector\": \"تحويل إلى رسم متجه\",\n    \"paint.paintEditor.fill\": \"ملء\",\n    \"paint.paintEditor.stroke\": \"الإطار\",\n    \"paint.brushMode.brush\": \"فرشاة\",\n    \"paint.eraserMode.eraser\": \"ممحاة\",\n    \"paint.fillMode.fill\": \"الملء\",\n    \"paint.lineMode.line\": \"خط \",\n    \"paint.ovalMode.oval\": \"دائرة\",\n    \"paint.rectMode.rect\": \"مستطيل\",\n    \"paint.reshapeMode.reshape\": \"إعادة تشكيل\",\n    \"paint.roundedRectMode.roundedRect\": \"مستطيل مستدير الزوايا\",\n    \"paint.selectMode.select\": \"تحديد\",\n    \"paint.textMode.text\": \"نص\",\n    \"paint.colorPicker.swap\": \"تبديل\"\n  },\n  \"am\": {\n    \"paint.paintEditor.hue\": \"ቀለም\",\n    \"paint.paintEditor.saturation\": \"ርኬት\",\n    \"paint.paintEditor.brightness\": \"ብሩህነት\",\n    \"gui.comingSoon.message1\": \"አትጨነቁ፣ የሰራንበት ነው {emoji}\",\n    \"gui.comingSoon.message2\": \"በቅርቡ ይደርሳል...\",\n    \"gui.comingSoon.message3\": \"የሰራንበት ነው {emoji}\",\n    \"paint.paintEditor.costume\": \"ልብስ\",\n    \"paint.paintEditor.group\": \"ቡድን\",\n    \"paint.paintEditor.ungroup\": \"በቡድን የተመደበውን በተን\",\n    \"paint.paintEditor.undo\": \"መልስ\",\n    \"paint.paintEditor.redo\": \"ድጋሜ አድርግ\",\n    \"paint.paintEditor.forward\": \"ወደፊት\",\n    \"paint.paintEditor.backward\": \"ወደኋላ\",\n    \"paint.paintEditor.front\": \"ፊት\",\n    \"paint.paintEditor.back\": \"ኋላ\",\n    \"paint.paintEditor.more\": \"ተጨማሪ\",\n    \"paint.modeTools.brushSize\": \"ልክ\",\n    \"paint.modeTools.eraserSize\": \"የላጲስ ልክ\",\n    \"paint.modeTools.copy\": \"ቅዳ\",\n    \"paint.modeTools.paste\": \"ለጥፍ\",\n    \"paint.modeTools.delete\": \"አጥፋ\",\n    \"paint.modeTools.curved\": \"የታጠፈ\",\n    \"paint.modeTools.pointed\": \"ሾለ\",\n    \"paint.modeTools.thickness\": \"ውፍረት\",\n    \"paint.modeTools.flipHorizontal\": \"በግድምታ አሽከርክር\",\n    \"paint.modeTools.flipVertical\": \"በሽቅብዮሽ አሽከርክር\",\n    \"paint.modeTools.filled\": \"የተሟላ\",\n    \"paint.modeTools.outlined\": \"የተቀረፀ\",\n    \"paint.paintEditor.bitmap\": \"ወደ ንድፈ ቅንጣት ለውጥ\",\n    \"paint.paintEditor.vector\": \"ወደ ቬክተር ለውጥ\",\n    \"paint.paintEditor.fill\": \"ምላት\",\n    \"paint.paintEditor.stroke\": \"ቅረፅ\",\n    \"paint.brushMode.brush\": \"ብሩሽ\",\n    \"paint.eraserMode.eraser\": \"ላጲስ\",\n    \"paint.fillMode.fill\": \"ምላት\",\n    \"paint.lineMode.line\": \"መስመር\",\n    \"paint.ovalMode.oval\": \"ክብ\",\n    \"paint.rectMode.rect\": \"አራት ማዕዘን\",\n    \"paint.reshapeMode.reshape\": \"እንደገና ቅረጽ\",\n    \"paint.roundedRectMode.roundedRect\": \"የተድበለበለ አራት ማዕዘን\",\n    \"paint.selectMode.select\": \"ምረጥ\",\n    \"paint.textMode.text\": \"ጽሀፍ\",\n    \"paint.colorPicker.swap\": \"ለዋውጥ\"\n  },\n  \"an\": {\n    \"paint.paintEditor.hue\": \"Color\",\n    \"paint.paintEditor.saturation\": \"Saturación\",\n    \"paint.paintEditor.brightness\": \"Brilo\",\n    \"gui.comingSoon.message1\": \"No te'n fagas, somos en ixo {emoji}\",\n    \"gui.comingSoon.message2\": \"Bien luego...\",\n    \"gui.comingSoon.message3\": \"Somos treballando en ixo {emoji}\",\n    \"paint.paintEditor.costume\": \"Vestiu\",\n    \"paint.paintEditor.group\": \"Grupo\",\n    \"paint.paintEditor.ungroup\": \"Desagrupar\",\n    \"paint.paintEditor.undo\": \"Desfer\",\n    \"paint.paintEditor.redo\": \"Refer\",\n    \"paint.paintEditor.forward\": \"Enta debant\",\n    \"paint.paintEditor.backward\": \"Enta zaga\",\n    \"paint.paintEditor.front\": \"Debant\",\n    \"paint.paintEditor.back\": \"Dezaga\",\n    \"paint.paintEditor.more\": \"Mas\",\n    \"paint.modeTools.brushSize\": \"Grandaria\",\n    \"paint.modeTools.eraserSize\": \"Grandaria d'o borrador\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Apegar\",\n    \"paint.modeTools.delete\": \"Borrar\",\n    \"paint.modeTools.curved\": \"Curva\",\n    \"paint.modeTools.pointed\": \"Puncha\",\n    \"paint.modeTools.thickness\": \"Gordaria\",\n    \"paint.modeTools.flipHorizontal\": \"Chirar en horizontal\",\n    \"paint.modeTools.flipVertical\": \"Chirar en vertical\",\n    \"paint.modeTools.filled\": \"Repleno\",\n    \"paint.modeTools.outlined\": \"Deliniau\",\n    \"paint.paintEditor.bitmap\": \"Tornar en mapa de bits\",\n    \"paint.paintEditor.vector\": \"Tornar en vectorial\",\n    \"paint.paintEditor.fill\": \"Replenar\",\n    \"paint.paintEditor.stroke\": \"Linia\",\n    \"paint.brushMode.brush\": \"Pincel\",\n    \"paint.eraserMode.eraser\": \"Borrador\",\n    \"paint.fillMode.fill\": \"Replenar\",\n    \"paint.lineMode.line\": \"Linia\",\n    \"paint.ovalMode.oval\": \"Cerclo\",\n    \"paint.rectMode.rect\": \"Rectanglo\",\n    \"paint.reshapeMode.reshape\": \"Cambiar forma\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectanglo redondiau\",\n    \"paint.selectMode.select\": \"Seleccionar\",\n    \"paint.textMode.text\": \"Texto\",\n    \"paint.colorPicker.swap\": \"Cambiar\"\n  },\n  \"ast\": {\n    \"paint.paintEditor.hue\": \"Color\",\n    \"paint.paintEditor.saturation\": \"Saturación\",\n    \"paint.paintEditor.brightness\": \"Brillu\",\n    \"gui.comingSoon.message1\": \"Nun t'esmolezas, tamos nello {emoji}\",\n    \"gui.comingSoon.message2\": \"Aportando en Breve...\",\n    \"gui.comingSoon.message3\": \"Tamos trabayando nello {emoji}\",\n    \"paint.paintEditor.costume\": \"Disfraz\",\n    \"paint.paintEditor.group\": \"Grupu\",\n    \"paint.paintEditor.ungroup\": \"Desagrupar\",\n    \"paint.paintEditor.undo\": \"Desfacer\",\n    \"paint.paintEditor.redo\": \"Refacer\",\n    \"paint.paintEditor.forward\": \"P'alantre\",\n    \"paint.paintEditor.backward\": \"P'atrás\",\n    \"paint.paintEditor.front\": \"Frente\",\n    \"paint.paintEditor.back\": \"Atrás\",\n    \"paint.paintEditor.more\": \"Más\",\n    \"paint.modeTools.brushSize\": \"Tamañu\",\n    \"paint.modeTools.eraserSize\": \"Tamañu del borrador\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Apegar\",\n    \"paint.modeTools.delete\": \"Esborrar\",\n    \"paint.modeTools.curved\": \"En curva\",\n    \"paint.modeTools.pointed\": \"Afiláu\",\n    \"paint.modeTools.thickness\": \"Espesor\",\n    \"paint.modeTools.flipHorizontal\": \"Xirar horizontalmente\",\n    \"paint.modeTools.flipVertical\": \"Xirar verticalmente\",\n    \"paint.modeTools.filled\": \"Rellenu\",\n    \"paint.modeTools.outlined\": \"Contorniáu\",\n    \"paint.paintEditor.bitmap\": \"Convertir a Bitmap\",\n    \"paint.paintEditor.vector\": \"Convertir a vector\",\n    \"paint.paintEditor.fill\": \"Rellenar\",\n    \"paint.paintEditor.stroke\": \"Contornu\",\n    \"paint.brushMode.brush\": \"Pincel\",\n    \"paint.eraserMode.eraser\": \"Borrador\",\n    \"paint.fillMode.fill\": \"Rellenar\",\n    \"paint.lineMode.line\": \"Llinia\",\n    \"paint.ovalMode.oval\": \"Círculu\",\n    \"paint.rectMode.rect\": \"Rectángulu\",\n    \"paint.reshapeMode.reshape\": \"Remodelar\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectángulu arrondiáu\",\n    \"paint.selectMode.select\": \"Escoyer\",\n    \"paint.textMode.text\": \"Testu\",\n    \"paint.colorPicker.swap\": \"Intercambiar\"\n  },\n  \"az\": {\n    \"paint.paintEditor.hue\": \"Rəng\",\n    \"paint.paintEditor.saturation\": \"Dolğunluq\",\n    \"paint.paintEditor.brightness\": \"Parlaqlıq\",\n    \"gui.comingSoon.message1\": \"Narahat olmayın, biz bunun üzərində çalışırıq {emoji}\",\n    \"gui.comingSoon.message2\": \"Tezliklə ...\",\n    \"gui.comingSoon.message3\": \"Biz bunun üzərində çalışırıq {emoji}\",\n    \"paint.paintEditor.costume\": \"Libas\",\n    \"paint.paintEditor.group\": \"Qrup\",\n    \"paint.paintEditor.ungroup\": \"Qrupu ləğv et\",\n    \"paint.paintEditor.undo\": \"Ləğv et\",\n    \"paint.paintEditor.redo\": \"Redo\",\n    \"paint.paintEditor.forward\": \"İrəli\",\n    \"paint.paintEditor.backward\": \"Geri\",\n    \"paint.paintEditor.front\": \"Ön\",\n    \"paint.paintEditor.back\": \"Geri\",\n    \"paint.paintEditor.more\": \"Daha çox\",\n    \"paint.modeTools.brushSize\": \"Ölçü\",\n    \"paint.modeTools.eraserSize\": \"Pozanın ölçüsü\",\n    \"paint.modeTools.copy\": \"Kopyala\",\n    \"paint.modeTools.paste\": \"Yerləşdir\",\n    \"paint.modeTools.delete\": \"Sil\",\n    \"paint.modeTools.curved\": \"Əyri\",\n    \"paint.modeTools.pointed\": \"İşarələnmiş\",\n    \"paint.modeTools.thickness\": \"Qalınlıq\",\n    \"paint.modeTools.flipHorizontal\": \"Üfiqi çevir\",\n    \"paint.modeTools.flipVertical\": \"Şaquli çevir\",\n    \"paint.modeTools.filled\": \"Dolu\",\n    \"paint.modeTools.outlined\": \"Konturlanmış\",\n    \"paint.paintEditor.bitmap\": \"Rastr qrafikasına çevir\",\n    \"paint.paintEditor.vector\": \"Vektor qrafikasına çevir\",\n    \"paint.paintEditor.fill\": \"Rənglə doldur\",\n    \"paint.paintEditor.stroke\": \"Kontur\",\n    \"paint.brushMode.brush\": \"Brush\",\n    \"paint.eraserMode.eraser\": \"Eraser\",\n    \"paint.fillMode.fill\": \"Fill\",\n    \"paint.lineMode.line\": \"Line\",\n    \"paint.ovalMode.oval\": \"Circle\",\n    \"paint.rectMode.rect\": \"Rectangle\",\n    \"paint.reshapeMode.reshape\": \"Reshape\",\n    \"paint.roundedRectMode.roundedRect\": \"Rounded Rectangle\",\n    \"paint.selectMode.select\": \"Select\",\n    \"paint.textMode.text\": \"Text\",\n    \"paint.colorPicker.swap\": \"Dəyişdir\"\n  },\n  \"id\": {\n    \"paint.paintEditor.hue\": \"Warna\",\n    \"paint.paintEditor.saturation\": \"Saturasi\",\n    \"paint.paintEditor.brightness\": \"Keterangan\",\n    \"gui.comingSoon.message1\": \"Jangan khawatir, kami sedang mengerjakannya {emoji}\",\n    \"gui.comingSoon.message2\": \"Akan Segera Datang\",\n    \"gui.comingSoon.message3\": \"Kami sedang mengerjakannya {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostum\",\n    \"paint.paintEditor.group\": \"Kelompokkan\",\n    \"paint.paintEditor.ungroup\": \"Pisahkan\",\n    \"paint.paintEditor.undo\": \"Undo\",\n    \"paint.paintEditor.redo\": \"Ulangi\",\n    \"paint.paintEditor.forward\": \"Maju\",\n    \"paint.paintEditor.backward\": \"Mundur\",\n    \"paint.paintEditor.front\": \"Depan\",\n    \"paint.paintEditor.back\": \"Back\",\n    \"paint.paintEditor.more\": \"Lebih\",\n    \"paint.modeTools.brushSize\": \"Ukuran\",\n    \"paint.modeTools.eraserSize\": \"Ukuran penghapus\",\n    \"paint.modeTools.copy\": \"Salin\",\n    \"paint.modeTools.paste\": \"Tempel\",\n    \"paint.modeTools.delete\": \"Hapus\",\n    \"paint.modeTools.curved\": \"Bundar\",\n    \"paint.modeTools.pointed\": \"Tajam\",\n    \"paint.modeTools.thickness\": \"Ketebalan\",\n    \"paint.modeTools.flipHorizontal\": \"Balikkan Secara Horisontal\",\n    \"paint.modeTools.flipVertical\": \"Balikkan Secara Vertikal\",\n    \"paint.modeTools.filled\": \"Terisi\",\n    \"paint.modeTools.outlined\": \"Garis besar\",\n    \"paint.paintEditor.bitmap\": \"Sesuaikan ke Bitmap\",\n    \"paint.paintEditor.vector\": \"Sesuaikan ke Vektor\",\n    \"paint.paintEditor.fill\": \"Isi\",\n    \"paint.paintEditor.stroke\": \"Garis besar\",\n    \"paint.brushMode.brush\": \"Kuas\",\n    \"paint.eraserMode.eraser\": \"Penghapus\",\n    \"paint.fillMode.fill\": \"Isi\",\n    \"paint.lineMode.line\": \"Garis\",\n    \"paint.ovalMode.oval\": \"Lingkaran\",\n    \"paint.rectMode.rect\": \"Persegi panjang\",\n    \"paint.reshapeMode.reshape\": \"Bentuk ulang\",\n    \"paint.roundedRectMode.roundedRect\": \"Persegi Bulat\",\n    \"paint.selectMode.select\": \"Pilih\",\n    \"paint.textMode.text\": \"Teks\",\n    \"paint.colorPicker.swap\": \"Tukar\"\n  },\n  \"bn\": {\n    \"paint.paintEditor.hue\": \"রঙ\",\n    \"paint.paintEditor.saturation\": \"সম্পৃক্ত\",\n    \"paint.paintEditor.brightness\": \"উজ্জ্বলতা\",\n    \"gui.comingSoon.message1\": \"চিন্তা কর না, আমরা এটার উপর কাজ করছি {emoji}\",\n    \"gui.comingSoon.message2\": \"শীঘ্রই আসছে...\",\n    \"gui.comingSoon.message3\": \"আমরা এখনো এটা নিয়ে কাজ করছি {emoji} \",\n    \"paint.paintEditor.costume\": \"পোশাক\",\n    \"paint.paintEditor.group\": \"দল\",\n    \"paint.paintEditor.ungroup\": \"দলমুক্ত\",\n    \"paint.paintEditor.undo\": \"পূর্বাবস্থায় ফেরত\",\n    \"paint.paintEditor.redo\": \"পুনরায় কর\",\n    \"paint.paintEditor.forward\": \"সামনে\",\n    \"paint.paintEditor.backward\": \"পিছনে\",\n    \"paint.paintEditor.front\": \"সামনে\",\n    \"paint.paintEditor.back\": \"পিছনে\",\n    \"paint.paintEditor.more\": \"আরও\",\n    \"paint.modeTools.brushSize\": \"আকার\",\n    \"paint.modeTools.eraserSize\": \"রবারের আকার\",\n    \"paint.modeTools.copy\": \"কপি\",\n    \"paint.modeTools.paste\": \"পেস্ট\",\n    \"paint.modeTools.delete\": \"অপসারণ\",\n    \"paint.modeTools.curved\": \"বাঁকা\",\n    \"paint.modeTools.pointed\": \"তীক্ষ্ন\",\n    \"paint.modeTools.thickness\": \"পুরুত্ব\",\n    \"paint.modeTools.flipHorizontal\": \"হরিজেন্টালি উল্টাও \",\n    \"paint.modeTools.flipVertical\": \"ভার্টিক্যালি উল্টাও\",\n    \"paint.modeTools.filled\": \"ভরাট করা\",\n    \"paint.modeTools.outlined\": \"আউটলাইন\",\n    \"paint.paintEditor.bitmap\": \"বিটম্যাপে রূপান্তর কর\",\n    \"paint.paintEditor.vector\": \"ভেক্টরে রূপান্তর কর \",\n    \"paint.paintEditor.fill\": \"পূরণ\",\n    \"paint.paintEditor.stroke\": \"আউটলাইন\",\n    \"paint.brushMode.brush\": \"তুলি\",\n    \"paint.eraserMode.eraser\": \"রবার\",\n    \"paint.fillMode.fill\": \"ভরাট\",\n    \"paint.lineMode.line\": \"রেখা\",\n    \"paint.ovalMode.oval\": \"বৃত্তাকার\",\n    \"paint.rectMode.rect\": \"আয়তক্ষেত্র\",\n    \"paint.reshapeMode.reshape\": \"পুনর্গঠন\",\n    \"paint.roundedRectMode.roundedRect\": \"গোলাকার আয়তক্ষেত্র\",\n    \"paint.selectMode.select\": \"নির্বাচন কর\",\n    \"paint.textMode.text\": \"পাঠ\",\n    \"paint.colorPicker.swap\": \"বিনিময়\"\n  },\n  \"be\": {\n    \"paint.paintEditor.hue\": \"Колер\",\n    \"paint.paintEditor.saturation\": \"Насычанасць\",\n    \"paint.paintEditor.brightness\": \"Яркасць\",\n    \"gui.comingSoon.message1\": \"Не хвалюйцеся, мы працуем над гэтым {emoji}\",\n    \"gui.comingSoon.message2\": \"У бліжэйшы час...\",\n    \"gui.comingSoon.message3\": \"Мы працуем над гэтым {emoji}\",\n    \"paint.paintEditor.costume\": \"Касцюм\",\n    \"paint.paintEditor.group\": \"Згрупаваць\",\n    \"paint.paintEditor.ungroup\": \"Разгрупаваць\",\n    \"paint.paintEditor.undo\": \"Адмяніць\",\n    \"paint.paintEditor.redo\": \"Вярнуць\",\n    \"paint.paintEditor.forward\": \"Наперад\",\n    \"paint.paintEditor.backward\": \"Назад\",\n    \"paint.paintEditor.front\": \"На пярэдні план\",\n    \"paint.paintEditor.back\": \"Назад\",\n    \"paint.paintEditor.more\": \"Яшчэ\",\n    \"paint.modeTools.brushSize\": \"Памер\",\n    \"paint.modeTools.eraserSize\": \"Памер гумкі\",\n    \"paint.modeTools.copy\": \"Капіраваць\",\n    \"paint.modeTools.paste\": \"Уставіць\",\n    \"paint.modeTools.delete\": \"Выдаліць\",\n    \"paint.modeTools.curved\": \"Выгнутыя\",\n    \"paint.modeTools.pointed\": \"Завостраныя\",\n    \"paint.modeTools.thickness\": \"Таўшчыня\",\n    \"paint.modeTools.flipHorizontal\": \"Адлюстраваць па гарызанталі\",\n    \"paint.modeTools.flipVertical\": \"Адлюстраваць па вертыкалі\",\n    \"paint.modeTools.filled\": \"Заліты\",\n    \"paint.modeTools.outlined\": \"Абведзены\",\n    \"paint.paintEditor.bitmap\": \"Канвертаваць у растравую графіку\",\n    \"paint.paintEditor.vector\": \"Канвертаваць у вектарную графіку\",\n    \"paint.paintEditor.fill\": \"Заліўка\",\n    \"paint.paintEditor.stroke\": \"Контур\",\n    \"paint.brushMode.brush\": \"Пэндзлік\",\n    \"paint.eraserMode.eraser\": \"Гумка\",\n    \"paint.fillMode.fill\": \"Заліўка\",\n    \"paint.lineMode.line\": \"Рыса\",\n    \"paint.ovalMode.oval\": \"Кола\",\n    \"paint.rectMode.rect\": \"Прамавугольнік\",\n    \"paint.reshapeMode.reshape\": \"Змяніць форму\",\n    \"paint.roundedRectMode.roundedRect\": \"Скруглёны прамавугольнік\",\n    \"paint.selectMode.select\": \"Выбраць\",\n    \"paint.textMode.text\": \"Тэкст\",\n    \"paint.colorPicker.swap\": \"Замяніць\"\n  },\n  \"bg\": {\n    \"paint.paintEditor.hue\": \"Цвят\",\n    \"paint.paintEditor.saturation\": \"Наситеност\",\n    \"paint.paintEditor.brightness\": \"Яркост\",\n    \"gui.comingSoon.message1\": \"Не се притеснявайте, заели сме се с това{emoji}\",\n    \"gui.comingSoon.message2\": \"Очаквайте скоро…\",\n    \"gui.comingSoon.message3\": \"Работим по това{emoji}\",\n    \"paint.paintEditor.costume\": \"Костюм\",\n    \"paint.paintEditor.group\": \"Групиране\",\n    \"paint.paintEditor.ungroup\": \"Разгрупиране\",\n    \"paint.paintEditor.undo\": \"Отмяна\",\n    \"paint.paintEditor.redo\": \"Повтаряне\",\n    \"paint.paintEditor.forward\": \"Напред\",\n    \"paint.paintEditor.backward\": \"Назад\",\n    \"paint.paintEditor.front\": \"Отпред\",\n    \"paint.paintEditor.back\": \"Отзад\",\n    \"paint.paintEditor.more\": \"Още\",\n    \"paint.modeTools.brushSize\": \"Размер\",\n    \"paint.modeTools.eraserSize\": \"Размер на гумата\",\n    \"paint.modeTools.copy\": \"Копиране\",\n    \"paint.modeTools.paste\": \"Поставяне\",\n    \"paint.modeTools.delete\": \"Изтриване\",\n    \"paint.modeTools.curved\": \"Заоблен\",\n    \"paint.modeTools.pointed\": \"Заострен\",\n    \"paint.modeTools.thickness\": \"Дебелина\",\n    \"paint.modeTools.flipHorizontal\": \"Хоризонтално обръщане\",\n    \"paint.modeTools.flipVertical\": \"Вертикално обръщане\",\n    \"paint.modeTools.filled\": \"Запълнен\",\n    \"paint.modeTools.outlined\": \"Подчертан\",\n    \"paint.paintEditor.bitmap\": \"Преобразуване в растерен режим\",\n    \"paint.paintEditor.vector\": \"Преобразуване във векторен режим\",\n    \"paint.paintEditor.fill\": \"Запълване\",\n    \"paint.paintEditor.stroke\": \"Подчертаване\",\n    \"paint.brushMode.brush\": \"Четка\",\n    \"paint.eraserMode.eraser\": \"Гума\",\n    \"paint.fillMode.fill\": \"Запълване\",\n    \"paint.lineMode.line\": \"Линия\",\n    \"paint.ovalMode.oval\": \"Окръжност\",\n    \"paint.rectMode.rect\": \"Правоъгълник\",\n    \"paint.reshapeMode.reshape\": \"Оформяне\",\n    \"paint.roundedRectMode.roundedRect\": \"Заоблен правоъгълник\",\n    \"paint.selectMode.select\": \"Маркиране\",\n    \"paint.textMode.text\": \"Текст\",\n    \"paint.colorPicker.swap\": \"Замяна\"\n  },\n  \"ca\": {\n    \"paint.paintEditor.hue\": \"Color\",\n    \"paint.paintEditor.saturation\": \"Saturació\",\n    \"paint.paintEditor.brightness\": \"Lluminositat\",\n    \"gui.comingSoon.message1\": \"No et preocupis, hi estem treballant {emoji}\",\n    \"gui.comingSoon.message2\": \"Properament...\",\n    \"gui.comingSoon.message3\": \"Hi estem treballant {emoji}\",\n    \"paint.paintEditor.costume\": \"Vestit\",\n    \"paint.paintEditor.group\": \"Agrupa\",\n    \"paint.paintEditor.ungroup\": \"Desagrupa\",\n    \"paint.paintEditor.undo\": \"Desfés\",\n    \"paint.paintEditor.redo\": \"Torna-hi\",\n    \"paint.paintEditor.forward\": \"Endavant\",\n    \"paint.paintEditor.backward\": \"Enrere\",\n    \"paint.paintEditor.front\": \"Al davant\",\n    \"paint.paintEditor.back\": \"Al darrere\",\n    \"paint.paintEditor.more\": \"Més\",\n    \"paint.modeTools.brushSize\": \"Mida\",\n    \"paint.modeTools.eraserSize\": \"Ample de l'esborrador\",\n    \"paint.modeTools.copy\": \"Copia\",\n    \"paint.modeTools.paste\": \"Enganxa\",\n    \"paint.modeTools.delete\": \"Elimina\",\n    \"paint.modeTools.curved\": \"Corbat\",\n    \"paint.modeTools.pointed\": \"Afila conjunt de punts\",\n    \"paint.modeTools.thickness\": \"Gruix\",\n    \"paint.modeTools.flipHorizontal\": \"Gira horitzontalment\",\n    \"paint.modeTools.flipVertical\": \"Gira verticalment\",\n    \"paint.modeTools.filled\": \"Omplert\",\n    \"paint.modeTools.outlined\": \"Contorn\",\n    \"paint.paintEditor.bitmap\": \"Converteix a mapa de bits\",\n    \"paint.paintEditor.vector\": \"Converteix a vectorial\",\n    \"paint.paintEditor.fill\": \"Omple\",\n    \"paint.paintEditor.stroke\": \"Línia exterior\",\n    \"paint.brushMode.brush\": \"Pinzell\",\n    \"paint.eraserMode.eraser\": \"Goma d'esborrar\",\n    \"paint.fillMode.fill\": \"Omple\",\n    \"paint.lineMode.line\": \"Línia\",\n    \"paint.ovalMode.oval\": \"Cercle\",\n    \"paint.rectMode.rect\": \"Rectangle\",\n    \"paint.reshapeMode.reshape\": \"Redibuixa\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectangle amb cantonades arrodonides\",\n    \"paint.selectMode.select\": \"Selecciona\",\n    \"paint.textMode.text\": \"Text\",\n    \"paint.colorPicker.swap\": \"Intercanvia\"\n  },\n  \"cs\": {\n    \"paint.paintEditor.hue\": \"Barva\",\n    \"paint.paintEditor.saturation\": \"Sytost\",\n    \"paint.paintEditor.brightness\": \"Světlost\",\n    \"gui.comingSoon.message1\": \"Neboj, pracujeme na tom {emoji}\",\n    \"gui.comingSoon.message2\": \"Již brzy...\",\n    \"gui.comingSoon.message3\": \"Pracujeme na tom  {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostým\",\n    \"paint.paintEditor.group\": \"Seskupit\",\n    \"paint.paintEditor.ungroup\": \"Odskupit\",\n    \"paint.paintEditor.undo\": \"Vrátit\",\n    \"paint.paintEditor.redo\": \"Znovu provést\",\n    \"paint.paintEditor.forward\": \"Dopředu\",\n    \"paint.paintEditor.backward\": \"Dozadu\",\n    \"paint.paintEditor.front\": \"Dopředu\",\n    \"paint.paintEditor.back\": \"Zpět\",\n    \"paint.paintEditor.more\": \"Více\",\n    \"paint.modeTools.brushSize\": \"Velikost\",\n    \"paint.modeTools.eraserSize\": \"Velikost gumy\",\n    \"paint.modeTools.copy\": \"Zkopírovat\",\n    \"paint.modeTools.paste\": \"Vložit\",\n    \"paint.modeTools.delete\": \"Odstranit\",\n    \"paint.modeTools.curved\": \"Zakřivit\",\n    \"paint.modeTools.pointed\": \"Zašpičatět\",\n    \"paint.modeTools.thickness\": \"Tloušťka\",\n    \"paint.modeTools.flipHorizontal\": \"Přetočit horizontálně\",\n    \"paint.modeTools.flipVertical\": \"Přetočit vertikálně\",\n    \"paint.modeTools.filled\": \"Výplň\",\n    \"paint.modeTools.outlined\": \"Obrys\",\n    \"paint.paintEditor.bitmap\": \"Převést do bitmapy\",\n    \"paint.paintEditor.vector\": \"Převeď na vektor\",\n    \"paint.paintEditor.fill\": \"Vyplnit\",\n    \"paint.paintEditor.stroke\": \"Obrys\",\n    \"paint.brushMode.brush\": \"Štětec\",\n    \"paint.eraserMode.eraser\": \"Guma\",\n    \"paint.fillMode.fill\": \"Vyplnit\",\n    \"paint.lineMode.line\": \"Úsečka\",\n    \"paint.ovalMode.oval\": \"Kružnice\",\n    \"paint.rectMode.rect\": \"Obdélník\",\n    \"paint.reshapeMode.reshape\": \"Změna tvaru\",\n    \"paint.roundedRectMode.roundedRect\": \"Zaoblený obdélník\",\n    \"paint.selectMode.select\": \"Výběr\",\n    \"paint.textMode.text\": \"Text\",\n    \"paint.colorPicker.swap\": \"Záměna\"\n  },\n  \"cy\": {\n    \"paint.paintEditor.hue\": \"Lliw\",\n    \"paint.paintEditor.saturation\": \"Dirlawnder\",\n    \"paint.paintEditor.brightness\": \"Disgleirdeb\",\n    \"gui.comingSoon.message1\": \"Peidiwch poeni, rydym wrthi {emoji}\",\n    \"gui.comingSoon.message2\": \"Yn Dod Cyn Bo Hir...\",\n    \"gui.comingSoon.message3\": \"Rydym yn gweithio arno {emoji}\",\n    \"paint.paintEditor.costume\": \"Gwisg\",\n    \"paint.paintEditor.group\": \"Grŵp\",\n    \"paint.paintEditor.ungroup\": \"Dad-grwpio\",\n    \"paint.paintEditor.undo\": \"Dadwneud\",\n    \"paint.paintEditor.redo\": \"Ailwneud\",\n    \"paint.paintEditor.forward\": \"Ymlaen\",\n    \"paint.paintEditor.backward\": \"Nôl\",\n    \"paint.paintEditor.front\": \"Blaen\",\n    \"paint.paintEditor.back\": \"Nôl\",\n    \"paint.paintEditor.more\": \"Rhagor\",\n    \"paint.modeTools.brushSize\": \"Maint\",\n    \"paint.modeTools.eraserSize\": \"Maint rhwbiwr\",\n    \"paint.modeTools.copy\": \"Copïo\",\n    \"paint.modeTools.paste\": \"Gludo\",\n    \"paint.modeTools.delete\": \"Dileu\",\n    \"paint.modeTools.curved\": \"Crwm\",\n    \"paint.modeTools.pointed\": \"Gyda Blaen\",\n    \"paint.modeTools.thickness\": \"Trwch\",\n    \"paint.modeTools.flipHorizontal\": \"Fflipio'n Llorweddol\",\n    \"paint.modeTools.flipVertical\": \"Fflipio'n Fertigol\",\n    \"paint.modeTools.filled\": \"Llanwyd\",\n    \"paint.modeTools.outlined\": \"Amlinellwyd\",\n    \"paint.paintEditor.bitmap\": \"Trosi i Ddidfap\",\n    \"paint.paintEditor.vector\": \"Trosi i Fector\",\n    \"paint.paintEditor.fill\": \"Llanw\",\n    \"paint.paintEditor.stroke\": \"Amlinell\",\n    \"paint.brushMode.brush\": \"Brwsh\",\n    \"paint.eraserMode.eraser\": \"Rhwbiwr\",\n    \"paint.fillMode.fill\": \"Llanw\",\n    \"paint.lineMode.line\": \"Llinell\",\n    \"paint.ovalMode.oval\": \"Cylch\",\n    \"paint.rectMode.rect\": \"Petryal\",\n    \"paint.reshapeMode.reshape\": \"Ail siapio\",\n    \"paint.roundedRectMode.roundedRect\": \"Petryal Crwm\",\n    \"paint.selectMode.select\": \"Dewis\",\n    \"paint.textMode.text\": \"Testun\",\n    \"paint.colorPicker.swap\": \"Cyfnewid\"\n  },\n  \"da\": {\n    \"paint.paintEditor.hue\": \"Farve\",\n    \"paint.paintEditor.saturation\": \"Farvemætning\",\n    \"paint.paintEditor.brightness\": \"Lysstyrke\",\n    \"gui.comingSoon.message1\": \"Du skal ikke bekymre dig, vi arbejder på sagen {emoji}\",\n    \"gui.comingSoon.message2\": \"Kommer snart...\",\n    \"gui.comingSoon.message3\": \"Vi arbejder på sagen {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostume\",\n    \"paint.paintEditor.group\": \"Gruppe\",\n    \"paint.paintEditor.ungroup\": \"Opdel\",\n    \"paint.paintEditor.undo\": \"Fortryd\",\n    \"paint.paintEditor.redo\": \"Gør om\",\n    \"paint.paintEditor.forward\": \"Frem\",\n    \"paint.paintEditor.backward\": \"Tilbage\",\n    \"paint.paintEditor.front\": \"Forrest\",\n    \"paint.paintEditor.back\": \"Bagerst\",\n    \"paint.paintEditor.more\": \"Mere\",\n    \"paint.modeTools.brushSize\": \"Størrelse\",\n    \"paint.modeTools.eraserSize\": \"Viskelæderets størrelse\",\n    \"paint.modeTools.copy\": \"Kopier\",\n    \"paint.modeTools.paste\": \"Sæt ind\",\n    \"paint.modeTools.delete\": \"Slet\",\n    \"paint.modeTools.curved\": \"Buet\",\n    \"paint.modeTools.pointed\": \"Spids\",\n    \"paint.modeTools.thickness\": \"Tykkelse\",\n    \"paint.modeTools.flipHorizontal\": \"Vend venstre-højre\",\n    \"paint.modeTools.flipVertical\": \"Vend op og ned\",\n    \"paint.modeTools.filled\": \"Fyldt\",\n    \"paint.modeTools.outlined\": \"Kant streg\",\n    \"paint.paintEditor.bitmap\": \"Konverter til Bitmap\",\n    \"paint.paintEditor.vector\": \"Konverter til Vektor\",\n    \"paint.paintEditor.fill\": \"Fyld\",\n    \"paint.paintEditor.stroke\": \"Kant\",\n    \"paint.brushMode.brush\": \"Pensel\",\n    \"paint.eraserMode.eraser\": \"Viskelæder\",\n    \"paint.fillMode.fill\": \"Fyld\",\n    \"paint.lineMode.line\": \"Linje\",\n    \"paint.ovalMode.oval\": \"Cirkel\",\n    \"paint.rectMode.rect\": \"Rektangel\",\n    \"paint.reshapeMode.reshape\": \"Omform\",\n    \"paint.roundedRectMode.roundedRect\": \"Afrundet rektangel\",\n    \"paint.selectMode.select\": \"Vælg\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Byt\"\n  },\n  \"de\": {\n    \"paint.paintEditor.hue\": \"Farbe\",\n    \"paint.paintEditor.saturation\": \"Sättigung\",\n    \"paint.paintEditor.brightness\": \"Helligkeit\",\n    \"gui.comingSoon.message1\": \"Keine Sorge, wir kümmern uns darum {emoji}\",\n    \"gui.comingSoon.message2\": \"Bald verfügbar...\",\n    \"gui.comingSoon.message3\": \"Wir arbeiten daran {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostüm\",\n    \"paint.paintEditor.group\": \"Gruppieren\",\n    \"paint.paintEditor.ungroup\": \"Gruppierung aufheben\",\n    \"paint.paintEditor.undo\": \"Rückgängig\",\n    \"paint.paintEditor.redo\": \"Wiederherstellen\",\n    \"paint.paintEditor.forward\": \"nach vorne\",\n    \"paint.paintEditor.backward\": \"nach hinten\",\n    \"paint.paintEditor.front\": \"Ganz nach vorne\",\n    \"paint.paintEditor.back\": \"Ganz nach hinten\",\n    \"paint.paintEditor.more\": \"Mehr\",\n    \"paint.modeTools.brushSize\": \"Größe\",\n    \"paint.modeTools.eraserSize\": \"Radiererbreite\",\n    \"paint.modeTools.copy\": \"Kopieren\",\n    \"paint.modeTools.paste\": \"Einfügen\",\n    \"paint.modeTools.delete\": \"Löschen\",\n    \"paint.modeTools.curved\": \"gekrümmt\",\n    \"paint.modeTools.pointed\": \"gerade\",\n    \"paint.modeTools.thickness\": \"Linienstärke\",\n    \"paint.modeTools.flipHorizontal\": \"Horizontal spiegeln\",\n    \"paint.modeTools.flipVertical\": \"Vertikal spiegeln\",\n    \"paint.modeTools.filled\": \"Ausgefüllt\",\n    \"paint.modeTools.outlined\": \"Umrandet\",\n    \"paint.paintEditor.bitmap\": \"In Rastergrafik umwandeln\",\n    \"paint.paintEditor.vector\": \"In Vektorgrafik umwandeln\",\n    \"paint.paintEditor.fill\": \"Füllfarbe\",\n    \"paint.paintEditor.stroke\": \"Randfarbe\",\n    \"paint.brushMode.brush\": \"Pinsel\",\n    \"paint.eraserMode.eraser\": \"Radierer\",\n    \"paint.fillMode.fill\": \"Fülleimer\",\n    \"paint.lineMode.line\": \"Linie\",\n    \"paint.ovalMode.oval\": \"Kreis\",\n    \"paint.rectMode.rect\": \"Rechteck\",\n    \"paint.reshapeMode.reshape\": \"Verformen\",\n    \"paint.roundedRectMode.roundedRect\": \"Abgerundetes Rechteck \",\n    \"paint.selectMode.select\": \"Auswählen\",\n    \"paint.textMode.text\": \"Text\",\n    \"paint.colorPicker.swap\": \"Tauschen\"\n  },\n  \"et\": {\n    \"paint.paintEditor.hue\": \"Värv\",\n    \"paint.paintEditor.saturation\": \"Küllastus\",\n    \"paint.paintEditor.brightness\": \"Heledus\",\n    \"gui.comingSoon.message1\": \"Ära muretse, tegeleme sellega {emoji}\",\n    \"gui.comingSoon.message2\": \"Ilmub varsti...\",\n    \"gui.comingSoon.message3\": \"Tegeleme sellega {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostüüm\",\n    \"paint.paintEditor.group\": \"Rühmita\",\n    \"paint.paintEditor.ungroup\": \"Tühista rühmitus\",\n    \"paint.paintEditor.undo\": \"Võta tagasi\",\n    \"paint.paintEditor.redo\": \"Tee uuesti\",\n    \"paint.paintEditor.forward\": \"Ettepoole\",\n    \"paint.paintEditor.backward\": \"Tahapoole\",\n    \"paint.paintEditor.front\": \"Esiplaanile\",\n    \"paint.paintEditor.back\": \"Tahaplaanile\",\n    \"paint.paintEditor.more\": \"Rohkem\",\n    \"paint.modeTools.brushSize\": \"Suurus\",\n    \"paint.modeTools.eraserSize\": \"Kustutaja suurus\",\n    \"paint.modeTools.copy\": \"Kopeeri\",\n    \"paint.modeTools.paste\": \"Kleebi\",\n    \"paint.modeTools.delete\": \"Kustuta\",\n    \"paint.modeTools.curved\": \"Kõver\",\n    \"paint.modeTools.pointed\": \"Teravatipuline\",\n    \"paint.modeTools.thickness\": \"Paksus\",\n    \"paint.modeTools.flipHorizontal\": \"Horisontaalne peegeldus\",\n    \"paint.modeTools.flipVertical\": \"Vertikaalne peegeldus\",\n    \"paint.modeTools.filled\": \"Täidetud\",\n    \"paint.modeTools.outlined\": \"Piirjoonega\",\n    \"paint.paintEditor.bitmap\": \"Rastergraafikasse\",\n    \"paint.paintEditor.vector\": \"Vektorgraafikasse\",\n    \"paint.paintEditor.fill\": \"Täide\",\n    \"paint.paintEditor.stroke\": \"Piirjoon\",\n    \"paint.brushMode.brush\": \"Pintsel\",\n    \"paint.eraserMode.eraser\": \"Kustutaja\",\n    \"paint.fillMode.fill\": \"Täide\",\n    \"paint.lineMode.line\": \"Joon\",\n    \"paint.ovalMode.oval\": \"Ring\",\n    \"paint.rectMode.rect\": \"Ristkülik\",\n    \"paint.reshapeMode.reshape\": \"Kuju muutmine\",\n    \"paint.roundedRectMode.roundedRect\": \"Ümarate nurkadega ristkülik\",\n    \"paint.selectMode.select\": \"Vali\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Vaheta\"\n  },\n  \"el\": {\n    \"paint.paintEditor.hue\": \"Χρώμα\",\n    \"paint.paintEditor.saturation\": \"Κορεσμός\",\n    \"paint.paintEditor.brightness\": \"Φωτεινότητα\",\n    \"gui.comingSoon.message1\": \"Μην ανησυχείτε, το επεξεργαζόμαστε {emoji}\",\n    \"gui.comingSoon.message2\": \"Έρχεται Σύντομα...\",\n    \"gui.comingSoon.message3\": \"Το δουλεύουμε {emoji}\",\n    \"paint.paintEditor.costume\": \"Ενδυμασία\",\n    \"paint.paintEditor.group\": \"Ομαδοποίηση\",\n    \"paint.paintEditor.ungroup\": \"Διαχωρισμός\",\n    \"paint.paintEditor.undo\": \"Αναίρεση\",\n    \"paint.paintEditor.redo\": \"Επανάληψη\",\n    \"paint.paintEditor.forward\": \"Προς τα εμπρός\",\n    \"paint.paintEditor.backward\": \"Προς τα πίσω\",\n    \"paint.paintEditor.front\": \"Προσκήνιο\",\n    \"paint.paintEditor.back\": \"Παρασκήνιο\",\n    \"paint.paintEditor.more\": \"Περισσότερα\",\n    \"paint.modeTools.brushSize\": \"Μέγεθος\",\n    \"paint.modeTools.eraserSize\": \"Μέγεθος γόμας\",\n    \"paint.modeTools.copy\": \"Αντιγραφή\",\n    \"paint.modeTools.paste\": \"Επικόλληση\",\n    \"paint.modeTools.delete\": \"Διαγραφή\",\n    \"paint.modeTools.curved\": \"Καμπύλες\",\n    \"paint.modeTools.pointed\": \"Μυτερό\",\n    \"paint.modeTools.thickness\": \"Πάχος\",\n    \"paint.modeTools.flipHorizontal\": \"Οριζόντια Αναστροφή\",\n    \"paint.modeTools.flipVertical\": \"Κατακόρυφη Αναστροφή\",\n    \"paint.modeTools.filled\": \"Γεμάτο\",\n    \"paint.modeTools.outlined\": \"Με περίγραμμα\",\n    \"paint.paintEditor.bitmap\": \"Μετατροπή σε Ψηφιοαπεικόνιση (Bitmap)\",\n    \"paint.paintEditor.vector\": \"Μετατροπή σε Διάνυσμα (Vector)\",\n    \"paint.paintEditor.fill\": \"Γέμισμα\",\n    \"paint.paintEditor.stroke\": \"Περίγραμμα\",\n    \"paint.brushMode.brush\": \"Πινέλο\",\n    \"paint.eraserMode.eraser\": \"Γόμα\",\n    \"paint.fillMode.fill\": \"Γέμισμα\",\n    \"paint.lineMode.line\": \"Γραμμή\",\n    \"paint.ovalMode.oval\": \"Κύκλος\",\n    \"paint.rectMode.rect\": \"Ορθογώνιο\",\n    \"paint.reshapeMode.reshape\": \"Αλλαγή σχήματος\",\n    \"paint.roundedRectMode.roundedRect\": \"Στρογγυλεμένο Ορθογώνιο\",\n    \"paint.selectMode.select\": \"Επιλογή\",\n    \"paint.textMode.text\": \"Κείμενο\",\n    \"paint.colorPicker.swap\": \"Αντιμετάθεση\"\n  },\n  \"en\": {\n    \"paint.paintEditor.hue\": \"Color\",\n    \"paint.paintEditor.saturation\": \"Saturation\",\n    \"paint.paintEditor.brightness\": \"Brightness\",\n    \"gui.comingSoon.message1\": \"Don't worry, we're on it {emoji}\",\n    \"gui.comingSoon.message2\": \"Coming Soon...\",\n    \"gui.comingSoon.message3\": \"We're working on it {emoji}\",\n    \"paint.paintEditor.costume\": \"Costume\",\n    \"paint.paintEditor.group\": \"Group\",\n    \"paint.paintEditor.ungroup\": \"Ungroup\",\n    \"paint.paintEditor.undo\": \"Undo\",\n    \"paint.paintEditor.redo\": \"Redo\",\n    \"paint.paintEditor.forward\": \"Forward\",\n    \"paint.paintEditor.backward\": \"Backward\",\n    \"paint.paintEditor.front\": \"Front\",\n    \"paint.paintEditor.back\": \"Back\",\n    \"paint.paintEditor.more\": \"More\",\n    \"paint.modeTools.brushSize\": \"Size\",\n    \"paint.modeTools.eraserSize\": \"Eraser size\",\n    \"paint.modeTools.copy\": \"Copy\",\n    \"paint.modeTools.paste\": \"Paste\",\n    \"paint.modeTools.delete\": \"Delete\",\n    \"paint.modeTools.curved\": \"Curved\",\n    \"paint.modeTools.pointed\": \"Pointed\",\n    \"paint.modeTools.thickness\": \"Thickness\",\n    \"paint.modeTools.flipHorizontal\": \"Flip Horizontal\",\n    \"paint.modeTools.flipVertical\": \"Flip Vertical\",\n    \"paint.modeTools.filled\": \"Filled\",\n    \"paint.modeTools.outlined\": \"Outlined\",\n    \"paint.paintEditor.bitmap\": \"Convert to Bitmap\",\n    \"paint.paintEditor.vector\": \"Convert to Vector\",\n    \"paint.paintEditor.fill\": \"Fill\",\n    \"paint.paintEditor.stroke\": \"Outline\",\n    \"paint.brushMode.brush\": \"Brush\",\n    \"paint.eraserMode.eraser\": \"Eraser\",\n    \"paint.fillMode.fill\": \"Fill\",\n    \"paint.lineMode.line\": \"Line\",\n    \"paint.ovalMode.oval\": \"Circle\",\n    \"paint.rectMode.rect\": \"Rectangle\",\n    \"paint.reshapeMode.reshape\": \"Reshape\",\n    \"paint.roundedRectMode.roundedRect\": \"Rounded Rectangle\",\n    \"paint.selectMode.select\": \"Select\",\n    \"paint.textMode.text\": \"Text\",\n    \"paint.colorPicker.swap\": \"Swap\"\n  },\n  \"es\": {\n    \"paint.paintEditor.hue\": \"Color\",\n    \"paint.paintEditor.saturation\": \"Saturación\",\n    \"paint.paintEditor.brightness\": \"Brillo\",\n    \"gui.comingSoon.message1\": \"No te preocupes, estamos en ello {emoji}\",\n    \"gui.comingSoon.message2\": \"Próximamente...\",\n    \"gui.comingSoon.message3\": \"Estamos trabajando en ello {emoji}\",\n    \"paint.paintEditor.costume\": \"Disfraz\",\n    \"paint.paintEditor.group\": \"Agrupar\",\n    \"paint.paintEditor.ungroup\": \"Desagrupar\",\n    \"paint.paintEditor.undo\": \"Deshacer\",\n    \"paint.paintEditor.redo\": \"Rehacer\",\n    \"paint.paintEditor.forward\": \"Adelante\",\n    \"paint.paintEditor.backward\": \"Atrás\",\n    \"paint.paintEditor.front\": \"Al frente\",\n    \"paint.paintEditor.back\": \"Al fondo\",\n    \"paint.paintEditor.more\": \"Más\",\n    \"paint.modeTools.brushSize\": \"Tamaño\",\n    \"paint.modeTools.eraserSize\": \"Tamaño de la goma\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Pegar\",\n    \"paint.modeTools.delete\": \"Eliminar\",\n    \"paint.modeTools.curved\": \"Curvado\",\n    \"paint.modeTools.pointed\": \"Recto\",\n    \"paint.modeTools.thickness\": \"Grosor\",\n    \"paint.modeTools.flipHorizontal\": \"Voltear horizontalmente\",\n    \"paint.modeTools.flipVertical\": \"Voltear verticalmente\",\n    \"paint.modeTools.filled\": \"Relleno\",\n    \"paint.modeTools.outlined\": \"Contorneado\",\n    \"paint.paintEditor.bitmap\": \"Convertir a mapa de bits\",\n    \"paint.paintEditor.vector\": \"Convertir a vector\",\n    \"paint.paintEditor.fill\": \"Rellenar\",\n    \"paint.paintEditor.stroke\": \"Borde\",\n    \"paint.brushMode.brush\": \"Pincel\",\n    \"paint.eraserMode.eraser\": \"Goma\",\n    \"paint.fillMode.fill\": \"Rellenar\",\n    \"paint.lineMode.line\": \"Línea\",\n    \"paint.ovalMode.oval\": \"Círculo\",\n    \"paint.rectMode.rect\": \"Rectángulo\",\n    \"paint.reshapeMode.reshape\": \"Volver a dar forma\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectángulo con bordes redoneados\",\n    \"paint.selectMode.select\": \"Seleccionar\",\n    \"paint.textMode.text\": \"Texto\",\n    \"paint.colorPicker.swap\": \"Invertir\"\n  },\n  \"es-419\": {\n    \"paint.paintEditor.hue\": \"Color\",\n    \"paint.paintEditor.saturation\": \"Saturación\",\n    \"paint.paintEditor.brightness\": \"Brillo\",\n    \"gui.comingSoon.message1\": \"No te preocupes, estamos en eso {emoji}\",\n    \"gui.comingSoon.message2\": \"Próximamente...\",\n    \"gui.comingSoon.message3\": \"Estamos trabajando en ello {emoji}\",\n    \"paint.paintEditor.costume\": \"Disfraz\",\n    \"paint.paintEditor.group\": \"Agrupar\",\n    \"paint.paintEditor.ungroup\": \"Desagrupar\",\n    \"paint.paintEditor.undo\": \"Deshacer\",\n    \"paint.paintEditor.redo\": \"Rehacer\",\n    \"paint.paintEditor.forward\": \"Adelante\",\n    \"paint.paintEditor.backward\": \"Atrás\",\n    \"paint.paintEditor.front\": \"Al frente\",\n    \"paint.paintEditor.back\": \"Al fondo\",\n    \"paint.paintEditor.more\": \"Más\",\n    \"paint.modeTools.brushSize\": \"Tamaño\",\n    \"paint.modeTools.eraserSize\": \"Tamaño del borrador\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Pegar\",\n    \"paint.modeTools.delete\": \"Eliminar\",\n    \"paint.modeTools.curved\": \"Curvo\",\n    \"paint.modeTools.pointed\": \"Puntiagudo\",\n    \"paint.modeTools.thickness\": \"Grosor\",\n    \"paint.modeTools.flipHorizontal\": \"Voltear horizontal\",\n    \"paint.modeTools.flipVertical\": \"Voltear vertical\",\n    \"paint.modeTools.filled\": \"Relleno\",\n    \"paint.modeTools.outlined\": \"Con contorno\",\n    \"paint.paintEditor.bitmap\": \"Convertir a mapa de bits\",\n    \"paint.paintEditor.vector\": \"Convertir a vector\",\n    \"paint.paintEditor.fill\": \"Relleno\",\n    \"paint.paintEditor.stroke\": \"Contorno\",\n    \"paint.brushMode.brush\": \"Pincel\",\n    \"paint.eraserMode.eraser\": \"Borrador\",\n    \"paint.fillMode.fill\": \"Relleno\",\n    \"paint.lineMode.line\": \"Línea\",\n    \"paint.ovalMode.oval\": \"Círculo\",\n    \"paint.rectMode.rect\": \"Rectángulo\",\n    \"paint.reshapeMode.reshape\": \"Cambiar forma\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectángulo redondeado\",\n    \"paint.selectMode.select\": \"Seleccionar\",\n    \"paint.textMode.text\": \"Texto\",\n    \"paint.colorPicker.swap\": \"Intercambiar\"\n  },\n  \"eo\": {\n    \"paint.paintEditor.hue\": \"Koloro\",\n    \"paint.paintEditor.saturation\": \"Satureco\",\n    \"paint.paintEditor.brightness\": \"Heleco\",\n    \"gui.comingSoon.message1\": \"Ne zorgu, ni baldaŭ okupiĝos pri tio {emoji}\",\n    \"gui.comingSoon.message2\": \"Venos baldaŭ...\",\n    \"gui.comingSoon.message3\": \"Ni laboras pri tio {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostumo\",\n    \"paint.paintEditor.group\": \"Grupo\",\n    \"paint.paintEditor.ungroup\": \"Malgrupigi\",\n    \"paint.paintEditor.undo\": \"Malfari\",\n    \"paint.paintEditor.redo\": \"Refari\",\n    \"paint.paintEditor.forward\": \"supren\",\n    \"paint.paintEditor.backward\": \"malsupren\",\n    \"paint.paintEditor.front\": \"al la supro\",\n    \"paint.paintEditor.back\": \"Reen\",\n    \"paint.paintEditor.more\": \"Pli\",\n    \"paint.modeTools.brushSize\": \"Grandeco\",\n    \"paint.modeTools.eraserSize\": \"grando de forviŝilo\",\n    \"paint.modeTools.copy\": \"Kopii\",\n    \"paint.modeTools.paste\": \"Alglui\",\n    \"paint.modeTools.delete\": \"Forigi\",\n    \"paint.modeTools.curved\": \"Kurbigi\",\n    \"paint.modeTools.pointed\": \"akrigi\",\n    \"paint.modeTools.thickness\": \"Larĝo\",\n    \"paint.modeTools.flipHorizontal\": \"inversi horizontale\",\n    \"paint.modeTools.flipVertical\": \"inversi vertikale\",\n    \"paint.modeTools.filled\": \"Plenigita\",\n    \"paint.modeTools.outlined\": \"Konturo\",\n    \"paint.paintEditor.bitmap\": \"Konverti al rastruma bildo\",\n    \"paint.paintEditor.vector\": \"Konverti al vektora bildo\",\n    \"paint.paintEditor.fill\": \"Plenigi\",\n    \"paint.paintEditor.stroke\": \"Konturo\",\n    \"paint.brushMode.brush\": \"Peniko\",\n    \"paint.eraserMode.eraser\": \"Forviŝilo\",\n    \"paint.fillMode.fill\": \"Plenigi\",\n    \"paint.lineMode.line\": \"Linio\",\n    \"paint.ovalMode.oval\": \"Cirklo\",\n    \"paint.rectMode.rect\": \"Rektangulo\",\n    \"paint.reshapeMode.reshape\": \"Ŝanĝi formon\",\n    \"paint.roundedRectMode.roundedRect\": \"Rondigita rektangulo\",\n    \"paint.selectMode.select\": \"Elekti\",\n    \"paint.textMode.text\": \"Teksto\",\n    \"paint.colorPicker.swap\": \"Interŝanĝi\"\n  },\n  \"eu\": {\n    \"paint.paintEditor.hue\": \"Kolorea\",\n    \"paint.paintEditor.saturation\": \"Asetasuna\",\n    \"paint.paintEditor.brightness\": \"Distira\",\n    \"gui.comingSoon.message1\": \"Lasai, horretan gabiltza {emoji}\",\n    \"gui.comingSoon.message2\": \"Laster ...\",\n    \"gui.comingSoon.message3\": \"Horretan ari gara {emoji}\",\n    \"paint.paintEditor.costume\": \"Tankera\",\n    \"paint.paintEditor.group\": \"Taldekatu\",\n    \"paint.paintEditor.ungroup\": \"Desegin taldea\",\n    \"paint.paintEditor.undo\": \"Desegin\",\n    \"paint.paintEditor.redo\": \"Berregin\",\n    \"paint.paintEditor.forward\": \"Aurrealderantz\",\n    \"paint.paintEditor.backward\": \"Atzealderantz\",\n    \"paint.paintEditor.front\": \"Aurrealdera\",\n    \"paint.paintEditor.back\": \"Atzealdera\",\n    \"paint.paintEditor.more\": \"Gehiago\",\n    \"paint.modeTools.brushSize\": \"Tamaina\",\n    \"paint.modeTools.eraserSize\": \"Ezabatzailearen tamaina\",\n    \"paint.modeTools.copy\": \"Kopiatu\",\n    \"paint.modeTools.paste\": \"Itsatsi\",\n    \"paint.modeTools.delete\": \"Ezabatu\",\n    \"paint.modeTools.curved\": \"Kurbatua\",\n    \"paint.modeTools.pointed\": \"Zorrotza\",\n    \"paint.modeTools.thickness\": \"Lodiera\",\n    \"paint.modeTools.flipHorizontal\": \"Islatu horizontalki\",\n    \"paint.modeTools.flipVertical\": \"Islatu bertikalki\",\n    \"paint.modeTools.filled\": \"Betea\",\n    \"paint.modeTools.outlined\": \"Eskematizatua\",\n    \"paint.paintEditor.bitmap\": \"Bihurtu Bitmap\",\n    \"paint.paintEditor.vector\": \"Bihurtu bektore\",\n    \"paint.paintEditor.fill\": \"Bete\",\n    \"paint.paintEditor.stroke\": \"Eskema\",\n    \"paint.brushMode.brush\": \"Pintzela\",\n    \"paint.eraserMode.eraser\": \"Ezabatzailea\",\n    \"paint.fillMode.fill\": \"Bete\",\n    \"paint.lineMode.line\": \"Marra\",\n    \"paint.ovalMode.oval\": \"Zirkuloa\",\n    \"paint.rectMode.rect\": \"Laukizuzena\",\n    \"paint.reshapeMode.reshape\": \"Aldatu forma\",\n    \"paint.roundedRectMode.roundedRect\": \"Laukizuzen biribildua\",\n    \"paint.selectMode.select\": \"Hautatu\",\n    \"paint.textMode.text\": \"Testua\",\n    \"paint.colorPicker.swap\": \"Trukatu\"\n  },\n  \"fa\": {\n    \"paint.paintEditor.hue\": \"رنگ\",\n    \"paint.paintEditor.saturation\": \"شدت رنگ\",\n    \"paint.paintEditor.brightness\": \"روشنایی\",\n    \"gui.comingSoon.message1\": \"نگران نباشید، ما داریم روی آن کار می‌کنیم{emoji}\",\n    \"gui.comingSoon.message2\": \"به زودی...\",\n    \"gui.comingSoon.message3\": \"ما در حال کار بر روی آن هستیم {emoji}\",\n    \"paint.paintEditor.costume\": \"حالت\",\n    \"paint.paintEditor.group\": \"گروه\",\n    \"paint.paintEditor.ungroup\": \"تفکیک\",\n    \"paint.paintEditor.undo\": \"واگـرد\",\n    \"paint.paintEditor.redo\": \"باز انجام\",\n    \"paint.paintEditor.forward\": \"جلوتر\",\n    \"paint.paintEditor.backward\": \"عقب‌تر\",\n    \"paint.paintEditor.front\": \"اولین\",\n    \"paint.paintEditor.back\": \"آخرین\",\n    \"paint.paintEditor.more\": \"بیشتر\",\n    \"paint.modeTools.brushSize\": \"اندازه\",\n    \"paint.modeTools.eraserSize\": \"اندازه‌ی پاک‌ کن\",\n    \"paint.modeTools.copy\": \"کپی\",\n    \"paint.modeTools.paste\": \"جای‌گذاری\",\n    \"paint.modeTools.delete\": \"حذف\",\n    \"paint.modeTools.curved\": \"خمیده\",\n    \"paint.modeTools.pointed\": \"تیز\",\n    \"paint.modeTools.thickness\": \"ضخامت\",\n    \"paint.modeTools.flipHorizontal\": \"قرینه عمودی\",\n    \"paint.modeTools.flipVertical\": \"قرینه‌ی افقی\",\n    \"paint.modeTools.filled\": \"تو پُــر\",\n    \"paint.modeTools.outlined\": \"تو خالی\",\n    \"paint.paintEditor.bitmap\": \"تبدیل به بیت‌مپ\",\n    \"paint.paintEditor.vector\": \"تبدیل به بردار\",\n    \"paint.paintEditor.fill\": \"رنگ\",\n    \"paint.paintEditor.stroke\": \"خط دور\",\n    \"paint.brushMode.brush\": \"قلم‌مو\",\n    \"paint.eraserMode.eraser\": \"پاک‌ کن\",\n    \"paint.fillMode.fill\": \"سطل رنگ\",\n    \"paint.lineMode.line\": \"خط\",\n    \"paint.ovalMode.oval\": \"دایره\",\n    \"paint.rectMode.rect\": \"مستطیل\",\n    \"paint.reshapeMode.reshape\": \"تغییر شکل\",\n    \"paint.roundedRectMode.roundedRect\": \"مستطیل دور گرد\",\n    \"paint.selectMode.select\": \"انتخاب\",\n    \"paint.textMode.text\": \"متن\",\n    \"paint.colorPicker.swap\": \"جابه‌جا\"\n  },\n  \"fil\": {\n    \"paint.paintEditor.hue\": \"Kulay\",\n    \"paint.paintEditor.saturation\": \"Tingkad\",\n    \"paint.paintEditor.brightness\": \"Liwanag\",\n    \"gui.comingSoon.message1\": \"Wag po kayong mag-alala, ginagawa na po namin {emoji}\",\n    \"gui.comingSoon.message2\": \"Abangan...\",\n    \"gui.comingSoon.message3\": \"Ginagawa na po namin {emoji}\",\n    \"paint.paintEditor.costume\": \"Costume\",\n    \"paint.paintEditor.group\": \"Igrupo\",\n    \"paint.paintEditor.ungroup\": \"Wag igrupo\",\n    \"paint.paintEditor.undo\": \"I-undo\",\n    \"paint.paintEditor.redo\": \"I-redo\",\n    \"paint.paintEditor.forward\": \"Iharap\",\n    \"paint.paintEditor.backward\": \"Ilikod\",\n    \"paint.paintEditor.front\": \"Harap\",\n    \"paint.paintEditor.back\": \"Balik\",\n    \"paint.paintEditor.more\": \"Higit pa\",\n    \"paint.modeTools.brushSize\": \"Laki\",\n    \"paint.modeTools.eraserSize\": \"Laki ng pambura\",\n    \"paint.modeTools.copy\": \"Kopyahin\",\n    \"paint.modeTools.paste\": \"I-paste\",\n    \"paint.modeTools.delete\": \"Burahin\",\n    \"paint.modeTools.curved\": \"Nakakurba\",\n    \"paint.modeTools.pointed\": \"Matulis\",\n    \"paint.modeTools.thickness\": \"Kapal\",\n    \"paint.modeTools.flipHorizontal\": \"Baligtarin Pahiga\",\n    \"paint.modeTools.flipVertical\": \"Baligtarin Patayo\",\n    \"paint.modeTools.filled\": \"Kinulayan\",\n    \"paint.modeTools.outlined\": \"Nakabakas\",\n    \"paint.paintEditor.bitmap\": \"I-convert sa Bitmap\",\n    \"paint.paintEditor.vector\": \"I-convert sa Vector\",\n    \"paint.paintEditor.fill\": \"Kulayan\",\n    \"paint.paintEditor.stroke\": \"Bakas\",\n    \"paint.brushMode.brush\": \"Brush\",\n    \"paint.eraserMode.eraser\": \"Pambura\",\n    \"paint.fillMode.fill\": \"Kulayan\",\n    \"paint.lineMode.line\": \"Linya\",\n    \"paint.ovalMode.oval\": \"Bilog\",\n    \"paint.rectMode.rect\": \"Parihaba\",\n    \"paint.reshapeMode.reshape\": \"Ibahin ang hugis\",\n    \"paint.roundedRectMode.roundedRect\": \"Parihabang pabilog\",\n    \"paint.selectMode.select\": \"Pumili\",\n    \"paint.textMode.text\": \"Teksto\",\n    \"paint.colorPicker.swap\": \"Magpalitan\"\n  },\n  \"fr\": {\n    \"paint.paintEditor.hue\": \"Couleur\",\n    \"paint.paintEditor.saturation\": \"Saturation\",\n    \"paint.paintEditor.brightness\": \"Luminosité\",\n    \"gui.comingSoon.message1\": \"Ne t'inquiète pas, on y travaille {emoji}\",\n    \"gui.comingSoon.message2\": \"Ça arrive bientôt...\",\n    \"gui.comingSoon.message3\": \"Nous y travaillons {emoji}\",\n    \"paint.paintEditor.costume\": \"Costume\",\n    \"paint.paintEditor.group\": \"Grouper\",\n    \"paint.paintEditor.ungroup\": \"Dégrouper\",\n    \"paint.paintEditor.undo\": \"Restaurer\",\n    \"paint.paintEditor.redo\": \"Refaire\",\n    \"paint.paintEditor.forward\": \"Avancer\",\n    \"paint.paintEditor.backward\": \"Reculer\",\n    \"paint.paintEditor.front\": \"Avant-plan\",\n    \"paint.paintEditor.back\": \"Arrière-plan\",\n    \"paint.paintEditor.more\": \"Plus\",\n    \"paint.modeTools.brushSize\": \"Taille\",\n    \"paint.modeTools.eraserSize\": \"Taille de la gomme\",\n    \"paint.modeTools.copy\": \"Copier\",\n    \"paint.modeTools.paste\": \"Coller\",\n    \"paint.modeTools.delete\": \"Supprimer\",\n    \"paint.modeTools.curved\": \"Courbé\",\n    \"paint.modeTools.pointed\": \"Pointu\",\n    \"paint.modeTools.thickness\": \"Épaisseur\",\n    \"paint.modeTools.flipHorizontal\": \"Retourner horizontalement\",\n    \"paint.modeTools.flipVertical\": \"Retourner verticalement\",\n    \"paint.modeTools.filled\": \"Plein\",\n    \"paint.modeTools.outlined\": \"Contours\",\n    \"paint.paintEditor.bitmap\": \"Convertir en bitmap\",\n    \"paint.paintEditor.vector\": \"Convertir en Vecteur\",\n    \"paint.paintEditor.fill\": \"Remplissage\",\n    \"paint.paintEditor.stroke\": \"Contour\",\n    \"paint.brushMode.brush\": \"Pinceau\",\n    \"paint.eraserMode.eraser\": \"Gomme\",\n    \"paint.fillMode.fill\": \"Remplissage\",\n    \"paint.lineMode.line\": \"Ligne\",\n    \"paint.ovalMode.oval\": \"Cercle\",\n    \"paint.rectMode.rect\": \"Rectangle\",\n    \"paint.reshapeMode.reshape\": \"Redessiner\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectangle arrondi\",\n    \"paint.selectMode.select\": \"Sélectionner\",\n    \"paint.textMode.text\": \"Texte\",\n    \"paint.colorPicker.swap\": \"Inverser\"\n  },\n  \"fy\": {\n    \"paint.paintEditor.hue\": \"Kleur\",\n    \"paint.paintEditor.saturation\": \"Sêding\",\n    \"paint.paintEditor.brightness\": \"Helderheid\",\n    \"gui.comingSoon.message1\": \"Gjin need, wy wurkje deroan {emoji}\",\n    \"gui.comingSoon.message2\": \"Meikoarten...\",\n    \"gui.comingSoon.message3\": \"Wy wurkje deroan {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostúm\",\n    \"paint.paintEditor.group\": \"Groep\",\n    \"paint.paintEditor.ungroup\": \"Ut groep helje\",\n    \"paint.paintEditor.undo\": \"Ungedien meitsje\",\n    \"paint.paintEditor.redo\": \"Op 'e nij dwaan\",\n    \"paint.paintEditor.forward\": \"Foarút\",\n    \"paint.paintEditor.backward\": \"Efterút\",\n    \"paint.paintEditor.front\": \"Foarkant\",\n    \"paint.paintEditor.back\": \"Werom\",\n    \"paint.paintEditor.more\": \"Mear\",\n    \"paint.modeTools.brushSize\": \"Grutte\",\n    \"paint.modeTools.eraserSize\": \"Gumgrutte\",\n    \"paint.modeTools.copy\": \"Kopiearje\",\n    \"paint.modeTools.paste\": \"Plakke\",\n    \"paint.modeTools.delete\": \"Fuorthelje\",\n    \"paint.modeTools.curved\": \"Bûgd\",\n    \"paint.modeTools.pointed\": \"Oanwiisd\",\n    \"paint.modeTools.thickness\": \"Dikte\",\n    \"paint.modeTools.flipHorizontal\": \"Horizontaal omdraaie\",\n    \"paint.modeTools.flipVertical\": \"Fertikaal omdraaie\",\n    \"paint.modeTools.filled\": \"Folle\",\n    \"paint.modeTools.outlined\": \"Bûtenste râne\",\n    \"paint.paintEditor.bitmap\": \"Omsette nei Bitmap\",\n    \"paint.paintEditor.vector\": \"Omsette nei Fektor\",\n    \"paint.paintEditor.fill\": \"Folje\",\n    \"paint.paintEditor.stroke\": \"Râne\",\n    \"paint.brushMode.brush\": \"Kwast\",\n    \"paint.eraserMode.eraser\": \"Gum\",\n    \"paint.fillMode.fill\": \"Folje\",\n    \"paint.lineMode.line\": \"Rigel\",\n    \"paint.ovalMode.oval\": \"Sirkel\",\n    \"paint.rectMode.rect\": \"Rjochthoek\",\n    \"paint.reshapeMode.reshape\": \"Foarm feroarje\",\n    \"paint.roundedRectMode.roundedRect\": \"Rjochthoek mei rûne hoeken\",\n    \"paint.selectMode.select\": \"Selektearje\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Ruilje\"\n  },\n  \"ga\": {\n    \"paint.paintEditor.hue\": \"Dath\",\n    \"paint.paintEditor.saturation\": \"Sáithiú\",\n    \"paint.paintEditor.brightness\": \"Gile\",\n    \"gui.comingSoon.message1\": \"Ná buair do cheann, táimid ag plé leis {emoji}\",\n    \"gui.comingSoon.message2\": \"Le teacht go luath...\",\n    \"gui.comingSoon.message3\": \"Táimid ag plé leis {emoji}\",\n    \"paint.paintEditor.costume\": \"Culaith\",\n    \"paint.paintEditor.group\": \"Grúpa\",\n    \"paint.paintEditor.ungroup\": \"Díghrúpáil\",\n    \"paint.paintEditor.undo\": \"Cealaigh\",\n    \"paint.paintEditor.redo\": \"Athdhéan\",\n    \"paint.paintEditor.forward\": \"Ar aghaidh\",\n    \"paint.paintEditor.backward\": \"Ar gcúl\",\n    \"paint.paintEditor.front\": \"Chun tosaigh\",\n    \"paint.paintEditor.back\": \"Chun deiridh\",\n    \"paint.paintEditor.more\": \"Tuilleadh\",\n    \"paint.modeTools.brushSize\": \"Méid\",\n    \"paint.modeTools.eraserSize\": \"Méid an léirscriosáin\",\n    \"paint.modeTools.copy\": \"Cóipeáil\",\n    \"paint.modeTools.paste\": \"Greamaigh\",\n    \"paint.modeTools.delete\": \"Scrios\",\n    \"paint.modeTools.curved\": \"Cuartha\",\n    \"paint.modeTools.pointed\": \"Bioraithe\",\n    \"paint.modeTools.thickness\": \"Leithead\",\n    \"paint.modeTools.flipHorizontal\": \"Smeach go cothrománach\",\n    \"paint.modeTools.flipVertical\": \"Smeach go hingearach\",\n    \"paint.modeTools.filled\": \"Líonta\",\n    \"paint.modeTools.outlined\": \"Imlínithe\",\n    \"paint.paintEditor.bitmap\": \"Tiontaigh go mapa giotán\",\n    \"paint.paintEditor.vector\": \"Mód Veicteora\",\n    \"paint.paintEditor.fill\": \"Líon\",\n    \"paint.paintEditor.stroke\": \"Imlíne\",\n    \"paint.brushMode.brush\": \"Scuab\",\n    \"paint.eraserMode.eraser\": \"Léirscriosán\",\n    \"paint.fillMode.fill\": \"Líon\",\n    \"paint.lineMode.line\": \"Líne\",\n    \"paint.ovalMode.oval\": \"Ciorcal\",\n    \"paint.rectMode.rect\": \"Dronuilleog\",\n    \"paint.reshapeMode.reshape\": \"Athdheilbhigh\",\n    \"paint.roundedRectMode.roundedRect\": \"Dronuilleog Chruinn\",\n    \"paint.selectMode.select\": \"Roghnaigh\",\n    \"paint.textMode.text\": \"Téacs\",\n    \"paint.colorPicker.swap\": \"Babhtáil\"\n  },\n  \"gd\": {\n    \"paint.paintEditor.hue\": \"Dath\",\n    \"paint.paintEditor.saturation\": \"Sàthachd\",\n    \"paint.paintEditor.brightness\": \"Soilleireachd\",\n    \"gui.comingSoon.message1\": \"Na gabh dragh, tha sinn ag obair air {emoji}\",\n    \"gui.comingSoon.message2\": \"Ri thighinn a dh’aithghearr…\",\n    \"gui.comingSoon.message3\": \"Tha sinn ag obair air {emoji}\",\n    \"paint.paintEditor.costume\": \"Dreach\",\n    \"paint.paintEditor.group\": \"Buidhnich\",\n    \"paint.paintEditor.ungroup\": \"Sgaoil am buidheann\",\n    \"paint.paintEditor.undo\": \"Neo-dhèan\",\n    \"paint.paintEditor.redo\": \"Ath-dhèan\",\n    \"paint.paintEditor.forward\": \"Gluais an comhair a’ bheòil\",\n    \"paint.paintEditor.backward\": \"Gluais an comhair a’ chùil\",\n    \"paint.paintEditor.front\": \"Gluais dhan fhìor-bheulaibh\",\n    \"paint.paintEditor.back\": \"Gluais dhan fhìor-chùlaibh\",\n    \"paint.paintEditor.more\": \"Barrachd\",\n    \"paint.modeTools.brushSize\": \"Meud na bruise\",\n    \"paint.modeTools.eraserSize\": \"Meud an t‑suathain\",\n    \"paint.modeTools.copy\": \"Dèan lethbhreac\",\n    \"paint.modeTools.paste\": \"Cuir ann\",\n    \"paint.modeTools.delete\": \"Sguab às\",\n    \"paint.modeTools.curved\": \"Cruinn\",\n    \"paint.modeTools.pointed\": \"Biorach\",\n    \"paint.modeTools.thickness\": \"Tiughad\",\n    \"paint.modeTools.flipHorizontal\": \"Flip air a’ chòmhnard\",\n    \"paint.modeTools.flipVertical\": \"Flip gu h‑inghearach\",\n    \"paint.modeTools.filled\": \"Lìonta\",\n    \"paint.modeTools.outlined\": \"Oir‑loidhne\",\n    \"paint.paintEditor.bitmap\": \"Iompaich na bitmap\",\n    \"paint.paintEditor.vector\": \"Iompaich na vector\",\n    \"paint.paintEditor.fill\": \"Lìonadh\",\n    \"paint.paintEditor.stroke\": \"Oir‑loidhne\",\n    \"paint.brushMode.brush\": \"Bruis\",\n    \"paint.eraserMode.eraser\": \"Suathan\",\n    \"paint.fillMode.fill\": \"Lìonadh\",\n    \"paint.lineMode.line\": \"Loidhne\",\n    \"paint.ovalMode.oval\": \"Cearcall\",\n    \"paint.rectMode.rect\": \"Ceart-cheàrnach\",\n    \"paint.reshapeMode.reshape\": \"Cumadh\",\n    \"paint.roundedRectMode.roundedRect\": \"Ceart-cheàrnach cruinnte\",\n    \"paint.selectMode.select\": \"Tagh\",\n    \"paint.textMode.text\": \"Teacsa\",\n    \"paint.colorPicker.swap\": \"Suaip\"\n  },\n  \"gl\": {\n    \"paint.paintEditor.hue\": \"Cor\",\n    \"paint.paintEditor.saturation\": \"Saturación\",\n    \"paint.paintEditor.brightness\": \"Luminosidade\",\n    \"gui.comingSoon.message1\": \"Non te preocupes, andamos niso {emoji}\",\n    \"gui.comingSoon.message2\": \"Proximamente...\",\n    \"gui.comingSoon.message3\": \"Andamos a traballar nisto {emoji}\",\n    \"paint.paintEditor.costume\": \"Traxe\",\n    \"paint.paintEditor.group\": \"Agrupar\",\n    \"paint.paintEditor.ungroup\": \"Desagrupar\",\n    \"paint.paintEditor.undo\": \"Desfacer\",\n    \"paint.paintEditor.redo\": \"Refacer\",\n    \"paint.paintEditor.forward\": \"Adiante\",\n    \"paint.paintEditor.backward\": \"Atrás\",\n    \"paint.paintEditor.front\": \"Traer á fronte\",\n    \"paint.paintEditor.back\": \"Levar ao fondo\",\n    \"paint.paintEditor.more\": \"Máis\",\n    \"paint.modeTools.brushSize\": \"Tamaño\",\n    \"paint.modeTools.eraserSize\": \"Tamaño do borrador\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Pegar\",\n    \"paint.modeTools.delete\": \"Eliminar\",\n    \"paint.modeTools.curved\": \"A curvas\",\n    \"paint.modeTools.pointed\": \"Bordes Afiados\",\n    \"paint.modeTools.thickness\": \"Gordura\",\n    \"paint.modeTools.flipHorizontal\": \"Voltear en horizontal\",\n    \"paint.modeTools.flipVertical\": \"Voltear en vertical\",\n    \"paint.modeTools.filled\": \"Enchido\",\n    \"paint.modeTools.outlined\": \"Bordos\",\n    \"paint.paintEditor.bitmap\": \"Converter en mapa de bits\",\n    \"paint.paintEditor.vector\": \"Converter en vectores\",\n    \"paint.paintEditor.fill\": \"Recheo\",\n    \"paint.paintEditor.stroke\": \"Bordo\",\n    \"paint.brushMode.brush\": \"Pincel\",\n    \"paint.eraserMode.eraser\": \"Borrador\",\n    \"paint.fillMode.fill\": \"Encher\",\n    \"paint.lineMode.line\": \"Liña\",\n    \"paint.ovalMode.oval\": \"Círculo\",\n    \"paint.rectMode.rect\": \"Rectángulo\",\n    \"paint.reshapeMode.reshape\": \"Reformar\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectángulo arredondado\",\n    \"paint.selectMode.select\": \"Seleccionar\",\n    \"paint.textMode.text\": \"Texto\",\n    \"paint.colorPicker.swap\": \"Trocar\"\n  },\n  \"ko\": {\n    \"paint.paintEditor.hue\": \"색상\",\n    \"paint.paintEditor.saturation\": \"채도\",\n    \"paint.paintEditor.brightness\": \"명도\",\n    \"gui.comingSoon.message1\": \"걱정 마세요, 작업 중입니다 {emoji}\",\n    \"gui.comingSoon.message2\": \"곧 이용 가능합니다...\",\n    \"gui.comingSoon.message3\": \"작업 중입니다 {emoji}\",\n    \"paint.paintEditor.costume\": \"모양\",\n    \"paint.paintEditor.group\": \"그룹화 적용\",\n    \"paint.paintEditor.ungroup\": \"그룹화 해제\",\n    \"paint.paintEditor.undo\": \"되돌리기\",\n    \"paint.paintEditor.redo\": \"재시도\",\n    \"paint.paintEditor.forward\": \"앞으로\",\n    \"paint.paintEditor.backward\": \"뒤로\",\n    \"paint.paintEditor.front\": \"맨 앞으로\",\n    \"paint.paintEditor.back\": \"맨 뒤로\",\n    \"paint.paintEditor.more\": \"기타\",\n    \"paint.modeTools.brushSize\": \"크기\",\n    \"paint.modeTools.eraserSize\": \"지우개 크기\",\n    \"paint.modeTools.copy\": \"복사\",\n    \"paint.modeTools.paste\": \"붙이기\",\n    \"paint.modeTools.delete\": \"삭제\",\n    \"paint.modeTools.curved\": \"굽은 모양\",\n    \"paint.modeTools.pointed\": \"꺾인 모양\",\n    \"paint.modeTools.thickness\": \"굵기\",\n    \"paint.modeTools.flipHorizontal\": \"좌우 뒤집기\",\n    \"paint.modeTools.flipVertical\": \"상하 뒤집기\",\n    \"paint.modeTools.filled\": \"채우기\",\n    \"paint.modeTools.outlined\": \"윤곽선\",\n    \"paint.paintEditor.bitmap\": \"비트맵으로 바꾸기\",\n    \"paint.paintEditor.vector\": \"벡터로 바꾸기\",\n    \"paint.paintEditor.fill\": \"채우기 색\",\n    \"paint.paintEditor.stroke\": \"윤곽선 색\",\n    \"paint.brushMode.brush\": \"붓\",\n    \"paint.eraserMode.eraser\": \"지우개\",\n    \"paint.fillMode.fill\": \"채우기 색\",\n    \"paint.lineMode.line\": \"선\",\n    \"paint.ovalMode.oval\": \"원\",\n    \"paint.rectMode.rect\": \"직사각형\",\n    \"paint.reshapeMode.reshape\": \"형태 고치기\",\n    \"paint.roundedRectMode.roundedRect\": \"모서리가 둥근 직사각형\",\n    \"paint.selectMode.select\": \"선택\",\n    \"paint.textMode.text\": \"텍스트\",\n    \"paint.colorPicker.swap\": \"바꾸기\"\n  },\n  \"ha\": {\n    \"paint.paintEditor.hue\": \"launi\",\n    \"paint.paintEditor.saturation\": \"Yanayin tumbatsa\",\n    \"paint.paintEditor.brightness\": \"yanayin haske\",\n    \"gui.comingSoon.message1\": \"Kar a damu, muna aiki a kai {emoji}\",\n    \"gui.comingSoon.message2\": \"Yana nan tafe...\",\n    \"gui.comingSoon.message3\": \"Muna aiki a kai {emoji}\",\n    \"paint.paintEditor.costume\": \"Fasali \",\n    \"paint.paintEditor.group\": \"Rukuni\",\n    \"paint.paintEditor.ungroup\": \"Raba rukuni\",\n    \"paint.paintEditor.undo\": \"warwarewa\",\n    \"paint.paintEditor.redo\": \"sake yi\",\n    \"paint.paintEditor.forward\": \"ci gaba\",\n    \"paint.paintEditor.backward\": \"ci baya\",\n    \"paint.paintEditor.front\": \"Gaba\",\n    \"paint.paintEditor.back\": \"Baya\",\n    \"paint.paintEditor.more\": \"ƙari\",\n    \"paint.modeTools.brushSize\": \"girma\",\n    \"paint.modeTools.eraserSize\": \"Girman abun gogewa\",\n    \"paint.modeTools.copy\": \"kwafa\",\n    \"paint.modeTools.paste\": \"manna\",\n    \"paint.modeTools.delete\": \"goge\",\n    \"paint.modeTools.curved\": \"mai lanƙwasa\",\n    \"paint.modeTools.pointed\": \"An nuna\",\n    \"paint.modeTools.thickness\": \"kauri\",\n    \"paint.modeTools.flipHorizontal\": \"Jefa a kwance\",\n    \"paint.modeTools.flipVertical\": \"Jefa a tsaye\",\n    \"paint.modeTools.filled\": \"an cika\",\n    \"paint.modeTools.outlined\": \"ƙayyadadde\",\n    \"paint.paintEditor.bitmap\": \"Maida zuwa bitmap\",\n    \"paint.paintEditor.vector\": \"maida zuwa tataccen zanen kwamfuta\",\n    \"paint.paintEditor.fill\": \"cika\",\n    \"paint.paintEditor.stroke\": \"ƙayyadewa\",\n    \"paint.brushMode.brush\": \"burushi\",\n    \"paint.eraserMode.eraser\": \"abun gogewa\",\n    \"paint.fillMode.fill\": \"cika\",\n    \"paint.lineMode.line\": \"layi\",\n    \"paint.ovalMode.oval\": \"da'ira\",\n    \"paint.rectMode.rect\": \"murabba'i mai dari\",\n    \"paint.reshapeMode.reshape\": \"sake siffantawa\",\n    \"paint.roundedRectMode.roundedRect\": \"Lanƙwasasshen murabba'i mai dari \",\n    \"paint.selectMode.select\": \"Zaɓa\",\n    \"paint.textMode.text\": \"rubutu\",\n    \"paint.colorPicker.swap\": \"musanya\"\n  },\n  \"hy\": {\n    \"paint.paintEditor.hue\": \"Գույն\",\n    \"paint.paintEditor.saturation\": \"Հագեցվածություն\",\n    \"paint.paintEditor.brightness\": \"Պայծառություն\",\n    \"gui.comingSoon.message1\": \"Մի անհանգստացեք, մենք աշխատում ենք դրա վրա {emoji}\",\n    \"gui.comingSoon.message2\": \"Շուտով...\",\n    \"gui.comingSoon.message3\": \"Մենք աշխատում ենք դրա վրա {emoji}\",\n    \"paint.paintEditor.costume\": \"Զգեստ\",\n    \"paint.paintEditor.group\": \"Խումբ\",\n    \"paint.paintEditor.ungroup\": \"Ցրել խումբը\",\n    \"paint.paintEditor.undo\": \"Հետ գնալ\",\n    \"paint.paintEditor.redo\": \"Առաջ գնալ\",\n    \"paint.paintEditor.forward\": \"Դեպի առաջ\",\n    \"paint.paintEditor.backward\": \"Դեպի հետ\",\n    \"paint.paintEditor.front\": \"Դիմաց\",\n    \"paint.paintEditor.back\": \"Հետ գնալ\",\n    \"paint.paintEditor.more\": \"Ավելին\",\n    \"paint.modeTools.brushSize\": \"Չափս\",\n    \"paint.modeTools.eraserSize\": \"Ռետինի չափսը\",\n    \"paint.modeTools.copy\": \"Պատճենել\",\n    \"paint.modeTools.paste\": \"Զետեղել\",\n    \"paint.modeTools.delete\": \"Ջնջել\",\n    \"paint.modeTools.curved\": \"Ծռված\",\n    \"paint.modeTools.pointed\": \"Նշված\",\n    \"paint.modeTools.thickness\": \"Հաստություն\",\n    \"paint.modeTools.flipHorizontal\": \"Հորիզոնական շրջադարձ\",\n    \"paint.modeTools.flipVertical\": \"Ուղղահայաց շրջադարձ\",\n    \"paint.modeTools.filled\": \"Լցված\",\n    \"paint.modeTools.outlined\": \"Եզրագծած\",\n    \"paint.paintEditor.bitmap\": \"Փոխակերպել կետապատկերայինի\",\n    \"paint.paintEditor.vector\": \"Փոխակերպել վեկտորի\",\n    \"paint.paintEditor.fill\": \"Լցնել\",\n    \"paint.paintEditor.stroke\": \"Եզրագիծ\",\n    \"paint.brushMode.brush\": \"Վրձին\",\n    \"paint.eraserMode.eraser\": \"Ռետին\",\n    \"paint.fillMode.fill\": \"Լցնել\",\n    \"paint.lineMode.line\": \"Գիծ\",\n    \"paint.ovalMode.oval\": \"Շրջանագիծ\",\n    \"paint.rectMode.rect\": \"Ուղղանկյուն\",\n    \"paint.reshapeMode.reshape\": \"Ձևափոխել\",\n    \"paint.roundedRectMode.roundedRect\": \"Կլորացված ուղղանկյուն\",\n    \"paint.selectMode.select\": \"Ընտրել\",\n    \"paint.textMode.text\": \"Տեքստ\",\n    \"paint.colorPicker.swap\": \"Փոխարինում\"\n  },\n  \"he\": {\n    \"paint.paintEditor.hue\": \"צבע\",\n    \"paint.paintEditor.saturation\": \"רוויה\",\n    \"paint.paintEditor.brightness\": \"בהירות\",\n    \"gui.comingSoon.message1\": \"אל דאגה, אנחנו מטפלים בזה {emoji}\",\n    \"gui.comingSoon.message2\": \"בקרוב...\",\n    \"gui.comingSoon.message3\": \"אנחנו עובדים על זה {emoji}\",\n    \"paint.paintEditor.costume\": \"תלבושת\",\n    \"paint.paintEditor.group\": \"קבץ\",\n    \"paint.paintEditor.ungroup\": \"בטל קיבוץ\",\n    \"paint.paintEditor.undo\": \"בטל\",\n    \"paint.paintEditor.redo\": \"בצע שוב\",\n    \"paint.paintEditor.forward\": \"קדימה\",\n    \"paint.paintEditor.backward\": \"אחורה\",\n    \"paint.paintEditor.front\": \"העבר לקידמה\",\n    \"paint.paintEditor.back\": \"העבר לרקע\",\n    \"paint.paintEditor.more\": \"עוד\",\n    \"paint.modeTools.brushSize\": \"גודל\",\n    \"paint.modeTools.eraserSize\": \"גודל מחק\",\n    \"paint.modeTools.copy\": \"העתק\",\n    \"paint.modeTools.paste\": \"הדבק\",\n    \"paint.modeTools.delete\": \"מחק\",\n    \"paint.modeTools.curved\": \"מעוקל\",\n    \"paint.modeTools.pointed\": \"מחודד\",\n    \"paint.modeTools.thickness\": \"עובי\",\n    \"paint.modeTools.flipHorizontal\": \"הפוך אופקית\",\n    \"paint.modeTools.flipVertical\": \"הפוך אנכית\",\n    \"paint.modeTools.filled\": \"מלא\",\n    \"paint.modeTools.outlined\": \"מסורטט\",\n    \"paint.paintEditor.bitmap\": \"המרה למפת סיביות\",\n    \"paint.paintEditor.vector\": \"המרה לוקטור\",\n    \"paint.paintEditor.fill\": \"מילוי\",\n    \"paint.paintEditor.stroke\": \"מסגרת\",\n    \"paint.brushMode.brush\": \"מברשת\",\n    \"paint.eraserMode.eraser\": \"מחק\",\n    \"paint.fillMode.fill\": \"מילוי\",\n    \"paint.lineMode.line\": \"קו\",\n    \"paint.ovalMode.oval\": \"עיגול\",\n    \"paint.rectMode.rect\": \"מלבן\",\n    \"paint.reshapeMode.reshape\": \"שנה צורה\",\n    \"paint.roundedRectMode.roundedRect\": \"מלבן מעוגל\",\n    \"paint.selectMode.select\": \"בחר\",\n    \"paint.textMode.text\": \"טקסט\",\n    \"paint.colorPicker.swap\": \"החלף\"\n  },\n  \"hi\": {\n    \"paint.paintEditor.hue\": \"रंग\",\n    \"paint.paintEditor.saturation\": \"संतृप्ति\",\n    \"paint.paintEditor.brightness\": \"चमक\",\n    \"gui.comingSoon.message1\": \"चिन्ता ना करें , हम इस पर कार्य कर रहे हैं  {emoji}\",\n    \"gui.comingSoon.message2\": \"शीघ्रः प्रस्तुत होगा \",\n    \"gui.comingSoon.message3\": \"हम इस पर कार्य कर रहे हैं  {emoji}\",\n    \"paint.paintEditor.costume\": \"पोशाक\",\n    \"paint.paintEditor.group\": \"समूह \",\n    \"paint.paintEditor.ungroup\": \"असमूहीकृत\",\n    \"paint.paintEditor.undo\": \"पूर्ववत\",\n    \"paint.paintEditor.redo\": \"पुनः करें\",\n    \"paint.paintEditor.forward\": \"आगे \",\n    \"paint.paintEditor.backward\": \"पीछे \",\n    \"paint.paintEditor.front\": \"सामने\",\n    \"paint.paintEditor.back\": \"वापस \",\n    \"paint.paintEditor.more\": \"और \",\n    \"paint.modeTools.brushSize\": \"माप \",\n    \"paint.modeTools.eraserSize\": \"रबड़ का माप \",\n    \"paint.modeTools.copy\": \"प्रतिलिपि \",\n    \"paint.modeTools.paste\": \"चिपकाना \",\n    \"paint.modeTools.delete\": \"मिटाये\",\n    \"paint.modeTools.curved\": \"मुड़ा हुआ \",\n    \"paint.modeTools.pointed\": \"नोकीला \",\n    \"paint.modeTools.thickness\": \"मोटाई \",\n    \"paint.modeTools.flipHorizontal\": \"क्षितिज के समानांतर पलटिये \",\n    \"paint.modeTools.flipVertical\": \"ऊर्ध्वाधर के समानांतर पलटिये\",\n    \"paint.modeTools.filled\": \"भरा हुआ \",\n    \"paint.modeTools.outlined\": \"उल्लिखित\",\n    \"paint.paintEditor.bitmap\": \"बिटमैप में बदलें \",\n    \"paint.paintEditor.vector\": \"वेक्टर में बदलें \",\n    \"paint.paintEditor.fill\": \"भरो\",\n    \"paint.paintEditor.stroke\": \"सीमा \",\n    \"paint.brushMode.brush\": \"ब्रश\",\n    \"paint.eraserMode.eraser\": \"रबड़\",\n    \"paint.fillMode.fill\": \"भरो\",\n    \"paint.lineMode.line\": \"रेखा \",\n    \"paint.ovalMode.oval\": \"घेरा \",\n    \"paint.rectMode.rect\": \"आयत \",\n    \"paint.reshapeMode.reshape\": \"फिर से आकार बनाएं \",\n    \"paint.roundedRectMode.roundedRect\": \"कोनो पर मुड़े हुए आयताकार \",\n    \"paint.selectMode.select\": \"चुनें \",\n    \"paint.textMode.text\": \"अक्षर \",\n    \"paint.colorPicker.swap\": \"आपस में बदलें \"\n  },\n  \"hr\": {\n    \"paint.paintEditor.hue\": \"Boja\",\n    \"paint.paintEditor.saturation\": \"Saturacija\",\n    \"paint.paintEditor.brightness\": \"Osvjetljenje\",\n    \"gui.comingSoon.message1\": \"Ne brini, radimo na tome{emoji}\",\n    \"gui.comingSoon.message2\": \"Pričekajte trenutak...\",\n    \"gui.comingSoon.message3\": \"Radimo na tome{emoji}\",\n    \"paint.paintEditor.costume\": \"Kostim\",\n    \"paint.paintEditor.group\": \"Grupiraj\",\n    \"paint.paintEditor.ungroup\": \"Razgrupiraj\",\n    \"paint.paintEditor.undo\": \"Poništi\",\n    \"paint.paintEditor.redo\": \"Ponovi\",\n    \"paint.paintEditor.forward\": \"Naprijed\",\n    \"paint.paintEditor.backward\": \"Natrag\",\n    \"paint.paintEditor.front\": \"prednji\",\n    \"paint.paintEditor.back\": \"Stražnji\",\n    \"paint.paintEditor.more\": \"Više\",\n    \"paint.modeTools.brushSize\": \"Veličina\",\n    \"paint.modeTools.eraserSize\": \"Debljina gumice\",\n    \"paint.modeTools.copy\": \"Kopiraj\",\n    \"paint.modeTools.paste\": \"Zalijepi\",\n    \"paint.modeTools.delete\": \"Izbriši\",\n    \"paint.modeTools.curved\": \"Zaobljen\",\n    \"paint.modeTools.pointed\": \"Šiljast\",\n    \"paint.modeTools.thickness\": \"Debljina\",\n    \"paint.modeTools.flipHorizontal\": \"Obrni vodoravno\",\n    \"paint.modeTools.flipVertical\": \"Obrni okomito\",\n    \"paint.modeTools.filled\": \"Ispunjeno\",\n    \"paint.modeTools.outlined\": \"Obrubljeno\",\n    \"paint.paintEditor.bitmap\": \"Pretvori u mapu bitova\",\n    \"paint.paintEditor.vector\": \"Pretvori u vektor\",\n    \"paint.paintEditor.fill\": \"Ispuna\",\n    \"paint.paintEditor.stroke\": \"Obrub\",\n    \"paint.brushMode.brush\": \"Kist\",\n    \"paint.eraserMode.eraser\": \"Gumica\",\n    \"paint.fillMode.fill\": \"Ispuna\",\n    \"paint.lineMode.line\": \"Linija\",\n    \"paint.ovalMode.oval\": \"Kružnica\",\n    \"paint.rectMode.rect\": \"Pravokutnik\",\n    \"paint.reshapeMode.reshape\": \"Preoblikuj\",\n    \"paint.roundedRectMode.roundedRect\": \"Pravokutnik\",\n    \"paint.selectMode.select\": \"Označi\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Zamijeni\"\n  },\n  \"xh\": {\n    \"paint.paintEditor.hue\": \"Umbala\",\n    \"paint.paintEditor.saturation\": \"Ukugcwala\",\n    \"paint.paintEditor.brightness\": \"Ukuqaqamba\",\n    \"gui.comingSoon.message1\": \"Ungakhathazehi, sikuyo {emoji}\",\n    \"gui.comingSoon.message2\": \"Iyeza msinyane...\",\n    \"gui.comingSoon.message3\": \"Sisebenza yona {emoji}\",\n    \"paint.paintEditor.costume\": \"Ikhostyum\",\n    \"paint.paintEditor.group\": \"Iqela\",\n    \"paint.paintEditor.ungroup\": \"Phasalakisa\",\n    \"paint.paintEditor.undo\": \"Qhaqha\",\n    \"paint.paintEditor.redo\": \"Yenza kwakhona\",\n    \"paint.paintEditor.forward\": \"Phambili\",\n    \"paint.paintEditor.backward\": \"Emva\",\n    \"paint.paintEditor.front\": \"Ngaphambili\",\n    \"paint.paintEditor.back\": \"emva\",\n    \"paint.paintEditor.more\": \"Ngaphezulu\",\n    \"paint.modeTools.brushSize\": \"Ubungakanani\",\n    \"paint.modeTools.eraserSize\": \"Ubungakanani besicimi\",\n    \"paint.modeTools.copy\": \"Khuphela\",\n    \"paint.modeTools.paste\": \"Ncamathisela\",\n    \"paint.modeTools.delete\": \"Cima\",\n    \"paint.modeTools.curved\": \"Inamagophe\",\n    \"paint.modeTools.pointed\": \"Yolathe\",\n    \"paint.modeTools.thickness\": \"Ubungqindilili\",\n    \"paint.modeTools.flipHorizontal\": \"Guqula ububanzi\",\n    \"paint.modeTools.flipVertical\": \"Guqula ubunzulu\",\n    \"paint.modeTools.filled\": \"Ugcwalise\",\n    \"paint.modeTools.outlined\": \"Uyicacise nzulu\",\n    \"paint.paintEditor.bitmap\": \"Qhagamshela ku-Bitmap\",\n    \"paint.paintEditor.vector\": \"Guqula ibe yi- Vector\",\n    \"paint.paintEditor.fill\": \"Gcwalisa\",\n    \"paint.paintEditor.stroke\": \"Cacisa nzulu\",\n    \"paint.brushMode.brush\": \"Phulula\",\n    \"paint.eraserMode.eraser\": \"Isixhobo sokucima\",\n    \"paint.fillMode.fill\": \"Gcwalisa\",\n    \"paint.lineMode.line\": \"Umgca\",\n    \"paint.ovalMode.oval\": \"Isangqa\",\n    \"paint.rectMode.rect\": \"Ixande\",\n    \"paint.reshapeMode.reshape\": \"Milisa okutsha\",\n    \"paint.roundedRectMode.roundedRect\": \"Unxantathu owenziwe ronte\",\n    \"paint.selectMode.select\": \"Khetha\",\n    \"paint.textMode.text\": \"Umbhalo\",\n    \"paint.colorPicker.swap\": \"Tshintsha\"\n  },\n  \"zu\": {\n    \"paint.paintEditor.hue\": \"Umbala\",\n    \"paint.paintEditor.saturation\": \"Ukukhanya kombala\",\n    \"paint.paintEditor.brightness\": \"Ukukhanya\",\n    \"gui.comingSoon.message1\": \"Ungakhazeni sesikhona siyasebenza {emoji}\",\n    \"gui.comingSoon.message2\": \"Kuyeza Maduzane...\",\n    \"gui.comingSoon.message3\": \"Sisebenza kona kuyimanje {emoji}\",\n    \"paint.paintEditor.costume\": \"Impahla\",\n    \"paint.paintEditor.group\": \"Iqembu\",\n    \"paint.paintEditor.ungroup\": \"Hlukanisa\",\n    \"paint.paintEditor.undo\": \"Yenza kabusha\",\n    \"paint.paintEditor.redo\": \"Ukwenzakabusha\",\n    \"paint.paintEditor.forward\": \"Phambili\",\n    \"paint.paintEditor.backward\": \"Emuva\",\n    \"paint.paintEditor.front\": \"Phambili\",\n    \"paint.paintEditor.back\": \"Emuva\",\n    \"paint.paintEditor.more\": \"Okunye\",\n    \"paint.modeTools.brushSize\": \"Isisindo\",\n    \"paint.modeTools.eraserSize\": \"Irabha ubude\",\n    \"paint.modeTools.copy\": \"Khopisha\",\n    \"paint.modeTools.paste\": \"Namathisela\",\n    \"paint.modeTools.delete\": \"Susa\",\n    \"paint.modeTools.curved\": \"Lugobile \",\n    \"paint.modeTools.pointed\": \"Iphoyinti\",\n    \"paint.modeTools.thickness\": \"Ugqinsi\",\n    \"paint.modeTools.flipHorizontal\": \"Phendula ngokuya emaceleni\",\n    \"paint.modeTools.flipVertical\": \"Phendula ngokuya phansi naphezulu\",\n    \"paint.modeTools.filled\": \"Kugcwele\",\n    \"paint.modeTools.outlined\": \"Kugqamile\",\n    \"paint.paintEditor.bitmap\": \"Shitsela kuBitmap\",\n    \"paint.paintEditor.vector\": \"Shitsela kuVector\",\n    \"paint.paintEditor.fill\": \"Gcwalisa\",\n    \"paint.paintEditor.stroke\": \"Kugqamise\",\n    \"paint.brushMode.brush\": \"Ibhrashi\",\n    \"paint.eraserMode.eraser\": \"Irabha\",\n    \"paint.fillMode.fill\": \"Gcwalisa\",\n    \"paint.lineMode.line\": \"Umugqa\",\n    \"paint.ovalMode.oval\": \"Indingiliza\",\n    \"paint.rectMode.rect\": \"Irectangle\",\n    \"paint.reshapeMode.reshape\": \"Ukubuyisele esimeni\",\n    \"paint.roundedRectMode.roundedRect\": \"Indingiliza yerectangle\",\n    \"paint.selectMode.select\": \"Khetha\",\n    \"paint.textMode.text\": \"Umbhalo\",\n    \"paint.colorPicker.swap\": \"Shitsha \"\n  },\n  \"is\": {\n    \"paint.paintEditor.hue\": \"Litur\",\n    \"paint.paintEditor.saturation\": \"mettun\",\n    \"paint.paintEditor.brightness\": \"Birtustig\",\n    \"gui.comingSoon.message1\": \"Ekki hafa áhyggjur, við erum að vinna í þessu {emoji}\",\n    \"gui.comingSoon.message2\": \"Kemur bráðlega...\",\n    \"gui.comingSoon.message3\": \"Við erum að vinna í þessu {emoji}\",\n    \"paint.paintEditor.costume\": \"Búningur\",\n    \"paint.paintEditor.group\": \"Hópur\",\n    \"paint.paintEditor.ungroup\": \"Leysa upp hóp\",\n    \"paint.paintEditor.undo\": \"Afgera\",\n    \"paint.paintEditor.redo\": \"Endurgera\",\n    \"paint.paintEditor.forward\": \"Áfram\",\n    \"paint.paintEditor.backward\": \"Aftur á bak\",\n    \"paint.paintEditor.front\": \"Fremst\",\n    \"paint.paintEditor.back\": \"Til baka\",\n    \"paint.paintEditor.more\": \"Meira\",\n    \"paint.modeTools.brushSize\": \"Stærð\",\n    \"paint.modeTools.eraserSize\": \"Stærð strokleðurs\",\n    \"paint.modeTools.copy\": \"Afrita\",\n    \"paint.modeTools.paste\": \"Líma\",\n    \"paint.modeTools.delete\": \"Eyða\",\n    \"paint.modeTools.curved\": \"Sveigja\",\n    \"paint.modeTools.pointed\": \"Oddmjótt\",\n    \"paint.modeTools.thickness\": \"Þykkt\",\n    \"paint.modeTools.flipHorizontal\": \"Flippa lárétt\",\n    \"paint.modeTools.flipVertical\": \"Flippa lóðrétt\",\n    \"paint.modeTools.filled\": \"Fylla\",\n    \"paint.modeTools.outlined\": \"Útlína\",\n    \"paint.paintEditor.bitmap\": \"Umbreyta í Bitmap\",\n    \"paint.paintEditor.vector\": \"Umbreyta í vektor\",\n    \"paint.paintEditor.fill\": \"Fylla\",\n    \"paint.paintEditor.stroke\": \"Útlína\",\n    \"paint.brushMode.brush\": \"Bursti\",\n    \"paint.eraserMode.eraser\": \"Strokleður\",\n    \"paint.fillMode.fill\": \"Fylla\",\n    \"paint.lineMode.line\": \"Lína\",\n    \"paint.ovalMode.oval\": \"Hringur\",\n    \"paint.rectMode.rect\": \"Ferhyrningur\",\n    \"paint.reshapeMode.reshape\": \"Ummynda\",\n    \"paint.roundedRectMode.roundedRect\": \"Rúnaður ferhyrningur\",\n    \"paint.selectMode.select\": \"Velja\",\n    \"paint.textMode.text\": \"Texti\",\n    \"paint.colorPicker.swap\": \"Skipta\"\n  },\n  \"it\": {\n    \"paint.paintEditor.hue\": \"Colore\",\n    \"paint.paintEditor.saturation\": \"Saturazione\",\n    \"paint.paintEditor.brightness\": \"Luminosità\",\n    \"gui.comingSoon.message1\": \"Tranquillo, ci stiamo lavorando {emoji}\",\n    \"gui.comingSoon.message2\": \"Disponibile a Breve...\",\n    \"gui.comingSoon.message3\": \"Ci stiamo lavorando {emoji}\",\n    \"paint.paintEditor.costume\": \"Costume\",\n    \"paint.paintEditor.group\": \"Raggruppa\",\n    \"paint.paintEditor.ungroup\": \"Separa\",\n    \"paint.paintEditor.undo\": \"Annulla\",\n    \"paint.paintEditor.redo\": \"Ripristina\",\n    \"paint.paintEditor.forward\": \"Porta avanti\",\n    \"paint.paintEditor.backward\": \"Porta indietro\",\n    \"paint.paintEditor.front\": \"Primo piano\",\n    \"paint.paintEditor.back\": \"Secondo piano\",\n    \"paint.paintEditor.more\": \"Altro\",\n    \"paint.modeTools.brushSize\": \"Dimensione\",\n    \"paint.modeTools.eraserSize\": \"Dimensione gomma\",\n    \"paint.modeTools.copy\": \"Copia\",\n    \"paint.modeTools.paste\": \"Incolla\",\n    \"paint.modeTools.delete\": \"Cancella\",\n    \"paint.modeTools.curved\": \"Curva\",\n    \"paint.modeTools.pointed\": \"Angolo\",\n    \"paint.modeTools.thickness\": \"Spessore\",\n    \"paint.modeTools.flipHorizontal\": \"Rifletti in Orizzontale\",\n    \"paint.modeTools.flipVertical\": \"Capovolgi\",\n    \"paint.modeTools.filled\": \"Riempito\",\n    \"paint.modeTools.outlined\": \"Contorno\",\n    \"paint.paintEditor.bitmap\": \"Converti in Bitmap\",\n    \"paint.paintEditor.vector\": \"Converti in Vettoriale\",\n    \"paint.paintEditor.fill\": \"Riempimento\",\n    \"paint.paintEditor.stroke\": \"Contorno\",\n    \"paint.brushMode.brush\": \"Pennello\",\n    \"paint.eraserMode.eraser\": \"Gomma\",\n    \"paint.fillMode.fill\": \"Riempimento\",\n    \"paint.lineMode.line\": \"Linea\",\n    \"paint.ovalMode.oval\": \"Cerchio\",\n    \"paint.rectMode.rect\": \"Rettangolo\",\n    \"paint.reshapeMode.reshape\": \"Modifica contorno\",\n    \"paint.roundedRectMode.roundedRect\": \"Rettangolo Arrotondato\",\n    \"paint.selectMode.select\": \"Seleziona\",\n    \"paint.textMode.text\": \"Testo\",\n    \"paint.colorPicker.swap\": \"Scambia\"\n  },\n  \"ka\": {\n    \"paint.paintEditor.hue\": \"ფერი\",\n    \"paint.paintEditor.saturation\": \"გაჯერება\",\n    \"paint.paintEditor.brightness\": \"სიკაშკაშე\",\n    \"gui.comingSoon.message1\": \"ნუ ღელავთ, ჩვენ ვმუშაობთ ამ პრობლემაზე {emoji}\",\n    \"gui.comingSoon.message2\": \"მალე იქნება...\",\n    \"gui.comingSoon.message3\": \"ჩვენ ვმუშაობთ ამ პრობლემაზე {emoji}\",\n    \"paint.paintEditor.costume\": \"კოსტიუმი\",\n    \"paint.paintEditor.group\": \"დაჯგუფება\",\n    \"paint.paintEditor.ungroup\": \"ჯგუფის დაშლა \",\n    \"paint.paintEditor.undo\": \"გაუქმება\",\n    \"paint.paintEditor.redo\": \"აღდგენა\",\n    \"paint.paintEditor.forward\": \"წინ\",\n    \"paint.paintEditor.backward\": \"უკან\",\n    \"paint.paintEditor.front\": \"წინა პლანზე\",\n    \"paint.paintEditor.back\": \"უკანა პლანზე\",\n    \"paint.paintEditor.more\": \"სხვა\",\n    \"paint.modeTools.brushSize\": \"ზომა\",\n    \"paint.modeTools.eraserSize\": \"საშლელის ზომა\",\n    \"paint.modeTools.copy\": \"კოპირება\",\n    \"paint.modeTools.paste\": \"ჩასმა\",\n    \"paint.modeTools.delete\": \"წაშლა\",\n    \"paint.modeTools.curved\": \"გამრუდებული\",\n    \"paint.modeTools.pointed\": \"მიმართული\",\n    \"paint.modeTools.thickness\": \"სისქე\",\n    \"paint.modeTools.flipHorizontal\": \"ჰორიზონტალურად არეკვლა\",\n    \"paint.modeTools.flipVertical\": \"ვერტიკალურად არეკვლა\",\n    \"paint.modeTools.filled\": \"შევსებული\",\n    \"paint.modeTools.outlined\": \"შემოხაზული\",\n    \"paint.paintEditor.bitmap\": \"რასტრულ გამოსახულებად გარდაქმნა\",\n    \"paint.paintEditor.vector\": \"ვექტორულ გამოსახულებად გარდაქმნა\",\n    \"paint.paintEditor.fill\": \"შევსება\",\n    \"paint.paintEditor.stroke\": \"გამოკვეთე\",\n    \"paint.brushMode.brush\": \"ფუნჯი\",\n    \"paint.eraserMode.eraser\": \"საშლელი\",\n    \"paint.fillMode.fill\": \"შევსება\",\n    \"paint.lineMode.line\": \"ხაზი\",\n    \"paint.ovalMode.oval\": \"წრე\",\n    \"paint.rectMode.rect\": \"მართკუთხედი\",\n    \"paint.reshapeMode.reshape\": \"ფორმის შეცვლა\",\n    \"paint.roundedRectMode.roundedRect\": \"დამრგვალებული მართკუთხედი\",\n    \"paint.selectMode.select\": \"არჩევა\",\n    \"paint.textMode.text\": \"ტექსტი\",\n    \"paint.colorPicker.swap\": \"შეცვლა\"\n  },\n  \"kk\": {\n    \"paint.paintEditor.hue\": \"Түс\",\n    \"paint.paintEditor.saturation\": \"Қанықтылық\",\n    \"paint.paintEditor.brightness\": \"Жарықтығы\",\n    \"gui.comingSoon.message1\": \"Уайымдамаңыз, біз оған дайынбыз{emoji}\",\n    \"gui.comingSoon.message2\": \"Жуырда...\",\n    \"gui.comingSoon.message3\": \"Біз бұнымен жұмыс істеп жатырмыз{emoji}\",\n    \"paint.paintEditor.costume\": \"Костюм\",\n    \"paint.paintEditor.group\": \"Топтау\",\n    \"paint.paintEditor.ungroup\": \"топтан шығару\",\n    \"paint.paintEditor.undo\": \"Болдырмау\",\n    \"paint.paintEditor.redo\": \"Қайталау\",\n    \"paint.paintEditor.forward\": \"Алға\",\n    \"paint.paintEditor.backward\": \"Артқа\",\n    \"paint.paintEditor.front\": \"Фронт\",\n    \"paint.paintEditor.back\": \"Артқа\",\n    \"paint.paintEditor.more\": \"Көбірек\",\n    \"paint.modeTools.brushSize\": \"өлшем\",\n    \"paint.modeTools.eraserSize\": \"Өшіргіштің өлшемі\",\n    \"paint.modeTools.copy\": \"Көшіру\",\n    \"paint.modeTools.paste\": \"Қою\",\n    \"paint.modeTools.delete\": \"Жою\",\n    \"paint.modeTools.curved\": \"Қисық\",\n    \"paint.modeTools.pointed\": \"Көрсетілген\\n\",\n    \"paint.modeTools.thickness\": \"Қалыңдығы\",\n    \"paint.modeTools.flipHorizontal\": \"Көлденеңінен аудару\",\n    \"paint.modeTools.flipVertical\": \"Тігінен аудару\",\n    \"paint.modeTools.filled\": \"Толтырылған\",\n    \"paint.modeTools.outlined\": \"Сызылған\",\n    \"paint.paintEditor.bitmap\": \"Растрлық графикаға ауыстыру\",\n    \"paint.paintEditor.vector\": \"Векторлық графикаға ауыстыру\",\n    \"paint.paintEditor.fill\": \"Толтыру\",\n    \"paint.paintEditor.stroke\": \"контур\",\n    \"paint.brushMode.brush\": \"Қылқалам\",\n    \"paint.eraserMode.eraser\": \"Өшіргіш\",\n    \"paint.fillMode.fill\": \"Толтыру\",\n    \"paint.lineMode.line\": \"Сызық\",\n    \"paint.ovalMode.oval\": \"Шеңбер\",\n    \"paint.rectMode.rect\": \"Тікбұрыш\",\n    \"paint.reshapeMode.reshape\": \"Форманы өзгерту\",\n    \"paint.roundedRectMode.roundedRect\": \"Дөңгелек бұрышты төртбұрыш\",\n    \"paint.selectMode.select\": \"Таңдау\",\n    \"paint.textMode.text\": \"Мәтін\",\n    \"paint.colorPicker.swap\": \"Ауыстыру\"\n  },\n  \"qu\": {\n    \"paint.paintEditor.hue\": \"kulur\",\n    \"paint.paintEditor.saturation\": \"Llimpi yuraqchay\",\n    \"paint.paintEditor.brightness\": \"kanchiq\",\n    \"gui.comingSoon.message1\": \"ama llakikuychu chanipunim {emoji}\",\n    \"gui.comingSoon.message2\": \"Hukninkama...\",\n    \"gui.comingSoon.message3\": \"chay punim llamkachkaniku {emoji}\",\n    \"paint.paintEditor.costume\": \"Pacha\",\n    \"paint.paintEditor.group\": \"Huñusqa\",\n    \"paint.paintEditor.ungroup\": \"Rakisqa\",\n    \"paint.paintEditor.undo\": \"ruraray\",\n    \"paint.paintEditor.redo\": \"kutipay\",\n    \"paint.paintEditor.forward\": \"Ñawpaqman\",\n    \"paint.paintEditor.backward\": \"Qipaman\",\n    \"paint.paintEditor.front\": \"Chimpa\",\n    \"paint.paintEditor.back\": \"Hipaman\",\n    \"paint.paintEditor.more\": \"aswan\",\n    \"paint.modeTools.brushSize\": \"Hatun\",\n    \"paint.modeTools.eraserSize\": \"Hatun Pichana\",\n    \"paint.modeTools.copy\": \"kupyay\",\n    \"paint.modeTools.paste\": \"Laqay\",\n    \"paint.modeTools.delete\": \"Pichay\",\n    \"paint.modeTools.curved\": \"Muyo\",\n    \"paint.modeTools.pointed\": \"Tupsuyaq\",\n    \"paint.modeTools.thickness\": \"Rakuqnin\",\n    \"paint.modeTools.flipHorizontal\": \"Kinrayman Tikrasqa\",\n    \"paint.modeTools.flipVertical\": \"Sayaqman Tikrasqa\",\n    \"paint.modeTools.filled\": \"Huntasqa\",\n    \"paint.modeTools.outlined\": \"Sikwiy\",\n    \"paint.paintEditor.bitmap\": \"Tikrayay MapaBitman\",\n    \"paint.paintEditor.vector\": \"Tikray Vikturman\",\n    \"paint.paintEditor.fill\": \"huntay\",\n    \"paint.paintEditor.stroke\": \"Muyuriqnin\",\n    \"paint.brushMode.brush\": \"Llimpinapaq\",\n    \"paint.eraserMode.eraser\": \"Pichana\",\n    \"paint.fillMode.fill\": \"Huntasqa\",\n    \"paint.lineMode.line\": \"Sikwi\",\n    \"paint.ovalMode.oval\": \"Muyu\",\n    \"paint.rectMode.rect\": \"Tawa Kuchuyuq\",\n    \"paint.reshapeMode.reshape\": \"Allichana\",\n    \"paint.roundedRectMode.roundedRect\": \"Muyuq hina Tawa Kuchu\",\n    \"paint.selectMode.select\": \"Akllasqa\",\n    \"paint.textMode.text\": \"Qillqay\",\n    \"paint.colorPicker.swap\": \"Hukniraqchay\"\n  },\n  \"sw\": {\n    \"paint.paintEditor.hue\": \"Rangi\",\n    \"paint.paintEditor.saturation\": \"Kiasi Ya Rangi\",\n    \"paint.paintEditor.brightness\": \"Mng'aro\",\n    \"gui.comingSoon.message1\": \"Tunashughulikia {emoji}\",\n    \"gui.comingSoon.message2\": \"Inakuja hivi karibuni...\",\n    \"gui.comingSoon.message3\": \"Tunashughulikia {emoji}\",\n    \"paint.paintEditor.costume\": \"Mtindo\",\n    \"paint.paintEditor.group\": \"Kusanya\",\n    \"paint.paintEditor.ungroup\": \"Toa Kwenye Kundi\",\n    \"paint.paintEditor.undo\": \"Ondoa\",\n    \"paint.paintEditor.redo\": \"Rudia\",\n    \"paint.paintEditor.forward\": \"Enda Mbele\",\n    \"paint.paintEditor.backward\": \"Rudi Nyuma\",\n    \"paint.paintEditor.front\": \"Mbele\",\n    \"paint.paintEditor.back\": \"Nyuma\",\n    \"paint.paintEditor.more\": \"Zaidi\",\n    \"paint.modeTools.brushSize\": \"Ukubwa \",\n    \"paint.modeTools.eraserSize\": \"Ukubwa wa kifutio\",\n    \"paint.modeTools.copy\": \"Nakala\",\n    \"paint.modeTools.paste\": \"Bandika\",\n    \"paint.modeTools.delete\": \"Futa\",\n    \"paint.modeTools.curved\": \"Fanya Mzingo\",\n    \"paint.modeTools.pointed\": \"Fanya Kipeo\",\n    \"paint.modeTools.thickness\": \"Unene\",\n    \"paint.modeTools.flipHorizontal\": \"Zungusha Kwa Mlalo\",\n    \"paint.modeTools.flipVertical\": \"Zungusha Kwa Wima\",\n    \"paint.modeTools.filled\": \"Iliyojazwa\",\n    \"paint.modeTools.outlined\": \"Mstari Uliozungukwa\",\n    \"paint.paintEditor.bitmap\": \"Badilisha kuwa Bitmap\",\n    \"paint.paintEditor.vector\": \"Badilisha kuwa Vector\",\n    \"paint.paintEditor.fill\": \"Jaza Rangi\",\n    \"paint.paintEditor.stroke\": \"Mstari Wa Kuzunguka\",\n    \"paint.brushMode.brush\": \"Brashi\",\n    \"paint.eraserMode.eraser\": \"Kifutio\",\n    \"paint.fillMode.fill\": \"Jaza Rangi\",\n    \"paint.lineMode.line\": \"Mstari\",\n    \"paint.ovalMode.oval\": \"Duara\",\n    \"paint.rectMode.rect\": \"Mstatili\",\n    \"paint.reshapeMode.reshape\": \"Badilisha Umbo\",\n    \"paint.roundedRectMode.roundedRect\": \"Mstatili Uilo Na Pembe Za Mviringo\",\n    \"paint.selectMode.select\": \"Chagua\",\n    \"paint.textMode.text\": \"Maandishi\",\n    \"paint.colorPicker.swap\": \"Badilisha\"\n  },\n  \"ht\": {\n    \"paint.paintEditor.hue\": \"Koulè\",\n    \"paint.paintEditor.saturation\": \"Satirasyon\",\n    \"paint.paintEditor.brightness\": \"Ekleraj\",\n    \"gui.comingSoon.message1\": \"Pa enkyete w, n ap travay sou li{emoji}\",\n    \"gui.comingSoon.message2\": \"Disponib talè\",\n    \"gui.comingSoon.message3\": \"N ap travay sou li{emoji}\",\n    \"paint.paintEditor.costume\": \"Kostim\",\n    \"paint.paintEditor.group\": \"Gwoup\",\n    \"paint.paintEditor.ungroup\": \"Degwoupe\",\n    \"paint.paintEditor.undo\": \"Anile\",\n    \"paint.paintEditor.redo\": \"Fè ankò\",\n    \"paint.paintEditor.forward\": \"Avanse\",\n    \"paint.paintEditor.backward\": \"Bak\",\n    \"paint.paintEditor.front\": \"Douvan\",\n    \"paint.paintEditor.back\": \"Dèyè\",\n    \"paint.paintEditor.more\": \"Plis\",\n    \"paint.modeTools.brushSize\": \"Tay\",\n    \"paint.modeTools.eraserSize\": \"Tay gòm\",\n    \"paint.modeTools.copy\": \"Kopye\",\n    \"paint.modeTools.paste\": \"Kole\",\n    \"paint.modeTools.delete\": \"Efase\",\n    \"paint.modeTools.curved\": \"Koube\",\n    \"paint.modeTools.pointed\": \"Pwenti\",\n    \"paint.modeTools.thickness\": \"Epesè\",\n    \"paint.modeTools.flipHorizontal\": \"Ranvèse orizontalman\",\n    \"paint.modeTools.flipVertical\": \"Ranvèse vètikalman\",\n    \"paint.modeTools.filled\": \"Ranpli\",\n    \"paint.modeTools.outlined\": \"An kontou\",\n    \"paint.paintEditor.bitmap\": \"Konvèti an Bitmap\",\n    \"paint.paintEditor.vector\": \"Konvèti an vektè\",\n    \"paint.paintEditor.fill\": \"Ranpli\",\n    \"paint.paintEditor.stroke\": \"Kontou\",\n    \"paint.brushMode.brush\": \"Penso\",\n    \"paint.eraserMode.eraser\": \"Gòm\",\n    \"paint.fillMode.fill\": \"Ranpli\",\n    \"paint.lineMode.line\": \"Liy\",\n    \"paint.ovalMode.oval\": \"Sèk\",\n    \"paint.rectMode.rect\": \"Rektang\",\n    \"paint.reshapeMode.reshape\": \"Refòme\",\n    \"paint.roundedRectMode.roundedRect\": \"Rektang Awondi\",\n    \"paint.selectMode.select\": \"Seleksyone\",\n    \"paint.textMode.text\": \"Tèks\",\n    \"paint.colorPicker.swap\": \"Echanje\"\n  },\n  \"ku\": {\n    \"paint.paintEditor.hue\": \"Reng\",\n    \"paint.paintEditor.saturation\": \"Têrbûna Reng\",\n    \"paint.paintEditor.brightness\": \"Ronahî\",\n    \"gui.comingSoon.message1\": \"Xemgîn nebe, em hene {emoji}\",\n    \"gui.comingSoon.message2\": \"Pir Nêzîk e...\",\n    \"gui.comingSoon.message3\": \"Em li ser dixebitin {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostum\",\n    \"paint.paintEditor.group\": \"Kom\",\n    \"paint.paintEditor.ungroup\": \"Komê belav bike\",\n    \"paint.paintEditor.undo\": \"Vegerîne\",\n    \"paint.paintEditor.redo\": \"Dîsa pêşve\",\n    \"paint.paintEditor.forward\": \"Pêşve\",\n    \"paint.paintEditor.backward\": \"Paşve\",\n    \"paint.paintEditor.front\": \"Herî Pêşî\",\n    \"paint.paintEditor.back\": \"Herî Paşî\",\n    \"paint.paintEditor.more\": \"Zêdetir\",\n    \"paint.modeTools.brushSize\": \"Mezinahî\",\n    \"paint.modeTools.eraserSize\": \"Mezinahiya jêbirkê\",\n    \"paint.modeTools.copy\": \"Kopî bike\",\n    \"paint.modeTools.paste\": \"Bizeliqîne\",\n    \"paint.modeTools.delete\": \"Jê bibe\",\n    \"paint.modeTools.curved\": \"Badayî\",\n    \"paint.modeTools.pointed\": \"Nîşankirî\",\n    \"paint.modeTools.thickness\": \"Qalindbûn\",\n    \"paint.modeTools.flipHorizontal\": \"Vexistî Bizîvirîne\",\n    \"paint.modeTools.flipVertical\": \"Stûnî Bizîvirîne\",\n    \"paint.modeTools.filled\": \"Tijebûyî\",\n    \"paint.modeTools.outlined\": \"Kurte\",\n    \"paint.paintEditor.bitmap\": \"Veguherîne Bitmapê\",\n    \"paint.paintEditor.vector\": \"Veguherîne Vektorê\",\n    \"paint.paintEditor.fill\": \"Tije bike\",\n    \"paint.paintEditor.stroke\": \"Puxte\",\n    \"paint.brushMode.brush\": \"Firçe\",\n    \"paint.eraserMode.eraser\": \"Jêbirk\",\n    \"paint.fillMode.fill\": \"Tije bike\",\n    \"paint.lineMode.line\": \"Çixêz\",\n    \"paint.ovalMode.oval\": \"Çember\",\n    \"paint.rectMode.rect\": \"Çarqozî\",\n    \"paint.reshapeMode.reshape\": \"Şêweyê biguherîne\",\n    \"paint.roundedRectMode.roundedRect\": \"Çarqoziya Çerxkirî\",\n    \"paint.selectMode.select\": \"Hilbijêre\",\n    \"paint.textMode.text\": \"Nivîs\",\n    \"paint.colorPicker.swap\": \"Pev Biguherîne\"\n  },\n  \"ckb\": {\n    \"paint.paintEditor.hue\": \"ڕەنگ\",\n    \"paint.paintEditor.saturation\": \"تێری\",\n    \"paint.paintEditor.brightness\": \"ڕووناکی\",\n    \"gui.comingSoon.message1\": \"نیگەران مەبە، ئێمە خەریکین {emoji}\",\n    \"gui.comingSoon.message2\": \"بەم زووانە...\",\n    \"gui.comingSoon.message3\": \"ئێمە کاری لەسەر دەکەین {emoji}\",\n    \"paint.paintEditor.costume\": \"بەرگ\",\n    \"paint.paintEditor.group\": \"گروپ کردن\",\n    \"paint.paintEditor.ungroup\": \"نا گروپ کردن\",\n    \"paint.paintEditor.undo\": \"هه‌ڵوه‌شاندنه‌وه‌\",\n    \"paint.paintEditor.redo\": \"کردنەوە\",\n    \"paint.paintEditor.forward\": \"بۆ پێشەوە\",\n    \"paint.paintEditor.backward\": \"بۆ دواوە\",\n    \"paint.paintEditor.front\": \"پێشەوە\",\n    \"paint.paintEditor.back\": \"دواوە\",\n    \"paint.paintEditor.more\": \"زیاتر\",\n    \"paint.modeTools.brushSize\": \"قەبارە\",\n    \"paint.modeTools.eraserSize\": \"قەبارەی سڕەوە\",\n    \"paint.modeTools.copy\": \"لەبەرگرتنەوە\",\n    \"paint.modeTools.paste\": \"لکاندن\",\n    \"paint.modeTools.delete\": \"سڕینەوە\",\n    \"paint.modeTools.curved\": \"چەماوە\",\n    \"paint.modeTools.pointed\": \"ئاماژە بۆکراو\",\n    \"paint.modeTools.thickness\": \"ئەستوورایی\",\n    \"paint.modeTools.flipHorizontal\": \"هەڵگەڕانەوەی ئاسۆیی\",\n    \"paint.modeTools.flipVertical\": \"هەڵگەڕانەوەی ستوونی\",\n    \"paint.modeTools.filled\": \"پڕکراوە\",\n    \"paint.modeTools.outlined\": \"چوارچێوەکراو\",\n    \"paint.paintEditor.bitmap\": \"گۆڕینی بۆ Bitmap\",\n    \"paint.paintEditor.vector\": \"گۆڕینی بۆ Vector\",\n    \"paint.paintEditor.fill\": \"پڕکردنەوە\",\n    \"paint.paintEditor.stroke\": \"چوارچێوە\",\n    \"paint.brushMode.brush\": \"فڵچە\",\n    \"paint.eraserMode.eraser\": \"سڕەوە\",\n    \"paint.fillMode.fill\": \"پڕکردنەوە\",\n    \"paint.lineMode.line\": \"هێڵ\",\n    \"paint.ovalMode.oval\": \"بازنە\",\n    \"paint.rectMode.rect\": \"لاکێشە\",\n    \"paint.reshapeMode.reshape\": \"شێوەکردنەوە\",\n    \"paint.roundedRectMode.roundedRect\": \"لاکێشەی خڕ\",\n    \"paint.selectMode.select\": \"دیاریکردن\",\n    \"paint.textMode.text\": \"دەق\",\n    \"paint.colorPicker.swap\": \"ئاڵوگۆڕ\"\n  },\n  \"lv\": {\n    \"paint.paintEditor.hue\": \"Krāsa\",\n    \"paint.paintEditor.saturation\": \"Piesātinājums\",\n    \"paint.paintEditor.brightness\": \"Gaišums\",\n    \"gui.comingSoon.message1\": \"Neuztraucies, mēs pie tā strādājam {emoji}\",\n    \"gui.comingSoon.message2\": \"Drīzumā...\",\n    \"gui.comingSoon.message3\": \"Mēs pie tā strādājam {emoji}\",\n    \"paint.paintEditor.costume\": \"Tērps\",\n    \"paint.paintEditor.group\": \"Grupēt\",\n    \"paint.paintEditor.ungroup\": \"Atgrupēt\",\n    \"paint.paintEditor.undo\": \"Atsaukt\",\n    \"paint.paintEditor.redo\": \"Atcelt atsaukšanu\",\n    \"paint.paintEditor.forward\": \"Uz priekšu\",\n    \"paint.paintEditor.backward\": \"Atpakaļ\",\n    \"paint.paintEditor.front\": \"Uz priekšpusi\",\n    \"paint.paintEditor.back\": \"Uz aizmuguri\",\n    \"paint.paintEditor.more\": \"Vairāk\",\n    \"paint.modeTools.brushSize\": \"Izmērs\",\n    \"paint.modeTools.eraserSize\": \"Dzēšgumijas izmērs\",\n    \"paint.modeTools.copy\": \"Kopēt\",\n    \"paint.modeTools.paste\": \"Ielīmēt\",\n    \"paint.modeTools.delete\": \"Dzēst\",\n    \"paint.modeTools.curved\": \"Izliekts\",\n    \"paint.modeTools.pointed\": \"Lauzts\",\n    \"paint.modeTools.thickness\": \"Biezums\",\n    \"paint.modeTools.flipHorizontal\": \"Apmest horizontāli\",\n    \"paint.modeTools.flipVertical\": \"Apmest vertikāli\",\n    \"paint.modeTools.filled\": \"Aizpildīts\",\n    \"paint.modeTools.outlined\": \"Neaizpildīts\",\n    \"paint.paintEditor.bitmap\": \"Pārvērst rastra grafikā\",\n    \"paint.paintEditor.vector\": \"Pārvērst vektorgrafikā\",\n    \"paint.paintEditor.fill\": \"Aizpildīt\",\n    \"paint.paintEditor.stroke\": \"Kontūra\",\n    \"paint.brushMode.brush\": \"Ota\",\n    \"paint.eraserMode.eraser\": \"Dzēšgumija\",\n    \"paint.fillMode.fill\": \"Aizpildīt\",\n    \"paint.lineMode.line\": \"Līnija\",\n    \"paint.ovalMode.oval\": \"Aplis\",\n    \"paint.rectMode.rect\": \"Taisnstūris\",\n    \"paint.reshapeMode.reshape\": \"Pārveidot\",\n    \"paint.roundedRectMode.roundedRect\": \"Noapaļots taisnstūris\",\n    \"paint.selectMode.select\": \"Atlasīt\",\n    \"paint.textMode.text\": \"Teksts\",\n    \"paint.colorPicker.swap\": \"Mainīt\"\n  },\n  \"lt\": {\n    \"paint.paintEditor.hue\": \"Spalva\",\n    \"paint.paintEditor.saturation\": \"Sodrumas\",\n    \"paint.paintEditor.brightness\": \"Šviesumas\",\n    \"gui.comingSoon.message1\": \"Ramybės, mes šį bei tą tobuliname {emoji}\",\n    \"gui.comingSoon.message2\": \"Netrukus...\",\n    \"gui.comingSoon.message3\": \"Šį bei tą tobuliname {emoji}\",\n    \"paint.paintEditor.costume\": \"Kaukė\",\n    \"paint.paintEditor.group\": \"Grupuoti\",\n    \"paint.paintEditor.ungroup\": \"Išgrupuoti\",\n    \"paint.paintEditor.undo\": \"Atšaukti\",\n    \"paint.paintEditor.redo\": \"Grąžinti\",\n    \"paint.paintEditor.forward\": \"Artyn\",\n    \"paint.paintEditor.backward\": \"Tolyn\",\n    \"paint.paintEditor.front\": \"Į priekį\",\n    \"paint.paintEditor.back\": \"Atgal\",\n    \"paint.paintEditor.more\": \"Daugiau\",\n    \"paint.modeTools.brushSize\": \"Dydis\",\n    \"paint.modeTools.eraserSize\": \"Trintuko dydis\",\n    \"paint.modeTools.copy\": \"Kopijuoti\",\n    \"paint.modeTools.paste\": \"Įklijuoti\",\n    \"paint.modeTools.delete\": \"Šalinti\",\n    \"paint.modeTools.curved\": \"Lenktas\",\n    \"paint.modeTools.pointed\": \"Tiesus\",\n    \"paint.modeTools.thickness\": \"Storis\",\n    \"paint.modeTools.flipHorizontal\": \"Apversti horizontaliai\",\n    \"paint.modeTools.flipVertical\": \"Apversti vertikaliai\",\n    \"paint.modeTools.filled\": \"Užpildyta\",\n    \"paint.modeTools.outlined\": \"Su kontūru\",\n    \"paint.paintEditor.bitmap\": \"Keisti į piešinį taškais\",\n    \"paint.paintEditor.vector\": \"Keisti į piešinį linijomis\",\n    \"paint.paintEditor.fill\": \"Užpildymas\",\n    \"paint.paintEditor.stroke\": \"Kontūrai\",\n    \"paint.brushMode.brush\": \"Teptukas\",\n    \"paint.eraserMode.eraser\": \"Trintukas\",\n    \"paint.fillMode.fill\": \"Užpildyti\",\n    \"paint.lineMode.line\": \"Linija\",\n    \"paint.ovalMode.oval\": \"Apskritimas\",\n    \"paint.rectMode.rect\": \"Stačiakampis\",\n    \"paint.reshapeMode.reshape\": \"Pakeisti formą\",\n    \"paint.roundedRectMode.roundedRect\": \"Užapvalintas stačiakampis\",\n    \"paint.selectMode.select\": \"Pažymėti\",\n    \"paint.textMode.text\": \"Tekstas\",\n    \"paint.colorPicker.swap\": \"Sukeisti\"\n  },\n  \"hu\": {\n    \"paint.paintEditor.hue\": \"Szín\",\n    \"paint.paintEditor.saturation\": \"Telítettség\",\n    \"paint.paintEditor.brightness\": \"Fényerő\",\n    \"gui.comingSoon.message1\": \"Ne aggódj, rajta vagyunk {emoji}\",\n    \"gui.comingSoon.message2\": \"Hamarosan...\",\n    \"gui.comingSoon.message3\": \"Dolgozunk rajta {emoji}\",\n    \"paint.paintEditor.costume\": \"Jelmez\",\n    \"paint.paintEditor.group\": \"Csoportosítás\",\n    \"paint.paintEditor.ungroup\": \"Csoport bontása\",\n    \"paint.paintEditor.undo\": \"Visszavonás\",\n    \"paint.paintEditor.redo\": \"Mégis\",\n    \"paint.paintEditor.forward\": \"Előreküld\",\n    \"paint.paintEditor.backward\": \"Hátraküld\",\n    \"paint.paintEditor.front\": \"Legelőre\",\n    \"paint.paintEditor.back\": \"Leghátra\",\n    \"paint.paintEditor.more\": \"Több\",\n    \"paint.modeTools.brushSize\": \"Méret\",\n    \"paint.modeTools.eraserSize\": \"Radír méret\",\n    \"paint.modeTools.copy\": \"Másolás\",\n    \"paint.modeTools.paste\": \"Beillesztés\",\n    \"paint.modeTools.delete\": \"Törlés\",\n    \"paint.modeTools.curved\": \"Ívelt\",\n    \"paint.modeTools.pointed\": \"Csúcsos\",\n    \"paint.modeTools.thickness\": \"Vastagság\",\n    \"paint.modeTools.flipHorizontal\": \"Vízszintes tükrözés\",\n    \"paint.modeTools.flipVertical\": \"Függőleges tükrözés\",\n    \"paint.modeTools.filled\": \"Kitöltött\",\n    \"paint.modeTools.outlined\": \"Körvonalazott\",\n    \"paint.paintEditor.bitmap\": \"Konvertálás Bitképpé\",\n    \"paint.paintEditor.vector\": \"Konvertálás Vektorképpe\",\n    \"paint.paintEditor.fill\": \"Kitöltés\",\n    \"paint.paintEditor.stroke\": \"Körvonal\",\n    \"paint.brushMode.brush\": \"Ecset\",\n    \"paint.eraserMode.eraser\": \"Radír\",\n    \"paint.fillMode.fill\": \"Kitöltés\",\n    \"paint.lineMode.line\": \"Vonal\",\n    \"paint.ovalMode.oval\": \"Kör\",\n    \"paint.rectMode.rect\": \"Téglalap\",\n    \"paint.reshapeMode.reshape\": \"Újraformálás\",\n    \"paint.roundedRectMode.roundedRect\": \"Kerekített téglalap\",\n    \"paint.selectMode.select\": \"Kijelölés\",\n    \"paint.textMode.text\": \"Szöveg\",\n    \"paint.colorPicker.swap\": \"Csere\"\n  },\n  \"mi\": {\n    \"paint.paintEditor.hue\": \"Tae\",\n    \"paint.paintEditor.saturation\": \"Waiwai\",\n    \"paint.paintEditor.brightness\": \"Pīataata\",\n    \"gui.comingSoon.message1\": \"Kaua e āwangawanga, ka ekengia e mātou {emoji}\",\n    \"gui.comingSoon.message2\": \"Ākuanei kei konei...\",\n    \"gui.comingSoon.message3\": \"Kei te ngana mātou ki te whakaoti {emoji}\",\n    \"paint.paintEditor.costume\": \"Kākahu\",\n    \"paint.paintEditor.group\": \"Whakarōpūngia\",\n    \"paint.paintEditor.ungroup\": \"Wehea\",\n    \"paint.paintEditor.undo\": \"Wetekia\",\n    \"paint.paintEditor.redo\": \"Mahia anōtia\",\n    \"paint.paintEditor.forward\": \"Ki mua\",\n    \"paint.paintEditor.backward\": \"Ki muri\",\n    \"paint.paintEditor.front\": \"Mua\",\n    \"paint.paintEditor.back\": \"Hoki atu\",\n    \"paint.paintEditor.more\": \"Anō\",\n    \"paint.modeTools.brushSize\": \"Rahi\",\n    \"paint.modeTools.eraserSize\": \"Te rahi kōmuru\",\n    \"paint.modeTools.copy\": \"Tāruatia\",\n    \"paint.modeTools.paste\": \"Whakapiri\",\n    \"paint.modeTools.delete\": \"Mukua\",\n    \"paint.modeTools.curved\": \"Ānau\",\n    \"paint.modeTools.pointed\": \"Koi\",\n    \"paint.modeTools.thickness\": \"Mātotoru\",\n    \"paint.modeTools.flipHorizontal\": \"Pore whakapae\",\n    \"paint.modeTools.flipVertical\": \"Pore poutū\",\n    \"paint.modeTools.filled\": \"Kua kī\",\n    \"paint.modeTools.outlined\": \"Kua whakahuahuatia\",\n    \"paint.paintEditor.bitmap\": \"Whakawhitia hei Maheremoka\",\n    \"paint.paintEditor.vector\": \"Whakawhitia hei Pere\",\n    \"paint.paintEditor.fill\": \"Whakakīia\",\n    \"paint.paintEditor.stroke\": \"Whakahuahua\",\n    \"paint.brushMode.brush\": \"Paraihe\",\n    \"paint.eraserMode.eraser\": \"Kōmuru\",\n    \"paint.fillMode.fill\": \"Whakakīia\",\n    \"paint.lineMode.line\": \"Rārangi\",\n    \"paint.ovalMode.oval\": \"Porowhita\",\n    \"paint.rectMode.rect\": \"Tapawhā Roa\",\n    \"paint.reshapeMode.reshape\": \"Tāraia anōtia\",\n    \"paint.roundedRectMode.roundedRect\": \"Tapawhā Roa Tōpuku\",\n    \"paint.selectMode.select\": \"Kōwhiria\",\n    \"paint.textMode.text\": \"Kuputuhi\",\n    \"paint.colorPicker.swap\": \"Whakawhitia\"\n  },\n  \"mn\": {\n    \"paint.paintEditor.hue\": \"Өнгө\",\n    \"paint.paintEditor.saturation\": \"Нэвчилт\",\n    \"paint.paintEditor.brightness\": \"Цайруулалт\",\n    \"gui.comingSoon.message1\": \"Битгий санаа зов бид {emoji} дээр ажиллаж байна\",\n    \"gui.comingSoon.message2\": \"Тун удахгүй...\",\n    \"gui.comingSoon.message3\": \"Бид {emoji} дээр ажиллаж байна.\",\n    \"paint.paintEditor.costume\": \"Өмсгөл\",\n    \"paint.paintEditor.group\": \"Бүлэг\",\n    \"paint.paintEditor.ungroup\": \"Бүлэглэлт болиулах\",\n    \"paint.paintEditor.undo\": \"Үйлдлийг буцаах\",\n    \"paint.paintEditor.redo\": \"Буцаалтыг сэргээх\",\n    \"paint.paintEditor.forward\": \"Урагшаа\",\n    \"paint.paintEditor.backward\": \"Арагшаа\",\n    \"paint.paintEditor.front\": \"Урд\",\n    \"paint.paintEditor.back\": \"Ард\",\n    \"paint.paintEditor.more\": \"Цааш...\",\n    \"paint.modeTools.brushSize\": \"Хэмжээ\",\n    \"paint.modeTools.eraserSize\": \"Баллуурын хэмжээ\",\n    \"paint.modeTools.copy\": \"Хуулбарлах\",\n    \"paint.modeTools.paste\": \"Хуулбарыг буулгах\",\n    \"paint.modeTools.delete\": \"Устгах\",\n    \"paint.modeTools.curved\": \"Мохой\",\n    \"paint.modeTools.pointed\": \"Хурц\",\n    \"paint.modeTools.thickness\": \"Зузаан\",\n    \"paint.modeTools.flipHorizontal\": \"Хэвтээ тэнхлэгийн дагуу тонгоруулах\",\n    \"paint.modeTools.flipVertical\": \"Босоо тэнхлэгийн дагуу тонгоруулах\",\n    \"paint.modeTools.filled\": \"Дүүрсэн\",\n    \"paint.modeTools.outlined\": \"Хүрээлсэн зураастай\",\n    \"paint.paintEditor.bitmap\": \"Битмап-руу шилжүүлэх\",\n    \"paint.paintEditor.vector\": \"Вектор-т шилжүүл\",\n    \"paint.paintEditor.fill\": \"Дүүргэх\",\n    \"paint.paintEditor.stroke\": \"Хүрээ зураас\",\n    \"paint.brushMode.brush\": \"Бийр\",\n    \"paint.eraserMode.eraser\": \"Баллуур\",\n    \"paint.fillMode.fill\": \"Дүүргэх\",\n    \"paint.lineMode.line\": \"Шугам\",\n    \"paint.ovalMode.oval\": \"Тойрог\",\n    \"paint.rectMode.rect\": \"Тэгш өнцөгт\",\n    \"paint.reshapeMode.reshape\": \"Дүрсийг өөрчлөх\",\n    \"paint.roundedRectMode.roundedRect\": \"Мөлгөр дөрвөлжин\",\n    \"paint.selectMode.select\": \"Сонгох\",\n    \"paint.textMode.text\": \"Текст\",\n    \"paint.colorPicker.swap\": \"Сэлгэх\"\n  },\n  \"nl\": {\n    \"paint.paintEditor.hue\": \"Kleur\",\n    \"paint.paintEditor.saturation\": \"Verzadiging\",\n    \"paint.paintEditor.brightness\": \"Helderheid\",\n    \"gui.comingSoon.message1\": \"Geen zorgen; we zijn er mee bezig {emoji}\",\n    \"gui.comingSoon.message2\": \"Binnenkort beschikbaar...\",\n    \"gui.comingSoon.message3\": \"We werken er aan {emoji}\",\n    \"paint.paintEditor.costume\": \"Uiterlijk\",\n    \"paint.paintEditor.group\": \"Groeperen\",\n    \"paint.paintEditor.ungroup\": \"Groep opheffen\",\n    \"paint.paintEditor.undo\": \"Ongedaan maken\",\n    \"paint.paintEditor.redo\": \"Opnieuw\",\n    \"paint.paintEditor.forward\": \"Naar voren\",\n    \"paint.paintEditor.backward\": \"Naar achteren\",\n    \"paint.paintEditor.front\": \"Naar voorgrond\",\n    \"paint.paintEditor.back\": \"Naar achtergrond\",\n    \"paint.paintEditor.more\": \"Meer\",\n    \"paint.modeTools.brushSize\": \"Grootte\",\n    \"paint.modeTools.eraserSize\": \"Gum-breedte\",\n    \"paint.modeTools.copy\": \"Kopie maken \",\n    \"paint.modeTools.paste\": \"Plakken\",\n    \"paint.modeTools.delete\": \"Verwijder\",\n    \"paint.modeTools.curved\": \"Gebogen\",\n    \"paint.modeTools.pointed\": \"Puntig\",\n    \"paint.modeTools.thickness\": \"Dikte\",\n    \"paint.modeTools.flipHorizontal\": \"Links-rechts omdraaien\",\n    \"paint.modeTools.flipVertical\": \"Boven-onder omdraaien\",\n    \"paint.modeTools.filled\": \"Gevuld\",\n    \"paint.modeTools.outlined\": \"Omtrek\",\n    \"paint.paintEditor.bitmap\": \"Zet om naar bitmap\",\n    \"paint.paintEditor.vector\": \"Zet om naar vector\",\n    \"paint.paintEditor.fill\": \"Vulling\",\n    \"paint.paintEditor.stroke\": \"Omtrek\",\n    \"paint.brushMode.brush\": \"Kwast\",\n    \"paint.eraserMode.eraser\": \"Gum\",\n    \"paint.fillMode.fill\": \"Vulling\",\n    \"paint.lineMode.line\": \"Lijn\",\n    \"paint.ovalMode.oval\": \"Cirkel\",\n    \"paint.rectMode.rect\": \"Rechthoek\",\n    \"paint.reshapeMode.reshape\": \"Opnieuw vormen\",\n    \"paint.roundedRectMode.roundedRect\": \"Afgeronde rechthoek\",\n    \"paint.selectMode.select\": \"Selecteren\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Wissel\"\n  },\n  \"ja\": {\n    \"paint.paintEditor.hue\": \"色\",\n    \"paint.paintEditor.saturation\": \"鮮やかさ\",\n    \"paint.paintEditor.brightness\": \"明るさ\",\n    \"gui.comingSoon.message1\": \"安心してください。開発中です {emoji}\",\n    \"gui.comingSoon.message2\": \"近日公開\",\n    \"gui.comingSoon.message3\": \"開発中です {emoji}\",\n    \"paint.paintEditor.costume\": \"コスチューム\",\n    \"paint.paintEditor.group\": \"グループ化\",\n    \"paint.paintEditor.ungroup\": \"グループ解除\",\n    \"paint.paintEditor.undo\": \"取り消し\",\n    \"paint.paintEditor.redo\": \"やり直し\",\n    \"paint.paintEditor.forward\": \"手前に出す\",\n    \"paint.paintEditor.backward\": \"奥に下げる\",\n    \"paint.paintEditor.front\": \"最前面\",\n    \"paint.paintEditor.back\": \"最背面\",\n    \"paint.paintEditor.more\": \"もっと\",\n    \"paint.modeTools.brushSize\": \"大きさ\",\n    \"paint.modeTools.eraserSize\": \"消しゴムの大きさ\",\n    \"paint.modeTools.copy\": \"コピー\",\n    \"paint.modeTools.paste\": \"貼り付け\",\n    \"paint.modeTools.delete\": \"削除\",\n    \"paint.modeTools.curved\": \"滑らか\",\n    \"paint.modeTools.pointed\": \"角ばった\",\n    \"paint.modeTools.thickness\": \"太さ\",\n    \"paint.modeTools.flipHorizontal\": \"左右反転\",\n    \"paint.modeTools.flipVertical\": \"上下反転\",\n    \"paint.modeTools.filled\": \"塗りつぶし\",\n    \"paint.modeTools.outlined\": \"輪郭\",\n    \"paint.paintEditor.bitmap\": \"ビットマップに変換\",\n    \"paint.paintEditor.vector\": \"ベクターに変換\",\n    \"paint.paintEditor.fill\": \"塗りつぶし\",\n    \"paint.paintEditor.stroke\": \"枠線\",\n    \"paint.brushMode.brush\": \"筆\",\n    \"paint.eraserMode.eraser\": \"消しゴム\",\n    \"paint.fillMode.fill\": \"塗りつぶし\",\n    \"paint.lineMode.line\": \"直線\",\n    \"paint.ovalMode.oval\": \"円\",\n    \"paint.rectMode.rect\": \"四角形\",\n    \"paint.reshapeMode.reshape\": \"形を変える\",\n    \"paint.roundedRectMode.roundedRect\": \"角丸の長方形\",\n    \"paint.selectMode.select\": \"選択\",\n    \"paint.textMode.text\": \"テキスト\",\n    \"paint.colorPicker.swap\": \"入れ替え\"\n  },\n  \"ja-Hira\": {\n    \"paint.paintEditor.hue\": \"いろ\",\n    \"paint.paintEditor.saturation\": \"あざやかさ\",\n    \"paint.paintEditor.brightness\": \"あかるさ\",\n    \"gui.comingSoon.message1\": \"あんしんしてください。かいはつちゅうです {emoji}\",\n    \"gui.comingSoon.message2\": \"きんじつこうかい\",\n    \"gui.comingSoon.message3\": \"かいはつちゅうです {emoji}\",\n    \"paint.paintEditor.costume\": \"コスチューム\",\n    \"paint.paintEditor.group\": \"ぐるーぷか\",\n    \"paint.paintEditor.ungroup\": \"グループかいじょ\",\n    \"paint.paintEditor.undo\": \"とりけし\",\n    \"paint.paintEditor.redo\": \"やりなおし\",\n    \"paint.paintEditor.forward\": \"てまえにだす\",\n    \"paint.paintEditor.backward\": \"おくにさげる\",\n    \"paint.paintEditor.front\": \"さいぜんめん\",\n    \"paint.paintEditor.back\": \"さいはいめん\",\n    \"paint.paintEditor.more\": \"もっと\",\n    \"paint.modeTools.brushSize\": \"おおきさ\",\n    \"paint.modeTools.eraserSize\": \"けしごむのおおきさ\",\n    \"paint.modeTools.copy\": \"コピー\",\n    \"paint.modeTools.paste\": \"はりつけ\",\n    \"paint.modeTools.delete\": \"さくじょ\",\n    \"paint.modeTools.curved\": \"なめらか\",\n    \"paint.modeTools.pointed\": \"かどばった\",\n    \"paint.modeTools.thickness\": \"ふとさ\",\n    \"paint.modeTools.flipHorizontal\": \"さゆうはんてん\",\n    \"paint.modeTools.flipVertical\": \"じょうげはんてん\",\n    \"paint.modeTools.filled\": \"ぬりつぶし\",\n    \"paint.modeTools.outlined\": \"りんかく\",\n    \"paint.paintEditor.bitmap\": \"ビットマップにへんかん\",\n    \"paint.paintEditor.vector\": \"ベクターにへんかん\",\n    \"paint.paintEditor.fill\": \"ぬりつぶし\",\n    \"paint.paintEditor.stroke\": \"わくせん\",\n    \"paint.brushMode.brush\": \"ふで\",\n    \"paint.eraserMode.eraser\": \"けしごむ\",\n    \"paint.fillMode.fill\": \"ぬりつぶし\",\n    \"paint.lineMode.line\": \"ちょくせん\",\n    \"paint.ovalMode.oval\": \"えん\",\n    \"paint.rectMode.rect\": \"しかくけい\",\n    \"paint.reshapeMode.reshape\": \"かたちをかえる\",\n    \"paint.roundedRectMode.roundedRect\": \"かくまるのちょうほうけい\",\n    \"paint.selectMode.select\": \"せんたく\",\n    \"paint.textMode.text\": \"テキスト\",\n    \"paint.colorPicker.swap\": \"いれかえ\"\n  },\n  \"nb\": {\n    \"paint.paintEditor.hue\": \"Farge\",\n    \"paint.paintEditor.saturation\": \"Fargemetning\",\n    \"paint.paintEditor.brightness\": \"Lysstyrke\",\n    \"gui.comingSoon.message1\": \"Ingen fare, vi arbeider med dette {emoji}\",\n    \"gui.comingSoon.message2\": \"Kommer snart...\",\n    \"gui.comingSoon.message3\": \"Vi arbeider med dette {emoji}\",\n    \"paint.paintEditor.costume\": \"Drakt\",\n    \"paint.paintEditor.group\": \"Gruppér\",\n    \"paint.paintEditor.ungroup\": \"Del opp gruppe\",\n    \"paint.paintEditor.undo\": \"Angre\",\n    \"paint.paintEditor.redo\": \"Gjør igjen\",\n    \"paint.paintEditor.forward\": \"Flytt frem\",\n    \"paint.paintEditor.backward\": \"Flytt tilbake\",\n    \"paint.paintEditor.front\": \"Foran alt\",\n    \"paint.paintEditor.back\": \"Tilbake\",\n    \"paint.paintEditor.more\": \"Flere\",\n    \"paint.modeTools.brushSize\": \"Størrelse\",\n    \"paint.modeTools.eraserSize\": \"Viskelærbredde\",\n    \"paint.modeTools.copy\": \"Kopier\",\n    \"paint.modeTools.paste\": \"Lim inn\",\n    \"paint.modeTools.delete\": \"Slett\",\n    \"paint.modeTools.curved\": \"Glatt\",\n    \"paint.modeTools.pointed\": \"Skarp\",\n    \"paint.modeTools.thickness\": \"Tykkelse\",\n    \"paint.modeTools.flipHorizontal\": \"Speilvend\",\n    \"paint.modeTools.flipVertical\": \"Opp ned\",\n    \"paint.modeTools.filled\": \"Fylt\",\n    \"paint.modeTools.outlined\": \"Omriss\",\n    \"paint.paintEditor.bitmap\": \"Gå til pikselgrafikk\",\n    \"paint.paintEditor.vector\": \"Gjør om til vektorgrafikk\",\n    \"paint.paintEditor.fill\": \"Fyll\",\n    \"paint.paintEditor.stroke\": \"Kant\",\n    \"paint.brushMode.brush\": \"Malepensel\",\n    \"paint.eraserMode.eraser\": \"Viskelær\",\n    \"paint.fillMode.fill\": \"Fyll\",\n    \"paint.lineMode.line\": \"Linje\",\n    \"paint.ovalMode.oval\": \"Sirkel\",\n    \"paint.rectMode.rect\": \"Rektangel\",\n    \"paint.reshapeMode.reshape\": \"Bøy\",\n    \"paint.roundedRectMode.roundedRect\": \"Avrundet rektangel\",\n    \"paint.selectMode.select\": \"Velg\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Bytt\"\n  },\n  \"nn\": {\n    \"paint.paintEditor.hue\": \"Farge\",\n    \"paint.paintEditor.saturation\": \"Fargemetting\",\n    \"paint.paintEditor.brightness\": \"Lysstyrke\",\n    \"gui.comingSoon.message1\": \"Slapp av – me er på saka {emoji}\",\n    \"gui.comingSoon.message2\": \"Kjem snart …\",\n    \"gui.comingSoon.message3\": \"Me arbeider med det {emoji}\",\n    \"paint.paintEditor.costume\": \"Drakt\",\n    \"paint.paintEditor.group\": \"Lag gruppe\",\n    \"paint.paintEditor.ungroup\": \"Løys opp gruppe\",\n    \"paint.paintEditor.undo\": \"Angra\",\n    \"paint.paintEditor.redo\": \"Gjer om\",\n    \"paint.paintEditor.forward\": \"Framover\",\n    \"paint.paintEditor.backward\": \"Bakover\",\n    \"paint.paintEditor.front\": \"Heilt fram\",\n    \"paint.paintEditor.back\": \"Heilt bak\",\n    \"paint.paintEditor.more\": \"Fleire\",\n    \"paint.modeTools.brushSize\": \"Storleik\",\n    \"paint.modeTools.eraserSize\": \"Viskelêrstorleik\",\n    \"paint.modeTools.copy\": \"Kopier\",\n    \"paint.modeTools.paste\": \"Lim inn\",\n    \"paint.modeTools.delete\": \"Slett\",\n    \"paint.modeTools.curved\": \"Glatt\",\n    \"paint.modeTools.pointed\": \"Spiss\",\n    \"paint.modeTools.thickness\": \"Strekbreidd\",\n    \"paint.modeTools.flipHorizontal\": \"Spegelvend\",\n    \"paint.modeTools.flipVertical\": \"Opp ned\",\n    \"paint.modeTools.filled\": \"Fylt\",\n    \"paint.modeTools.outlined\": \"Omriss\",\n    \"paint.paintEditor.bitmap\": \"Gjer om til punktgrafikk\",\n    \"paint.paintEditor.vector\": \"Gjer om til vektorgrafikk\",\n    \"paint.paintEditor.fill\": \"Fyll\",\n    \"paint.paintEditor.stroke\": \"Kantlinje\",\n    \"paint.brushMode.brush\": \"Målarpensel\",\n    \"paint.eraserMode.eraser\": \"Viskelêr\",\n    \"paint.fillMode.fill\": \"Fyll\",\n    \"paint.lineMode.line\": \"Linje\",\n    \"paint.ovalMode.oval\": \"Sirkel\",\n    \"paint.rectMode.rect\": \"Rektangel\",\n    \"paint.reshapeMode.reshape\": \"Endra form\",\n    \"paint.roundedRectMode.roundedRect\": \"Avrunda rektangel\",\n    \"paint.selectMode.select\": \"Vel\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Byt\"\n  },\n  \"oc\": {\n    \"paint.paintEditor.hue\": \"Color\",\n    \"paint.paintEditor.saturation\": \"Saturacion\",\n    \"paint.paintEditor.brightness\": \"Luminositat\",\n    \"gui.comingSoon.message1\": \"Te'n fagas pas, nos en tracham ! {emoji}\",\n    \"gui.comingSoon.message2\": \"Arriba lèu...\",\n    \"gui.comingSoon.message3\": \"Sèm a i trabalhar {emoji}\",\n    \"paint.paintEditor.costume\": \"Costum\",\n    \"paint.paintEditor.group\": \"Grop\",\n    \"paint.paintEditor.ungroup\": \"Desgroupar\",\n    \"paint.paintEditor.undo\": \"Anullar\",\n    \"paint.paintEditor.redo\": \"Tornar far\",\n    \"paint.paintEditor.forward\": \"Endavant\",\n    \"paint.paintEditor.backward\": \"Endarrièr\",\n    \"paint.paintEditor.front\": \"Davant\",\n    \"paint.paintEditor.back\": \"Endarrièr\",\n    \"paint.paintEditor.more\": \"Mai\",\n    \"paint.modeTools.brushSize\": \"Talha\",\n    \"paint.modeTools.eraserSize\": \"Talha de la goma\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Pegar\",\n    \"paint.modeTools.delete\": \"Escafar\",\n    \"paint.modeTools.curved\": \"Corbat\",\n    \"paint.modeTools.pointed\": \"Ponchut\",\n    \"paint.modeTools.thickness\": \"Espessor\",\n    \"paint.modeTools.flipHorizontal\": \"Revirar Orizontalement\",\n    \"paint.modeTools.flipVertical\": \"Revirar Verticalement\",\n    \"paint.modeTools.filled\": \"Emplenat\",\n    \"paint.modeTools.outlined\": \"Suslinhat\",\n    \"paint.paintEditor.bitmap\": \"Convertir en Bitmap\",\n    \"paint.paintEditor.vector\": \"Convertir en Vectors\",\n    \"paint.paintEditor.fill\": \"Emplenar\",\n    \"paint.paintEditor.stroke\": \"Suslinhar\",\n    \"paint.brushMode.brush\": \"Bròssa\",\n    \"paint.eraserMode.eraser\": \"Goma\",\n    \"paint.fillMode.fill\": \"Emplenar\",\n    \"paint.lineMode.line\": \"Linha\",\n    \"paint.ovalMode.oval\": \"Cercle\",\n    \"paint.rectMode.rect\": \"Rectangle\",\n    \"paint.reshapeMode.reshape\": \"Remodelar\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectangle arredondit\",\n    \"paint.selectMode.select\": \"Seleccionar\",\n    \"paint.textMode.text\": \"Tèxt\",\n    \"paint.colorPicker.swap\": \"Escambiar\"\n  },\n  \"or\": {\n    \"paint.paintEditor.hue\": \"ରଙ୍ଗ\",\n    \"paint.paintEditor.saturation\": \"ପରିପୂର୍ଣତା\",\n    \"paint.paintEditor.brightness\": \"ଉଜ୍ଜ୍ୱଳତା\",\n    \"gui.comingSoon.message1\": \"ଚିନ୍ତା କରନ୍ତୁ ନାହିଁ, ଆମେ ଦେଖୁଛୁ    {emoji}\",\n    \"gui.comingSoon.message2\": \"ଶୀଘ୍ର ଆସିବାକୁ ଯାଉଛି \",\n    \"gui.comingSoon.message3\": \"ଆମେ ଏହା ଉପରେ କାମ କରୁଛୁ  {emoji}\",\n    \"paint.paintEditor.costume\": \"ପୋଷାକ\",\n    \"paint.paintEditor.group\": \"ସମୂହ\",\n    \"paint.paintEditor.ungroup\": \"ଅଲଗା କର\",\n    \"paint.paintEditor.undo\": \"ଆଗ ପରି\",\n    \"paint.paintEditor.redo\": \"ପୁଣି କର\",\n    \"paint.paintEditor.forward\": \"ଆଗକୁ କର\",\n    \"paint.paintEditor.backward\": \"ପଛକୁ କର\",\n    \"paint.paintEditor.front\": \"ସାମନା\",\n    \"paint.paintEditor.back\": \"ପଛପାଖ\",\n    \"paint.paintEditor.more\": \"ଆହୁରି\",\n    \"paint.modeTools.brushSize\": \"ଆକାର\",\n    \"paint.modeTools.eraserSize\": \"ରବର ଆକାର\",\n    \"paint.modeTools.copy\": \"ନକଲ କର\",\n    \"paint.modeTools.paste\": \"ଲଗାଅ\",\n    \"paint.modeTools.delete\": \"ଲିଭାଅ\",\n    \"paint.modeTools.curved\": \"ବକ୍ର\",\n    \"paint.modeTools.pointed\": \"ମୁନିଆ\",\n    \"paint.modeTools.thickness\": \"ମୋଟେଇ\",\n    \"paint.modeTools.flipHorizontal\": \"ଭୁସମାନ୍ତରାଳ ଭାବରେ ଓଲଟାଅ\",\n    \"paint.modeTools.flipVertical\": \"ଭୁଲମ୍ବାକାରରେଓଲଟାଅ \",\n    \"paint.modeTools.filled\": \"ଭର୍ତି\",\n    \"paint.modeTools.outlined\": \"ସୀମା ନିର୍ଦ୍ଧାରିତ\",\n    \"paint.paintEditor.bitmap\": \"ବିଟମ୍ଯାପ ରେ ବଦଳେଇଦିଅ\",\n    \"paint.paintEditor.vector\": \"ଭେକ୍ଟର ରେ ବଦଳେଇଦିଅ\",\n    \"paint.paintEditor.fill\": \"ଭର୍ତି କର\",\n    \"paint.paintEditor.stroke\": \"ସୀମା\",\n    \"paint.brushMode.brush\": \"ବ୍ରଶ\",\n    \"paint.eraserMode.eraser\": \"ରବର\",\n    \"paint.fillMode.fill\": \"ଭର୍ତି କର\",\n    \"paint.lineMode.line\": \"ରେଖା\",\n    \"paint.ovalMode.oval\": \"ବୃତ୍ତ\",\n    \"paint.rectMode.rect\": \"ଆୟତକାର\",\n    \"paint.reshapeMode.reshape\": \"ପୁଣି ଆକାର ତିଆରିକର\",\n    \"paint.roundedRectMode.roundedRect\": \"ବୃତ୍ତାକାର କୋଣ ବିଶିଷ୍ଟ ଆୟତକାର \",\n    \"paint.selectMode.select\": \"ବାଛ\",\n    \"paint.textMode.text\": \"ଲେଖା\",\n    \"paint.colorPicker.swap\": \"ପରସ୍ପର ମଧ୍ୟରେ ବଦଳେଇଦିଅ \"\n  },\n  \"uz\": {\n    \"paint.paintEditor.hue\": \"Rang\",\n    \"paint.paintEditor.saturation\": \"To'yinganlik\",\n    \"paint.paintEditor.brightness\": \"Yorqinlik\",\n    \"gui.comingSoon.message1\": \"Xavotir olmang, biz shu yerdamiz. {emoji}\",\n    \"gui.comingSoon.message2\": \"Tez kunda...\",\n    \"gui.comingSoon.message3\": \"Biz uning ustida ishlayapmiz {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostyum\",\n    \"paint.paintEditor.group\": \"Guruh\",\n    \"paint.paintEditor.ungroup\": \"Guruhlashni bekor qilish\",\n    \"paint.paintEditor.undo\": \"Bekor qilish\",\n    \"paint.paintEditor.redo\": \"Qaytarish\",\n    \"paint.paintEditor.forward\": \"Oldiga\",\n    \"paint.paintEditor.backward\": \"Orqaga\",\n    \"paint.paintEditor.front\": \"Eng oldiga\",\n    \"paint.paintEditor.back\": \"Eng orqaga\",\n    \"paint.paintEditor.more\": \"Ko'proq\",\n    \"paint.modeTools.brushSize\": \"O'lchami\",\n    \"paint.modeTools.eraserSize\": \"O'chirg'ich o'lchami\",\n    \"paint.modeTools.copy\": \"Nusxa olish\",\n    \"paint.modeTools.paste\": \"Joylashtirish\",\n    \"paint.modeTools.delete\": \"O'chirish\",\n    \"paint.modeTools.curved\": \"Egri\",\n    \"paint.modeTools.pointed\": \"Ko'rsatilgan\",\n    \"paint.modeTools.thickness\": \"Qalinligi\",\n    \"paint.modeTools.flipHorizontal\": \"Chapdan o'ngga burish\",\n    \"paint.modeTools.flipVertical\": \"Yuqoridan pastga burish\",\n    \"paint.modeTools.filled\": \"Bo'yash\",\n    \"paint.modeTools.outlined\": \"Qisqartirilgan\",\n    \"paint.paintEditor.bitmap\": \"Rastr tasvirga o'zgartirish\",\n    \"paint.paintEditor.vector\": \"Vektor tasvirga o'zgartirish\",\n    \"paint.paintEditor.fill\": \"To'ldirish\",\n    \"paint.paintEditor.stroke\": \"Ramqa\",\n    \"paint.brushMode.brush\": \"Kistichka\",\n    \"paint.eraserMode.eraser\": \"O'chirg'ich\",\n    \"paint.fillMode.fill\": \"Bo'yash\",\n    \"paint.lineMode.line\": \"Chiziq\",\n    \"paint.ovalMode.oval\": \"Aylana\",\n    \"paint.rectMode.rect\": \"Toʻrtburchak\",\n    \"paint.reshapeMode.reshape\": \"Burchakli to'rtburchak\",\n    \"paint.roundedRectMode.roundedRect\": \"Aval shakl berish\",\n    \"paint.selectMode.select\": \"Tanlash\",\n    \"paint.textMode.text\": \"Yozuv\",\n    \"paint.colorPicker.swap\": \"Almashtirish\"\n  },\n  \"th\": {\n    \"paint.paintEditor.hue\": \"สี\",\n    \"paint.paintEditor.saturation\": \"ความอิ่มตัว\",\n    \"paint.paintEditor.brightness\": \"ความสว่าง\",\n    \"gui.comingSoon.message1\": \"ไม่ต้องกังวล เรากำลังทำอยู่ {emoji}\",\n    \"gui.comingSoon.message2\": \"เร็วๆ นี้...\",\n    \"gui.comingSoon.message3\": \"เรากำลังทำอยู่ {emoji}\",\n    \"paint.paintEditor.costume\": \"คอสตูม\",\n    \"paint.paintEditor.group\": \"กลุ่ม\",\n    \"paint.paintEditor.ungroup\": \"แยกกลุ่ม\",\n    \"paint.paintEditor.undo\": \"ย้อนกลับ\",\n    \"paint.paintEditor.redo\": \"ทำซ้ำ\",\n    \"paint.paintEditor.forward\": \"มาข้างหน้า\",\n    \"paint.paintEditor.backward\": \"ไปข้างหลัง\",\n    \"paint.paintEditor.front\": \"หน้าสุด\",\n    \"paint.paintEditor.back\": \"หลังสุด\",\n    \"paint.paintEditor.more\": \"เพิ่มเติม\",\n    \"paint.modeTools.brushSize\": \"ขนาด\",\n    \"paint.modeTools.eraserSize\": \"ขนาดยางลบ\",\n    \"paint.modeTools.copy\": \"คัดลอก\",\n    \"paint.modeTools.paste\": \"วาง\",\n    \"paint.modeTools.delete\": \"ลบ\",\n    \"paint.modeTools.curved\": \"โค้ง\",\n    \"paint.modeTools.pointed\": \"แหลม\",\n    \"paint.modeTools.thickness\": \"ความหนา\",\n    \"paint.modeTools.flipHorizontal\": \"พลิกแนวนอน\",\n    \"paint.modeTools.flipVertical\": \"พลิกแนวตั้ง\",\n    \"paint.modeTools.filled\": \"เติมสี\",\n    \"paint.modeTools.outlined\": \"สีขอบ\",\n    \"paint.paintEditor.bitmap\": \"แปลงเป็นบิตแมป\",\n    \"paint.paintEditor.vector\": \"แปลงเป็นเวกเตอร์\",\n    \"paint.paintEditor.fill\": \"สีพื้น\",\n    \"paint.paintEditor.stroke\": \"สีขอบ\",\n    \"paint.brushMode.brush\": \"แปรง\",\n    \"paint.eraserMode.eraser\": \"ยางลบ\",\n    \"paint.fillMode.fill\": \"สีพื้น\",\n    \"paint.lineMode.line\": \"เส้น\",\n    \"paint.ovalMode.oval\": \"วงกลม\",\n    \"paint.rectMode.rect\": \"สี่เหลี่ยม\",\n    \"paint.reshapeMode.reshape\": \"จัดรูปร่างใหม่\",\n    \"paint.roundedRectMode.roundedRect\": \"สี่เหลี่ยมขอบมน\",\n    \"paint.selectMode.select\": \"เลือก\",\n    \"paint.textMode.text\": \"ข้อความ\",\n    \"paint.colorPicker.swap\": \"สลับสี\"\n  },\n  \"km\": {\n    \"paint.paintEditor.hue\": \"ពណ៌\",\n    \"paint.paintEditor.saturation\": \"កម្រិតដិត\",\n    \"paint.paintEditor.brightness\": \"កម្រិតពន្លឺ\",\n    \"gui.comingSoon.message1\": \"កុំបារម្ភ! ពួកយើងកំពុងតែធ្វើការលើហ្នឹងហើយ {emoji}\",\n    \"gui.comingSoon.message2\": \"មកដល់ឆាប់ៗ...\",\n    \"gui.comingSoon.message3\": \"ពួកយើងកំពុងតែធ្វើការលើហ្នឹងហើយ {emoji}\",\n    \"paint.paintEditor.costume\": \"រូបរាង\",\n    \"paint.paintEditor.group\": \"ដាក់ក្រុម\",\n    \"paint.paintEditor.ungroup\": \"បំបែកក្រុម\",\n    \"paint.paintEditor.undo\": \"មិនធ្វើវិញ\",\n    \"paint.paintEditor.redo\": \"ធ្វើឡើងវិញ\",\n    \"paint.paintEditor.forward\": \"ទៅមុខ\",\n    \"paint.paintEditor.backward\": \"ថយក្រោយ\",\n    \"paint.paintEditor.front\": \"មុខគេ\",\n    \"paint.paintEditor.back\": \"ក្រោយគេ\",\n    \"paint.paintEditor.more\": \"ច្រើនទៀត\",\n    \"paint.modeTools.brushSize\": \"ទំហំ\",\n    \"paint.modeTools.eraserSize\": \"ទំហំជ័រលុប\",\n    \"paint.modeTools.copy\": \"ចម្លង\",\n    \"paint.modeTools.paste\": \"ភ្ជាប់\",\n    \"paint.modeTools.delete\": \"លុប\",\n    \"paint.modeTools.curved\": \"កោង\",\n    \"paint.modeTools.pointed\": \"ស្រួច\",\n    \"paint.modeTools.thickness\": \"កម្រាស់\",\n    \"paint.modeTools.flipHorizontal\": \"ត្រឡប់ផ្ដេក\",\n    \"paint.modeTools.flipVertical\": \"ត្រឡប់ឈរ\",\n    \"paint.modeTools.filled\": \"មានផ្ទៃ\",\n    \"paint.modeTools.outlined\": \"មានគ្រោង\",\n    \"paint.paintEditor.bitmap\": \"បម្លែងជា Bitmap\",\n    \"paint.paintEditor.vector\": \"បម្លែងជា Vector\",\n    \"paint.paintEditor.fill\": \"ផ្ទៃ\",\n    \"paint.paintEditor.stroke\": \"បន្ទាត់គែម\",\n    \"paint.brushMode.brush\": \"ជក់\",\n    \"paint.eraserMode.eraser\": \"ជ័រលុប\",\n    \"paint.fillMode.fill\": \"ផ្ទៃ\",\n    \"paint.lineMode.line\": \"បន្ទាត់\",\n    \"paint.ovalMode.oval\": \"រង្វង់\",\n    \"paint.rectMode.rect\": \"ចតុកោណកែង\",\n    \"paint.reshapeMode.reshape\": \"កែរូបរាង\",\n    \"paint.roundedRectMode.roundedRect\": \"ចតុកោណកែងជ្រុងមូល\",\n    \"paint.selectMode.select\": \"ជ្រើសរើស\",\n    \"paint.textMode.text\": \"អត្ថបទ\",\n    \"paint.colorPicker.swap\": \"ប្តូរពណ៌\"\n  },\n  \"pl\": {\n    \"paint.paintEditor.hue\": \"Kolor\",\n    \"paint.paintEditor.saturation\": \"Nasycenie\",\n    \"paint.paintEditor.brightness\": \"Jasność\",\n    \"gui.comingSoon.message1\": \"Nie martw się, pracujemy nad tym {emoji}\",\n    \"gui.comingSoon.message2\": \"Już wkrótce...\",\n    \"gui.comingSoon.message3\": \"Pracujemy nad tym {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostium\",\n    \"paint.paintEditor.group\": \"Grupuj\",\n    \"paint.paintEditor.ungroup\": \"Rozgrupuj\",\n    \"paint.paintEditor.undo\": \"Cofnij\",\n    \"paint.paintEditor.redo\": \"Ponów\",\n    \"paint.paintEditor.forward\": \"Do przodu\",\n    \"paint.paintEditor.backward\": \"Do tyłu\",\n    \"paint.paintEditor.front\": \"Przód\",\n    \"paint.paintEditor.back\": \"Powrót\",\n    \"paint.paintEditor.more\": \"Więcej\",\n    \"paint.modeTools.brushSize\": \"Rozmiar\",\n    \"paint.modeTools.eraserSize\": \"Wielkość gumki\",\n    \"paint.modeTools.copy\": \"Kopiuj\",\n    \"paint.modeTools.paste\": \"Wklej\",\n    \"paint.modeTools.delete\": \"Usuń\",\n    \"paint.modeTools.curved\": \"Zakrzywiony\",\n    \"paint.modeTools.pointed\": \"Wskazany\",\n    \"paint.modeTools.thickness\": \"Grubość\",\n    \"paint.modeTools.flipHorizontal\": \"Odwróć w płaszczyźnie poziomej\",\n    \"paint.modeTools.flipVertical\": \"Odwróć w płaszczyźnie pionowej\",\n    \"paint.modeTools.filled\": \"Wypełniony\",\n    \"paint.modeTools.outlined\": \"Kontur\",\n    \"paint.paintEditor.bitmap\": \"Przekształć w bitmapę\",\n    \"paint.paintEditor.vector\": \"Konwertuj na wektor\",\n    \"paint.paintEditor.fill\": \"Wypełnij\",\n    \"paint.paintEditor.stroke\": \"Zarys\",\n    \"paint.brushMode.brush\": \"Pędzel\",\n    \"paint.eraserMode.eraser\": \"Gumka\",\n    \"paint.fillMode.fill\": \"Wypełnij\",\n    \"paint.lineMode.line\": \"Linia\",\n    \"paint.ovalMode.oval\": \"Okrąg\",\n    \"paint.rectMode.rect\": \"Prostokąt\",\n    \"paint.reshapeMode.reshape\": \"Przekształć\",\n    \"paint.roundedRectMode.roundedRect\": \"Zaokrąglony prostokąt\",\n    \"paint.selectMode.select\": \"Wybierz\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Zamień\"\n  },\n  \"pt\": {\n    \"paint.paintEditor.hue\": \"Matiz\",\n    \"paint.paintEditor.saturation\": \"Saturação\",\n    \"paint.paintEditor.brightness\": \"Brilho\",\n    \"gui.comingSoon.message1\": \"Não se preocupe, estamos a trabalhar afincadamente nisto {emoji}\",\n    \"gui.comingSoon.message2\": \"Em Breve…\",\n    \"gui.comingSoon.message3\": \"Estamos a trabalhar afincadamente nisto {emoji}\",\n    \"paint.paintEditor.costume\": \"Traje\",\n    \"paint.paintEditor.group\": \"Agrupar\",\n    \"paint.paintEditor.ungroup\": \"Desagrupar\",\n    \"paint.paintEditor.undo\": \"Desfazer\",\n    \"paint.paintEditor.redo\": \"Refazer\",\n    \"paint.paintEditor.forward\": \"Avançar\",\n    \"paint.paintEditor.backward\": \"Recuar\",\n    \"paint.paintEditor.front\": \"Para a Frente\",\n    \"paint.paintEditor.back\": \"Para Trás\",\n    \"paint.paintEditor.more\": \"Mais\",\n    \"paint.modeTools.brushSize\": \"Tamanho\",\n    \"paint.modeTools.eraserSize\": \"Tamanho da borracha\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Colar\",\n    \"paint.modeTools.delete\": \"Remover\",\n    \"paint.modeTools.curved\": \"Arredondado\",\n    \"paint.modeTools.pointed\": \"Em Ângulo\",\n    \"paint.modeTools.thickness\": \"Espessura\",\n    \"paint.modeTools.flipHorizontal\": \"Inverter Horizontalmente\",\n    \"paint.modeTools.flipVertical\": \"Inverter Verticalmente\",\n    \"paint.modeTools.filled\": \"A cheio\",\n    \"paint.modeTools.outlined\": \"Com contorno\",\n    \"paint.paintEditor.bitmap\": \"Converter para Bitmap\",\n    \"paint.paintEditor.vector\": \"Converter para Vectorial\",\n    \"paint.paintEditor.fill\": \"Interior\",\n    \"paint.paintEditor.stroke\": \"Contorno\",\n    \"paint.brushMode.brush\": \"Pincel\",\n    \"paint.eraserMode.eraser\": \"Borracha\",\n    \"paint.fillMode.fill\": \"Preencher\",\n    \"paint.lineMode.line\": \"Linha\",\n    \"paint.ovalMode.oval\": \"Círculo\",\n    \"paint.rectMode.rect\": \"Rectângulo\",\n    \"paint.reshapeMode.reshape\": \"Remodelar\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectângulo Arredondado\",\n    \"paint.selectMode.select\": \"Seleccionar\",\n    \"paint.textMode.text\": \"Texto\",\n    \"paint.colorPicker.swap\": \"Trocar\"\n  },\n  \"pt-br\": {\n    \"paint.paintEditor.hue\": \"Cor\",\n    \"paint.paintEditor.saturation\": \"Saturação\",\n    \"paint.paintEditor.brightness\": \"Brilho\",\n    \"gui.comingSoon.message1\": \"Não se preocupe, estamos trabalhando nisso {emoji}\",\n    \"gui.comingSoon.message2\": \"Em breve...\",\n    \"gui.comingSoon.message3\": \"Estamos trabalhando nisso {emoji}\",\n    \"paint.paintEditor.costume\": \"Fantasia\",\n    \"paint.paintEditor.group\": \"Agrupar\",\n    \"paint.paintEditor.ungroup\": \"Desagrupar\",\n    \"paint.paintEditor.undo\": \"Desfazer\",\n    \"paint.paintEditor.redo\": \"Refazer\",\n    \"paint.paintEditor.forward\": \"Pra frente\",\n    \"paint.paintEditor.backward\": \"Pra Trás\",\n    \"paint.paintEditor.front\": \"Frente\",\n    \"paint.paintEditor.back\": \"Atrás\",\n    \"paint.paintEditor.more\": \"Mais\",\n    \"paint.modeTools.brushSize\": \"Tamanho\",\n    \"paint.modeTools.eraserSize\": \"Tamanho da borracha\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Colar\",\n    \"paint.modeTools.delete\": \"Apagar\",\n    \"paint.modeTools.curved\": \"Curvado\",\n    \"paint.modeTools.pointed\": \"Apontado\",\n    \"paint.modeTools.thickness\": \"Espessura\",\n    \"paint.modeTools.flipHorizontal\": \"Espelhar Horizontalmente\",\n    \"paint.modeTools.flipVertical\": \"Espelhar Verticalmente\",\n    \"paint.modeTools.filled\": \"Preenchido\",\n    \"paint.modeTools.outlined\": \"Contornar\",\n    \"paint.paintEditor.bitmap\": \"Converter para Bitmap\",\n    \"paint.paintEditor.vector\": \"Converter pra Vetor\",\n    \"paint.paintEditor.fill\": \"Preencher\",\n    \"paint.paintEditor.stroke\": \"Contornar\",\n    \"paint.brushMode.brush\": \"Pincel\",\n    \"paint.eraserMode.eraser\": \"Apagador\",\n    \"paint.fillMode.fill\": \"Preencher\",\n    \"paint.lineMode.line\": \"Linha\",\n    \"paint.ovalMode.oval\": \"Círculo\",\n    \"paint.rectMode.rect\": \"Retângulo\",\n    \"paint.reshapeMode.reshape\": \"Remodelar\",\n    \"paint.roundedRectMode.roundedRect\": \"Retângulo Arredondado\",\n    \"paint.selectMode.select\": \"Selecionar\",\n    \"paint.textMode.text\": \"Texto\",\n    \"paint.colorPicker.swap\": \"Troque\"\n  },\n  \"rap\": {\n    \"paint.paintEditor.hue\": \"Kiʾea\",\n    \"paint.paintEditor.saturation\": \"Saturación\",\n    \"paint.paintEditor.brightness\": \"ʾUira\",\n    \"gui.comingSoon.message1\": \"ina koe ko tipa tipa, i matou e aŋa a mo ra meʾe {emoji}\",\n    \"gui.comingSoon.message2\": \"Na he oho mai…\",\n    \"gui.comingSoon.message3\": \"e aŋa a mo ra meʾe {emoji}\",\n    \"paint.paintEditor.costume\": \"Diseño\",\n    \"paint.paintEditor.group\": \"piri\",\n    \"paint.paintEditor.ungroup\": \"haka kore te piri\",\n    \"paint.paintEditor.undo\": \"moumou\",\n    \"paint.paintEditor.redo\": \"he anga haka ʾou\",\n    \"paint.paintEditor.forward\": \"a muʾa\",\n    \"paint.paintEditor.backward\": \"A tuʾa \",\n    \"paint.paintEditor.front\": \"i muʾa\",\n    \"paint.paintEditor.back\": \"a tuʾa \",\n    \"paint.paintEditor.more\": \"te tahi\",\n    \"paint.modeTools.brushSize\": \"he haito\",\n    \"paint.modeTools.eraserSize\": \"he nui nui o te ua ua haka kore\",\n    \"paint.modeTools.copy\": \"ko tuʾu meʾe a\",\n    \"paint.modeTools.paste\": \"pipiri\",\n    \"paint.modeTools.delete\": \"haka kore\",\n    \"paint.modeTools.curved\": \"pikopiko\",\n    \"paint.modeTools.pointed\": \"titika\",\n    \"paint.modeTools.thickness\": \"peŋo peŋo\",\n    \"paint.modeTools.flipHorizontal\": \"haka teka pahe hau titika\",\n    \"paint.modeTools.flipVertical\": \"e rori mo haka titika\",\n    \"paint.modeTools.filled\": \"hāʾī\",\n    \"paint.modeTools.outlined\": \"Contorneado\",\n    \"paint.paintEditor.bitmap\": \"haka āŋa ki te mapa bits\",\n    \"paint.paintEditor.vector\": \"e rori ki te vector\",\n    \"paint.paintEditor.fill\": \"hāʾī\",\n    \"paint.paintEditor.stroke\": \"Tītī\",\n    \"paint.brushMode.brush\": \"purumu paru\",\n    \"paint.eraserMode.eraser\": \"ua ua haka kore\",\n    \"paint.fillMode.fill\": \"hāʾī\",\n    \"paint.lineMode.line\": \"hore hore\",\n    \"paint.ovalMode.oval\": \"taka taka\",\n    \"paint.rectMode.rect\": \"avahata poto roa\",\n    \"paint.reshapeMode.reshape\": \"e hoki mo haka titika te āŋa\",\n    \"paint.roundedRectMode.roundedRect\": \"avahata poto roa hai titi taka taka\",\n    \"paint.selectMode.select\": \"tuhi\",\n    \"paint.textMode.text\": \"papaʾi\",\n    \"paint.colorPicker.swap\": \"rori\"\n  },\n  \"ro\": {\n    \"paint.paintEditor.hue\": \"Culoare\",\n    \"paint.paintEditor.saturation\": \"Saturație\",\n    \"paint.paintEditor.brightness\": \"Strălucire\",\n    \"gui.comingSoon.message1\": \"Nu-ți face griji, ne ocupăm de asta {emoji}\",\n    \"gui.comingSoon.message2\": \"În curând...\",\n    \"gui.comingSoon.message3\": \"Lucrăm la asta {emoji}\",\n    \"paint.paintEditor.costume\": \"Costum\",\n    \"paint.paintEditor.group\": \"Grupează\",\n    \"paint.paintEditor.ungroup\": \"Degrupează\",\n    \"paint.paintEditor.undo\": \"Anulează ultima modificare\",\n    \"paint.paintEditor.redo\": \"Refă acțiunea anulată\",\n    \"paint.paintEditor.forward\": \"În față\",\n    \"paint.paintEditor.backward\": \"În spate\",\n    \"paint.paintEditor.front\": \"Primul\",\n    \"paint.paintEditor.back\": \"Înapoi\",\n    \"paint.paintEditor.more\": \"Altele\",\n    \"paint.modeTools.brushSize\": \"Dimensiune\",\n    \"paint.modeTools.eraserSize\": \"Grosimea radierei\",\n    \"paint.modeTools.copy\": \"Copiază\",\n    \"paint.modeTools.paste\": \"Lipește\",\n    \"paint.modeTools.delete\": \"Șterge\",\n    \"paint.modeTools.curved\": \"Curbat\",\n    \"paint.modeTools.pointed\": \"Unghi\",\n    \"paint.modeTools.thickness\": \"Grosime\",\n    \"paint.modeTools.flipHorizontal\": \"Întoarce orizontal\",\n    \"paint.modeTools.flipVertical\": \"Întoarce vertical\",\n    \"paint.modeTools.filled\": \"Plin\",\n    \"paint.modeTools.outlined\": \"Contur\",\n    \"paint.paintEditor.bitmap\": \"Convertește la bitmap\",\n    \"paint.paintEditor.vector\": \"Convertește în format vectorial\",\n    \"paint.paintEditor.fill\": \"Umplere\",\n    \"paint.paintEditor.stroke\": \"Contur\",\n    \"paint.brushMode.brush\": \"Pensulă\",\n    \"paint.eraserMode.eraser\": \"Radieră\",\n    \"paint.fillMode.fill\": \"Umplere\",\n    \"paint.lineMode.line\": \"Linie\",\n    \"paint.ovalMode.oval\": \"Cerc\",\n    \"paint.rectMode.rect\": \"Dreptunghi\",\n    \"paint.reshapeMode.reshape\": \"Remodelează\",\n    \"paint.roundedRectMode.roundedRect\": \"Dreptunghi rotunjit\",\n    \"paint.selectMode.select\": \"Selectează\",\n    \"paint.textMode.text\": \"Text\",\n    \"paint.colorPicker.swap\": \"Schimbă\"\n  },\n  \"ru\": {\n    \"paint.paintEditor.hue\": \"Цвет\",\n    \"paint.paintEditor.saturation\": \"Насыщенность\",\n    \"paint.paintEditor.brightness\": \"Яркость\",\n    \"gui.comingSoon.message1\": \"Не волнуйтесь, мы работаем над этим {emoji}\",\n    \"gui.comingSoon.message2\": \"Скоро…\",\n    \"gui.comingSoon.message3\": \"Мы работаем над этим {emoji}\",\n    \"paint.paintEditor.costume\": \"Костюм\",\n    \"paint.paintEditor.group\": \"Группировать\",\n    \"paint.paintEditor.ungroup\": \"Разгруппировать\",\n    \"paint.paintEditor.undo\": \"Отменить\",\n    \"paint.paintEditor.redo\": \"Переделать\",\n    \"paint.paintEditor.forward\": \"Вперёд\",\n    \"paint.paintEditor.backward\": \"Назад\",\n    \"paint.paintEditor.front\": \"На передний план\",\n    \"paint.paintEditor.back\": \"На задний план\",\n    \"paint.paintEditor.more\": \"Ещё\",\n    \"paint.modeTools.brushSize\": \"Размер\",\n    \"paint.modeTools.eraserSize\": \"Ширина ластика\",\n    \"paint.modeTools.copy\": \"Копировать\",\n    \"paint.modeTools.paste\": \"Вставить\",\n    \"paint.modeTools.delete\": \"Удалить\",\n    \"paint.modeTools.curved\": \"Изогнуть\",\n    \"paint.modeTools.pointed\": \"Заострить\",\n    \"paint.modeTools.thickness\": \"Толщина\",\n    \"paint.modeTools.flipHorizontal\": \"Отразить по горизонтали\",\n    \"paint.modeTools.flipVertical\": \"Отразить по вертикали\",\n    \"paint.modeTools.filled\": \"Залитый\",\n    \"paint.modeTools.outlined\": \"Обведённый\",\n    \"paint.paintEditor.bitmap\": \"Конвертировать в растровую графику\",\n    \"paint.paintEditor.vector\": \"Конвертировать в векторную графику\",\n    \"paint.paintEditor.fill\": \"Заливка\",\n    \"paint.paintEditor.stroke\": \"Контур\",\n    \"paint.brushMode.brush\": \"Кисть\",\n    \"paint.eraserMode.eraser\": \"Ластик\",\n    \"paint.fillMode.fill\": \"Заливка\",\n    \"paint.lineMode.line\": \"Линия\",\n    \"paint.ovalMode.oval\": \"Круг\",\n    \"paint.rectMode.rect\": \"Прямоугольник\",\n    \"paint.reshapeMode.reshape\": \"Изменение формы\",\n    \"paint.roundedRectMode.roundedRect\": \"Скруглённый Прямоугольник\",\n    \"paint.selectMode.select\": \"Выбрать\",\n    \"paint.textMode.text\": \"Текст\",\n    \"paint.colorPicker.swap\": \"Заменить\"\n  },\n  \"nso\": {\n    \"paint.paintEditor.hue\": \"Mmala\",\n    \"paint.paintEditor.saturation\": \"Tlopelo\",\n    \"paint.paintEditor.brightness\": \"Go taga\",\n    \"gui.comingSoon.message1\": \"O se belaele, re šomana le yona{emoji}\",\n    \"gui.comingSoon.message2\": \"E a tla e se kgale...\",\n    \"gui.comingSoon.message3\": \"Re sa šoma ka yona{emoji}\",\n    \"paint.paintEditor.costume\": \"Khosetšhumo\",\n    \"paint.paintEditor.group\": \"Sehlopha\",\n    \"paint.paintEditor.ungroup\": \"Hlopholla\",\n    \"paint.paintEditor.undo\": \"Dirolla\",\n    \"paint.paintEditor.redo\": \"Dira gape\",\n    \"paint.paintEditor.forward\": \"Pele\",\n    \"paint.paintEditor.backward\": \"Morago\",\n    \"paint.paintEditor.front\": \"Pele\",\n    \"paint.paintEditor.back\": \"Morago\",\n    \"paint.paintEditor.more\": \"Go feta\",\n    \"paint.modeTools.brushSize\": \"Bogolo\",\n    \"paint.modeTools.eraserSize\": \"Bogolo bja sephumodi\",\n    \"paint.modeTools.copy\": \"Kopiša\",\n    \"paint.modeTools.paste\": \"Momaretša\",\n    \"paint.modeTools.delete\": \"Phumula\",\n    \"paint.modeTools.curved\": \"Kgopame\",\n    \"paint.modeTools.pointed\": \"Šupile\",\n    \"paint.modeTools.thickness\": \"Bokoto\",\n    \"paint.modeTools.flipHorizontal\": \"Phethola go Rapama\",\n    \"paint.modeTools.flipVertical\": \"Go phethola go tsepa\",\n    \"paint.modeTools.filled\": \"Tladitšwe\",\n    \"paint.modeTools.outlined\": \"Hlalositšwe\",\n    \"paint.paintEditor.bitmap\": \"Fetolela go Bitmap\",\n    \"paint.paintEditor.vector\": \"Fetolela go Vector\",\n    \"paint.paintEditor.fill\": \"Tlatša\",\n    \"paint.paintEditor.stroke\": \"Hlalosa\",\n    \"paint.brushMode.brush\": \"Poraša\",\n    \"paint.eraserMode.eraser\": \"Sephumodi\",\n    \"paint.fillMode.fill\": \"Tlatša\",\n    \"paint.lineMode.line\": \"Mothalo\",\n    \"paint.ovalMode.oval\": \"Sediko\",\n    \"paint.rectMode.rect\": \"Khutlonne\",\n    \"paint.reshapeMode.reshape\": \"Bopaleswa\",\n    \"paint.roundedRectMode.roundedRect\": \"Khutlonne ya go dirwa nkgokolo\",\n    \"paint.selectMode.select\": \"Kgetha\",\n    \"paint.textMode.text\": \"Sengwalwa\",\n    \"paint.colorPicker.swap\": \"Fetola\"\n  },\n  \"tn\": {\n    \"paint.paintEditor.hue\": \"Mmala\",\n    \"paint.paintEditor.saturation\": \"Go tlala\",\n    \"paint.paintEditor.brightness\": \"Phatsimo\",\n    \"gui.comingSoon.message1\": \"Se tshwenyege, re mo go yona{emoji}\",\n    \"gui.comingSoon.message2\": \"E a latela\",\n    \"gui.comingSoon.message3\": \"Re dira mo go yona {emoji}\",\n    \"paint.paintEditor.costume\": \"Seaparo\",\n    \"paint.paintEditor.group\": \"Setlhopa\",\n    \"paint.paintEditor.ungroup\": \"Kgobokanyolola\",\n    \"paint.paintEditor.undo\": \"Sutlha\",\n    \"paint.paintEditor.redo\": \"Dira gape\",\n    \"paint.paintEditor.forward\": \"Kwa pele\",\n    \"paint.paintEditor.backward\": \"Kwa morago\",\n    \"paint.paintEditor.front\": \"Fa pele\",\n    \"paint.paintEditor.back\": \"Morago\",\n    \"paint.paintEditor.more\": \"Oketsegileng\",\n    \"paint.modeTools.brushSize\": \"Tlolela kwa godimo le tlase\",\n    \"paint.modeTools.eraserSize\": \"Bogolo jwa sephimodi\",\n    \"paint.modeTools.copy\": \"Kopa\",\n    \"paint.modeTools.paste\": \"Kgomaretsa\",\n    \"paint.modeTools.delete\": \"Phimola\",\n    \"paint.modeTools.curved\": \"Obegile\",\n    \"paint.modeTools.pointed\": \"Supile\",\n    \"paint.modeTools.thickness\": \"Bokima\",\n    \"paint.modeTools.flipHorizontal\": \"Tlola go tswa mo letlhakoreng go ya go letlhakore le lengwe\",\n    \"paint.modeTools.flipVertical\": \"Tlolela kwa godimo le tlase\",\n    \"paint.modeTools.filled\": \"Tladitswe\",\n    \"paint.modeTools.outlined\": \"Tlhalositswe\",\n    \"paint.paintEditor.bitmap\": \"Fetolela go Bitmap\",\n    \"paint.paintEditor.vector\": \"Fetolela go Vector\",\n    \"paint.paintEditor.fill\": \"Tlatsa\",\n    \"paint.paintEditor.stroke\": \"Tlhalosa\",\n    \"paint.brushMode.brush\": \"Gotlha\",\n    \"paint.eraserMode.eraser\": \"Sephimodi\",\n    \"paint.fillMode.fill\": \"Tlatsa\",\n    \"paint.lineMode.line\": \"Mola\",\n    \"paint.ovalMode.oval\": \"Sediko\",\n    \"paint.rectMode.rect\": \"Khutlho nne tsepa\",\n    \"paint.reshapeMode.reshape\": \"Bopa gape \",\n    \"paint.roundedRectMode.roundedRect\": \"Dikhutlonnetsepa tse di golokang\",\n    \"paint.selectMode.select\": \"Tlhopha\",\n    \"paint.textMode.text\": \"Mokwalo\",\n    \"paint.colorPicker.swap\": \"Refosana\"\n  },\n  \"sk\": {\n    \"paint.paintEditor.hue\": \"farba\",\n    \"paint.paintEditor.saturation\": \"sýtosť\",\n    \"paint.paintEditor.brightness\": \"jas\",\n    \"gui.comingSoon.message1\": \"Na tomto ešte pracujeme {emoji}\",\n    \"gui.comingSoon.message2\": \"Už čoskoro...\",\n    \"gui.comingSoon.message3\": \"Na tomto ešte pracujeme {emoji}\",\n    \"paint.paintEditor.costume\": \"kostým\",\n    \"paint.paintEditor.group\": \"Spoj\",\n    \"paint.paintEditor.ungroup\": \"Rozdeľ\",\n    \"paint.paintEditor.undo\": \"Naspäť\",\n    \"paint.paintEditor.redo\": \"Znova\",\n    \"paint.paintEditor.forward\": \"Dopredu\",\n    \"paint.paintEditor.backward\": \"Dozadu\",\n    \"paint.paintEditor.front\": \"Navrch\",\n    \"paint.paintEditor.back\": \"Naspodok\",\n    \"paint.paintEditor.more\": \"Viac\",\n    \"paint.modeTools.brushSize\": \"hrúbka\",\n    \"paint.modeTools.eraserSize\": \"hrúbka gumy\",\n    \"paint.modeTools.copy\": \"Kopíruj\",\n    \"paint.modeTools.paste\": \"Vlož\",\n    \"paint.modeTools.delete\": \"Zmaž\",\n    \"paint.modeTools.curved\": \"Krivky\",\n    \"paint.modeTools.pointed\": \"Hroty\",\n    \"paint.modeTools.thickness\": \"Hrúbka\",\n    \"paint.modeTools.flipHorizontal\": \"prevráť vodorovne\",\n    \"paint.modeTools.flipVertical\": \"prevráť zvislo\",\n    \"paint.modeTools.filled\": \"výplň\",\n    \"paint.modeTools.outlined\": \"obrys\",\n    \"paint.paintEditor.bitmap\": \"zmeň na raster\",\n    \"paint.paintEditor.vector\": \"zmeň na vektory\",\n    \"paint.paintEditor.fill\": \"výplň\",\n    \"paint.paintEditor.stroke\": \"obrys\",\n    \"paint.brushMode.brush\": \"štetec\",\n    \"paint.eraserMode.eraser\": \"guma\",\n    \"paint.fillMode.fill\": \"výplň\",\n    \"paint.lineMode.line\": \"úsečka\",\n    \"paint.ovalMode.oval\": \"elipsa (Shift: Kružnica)\",\n    \"paint.rectMode.rect\": \"obdĺžnik (Shift: štvorec)\",\n    \"paint.reshapeMode.reshape\": \"uprav tvar\",\n    \"paint.roundedRectMode.roundedRect\": \"zaoblený obdĺžnik\",\n    \"paint.selectMode.select\": \"označ\",\n    \"paint.textMode.text\": \"text\",\n    \"paint.colorPicker.swap\": \"zameň farby\"\n  },\n  \"sl\": {\n    \"paint.paintEditor.hue\": \"Barva\",\n    \"paint.paintEditor.saturation\": \"nasičenost\",\n    \"paint.paintEditor.brightness\": \"Svetlost\",\n    \"gui.comingSoon.message1\": \"Ne skrbi, delamo na tem {emoji}\",\n    \"gui.comingSoon.message2\": \"Kmalu ...\",\n    \"gui.comingSoon.message3\": \"Delamo na tem {emoji}\",\n    \"paint.paintEditor.costume\": \"Videz\",\n    \"paint.paintEditor.group\": \"Združi\",\n    \"paint.paintEditor.ungroup\": \"Razdruži\",\n    \"paint.paintEditor.undo\": \"Razveljavi\",\n    \"paint.paintEditor.redo\": \"Uveljavi\",\n    \"paint.paintEditor.forward\": \"naprej\",\n    \"paint.paintEditor.backward\": \"nazaj\",\n    \"paint.paintEditor.front\": \"Spredaj\",\n    \"paint.paintEditor.back\": \"Nazaj\",\n    \"paint.paintEditor.more\": \"Več\",\n    \"paint.modeTools.brushSize\": \"Velikost\",\n    \"paint.modeTools.eraserSize\": \"Širina radirke\",\n    \"paint.modeTools.copy\": \"Kopiraj\",\n    \"paint.modeTools.paste\": \"prilepi\",\n    \"paint.modeTools.delete\": \"Izbriši\",\n    \"paint.modeTools.curved\": \"Zaobljeno\",\n    \"paint.modeTools.pointed\": \"Točkovno\",\n    \"paint.modeTools.thickness\": \"debelina\",\n    \"paint.modeTools.flipHorizontal\": \"Obrni vodoravno\",\n    \"paint.modeTools.flipVertical\": \"Obrni navpično\",\n    \"paint.modeTools.filled\": \"polnitev\",\n    \"paint.modeTools.outlined\": \"očrtano\",\n    \"paint.paintEditor.bitmap\": \"Pretvori v bitno sliko\",\n    \"paint.paintEditor.vector\": \"Pretvori v vektorsko sliko\",\n    \"paint.paintEditor.fill\": \"Zapolni\",\n    \"paint.paintEditor.stroke\": \"Obroba\",\n    \"paint.brushMode.brush\": \"Čopič\",\n    \"paint.eraserMode.eraser\": \"Radirka\",\n    \"paint.fillMode.fill\": \"Zapolni\",\n    \"paint.lineMode.line\": \"Črta\",\n    \"paint.ovalMode.oval\": \"Krog\",\n    \"paint.rectMode.rect\": \"Pravokotnik\",\n    \"paint.reshapeMode.reshape\": \"Preoblikuj\",\n    \"paint.roundedRectMode.roundedRect\": \"Zaokrožen pravokotnik\",\n    \"paint.selectMode.select\": \"Izberi\",\n    \"paint.textMode.text\": \"Besedilo\",\n    \"paint.colorPicker.swap\": \"zamenjaj\"\n  },\n  \"sr\": {\n    \"paint.paintEditor.hue\": \"Боја\",\n    \"paint.paintEditor.saturation\": \"Засићење\",\n    \"paint.paintEditor.brightness\": \"Осветљеност\",\n    \"gui.comingSoon.message1\": \"Не брини, радимо на томе  {emoji}\",\n    \"gui.comingSoon.message2\": \"Очекуј убрзо\",\n    \"gui.comingSoon.message3\": \"Радимо на томе {emoji}\",\n    \"paint.paintEditor.costume\": \"Костим\",\n    \"paint.paintEditor.group\": \"Групиши\",\n    \"paint.paintEditor.ungroup\": \"Разгрупиши\",\n    \"paint.paintEditor.undo\": \"Опозови\",\n    \"paint.paintEditor.redo\": \"Понови\",\n    \"paint.paintEditor.forward\": \"Напред\",\n    \"paint.paintEditor.backward\": \"Назад\",\n    \"paint.paintEditor.front\": \"Напред\",\n    \"paint.paintEditor.back\": \"Назад\",\n    \"paint.paintEditor.more\": \"Више\",\n    \"paint.modeTools.brushSize\": \"Величина\",\n    \"paint.modeTools.eraserSize\": \"Величина брисача\",\n    \"paint.modeTools.copy\": \"Умножи\",\n    \"paint.modeTools.paste\": \"Уметни\",\n    \"paint.modeTools.delete\": \"Обриши\",\n    \"paint.modeTools.curved\": \"Заобљено\",\n    \"paint.modeTools.pointed\": \"Шиљаст\",\n    \"paint.modeTools.thickness\": \"Дебљина\",\n    \"paint.modeTools.flipHorizontal\": \"Обрни хоризонтално\",\n    \"paint.modeTools.flipVertical\": \"Обрни вертикално\",\n    \"paint.modeTools.filled\": \"Попуњено\",\n    \"paint.modeTools.outlined\": \"Контура\",\n    \"paint.paintEditor.bitmap\": \"Преведи у растерски облик\",\n    \"paint.paintEditor.vector\": \"Преведи у векторски облик\",\n    \"paint.paintEditor.fill\": \"Попуни\",\n    \"paint.paintEditor.stroke\": \"Контура\",\n    \"paint.brushMode.brush\": \"Четкица\",\n    \"paint.eraserMode.eraser\": \"Брисач\",\n    \"paint.fillMode.fill\": \"Попуни\",\n    \"paint.lineMode.line\": \"Линија\",\n    \"paint.ovalMode.oval\": \"Круг\",\n    \"paint.rectMode.rect\": \"Правоугаоник\",\n    \"paint.reshapeMode.reshape\": \"Преобликуј\",\n    \"paint.roundedRectMode.roundedRect\": \"Заобљени правоугаоник\",\n    \"paint.selectMode.select\": \"Изабери\",\n    \"paint.textMode.text\": \"Текст\",\n    \"paint.colorPicker.swap\": \"Замени\"\n  },\n  \"fi\": {\n    \"paint.paintEditor.hue\": \"Väri\",\n    \"paint.paintEditor.saturation\": \"Värikylläisyys\",\n    \"paint.paintEditor.brightness\": \"Kirkkaus\",\n    \"gui.comingSoon.message1\": \"Älä huoli, toteutamme sitä {emoji}\",\n    \"gui.comingSoon.message2\": \"Tulossa pian...\",\n    \"gui.comingSoon.message3\": \"Toteutamme sitä {emoji}\",\n    \"paint.paintEditor.costume\": \"Asuste\",\n    \"paint.paintEditor.group\": \"Ryhmitä\",\n    \"paint.paintEditor.ungroup\": \"Pura ryhmitys\",\n    \"paint.paintEditor.undo\": \"Kumoa\",\n    \"paint.paintEditor.redo\": \"Tee uudelleen\",\n    \"paint.paintEditor.forward\": \"Eteenpäin\",\n    \"paint.paintEditor.backward\": \"Taaksepäin\",\n    \"paint.paintEditor.front\": \"Eteen\",\n    \"paint.paintEditor.back\": \"Taakse\",\n    \"paint.paintEditor.more\": \"Enemmän\",\n    \"paint.modeTools.brushSize\": \"Koko\",\n    \"paint.modeTools.eraserSize\": \"Kumin koko\",\n    \"paint.modeTools.copy\": \"Kopioi\",\n    \"paint.modeTools.paste\": \"Liitä\",\n    \"paint.modeTools.delete\": \"Poista\",\n    \"paint.modeTools.curved\": \"Kaartuva\",\n    \"paint.modeTools.pointed\": \"Teräväkärkinen\",\n    \"paint.modeTools.thickness\": \"Paksuus\",\n    \"paint.modeTools.flipHorizontal\": \"Käännä vaakasuoraan\",\n    \"paint.modeTools.flipVertical\": \"Käännä pystysuoraan\",\n    \"paint.modeTools.filled\": \"Täytetty\",\n    \"paint.modeTools.outlined\": \"Ääriviivallinen\",\n    \"paint.paintEditor.bitmap\": \"Muunna bittikartaksi\",\n    \"paint.paintEditor.vector\": \"Muunna vektoriksi\",\n    \"paint.paintEditor.fill\": \"Täytä\",\n    \"paint.paintEditor.stroke\": \"Ääriviiva\",\n    \"paint.brushMode.brush\": \"Sivellin\",\n    \"paint.eraserMode.eraser\": \"Pyyhekumi\",\n    \"paint.fillMode.fill\": \"Täytä\",\n    \"paint.lineMode.line\": \"Viiva\",\n    \"paint.ovalMode.oval\": \"Ympyrä\",\n    \"paint.rectMode.rect\": \"Suorakulmio\",\n    \"paint.reshapeMode.reshape\": \"Muotoile uudelleen\",\n    \"paint.roundedRectMode.roundedRect\": \"Pyöristetty suorakulmio\",\n    \"paint.selectMode.select\": \"Valitse\",\n    \"paint.textMode.text\": \"Teksti\",\n    \"paint.colorPicker.swap\": \"Vaihda\"\n  },\n  \"sv\": {\n    \"paint.paintEditor.hue\": \"Färg\",\n    \"paint.paintEditor.saturation\": \"Mättnad\",\n    \"paint.paintEditor.brightness\": \"Ljusstyrka\",\n    \"gui.comingSoon.message1\": \"Det är lugnt, vi jobbar på det {emoji}\",\n    \"gui.comingSoon.message2\": \"Kommer snart...\",\n    \"gui.comingSoon.message3\": \"Vi jobbar på det {emoji}\",\n    \"paint.paintEditor.costume\": \"Klädsel\",\n    \"paint.paintEditor.group\": \"Gruppera\",\n    \"paint.paintEditor.ungroup\": \"Dela upp grupp\",\n    \"paint.paintEditor.undo\": \"Ångra\",\n    \"paint.paintEditor.redo\": \"Gör om\",\n    \"paint.paintEditor.forward\": \"Framåt\",\n    \"paint.paintEditor.backward\": \"Bakåt\",\n    \"paint.paintEditor.front\": \"Placera längst fram\",\n    \"paint.paintEditor.back\": \"Placera längst bak\",\n    \"paint.paintEditor.more\": \"Mer\",\n    \"paint.modeTools.brushSize\": \"Storlek\",\n    \"paint.modeTools.eraserSize\": \"Suddgummi storlek\",\n    \"paint.modeTools.copy\": \"Kopiera\",\n    \"paint.modeTools.paste\": \"Klistra in\",\n    \"paint.modeTools.delete\": \"Radera\",\n    \"paint.modeTools.curved\": \"Böjd\",\n    \"paint.modeTools.pointed\": \"Spetsig\",\n    \"paint.modeTools.thickness\": \"Tjocklek\",\n    \"paint.modeTools.flipHorizontal\": \"Vänd vågrätt\",\n    \"paint.modeTools.flipVertical\": \"Vänd lodrätt\",\n    \"paint.modeTools.filled\": \"Fylld\",\n    \"paint.modeTools.outlined\": \"Ofylld\",\n    \"paint.paintEditor.bitmap\": \"Gör till bitmapp\",\n    \"paint.paintEditor.vector\": \"Konvertera till vektor\",\n    \"paint.paintEditor.fill\": \"Fyll\",\n    \"paint.paintEditor.stroke\": \"Kontur\",\n    \"paint.brushMode.brush\": \"Pensel\",\n    \"paint.eraserMode.eraser\": \"Radergummi\",\n    \"paint.fillMode.fill\": \"Fyll\",\n    \"paint.lineMode.line\": \"Linje\",\n    \"paint.ovalMode.oval\": \"Cirkel\",\n    \"paint.rectMode.rect\": \"Rektangel\",\n    \"paint.reshapeMode.reshape\": \"Omforma\",\n    \"paint.roundedRectMode.roundedRect\": \"Rektangel rundade hörn\",\n    \"paint.selectMode.select\": \"Välj\",\n    \"paint.textMode.text\": \"Text\",\n    \"paint.colorPicker.swap\": \"Växla färg\"\n  },\n  \"vi\": {\n    \"paint.paintEditor.hue\": \"Màu\",\n    \"paint.paintEditor.saturation\": \"Độ bão hòa\",\n    \"paint.paintEditor.brightness\": \"Độ sáng\",\n    \"gui.comingSoon.message1\": \"Đừng lo, chúng tôi đang phát triển tính năng này {emoji}\",\n    \"gui.comingSoon.message2\": \"Sắp có...\",\n    \"gui.comingSoon.message3\": \"Chúng tôi đang tiếp tục phát triển tính năng này {emoji}\",\n    \"paint.paintEditor.costume\": \"Trang phục\",\n    \"paint.paintEditor.group\": \"Nhóm\",\n    \"paint.paintEditor.ungroup\": \"Hủy nhóm\",\n    \"paint.paintEditor.undo\": \"Hoàn tác\",\n    \"paint.paintEditor.redo\": \"Làm lại \",\n    \"paint.paintEditor.forward\": \"Đưa lên phía trên\",\n    \"paint.paintEditor.backward\": \"Đưa ra phía sau\",\n    \"paint.paintEditor.front\": \"Đưa lên phía trên cùng\",\n    \"paint.paintEditor.back\": \"Đưa ra phía sau cùng\",\n    \"paint.paintEditor.more\": \"Nhiều hơn\",\n    \"paint.modeTools.brushSize\": \"Kích thước \",\n    \"paint.modeTools.eraserSize\": \"Kích thước tẩy\",\n    \"paint.modeTools.copy\": \"Sao chép\",\n    \"paint.modeTools.paste\": \"Dán\",\n    \"paint.modeTools.delete\": \"Xóa\",\n    \"paint.modeTools.curved\": \"Uốn cong\",\n    \"paint.modeTools.pointed\": \"Góc nhọn\",\n    \"paint.modeTools.thickness\": \"Độ dày ngòi bút\",\n    \"paint.modeTools.flipHorizontal\": \"Lật ngang\",\n    \"paint.modeTools.flipVertical\": \"Lật dọc\",\n    \"paint.modeTools.filled\": \"Hình đầy\",\n    \"paint.modeTools.outlined\": \"Hình rỗng\",\n    \"paint.paintEditor.bitmap\": \"Chuyển thành Bitmap\",\n    \"paint.paintEditor.vector\": \"Chuyển thành Vector\",\n    \"paint.paintEditor.fill\": \"Tô\",\n    \"paint.paintEditor.stroke\": \"Viền\",\n    \"paint.brushMode.brush\": \"Cọ vẽ\",\n    \"paint.eraserMode.eraser\": \"Tẩy\",\n    \"paint.fillMode.fill\": \"Tô\",\n    \"paint.lineMode.line\": \"Dòng\",\n    \"paint.ovalMode.oval\": \"Hình tròn\",\n    \"paint.rectMode.rect\": \"Hình chữ nhật\",\n    \"paint.reshapeMode.reshape\": \"Đổi hình dạng\",\n    \"paint.roundedRectMode.roundedRect\": \"Hình vuông góc tròn\",\n    \"paint.selectMode.select\": \"Chọn\",\n    \"paint.textMode.text\": \"Văn bản\",\n    \"paint.colorPicker.swap\": \"Đổi màu\"\n  },\n  \"tr\": {\n    \"paint.paintEditor.hue\": \"Renk\",\n    \"paint.paintEditor.saturation\": \"Doygunluk\",\n    \"paint.paintEditor.brightness\": \"Parlaklık\",\n    \"gui.comingSoon.message1\": \"Endişelenmeyin, üzerinde çalışıyoruz {emoji}\",\n    \"gui.comingSoon.message2\": \"Çok Yakında...\",\n    \"gui.comingSoon.message3\": \"Üzerinde çalışıyoruz {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostüm\",\n    \"paint.paintEditor.group\": \"Grup\",\n    \"paint.paintEditor.ungroup\": \"Grubu Dağıt\",\n    \"paint.paintEditor.undo\": \"Geri Al\",\n    \"paint.paintEditor.redo\": \"İleri Al\",\n    \"paint.paintEditor.forward\": \"Öne\",\n    \"paint.paintEditor.backward\": \"Geriye\",\n    \"paint.paintEditor.front\": \"En Öne\",\n    \"paint.paintEditor.back\": \"En Geriye\",\n    \"paint.paintEditor.more\": \"Daha Fazla\",\n    \"paint.modeTools.brushSize\": \"Büyüklük\",\n    \"paint.modeTools.eraserSize\": \"Silgi boyutu\",\n    \"paint.modeTools.copy\": \"Kopyala\",\n    \"paint.modeTools.paste\": \"Yapıştır\",\n    \"paint.modeTools.delete\": \"Sil\",\n    \"paint.modeTools.curved\": \"Kavisli\",\n    \"paint.modeTools.pointed\": \"işaretlendi\",\n    \"paint.modeTools.thickness\": \"Kalınlık\",\n    \"paint.modeTools.flipHorizontal\": \"Yatay Çevir\",\n    \"paint.modeTools.flipVertical\": \"Dikey Çevir\",\n    \"paint.modeTools.filled\": \"Dolmuş\",\n    \"paint.modeTools.outlined\": \"Ana Hatlarıyla Çizilen \",\n    \"paint.paintEditor.bitmap\": \"Bitmap'e Dönüştür\",\n    \"paint.paintEditor.vector\": \"Vektöre Dönüştür\",\n    \"paint.paintEditor.fill\": \"Doldur\",\n    \"paint.paintEditor.stroke\": \"Kontur\",\n    \"paint.brushMode.brush\": \"Fırça\",\n    \"paint.eraserMode.eraser\": \"silgi\",\n    \"paint.fillMode.fill\": \"Doldur\",\n    \"paint.lineMode.line\": \"Çizgi\",\n    \"paint.ovalMode.oval\": \"Çember\",\n    \"paint.rectMode.rect\": \"Dikdörtgen\",\n    \"paint.reshapeMode.reshape\": \"Şekli değiştir\",\n    \"paint.roundedRectMode.roundedRect\": \"Yuvarlatılmış dikdörtgen\",\n    \"paint.selectMode.select\": \"Seç\",\n    \"paint.textMode.text\": \"Metin\",\n    \"paint.colorPicker.swap\": \"Değiştir\"\n  },\n  \"uk\": {\n    \"paint.paintEditor.hue\": \"Колір\",\n    \"paint.paintEditor.saturation\": \"Насиченість\",\n    \"paint.paintEditor.brightness\": \"Яскравість\",\n    \"gui.comingSoon.message1\": \"Не хвилюйтеся, ми тут {emoji}\",\n    \"gui.comingSoon.message2\": \"Незабаром...\",\n    \"gui.comingSoon.message3\": \"Ми над цим працюємо {emoji}\",\n    \"paint.paintEditor.costume\": \"Образ\",\n    \"paint.paintEditor.group\": \"Групувати\",\n    \"paint.paintEditor.ungroup\": \"Розгрупувати\",\n    \"paint.paintEditor.undo\": \"Скасувати\",\n    \"paint.paintEditor.redo\": \"Повернути\",\n    \"paint.paintEditor.forward\": \"Вперед\",\n    \"paint.paintEditor.backward\": \"Назад\",\n    \"paint.paintEditor.front\": \"Попереду\",\n    \"paint.paintEditor.back\": \"Позаду\",\n    \"paint.paintEditor.more\": \"Більше\",\n    \"paint.modeTools.brushSize\": \"Розмір\",\n    \"paint.modeTools.eraserSize\": \"Розмір зтирачки\",\n    \"paint.modeTools.copy\": \"Копія\",\n    \"paint.modeTools.paste\": \"Вставити\",\n    \"paint.modeTools.delete\": \"Вилучити\",\n    \"paint.modeTools.curved\": \"Крива\",\n    \"paint.modeTools.pointed\": \"Кути\",\n    \"paint.modeTools.thickness\": \"Товщина\",\n    \"paint.modeTools.flipHorizontal\": \"Право-ліво\",\n    \"paint.modeTools.flipVertical\": \"Верх-низ\",\n    \"paint.modeTools.filled\": \"Заповнення\",\n    \"paint.modeTools.outlined\": \"Межа\",\n    \"paint.paintEditor.bitmap\": \"У растрове\",\n    \"paint.paintEditor.vector\": \"У векторне\",\n    \"paint.paintEditor.fill\": \"Заповнення\",\n    \"paint.paintEditor.stroke\": \"Межа\",\n    \"paint.brushMode.brush\": \"Пензель\",\n    \"paint.eraserMode.eraser\": \"Гумка\",\n    \"paint.fillMode.fill\": \"Заповнення\",\n    \"paint.lineMode.line\": \"Лінія\",\n    \"paint.ovalMode.oval\": \"Коло\",\n    \"paint.rectMode.rect\": \"Прямокутник\",\n    \"paint.reshapeMode.reshape\": \"Реформувати\",\n    \"paint.roundedRectMode.roundedRect\": \"Закруглений прямокутник\",\n    \"paint.selectMode.select\": \"Обрати\",\n    \"paint.textMode.text\": \"Текст\",\n    \"paint.colorPicker.swap\": \"Поміняти\"\n  },\n  \"zh-cn\": {\n    \"paint.paintEditor.hue\": \"颜色\",\n    \"paint.paintEditor.saturation\": \"饱和度\",\n    \"paint.paintEditor.brightness\": \"亮度\",\n    \"gui.comingSoon.message1\": \"别急,我们还在开发 {emoji}\",\n    \"gui.comingSoon.message2\": \"很快就能用了……\",\n    \"gui.comingSoon.message3\": \"我们还在开发这个功能 {emoji}\",\n    \"paint.paintEditor.costume\": \"造型\",\n    \"paint.paintEditor.group\": \"组合\",\n    \"paint.paintEditor.ungroup\": \"拆散\",\n    \"paint.paintEditor.undo\": \"撤销\",\n    \"paint.paintEditor.redo\": \"重做\",\n    \"paint.paintEditor.forward\": \"往前放\",\n    \"paint.paintEditor.backward\": \"往后放\",\n    \"paint.paintEditor.front\": \"放最前面\",\n    \"paint.paintEditor.back\": \"放最后面\",\n    \"paint.paintEditor.more\": \"更多\",\n    \"paint.modeTools.brushSize\": \"粗细\",\n    \"paint.modeTools.eraserSize\": \"橡皮擦大小\",\n    \"paint.modeTools.copy\": \"复制\",\n    \"paint.modeTools.paste\": \"粘贴\",\n    \"paint.modeTools.delete\": \"删除\",\n    \"paint.modeTools.curved\": \"曲线\",\n    \"paint.modeTools.pointed\": \"折线\",\n    \"paint.modeTools.thickness\": \"粗细\",\n    \"paint.modeTools.flipHorizontal\": \"水平翻转\",\n    \"paint.modeTools.flipVertical\": \"垂直翻转\",\n    \"paint.modeTools.filled\": \"实心\",\n    \"paint.modeTools.outlined\": \"轮廓\",\n    \"paint.paintEditor.bitmap\": \"转换为位图\",\n    \"paint.paintEditor.vector\": \"转换为矢量图\",\n    \"paint.paintEditor.fill\": \"填充\",\n    \"paint.paintEditor.stroke\": \"轮廓\",\n    \"paint.brushMode.brush\": \"画笔\",\n    \"paint.eraserMode.eraser\": \"橡皮擦\",\n    \"paint.fillMode.fill\": \"填充\",\n    \"paint.lineMode.line\": \"线段\",\n    \"paint.ovalMode.oval\": \"圆\",\n    \"paint.rectMode.rect\": \"矩形\",\n    \"paint.reshapeMode.reshape\": \"变形\",\n    \"paint.roundedRectMode.roundedRect\": \"圆角矩形\",\n    \"paint.selectMode.select\": \"选择\",\n    \"paint.textMode.text\": \"文本\",\n    \"paint.colorPicker.swap\": \"交换\"\n  },\n  \"zh-tw\": {\n    \"paint.paintEditor.hue\": \"顏色\",\n    \"paint.paintEditor.saturation\": \"彩度\",\n    \"paint.paintEditor.brightness\": \"亮度\",\n    \"gui.comingSoon.message1\": \"別擔心,我們在做囉 {emoji}\",\n    \"gui.comingSoon.message2\": \"即將推出...\",\n    \"gui.comingSoon.message3\": \"努力趕工中 {emoji}\",\n    \"paint.paintEditor.costume\": \"造型\",\n    \"paint.paintEditor.group\": \"建立群組\",\n    \"paint.paintEditor.ungroup\": \"解散群組\",\n    \"paint.paintEditor.undo\": \"復原\",\n    \"paint.paintEditor.redo\": \"重做\",\n    \"paint.paintEditor.forward\": \"上移一層\",\n    \"paint.paintEditor.backward\": \"下移一層\",\n    \"paint.paintEditor.front\": \"移到最上層\",\n    \"paint.paintEditor.back\": \"移到最下層\",\n    \"paint.paintEditor.more\": \"更多\",\n    \"paint.modeTools.brushSize\": \"尺寸\",\n    \"paint.modeTools.eraserSize\": \"擦子寬度\",\n    \"paint.modeTools.copy\": \"複製\",\n    \"paint.modeTools.paste\": \"貼上\",\n    \"paint.modeTools.delete\": \"刪除\",\n    \"paint.modeTools.curved\": \"圓弧\",\n    \"paint.modeTools.pointed\": \"尖角\",\n    \"paint.modeTools.thickness\": \"線條寬度\",\n    \"paint.modeTools.flipHorizontal\": \"橫向翻轉\",\n    \"paint.modeTools.flipVertical\": \"直向翻轉\",\n    \"paint.modeTools.filled\": \"填滿\",\n    \"paint.modeTools.outlined\": \"外框\",\n    \"paint.paintEditor.bitmap\": \"轉換成點陣圖\",\n    \"paint.paintEditor.vector\": \"轉換成向量圖\",\n    \"paint.paintEditor.fill\": \"填滿\",\n    \"paint.paintEditor.stroke\": \"外框\",\n    \"paint.brushMode.brush\": \"筆刷\",\n    \"paint.eraserMode.eraser\": \"擦子\",\n    \"paint.fillMode.fill\": \"填滿\",\n    \"paint.lineMode.line\": \"線條\",\n    \"paint.ovalMode.oval\": \"圓形\",\n    \"paint.rectMode.rect\": \"方形\",\n    \"paint.reshapeMode.reshape\": \"重新塑形\",\n    \"paint.roundedRectMode.roundedRect\": \"圓角方形\",\n    \"paint.selectMode.select\": \"選取\",\n    \"paint.textMode.text\": \"文字\",\n    \"paint.colorPicker.swap\": \"交換\"\n  }\n};\n","import {addLocaleData} from 'react-intl';\nimport {updateIntl as superUpdateIntl} from 'react-intl-redux';\nimport {IntlProvider, intlReducer} from 'react-intl-redux';\n\nimport localeData from 'scratch-l10n';\nimport paintMessages from 'scratch-l10n/locales/paint-editor-msgs';\n\nObject.keys(localeData).forEach(locale => {\n    // TODO: will need to handle locales not in the default intl - see www/custom-locales\n    addLocaleData(localeData[locale].localeData);\n});\n\nconst intlInitialState = {\n    intl: {\n        defaultLocale: 'en',\n        locale: 'en',\n        messages: paintMessages.en.messages\n    }\n};\n\nconst updateIntl = locale => superUpdateIntl({\n    locale: locale,\n    messages: paintMessages[locale].messages || paintMessages.en.messages\n});\n\nexport {\n    intlReducer as default,\n    IntlProvider,\n    intlInitialState,\n    updateIntl\n};\n","import {combineReducers} from 'redux';\nimport intlReducer from './intl';\nimport {ScratchPaintReducer} from '../..';\n\nexport default combineReducers({\n    intl: intlReducer,\n    scratchPaint: ScratchPaintReducer\n});\n","import bindAll from 'lodash.bindall';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PaintEditor from '..';\nimport {Provider} from 'react-redux';\nimport {createStore} from 'redux';\nimport reducer from './reducers/combine-reducers';\nimport {intlInitialState, IntlProvider} from './reducers/intl.js';\nimport styles from './playground.css';\n// scratch-render-fonts is a playground-only dep. Fonts are expected to be imported\n// as a peer dependency, otherwise there will be two copies of them.\nimport {FONTS} from 'scratch-render-fonts';\n\nconst appTarget = document.createElement('div');\nappTarget.setAttribute('class', styles.playgroundContainer);\ndocument.body.appendChild(appTarget);\nconst store = createStore(\n    reducer,\n    intlInitialState,\n    window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()\n);\nconst svgString =\n    '<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"' +\n            ' x=\"0px\" y=\"0px\" width=\"32px\" height=\"32px\" viewBox=\"0.5 384.5 32 32\"' +\n            ' enable-background=\"new 0.5 384.5 32 32\" xml:space=\"preserve\">' +\n        '<path fill=\"none\" stroke=\"#000000\" stroke-width=\"3\" stroke-miterlimit=\"10\" d=\"M7.5,392.241h7.269' +\n            'c4.571,0,8.231,5.555,8.231,10.123v7.377\"/>' +\n        '<polyline points=\"10.689,399.492 3.193,391.997 10.689,384.5 \"/>' +\n        '<polyline points=\"30.185,405.995 22.689,413.491 15.192,405.995 \"/>' +\n    '</svg>';\nclass Playground extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'downloadImage',\n            'handleUpdateName',\n            'handleUpdateImage',\n            'onUploadImage'\n        ]);\n        // Append ?dir=rtl to URL to get RTL layout\n        const match = location.search.match(/dir=([^&]+)/);\n        const rtl = match && match[1] == 'rtl';\n        this.id = 0;\n        this.state = {\n            name: 'meow',\n            rotationCenterX: 20,\n            rotationCenterY: 400,\n            imageFormat: 'svg', // 'svg', 'png', or 'jpg'\n            image: svgString, // svg string or data URI\n            imageId: this.id, // If this changes, the paint editor will reload\n            rtl: rtl,\n        };\n        this.reusableCanvas = document.createElement('canvas');\n    }\n    handleUpdateName (name) {\n        this.setState({name});\n    }\n    handleUpdateImage (isVector, image, rotationCenterX, rotationCenterY) {\n        this.setState({\n            imageFormat: isVector ? 'svg' : 'png'\n        });\n        if (!isVector) {\n            console.log(`Image width: ${image.width}    Image height: ${image.height}`);\n        }\n        console.log(`rotationCenterX: ${rotationCenterX}    rotationCenterY: ${rotationCenterY}`);\n        if (isVector) {\n            this.setState({image, rotationCenterX, rotationCenterY});\n        } else { // is Bitmap\n            // image parameter has type ImageData\n            // paint editor takes dataURI as input\n            this.reusableCanvas.width = image.width;\n            this.reusableCanvas.height = image.height;\n            const context = this.reusableCanvas.getContext('2d');\n            context.putImageData(image, 0, 0);\n            this.setState({\n                image: this.reusableCanvas.toDataURL('image/png'),\n                rotationCenterX: rotationCenterX,\n                rotationCenterY: rotationCenterY\n            });\n        }\n    }\n    downloadImage () {\n        const downloadLink = document.createElement('a');\n        document.body.appendChild(downloadLink);\n\n        const format = this.state.imageFormat;\n        let data = this.state.image;\n        if (format === 'png' || format === 'jpg') {\n            data = this.b64toByteArray(data);\n        } else {\n            data = [data];\n        }\n        const blob = new Blob(data, {type: format});\n        const filename = `${this.state.name}.${format}`;\n        if ('download' in HTMLAnchorElement.prototype) {\n            const url = window.URL.createObjectURL(blob);\n            downloadLink.href = url;\n            downloadLink.download = filename;\n            downloadLink.type = blob.type;\n            downloadLink.click();\n            window.URL.revokeObjectURL(url);\n        } else {\n            // iOS Safari, open a new page and set href to data-uri\n            let popup = window.open('', '_blank');\n            const reader = new FileReader();\n            reader.onloadend = function () {\n                popup.location.href = reader.result;\n                popup = null;\n            };\n            reader.readAsDataURL(blob);\n        }\n        document.body.removeChild(downloadLink);\n    }\n    b64toByteArray (b64Data, sliceSize=512) {\n        // Remove header\n        b64Data = b64Data.substring(b64Data.indexOf('base64,') + 7);\n\n        const byteCharacters = atob(b64Data);\n        const byteArrays = [];\n\n        for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n            const slice = byteCharacters.slice(offset, offset + sliceSize);\n\n            const byteNumbers = new Array(slice.length);\n            for (let i = 0; i < slice.length; i++) {\n                byteNumbers[i] = slice.charCodeAt(i);\n            }\n\n        const byteArray = new Uint8Array(byteNumbers);\n        byteArrays.push(byteArray);\n      }\n\n      return byteArrays;\n    }\n    uploadImage() {\n        document.getElementById(styles.fileInput).click();\n    }\n    onUploadImage(event) {\n        var file = event.target.files[0];\n        var type = file.type === 'image/svg+xml' ? 'svg' :\n            file.type === 'image/png' ? 'png' :\n            file.type === 'image/jpg' ? 'jpg' :\n            file.type === 'image/jpeg' ? 'jpg' :\n            null;\n\n        var reader = new FileReader();\n        if (type === 'svg') {\n            reader.readAsText(file,'UTF-8');\n        } else if (type === 'png' || type === 'jpg'){\n            reader.readAsDataURL(file);\n        } else {\n            alert(\"Couldn't read file type: \" + file.type);\n        }\n\n        const that = this;\n        reader.onload = readerEvent => {\n            var content = readerEvent.target.result; // this is the content!\n\n            that.setState({\n                image: content,\n                name: file.name.split('.').slice(0, -1).join('.'),\n                imageId: ++that.id,\n                imageFormat: type,\n                rotationCenterX: undefined,\n                rotationCenterY: undefined,\n            });\n       }\n    }\n    render () {\n        return (\n            <div className={styles.wrapper}>\n                <PaintEditor\n                    {...this.state}\n                    onUpdateName={this.handleUpdateName}\n                    onUpdateImage={this.handleUpdateImage}\n                />\n                <button className={styles.playgroundButton}  onClick={this.uploadImage}>Upload</button>\n                <input id={styles.fileInput} type=\"file\" name=\"name\" onChange={this.onUploadImage} />\n                <button className={styles.playgroundButton} onClick={this.downloadImage}>Download</button>\n            </div>\n        );\n    }\n\n}\nReactDOM.render((\n    <Provider store={store}>\n        <IntlProvider>\n            <Playground />\n        </IntlProvider>\n    </Provider>\n), appTarget);\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAOA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA,SAEA;AACA;AACA;AACA;;;;;;;;ACvpiBA;AACA;AACA;AACA;AACA,SAEA;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACr+CA;AACA;AACA;AACA;AACA;;;ACJA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAiCA;AACA;AACA;AACA;AACA;;AC/SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAEA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA,UAEA;AACA;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACRA;AACA;AACA;AACA;AACA;AACA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACdA;AACA;AACA;AACA;AACA;AACA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAEA;AACA;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/8CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnDA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACltBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtGA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AAGA;AACA;AAGA;AACA;AAGA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5IA;;;;;;ACAA;;;;;;ACAA;AACA;AACA;AACA;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChDA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAEA;;;;;;;;ACrCA;AACA;AACA;AACA;AACA,SAEA;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzCA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAEA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;;;;;;;;ACHA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;;;;;;ACAA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnSA;AACA;AACA;AACA;AACA,SAEA;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChgMA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChNA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACx3CA;AACA;AACA;AACA;AACA;;;;;;ACJA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACZA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAEA;AACA;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxCA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AAEA;;;;;;;;;;;;;;;;ACHA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;;;;;;;;;AChBA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;;ACxCA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAIA;AACA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;;;AChEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxJA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AAEA;;;;;;ACpBA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AAEA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;ACpKA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAMA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;AC3aA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAMA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAKA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACr7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACzMA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;;;AC7FA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzFA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtDA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;ACxCA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;;ACvDA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AChCA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/BA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AASA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;AC1ZA;AACA;AAEA;AAEA;AAAA;AAEA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAKA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAIA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;ACXA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAMA;AAAA;AAAA;AACA;AACA;AAQA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AAAA;AA7IA;AACA;AAAA;AAAA;AA+IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;;ACtLA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAIA;AAEA;AAEA;AAEA;AAGA;AAGA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAEA;;AC9FA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAKA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAGA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC5nBA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAMA;AAJA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAQA;AAAA;AAMA;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;;;;;;;;;;ACtDA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAEA;AAKA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AC3CA;AAEA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;ACvDA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;ACjHA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;AC1HA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;ACjHA;AAEA;AAEA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;ACXA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AAEA;AACA;AAIA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AChDA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAMA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;ACpOA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAMA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAAA;AAAA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;ACjOA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAAA;AAAA;AAUA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;ACtVA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAzLA;AACA;AAAA;AAAA;AA2LA;;;;;;AC3MA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AArLA;AACA;AAAA;AAAA;AAuLA;;;;;;ACvMA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;ACxIA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;ACrBA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAGA;;;;;;;;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;AC5IA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAIA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAGA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;ACpFA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AA/HA;AACA;AACA;AAAA;AAAA;AAgIA;;;;;;ACrJA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAMA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;AC1GA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAWA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AAIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAGA;;;;;;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAZA;AAcA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAoBA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAIA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AA3aA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAmaA;;;;;;AC9bA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;ACzHA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;ACxFA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9BA;AACA;AAEA;AACA;AAEA;AAKA;AACA;AACA;AACA;AACA;AAGA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzDA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AAAA;AAGA;AAGA;AACA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAIA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AAQA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAGA;AAEA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/CA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAEA;AAIA;AACA;AACA;AAAA;AAGA;AAKA;AACA;AACA;AAAA;AAGA;AAIA;AACA;AACA;AAAA;AAGA;AAIA;AACA;AACA;AAAA;AAIA;AAAA;AAEA;AAAA;AAEA;AAGA;AAGA;AAMA;AACA;AAEA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AAAA;AAGA;AAMA;AACA;AAEA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AASA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAEA;AAAA;AAGA;AAAA;AAIA;AAAA;AAEA;AACA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAEA;AAAA;AAGA;AAAA;AAIA;AAAA;AAEA;AACA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAEA;AAAA;AAGA;AAAA;AAIA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAMA;AAOA;AAAA;AAGA;AACA;AACA;AAAA;AAKA;AAAA;AAEA;AAKA;AAAA;AAGA;AACA;AACA;AAAA;AAOA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACvUA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAKA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;AChMA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AAGA;AAAA;AAGA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AAIA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;AC5BA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAOA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAMA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAIA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;;AC3KA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAKA;AAEA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;;;;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAAA;AAAA;AAQA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AA7OA;AACA;AAAA;AAAA;AA+OA;;;;;;ACxPA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrDA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtCA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AASA;AAAA;AAAA;AACA;AACA;AAQA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AA/PA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AA8PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;AC5TA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAIA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;AC5GA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;ACvHA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAKA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAGA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAKA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAIA;AAIA;AAAA;AAIA;AAGA;AACA;AAAA;AAKA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAGA;AAOA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;;AC1CA;AACA;AACA;;ACFA;AA6BA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AASA;AAQA;AACA;AAAA;AAGA;AACA;AAIA;AACA;AAAA;AAIA;AAQA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAQA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAOA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAMA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAgBA;AAAA;AAGA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAGA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAKA;AAGA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAmBA;AAAA;AASA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;ACjUA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClCA;AACA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAQA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AC9HA;AACA;AACA;AACA;AACA;AACA;AAEA;AAMA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AASA;AAEA;AACA;AAAA;AAIA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAIA;AAEA;;ACnJA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3CA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzBA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;ACZA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAMA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAGA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAgBA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAKA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAGA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAOA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;;;;AC9WA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAWA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;AChQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAtIA;AACA;AAAA;AAAA;AAwIA;;;;;;ACtJA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAMA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAjIA;AACA;AAAA;AAAA;AAmIA;;;;;;ACjJA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAMA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;ACpLA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAMA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;AC7KA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAMA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;;;;ACxFA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AA+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAAA;AAAA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAMA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAvUA;AACA;AACA;AACA;AACA;AACA;AAFA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAFA;AAAA;AAAA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAwTA;;;;;;AC5WA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAQA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;AC/GA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAAA;AAAA;AAAA;AAQA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAlKA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AA+JA;;;;;;ACvLA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AASA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;ACzHA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAKA;AAEA;AAEA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;ACrEA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAFA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AApZA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAqYA;;;;;;ACraA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;ACrBA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAGA;AACA;AAAA;AAGA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACrNA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAEA;AAAA;AAEA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAEA;AAIA;AAIA;AACA;AAAA;AAIA;AAAA;AAIA;AAAA;AAGA;AAAA;AAEA;AAAA;AAKA;AAAA;AAEA;AAIA;AAIA;AACA;AAAA;AAGA;AAAA;AAEA;AAAA;AAQA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAGA;AAAA;AAGA;AAAA;AAGA;AAAA;AAGA;AAAA;AAGA;AACA;AAAA;AAGA;AAAA;AAGA;AAAA;AAGA;AAAA;AAKA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAGA;AAAA;AAGA;AAAA;AAGA;AAAA;AAGA;AACA;AACA;AAAA;AAGA;AAAA;AAGA;AAAA;AAGA;AAAA;AAKA;AAAA;AAGA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAKA;AAAA;AAEA;AACA;AAAA;AAMA;AAAA;AAGA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAEA;AAAA;AAMA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAEA;AAAA;AAMA;AAAA;AAGA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAIA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAIA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAQA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;AClVA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AASA;AAEA;AAAA;AAIA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAIA;AAEA;;;;;;;;;;;;;;;;;;AC3JA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAGA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAAA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AAEA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAMA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAMA;AAEA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAIA;AAEA;;;;;;;;;;;;;;;;;;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAKA;AACA;AAEA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAAA;AAAA;AAAA;AAQA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAMA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAKA;AAEA;AAAA;AAIA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAIA;AAEA;;;;;;;;;;;;;;;ACtNA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAxCA;AA6CA;AAAA;AAAA;AACA;AACA;AAaA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAUA;AACA;AACA;AAEA;AACA;AAKA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAxQA;AACA;AAAA;AAAA;AA0QA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;AClaA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AAEA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;AC5JA;AACA;AACA;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClhHA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;;;ACvBA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAKA;AAQA;AAEA;AAAA;AAAA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAGA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AAAA;;;A","sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"playground.js","sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/@scratch/paper/dist/paper-full.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/lodash.bindall/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/react-redux/es/utils/PropTypes.js","webpack:///./node_modules/react-redux/es/utils/warning.js","webpack:///./node_modules/react-redux/es/components/Provider.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/react-redux/es/utils/Subscription.js","webpack:///./node_modules/react-redux/es/components/connectAdvanced.js","webpack:///./node_modules/react-redux/es/utils/shallowEqual.js","webpack:///./node_modules/react-redux/es/utils/isPlainObject.js","webpack:///./node_modules/react-redux/es/utils/verifyPlainObject.js","webpack:///./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack:///./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack:///./node_modules/react-redux/es/connect/mapStateToProps.js","webpack:///./node_modules/react-redux/es/connect/mergeProps.js","webpack:///./node_modules/react-redux/es/connect/verifySubselectors.js","webpack:///./node_modules/react-redux/es/connect/selectorFactory.js","webpack:///./node_modules/react-redux/es/connect/connect.js","webpack:///./node_modules/react-redux/es/index.js","webpack:///./node_modules/classnames/index.js","webpack:///./src/components/color-picker/color-picker.css?97d7","webpack:///./src/components/paint-editor/paint-editor.css?033d","webpack:///./node_modules/intl-format-cache/lib/index.js","webpack:///./node_modules/react-intl/lib/index.es.js","webpack:///./src/components/font-dropdown/font-dropdown.css?9b69","webpack:///./src/components/fixed-tools/fixed-tools.css?b3a2","webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./src/components/mode-tools/mode-tools.css?6d08","webpack:///./node_modules/keymirror/index.js","webpack:///./node_modules/lodash-es/_root.js","webpack:///./node_modules/lodash-es/_Symbol.js","webpack:///./node_modules/lodash-es/_getRawTag.js","webpack:///./node_modules/lodash-es/_objectToString.js","webpack:///./node_modules/lodash-es/_baseGetTag.js","webpack:///./node_modules/lodash-es/_overArg.js","webpack:///./node_modules/lodash-es/_getPrototype.js","webpack:///./node_modules/lodash-es/isObjectLike.js","webpack:///./node_modules/lodash-es/isPlainObject.js","webpack:///./node_modules/redux/es/createStore.js","webpack:///./node_modules/redux/es/utils/warning.js","webpack:///./node_modules/redux/es/combineReducers.js","webpack:///./node_modules/redux/es/bindActionCreators.js","webpack:///./node_modules/redux/es/compose.js","webpack:///./node_modules/redux/es/applyMiddleware.js","webpack:///./node_modules/redux/es/index.js","webpack:///./node_modules/parse-color/index.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/minilog/lib/common/transform.js","webpack:///./node_modules/lodash.omit/index.js","webpack:///./node_modules/intl-messageformat/index.js","webpack:///./src/components/scrollable-canvas/scrollable-canvas.css?6697","webpack:///./src/components/color-button/color-button.css?7e14","webpack:///./src/playground/playground.css?ce20","webpack:///./src/components/color-button/no-fill.svg","webpack:///./node_modules/intl-relativeformat/index.js","webpack:///./src/components/dropdown/dropdown.css?f334","webpack:///./node_modules/react-intl-redux/lib/index.js","webpack:///./src/components/color-button/mixed-fill.svg","webpack:///./node_modules/react-responsive/dist/react-responsive.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/react-popover/build/platform.js","webpack:///./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./src/components/bit-brush-mode/brush.svg","webpack:///./src/components/bit-line-mode/line.svg","webpack:///./src/components/bit-oval-mode/oval.svg","webpack:///./src/components/bit-rect-mode/rectangle.svg","webpack:///./src/components/bit-eraser-mode/eraser.svg","webpack:///./src/components/box/box.jsx","webpack:///./src/components/brush-mode/brush.svg","webpack:///./src/components/eraser-mode/eraser.svg","webpack:///./node_modules/react-popover/index.js","webpack:///./src/components/button/button.css?d675","webpack:///./src/components/tool-select-base/tool-select-base.css?0b6a","webpack:///./src/components/forms/slider.css?4d01","webpack:///./src/components/labeled-icon-button/labeled-icon-button.css?e69a","webpack:///./src/components/forms/label.css?46bc","webpack:///./src/components/forms/input.css?fde7","webpack:///./node_modules/css-vendor/lib/prefix.js","webpack:///./node_modules/is-in-browser/dist/module.js","webpack:///./node_modules/react-popover/build/utils.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/minilog/lib/web/index.js","webpack:///./node_modules/symbol-observable/es/index.js","webpack:///./src/components/input-group/input-group.css?f818","webpack:///./src/components/fixed-tools/icons/send-back.svg","webpack:///./src/components/fixed-tools/icons/send-front.svg","webpack:///./src/components/mode-tools/icons/delete.svg","webpack:///./src/components/paint-editor/icons/bitmap.svg","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/minilog/lib/web/formatters/util.js","webpack:///./node_modules/intl-messageformat/lib/utils.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/react-intl-redux/lib/components/IntlProvider.js","webpack:///./node_modules/symbol-observable/es/ponyfill.js","webpack:///./node_modules/lodash-es/_freeGlobal.js","webpack:///../locale-data/index.js (ignored)","webpack:///./src/containers/paper-canvas.css?6f87","webpack:///./src/components/bit-fill-mode/fill.svg","webpack:///./src/components/bit-select-mode/marquee.svg","webpack:///./node_modules/react-style-proptype/src/index.js","webpack:///./src/components/button-group/button-group.css?0101","webpack:///./src/components/color-picker/icons/eye-dropper.svg","webpack:///./src/components/color-picker/icons/fill-horz-gradient-enabled.svg","webpack:///./src/components/color-picker/icons/fill-radial-enabled.svg","webpack:///./src/components/color-picker/icons/fill-solid-enabled.svg","webpack:///./src/components/color-picker/icons/fill-vert-gradient-enabled.svg","webpack:///./src/components/color-picker/icons/swap.svg","webpack:///./src/components/fill-mode/fill.svg","webpack:///./src/components/line-mode/line.svg","webpack:///./src/components/loupe/loupe.css?35aa","webpack:///./src/components/dropdown/dropdown-caret.svg","webpack:///./src/components/fixed-tools/icons/group.svg","webpack:///./src/components/fixed-tools/icons/redo.svg","webpack:///./src/components/fixed-tools/icons/send-backward.svg","webpack:///./src/components/fixed-tools/icons/send-forward.svg","webpack:///./src/components/fixed-tools/icons/undo.svg","webpack:///./src/components/fixed-tools/icons/ungroup.svg","webpack:///./src/components/mode-tools/icons/copy.svg","webpack:///./src/components/mode-tools/icons/paste.svg","webpack:///./src/components/mode-tools/icons/curved-point.svg","webpack:///./src/components/mode-tools/icons/flip-horizontal.svg","webpack:///./src/components/mode-tools/icons/flip-vertical.svg","webpack:///./src/components/mode-tools/icons/straight-point.svg","webpack:///./src/components/bit-oval-mode/oval-outlined.svg","webpack:///./src/components/bit-rect-mode/rectangle-outlined.svg","webpack:///./src/components/oval-mode/oval.svg","webpack:///./src/components/rect-mode/rectangle.svg","webpack:///./src/components/reshape-mode/reshape.svg","webpack:///./src/components/select-mode/select.svg","webpack:///./src/components/text-mode/text.svg","webpack:///./src/components/bit-text-mode/text.svg","webpack:///./src/components/paint-editor/icons/zoom-in.svg","webpack:///./src/components/paint-editor/icons/zoom-out.svg","webpack:///./src/components/paint-editor/icons/zoom-reset.svg","webpack:///./node_modules/scratch-l10n/src/locale-data/en.js","webpack:///./node_modules/scratch-l10n/src/locale-data/af.js","webpack:///./node_modules/scratch-l10n/src/locale-data/am.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ar.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ast.js","webpack:///./node_modules/scratch-l10n/src/locale-data/az.js","webpack:///./node_modules/scratch-l10n/src/locale-data/be.js","webpack:///./node_modules/scratch-l10n/src/locale-data/bn.js","webpack:///./node_modules/scratch-l10n/src/locale-data/bg.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ca.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ckb.js","webpack:///./node_modules/scratch-l10n/src/locale-data/cs.js","webpack:///./node_modules/scratch-l10n/src/locale-data/cy.js","webpack:///./node_modules/scratch-l10n/src/locale-data/da.js","webpack:///./node_modules/scratch-l10n/src/locale-data/de.js","webpack:///./node_modules/scratch-l10n/src/locale-data/el.js","webpack:///./node_modules/scratch-l10n/src/locale-data/eo.js","webpack:///./node_modules/scratch-l10n/src/locale-data/es.js","webpack:///./node_modules/scratch-l10n/src/locale-data/et.js","webpack:///./node_modules/scratch-l10n/src/locale-data/eu.js","webpack:///./node_modules/scratch-l10n/src/locale-data/fa.js","webpack:///./node_modules/scratch-l10n/src/locale-data/fi.js","webpack:///./node_modules/scratch-l10n/src/locale-data/fil.js","webpack:///./node_modules/scratch-l10n/src/locale-data/fr.js","webpack:///./node_modules/scratch-l10n/src/locale-data/fy.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ga.js","webpack:///./node_modules/scratch-l10n/src/locale-data/gd.js","webpack:///./node_modules/scratch-l10n/src/locale-data/gl.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ha.js","webpack:///./node_modules/scratch-l10n/src/locale-data/he.js","webpack:///./node_modules/scratch-l10n/src/locale-data/hi.js","webpack:///./node_modules/scratch-l10n/src/locale-data/hu.js","webpack:///./node_modules/scratch-l10n/src/locale-data/hr.js","webpack:///./node_modules/scratch-l10n/src/locale-data/hy.js","webpack:///./node_modules/scratch-l10n/src/locale-data/id.js","webpack:///./node_modules/scratch-l10n/src/locale-data/is.js","webpack:///./node_modules/scratch-l10n/src/locale-data/it.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ja.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ka.js","webpack:///./node_modules/scratch-l10n/src/locale-data/kk.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ko.js","webpack:///./node_modules/scratch-l10n/src/locale-data/km.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ku.js","webpack:///./node_modules/scratch-l10n/src/locale-data/lt.js","webpack:///./node_modules/scratch-l10n/src/locale-data/lv.js","webpack:///./node_modules/scratch-l10n/src/locale-data/mi.js","webpack:///./node_modules/scratch-l10n/src/locale-data/mn.js","webpack:///./node_modules/scratch-l10n/src/locale-data/nl.js","webpack:///./node_modules/scratch-l10n/src/locale-data/nb.js","webpack:///./node_modules/scratch-l10n/src/locale-data/nn.js","webpack:///./node_modules/scratch-l10n/src/locale-data/nso.js","webpack:///./node_modules/scratch-l10n/src/locale-data/or.js","webpack:///./node_modules/scratch-l10n/src/locale-data/pl.js","webpack:///./node_modules/scratch-l10n/src/locale-data/pt.js","webpack:///./node_modules/scratch-l10n/src/locale-data/qu.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ro.js","webpack:///./node_modules/scratch-l10n/src/locale-data/ru.js","webpack:///./node_modules/scratch-l10n/src/locale-data/sl.js","webpack:///./node_modules/scratch-l10n/src/locale-data/sk.js","webpack:///./node_modules/scratch-l10n/src/locale-data/sr.js","webpack:///./node_modules/scratch-l10n/src/locale-data/sv.js","webpack:///./node_modules/scratch-l10n/src/locale-data/sw.js","webpack:///./node_modules/scratch-l10n/src/locale-data/th.js","webpack:///./node_modules/scratch-l10n/src/locale-data/tr.js","webpack:///./node_modules/scratch-l10n/src/locale-data/tn.js","webpack:///./node_modules/scratch-l10n/src/locale-data/uk.js","webpack:///./node_modules/scratch-l10n/src/locale-data/uz.js","webpack:///./node_modules/scratch-l10n/src/locale-data/vi.js","webpack:///./node_modules/scratch-l10n/src/locale-data/xh.js","webpack:///./node_modules/scratch-l10n/src/locale-data/zh.js","webpack:///./node_modules/scratch-l10n/src/locale-data/zu.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node/self.js (ignored)","webpack:///./node_modules/acorn/dist/acorn.mjs","webpack:///./node/extend.js (ignored)","webpack:///./node_modules/minilog/lib/common/minilog.js","webpack:///./node_modules/microee/index.js","webpack:///./node_modules/minilog/lib/common/filter.js","webpack:///./node_modules/minilog/lib/web/console.js","webpack:///./node_modules/minilog/lib/web/formatters/color.js","webpack:///./node_modules/minilog/lib/web/formatters/minilog.js","webpack:///./node_modules/minilog/lib/web/array.js","webpack:///./node_modules/minilog/lib/web/localstorage.js","webpack:///./node_modules/minilog/lib/web/jquery_simple.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/intl-messageformat/lib/main.js","webpack:///./node_modules/intl-messageformat/lib/core.js","webpack:///./node_modules/intl-messageformat/lib/es5.js","webpack:///./node_modules/intl-messageformat/lib/compiler.js","webpack:///./node_modules/intl-messageformat/node_modules/intl-messageformat-parser/index.js","webpack:///./node_modules/intl-messageformat/node_modules/intl-messageformat-parser/lib/parser.js","webpack:///./node_modules/intl-messageformat/lib/en.js","webpack:///./lib/locales (ignored)","webpack:///./node_modules/intl-relativeformat/lib/main.js","webpack:///./node_modules/intl-relativeformat/lib/core.js","webpack:///./node_modules/intl-relativeformat/lib/diff.js","webpack:///./node_modules/intl-relativeformat/lib/es5.js","webpack:///./node_modules/intl-relativeformat/lib/en.js","webpack:///./lib/locales (ignored)?f12b","webpack:///./src/containers/paper-canvas.css","webpack:///./src/components/scrollable-canvas/scrollable-canvas.css","webpack:///./src/components/button/button.css","webpack:///./src/components/tool-select-base/tool-select-base.css","webpack:///./node_modules/react-style-proptype/src/css-properties.js","webpack:///./src/components/button-group/button-group.css","webpack:///./node_modules/parse-color/node_modules/color-convert/index.js","webpack:///./node_modules/parse-color/node_modules/color-convert/conversions.js","webpack:///./node_modules/react-popover/build/index.js","webpack:///./node_modules/css-vendor/lib/index.js","webpack:///./node_modules/css-vendor/lib/supported-property.js","webpack:///./node_modules/css-vendor/lib/camelize.js","webpack:///./node_modules/css-vendor/lib/supported-value.js","webpack:///./node_modules/react-popover/node_modules/debug/src/browser.js","webpack:///./node_modules/react-popover/node_modules/debug/src/debug.js","webpack:///./node_modules/react-popover/node_modules/ms/index.js","webpack:///./node_modules/lodash.throttle/index.js","webpack:///./node_modules/lodash.throttle/node_modules/lodash.debounce/index.js","webpack:///./node_modules/lodash._getnative/index.js","webpack:///./node_modules/react-popover/build/layout.js","webpack:///./node_modules/react-popover/build/on-resize.js","webpack:///./node_modules/react-popover/build/tip.js","webpack:///./src/components/color-button/color-button.css","webpack:///./src/components/forms/slider.css","webpack:///./src/components/labeled-icon-button/labeled-icon-button.css","webpack:///./src/components/color-picker/color-picker.css","webpack:///./src/components/input-group/input-group.css","webpack:///./src/components/forms/label.css","webpack:///./src/components/loupe/loupe.css","webpack:///./src/components/dropdown/dropdown.css","webpack:///./src/components/forms/input.css","webpack:///./src/components/fixed-tools/fixed-tools.css","webpack:///./src/components/font-dropdown/font-dropdown.css","webpack:///./src/components/mode-tools/mode-tools.css","webpack:///./src/components/paint-editor/paint-editor.css","webpack:///./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack:///./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack:///./node_modules/react-intl-redux/lib/components/Provider.js","webpack:///./src/playground/playground.css","webpack:///./node_modules/scratch-render-fonts/src/index.js","webpack:///./node_modules/scratch-render-fonts/src/NotoSans-Medium.ttf","webpack:///./node_modules/scratch-render-fonts/src/SourceSerifPro-Regular.otf","webpack:///./node_modules/scratch-render-fonts/src/handlee-regular.ttf","webpack:///./node_modules/scratch-render-fonts/src/Knewave.ttf","webpack:///./node_modules/scratch-render-fonts/src/Griffy-Regular.ttf","webpack:///./node_modules/scratch-render-fonts/src/Grand9K-Pixel.ttf","webpack:///./node_modules/scratch-render-fonts/src/Scratch.ttf","webpack:///./src/log/log.js","webpack:///./src/lib/format.js","webpack:///./src/lib/modes.js","webpack:///./src/helper/item.js","webpack:///./src/helper/group.js","webpack:///./src/helper/compound-path.js","webpack:///./src/helper/math.js","webpack:///./src/helper/selection.js","webpack:///./src/helper/guides.js","webpack:///./src/helper/bitmap.js","webpack:///./src/helper/view.js","webpack:///./src/helper/layer.js","webpack:///./src/helper/undo.js","webpack:///./src/reducers/undo.js","webpack:///./src/reducers/selected-items.js","webpack:///./src/reducers/hover.js","webpack:///./src/reducers/clipboard.js","webpack:///./src/reducers/format.js","webpack:///./src/reducers/view-bounds.js","webpack:///./src/reducers/zoom-levels.js","webpack:///./src/containers/paper-canvas.jsx","webpack:///./src/components/scrollable-canvas/scrollable-canvas.jsx","webpack:///./src/lib/touch-utils.js","webpack:///./src/containers/scrollable-canvas.jsx","webpack:///./src/lib/gradient-types.js","webpack:///./src/lib/make-color-style-reducer.js","webpack:///./src/reducers/fill-style.js","webpack:///./src/helper/style-path.js","webpack:///./src/reducers/modes.js","webpack:///./src/components/button/button.jsx","webpack:///./src/components/tool-select-base/tool-select-base.jsx","webpack:///./src/lib/messages.js","webpack:///./src/components/bit-brush-mode/bit-brush-mode.jsx","webpack:///./src/helper/bit-tools/brush-tool.js","webpack:///./src/containers/bit-brush-mode.jsx","webpack:///./src/components/bit-line-mode/bit-line-mode.jsx","webpack:///./src/helper/bit-tools/line-tool.js","webpack:///./src/containers/bit-line-mode.jsx","webpack:///./src/lib/color-style-proptype.js","webpack:///./src/lib/cursors.js","webpack:///./src/reducers/eye-dropper.js","webpack:///./src/reducers/cursor.js","webpack:///./src/helper/selection-tools/scale-tool.js","webpack:///./src/helper/selection-tools/rotate-tool.js","webpack:///./src/helper/selection-tools/move-tool.js","webpack:///./src/helper/selection-tools/bounding-box-tool.js","webpack:///./src/helper/selection-tools/nudge-tool.js","webpack:///./src/helper/bit-tools/oval-tool.js","webpack:///./src/components/bit-oval-mode/bit-oval-mode.jsx","webpack:///./src/containers/bit-oval-mode.jsx","webpack:///./src/helper/bit-tools/rect-tool.js","webpack:///./src/components/bit-rect-mode/bit-rect-mode.jsx","webpack:///./src/containers/bit-rect-mode.jsx","webpack:///./src/components/bit-fill-mode/bit-fill-mode.jsx","webpack:///./src/reducers/fill-mode-gradient-type.js","webpack:///./src/helper/bit-tools/fill-tool.js","webpack:///./src/containers/bit-fill-mode.jsx","webpack:///./src/components/bit-eraser-mode/bit-eraser-mode.jsx","webpack:///./src/containers/bit-eraser-mode.jsx","webpack:///./src/helper/selection-tools/selection-box-tool.js","webpack:///./src/helper/bit-tools/select-tool.js","webpack:///./src/components/bit-select-mode/bit-select-mode.jsx","webpack:///./src/containers/bit-select-mode.jsx","webpack:///./src/components/button-group/button-group.jsx","webpack:///./src/helper/blob-tools/broad-brush-helper.js","webpack:///./src/helper/blob-tools/segment-brush-helper.js","webpack:///./src/helper/blob-tools/blob.js","webpack:///./src/components/brush-mode/brush-mode.jsx","webpack:///./src/containers/brush-mode.jsx","webpack:///./src/reducers/eraser-mode.js","webpack:///./src/components/eraser-mode/eraser-mode.jsx","webpack:///./src/containers/eraser-mode.jsx","webpack:///./src/reducers/color-index.js","webpack:///./src/reducers/modals.js","webpack:///./src/components/color-button/color-button.jsx","webpack:///./src/components/forms/slider.jsx","webpack:///./src/components/labeled-icon-button/labeled-icon-button.jsx","webpack:///./src/components/color-picker/color-picker.jsx","webpack:///./src/containers/color-picker.jsx","webpack:///./src/components/input-group/input-group.jsx","webpack:///./src/components/forms/label.jsx","webpack:///./src/components/color-indicator.jsx","webpack:///./src/containers/color-indicator.jsx","webpack:///./src/containers/fill-color-indicator.jsx","webpack:///./src/helper/hover.js","webpack:///./src/helper/tools/fill-tool.js","webpack:///./src/components/fill-mode/fill-mode.jsx","webpack:///./src/containers/fill-mode.jsx","webpack:///./src/helper/snapping.js","webpack:///./src/reducers/stroke-width.js","webpack:///./src/reducers/stroke-style.js","webpack:///./src/components/line-mode/line-mode.jsx","webpack:///./src/containers/line-mode.jsx","webpack:///./src/helper/tools/eye-dropper.js","webpack:///./src/components/loupe/loupe.jsx","webpack:///./src/helper/order.js","webpack:///./src/components/forms/buffered-input-hoc.jsx","webpack:///./src/components/dropdown/dropdown.jsx","webpack:///./src/components/forms/input.jsx","webpack:///./src/lib/layout-constants.js","webpack:///./src/lib/hide-label.js","webpack:///./src/components/fixed-tools/fixed-tools.jsx","webpack:///./src/reducers/text-edit-target.js","webpack:///./src/reducers/layout.js","webpack:///./src/containers/fixed-tools.jsx","webpack:///./src/hocs/copy-paste-hoc.jsx","webpack:///./src/reducers/brush-mode.js","webpack:///./src/reducers/bit-brush-size.js","webpack:///./src/reducers/bit-eraser-size.js","webpack:///./src/reducers/fill-bitmap-shapes.js","webpack:///./src/lib/fonts.js","webpack:///./src/components/font-dropdown/font-dropdown.jsx","webpack:///./src/reducers/font.js","webpack:///./src/containers/font-dropdown.jsx","webpack:///./src/components/forms/live-input-hoc.jsx","webpack:///./src/components/mode-tools/mode-tools.jsx","webpack:///./src/containers/mode-tools.jsx","webpack:///./src/helper/tools/oval-tool.js","webpack:///./src/components/oval-mode/oval-mode.jsx","webpack:///./src/containers/oval-mode.jsx","webpack:///./src/helper/tools/rect-tool.js","webpack:///./src/components/rect-mode/rect-mode.jsx","webpack:///./src/containers/rect-mode.jsx","webpack:///./src/helper/selection-tools/point-tool.js","webpack:///./src/helper/selection-tools/handle-tool.js","webpack:///./src/helper/selection-tools/reshape-tool.js","webpack:///./src/components/reshape-mode/reshape-mode.jsx","webpack:///./src/containers/reshape-mode.jsx","webpack:///./src/helper/selection-tools/select-tool.js","webpack:///./src/components/select-mode/select-mode.jsx","webpack:///./src/containers/select-mode.jsx","webpack:///./src/containers/stroke-color-indicator.jsx","webpack:///./src/components/stroke-width-indicator.jsx","webpack:///./src/containers/stroke-width-indicator.jsx","webpack:///./src/helper/tools/text-tool.js","webpack:///./src/components/text-mode/text-mode.jsx","webpack:///./src/components/bit-text-mode/bit-text-mode.jsx","webpack:///./src/containers/text-mode.jsx","webpack:///./src/components/paint-editor/paint-editor.jsx","webpack:///./src/hocs/keyboard-shortcuts-hoc.jsx","webpack:///./src/hocs/selection-hoc.jsx","webpack:///./src/hocs/undo-hoc.jsx","webpack:///./src/hocs/update-image-hoc.jsx","webpack:///./src/containers/paint-editor.jsx","webpack:///./src/reducers/color.js","webpack:///./src/reducers/fill-mode.js","webpack:///./src/reducers/scratch-paint-reducer.js","webpack:///./src/index.js","webpack:///./node_modules/scratch-l10n/src/supported-locales.mjs","webpack:///./node_modules/scratch-l10n/src/locale-data.mjs","webpack:///./node_modules/scratch-l10n/src/index.mjs","webpack:///./node_modules/scratch-l10n/locales/paint-editor-msgs.js","webpack:///./src/playground/reducers/intl.js","webpack:///./src/playground/reducers/combine-reducers.js","webpack:///./src/playground/playground.jsx"],"sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 261);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/*!\n * Paper.js v0.12.7 - The Swiss Army Knife of Vector Graphics Scripting.\n * http://paperjs.org/\n *\n * Copyright (c) 2011 - 2020, Jürg Lehni & Jonathan Puckey\n * http://juerglehni.com/ & https://puckey.studio/\n *\n * Distributed under the MIT license. See LICENSE file for details.\n *\n * All rights reserved.\n *\n * Date: Thu Dec 1 12:02:03 2022 -0800\n *\n ***\n *\n * Straps.js - Class inheritance library with support for bean-style accessors\n *\n * Copyright (c) 2006 - 2020 Jürg Lehni\n * http://juerglehni.com/\n *\n * Distributed under the MIT license.\n *\n ***\n *\n * Acorn.js\n * https://marijnhaverbeke.nl/acorn/\n *\n * Acorn is a tiny, fast JavaScript parser written in JavaScript,\n * created by Marijn Haverbeke and released under an MIT license.\n *\n */\n\nvar paper = function(self, undefined) {\n\nself = self || require('./node/self.js');\nvar window = self.window ? self.window : self,\n\tdocument = self.document;\n\nvar Base = new function() {\n\tvar hidden = /^(statics|enumerable|beans|preserve)$/,\n\t\tarray = [],\n\t\tslice = array.slice,\n\t\tcreate = Object.create,\n\t\tdescribe = Object.getOwnPropertyDescriptor,\n\t\tdefine = Object.defineProperty,\n\n\t\tforEach = array.forEach || function(iter, bind) {\n\t\t\tfor (var i = 0, l = this.length; i < l; i++) {\n\t\t\t\titer.call(bind, this[i], i, this);\n\t\t\t}\n\t\t},\n\n\t\tforIn = function(iter, bind) {\n\t\t\tfor (var i in this) {\n\t\t\t\tif (this.hasOwnProperty(i))\n\t\t\t\t\titer.call(bind, this[i], i, this);\n\t\t\t}\n\t\t},\n\n\t\tset = Object.assign || function(dst) {\n\t\t\tfor (var i = 1, l = arguments.length; i < l; i++) {\n\t\t\t\tvar src = arguments[i];\n\t\t\t\tfor (var key in src) {\n\t\t\t\t\tif (src.hasOwnProperty(key))\n\t\t\t\t\t\tdst[key] = src[key];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dst;\n\t\t},\n\n\t\teach = function(obj, iter, bind) {\n\t\t\tif (obj) {\n\t\t\t\tvar desc = describe(obj, 'length');\n\t\t\t\t(desc && typeof desc.value === 'number' ? forEach : forIn)\n\t\t\t\t\t.call(obj, iter, bind = bind || obj);\n\t\t\t}\n\t\t\treturn bind;\n\t\t};\n\n\tfunction inject(dest, src, enumerable, beans, preserve) {\n\t\tvar beansNames = {};\n\n\t\tfunction field(name, val) {\n\t\t\tval = val || (val = describe(src, name))\n\t\t\t\t\t&& (val.get ? val : val.value);\n\t\t\tif (typeof val === 'string' && val[0] === '#')\n\t\t\t\tval = dest[val.substring(1)] || val;\n\t\t\tvar isFunc = typeof val === 'function',\n\t\t\t\tres = val,\n\t\t\t\tprev = preserve || isFunc && !val.base\n\t\t\t\t\t\t? (val && val.get ? name in dest : dest[name])\n\t\t\t\t\t\t: null,\n\t\t\t\tbean;\n\t\t\tif (!preserve || !prev) {\n\t\t\t\tif (isFunc && prev)\n\t\t\t\t\tval.base = prev;\n\t\t\t\tif (isFunc && beans !== false\n\t\t\t\t\t\t&& (bean = name.match(/^([gs]et|is)(([A-Z])(.*))$/)))\n\t\t\t\t\tbeansNames[bean[3].toLowerCase() + bean[4]] = bean[2];\n\t\t\t\tif (!res || isFunc || !res.get || typeof res.get !== 'function'\n\t\t\t\t\t\t|| !Base.isPlainObject(res)) {\n\t\t\t\t\tres = { value: res, writable: true };\n\t\t\t\t}\n\t\t\t\tif ((describe(dest, name)\n\t\t\t\t\t\t|| { configurable: true }).configurable) {\n\t\t\t\t\tres.configurable = true;\n\t\t\t\t\tres.enumerable = enumerable != null ? enumerable : !bean;\n\t\t\t\t}\n\t\t\t\tdefine(dest, name, res);\n\t\t\t}\n\t\t}\n\t\tif (src) {\n\t\t\tfor (var name in src) {\n\t\t\t\tif (src.hasOwnProperty(name) && !hidden.test(name))\n\t\t\t\t\tfield(name);\n\t\t\t}\n\t\t\tfor (var name in beansNames) {\n\t\t\t\tvar part = beansNames[name],\n\t\t\t\t\tset = dest['set' + part],\n\t\t\t\t\tget = dest['get' + part] || set && dest['is' + part];\n\t\t\t\tif (get && (beans === true || get.length === 0))\n\t\t\t\t\tfield(name, { get: get, set: set });\n\t\t\t}\n\t\t}\n\t\treturn dest;\n\t}\n\n\tfunction Base() {\n\t\tfor (var i = 0, l = arguments.length; i < l; i++) {\n\t\t\tvar src = arguments[i];\n\t\t\tif (src)\n\t\t\t\tset(this, src);\n\t\t}\n\t\treturn this;\n\t}\n\n\treturn inject(Base, {\n\t\tinject: function(src) {\n\t\t\tif (src) {\n\t\t\t\tvar statics = src.statics === true ? src : src.statics,\n\t\t\t\t\tbeans = src.beans,\n\t\t\t\t\tpreserve = src.preserve;\n\t\t\t\tif (statics !== src)\n\t\t\t\t\tinject(this.prototype, src, src.enumerable, beans, preserve);\n\t\t\t\tinject(this, statics, null, beans, preserve);\n\t\t\t}\n\t\t\tfor (var i = 1, l = arguments.length; i < l; i++)\n\t\t\t\tthis.inject(arguments[i]);\n\t\t\treturn this;\n\t\t},\n\n\t\textend: function() {\n\t\t\tvar base = this,\n\t\t\t\tctor,\n\t\t\t\tproto;\n\t\t\tfor (var i = 0, obj, l = arguments.length;\n\t\t\t\t\ti < l && !(ctor && proto); i++) {\n\t\t\t\tobj = arguments[i];\n\t\t\t\tctor = ctor || obj.initialize;\n\t\t\t\tproto = proto || obj.prototype;\n\t\t\t}\n\t\t\tctor = ctor || function() {\n\t\t\t\tbase.apply(this, arguments);\n\t\t\t};\n\t\t\tproto = ctor.prototype = proto || create(this.prototype);\n\t\t\tdefine(proto, 'constructor',\n\t\t\t\t\t{ value: ctor, writable: true, configurable: true });\n\t\t\tinject(ctor, this);\n\t\t\tif (arguments.length)\n\t\t\t\tthis.inject.apply(ctor, arguments);\n\t\t\tctor.base = base;\n\t\t\treturn ctor;\n\t\t}\n\t}).inject({\n\t\tenumerable: false,\n\n\t\tinitialize: Base,\n\n\t\tset: Base,\n\n\t\tinject: function() {\n\t\t\tfor (var i = 0, l = arguments.length; i < l; i++) {\n\t\t\t\tvar src = arguments[i];\n\t\t\t\tif (src) {\n\t\t\t\t\tinject(this, src, src.enumerable, src.beans, src.preserve);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\textend: function() {\n\t\t\tvar res = create(this);\n\t\t\treturn res.inject.apply(res, arguments);\n\t\t},\n\n\t\teach: function(iter, bind) {\n\t\t\treturn each(this, iter, bind);\n\t\t},\n\n\t\tclone: function() {\n\t\t\treturn new this.constructor(this);\n\t\t},\n\n\t\tstatics: {\n\t\t\tset: set,\n\t\t\teach: each,\n\t\t\tcreate: create,\n\t\t\tdefine: define,\n\t\t\tdescribe: describe,\n\n\t\t\tclone: function(obj) {\n\t\t\t\treturn set(new obj.constructor(), obj);\n\t\t\t},\n\n\t\t\tisPlainObject: function(obj) {\n\t\t\t\tvar ctor = obj != null && obj.constructor;\n\t\t\t\treturn ctor && (ctor === Object || ctor === Base\n\t\t\t\t\t\t|| ctor.name === 'Object');\n\t\t\t},\n\n\t\t\tpick: function(a, b) {\n\t\t\t\treturn a !== undefined ? a : b;\n\t\t\t},\n\n\t\t\tslice: function(list, begin, end) {\n\t\t\t\treturn slice.call(list, begin, end);\n\t\t\t}\n\t\t}\n\t});\n};\n\nif (typeof module !== 'undefined')\n\tmodule.exports = Base;\n\nBase.inject({\n\tenumerable: false,\n\n\ttoString: function() {\n\t\treturn this._id != null\n\t\t\t?  (this._class || 'Object') + (this._name\n\t\t\t\t? \" '\" + this._name + \"'\"\n\t\t\t\t: ' @' + this._id)\n\t\t\t: '{ ' + Base.each(this, function(value, key) {\n\t\t\t\tif (!/^_/.test(key)) {\n\t\t\t\t\tvar type = typeof value;\n\t\t\t\t\tthis.push(key + ': ' + (type === 'number'\n\t\t\t\t\t\t\t? Formatter.instance.number(value)\n\t\t\t\t\t\t\t: type === 'string' ? \"'\" + value + \"'\" : value));\n\t\t\t\t}\n\t\t\t}, []).join(', ') + ' }';\n\t},\n\n\tgetClassName: function() {\n\t\treturn this._class || '';\n\t},\n\n\timportJSON: function(json) {\n\t\treturn Base.importJSON(json, this);\n\t},\n\n\texportJSON: function(options) {\n\t\treturn Base.exportJSON(this, options);\n\t},\n\n\ttoJSON: function() {\n\t\treturn Base.serialize(this);\n\t},\n\n\tset: function(props, exclude) {\n\t\tif (props)\n\t\t\tBase.filter(this, props, exclude, this._prioritize);\n\t\treturn this;\n\t}\n}, {\n\nbeans: false,\nstatics: {\n\texports: {},\n\n\textend: function extend() {\n\t\tvar res = extend.base.apply(this, arguments),\n\t\t\tname = res.prototype._class;\n\t\tif (name && !Base.exports[name])\n\t\t\tBase.exports[name] = res;\n\t\treturn res;\n\t},\n\n\tequals: function(obj1, obj2) {\n\t\tif (obj1 === obj2)\n\t\t\treturn true;\n\t\tif (obj1 && obj1.equals)\n\t\t\treturn obj1.equals(obj2);\n\t\tif (obj2 && obj2.equals)\n\t\t\treturn obj2.equals(obj1);\n\t\tif (obj1 && obj2\n\t\t\t\t&& typeof obj1 === 'object' && typeof obj2 === 'object') {\n\t\t\tif (Array.isArray(obj1) && Array.isArray(obj2)) {\n\t\t\t\tvar length = obj1.length;\n\t\t\t\tif (length !== obj2.length)\n\t\t\t\t\treturn false;\n\t\t\t\twhile (length--) {\n\t\t\t\t\tif (!Base.equals(obj1[length], obj2[length]))\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar keys = Object.keys(obj1),\n\t\t\t\t\tlength = keys.length;\n\t\t\t\tif (length !== Object.keys(obj2).length)\n\t\t\t\t\treturn false;\n\t\t\t\twhile (length--) {\n\t\t\t\t\tvar key = keys[length];\n\t\t\t\t\tif (!(obj2.hasOwnProperty(key)\n\t\t\t\t\t\t\t&& Base.equals(obj1[key], obj2[key])))\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\tread: function(list, start, options, amount) {\n\t\tif (this === Base) {\n\t\t\tvar value = this.peek(list, start);\n\t\t\tlist.__index++;\n\t\t\treturn value;\n\t\t}\n\t\tvar proto = this.prototype,\n\t\t\treadIndex = proto._readIndex,\n\t\t\tbegin = start || readIndex && list.__index || 0,\n\t\t\tlength = list.length,\n\t\t\tobj = list[begin];\n\t\tamount = amount || length - begin;\n\t\tif (obj instanceof this\n\t\t\t|| options && options.readNull && obj == null && amount <= 1) {\n\t\t\tif (readIndex)\n\t\t\t\tlist.__index = begin + 1;\n\t\t\treturn obj && options && options.clone ? obj.clone() : obj;\n\t\t}\n\t\tobj = Base.create(proto);\n\t\tif (readIndex)\n\t\t\tobj.__read = true;\n\t\tobj = obj.initialize.apply(obj, begin > 0 || begin + amount < length\n\t\t\t\t? Base.slice(list, begin, begin + amount)\n\t\t\t\t: list) || obj;\n\t\tif (readIndex) {\n\t\t\tlist.__index = begin + obj.__read;\n\t\t\tvar filtered = obj.__filtered;\n\t\t\tif (filtered) {\n\t\t\t\tlist.__filtered = filtered;\n\t\t\t\tobj.__filtered = undefined;\n\t\t\t}\n\t\t\tobj.__read = undefined;\n\t\t}\n\t\treturn obj;\n\t},\n\n\tpeek: function(list, start) {\n\t\treturn list[list.__index = start || list.__index || 0];\n\t},\n\n\tremain: function(list) {\n\t\treturn list.length - (list.__index || 0);\n\t},\n\n\treadList: function(list, start, options, amount) {\n\t\tvar res = [],\n\t\t\tentry,\n\t\t\tbegin = start || 0,\n\t\t\tend = amount ? begin + amount : list.length;\n\t\tfor (var i = begin; i < end; i++) {\n\t\t\tres.push(Array.isArray(entry = list[i])\n\t\t\t\t\t? this.read(entry, 0, options)\n\t\t\t\t\t: this.read(list, i, options, 1));\n\t\t}\n\t\treturn res;\n\t},\n\n\treadNamed: function(list, name, start, options, amount) {\n\t\tvar value = this.getNamed(list, name),\n\t\t\thasValue = value !== undefined;\n\t\tif (hasValue) {\n\t\t\tvar filtered = list.__filtered;\n\t\t\tif (!filtered) {\n\t\t\t\tvar source = this.getSource(list);\n\t\t\t\tfiltered = list.__filtered = Base.create(source);\n\t\t\t\tfiltered.__unfiltered = source;\n\t\t\t}\n\t\t\tfiltered[name] = undefined;\n\t\t}\n\t\treturn this.read(hasValue ? [value] : list, start, options, amount);\n\t},\n\n\treadSupported: function(list, dest) {\n\t\tvar source = this.getSource(list),\n\t\t\tthat = this,\n\t\t\tread = false;\n\t\tif (source) {\n\t\t\tObject.keys(source).forEach(function(key) {\n\t\t\t\tif (key in dest) {\n\t\t\t\t\tvar value = that.readNamed(list, key);\n\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\tdest[key] = value;\n\t\t\t\t\t}\n\t\t\t\t\tread = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn read;\n\t},\n\n\tgetSource: function(list) {\n\t\tvar source = list.__source;\n\t\tif (source === undefined) {\n\t\t\tvar arg = list.length === 1 && list[0];\n\t\t\tsource = list.__source = arg && Base.isPlainObject(arg)\n\t\t\t\t? arg : null;\n\t\t}\n\t\treturn source;\n\t},\n\n\tgetNamed: function(list, name) {\n\t\tvar source = this.getSource(list);\n\t\tif (source) {\n\t\t\treturn name ? source[name] : list.__filtered || source;\n\t\t}\n\t},\n\n\thasNamed: function(list, name) {\n\t\treturn !!this.getNamed(list, name);\n\t},\n\n\tfilter: function(dest, source, exclude, prioritize) {\n\t\tvar processed;\n\n\t\tfunction handleKey(key) {\n\t\t\tif (!(exclude && key in exclude) &&\n\t\t\t\t!(processed && key in processed)) {\n\t\t\t\tvar value = source[key];\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tdest[key] = value;\n\t\t\t}\n\t\t}\n\n\t\tif (prioritize) {\n\t\t\tvar keys = {};\n\t\t\tfor (var i = 0, key, l = prioritize.length; i < l; i++) {\n\t\t\t\tif ((key = prioritize[i]) in source) {\n\t\t\t\t\thandleKey(key);\n\t\t\t\t\tkeys[key] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tprocessed = keys;\n\t\t}\n\n\t\tObject.keys(source.__unfiltered || source).forEach(handleKey);\n\t\treturn dest;\n\t},\n\n\tisPlainValue: function(obj, asString) {\n\t\treturn Base.isPlainObject(obj) || Array.isArray(obj)\n\t\t\t\t|| asString && typeof obj === 'string';\n\t},\n\n\tserialize: function(obj, options, compact, dictionary) {\n\t\toptions = options || {};\n\n\t\tvar isRoot = !dictionary,\n\t\t\tres;\n\t\tif (isRoot) {\n\t\t\toptions.formatter = new Formatter(options.precision);\n\t\t\tdictionary = {\n\t\t\t\tlength: 0,\n\t\t\t\tdefinitions: {},\n\t\t\t\treferences: {},\n\t\t\t\tadd: function(item, create) {\n\t\t\t\t\tvar id = '#' + item._id,\n\t\t\t\t\t\tref = this.references[id];\n\t\t\t\t\tif (!ref) {\n\t\t\t\t\t\tthis.length++;\n\t\t\t\t\t\tvar res = create.call(item),\n\t\t\t\t\t\t\tname = item._class;\n\t\t\t\t\t\tif (name && res[0] !== name)\n\t\t\t\t\t\t\tres.unshift(name);\n\t\t\t\t\t\tthis.definitions[id] = res;\n\t\t\t\t\t\tref = this.references[id] = [id];\n\t\t\t\t\t}\n\t\t\t\t\treturn ref;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tif (obj && obj._serialize) {\n\t\t\tres = obj._serialize(options, dictionary);\n\t\t\tvar name = obj._class;\n\t\t\tif (name && !obj._compactSerialize && (isRoot || !compact)\n\t\t\t\t\t&& res[0] !== name) {\n\t\t\t\tres.unshift(name);\n\t\t\t}\n\t\t} else if (Array.isArray(obj)) {\n\t\t\tres = [];\n\t\t\tfor (var i = 0, l = obj.length; i < l; i++)\n\t\t\t\tres[i] = Base.serialize(obj[i], options, compact, dictionary);\n\t\t} else if (Base.isPlainObject(obj)) {\n\t\t\tres = {};\n\t\t\tvar keys = Object.keys(obj);\n\t\t\tfor (var i = 0, l = keys.length; i < l; i++) {\n\t\t\t\tvar key = keys[i];\n\t\t\t\tres[key] = Base.serialize(obj[key], options, compact,\n\t\t\t\t\t\tdictionary);\n\t\t\t}\n\t\t} else if (typeof obj === 'number') {\n\t\t\tres = options.formatter.number(obj, options.precision);\n\t\t} else {\n\t\t\tres = obj;\n\t\t}\n\t\treturn isRoot && dictionary.length > 0\n\t\t\t\t? [['dictionary', dictionary.definitions], res]\n\t\t\t\t: res;\n\t},\n\n\tdeserialize: function(json, create, _data, _setDictionary, _isRoot) {\n\t\tvar res = json,\n\t\t\tisFirst = !_data,\n\t\t\thasDictionary = isFirst && json && json.length\n\t\t\t\t&& json[0][0] === 'dictionary';\n\t\t_data = _data || {};\n\t\tif (Array.isArray(json)) {\n\t\t\tvar type = json[0],\n\t\t\t\tisDictionary = type === 'dictionary';\n\t\t\tif (json.length == 1 && /^#/.test(type)) {\n\t\t\t\treturn _data.dictionary[type];\n\t\t\t}\n\t\t\ttype = Base.exports[type];\n\t\t\tres = [];\n\t\t\tfor (var i = type ? 1 : 0, l = json.length; i < l; i++) {\n\t\t\t\tres.push(Base.deserialize(json[i], create, _data,\n\t\t\t\t\t\tisDictionary, hasDictionary));\n\t\t\t}\n\t\t\tif (type) {\n\t\t\t\tvar args = res;\n\t\t\t\tif (create) {\n\t\t\t\t\tres = create(type, args, isFirst || _isRoot);\n\t\t\t\t} else {\n\t\t\t\t\tres = new type(args);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (Base.isPlainObject(json)) {\n\t\t\tres = {};\n\t\t\tif (_setDictionary)\n\t\t\t\t_data.dictionary = res;\n\t\t\tfor (var key in json)\n\t\t\t\tres[key] = Base.deserialize(json[key], create, _data);\n\t\t}\n\t\treturn hasDictionary ? res[1] : res;\n\t},\n\n\texportJSON: function(obj, options) {\n\t\tvar json = Base.serialize(obj, options);\n\t\treturn options && options.asString == false\n\t\t\t\t? json\n\t\t\t\t: JSON.stringify(json);\n\t},\n\n\timportJSON: function(json, target) {\n\t\treturn Base.deserialize(\n\t\t\t\ttypeof json === 'string' ? JSON.parse(json) : json,\n\t\t\t\tfunction(ctor, args, isRoot) {\n\t\t\t\t\tvar useTarget = isRoot && target\n\t\t\t\t\t\t\t&& target.constructor === ctor,\n\t\t\t\t\t\tobj = useTarget ? target\n\t\t\t\t\t\t\t: Base.create(ctor.prototype);\n\t\t\t\t\tif (args.length === 1 && obj instanceof Item\n\t\t\t\t\t\t\t&& (useTarget || !(obj instanceof Layer))) {\n\t\t\t\t\t\tvar arg = args[0];\n\t\t\t\t\t\tif (Base.isPlainObject(arg)) {\n\t\t\t\t\t\t\targ.insert = false;\n\t\t\t\t\t\t\tif (useTarget) {\n\t\t\t\t\t\t\t\targs = args.concat([{ insert: true }]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t(useTarget ? obj.set : ctor).apply(obj, args);\n\t\t\t\t\tif (useTarget)\n\t\t\t\t\t\ttarget = null;\n\t\t\t\t\treturn obj;\n\t\t\t\t});\n\t},\n\n\tpush: function(list, items) {\n\t\tvar itemsLength = items.length;\n\t\tif (itemsLength < 4096) {\n\t\t\tlist.push.apply(list, items);\n\t\t} else {\n\t\t\tvar startLength = list.length;\n\t\t\tlist.length += itemsLength;\n\t\t\tfor (var i = 0; i < itemsLength; i++) {\n\t\t\t\tlist[startLength + i] = items[i];\n\t\t\t}\n\t\t}\n\t\treturn list;\n\t},\n\n\tsplice: function(list, items, index, remove) {\n\t\tvar amount = items && items.length,\n\t\t\tappend = index === undefined;\n\t\tindex = append ? list.length : index;\n\t\tif (index > list.length)\n\t\t\tindex = list.length;\n\t\tfor (var i = 0; i < amount; i++)\n\t\t\titems[i]._index = index + i;\n\t\tif (append) {\n\t\t\tBase.push(list, items);\n\t\t\treturn [];\n\t\t} else {\n\t\t\tvar args = [index, remove];\n\t\t\tif (items)\n\t\t\t\tBase.push(args, items);\n\t\t\tvar removed = list.splice.apply(list, args);\n\t\t\tfor (var i = 0, l = removed.length; i < l; i++)\n\t\t\t\tremoved[i]._index = undefined;\n\t\t\tfor (var i = index + amount, l = list.length; i < l; i++)\n\t\t\t\tlist[i]._index = i;\n\t\t\treturn removed;\n\t\t}\n\t},\n\n\tcapitalize: function(str) {\n\t\treturn str.replace(/\\b[a-z]/g, function(match) {\n\t\t\treturn match.toUpperCase();\n\t\t});\n\t},\n\n\tcamelize: function(str) {\n\t\treturn str.replace(/-(.)/g, function(match, chr) {\n\t\t\treturn chr.toUpperCase();\n\t\t});\n\t},\n\n\thyphenate: function(str) {\n\t\treturn str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n\t}\n}});\n\nvar Emitter = {\n\ton: function(type, func) {\n\t\tif (typeof type !== 'string') {\n\t\t\tBase.each(type, function(value, key) {\n\t\t\t\tthis.on(key, value);\n\t\t\t}, this);\n\t\t} else {\n\t\t\tvar types = this._eventTypes,\n\t\t\t\tentry = types && types[type],\n\t\t\t\thandlers = this._callbacks = this._callbacks || {};\n\t\t\thandlers = handlers[type] = handlers[type] || [];\n\t\t\tif (handlers.indexOf(func) === -1) {\n\t\t\t\thandlers.push(func);\n\t\t\t\tif (entry && entry.install && handlers.length === 1)\n\t\t\t\t\tentry.install.call(this, type);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\toff: function(type, func) {\n\t\tif (typeof type !== 'string') {\n\t\t\tBase.each(type, function(value, key) {\n\t\t\t\tthis.off(key, value);\n\t\t\t}, this);\n\t\t\treturn;\n\t\t}\n\t\tvar types = this._eventTypes,\n\t\t\tentry = types && types[type],\n\t\t\thandlers = this._callbacks && this._callbacks[type],\n\t\t\tindex;\n\t\tif (handlers) {\n\t\t\tif (!func || (index = handlers.indexOf(func)) !== -1\n\t\t\t\t\t&& handlers.length === 1) {\n\t\t\t\tif (entry && entry.uninstall)\n\t\t\t\t\tentry.uninstall.call(this, type);\n\t\t\t\tdelete this._callbacks[type];\n\t\t\t} else if (index !== -1) {\n\t\t\t\thandlers.splice(index, 1);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\tonce: function(type, func) {\n\t\treturn this.on(type, function handler() {\n\t\t\tfunc.apply(this, arguments);\n\t\t\tthis.off(type, handler);\n\t\t});\n\t},\n\n\temit: function(type, event) {\n\t\tvar handlers = this._callbacks && this._callbacks[type];\n\t\tif (!handlers)\n\t\t\treturn false;\n\t\tvar args = Base.slice(arguments, 1),\n\t\t\tsetTarget = event && event.target && !event.currentTarget;\n\t\thandlers = handlers.slice();\n\t\tif (setTarget)\n\t\t\tevent.currentTarget = this;\n\t\tfor (var i = 0, l = handlers.length; i < l; i++) {\n\t\t\tif (handlers[i].apply(this, args) == false) {\n\t\t\t\tif (event && event.stop)\n\t\t\t\t\tevent.stop();\n\t\t\t\tbreak;\n\t\t   }\n\t\t}\n\t\tif (setTarget)\n\t\t\tdelete event.currentTarget;\n\t\treturn true;\n\t},\n\n\tresponds: function(type) {\n\t\treturn !!(this._callbacks && this._callbacks[type]);\n\t},\n\n\tattach: '#on',\n\tdetach: '#off',\n\tfire: '#emit',\n\n\t_installEvents: function(install) {\n\t\tvar types = this._eventTypes,\n\t\t\thandlers = this._callbacks,\n\t\t\tkey = install ? 'install' : 'uninstall';\n\t\tif (types) {\n\t\t\tfor (var type in handlers) {\n\t\t\t\tif (handlers[type].length > 0) {\n\t\t\t\t\tvar entry = types[type],\n\t\t\t\t\t\tfunc = entry && entry[key];\n\t\t\t\t\tif (func)\n\t\t\t\t\t\tfunc.call(this, type);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tstatics: {\n\t\tinject: function inject(src) {\n\t\t\tvar events = src._events;\n\t\t\tif (events) {\n\t\t\t\tvar types = {};\n\t\t\t\tBase.each(events, function(entry, key) {\n\t\t\t\t\tvar isString = typeof entry === 'string',\n\t\t\t\t\t\tname = isString ? entry : key,\n\t\t\t\t\t\tpart = Base.capitalize(name),\n\t\t\t\t\t\ttype = name.substring(2).toLowerCase();\n\t\t\t\t\ttypes[type] = isString ? {} : entry;\n\t\t\t\t\tname = '_' + name;\n\t\t\t\t\tsrc['get' + part] = function() {\n\t\t\t\t\t\treturn this[name];\n\t\t\t\t\t};\n\t\t\t\t\tsrc['set' + part] = function(func) {\n\t\t\t\t\t\tvar prev = this[name];\n\t\t\t\t\t\tif (prev)\n\t\t\t\t\t\t\tthis.off(type, prev);\n\t\t\t\t\t\tif (func)\n\t\t\t\t\t\t\tthis.on(type, func);\n\t\t\t\t\t\tthis[name] = func;\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tsrc._eventTypes = types;\n\t\t\t}\n\t\t\treturn inject.base.apply(this, arguments);\n\t\t}\n\t}\n};\n\nvar PaperScope = Base.extend({\n\t_class: 'PaperScope',\n\n\tinitialize: function PaperScope() {\n\t\tpaper = this;\n\t\tthis.settings = new Base({\n\t\t\tapplyMatrix: true,\n\t\t\tinsertItems: true,\n\t\t\thandleSize: 4,\n\t\t\thitTolerance: 0\n\t\t});\n\t\tthis.project = null;\n\t\tthis.projects = [];\n\t\tthis.tools = [];\n\t\tthis._id = PaperScope._id++;\n\t\tPaperScope._scopes[this._id] = this;\n\t\tvar proto = PaperScope.prototype;\n\t\tif (!this.support) {\n\t\t\tvar ctx = CanvasProvider.getContext(1, 1) || {};\n\t\t\tproto.support = {\n\t\t\t\tnativeDash: 'setLineDash' in ctx || 'mozDash' in ctx,\n\t\t\t\tnativeBlendModes: BlendMode.nativeModes\n\t\t\t};\n\t\t\tCanvasProvider.release(ctx);\n\t\t}\n\t\tif (!this.agent) {\n\t\t\tvar user = self.navigator.userAgent.toLowerCase(),\n\t\t\t\tos = (/(darwin|win|mac|linux|freebsd|sunos)/.exec(user)||[])[0],\n\t\t\t\tplatform = os === 'darwin' ? 'mac' : os,\n\t\t\t\tagent = proto.agent = proto.browser = { platform: platform };\n\t\t\tif (platform)\n\t\t\t\tagent[platform] = true;\n\t\t\tuser.replace(\n\t\t\t\t/(opera|chrome|safari|webkit|firefox|msie|trident|atom|node|jsdom)\\/?\\s*([.\\d]+)(?:.*version\\/([.\\d]+))?(?:.*rv\\:v?([.\\d]+))?/g,\n\t\t\t\tfunction(match, n, v1, v2, rv) {\n\t\t\t\t\tif (!agent.chrome) {\n\t\t\t\t\t\tvar v = n === 'opera' ? v2 :\n\t\t\t\t\t\t\t\t/^(node|trident)$/.test(n) ? rv : v1;\n\t\t\t\t\t\tagent.version = v;\n\t\t\t\t\t\tagent.versionNumber = parseFloat(v);\n\t\t\t\t\t\tn = { trident: 'msie', jsdom: 'node' }[n] || n;\n\t\t\t\t\t\tagent.name = n;\n\t\t\t\t\t\tagent[n] = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\tif (agent.chrome)\n\t\t\t\tdelete agent.webkit;\n\t\t\tif (agent.atom)\n\t\t\t\tdelete agent.chrome;\n\t\t}\n\t},\n\n\tversion: \"0.12.7\",\n\n\tgetView: function() {\n\t\tvar project = this.project;\n\t\treturn project && project._view;\n\t},\n\n\tgetPaper: function() {\n\t\treturn this;\n\t},\n\n\texecute: function(code, options) {\n\t\t\tvar exports = paper.PaperScript.execute(code, this, options);\n\t\t\tView.updateFocus();\n\t\t\treturn exports;\n\t},\n\n\tinstall: function(scope) {\n\t\tvar that = this;\n\t\tBase.each(['project', 'view', 'tool'], function(key) {\n\t\t\tBase.define(scope, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tget: function() {\n\t\t\t\t\treturn that[key];\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tfor (var key in this)\n\t\t\tif (!/^_/.test(key) && this[key])\n\t\t\t\tscope[key] = this[key];\n\t},\n\n\tsetup: function(element) {\n\t\tpaper = this;\n\t\tthis.project = new Project(element);\n\t\treturn this;\n\t},\n\n\tcreateCanvas: function(width, height) {\n\t\treturn CanvasProvider.getCanvas(width, height);\n\t},\n\n\tactivate: function() {\n\t\tpaper = this;\n\t},\n\n\tclear: function() {\n\t\tvar projects = this.projects,\n\t\t\ttools = this.tools;\n\t\tfor (var i = projects.length - 1; i >= 0; i--)\n\t\t\tprojects[i].remove();\n\t\tfor (var i = tools.length - 1; i >= 0; i--)\n\t\t\ttools[i].remove();\n\t},\n\n\tremove: function() {\n\t\tthis.clear();\n\t\tdelete PaperScope._scopes[this._id];\n\t},\n\n\tstatics: new function() {\n\t\tfunction handleAttribute(name) {\n\t\t\tname += 'Attribute';\n\t\t\treturn function(el, attr) {\n\t\t\t\treturn el[name](attr) || el[name]('data-paper-' + attr);\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\t_scopes: {},\n\t\t\t_id: 0,\n\n\t\t\tget: function(id) {\n\t\t\t\treturn this._scopes[id] || null;\n\t\t\t},\n\n\t\t\tgetAttribute: handleAttribute('get'),\n\t\t\thasAttribute: handleAttribute('has')\n\t\t};\n\t}\n});\n\nvar PaperScopeItem = Base.extend(Emitter, {\n\n\tinitialize: function(activate) {\n\t\tthis._scope = paper;\n\t\tthis._index = this._scope[this._list].push(this) - 1;\n\t\tif (activate || !this._scope[this._reference])\n\t\t\tthis.activate();\n\t},\n\n\tactivate: function() {\n\t\tif (!this._scope)\n\t\t\treturn false;\n\t\tvar prev = this._scope[this._reference];\n\t\tif (prev && prev !== this)\n\t\t\tprev.emit('deactivate');\n\t\tthis._scope[this._reference] = this;\n\t\tthis.emit('activate', prev);\n\t\treturn true;\n\t},\n\n\tisActive: function() {\n\t\treturn this._scope[this._reference] === this;\n\t},\n\n\tremove: function() {\n\t\tif (this._index == null)\n\t\t\treturn false;\n\t\tBase.splice(this._scope[this._list], null, this._index, 1);\n\t\tif (this._scope[this._reference] == this)\n\t\t\tthis._scope[this._reference] = null;\n\t\tthis._scope = null;\n\t\treturn true;\n\t},\n\n\tgetView: function() {\n\t\treturn this._scope.getView();\n\t}\n});\n\nvar CollisionDetection = {\n\tfindItemBoundsCollisions: function(items1, items2, tolerance) {\n\t\tfunction getBounds(items) {\n\t\t\tvar bounds = new Array(items.length);\n\t\t\tfor (var i = 0; i < items.length; i++) {\n\t\t\t\tvar rect = items[i].getBounds();\n\t\t\t\tbounds[i] = [rect.left, rect.top, rect.right, rect.bottom];\n\t\t\t}\n\t\t\treturn bounds;\n\t\t}\n\n\t\tvar bounds1 = getBounds(items1),\n\t\t\tbounds2 = !items2 || items2 === items1\n\t\t\t\t? bounds1\n\t\t\t\t: getBounds(items2);\n\t\treturn this.findBoundsCollisions(bounds1, bounds2, tolerance || 0);\n\t},\n\n\tfindCurveBoundsCollisions: function(curves1, curves2, tolerance, bothAxis) {\n\t\tfunction getBounds(curves) {\n\t\t\tvar min = Math.min,\n\t\t\t\tmax = Math.max,\n\t\t\t\tbounds = new Array(curves.length);\n\t\t\tfor (var i = 0; i < curves.length; i++) {\n\t\t\t\tvar v = curves[i];\n\t\t\t\tbounds[i] = [\n\t\t\t\t\tmin(v[0], v[2], v[4], v[6]),\n\t\t\t\t\tmin(v[1], v[3], v[5], v[7]),\n\t\t\t\t\tmax(v[0], v[2], v[4], v[6]),\n\t\t\t\t\tmax(v[1], v[3], v[5], v[7])\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn bounds;\n\t\t}\n\n\t\tvar bounds1 = getBounds(curves1),\n\t\t\tbounds2 = !curves2 || curves2 === curves1\n\t\t\t\t? bounds1\n\t\t\t\t: getBounds(curves2);\n\t\tif (bothAxis) {\n\t\t\tvar hor = this.findBoundsCollisions(\n\t\t\t\t\tbounds1, bounds2, tolerance || 0, false, true),\n\t\t\t\tver = this.findBoundsCollisions(\n\t\t\t\t\tbounds1, bounds2, tolerance || 0, true, true),\n\t\t\t\tlist = [];\n\t\t\tfor (var i = 0, l = hor.length; i < l; i++) {\n\t\t\t\tlist[i] = { hor: hor[i], ver: ver[i] };\n\t\t\t}\n\t\t\treturn list;\n\t\t}\n\t\treturn this.findBoundsCollisions(bounds1, bounds2, tolerance || 0);\n\t},\n\n\tfindBoundsCollisions: function(boundsA, boundsB, tolerance,\n\t\tsweepVertical, onlySweepAxisCollisions) {\n\t\tvar self = !boundsB || boundsA === boundsB,\n\t\t\tallBounds = self ? boundsA : boundsA.concat(boundsB),\n\t\t\tlengthA = boundsA.length,\n\t\t\tlengthAll = allBounds.length;\n\n\t\tfunction binarySearch(indices, coord, value) {\n\t\t\tvar lo = 0,\n\t\t\t\thi = indices.length;\n\t\t\twhile (lo < hi) {\n\t\t\t\tvar mid = (hi + lo) >>> 1;\n\t\t\t\tif (allBounds[indices[mid]][coord] < value) {\n\t\t\t\t\tlo = mid + 1;\n\t\t\t\t} else {\n\t\t\t\t\thi = mid;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn lo - 1;\n\t\t}\n\n\t\tvar pri0 = sweepVertical ? 1 : 0,\n\t\t\tpri1 = pri0 + 2,\n\t\t\tsec0 = sweepVertical ? 0 : 1,\n\t\t\tsec1 = sec0 + 2;\n\t\tvar allIndicesByPri0 = new Array(lengthAll);\n\t\tfor (var i = 0; i < lengthAll; i++) {\n\t\t\tallIndicesByPri0[i] = i;\n\t\t}\n\t\tallIndicesByPri0.sort(function(i1, i2) {\n\t\t\treturn allBounds[i1][pri0] - allBounds[i2][pri0];\n\t\t});\n\t\tvar activeIndicesByPri1 = [],\n\t\t\tallCollisions = new Array(lengthA);\n\t\tfor (var i = 0; i < lengthAll; i++) {\n\t\t\tvar curIndex = allIndicesByPri0[i],\n\t\t\t\tcurBounds = allBounds[curIndex],\n\t\t\t\torigIndex = self ? curIndex : curIndex - lengthA,\n\t\t\t\tisCurrentA = curIndex < lengthA,\n\t\t\t\tisCurrentB = self || !isCurrentA,\n\t\t\t\tcurCollisions = isCurrentA ? [] : null;\n\t\t\tif (activeIndicesByPri1.length) {\n\t\t\t\tvar pruneCount = binarySearch(activeIndicesByPri1, pri1,\n\t\t\t\t\t\tcurBounds[pri0] - tolerance) + 1;\n\t\t\t\tactiveIndicesByPri1.splice(0, pruneCount);\n\t\t\t\tif (self && onlySweepAxisCollisions) {\n\t\t\t\t\tcurCollisions = curCollisions.concat(activeIndicesByPri1);\n\t\t\t\t\tfor (var j = 0; j < activeIndicesByPri1.length; j++) {\n\t\t\t\t\t\tvar activeIndex = activeIndicesByPri1[j];\n\t\t\t\t\t\tallCollisions[activeIndex].push(origIndex);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar curSec1 = curBounds[sec1],\n\t\t\t\t\t\tcurSec0 = curBounds[sec0];\n\t\t\t\t\tfor (var j = 0; j < activeIndicesByPri1.length; j++) {\n\t\t\t\t\t\tvar activeIndex = activeIndicesByPri1[j],\n\t\t\t\t\t\t\tactiveBounds = allBounds[activeIndex],\n\t\t\t\t\t\t\tisActiveA = activeIndex < lengthA,\n\t\t\t\t\t\t\tisActiveB = self || activeIndex >= lengthA;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tonlySweepAxisCollisions ||\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\tisCurrentA && isActiveB ||\n\t\t\t\t\t\t\t\tisCurrentB && isActiveA\n\t\t\t\t\t\t\t) && (\n\t\t\t\t\t\t\t\tcurSec1 >= activeBounds[sec0] - tolerance &&\n\t\t\t\t\t\t\t\tcurSec0 <= activeBounds[sec1] + tolerance\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (isCurrentA && isActiveB) {\n\t\t\t\t\t\t\t\tcurCollisions.push(\n\t\t\t\t\t\t\t\t\tself ? activeIndex : activeIndex - lengthA);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (isCurrentB && isActiveA) {\n\t\t\t\t\t\t\t\tallCollisions[activeIndex].push(origIndex);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isCurrentA) {\n\t\t\t\tif (boundsA === boundsB) {\n\t\t\t\t\tcurCollisions.push(curIndex);\n\t\t\t\t}\n\t\t\t\tallCollisions[curIndex] = curCollisions;\n\t\t\t}\n\t\t\tif (activeIndicesByPri1.length) {\n\t\t\t\tvar curPri1 = curBounds[pri1],\n\t\t\t\t\tindex = binarySearch(activeIndicesByPri1, pri1, curPri1);\n\t\t\t\tactiveIndicesByPri1.splice(index + 1, 0, curIndex);\n\t\t\t} else {\n\t\t\t\tactiveIndicesByPri1.push(curIndex);\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < allCollisions.length; i++) {\n\t\t\tvar collisions = allCollisions[i];\n\t\t\tif (collisions) {\n\t\t\t\tcollisions.sort(function(i1, i2) { return i1 - i2; });\n\t\t\t}\n\t\t}\n\t\treturn allCollisions;\n\t}\n};\n\nvar Formatter = Base.extend({\n\tinitialize: function(precision) {\n\t\tthis.precision = Base.pick(precision, 5);\n\t\tthis.multiplier = Math.pow(10, this.precision);\n\t},\n\n\tnumber: function(val) {\n\t\treturn this.precision < 16\n\t\t\t\t? Math.round(val * this.multiplier) / this.multiplier : val;\n\t},\n\n\tpair: function(val1, val2, separator) {\n\t\treturn this.number(val1) + (separator || ',') + this.number(val2);\n\t},\n\n\tpoint: function(val, separator) {\n\t\treturn this.number(val.x) + (separator || ',') + this.number(val.y);\n\t},\n\n\tsize: function(val, separator) {\n\t\treturn this.number(val.width) + (separator || ',')\n\t\t\t\t+ this.number(val.height);\n\t},\n\n\trectangle: function(val, separator) {\n\t\treturn this.point(val, separator) + (separator || ',')\n\t\t\t\t+ this.size(val, separator);\n\t}\n});\n\nFormatter.instance = new Formatter();\n\nvar Numerical = new function() {\n\n\tvar abscissas = [\n\t\t[  0.5773502691896257645091488],\n\t\t[0,0.7745966692414833770358531],\n\t\t[  0.3399810435848562648026658,0.8611363115940525752239465],\n\t\t[0,0.5384693101056830910363144,0.9061798459386639927976269],\n\t\t[  0.2386191860831969086305017,0.6612093864662645136613996,0.9324695142031520278123016],\n\t\t[0,0.4058451513773971669066064,0.7415311855993944398638648,0.9491079123427585245261897],\n\t\t[  0.1834346424956498049394761,0.5255324099163289858177390,0.7966664774136267395915539,0.9602898564975362316835609],\n\t\t[0,0.3242534234038089290385380,0.6133714327005903973087020,0.8360311073266357942994298,0.9681602395076260898355762],\n\t\t[  0.1488743389816312108848260,0.4333953941292471907992659,0.6794095682990244062343274,0.8650633666889845107320967,0.9739065285171717200779640],\n\t\t[0,0.2695431559523449723315320,0.5190961292068118159257257,0.7301520055740493240934163,0.8870625997680952990751578,0.9782286581460569928039380],\n\t\t[  0.1252334085114689154724414,0.3678314989981801937526915,0.5873179542866174472967024,0.7699026741943046870368938,0.9041172563704748566784659,0.9815606342467192506905491],\n\t\t[0,0.2304583159551347940655281,0.4484927510364468528779129,0.6423493394403402206439846,0.8015780907333099127942065,0.9175983992229779652065478,0.9841830547185881494728294],\n\t\t[  0.1080549487073436620662447,0.3191123689278897604356718,0.5152486363581540919652907,0.6872929048116854701480198,0.8272013150697649931897947,0.9284348836635735173363911,0.9862838086968123388415973],\n\t\t[0,0.2011940939974345223006283,0.3941513470775633698972074,0.5709721726085388475372267,0.7244177313601700474161861,0.8482065834104272162006483,0.9372733924007059043077589,0.9879925180204854284895657],\n\t\t[  0.0950125098376374401853193,0.2816035507792589132304605,0.4580167776572273863424194,0.6178762444026437484466718,0.7554044083550030338951012,0.8656312023878317438804679,0.9445750230732325760779884,0.9894009349916499325961542]\n\t];\n\n\tvar weights = [\n\t\t[1],\n\t\t[0.8888888888888888888888889,0.5555555555555555555555556],\n\t\t[0.6521451548625461426269361,0.3478548451374538573730639],\n\t\t[0.5688888888888888888888889,0.4786286704993664680412915,0.2369268850561890875142640],\n\t\t[0.4679139345726910473898703,0.3607615730481386075698335,0.1713244923791703450402961],\n\t\t[0.4179591836734693877551020,0.3818300505051189449503698,0.2797053914892766679014678,0.1294849661688696932706114],\n\t\t[0.3626837833783619829651504,0.3137066458778872873379622,0.2223810344533744705443560,0.1012285362903762591525314],\n\t\t[0.3302393550012597631645251,0.3123470770400028400686304,0.2606106964029354623187429,0.1806481606948574040584720,0.0812743883615744119718922],\n\t\t[0.2955242247147528701738930,0.2692667193099963550912269,0.2190863625159820439955349,0.1494513491505805931457763,0.0666713443086881375935688],\n\t\t[0.2729250867779006307144835,0.2628045445102466621806889,0.2331937645919904799185237,0.1862902109277342514260976,0.1255803694649046246346943,0.0556685671161736664827537],\n\t\t[0.2491470458134027850005624,0.2334925365383548087608499,0.2031674267230659217490645,0.1600783285433462263346525,0.1069393259953184309602547,0.0471753363865118271946160],\n\t\t[0.2325515532308739101945895,0.2262831802628972384120902,0.2078160475368885023125232,0.1781459807619457382800467,0.1388735102197872384636018,0.0921214998377284479144218,0.0404840047653158795200216],\n\t\t[0.2152638534631577901958764,0.2051984637212956039659241,0.1855383974779378137417166,0.1572031671581935345696019,0.1215185706879031846894148,0.0801580871597602098056333,0.0351194603317518630318329],\n\t\t[0.2025782419255612728806202,0.1984314853271115764561183,0.1861610000155622110268006,0.1662692058169939335532009,0.1395706779261543144478048,0.1071592204671719350118695,0.0703660474881081247092674,0.0307532419961172683546284],\n\t\t[0.1894506104550684962853967,0.1826034150449235888667637,0.1691565193950025381893121,0.1495959888165767320815017,0.1246289712555338720524763,0.0951585116824927848099251,0.0622535239386478928628438,0.0271524594117540948517806]\n\t];\n\n\tvar abs = Math.abs,\n\t\tsqrt = Math.sqrt,\n\t\tpow = Math.pow,\n\t\tlog2 = Math.log2 || function(x) {\n\t\t\treturn Math.log(x) * Math.LOG2E;\n\t\t},\n\t\tEPSILON = 1e-12,\n\t\tMACHINE_EPSILON = 1.12e-16;\n\n\tfunction clamp(value, min, max) {\n\t\treturn value < min ? min : value > max ? max : value;\n\t}\n\n\tfunction getDiscriminant(a, b, c) {\n\t\tfunction split(v) {\n\t\t\tvar x = v * 134217729,\n\t\t\t\ty = v - x,\n\t\t\t\thi = y + x,\n\t\t\t\tlo = v - hi;\n\t\t\treturn [hi, lo];\n\t\t}\n\n\t\tvar D = b * b - a * c,\n\t\t\tE = b * b + a * c;\n\t\tif (abs(D) * 3 < E) {\n\t\t\tvar ad = split(a),\n\t\t\t\tbd = split(b),\n\t\t\t\tcd = split(c),\n\t\t\t\tp = b * b,\n\t\t\t\tdp = (bd[0] * bd[0] - p + 2 * bd[0] * bd[1]) + bd[1] * bd[1],\n\t\t\t\tq = a * c,\n\t\t\t\tdq = (ad[0] * cd[0] - q + ad[0] * cd[1] + ad[1] * cd[0])\n\t\t\t\t\t\t+ ad[1] * cd[1];\n\t\t\tD = (p - q) + (dp - dq);\n\t\t}\n\t\treturn D;\n\t}\n\n\tfunction getNormalizationFactor() {\n\t\tvar norm = Math.max.apply(Math, arguments);\n\t\treturn norm && (norm < 1e-8 || norm > 1e8)\n\t\t\t\t? pow(2, -Math.round(log2(norm)))\n\t\t\t\t: 0;\n\t}\n\n\treturn {\n\t\tEPSILON: EPSILON,\n\t\tMACHINE_EPSILON: MACHINE_EPSILON,\n\t\tCURVETIME_EPSILON: 1e-8,\n\t\tGEOMETRIC_EPSILON: 1e-7,\n\t\tTRIGONOMETRIC_EPSILON: 1e-8,\n\t\tKAPPA: 4 * (sqrt(2) - 1) / 3,\n\n\t\tisZero: function(val) {\n\t\t\treturn val >= -EPSILON && val <= EPSILON;\n\t\t},\n\n\t\tisMachineZero: function(val) {\n\t\t\treturn val >= -MACHINE_EPSILON && val <= MACHINE_EPSILON;\n\t\t},\n\n\t\tclamp: clamp,\n\n\t\tintegrate: function(f, a, b, n) {\n\t\t\tvar x = abscissas[n - 2],\n\t\t\t\tw = weights[n - 2],\n\t\t\t\tA = (b - a) * 0.5,\n\t\t\t\tB = A + a,\n\t\t\t\ti = 0,\n\t\t\t\tm = (n + 1) >> 1,\n\t\t\t\tsum = n & 1 ? w[i++] * f(B) : 0;\n\t\t\twhile (i < m) {\n\t\t\t\tvar Ax = A * x[i];\n\t\t\t\tsum += w[i++] * (f(B + Ax) + f(B - Ax));\n\t\t\t}\n\t\t\treturn A * sum;\n\t\t},\n\n\t\tfindRoot: function(f, df, x, a, b, n, tolerance) {\n\t\t\tfor (var i = 0; i < n; i++) {\n\t\t\t\tvar fx = f(x),\n\t\t\t\t\tdx = fx / df(x),\n\t\t\t\t\tnx = x - dx;\n\t\t\t\tif (abs(dx) < tolerance) {\n\t\t\t\t\tx = nx;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (fx > 0) {\n\t\t\t\t\tb = x;\n\t\t\t\t\tx = nx <= a ? (a + b) * 0.5 : nx;\n\t\t\t\t} else {\n\t\t\t\t\ta = x;\n\t\t\t\t\tx = nx >= b ? (a + b) * 0.5 : nx;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn clamp(x, a, b);\n\t\t},\n\n\t\tsolveQuadratic: function(a, b, c, roots, min, max) {\n\t\t\tvar x1, x2 = Infinity;\n\t\t\tif (abs(a) < EPSILON) {\n\t\t\t\tif (abs(b) < EPSILON)\n\t\t\t\t\treturn abs(c) < EPSILON ? -1 : 0;\n\t\t\t\tx1 = -c / b;\n\t\t\t} else {\n\t\t\t\tb *= -0.5;\n\t\t\t\tvar D = getDiscriminant(a, b, c);\n\t\t\t\tif (D && abs(D) < MACHINE_EPSILON) {\n\t\t\t\t\tvar f = getNormalizationFactor(abs(a), abs(b), abs(c));\n\t\t\t\t\tif (f) {\n\t\t\t\t\t\ta *= f;\n\t\t\t\t\t\tb *= f;\n\t\t\t\t\t\tc *= f;\n\t\t\t\t\t\tD = getDiscriminant(a, b, c);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (D >= -MACHINE_EPSILON) {\n\t\t\t\t\tvar Q = D < 0 ? 0 : sqrt(D),\n\t\t\t\t\t\tR = b + (b < 0 ? -Q : Q);\n\t\t\t\t\tif (R === 0) {\n\t\t\t\t\t\tx1 = c / a;\n\t\t\t\t\t\tx2 = -x1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tx1 = R / a;\n\t\t\t\t\t\tx2 = c / R;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar count = 0,\n\t\t\t\tboundless = min == null,\n\t\t\t\tminB = min - EPSILON,\n\t\t\t\tmaxB = max + EPSILON;\n\t\t\tif (isFinite(x1) && (boundless || x1 > minB && x1 < maxB))\n\t\t\t\troots[count++] = boundless ? x1 : clamp(x1, min, max);\n\t\t\tif (x2 !== x1\n\t\t\t\t\t&& isFinite(x2) && (boundless || x2 > minB && x2 < maxB))\n\t\t\t\troots[count++] = boundless ? x2 : clamp(x2, min, max);\n\t\t\treturn count;\n\t\t},\n\n\t\tsolveCubic: function(a, b, c, d, roots, min, max) {\n\t\t\tvar f = getNormalizationFactor(abs(a), abs(b), abs(c), abs(d)),\n\t\t\t\tx, b1, c2, qd, q;\n\t\t\tif (f) {\n\t\t\t\ta *= f;\n\t\t\t\tb *= f;\n\t\t\t\tc *= f;\n\t\t\t\td *= f;\n\t\t\t}\n\n\t\t\tfunction evaluate(x0) {\n\t\t\t\tx = x0;\n\t\t\t\tvar tmp = a * x;\n\t\t\t\tb1 = tmp + b;\n\t\t\t\tc2 = b1 * x + c;\n\t\t\t\tqd = (tmp + b1) * x + c2;\n\t\t\t\tq = c2 * x + d;\n\t\t\t}\n\n\t\t\tif (abs(a) < EPSILON) {\n\t\t\t\ta = b;\n\t\t\t\tb1 = c;\n\t\t\t\tc2 = d;\n\t\t\t\tx = Infinity;\n\t\t\t} else if (abs(d) < EPSILON) {\n\t\t\t\tb1 = b;\n\t\t\t\tc2 = c;\n\t\t\t\tx = 0;\n\t\t\t} else {\n\t\t\t\tevaluate(-(b / a) / 3);\n\t\t\t\tvar t = q / a,\n\t\t\t\t\tr = pow(abs(t), 1/3),\n\t\t\t\t\ts = t < 0 ? -1 : 1,\n\t\t\t\t\ttd = -qd / a,\n\t\t\t\t\trd = td > 0 ? 1.324717957244746 * Math.max(r, sqrt(td)) : r,\n\t\t\t\t\tx0 = x - s * rd;\n\t\t\t\tif (x0 !== x) {\n\t\t\t\t\tdo {\n\t\t\t\t\t\tevaluate(x0);\n\t\t\t\t\t\tx0 = qd === 0 ? x : x - q / qd / (1 + MACHINE_EPSILON);\n\t\t\t\t\t} while (s * x0 > s * x);\n\t\t\t\t\tif (abs(a) * x * x > abs(d / x)) {\n\t\t\t\t\t\tc2 = -d / x;\n\t\t\t\t\t\tb1 = (c2 - c) / x;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar count = Numerical.solveQuadratic(a, b1, c2, roots, min, max),\n\t\t\t\tboundless = min == null;\n\t\t\tif (isFinite(x) && (count === 0\n\t\t\t\t\t|| count > 0 && x !== roots[0] && x !== roots[1])\n\t\t\t\t\t&& (boundless || x > min - EPSILON && x < max + EPSILON))\n\t\t\t\troots[count++] = boundless ? x : clamp(x, min, max);\n\t\t\treturn count;\n\t\t}\n\t};\n};\n\nvar UID = {\n\t_id: 1,\n\t_pools: {},\n\n\tget: function(name) {\n\t\tif (name) {\n\t\t\tvar pool = this._pools[name];\n\t\t\tif (!pool)\n\t\t\t\tpool = this._pools[name] = { _id: 1 };\n\t\t\treturn pool._id++;\n\t\t} else {\n\t\t\treturn this._id++;\n\t\t}\n\t}\n};\n\nvar Point = Base.extend({\n\t_class: 'Point',\n\t_readIndex: true,\n\n\tinitialize: function Point(arg0, arg1) {\n\t\tvar type = typeof arg0,\n\t\t\treading = this.__read,\n\t\t\tread = 0;\n\t\tif (type === 'number') {\n\t\t\tvar hasY = typeof arg1 === 'number';\n\t\t\tthis._set(arg0, hasY ? arg1 : arg0);\n\t\t\tif (reading)\n\t\t\t\tread = hasY ? 2 : 1;\n\t\t} else if (type === 'undefined' || arg0 === null) {\n\t\t\tthis._set(0, 0);\n\t\t\tif (reading)\n\t\t\t\tread = arg0 === null ? 1 : 0;\n\t\t} else {\n\t\t\tvar obj = type === 'string' ? arg0.split(/[\\s,]+/) || [] : arg0;\n\t\t\tread = 1;\n\t\t\tif (Array.isArray(obj)) {\n\t\t\t\tthis._set(+obj[0], +(obj.length > 1 ? obj[1] : obj[0]));\n\t\t\t} else if ('x' in obj) {\n\t\t\t\tthis._set(obj.x || 0, obj.y || 0);\n\t\t\t} else if ('width' in obj) {\n\t\t\t\tthis._set(obj.width || 0, obj.height || 0);\n\t\t\t} else if ('angle' in obj) {\n\t\t\t\tthis._set(obj.length || 0, 0);\n\t\t\t\tthis.setAngle(obj.angle || 0);\n\t\t\t} else {\n\t\t\t\tthis._set(0, 0);\n\t\t\t\tread = 0;\n\t\t\t}\n\t\t}\n\t\tif (reading)\n\t\t\tthis.__read = read;\n\t\treturn this;\n\t},\n\n\tset: '#initialize',\n\n\t_set: function(x, y) {\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\treturn this;\n\t},\n\n\tequals: function(point) {\n\t\treturn this === point || point\n\t\t\t\t&& (this.x === point.x && this.y === point.y\n\t\t\t\t\t|| Array.isArray(point)\n\t\t\t\t\t\t&& this.x === point[0] && this.y === point[1])\n\t\t\t\t|| false;\n\t},\n\n\tclone: function() {\n\t\treturn new Point(this.x, this.y);\n\t},\n\n\ttoString: function() {\n\t\tvar f = Formatter.instance;\n\t\treturn '{ x: ' + f.number(this.x) + ', y: ' + f.number(this.y) + ' }';\n\t},\n\n\t_serialize: function(options) {\n\t\tvar f = options.formatter;\n\t\treturn [f.number(this.x), f.number(this.y)];\n\t},\n\n\tgetLength: function() {\n\t\treturn Math.sqrt(this.x * this.x + this.y * this.y);\n\t},\n\n\tsetLength: function(length) {\n\t\tif (this.isZero()) {\n\t\t\tvar angle = this._angle || 0;\n\t\t\tthis._set(\n\t\t\t\tMath.cos(angle) * length,\n\t\t\t\tMath.sin(angle) * length\n\t\t\t);\n\t\t} else {\n\t\t\tvar scale = length / this.getLength();\n\t\t\tif (Numerical.isZero(scale))\n\t\t\t\tthis.getAngle();\n\t\t\tthis._set(\n\t\t\t\tthis.x * scale,\n\t\t\t\tthis.y * scale\n\t\t\t);\n\t\t}\n\t},\n\tgetAngle: function() {\n\t\treturn this.getAngleInRadians.apply(this, arguments) * 180 / Math.PI;\n\t},\n\n\tsetAngle: function(angle) {\n\t\tthis.setAngleInRadians.call(this, angle * Math.PI / 180);\n\t},\n\n\tgetAngleInDegrees: '#getAngle',\n\tsetAngleInDegrees: '#setAngle',\n\n\tgetAngleInRadians: function() {\n\t\tif (!arguments.length) {\n\t\t\treturn this.isZero()\n\t\t\t\t\t? this._angle || 0\n\t\t\t\t\t: this._angle = Math.atan2(this.y, this.x);\n\t\t} else {\n\t\t\tvar point = Point.read(arguments),\n\t\t\t\tdiv = this.getLength() * point.getLength();\n\t\t\tif (Numerical.isZero(div)) {\n\t\t\t\treturn NaN;\n\t\t\t} else {\n\t\t\t\tvar a = this.dot(point) / div;\n\t\t\t\treturn Math.acos(a < -1 ? -1 : a > 1 ? 1 : a);\n\t\t\t}\n\t\t}\n\t},\n\n\tsetAngleInRadians: function(angle) {\n\t\tthis._angle = angle;\n\t\tif (!this.isZero()) {\n\t\t\tvar length = this.getLength();\n\t\t\tthis._set(\n\t\t\t\tMath.cos(angle) * length,\n\t\t\t\tMath.sin(angle) * length\n\t\t\t);\n\t\t}\n\t},\n\n\tgetQuadrant: function() {\n\t\treturn this.x >= 0 ? this.y >= 0 ? 1 : 4 : this.y >= 0 ? 2 : 3;\n\t}\n}, {\n\tbeans: false,\n\n\tgetDirectedAngle: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn Math.atan2(this.cross(point), this.dot(point)) * 180 / Math.PI;\n\t},\n\n\tgetDistance: function() {\n\t\tvar args = arguments,\n\t\t\tpoint = Point.read(args),\n\t\t\tx = point.x - this.x,\n\t\t\ty = point.y - this.y,\n\t\t\td = x * x + y * y,\n\t\t\tsquared = Base.read(args);\n\t\treturn squared ? d : Math.sqrt(d);\n\t},\n\n\tnormalize: function(length) {\n\t\tif (length === undefined)\n\t\t\tlength = 1;\n\t\tvar current = this.getLength(),\n\t\t\tscale = current !== 0 ? length / current : 0,\n\t\t\tpoint = new Point(this.x * scale, this.y * scale);\n\t\tif (scale >= 0)\n\t\t\tpoint._angle = this._angle;\n\t\treturn point;\n\t},\n\n\trotate: function(angle, center) {\n\t\tif (angle === 0)\n\t\t\treturn this.clone();\n\t\tangle = angle * Math.PI / 180;\n\t\tvar point = center ? this.subtract(center) : this,\n\t\t\tsin = Math.sin(angle),\n\t\t\tcos = Math.cos(angle);\n\t\tpoint = new Point(\n\t\t\tpoint.x * cos - point.y * sin,\n\t\t\tpoint.x * sin + point.y * cos\n\t\t);\n\t\treturn center ? point.add(center) : point;\n\t},\n\n\ttransform: function(matrix) {\n\t\treturn matrix ? matrix._transformPoint(this) : this;\n\t},\n\n\tadd: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn new Point(this.x + point.x, this.y + point.y);\n\t},\n\n\tsubtract: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn new Point(this.x - point.x, this.y - point.y);\n\t},\n\n\tmultiply: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn new Point(this.x * point.x, this.y * point.y);\n\t},\n\n\tdivide: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn new Point(this.x / point.x, this.y / point.y);\n\t},\n\n\tmodulo: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn new Point(this.x % point.x, this.y % point.y);\n\t},\n\n\tnegate: function() {\n\t\treturn new Point(-this.x, -this.y);\n\t},\n\n\tisInside: function() {\n\t\treturn Rectangle.read(arguments).contains(this);\n\t},\n\n\tisClose: function() {\n\t\tvar args = arguments,\n\t\t\tpoint = Point.read(args),\n\t\t\ttolerance = Base.read(args);\n\t\treturn this.getDistance(point) <= tolerance;\n\t},\n\n\tisCollinear: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn Point.isCollinear(this.x, this.y, point.x, point.y);\n\t},\n\n\tisColinear: '#isCollinear',\n\n\tisOrthogonal: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn Point.isOrthogonal(this.x, this.y, point.x, point.y);\n\t},\n\n\tisZero: function() {\n\t\tvar isZero = Numerical.isZero;\n\t\treturn isZero(this.x) && isZero(this.y);\n\t},\n\n\tisNaN: function() {\n\t\treturn isNaN(this.x) || isNaN(this.y);\n\t},\n\n\tisInQuadrant: function(q) {\n\t\treturn this.x * (q > 1 && q < 4 ? -1 : 1) >= 0\n\t\t\t&& this.y * (q > 2 ? -1 : 1) >= 0;\n\t},\n\n\tdot: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn this.x * point.x + this.y * point.y;\n\t},\n\n\tcross: function() {\n\t\tvar point = Point.read(arguments);\n\t\treturn this.x * point.y - this.y * point.x;\n\t},\n\n\tproject: function() {\n\t\tvar point = Point.read(arguments),\n\t\t\tscale = point.isZero() ? 0 : this.dot(point) / point.dot(point);\n\t\treturn new Point(\n\t\t\tpoint.x * scale,\n\t\t\tpoint.y * scale\n\t\t);\n\t},\n\n\tstatics: {\n\t\tmin: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tpoint1 = Point.read(args),\n\t\t\t\tpoint2 = Point.read(args);\n\t\t\treturn new Point(\n\t\t\t\tMath.min(point1.x, point2.x),\n\t\t\t\tMath.min(point1.y, point2.y)\n\t\t\t);\n\t\t},\n\n\t\tmax: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tpoint1 = Point.read(args),\n\t\t\t\tpoint2 = Point.read(args);\n\t\t\treturn new Point(\n\t\t\t\tMath.max(point1.x, point2.x),\n\t\t\t\tMath.max(point1.y, point2.y)\n\t\t\t);\n\t\t},\n\n\t\trandom: function() {\n\t\t\treturn new Point(Math.random(), Math.random());\n\t\t},\n\n\t\tisCollinear: function(x1, y1, x2, y2) {\n\t\t\treturn Math.abs(x1 * y2 - y1 * x2)\n\t\t\t\t\t<= Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2))\n\t\t\t\t\t\t* 1e-8;\n\t\t},\n\n\t\tisOrthogonal: function(x1, y1, x2, y2) {\n\t\t\treturn Math.abs(x1 * x2 + y1 * y2)\n\t\t\t\t\t<= Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2))\n\t\t\t\t\t\t* 1e-8;\n\t\t}\n\t}\n}, Base.each(['round', 'ceil', 'floor', 'abs'], function(key) {\n\tvar op = Math[key];\n\tthis[key] = function() {\n\t\treturn new Point(op(this.x), op(this.y));\n\t};\n}, {}));\n\nvar LinkedPoint = Point.extend({\n\tinitialize: function Point(x, y, owner, setter) {\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._owner = owner;\n\t\tthis._setter = setter;\n\t},\n\n\t_set: function(x, y, _dontNotify) {\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tif (!_dontNotify)\n\t\t\tthis._owner[this._setter](this);\n\t\treturn this;\n\t},\n\n\tgetX: function() {\n\t\treturn this._x;\n\t},\n\n\tsetX: function(x) {\n\t\tthis._x = x;\n\t\tthis._owner[this._setter](this);\n\t},\n\n\tgetY: function() {\n\t\treturn this._y;\n\t},\n\n\tsetY: function(y) {\n\t\tthis._y = y;\n\t\tthis._owner[this._setter](this);\n\t},\n\n\tisSelected: function() {\n\t\treturn !!(this._owner._selection & this._getSelection());\n\t},\n\n\tsetSelected: function(selected) {\n\t\tthis._owner._changeSelection(this._getSelection(), selected);\n\t},\n\n\t_getSelection: function() {\n\t\treturn this._setter === 'setPosition' ? 4 : 0;\n\t}\n});\n\nvar Size = Base.extend({\n\t_class: 'Size',\n\t_readIndex: true,\n\n\tinitialize: function Size(arg0, arg1) {\n\t\tvar type = typeof arg0,\n\t\t\treading = this.__read,\n\t\t\tread = 0;\n\t\tif (type === 'number') {\n\t\t\tvar hasHeight = typeof arg1 === 'number';\n\t\t\tthis._set(arg0, hasHeight ? arg1 : arg0);\n\t\t\tif (reading)\n\t\t\t\tread = hasHeight ? 2 : 1;\n\t\t} else if (type === 'undefined' || arg0 === null) {\n\t\t\tthis._set(0, 0);\n\t\t\tif (reading)\n\t\t\t\tread = arg0 === null ? 1 : 0;\n\t\t} else {\n\t\t\tvar obj = type === 'string' ? arg0.split(/[\\s,]+/) || [] : arg0;\n\t\t\tread = 1;\n\t\t\tif (Array.isArray(obj)) {\n\t\t\t\tthis._set(+obj[0], +(obj.length > 1 ? obj[1] : obj[0]));\n\t\t\t} else if ('width' in obj) {\n\t\t\t\tthis._set(obj.width || 0, obj.height || 0);\n\t\t\t} else if ('x' in obj) {\n\t\t\t\tthis._set(obj.x || 0, obj.y || 0);\n\t\t\t} else {\n\t\t\t\tthis._set(0, 0);\n\t\t\t\tread = 0;\n\t\t\t}\n\t\t}\n\t\tif (reading)\n\t\t\tthis.__read = read;\n\t\treturn this;\n\t},\n\n\tset: '#initialize',\n\n\t_set: function(width, height) {\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\treturn this;\n\t},\n\n\tequals: function(size) {\n\t\treturn size === this || size && (this.width === size.width\n\t\t\t\t&& this.height === size.height\n\t\t\t\t|| Array.isArray(size) && this.width === size[0]\n\t\t\t\t\t&& this.height === size[1]) || false;\n\t},\n\n\tclone: function() {\n\t\treturn new Size(this.width, this.height);\n\t},\n\n\ttoString: function() {\n\t\tvar f = Formatter.instance;\n\t\treturn '{ width: ' + f.number(this.width)\n\t\t\t\t+ ', height: ' + f.number(this.height) + ' }';\n\t},\n\n\t_serialize: function(options) {\n\t\tvar f = options.formatter;\n\t\treturn [f.number(this.width),\n\t\t\t\tf.number(this.height)];\n\t},\n\n\tadd: function() {\n\t\tvar size = Size.read(arguments);\n\t\treturn new Size(this.width + size.width, this.height + size.height);\n\t},\n\n\tsubtract: function() {\n\t\tvar size = Size.read(arguments);\n\t\treturn new Size(this.width - size.width, this.height - size.height);\n\t},\n\n\tmultiply: function() {\n\t\tvar size = Size.read(arguments);\n\t\treturn new Size(this.width * size.width, this.height * size.height);\n\t},\n\n\tdivide: function() {\n\t\tvar size = Size.read(arguments);\n\t\treturn new Size(this.width / size.width, this.height / size.height);\n\t},\n\n\tmodulo: function() {\n\t\tvar size = Size.read(arguments);\n\t\treturn new Size(this.width % size.width, this.height % size.height);\n\t},\n\n\tnegate: function() {\n\t\treturn new Size(-this.width, -this.height);\n\t},\n\n\tisZero: function() {\n\t\tvar isZero = Numerical.isZero;\n\t\treturn isZero(this.width) && isZero(this.height);\n\t},\n\n\tisNaN: function() {\n\t\treturn isNaN(this.width) || isNaN(this.height);\n\t},\n\n\tstatics: {\n\t\tmin: function(size1, size2) {\n\t\t\treturn new Size(\n\t\t\t\tMath.min(size1.width, size2.width),\n\t\t\t\tMath.min(size1.height, size2.height));\n\t\t},\n\n\t\tmax: function(size1, size2) {\n\t\t\treturn new Size(\n\t\t\t\tMath.max(size1.width, size2.width),\n\t\t\t\tMath.max(size1.height, size2.height));\n\t\t},\n\n\t\trandom: function() {\n\t\t\treturn new Size(Math.random(), Math.random());\n\t\t}\n\t}\n}, Base.each(['round', 'ceil', 'floor', 'abs'], function(key) {\n\tvar op = Math[key];\n\tthis[key] = function() {\n\t\treturn new Size(op(this.width), op(this.height));\n\t};\n}, {}));\n\nvar LinkedSize = Size.extend({\n\tinitialize: function Size(width, height, owner, setter) {\n\t\tthis._width = width;\n\t\tthis._height = height;\n\t\tthis._owner = owner;\n\t\tthis._setter = setter;\n\t},\n\n\t_set: function(width, height, _dontNotify) {\n\t\tthis._width = width;\n\t\tthis._height = height;\n\t\tif (!_dontNotify)\n\t\t\tthis._owner[this._setter](this);\n\t\treturn this;\n\t},\n\n\tgetWidth: function() {\n\t\treturn this._width;\n\t},\n\n\tsetWidth: function(width) {\n\t\tthis._width = width;\n\t\tthis._owner[this._setter](this);\n\t},\n\n\tgetHeight: function() {\n\t\treturn this._height;\n\t},\n\n\tsetHeight: function(height) {\n\t\tthis._height = height;\n\t\tthis._owner[this._setter](this);\n\t}\n});\n\nvar Rectangle = Base.extend({\n\t_class: 'Rectangle',\n\t_readIndex: true,\n\tbeans: true,\n\n\tinitialize: function Rectangle(arg0, arg1, arg2, arg3) {\n\t\tvar args = arguments,\n\t\t\ttype = typeof arg0,\n\t\t\tread;\n\t\tif (type === 'number') {\n\t\t\tthis._set(arg0, arg1, arg2, arg3);\n\t\t\tread = 4;\n\t\t} else if (type === 'undefined' || arg0 === null) {\n\t\t\tthis._set(0, 0, 0, 0);\n\t\t\tread = arg0 === null ? 1 : 0;\n\t\t} else if (args.length === 1) {\n\t\t\tif (Array.isArray(arg0)) {\n\t\t\t\tthis._set.apply(this, arg0);\n\t\t\t\tread = 1;\n\t\t\t} else if (arg0.x !== undefined || arg0.width !== undefined) {\n\t\t\t\tthis._set(arg0.x || 0, arg0.y || 0,\n\t\t\t\t\t\targ0.width || 0, arg0.height || 0);\n\t\t\t\tread = 1;\n\t\t\t} else if (arg0.from === undefined && arg0.to === undefined) {\n\t\t\t\tthis._set(0, 0, 0, 0);\n\t\t\t\tif (Base.readSupported(args, this)) {\n\t\t\t\t\tread = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (read === undefined) {\n\t\t\tvar frm = Point.readNamed(args, 'from'),\n\t\t\t\tnext = Base.peek(args),\n\t\t\t\tx = frm.x,\n\t\t\t\ty = frm.y,\n\t\t\t\twidth,\n\t\t\t\theight;\n\t\t\tif (next && next.x !== undefined || Base.hasNamed(args, 'to')) {\n\t\t\t\tvar to = Point.readNamed(args, 'to');\n\t\t\t\twidth = to.x - x;\n\t\t\t\theight = to.y - y;\n\t\t\t\tif (width < 0) {\n\t\t\t\t\tx = to.x;\n\t\t\t\t\twidth = -width;\n\t\t\t\t}\n\t\t\t\tif (height < 0) {\n\t\t\t\t\ty = to.y;\n\t\t\t\t\theight = -height;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar size = Size.read(args);\n\t\t\t\twidth = size.width;\n\t\t\t\theight = size.height;\n\t\t\t}\n\t\t\tthis._set(x, y, width, height);\n\t\t\tread = args.__index;\n\t\t}\n\t\tvar filtered = args.__filtered;\n\t\tif (filtered)\n\t\t\tthis.__filtered = filtered;\n\t\tif (this.__read)\n\t\t\tthis.__read = read;\n\t\treturn this;\n\t},\n\n\tset: '#initialize',\n\n\t_set: function(x, y, width, height) {\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\treturn this;\n\t},\n\n\tclone: function() {\n\t\treturn new Rectangle(this.x, this.y, this.width, this.height);\n\t},\n\n\tequals: function(rect) {\n\t\tvar rt = Base.isPlainValue(rect)\n\t\t\t\t? Rectangle.read(arguments)\n\t\t\t\t: rect;\n\t\treturn rt === this\n\t\t\t\t|| rt && this.x === rt.x && this.y === rt.y\n\t\t\t\t\t&& this.width === rt.width && this.height === rt.height\n\t\t\t\t|| false;\n\t},\n\n\ttoString: function() {\n\t\tvar f = Formatter.instance;\n\t\treturn '{ x: ' + f.number(this.x)\n\t\t\t\t+ ', y: ' + f.number(this.y)\n\t\t\t\t+ ', width: ' + f.number(this.width)\n\t\t\t\t+ ', height: ' + f.number(this.height)\n\t\t\t\t+ ' }';\n\t},\n\n\t_serialize: function(options) {\n\t\tvar f = options.formatter;\n\t\treturn [f.number(this.x),\n\t\t\t\tf.number(this.y),\n\t\t\t\tf.number(this.width),\n\t\t\t\tf.number(this.height)];\n\t},\n\n\tgetPoint: function(_dontLink) {\n\t\tvar ctor = _dontLink ? Point : LinkedPoint;\n\t\treturn new ctor(this.x, this.y, this, 'setPoint');\n\t},\n\n\tsetPoint: function() {\n\t\tvar point = Point.read(arguments);\n\t\tthis.x = point.x;\n\t\tthis.y = point.y;\n\t},\n\n\tgetSize: function(_dontLink) {\n\t\tvar ctor = _dontLink ? Size : LinkedSize;\n\t\treturn new ctor(this.width, this.height, this, 'setSize');\n\t},\n\n\t_fw: 1,\n\t_fh: 1,\n\n\tsetSize: function() {\n\t\tvar size = Size.read(arguments),\n\t\t\tsx = this._sx,\n\t\t\tsy = this._sy,\n\t\t\tw = size.width,\n\t\t\th = size.height;\n\t\tif (sx) {\n\t\t\tthis.x += (this.width - w) * sx;\n\t\t}\n\t\tif (sy) {\n\t\t\tthis.y += (this.height - h) * sy;\n\t\t}\n\t\tthis.width = w;\n\t\tthis.height = h;\n\t\tthis._fw = this._fh = 1;\n\t},\n\n\tgetLeft: function() {\n\t\treturn this.x;\n\t},\n\n\tsetLeft: function(left) {\n\t\tif (!this._fw) {\n\t\t\tvar amount = left - this.x;\n\t\t\tthis.width -= this._sx === 0.5 ? amount * 2 : amount;\n\t\t}\n\t\tthis.x = left;\n\t\tthis._sx = this._fw = 0;\n\t},\n\n\tgetTop: function() {\n\t\treturn this.y;\n\t},\n\n\tsetTop: function(top) {\n\t\tif (!this._fh) {\n\t\t\tvar amount = top - this.y;\n\t\t\tthis.height -= this._sy === 0.5 ? amount * 2 : amount;\n\t\t}\n\t\tthis.y = top;\n\t\tthis._sy = this._fh = 0;\n\t},\n\n\tgetRight: function() {\n\t\treturn this.x + this.width;\n\t},\n\n\tsetRight: function(right) {\n\t\tif (!this._fw) {\n\t\t\tvar amount = right - this.x;\n\t\t\tthis.width = this._sx === 0.5 ? amount * 2 : amount;\n\t\t}\n\t\tthis.x = right - this.width;\n\t\tthis._sx = 1;\n\t\tthis._fw = 0;\n\t},\n\n\tgetBottom: function() {\n\t\treturn this.y + this.height;\n\t},\n\n\tsetBottom: function(bottom) {\n\t\tif (!this._fh) {\n\t\t\tvar amount = bottom - this.y;\n\t\t\tthis.height = this._sy === 0.5 ? amount * 2 : amount;\n\t\t}\n\t\tthis.y = bottom - this.height;\n\t\tthis._sy = 1;\n\t\tthis._fh = 0;\n\t},\n\n\tgetCenterX: function() {\n\t\treturn this.x + this.width / 2;\n\t},\n\n\tsetCenterX: function(x) {\n\t\tif (this._fw || this._sx === 0.5) {\n\t\t\tthis.x = x - this.width / 2;\n\t\t} else {\n\t\t\tif (this._sx) {\n\t\t\t\tthis.x += (x - this.x) * 2 * this._sx;\n\t\t\t}\n\t\t\tthis.width = (x - this.x) * 2;\n\t\t}\n\t\tthis._sx = 0.5;\n\t\tthis._fw = 0;\n\t},\n\n\tgetCenterY: function() {\n\t\treturn this.y + this.height / 2;\n\t},\n\n\tsetCenterY: function(y) {\n\t\tif (this._fh || this._sy === 0.5) {\n\t\t\tthis.y = y - this.height / 2;\n\t\t} else {\n\t\t\tif (this._sy) {\n\t\t\t\tthis.y += (y - this.y) * 2 * this._sy;\n\t\t\t}\n\t\t\tthis.height = (y - this.y) * 2;\n\t\t}\n\t\tthis._sy = 0.5;\n\t\tthis._fh = 0;\n\t},\n\n\tgetCenter: function(_dontLink) {\n\t\tvar ctor = _dontLink ? Point : LinkedPoint;\n\t\treturn new ctor(this.getCenterX(), this.getCenterY(), this, 'setCenter');\n\t},\n\n\tsetCenter: function() {\n\t\tvar point = Point.read(arguments);\n\t\tthis.setCenterX(point.x);\n\t\tthis.setCenterY(point.y);\n\t\treturn this;\n\t},\n\n\tgetArea: function() {\n\t\treturn this.width * this.height;\n\t},\n\n\tisEmpty: function() {\n\t\treturn this.width === 0 || this.height === 0;\n\t},\n\n\tcontains: function(arg) {\n\t\treturn arg && arg.width !== undefined\n\t\t\t\t|| (Array.isArray(arg) ? arg : arguments).length === 4\n\t\t\t\t? this._containsRectangle(Rectangle.read(arguments))\n\t\t\t\t: this._containsPoint(Point.read(arguments));\n\t},\n\n\t_containsPoint: function(point) {\n\t\tvar x = point.x,\n\t\t\ty = point.y;\n\t\treturn x >= this.x && y >= this.y\n\t\t\t\t&& x <= this.x + this.width\n\t\t\t\t&& y <= this.y + this.height;\n\t},\n\n\t_containsRectangle: function(rect) {\n\t\tvar x = rect.x,\n\t\t\ty = rect.y;\n\t\treturn x >= this.x && y >= this.y\n\t\t\t\t&& x + rect.width <= this.x + this.width\n\t\t\t\t&& y + rect.height <= this.y + this.height;\n\t},\n\n\tintersects: function() {\n\t\tvar rect = Rectangle.read(arguments),\n\t\t\tepsilon = Base.read(arguments) || 0;\n\t\treturn rect.x + rect.width > this.x - epsilon\n\t\t\t\t&& rect.y + rect.height > this.y - epsilon\n\t\t\t\t&& rect.x < this.x + this.width + epsilon\n\t\t\t\t&& rect.y < this.y + this.height + epsilon;\n\t},\n\n\tintersect: function() {\n\t\tvar rect = Rectangle.read(arguments),\n\t\t\tx1 = Math.max(this.x, rect.x),\n\t\t\ty1 = Math.max(this.y, rect.y),\n\t\t\tx2 = Math.min(this.x + this.width, rect.x + rect.width),\n\t\t\ty2 = Math.min(this.y + this.height, rect.y + rect.height);\n\t\treturn new Rectangle(x1, y1, x2 - x1, y2 - y1);\n\t},\n\n\tunite: function() {\n\t\tvar rect = Rectangle.read(arguments),\n\t\t\tx1 = Math.min(this.x, rect.x),\n\t\t\ty1 = Math.min(this.y, rect.y),\n\t\t\tx2 = Math.max(this.x + this.width, rect.x + rect.width),\n\t\t\ty2 = Math.max(this.y + this.height, rect.y + rect.height);\n\t\treturn new Rectangle(x1, y1, x2 - x1, y2 - y1);\n\t},\n\n\tinclude: function() {\n\t\tvar point = Point.read(arguments);\n\t\tvar x1 = Math.min(this.x, point.x),\n\t\t\ty1 = Math.min(this.y, point.y),\n\t\t\tx2 = Math.max(this.x + this.width, point.x),\n\t\t\ty2 = Math.max(this.y + this.height, point.y);\n\t\treturn new Rectangle(x1, y1, x2 - x1, y2 - y1);\n\t},\n\n\texpand: function() {\n\t\tvar amount = Size.read(arguments),\n\t\t\thor = amount.width,\n\t\t\tver = amount.height;\n\t\treturn new Rectangle(this.x - hor / 2, this.y - ver / 2,\n\t\t\t\tthis.width + hor, this.height + ver);\n\t},\n\n\tscale: function(hor, ver) {\n\t\treturn this.expand(this.width * hor - this.width,\n\t\t\t\tthis.height * (ver === undefined ? hor : ver) - this.height);\n\t}\n}, Base.each([\n\t\t['Top', 'Left'], ['Top', 'Right'],\n\t\t['Bottom', 'Left'], ['Bottom', 'Right'],\n\t\t['Left', 'Center'], ['Top', 'Center'],\n\t\t['Right', 'Center'], ['Bottom', 'Center']\n\t],\n\tfunction(parts, index) {\n\t\tvar part = parts.join(''),\n\t\t\txFirst = /^[RL]/.test(part);\n\t\tif (index >= 4)\n\t\t\tparts[1] += xFirst ? 'Y' : 'X';\n\t\tvar x = parts[xFirst ? 0 : 1],\n\t\t\ty = parts[xFirst ? 1 : 0],\n\t\t\tgetX = 'get' + x,\n\t\t\tgetY = 'get' + y,\n\t\t\tsetX = 'set' + x,\n\t\t\tsetY = 'set' + y,\n\t\t\tget = 'get' + part,\n\t\t\tset = 'set' + part;\n\t\tthis[get] = function(_dontLink) {\n\t\t\tvar ctor = _dontLink ? Point : LinkedPoint;\n\t\t\treturn new ctor(this[getX](), this[getY](), this, set);\n\t\t};\n\t\tthis[set] = function() {\n\t\t\tvar point = Point.read(arguments);\n\t\t\tthis[setX](point.x);\n\t\t\tthis[setY](point.y);\n\t\t};\n\t}, {\n\t\tbeans: true\n\t}\n));\n\nvar LinkedRectangle = Rectangle.extend({\n\tinitialize: function Rectangle(x, y, width, height, owner, setter) {\n\t\tthis._set(x, y, width, height, true);\n\t\tthis._owner = owner;\n\t\tthis._setter = setter;\n\t},\n\n\t_set: function(x, y, width, height, _dontNotify) {\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._width = width;\n\t\tthis._height = height;\n\t\tif (!_dontNotify)\n\t\t\tthis._owner[this._setter](this);\n\t\treturn this;\n\t}\n},\nnew function() {\n\tvar proto = Rectangle.prototype;\n\n\treturn Base.each(['x', 'y', 'width', 'height'], function(key) {\n\t\tvar part = Base.capitalize(key),\n\t\t\tinternal = '_' + key;\n\t\tthis['get' + part] = function() {\n\t\t\treturn this[internal];\n\t\t};\n\n\t\tthis['set' + part] = function(value) {\n\t\t\tthis[internal] = value;\n\t\t\tif (!this._dontNotify)\n\t\t\t\tthis._owner[this._setter](this);\n\t\t};\n\t}, Base.each(['Point', 'Size', 'Center',\n\t\t\t'Left', 'Top', 'Right', 'Bottom', 'CenterX', 'CenterY',\n\t\t\t'TopLeft', 'TopRight', 'BottomLeft', 'BottomRight',\n\t\t\t'LeftCenter', 'TopCenter', 'RightCenter', 'BottomCenter'],\n\t\tfunction(key) {\n\t\t\tvar name = 'set' + key;\n\t\t\tthis[name] = function() {\n\t\t\t\tthis._dontNotify = true;\n\t\t\t\tproto[name].apply(this, arguments);\n\t\t\t\tthis._dontNotify = false;\n\t\t\t\tthis._owner[this._setter](this);\n\t\t\t};\n\t\t}, {\n\t\t\tisSelected: function() {\n\t\t\t\treturn !!(this._owner._selection & 2);\n\t\t\t},\n\n\t\t\tsetSelected: function(selected) {\n\t\t\t\tvar owner = this._owner;\n\t\t\t\tif (owner._changeSelection) {\n\t\t\t\t\towner._changeSelection(2, selected);\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t);\n});\n\nvar Matrix = Base.extend({\n\t_class: 'Matrix',\n\n\tinitialize: function Matrix(arg, _dontNotify) {\n\t\tvar args = arguments,\n\t\t\tcount = args.length,\n\t\t\tok = true;\n\t\tif (count >= 6) {\n\t\t\tthis._set.apply(this, args);\n\t\t} else if (count === 1 || count === 2) {\n\t\t\tif (arg instanceof Matrix) {\n\t\t\t\tthis._set(arg._a, arg._b, arg._c, arg._d, arg._tx, arg._ty,\n\t\t\t\t\t\t_dontNotify);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tthis._set.apply(this,\n\t\t\t\t\t\t_dontNotify ? arg.concat([_dontNotify]) : arg);\n\t\t\t} else {\n\t\t\t\tok = false;\n\t\t\t}\n\t\t} else if (!count) {\n\t\t\tthis.reset();\n\t\t} else {\n\t\t\tok = false;\n\t\t}\n\t\tif (!ok) {\n\t\t\tthrow new Error('Unsupported matrix parameters');\n\t\t}\n\t\treturn this;\n\t},\n\n\tset: '#initialize',\n\n\t_set: function(a, b, c, d, tx, ty, _dontNotify) {\n\t\tthis._a = a;\n\t\tthis._b = b;\n\t\tthis._c = c;\n\t\tthis._d = d;\n\t\tthis._tx = tx;\n\t\tthis._ty = ty;\n\t\tif (!_dontNotify)\n\t\t\tthis._changed();\n\t\treturn this;\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\treturn Base.serialize(this.getValues(), options, true, dictionary);\n\t},\n\n\t_changed: function() {\n\t\tvar owner = this._owner;\n\t\tif (owner) {\n\t\t\tif (owner._applyMatrix) {\n\t\t\t\towner.transform(null, true);\n\t\t\t} else {\n\t\t\t\towner._changed(25);\n\t\t\t}\n\t\t}\n\t},\n\n\tclone: function() {\n\t\treturn new Matrix(this._a, this._b, this._c, this._d,\n\t\t\t\tthis._tx, this._ty);\n\t},\n\n\tequals: function(mx) {\n\t\treturn mx === this || mx && this._a === mx._a && this._b === mx._b\n\t\t\t\t&& this._c === mx._c && this._d === mx._d\n\t\t\t\t&& this._tx === mx._tx && this._ty === mx._ty;\n\t},\n\n\ttoString: function() {\n\t\tvar f = Formatter.instance;\n\t\treturn '[[' + [f.number(this._a), f.number(this._c),\n\t\t\t\t\tf.number(this._tx)].join(', ') + '], ['\n\t\t\t\t+ [f.number(this._b), f.number(this._d),\n\t\t\t\t\tf.number(this._ty)].join(', ') + ']]';\n\t},\n\n\treset: function(_dontNotify) {\n\t\tthis._a = this._d = 1;\n\t\tthis._b = this._c = this._tx = this._ty = 0;\n\t\tif (!_dontNotify)\n\t\t\tthis._changed();\n\t\treturn this;\n\t},\n\n\tapply: function(recursively, _setApplyMatrix) {\n\t\tvar owner = this._owner;\n\t\tif (owner) {\n\t\t\towner.transform(null, Base.pick(recursively, true), _setApplyMatrix);\n\t\t\treturn this.isIdentity();\n\t\t}\n\t\treturn false;\n\t},\n\n\ttranslate: function() {\n\t\tvar point = Point.read(arguments),\n\t\t\tx = point.x,\n\t\t\ty = point.y;\n\t\tthis._tx += x * this._a + y * this._c;\n\t\tthis._ty += x * this._b + y * this._d;\n\t\tthis._changed();\n\t\treturn this;\n\t},\n\n\tscale: function() {\n\t\tvar args = arguments,\n\t\t\tscale = Point.read(args),\n\t\t\tcenter = Point.read(args, 0, { readNull: true });\n\t\tif (center)\n\t\t\tthis.translate(center);\n\t\tthis._a *= scale.x;\n\t\tthis._b *= scale.x;\n\t\tthis._c *= scale.y;\n\t\tthis._d *= scale.y;\n\t\tif (center)\n\t\t\tthis.translate(center.negate());\n\t\tthis._changed();\n\t\treturn this;\n\t},\n\n\trotate: function(angle ) {\n\t\tangle *= Math.PI / 180;\n\t\tvar center = Point.read(arguments, 1),\n\t\t\tx = center.x,\n\t\t\ty = center.y,\n\t\t\tcos = Math.cos(angle),\n\t\t\tsin = Math.sin(angle),\n\t\t\ttx = x - x * cos + y * sin,\n\t\t\tty = y - x * sin - y * cos,\n\t\t\ta = this._a,\n\t\t\tb = this._b,\n\t\t\tc = this._c,\n\t\t\td = this._d;\n\t\tthis._a = cos * a + sin * c;\n\t\tthis._b = cos * b + sin * d;\n\t\tthis._c = -sin * a + cos * c;\n\t\tthis._d = -sin * b + cos * d;\n\t\tthis._tx += tx * a + ty * c;\n\t\tthis._ty += tx * b + ty * d;\n\t\tthis._changed();\n\t\treturn this;\n\t},\n\n\tshear: function() {\n\t\tvar args = arguments,\n\t\t\tshear = Point.read(args),\n\t\t\tcenter = Point.read(args, 0, { readNull: true });\n\t\tif (center)\n\t\t\tthis.translate(center);\n\t\tvar a = this._a,\n\t\t\tb = this._b;\n\t\tthis._a += shear.y * this._c;\n\t\tthis._b += shear.y * this._d;\n\t\tthis._c += shear.x * a;\n\t\tthis._d += shear.x * b;\n\t\tif (center)\n\t\t\tthis.translate(center.negate());\n\t\tthis._changed();\n\t\treturn this;\n\t},\n\n\tskew: function() {\n\t\tvar args = arguments,\n\t\t\tskew = Point.read(args),\n\t\t\tcenter = Point.read(args, 0, { readNull: true }),\n\t\t\ttoRadians = Math.PI / 180,\n\t\t\tshear = new Point(Math.tan(skew.x * toRadians),\n\t\t\t\tMath.tan(skew.y * toRadians));\n\t\treturn this.shear(shear, center);\n\t},\n\n\tappend: function(mx, _dontNotify) {\n\t\tif (mx) {\n\t\t\tvar a1 = this._a,\n\t\t\t\tb1 = this._b,\n\t\t\t\tc1 = this._c,\n\t\t\t\td1 = this._d,\n\t\t\t\ta2 = mx._a,\n\t\t\t\tb2 = mx._c,\n\t\t\t\tc2 = mx._b,\n\t\t\t\td2 = mx._d,\n\t\t\t\ttx2 = mx._tx,\n\t\t\t\tty2 = mx._ty;\n\t\t\tthis._a = a2 * a1 + c2 * c1;\n\t\t\tthis._c = b2 * a1 + d2 * c1;\n\t\t\tthis._b = a2 * b1 + c2 * d1;\n\t\t\tthis._d = b2 * b1 + d2 * d1;\n\t\t\tthis._tx += tx2 * a1 + ty2 * c1;\n\t\t\tthis._ty += tx2 * b1 + ty2 * d1;\n\t\t\tif (!_dontNotify)\n\t\t\t\tthis._changed();\n\t\t}\n\t\treturn this;\n\t},\n\n\tprepend: function(mx, _dontNotify) {\n\t\tif (mx) {\n\t\t\tvar a1 = this._a,\n\t\t\t\tb1 = this._b,\n\t\t\t\tc1 = this._c,\n\t\t\t\td1 = this._d,\n\t\t\t\ttx1 = this._tx,\n\t\t\t\tty1 = this._ty,\n\t\t\t\ta2 = mx._a,\n\t\t\t\tb2 = mx._c,\n\t\t\t\tc2 = mx._b,\n\t\t\t\td2 = mx._d,\n\t\t\t\ttx2 = mx._tx,\n\t\t\t\tty2 = mx._ty;\n\t\t\tthis._a = a2 * a1 + b2 * b1;\n\t\t\tthis._c = a2 * c1 + b2 * d1;\n\t\t\tthis._b = c2 * a1 + d2 * b1;\n\t\t\tthis._d = c2 * c1 + d2 * d1;\n\t\t\tthis._tx = a2 * tx1 + b2 * ty1 + tx2;\n\t\t\tthis._ty = c2 * tx1 + d2 * ty1 + ty2;\n\t\t\tif (!_dontNotify)\n\t\t\t\tthis._changed();\n\t\t}\n\t\treturn this;\n\t},\n\n\tappended: function(mx) {\n\t\treturn this.clone().append(mx);\n\t},\n\n\tprepended: function(mx) {\n\t\treturn this.clone().prepend(mx);\n\t},\n\n\tinvert: function() {\n\t\tvar a = this._a,\n\t\t\tb = this._b,\n\t\t\tc = this._c,\n\t\t\td = this._d,\n\t\t\ttx = this._tx,\n\t\t\tty = this._ty,\n\t\t\tdet = a * d - b * c,\n\t\t\tres = null;\n\t\tif (det && !isNaN(det) && isFinite(tx) && isFinite(ty)) {\n\t\t\tthis._a = d / det;\n\t\t\tthis._b = -b / det;\n\t\t\tthis._c = -c / det;\n\t\t\tthis._d = a / det;\n\t\t\tthis._tx = (c * ty - d * tx) / det;\n\t\t\tthis._ty = (b * tx - a * ty) / det;\n\t\t\tres = this;\n\t\t}\n\t\treturn res;\n\t},\n\n\tinverted: function() {\n\t\treturn this.clone().invert();\n\t},\n\n\tconcatenate: '#append',\n\tpreConcatenate: '#prepend',\n\tchain: '#appended',\n\n\t_shiftless: function() {\n\t\treturn new Matrix(this._a, this._b, this._c, this._d, 0, 0);\n\t},\n\n\t_orNullIfIdentity: function() {\n\t\treturn this.isIdentity() ? null : this;\n\t},\n\n\tisIdentity: function() {\n\t\treturn this._a === 1 && this._b === 0 && this._c === 0 && this._d === 1\n\t\t\t\t&& this._tx === 0 && this._ty === 0;\n\t},\n\n\tisInvertible: function() {\n\t\tvar det = this._a * this._d - this._c * this._b;\n\t\treturn det && !isNaN(det) && isFinite(this._tx) && isFinite(this._ty);\n\t},\n\n\tisSingular: function() {\n\t\treturn !this.isInvertible();\n\t},\n\n\ttransform: function( src, dst, count) {\n\t\treturn arguments.length < 3\n\t\t\t? this._transformPoint(Point.read(arguments))\n\t\t\t: this._transformCoordinates(src, dst, count);\n\t},\n\n\t_transformPoint: function(point, dest, _dontNotify) {\n\t\tvar x = point.x,\n\t\t\ty = point.y;\n\t\tif (!dest)\n\t\t\tdest = new Point();\n\t\treturn dest._set(\n\t\t\t\tx * this._a + y * this._c + this._tx,\n\t\t\t\tx * this._b + y * this._d + this._ty,\n\t\t\t\t_dontNotify);\n\t},\n\n\t_transformCoordinates: function(src, dst, count) {\n\t\tfor (var i = 0, max = 2 * count; i < max; i += 2) {\n\t\t\tvar x = src[i],\n\t\t\t\ty = src[i + 1];\n\t\t\tdst[i] = x * this._a + y * this._c + this._tx;\n\t\t\tdst[i + 1] = x * this._b + y * this._d + this._ty;\n\t\t}\n\t\treturn dst;\n\t},\n\n\t_transformCorners: function(rect) {\n\t\tvar x1 = rect.x,\n\t\t\ty1 = rect.y,\n\t\t\tx2 = x1 + rect.width,\n\t\t\ty2 = y1 + rect.height,\n\t\t\tcoords = [ x1, y1, x2, y1, x2, y2, x1, y2 ];\n\t\treturn this._transformCoordinates(coords, coords, 4);\n\t},\n\n\t_transformBounds: function(bounds, dest, _dontNotify) {\n\t\tvar coords = this._transformCorners(bounds),\n\t\t\tmin = coords.slice(0, 2),\n\t\t\tmax = min.slice();\n\t\tfor (var i = 2; i < 8; i++) {\n\t\t\tvar val = coords[i],\n\t\t\t\tj = i & 1;\n\t\t\tif (val < min[j]) {\n\t\t\t\tmin[j] = val;\n\t\t\t} else if (val > max[j]) {\n\t\t\t\tmax[j] = val;\n\t\t\t}\n\t\t}\n\t\tif (!dest)\n\t\t\tdest = new Rectangle();\n\t\treturn dest._set(min[0], min[1], max[0] - min[0], max[1] - min[1],\n\t\t\t\t_dontNotify);\n\t},\n\n\tinverseTransform: function() {\n\t\treturn this._inverseTransform(Point.read(arguments));\n\t},\n\n\t_inverseTransform: function(point, dest, _dontNotify) {\n\t\tvar a = this._a,\n\t\t\tb = this._b,\n\t\t\tc = this._c,\n\t\t\td = this._d,\n\t\t\ttx = this._tx,\n\t\t\tty = this._ty,\n\t\t\tdet = a * d - b * c,\n\t\t\tres = null;\n\t\tif (det && !isNaN(det) && isFinite(tx) && isFinite(ty)) {\n\t\t\tvar x = point.x - this._tx,\n\t\t\t\ty = point.y - this._ty;\n\t\t\tif (!dest)\n\t\t\t\tdest = new Point();\n\t\t\tres = dest._set(\n\t\t\t\t\t(x * d - y * c) / det,\n\t\t\t\t\t(y * a - x * b) / det,\n\t\t\t\t\t_dontNotify);\n\t\t}\n\t\treturn res;\n\t},\n\n\tdecompose: function() {\n\t\tvar a = this._a,\n\t\t\tb = this._b,\n\t\t\tc = this._c,\n\t\t\td = this._d,\n\t\t\tdet = a * d - b * c,\n\t\t\tsqrt = Math.sqrt,\n\t\t\tatan2 = Math.atan2,\n\t\t\tdegrees = 180 / Math.PI,\n\t\t\trotate,\n\t\t\tscale,\n\t\t\tskew;\n\t\tif (a !== 0 || b !== 0) {\n\t\t\tvar r = sqrt(a * a + b * b);\n\t\t\trotate = Math.acos(a / r) * (b > 0 ? 1 : -1);\n\t\t\tscale = [r, det / r];\n\t\t\tskew = [atan2(a * c + b * d, r * r), 0];\n\t\t} else if (c !== 0 || d !== 0) {\n\t\t\tvar s = sqrt(c * c + d * d);\n\t\t\trotate = Math.asin(c / s)  * (d > 0 ? 1 : -1);\n\t\t\tscale = [det / s, s];\n\t\t\tskew = [0, atan2(a * c + b * d, s * s)];\n\t\t} else {\n\t\t\trotate = 0;\n\t\t\tskew = scale = [0, 0];\n\t\t}\n\t\treturn {\n\t\t\ttranslation: this.getTranslation(),\n\t\t\trotation: rotate * degrees,\n\t\t\tscaling: new Point(scale),\n\t\t\tskewing: new Point(skew[0] * degrees, skew[1] * degrees)\n\t\t};\n\t},\n\n\tgetValues: function() {\n\t\treturn [ this._a, this._b, this._c, this._d, this._tx, this._ty ];\n\t},\n\n\tgetTranslation: function() {\n\t\treturn new Point(this._tx, this._ty);\n\t},\n\n\tgetScaling: function() {\n\t\treturn this.decompose().scaling;\n\t},\n\n\tgetRotation: function() {\n\t\treturn this.decompose().rotation;\n\t},\n\n\tapplyToContext: function(ctx) {\n\t\tif (!this.isIdentity()) {\n\t\t\tctx.transform(this._a, this._b, this._c, this._d,\n\t\t\t\t\tthis._tx, this._ty);\n\t\t}\n\t}\n}, Base.each(['a', 'b', 'c', 'd', 'tx', 'ty'], function(key) {\n\tvar part = Base.capitalize(key),\n\t\tprop = '_' + key;\n\tthis['get' + part] = function() {\n\t\treturn this[prop];\n\t};\n\tthis['set' + part] = function(value) {\n\t\tthis[prop] = value;\n\t\tthis._changed();\n\t};\n}, {}));\n\nvar Line = Base.extend({\n\t_class: 'Line',\n\n\tinitialize: function Line(arg0, arg1, arg2, arg3, arg4) {\n\t\tvar asVector = false;\n\t\tif (arguments.length >= 4) {\n\t\t\tthis._px = arg0;\n\t\t\tthis._py = arg1;\n\t\t\tthis._vx = arg2;\n\t\t\tthis._vy = arg3;\n\t\t\tasVector = arg4;\n\t\t} else {\n\t\t\tthis._px = arg0.x;\n\t\t\tthis._py = arg0.y;\n\t\t\tthis._vx = arg1.x;\n\t\t\tthis._vy = arg1.y;\n\t\t\tasVector = arg2;\n\t\t}\n\t\tif (!asVector) {\n\t\t\tthis._vx -= this._px;\n\t\t\tthis._vy -= this._py;\n\t\t}\n\t},\n\n\tgetPoint: function() {\n\t\treturn new Point(this._px, this._py);\n\t},\n\n\tgetVector: function() {\n\t\treturn new Point(this._vx, this._vy);\n\t},\n\n\tgetLength: function() {\n\t\treturn this.getVector().getLength();\n\t},\n\n\tintersect: function(line, isInfinite) {\n\t\treturn Line.intersect(\n\t\t\t\tthis._px, this._py, this._vx, this._vy,\n\t\t\t\tline._px, line._py, line._vx, line._vy,\n\t\t\t\ttrue, isInfinite);\n\t},\n\n\tgetSide: function(point, isInfinite) {\n\t\treturn Line.getSide(\n\t\t\t\tthis._px, this._py, this._vx, this._vy,\n\t\t\t\tpoint.x, point.y, true, isInfinite);\n\t},\n\n\tgetDistance: function(point) {\n\t\treturn Math.abs(this.getSignedDistance(point));\n\t},\n\n\tgetSignedDistance: function(point) {\n\t\treturn Line.getSignedDistance(this._px, this._py, this._vx, this._vy,\n\t\t\t\tpoint.x, point.y, true);\n\t},\n\n\tisCollinear: function(line) {\n\t\treturn Point.isCollinear(this._vx, this._vy, line._vx, line._vy);\n\t},\n\n\tisOrthogonal: function(line) {\n\t\treturn Point.isOrthogonal(this._vx, this._vy, line._vx, line._vy);\n\t},\n\n\tstatics: {\n\t\tintersect: function(p1x, p1y, v1x, v1y, p2x, p2y, v2x, v2y, asVector,\n\t\t\t\tisInfinite) {\n\t\t\tif (!asVector) {\n\t\t\t\tv1x -= p1x;\n\t\t\t\tv1y -= p1y;\n\t\t\t\tv2x -= p2x;\n\t\t\t\tv2y -= p2y;\n\t\t\t}\n\t\t\tvar cross = v1x * v2y - v1y * v2x;\n\t\t\tif (!Numerical.isMachineZero(cross)) {\n\t\t\t\tvar dx = p1x - p2x,\n\t\t\t\t\tdy = p1y - p2y,\n\t\t\t\t\tu1 = (v2x * dy - v2y * dx) / cross,\n\t\t\t\t\tu2 = (v1x * dy - v1y * dx) / cross,\n\t\t\t\t\tepsilon = 1e-12,\n\t\t\t\t\tuMin = -epsilon,\n\t\t\t\t\tuMax = 1 + epsilon;\n\t\t\t\tif (isInfinite\n\t\t\t\t\t\t|| uMin < u1 && u1 < uMax && uMin < u2 && u2 < uMax) {\n\t\t\t\t\tif (!isInfinite) {\n\t\t\t\t\t\tu1 = u1 <= 0 ? 0 : u1 >= 1 ? 1 : u1;\n\t\t\t\t\t}\n\t\t\t\t\treturn new Point(\n\t\t\t\t\t\t\tp1x + u1 * v1x,\n\t\t\t\t\t\t\tp1y + u1 * v1y);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tgetSide: function(px, py, vx, vy, x, y, asVector, isInfinite) {\n\t\t\tif (!asVector) {\n\t\t\t\tvx -= px;\n\t\t\t\tvy -= py;\n\t\t\t}\n\t\t\tvar v2x = x - px,\n\t\t\t\tv2y = y - py,\n\t\t\t\tccw = v2x * vy - v2y * vx;\n\t\t\tif (!isInfinite && Numerical.isMachineZero(ccw)) {\n\t\t\t\tccw = (v2x * vx + v2x * vx) / (vx * vx + vy * vy);\n\t\t\t\tif (ccw >= 0 && ccw <= 1)\n\t\t\t\t\tccw = 0;\n\t\t\t}\n\t\t\treturn ccw < 0 ? -1 : ccw > 0 ? 1 : 0;\n\t\t},\n\n\t\tgetSignedDistance: function(px, py, vx, vy, x, y, asVector) {\n\t\t\tif (!asVector) {\n\t\t\t\tvx -= px;\n\t\t\t\tvy -= py;\n\t\t\t}\n\t\t\t  return  vx === 0 ? (vy > 0 ? x - px : px - x)\n\t\t\t\t\t: vy === 0 ? (vx < 0 ? y - py : py - y)\n\t\t\t\t\t: ((x - px) * vy - (y - py) * vx) / (\n\t\t\t\t\t\tvy > vx\n\t\t\t\t\t\t\t? vy * Math.sqrt(1 + (vx * vx) / (vy * vy))\n\t\t\t\t\t\t\t: vx * Math.sqrt(1 + (vy * vy) / (vx * vx))\n\t\t\t\t\t);\n\t\t},\n\n\t\tgetDistance: function(px, py, vx, vy, x, y, asVector) {\n\t\t\treturn Math.abs(\n\t\t\t\t\tLine.getSignedDistance(px, py, vx, vy, x, y, asVector));\n\t\t}\n\t}\n});\n\nvar Project = PaperScopeItem.extend({\n\t_class: 'Project',\n\t_list: 'projects',\n\t_reference: 'project',\n\t_compactSerialize: true,\n\n\tinitialize: function Project(element) {\n\t\tPaperScopeItem.call(this, true);\n\t\tthis._children = [];\n\t\tthis._namedChildren = {};\n\t\tthis._activeLayer = null;\n\t\tthis._currentStyle = new Style(null, null, this);\n\t\tthis._view = View.create(this,\n\t\t\t\telement || CanvasProvider.getCanvas(1, 1));\n\t\tthis._selectionItems = {};\n\t\tthis._selectionCount = 0;\n\t\tthis._updateVersion = 0;\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\treturn Base.serialize(this._children, options, true, dictionary);\n\t},\n\n\t_changed: function(flags, item) {\n\t\tif (flags & 1) {\n\t\t\tvar view = this._view;\n\t\t\tif (view) {\n\t\t\t\tview._needsUpdate = true;\n\t\t\t\tif (!view._requested && view._autoUpdate)\n\t\t\t\t\tview.requestUpdate();\n\t\t\t}\n\t\t}\n\t\tvar changes = this._changes;\n\t\tif (changes && item) {\n\t\t\tvar changesById = this._changesById,\n\t\t\t\tid = item._id,\n\t\t\t\tentry = changesById[id];\n\t\t\tif (entry) {\n\t\t\t\tentry.flags |= flags;\n\t\t\t} else {\n\t\t\t\tchanges.push(changesById[id] = { item: item, flags: flags });\n\t\t\t}\n\t\t}\n\t},\n\n\tclear: function() {\n\t\tvar children = this._children;\n\t\tfor (var i = children.length - 1; i >= 0; i--)\n\t\t\tchildren[i].remove();\n\t},\n\n\tisEmpty: function() {\n\t\treturn !this._children.length;\n\t},\n\n\tremove: function remove() {\n\t\tif (!remove.base.call(this))\n\t\t\treturn false;\n\t\tif (this._view)\n\t\t\tthis._view.remove();\n\t\treturn true;\n\t},\n\n\tgetView: function() {\n\t\treturn this._view;\n\t},\n\n\tgetCurrentStyle: function() {\n\t\treturn this._currentStyle;\n\t},\n\n\tsetCurrentStyle: function(style) {\n\t\tthis._currentStyle.set(style);\n\t},\n\n\tgetIndex: function() {\n\t\treturn this._index;\n\t},\n\n\tgetOptions: function() {\n\t\treturn this._scope.settings;\n\t},\n\n\tgetLayers: function() {\n\t\treturn this._children;\n\t},\n\n\tgetActiveLayer: function() {\n\t\treturn this._activeLayer || new Layer({ project: this, insert: true });\n\t},\n\n\tgetSymbolDefinitions: function() {\n\t\tvar definitions = [],\n\t\t\tids = {};\n\t\tthis.getItems({\n\t\t\tclass: SymbolItem,\n\t\t\tmatch: function(item) {\n\t\t\t\tvar definition = item._definition,\n\t\t\t\t\tid = definition._id;\n\t\t\t\tif (!ids[id]) {\n\t\t\t\t\tids[id] = true;\n\t\t\t\t\tdefinitions.push(definition);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\treturn definitions;\n\t},\n\n\tgetSymbols: 'getSymbolDefinitions',\n\n\tgetSelectedItems: function() {\n\t\tvar selectionItems = this._selectionItems,\n\t\t\titems = [];\n\t\tfor (var id in selectionItems) {\n\t\t\tvar item = selectionItems[id],\n\t\t\t\tselection = item._selection;\n\t\t\tif ((selection & 1) && item.isInserted()) {\n\t\t\t\titems.push(item);\n\t\t\t} else if (!selection) {\n\t\t\t\tthis._updateSelection(item);\n\t\t\t}\n\t\t}\n\t\treturn items;\n\t},\n\n\t_updateSelection: function(item) {\n\t\tvar id = item._id,\n\t\t\tselectionItems = this._selectionItems;\n\t\tif (item._selection) {\n\t\t\tif (selectionItems[id] !== item) {\n\t\t\t\tthis._selectionCount++;\n\t\t\t\tselectionItems[id] = item;\n\t\t\t}\n\t\t} else if (selectionItems[id] === item) {\n\t\t\tthis._selectionCount--;\n\t\t\tdelete selectionItems[id];\n\t\t}\n\t},\n\n\tselectAll: function() {\n\t\tvar children = this._children;\n\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\tchildren[i].setFullySelected(true);\n\t},\n\n\tdeselectAll: function() {\n\t\tvar selectionItems = this._selectionItems;\n\t\tfor (var i in selectionItems)\n\t\t\tselectionItems[i].setFullySelected(false);\n\t},\n\n\taddLayer: function(layer) {\n\t\treturn this.insertLayer(undefined, layer);\n\t},\n\n\tinsertLayer: function(index, layer) {\n\t\tif (layer instanceof Layer) {\n\t\t\tlayer._remove(false, true);\n\t\t\tBase.splice(this._children, [layer], index, 0);\n\t\t\tlayer._setProject(this, true);\n\t\t\tvar name = layer._name;\n\t\t\tif (name)\n\t\t\t\tlayer.setName(name);\n\t\t\tif (this._changes)\n\t\t\t\tlayer._changed(5);\n\t\t\tif (!this._activeLayer)\n\t\t\t\tthis._activeLayer = layer;\n\t\t} else {\n\t\t\tlayer = null;\n\t\t}\n\t\treturn layer;\n\t},\n\n\t_insertItem: function(index, item, _created) {\n\t\titem = this.insertLayer(index, item)\n\t\t\t\t|| (this._activeLayer || this._insertItem(undefined,\n\t\t\t\t\t\tnew Layer(Item.NO_INSERT), true))\n\t\t\t\t\t\t.insertChild(index, item);\n\t\tif (_created && item.activate)\n\t\t\titem.activate();\n\t\treturn item;\n\t},\n\n\tgetItems: function(options) {\n\t\treturn Item._getItems(this, options);\n\t},\n\n\tgetItem: function(options) {\n\t\treturn Item._getItems(this, options, null, null, true)[0] || null;\n\t},\n\n\timportJSON: function(json) {\n\t\tthis.activate();\n\t\tvar layer = this._activeLayer;\n\t\treturn Base.importJSON(json, layer && layer.isEmpty() && layer);\n\t},\n\n\tremoveOn: function(type) {\n\t\tvar sets = this._removeSets;\n\t\tif (sets) {\n\t\t\tif (type === 'mouseup')\n\t\t\t\tsets.mousedrag = null;\n\t\t\tvar set = sets[type];\n\t\t\tif (set) {\n\t\t\t\tfor (var id in set) {\n\t\t\t\t\tvar item = set[id];\n\t\t\t\t\tfor (var key in sets) {\n\t\t\t\t\t\tvar other = sets[key];\n\t\t\t\t\t\tif (other && other != set)\n\t\t\t\t\t\t\tdelete other[item._id];\n\t\t\t\t\t}\n\t\t\t\t\titem.remove();\n\t\t\t\t}\n\t\t\t\tsets[type] = null;\n\t\t\t}\n\t\t}\n\t},\n\n\tdraw: function(ctx, matrix, pixelRatio) {\n\t\tthis._updateVersion++;\n\t\tctx.save();\n\t\tmatrix.applyToContext(ctx);\n\t\tvar children = this._children,\n\t\t\tparam = new Base({\n\t\t\t\toffset: new Point(0, 0),\n\t\t\t\tpixelRatio: pixelRatio,\n\t\t\t\tviewMatrix: matrix.isIdentity() ? null : matrix,\n\t\t\t\tmatrices: [new Matrix()],\n\t\t\t\tupdateMatrix: true\n\t\t\t});\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tchildren[i].draw(ctx, param);\n\t\t}\n\t\tctx.restore();\n\n\t\tif (this._selectionCount > 0) {\n\t\t\tctx.save();\n\t\t\tctx.strokeWidth = 1;\n\t\t\tvar items = this._selectionItems,\n\t\t\t\tsize = this._scope.settings.handleSize,\n\t\t\t\tversion = this._updateVersion;\n\t\t\tfor (var id in items) {\n\t\t\t\titems[id]._drawSelection(ctx, matrix, size, items, version);\n\t\t\t}\n\t\t\tctx.restore();\n\t\t}\n\t}\n});\n\nvar Item = Base.extend(Emitter, {\n\tstatics: {\n\t\textend: function extend(src) {\n\t\t\tif (src._serializeFields)\n\t\t\t\tsrc._serializeFields = Base.set({},\n\t\t\t\t\tthis.prototype._serializeFields, src._serializeFields);\n\t\t\treturn extend.base.apply(this, arguments);\n\t\t},\n\n\t\tNO_INSERT: { insert: false }\n\t},\n\n\t_class: 'Item',\n\t_name: null,\n\t_applyMatrix: true,\n\t_canApplyMatrix: true,\n\t_canScaleStroke: false,\n\t_pivot: null,\n\t_visible: true,\n\t_blendMode: 'normal',\n\t_opacity: 1,\n\t_locked: false,\n\t_guide: false,\n\t_clipMask: false,\n\t_selection: 0,\n\t_selectBounds: true,\n\t_selectChildren: false,\n\t_serializeFields: {\n\t\tname: null,\n\t\tapplyMatrix: null,\n\t\tmatrix: new Matrix(),\n\t\tpivot: null,\n\t\tvisible: true,\n\t\tblendMode: 'normal',\n\t\topacity: 1,\n\t\tlocked: false,\n\t\tguide: false,\n\t\tclipMask: false,\n\t\tselected: false,\n\t\tdata: {}\n\t},\n\t_prioritize: ['applyMatrix']\n},\nnew function() {\n\tvar handlers = ['onMouseDown', 'onMouseUp', 'onMouseDrag', 'onClick',\n\t\t\t'onDoubleClick', 'onMouseMove', 'onMouseEnter', 'onMouseLeave'];\n\treturn Base.each(handlers,\n\t\tfunction(name) {\n\t\t\tthis._events[name] = {\n\t\t\t\tinstall: function(type) {\n\t\t\t\t\tthis.getView()._countItemEvent(type, 1);\n\t\t\t\t},\n\n\t\t\t\tuninstall: function(type) {\n\t\t\t\t\tthis.getView()._countItemEvent(type, -1);\n\t\t\t\t}\n\t\t\t};\n\t\t}, {\n\t\t\t_events: {\n\t\t\t\tonFrame: {\n\t\t\t\t\tinstall: function() {\n\t\t\t\t\t\tthis.getView()._animateItem(this, true);\n\t\t\t\t\t},\n\n\t\t\t\t\tuninstall: function() {\n\t\t\t\t\t\tthis.getView()._animateItem(this, false);\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tonLoad: {},\n\t\t\t\tonError: {}\n\t\t\t},\n\t\t\tstatics: {\n\t\t\t\t_itemHandlers: handlers\n\t\t\t}\n\t\t}\n\t);\n}, {\n\tinitialize: function Item() {\n\t},\n\n\t_initialize: function(props, point) {\n\t\tvar hasProps = props && Base.isPlainObject(props),\n\t\t\tinternal = hasProps && props.internal === true,\n\t\t\tmatrix = this._matrix = new Matrix(),\n\t\t\tproject = hasProps && props.project || paper.project,\n\t\t\tsettings = paper.settings;\n\t\tthis._id = internal ? null : UID.get();\n\t\tthis._parent = this._index = null;\n\t\tthis._applyMatrix = this._canApplyMatrix && settings.applyMatrix;\n\t\tif (point)\n\t\t\tmatrix.translate(point);\n\t\tmatrix._owner = this;\n\t\tthis._style = new Style(project._currentStyle, this, project);\n\t\tif (internal || hasProps && props.insert == false\n\t\t\t|| !settings.insertItems && !(hasProps && props.insert === true)) {\n\t\t\tthis._setProject(project);\n\t\t} else {\n\t\t\t(hasProps && props.parent || project)\n\t\t\t\t\t._insertItem(undefined, this, true);\n\t\t}\n\t\tif (hasProps && props !== Item.NO_INSERT) {\n\t\t\tthis.set(props, {\n\t\t\t\tinternal: true, insert: true, project: true, parent: true\n\t\t\t});\n\t\t}\n\t\treturn hasProps;\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\tvar props = {},\n\t\t\tthat = this;\n\n\t\tfunction serialize(fields) {\n\t\t\tfor (var key in fields) {\n\t\t\t\tvar value = that[key];\n\t\t\t\tif (!Base.equals(value, key === 'leading'\n\t\t\t\t\t\t? fields.fontSize * 1.2 : fields[key])) {\n\t\t\t\t\tprops[key] = Base.serialize(value, options,\n\t\t\t\t\t\t\tkey !== 'data', dictionary);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tserialize(this._serializeFields);\n\t\tif (!(this instanceof Group))\n\t\t\tserialize(this._style._defaults);\n\t\treturn [ this._class, props ];\n\t},\n\n\t_changed: function(flags) {\n\t\tvar symbol = this._symbol,\n\t\t\tcacheParent = this._parent || symbol,\n\t\t\tproject = this._project;\n\t\tif (flags & 8) {\n\t\t\tthis._bounds = this._position = this._decomposed = undefined;\n\t\t}\n\t\tif (flags & 16) {\n\t\t\tthis._globalMatrix = undefined;\n\t\t}\n\t\tif (cacheParent\n\t\t\t\t&& (flags & 72)) {\n\t\t\tItem._clearBoundsCache(cacheParent);\n\t\t}\n\t\tif (flags & 2) {\n\t\t\tItem._clearBoundsCache(this);\n\t\t}\n\t\tif (project)\n\t\t\tproject._changed(flags, this);\n\t\tif (symbol)\n\t\t\tsymbol._changed(flags);\n\t},\n\n\tgetId: function() {\n\t\treturn this._id;\n\t},\n\n\tgetName: function() {\n\t\treturn this._name;\n\t},\n\n\tsetName: function(name) {\n\n\t\tif (this._name)\n\t\t\tthis._removeNamed();\n\t\tif (name === (+name) + '')\n\t\t\tthrow new Error(\n\t\t\t\t\t'Names consisting only of numbers are not supported.');\n\t\tvar owner = this._getOwner();\n\t\tif (name && owner) {\n\t\t\tvar children = owner._children,\n\t\t\t\tnamedChildren = owner._namedChildren;\n\t\t\t(namedChildren[name] = namedChildren[name] || []).push(this);\n\t\t\tif (!(name in children))\n\t\t\t\tchildren[name] = this;\n\t\t}\n\t\tthis._name = name || undefined;\n\t\tthis._changed(256);\n\t},\n\n\tgetStyle: function() {\n\t\treturn this._style;\n\t},\n\n\tsetStyle: function(style) {\n\t\tthis.getStyle().set(style);\n\t}\n}, Base.each(['locked', 'visible', 'blendMode', 'opacity', 'guide'],\n\tfunction(name) {\n\t\tvar part = Base.capitalize(name),\n\t\t\tkey = '_' + name,\n\t\t\tflags = {\n\t\t\t\tlocked: 256,\n\t\t\t\tvisible: 265\n\t\t\t};\n\t\tthis['get' + part] = function() {\n\t\t\treturn this[key];\n\t\t};\n\t\tthis['set' + part] = function(value) {\n\t\t\tif (value != this[key]) {\n\t\t\t\tthis[key] = value;\n\t\t\t\tthis._changed(flags[name] || 257);\n\t\t\t}\n\t\t};\n\t},\n{}), {\n\tbeans: true,\n\n\tgetSelection: function() {\n\t\treturn this._selection;\n\t},\n\n\tsetSelection: function(selection) {\n\t\tif (selection !== this._selection) {\n\t\t\tthis._selection = selection;\n\t\t\tvar project = this._project;\n\t\t\tif (project) {\n\t\t\t\tproject._updateSelection(this);\n\t\t\t\tthis._changed(257);\n\t\t\t}\n\t\t}\n\t},\n\n\t_changeSelection: function(flag, selected) {\n\t\tvar selection = this._selection;\n\t\tthis.setSelection(selected ? selection | flag : selection & ~flag);\n\t},\n\n\tisSelected: function() {\n\t\tif (this._selectChildren) {\n\t\t\tvar children = this._children;\n\t\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\t\tif (children[i].isSelected())\n\t\t\t\t\treturn true;\n\t\t}\n\t\treturn !!(this._selection & 1);\n\t},\n\n\tsetSelected: function(selected) {\n\t\tif (this._selectChildren) {\n\t\t\tvar children = this._children;\n\t\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\t\tchildren[i].setSelected(selected);\n\t\t}\n\t\tthis._changeSelection(1, selected);\n\t},\n\n\tisFullySelected: function() {\n\t\tvar children = this._children,\n\t\t\tselected = !!(this._selection & 1);\n\t\tif (children && selected) {\n\t\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\t\tif (!children[i].isFullySelected())\n\t\t\t\t\treturn false;\n\t\t\treturn true;\n\t\t}\n\t\treturn selected;\n\t},\n\n\tsetFullySelected: function(selected) {\n\t\tvar children = this._children;\n\t\tif (children) {\n\t\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\t\tchildren[i].setFullySelected(selected);\n\t\t}\n\t\tthis._changeSelection(1, selected);\n\t},\n\n\tisClipMask: function() {\n\t\treturn this._clipMask;\n\t},\n\n\tsetClipMask: function(clipMask) {\n\t\tif (this._clipMask != (clipMask = !!clipMask)) {\n\t\t\tthis._clipMask = clipMask;\n\t\t\tif (clipMask) {\n\t\t\t\tthis.setFillColor(null);\n\t\t\t\tthis.setStrokeColor(null);\n\t\t\t}\n\t\t\tthis._changed(257);\n\t\t\tif (this._parent)\n\t\t\t\tthis._parent._changed(2048);\n\t\t}\n\t},\n\n\tgetData: function() {\n\t\tif (!this._data)\n\t\t\tthis._data = {};\n\t\treturn this._data;\n\t},\n\n\tsetData: function(data) {\n\t\tthis._data = data;\n\t},\n\n\tgetPosition: function(_dontLink) {\n\t\tvar ctor = _dontLink ? Point : LinkedPoint;\n\t\tvar position = this._position ||\n\t\t\t(this._position = this._getPositionFromBounds());\n\t\treturn new ctor(position.x, position.y, this, 'setPosition');\n\t},\n\n\tsetPosition: function() {\n\t\tthis.translate(Point.read(arguments).subtract(this.getPosition(true)));\n\t},\n\n\t_getPositionFromBounds: function(bounds) {\n\t\treturn this._pivot\n\t\t\t\t? this._matrix._transformPoint(this._pivot)\n\t\t\t\t: (bounds || this.getBounds()).getCenter(true);\n\t},\n\n\tgetPivot: function() {\n\t\tvar pivot = this._pivot;\n\t\treturn pivot\n\t\t\t\t? new LinkedPoint(pivot.x, pivot.y, this, 'setPivot')\n\t\t\t\t: null;\n\t},\n\n\tsetPivot: function() {\n\t\tthis._pivot = Point.read(arguments, 0, { clone: true, readNull: true });\n\t\tthis._position = undefined;\n\t}\n}, Base.each({\n\t\tgetStrokeBounds: { stroke: true },\n\t\tgetHandleBounds: { handle: true },\n\t\tgetInternalBounds: { internal: true },\n\t\tgetDrawnBounds: { stroke: true, drawnTextBounds: true },\n\t},\n\tfunction(options, key) {\n\t\tthis[key] = function(matrix) {\n\t\t\treturn this.getBounds(matrix, options);\n\t\t};\n\t},\n{\n\tbeans: true,\n\n\tgetBounds: function(matrix, options) {\n\t\tvar hasMatrix = options || matrix instanceof Matrix,\n\t\t\topts = Base.set({}, hasMatrix ? options : matrix,\n\t\t\t\t\tthis._boundsOptions);\n\t\tif (!opts.stroke || this.getStrokeScaling())\n\t\t\topts.cacheItem = this;\n\t\tvar rect = this._getCachedBounds(hasMatrix && matrix, opts).rect;\n\t\treturn !arguments.length\n\t\t\t\t? new LinkedRectangle(rect.x, rect.y, rect.width, rect.height,\n\t\t\t\t\tthis, 'setBounds')\n\t\t\t\t: rect;\n\t},\n\n\tsetBounds: function() {\n\t\tvar rect = Rectangle.read(arguments),\n\t\t\tbounds = this.getBounds(),\n\t\t\t_matrix = this._matrix,\n\t\t\tmatrix = new Matrix(),\n\t\t\tcenter = rect.getCenter();\n\t\tmatrix.translate(center);\n\t\tif (rect.width != bounds.width || rect.height != bounds.height) {\n\t\t\tif (!_matrix.isInvertible()) {\n\t\t\t\t_matrix.set(_matrix._backup\n\t\t\t\t\t\t|| new Matrix().translate(_matrix.getTranslation()));\n\t\t\t\tbounds = this.getBounds();\n\t\t\t}\n\t\t\tmatrix.scale(\n\t\t\t\t\tbounds.width !== 0 ? rect.width / bounds.width : 0,\n\t\t\t\t\tbounds.height !== 0 ? rect.height / bounds.height : 0);\n\t\t}\n\t\tcenter = bounds.getCenter();\n\t\tmatrix.translate(-center.x, -center.y);\n\t\tthis.transform(matrix);\n\t},\n\n\t_getBounds: function(matrix, options) {\n\t\tvar children = this._children;\n\t\tif (!children || !children.length)\n\t\t\treturn new Rectangle();\n\t\tItem._updateBoundsCache(this, options.cacheItem);\n\t\treturn Item._getBounds(children, matrix, options);\n\t},\n\n\t_getBoundsCacheKey: function(options, internal) {\n\t\treturn [\n\t\t\toptions.stroke ? 1 : 0,\n\t\t\toptions.handle ? 1 : 0,\n\t\t\toptions.drawnTextBounds? 1 : 0,\n\t\t\tinternal ? 1 : 0\n\t\t].join('');\n\t},\n\n\t_getCachedBounds: function(matrix, options, noInternal) {\n\t\tmatrix = matrix && matrix._orNullIfIdentity();\n\t\tvar internal = options.internal && !noInternal,\n\t\t\tcacheItem = options.cacheItem,\n\t\t\t_matrix = internal ? null : this._matrix._orNullIfIdentity(),\n\t\t\tcacheKey = cacheItem && (!matrix || matrix.equals(_matrix))\n\t\t\t\t&& this._getBoundsCacheKey(options, internal),\n\t\t\tbounds = this._bounds;\n\t\tItem._updateBoundsCache(this._parent || this._symbol, cacheItem);\n\t\tif (cacheKey && bounds && cacheKey in bounds) {\n\t\t\tvar cached = bounds[cacheKey];\n\t\t\treturn {\n\t\t\t\trect: cached.rect.clone(),\n\t\t\t\tnonscaling: cached.nonscaling\n\t\t\t};\n\t\t}\n\t\tvar res = this._getBounds(matrix || _matrix, options),\n\t\t\trect = res.rect || res,\n\t\t\tstyle = this._style,\n\t\t\tnonscaling = res.nonscaling || style.hasStroke()\n\t\t\t\t&& !style.getStrokeScaling();\n\t\tif (cacheKey) {\n\t\t\tif (!bounds) {\n\t\t\t\tthis._bounds = bounds = {};\n\t\t\t}\n\t\t\tvar cached = bounds[cacheKey] = {\n\t\t\t\trect: rect.clone(),\n\t\t\t\tnonscaling: nonscaling,\n\t\t\t\tinternal: internal\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\trect: rect,\n\t\t\tnonscaling: nonscaling\n\t\t};\n\t},\n\n\t_getStrokeMatrix: function(matrix, options) {\n\t\tvar parent = this.getStrokeScaling() ? null\n\t\t\t\t: options && options.internal ? this\n\t\t\t\t\t: this._parent || this._symbol && this._symbol._item,\n\t\t\tmx = parent ? parent.getViewMatrix().invert() : matrix;\n\t\treturn mx && mx._shiftless();\n\t},\n\n\tstatics: {\n\t\t_updateBoundsCache: function(parent, item) {\n\t\t\tif (parent && item) {\n\t\t\t\tvar id = item._id,\n\t\t\t\t\tref = parent._boundsCache = parent._boundsCache || {\n\t\t\t\t\t\tids: {},\n\t\t\t\t\t\tlist: []\n\t\t\t\t\t};\n\t\t\t\tif (!ref.ids[id]) {\n\t\t\t\t\tref.list.push(item);\n\t\t\t\t\tref.ids[id] = item;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_clearBoundsCache: function(item) {\n\t\t\tvar cache = item._boundsCache;\n\t\t\tif (cache) {\n\t\t\t\titem._bounds = item._position = item._boundsCache = undefined;\n\t\t\t\tfor (var i = 0, list = cache.list, l = list.length; i < l; i++){\n\t\t\t\t\tvar other = list[i];\n\t\t\t\t\tif (other !== item) {\n\t\t\t\t\t\tother._bounds = other._position = undefined;\n\t\t\t\t\t\tif (other._boundsCache)\n\t\t\t\t\t\t\tItem._clearBoundsCache(other);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_getBounds: function(items, matrix, options) {\n\t\t\tvar x1 = Infinity,\n\t\t\t\tx2 = -x1,\n\t\t\t\ty1 = x1,\n\t\t\t\ty2 = x2,\n\t\t\t\tnonscaling = false;\n\t\t\toptions = options || {};\n\t\t\tfor (var i = 0, l = items.length; i < l; i++) {\n\t\t\t\tvar item = items[i];\n\t\t\t\tif (item._visible && !item.isEmpty(true)) {\n\t\t\t\t\tvar bounds = item._getCachedBounds(\n\t\t\t\t\t\tmatrix && matrix.appended(item._matrix), options, true),\n\t\t\t\t\t\trect = bounds.rect;\n\t\t\t\t\tx1 = Math.min(rect.x, x1);\n\t\t\t\t\ty1 = Math.min(rect.y, y1);\n\t\t\t\t\tx2 = Math.max(rect.x + rect.width, x2);\n\t\t\t\t\ty2 = Math.max(rect.y + rect.height, y2);\n\t\t\t\t\tif (bounds.nonscaling)\n\t\t\t\t\t\tnonscaling = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\trect: isFinite(x1)\n\t\t\t\t\t? new Rectangle(x1, y1, x2 - x1, y2 - y1)\n\t\t\t\t\t: new Rectangle(),\n\t\t\t\tnonscaling: nonscaling\n\t\t\t};\n\t\t}\n\t}\n\n}), {\n\tbeans: true,\n\n\t_decompose: function() {\n\t\treturn this._applyMatrix\n\t\t\t? null\n\t\t\t: this._decomposed || (this._decomposed = this._matrix.decompose());\n\t},\n\n\tgetRotation: function() {\n\t\tvar decomposed = this._decompose();\n\t\treturn decomposed ? decomposed.rotation : 0;\n\t},\n\n\tsetRotation: function(rotation) {\n\t\tvar current = this.getRotation();\n\t\tif (current != null && rotation != null) {\n\t\t\tvar decomposed = this._decomposed;\n\t\t\tthis.rotate(rotation - current);\n\t\t\tif (decomposed) {\n\t\t\t\tdecomposed.rotation = rotation;\n\t\t\t\tthis._decomposed = decomposed;\n\t\t\t}\n\t\t}\n\t},\n\n\tgetScaling: function() {\n\t\tvar decomposed = this._decompose(),\n\t\t\ts = decomposed && decomposed.scaling;\n\t\treturn new LinkedPoint(s ? s.x : 1, s ? s.y : 1, this, 'setScaling');\n\t},\n\n\tsetScaling: function() {\n\t\tvar current = this.getScaling(),\n\t\t\tscaling = Point.read(arguments, 0, { clone: true, readNull: true });\n\t\tif (current && scaling && !current.equals(scaling)) {\n\t\t\tvar rotation = this.getRotation(),\n\t\t\t\tdecomposed = this._decomposed,\n\t\t\t\tmatrix = new Matrix(),\n\t\t\t\tcenter = this.getPosition(true);\n\t\t\tmatrix.translate(center);\n\t\t\tif (rotation)\n\t\t\t\tmatrix.rotate(rotation);\n\t\t\tmatrix.scale(scaling.x / current.x, scaling.y / current.y);\n\t\t\tif (rotation)\n\t\t\t\tmatrix.rotate(-rotation);\n\t\t\tmatrix.translate(center.negate());\n\t\t\tthis.transform(matrix);\n\t\t\tif (decomposed) {\n\t\t\t\tdecomposed.scaling = scaling;\n\t\t\t\tthis._decomposed = decomposed;\n\t\t\t}\n\t\t}\n\t},\n\n\tgetMatrix: function() {\n\t\treturn this._matrix;\n\t},\n\n\tsetMatrix: function() {\n\t\tvar matrix = this._matrix;\n\t\tmatrix.initialize.apply(matrix, arguments);\n\t},\n\n\tgetGlobalMatrix: function(_dontClone) {\n\t\tvar matrix = this._globalMatrix;\n\t\tif (matrix) {\n\t\t\tvar parent = this._parent;\n\t\t\tvar parents = [];\n\t\t\twhile (parent) {\n\t\t\t\tif (!parent._globalMatrix) {\n\t\t\t\t\tmatrix = null;\n\t\t\t\t\tfor (var i = 0, l = parents.length; i < l; i++) {\n\t\t\t\t\t\tparents[i]._globalMatrix = null;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tparents.push(parent);\n\t\t\t\tparent = parent._parent;\n\t\t\t}\n\t\t}\n\t\tif (!matrix) {\n\t\t\tmatrix = this._globalMatrix = this._matrix.clone();\n\t\t\tvar parent = this._parent;\n\t\t\tif (parent)\n\t\t\t\tmatrix.prepend(parent.getGlobalMatrix(true));\n\t\t}\n\t\treturn _dontClone ? matrix : matrix.clone();\n\t},\n\n\tgetViewMatrix: function() {\n\t\treturn this.getGlobalMatrix().prepend(this.getView()._matrix);\n\t},\n\n\tgetApplyMatrix: function() {\n\t\treturn this._applyMatrix;\n\t},\n\n\tsetApplyMatrix: function(apply) {\n\t\tif (this._applyMatrix = this._canApplyMatrix && !!apply)\n\t\t\tthis.transform(null, true);\n\t},\n\n\tgetTransformContent: '#getApplyMatrix',\n\tsetTransformContent: '#setApplyMatrix',\n}, {\n\tgetProject: function() {\n\t\treturn this._project;\n\t},\n\n\t_setProject: function(project, installEvents) {\n\t\tif (this._project !== project) {\n\t\t\tif (this._project)\n\t\t\t\tthis._installEvents(false);\n\t\t\tthis._project = project;\n\t\t\tvar children = this._children;\n\t\t\tfor (var i = 0, l = children && children.length; i < l; i++)\n\t\t\t\tchildren[i]._setProject(project);\n\t\t\tinstallEvents = true;\n\t\t}\n\t\tif (installEvents)\n\t\t\tthis._installEvents(true);\n\t},\n\n\tgetView: function() {\n\t\treturn this._project._view;\n\t},\n\n\t_installEvents: function _installEvents(install) {\n\t\t_installEvents.base.call(this, install);\n\t\tvar children = this._children;\n\t\tfor (var i = 0, l = children && children.length; i < l; i++)\n\t\t\tchildren[i]._installEvents(install);\n\t},\n\n\tgetLayer: function() {\n\t\tvar parent = this;\n\t\twhile (parent = parent._parent) {\n\t\t\tif (parent instanceof Layer)\n\t\t\t\treturn parent;\n\t\t}\n\t\treturn null;\n\t},\n\n\tgetParent: function() {\n\t\treturn this._parent;\n\t},\n\n\tsetParent: function(item) {\n\t\treturn item.addChild(this);\n\t},\n\n\t_getOwner: '#getParent',\n\n\tgetChildren: function() {\n\t\treturn this._children;\n\t},\n\n\tsetChildren: function(items) {\n\t\tthis.removeChildren();\n\t\tthis.addChildren(items);\n\t},\n\n\tgetFirstChild: function() {\n\t\treturn this._children && this._children[0] || null;\n\t},\n\n\tgetLastChild: function() {\n\t\treturn this._children && this._children[this._children.length - 1]\n\t\t\t\t|| null;\n\t},\n\n\tgetNextSibling: function() {\n\t\tvar owner = this._getOwner();\n\t\treturn owner && owner._children[this._index + 1] || null;\n\t},\n\n\tgetPreviousSibling: function() {\n\t\tvar owner = this._getOwner();\n\t\treturn owner && owner._children[this._index - 1] || null;\n\t},\n\n\tgetIndex: function() {\n\t\treturn this._index;\n\t},\n\n\tequals: function(item) {\n\t\treturn item === this || item && this._class === item._class\n\t\t\t\t&& this._style.equals(item._style)\n\t\t\t\t&& this._matrix.equals(item._matrix)\n\t\t\t\t&& this._locked === item._locked\n\t\t\t\t&& this._visible === item._visible\n\t\t\t\t&& this._blendMode === item._blendMode\n\t\t\t\t&& this._opacity === item._opacity\n\t\t\t\t&& this._clipMask === item._clipMask\n\t\t\t\t&& this._guide === item._guide\n\t\t\t\t&& this._equals(item)\n\t\t\t\t|| false;\n\t},\n\n\t_equals: function(item) {\n\t\treturn Base.equals(this._children, item._children);\n\t},\n\n\tclone: function(options) {\n\t\tvar copy = new this.constructor(Item.NO_INSERT),\n\t\t\tchildren = this._children,\n\t\t\tinsert = Base.pick(options ? options.insert : undefined,\n\t\t\t\t\toptions === undefined || options === true),\n\t\t\tdeep = Base.pick(options ? options.deep : undefined, true);\n\t\tif (children)\n\t\t\tcopy.copyAttributes(this);\n\t\tif (!children || deep)\n\t\t\tcopy.copyContent(this);\n\t\tif (!children)\n\t\t\tcopy.copyAttributes(this);\n\t\tif (insert)\n\t\t\tcopy.insertAbove(this);\n\t\tvar name = this._name,\n\t\t\tparent = this._parent;\n\t\tif (name && parent) {\n\t\t\tvar children = parent._children,\n\t\t\t\torig = name,\n\t\t\t\ti = 1;\n\t\t\twhile (children[name])\n\t\t\t\tname = orig + ' ' + (i++);\n\t\t\tif (name !== orig)\n\t\t\t\tcopy.setName(name);\n\t\t}\n\t\treturn copy;\n\t},\n\n\tcopyContent: function(source) {\n\t\tvar children = source._children;\n\t\tfor (var i = 0, l = children && children.length; i < l; i++) {\n\t\t\tthis.addChild(children[i].clone(false), true);\n\t\t}\n\t},\n\n\tcopyAttributes: function(source, excludeMatrix) {\n\t\tthis.setStyle(source._style);\n\t\tvar keys = ['_locked', '_visible', '_blendMode', '_opacity',\n\t\t\t\t'_clipMask', '_guide'];\n\t\tfor (var i = 0, l = keys.length; i < l; i++) {\n\t\t\tvar key = keys[i];\n\t\t\tif (source.hasOwnProperty(key))\n\t\t\t\tthis[key] = source[key];\n\t\t}\n\t\tif (!excludeMatrix)\n\t\t\tthis._matrix.set(source._matrix, true);\n\t\tthis.setApplyMatrix(source._applyMatrix);\n\t\tthis.setPivot(source._pivot);\n\t\tthis.setSelection(source._selection);\n\t\tvar data = source._data,\n\t\t\tname = source._name;\n\t\tthis._data = data ? Base.clone(data) : null;\n\t\tif (name)\n\t\t\tthis.setName(name);\n\t},\n\n\trasterize: function(resolution, insert, boundRect) {\n\t\tvar bounds = boundRect ? boundRect : this.getStrokeBounds(),\n\t\t\tscale = (resolution || this.getView().getResolution()) / 72,\n\t\t\ttopLeft = bounds.getTopLeft().floor(),\n\t\t\tbottomRight = bounds.getBottomRight().ceil(),\n\t\t\tsize = new Size(bottomRight.subtract(topLeft)),\n\t\t\traster = new Raster(Item.NO_INSERT);\n\t\tif (!size.isZero()) {\n\t\t\tvar canvas = CanvasProvider.getCanvas(size.multiply(scale)),\n\t\t\t\tctx = canvas.getContext('2d'),\n\t\t\t\tmatrix = new Matrix().scale(scale).translate(topLeft.negate());\n\t\t\tctx.imageSmoothingEnabled = false;\n\t\t\tctx.save();\n\t\t\tmatrix.applyToContext(ctx);\n\t\t\tthis.draw(ctx, new Base({ matrices: [matrix] }));\n\t\t\tctx.restore();\n\t\t\traster.setCanvas(canvas);\n\t\t}\n\t\traster.transform(new Matrix().translate(topLeft.add(size.divide(2)))\n\t\t\t\t.scale(1 / scale));\n\t\tif (insert === undefined || insert)\n\t\t\traster.insertAbove(this);\n\t\treturn raster;\n\t},\n\n\tcontains: function() {\n\t\tvar matrix = this._matrix;\n\t\treturn (\n\t\t\tmatrix.isInvertible() &&\n\t\t\t!!this._contains(matrix._inverseTransform(Point.read(arguments)))\n\t\t);\n\t},\n\n\t_contains: function(point) {\n\t\tvar children = this._children;\n\t\tif (children) {\n\t\t\tfor (var i = children.length - 1; i >= 0; i--) {\n\t\t\t\tif (children[i].contains(point))\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn point.isInside(this.getInternalBounds());\n\t},\n\n\tisInside: function() {\n\t\treturn Rectangle.read(arguments).contains(this.getBounds());\n\t},\n\n\t_asPathItem: function() {\n\t\treturn new Path.Rectangle({\n\t\t\trectangle: this.getInternalBounds(),\n\t\t\tmatrix: this._matrix,\n\t\t\tinsert: false,\n\t\t});\n\t},\n\n\tintersects: function(item, _matrix) {\n\t\tif (!(item instanceof Item))\n\t\t\treturn false;\n\t\treturn this._asPathItem().getIntersections(item._asPathItem(), null,\n\t\t\t\t_matrix, true).length > 0;\n\t}\n},\nnew function() {\n\tfunction hitTest() {\n\t\tvar args = arguments;\n\t\treturn this._hitTest(\n\t\t\t\tPoint.read(args),\n\t\t\t\tHitResult.getOptions(args));\n\t}\n\n\tfunction hitTestAll() {\n\t\tvar args = arguments,\n\t\t\tpoint = Point.read(args),\n\t\t\toptions = HitResult.getOptions(args),\n\t\t\tall = [];\n\t\tthis._hitTest(point, new Base({ all: all }, options));\n\t\treturn all;\n\t}\n\n\tfunction hitTestChildren(point, options, viewMatrix, _exclude) {\n\t\tvar children = this._children;\n\t\tif (children) {\n\t\t\tfor (var i = children.length - 1; i >= 0; i--) {\n\t\t\t\tvar child = children[i];\n\t\t\t\tvar res = child !== _exclude && child._hitTest(point, options,\n\t\t\t\t\t\tviewMatrix);\n\t\t\t\tif (res && !options.all)\n\t\t\t\t\treturn res;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tProject.inject({\n\t\thitTest: hitTest,\n\t\thitTestAll: hitTestAll,\n\t\t_hitTest: hitTestChildren\n\t});\n\n\treturn {\n\t\thitTest: hitTest,\n\t\thitTestAll: hitTestAll,\n\t\t_hitTestChildren: hitTestChildren,\n\t};\n}, {\n\n\t_hitTest: function(point, options, parentViewMatrix) {\n\t\tif (this._locked || !this._visible || this._guide && !options.guides\n\t\t\t\t|| this.isEmpty()) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar matrix = this._matrix,\n\t\t\tviewMatrix = parentViewMatrix\n\t\t\t\t\t? parentViewMatrix.appended(matrix)\n\t\t\t\t\t: this.getGlobalMatrix().prepend(this.getView()._matrix),\n\t\t\ttolerance = Math.max(options.tolerance, 1e-12),\n\t\t\ttolerancePadding = options._tolerancePadding = new Size(\n\t\t\t\t\tPath._getStrokePadding(tolerance,\n\t\t\t\t\t\tmatrix._shiftless().invert()));\n\t\tpoint = matrix._inverseTransform(point);\n\t\tif (!point || !this._children &&\n\t\t\t!this.getBounds({ internal: true, stroke: true, handle: true })\n\t\t\t\t.expand(tolerancePadding.multiply(2))._containsPoint(point)) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar checkSelf = !(options.guides && !this._guide\n\t\t\t\t|| options.selected && !this.isSelected()\n\t\t\t\t|| options.type && options.type !== Base.hyphenate(this._class)\n\t\t\t\t|| options.class && !(this instanceof options.class)),\n\t\t\tmatch = options.match,\n\t\t\tthat = this,\n\t\t\tbounds,\n\t\t\tres;\n\n\t\tfunction filter(hit) {\n\t\t\tif (hit && match && !match(hit))\n\t\t\t\thit = null;\n\t\t\tif (hit && options.all)\n\t\t\t\toptions.all.push(hit);\n\t\t\treturn hit;\n\t\t}\n\n\t\tfunction checkPoint(type, part) {\n\t\t\tvar pt = part ? bounds['get' + part]() : that.getPosition();\n\t\t\tif (point.subtract(pt).divide(tolerancePadding).length <= 1) {\n\t\t\t\treturn new HitResult(type, that, {\n\t\t\t\t\tname: part ? Base.hyphenate(part) : type,\n\t\t\t\t\tpoint: pt\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tvar checkPosition = options.position,\n\t\t\tcheckCenter = options.center,\n\t\t\tcheckBounds = options.bounds;\n\t\tif (checkSelf && this._parent\n\t\t\t\t&& (checkPosition || checkCenter || checkBounds)) {\n\t\t\tif (checkCenter || checkBounds) {\n\t\t\t\tbounds = this.getInternalBounds();\n\t\t\t}\n\t\t\tres = checkPosition && checkPoint('position') ||\n\t\t\t\t\tcheckCenter && checkPoint('center', 'Center');\n\t\t\tif (!res && checkBounds) {\n\t\t\t\tvar points = [\n\t\t\t\t\t'TopLeft', 'TopRight', 'BottomLeft', 'BottomRight',\n\t\t\t\t\t'LeftCenter', 'TopCenter', 'RightCenter', 'BottomCenter'\n\t\t\t\t];\n\t\t\t\tfor (var i = 0; i < 8 && !res; i++) {\n\t\t\t\t\tres = checkPoint('bounds', points[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tres = filter(res);\n\t\t}\n\n\t\tif (!res) {\n\t\t\tres = this._hitTestChildren(point, options, viewMatrix)\n\t\t\t\t|| checkSelf\n\t\t\t\t\t&& filter(this._hitTestSelf(point, options, viewMatrix,\n\t\t\t\t\t\tthis.getStrokeScaling() ? null\n\t\t\t\t\t\t\t: viewMatrix._shiftless().invert()))\n\t\t\t\t|| null;\n\t\t}\n\t\tif (res && res.point) {\n\t\t\tres.point = matrix.transform(res.point);\n\t\t}\n\t\treturn res;\n\t},\n\n\t_hitTestSelf: function(point, options) {\n\t\tif (options.fill && this.hasFill() && this._contains(point))\n\t\t\treturn new HitResult('fill', this);\n\t},\n\n\tmatches: function(name, compare) {\n\t\tfunction matchObject(obj1, obj2) {\n\t\t\tfor (var i in obj1) {\n\t\t\t\tif (obj1.hasOwnProperty(i)) {\n\t\t\t\t\tvar val1 = obj1[i],\n\t\t\t\t\t\tval2 = obj2[i];\n\t\t\t\t\tif (Base.isPlainObject(val1) && Base.isPlainObject(val2)) {\n\t\t\t\t\t\tif (!matchObject(val1, val2))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (!Base.equals(val1, val2)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tvar type = typeof name;\n\t\tif (type === 'object') {\n\t\t\tfor (var key in name) {\n\t\t\t\tif (name.hasOwnProperty(key) && !this.matches(key, name[key]))\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t} else if (type === 'function') {\n\t\t\treturn name(this);\n\t\t} else if (name === 'match') {\n\t\t\treturn compare(this);\n\t\t} else {\n\t\t\tvar value = /^(empty|editable)$/.test(name)\n\t\t\t\t\t? this['is' + Base.capitalize(name)]()\n\t\t\t\t\t: name === 'type'\n\t\t\t\t\t\t? Base.hyphenate(this._class)\n\t\t\t\t\t\t: this[name];\n\t\t\tif (name === 'class') {\n\t\t\t\tif (typeof compare === 'function')\n\t\t\t\t\treturn this instanceof compare;\n\t\t\t\tvalue = this._class;\n\t\t\t}\n\t\t\tif (typeof compare === 'function') {\n\t\t\t\treturn !!compare(value);\n\t\t\t} else if (compare) {\n\t\t\t\tif (compare.test) {\n\t\t\t\t\treturn compare.test(value);\n\t\t\t\t} else if (Base.isPlainObject(compare)) {\n\t\t\t\t\treturn matchObject(compare, value);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Base.equals(value, compare);\n\t\t}\n\t},\n\n\tgetItems: function(options) {\n\t\treturn Item._getItems(this, options, this._matrix);\n\t},\n\n\tgetItem: function(options) {\n\t\treturn Item._getItems(this, options, this._matrix, null, true)[0]\n\t\t\t\t|| null;\n\t},\n\n\tstatics: {\n\t\t_getItems: function _getItems(item, options, matrix, param, firstOnly) {\n\t\t\tif (!param) {\n\t\t\t\tvar obj = typeof options === 'object' && options,\n\t\t\t\t\toverlapping = obj && obj.overlapping,\n\t\t\t\t\tinside = obj && obj.inside,\n\t\t\t\t\tbounds = overlapping || inside,\n\t\t\t\t\trect = bounds && Rectangle.read([bounds]);\n\t\t\t\tparam = {\n\t\t\t\t\titems: [],\n\t\t\t\t\trecursive: obj && obj.recursive !== false,\n\t\t\t\t\tinside: !!inside,\n\t\t\t\t\toverlapping: !!overlapping,\n\t\t\t\t\trect: rect,\n\t\t\t\t\tpath: overlapping && new Path.Rectangle({\n\t\t\t\t\t\trectangle: rect,\n\t\t\t\t\t\tinsert: false\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t\tif (obj) {\n\t\t\t\t\toptions = Base.filter({}, options, {\n\t\t\t\t\t\trecursive: true, inside: true, overlapping: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar children = item._children,\n\t\t\t\titems = param.items,\n\t\t\t\trect = param.rect;\n\t\t\tmatrix = rect && (matrix || new Matrix());\n\t\t\tfor (var i = 0, l = children && children.length; i < l; i++) {\n\t\t\t\tvar child = children[i],\n\t\t\t\t\tchildMatrix = matrix && matrix.appended(child._matrix),\n\t\t\t\t\tadd = true;\n\t\t\t\tif (rect) {\n\t\t\t\t\tvar bounds = child.getBounds(childMatrix);\n\t\t\t\t\tif (!rect.intersects(bounds))\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tif (!(rect.contains(bounds)\n\t\t\t\t\t\t\t|| param.overlapping && (bounds.contains(rect)\n\t\t\t\t\t\t\t\t|| param.path.intersects(child, childMatrix))))\n\t\t\t\t\t\tadd = false;\n\t\t\t\t}\n\t\t\t\tif (add && child.matches(options)) {\n\t\t\t\t\titems.push(child);\n\t\t\t\t\tif (firstOnly)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (param.recursive !== false) {\n\t\t\t\t\t_getItems(child, options, childMatrix, param, firstOnly);\n\t\t\t\t}\n\t\t\t\tif (firstOnly && items.length > 0)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn items;\n\t\t}\n\t}\n}, {\n\n\timportJSON: function(json) {\n\t\tvar res = Base.importJSON(json, this);\n\t\treturn res !== this ? this.addChild(res) : res;\n\t},\n\n\taddChild: function(item) {\n\t\treturn this.insertChild(undefined, item);\n\t},\n\n\tinsertChild: function(index, item) {\n\t\tvar res = item ? this.insertChildren(index, [item]) : null;\n\t\treturn res && res[0];\n\t},\n\n\taddChildren: function(items) {\n\t\treturn this.insertChildren(this._children.length, items);\n\t},\n\n\tinsertChildren: function(index, items) {\n\t\tvar children = this._children;\n\t\tif (children && items && items.length > 0) {\n\t\t\titems = Base.slice(items);\n\t\t\tvar inserted = {};\n\t\t\tfor (var i = items.length - 1; i >= 0; i--) {\n\t\t\t\tvar item = items[i],\n\t\t\t\t\tid = item && item._id;\n\t\t\t\tif (!item || inserted[id]) {\n\t\t\t\t\titems.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\titem._remove(false, true);\n\t\t\t\t\tinserted[id] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tBase.splice(children, items, index, 0);\n\t\t\tvar project = this._project,\n\t\t\t\tnotifySelf = project._changes;\n\t\t\tfor (var i = 0, l = items.length; i < l; i++) {\n\t\t\t\tvar item = items[i],\n\t\t\t\t\tname = item._name;\n\t\t\t\titem._parent = this;\n\t\t\t\titem._setProject(project, true);\n\t\t\t\tif (name)\n\t\t\t\t\titem.setName(name);\n\t\t\t\tif (notifySelf)\n\t\t\t\t\titem._changed(5);\n\t\t\t}\n\t\t\tthis._changed(11);\n\t\t} else {\n\t\t\titems = null;\n\t\t}\n\t\treturn items;\n\t},\n\n\t_insertItem: '#insertChild',\n\n\t_insertAt: function(item, offset) {\n\t\tvar owner = item && item._getOwner(),\n\t\t\tres = item !== this && owner ? this : null;\n\t\tif (res) {\n\t\t\tres._remove(false, true);\n\t\t\towner._insertItem(item._index + offset, res);\n\t\t}\n\t\treturn res;\n\t},\n\n\tinsertAbove: function(item) {\n\t\treturn this._insertAt(item, 1);\n\t},\n\n\tinsertBelow: function(item) {\n\t\treturn this._insertAt(item, 0);\n\t},\n\n\tsendToBack: function() {\n\t\tvar owner = this._getOwner();\n\t\treturn owner ? owner._insertItem(0, this) : null;\n\t},\n\n\tbringToFront: function() {\n\t\tvar owner = this._getOwner();\n\t\treturn owner ? owner._insertItem(undefined, this) : null;\n\t},\n\n\tappendTop: '#addChild',\n\n\tappendBottom: function(item) {\n\t\treturn this.insertChild(0, item);\n\t},\n\n\tmoveAbove: '#insertAbove',\n\n\tmoveBelow: '#insertBelow',\n\n\taddTo: function(owner) {\n\t\treturn owner._insertItem(undefined, this);\n\t},\n\n\tcopyTo: function(owner) {\n\t\treturn this.clone(false).addTo(owner);\n\t},\n\n\treduce: function(options) {\n\t\tvar children = this._children;\n\t\tif (children && children.length === 1) {\n\t\t\tvar child = children[0].reduce(options);\n\t\t\tif (this._parent) {\n\t\t\t\tchild.insertAbove(this);\n\t\t\t\tthis.remove();\n\t\t\t} else {\n\t\t\t\tchild.remove();\n\t\t\t}\n\t\t\treturn child;\n\t\t}\n\t\treturn this;\n\t},\n\n\t_removeNamed: function() {\n\t\tvar owner = this._getOwner();\n\t\tif (owner) {\n\t\t\tvar children = owner._children,\n\t\t\t\tnamedChildren = owner._namedChildren,\n\t\t\t\tname = this._name,\n\t\t\t\tnamedArray = namedChildren[name],\n\t\t\t\tindex = namedArray ? namedArray.indexOf(this) : -1;\n\t\t\tif (index !== -1) {\n\t\t\t\tif (children[name] == this)\n\t\t\t\t\tdelete children[name];\n\t\t\t\tnamedArray.splice(index, 1);\n\t\t\t\tif (namedArray.length) {\n\t\t\t\t\tchildren[name] = namedArray[0];\n\t\t\t\t} else {\n\t\t\t\t\tdelete namedChildren[name];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_remove: function(notifySelf, notifyParent) {\n\t\tvar owner = this._getOwner(),\n\t\t\tproject = this._project,\n\t\t\tindex = this._index;\n\t\tif (this._style)\n\t\t\tthis._style._dispose();\n\t\tif (owner) {\n\t\t\tif (this._name)\n\t\t\t\tthis._removeNamed();\n\t\t\tif (index != null) {\n\t\t\t\tif (project._activeLayer === this)\n\t\t\t\t\tproject._activeLayer = this.getNextSibling()\n\t\t\t\t\t\t\t|| this.getPreviousSibling();\n\t\t\t\tBase.splice(owner._children, null, index, 1);\n\t\t\t}\n\t\t\tthis._installEvents(false);\n\t\t\tif (notifySelf && project._changes)\n\t\t\t\tthis._changed(5);\n\t\t\tif (notifyParent)\n\t\t\t\towner._changed(11, this);\n\t\t\tthis._parent = null;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\tremove: function() {\n\t\treturn this._remove(true, true);\n\t},\n\n\treplaceWith: function(item) {\n\t\tvar ok = item && item.insertBelow(this);\n\t\tif (ok)\n\t\t\tthis.remove();\n\t\treturn ok;\n\t},\n\n\tremoveChildren: function(start, end) {\n\t\tif (!this._children)\n\t\t\treturn null;\n\t\tstart = start || 0;\n\t\tend = Base.pick(end, this._children.length);\n\t\tvar removed = Base.splice(this._children, null, start, end - start);\n\t\tfor (var i = removed.length - 1; i >= 0; i--) {\n\t\t\tremoved[i]._remove(true, false);\n\t\t}\n\t\tif (removed.length > 0)\n\t\t\tthis._changed(11);\n\t\treturn removed;\n\t},\n\n\tclear: '#removeChildren',\n\n\treverseChildren: function() {\n\t\tif (this._children) {\n\t\t\tthis._children.reverse();\n\t\t\tfor (var i = 0, l = this._children.length; i < l; i++)\n\t\t\t\tthis._children[i]._index = i;\n\t\t\tthis._changed(11);\n\t\t}\n\t},\n\n\tisEmpty: function(recursively) {\n\t\tvar children = this._children;\n\t\tvar numChildren = children ? children.length : 0;\n\t\tif (recursively) {\n\t\t\tfor (var i = 0; i < numChildren; i++) {\n\t\t\t\tif (!children[i].isEmpty(recursively)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn !numChildren;\n\t},\n\n\tisEditable: function() {\n\t\tvar item = this;\n\t\twhile (item) {\n\t\t\tif (!item._visible || item._locked)\n\t\t\t\treturn false;\n\t\t\titem = item._parent;\n\t\t}\n\t\treturn true;\n\t},\n\n\thasFill: function() {\n\t\treturn this.getStyle().hasFill();\n\t},\n\n\thasStroke: function() {\n\t\treturn this.getStyle().hasStroke();\n\t},\n\n\thasShadow: function() {\n\t\treturn this.getStyle().hasShadow();\n\t},\n\n\t_getOrder: function(item) {\n\t\tfunction getList(item) {\n\t\t\tvar list = [];\n\t\t\tdo {\n\t\t\t\tlist.unshift(item);\n\t\t\t} while (item = item._parent);\n\t\t\treturn list;\n\t\t}\n\t\tvar list1 = getList(this),\n\t\t\tlist2 = getList(item);\n\t\tfor (var i = 0, l = Math.min(list1.length, list2.length); i < l; i++) {\n\t\t\tif (list1[i] != list2[i]) {\n\t\t\t\treturn list1[i]._index < list2[i]._index ? 1 : -1;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t},\n\n\thasChildren: function() {\n\t\treturn this._children && this._children.length > 0;\n\t},\n\n\tisInserted: function() {\n\t\treturn this._parent ? this._parent.isInserted() : false;\n\t},\n\n\tisAbove: function(item) {\n\t\treturn this._getOrder(item) === -1;\n\t},\n\n\tisBelow: function(item) {\n\t\treturn this._getOrder(item) === 1;\n\t},\n\n\tisParent: function(item) {\n\t\treturn this._parent === item;\n\t},\n\n\tisChild: function(item) {\n\t\treturn item && item._parent === this;\n\t},\n\n\tisDescendant: function(item) {\n\t\tvar parent = this;\n\t\twhile (parent = parent._parent) {\n\t\t\tif (parent === item)\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\tisAncestor: function(item) {\n\t\treturn item ? item.isDescendant(this) : false;\n\t},\n\n\tisSibling: function(item) {\n\t\treturn this._parent === item._parent;\n\t},\n\n\tisGroupedWith: function(item) {\n\t\tvar parent = this._parent;\n\t\twhile (parent) {\n\t\t\tif (parent._parent\n\t\t\t\t&& /^(Group|Layer|CompoundPath)$/.test(parent._class)\n\t\t\t\t&& item.isDescendant(parent))\n\t\t\t\t\treturn true;\n\t\t\tparent = parent._parent;\n\t\t}\n\t\treturn false;\n\t},\n\n}, Base.each(['rotate', 'scale', 'shear', 'skew'], function(key) {\n\tvar rotate = key === 'rotate';\n\tthis[key] = function() {\n\t\tvar args = arguments,\n\t\t\tvalue = (rotate ? Base : Point).read(args),\n\t\t\tcenter = Point.read(args, 0, { readNull: true });\n\t\treturn this.transform(new Matrix()[key](value,\n\t\t\t\tcenter || this.getPosition(true)));\n\t};\n}, {\n\ttranslate: function() {\n\t\tvar mx = new Matrix();\n\t\treturn this.transform(mx.translate.apply(mx, arguments));\n\t},\n\n\ttransform: function(matrix, _applyRecursively, _setApplyMatrix) {\n\t\tvar _matrix = this._matrix,\n\t\t\ttransformMatrix = matrix && !matrix.isIdentity(),\n\t\t\tapplyMatrix = (\n\t\t\t\t_setApplyMatrix && this._canApplyMatrix ||\n\t\t\t\tthis._applyMatrix && (\n\t\t\t\t\ttransformMatrix || !_matrix.isIdentity() ||\n\t\t\t\t\t_applyRecursively && this._children\n\t\t\t\t)\n\t\t\t);\n\t\tif (!transformMatrix && !applyMatrix)\n\t\t\treturn this;\n\t\tif (transformMatrix) {\n\t\t\tif (!matrix.isInvertible() && _matrix.isInvertible())\n\t\t\t\t_matrix._backup = _matrix.getValues();\n\t\t\t_matrix.prepend(matrix, true);\n\t\t\tvar style = this._style,\n\t\t\t\tfillColor = style.getFillColor(true),\n\t\t\t\tstrokeColor = style.getStrokeColor(true);\n\t\t\tif (fillColor)\n\t\t\t\tfillColor.transform(matrix);\n\t\t\tif (strokeColor)\n\t\t\t\tstrokeColor.transform(matrix);\n\t\t}\n\n\t\tif (applyMatrix && (applyMatrix = this._transformContent(\n\t\t\t\t_matrix, _applyRecursively, _setApplyMatrix))) {\n\t\t\tvar pivot = this._pivot;\n\t\t\tif (pivot)\n\t\t\t\t_matrix._transformPoint(pivot, pivot, true);\n\t\t\t_matrix.reset(true);\n\t\t\tif (_setApplyMatrix && this._canApplyMatrix)\n\t\t\t\tthis._applyMatrix = true;\n\t\t}\n\t\tvar bounds = this._bounds,\n\t\t\tposition = this._position;\n\t\tif (transformMatrix || applyMatrix) {\n\t\t\tthis._changed(25);\n\t\t}\n\t\tvar decomp = transformMatrix && bounds && matrix.decompose();\n\t\tif (decomp && decomp.skewing.isZero() && decomp.rotation % 90 === 0) {\n\t\t\tfor (var key in bounds) {\n\t\t\t\tvar cache = bounds[key];\n\t\t\t\tif (cache.nonscaling) {\n\t\t\t\t\tdelete bounds[key];\n\t\t\t\t} else if (applyMatrix || !cache.internal) {\n\t\t\t\t\tvar rect = cache.rect;\n\t\t\t\t\tmatrix._transformBounds(rect, rect);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._bounds = bounds;\n\t\t\tvar cached = bounds[this._getBoundsCacheKey(\n\t\t\t\tthis._boundsOptions || {})];\n\t\t\tif (cached) {\n\t\t\t\tthis._position = this._getPositionFromBounds(cached.rect);\n\t\t\t}\n\t\t} else if (transformMatrix && position && this._pivot) {\n\t\t\tthis._position = matrix._transformPoint(position, position);\n\t\t}\n\t\treturn this;\n\t},\n\n\t_transformContent: function(matrix, applyRecursively, setApplyMatrix) {\n\t\tvar children = this._children;\n\t\tif (children) {\n\t\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\t\tchildren[i].transform(matrix, applyRecursively, setApplyMatrix);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t},\n\n\tglobalToLocal: function() {\n\t\treturn this.getGlobalMatrix(true)._inverseTransform(\n\t\t\t\tPoint.read(arguments));\n\t},\n\n\tlocalToGlobal: function() {\n\t\treturn this.getGlobalMatrix(true)._transformPoint(\n\t\t\t\tPoint.read(arguments));\n\t},\n\n\tparentToLocal: function() {\n\t\treturn this._matrix._inverseTransform(Point.read(arguments));\n\t},\n\n\tlocalToParent: function() {\n\t\treturn this._matrix._transformPoint(Point.read(arguments));\n\t},\n\n\tfitBounds: function(rectangle, fill) {\n\t\trectangle = Rectangle.read(arguments);\n\t\tvar bounds = this.getBounds(),\n\t\t\titemRatio = bounds.height / bounds.width,\n\t\t\trectRatio = rectangle.height / rectangle.width,\n\t\t\tscale = (fill ? itemRatio > rectRatio : itemRatio < rectRatio)\n\t\t\t\t\t? rectangle.width / bounds.width\n\t\t\t\t\t: rectangle.height / bounds.height,\n\t\t\tnewBounds = new Rectangle(new Point(),\n\t\t\t\t\tnew Size(bounds.width * scale, bounds.height * scale));\n\t\tnewBounds.setCenter(rectangle.getCenter());\n\t\tthis.setBounds(newBounds);\n\t}\n}), {\n\n\t_setStyles: function(ctx, param, viewMatrix, strokeMatrix) {\n\t\tvar style = this._style,\n\t\t\tmatrix = this._matrix;\n\t\tif (style.hasFill()) {\n\t\t\tctx.fillStyle = style.getFillColor().toCanvasStyle(ctx, matrix, strokeMatrix);\n\t\t}\n\t\tif (style.hasStroke()) {\n\t\t\tctx.strokeStyle = style.getStrokeColor().toCanvasStyle(ctx, matrix, strokeMatrix);\n\t\t\tctx.lineWidth = style.getStrokeWidth();\n\t\t\tvar strokeJoin = style.getStrokeJoin(),\n\t\t\t\tstrokeCap = style.getStrokeCap(),\n\t\t\t\tmiterLimit = style.getMiterLimit();\n\t\t\tif (strokeJoin)\n\t\t\t\tctx.lineJoin = strokeJoin;\n\t\t\tif (strokeCap)\n\t\t\t\tctx.lineCap = strokeCap;\n\t\t\tif (miterLimit)\n\t\t\t\tctx.miterLimit = miterLimit;\n\t\t\tif (paper.support.nativeDash) {\n\t\t\t\tvar dashArray = style.getDashArray(),\n\t\t\t\t\tdashOffset = style.getDashOffset();\n\t\t\t\tif (dashArray && dashArray.length) {\n\t\t\t\t\tif ('setLineDash' in ctx) {\n\t\t\t\t\t\tctx.setLineDash(dashArray);\n\t\t\t\t\t\tctx.lineDashOffset = dashOffset;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tctx.mozDash = dashArray;\n\t\t\t\t\t\tctx.mozDashOffset = dashOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (style.hasShadow()) {\n\t\t\tvar pixelRatio = param.pixelRatio || 1,\n\t\t\t\tmx = viewMatrix._shiftless().prepend(\n\t\t\t\t\tnew Matrix().scale(pixelRatio, pixelRatio)),\n\t\t\t\tblur = mx.transform(new Point(style.getShadowBlur(), 0)),\n\t\t\t\toffset = mx.transform(this.getShadowOffset());\n\t\t\tctx.shadowColor = style.getShadowColor().toCanvasStyle(ctx);\n\t\t\tctx.shadowBlur = blur.getLength();\n\t\t\tctx.shadowOffsetX = offset.x;\n\t\t\tctx.shadowOffsetY = offset.y;\n\t\t}\n\t},\n\n\tdraw: function(ctx, param, parentStrokeMatrix) {\n\t\tvar updateVersion = this._updateVersion = this._project._updateVersion;\n\t\tif (!this._visible || this._opacity === 0)\n\t\t\treturn;\n\t\tvar matrices = param.matrices,\n\t\t\tviewMatrix = param.viewMatrix,\n\t\t\tmatrix = this._matrix,\n\t\t\tglobalMatrix = matrices[matrices.length - 1].appended(matrix);\n\t\tif (!globalMatrix.isInvertible())\n\t\t\treturn;\n\n\t\tviewMatrix = viewMatrix ? viewMatrix.appended(globalMatrix)\n\t\t\t\t: globalMatrix;\n\n\t\tmatrices.push(globalMatrix);\n\t\tif (param.updateMatrix) {\n\t\t\tthis._globalMatrix = globalMatrix;\n\t\t}\n\n\t\tvar blendMode = this._blendMode,\n\t\t\topacity = Numerical.clamp(this._opacity, 0, 1),\n\t\t\tnormalBlend = blendMode === 'normal',\n\t\t\tnativeBlend = BlendMode.nativeModes[blendMode],\n\t\t\tdirect = normalBlend && opacity === 1\n\t\t\t\t\t|| param.dontStart\n\t\t\t\t\t|| param.clip\n\t\t\t\t\t|| (nativeBlend || normalBlend && opacity < 1)\n\t\t\t\t\t\t&& this._canComposite(),\n\t\t\tpixelRatio = param.pixelRatio || 1,\n\t\t\tmainCtx, itemOffset, prevOffset;\n\t\tif (!direct) {\n\t\t\tvar bounds = this.getStrokeBounds(viewMatrix);\n\t\t\tif (!bounds.width || !bounds.height) {\n\t\t\t\tmatrices.pop();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tprevOffset = param.offset;\n\t\t\titemOffset = param.offset = bounds.getTopLeft().floor();\n\t\t\tmainCtx = ctx;\n\t\t\tctx = CanvasProvider.getContext(bounds.getSize().ceil().add(1)\n\t\t\t\t\t.multiply(pixelRatio));\n\t\t\tif (pixelRatio !== 1)\n\t\t\t\tctx.scale(pixelRatio, pixelRatio);\n\t\t}\n\t\tctx.save();\n\t\tvar strokeMatrix = parentStrokeMatrix\n\t\t\t\t? parentStrokeMatrix.appended(matrix)\n\t\t\t\t: this._canScaleStroke && !this.getStrokeScaling(true)\n\t\t\t\t\t&& viewMatrix,\n\t\t\tclip = !direct && param.clipItem,\n\t\t\ttransform = !strokeMatrix || clip;\n\t\tif (direct) {\n\t\t\tctx.globalAlpha = opacity;\n\t\t\tif (nativeBlend)\n\t\t\t\tctx.globalCompositeOperation = blendMode;\n\t\t} else if (transform) {\n\t\t\tctx.translate(-itemOffset.x, -itemOffset.y);\n\t\t}\n\t\tif (transform) {\n\t\t\t(direct ? matrix : viewMatrix).applyToContext(ctx);\n\t\t}\n\t\tif (clip) {\n\t\t\tparam.clipItem.draw(ctx, param.extend({ clip: true }));\n\t\t}\n\t\tif (strokeMatrix) {\n\t\t\tctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n\t\t\tvar offset = param.offset;\n\t\t\tif (offset)\n\t\t\t\tctx.translate(-offset.x, -offset.y);\n\t\t}\n\t\tthis._draw(ctx, param, viewMatrix, strokeMatrix);\n\t\tctx.restore();\n\t\tmatrices.pop();\n\t\tif (param.clip && !param.dontFinish) {\n\t\t\tctx.clip(this.getFillRule());\n\t\t}\n\t\tif (!direct) {\n\t\t\tBlendMode.process(blendMode, ctx, mainCtx, opacity,\n\t\t\t\t\titemOffset.subtract(prevOffset).multiply(pixelRatio));\n\t\t\tCanvasProvider.release(ctx);\n\t\t\tparam.offset = prevOffset;\n\t\t}\n\t},\n\n\t_isUpdated: function(updateVersion) {\n\t\tvar parent = this._parent;\n\t\tif (parent instanceof CompoundPath)\n\t\t\treturn parent._isUpdated(updateVersion);\n\t\tvar updated = this._updateVersion === updateVersion;\n\t\tif (!updated && parent && parent._visible\n\t\t\t\t&& parent._isUpdated(updateVersion)) {\n\t\t\tthis._updateVersion = updateVersion;\n\t\t\tupdated = true;\n\t\t}\n\t\treturn updated;\n\t},\n\n\t_drawSelection: function(ctx, matrix, size, selectionItems, updateVersion) {\n\t\tvar selection = this._selection,\n\t\t\titemSelected = selection & 1,\n\t\t\tboundsSelected = selection & 2\n\t\t\t\t\t|| itemSelected && this._selectBounds,\n\t\t\tpositionSelected = selection & 4;\n\t\tif (!this._drawSelected)\n\t\t\titemSelected = false;\n\t\tif ((itemSelected || boundsSelected || positionSelected)\n\t\t\t\t&& this._isUpdated(updateVersion)) {\n\t\t\tvar layer,\n\t\t\t\tcolor = this.getSelectedColor(true) || (layer = this.getLayer())\n\t\t\t\t\t&& layer.getSelectedColor(true),\n\t\t\t\tmx = matrix.appended(this.getGlobalMatrix(true)),\n\t\t\t\thalf = size / 2;\n\t\t\tctx.strokeStyle = ctx.fillStyle = color\n\t\t\t\t\t? color.toCanvasStyle(ctx) : '#009dec';\n\t\t\tctx.lineWidth=2.5;\n\t\t\tif (itemSelected)\n\t\t\t\tthis._drawSelected(ctx, mx, selectionItems);\n\t\t\tif (positionSelected) {\n\t\t\t\tvar pos = this.getPosition(true),\n\t\t\t\t\tparent = this._parent,\n\t\t\t\t\tpoint = parent ? parent.localToGlobal(pos) : pos,\n\t\t\t\t\tx = point.x,\n\t\t\t\t\ty = point.y;\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.arc(x, y, half, 0, Math.PI * 2, true);\n\t\t\t\tctx.stroke();\n\t\t\t\tvar deltas = [[0, -1], [1, 0], [0, 1], [-1, 0]],\n\t\t\t\t\tstart = half,\n\t\t\t\t\tend = size + 1;\n\t\t\t\tfor (var i = 0; i < 4; i++) {\n\t\t\t\t\tvar delta = deltas[i],\n\t\t\t\t\t\tdx = delta[0],\n\t\t\t\t\t\tdy = delta[1];\n\t\t\t\t\tctx.moveTo(x + dx * start, y + dy * start);\n\t\t\t\t\tctx.lineTo(x + dx * end, y + dy * end);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (boundsSelected) {\n\t\t\t\tvar coords = mx._transformCorners(this.getInternalBounds());\n\t\t\t\tctx.beginPath();\n\t\t\t\tfor (var i = 0; i < 8; i++) {\n\t\t\t\t\tctx[!i ? 'moveTo' : 'lineTo'](coords[i], coords[++i]);\n\t\t\t\t}\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.stroke();\n\t\t\t\tfor (var i = 0; i < 8; i++) {\n\t\t\t\t\tctx.fillRect(coords[i] - half, coords[++i] - half,\n\t\t\t\t\t\t\tsize, size);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_canComposite: function() {\n\t\treturn false;\n\t}\n}, Base.each(['down', 'drag', 'up', 'move'], function(key) {\n\tthis['removeOn' + Base.capitalize(key)] = function() {\n\t\tvar hash = {};\n\t\thash[key] = true;\n\t\treturn this.removeOn(hash);\n\t};\n}, {\n\n\tremoveOn: function(obj) {\n\t\tfor (var name in obj) {\n\t\t\tif (obj[name]) {\n\t\t\t\tvar key = 'mouse' + name,\n\t\t\t\t\tproject = this._project,\n\t\t\t\t\tsets = project._removeSets = project._removeSets || {};\n\t\t\t\tsets[key] = sets[key] || {};\n\t\t\t\tsets[key][this._id] = this;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n}), {\n\ttween: function(from, to, options) {\n\t\tif (!options) {\n\t\t\toptions = to;\n\t\t\tto = from;\n\t\t\tfrom = null;\n\t\t\tif (!options) {\n\t\t\t\toptions = to;\n\t\t\t\tto = null;\n\t\t\t}\n\t\t}\n\t\tvar easing = options && options.easing,\n\t\t\tstart = options && options.start,\n\t\t\tduration = options != null && (\n\t\t\t\ttypeof options === 'number' ? options : options.duration\n\t\t\t),\n\t\t\ttween = new Tween(this, from, to, duration, easing, start);\n\t\tfunction onFrame(event) {\n\t\t\ttween._handleFrame(event.time * 1000);\n\t\t\tif (!tween.running) {\n\t\t\t\tthis.off('frame', onFrame);\n\t\t\t}\n\t\t}\n\t\tif (duration) {\n\t\t\tthis.on('frame', onFrame);\n\t\t}\n\t\treturn tween;\n\t},\n\n\ttweenTo: function(to, options) {\n\t\treturn this.tween(null, to, options);\n\t},\n\n\ttweenFrom: function(from, options) {\n\t\treturn this.tween(from, null, options);\n\t}\n});\n\nvar Group = Item.extend({\n\t_class: 'Group',\n\t_selectBounds: false,\n\t_selectChildren: true,\n\t_serializeFields: {\n\t\tchildren: []\n\t},\n\n\tinitialize: function Group(arg) {\n\t\tthis._children = [];\n\t\tthis._namedChildren = {};\n\t\tif (!this._initialize(arg))\n\t\t\tthis.addChildren(Array.isArray(arg) ? arg : arguments);\n\t},\n\n\t_changed: function _changed(flags) {\n\t\t_changed.base.call(this, flags);\n\t\tif (flags & 2050) {\n\t\t\tthis._clipItem = undefined;\n\t\t}\n\t},\n\n\t_getClipItem: function() {\n\t\tvar clipItem = this._clipItem;\n\t\tif (clipItem === undefined) {\n\t\t\tclipItem = null;\n\t\t\tvar children = this._children;\n\t\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\t\tif (children[i]._clipMask) {\n\t\t\t\t\tclipItem = children[i];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._clipItem = clipItem;\n\t\t}\n\t\treturn clipItem;\n\t},\n\n\tisClipped: function() {\n\t\treturn !!this._getClipItem();\n\t},\n\n\tsetClipped: function(clipped) {\n\t\tvar child = this.getFirstChild();\n\t\tif (child)\n\t\t\tchild.setClipMask(clipped);\n\t},\n\n\t_getBounds: function _getBounds(matrix, options) {\n\t\tvar clipItem = this._getClipItem();\n\t\treturn clipItem\n\t\t\t? clipItem._getCachedBounds(clipItem._matrix.prepended(matrix),\n\t\t\t\tBase.set({}, options, { stroke: false }))\n\t\t\t: _getBounds.base.call(this, matrix, options);\n\t},\n\n\t_hitTestChildren: function _hitTestChildren(point, options, viewMatrix) {\n\t\tvar clipItem = this._getClipItem();\n\t\treturn (!clipItem || clipItem.contains(point))\n\t\t\t\t&& _hitTestChildren.base.call(this, point, options, viewMatrix,\n\t\t\t\t\tclipItem);\n\t},\n\n\t_draw: function(ctx, param) {\n\t\tvar clip = param.clip,\n\t\t\tclipItem = !clip && this._getClipItem();\n\t\tparam = param.extend({ clipItem: clipItem, clip: false });\n\t\tif (clip) {\n\t\t\tctx.beginPath();\n\t\t\tparam.dontStart = param.dontFinish = true;\n\t\t} else if (clipItem) {\n\t\t\tclipItem.draw(ctx, param.extend({ clip: true }));\n\t\t}\n\t\tvar children = this._children;\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tvar item = children[i];\n\t\t\tif (item !== clipItem)\n\t\t\t\titem.draw(ctx, param);\n\t\t}\n\t}\n});\n\nvar Layer = Group.extend({\n\t_class: 'Layer',\n\n\tinitialize: function Layer() {\n\t\tGroup.apply(this, arguments);\n\t},\n\n\t_getOwner: function() {\n\t\treturn this._parent || this._index != null && this._project;\n\t},\n\n\tisInserted: function isInserted() {\n\t\treturn this._parent ? isInserted.base.call(this) : this._index != null;\n\t},\n\n\tactivate: function() {\n\t\tthis._project._activeLayer = this;\n\t},\n\n\t_hitTestSelf: function() {\n\t}\n});\n\nvar Shape = Item.extend({\n\t_class: 'Shape',\n\t_applyMatrix: false,\n\t_canApplyMatrix: false,\n\t_canScaleStroke: true,\n\t_serializeFields: {\n\t\ttype: null,\n\t\tsize: null,\n\t\tradius: null\n\t},\n\n\tinitialize: function Shape(props, point) {\n\t\tthis._initialize(props, point);\n\t},\n\n\t_equals: function(item) {\n\t\treturn this._type === item._type\n\t\t\t&& this._size.equals(item._size)\n\t\t\t&& Base.equals(this._radius, item._radius);\n\t},\n\n\tcopyContent: function(source) {\n\t\tthis.setType(source._type);\n\t\tthis.setSize(source._size);\n\t\tthis.setRadius(source._radius);\n\t},\n\n\tgetType: function() {\n\t\treturn this._type;\n\t},\n\n\tsetType: function(type) {\n\t\tthis._type = type;\n\t},\n\n\tgetShape: '#getType',\n\tsetShape: '#setType',\n\n\tgetSize: function() {\n\t\tvar size = this._size;\n\t\treturn new LinkedSize(size.width, size.height, this, 'setSize');\n\t},\n\n\tsetSize: function() {\n\t\tvar size = Size.read(arguments);\n\t\tif (!this._size) {\n\t\t\tthis._size = size.clone();\n\t\t} else if (!this._size.equals(size)) {\n\t\t\tvar type = this._type,\n\t\t\t\twidth = size.width,\n\t\t\t\theight = size.height;\n\t\t\tif (type === 'rectangle') {\n\t\t\t\tthis._radius.set(Size.min(this._radius, size.divide(2).abs()));\n\t\t\t} else if (type === 'circle') {\n\t\t\t\twidth = height = (width + height) / 2;\n\t\t\t\tthis._radius = width / 2;\n\t\t\t} else if (type === 'ellipse') {\n\t\t\t\tthis._radius._set(width / 2, height / 2);\n\t\t\t}\n\t\t\tthis._size._set(width, height);\n\t\t\tthis._changed(9);\n\t\t}\n\t},\n\n\tgetRadius: function() {\n\t\tvar rad = this._radius;\n\t\treturn this._type === 'circle'\n\t\t\t\t? rad\n\t\t\t\t: new LinkedSize(rad.width, rad.height, this, 'setRadius');\n\t},\n\n\tsetRadius: function(radius) {\n\t\tvar type = this._type;\n\t\tif (type === 'circle') {\n\t\t\tif (radius === this._radius)\n\t\t\t\treturn;\n\t\t\tvar size = radius * 2;\n\t\t\tthis._radius = radius;\n\t\t\tthis._size._set(size, size);\n\t\t} else {\n\t\t\tradius = Size.read(arguments);\n\t\t\tif (!this._radius) {\n\t\t\t\tthis._radius = radius.clone();\n\t\t\t} else {\n\t\t\t\tif (this._radius.equals(radius))\n\t\t\t\t\treturn;\n\t\t\t\tthis._radius.set(radius);\n\t\t\t\tif (type === 'rectangle') {\n\t\t\t\t\tvar size = Size.max(this._size, radius.multiply(2));\n\t\t\t\t\tthis._size.set(size);\n\t\t\t\t} else if (type === 'ellipse') {\n\t\t\t\t\tthis._size._set(radius.width * 2, radius.height * 2);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._changed(9);\n\t},\n\n\tisEmpty: function() {\n\t\treturn false;\n\t},\n\n\ttoPath: function(insert) {\n\t\tvar path = new Path[Base.capitalize(this._type)]({\n\t\t\tcenter: new Point(),\n\t\t\tsize: this._size,\n\t\t\tradius: this._radius,\n\t\t\tinsert: false\n\t\t});\n\t\tpath.copyAttributes(this);\n\t\tif (paper.settings.applyMatrix)\n\t\t\tpath.setApplyMatrix(true);\n\t\tif (insert === undefined || insert)\n\t\t\tpath.insertAbove(this);\n\t\treturn path;\n\t},\n\n\ttoShape: '#clone',\n\n\t_asPathItem: function() {\n\t\treturn this.toPath(false);\n\t},\n\n\t_draw: function(ctx, param, viewMatrix, strokeMatrix) {\n\t\tvar style = this._style,\n\t\t\thasFill = style.hasFill(),\n\t\t\thasStroke = style.hasStroke(),\n\t\t\tdontPaint = param.dontFinish || param.clip,\n\t\t\tuntransformed = !strokeMatrix;\n\t\tif (hasFill || hasStroke || dontPaint) {\n\t\t\tvar type = this._type,\n\t\t\t\tradius = this._radius,\n\t\t\t\tisCircle = type === 'circle';\n\t\t\tif (!param.dontStart)\n\t\t\t\tctx.beginPath();\n\t\t\tif (untransformed && isCircle) {\n\t\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2, true);\n\t\t\t} else {\n\t\t\t\tvar rx = isCircle ? radius : radius.width,\n\t\t\t\t\try = isCircle ? radius : radius.height,\n\t\t\t\t\tsize = this._size,\n\t\t\t\t\twidth = size.width,\n\t\t\t\t\theight = size.height;\n\t\t\t\tif (untransformed && type === 'rectangle' && rx === 0 && ry === 0) {\n\t\t\t\t\tctx.rect(-width / 2, -height / 2, width, height);\n\t\t\t\t} else {\n\t\t\t\t\tvar x = width / 2,\n\t\t\t\t\t\ty = height / 2,\n\t\t\t\t\t\tkappa = 1 - 0.5522847498307936,\n\t\t\t\t\t\tcx = rx * kappa,\n\t\t\t\t\t\tcy = ry * kappa,\n\t\t\t\t\t\tc = [\n\t\t\t\t\t\t\t-x, -y + ry,\n\t\t\t\t\t\t\t-x, -y + cy,\n\t\t\t\t\t\t\t-x + cx, -y,\n\t\t\t\t\t\t\t-x + rx, -y,\n\t\t\t\t\t\t\tx - rx, -y,\n\t\t\t\t\t\t\tx - cx, -y,\n\t\t\t\t\t\t\tx, -y + cy,\n\t\t\t\t\t\t\tx, -y + ry,\n\t\t\t\t\t\t\tx, y - ry,\n\t\t\t\t\t\t\tx, y - cy,\n\t\t\t\t\t\t\tx - cx, y,\n\t\t\t\t\t\t\tx - rx, y,\n\t\t\t\t\t\t\t-x + rx, y,\n\t\t\t\t\t\t\t-x + cx, y,\n\t\t\t\t\t\t\t-x, y - cy,\n\t\t\t\t\t\t\t-x, y - ry\n\t\t\t\t\t\t];\n\t\t\t\t\tif (strokeMatrix)\n\t\t\t\t\t\tstrokeMatrix.transform(c, c, 32);\n\t\t\t\t\tctx.moveTo(c[0], c[1]);\n\t\t\t\t\tctx.bezierCurveTo(c[2], c[3], c[4], c[5], c[6], c[7]);\n\t\t\t\t\tif (x !== rx)\n\t\t\t\t\t\tctx.lineTo(c[8], c[9]);\n\t\t\t\t\tctx.bezierCurveTo(c[10], c[11], c[12], c[13], c[14], c[15]);\n\t\t\t\t\tif (y !== ry)\n\t\t\t\t\t\tctx.lineTo(c[16], c[17]);\n\t\t\t\t\tctx.bezierCurveTo(c[18], c[19], c[20], c[21], c[22], c[23]);\n\t\t\t\t\tif (x !== rx)\n\t\t\t\t\t\tctx.lineTo(c[24], c[25]);\n\t\t\t\t\tctx.bezierCurveTo(c[26], c[27], c[28], c[29], c[30], c[31]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tctx.closePath();\n\t\t}\n\t\tif (!dontPaint && (hasFill || hasStroke)) {\n\t\t\tthis._setStyles(ctx, param, viewMatrix, strokeMatrix);\n\t\t\tif (hasFill) {\n\t\t\t\tctx.fill(style.getFillRule());\n\t\t\t\tctx.shadowColor = 'rgba(0,0,0,0)';\n\t\t\t}\n\t\t\tif (hasStroke)\n\t\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\t_canComposite: function() {\n\t\treturn !(this.hasFill() && this.hasStroke());\n\t},\n\n\t_getBounds: function(matrix, options) {\n\t\tvar rect = new Rectangle(this._size).setCenter(0, 0),\n\t\t\tstyle = this._style,\n\t\t\tstrokeWidth = options.stroke && style.hasStroke()\n\t\t\t\t\t&& style.getStrokeWidth();\n\t\tif (matrix)\n\t\t\trect = matrix._transformBounds(rect);\n\t\treturn strokeWidth\n\t\t\t\t? rect.expand(Path._getStrokePadding(strokeWidth,\n\t\t\t\t\tthis._getStrokeMatrix(matrix, options)))\n\t\t\t\t: rect;\n\t}\n},\nnew function() {\n\tfunction getCornerCenter(that, point, expand) {\n\t\tvar radius = that._radius;\n\t\tif (!radius.isZero()) {\n\t\t\tvar halfSize = that._size.divide(2);\n\t\t\tfor (var q = 1; q <= 4; q++) {\n\t\t\t\tvar dir = new Point(q > 1 && q < 4 ? -1 : 1, q > 2 ? -1 : 1),\n\t\t\t\t\tcorner = dir.multiply(halfSize),\n\t\t\t\t\tcenter = corner.subtract(dir.multiply(radius)),\n\t\t\t\t\trect = new Rectangle(\n\t\t\t\t\t\t\texpand ? corner.add(dir.multiply(expand)) : corner,\n\t\t\t\t\t\t\tcenter);\n\t\t\t\tif (rect.contains(point))\n\t\t\t\t\treturn { point: center, quadrant: q };\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction isOnEllipseStroke(point, radius, padding, quadrant) {\n\t\tvar vector = point.divide(radius);\n\t\treturn (!quadrant || vector.isInQuadrant(quadrant)) &&\n\t\t\t\tvector.subtract(vector.normalize()).multiply(radius)\n\t\t\t\t\t.divide(padding).length <= 1;\n\t}\n\n\treturn {\n\t\t_contains: function _contains(point) {\n\t\t\tif (this._type === 'rectangle') {\n\t\t\t\tvar center = getCornerCenter(this, point);\n\t\t\t\treturn center\n\t\t\t\t\t\t? point.subtract(center.point).divide(this._radius)\n\t\t\t\t\t\t\t.getLength() <= 1\n\t\t\t\t\t\t: _contains.base.call(this, point);\n\t\t\t} else {\n\t\t\t\treturn point.divide(this.size).getLength() <= 0.5;\n\t\t\t}\n\t\t},\n\n\t\t_hitTestSelf: function _hitTestSelf(point, options, viewMatrix,\n\t\t\t\tstrokeMatrix) {\n\t\t\tvar hit = false,\n\t\t\t\tstyle = this._style,\n\t\t\t\thitStroke = options.stroke && style.hasStroke(),\n\t\t\t\thitFill = options.fill && style.hasFill();\n\t\t\tif (hitStroke || hitFill) {\n\t\t\t\tvar type = this._type,\n\t\t\t\t\tradius = this._radius,\n\t\t\t\t\tstrokeRadius = hitStroke ? style.getStrokeWidth() / 2 : 0,\n\t\t\t\t\tstrokePadding = options._tolerancePadding.add(\n\t\t\t\t\t\tPath._getStrokePadding(strokeRadius,\n\t\t\t\t\t\t\t!style.getStrokeScaling() && strokeMatrix));\n\t\t\t\tif (type === 'rectangle') {\n\t\t\t\t\tvar padding = strokePadding.multiply(2),\n\t\t\t\t\t\tcenter = getCornerCenter(this, point, padding);\n\t\t\t\t\tif (center) {\n\t\t\t\t\t\thit = isOnEllipseStroke(point.subtract(center.point),\n\t\t\t\t\t\t\t\tradius, strokePadding, center.quadrant);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar rect = new Rectangle(this._size).setCenter(0, 0),\n\t\t\t\t\t\t\touter = rect.expand(padding),\n\t\t\t\t\t\t\tinner = rect.expand(padding.negate());\n\t\t\t\t\t\thit = outer._containsPoint(point)\n\t\t\t\t\t\t\t\t&& !inner._containsPoint(point);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\thit = isOnEllipseStroke(point, radius, strokePadding);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn hit ? new HitResult(hitStroke ? 'stroke' : 'fill', this)\n\t\t\t\t\t: _hitTestSelf.base.apply(this, arguments);\n\t\t}\n\t};\n}, {\n\nstatics: new function() {\n\tfunction createShape(type, point, size, radius, args) {\n\t\tvar item = Base.create(Shape.prototype);\n\t\titem._type = type;\n\t\titem._size = size;\n\t\titem._radius = radius;\n\t\titem._initialize(Base.getNamed(args), point);\n\t\treturn item;\n\t}\n\n\treturn {\n\t\tCircle: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tcenter = Point.readNamed(args, 'center'),\n\t\t\t\tradius = Base.readNamed(args, 'radius');\n\t\t\treturn createShape('circle', center, new Size(radius * 2), radius,\n\t\t\t\t\targs);\n\t\t},\n\n\t\tRectangle: function() {\n\t\t\tvar args = arguments,\n\t\t\t\trect = Rectangle.readNamed(args, 'rectangle'),\n\t\t\t\tradius = Size.min(Size.readNamed(args, 'radius'),\n\t\t\t\t\t\trect.getSize(true).divide(2));\n\t\t\treturn createShape('rectangle', rect.getCenter(true),\n\t\t\t\t\trect.getSize(true), radius, args);\n\t\t},\n\n\t\tEllipse: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tellipse = Shape._readEllipse(args),\n\t\t\t\tradius = ellipse.radius;\n\t\t\treturn createShape('ellipse', ellipse.center, radius.multiply(2),\n\t\t\t\t\tradius, args);\n\t\t},\n\n\t\t_readEllipse: function(args) {\n\t\t\tvar center,\n\t\t\t\tradius;\n\t\t\tif (Base.hasNamed(args, 'radius')) {\n\t\t\t\tcenter = Point.readNamed(args, 'center');\n\t\t\t\tradius = Size.readNamed(args, 'radius');\n\t\t\t} else {\n\t\t\t\tvar rect = Rectangle.readNamed(args, 'rectangle');\n\t\t\t\tcenter = rect.getCenter(true);\n\t\t\t\tradius = rect.getSize(true).divide(2);\n\t\t\t}\n\t\t\treturn { center: center, radius: radius };\n\t\t}\n\t};\n}});\n\nvar Raster = Item.extend({\n\t_class: 'Raster',\n\t_applyMatrix: false,\n\t_canApplyMatrix: false,\n\t_boundsOptions: { stroke: false, handle: false },\n\t_serializeFields: {\n\t\tcrossOrigin: null,\n\t\tsource: null\n\t},\n\t_prioritize: ['crossOrigin'],\n\t_smoothing: false,\n\tbeans: true,\n\n\tinitialize: function Raster(source, position) {\n\t\tif (!this._initialize(source,\n\t\t\t\tposition !== undefined && Point.read(arguments))) {\n\t\t\tvar image,\n\t\t\t\ttype = typeof source,\n\t\t\t\tobject = type === 'string'\n\t\t\t\t\t? document.getElementById(source)\n\t\t\t\t\t: type  === 'object'\n\t\t\t\t\t\t? source\n\t\t\t\t\t\t: null;\n\t\t\tif (object && object !== Item.NO_INSERT) {\n\t\t\t\tif (object.getContext || object.naturalHeight != null) {\n\t\t\t\t\timage = object;\n\t\t\t\t} else if (object) {\n\t\t\t\t\tvar size = Size.read(arguments);\n\t\t\t\t\tif (!size.isZero()) {\n\t\t\t\t\t\timage = CanvasProvider.getCanvas(size);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (image) {\n\t\t\t\tthis.setImage(image);\n\t\t\t} else {\n\t\t\t\tthis.setSource(source);\n\t\t\t}\n\t\t}\n\t\tif (!this._size) {\n\t\t\tthis._size = new Size();\n\t\t\tthis._loaded = false;\n\t\t}\n\t},\n\n\t_equals: function(item) {\n\t\treturn this.getSource() === item.getSource();\n\t},\n\n\tcopyContent: function(source) {\n\t\tvar image = source._image,\n\t\t\tcanvas = source._canvas;\n\t\tif (image) {\n\t\t\tthis._setImage(image);\n\t\t} else if (canvas) {\n\t\t\tvar copyCanvas = CanvasProvider.getCanvas(source._size);\n\t\t\tcopyCanvas.getContext('2d').drawImage(canvas, 0, 0);\n\t\t\tthis._setImage(copyCanvas);\n\t\t}\n\t\tthis._crossOrigin = source._crossOrigin;\n\t},\n\n\tgetSize: function() {\n\t\tvar size = this._size;\n\t\treturn new LinkedSize(size ? size.width : 0, size ? size.height : 0,\n\t\t\t\tthis, 'setSize');\n\t},\n\n\tsetSize: function() {\n\t\tvar size = Size.read(arguments);\n\t\tif (!size.equals(this._size)) {\n\t\t\tif (size.width > 0 && size.height > 0) {\n\t\t\t\tvar element = this.getElement();\n\t\t\t\tthis._setImage(CanvasProvider.getCanvas(size));\n\t\t\t\tif (element)\n\t\t\t\t\tthis.getContext(true).drawImage(element, 0, 0,\n\t\t\t\t\t\t\tsize.width, size.height);\n\t\t\t} else {\n\t\t\t\tif (this._canvas)\n\t\t\t\t\tCanvasProvider.release(this._canvas);\n\t\t\t\tthis._size = size.clone();\n\t\t\t}\n\t\t}\n\t},\n\n\tgetWidth: function() {\n\t\treturn this._size ? this._size.width : 0;\n\t},\n\n\tsetWidth: function(width) {\n\t\tthis.setSize(width, this.getHeight());\n\t},\n\n\tgetHeight: function() {\n\t\treturn this._size ? this._size.height : 0;\n\t},\n\n\tsetHeight: function(height) {\n\t\tthis.setSize(this.getWidth(), height);\n\t},\n\n\tgetLoaded: function() {\n\t\treturn this._loaded;\n\t},\n\n\tisEmpty: function() {\n\t\tvar size = this._size;\n\t\treturn !size || size.width === 0 && size.height === 0;\n\t},\n\n\tgetResolution: function() {\n\t\tvar matrix = this._matrix,\n\t\t\torig = new Point(0, 0).transform(matrix),\n\t\t\tu = new Point(1, 0).transform(matrix).subtract(orig),\n\t\t\tv = new Point(0, 1).transform(matrix).subtract(orig);\n\t\treturn new Size(\n\t\t\t72 / u.getLength(),\n\t\t\t72 / v.getLength()\n\t\t);\n\t},\n\n\tgetPpi: '#getResolution',\n\n\tgetImage: function() {\n\t\treturn this._image;\n\t},\n\n\tsetImage: function(image) {\n\t\tvar that = this;\n\n\t\tfunction emit(event) {\n\t\t\tvar view = that.getView(),\n\t\t\t\ttype = event && event.type || 'load';\n\t\t\tif (view && that.responds(type)) {\n\t\t\t\tpaper = view._scope;\n\t\t\t\tthat.emit(type, new Event(event));\n\t\t\t}\n\t\t}\n\n\t\tthis._setImage(image);\n\t\tif (this._loaded) {\n\t\t\tsetTimeout(emit, 0);\n\t\t} else if (image) {\n\t\t\tDomEvent.add(image, {\n\t\t\t\tload: function(event) {\n\t\t\t\t\tthat._setImage(image);\n\t\t\t\t\temit(event);\n\t\t\t\t},\n\t\t\t\terror: emit\n\t\t\t});\n\t\t}\n\t},\n\n\t_setImage: function(image) {\n\t\tif (this._canvas)\n\t\t\tCanvasProvider.release(this._canvas);\n\t\tif (image && image.getContext) {\n\t\t\tthis._image = null;\n\t\t\tthis._canvas = image;\n\t\t\tthis._loaded = true;\n\t\t} else {\n\t\t\tthis._image = image;\n\t\t\tthis._canvas = null;\n\t\t\tthis._loaded = !!(image && image.src && image.complete);\n\t\t}\n\t\tthis._size = new Size(\n\t\t\t\timage ? image.naturalWidth || image.width : 0,\n\t\t\t\timage ? image.naturalHeight || image.height : 0);\n\t\tthis._context = null;\n\t\tthis._changed(1033);\n\t},\n\n\tgetCanvas: function() {\n\t\tif (!this._canvas) {\n\t\t\tvar ctx = CanvasProvider.getContext(this._size);\n\t\t\ttry {\n\t\t\t\tif (this._image)\n\t\t\t\t\tctx.drawImage(this._image, 0, 0);\n\t\t\t\tthis._canvas = ctx.canvas;\n\t\t\t} catch (e) {\n\t\t\t\tCanvasProvider.release(ctx);\n\t\t\t}\n\t\t}\n\t\treturn this._canvas;\n\t},\n\n\tsetCanvas: '#setImage',\n\n\tgetContext: function(_change) {\n\t\tif (!this._context)\n\t\t\tthis._context = this.getCanvas().getContext('2d');\n\t\tif (_change) {\n\t\t\tthis._image = null;\n\t\t\tthis._changed(1025);\n\t\t}\n\t\treturn this._context;\n\t},\n\n\tsetContext: function(context) {\n\t\tthis._context = context;\n\t},\n\n\tgetSource: function() {\n\t\tvar image = this._image;\n\t\treturn image && image.src || this.toDataURL();\n\t},\n\n\tsetSource: function(src) {\n\t\tvar image = new self.Image(),\n\t\t\tcrossOrigin = this._crossOrigin;\n\t\tif (crossOrigin)\n\t\t\timage.crossOrigin = crossOrigin;\n\t\tif (src)\n\t\t\timage.src = src;\n\t\tthis.setImage(image);\n\t},\n\n\tgetCrossOrigin: function() {\n\t\tvar image = this._image;\n\t\treturn image && image.crossOrigin || this._crossOrigin || '';\n\t},\n\n\tsetCrossOrigin: function(crossOrigin) {\n\t\tthis._crossOrigin = crossOrigin;\n\t\tvar image = this._image;\n\t\tif (image)\n\t\t\timage.crossOrigin = crossOrigin;\n\t},\n\n\tgetSmoothing: function() {\n\t\treturn this._smoothing;\n\t},\n\n\tsetSmoothing: function(smoothing) {\n\t\tthis._smoothing = smoothing;\n\t\tthis._changed(257);\n\t},\n\n\tgetElement: function() {\n\t\treturn this._canvas || this._loaded && this._image;\n\t}\n}, {\n\tbeans: false,\n\n\tgetSubCanvas: function() {\n\t\tvar rect = Rectangle.read(arguments),\n\t\t\tctx = CanvasProvider.getContext(rect.getSize());\n\t\tvar clippedStartX = Math.max(0, rect.x);\n\t\tvar clippedStartY = Math.max(0, rect.y);\n\t\tvar clippedEndX = Math.min(this.getCanvas().width, rect.x + rect.width);\n\t\tvar clippedEndY = Math.min(this.getCanvas().height, rect.y + rect.height);\n\t\tctx.drawImage(this.getCanvas(),\n\t\t\tclippedStartX, clippedStartY,\n\t\t\tclippedEndX - clippedStartX, clippedEndY - clippedStartY,\n\t\t\tclippedStartX - rect.x, clippedStartY - rect.y,\n\t\t\tclippedEndX - clippedStartX, clippedEndY - clippedStartY\n\t\t);\n\t\treturn ctx.canvas;\n\t},\n\n\tgetSubRaster: function() {\n\t\tvar rect = Rectangle.read(arguments),\n\t\t\traster = new Raster(Item.NO_INSERT);\n\t\traster._setImage(this.getSubCanvas(rect));\n\t\traster.translate(rect.getCenter().subtract(this.getSize().divide(2)));\n\t\traster._matrix.prepend(this._matrix);\n\t\traster.insertAbove(this);\n\t\treturn raster;\n\t},\n\n\ttoDataURL: function() {\n\t\tvar image = this._image,\n\t\t\tsrc = image && image.src;\n\t\tif (/^data:/.test(src))\n\t\t\treturn src;\n\t\tvar canvas = this.getCanvas();\n\t\treturn canvas ? canvas.toDataURL.apply(canvas, arguments) : null;\n\t},\n\n\tdrawImage: function(image ) {\n\t\tvar point = Point.read(arguments, 1);\n\t\tthis.getContext(true).drawImage(image, point.x, point.y);\n\t},\n\n\tgetAverageColor: function(object) {\n\t\tvar bounds, path;\n\t\tif (!object) {\n\t\t\tbounds = this.getBounds();\n\t\t} else if (object instanceof PathItem) {\n\t\t\tpath = object;\n\t\t\tbounds = object.getBounds();\n\t\t} else if (typeof object === 'object') {\n\t\t\tif ('width' in object) {\n\t\t\t\tbounds = new Rectangle(object);\n\t\t\t} else if ('x' in object) {\n\t\t\t\tbounds = new Rectangle(object.x - 0.5, object.y - 0.5, 1, 1);\n\t\t\t}\n\t\t}\n\t\tif (!bounds)\n\t\t\treturn null;\n\t\tvar sampleSize = 32,\n\t\t\twidth = Math.min(bounds.width, sampleSize),\n\t\t\theight = Math.min(bounds.height, sampleSize);\n\t\tvar ctx = Raster._sampleContext;\n\t\tif (!ctx) {\n\t\t\tctx = Raster._sampleContext = CanvasProvider.getContext(\n\t\t\t\t\tnew Size(sampleSize));\n\t\t} else {\n\t\t\tctx.clearRect(0, 0, sampleSize + 1, sampleSize + 1);\n\t\t}\n\t\tctx.save();\n\t\tvar matrix = new Matrix()\n\t\t\t\t.scale(width / bounds.width, height / bounds.height)\n\t\t\t\t.translate(-bounds.x, -bounds.y);\n\t\tmatrix.applyToContext(ctx);\n\t\tif (path)\n\t\t\tpath.draw(ctx, new Base({ clip: true, matrices: [matrix] }));\n\t\tthis._matrix.applyToContext(ctx);\n\t\tvar element = this.getElement(),\n\t\t\tsize = this._size;\n\t\tif (element)\n\t\t\tctx.drawImage(element, -size.width / 2, -size.height / 2);\n\t\tctx.restore();\n\t\tvar pixels = ctx.getImageData(0.5, 0.5, Math.ceil(width),\n\t\t\t\tMath.ceil(height)).data,\n\t\t\tchannels = [0, 0, 0],\n\t\t\ttotal = 0;\n\t\tfor (var i = 0, l = pixels.length; i < l; i += 4) {\n\t\t\tvar alpha = pixels[i + 3];\n\t\t\ttotal += alpha;\n\t\t\talpha /= 255;\n\t\t\tchannels[0] += pixels[i] * alpha;\n\t\t\tchannels[1] += pixels[i + 1] * alpha;\n\t\t\tchannels[2] += pixels[i + 2] * alpha;\n\t\t}\n\t\tfor (var i = 0; i < 3; i++)\n\t\t\tchannels[i] /= total;\n\t\treturn total ? Color.read(channels) : null;\n\t},\n\n\tgetPixel: function() {\n\t\tvar point = Point.read(arguments);\n\t\tvar data = this.getContext().getImageData(point.x, point.y, 1, 1).data;\n\t\treturn new Color('rgb', [data[0] / 255, data[1] / 255, data[2] / 255],\n\t\t\t\tdata[3] / 255);\n\t},\n\n\tsetPixel: function() {\n\t\tvar args = arguments,\n\t\t\tpoint = Point.read(args),\n\t\t\tcolor = Color.read(args),\n\t\t\tcomponents = color._convert('rgb'),\n\t\t\talpha = color._alpha,\n\t\t\tctx = this.getContext(true),\n\t\t\timageData = ctx.createImageData(1, 1),\n\t\t\tdata = imageData.data;\n\t\tdata[0] = components[0] * 255;\n\t\tdata[1] = components[1] * 255;\n\t\tdata[2] = components[2] * 255;\n\t\tdata[3] = alpha != null ? alpha * 255 : 255;\n\t\tctx.putImageData(imageData, point.x, point.y);\n\t},\n\n\tclear: function() {\n\t\tvar size = this._size;\n\t\tthis.getContext(true).clearRect(0, 0, size.width + 1, size.height + 1);\n\t},\n\n\tcreateImageData: function() {\n\t\tvar size = Size.read(arguments);\n\t\treturn this.getContext().createImageData(size.width, size.height);\n\t},\n\n\tgetImageData: function() {\n\t\tvar rect = Rectangle.read(arguments);\n\t\tif (rect.isEmpty())\n\t\t\trect = new Rectangle(this._size);\n\t\treturn this.getContext().getImageData(rect.x, rect.y,\n\t\t\t\trect.width, rect.height);\n\t},\n\n\tsetImageData: function(data ) {\n\t\tvar point = Point.read(arguments, 1);\n\t\tthis.getContext(true).putImageData(data, point.x, point.y);\n\t},\n\n\t_getBounds: function(matrix, options) {\n\t\tvar rect = new Rectangle(this._size).setCenter(0, 0);\n\t\treturn matrix ? matrix._transformBounds(rect) : rect;\n\t},\n\n\t_hitTestSelf: function(point) {\n\t\tif (this._contains(point)) {\n\t\t\tvar that = this;\n\t\t\treturn new HitResult('pixel', that, {\n\t\t\t\toffset: point.add(that._size.divide(2)).round(),\n\t\t\t\tcolor: {\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\treturn that.getPixel(this.offset);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\n\t_draw: function(ctx, param, viewMatrix) {\n\t\tvar element = this.getElement();\n\t\tif (element && element.width > 0 && element.height > 0) {\n\t\t\tctx.globalAlpha = Numerical.clamp(this._opacity, 0, 1);\n\n\t\t\tthis._setStyles(ctx, param, viewMatrix);\n\n\t\t\tDomElement.setPrefixed(\n\t\t\t\tctx, 'imageSmoothingEnabled', this._smoothing\n\t\t\t);\n\n\t\t\tctx.drawImage(element,\n\t\t\t\t\t-this._size.width / 2, -this._size.height / 2);\n\t\t}\n\t},\n\n\t_canComposite: function() {\n\t\treturn true;\n\t}\n});\n\nvar SymbolItem = Item.extend({\n\t_class: 'SymbolItem',\n\t_applyMatrix: false,\n\t_canApplyMatrix: false,\n\t_boundsOptions: { stroke: true },\n\t_serializeFields: {\n\t\tsymbol: null\n\t},\n\n\tinitialize: function SymbolItem(arg0, arg1) {\n\t\tif (!this._initialize(arg0,\n\t\t\t\targ1 !== undefined && Point.read(arguments, 1)))\n\t\t\tthis.setDefinition(arg0 instanceof SymbolDefinition ?\n\t\t\t\t\targ0 : new SymbolDefinition(arg0));\n\t},\n\n\t_equals: function(item) {\n\t\treturn this._definition === item._definition;\n\t},\n\n\tcopyContent: function(source) {\n\t\tthis.setDefinition(source._definition);\n\t},\n\n\tgetDefinition: function() {\n\t\treturn this._definition;\n\t},\n\n\tsetDefinition: function(definition) {\n\t\tthis._definition = definition;\n\t\tthis._changed(9);\n\t},\n\n\tgetSymbol: '#getDefinition',\n\tsetSymbol: '#setDefinition',\n\n\tisEmpty: function() {\n\t\treturn this._definition._item.isEmpty();\n\t},\n\n\t_getBounds: function(matrix, options) {\n\t\tvar item = this._definition._item;\n\t\treturn item._getCachedBounds(item._matrix.prepended(matrix), options);\n\t},\n\n\t_hitTestSelf: function(point, options, viewMatrix) {\n\t\tvar opts = options.extend({ all: false });\n\t\tvar res = this._definition._item._hitTest(point, opts, viewMatrix);\n\t\tif (res)\n\t\t\tres.item = this;\n\t\treturn res;\n\t},\n\n\t_draw: function(ctx, param) {\n\t\tthis._definition._item.draw(ctx, param);\n\t}\n\n});\n\nvar SymbolDefinition = Base.extend({\n\t_class: 'SymbolDefinition',\n\n\tinitialize: function SymbolDefinition(item, dontCenter) {\n\t\tthis._id = UID.get();\n\t\tthis.project = paper.project;\n\t\tif (item)\n\t\t\tthis.setItem(item, dontCenter);\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\treturn dictionary.add(this, function() {\n\t\t\treturn Base.serialize([this._class, this._item],\n\t\t\t\t\toptions, false, dictionary);\n\t\t});\n\t},\n\n\t_changed: function(flags) {\n\t\tif (flags & 8)\n\t\t\tItem._clearBoundsCache(this);\n\t\tif (flags & 1)\n\t\t\tthis.project._changed(flags);\n\t},\n\n\tgetItem: function() {\n\t\treturn this._item;\n\t},\n\n\tsetItem: function(item, _dontCenter) {\n\t\tif (item._symbol)\n\t\t\titem = item.clone();\n\t\tif (this._item)\n\t\t\tthis._item._symbol = null;\n\t\tthis._item = item;\n\t\titem.remove();\n\t\titem.setSelected(false);\n\t\tif (!_dontCenter)\n\t\t\titem.setPosition(new Point());\n\t\titem._symbol = this;\n\t\tthis._changed(9);\n\t},\n\n\tgetDefinition: '#getItem',\n\tsetDefinition: '#setItem',\n\n\tplace: function(position) {\n\t\treturn new SymbolItem(this, position);\n\t},\n\n\tclone: function() {\n\t\treturn new SymbolDefinition(this._item.clone(false));\n\t},\n\n\tequals: function(symbol) {\n\t\treturn symbol === this\n\t\t\t\t|| symbol && this._item.equals(symbol._item)\n\t\t\t\t|| false;\n\t}\n});\n\nvar HitResult = Base.extend({\n\t_class: 'HitResult',\n\n\tinitialize: function HitResult(type, item, values) {\n\t\tthis.type = type;\n\t\tthis.item = item;\n\t\tif (values)\n\t\t\tthis.inject(values);\n\t},\n\n\tstatics: {\n\t\tgetOptions: function(args) {\n\t\t\tvar options = args && Base.read(args);\n\t\t\treturn new Base({\n\t\t\t\ttype: null,\n\t\t\t\ttolerance: paper.settings.hitTolerance,\n\t\t\t\tfill: !options,\n\t\t\t\tstroke: !options,\n\t\t\t\tsegments: !options,\n\t\t\t\thandles: false,\n\t\t\t\tends: false,\n\t\t\t\tposition: false,\n\t\t\t\tcenter: false,\n\t\t\t\tbounds: false,\n\t\t\t\tguides: false,\n\t\t\t\tselected: false\n\t\t\t}, options);\n\t\t}\n\t}\n});\n\nvar Segment = Base.extend({\n\t_class: 'Segment',\n\tbeans: true,\n\t_selection: 0,\n\n\tinitialize: function Segment(arg0, arg1, arg2, arg3, arg4, arg5) {\n\t\tvar count = arguments.length,\n\t\t\tpoint, handleIn, handleOut, selection;\n\t\tif (count > 0) {\n\t\t\tif (arg0 == null || typeof arg0 === 'object') {\n\t\t\t\tif (count === 1 && arg0 && 'point' in arg0) {\n\t\t\t\t\tpoint = arg0.point;\n\t\t\t\t\thandleIn = arg0.handleIn;\n\t\t\t\t\thandleOut = arg0.handleOut;\n\t\t\t\t\tselection = arg0.selection;\n\t\t\t\t} else {\n\t\t\t\t\tpoint = arg0;\n\t\t\t\t\thandleIn = arg1;\n\t\t\t\t\thandleOut = arg2;\n\t\t\t\t\tselection = arg3;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tpoint = [ arg0, arg1 ];\n\t\t\t\thandleIn = arg2 !== undefined ? [ arg2, arg3 ] : null;\n\t\t\t\thandleOut = arg4 !== undefined ? [ arg4, arg5 ] : null;\n\t\t\t}\n\t\t}\n\t\tnew SegmentPoint(point, this, '_point');\n\t\tnew SegmentPoint(handleIn, this, '_handleIn');\n\t\tnew SegmentPoint(handleOut, this, '_handleOut');\n\t\tif (selection)\n\t\t\tthis.setSelection(selection);\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\tvar point = this._point,\n\t\t\tselection = this._selection,\n\t\t\tobj = selection || this.hasHandles()\n\t\t\t\t\t? [point, this._handleIn, this._handleOut]\n\t\t\t\t\t: point;\n\t\tif (selection)\n\t\t\tobj.push(selection);\n\t\treturn Base.serialize(obj, options, true, dictionary);\n\t},\n\n\t_changed: function(point) {\n\t\tvar path = this._path;\n\t\tif (!path)\n\t\t\treturn;\n\t\tvar curves = path._curves,\n\t\t\tindex = this._index,\n\t\t\tcurve;\n\t\tif (curves) {\n\t\t\tif ((!point || point === this._point || point === this._handleIn)\n\t\t\t\t\t&& (curve = index > 0 ? curves[index - 1] : path._closed\n\t\t\t\t\t\t? curves[curves.length - 1] : null))\n\t\t\t\tcurve._changed();\n\t\t\tif ((!point || point === this._point || point === this._handleOut)\n\t\t\t\t\t&& (curve = curves[index]))\n\t\t\t\tcurve._changed();\n\t\t}\n\t\tpath._changed(41);\n\t},\n\n\tgetPoint: function() {\n\t\treturn this._point;\n\t},\n\n\tsetPoint: function() {\n\t\tthis._point.set(Point.read(arguments));\n\t},\n\n\tgetHandleIn: function() {\n\t\treturn this._handleIn;\n\t},\n\n\tsetHandleIn: function() {\n\t\tthis._handleIn.set(Point.read(arguments));\n\t},\n\n\tgetHandleOut: function() {\n\t\treturn this._handleOut;\n\t},\n\n\tsetHandleOut: function() {\n\t\tthis._handleOut.set(Point.read(arguments));\n\t},\n\n\thasHandles: function() {\n\t\treturn !this._handleIn.isZero() || !this._handleOut.isZero();\n\t},\n\n\tisSmooth: function() {\n\t\tvar handleIn = this._handleIn,\n\t\t\thandleOut = this._handleOut;\n\t\treturn !handleIn.isZero() && !handleOut.isZero()\n\t\t\t\t&& handleIn.isCollinear(handleOut);\n\t},\n\n\tclearHandles: function() {\n\t\tthis._handleIn._set(0, 0);\n\t\tthis._handleOut._set(0, 0);\n\t},\n\n\tgetSelection: function() {\n\t\treturn this._selection;\n\t},\n\n\tsetSelection: function(selection) {\n\t\tvar oldSelection = this._selection,\n\t\t\tpath = this._path;\n\t\tthis._selection = selection = selection || 0;\n\t\tif (path && selection !== oldSelection) {\n\t\t\tpath._updateSelection(this, oldSelection, selection);\n\t\t\tpath._changed(257);\n\t\t}\n\t},\n\n\t_changeSelection: function(flag, selected) {\n\t\tvar selection = this._selection;\n\t\tthis.setSelection(selected ? selection | flag : selection & ~flag);\n\t},\n\n\tisSelected: function() {\n\t\treturn !!(this._selection & 7);\n\t},\n\n\tsetSelected: function(selected) {\n\t\tthis._changeSelection(7, selected);\n\t},\n\n\tgetIndex: function() {\n\t\treturn this._index !== undefined ? this._index : null;\n\t},\n\n\tgetPath: function() {\n\t\treturn this._path || null;\n\t},\n\n\tgetCurve: function() {\n\t\tvar path = this._path,\n\t\t\tindex = this._index;\n\t\tif (path) {\n\t\t\tif (index > 0 && !path._closed\n\t\t\t\t\t&& index === path._segments.length - 1)\n\t\t\t\tindex--;\n\t\t\treturn path.getCurves()[index] || null;\n\t\t}\n\t\treturn null;\n\t},\n\n\tgetLocation: function() {\n\t\tvar curve = this.getCurve();\n\t\treturn curve\n\t\t\t\t? new CurveLocation(curve, this === curve._segment1 ? 0 : 1)\n\t\t\t\t: null;\n\t},\n\n\tgetNext: function() {\n\t\tvar segments = this._path && this._path._segments;\n\t\treturn segments && (segments[this._index + 1]\n\t\t\t\t|| this._path._closed && segments[0]) || null;\n\t},\n\n\tsmooth: function(options, _first, _last) {\n\t\tvar opts = options || {},\n\t\t\ttype = opts.type,\n\t\t\tfactor = opts.factor,\n\t\t\tprev = this.getPrevious(),\n\t\t\tnext = this.getNext(),\n\t\t\tp0 = (prev || this)._point,\n\t\t\tp1 = this._point,\n\t\t\tp2 = (next || this)._point,\n\t\t\td1 = p0.getDistance(p1),\n\t\t\td2 = p1.getDistance(p2);\n\t\tif (!type || type === 'catmull-rom') {\n\t\t\tvar a = factor === undefined ? 0.5 : factor,\n\t\t\t\td1_a = Math.pow(d1, a),\n\t\t\t\td1_2a = d1_a * d1_a,\n\t\t\t\td2_a = Math.pow(d2, a),\n\t\t\t\td2_2a = d2_a * d2_a;\n\t\t\tif (!_first && prev) {\n\t\t\t\tvar A = 2 * d2_2a + 3 * d2_a * d1_a + d1_2a,\n\t\t\t\t\tN = 3 * d2_a * (d2_a + d1_a);\n\t\t\t\tthis.setHandleIn(N !== 0\n\t\t\t\t\t? new Point(\n\t\t\t\t\t\t(d2_2a * p0._x + A * p1._x - d1_2a * p2._x) / N - p1._x,\n\t\t\t\t\t\t(d2_2a * p0._y + A * p1._y - d1_2a * p2._y) / N - p1._y)\n\t\t\t\t\t: new Point());\n\t\t\t}\n\t\t\tif (!_last && next) {\n\t\t\t\tvar A = 2 * d1_2a + 3 * d1_a * d2_a + d2_2a,\n\t\t\t\t\tN = 3 * d1_a * (d1_a + d2_a);\n\t\t\t\tthis.setHandleOut(N !== 0\n\t\t\t\t\t? new Point(\n\t\t\t\t\t\t(d1_2a * p2._x + A * p1._x - d2_2a * p0._x) / N - p1._x,\n\t\t\t\t\t\t(d1_2a * p2._y + A * p1._y - d2_2a * p0._y) / N - p1._y)\n\t\t\t\t\t: new Point());\n\t\t\t}\n\t\t} else if (type === 'geometric') {\n\t\t\tif (prev && next) {\n\t\t\t\tvar vector = p0.subtract(p2),\n\t\t\t\t\tt = factor === undefined ? 0.4 : factor,\n\t\t\t\t\tk = t * d1 / (d1 + d2);\n\t\t\t\tif (!_first)\n\t\t\t\t\tthis.setHandleIn(vector.multiply(k));\n\t\t\t\tif (!_last)\n\t\t\t\t\tthis.setHandleOut(vector.multiply(k - t));\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error('Smoothing method \\'' + type + '\\' not supported.');\n\t\t}\n\t},\n\n\tgetPrevious: function() {\n\t\tvar segments = this._path && this._path._segments;\n\t\treturn segments && (segments[this._index - 1]\n\t\t\t\t|| this._path._closed && segments[segments.length - 1]) || null;\n\t},\n\n\tisFirst: function() {\n\t\treturn !this._index;\n\t},\n\n\tisLast: function() {\n\t\tvar path = this._path;\n\t\treturn path && this._index === path._segments.length - 1 || false;\n\t},\n\n\treverse: function() {\n\t\tvar handleIn = this._handleIn,\n\t\t\thandleOut = this._handleOut,\n\t\t\ttmp = handleIn.clone();\n\t\thandleIn.set(handleOut);\n\t\thandleOut.set(tmp);\n\t},\n\n\treversed: function() {\n\t\treturn new Segment(this._point, this._handleOut, this._handleIn);\n\t},\n\n\tremove: function() {\n\t\treturn this._path ? !!this._path.removeSegment(this._index) : false;\n\t},\n\n\tclone: function() {\n\t\treturn new Segment(this._point, this._handleIn, this._handleOut);\n\t},\n\n\tequals: function(segment) {\n\t\treturn segment === this || segment && this._class === segment._class\n\t\t\t\t&& this._point.equals(segment._point)\n\t\t\t\t&& this._handleIn.equals(segment._handleIn)\n\t\t\t\t&& this._handleOut.equals(segment._handleOut)\n\t\t\t\t|| false;\n\t},\n\n\ttoString: function() {\n\t\tvar parts = [ 'point: ' + this._point ];\n\t\tif (!this._handleIn.isZero())\n\t\t\tparts.push('handleIn: ' + this._handleIn);\n\t\tif (!this._handleOut.isZero())\n\t\t\tparts.push('handleOut: ' + this._handleOut);\n\t\treturn '{ ' + parts.join(', ') + ' }';\n\t},\n\n\ttransform: function(matrix) {\n\t\tthis._transformCoordinates(matrix, new Array(6), true);\n\t\tthis._changed();\n\t},\n\n\tinterpolate: function(from, to, factor) {\n\t\tvar u = 1 - factor,\n\t\t\tv = factor,\n\t\t\tpoint1 = from._point,\n\t\t\tpoint2 = to._point,\n\t\t\thandleIn1 = from._handleIn,\n\t\t\thandleIn2 = to._handleIn,\n\t\t\thandleOut2 = to._handleOut,\n\t\t\thandleOut1 = from._handleOut;\n\t\tthis._point._set(\n\t\t\t\tu * point1._x + v * point2._x,\n\t\t\t\tu * point1._y + v * point2._y, true);\n\t\tthis._handleIn._set(\n\t\t\t\tu * handleIn1._x + v * handleIn2._x,\n\t\t\t\tu * handleIn1._y + v * handleIn2._y, true);\n\t\tthis._handleOut._set(\n\t\t\t\tu * handleOut1._x + v * handleOut2._x,\n\t\t\t\tu * handleOut1._y + v * handleOut2._y, true);\n\t\tthis._changed();\n\t},\n\n\t_transformCoordinates: function(matrix, coords, change) {\n\t\tvar point = this._point,\n\t\t\thandleIn = !change || !this._handleIn.isZero()\n\t\t\t\t\t? this._handleIn : null,\n\t\t\thandleOut = !change || !this._handleOut.isZero()\n\t\t\t\t\t? this._handleOut : null,\n\t\t\tx = point._x,\n\t\t\ty = point._y,\n\t\t\ti = 2;\n\t\tcoords[0] = x;\n\t\tcoords[1] = y;\n\t\tif (handleIn) {\n\t\t\tcoords[i++] = handleIn._x + x;\n\t\t\tcoords[i++] = handleIn._y + y;\n\t\t}\n\t\tif (handleOut) {\n\t\t\tcoords[i++] = handleOut._x + x;\n\t\t\tcoords[i++] = handleOut._y + y;\n\t\t}\n\t\tif (matrix) {\n\t\t\tmatrix._transformCoordinates(coords, coords, i / 2);\n\t\t\tx = coords[0];\n\t\t\ty = coords[1];\n\t\t\tif (change) {\n\t\t\t\tpoint._x = x;\n\t\t\t\tpoint._y = y;\n\t\t\t\ti = 2;\n\t\t\t\tif (handleIn) {\n\t\t\t\t\thandleIn._x = coords[i++] - x;\n\t\t\t\t\thandleIn._y = coords[i++] - y;\n\t\t\t\t}\n\t\t\t\tif (handleOut) {\n\t\t\t\t\thandleOut._x = coords[i++] - x;\n\t\t\t\t\thandleOut._y = coords[i++] - y;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!handleIn) {\n\t\t\t\t\tcoords[i++] = x;\n\t\t\t\t\tcoords[i++] = y;\n\t\t\t\t}\n\t\t\t\tif (!handleOut) {\n\t\t\t\t\tcoords[i++] = x;\n\t\t\t\t\tcoords[i++] = y;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn coords;\n\t}\n});\n\nvar SegmentPoint = Point.extend({\n\tinitialize: function SegmentPoint(point, owner, key) {\n\t\tvar x, y,\n\t\t\tselected;\n\t\tif (!point) {\n\t\t\tx = y = 0;\n\t\t} else if ((x = point[0]) !== undefined) {\n\t\t\ty = point[1];\n\t\t} else {\n\t\t\tvar pt = point;\n\t\t\tif ((x = pt.x) === undefined) {\n\t\t\t\tpt = Point.read(arguments);\n\t\t\t\tx = pt.x;\n\t\t\t}\n\t\t\ty = pt.y;\n\t\t\tselected = pt.selected;\n\t\t}\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._owner = owner;\n\t\towner[key] = this;\n\t\tif (selected)\n\t\t\tthis.setSelected(true);\n\t},\n\n\t_set: function(x, y) {\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._owner._changed(this);\n\t\treturn this;\n\t},\n\n\tgetX: function() {\n\t\treturn this._x;\n\t},\n\n\tsetX: function(x) {\n\t\tthis._x = x;\n\t\tthis._owner._changed(this);\n\t},\n\n\tgetY: function() {\n\t\treturn this._y;\n\t},\n\n\tsetY: function(y) {\n\t\tthis._y = y;\n\t\tthis._owner._changed(this);\n\t},\n\n\tisZero: function() {\n\t\tvar isZero = Numerical.isZero;\n\t\treturn isZero(this._x) && isZero(this._y);\n\t},\n\n\tisSelected: function() {\n\t\treturn !!(this._owner._selection & this._getSelection());\n\t},\n\n\tsetSelected: function(selected) {\n\t\tthis._owner._changeSelection(this._getSelection(), selected);\n\t},\n\n\t_getSelection: function() {\n\t\tvar owner = this._owner;\n\t\treturn this === owner._point ? 1\n\t\t\t: this === owner._handleIn ? 2\n\t\t\t: this === owner._handleOut ? 4\n\t\t\t: 0;\n\t}\n});\n\nvar Curve = Base.extend({\n\t_class: 'Curve',\n\tbeans: true,\n\n\tinitialize: function Curve(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n\t\tvar count = arguments.length,\n\t\t\tseg1, seg2,\n\t\t\tpoint1, point2,\n\t\t\thandle1, handle2;\n\t\tif (count === 3) {\n\t\t\tthis._path = arg0;\n\t\t\tseg1 = arg1;\n\t\t\tseg2 = arg2;\n\t\t} else if (!count) {\n\t\t\tseg1 = new Segment();\n\t\t\tseg2 = new Segment();\n\t\t} else if (count === 1) {\n\t\t\tif ('segment1' in arg0) {\n\t\t\t\tseg1 = new Segment(arg0.segment1);\n\t\t\t\tseg2 = new Segment(arg0.segment2);\n\t\t\t} else if ('point1' in arg0) {\n\t\t\t\tpoint1 = arg0.point1;\n\t\t\t\thandle1 = arg0.handle1;\n\t\t\t\thandle2 = arg0.handle2;\n\t\t\t\tpoint2 = arg0.point2;\n\t\t\t} else if (Array.isArray(arg0)) {\n\t\t\t\tpoint1 = [arg0[0], arg0[1]];\n\t\t\t\tpoint2 = [arg0[6], arg0[7]];\n\t\t\t\thandle1 = [arg0[2] - arg0[0], arg0[3] - arg0[1]];\n\t\t\t\thandle2 = [arg0[4] - arg0[6], arg0[5] - arg0[7]];\n\t\t\t}\n\t\t} else if (count === 2) {\n\t\t\tseg1 = new Segment(arg0);\n\t\t\tseg2 = new Segment(arg1);\n\t\t} else if (count === 4) {\n\t\t\tpoint1 = arg0;\n\t\t\thandle1 = arg1;\n\t\t\thandle2 = arg2;\n\t\t\tpoint2 = arg3;\n\t\t} else if (count === 8) {\n\t\t\tpoint1 = [arg0, arg1];\n\t\t\tpoint2 = [arg6, arg7];\n\t\t\thandle1 = [arg2 - arg0, arg3 - arg1];\n\t\t\thandle2 = [arg4 - arg6, arg5 - arg7];\n\t\t}\n\t\tthis._segment1 = seg1 || new Segment(point1, null, handle1);\n\t\tthis._segment2 = seg2 || new Segment(point2, handle2, null);\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\treturn Base.serialize(this.hasHandles()\n\t\t\t\t? [this.getPoint1(), this.getHandle1(), this.getHandle2(),\n\t\t\t\t\tthis.getPoint2()]\n\t\t\t\t: [this.getPoint1(), this.getPoint2()],\n\t\t\t\toptions, true, dictionary);\n\t},\n\n\t_changed: function() {\n\t\tthis._length = this._bounds = undefined;\n\t},\n\n\tclone: function() {\n\t\treturn new Curve(this._segment1, this._segment2);\n\t},\n\n\ttoString: function() {\n\t\tvar parts = [ 'point1: ' + this._segment1._point ];\n\t\tif (!this._segment1._handleOut.isZero())\n\t\t\tparts.push('handle1: ' + this._segment1._handleOut);\n\t\tif (!this._segment2._handleIn.isZero())\n\t\t\tparts.push('handle2: ' + this._segment2._handleIn);\n\t\tparts.push('point2: ' + this._segment2._point);\n\t\treturn '{ ' + parts.join(', ') + ' }';\n\t},\n\n\tclassify: function() {\n\t\treturn Curve.classify(this.getValues());\n\t},\n\n\tremove: function() {\n\t\tvar removed = false;\n\t\tif (this._path) {\n\t\t\tvar segment2 = this._segment2,\n\t\t\t\thandleOut = segment2._handleOut;\n\t\t\tremoved = segment2.remove();\n\t\t\tif (removed)\n\t\t\t\tthis._segment1._handleOut.set(handleOut);\n\t\t}\n\t\treturn removed;\n\t},\n\n\tgetPoint1: function() {\n\t\treturn this._segment1._point;\n\t},\n\n\tsetPoint1: function() {\n\t\tthis._segment1._point.set(Point.read(arguments));\n\t},\n\n\tgetPoint2: function() {\n\t\treturn this._segment2._point;\n\t},\n\n\tsetPoint2: function() {\n\t\tthis._segment2._point.set(Point.read(arguments));\n\t},\n\n\tgetHandle1: function() {\n\t\treturn this._segment1._handleOut;\n\t},\n\n\tsetHandle1: function() {\n\t\tthis._segment1._handleOut.set(Point.read(arguments));\n\t},\n\n\tgetHandle2: function() {\n\t\treturn this._segment2._handleIn;\n\t},\n\n\tsetHandle2: function() {\n\t\tthis._segment2._handleIn.set(Point.read(arguments));\n\t},\n\n\tgetSegment1: function() {\n\t\treturn this._segment1;\n\t},\n\n\tgetSegment2: function() {\n\t\treturn this._segment2;\n\t},\n\n\tgetPath: function() {\n\t\treturn this._path;\n\t},\n\n\tgetIndex: function() {\n\t\treturn this._segment1._index;\n\t},\n\n\tgetNext: function() {\n\t\tvar curves = this._path && this._path._curves;\n\t\treturn curves && (curves[this._segment1._index + 1]\n\t\t\t\t|| this._path._closed && curves[0]) || null;\n\t},\n\n\tgetPrevious: function() {\n\t\tvar curves = this._path && this._path._curves;\n\t\treturn curves && (curves[this._segment1._index - 1]\n\t\t\t\t|| this._path._closed && curves[curves.length - 1]) || null;\n\t},\n\n\tisFirst: function() {\n\t\treturn !this._segment1._index;\n\t},\n\n\tisLast: function() {\n\t\tvar path = this._path;\n\t\treturn path && this._segment1._index === path._curves.length - 1\n\t\t\t\t|| false;\n\t},\n\n\tisSelected: function() {\n\t\treturn this.getPoint1().isSelected()\n\t\t\t\t&& this.getHandle1().isSelected()\n\t\t\t\t&& this.getHandle2().isSelected()\n\t\t\t\t&& this.getPoint2().isSelected();\n\t},\n\n\tsetSelected: function(selected) {\n\t\tthis.getPoint1().setSelected(selected);\n\t\tthis.getHandle1().setSelected(selected);\n\t\tthis.getHandle2().setSelected(selected);\n\t\tthis.getPoint2().setSelected(selected);\n\t},\n\n\tgetValues: function(matrix) {\n\t\treturn Curve.getValues(this._segment1, this._segment2, matrix);\n\t},\n\n\tgetPoints: function() {\n\t\tvar coords = this.getValues(),\n\t\t\tpoints = [];\n\t\tfor (var i = 0; i < 8; i += 2)\n\t\t\tpoints.push(new Point(coords[i], coords[i + 1]));\n\t\treturn points;\n\t}\n}, {\n\tgetLength: function() {\n\t\tif (this._length == null)\n\t\t\tthis._length = Curve.getLength(this.getValues(), 0, 1);\n\t\treturn this._length;\n\t},\n\n\tgetArea: function() {\n\t\treturn Curve.getArea(this.getValues());\n\t},\n\n\tgetLine: function() {\n\t\treturn new Line(this._segment1._point, this._segment2._point);\n\t},\n\n\tgetPart: function(from, to) {\n\t\treturn new Curve(Curve.getPart(this.getValues(), from, to));\n\t},\n\n\tgetPartLength: function(from, to) {\n\t\treturn Curve.getLength(this.getValues(), from, to);\n\t},\n\n\tdivideAt: function(location) {\n\t\treturn this.divideAtTime(location && location.curve === this\n\t\t\t\t? location.time : this.getTimeAt(location));\n\t},\n\n\tdivideAtTime: function(time, _setHandles) {\n\t\tvar tMin = 1e-8,\n\t\t\ttMax = 1 - tMin,\n\t\t\tres = null;\n\t\tif (time >= tMin && time <= tMax) {\n\t\t\tvar parts = Curve.subdivide(this.getValues(), time),\n\t\t\t\tleft = parts[0],\n\t\t\t\tright = parts[1],\n\t\t\t\tsetHandles = _setHandles || this.hasHandles(),\n\t\t\t\tseg1 = this._segment1,\n\t\t\t\tseg2 = this._segment2,\n\t\t\t\tpath = this._path;\n\t\t\tif (setHandles) {\n\t\t\t\tseg1._handleOut._set(left[2] - left[0], left[3] - left[1]);\n\t\t\t\tseg2._handleIn._set(right[4] - right[6],right[5] - right[7]);\n\t\t\t}\n\t\t\tvar x = left[6], y = left[7],\n\t\t\t\tsegment = new Segment(new Point(x, y),\n\t\t\t\t\t\tsetHandles && new Point(left[4] - x, left[5] - y),\n\t\t\t\t\t\tsetHandles && new Point(right[2] - x, right[3] - y));\n\t\t\tif (path) {\n\t\t\t\tpath.insert(seg1._index + 1, segment);\n\t\t\t\tres = this.getNext();\n\t\t\t} else {\n\t\t\t\tthis._segment2 = segment;\n\t\t\t\tthis._changed();\n\t\t\t\tres = new Curve(segment, seg2);\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t},\n\n\tsplitAt: function(location) {\n\t\tvar path = this._path;\n\t\treturn path ? path.splitAt(location) : null;\n\t},\n\n\tsplitAtTime: function(time) {\n\t\treturn this.splitAt(this.getLocationAtTime(time));\n\t},\n\n\tdivide: function(offset, isTime) {\n\t\treturn this.divideAtTime(offset === undefined ? 0.5 : isTime ? offset\n\t\t\t\t: this.getTimeAt(offset));\n\t},\n\n\tsplit: function(offset, isTime) {\n\t\treturn this.splitAtTime(offset === undefined ? 0.5 : isTime ? offset\n\t\t\t\t: this.getTimeAt(offset));\n\t},\n\n\treversed: function() {\n\t\treturn new Curve(this._segment2.reversed(), this._segment1.reversed());\n\t},\n\n\tclearHandles: function() {\n\t\tthis._segment1._handleOut._set(0, 0);\n\t\tthis._segment2._handleIn._set(0, 0);\n\t},\n\nstatics: {\n\tgetValues: function(segment1, segment2, matrix, straight) {\n\t\tvar p1 = segment1._point,\n\t\t\th1 = segment1._handleOut,\n\t\t\th2 = segment2._handleIn,\n\t\t\tp2 = segment2._point,\n\t\t\tx1 = p1.x, y1 = p1.y,\n\t\t\tx2 = p2.x, y2 = p2.y,\n\t\t\tvalues = straight\n\t\t\t\t? [ x1, y1, x1, y1, x2, y2, x2, y2 ]\n\t\t\t\t: [\n\t\t\t\t\tx1, y1,\n\t\t\t\t\tx1 + h1._x, y1 + h1._y,\n\t\t\t\t\tx2 + h2._x, y2 + h2._y,\n\t\t\t\t\tx2, y2\n\t\t\t\t];\n\t\tif (matrix)\n\t\t\tmatrix._transformCoordinates(values, values, 4);\n\t\treturn values;\n\t},\n\n\tsubdivide: function(v, t) {\n\t\tvar x0 = v[0], y0 = v[1],\n\t\t\tx1 = v[2], y1 = v[3],\n\t\t\tx2 = v[4], y2 = v[5],\n\t\t\tx3 = v[6], y3 = v[7];\n\t\tif (t === undefined)\n\t\t\tt = 0.5;\n\t\tvar u = 1 - t,\n\t\t\tx4 = u * x0 + t * x1, y4 = u * y0 + t * y1,\n\t\t\tx5 = u * x1 + t * x2, y5 = u * y1 + t * y2,\n\t\t\tx6 = u * x2 + t * x3, y6 = u * y2 + t * y3,\n\t\t\tx7 = u * x4 + t * x5, y7 = u * y4 + t * y5,\n\t\t\tx8 = u * x5 + t * x6, y8 = u * y5 + t * y6,\n\t\t\tx9 = u * x7 + t * x8, y9 = u * y7 + t * y8;\n\t\treturn [\n\t\t\t[x0, y0, x4, y4, x7, y7, x9, y9],\n\t\t\t[x9, y9, x8, y8, x6, y6, x3, y3]\n\t\t];\n\t},\n\n\tgetMonoCurves: function(v, dir) {\n\t\tvar curves = [],\n\t\t\tio = dir ? 0 : 1,\n\t\t\to0 = v[io + 0],\n\t\t\to1 = v[io + 2],\n\t\t\to2 = v[io + 4],\n\t\t\to3 = v[io + 6];\n\t\tif ((o0 >= o1) === (o1 >= o2) && (o1 >= o2) === (o2 >= o3)\n\t\t\t\t|| Curve.isStraight(v)) {\n\t\t\tcurves.push(v);\n\t\t} else {\n\t\t\tvar a = 3 * (o1 - o2) - o0 + o3,\n\t\t\t\tb = 2 * (o0 + o2) - 4 * o1,\n\t\t\t\tc = o1 - o0,\n\t\t\t\ttMin = 1e-8,\n\t\t\t\ttMax = 1 - tMin,\n\t\t\t\troots = [],\n\t\t\t\tn = Numerical.solveQuadratic(a, b, c, roots, tMin, tMax);\n\t\t\tif (!n) {\n\t\t\t\tcurves.push(v);\n\t\t\t} else {\n\t\t\t\troots.sort();\n\t\t\t\tvar t = roots[0],\n\t\t\t\t\tparts = Curve.subdivide(v, t);\n\t\t\t\tcurves.push(parts[0]);\n\t\t\t\tif (n > 1) {\n\t\t\t\t\tt = (roots[1] - t) / (1 - t);\n\t\t\t\t\tparts = Curve.subdivide(parts[1], t);\n\t\t\t\t\tcurves.push(parts[0]);\n\t\t\t\t}\n\t\t\t\tcurves.push(parts[1]);\n\t\t\t}\n\t\t}\n\t\treturn curves;\n\t},\n\n\tsolveCubic: function (v, coord, val, roots, min, max) {\n\t\tvar v0 = v[coord],\n\t\t\tv1 = v[coord + 2],\n\t\t\tv2 = v[coord + 4],\n\t\t\tv3 = v[coord + 6],\n\t\t\tres = 0;\n\t\tif (  !(v0 < val && v3 < val && v1 < val && v2 < val ||\n\t\t\t\tv0 > val && v3 > val && v1 > val && v2 > val)) {\n\t\t\tvar c = 3 * (v1 - v0),\n\t\t\t\tb = 3 * (v2 - v1) - c,\n\t\t\t\ta = v3 - v0 - c - b;\n\t\t\tres = Numerical.solveCubic(a, b, c, v0 - val, roots, min, max);\n\t\t}\n\t\treturn res;\n\t},\n\n\tgetTimeOf: function(v, point) {\n\t\tvar p0 = new Point(v[0], v[1]),\n\t\t\tp3 = new Point(v[6], v[7]),\n\t\t\tepsilon = 1e-12,\n\t\t\tgeomEpsilon = 1e-7,\n\t\t\tt = point.isClose(p0, epsilon) ? 0\n\t\t\t  : point.isClose(p3, epsilon) ? 1\n\t\t\t  : null;\n\t\tif (t === null) {\n\t\t\tvar coords = [point.x, point.y],\n\t\t\t\troots = [];\n\t\t\tfor (var c = 0; c < 2; c++) {\n\t\t\t\tvar count = Curve.solveCubic(v, c, coords[c], roots, 0, 1);\n\t\t\t\tfor (var i = 0; i < count; i++) {\n\t\t\t\t\tvar u = roots[i];\n\t\t\t\t\tif (point.isClose(Curve.getPoint(v, u), geomEpsilon))\n\t\t\t\t\t\treturn u;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn point.isClose(p0, geomEpsilon) ? 0\n\t\t\t : point.isClose(p3, geomEpsilon) ? 1\n\t\t\t : null;\n\t},\n\n\tgetNearestTime: function(v, point) {\n\t\tif (Curve.isStraight(v)) {\n\t\t\tvar x0 = v[0], y0 = v[1],\n\t\t\t\tx3 = v[6], y3 = v[7],\n\t\t\t\tvx = x3 - x0, vy = y3 - y0,\n\t\t\t\tdet = vx * vx + vy * vy;\n\t\t\tif (det === 0)\n\t\t\t\treturn 0;\n\t\t\tvar u = ((point.x - x0) * vx + (point.y - y0) * vy) / det;\n\t\t\treturn u < 1e-12 ? 0\n\t\t\t\t : u > 0.999999999999 ? 1\n\t\t\t\t : Curve.getTimeOf(v,\n\t\t\t\t\tnew Point(x0 + u * vx, y0 + u * vy));\n\t\t}\n\n\t\tvar count = 100,\n\t\t\tminDist = Infinity,\n\t\t\tminT = 0;\n\n\t\tfunction refine(t) {\n\t\t\tif (t >= 0 && t <= 1) {\n\t\t\t\tvar dist = point.getDistance(Curve.getPoint(v, t), true);\n\t\t\t\tif (dist < minDist) {\n\t\t\t\t\tminDist = dist;\n\t\t\t\t\tminT = t;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i <= count; i++)\n\t\t\trefine(i / count);\n\n\t\tvar step = 1 / (count * 2);\n\t\twhile (step > 1e-8) {\n\t\t\tif (!refine(minT - step) && !refine(minT + step))\n\t\t\t\tstep /= 2;\n\t\t}\n\t\treturn minT;\n\t},\n\n\tgetPart: function(v, from, to) {\n\t\tvar flip = from > to;\n\t\tif (flip) {\n\t\t\tvar tmp = from;\n\t\t\tfrom = to;\n\t\t\tto = tmp;\n\t\t}\n\t\tif (from > 0)\n\t\t\tv = Curve.subdivide(v, from)[1];\n\t\tif (to < 1)\n\t\t\tv = Curve.subdivide(v, (to - from) / (1 - from))[0];\n\t\treturn flip\n\t\t\t\t? [v[6], v[7], v[4], v[5], v[2], v[3], v[0], v[1]]\n\t\t\t\t: v;\n\t},\n\n\tisFlatEnough: function(v, flatness) {\n\t\tvar x0 = v[0], y0 = v[1],\n\t\t\tx1 = v[2], y1 = v[3],\n\t\t\tx2 = v[4], y2 = v[5],\n\t\t\tx3 = v[6], y3 = v[7],\n\t\t\tux = 3 * x1 - 2 * x0 - x3,\n\t\t\tuy = 3 * y1 - 2 * y0 - y3,\n\t\t\tvx = 3 * x2 - 2 * x3 - x0,\n\t\t\tvy = 3 * y2 - 2 * y3 - y0;\n\t\treturn Math.max(ux * ux, vx * vx) + Math.max(uy * uy, vy * vy)\n\t\t\t\t<= 16 * flatness * flatness;\n\t},\n\n\tgetArea: function(v) {\n\t\tvar x0 = v[0], y0 = v[1],\n\t\t\tx1 = v[2], y1 = v[3],\n\t\t\tx2 = v[4], y2 = v[5],\n\t\t\tx3 = v[6], y3 = v[7];\n\t\treturn 3 * ((y3 - y0) * (x1 + x2) - (x3 - x0) * (y1 + y2)\n\t\t\t\t+ y1 * (x0 - x2) - x1 * (y0 - y2)\n\t\t\t\t+ y3 * (x2 + x0 / 3) - x3 * (y2 + y0 / 3)) / 20;\n\t},\n\n\tgetBounds: function(v) {\n\t\tvar min = v.slice(0, 2),\n\t\t\tmax = min.slice(),\n\t\t\troots = [0, 0];\n\t\tfor (var i = 0; i < 2; i++)\n\t\t\tCurve._addBounds(v[i], v[i + 2], v[i + 4], v[i + 6],\n\t\t\t\t\ti, 0, min, max, roots);\n\t\treturn new Rectangle(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n\t},\n\n\t_addBounds: function(v0, v1, v2, v3, coord, padding, min, max, roots) {\n\t\tfunction add(value, padding) {\n\t\t\tvar left = value - padding,\n\t\t\t\tright = value + padding;\n\t\t\tif (left < min[coord])\n\t\t\t\tmin[coord] = left;\n\t\t\tif (right > max[coord])\n\t\t\t\tmax[coord] = right;\n\t\t}\n\n\t\tpadding /= 2;\n\t\tvar minPad = min[coord] - padding,\n\t\t\tmaxPad = max[coord] + padding;\n\t\tif (    v0 < minPad || v1 < minPad || v2 < minPad || v3 < minPad ||\n\t\t\t\tv0 > maxPad || v1 > maxPad || v2 > maxPad || v3 > maxPad) {\n\t\t\tif (v1 < v0 != v1 < v3 && v2 < v0 != v2 < v3) {\n\t\t\t\tadd(v0, padding);\n\t\t\t\tadd(v3, padding);\n\t\t\t} else {\n\t\t\t\tvar a = 3 * (v1 - v2) - v0 + v3,\n\t\t\t\t\tb = 2 * (v0 + v2) - 4 * v1,\n\t\t\t\t\tc = v1 - v0,\n\t\t\t\t\tcount = Numerical.solveQuadratic(a, b, c, roots),\n\t\t\t\t\ttMin = 1e-8,\n\t\t\t\t\ttMax = 1 - tMin;\n\t\t\t\tadd(v3, 0);\n\t\t\t\tfor (var i = 0; i < count; i++) {\n\t\t\t\t\tvar t = roots[i],\n\t\t\t\t\t\tu = 1 - t;\n\t\t\t\t\tif (tMin <= t && t <= tMax)\n\t\t\t\t\t\tadd(u * u * u * v0\n\t\t\t\t\t\t\t+ 3 * u * u * t * v1\n\t\t\t\t\t\t\t+ 3 * u * t * t * v2\n\t\t\t\t\t\t\t+ t * t * t * v3,\n\t\t\t\t\t\t\tpadding);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}}, Base.each(\n\t['getBounds', 'getStrokeBounds', 'getHandleBounds'],\n\tfunction(name) {\n\t\tthis[name] = function() {\n\t\t\tif (!this._bounds)\n\t\t\t\tthis._bounds = {};\n\t\t\tvar bounds = this._bounds[name];\n\t\t\tif (!bounds) {\n\t\t\t\tbounds = this._bounds[name] = Path[name](\n\t\t\t\t\t\t[this._segment1, this._segment2], false, this._path);\n\t\t\t}\n\t\t\treturn bounds.clone();\n\t\t};\n\t},\n{\n\n}), Base.each({\n\tisStraight: function(p1, h1, h2, p2) {\n\t\tif (h1.isZero() && h2.isZero()) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\tvar v = p2.subtract(p1);\n\t\t\tif (v.isZero()) {\n\t\t\t\treturn false;\n\t\t\t} else if (v.isCollinear(h1) && v.isCollinear(h2)) {\n\t\t\t\tvar l = new Line(p1, p2),\n\t\t\t\t\tepsilon = 1e-7;\n\t\t\t\tif (l.getDistance(p1.add(h1)) < epsilon &&\n\t\t\t\t\tl.getDistance(p2.add(h2)) < epsilon) {\n\t\t\t\t\tvar div = v.dot(v),\n\t\t\t\t\t\ts1 = v.dot(h1) / div,\n\t\t\t\t\t\ts2 = v.dot(h2) / div;\n\t\t\t\t\treturn s1 >= 0 && s1 <= 1 && s2 <= 0 && s2 >= -1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\tisLinear: function(p1, h1, h2, p2) {\n\t\tvar third = p2.subtract(p1).divide(3);\n\t\treturn h1.equals(third) && h2.negate().equals(third);\n\t}\n}, function(test, name) {\n\tthis[name] = function(epsilon) {\n\t\tvar seg1 = this._segment1,\n\t\t\tseg2 = this._segment2;\n\t\treturn test(seg1._point, seg1._handleOut, seg2._handleIn, seg2._point,\n\t\t\t\tepsilon);\n\t};\n\n\tthis.statics[name] = function(v, epsilon) {\n\t\tvar x0 = v[0], y0 = v[1],\n\t\t\tx3 = v[6], y3 = v[7];\n\t\treturn test(\n\t\t\t\tnew Point(x0, y0),\n\t\t\t\tnew Point(v[2] - x0, v[3] - y0),\n\t\t\t\tnew Point(v[4] - x3, v[5] - y3),\n\t\t\t\tnew Point(x3, y3), epsilon);\n\t};\n}, {\n\tstatics: {},\n\n\thasHandles: function() {\n\t\treturn !this._segment1._handleOut.isZero()\n\t\t\t\t|| !this._segment2._handleIn.isZero();\n\t},\n\n\thasLength: function(epsilon) {\n\t\treturn (!this.getPoint1().equals(this.getPoint2()) || this.hasHandles())\n\t\t\t\t&& this.getLength() > (epsilon || 0);\n\t},\n\n\tisCollinear: function(curve) {\n\t\treturn curve && this.isStraight() && curve.isStraight()\n\t\t\t\t&& this.getLine().isCollinear(curve.getLine());\n\t},\n\n\tisHorizontal: function() {\n\t\treturn this.isStraight() && Math.abs(this.getTangentAtTime(0.5).y)\n\t\t\t\t< 1e-8;\n\t},\n\n\tisVertical: function() {\n\t\treturn this.isStraight() && Math.abs(this.getTangentAtTime(0.5).x)\n\t\t\t\t< 1e-8;\n\t}\n}), {\n\tbeans: false,\n\n\tgetLocationAt: function(offset, _isTime) {\n\t\treturn this.getLocationAtTime(\n\t\t\t\t_isTime ? offset : this.getTimeAt(offset));\n\t},\n\n\tgetLocationAtTime: function(t) {\n\t\treturn t != null && t >= 0 && t <= 1\n\t\t\t\t? new CurveLocation(this, t)\n\t\t\t\t: null;\n\t},\n\n\tgetTimeAt: function(offset, start) {\n\t\treturn Curve.getTimeAt(this.getValues(), offset, start);\n\t},\n\n\tgetParameterAt: '#getTimeAt',\n\n\tgetTimesWithTangent: function () {\n\t\tvar tangent = Point.read(arguments);\n\t\treturn tangent.isZero()\n\t\t\t\t? []\n\t\t\t\t: Curve.getTimesWithTangent(this.getValues(), tangent);\n\t},\n\n\tgetOffsetAtTime: function(t) {\n\t\treturn this.getPartLength(0, t);\n\t},\n\n\tgetLocationOf: function() {\n\t\treturn this.getLocationAtTime(this.getTimeOf(Point.read(arguments)));\n\t},\n\n\tgetOffsetOf: function() {\n\t\tvar loc = this.getLocationOf.apply(this, arguments);\n\t\treturn loc ? loc.getOffset() : null;\n\t},\n\n\tgetTimeOf: function() {\n\t\treturn Curve.getTimeOf(this.getValues(), Point.read(arguments));\n\t},\n\n\tgetParameterOf: '#getTimeOf',\n\n\tgetNearestLocation: function() {\n\t\tvar point = Point.read(arguments),\n\t\t\tvalues = this.getValues(),\n\t\t\tt = Curve.getNearestTime(values, point),\n\t\t\tpt = Curve.getPoint(values, t);\n\t\treturn new CurveLocation(this, t, pt, null, point.getDistance(pt));\n\t},\n\n\tgetNearestPoint: function() {\n\t\tvar loc = this.getNearestLocation.apply(this, arguments);\n\t\treturn loc ? loc.getPoint() : loc;\n\t}\n\n},\nnew function() {\n\tvar methods = ['getPoint', 'getTangent', 'getNormal', 'getWeightedTangent',\n\t\t'getWeightedNormal', 'getCurvature'];\n\treturn Base.each(methods,\n\t\tfunction(name) {\n\t\t\tthis[name + 'At'] = function(location, _isTime) {\n\t\t\t\tvar values = this.getValues();\n\t\t\t\treturn Curve[name](values, _isTime ? location\n\t\t\t\t\t\t: Curve.getTimeAt(values, location));\n\t\t\t};\n\n\t\t\tthis[name + 'AtTime'] = function(time) {\n\t\t\t\treturn Curve[name](this.getValues(), time);\n\t\t\t};\n\t\t}, {\n\t\t\tstatics: {\n\t\t\t\t_evaluateMethods: methods\n\t\t\t}\n\t\t}\n\t);\n},\nnew function() {\n\n\tfunction getLengthIntegrand(v) {\n\t\tvar x0 = v[0], y0 = v[1],\n\t\t\tx1 = v[2], y1 = v[3],\n\t\t\tx2 = v[4], y2 = v[5],\n\t\t\tx3 = v[6], y3 = v[7],\n\n\t\t\tax = 9 * (x1 - x2) + 3 * (x3 - x0),\n\t\t\tbx = 6 * (x0 + x2) - 12 * x1,\n\t\t\tcx = 3 * (x1 - x0),\n\n\t\t\tay = 9 * (y1 - y2) + 3 * (y3 - y0),\n\t\t\tby = 6 * (y0 + y2) - 12 * y1,\n\t\t\tcy = 3 * (y1 - y0);\n\n\t\treturn function(t) {\n\t\t\tvar dx = (ax * t + bx) * t + cx,\n\t\t\t\tdy = (ay * t + by) * t + cy;\n\t\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t\t};\n\t}\n\n\tfunction getIterations(a, b) {\n\t\treturn Math.max(2, Math.min(16, Math.ceil(Math.abs(b - a) * 32)));\n\t}\n\n\tfunction evaluate(v, t, type, normalized) {\n\t\tif (t == null || t < 0 || t > 1)\n\t\t\treturn null;\n\t\tvar x0 = v[0], y0 = v[1],\n\t\t\tx1 = v[2], y1 = v[3],\n\t\t\tx2 = v[4], y2 = v[5],\n\t\t\tx3 = v[6], y3 = v[7],\n\t\t\tisZero = Numerical.isZero;\n\t\tif (isZero(x1 - x0) && isZero(y1 - y0)) {\n\t\t\tx1 = x0;\n\t\t\ty1 = y0;\n\t\t}\n\t\tif (isZero(x2 - x3) && isZero(y2 - y3)) {\n\t\t\tx2 = x3;\n\t\t\ty2 = y3;\n\t\t}\n\t\tvar cx = 3 * (x1 - x0),\n\t\t\tbx = 3 * (x2 - x1) - cx,\n\t\t\tax = x3 - x0 - cx - bx,\n\t\t\tcy = 3 * (y1 - y0),\n\t\t\tby = 3 * (y2 - y1) - cy,\n\t\t\tay = y3 - y0 - cy - by,\n\t\t\tx, y;\n\t\tif (type === 0) {\n\t\t\tx = t === 0 ? x0 : t === 1 ? x3\n\t\t\t\t\t: ((ax * t + bx) * t + cx) * t + x0;\n\t\t\ty = t === 0 ? y0 : t === 1 ? y3\n\t\t\t\t\t: ((ay * t + by) * t + cy) * t + y0;\n\t\t} else {\n\t\t\tvar tMin = 1e-8,\n\t\t\t\ttMax = 1 - tMin;\n\t\t\tif (t < tMin) {\n\t\t\t\tx = cx;\n\t\t\t\ty = cy;\n\t\t\t} else if (t > tMax) {\n\t\t\t\tx = 3 * (x3 - x2);\n\t\t\t\ty = 3 * (y3 - y2);\n\t\t\t} else {\n\t\t\t\tx = (3 * ax * t + 2 * bx) * t + cx;\n\t\t\t\ty = (3 * ay * t + 2 * by) * t + cy;\n\t\t\t}\n\t\t\tif (normalized) {\n\t\t\t\tif (x === 0 && y === 0 && (t < tMin || t > tMax)) {\n\t\t\t\t\tx = x2 - x1;\n\t\t\t\t\ty = y2 - y1;\n\t\t\t\t}\n\t\t\t\tvar len = Math.sqrt(x * x + y * y);\n\t\t\t\tif (len) {\n\t\t\t\t\tx /= len;\n\t\t\t\t\ty /= len;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (type === 3) {\n\t\t\t\tvar x2 = 6 * ax * t + 2 * bx,\n\t\t\t\t\ty2 = 6 * ay * t + 2 * by,\n\t\t\t\t\td = Math.pow(x * x + y * y, 3 / 2);\n\t\t\t\tx = d !== 0 ? (x * y2 - y * x2) / d : 0;\n\t\t\t\ty = 0;\n\t\t\t}\n\t\t}\n\t\treturn type === 2 ? new Point(y, -x) : new Point(x, y);\n\t}\n\n\treturn { statics: {\n\n\t\tclassify: function(v) {\n\n\t\t\tvar x0 = v[0], y0 = v[1],\n\t\t\t\tx1 = v[2], y1 = v[3],\n\t\t\t\tx2 = v[4], y2 = v[5],\n\t\t\t\tx3 = v[6], y3 = v[7],\n\t\t\t\ta1 = x0 * (y3 - y2) + y0 * (x2 - x3) + x3 * y2 - y3 * x2,\n\t\t\t\ta2 = x1 * (y0 - y3) + y1 * (x3 - x0) + x0 * y3 - y0 * x3,\n\t\t\t\ta3 = x2 * (y1 - y0) + y2 * (x0 - x1) + x1 * y0 - y1 * x0,\n\t\t\t\td3 = 3 * a3,\n\t\t\t\td2 = d3 - a2,\n\t\t\t\td1 = d2 - a2 + a1,\n\t\t\t\tl = Math.sqrt(d1 * d1 + d2 * d2 + d3 * d3),\n\t\t\t\ts = l !== 0 ? 1 / l : 0,\n\t\t\t\tisZero = Numerical.isZero,\n\t\t\t\tserpentine = 'serpentine';\n\t\t\td1 *= s;\n\t\t\td2 *= s;\n\t\t\td3 *= s;\n\n\t\t\tfunction type(type, t1, t2) {\n\t\t\t\tvar hasRoots = t1 !== undefined,\n\t\t\t\t\tt1Ok = hasRoots && t1 > 0 && t1 < 1,\n\t\t\t\t\tt2Ok = hasRoots && t2 > 0 && t2 < 1;\n\t\t\t\tif (hasRoots && (!(t1Ok || t2Ok)\n\t\t\t\t\t\t|| type === 'loop' && !(t1Ok && t2Ok))) {\n\t\t\t\t\ttype = 'arch';\n\t\t\t\t\tt1Ok = t2Ok = false;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: type,\n\t\t\t\t\troots: t1Ok || t2Ok\n\t\t\t\t\t\t\t? t1Ok && t2Ok\n\t\t\t\t\t\t\t\t? t1 < t2 ? [t1, t2] : [t2, t1]\n\t\t\t\t\t\t\t\t: [t1Ok ? t1 : t2]\n\t\t\t\t\t\t\t: null\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (isZero(d1)) {\n\t\t\t\treturn isZero(d2)\n\t\t\t\t\t\t? type(isZero(d3) ? 'line' : 'quadratic')\n\t\t\t\t\t\t: type(serpentine, d3 / (3 * d2));\n\t\t\t}\n\t\t\tvar d = 3 * d2 * d2 - 4 * d1 * d3;\n\t\t\tif (isZero(d)) {\n\t\t\t\treturn type('cusp', d2 / (2 * d1));\n\t\t\t}\n\t\t\tvar f1 = d > 0 ? Math.sqrt(d / 3) : Math.sqrt(-d),\n\t\t\t\tf2 = 2 * d1;\n\t\t\treturn type(d > 0 ? serpentine : 'loop',\n\t\t\t\t\t(d2 + f1) / f2,\n\t\t\t\t\t(d2 - f1) / f2);\n\t\t},\n\n\t\tgetLength: function(v, a, b, ds) {\n\t\t\tif (a === undefined)\n\t\t\t\ta = 0;\n\t\t\tif (b === undefined)\n\t\t\t\tb = 1;\n\t\t\tif (Curve.isStraight(v)) {\n\t\t\t\tvar c = v;\n\t\t\t\tif (b < 1) {\n\t\t\t\t\tc = Curve.subdivide(c, b)[0];\n\t\t\t\t\ta /= b;\n\t\t\t\t}\n\t\t\t\tif (a > 0) {\n\t\t\t\t\tc = Curve.subdivide(c, a)[1];\n\t\t\t\t}\n\t\t\t\tvar dx = c[6] - c[0],\n\t\t\t\t\tdy = c[7] - c[1];\n\t\t\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t\t\t}\n\t\t\treturn Numerical.integrate(ds || getLengthIntegrand(v), a, b,\n\t\t\t\t\tgetIterations(a, b));\n\t\t},\n\n\t\tgetTimeAt: function(v, offset, start) {\n\t\t\tif (start === undefined)\n\t\t\t\tstart = offset < 0 ? 1 : 0;\n\t\t\tif (offset === 0)\n\t\t\t\treturn start;\n\t\t\tvar abs = Math.abs,\n\t\t\t\tepsilon = 1e-12,\n\t\t\t\tforward = offset > 0,\n\t\t\t\ta = forward ? start : 0,\n\t\t\t\tb = forward ? 1 : start,\n\t\t\t\tds = getLengthIntegrand(v),\n\t\t\t\trangeLength = Curve.getLength(v, a, b, ds),\n\t\t\t\tdiff = abs(offset) - rangeLength;\n\t\t\tif (abs(diff) < epsilon) {\n\t\t\t\treturn forward ? b : a;\n\t\t\t} else if (diff > epsilon) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tvar guess = offset / rangeLength,\n\t\t\t\tlength = 0;\n\t\t\tfunction f(t) {\n\t\t\t\tlength += Numerical.integrate(ds, start, t,\n\t\t\t\t\t\tgetIterations(start, t));\n\t\t\t\tstart = t;\n\t\t\t\treturn length - offset;\n\t\t\t}\n\t\t\treturn Numerical.findRoot(f, ds, start + guess, a, b, 32,\n\t\t\t\t\t1e-12);\n\t\t},\n\n\t\tgetPoint: function(v, t) {\n\t\t\treturn evaluate(v, t, 0, false);\n\t\t},\n\n\t\tgetTangent: function(v, t) {\n\t\t\treturn evaluate(v, t, 1, true);\n\t\t},\n\n\t\tgetWeightedTangent: function(v, t) {\n\t\t\treturn evaluate(v, t, 1, false);\n\t\t},\n\n\t\tgetNormal: function(v, t) {\n\t\t\treturn evaluate(v, t, 2, true);\n\t\t},\n\n\t\tgetWeightedNormal: function(v, t) {\n\t\t\treturn evaluate(v, t, 2, false);\n\t\t},\n\n\t\tgetCurvature: function(v, t) {\n\t\t\treturn evaluate(v, t, 3, false).x;\n\t\t},\n\n\t\tgetPeaks: function(v) {\n\t\t\tvar x0 = v[0], y0 = v[1],\n\t\t\t\tx1 = v[2], y1 = v[3],\n\t\t\t\tx2 = v[4], y2 = v[5],\n\t\t\t\tx3 = v[6], y3 = v[7],\n\t\t\t\tax =     -x0 + 3 * x1 - 3 * x2 + x3,\n\t\t\t\tbx =  3 * x0 - 6 * x1 + 3 * x2,\n\t\t\t\tcx = -3 * x0 + 3 * x1,\n\t\t\t\tay =     -y0 + 3 * y1 - 3 * y2 + y3,\n\t\t\t\tby =  3 * y0 - 6 * y1 + 3 * y2,\n\t\t\t\tcy = -3 * y0 + 3 * y1,\n\t\t\t\ttMin = 1e-8,\n\t\t\t\ttMax = 1 - tMin,\n\t\t\t\troots = [];\n\t\t\tNumerical.solveCubic(\n\t\t\t\t\t9 * (ax * ax + ay * ay),\n\t\t\t\t\t9 * (ax * bx + by * ay),\n\t\t\t\t\t2 * (bx * bx + by * by) + 3 * (cx * ax + cy * ay),\n\t\t\t\t\t(cx * bx + by * cy),\n\t\t\t\t\troots, tMin, tMax);\n\t\t\treturn roots.sort();\n\t\t}\n\t}};\n},\nnew function() {\n\n\tfunction addLocation(locations, include, c1, t1, c2, t2, overlap) {\n\t\tvar excludeStart = !overlap && c1.getPrevious() === c2,\n\t\t\texcludeEnd = !overlap && c1 !== c2 && c1.getNext() === c2,\n\t\t\ttMin = 1e-8,\n\t\t\ttMax = 1 - tMin;\n\t\tif (t1 !== null && t1 >= (excludeStart ? tMin : 0) &&\n\t\t\tt1 <= (excludeEnd ? tMax : 1)) {\n\t\t\tif (t2 !== null && t2 >= (excludeEnd ? tMin : 0) &&\n\t\t\t\tt2 <= (excludeStart ? tMax : 1)) {\n\t\t\t\tvar loc1 = new CurveLocation(c1, t1, null, overlap),\n\t\t\t\t\tloc2 = new CurveLocation(c2, t2, null, overlap);\n\t\t\t\tloc1._intersection = loc2;\n\t\t\t\tloc2._intersection = loc1;\n\t\t\t\tif (!include || include(loc1)) {\n\t\t\t\t\tCurveLocation.insert(locations, loc1, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction addCurveIntersections(v1, v2, c1, c2, locations, include, flip,\n\t\t\trecursion, calls, tMin, tMax, uMin, uMax) {\n\t\tif (++calls >= 4096 || ++recursion >= 40)\n\t\t\treturn calls;\n\t\tvar fatLineEpsilon = 1e-9,\n\t\t\tq0x = v2[0], q0y = v2[1], q3x = v2[6], q3y = v2[7],\n\t\t\tgetSignedDistance = Line.getSignedDistance,\n\t\t\td1 = getSignedDistance(q0x, q0y, q3x, q3y, v2[2], v2[3]),\n\t\t\td2 = getSignedDistance(q0x, q0y, q3x, q3y, v2[4], v2[5]),\n\t\t\tfactor = d1 * d2 > 0 ? 3 / 4 : 4 / 9,\n\t\t\tdMin = factor * Math.min(0, d1, d2),\n\t\t\tdMax = factor * Math.max(0, d1, d2),\n\t\t\tdp0 = getSignedDistance(q0x, q0y, q3x, q3y, v1[0], v1[1]),\n\t\t\tdp1 = getSignedDistance(q0x, q0y, q3x, q3y, v1[2], v1[3]),\n\t\t\tdp2 = getSignedDistance(q0x, q0y, q3x, q3y, v1[4], v1[5]),\n\t\t\tdp3 = getSignedDistance(q0x, q0y, q3x, q3y, v1[6], v1[7]),\n\t\t\thull = getConvexHull(dp0, dp1, dp2, dp3),\n\t\t\ttop = hull[0],\n\t\t\tbottom = hull[1],\n\t\t\ttMinClip,\n\t\t\ttMaxClip;\n\t\tif (d1 === 0 && d2 === 0\n\t\t\t\t&& dp0 === 0 && dp1 === 0 && dp2 === 0 && dp3 === 0\n\t\t\t|| (tMinClip = clipConvexHull(top, bottom, dMin, dMax)) == null\n\t\t\t|| (tMaxClip = clipConvexHull(top.reverse(), bottom.reverse(),\n\t\t\t\tdMin, dMax)) == null)\n\t\t\treturn calls;\n\t\tvar tMinNew = tMin + (tMax - tMin) * tMinClip,\n\t\t\ttMaxNew = tMin + (tMax - tMin) * tMaxClip;\n\t\tif (Math.max(uMax - uMin, tMaxNew - tMinNew) < fatLineEpsilon) {\n\t\t\tvar t = (tMinNew + tMaxNew) / 2,\n\t\t\t\tu = (uMin + uMax) / 2;\n\t\t\taddLocation(locations, include,\n\t\t\t\t\tflip ? c2 : c1, flip ? u : t,\n\t\t\t\t\tflip ? c1 : c2, flip ? t : u);\n\t\t} else {\n\t\t\tv1 = Curve.getPart(v1, tMinClip, tMaxClip);\n\t\t\tvar uDiff = uMax - uMin;\n\t\t\tif (tMaxClip - tMinClip > 0.8) {\n\t\t\t\tif (tMaxNew - tMinNew > uDiff) {\n\t\t\t\t\tvar parts = Curve.subdivide(v1, 0.5),\n\t\t\t\t\t\tt = (tMinNew + tMaxNew) / 2;\n\t\t\t\t\tcalls = addCurveIntersections(\n\t\t\t\t\t\t\tv2, parts[0], c2, c1, locations, include, !flip,\n\t\t\t\t\t\t\trecursion, calls, uMin, uMax, tMinNew, t);\n\t\t\t\t\tcalls = addCurveIntersections(\n\t\t\t\t\t\t\tv2, parts[1], c2, c1, locations, include, !flip,\n\t\t\t\t\t\t\trecursion, calls, uMin, uMax, t, tMaxNew);\n\t\t\t\t} else {\n\t\t\t\t\tvar parts = Curve.subdivide(v2, 0.5),\n\t\t\t\t\t\tu = (uMin + uMax) / 2;\n\t\t\t\t\tcalls = addCurveIntersections(\n\t\t\t\t\t\t\tparts[0], v1, c2, c1, locations, include, !flip,\n\t\t\t\t\t\t\trecursion, calls, uMin, u, tMinNew, tMaxNew);\n\t\t\t\t\tcalls = addCurveIntersections(\n\t\t\t\t\t\t\tparts[1], v1, c2, c1, locations, include, !flip,\n\t\t\t\t\t\t\trecursion, calls, u, uMax, tMinNew, tMaxNew);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (uDiff === 0 || uDiff >= fatLineEpsilon) {\n\t\t\t\t\tcalls = addCurveIntersections(\n\t\t\t\t\t\t\tv2, v1, c2, c1, locations, include, !flip,\n\t\t\t\t\t\t\trecursion, calls, uMin, uMax, tMinNew, tMaxNew);\n\t\t\t\t} else {\n\t\t\t\t\tcalls = addCurveIntersections(\n\t\t\t\t\t\t\tv1, v2, c1, c2, locations, include, flip,\n\t\t\t\t\t\t\trecursion, calls, tMinNew, tMaxNew, uMin, uMax);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn calls;\n\t}\n\n\tfunction getConvexHull(dq0, dq1, dq2, dq3) {\n\t\tvar p0 = [ 0, dq0 ],\n\t\t\tp1 = [ 1 / 3, dq1 ],\n\t\t\tp2 = [ 2 / 3, dq2 ],\n\t\t\tp3 = [ 1, dq3 ],\n\t\t\tdist1 = dq1 - (2 * dq0 + dq3) / 3,\n\t\t\tdist2 = dq2 - (dq0 + 2 * dq3) / 3,\n\t\t\thull;\n\t\tif (dist1 * dist2 < 0) {\n\t\t\thull = [[p0, p1, p3], [p0, p2, p3]];\n\t\t} else {\n\t\t\tvar distRatio = dist1 / dist2;\n\t\t\thull = [\n\t\t\t\tdistRatio >= 2 ? [p0, p1, p3]\n\t\t\t\t: distRatio <= 0.5 ? [p0, p2, p3]\n\t\t\t\t: [p0, p1, p2, p3],\n\t\t\t\t[p0, p3]\n\t\t\t];\n\t\t}\n\t\treturn (dist1 || dist2) < 0 ? hull.reverse() : hull;\n\t}\n\n\tfunction clipConvexHull(hullTop, hullBottom, dMin, dMax) {\n\t\tif (hullTop[0][1] < dMin) {\n\t\t\treturn clipConvexHullPart(hullTop, true, dMin);\n\t\t} else if (hullBottom[0][1] > dMax) {\n\t\t\treturn clipConvexHullPart(hullBottom, false, dMax);\n\t\t} else {\n\t\t\treturn hullTop[0][0];\n\t\t}\n\t}\n\n\tfunction clipConvexHullPart(part, top, threshold) {\n\t\tvar px = part[0][0],\n\t\t\tpy = part[0][1];\n\t\tfor (var i = 1, l = part.length; i < l; i++) {\n\t\t\tvar qx = part[i][0],\n\t\t\t\tqy = part[i][1];\n\t\t\tif (top ? qy >= threshold : qy <= threshold) {\n\t\t\t\treturn qy === threshold ? qx\n\t\t\t\t\t\t: px + (threshold - py) * (qx - px) / (qy - py);\n\t\t\t}\n\t\t\tpx = qx;\n\t\t\tpy = qy;\n\t\t}\n\t\treturn null;\n\t}\n\n\tfunction getCurveLineIntersections(v, px, py, vx, vy) {\n\t\tvar isZero = Numerical.isZero;\n\t\tif (isZero(vx) && isZero(vy)) {\n\t\t\tvar t = Curve.getTimeOf(v, new Point(px, py));\n\t\t\treturn t === null ? [] : [t];\n\t\t}\n\t\tvar angle = Math.atan2(-vy, vx),\n\t\t\tsin = Math.sin(angle),\n\t\t\tcos = Math.cos(angle),\n\t\t\trv = [],\n\t\t\troots = [];\n\t\tfor (var i = 0; i < 8; i += 2) {\n\t\t\tvar x = v[i] - px,\n\t\t\t\ty = v[i + 1] - py;\n\t\t\trv.push(\n\t\t\t\tx * cos - y * sin,\n\t\t\t\tx * sin + y * cos);\n\t\t}\n\t\tCurve.solveCubic(rv, 1, 0, roots, 0, 1);\n\t\treturn roots;\n\t}\n\n\tfunction addCurveLineIntersections(v1, v2, c1, c2, locations, include,\n\t\t\tflip) {\n\t\tvar x1 = v2[0], y1 = v2[1],\n\t\t\tx2 = v2[6], y2 = v2[7],\n\t\t\troots = getCurveLineIntersections(v1, x1, y1, x2 - x1, y2 - y1);\n\t\tfor (var i = 0, l = roots.length; i < l; i++) {\n\t\t\tvar t1 = roots[i],\n\t\t\t\tp1 = Curve.getPoint(v1, t1),\n\t\t\t\tt2 = Curve.getTimeOf(v2, p1);\n\t\t\tif (t2 !== null) {\n\t\t\t\taddLocation(locations, include,\n\t\t\t\t\t\tflip ? c2 : c1, flip ? t2 : t1,\n\t\t\t\t\t\tflip ? c1 : c2, flip ? t1 : t2);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction addLineIntersection(v1, v2, c1, c2, locations, include) {\n\t\tvar pt = Line.intersect(\n\t\t\t\tv1[0], v1[1], v1[6], v1[7],\n\t\t\t\tv2[0], v2[1], v2[6], v2[7]);\n\t\tif (pt) {\n\t\t\taddLocation(locations, include,\n\t\t\t\t\tc1, Curve.getTimeOf(v1, pt),\n\t\t\t\t\tc2, Curve.getTimeOf(v2, pt));\n\t\t}\n\t}\n\n\tfunction getCurveIntersections(v1, v2, c1, c2, locations, include) {\n\t\tvar epsilon = 1e-12,\n\t\t\tmin = Math.min,\n\t\t\tmax = Math.max;\n\n\t\tif (max(v1[0], v1[2], v1[4], v1[6]) + epsilon >\n\t\t\tmin(v2[0], v2[2], v2[4], v2[6]) &&\n\t\t\tmin(v1[0], v1[2], v1[4], v1[6]) - epsilon <\n\t\t\tmax(v2[0], v2[2], v2[4], v2[6]) &&\n\t\t\tmax(v1[1], v1[3], v1[5], v1[7]) + epsilon >\n\t\t\tmin(v2[1], v2[3], v2[5], v2[7]) &&\n\t\t\tmin(v1[1], v1[3], v1[5], v1[7]) - epsilon <\n\t\t\tmax(v2[1], v2[3], v2[5], v2[7])) {\n\t\t\tvar overlaps = getOverlaps(v1, v2);\n\t\t\tif (overlaps) {\n\t\t\t\tfor (var i = 0; i < 2; i++) {\n\t\t\t\t\tvar overlap = overlaps[i];\n\t\t\t\t\taddLocation(locations, include,\n\t\t\t\t\t\t\tc1, overlap[0],\n\t\t\t\t\t\t\tc2, overlap[1], true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar straight1 = Curve.isStraight(v1),\n\t\t\t\t\tstraight2 = Curve.isStraight(v2),\n\t\t\t\t\tstraight = straight1 && straight2,\n\t\t\t\t\tflip = straight1 && !straight2,\n\t\t\t\t\tbefore = locations.length;\n\t\t\t\t(straight\n\t\t\t\t\t? addLineIntersection\n\t\t\t\t\t: straight1 || straight2\n\t\t\t\t\t\t? addCurveLineIntersections\n\t\t\t\t\t\t: addCurveIntersections)(\n\t\t\t\t\t\t\tflip ? v2 : v1, flip ? v1 : v2,\n\t\t\t\t\t\t\tflip ? c2 : c1, flip ? c1 : c2,\n\t\t\t\t\t\t\tlocations, include, flip,\n\t\t\t\t\t\t\t0, 0, 0, 1, 0, 1);\n\t\t\t\tif (!straight || locations.length === before) {\n\t\t\t\t\tfor (var i = 0; i < 4; i++) {\n\t\t\t\t\t\tvar t1 = i >> 1,\n\t\t\t\t\t\t\tt2 = i & 1,\n\t\t\t\t\t\t\ti1 = t1 * 6,\n\t\t\t\t\t\t\ti2 = t2 * 6,\n\t\t\t\t\t\t\tp1 = new Point(v1[i1], v1[i1 + 1]),\n\t\t\t\t\t\t\tp2 = new Point(v2[i2], v2[i2 + 1]);\n\t\t\t\t\t\tif (p1.isClose(p2, epsilon)) {\n\t\t\t\t\t\t\taddLocation(locations, include,\n\t\t\t\t\t\t\t\t\tc1, t1,\n\t\t\t\t\t\t\t\t\tc2, t2);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn locations;\n\t}\n\n\tfunction getSelfIntersection(v1, c1, locations, include) {\n\t\tvar info = Curve.classify(v1);\n\t\tif (info.type === 'loop') {\n\t\t\tvar roots = info.roots;\n\t\t\taddLocation(locations, include,\n\t\t\t\t\tc1, roots[0],\n\t\t\t\t\tc1, roots[1]);\n\t\t}\n\t  return locations;\n\t}\n\n\tfunction getIntersections(curves1, curves2, include, matrix1, matrix2,\n\t\t\t_returnFirst) {\n\t\tvar epsilon = 1e-7,\n\t\t\tself = !curves2;\n\t\tif (self)\n\t\t\tcurves2 = curves1;\n\t\tvar length1 = curves1.length,\n\t\t\tlength2 = curves2.length,\n\t\t\tvalues1 = new Array(length1),\n\t\t\tvalues2 = self ? values1 : new Array(length2),\n\t\t\tlocations = [];\n\n\t\tfor (var i = 0; i < length1; i++) {\n\t\t\tvalues1[i] = curves1[i].getValues(matrix1);\n\t\t}\n\t\tif (!self) {\n\t\t\tfor (var i = 0; i < length2; i++) {\n\t\t\t\tvalues2[i] = curves2[i].getValues(matrix2);\n\t\t\t}\n\t\t}\n\t\tvar boundsCollisions = CollisionDetection.findCurveBoundsCollisions(\n\t\t\t\tvalues1, values2, epsilon);\n\t\tfor (var index1 = 0; index1 < length1; index1++) {\n\t\t\tvar curve1 = curves1[index1],\n\t\t\t\tv1 = values1[index1];\n\t\t\tif (self) {\n\t\t\t\tgetSelfIntersection(v1, curve1, locations, include);\n\t\t\t}\n\t\t\tvar collisions1 = boundsCollisions[index1];\n\t\t\tif (collisions1) {\n\t\t\t\tfor (var j = 0; j < collisions1.length; j++) {\n\t\t\t\t\tif (_returnFirst && locations.length)\n\t\t\t\t\t\treturn locations;\n\t\t\t\t\tvar index2 = collisions1[j];\n\t\t\t\t\tif (!self || index2 > index1) {\n\t\t\t\t\t\tvar curve2 = curves2[index2],\n\t\t\t\t\t\t\tv2 = values2[index2];\n\t\t\t\t\t\tgetCurveIntersections(\n\t\t\t\t\t\t\t\tv1, v2, curve1, curve2, locations, include);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn locations;\n\t}\n\n\tfunction getOverlaps(v1, v2) {\n\n\t\tfunction getSquaredLineLength(v) {\n\t\t\tvar x = v[6] - v[0],\n\t\t\t\ty = v[7] - v[1];\n\t\t\treturn x * x + y * y;\n\t\t}\n\n\t\tvar abs = Math.abs,\n\t\t\tgetDistance = Line.getDistance,\n\t\t\ttimeEpsilon = 1e-8,\n\t\t\tgeomEpsilon = 1e-7,\n\t\t\tstraight1 = Curve.isStraight(v1),\n\t\t\tstraight2 = Curve.isStraight(v2),\n\t\t\tstraightBoth = straight1 && straight2,\n\t\t\tflip = getSquaredLineLength(v1) < getSquaredLineLength(v2),\n\t\t\tl1 = flip ? v2 : v1,\n\t\t\tl2 = flip ? v1 : v2,\n\t\t\tpx = l1[0], py = l1[1],\n\t\t\tvx = l1[6] - px, vy = l1[7] - py;\n\t\tif (getDistance(px, py, vx, vy, l2[0], l2[1], true) < geomEpsilon &&\n\t\t\tgetDistance(px, py, vx, vy, l2[6], l2[7], true) < geomEpsilon) {\n\t\t\tif (!straightBoth &&\n\t\t\t\tgetDistance(px, py, vx, vy, l1[2], l1[3], true) < geomEpsilon &&\n\t\t\t\tgetDistance(px, py, vx, vy, l1[4], l1[5], true) < geomEpsilon &&\n\t\t\t\tgetDistance(px, py, vx, vy, l2[2], l2[3], true) < geomEpsilon &&\n\t\t\t\tgetDistance(px, py, vx, vy, l2[4], l2[5], true) < geomEpsilon) {\n\t\t\t\tstraight1 = straight2 = straightBoth = true;\n\t\t\t}\n\t\t} else if (straightBoth) {\n\t\t\treturn null;\n\t\t}\n\t\tif (straight1 ^ straight2) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar v = [v1, v2],\n\t\t\tpairs = [];\n\t\tfor (var i = 0; i < 4 && pairs.length < 2; i++) {\n\t\t\tvar i1 = i & 1,\n\t\t\t\ti2 = i1 ^ 1,\n\t\t\t\tt1 = i >> 1,\n\t\t\t\tt2 = Curve.getTimeOf(v[i1], new Point(\n\t\t\t\t\tv[i2][t1 ? 6 : 0],\n\t\t\t\t\tv[i2][t1 ? 7 : 1]));\n\t\t\tif (t2 != null) {\n\t\t\t\tvar pair = i1 ? [t1, t2] : [t2, t1];\n\t\t\t\tif (!pairs.length ||\n\t\t\t\t\tabs(pair[0] - pairs[0][0]) > timeEpsilon &&\n\t\t\t\t\tabs(pair[1] - pairs[0][1]) > timeEpsilon) {\n\t\t\t\t\tpairs.push(pair);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (i > 2 && !pairs.length)\n\t\t\t\tbreak;\n\t\t}\n\t\tif (pairs.length !== 2) {\n\t\t\tpairs = null;\n\t\t} else if (!straightBoth) {\n\t\t\tvar o1 = Curve.getPart(v1, pairs[0][0], pairs[1][0]),\n\t\t\t\to2 = Curve.getPart(v2, pairs[0][1], pairs[1][1]);\n\t\t\tif (abs(o2[2] - o1[2]) > geomEpsilon ||\n\t\t\t\tabs(o2[3] - o1[3]) > geomEpsilon ||\n\t\t\t\tabs(o2[4] - o1[4]) > geomEpsilon ||\n\t\t\t\tabs(o2[5] - o1[5]) > geomEpsilon)\n\t\t\t\tpairs = null;\n\t\t}\n\t\treturn pairs;\n\t}\n\n\tfunction getTimesWithTangent(v, tangent) {\n\t\tvar x0 = v[0], y0 = v[1],\n\t\t\tx1 = v[2], y1 = v[3],\n\t\t\tx2 = v[4], y2 = v[5],\n\t\t\tx3 = v[6], y3 = v[7],\n\t\t\tnormalized = tangent.normalize(),\n\t\t\ttx = normalized.x,\n\t\t\tty = normalized.y,\n\t\t\tax = 3 * x3 - 9 * x2 + 9 * x1 - 3 * x0,\n\t\t\tay = 3 * y3 - 9 * y2 + 9 * y1 - 3 * y0,\n\t\t\tbx = 6 * x2 - 12 * x1 + 6 * x0,\n\t\t\tby = 6 * y2 - 12 * y1 + 6 * y0,\n\t\t\tcx = 3 * x1 - 3 * x0,\n\t\t\tcy = 3 * y1 - 3 * y0,\n\t\t\tden = 2 * ax * ty - 2 * ay * tx,\n\t\t\ttimes = [];\n\t\tif (Math.abs(den) < Numerical.CURVETIME_EPSILON) {\n\t\t\tvar num = ax * cy - ay * cx,\n\t\t\t\tden = ax * by - ay * bx;\n\t\t\tif (den != 0) {\n\t\t\t\tvar t = -num / den;\n\t\t\t\tif (t >= 0 && t <= 1) times.push(t);\n\t\t\t}\n\t\t} else {\n\t\t\tvar delta = (bx * bx - 4 * ax * cx) * ty * ty +\n\t\t\t\t(-2 * bx * by + 4 * ay * cx + 4 * ax * cy) * tx * ty +\n\t\t\t\t(by * by - 4 * ay * cy) * tx * tx,\n\t\t\t\tk = bx * ty - by * tx;\n\t\t\tif (delta >= 0 && den != 0) {\n\t\t\t\tvar d = Math.sqrt(delta),\n\t\t\t\t\tt0 = -(k + d) / den,\n\t\t\t\t\tt1 = (-k + d) / den;\n\t\t\t\tif (t0 >= 0 && t0 <= 1) times.push(t0);\n\t\t\t\tif (t1 >= 0 && t1 <= 1) times.push(t1);\n\t\t\t}\n\t\t}\n\t\treturn times;\n\t}\n\n\treturn {\n\t\tgetIntersections: function(curve) {\n\t\t\tvar v1 = this.getValues(),\n\t\t\t\tv2 = curve && curve !== this && curve.getValues();\n\t\t\treturn v2 ? getCurveIntersections(v1, v2, this, curve, [])\n\t\t\t\t\t  : getSelfIntersection(v1, this, []);\n\t\t},\n\n\t\tstatics: {\n\t\t\tgetOverlaps: getOverlaps,\n\t\t\tgetIntersections: getIntersections,\n\t\t\tgetCurveLineIntersections: getCurveLineIntersections,\n\t\t\tgetTimesWithTangent: getTimesWithTangent\n\t\t}\n\t};\n});\n\nvar CurveLocation = Base.extend({\n\t_class: 'CurveLocation',\n\n\tinitialize: function CurveLocation(curve, time, point, _overlap, _distance) {\n\t\tif (time >= 0.99999999) {\n\t\t\tvar next = curve.getNext();\n\t\t\tif (next) {\n\t\t\t\ttime = 0;\n\t\t\t\tcurve = next;\n\t\t\t}\n\t\t}\n\t\tthis._setCurve(curve);\n\t\tthis._time = time;\n\t\tthis._point = point || curve.getPointAtTime(time);\n\t\tthis._overlap = _overlap;\n\t\tthis._distance = _distance;\n\t\tthis._intersection = this._next = this._previous = null;\n\t},\n\n\t_setPath: function(path) {\n\t\tthis._path = path;\n\t\tthis._version = path ? path._version : 0;\n\t},\n\n\t_setCurve: function(curve) {\n\t\tthis._setPath(curve._path);\n\t\tthis._curve = curve;\n\t\tthis._segment = null;\n\t\tthis._segment1 = curve._segment1;\n\t\tthis._segment2 = curve._segment2;\n\t},\n\n\t_setSegment: function(segment) {\n\t\tvar curve = segment.getCurve();\n\t\tif (curve) {\n\t\t\tthis._setCurve(curve);\n\t\t} else {\n\t\t\tthis._setPath(segment._path);\n\t\t\tthis._segment1 = segment;\n\t\t\tthis._segment2 = null;\n\t\t}\n\t\tthis._segment = segment;\n\t\tthis._time = segment === this._segment1 ? 0 : 1;\n\t\tthis._point = segment._point.clone();\n\t},\n\n\tgetSegment: function() {\n\t\tvar segment = this._segment;\n\t\tif (!segment) {\n\t\t\tvar curve = this.getCurve(),\n\t\t\t\ttime = this.getTime();\n\t\t\tif (time === 0) {\n\t\t\t\tsegment = curve._segment1;\n\t\t\t} else if (time === 1) {\n\t\t\t\tsegment = curve._segment2;\n\t\t\t} else if (time != null) {\n\t\t\t\tsegment = curve.getPartLength(0, time)\n\t\t\t\t\t< curve.getPartLength(time, 1)\n\t\t\t\t\t\t? curve._segment1\n\t\t\t\t\t\t: curve._segment2;\n\t\t\t}\n\t\t\tthis._segment = segment;\n\t\t}\n\t\treturn segment;\n\t},\n\n\tgetCurve: function() {\n\t\tvar path = this._path,\n\t\t\tthat = this;\n\t\tif (path && path._version !== this._version) {\n\t\t\tthis._time = this._offset = this._curveOffset = this._curve = null;\n\t\t}\n\n\t\tfunction trySegment(segment) {\n\t\t\tvar curve = segment && segment.getCurve();\n\t\t\tif (curve && (that._time = curve.getTimeOf(that._point)) != null) {\n\t\t\t\tthat._setCurve(curve);\n\t\t\t\treturn curve;\n\t\t\t}\n\t\t}\n\n\t\treturn this._curve\n\t\t\t|| trySegment(this._segment)\n\t\t\t|| trySegment(this._segment1)\n\t\t\t|| trySegment(this._segment2.getPrevious());\n\t},\n\n\tgetPath: function() {\n\t\tvar curve = this.getCurve();\n\t\treturn curve && curve._path;\n\t},\n\n\tgetIndex: function() {\n\t\tvar curve = this.getCurve();\n\t\treturn curve && curve.getIndex();\n\t},\n\n\tgetTime: function() {\n\t\tvar curve = this.getCurve(),\n\t\t\ttime = this._time;\n\t\treturn curve && time == null\n\t\t\t? this._time = curve.getTimeOf(this._point)\n\t\t\t: time;\n\t},\n\n\tgetParameter: '#getTime',\n\n\tgetPoint: function() {\n\t\treturn this._point;\n\t},\n\n\tgetOffset: function() {\n\t\tvar offset = this._offset;\n\t\tif (offset == null) {\n\t\t\toffset = 0;\n\t\t\tvar path = this.getPath(),\n\t\t\t\tindex = this.getIndex();\n\t\t\tif (path && index != null) {\n\t\t\t\tvar curves = path.getCurves();\n\t\t\t\tfor (var i = 0; i < index; i++)\n\t\t\t\t\toffset += curves[i].getLength();\n\t\t\t}\n\t\t\tthis._offset = offset += this.getCurveOffset();\n\t\t}\n\t\treturn offset;\n\t},\n\n\tgetCurveOffset: function() {\n\t\tvar offset = this._curveOffset;\n\t\tif (offset == null) {\n\t\t\tvar curve = this.getCurve(),\n\t\t\t\ttime = this.getTime();\n\t\t\tthis._curveOffset = offset = time != null && curve\n\t\t\t\t\t&& curve.getPartLength(0, time);\n\t\t}\n\t\treturn offset;\n\t},\n\n\tgetIntersection: function() {\n\t\treturn this._intersection;\n\t},\n\n\tgetDistance: function() {\n\t\treturn this._distance;\n\t},\n\n\tdivide: function() {\n\t\tvar curve = this.getCurve(),\n\t\t\tres = curve && curve.divideAtTime(this.getTime());\n\t\tif (res) {\n\t\t\tthis._setSegment(res._segment1);\n\t\t}\n\t\treturn res;\n\t},\n\n\tsplit: function() {\n\t\tvar curve = this.getCurve(),\n\t\t\tpath = curve._path,\n\t\t\tres = curve && curve.splitAtTime(this.getTime());\n\t\tif (res) {\n\t\t\tthis._setSegment(path.getLastSegment());\n\t\t}\n\t\treturn  res;\n\t},\n\n\tequals: function(loc, _ignoreOther) {\n\t\tvar res = this === loc;\n\t\tif (!res && loc instanceof CurveLocation) {\n\t\t\tvar c1 = this.getCurve(),\n\t\t\t\tc2 = loc.getCurve(),\n\t\t\t\tp1 = c1._path,\n\t\t\t\tp2 = c2._path;\n\t\t\tif (p1 === p2) {\n\t\t\t\tvar abs = Math.abs,\n\t\t\t\t\tepsilon = 1e-7,\n\t\t\t\t\tdiff = abs(this.getOffset() - loc.getOffset()),\n\t\t\t\t\ti1 = !_ignoreOther && this._intersection,\n\t\t\t\t\ti2 = !_ignoreOther && loc._intersection;\n\t\t\t\tres = (diff < epsilon\n\t\t\t\t\t\t|| p1 && abs(p1.getLength() - diff) < epsilon)\n\t\t\t\t\t&& (!i1 && !i2 || i1 && i2 && i1.equals(i2, true));\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t},\n\n\ttoString: function() {\n\t\tvar parts = [],\n\t\t\tpoint = this.getPoint(),\n\t\t\tf = Formatter.instance;\n\t\tif (point)\n\t\t\tparts.push('point: ' + point);\n\t\tvar index = this.getIndex();\n\t\tif (index != null)\n\t\t\tparts.push('index: ' + index);\n\t\tvar time = this.getTime();\n\t\tif (time != null)\n\t\t\tparts.push('time: ' + f.number(time));\n\t\tif (this._distance != null)\n\t\t\tparts.push('distance: ' + f.number(this._distance));\n\t\treturn '{ ' + parts.join(', ') + ' }';\n\t},\n\n\tisTouching: function() {\n\t\tvar inter = this._intersection;\n\t\tif (inter && this.getTangent().isCollinear(inter.getTangent())) {\n\t\t\tvar curve1 = this.getCurve(),\n\t\t\t\tcurve2 = inter.getCurve();\n\t\t\treturn !(curve1.isStraight() && curve2.isStraight()\n\t\t\t\t\t&& curve1.getLine().intersect(curve2.getLine()));\n\t\t}\n\t\treturn false;\n\t},\n\n\tisCrossing: function() {\n\t\tvar inter = this._intersection;\n\t\tif (!inter)\n\t\t\treturn false;\n\t\tvar t1 = this.getTime(),\n\t\t\tt2 = inter.getTime(),\n\t\t\ttMin = 1e-8,\n\t\t\ttMax = 1 - tMin,\n\t\t\tt1Inside = t1 >= tMin && t1 <= tMax,\n\t\t\tt2Inside = t2 >= tMin && t2 <= tMax;\n\t\tif (t1Inside && t2Inside)\n\t\t\treturn !this.isTouching();\n\t\tvar c2 = this.getCurve(),\n\t\t\tc1 = c2 && t1 < tMin ? c2.getPrevious() : c2,\n\t\t\tc4 = inter.getCurve(),\n\t\t\tc3 = c4 && t2 < tMin ? c4.getPrevious() : c4;\n\t\tif (t1 > tMax)\n\t\t\tc2 = c2.getNext();\n\t\tif (t2 > tMax)\n\t\t\tc4 = c4.getNext();\n\t\tif (!c1 || !c2 || !c3 || !c4)\n\t\t\treturn false;\n\n\t\tvar offsets = [];\n\n\t\tfunction addOffsets(curve, end) {\n\t\t\tvar v = curve.getValues(),\n\t\t\t\troots = Curve.classify(v).roots || Curve.getPeaks(v),\n\t\t\t\tcount = roots.length,\n\t\t\t\toffset = Curve.getLength(v,\n\t\t\t\t\tend && count ? roots[count - 1] : 0,\n\t\t\t\t\t!end && count ? roots[0] : 1);\n\t\t\toffsets.push(count ? offset : offset / 32);\n\t\t}\n\n\t\tfunction isInRange(angle, min, max) {\n\t\t\treturn min < max\n\t\t\t\t\t? angle > min && angle < max\n\t\t\t\t\t: angle > min || angle < max;\n\t\t}\n\n\t\tif (!t1Inside) {\n\t\t\taddOffsets(c1, true);\n\t\t\taddOffsets(c2, false);\n\t\t}\n\t\tif (!t2Inside) {\n\t\t\taddOffsets(c3, true);\n\t\t\taddOffsets(c4, false);\n\t\t}\n\t\tvar pt = this.getPoint(),\n\t\t\toffset = Math.min.apply(Math, offsets),\n\t\t\tv2 = t1Inside ? c2.getTangentAtTime(t1)\n\t\t\t\t\t: c2.getPointAt(offset).subtract(pt),\n\t\t\tv1 = t1Inside ? v2.negate()\n\t\t\t\t\t: c1.getPointAt(-offset).subtract(pt),\n\t\t\tv4 = t2Inside ? c4.getTangentAtTime(t2)\n\t\t\t\t\t: c4.getPointAt(offset).subtract(pt),\n\t\t\tv3 = t2Inside ? v4.negate()\n\t\t\t\t\t: c3.getPointAt(-offset).subtract(pt),\n\t\t\ta1 = v1.getAngle(),\n\t\t\ta2 = v2.getAngle(),\n\t\t\ta3 = v3.getAngle(),\n\t\t\ta4 = v4.getAngle();\n\t\treturn !!(t1Inside\n\t\t\t\t? (isInRange(a1, a3, a4) ^ isInRange(a2, a3, a4)) &&\n\t\t\t\t  (isInRange(a1, a4, a3) ^ isInRange(a2, a4, a3))\n\t\t\t\t: (isInRange(a3, a1, a2) ^ isInRange(a4, a1, a2)) &&\n\t\t\t\t  (isInRange(a3, a2, a1) ^ isInRange(a4, a2, a1)));\n\t},\n\n\thasOverlap: function() {\n\t\treturn !!this._overlap;\n\t}\n}, Base.each(Curve._evaluateMethods, function(name) {\n\tvar get = name + 'At';\n\tthis[name] = function() {\n\t\tvar curve = this.getCurve(),\n\t\t\ttime = this.getTime();\n\t\treturn time != null && curve && curve[get](time, true);\n\t};\n}, {\n\tpreserve: true\n}),\nnew function() {\n\n\tfunction insert(locations, loc, merge) {\n\t\tvar length = locations.length,\n\t\t\tl = 0,\n\t\t\tr = length - 1;\n\n\t\tfunction search(index, dir) {\n\t\t\tfor (var i = index + dir; i >= -1 && i <= length; i += dir) {\n\t\t\t\tvar loc2 = locations[((i % length) + length) % length];\n\t\t\t\tif (!loc.getPoint().isClose(loc2.getPoint(),\n\t\t\t\t\t\t1e-7))\n\t\t\t\t\tbreak;\n\t\t\t\tif (loc.equals(loc2))\n\t\t\t\t\treturn loc2;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\twhile (l <= r) {\n\t\t\tvar m = (l + r) >>> 1,\n\t\t\t\tloc2 = locations[m],\n\t\t\t\tfound;\n\t\t\tif (merge && (found = loc.equals(loc2) ? loc2\n\t\t\t\t\t: (search(m, -1) || search(m, 1)))) {\n\t\t\t\tif (loc._overlap) {\n\t\t\t\t\tfound._overlap = found._intersection._overlap = true;\n\t\t\t\t}\n\t\t\t\treturn found;\n\t\t\t}\n\t\tvar path1 = loc.getPath(),\n\t\t\tpath2 = loc2.getPath(),\n\t\t\tdiff = path1 !== path2\n\t\t\t\t? path1._id - path2._id\n\t\t\t\t: (loc.getIndex() + loc.getTime())\n\t\t\t\t- (loc2.getIndex() + loc2.getTime());\n\t\t\tif (diff < 0) {\n\t\t\t\tr = m - 1;\n\t\t\t} else {\n\t\t\t\tl = m + 1;\n\t\t\t}\n\t\t}\n\t\tlocations.splice(l, 0, loc);\n\t\treturn loc;\n\t}\n\n\treturn { statics: {\n\t\tinsert: insert,\n\n\t\texpand: function(locations) {\n\t\t\tvar expanded = locations.slice();\n\t\t\tfor (var i = locations.length - 1; i >= 0; i--) {\n\t\t\t\tinsert(expanded, locations[i]._intersection, false);\n\t\t\t}\n\t\t\treturn expanded;\n\t\t}\n\t}};\n});\n\nvar PathItem = Item.extend({\n\t_class: 'PathItem',\n\t_selectBounds: false,\n\t_canScaleStroke: true,\n\tbeans: true,\n\n\tinitialize: function PathItem() {\n\t},\n\n\tstatics: {\n\t\tcreate: function(arg) {\n\t\t\tvar data,\n\t\t\t\tsegments,\n\t\t\t\tcompound;\n\t\t\tif (Base.isPlainObject(arg)) {\n\t\t\t\tsegments = arg.segments;\n\t\t\t\tdata = arg.pathData;\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tsegments = arg;\n\t\t\t} else if (typeof arg === 'string') {\n\t\t\t\tdata = arg;\n\t\t\t}\n\t\t\tif (segments) {\n\t\t\t\tvar first = segments[0];\n\t\t\t\tcompound = first && Array.isArray(first[0]);\n\t\t\t} else if (data) {\n\t\t\t\tcompound = (data.match(/m/gi) || []).length > 1\n\t\t\t\t\t\t|| /z\\s*\\S+/i.test(data);\n\t\t\t}\n\t\t\tvar ctor = compound ? CompoundPath : Path;\n\t\t\treturn new ctor(arg);\n\t\t}\n\t},\n\n\t_asPathItem: function() {\n\t\treturn this;\n\t},\n\n\tisClockwise: function() {\n\t\treturn this.getArea() >= 0;\n\t},\n\n\tsetClockwise: function(clockwise) {\n\t\tif (this.isClockwise() != (clockwise = !!clockwise))\n\t\t\tthis.reverse();\n\t},\n\n\tsetPathData: function(data) {\n\n\t\tvar parts = data && data.match(/[mlhvcsqtaz][^mlhvcsqtaz]*/ig),\n\t\t\tcoords,\n\t\t\trelative = false,\n\t\t\tprevious,\n\t\t\tcontrol,\n\t\t\tcurrent = new Point(),\n\t\t\tstart = new Point();\n\n\t\tfunction getCoord(index, coord) {\n\t\t\tvar val = +coords[index];\n\t\t\tif (relative)\n\t\t\t\tval += current[coord];\n\t\t\treturn val;\n\t\t}\n\n\t\tfunction getPoint(index) {\n\t\t\treturn new Point(\n\t\t\t\tgetCoord(index, 'x'),\n\t\t\t\tgetCoord(index + 1, 'y')\n\t\t\t);\n\t\t}\n\n\t\tthis.clear();\n\n\t\tfor (var i = 0, l = parts && parts.length; i < l; i++) {\n\t\t\tvar part = parts[i],\n\t\t\t\tcommand = part[0],\n\t\t\t\tlower = command.toLowerCase();\n\t\t\tcoords = part.match(/[+-]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?/g);\n\t\t\tvar length = coords && coords.length;\n\t\t\trelative = command === lower;\n\t\t\tif (previous === 'z' && !/[mz]/.test(lower))\n\t\t\t\tthis.moveTo(current);\n\t\t\tswitch (lower) {\n\t\t\tcase 'm':\n\t\t\tcase 'l':\n\t\t\t\tvar move = lower === 'm';\n\t\t\t\tfor (var j = 0; j < length; j += 2) {\n\t\t\t\t\tthis[move ? 'moveTo' : 'lineTo'](current = getPoint(j));\n\t\t\t\t\tif (move) {\n\t\t\t\t\t\tstart = current;\n\t\t\t\t\t\tmove = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontrol = current;\n\t\t\t\tbreak;\n\t\t\tcase 'h':\n\t\t\tcase 'v':\n\t\t\t\tvar coord = lower === 'h' ? 'x' : 'y';\n\t\t\t\tcurrent = current.clone();\n\t\t\t\tfor (var j = 0; j < length; j++) {\n\t\t\t\t\tcurrent[coord] = getCoord(j, coord);\n\t\t\t\t\tthis.lineTo(current);\n\t\t\t\t}\n\t\t\t\tcontrol = current;\n\t\t\t\tbreak;\n\t\t\tcase 'c':\n\t\t\t\tfor (var j = 0; j < length; j += 6) {\n\t\t\t\t\tthis.cubicCurveTo(\n\t\t\t\t\t\t\tgetPoint(j),\n\t\t\t\t\t\t\tcontrol = getPoint(j + 2),\n\t\t\t\t\t\t\tcurrent = getPoint(j + 4));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 's':\n\t\t\t\tfor (var j = 0; j < length; j += 4) {\n\t\t\t\t\tthis.cubicCurveTo(\n\t\t\t\t\t\t\t/[cs]/.test(previous)\n\t\t\t\t\t\t\t\t\t? current.multiply(2).subtract(control)\n\t\t\t\t\t\t\t\t\t: current,\n\t\t\t\t\t\t\tcontrol = getPoint(j),\n\t\t\t\t\t\t\tcurrent = getPoint(j + 2));\n\t\t\t\t\tprevious = lower;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'q':\n\t\t\t\tfor (var j = 0; j < length; j += 4) {\n\t\t\t\t\tthis.quadraticCurveTo(\n\t\t\t\t\t\t\tcontrol = getPoint(j),\n\t\t\t\t\t\t\tcurrent = getPoint(j + 2));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 't':\n\t\t\t\tfor (var j = 0; j < length; j += 2) {\n\t\t\t\t\tthis.quadraticCurveTo(\n\t\t\t\t\t\t\tcontrol = (/[qt]/.test(previous)\n\t\t\t\t\t\t\t\t\t? current.multiply(2).subtract(control)\n\t\t\t\t\t\t\t\t\t: current),\n\t\t\t\t\t\t\tcurrent = getPoint(j));\n\t\t\t\t\tprevious = lower;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'a':\n\t\t\t\tfor (var j = 0; j < length; j += 7) {\n\t\t\t\t\tthis.arcTo(current = getPoint(j + 5),\n\t\t\t\t\t\t\tnew Size(+coords[j], +coords[j + 1]),\n\t\t\t\t\t\t\t+coords[j + 2], +coords[j + 4], +coords[j + 3]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'z':\n\t\t\t\tthis.closePath(1e-12);\n\t\t\t\tcurrent = start;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tprevious = lower;\n\t\t}\n\t},\n\n\t_canComposite: function() {\n\t\treturn !(this.hasFill() && this.hasStroke());\n\t},\n\n\t_contains: function(point) {\n\t\tvar winding = point.isInside(\n\t\t\t\tthis.getBounds({ internal: true, handle: true }))\n\t\t\t\t\t? this._getWinding(point)\n\t\t\t\t\t: {};\n\t\treturn winding.onPath || !!(this.getFillRule() === 'evenodd'\n\t\t\t\t? winding.windingL & 1 || winding.windingR & 1\n\t\t\t\t: winding.winding);\n\t},\n\n\tgetIntersections: function(path, include, _matrix, _returnFirst) {\n\t\tvar self = this === path || !path,\n\t\t\tmatrix1 = this._matrix._orNullIfIdentity(),\n\t\t\tmatrix2 = self ? matrix1\n\t\t\t\t: (_matrix || path._matrix)._orNullIfIdentity();\n\t\treturn self || this.getBounds(matrix1).intersects(\n\t\t\t\tpath.getBounds(matrix2), 1e-12)\n\t\t\t\t? Curve.getIntersections(\n\t\t\t\t\t\tthis.getCurves(), !self && path.getCurves(), include,\n\t\t\t\t\t\tmatrix1, matrix2, _returnFirst)\n\t\t\t\t: [];\n\t},\n\n\tgetCrossings: function(path) {\n\t\treturn this.getIntersections(path, function(inter) {\n\t\t\treturn inter.isCrossing();\n\t\t});\n\t},\n\n\tgetNearestLocation: function() {\n\t\tvar point = Point.read(arguments),\n\t\t\tcurves = this.getCurves(),\n\t\t\tminDist = Infinity,\n\t\t\tminLoc = null;\n\t\tfor (var i = 0, l = curves.length; i < l; i++) {\n\t\t\tvar loc = curves[i].getNearestLocation(point);\n\t\t\tif (loc._distance < minDist) {\n\t\t\t\tminDist = loc._distance;\n\t\t\t\tminLoc = loc;\n\t\t\t}\n\t\t}\n\t\treturn minLoc;\n\t},\n\n\tgetNearestPoint: function() {\n\t\tvar loc = this.getNearestLocation.apply(this, arguments);\n\t\treturn loc ? loc.getPoint() : loc;\n\t},\n\n\tinterpolate: function(from, to, factor) {\n\t\tvar isPath = !this._children,\n\t\t\tname = isPath ? '_segments' : '_children',\n\t\t\titemsFrom = from[name],\n\t\t\titemsTo = to[name],\n\t\t\titems = this[name];\n\t\tif (!itemsFrom || !itemsTo || itemsFrom.length !== itemsTo.length) {\n\t\t\tthrow new Error('Invalid operands in interpolate() call: ' +\n\t\t\t\t\tfrom + ', ' + to);\n\t\t}\n\t\tvar current = items.length,\n\t\t\tlength = itemsTo.length;\n\t\tif (current < length) {\n\t\t\tvar ctor = isPath ? Segment : Path;\n\t\t\tfor (var i = current; i < length; i++) {\n\t\t\t\tthis.add(new ctor());\n\t\t\t}\n\t\t} else if (current > length) {\n\t\t\tthis[isPath ? 'removeSegments' : 'removeChildren'](length, current);\n\t\t}\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\titems[i].interpolate(itemsFrom[i], itemsTo[i], factor);\n\t\t}\n\t\tif (isPath) {\n\t\t\tthis.setClosed(from._closed);\n\t\t\tthis._changed(9);\n\t\t}\n\t},\n\n\tcompare: function(path) {\n\t\tvar ok = false;\n\t\tif (path) {\n\t\t\tvar paths1 = this._children || [this],\n\t\t\t\tpaths2 = path._children ? path._children.slice() : [path],\n\t\t\t\tlength1 = paths1.length,\n\t\t\t\tlength2 = paths2.length,\n\t\t\t\tmatched = [],\n\t\t\t\tcount = 0;\n\t\t\tok = true;\n\t\t\tvar boundsOverlaps = CollisionDetection.findItemBoundsCollisions(paths1, paths2, Numerical.GEOMETRIC_EPSILON);\n\t\t\tfor (var i1 = length1 - 1; i1 >= 0 && ok; i1--) {\n\t\t\t\tvar path1 = paths1[i1];\n\t\t\t\tok = false;\n\t\t\t\tvar pathBoundsOverlaps = boundsOverlaps[i1];\n\t\t\t\tif (pathBoundsOverlaps) {\n\t\t\t\t\tfor (var i2 = pathBoundsOverlaps.length - 1; i2 >= 0 && !ok; i2--) {\n\t\t\t\t\t\tif (path1.compare(paths2[pathBoundsOverlaps[i2]])) {\n\t\t\t\t\t\t\tif (!matched[pathBoundsOverlaps[i2]]) {\n\t\t\t\t\t\t\t\tmatched[pathBoundsOverlaps[i2]] = true;\n\t\t\t\t\t\t\t\tcount++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tok = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tok = ok && count === length2;\n\t\t}\n\t\treturn ok;\n\t},\n\n});\n\nvar Path = PathItem.extend({\n\t_class: 'Path',\n\t_serializeFields: {\n\t\tsegments: [],\n\t\tclosed: false\n\t},\n\n\tinitialize: function Path(arg) {\n\t\tthis._closed = false;\n\t\tthis._segments = [];\n\t\tthis._version = 0;\n\t\tvar args = arguments,\n\t\t\tsegments = Array.isArray(arg)\n\t\t\t? typeof arg[0] === 'object'\n\t\t\t\t? arg\n\t\t\t\t: args\n\t\t\t: arg && (arg.size === undefined && (arg.x !== undefined\n\t\t\t\t\t|| arg.point !== undefined))\n\t\t\t\t? args\n\t\t\t\t: null;\n\t\tif (segments && segments.length > 0) {\n\t\t\tthis.setSegments(segments);\n\t\t} else {\n\t\t\tthis._curves = undefined;\n\t\t\tthis._segmentSelection = 0;\n\t\t\tif (!segments && typeof arg === 'string') {\n\t\t\t\tthis.setPathData(arg);\n\t\t\t\targ = null;\n\t\t\t}\n\t\t}\n\t\tthis._initialize(!segments && arg);\n\t},\n\n\t_equals: function(item) {\n\t\treturn this._closed === item._closed\n\t\t\t\t&& Base.equals(this._segments, item._segments);\n\t},\n\n\tcopyContent: function(source) {\n\t\tthis.setSegments(source._segments);\n\t\tthis._closed = source._closed;\n\t},\n\n\t_changed: function _changed(flags) {\n\t\t_changed.base.call(this, flags);\n\t\tif (flags & 8) {\n\t\t\tthis._length = this._area = undefined;\n\t\t\tif (flags & 32) {\n\t\t\t\tthis._version++;\n\t\t\t} else if (this._curves) {\n\t\t\t   for (var i = 0, l = this._curves.length; i < l; i++)\n\t\t\t\t\tthis._curves[i]._changed();\n\t\t\t}\n\t\t} else if (flags & 64) {\n\t\t\tthis._bounds = undefined;\n\t\t}\n\t},\n\n\tgetStyle: function() {\n\t\tvar parent = this._parent;\n\t\treturn (parent instanceof CompoundPath ? parent : this)._style;\n\t},\n\n\tgetSegments: function() {\n\t\treturn this._segments;\n\t},\n\n\tsetSegments: function(segments) {\n\t\tvar fullySelected = this.isFullySelected(),\n\t\t\tlength = segments && segments.length;\n\t\tthis._segments.length = 0;\n\t\tthis._segmentSelection = 0;\n\t\tthis._curves = undefined;\n\t\tif (length) {\n\t\t\tvar last = segments[length - 1];\n\t\t\tif (typeof last === 'boolean') {\n\t\t\t\tthis.setClosed(last);\n\t\t\t\tlength--;\n\t\t\t}\n\t\t\tthis._add(Segment.readList(segments, 0, {}, length));\n\t\t}\n\t\tif (fullySelected)\n\t\t\tthis.setFullySelected(true);\n\t},\n\n\tgetFirstSegment: function() {\n\t\treturn this._segments[0];\n\t},\n\n\tgetLastSegment: function() {\n\t\treturn this._segments[this._segments.length - 1];\n\t},\n\n\tgetCurves: function() {\n\t\tvar curves = this._curves,\n\t\t\tsegments = this._segments;\n\t\tif (!curves) {\n\t\t\tvar length = this._countCurves();\n\t\t\tcurves = this._curves = new Array(length);\n\t\t\tfor (var i = 0; i < length; i++)\n\t\t\t\tcurves[i] = new Curve(this, segments[i],\n\t\t\t\t\tsegments[i + 1] || segments[0]);\n\t\t}\n\t\treturn curves;\n\t},\n\n\tgetFirstCurve: function() {\n\t\treturn this.getCurves()[0];\n\t},\n\n\tgetLastCurve: function() {\n\t\tvar curves = this.getCurves();\n\t\treturn curves[curves.length - 1];\n\t},\n\n\tisClosed: function() {\n\t\treturn this._closed;\n\t},\n\n\tsetClosed: function(closed) {\n\t\tif (this._closed != (closed = !!closed)) {\n\t\t\tthis._closed = closed;\n\t\t\tif (this._curves) {\n\t\t\t\tvar length = this._curves.length = this._countCurves();\n\t\t\t\tif (closed)\n\t\t\t\t\tthis._curves[length - 1] = new Curve(this,\n\t\t\t\t\t\tthis._segments[length - 1], this._segments[0]);\n\t\t\t}\n\t\t\tthis._changed(41);\n\t\t}\n\t}\n}, {\n\tbeans: true,\n\n\tgetPathData: function(_matrix, _precision) {\n\t\tvar segments = this._segments,\n\t\t\tlength = segments.length,\n\t\t\tf = new Formatter(_precision),\n\t\t\tcoords = new Array(6),\n\t\t\tfirst = true,\n\t\t\tcurX, curY,\n\t\t\tprevX, prevY,\n\t\t\tinX, inY,\n\t\t\toutX, outY,\n\t\t\tparts = [];\n\n\t\tfunction addSegment(segment, skipLine) {\n\t\t\tsegment._transformCoordinates(_matrix, coords);\n\t\t\tcurX = coords[0];\n\t\t\tcurY = coords[1];\n\t\t\tif (first) {\n\t\t\t\tparts.push('M' + f.pair(curX, curY));\n\t\t\t\tfirst = false;\n\t\t\t} else {\n\t\t\t\tinX = coords[2];\n\t\t\t\tinY = coords[3];\n\t\t\t\tif (inX === curX && inY === curY\n\t\t\t\t\t\t&& outX === prevX && outY === prevY) {\n\t\t\t\t\tif (!skipLine) {\n\t\t\t\t\t\tvar dx = curX - prevX,\n\t\t\t\t\t\t\tdy = curY - prevY;\n\t\t\t\t\t\tparts.push(\n\t\t\t\t\t\t\t  dx === 0 ? 'v' + f.number(dy)\n\t\t\t\t\t\t\t: dy === 0 ? 'h' + f.number(dx)\n\t\t\t\t\t\t\t: 'l' + f.pair(dx, dy));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tparts.push('c' + f.pair(outX - prevX, outY - prevY)\n\t\t\t\t\t\t\t + ' ' + f.pair( inX - prevX,  inY - prevY)\n\t\t\t\t\t\t\t + ' ' + f.pair(curX - prevX, curY - prevY));\n\t\t\t\t}\n\t\t\t}\n\t\t\tprevX = curX;\n\t\t\tprevY = curY;\n\t\t\toutX = coords[4];\n\t\t\toutY = coords[5];\n\t\t}\n\n\t\tif (!length)\n\t\t\treturn '';\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\taddSegment(segments[i]);\n\t\tif (this._closed && length > 0) {\n\t\t\taddSegment(segments[0], true);\n\t\t\tparts.push('z');\n\t\t}\n\t\treturn parts.join('');\n\t},\n\n\tisEmpty: function() {\n\t\treturn !this._segments.length;\n\t},\n\n\t_transformContent: function(matrix) {\n\t\tvar segments = this._segments,\n\t\t\tcoords = new Array(6);\n\t\tfor (var i = 0, l = segments.length; i < l; i++)\n\t\t\tsegments[i]._transformCoordinates(matrix, coords, true);\n\t\treturn true;\n\t},\n\n\t_add: function(segs, index) {\n\t\tvar segments = this._segments,\n\t\t\tcurves = this._curves,\n\t\t\tamount = segs.length,\n\t\t\tappend = index == null,\n\t\t\tindex = append ? segments.length : index;\n\t\tfor (var i = 0; i < amount; i++) {\n\t\t\tvar segment = segs[i];\n\t\t\tif (segment._path)\n\t\t\t\tsegment = segs[i] = segment.clone();\n\t\t\tsegment._path = this;\n\t\t\tsegment._index = index + i;\n\t\t\tif (segment._selection)\n\t\t\t\tthis._updateSelection(segment, 0, segment._selection);\n\t\t}\n\t\tif (append) {\n\t\t\tBase.push(segments, segs);\n\t\t} else {\n\t\t\tsegments.splice.apply(segments, [index, 0].concat(segs));\n\t\t\tfor (var i = index + amount, l = segments.length; i < l; i++)\n\t\t\t\tsegments[i]._index = i;\n\t\t}\n\t\tif (curves) {\n\t\t\tvar total = this._countCurves(),\n\t\t\t\tstart = index > 0 && index + amount - 1 === total ? index - 1\n\t\t\t\t\t: index,\n\t\t\t\tinsert = start,\n\t\t\t\tend = Math.min(start + amount, total);\n\t\t\tif (segs._curves) {\n\t\t\t\tcurves.splice.apply(curves, [start, 0].concat(segs._curves));\n\t\t\t\tinsert += segs._curves.length;\n\t\t\t}\n\t\t\tfor (var i = insert; i < end; i++)\n\t\t\t\tcurves.splice(i, 0, new Curve(this, null, null));\n\t\t\tthis._adjustCurves(start, end);\n\t\t}\n\t\tthis._changed(41);\n\t\treturn segs;\n\t},\n\n\t_adjustCurves: function(start, end) {\n\t\tvar segments = this._segments,\n\t\t\tcurves = this._curves,\n\t\t\tcurve;\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tcurve = curves[i];\n\t\t\tcurve._path = this;\n\t\t\tcurve._segment1 = segments[i];\n\t\t\tcurve._segment2 = segments[i + 1] || segments[0];\n\t\t\tcurve._changed();\n\t\t}\n\t\tif (curve = curves[this._closed && !start ? segments.length - 1\n\t\t\t\t: start - 1]) {\n\t\t\tcurve._segment2 = segments[start] || segments[0];\n\t\t\tcurve._changed();\n\t\t}\n\t\tif (curve = curves[end]) {\n\t\t\tcurve._segment1 = segments[end];\n\t\t\tcurve._changed();\n\t\t}\n\t},\n\n\t_countCurves: function() {\n\t\tvar length = this._segments.length;\n\t\treturn !this._closed && length > 0 ? length - 1 : length;\n\t},\n\n\tadd: function(segment1 ) {\n\t\tvar args = arguments;\n\t\treturn args.length > 1 && typeof segment1 !== 'number'\n\t\t\t? this._add(Segment.readList(args))\n\t\t\t: this._add([ Segment.read(args) ])[0];\n\t},\n\n\tinsert: function(index, segment1 ) {\n\t\tvar args = arguments;\n\t\treturn args.length > 2 && typeof segment1 !== 'number'\n\t\t\t? this._add(Segment.readList(args, 1), index)\n\t\t\t: this._add([ Segment.read(args, 1) ], index)[0];\n\t},\n\n\taddSegment: function() {\n\t\treturn this._add([ Segment.read(arguments) ])[0];\n\t},\n\n\tinsertSegment: function(index ) {\n\t\treturn this._add([ Segment.read(arguments, 1) ], index)[0];\n\t},\n\n\taddSegments: function(segments) {\n\t\treturn this._add(Segment.readList(segments));\n\t},\n\n\tinsertSegments: function(index, segments) {\n\t\treturn this._add(Segment.readList(segments), index);\n\t},\n\n\tremoveSegment: function(index) {\n\t\treturn this.removeSegments(index, index + 1)[0] || null;\n\t},\n\n\tremoveSegments: function(start, end, _includeCurves) {\n\t\tstart = start || 0;\n\t\tend = Base.pick(end, this._segments.length);\n\t\tvar segments = this._segments,\n\t\t\tcurves = this._curves,\n\t\t\tcount = segments.length,\n\t\t\tremoved = segments.splice(start, end - start),\n\t\t\tamount = removed.length;\n\t\tif (!amount)\n\t\t\treturn removed;\n\t\tfor (var i = 0; i < amount; i++) {\n\t\t\tvar segment = removed[i];\n\t\t\tif (segment._selection)\n\t\t\t\tthis._updateSelection(segment, segment._selection, 0);\n\t\t\tsegment._index = segment._path = null;\n\t\t}\n\t\tfor (var i = start, l = segments.length; i < l; i++)\n\t\t\tsegments[i]._index = i;\n\t\tif (curves) {\n\t\t\tvar index = start > 0 && end === count + (this._closed ? 1 : 0)\n\t\t\t\t\t? start - 1\n\t\t\t\t\t: start,\n\t\t\t\tcurves = curves.splice(index, amount);\n\t\t\tfor (var i = curves.length - 1; i >= 0; i--)\n\t\t\t\tcurves[i]._path = null;\n\t\t\tif (_includeCurves)\n\t\t\t\tremoved._curves = curves.slice(1);\n\t\t\tthis._adjustCurves(index, index);\n\t\t}\n\t\tthis._changed(41);\n\t\treturn removed;\n\t},\n\n\tclear: '#removeSegments',\n\n\thasHandles: function() {\n\t\tvar segments = this._segments;\n\t\tfor (var i = 0, l = segments.length; i < l; i++) {\n\t\t\tif (segments[i].hasHandles())\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\tclearHandles: function() {\n\t\tvar segments = this._segments;\n\t\tfor (var i = 0, l = segments.length; i < l; i++)\n\t\t\tsegments[i].clearHandles();\n\t},\n\n\tgetLength: function() {\n\t\tif (this._length == null) {\n\t\t\tvar curves = this.getCurves(),\n\t\t\t\tlength = 0;\n\t\t\tfor (var i = 0, l = curves.length; i < l; i++)\n\t\t\t\tlength += curves[i].getLength();\n\t\t\tthis._length = length;\n\t\t}\n\t\treturn this._length;\n\t},\n\n\tgetArea: function() {\n\t\tvar area = this._area;\n\t\tif (area == null) {\n\t\t\tvar segments = this._segments,\n\t\t\t\tclosed = this._closed;\n\t\t\tarea = 0;\n\t\t\tfor (var i = 0, l = segments.length; i < l; i++) {\n\t\t\t\tvar last = i + 1 === l;\n\t\t\t\tarea += Curve.getArea(Curve.getValues(\n\t\t\t\t\t\tsegments[i], segments[last ? 0 : i + 1],\n\t\t\t\t\t\tnull, last && !closed));\n\t\t\t}\n\t\t\tthis._area = area;\n\t\t}\n\t\treturn area;\n\t},\n\n\tisFullySelected: function() {\n\t\tvar length = this._segments.length;\n\t\treturn this.isSelected() && length > 0 && this._segmentSelection\n\t\t\t\t=== length * 7;\n\t},\n\n\tsetFullySelected: function(selected) {\n\t\tif (selected)\n\t\t\tthis._selectSegments(true);\n\t\tthis.setSelected(selected);\n\t},\n\n\tsetSelection: function setSelection(selection) {\n\t\tif (!(selection & 1))\n\t\t\tthis._selectSegments(false);\n\t\tsetSelection.base.call(this, selection);\n\t},\n\n\t_selectSegments: function(selected) {\n\t\tvar segments = this._segments,\n\t\t\tlength = segments.length,\n\t\t\tselection = selected ? 7 : 0;\n\t\tthis._segmentSelection = selection * length;\n\t\tfor (var i = 0; i < length; i++)\n\t\t\tsegments[i]._selection = selection;\n\t},\n\n\t_updateSelection: function(segment, oldSelection, newSelection) {\n\t\tsegment._selection = newSelection;\n\t\tvar selection = this._segmentSelection += newSelection - oldSelection;\n\t\tif (selection > 0)\n\t\t\tthis.setSelected(true);\n\t},\n\n\tdivideAt: function(location) {\n\t\tvar loc = this.getLocationAt(location),\n\t\t\tcurve;\n\t\treturn loc && (curve = loc.getCurve().divideAt(loc.getCurveOffset()))\n\t\t\t\t? curve._segment1\n\t\t\t\t: null;\n\t},\n\n\tsplitAt: function(location) {\n\t\tvar loc = this.getLocationAt(location),\n\t\t\tindex = loc && loc.index,\n\t\t\ttime = loc && loc.time,\n\t\t\ttMin = 1e-8,\n\t\t\ttMax = 1 - tMin;\n\t\tif (time > tMax) {\n\t\t\tindex++;\n\t\t\ttime = 0;\n\t\t}\n\t\tvar curves = this.getCurves();\n\t\tif (index >= 0 && index < curves.length) {\n\t\t\tif (time >= tMin) {\n\t\t\t\tcurves[index++].divideAtTime(time);\n\t\t\t}\n\t\t\tvar segs = this.removeSegments(index, this._segments.length, true),\n\t\t\t\tpath;\n\t\t\tif (this._closed) {\n\t\t\t\tthis.setClosed(false);\n\t\t\t\tpath = this;\n\t\t\t} else {\n\t\t\t\tpath = new Path(Item.NO_INSERT);\n\t\t\t\tpath.insertAbove(this);\n\t\t\t\tpath.copyAttributes(this);\n\t\t\t}\n\t\t\tpath._add(segs, 0);\n\t\t\tthis.addSegment(segs[0]);\n\t\t\treturn path;\n\t\t}\n\t\treturn null;\n\t},\n\n\tsplit: function(index, time) {\n\t\tvar curve,\n\t\t\tlocation = time === undefined ? index\n\t\t\t\t: (curve = this.getCurves()[index])\n\t\t\t\t\t&& curve.getLocationAtTime(time);\n\t\treturn location != null ? this.splitAt(location) : null;\n\t},\n\n\tjoin: function(path, tolerance) {\n\t\tvar epsilon = tolerance || 0;\n\t\tif (path && path !== this) {\n\t\t\tvar segments = path._segments,\n\t\t\t\tlast1 = this.getLastSegment(),\n\t\t\t\tlast2 = path.getLastSegment();\n\t\t\tif (!last2)\n\t\t\t\treturn this;\n\t\t\tif (last1 && last1._point.isClose(last2._point, epsilon))\n\t\t\t\tpath.reverse();\n\t\t\tvar first2 = path.getFirstSegment();\n\t\t\tif (last1 && last1._point.isClose(first2._point, epsilon)) {\n\t\t\t\tlast1.setHandleOut(first2._handleOut);\n\t\t\t\tthis._add(segments.slice(1));\n\t\t\t} else {\n\t\t\t\tvar first1 = this.getFirstSegment();\n\t\t\t\tif (first1 && first1._point.isClose(first2._point, epsilon))\n\t\t\t\t\tpath.reverse();\n\t\t\t\tlast2 = path.getLastSegment();\n\t\t\t\tif (first1 && first1._point.isClose(last2._point, epsilon)) {\n\t\t\t\t\tfirst1.setHandleIn(last2._handleIn);\n\t\t\t\t\tthis._add(segments.slice(0, segments.length - 1), 0);\n\t\t\t\t} else {\n\t\t\t\t\tthis._add(segments.slice());\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (path._closed)\n\t\t\t\tthis._add([segments[0]]);\n\t\t\tpath.remove();\n\t\t}\n\t\tvar first = this.getFirstSegment(),\n\t\t\tlast = this.getLastSegment();\n\t\tif (first !== last && first._point.isClose(last._point, epsilon)) {\n\t\t\tfirst.setHandleIn(last._handleIn);\n\t\t\tlast.remove();\n\t\t\tthis.setClosed(true);\n\t\t}\n\t\treturn this;\n\t},\n\n\treduce: function(options) {\n\t\tvar curves = this.getCurves(),\n\t\t\tsimplify = options && options.simplify,\n\t\t\ttolerance = simplify ? 1e-7 : 0;\n\t\tfor (var i = curves.length - 1; i >= 0; i--) {\n\t\t\tvar curve = curves[i];\n\t\t\tif (!curve.hasHandles() && (!curve.hasLength(tolerance)\n\t\t\t\t\t|| simplify && curve.isCollinear(curve.getNext())))\n\t\t\t\tcurve.remove();\n\t\t}\n\t\treturn this;\n\t},\n\n\treverse: function() {\n\t\tthis._segments.reverse();\n\t\tfor (var i = 0, l = this._segments.length; i < l; i++) {\n\t\t\tvar segment = this._segments[i];\n\t\t\tvar handleIn = segment._handleIn;\n\t\t\tsegment._handleIn = segment._handleOut;\n\t\t\tsegment._handleOut = handleIn;\n\t\t\tsegment._index = i;\n\t\t}\n\t\tthis._curves = null;\n\t\tthis._changed(9);\n\t},\n\n\tflatten: function(flatness) {\n\t\tvar flattener = new PathFlattener(this, flatness || 0.25, 256, true),\n\t\t\tparts = flattener.parts,\n\t\t\tlength = parts.length,\n\t\t\tsegments = [];\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tsegments.push(new Segment(parts[i].curve.slice(0, 2)));\n\t\t}\n\t\tif (!this._closed && length > 0) {\n\t\t\tsegments.push(new Segment(parts[length - 1].curve.slice(6)));\n\t\t}\n\t\tthis.setSegments(segments);\n\t},\n\n\tsimplify: function(tolerance) {\n\t\tvar segments = new PathFitter(this).fit(tolerance || 2.5);\n\t\tif (segments)\n\t\t\tthis.setSegments(segments);\n\t\treturn !!segments;\n\t},\n\n\tsmooth: function(options) {\n\t\tvar that = this,\n\t\t\topts = options || {},\n\t\t\ttype = opts.type || 'asymmetric',\n\t\t\tsegments = this._segments,\n\t\t\tlength = segments.length,\n\t\t\tclosed = this._closed;\n\n\t\tfunction getIndex(value, _default) {\n\t\t\tvar index = value && value.index;\n\t\t\tif (index != null) {\n\t\t\t\tvar path = value.path;\n\t\t\t\tif (path && path !== that)\n\t\t\t\t\tthrow new Error(value._class + ' ' + index + ' of ' + path\n\t\t\t\t\t\t\t+ ' is not part of ' + that);\n\t\t\t\tif (_default && value instanceof Curve)\n\t\t\t\t\tindex++;\n\t\t\t} else {\n\t\t\t\tindex = typeof value === 'number' ? value : _default;\n\t\t\t}\n\t\t\treturn Math.min(index < 0 && closed\n\t\t\t\t\t? index % length\n\t\t\t\t\t: index < 0 ? index + length : index, length - 1);\n\t\t}\n\n\t\tvar loop = closed && opts.from === undefined && opts.to === undefined,\n\t\t\tfrom = getIndex(opts.from, 0),\n\t\t\tto = getIndex(opts.to, length - 1);\n\n\t\tif (from > to) {\n\t\t\tif (closed) {\n\t\t\t\tfrom -= length;\n\t\t\t} else {\n\t\t\t\tvar tmp = from;\n\t\t\t\tfrom = to;\n\t\t\t\tto = tmp;\n\t\t\t}\n\t\t}\n\t\tif (/^(?:asymmetric|continuous)$/.test(type)) {\n\t\t\tvar asymmetric = type === 'asymmetric',\n\t\t\t\tmin = Math.min,\n\t\t\t\tamount = to - from + 1,\n\t\t\t\tn = amount - 1,\n\t\t\t\tpadding = loop ? min(amount, 4) : 1,\n\t\t\t\tpaddingLeft = padding,\n\t\t\t\tpaddingRight = padding,\n\t\t\t\tknots = [];\n\t\t\tif (!closed) {\n\t\t\t\tpaddingLeft = min(1, from);\n\t\t\t\tpaddingRight = min(1, length - to - 1);\n\t\t\t}\n\t\t\tn += paddingLeft + paddingRight;\n\t\t\tif (n <= 1)\n\t\t\t\treturn;\n\t\t\tfor (var i = 0, j = from - paddingLeft; i <= n; i++, j++) {\n\t\t\t\tknots[i] = segments[(j < 0 ? j + length : j) % length]._point;\n\t\t\t}\n\n\t\t\tvar x = knots[0]._x + 2 * knots[1]._x,\n\t\t\t\ty = knots[0]._y + 2 * knots[1]._y,\n\t\t\t\tf = 2,\n\t\t\t\tn_1 = n - 1,\n\t\t\t\trx = [x],\n\t\t\t\try = [y],\n\t\t\t\trf = [f],\n\t\t\t\tpx = [],\n\t\t\t\tpy = [];\n\t\t\tfor (var i = 1; i < n; i++) {\n\t\t\t\tvar internal = i < n_1,\n\t\t\t\t\ta = internal ? 1 : asymmetric ? 1 : 2,\n\t\t\t\t\tb = internal ? 4 : asymmetric ? 2 : 7,\n\t\t\t\t\tu = internal ? 4 : asymmetric ? 3 : 8,\n\t\t\t\t\tv = internal ? 2 : asymmetric ? 0 : 1,\n\t\t\t\t\tm = a / f;\n\t\t\t\tf = rf[i] = b - m;\n\t\t\t\tx = rx[i] = u * knots[i]._x + v * knots[i + 1]._x - m * x;\n\t\t\t\ty = ry[i] = u * knots[i]._y + v * knots[i + 1]._y - m * y;\n\t\t\t}\n\n\t\t\tpx[n_1] = rx[n_1] / rf[n_1];\n\t\t\tpy[n_1] = ry[n_1] / rf[n_1];\n\t\t\tfor (var i = n - 2; i >= 0; i--) {\n\t\t\t\tpx[i] = (rx[i] - px[i + 1]) / rf[i];\n\t\t\t\tpy[i] = (ry[i] - py[i + 1]) / rf[i];\n\t\t\t}\n\t\t\tpx[n] = (3 * knots[n]._x - px[n_1]) / 2;\n\t\t\tpy[n] = (3 * knots[n]._y - py[n_1]) / 2;\n\n\t\t\tfor (var i = paddingLeft, max = n - paddingRight, j = from;\n\t\t\t\t\ti <= max; i++, j++) {\n\t\t\t\tvar segment = segments[j < 0 ? j + length : j],\n\t\t\t\t\tpt = segment._point,\n\t\t\t\t\thx = px[i] - pt._x,\n\t\t\t\t\thy = py[i] - pt._y;\n\t\t\t\tif (loop || i < max)\n\t\t\t\t\tsegment.setHandleOut(hx, hy);\n\t\t\t\tif (loop || i > paddingLeft)\n\t\t\t\t\tsegment.setHandleIn(-hx, -hy);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var i = from; i <= to; i++) {\n\t\t\t\tsegments[i < 0 ? i + length : i].smooth(opts,\n\t\t\t\t\t\t!loop && i === from, !loop && i === to);\n\t\t\t}\n\t\t}\n\t},\n\n\ttoShape: function(insert) {\n\t\tif (!this._closed)\n\t\t\treturn null;\n\n\t\tvar segments = this._segments,\n\t\t\ttype,\n\t\t\tsize,\n\t\t\tradius,\n\t\t\ttopCenter;\n\n\t\tfunction isCollinear(i, j) {\n\t\t\tvar seg1 = segments[i],\n\t\t\t\tseg2 = seg1.getNext(),\n\t\t\t\tseg3 = segments[j],\n\t\t\t\tseg4 = seg3.getNext();\n\t\t\treturn seg1._handleOut.isZero() && seg2._handleIn.isZero()\n\t\t\t\t\t&& seg3._handleOut.isZero() && seg4._handleIn.isZero()\n\t\t\t\t\t&& seg2._point.subtract(seg1._point).isCollinear(\n\t\t\t\t\t\tseg4._point.subtract(seg3._point));\n\t\t}\n\n\t\tfunction isOrthogonal(i) {\n\t\t\tvar seg2 = segments[i],\n\t\t\t\tseg1 = seg2.getPrevious(),\n\t\t\t\tseg3 = seg2.getNext();\n\t\t\treturn seg1._handleOut.isZero() && seg2._handleIn.isZero()\n\t\t\t\t\t&& seg2._handleOut.isZero() && seg3._handleIn.isZero()\n\t\t\t\t\t&& seg2._point.subtract(seg1._point).isOrthogonal(\n\t\t\t\t\t\tseg3._point.subtract(seg2._point));\n\t\t}\n\n\t\tfunction isArc(i) {\n\t\t\tvar seg1 = segments[i],\n\t\t\t\tseg2 = seg1.getNext(),\n\t\t\t\thandle1 = seg1._handleOut,\n\t\t\t\thandle2 = seg2._handleIn,\n\t\t\t\tkappa = 0.5522847498307936;\n\t\t\tif (handle1.isOrthogonal(handle2)) {\n\t\t\t\tvar pt1 = seg1._point,\n\t\t\t\t\tpt2 = seg2._point,\n\t\t\t\t\tcorner = new Line(pt1, handle1, true).intersect(\n\t\t\t\t\t\t\tnew Line(pt2, handle2, true), true);\n\t\t\t\treturn corner && Numerical.isZero(handle1.getLength() /\n\t\t\t\t\t\tcorner.subtract(pt1).getLength() - kappa)\n\t\t\t\t\t&& Numerical.isZero(handle2.getLength() /\n\t\t\t\t\t\tcorner.subtract(pt2).getLength() - kappa);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction getDistance(i, j) {\n\t\t\treturn segments[i]._point.getDistance(segments[j]._point);\n\t\t}\n\n\t\tif (!this.hasHandles() && segments.length === 4\n\t\t\t\t&& isCollinear(0, 2) && isCollinear(1, 3) && isOrthogonal(1)) {\n\t\t\ttype = Shape.Rectangle;\n\t\t\tsize = new Size(getDistance(0, 3), getDistance(0, 1));\n\t\t\ttopCenter = segments[1]._point.add(segments[2]._point).divide(2);\n\t\t} else if (segments.length === 8 && isArc(0) && isArc(2) && isArc(4)\n\t\t\t\t&& isArc(6) && isCollinear(1, 5) && isCollinear(3, 7)) {\n\t\t\ttype = Shape.Rectangle;\n\t\t\tsize = new Size(getDistance(1, 6), getDistance(0, 3));\n\t\t\tradius = size.subtract(new Size(getDistance(0, 7),\n\t\t\t\t\tgetDistance(1, 2))).divide(2);\n\t\t\ttopCenter = segments[3]._point.add(segments[4]._point).divide(2);\n\t\t} else if (segments.length === 4\n\t\t\t\t&& isArc(0) && isArc(1) && isArc(2) && isArc(3)) {\n\t\t\tif (Numerical.isZero(getDistance(0, 2) - getDistance(1, 3))) {\n\t\t\t\ttype = Shape.Circle;\n\t\t\t\tradius = getDistance(0, 2) / 2;\n\t\t\t} else {\n\t\t\t\ttype = Shape.Ellipse;\n\t\t\t\tradius = new Size(getDistance(2, 0) / 2, getDistance(3, 1) / 2);\n\t\t\t}\n\t\t\ttopCenter = segments[1]._point;\n\t\t}\n\n\t\tif (type) {\n\t\t\tvar center = this.getPosition(true),\n\t\t\t\tshape = new type({\n\t\t\t\t\tcenter: center,\n\t\t\t\t\tsize: size,\n\t\t\t\t\tradius: radius,\n\t\t\t\t\tinsert: false\n\t\t\t\t});\n\t\t\tshape.copyAttributes(this, true);\n\t\t\tshape._matrix.prepend(this._matrix);\n\t\t\tshape.rotate(topCenter.subtract(center).getAngle() + 90);\n\t\t\tif (insert === undefined || insert)\n\t\t\t\tshape.insertAbove(this);\n\t\t\treturn shape;\n\t\t}\n\t\treturn null;\n\t},\n\n\ttoPath: '#clone',\n\n\tcompare: function compare(path) {\n\t\tif (!path || path instanceof CompoundPath)\n\t\t\treturn compare.base.call(this, path);\n\t\tvar curves1 = this.getCurves(),\n\t\t\tcurves2 = path.getCurves(),\n\t\t\tlength1 = curves1.length,\n\t\t\tlength2 = curves2.length;\n\t\tif (!length1 || !length2) {\n\t\t\treturn length1 == length2;\n\t\t}\n\t\tvar v1 = curves1[0].getValues(),\n\t\t\tvalues2 = [],\n\t\t\tpos1 = 0, pos2,\n\t\t\tend1 = 0, end2;\n\t\tfor (var i = 0; i < length2; i++) {\n\t\t\tvar v2 = curves2[i].getValues();\n\t\t\tvalues2.push(v2);\n\t\t\tvar overlaps = Curve.getOverlaps(v1, v2);\n\t\t\tif (overlaps) {\n\t\t\t\tpos2 = !i && overlaps[0][0] > 0 ? length2 - 1 : i;\n\t\t\t\tend2 = overlaps[0][1];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar abs = Math.abs,\n\t\t\tepsilon = 1e-8,\n\t\t\tv2 = values2[pos2],\n\t\t\tstart2;\n\t\twhile (v1 && v2) {\n\t\t\tvar overlaps = Curve.getOverlaps(v1, v2);\n\t\t\tif (overlaps) {\n\t\t\t\tvar t1 = overlaps[0][0];\n\t\t\t\tif (abs(t1 - end1) < epsilon) {\n\t\t\t\t\tend1 = overlaps[1][0];\n\t\t\t\t\tif (end1 === 1) {\n\t\t\t\t\t\tv1 = ++pos1 < length1 ? curves1[pos1].getValues() : null;\n\t\t\t\t\t\tend1 = 0;\n\t\t\t\t\t}\n\t\t\t\t\tvar t2 = overlaps[0][1];\n\t\t\t\t\tif (abs(t2 - end2) < epsilon) {\n\t\t\t\t\t\tif (!start2)\n\t\t\t\t\t\t\tstart2 = [pos2, t2];\n\t\t\t\t\t\tend2 = overlaps[1][1];\n\t\t\t\t\t\tif (end2 === 1) {\n\t\t\t\t\t\t\tif (++pos2 >= length2)\n\t\t\t\t\t\t\t\tpos2 = 0;\n\t\t\t\t\t\t\tv2 = values2[pos2] || curves2[pos2].getValues();\n\t\t\t\t\t\t\tend2 = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!v1) {\n\t\t\t\t\t\t\treturn start2[0] === pos2 && start2[1] === end2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\treturn false;\n\t},\n\n\t_hitTestSelf: function(point, options, viewMatrix, strokeMatrix) {\n\t\tvar that = this,\n\t\t\tstyle = this.getStyle(),\n\t\t\tsegments = this._segments,\n\t\t\tnumSegments = segments.length,\n\t\t\tclosed = this._closed,\n\t\t\ttolerancePadding = options._tolerancePadding,\n\t\t\tstrokePadding = tolerancePadding,\n\t\t\tjoin, cap, miterLimit,\n\t\t\tarea, loc, res,\n\t\t\thitStroke = options.stroke && (style.hasStroke() || options.hitUnstrokedPaths),\n\t\t\thitFill = options.fill && (style.hasFill() || options.hitUnfilledPaths),\n\t\t\thitCurves = options.curves,\n\t\t\tstrokeRadius = hitStroke\n\t\t\t\t\t? style.getStrokeWidth() / 2\n\t\t\t\t\t: hitFill && options.tolerance > 0 || hitCurves\n\t\t\t\t\t\t? 0 : null;\n\t\tif (strokeRadius !== null) {\n\t\t\tif (strokeRadius > 0) {\n\t\t\t\tjoin = style.getStrokeJoin();\n\t\t\t\tcap = style.getStrokeCap();\n\t\t\t\tmiterLimit = style.getMiterLimit();\n\t\t\t\tstrokePadding = strokePadding.add(\n\t\t\t\t\tPath._getStrokePadding(strokeRadius, strokeMatrix));\n\t\t\t} else {\n\t\t\t\tjoin = cap = 'round';\n\t\t\t}\n\t\t}\n\n\t\tfunction isCloseEnough(pt, padding) {\n\t\t\treturn point.subtract(pt).divide(padding).length <= 1;\n\t\t}\n\n\t\tfunction checkSegmentPoint(seg, pt, name) {\n\t\t\tif (!options.selected || pt.isSelected()) {\n\t\t\t\tvar anchor = seg._point;\n\t\t\t\tif (pt !== anchor)\n\t\t\t\t\tpt = pt.add(anchor);\n\t\t\t\tif (isCloseEnough(pt, strokePadding)) {\n\t\t\t\t\treturn new HitResult(name, that, {\n\t\t\t\t\t\tsegment: seg,\n\t\t\t\t\t\tpoint: pt\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction checkSegmentPoints(seg, ends) {\n\t\t\treturn (ends || options.segments)\n\t\t\t\t&& checkSegmentPoint(seg, seg._point, 'segment')\n\t\t\t\t|| (!ends && options.handles) && (\n\t\t\t\t\tcheckSegmentPoint(seg, seg._handleIn, 'handle-in') ||\n\t\t\t\t\tcheckSegmentPoint(seg, seg._handleOut, 'handle-out'));\n\t\t}\n\n\t\tfunction addToArea(point) {\n\t\t\tarea.add(point);\n\t\t}\n\n\t\tfunction checkSegmentStroke(segment) {\n\t\t\tvar isJoin = closed || segment._index > 0\n\t\t\t\t\t&& segment._index < numSegments - 1;\n\t\t\tif ((isJoin ? join : cap) === 'round') {\n\t\t\t\treturn isCloseEnough(segment._point, strokePadding);\n\t\t\t} else {\n\t\t\t\tarea = new Path({ internal: true, closed: true });\n\t\t\t\tif (isJoin) {\n\t\t\t\t\tif (!segment.isSmooth()) {\n\t\t\t\t\t\tPath._addBevelJoin(segment, join, strokeRadius,\n\t\t\t\t\t\t\t   miterLimit, null, strokeMatrix, addToArea, true);\n\t\t\t\t\t}\n\t\t\t\t} else if (cap === 'square') {\n\t\t\t\t\tPath._addSquareCap(segment, cap, strokeRadius, null,\n\t\t\t\t\t\t\tstrokeMatrix, addToArea, true);\n\t\t\t\t}\n\t\t\t\tif (!area.isEmpty()) {\n\t\t\t\t\tvar loc;\n\t\t\t\t\treturn area.contains(point)\n\t\t\t\t\t\t|| (loc = area.getNearestLocation(point))\n\t\t\t\t\t\t\t&& isCloseEnough(loc.getPoint(), tolerancePadding);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (options.ends && !options.segments && !closed) {\n\t\t\tif (res = checkSegmentPoints(segments[0], true)\n\t\t\t\t\t|| checkSegmentPoints(segments[numSegments - 1], true))\n\t\t\t\treturn res;\n\t\t} else if (options.segments || options.handles) {\n\t\t\tfor (var i = 0; i < numSegments; i++)\n\t\t\t\tif (res = checkSegmentPoints(segments[i]))\n\t\t\t\t\treturn res;\n\t\t}\n\t\tif (strokeRadius !== null) {\n\t\t\tloc = this.getNearestLocation(point);\n\t\t\tif (loc) {\n\t\t\t\tvar time = loc.getTime();\n\t\t\t\tif (time === 0 || time === 1 && numSegments > 1) {\n\t\t\t\t\tif (!checkSegmentStroke(loc.getSegment()))\n\t\t\t\t\t\tloc = null;\n\t\t\t\t} else if (!isCloseEnough(loc.getPoint(), strokePadding)) {\n\t\t\t\t\tloc = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!loc && join === 'miter' && numSegments > 1) {\n\t\t\t\tfor (var i = 0; i < numSegments; i++) {\n\t\t\t\t\tvar segment = segments[i];\n\t\t\t\t\tif (point.getDistance(segment._point)\n\t\t\t\t\t\t\t<= miterLimit * strokeRadius\n\t\t\t\t\t\t\t&& checkSegmentStroke(segment)) {\n\t\t\t\t\t\tloc = segment.getLocation();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn !loc && hitFill && this._contains(point)\n\t\t\t\t|| loc && !hitStroke && !hitCurves\n\t\t\t\t\t? new HitResult('fill', this)\n\t\t\t\t\t: loc\n\t\t\t\t\t\t? new HitResult(hitStroke ? 'stroke' : 'curve', this, {\n\t\t\t\t\t\t\tlocation: loc,\n\t\t\t\t\t\t\tpoint: loc.getPoint()\n\t\t\t\t\t\t})\n\t\t\t\t\t\t: null;\n\t}\n\n}, Base.each(Curve._evaluateMethods,\n\tfunction(name) {\n\t\tthis[name + 'At'] = function(offset) {\n\t\t\tvar loc = this.getLocationAt(offset);\n\t\t\treturn loc && loc[name]();\n\t\t};\n\t},\n{\n\tbeans: false,\n\n\tgetLocationOf: function() {\n\t\tvar point = Point.read(arguments),\n\t\t\tcurves = this.getCurves();\n\t\tfor (var i = 0, l = curves.length; i < l; i++) {\n\t\t\tvar loc = curves[i].getLocationOf(point);\n\t\t\tif (loc)\n\t\t\t\treturn loc;\n\t\t}\n\t\treturn null;\n\t},\n\n\tgetOffsetOf: function() {\n\t\tvar loc = this.getLocationOf.apply(this, arguments);\n\t\treturn loc ? loc.getOffset() : null;\n\t},\n\n\tgetLocationAt: function(offset) {\n\t\tif (typeof offset === 'number') {\n\t\t\tvar curves = this.getCurves(),\n\t\t\t\tlength = 0;\n\t\t\tfor (var i = 0, l = curves.length; i < l; i++) {\n\t\t\t\tvar start = length,\n\t\t\t\t\tcurve = curves[i];\n\t\t\t\tlength += curve.getLength();\n\t\t\t\tif (length > offset) {\n\t\t\t\t\treturn curve.getLocationAt(offset - start);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (curves.length > 0 && offset <= this.getLength()) {\n\t\t\t\treturn new CurveLocation(curves[curves.length - 1], 1);\n\t\t\t}\n\t\t} else if (offset && offset.getPath && offset.getPath() === this) {\n\t\t\treturn offset;\n\t\t}\n\t\treturn null;\n\t},\n\n\tgetOffsetsWithTangent: function() {\n\t\tvar tangent = Point.read(arguments);\n\t\tif (tangent.isZero()) {\n\t\t\treturn [];\n\t\t}\n\n\t\tvar offsets = [];\n\t\tvar curveStart = 0;\n\t\tvar curves = this.getCurves();\n\t\tfor (var i = 0, l = curves.length; i < l; i++) {\n\t\t\tvar curve = curves[i];\n\t\t\tvar curveTimes = curve.getTimesWithTangent(tangent);\n\t\t\tfor (var j = 0, m = curveTimes.length; j < m; j++) {\n\t\t\t\tvar offset = curveStart + curve.getOffsetAtTime(curveTimes[j]);\n\t\t\t\tif (offsets.indexOf(offset) < 0) {\n\t\t\t\t\toffsets.push(offset);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurveStart += curve.length;\n\t\t}\n\t\treturn offsets;\n\t}\n}),\nnew function() {\n\n\tfunction drawHandles(ctx, segments, matrix, size, isFullySelected) {\n\t\tif (size <= 0) return;\n\n\t\tvar half = size / 2,\n\t\t\tcoords = new Array(6),\n\t\t\tpX, pY;\n\n\t\tfunction drawHandle(index) {\n\t\t\tvar hX = coords[index],\n\t\t\t\thY = coords[index + 1];\n\t\t\tif (pX != hX || pY != hY) {\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(pX, pY);\n\t\t\t\tctx.lineTo(hX, hY);\n\t\t\t\tctx.moveTo(hX - half, hY);\n\t\t\t\tctx.lineTo(hX, hY + half);\n\t\t\t\tctx.lineTo(hX + half, hY);\n\t\t\t\tctx.lineTo(hX, hY - half);\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0, l = segments.length; i < l; i++) {\n\t\t\tvar segment = segments[i],\n\t\t\t\tselection = segment._selection;\n\t\t\tsegment._transformCoordinates(matrix, coords);\n\t\t\tpX = coords[0];\n\t\t\tpY = coords[1];\n\t\t\tif (selection & 2 && !isFullySelected)\n\t\t\t\tdrawHandle(2);\n\t\t\tif (selection & 4 && !isFullySelected)\n\t\t\t\tdrawHandle(4);\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(pX, pY, half, 0, Math.PI * 2, true);\n\t\t\tctx.stroke();\n\t\t\tvar fillStyle = ctx.fillStyle;\n\t\t\tif (!(selection & 1)) {\n\t\t\t\tctx.fillStyle = 'rgba(255, 255, 255, 0.5)';\n\t\t\t}\n\t\t\tctx.fill();\n\t\t\tctx.fillStyle = fillStyle;\n\t\t}\n\t}\n\n\tfunction drawSegments(ctx, path, matrix) {\n\t\tvar segments = path._segments,\n\t\t\tlength = segments.length,\n\t\t\tcoords = new Array(6),\n\t\t\tfirst = true,\n\t\t\tcurX, curY,\n\t\t\tprevX, prevY,\n\t\t\tinX, inY,\n\t\t\toutX, outY;\n\n\t\tfunction drawSegment(segment) {\n\t\t\tif (matrix) {\n\t\t\t\tsegment._transformCoordinates(matrix, coords);\n\t\t\t\tcurX = coords[0];\n\t\t\t\tcurY = coords[1];\n\t\t\t} else {\n\t\t\t\tvar point = segment._point;\n\t\t\t\tcurX = point._x;\n\t\t\t\tcurY = point._y;\n\t\t\t}\n\t\t\tif (first) {\n\t\t\t\tctx.moveTo(curX, curY);\n\t\t\t\tfirst = false;\n\t\t\t} else {\n\t\t\t\tif (matrix) {\n\t\t\t\t\tinX = coords[2];\n\t\t\t\t\tinY = coords[3];\n\t\t\t\t} else {\n\t\t\t\t\tvar handle = segment._handleIn;\n\t\t\t\t\tinX = curX + handle._x;\n\t\t\t\t\tinY = curY + handle._y;\n\t\t\t\t}\n\t\t\t\tif (inX === curX && inY === curY\n\t\t\t\t\t\t&& outX === prevX && outY === prevY) {\n\t\t\t\t\tctx.lineTo(curX, curY);\n\t\t\t\t} else {\n\t\t\t\t\tctx.bezierCurveTo(outX, outY, inX, inY, curX, curY);\n\t\t\t\t}\n\t\t\t}\n\t\t\tprevX = curX;\n\t\t\tprevY = curY;\n\t\t\tif (matrix) {\n\t\t\t\toutX = coords[4];\n\t\t\t\toutY = coords[5];\n\t\t\t} else {\n\t\t\t\tvar handle = segment._handleOut;\n\t\t\t\toutX = prevX + handle._x;\n\t\t\t\toutY = prevY + handle._y;\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\tdrawSegment(segments[i]);\n\t\tif (path._closed && length > 0)\n\t\t\tdrawSegment(segments[0]);\n\t}\n\n\treturn {\n\t\t_draw: function(ctx, param, viewMatrix, strokeMatrix) {\n\t\t\tvar dontStart = param.dontStart,\n\t\t\t\tdontPaint = param.dontFinish || param.clip,\n\t\t\t\tstyle = this.getStyle(),\n\t\t\t\thasFill = style.hasFill(),\n\t\t\t\thasStroke = style.hasStroke(),\n\t\t\t\tdashArray = style.getDashArray(),\n\t\t\t\tdashLength = !paper.support.nativeDash && hasStroke\n\t\t\t\t\t\t&& dashArray && dashArray.length;\n\n\t\t\tif (!dontStart)\n\t\t\t\tctx.beginPath();\n\n\t\t\tif (hasFill || hasStroke && !dashLength || dontPaint) {\n\t\t\t\tdrawSegments(ctx, this, strokeMatrix);\n\t\t\t\tif (this._closed)\n\t\t\t\t\tctx.closePath();\n\t\t\t}\n\n\t\t\tfunction getOffset(i) {\n\t\t\t\treturn dashArray[((i % dashLength) + dashLength) % dashLength];\n\t\t\t}\n\n\t\t\tif (!dontPaint && (hasFill || hasStroke)) {\n\t\t\t\tthis._setStyles(ctx, param, viewMatrix, strokeMatrix);\n\t\t\t\tif (hasFill) {\n\t\t\t\t\tctx.fill(style.getFillRule());\n\t\t\t\t\tctx.shadowColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\tif (hasStroke) {\n\t\t\t\t\tif (dashLength) {\n\t\t\t\t\t\tif (!dontStart)\n\t\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\tvar flattener = new PathFlattener(this, 0.25, 32, false,\n\t\t\t\t\t\t\t\tstrokeMatrix),\n\t\t\t\t\t\t\tlength = flattener.length,\n\t\t\t\t\t\t\tfrom = -style.getDashOffset(), to,\n\t\t\t\t\t\t\ti = 0;\n\t\t\t\t\t\tfrom = from % length;\n\t\t\t\t\t\twhile (from > 0) {\n\t\t\t\t\t\t\tfrom -= getOffset(i--) + getOffset(i--);\n\t\t\t\t\t\t}\n\t\t\t\t\t\twhile (from < length) {\n\t\t\t\t\t\t\tto = from + getOffset(i++);\n\t\t\t\t\t\t\tif (from > 0 || to > 0)\n\t\t\t\t\t\t\t\tflattener.drawPart(ctx,\n\t\t\t\t\t\t\t\t\t\tMath.max(from, 0), Math.max(to, 0));\n\t\t\t\t\t\t\tfrom = to + getOffset(i++);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_drawSelected: function(ctx, matrix) {\n\t\t\tctx.beginPath();\n\t\t\tdrawSegments(ctx, this, matrix);\n\t\t\tctx.stroke();\n\t\t\tdrawHandles(ctx, this._segments, matrix, paper.settings.handleSize,\n\t\t\t\tthis.isFullySelected());\n\t\t}\n\t};\n},\nnew function() {\n\tfunction getCurrentSegment(that) {\n\t\tvar segments = that._segments;\n\t\tif (!segments.length)\n\t\t\tthrow new Error('Use a moveTo() command first');\n\t\treturn segments[segments.length - 1];\n\t}\n\n\treturn {\n\t\tmoveTo: function() {\n\t\t\tvar segments = this._segments;\n\t\t\tif (segments.length === 1)\n\t\t\t\tthis.removeSegment(0);\n\t\t\tif (!segments.length)\n\t\t\t\tthis._add([ new Segment(Point.read(arguments)) ]);\n\t\t},\n\n\t\tmoveBy: function() {\n\t\t\tthrow new Error('moveBy() is unsupported on Path items.');\n\t\t},\n\n\t\tlineTo: function() {\n\t\t\tthis._add([ new Segment(Point.read(arguments)) ]);\n\t\t},\n\n\t\tcubicCurveTo: function() {\n\t\t\tvar args = arguments,\n\t\t\t\thandle1 = Point.read(args),\n\t\t\t\thandle2 = Point.read(args),\n\t\t\t\tto = Point.read(args),\n\t\t\t\tcurrent = getCurrentSegment(this);\n\t\t\tcurrent.setHandleOut(handle1.subtract(current._point));\n\t\t\tthis._add([ new Segment(to, handle2.subtract(to)) ]);\n\t\t},\n\n\t\tquadraticCurveTo: function() {\n\t\t\tvar args = arguments,\n\t\t\t\thandle = Point.read(args),\n\t\t\t\tto = Point.read(args),\n\t\t\t\tcurrent = getCurrentSegment(this)._point;\n\t\t\tthis.cubicCurveTo(\n\t\t\t\thandle.add(current.subtract(handle).multiply(1 / 3)),\n\t\t\t\thandle.add(to.subtract(handle).multiply(1 / 3)),\n\t\t\t\tto\n\t\t\t);\n\t\t},\n\n\t\tcurveTo: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tthrough = Point.read(args),\n\t\t\t\tto = Point.read(args),\n\t\t\t\tt = Base.pick(Base.read(args), 0.5),\n\t\t\t\tt1 = 1 - t,\n\t\t\t\tcurrent = getCurrentSegment(this)._point,\n\t\t\t\thandle = through.subtract(current.multiply(t1 * t1))\n\t\t\t\t\t.subtract(to.multiply(t * t)).divide(2 * t * t1);\n\t\t\tif (handle.isNaN())\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Cannot put a curve through points with parameter = ' + t);\n\t\t\tthis.quadraticCurveTo(handle, to);\n\t\t},\n\n\t\tarcTo: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tabs = Math.abs,\n\t\t\t\tsqrt = Math.sqrt,\n\t\t\t\tcurrent = getCurrentSegment(this),\n\t\t\t\tfrom = current._point,\n\t\t\t\tto = Point.read(args),\n\t\t\t\tthrough,\n\t\t\t\tpeek = Base.peek(args),\n\t\t\t\tclockwise = Base.pick(peek, true),\n\t\t\t\tcenter, extent, vector, matrix;\n\t\t\tif (typeof clockwise === 'boolean') {\n\t\t\t\tvar middle = from.add(to).divide(2),\n\t\t\t\tthrough = middle.add(middle.subtract(from).rotate(\n\t\t\t\t\t\tclockwise ? -90 : 90));\n\t\t\t} else if (Base.remain(args) <= 2) {\n\t\t\t\tthrough = to;\n\t\t\t\tto = Point.read(args);\n\t\t\t} else if (!from.equals(to)) {\n\t\t\t\tvar radius = Size.read(args),\n\t\t\t\t\tisZero = Numerical.isZero;\n\t\t\t\tif (isZero(radius.width) || isZero(radius.height))\n\t\t\t\t\treturn this.lineTo(to);\n\t\t\t\tvar rotation = Base.read(args),\n\t\t\t\t\tclockwise = !!Base.read(args),\n\t\t\t\t\tlarge = !!Base.read(args),\n\t\t\t\t\tmiddle = from.add(to).divide(2),\n\t\t\t\t\tpt = from.subtract(middle).rotate(-rotation),\n\t\t\t\t\tx = pt.x,\n\t\t\t\t\ty = pt.y,\n\t\t\t\t\trx = abs(radius.width),\n\t\t\t\t\try = abs(radius.height),\n\t\t\t\t\trxSq = rx * rx,\n\t\t\t\t\trySq = ry * ry,\n\t\t\t\t\txSq = x * x,\n\t\t\t\t\tySq = y * y;\n\t\t\t\tvar factor = sqrt(xSq / rxSq + ySq / rySq);\n\t\t\t\tif (factor > 1) {\n\t\t\t\t\trx *= factor;\n\t\t\t\t\try *= factor;\n\t\t\t\t\trxSq = rx * rx;\n\t\t\t\t\trySq = ry * ry;\n\t\t\t\t}\n\t\t\t\tfactor = (rxSq * rySq - rxSq * ySq - rySq * xSq) /\n\t\t\t\t\t\t(rxSq * ySq + rySq * xSq);\n\t\t\t\tif (abs(factor) < 1e-12)\n\t\t\t\t\tfactor = 0;\n\t\t\t\tif (factor < 0)\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t'Cannot create an arc with the given arguments');\n\t\t\t\tcenter = new Point(rx * y / ry, -ry * x / rx)\n\t\t\t\t\t\t.multiply((large === clockwise ? -1 : 1) * sqrt(factor))\n\t\t\t\t\t\t.rotate(rotation).add(middle);\n\t\t\t\tmatrix = new Matrix().translate(center).rotate(rotation)\n\t\t\t\t\t\t.scale(rx, ry);\n\t\t\t\tvector = matrix._inverseTransform(from);\n\t\t\t\textent = vector.getDirectedAngle(matrix._inverseTransform(to));\n\t\t\t\tif (!clockwise && extent > 0)\n\t\t\t\t\textent -= 360;\n\t\t\t\telse if (clockwise && extent < 0)\n\t\t\t\t\textent += 360;\n\t\t\t}\n\t\t\tif (through) {\n\t\t\t\tvar l1 = new Line(from.add(through).divide(2),\n\t\t\t\t\t\t\tthrough.subtract(from).rotate(90), true),\n\t\t\t\t\tl2 = new Line(through.add(to).divide(2),\n\t\t\t\t\t\t\tto.subtract(through).rotate(90), true),\n\t\t\t\t\tline = new Line(from, to),\n\t\t\t\t\tthroughSide = line.getSide(through);\n\t\t\t\tcenter = l1.intersect(l2, true);\n\t\t\t\tif (!center) {\n\t\t\t\t\tif (!throughSide)\n\t\t\t\t\t\treturn this.lineTo(to);\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t'Cannot create an arc with the given arguments');\n\t\t\t\t}\n\t\t\t\tvector = from.subtract(center);\n\t\t\t\textent = vector.getDirectedAngle(to.subtract(center));\n\t\t\t\tvar centerSide = line.getSide(center, true);\n\t\t\t\tif (centerSide === 0) {\n\t\t\t\t\textent = throughSide * abs(extent);\n\t\t\t\t} else if (throughSide === centerSide) {\n\t\t\t\t\textent += extent < 0 ? 360 : -360;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (extent) {\n\t\t\t\tvar epsilon = 1e-7,\n\t\t\t\t\text = abs(extent),\n\t\t\t\t\tcount = ext >= 360 ? 4 : Math.ceil((ext - epsilon) / 90),\n\t\t\t\t\tinc = extent / count,\n\t\t\t\t\thalf = inc * Math.PI / 360,\n\t\t\t\t\tz = 4 / 3 * Math.sin(half) / (1 + Math.cos(half)),\n\t\t\t\t\tsegments = [];\n\t\t\t\tfor (var i = 0; i <= count; i++) {\n\t\t\t\t\tvar pt = to,\n\t\t\t\t\t\tout = null;\n\t\t\t\t\tif (i < count) {\n\t\t\t\t\t\tout = vector.rotate(90).multiply(z);\n\t\t\t\t\t\tif (matrix) {\n\t\t\t\t\t\t\tpt = matrix._transformPoint(vector);\n\t\t\t\t\t\t\tout = matrix._transformPoint(vector.add(out))\n\t\t\t\t\t\t\t\t\t.subtract(pt);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpt = center.add(vector);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!i) {\n\t\t\t\t\t\tcurrent.setHandleOut(out);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _in = vector.rotate(-90).multiply(z);\n\t\t\t\t\t\tif (matrix) {\n\t\t\t\t\t\t\t_in = matrix._transformPoint(vector.add(_in))\n\t\t\t\t\t\t\t\t\t.subtract(pt);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsegments.push(new Segment(pt, _in, out));\n\t\t\t\t\t}\n\t\t\t\t\tvector = vector.rotate(inc);\n\t\t\t\t}\n\t\t\t\tthis._add(segments);\n\t\t\t}\n\t\t},\n\n\t\tlineBy: function() {\n\t\t\tvar to = Point.read(arguments),\n\t\t\t\tcurrent = getCurrentSegment(this)._point;\n\t\t\tthis.lineTo(current.add(to));\n\t\t},\n\n\t\tcurveBy: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tthrough = Point.read(args),\n\t\t\t\tto = Point.read(args),\n\t\t\t\tparameter = Base.read(args),\n\t\t\t\tcurrent = getCurrentSegment(this)._point;\n\t\t\tthis.curveTo(current.add(through), current.add(to), parameter);\n\t\t},\n\n\t\tcubicCurveBy: function() {\n\t\t\tvar args = arguments,\n\t\t\t\thandle1 = Point.read(args),\n\t\t\t\thandle2 = Point.read(args),\n\t\t\t\tto = Point.read(args),\n\t\t\t\tcurrent = getCurrentSegment(this)._point;\n\t\t\tthis.cubicCurveTo(current.add(handle1), current.add(handle2),\n\t\t\t\t\tcurrent.add(to));\n\t\t},\n\n\t\tquadraticCurveBy: function() {\n\t\t\tvar args = arguments,\n\t\t\t\thandle = Point.read(args),\n\t\t\t\tto = Point.read(args),\n\t\t\t\tcurrent = getCurrentSegment(this)._point;\n\t\t\tthis.quadraticCurveTo(current.add(handle), current.add(to));\n\t\t},\n\n\t\tarcBy: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tcurrent = getCurrentSegment(this)._point,\n\t\t\t\tpoint = current.add(Point.read(args)),\n\t\t\t\tclockwise = Base.pick(Base.peek(args), true);\n\t\t\tif (typeof clockwise === 'boolean') {\n\t\t\t\tthis.arcTo(point, clockwise);\n\t\t\t} else {\n\t\t\t\tthis.arcTo(point, current.add(Point.read(args)));\n\t\t\t}\n\t\t},\n\n\t\tclosePath: function(tolerance) {\n\t\t\tthis.setClosed(true);\n\t\t\tthis.join(this, tolerance);\n\t\t}\n\t};\n}, {\n\n\t_getBounds: function(matrix, options) {\n\t\tvar method = options.handle\n\t\t\t\t? 'getHandleBounds'\n\t\t\t\t: options.stroke\n\t\t\t\t? 'getStrokeBounds'\n\t\t\t\t: 'getBounds';\n\t\treturn Path[method](this._segments, this._closed, this, matrix, options);\n\t},\n\nstatics: {\n\tgetBounds: function(segments, closed, path, matrix, options, strokePadding) {\n\t\tvar first = segments[0];\n\t\tif (!first)\n\t\t\treturn new Rectangle();\n\t\tvar coords = new Array(6),\n\t\t\tprevCoords = first._transformCoordinates(matrix, new Array(6)),\n\t\t\tmin = prevCoords.slice(0, 2),\n\t\t\tmax = min.slice(),\n\t\t\troots = new Array(2);\n\n\t\tfunction processSegment(segment) {\n\t\t\tsegment._transformCoordinates(matrix, coords);\n\t\t\tfor (var i = 0; i < 2; i++) {\n\t\t\t\tCurve._addBounds(\n\t\t\t\t\tprevCoords[i],\n\t\t\t\t\tprevCoords[i + 4],\n\t\t\t\t\tcoords[i + 2],\n\t\t\t\t\tcoords[i],\n\t\t\t\t\ti, strokePadding ? strokePadding[i] : 0, min, max, roots);\n\t\t\t}\n\t\t\tvar tmp = prevCoords;\n\t\t\tprevCoords = coords;\n\t\t\tcoords = tmp;\n\t\t}\n\n\t\tfor (var i = 1, l = segments.length; i < l; i++)\n\t\t\tprocessSegment(segments[i]);\n\t\tif (closed)\n\t\t\tprocessSegment(first);\n\t\treturn new Rectangle(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n\t},\n\n\tgetStrokeBounds: function(segments, closed, path, matrix, options) {\n\t\tvar style = path.getStyle(),\n\t\t\tstroke = style.hasStroke(),\n\t\t\tstrokeWidth = style.getStrokeWidth(),\n\t\t\tstrokeMatrix = stroke && path._getStrokeMatrix(matrix, options),\n\t\t\tstrokePadding = stroke && Path._getStrokePadding(strokeWidth,\n\t\t\t\tstrokeMatrix),\n\t\t\tbounds = Path.getBounds(segments, closed, path, matrix, options,\n\t\t\t\tstrokePadding);\n\t\tif (!stroke)\n\t\t\treturn bounds;\n\t\tvar strokeRadius = strokeWidth / 2,\n\t\t\tjoin = style.getStrokeJoin(),\n\t\t\tcap = style.getStrokeCap(),\n\t\t\tmiterLimit = style.getMiterLimit(),\n\t\t\tjoinBounds = new Rectangle(new Size(strokePadding));\n\n\t\tfunction addPoint(point) {\n\t\t\tbounds = bounds.include(point);\n\t\t}\n\n\t\tfunction addRound(segment) {\n\t\t\tbounds = bounds.unite(\n\t\t\t\t\tjoinBounds.setCenter(segment._point.transform(matrix)));\n\t\t}\n\n\t\tfunction addJoin(segment, join) {\n\t\t\tif (join === 'round' || segment.isSmooth()) {\n\t\t\t\taddRound(segment);\n\t\t\t} else {\n\t\t\t\tPath._addBevelJoin(segment, join, strokeRadius, miterLimit,\n\t\t\t\t\t\tmatrix, strokeMatrix, addPoint);\n\t\t\t}\n\t\t}\n\n\t\tfunction addCap(segment, cap) {\n\t\t\tif (cap === 'round') {\n\t\t\t\taddRound(segment);\n\t\t\t} else {\n\t\t\t\tPath._addSquareCap(segment, cap, strokeRadius, matrix,\n\t\t\t\t\t\tstrokeMatrix, addPoint);\n\t\t\t}\n\t\t}\n\n\t\tvar length = segments.length - (closed ? 0 : 1);\n\t\tif (length > 0) {\n\t\t\tfor (var i = 1; i < length; i++) {\n\t\t\t\taddJoin(segments[i], join);\n\t\t\t}\n\t\t\tif (closed) {\n\t\t\t\taddJoin(segments[0], join);\n\t\t\t} else {\n\t\t\t\taddCap(segments[0], cap);\n\t\t\t\taddCap(segments[segments.length - 1], cap);\n\t\t\t}\n\t\t}\n\t\treturn bounds;\n\t},\n\n\t_getStrokePadding: function(radius, matrix) {\n\t\tif (!matrix)\n\t\t\treturn [radius, radius];\n\t\tvar hor = new Point(radius, 0).transform(matrix),\n\t\t\tver = new Point(0, radius).transform(matrix),\n\t\t\tphi = hor.getAngleInRadians(),\n\t\t\ta = hor.getLength(),\n\t\t\tb = ver.getLength();\n\t\tvar sin = Math.sin(phi),\n\t\t\tcos = Math.cos(phi),\n\t\t\ttan = Math.tan(phi),\n\t\t\ttx = Math.atan2(b * tan, a),\n\t\t\tty = Math.atan2(b, tan * a);\n\t\treturn [Math.abs(a * Math.cos(tx) * cos + b * Math.sin(tx) * sin),\n\t\t\t\tMath.abs(b * Math.sin(ty) * cos + a * Math.cos(ty) * sin)];\n\t},\n\n\t_addBevelJoin: function(segment, join, radius, miterLimit, matrix,\n\t\t\tstrokeMatrix, addPoint, isArea) {\n\t\tvar curve2 = segment.getCurve(),\n\t\t\tcurve1 = curve2.getPrevious(),\n\t\t\tpoint = curve2.getPoint1().transform(matrix),\n\t\t\tnormal1 = curve1.getNormalAtTime(1).multiply(radius)\n\t\t\t\t.transform(strokeMatrix),\n\t\t\tnormal2 = curve2.getNormalAtTime(0).multiply(radius)\n\t\t\t\t.transform(strokeMatrix),\n\t\t\t\tangle = normal1.getDirectedAngle(normal2);\n\t\tif (angle < 0 || angle >= 180) {\n\t\t\tnormal1 = normal1.negate();\n\t\t\tnormal2 = normal2.negate();\n\t\t}\n\t\tif (isArea)\n\t\t\taddPoint(point);\n\t\taddPoint(point.add(normal1));\n\t\tif (join === 'miter') {\n\t\t\tvar corner = new Line(point.add(normal1),\n\t\t\t\t\tnew Point(-normal1.y, normal1.x), true\n\t\t\t\t).intersect(new Line(point.add(normal2),\n\t\t\t\t\tnew Point(-normal2.y, normal2.x), true\n\t\t\t\t), true);\n\t\t\tif (corner && point.getDistance(corner) <= miterLimit * radius) {\n\t\t\t\taddPoint(corner);\n\t\t\t}\n\t\t}\n\t\taddPoint(point.add(normal2));\n\t},\n\n\t_addSquareCap: function(segment, cap, radius, matrix, strokeMatrix,\n\t\t\taddPoint, isArea) {\n\t\tvar point = segment._point.transform(matrix),\n\t\t\tloc = segment.getLocation(),\n\t\t\tnormal = loc.getNormal()\n\t\t\t\t\t.multiply(loc.getTime() === 0 ? radius : -radius)\n\t\t\t\t\t.transform(strokeMatrix);\n\t\tif (cap === 'square') {\n\t\t\tif (isArea) {\n\t\t\t\taddPoint(point.subtract(normal));\n\t\t\t\taddPoint(point.add(normal));\n\t\t\t}\n\t\t\tpoint = point.add(normal.rotate(-90));\n\t\t}\n\t\taddPoint(point.add(normal));\n\t\taddPoint(point.subtract(normal));\n\t},\n\n\tgetHandleBounds: function(segments, closed, path, matrix, options) {\n\t\tvar style = path.getStyle(),\n\t\t\tstroke = options.stroke && style.hasStroke(),\n\t\t\tstrokePadding,\n\t\t\tjoinPadding;\n\t\tif (stroke) {\n\t\t\tvar strokeMatrix = path._getStrokeMatrix(matrix, options),\n\t\t\t\tstrokeRadius = style.getStrokeWidth() / 2,\n\t\t\t\tjoinRadius = strokeRadius;\n\t\t\tif (style.getStrokeJoin() === 'miter')\n\t\t\t\tjoinRadius = strokeRadius * style.getMiterLimit();\n\t\t\tif (style.getStrokeCap() === 'square')\n\t\t\t\tjoinRadius = Math.max(joinRadius, strokeRadius * Math.SQRT2);\n\t\t\tstrokePadding = Path._getStrokePadding(strokeRadius, strokeMatrix);\n\t\t\tjoinPadding = Path._getStrokePadding(joinRadius, strokeMatrix);\n\t\t}\n\t\tvar coords = new Array(6),\n\t\t\tx1 = Infinity,\n\t\t\tx2 = -x1,\n\t\t\ty1 = x1,\n\t\t\ty2 = x2;\n\t\tfor (var i = 0, l = segments.length; i < l; i++) {\n\t\t\tvar segment = segments[i];\n\t\t\tsegment._transformCoordinates(matrix, coords);\n\t\t\tfor (var j = 0; j < 6; j += 2) {\n\t\t\t\tvar padding = !j ? joinPadding : strokePadding,\n\t\t\t\t\tpaddingX = padding ? padding[0] : 0,\n\t\t\t\t\tpaddingY = padding ? padding[1] : 0,\n\t\t\t\t\tx = coords[j],\n\t\t\t\t\ty = coords[j + 1],\n\t\t\t\t\txn = x - paddingX,\n\t\t\t\t\txx = x + paddingX,\n\t\t\t\t\tyn = y - paddingY,\n\t\t\t\t\tyx = y + paddingY;\n\t\t\t\tif (xn < x1) x1 = xn;\n\t\t\t\tif (xx > x2) x2 = xx;\n\t\t\t\tif (yn < y1) y1 = yn;\n\t\t\t\tif (yx > y2) y2 = yx;\n\t\t\t}\n\t\t}\n\t\treturn new Rectangle(x1, y1, x2 - x1, y2 - y1);\n\t}\n}});\n\nPath.inject({ statics: new function() {\n\n\tvar kappa = 0.5522847498307936,\n\t\tellipseSegments = [\n\t\t\tnew Segment([-1, 0], [0, kappa ], [0, -kappa]),\n\t\t\tnew Segment([0, -1], [-kappa, 0], [kappa, 0 ]),\n\t\t\tnew Segment([1, 0], [0, -kappa], [0, kappa ]),\n\t\t\tnew Segment([0, 1], [kappa, 0 ], [-kappa, 0])\n\t\t];\n\n\tfunction createPath(segments, closed, args) {\n\t\tvar props = Base.getNamed(args),\n\t\t\tpath = new Path(props && props.insert == false && Item.NO_INSERT);\n\t\tpath._add(segments);\n\t\tpath._closed = closed;\n\t\treturn path.set(props, { insert: true });\n\t}\n\n\tfunction createEllipse(center, radius, args) {\n\t\tvar segments = new Array(4);\n\t\tfor (var i = 0; i < 4; i++) {\n\t\t\tvar segment = ellipseSegments[i];\n\t\t\tsegments[i] = new Segment(\n\t\t\t\tsegment._point.multiply(radius).add(center),\n\t\t\t\tsegment._handleIn.multiply(radius),\n\t\t\t\tsegment._handleOut.multiply(radius)\n\t\t\t);\n\t\t}\n\t\treturn createPath(segments, true, args);\n\t}\n\n\treturn {\n\t\tLine: function() {\n\t\t\tvar args = arguments;\n\t\t\treturn createPath([\n\t\t\t\tnew Segment(Point.readNamed(args, 'from')),\n\t\t\t\tnew Segment(Point.readNamed(args, 'to'))\n\t\t\t], false, args);\n\t\t},\n\n\t\tCircle: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tcenter = Point.readNamed(args, 'center'),\n\t\t\t\tradius = Base.readNamed(args, 'radius');\n\t\t\treturn createEllipse(center, new Size(radius), args);\n\t\t},\n\n\t\tRectangle: function() {\n\t\t\tvar args = arguments,\n\t\t\t\trect = Rectangle.readNamed(args, 'rectangle'),\n\t\t\t\tradius = Size.readNamed(args, 'radius', 0,\n\t\t\t\t\t\t{ readNull: true }),\n\t\t\t\tbl = rect.getBottomLeft(true),\n\t\t\t\ttl = rect.getTopLeft(true),\n\t\t\t\ttr = rect.getTopRight(true),\n\t\t\t\tbr = rect.getBottomRight(true),\n\t\t\t\tsegments;\n\t\t\tif (!radius || radius.isZero()) {\n\t\t\t\tsegments = [\n\t\t\t\t\tnew Segment(bl),\n\t\t\t\t\tnew Segment(tl),\n\t\t\t\t\tnew Segment(tr),\n\t\t\t\t\tnew Segment(br)\n\t\t\t\t];\n\t\t\t} else {\n\t\t\t\tradius = Size.min(radius, rect.getSize(true).divide(2));\n\t\t\t\tvar rx = radius.width,\n\t\t\t\t\try = radius.height,\n\t\t\t\t\thx = rx * kappa,\n\t\t\t\t\thy = ry * kappa;\n\t\t\t\tsegments = [\n\t\t\t\t\tnew Segment(bl.add(rx, 0), null, [-hx, 0]),\n\t\t\t\t\tnew Segment(bl.subtract(0, ry), [0, hy]),\n\t\t\t\t\tnew Segment(tl.add(0, ry), null, [0, -hy]),\n\t\t\t\t\tnew Segment(tl.add(rx, 0), [-hx, 0], null),\n\t\t\t\t\tnew Segment(tr.subtract(rx, 0), null, [hx, 0]),\n\t\t\t\t\tnew Segment(tr.add(0, ry), [0, -hy], null),\n\t\t\t\t\tnew Segment(br.subtract(0, ry), null, [0, hy]),\n\t\t\t\t\tnew Segment(br.subtract(rx, 0), [hx, 0])\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn createPath(segments, true, args);\n\t\t},\n\n\t\tRoundRectangle: '#Rectangle',\n\n\t\tEllipse: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tellipse = Shape._readEllipse(args);\n\t\t\treturn createEllipse(ellipse.center, ellipse.radius, args);\n\t\t},\n\n\t\tOval: '#Ellipse',\n\n\t\tArc: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tfrom = Point.readNamed(args, 'from'),\n\t\t\t\tthrough = Point.readNamed(args, 'through'),\n\t\t\t\tto = Point.readNamed(args, 'to'),\n\t\t\t\tprops = Base.getNamed(args),\n\t\t\t\tpath = new Path(props && props.insert == false\n\t\t\t\t\t\t&& Item.NO_INSERT);\n\t\t\tpath.moveTo(from);\n\t\t\tpath.arcTo(through, to);\n\t\t\treturn path.set(props);\n\t\t},\n\n\t\tRegularPolygon: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tcenter = Point.readNamed(args, 'center'),\n\t\t\t\tsides = Base.readNamed(args, 'sides'),\n\t\t\t\tradius = Base.readNamed(args, 'radius'),\n\t\t\t\tstep = 360 / sides,\n\t\t\t\tthree = sides % 3 === 0,\n\t\t\t\tvector = new Point(0, three ? -radius : radius),\n\t\t\t\toffset = three ? -1 : 0.5,\n\t\t\t\tsegments = new Array(sides);\n\t\t\tfor (var i = 0; i < sides; i++)\n\t\t\t\tsegments[i] = new Segment(center.add(\n\t\t\t\t\tvector.rotate((i + offset) * step)));\n\t\t\treturn createPath(segments, true, args);\n\t\t},\n\n\t\tStar: function() {\n\t\t\tvar args = arguments,\n\t\t\t\tcenter = Point.readNamed(args, 'center'),\n\t\t\t\tpoints = Base.readNamed(args, 'points') * 2,\n\t\t\t\tradius1 = Base.readNamed(args, 'radius1'),\n\t\t\t\tradius2 = Base.readNamed(args, 'radius2'),\n\t\t\t\tstep = 360 / points,\n\t\t\t\tvector = new Point(0, -1),\n\t\t\t\tsegments = new Array(points);\n\t\t\tfor (var i = 0; i < points; i++)\n\t\t\t\tsegments[i] = new Segment(center.add(vector.rotate(step * i)\n\t\t\t\t\t\t.multiply(i % 2 ? radius2 : radius1)));\n\t\t\treturn createPath(segments, true, args);\n\t\t}\n\t};\n}});\n\nvar CompoundPath = PathItem.extend({\n\t_class: 'CompoundPath',\n\t_serializeFields: {\n\t\tchildren: []\n\t},\n\tbeans: true,\n\n\tinitialize: function CompoundPath(arg) {\n\t\tthis._children = [];\n\t\tthis._namedChildren = {};\n\t\tif (!this._initialize(arg)) {\n\t\t\tif (typeof arg === 'string') {\n\t\t\t\tthis.setPathData(arg);\n\t\t\t} else {\n\t\t\t\tthis.addChildren(Array.isArray(arg) ? arg : arguments);\n\t\t\t}\n\t\t}\n\t},\n\n\tinsertChildren: function insertChildren(index, items) {\n\t\tvar list = items,\n\t\t\tfirst = list[0];\n\t\tif (first && typeof first[0] === 'number')\n\t\t\tlist = [list];\n\t\tfor (var i = items.length - 1; i >= 0; i--) {\n\t\t\tvar item = list[i];\n\t\t\tif (list === items && !(item instanceof Path))\n\t\t\t\tlist = Base.slice(list);\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\tlist[i] = new Path({ segments: item, insert: false });\n\t\t\t} else if (item instanceof CompoundPath) {\n\t\t\t\tlist.splice.apply(list, [i, 1].concat(item.removeChildren()));\n\t\t\t\titem.remove();\n\t\t\t}\n\t\t}\n\t\treturn insertChildren.base.call(this, index, list);\n\t},\n\n\treduce: function reduce(options) {\n\t\tvar children = this._children;\n\t\tfor (var i = children.length - 1; i >= 0; i--) {\n\t\t\tvar path = children[i].reduce(options);\n\t\t\tif (path.isEmpty())\n\t\t\t\tpath.remove();\n\t\t}\n\t\tif (!children.length) {\n\t\t\tvar path = new Path(Item.NO_INSERT);\n\t\t\tpath.copyAttributes(this);\n\t\t\tpath.insertAbove(this);\n\t\t\tthis.remove();\n\t\t\treturn path;\n\t\t}\n\t\treturn reduce.base.call(this);\n\t},\n\n\tisClosed: function() {\n\t\tvar children = this._children;\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tif (!children[i]._closed)\n\t\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tsetClosed: function(closed) {\n\t\tvar children = this._children;\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tchildren[i].setClosed(closed);\n\t\t}\n\t},\n\n\tgetFirstSegment: function() {\n\t\tvar first = this.getFirstChild();\n\t\treturn first && first.getFirstSegment();\n\t},\n\n\tgetLastSegment: function() {\n\t\tvar last = this.getLastChild();\n\t\treturn last && last.getLastSegment();\n\t},\n\n\tgetCurves: function() {\n\t\tvar children = this._children,\n\t\t\tcurves = [];\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tBase.push(curves, children[i].getCurves());\n\t\t}\n\t\treturn curves;\n\t},\n\n\tgetFirstCurve: function() {\n\t\tvar first = this.getFirstChild();\n\t\treturn first && first.getFirstCurve();\n\t},\n\n\tgetLastCurve: function() {\n\t\tvar last = this.getLastChild();\n\t\treturn last && last.getLastCurve();\n\t},\n\n\tgetArea: function() {\n\t\tvar children = this._children,\n\t\t\tarea = 0;\n\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\tarea += children[i].getArea();\n\t\treturn area;\n\t},\n\n\tgetLength: function() {\n\t\tvar children = this._children,\n\t\t\tlength = 0;\n\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\tlength += children[i].getLength();\n\t\treturn length;\n\t},\n\n\tgetPathData: function(_matrix, _precision) {\n\t\tvar children = this._children,\n\t\t\tpaths = [];\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tvar child = children[i],\n\t\t\t\tmx = child._matrix;\n\t\t\tpaths.push(child.getPathData(_matrix && !mx.isIdentity()\n\t\t\t\t\t? _matrix.appended(mx) : _matrix, _precision));\n\t\t}\n\t\treturn paths.join('');\n\t},\n\n\t_hitTestChildren: function _hitTestChildren(point, options, viewMatrix) {\n\t\treturn _hitTestChildren.base.call(this, point,\n\t\t\t\toptions.class === Path || options.type === 'path' || options.hitUnfilledPaths ? options\n\t\t\t\t\t: Base.set({}, options, { fill: false }),\n\t\t\t\tviewMatrix);\n\t},\n\n\t_draw: function(ctx, param, viewMatrix, strokeMatrix) {\n\t\tvar children = this._children;\n\t\tif (!children.length)\n\t\t\treturn;\n\n\t\tparam = param.extend({ dontStart: true, dontFinish: true });\n\t\tctx.beginPath();\n\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\tchildren[i].draw(ctx, param, strokeMatrix);\n\n\t\tif (!param.clip) {\n\t\t\tthis._setStyles(ctx, param, viewMatrix, strokeMatrix);\n\t\t\tvar style = this._style;\n\t\t\tif (style.hasFill()) {\n\t\t\t\tctx.fill(style.getFillRule());\n\t\t\t\tctx.shadowColor = 'rgba(0,0,0,0)';\n\t\t\t}\n\t\t\tif (style.hasStroke())\n\t\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\t_drawSelected: function(ctx, matrix, selectionItems) {\n\t\tvar children = this._children;\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tvar child = children[i],\n\t\t\t\tmx = child._matrix;\n\t\t\tif (!selectionItems[child._id]) {\n\t\t\t\tchild._drawSelected(ctx, mx.isIdentity() ? matrix\n\t\t\t\t\t\t: matrix.appended(mx));\n\t\t\t}\n\t\t}\n\t}\n},\nnew function() {\n\tfunction getCurrentPath(that, check) {\n\t\tvar children = that._children;\n\t\tif (check && !children.length)\n\t\t\tthrow new Error('Use a moveTo() command first');\n\t\treturn children[children.length - 1];\n\t}\n\n\treturn Base.each(['lineTo', 'cubicCurveTo', 'quadraticCurveTo', 'curveTo',\n\t\t\t'arcTo', 'lineBy', 'cubicCurveBy', 'quadraticCurveBy', 'curveBy',\n\t\t\t'arcBy'],\n\t\tfunction(key) {\n\t\t\tthis[key] = function() {\n\t\t\t\tvar path = getCurrentPath(this, true);\n\t\t\t\tpath[key].apply(path, arguments);\n\t\t\t};\n\t\t}, {\n\t\t\tmoveTo: function() {\n\t\t\t\tvar current = getCurrentPath(this),\n\t\t\t\t\tpath = current && current.isEmpty() ? current\n\t\t\t\t\t\t\t: new Path(Item.NO_INSERT);\n\t\t\t\tif (path !== current)\n\t\t\t\t\tthis.addChild(path);\n\t\t\t\tpath.moveTo.apply(path, arguments);\n\t\t\t},\n\n\t\t\tmoveBy: function() {\n\t\t\t\tvar current = getCurrentPath(this, true),\n\t\t\t\t\tlast = current && current.getLastSegment(),\n\t\t\t\t\tpoint = Point.read(arguments);\n\t\t\t\tthis.moveTo(last ? point.add(last._point) : point);\n\t\t\t},\n\n\t\t\tclosePath: function(tolerance) {\n\t\t\t\tgetCurrentPath(this, true).closePath(tolerance);\n\t\t\t}\n\t\t}\n\t);\n}, Base.each(['reverse', 'flatten', 'simplify', 'smooth'], function(key) {\n\tthis[key] = function(param) {\n\t\tvar children = this._children,\n\t\t\tres;\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tres = children[i][key](param) || res;\n\t\t}\n\t\treturn res;\n\t};\n}, {}));\n\nPathItem.inject(new function() {\n\tvar min = Math.min,\n\t\tmax = Math.max,\n\t\tabs = Math.abs,\n\t\toperators = {\n\t\t\tunite:     { '1': true, '2': true },\n\t\t\tintersect: { '2': true },\n\t\t\tsubtract:  { '1': true },\n\t\t\texclude:   { '1': true, '-1': true }\n\t\t};\n\n\tfunction getPaths(path) {\n\t\treturn path._children || [path];\n\t}\n\n\tfunction preparePath(path, resolve) {\n\t\tvar res = path\n\t\t\t.clone(false)\n\t\t\t.reduce({ simplify: true })\n\t\t\t.transform(null, true, true);\n\t\tif (resolve) {\n\t\t\tvar paths = getPaths(res);\n\t\t\tfor (var i = 0, l = paths.length; i < l; i++) {\n\t\t\t\tvar path = paths[i];\n\t\t\t\tif (!path._closed && !path.isEmpty()) {\n\t\t\t\t\tpath.closePath(1e-12);\n\t\t\t\t\tpath.getFirstSegment().setHandleIn(0, 0);\n\t\t\t\t\tpath.getLastSegment().setHandleOut(0, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t\tres = res\n\t\t\t\t.resolveCrossings()\n\t\t\t\t.reorient(res.getFillRule() === 'nonzero', true);\n\t\t}\n\t\treturn res;\n\t}\n\n\tfunction createResult(paths, simplify, path1, path2, options) {\n\t\tvar result = new CompoundPath(Item.NO_INSERT);\n\t\tresult.addChildren(paths, true);\n\t\tresult = result.reduce({ simplify: simplify });\n\t\tif (!(options && options.insert == false)) {\n\t\t\tresult.insertAbove(path2 && path1.isSibling(path2)\n\t\t\t\t\t&& path1.getIndex() < path2.getIndex() ? path2 : path1);\n\t\t}\n\t\tresult.copyAttributes(path1, true);\n\t\treturn result;\n\t}\n\n\tfunction filterIntersection(inter) {\n\t\treturn inter.hasOverlap() || inter.isCrossing();\n\t}\n\n\tfunction traceBoolean(path1, path2, operation, options) {\n\t\tif (options && (options.trace == false || options.stroke) &&\n\t\t\t\t/^(subtract|intersect)$/.test(operation))\n\t\t\treturn splitBoolean(path1, path2, operation);\n\t\tvar _path1 = preparePath(path1, true),\n\t\t\t_path2 = path2 && path1 !== path2 && preparePath(path2, true),\n\t\t\toperator = operators[operation];\n\t\toperator[operation] = true;\n\t\tif (_path2 && (operator.subtract || operator.exclude)\n\t\t\t\t^ (_path2.isClockwise() ^ _path1.isClockwise()))\n\t\t\t_path2.reverse();\n\t\tvar crossings = divideLocations(CurveLocation.expand(\n\t\t\t\t_path1.getIntersections(_path2, filterIntersection))),\n\t\t\tpaths1 = getPaths(_path1),\n\t\t\tpaths2 = _path2 && getPaths(_path2),\n\t\t\tsegments = [],\n\t\t\tcurves = [],\n\t\t\tpaths;\n\n\t\tfunction collectPaths(paths) {\n\t\t\tfor (var i = 0, l = paths.length; i < l; i++) {\n\t\t\t\tvar path = paths[i];\n\t\t\t\tBase.push(segments, path._segments);\n\t\t\t\tBase.push(curves, path.getCurves());\n\t\t\t\tpath._overlapsOnly = true;\n\t\t\t}\n\t\t}\n\n\t\tfunction getCurves(indices) {\n\t\t\tvar list = [];\n\t\t\tfor (var i = 0, l = indices && indices.length; i < l; i++) {\n\t\t\t\tlist.push(curves[indices[i]]);\n\t\t\t}\n\t\t\treturn list;\n\t\t}\n\n\t\tif (crossings.length) {\n\t\t\tcollectPaths(paths1);\n\t\t\tif (paths2)\n\t\t\t\tcollectPaths(paths2);\n\n\t\t\tvar curvesValues = new Array(curves.length);\n\t\t\tfor (var i = 0, l = curves.length; i < l; i++) {\n\t\t\t\tcurvesValues[i] = curves[i].getValues();\n\t\t\t}\n\t\t\tvar curveCollisions = CollisionDetection.findCurveBoundsCollisions(\n\t\t\t\t\tcurvesValues, curvesValues, 0, true);\n\t\t\tvar curveCollisionsMap = {};\n\t\t\tfor (var i = 0; i < curves.length; i++) {\n\t\t\t\tvar curve = curves[i],\n\t\t\t\t\tid = curve._path._id,\n\t\t\t\t\tmap = curveCollisionsMap[id] = curveCollisionsMap[id] || {};\n\t\t\t\tmap[curve.getIndex()] = {\n\t\t\t\t\thor: getCurves(curveCollisions[i].hor),\n\t\t\t\t\tver: getCurves(curveCollisions[i].ver)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tfor (var i = 0, l = crossings.length; i < l; i++) {\n\t\t\t\tpropagateWinding(crossings[i]._segment, _path1, _path2,\n\t\t\t\t\t\tcurveCollisionsMap, operator);\n\t\t\t}\n\t\t\tfor (var i = 0, l = segments.length; i < l; i++) {\n\t\t\t\tvar segment = segments[i],\n\t\t\t\t\tinter = segment._intersection;\n\t\t\t\tif (!segment._winding) {\n\t\t\t\t\tpropagateWinding(segment, _path1, _path2,\n\t\t\t\t\t\t\tcurveCollisionsMap, operator);\n\t\t\t\t}\n\t\t\t\tif (!(inter && inter._overlap))\n\t\t\t\t\tsegment._path._overlapsOnly = false;\n\t\t\t}\n\t\t\tpaths = tracePaths(segments, operator);\n\t\t} else {\n\t\t\tpaths = reorientPaths(\n\t\t\t\t\tpaths2 ? paths1.concat(paths2) : paths1.slice(),\n\t\t\t\t\tfunction(w) {\n\t\t\t\t\t\treturn !!operator[w];\n\t\t\t\t\t});\n\t\t}\n\t\treturn createResult(paths, true, path1, path2, options);\n\t}\n\n\tfunction splitBoolean(path1, path2, operation) {\n\t\tvar _path1 = preparePath(path1),\n\t\t\t_path2 = preparePath(path2),\n\t\t\tcrossings = _path1.getIntersections(_path2, filterIntersection),\n\t\t\tsubtract = operation === 'subtract',\n\t\t\tdivide = operation === 'divide',\n\t\t\tadded = {},\n\t\t\tpaths = [];\n\n\t\tfunction addPath(path) {\n\t\t\tif (!added[path._id] && (divide ||\n\t\t\t\t\t_path2.contains(path.getPointAt(path.getLength() / 2))\n\t\t\t\t\t\t^ subtract)) {\n\t\t\t\tpaths.unshift(path);\n\t\t\t\treturn added[path._id] = true;\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = crossings.length - 1; i >= 0; i--) {\n\t\t\tvar path = crossings[i].split();\n\t\t\tif (path) {\n\t\t\t\tif (addPath(path))\n\t\t\t\t\tpath.getFirstSegment().setHandleIn(0, 0);\n\t\t\t\t_path1.getLastSegment().setHandleOut(0, 0);\n\t\t\t}\n\t\t}\n\t\taddPath(_path1);\n\t\treturn createResult(paths, false, path1, path2);\n\t}\n\n\tfunction linkIntersections(from, to) {\n\t\tvar prev = from;\n\t\twhile (prev) {\n\t\t\tif (prev === to)\n\t\t\t\treturn;\n\t\t\tprev = prev._previous;\n\t\t}\n\t\twhile (from._next && from._next !== to)\n\t\t\tfrom = from._next;\n\t\tif (!from._next) {\n\t\t\twhile (to._previous)\n\t\t\t\tto = to._previous;\n\t\t\tfrom._next = to;\n\t\t\tto._previous = from;\n\t\t}\n\t}\n\n\tfunction clearCurveHandles(curves) {\n\t\tfor (var i = curves.length - 1; i >= 0; i--)\n\t\t\tcurves[i].clearHandles();\n\t}\n\n\tfunction reorientPaths(paths, isInside, clockwise) {\n\t\tvar length = paths && paths.length;\n\t\tif (length) {\n\t\t\tvar lookup = Base.each(paths, function (path, i) {\n\t\t\t\t\tthis[path._id] = {\n\t\t\t\t\t\tcontainer: null,\n\t\t\t\t\t\twinding: path.isClockwise() ? 1 : -1,\n\t\t\t\t\t\tindex: i\n\t\t\t\t\t};\n\t\t\t\t}, {}),\n\t\t\t\tsorted = paths.slice().sort(function (a, b) {\n\t\t\t\t\treturn abs(b.getArea()) - abs(a.getArea());\n\t\t\t\t}),\n\t\t\t\tfirst = sorted[0];\n\t\t\tvar collisions = CollisionDetection.findItemBoundsCollisions(sorted,\n\t\t\t\t\tnull, Numerical.GEOMETRIC_EPSILON);\n\t\t\tif (clockwise == null)\n\t\t\t\tclockwise = first.isClockwise();\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tvar path1 = sorted[i],\n\t\t\t\t\tentry1 = lookup[path1._id],\n\t\t\t\t\tcontainerWinding = 0,\n\t\t\t\t\tindices = collisions[i];\n\t\t\t\tif (indices) {\n\t\t\t\t\tvar point = null;\n\t\t\t\t\tfor (var j = indices.length - 1; j >= 0; j--) {\n\t\t\t\t\t\tif (indices[j] < i) {\n\t\t\t\t\t\t\tpoint = point || path1.getInteriorPoint();\n\t\t\t\t\t\t\tvar path2 = sorted[indices[j]];\n\t\t\t\t\t\t\tif (path2.contains(point)) {\n\t\t\t\t\t\t\t\tvar entry2 = lookup[path2._id];\n\t\t\t\t\t\t\t\tcontainerWinding = entry2.winding;\n\t\t\t\t\t\t\t\tentry1.winding += containerWinding;\n\t\t\t\t\t\t\t\tentry1.container = entry2.exclude\n\t\t\t\t\t\t\t\t\t? entry2.container : path2;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isInside(entry1.winding) === isInside(containerWinding)) {\n\t\t\t\t\tentry1.exclude = true;\n\t\t\t\t\tpaths[entry1.index] = null;\n\t\t\t\t} else {\n\t\t\t\t\tvar container = entry1.container;\n\t\t\t\t\tpath1.setClockwise(\n\t\t\t\t\t\t\tcontainer ? !container.isClockwise() : clockwise);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn paths;\n\t}\n\n\tfunction divideLocations(locations, include, clearLater) {\n\t\tvar results = include && [],\n\t\t\ttMin = 1e-8,\n\t\t\ttMax = 1 - tMin,\n\t\t\tclearHandles = false,\n\t\t\tclearCurves = clearLater || [],\n\t\t\tclearLookup = clearLater && {},\n\t\t\trenormalizeLocs,\n\t\t\tprevCurve,\n\t\t\tprevTime;\n\n\t\tfunction getId(curve) {\n\t\t\treturn curve._path._id + '.' + curve._segment1._index;\n\t\t}\n\n\t\tfor (var i = (clearLater && clearLater.length) - 1; i >= 0; i--) {\n\t\t\tvar curve = clearLater[i];\n\t\t\tif (curve._path)\n\t\t\t\tclearLookup[getId(curve)] = true;\n\t\t}\n\n\t\tfor (var i = locations.length - 1; i >= 0; i--) {\n\t\t\tvar loc = locations[i],\n\t\t\t\ttime = loc._time,\n\t\t\t\torigTime = time,\n\t\t\t\texclude = include && !include(loc),\n\t\t\t\tcurve = loc._curve,\n\t\t\t\tsegment;\n\t\t\tif (curve) {\n\t\t\t\tif (curve !== prevCurve) {\n\t\t\t\t\tclearHandles = !curve.hasHandles()\n\t\t\t\t\t\t\t|| clearLookup && clearLookup[getId(curve)];\n\t\t\t\t\trenormalizeLocs = [];\n\t\t\t\t\tprevTime = null;\n\t\t\t\t\tprevCurve = curve;\n\t\t\t\t} else if (prevTime >= tMin) {\n\t\t\t\t\ttime /= prevTime;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (exclude) {\n\t\t\t\tif (renormalizeLocs)\n\t\t\t\t\trenormalizeLocs.push(loc);\n\t\t\t\tcontinue;\n\t\t\t} else if (include) {\n\t\t\t\tresults.unshift(loc);\n\t\t\t}\n\t\t\tprevTime = origTime;\n\t\t\tif (time < tMin) {\n\t\t\t\tsegment = curve._segment1;\n\t\t\t} else if (time > tMax) {\n\t\t\t\tsegment = curve._segment2;\n\t\t\t} else {\n\t\t\t\tvar newCurve = curve.divideAtTime(time, true);\n\t\t\t\tif (clearHandles)\n\t\t\t\t\tclearCurves.push(curve, newCurve);\n\t\t\t\tsegment = newCurve._segment1;\n\t\t\t\tfor (var j = renormalizeLocs.length - 1; j >= 0; j--) {\n\t\t\t\t\tvar l = renormalizeLocs[j];\n\t\t\t\t\tl._time = (l._time - time) / (1 - time);\n\t\t\t\t}\n\t\t\t}\n\t\t\tloc._setSegment(segment);\n\t\t\tvar inter = segment._intersection,\n\t\t\t\tdest = loc._intersection;\n\t\t\tif (inter) {\n\t\t\t\tlinkIntersections(inter, dest);\n\t\t\t\tvar other = inter;\n\t\t\t\twhile (other) {\n\t\t\t\t\tlinkIntersections(other._intersection, inter);\n\t\t\t\t\tother = other._next;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsegment._intersection = dest;\n\t\t\t}\n\t\t}\n\t\tif (!clearLater)\n\t\t\tclearCurveHandles(clearCurves);\n\t\treturn results || locations;\n\t}\n\n\tfunction getWinding(point, curves, dir, closed, dontFlip) {\n\t\tvar curvesList = Array.isArray(curves)\n\t\t\t? curves\n\t\t\t: curves[dir ? 'hor' : 'ver'];\n\t\tvar ia = dir ? 1 : 0,\n\t\t\tio = ia ^ 1,\n\t\t\tpv = [point.x, point.y],\n\t\t\tpa = pv[ia],\n\t\t\tpo = pv[io],\n\t\t\twindingEpsilon = 1e-9,\n\t\t\tqualityEpsilon = 1e-6,\n\t\t\tpaL = pa - windingEpsilon,\n\t\t\tpaR = pa + windingEpsilon,\n\t\t\twindingL = 0,\n\t\t\twindingR = 0,\n\t\t\tpathWindingL = 0,\n\t\t\tpathWindingR = 0,\n\t\t\tonPath = false,\n\t\t\tonAnyPath = false,\n\t\t\tquality = 1,\n\t\t\troots = [],\n\t\t\tvPrev,\n\t\t\tvClose;\n\n\t\tfunction addWinding(v) {\n\t\t\tvar o0 = v[io + 0],\n\t\t\t\to3 = v[io + 6];\n\t\t\tif (po < min(o0, o3) || po > max(o0, o3)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar a0 = v[ia + 0],\n\t\t\t\ta1 = v[ia + 2],\n\t\t\t\ta2 = v[ia + 4],\n\t\t\t\ta3 = v[ia + 6];\n\t\t\tif (o0 === o3) {\n\t\t\t\tif (a0 < paR && a3 > paL || a3 < paR && a0 > paL) {\n\t\t\t\t\tonPath = true;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar t =   po === o0 ? 0\n\t\t\t\t\t: po === o3 ? 1\n\t\t\t\t\t: paL > max(a0, a1, a2, a3) || paR < min(a0, a1, a2, a3)\n\t\t\t\t\t? 1\n\t\t\t\t\t: Curve.solveCubic(v, io, po, roots, 0, 1) > 0\n\t\t\t\t\t\t? roots[0]\n\t\t\t\t\t\t: 1,\n\t\t\t\ta =   t === 0 ? a0\n\t\t\t\t\t: t === 1 ? a3\n\t\t\t\t\t: Curve.getPoint(v, t)[dir ? 'y' : 'x'],\n\t\t\t\twinding = o0 > o3 ? 1 : -1,\n\t\t\t\twindingPrev = vPrev[io] > vPrev[io + 6] ? 1 : -1,\n\t\t\t\ta3Prev = vPrev[ia + 6];\n\t\t\tif (po !== o0) {\n\t\t\t\tif (a < paL) {\n\t\t\t\t\tpathWindingL += winding;\n\t\t\t\t} else if (a > paR) {\n\t\t\t\t\tpathWindingR += winding;\n\t\t\t\t} else {\n\t\t\t\t\tonPath = true;\n\t\t\t\t}\n\t\t\t\tif (a > pa - qualityEpsilon && a < pa + qualityEpsilon)\n\t\t\t\t\tquality /= 2;\n\t\t\t} else {\n\t\t\t\tif (winding !== windingPrev) {\n\t\t\t\t\tif (a0 < paL) {\n\t\t\t\t\t\tpathWindingL += winding;\n\t\t\t\t\t} else if (a0 > paR) {\n\t\t\t\t\t\tpathWindingR += winding;\n\t\t\t\t\t}\n\t\t\t\t} else if (a0 != a3Prev) {\n\t\t\t\t\tif (a3Prev < paR && a > paR) {\n\t\t\t\t\t\tpathWindingR += winding;\n\t\t\t\t\t\tonPath = true;\n\t\t\t\t\t} else if (a3Prev > paL && a < paL) {\n\t\t\t\t\t\tpathWindingL += winding;\n\t\t\t\t\t\tonPath = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tquality /= 4;\n\t\t\t}\n\t\t\tvPrev = v;\n\t\t\treturn !dontFlip && a > paL && a < paR\n\t\t\t\t\t&& Curve.getTangent(v, t)[dir ? 'x' : 'y'] === 0\n\t\t\t\t\t&& getWinding(point, curves, !dir, closed, true);\n\t\t}\n\n\t\tfunction handleCurve(v) {\n\t\t\tvar o0 = v[io + 0],\n\t\t\t\to1 = v[io + 2],\n\t\t\t\to2 = v[io + 4],\n\t\t\t\to3 = v[io + 6];\n\t\t\tif (po <= max(o0, o1, o2, o3) && po >= min(o0, o1, o2, o3)) {\n\t\t\t\tvar a0 = v[ia + 0],\n\t\t\t\t\ta1 = v[ia + 2],\n\t\t\t\t\ta2 = v[ia + 4],\n\t\t\t\t\ta3 = v[ia + 6],\n\t\t\t\t\tmonoCurves = paL > max(a0, a1, a2, a3) ||\n\t\t\t\t\t\t\t\t paR < min(a0, a1, a2, a3)\n\t\t\t\t\t\t\t? [v] : Curve.getMonoCurves(v, dir),\n\t\t\t\t\tres;\n\t\t\t\tfor (var i = 0, l = monoCurves.length; i < l; i++) {\n\t\t\t\t\tif (res = addWinding(monoCurves[i]))\n\t\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0, l = curvesList.length; i < l; i++) {\n\t\t\tvar curve = curvesList[i],\n\t\t\t\tpath = curve._path,\n\t\t\t\tv = curve.getValues(),\n\t\t\t\tres;\n\t\t\tif (!i || curvesList[i - 1]._path !== path) {\n\t\t\t\tvPrev = null;\n\t\t\t\tif (!path._closed) {\n\t\t\t\t\tvClose = Curve.getValues(\n\t\t\t\t\t\t\tpath.getLastCurve().getSegment2(),\n\t\t\t\t\t\t\tcurve.getSegment1(),\n\t\t\t\t\t\t\tnull, !closed);\n\t\t\t\t\tif (vClose[io] !== vClose[io + 6]) {\n\t\t\t\t\t\tvPrev = vClose;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!vPrev) {\n\t\t\t\t\tvPrev = v;\n\t\t\t\t\tvar prev = path.getLastCurve();\n\t\t\t\t\twhile (prev && prev !== curve) {\n\t\t\t\t\t\tvar v2 = prev.getValues();\n\t\t\t\t\t\tif (v2[io] !== v2[io + 6]) {\n\t\t\t\t\t\t\tvPrev = v2;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprev = prev.getPrevious();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (res = handleCurve(v))\n\t\t\t\treturn res;\n\n\t\t\tif (i + 1 === l || curvesList[i + 1]._path !== path) {\n\t\t\t\tif (vClose && (res = handleCurve(vClose)))\n\t\t\t\t\treturn res;\n\t\t\t\tif (onPath && !pathWindingL && !pathWindingR) {\n\t\t\t\t\tpathWindingL = pathWindingR = path.isClockwise(closed) ^ dir\n\t\t\t\t\t\t\t? 1 : -1;\n\t\t\t\t}\n\t\t\t\twindingL += pathWindingL;\n\t\t\t\twindingR += pathWindingR;\n\t\t\t\tpathWindingL = pathWindingR = 0;\n\t\t\t\tif (onPath) {\n\t\t\t\t\tonAnyPath = true;\n\t\t\t\t\tonPath = false;\n\t\t\t\t}\n\t\t\t\tvClose = null;\n\t\t\t}\n\t\t}\n\t\twindingL = abs(windingL);\n\t\twindingR = abs(windingR);\n\t\treturn {\n\t\t\twinding: max(windingL, windingR),\n\t\t\twindingL: windingL,\n\t\t\twindingR: windingR,\n\t\t\tquality: quality,\n\t\t\tonPath: onAnyPath\n\t\t};\n\t}\n\n\tfunction propagateWinding(segment, path1, path2, curveCollisionsMap,\n\t\t\toperator) {\n\t\tvar chain = [],\n\t\t\tstart = segment,\n\t\t\ttotalLength = 0,\n\t\t\twinding;\n\t\tdo {\n\t\t\tvar curve = segment.getCurve();\n\t\t\tif (curve) {\n\t\t\t\tvar length = curve.getLength();\n\t\t\t\tchain.push({ segment: segment, curve: curve, length: length });\n\t\t\t\ttotalLength += length;\n\t\t\t}\n\t\t\tsegment = segment.getNext();\n\t\t} while (segment && !segment._intersection && segment !== start);\n\t\tvar offsets = [0.5, 0.25, 0.75],\n\t\t\twinding = { winding: 0, quality: -1 },\n\t\t\ttMin = 1e-3,\n\t\t\ttMax = 1 - tMin;\n\t\tfor (var i = 0; i < offsets.length && winding.quality < 0.5; i++) {\n\t\t\tvar length = totalLength * offsets[i];\n\t\t\tfor (var j = 0, l = chain.length; j < l; j++) {\n\t\t\t\tvar entry = chain[j],\n\t\t\t\t\tcurveLength = entry.length;\n\t\t\t\tif (length <= curveLength) {\n\t\t\t\t\tvar curve = entry.curve,\n\t\t\t\t\t\tpath = curve._path,\n\t\t\t\t\t\tparent = path._parent,\n\t\t\t\t\t\toperand = parent instanceof CompoundPath ? parent : path,\n\t\t\t\t\t\tt = Numerical.clamp(curve.getTimeAt(length), tMin, tMax),\n\t\t\t\t\t\tpt = curve.getPointAtTime(t),\n\t\t\t\t\t\tdir = abs(curve.getTangentAtTime(t).y) < Math.SQRT1_2;\n\t\t\t\t\tvar wind = null;\n\t\t\t\t\tif (operator.subtract && path2) {\n\t\t\t\t\t\tvar otherPath = operand === path1 ? path2 : path1,\n\t\t\t\t\t\t\tpathWinding = otherPath._getWinding(pt, dir, true);\n\t\t\t\t\t\tif (operand === path1 && pathWinding.winding ||\n\t\t\t\t\t\t\toperand === path2 && !pathWinding.winding) {\n\t\t\t\t\t\t\tif (pathWinding.quality < 1) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twind = { winding: 0, quality: 1 };\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\twind =  wind || getWinding(\n\t\t\t\t\t\t\tpt, curveCollisionsMap[path._id][curve.getIndex()],\n\t\t\t\t\t\t\tdir, true);\n\t\t\t\t\tif (wind.quality > winding.quality)\n\t\t\t\t\t\twinding = wind;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlength -= curveLength;\n\t\t\t}\n\t\t}\n\t\tfor (var j = chain.length - 1; j >= 0; j--) {\n\t\t\tchain[j].segment._winding = winding;\n\t\t}\n\t}\n\n\tfunction tracePaths(segments, operator) {\n\t\tvar paths = [],\n\t\t\tstarts;\n\n\t\tfunction isValid(seg) {\n\t\t\tvar winding;\n\t\t\treturn !!(seg && !seg._visited && (!operator\n\t\t\t\t\t|| operator[(winding = seg._winding || {}).winding]\n\t\t\t\t\t\t&& !(operator.unite && winding.winding === 2\n\t\t\t\t\t\t\t&& winding.windingL && winding.windingR)));\n\t\t}\n\n\t\tfunction isStart(seg) {\n\t\t\tif (seg) {\n\t\t\t\tfor (var i = 0, l = starts.length; i < l; i++) {\n\t\t\t\t\tif (seg === starts[i])\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction visitPath(path) {\n\t\t\tvar segments = path._segments;\n\t\t\tfor (var i = 0, l = segments.length; i < l; i++) {\n\t\t\t\tsegments[i]._visited = true;\n\t\t\t}\n\t\t}\n\n\t\tfunction getCrossingSegments(segment, collectStarts) {\n\t\t\tvar inter = segment._intersection,\n\t\t\t\tstart = inter,\n\t\t\t\tcrossings = [];\n\t\t\tif (collectStarts)\n\t\t\t\tstarts = [segment];\n\n\t\t\tfunction collect(inter, end) {\n\t\t\t\twhile (inter && inter !== end) {\n\t\t\t\t\tvar other = inter._segment,\n\t\t\t\t\t\tpath = other && other._path;\n\t\t\t\t\tif (path) {\n\t\t\t\t\t\tvar next = other.getNext() || path.getFirstSegment(),\n\t\t\t\t\t\t\tnextInter = next._intersection;\n\t\t\t\t\t\tif (other !== segment && (isStart(other)\n\t\t\t\t\t\t\t|| isStart(next)\n\t\t\t\t\t\t\t|| next && (isValid(other) && (isValid(next)\n\t\t\t\t\t\t\t\t|| nextInter && isValid(nextInter._segment))))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcrossings.push(other);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (collectStarts)\n\t\t\t\t\t\t\tstarts.push(other);\n\t\t\t\t\t}\n\t\t\t\t\tinter = inter._next;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (inter) {\n\t\t\t\tcollect(inter);\n\t\t\t\twhile (inter && inter._previous)\n\t\t\t\t\tinter = inter._previous;\n\t\t\t\tcollect(inter, start);\n\t\t\t}\n\t\t\treturn crossings;\n\t\t}\n\n\t\tsegments.sort(function(seg1, seg2) {\n\t\t\tvar inter1 = seg1._intersection,\n\t\t\t\tinter2 = seg2._intersection,\n\t\t\t\tover1 = !!(inter1 && inter1._overlap),\n\t\t\t\tover2 = !!(inter2 && inter2._overlap),\n\t\t\t\tpath1 = seg1._path,\n\t\t\t\tpath2 = seg2._path;\n\t\t\treturn over1 ^ over2\n\t\t\t\t\t? over1 ? 1 : -1\n\t\t\t\t\t: !inter1 ^ !inter2\n\t\t\t\t\t\t? inter1 ? 1 : -1\n\t\t\t\t\t\t: path1 !== path2\n\t\t\t\t\t\t\t? path1._id - path2._id\n\t\t\t\t\t\t\t: seg1._index - seg2._index;\n\t\t});\n\n\t\tfor (var i = 0, l = segments.length; i < l; i++) {\n\t\t\tvar seg = segments[i],\n\t\t\t\tvalid = isValid(seg),\n\t\t\t\tpath = null,\n\t\t\t\tfinished = false,\n\t\t\t\tclosed = true,\n\t\t\t\tbranches = [],\n\t\t\t\tbranch,\n\t\t\t\tvisited,\n\t\t\t\thandleIn;\n\t\t\tif (valid && seg._path._overlapsOnly) {\n\t\t\t\tvar path1 = seg._path,\n\t\t\t\t\tpath2 = seg._intersection._segment._path;\n\t\t\t\tif (path1.compare(path2)) {\n\t\t\t\t\tif (path1.getArea())\n\t\t\t\t\t\tpaths.push(path1.clone(false));\n\t\t\t\t\tvisitPath(path1);\n\t\t\t\t\tvisitPath(path2);\n\t\t\t\t\tvalid = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (valid) {\n\t\t\t\tvar first = !path,\n\t\t\t\t\tcrossings = getCrossingSegments(seg, first),\n\t\t\t\t\tother = crossings.shift(),\n\t\t\t\t\tfinished = !first && (isStart(seg) || isStart(other)),\n\t\t\t\t\tcross = !finished && other;\n\t\t\t\tif (first) {\n\t\t\t\t\tpath = new Path(Item.NO_INSERT);\n\t\t\t\t\tbranch = null;\n\t\t\t\t}\n\t\t\t\tif (finished) {\n\t\t\t\t\tif (seg.isFirst() || seg.isLast())\n\t\t\t\t\t\tclosed = seg._path._closed;\n\t\t\t\t\tseg._visited = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (cross && branch) {\n\t\t\t\t\tbranches.push(branch);\n\t\t\t\t\tbranch = null;\n\t\t\t\t}\n\t\t\t\tif (!branch) {\n\t\t\t\t\tif (cross)\n\t\t\t\t\t\tcrossings.push(seg);\n\t\t\t\t\tbranch = {\n\t\t\t\t\t\tstart: path._segments.length,\n\t\t\t\t\t\tcrossings: crossings,\n\t\t\t\t\t\tvisited: visited = [],\n\t\t\t\t\t\thandleIn: handleIn\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (cross)\n\t\t\t\t\tseg = other;\n\t\t\t\tif (!isValid(seg)) {\n\t\t\t\t\tpath.removeSegments(branch.start);\n\t\t\t\t\tfor (var j = 0, k = visited.length; j < k; j++) {\n\t\t\t\t\t\tvisited[j]._visited = false;\n\t\t\t\t\t}\n\t\t\t\t\tvisited.length = 0;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tseg = branch && branch.crossings.shift();\n\t\t\t\t\t\tif (!seg || !seg._path) {\n\t\t\t\t\t\t\tseg = null;\n\t\t\t\t\t\t\tbranch = branches.pop();\n\t\t\t\t\t\t\tif (branch) {\n\t\t\t\t\t\t\t\tvisited = branch.visited;\n\t\t\t\t\t\t\t\thandleIn = branch.handleIn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} while (branch && !isValid(seg));\n\t\t\t\t\tif (!seg)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tvar next = seg.getNext();\n\t\t\t\tpath.add(new Segment(seg._point, handleIn,\n\t\t\t\t\t\tnext && seg._handleOut));\n\t\t\t\tseg._visited = true;\n\t\t\t\tvisited.push(seg);\n\t\t\t\tseg = next || seg._path.getFirstSegment();\n\t\t\t\thandleIn = next && next._handleIn;\n\t\t\t}\n\t\t\tif (finished) {\n\t\t\t\tif (closed) {\n\t\t\t\t\tpath.getFirstSegment().setHandleIn(handleIn);\n\t\t\t\t\tpath.setClosed(closed);\n\t\t\t\t}\n\t\t\t\tif (path.getArea() !== 0) {\n\t\t\t\t\tpaths.push(path);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn paths;\n\t}\n\n\treturn {\n\t\t_getWinding: function(point, dir, closed) {\n\t\t\treturn getWinding(point, this.getCurves(), dir, closed);\n\t\t},\n\n\t\tunite: function(path, options) {\n\t\t\treturn traceBoolean(this, path, 'unite', options);\n\t\t},\n\n\t\tintersect: function(path, options) {\n\t\t\treturn traceBoolean(this, path, 'intersect', options);\n\t\t},\n\n\t\tsubtract: function(path, options) {\n\t\t\treturn traceBoolean(this, path, 'subtract', options);\n\t\t},\n\n\t\texclude: function(path, options) {\n\t\t\treturn traceBoolean(this, path, 'exclude', options);\n\t\t},\n\n\t\tdivide: function(path, options) {\n\t\t\treturn options && (options.trace == false || options.stroke)\n\t\t\t\t\t? splitBoolean(this, path, 'divide')\n\t\t\t\t\t: createResult([\n\t\t\t\t\t\tthis.subtract(path, options),\n\t\t\t\t\t\tthis.intersect(path, options)\n\t\t\t\t\t], true, this, path, options);\n\t\t},\n\n\t\tresolveCrossings: function() {\n\t\t\tvar children = this._children,\n\t\t\t\tpaths = children || [this];\n\n\t\t\tfunction hasOverlap(seg, path) {\n\t\t\t\tvar inter = seg && seg._intersection;\n\t\t\t\treturn inter && inter._overlap && inter._path === path;\n\t\t\t}\n\n\t\t\tvar hasOverlaps = false,\n\t\t\t\thasCrossings = false,\n\t\t\t\tintersections = this.getIntersections(null, function(inter) {\n\t\t\t\t\treturn inter.hasOverlap() && (hasOverlaps = true) ||\n\t\t\t\t\t\t\tinter.isCrossing() && (hasCrossings = true);\n\t\t\t\t}),\n\t\t\t\tclearCurves = hasOverlaps && hasCrossings && [];\n\t\t\tintersections = CurveLocation.expand(intersections);\n\t\t\tif (hasOverlaps) {\n\t\t\t\tvar overlaps = divideLocations(intersections, function(inter) {\n\t\t\t\t\treturn inter.hasOverlap();\n\t\t\t\t}, clearCurves);\n\t\t\t\tfor (var i = overlaps.length - 1; i >= 0; i--) {\n\t\t\t\t\tvar overlap = overlaps[i],\n\t\t\t\t\t\tpath = overlap._path,\n\t\t\t\t\t\tseg = overlap._segment,\n\t\t\t\t\t\tprev = seg.getPrevious(),\n\t\t\t\t\t\tnext = seg.getNext();\n\t\t\t\t\tif (hasOverlap(prev, path) && hasOverlap(next, path)) {\n\t\t\t\t\t\tseg.remove();\n\t\t\t\t\t\tprev._handleOut._set(0, 0);\n\t\t\t\t\t\tnext._handleIn._set(0, 0);\n\t\t\t\t\t\tif (prev !== seg && !prev.getCurve().hasLength()) {\n\t\t\t\t\t\t\tnext._handleIn.set(prev._handleIn);\n\t\t\t\t\t\t\tprev.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (hasCrossings) {\n\t\t\t\tdivideLocations(intersections, hasOverlaps && function(inter) {\n\t\t\t\t\tvar curve1 = inter.getCurve(),\n\t\t\t\t\t\tseg1 = inter.getSegment(),\n\t\t\t\t\t\tother = inter._intersection,\n\t\t\t\t\t\tcurve2 = other._curve,\n\t\t\t\t\t\tseg2 = other._segment;\n\t\t\t\t\tif (curve1 && curve2 && curve1._path && curve2._path)\n\t\t\t\t\t\treturn true;\n\t\t\t\t\tif (seg1)\n\t\t\t\t\t\tseg1._intersection = null;\n\t\t\t\t\tif (seg2)\n\t\t\t\t\t\tseg2._intersection = null;\n\t\t\t\t}, clearCurves);\n\t\t\t\tif (clearCurves)\n\t\t\t\t\tclearCurveHandles(clearCurves);\n\t\t\t\tpaths = tracePaths(Base.each(paths, function(path) {\n\t\t\t\t\tBase.push(this, path._segments);\n\t\t\t\t}, []));\n\t\t\t}\n\t\t\tvar length = paths.length,\n\t\t\t\titem;\n\t\t\tif (length > 1 && children) {\n\t\t\t\tif (paths !== children)\n\t\t\t\t\tthis.setChildren(paths);\n\t\t\t\titem = this;\n\t\t\t} else if (length === 1 && !children) {\n\t\t\t\tif (paths[0] !== this)\n\t\t\t\t\tthis.setSegments(paths[0].removeSegments());\n\t\t\t\titem = this;\n\t\t\t}\n\t\t\tif (!item) {\n\t\t\t\titem = new CompoundPath(Item.NO_INSERT);\n\t\t\t\titem.addChildren(paths);\n\t\t\t\titem = item.reduce();\n\t\t\t\titem.copyAttributes(this);\n\t\t\t\tthis.replaceWith(item);\n\t\t\t}\n\t\t\treturn item;\n\t\t},\n\n\t\treorient: function(nonZero, clockwise) {\n\t\t\tvar children = this._children;\n\t\t\tif (children && children.length) {\n\t\t\t\tthis.setChildren(reorientPaths(this.removeChildren(),\n\t\t\t\t\t\tfunction(w) {\n\t\t\t\t\t\t\treturn !!(nonZero ? w : w & 1);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tclockwise));\n\t\t\t} else if (clockwise !== undefined) {\n\t\t\t\tthis.setClockwise(clockwise);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tgetInteriorPoint: function() {\n\t\t\tvar bounds = this.getBounds(),\n\t\t\t\tpoint = bounds.getCenter(true);\n\t\t\tif (!this.contains(point)) {\n\t\t\t\tvar curves = this.getCurves(),\n\t\t\t\t\ty = point.y,\n\t\t\t\t\tintercepts = [],\n\t\t\t\t\troots = [];\n\t\t\t\tfor (var i = 0, l = curves.length; i < l; i++) {\n\t\t\t\t\tvar v = curves[i].getValues(),\n\t\t\t\t\t\to0 = v[1],\n\t\t\t\t\t\to1 = v[3],\n\t\t\t\t\t\to2 = v[5],\n\t\t\t\t\t\to3 = v[7];\n\t\t\t\t\tif (y >= min(o0, o1, o2, o3) && y <= max(o0, o1, o2, o3)) {\n\t\t\t\t\t\tvar monoCurves = Curve.getMonoCurves(v);\n\t\t\t\t\t\tfor (var j = 0, m = monoCurves.length; j < m; j++) {\n\t\t\t\t\t\t\tvar mv = monoCurves[j],\n\t\t\t\t\t\t\t\tmo0 = mv[1],\n\t\t\t\t\t\t\t\tmo3 = mv[7];\n\t\t\t\t\t\t\tif ((mo0 !== mo3) &&\n\t\t\t\t\t\t\t\t(y >= mo0 && y <= mo3 || y >= mo3 && y <= mo0)){\n\t\t\t\t\t\t\t\tvar x = y === mo0 ? mv[0]\n\t\t\t\t\t\t\t\t\t: y === mo3 ? mv[6]\n\t\t\t\t\t\t\t\t\t: Curve.solveCubic(mv, 1, y, roots, 0, 1)\n\t\t\t\t\t\t\t\t\t\t=== 1\n\t\t\t\t\t\t\t\t\t\t? Curve.getPoint(mv, roots[0]).x\n\t\t\t\t\t\t\t\t\t\t: (mv[0] + mv[6]) / 2;\n\t\t\t\t\t\t\t\tintercepts.push(x);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (intercepts.length > 1) {\n\t\t\t\t\tintercepts.sort(function(a, b) { return a - b; });\n\t\t\t\t\tpoint.x = (intercepts[0] + intercepts[1]) / 2;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn point;\n\t\t}\n\t};\n});\n\nvar PathFlattener = Base.extend({\n\t_class: 'PathFlattener',\n\n\tinitialize: function(path, flatness, maxRecursion, ignoreStraight, matrix) {\n\t\tvar curves = [],\n\t\t\tparts = [],\n\t\t\tlength = 0,\n\t\t\tminSpan = 1 / (maxRecursion || 32),\n\t\t\tsegments = path._segments,\n\t\t\tsegment1 = segments[0],\n\t\t\tsegment2;\n\n\t\tfunction addCurve(segment1, segment2) {\n\t\t\tvar curve = Curve.getValues(segment1, segment2, matrix);\n\t\t\tcurves.push(curve);\n\t\t\tcomputeParts(curve, segment1._index, 0, 1);\n\t\t}\n\n\t\tfunction computeParts(curve, index, t1, t2) {\n\t\t\tif ((t2 - t1) > minSpan\n\t\t\t\t\t&& !(ignoreStraight && Curve.isStraight(curve))\n\t\t\t\t\t&& !Curve.isFlatEnough(curve, flatness || 0.25)) {\n\t\t\t\tvar halves = Curve.subdivide(curve, 0.5),\n\t\t\t\t\ttMid = (t1 + t2) / 2;\n\t\t\t\tcomputeParts(halves[0], index, t1, tMid);\n\t\t\t\tcomputeParts(halves[1], index, tMid, t2);\n\t\t\t} else {\n\t\t\t\tvar dx = curve[6] - curve[0],\n\t\t\t\t\tdy = curve[7] - curve[1],\n\t\t\t\t\tdist = Math.sqrt(dx * dx + dy * dy);\n\t\t\t\tif (dist > 0) {\n\t\t\t\t\tlength += dist;\n\t\t\t\t\tparts.push({\n\t\t\t\t\t\toffset: length,\n\t\t\t\t\t\tcurve: curve,\n\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\ttime: t2,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 1, l = segments.length; i < l; i++) {\n\t\t\tsegment2 = segments[i];\n\t\t\taddCurve(segment1, segment2);\n\t\t\tsegment1 = segment2;\n\t\t}\n\t\tif (path._closed)\n\t\t\taddCurve(segment2 || segment1, segments[0]);\n\t\tthis.curves = curves;\n\t\tthis.parts = parts;\n\t\tthis.length = length;\n\t\tthis.index = 0;\n\t},\n\n\t_get: function(offset) {\n\t\tvar parts = this.parts,\n\t\t\tlength = parts.length,\n\t\t\tstart,\n\t\t\ti, j = this.index;\n\t\tfor (;;) {\n\t\t\ti = j;\n\t\t\tif (!j || parts[--j].offset < offset)\n\t\t\t\tbreak;\n\t\t}\n\t\tfor (; i < length; i++) {\n\t\t\tvar part = parts[i];\n\t\t\tif (part.offset >= offset) {\n\t\t\t\tthis.index = i;\n\t\t\t\tvar prev = parts[i - 1],\n\t\t\t\t\tprevTime = prev && prev.index === part.index ? prev.time : 0,\n\t\t\t\t\tprevOffset = prev ? prev.offset : 0;\n\t\t\t\treturn {\n\t\t\t\t\tindex: part.index,\n\t\t\t\t\ttime: prevTime + (part.time - prevTime)\n\t\t\t\t\t\t* (offset - prevOffset) / (part.offset - prevOffset)\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tindex: parts[length - 1].index,\n\t\t\ttime: 1\n\t\t};\n\t},\n\n\tdrawPart: function(ctx, from, to) {\n\t\tvar start = this._get(from),\n\t\t\tend = this._get(to);\n\t\tfor (var i = start.index, l = end.index; i <= l; i++) {\n\t\t\tvar curve = Curve.getPart(this.curves[i],\n\t\t\t\t\ti === start.index ? start.time : 0,\n\t\t\t\t\ti === end.index ? end.time : 1);\n\t\t\tif (i === start.index)\n\t\t\t\tctx.moveTo(curve[0], curve[1]);\n\t\t\tctx.bezierCurveTo.apply(ctx, curve.slice(2));\n\t\t}\n\t}\n}, Base.each(Curve._evaluateMethods,\n\tfunction(name) {\n\t\tthis[name + 'At'] = function(offset) {\n\t\t\tvar param = this._get(offset);\n\t\t\treturn Curve[name](this.curves[param.index], param.time);\n\t\t};\n\t}, {})\n);\n\nvar PathFitter = Base.extend({\n\tinitialize: function(path) {\n\t\tvar points = this.points = [],\n\t\t\tsegments = path._segments,\n\t\t\tclosed = path._closed;\n\t\tfor (var i = 0, prev, l = segments.length; i < l; i++) {\n\t\t\tvar point = segments[i].point;\n\t\t\tif (!prev || !prev.equals(point)) {\n\t\t\t\tpoints.push(prev = point.clone());\n\t\t\t}\n\t\t}\n\t\tif (closed) {\n\t\t\tpoints.unshift(points[points.length - 1]);\n\t\t\tpoints.push(points[1]);\n\t\t}\n\t\tthis.closed = closed;\n\t},\n\n\tfit: function(error) {\n\t\tvar points = this.points,\n\t\t\tlength = points.length,\n\t\t\tsegments = null;\n\t\tif (length > 0) {\n\t\t\tsegments = [new Segment(points[0])];\n\t\t\tif (length > 1) {\n\t\t\t\tthis.fitCubic(segments, error, 0, length - 1,\n\t\t\t\t\t\tpoints[1].subtract(points[0]),\n\t\t\t\t\t\tpoints[length - 2].subtract(points[length - 1]));\n\t\t\t\tif (this.closed) {\n\t\t\t\t\tsegments.shift();\n\t\t\t\t\tsegments.pop();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn segments;\n\t},\n\n\tfitCubic: function(segments, error, first, last, tan1, tan2) {\n\t\tvar points = this.points;\n\t\tif (last - first === 1) {\n\t\t\tvar pt1 = points[first],\n\t\t\t\tpt2 = points[last],\n\t\t\t\tdist = pt1.getDistance(pt2) / 3;\n\t\t\tthis.addCurve(segments, [pt1, pt1.add(tan1.normalize(dist)),\n\t\t\t\t\tpt2.add(tan2.normalize(dist)), pt2]);\n\t\t\treturn;\n\t\t}\n\t\tvar uPrime = this.chordLengthParameterize(first, last),\n\t\t\tmaxError = Math.max(error, error * error),\n\t\t\tsplit,\n\t\t\tparametersInOrder = true;\n\t\tfor (var i = 0; i <= 4; i++) {\n\t\t\tvar curve = this.generateBezier(first, last, uPrime, tan1, tan2);\n\t\t\tvar max = this.findMaxError(first, last, curve, uPrime);\n\t\t\tif (max.error < error && parametersInOrder) {\n\t\t\t\tthis.addCurve(segments, curve);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsplit = max.index;\n\t\t\tif (max.error >= maxError)\n\t\t\t\tbreak;\n\t\t\tparametersInOrder = this.reparameterize(first, last, uPrime, curve);\n\t\t\tmaxError = max.error;\n\t\t}\n\t\tvar tanCenter = points[split - 1].subtract(points[split + 1]);\n\t\tthis.fitCubic(segments, error, first, split, tan1, tanCenter);\n\t\tthis.fitCubic(segments, error, split, last, tanCenter.negate(), tan2);\n\t},\n\n\taddCurve: function(segments, curve) {\n\t\tvar prev = segments[segments.length - 1];\n\t\tprev.setHandleOut(curve[1].subtract(curve[0]));\n\t\tsegments.push(new Segment(curve[3], curve[2].subtract(curve[3])));\n\t},\n\n\tgenerateBezier: function(first, last, uPrime, tan1, tan2) {\n\t\tvar epsilon = 1e-12,\n\t\t\tabs = Math.abs,\n\t\t\tpoints = this.points,\n\t\t\tpt1 = points[first],\n\t\t\tpt2 = points[last],\n\t\t\tC = [[0, 0], [0, 0]],\n\t\t\tX = [0, 0];\n\n\t\tfor (var i = 0, l = last - first + 1; i < l; i++) {\n\t\t\tvar u = uPrime[i],\n\t\t\t\tt = 1 - u,\n\t\t\t\tb = 3 * u * t,\n\t\t\t\tb0 = t * t * t,\n\t\t\t\tb1 = b * t,\n\t\t\t\tb2 = b * u,\n\t\t\t\tb3 = u * u * u,\n\t\t\t\ta1 = tan1.normalize(b1),\n\t\t\t\ta2 = tan2.normalize(b2),\n\t\t\t\ttmp = points[first + i]\n\t\t\t\t\t.subtract(pt1.multiply(b0 + b1))\n\t\t\t\t\t.subtract(pt2.multiply(b2 + b3));\n\t\t\tC[0][0] += a1.dot(a1);\n\t\t\tC[0][1] += a1.dot(a2);\n\t\t\tC[1][0] = C[0][1];\n\t\t\tC[1][1] += a2.dot(a2);\n\t\t\tX[0] += a1.dot(tmp);\n\t\t\tX[1] += a2.dot(tmp);\n\t\t}\n\n\t\tvar detC0C1 = C[0][0] * C[1][1] - C[1][0] * C[0][1],\n\t\t\talpha1,\n\t\t\talpha2;\n\t\tif (abs(detC0C1) > epsilon) {\n\t\t\tvar detC0X = C[0][0] * X[1]    - C[1][0] * X[0],\n\t\t\t\tdetXC1 = X[0]    * C[1][1] - X[1]    * C[0][1];\n\t\t\talpha1 = detXC1 / detC0C1;\n\t\t\talpha2 = detC0X / detC0C1;\n\t\t} else {\n\t\t\tvar c0 = C[0][0] + C[0][1],\n\t\t\t\tc1 = C[1][0] + C[1][1];\n\t\t\talpha1 = alpha2 = abs(c0) > epsilon ? X[0] / c0\n\t\t\t\t\t\t\t: abs(c1) > epsilon ? X[1] / c1\n\t\t\t\t\t\t\t: 0;\n\t\t}\n\n\t\tvar segLength = pt2.getDistance(pt1),\n\t\t\teps = epsilon * segLength,\n\t\t\thandle1,\n\t\t\thandle2;\n\t\tif (alpha1 < eps || alpha2 < eps) {\n\t\t\talpha1 = alpha2 = segLength / 3;\n\t\t} else {\n\t\t\tvar line = pt2.subtract(pt1);\n\t\t\thandle1 = tan1.normalize(alpha1);\n\t\t\thandle2 = tan2.normalize(alpha2);\n\t\t\tif (handle1.dot(line) - handle2.dot(line) > segLength * segLength) {\n\t\t\t\talpha1 = alpha2 = segLength / 3;\n\t\t\t\thandle1 = handle2 = null;\n\t\t\t}\n\t\t}\n\n\t\treturn [pt1,\n\t\t\t\tpt1.add(handle1 || tan1.normalize(alpha1)),\n\t\t\t\tpt2.add(handle2 || tan2.normalize(alpha2)),\n\t\t\t\tpt2];\n\t},\n\n\treparameterize: function(first, last, u, curve) {\n\t\tfor (var i = first; i <= last; i++) {\n\t\t\tu[i - first] = this.findRoot(curve, this.points[i], u[i - first]);\n\t\t}\n\t\tfor (var i = 1, l = u.length; i < l; i++) {\n\t\t\tif (u[i] <= u[i - 1])\n\t\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tfindRoot: function(curve, point, u) {\n\t\tvar curve1 = [],\n\t\t\tcurve2 = [];\n\t\tfor (var i = 0; i <= 2; i++) {\n\t\t\tcurve1[i] = curve[i + 1].subtract(curve[i]).multiply(3);\n\t\t}\n\t\tfor (var i = 0; i <= 1; i++) {\n\t\t\tcurve2[i] = curve1[i + 1].subtract(curve1[i]).multiply(2);\n\t\t}\n\t\tvar pt = this.evaluate(3, curve, u),\n\t\t\tpt1 = this.evaluate(2, curve1, u),\n\t\t\tpt2 = this.evaluate(1, curve2, u),\n\t\t\tdiff = pt.subtract(point),\n\t\t\tdf = pt1.dot(pt1) + diff.dot(pt2);\n\t\treturn Numerical.isMachineZero(df) ? u : u - diff.dot(pt1) / df;\n\t},\n\n\tevaluate: function(degree, curve, t) {\n\t\tvar tmp = curve.slice();\n\t\tfor (var i = 1; i <= degree; i++) {\n\t\t\tfor (var j = 0; j <= degree - i; j++) {\n\t\t\t\ttmp[j] = tmp[j].multiply(1 - t).add(tmp[j + 1].multiply(t));\n\t\t\t}\n\t\t}\n\t\treturn tmp[0];\n\t},\n\n\tchordLengthParameterize: function(first, last) {\n\t\tvar u = [0];\n\t\tfor (var i = first + 1; i <= last; i++) {\n\t\t\tu[i - first] = u[i - first - 1]\n\t\t\t\t\t+ this.points[i].getDistance(this.points[i - 1]);\n\t\t}\n\t\tfor (var i = 1, m = last - first; i <= m; i++) {\n\t\t\tu[i] /= u[m];\n\t\t}\n\t\treturn u;\n\t},\n\n\tfindMaxError: function(first, last, curve, u) {\n\t\tvar index = Math.floor((last - first + 1) / 2),\n\t\t\tmaxDist = 0;\n\t\tfor (var i = first + 1; i < last; i++) {\n\t\t\tvar P = this.evaluate(3, curve, u[i - first]);\n\t\t\tvar v = P.subtract(this.points[i]);\n\t\t\tvar dist = v.x * v.x + v.y * v.y;\n\t\t\tif (dist >= maxDist) {\n\t\t\t\tmaxDist = dist;\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\terror: maxDist,\n\t\t\tindex: index\n\t\t};\n\t}\n});\n\nvar TextItem = Item.extend({\n\t_class: 'TextItem',\n\t_applyMatrix: false,\n\t_canApplyMatrix: false,\n\t_serializeFields: {\n\t\tcontent: null\n\t},\n\t_boundsOptions: { stroke: false, handle: false },\n\n\tinitialize: function TextItem(arg) {\n\t\tthis._content = '';\n\t\tthis._lines = [];\n\t\tvar hasProps = arg && Base.isPlainObject(arg)\n\t\t\t\t&& arg.x === undefined && arg.y === undefined;\n\t\tthis._initialize(hasProps && arg, !hasProps && Point.read(arguments));\n\t},\n\n\t_equals: function(item) {\n\t\treturn this._content === item._content;\n\t},\n\n\tcopyContent: function(source) {\n\t\tthis.setContent(source._content);\n\t},\n\n\tgetContent: function() {\n\t\treturn this._content;\n\t},\n\n\tsetContent: function(content) {\n\t\tthis._content = '' + content;\n\t\tthis._lines = this._content.split(/\\r\\n|\\n|\\r/mg);\n\t\tthis._changed(521);\n\t},\n\n\tisEmpty: function() {\n\t\treturn !this._content;\n\t},\n\n\tgetCharacterStyle: '#getStyle',\n\tsetCharacterStyle: '#setStyle',\n\n\tgetParagraphStyle: '#getStyle',\n\tsetParagraphStyle: '#setStyle'\n});\n\nvar PointText = TextItem.extend({\n\t_class: 'PointText',\n\n\tinitialize: function PointText() {\n\t\tTextItem.apply(this, arguments);\n\t},\n\n\tgetPoint: function() {\n\t\tvar point = this._matrix.getTranslation();\n\t\treturn new LinkedPoint(point.x, point.y, this, 'setPoint');\n\t},\n\n\tsetPoint: function() {\n\t\tvar point = Point.read(arguments);\n\t\tthis.translate(point.subtract(this._matrix.getTranslation()));\n\t},\n\n\t_draw: function(ctx, param, viewMatrix) {\n\t\tif (!this._content)\n\t\t\treturn;\n\t\tthis._setStyles(ctx, param, viewMatrix);\n\t\tvar lines = this._lines,\n\t\t\tstyle = this._style,\n\t\t\thasFill = style.hasFill(),\n\t\t\thasStroke = style.hasStroke(),\n\t\t\tleading = style.getLeading(),\n\t\t\tshadowColor = ctx.shadowColor;\n\t\tctx.font = style.getFontStyle();\n\t\tctx.textAlign = style.getJustification();\n\t\tfor (var i = 0, l = lines.length; i < l; i++) {\n\t\t\tctx.shadowColor = shadowColor;\n\t\t\tvar line = lines[i];\n\t\t\tif (hasFill) {\n\t\t\t\tctx.fillText(line, 0, 0);\n\t\t\t\tctx.shadowColor = 'rgba(0,0,0,0)';\n\t\t\t}\n\t\t\tif (hasStroke)\n\t\t\t\tctx.strokeText(line, 0, 0);\n\t\t\tctx.translate(0, leading);\n\t\t}\n\t},\n\n\t_getBounds: function(matrix, options) {\n\t\tvar rect = options.drawnTextBounds ? this._getDrawnTextSize() : this._getMeasuredTextSize();\n\t\treturn matrix ? matrix._transformBounds(rect, rect) : rect;\n\t},\n\n\t_getMeasuredTextSize: function() {\n\t\tvar style = this._style,\n\t\t\tlines = this._lines,\n\t\t\tnumLines = lines.length,\n\t\t\tjustification = style.getJustification(),\n\t\t\tleading = style.getLeading(),\n\t\t\twidth = this.getView().getTextWidth(style.getFontStyle(), lines),\n\t\t\tx = 0;\n\t\tif (justification !== 'left')\n\t\t\tx -= width / (justification === 'center' ? 2: 1);\n\t\treturn new Rectangle(x,\n\t\t\t\t\tnumLines ? - 0.75 * leading : 0,\n\t\t\t\t\twidth, numLines * leading);\n\t},\n\n\t_getDrawnTextSize: function() {\n\t\tvar style = this._style;\n\t\tvar lines = this._lines;\n\t\tvar numLines = lines.length;\n\t\tvar leading = style.getLeading();\n\t\tvar justification = style.getJustification();\n\n\t\tvar svg = SvgElement.create('svg', {\n\t\t\t\t\tversion: '1.1',\n\t\t\t\t\txmlns: SvgElement.svg\n\t\t\t\t});\n\t\tvar node = SvgElement.create('text');\n\t\tnode.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\t\tsvg.appendChild(node);\n\t\tfor (var i = 0; i < numLines; i++) {\n\t\t\tvar tspanNode = SvgElement.create('tspan', {\n\t\t\t\tx: '0',\n\t\t\t\tdy: i === 0 ? '0' : leading + 'px'\n\t\t\t});\n\t\t\ttspanNode.textContent = this._lines[i];\n\t\t\tnode.appendChild(tspanNode);\n\t\t}\n\n\t\tvar element = document.createElement('span');\n\t\telement.style.visibility = ('hidden');\n\t\telement.style.whiteSpace = 'pre';\n\t\telement.style.fontSize = this.fontSize + 'px';\n\t\telement.style.fontFamily = this.font;\n\t\telement.style.lineHeight = this.leading / this.fontSize;\n\n\t\tvar bbox;\n\t\ttry {\n\t\t\telement.appendChild(svg);\n\t\t\tdocument.body.appendChild(element);\n\t\t\tbbox = svg.getBBox();\n\t\t} finally {\n\t\t\tdocument.body.removeChild(element);\n\t\t}\n\n\t\tvar halfStrokeWidth = this.strokeWidth / 2;\n\t\tvar width = bbox.width + (halfStrokeWidth * 2);\n\t\tvar height = bbox.height + (halfStrokeWidth * 2);\n\t\tvar x = bbox.x - halfStrokeWidth;\n\t\tvar y = bbox.y - halfStrokeWidth;\n\n\t\tif (justification !== 'left') {\n\t\t\tvar eltWidth = this.getView().getTextWidth(style.getFontStyle(), lines);\n\t\t\tx -= eltWidth / (justification === 'center' ? 2: 1);\n\t\t}\n\n\t\treturn new Rectangle(x, y, width + 1, Math.max(height, numLines * leading));\n\t},\n\n\t_hitTestSelf: function(point, options) {\n\t\tif (options.fill && (this.hasFill() || options.hitUnfilledPaths) && this._contains(point))\n\t\t\treturn new HitResult('fill', this);\n\t}\n});\n\nvar Color = Base.extend(new function() {\n\tvar types = {\n\t\tgray: ['gray'],\n\t\trgb: ['red', 'green', 'blue'],\n\t\thsb: ['hue', 'saturation', 'brightness'],\n\t\thsl: ['hue', 'saturation', 'lightness'],\n\t\tgradient: ['gradient', 'origin', 'destination', 'highlight']\n\t};\n\n\tvar componentParsers = {},\n\t\tnamedColors = {\n\t\t\ttransparent: [0, 0, 0, 0]\n\t\t},\n\t\tcolorCtx;\n\n\tfunction fromCSS(string) {\n\t\tvar match = string.match(\n\t\t\t\t/^#([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})?$/i\n\t\t\t) || string.match(\n\t\t\t\t/^#([\\da-f])([\\da-f])([\\da-f])([\\da-f])?$/i\n\t\t\t),\n\t\t\ttype = 'rgb',\n\t\t\tcomponents;\n\t\tif (match) {\n\t\t\tvar amount = match[4] ? 4 : 3;\n\t\t\tcomponents = new Array(amount);\n\t\t\tfor (var i = 0; i < amount; i++) {\n\t\t\t\tvar value = match[i + 1];\n\t\t\t\tcomponents[i] = parseInt(value.length == 1\n\t\t\t\t\t\t? value + value : value, 16) / 255;\n\t\t\t}\n\t\t} else if (match = string.match(/^(rgb|hsl)a?\\((.*)\\)$/)) {\n\t\t\ttype = match[1];\n\t\t\tcomponents = match[2].trim().split(/[,\\s]+/g);\n\t\t\tvar isHSL = type === 'hsl';\n\t\t\tfor (var i = 0, l = Math.min(components.length, 4); i < l; i++) {\n\t\t\t\tvar component = components[i];\n\t\t\t\tvar value = parseFloat(component);\n\t\t\t\tif (isHSL) {\n\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\tvar unit = component.match(/([a-z]*)$/)[1];\n\t\t\t\t\t\tvalue *= ({\n\t\t\t\t\t\t\tturn: 360,\n\t\t\t\t\t\t\trad: 180 / Math.PI,\n\t\t\t\t\t\t\tgrad: 0.9\n\t\t\t\t\t\t}[unit] || 1);\n\t\t\t\t\t} else if (i < 3) {\n\t\t\t\t\t\tvalue /= 100;\n\t\t\t\t\t}\n\t\t\t\t} else if (i < 3) {\n\t\t\t\t\tvalue /= /%$/.test(component) ? 100 : 255;\n\t\t\t\t}\n\t\t\t\tcomponents[i] = value;\n\t\t\t}\n\t\t} else {\n\t\t\tvar color = namedColors[string];\n\t\t\tif (!color) {\n\t\t\t\tif (window) {\n\t\t\t\t\tif (!colorCtx) {\n\t\t\t\t\t\tcolorCtx = CanvasProvider.getContext(1, 1);\n\t\t\t\t\t\tcolorCtx.globalCompositeOperation = 'copy';\n\t\t\t\t\t}\n\t\t\t\t\tcolorCtx.fillStyle = 'rgba(0,0,0,0)';\n\t\t\t\t\tcolorCtx.fillStyle = string;\n\t\t\t\t\tcolorCtx.fillRect(0, 0, 1, 1);\n\t\t\t\t\tvar data = colorCtx.getImageData(0, 0, 1, 1).data;\n\t\t\t\t\tcolor = namedColors[string] = [\n\t\t\t\t\t\tdata[0] / 255,\n\t\t\t\t\t\tdata[1] / 255,\n\t\t\t\t\t\tdata[2] / 255\n\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\tcolor = [0, 0, 0];\n\t\t\t\t}\n\t\t\t}\n\t\t\tcomponents = color.slice();\n\t\t}\n\t\treturn [type, components];\n\t}\n\n\tvar hsbIndices = [\n\t\t[0, 3, 1],\n\t\t[2, 0, 1],\n\t\t[1, 0, 3],\n\t\t[1, 2, 0],\n\t\t[3, 1, 0],\n\t\t[0, 1, 2]\n\t];\n\n\tvar converters = {\n\t\t'rgb-hsb': function(r, g, b) {\n\t\t\tvar max = Math.max(r, g, b),\n\t\t\t\tmin = Math.min(r, g, b),\n\t\t\t\tdelta = max - min,\n\t\t\t\th = delta === 0 ? 0\n\t\t\t\t\t:   ( max == r ? (g - b) / delta + (g < b ? 6 : 0)\n\t\t\t\t\t\t: max == g ? (b - r) / delta + 2\n\t\t\t\t\t\t:            (r - g) / delta + 4) * 60;\n\t\t\treturn [h, max === 0 ? 0 : delta / max, max];\n\t\t},\n\n\t\t'hsb-rgb': function(h, s, b) {\n\t\t\th = (((h / 60) % 6) + 6) % 6;\n\t\t\tvar i = Math.floor(h),\n\t\t\t\tf = h - i,\n\t\t\t\ti = hsbIndices[i],\n\t\t\t\tv = [\n\t\t\t\t\tb,\n\t\t\t\t\tb * (1 - s),\n\t\t\t\t\tb * (1 - s * f),\n\t\t\t\t\tb * (1 - s * (1 - f))\n\t\t\t\t];\n\t\t\treturn [v[i[0]], v[i[1]], v[i[2]]];\n\t\t},\n\n\t\t'rgb-hsl': function(r, g, b) {\n\t\t\tvar max = Math.max(r, g, b),\n\t\t\t\tmin = Math.min(r, g, b),\n\t\t\t\tdelta = max - min,\n\t\t\t\tachromatic = delta === 0,\n\t\t\t\th = achromatic ? 0\n\t\t\t\t\t:   ( max == r ? (g - b) / delta + (g < b ? 6 : 0)\n\t\t\t\t\t\t: max == g ? (b - r) / delta + 2\n\t\t\t\t\t\t:            (r - g) / delta + 4) * 60,\n\t\t\t\tl = (max + min) / 2,\n\t\t\t\ts = achromatic ? 0 : l < 0.5\n\t\t\t\t\t\t? delta / (max + min)\n\t\t\t\t\t\t: delta / (2 - max - min);\n\t\t\treturn [h, s, l];\n\t\t},\n\n\t\t'hsl-rgb': function(h, s, l) {\n\t\t\th = (((h / 360) % 1) + 1) % 1;\n\t\t\tif (s === 0)\n\t\t\t\treturn [l, l, l];\n\t\t\tvar t3s = [ h + 1 / 3, h, h - 1 / 3 ],\n\t\t\t\tt2 = l < 0.5 ? l * (1 + s) : l + s - l * s,\n\t\t\t\tt1 = 2 * l - t2,\n\t\t\t\tc = [];\n\t\t\tfor (var i = 0; i < 3; i++) {\n\t\t\t\tvar t3 = t3s[i];\n\t\t\t\tif (t3 < 0) t3 += 1;\n\t\t\t\tif (t3 > 1) t3 -= 1;\n\t\t\t\tc[i] = 6 * t3 < 1\n\t\t\t\t\t? t1 + (t2 - t1) * 6 * t3\n\t\t\t\t\t: 2 * t3 < 1\n\t\t\t\t\t\t? t2\n\t\t\t\t\t\t: 3 * t3 < 2\n\t\t\t\t\t\t\t? t1 + (t2 - t1) * ((2 / 3) - t3) * 6\n\t\t\t\t\t\t\t: t1;\n\t\t\t}\n\t\t\treturn c;\n\t\t},\n\n\t\t'rgb-gray': function(r, g, b) {\n\t\t\treturn [r * 0.2989 + g * 0.587 + b * 0.114];\n\t\t},\n\n\t\t'gray-rgb': function(g) {\n\t\t\treturn [g, g, g];\n\t\t},\n\n\t\t'gray-hsb': function(g) {\n\t\t\treturn [0, 0, g];\n\t\t},\n\n\t\t'gray-hsl': function(g) {\n\t\t\treturn [0, 0, g];\n\t\t},\n\n\t\t'gradient-rgb': function() {\n\t\t\treturn [];\n\t\t},\n\n\t\t'rgb-gradient': function() {\n\t\t\treturn [];\n\t\t}\n\n\t};\n\n\treturn Base.each(types, function(properties, type) {\n\t\tcomponentParsers[type] = [];\n\t\tBase.each(properties, function(name, index) {\n\t\t\tvar part = Base.capitalize(name),\n\t\t\t\thasOverlap = /^(hue|saturation)$/.test(name),\n\t\t\t\tparser = componentParsers[type][index] = type === 'gradient'\n\t\t\t\t\t? name === 'gradient'\n\t\t\t\t\t\t? function(value) {\n\t\t\t\t\t\t\tvar current = this._components[0];\n\t\t\t\t\t\t\tvalue = Gradient.read(\n\t\t\t\t\t\t\t\tArray.isArray(value)\n\t\t\t\t\t\t\t\t\t? value\n\t\t\t\t\t\t\t\t\t: arguments, 0, { readNull: true }\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (current !== value) {\n\t\t\t\t\t\t\t\tif (current)\n\t\t\t\t\t\t\t\t\tcurrent._removeOwner(this);\n\t\t\t\t\t\t\t\tif (value)\n\t\t\t\t\t\t\t\t\tvalue._addOwner(this);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t: function() {\n\t\t\t\t\t\t\treturn Point.read(arguments, 0, {\n\t\t\t\t\t\t\t\t\treadNull: name === 'highlight',\n\t\t\t\t\t\t\t\t\tclone: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t: function(value) {\n\t\t\t\t\t\treturn value == null || isNaN(value) ? 0 : +value;\n\t\t\t\t\t};\n\t\t\tthis['get' + part] = function() {\n\t\t\t\treturn this._type === type\n\t\t\t\t\t|| hasOverlap && /^hs[bl]$/.test(this._type)\n\t\t\t\t\t\t? this._components[index]\n\t\t\t\t\t\t: this._convert(type)[index];\n\t\t\t};\n\n\t\t\tthis['set' + part] = function(value) {\n\t\t\t\tif (this._type !== type\n\t\t\t\t\t\t&& !(hasOverlap && /^hs[bl]$/.test(this._type))) {\n\t\t\t\t\tthis._components = this._convert(type);\n\t\t\t\t\tthis._properties = types[type];\n\t\t\t\t\tthis._type = type;\n\t\t\t\t}\n\t\t\t\tthis._components[index] = parser.call(this, value);\n\t\t\t\tthis._changed();\n\t\t\t};\n\t\t}, this);\n\t}, {\n\t\t_class: 'Color',\n\t\t_readIndex: true,\n\n\t\tinitialize: function Color(arg) {\n\t\t\tvar args = arguments,\n\t\t\t\treading = this.__read,\n\t\t\t\tread = 0,\n\t\t\t\ttype,\n\t\t\t\tcomponents,\n\t\t\t\talpha,\n\t\t\t\tvalues;\n\t\t\tif (Array.isArray(arg)) {\n\t\t\t\targs = arg;\n\t\t\t\targ = args[0];\n\t\t\t}\n\t\t\tvar argType = arg != null && typeof arg;\n\t\t\tif (argType === 'string' && arg in types) {\n\t\t\t\ttype = arg;\n\t\t\t\targ = args[1];\n\t\t\t\tif (Array.isArray(arg)) {\n\t\t\t\t\tcomponents = arg;\n\t\t\t\t\talpha = args[2];\n\t\t\t\t} else {\n\t\t\t\t\tif (reading)\n\t\t\t\t\t\tread = 1;\n\t\t\t\t\targs = Base.slice(args, 1);\n\t\t\t\t\targType = typeof arg;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!components) {\n\t\t\t\tvalues = argType === 'number'\n\t\t\t\t\t\t? args\n\t\t\t\t\t\t: argType === 'object' && arg.length != null\n\t\t\t\t\t\t\t? arg\n\t\t\t\t\t\t\t: null;\n\t\t\t\tif (values) {\n\t\t\t\t\tif (!type)\n\t\t\t\t\t\ttype = values.length >= 3\n\t\t\t\t\t\t\t\t? 'rgb'\n\t\t\t\t\t\t\t\t: 'gray';\n\t\t\t\t\tvar length = types[type].length;\n\t\t\t\t\talpha = values[length];\n\t\t\t\t\tif (reading) {\n\t\t\t\t\t\tread += values === arguments\n\t\t\t\t\t\t\t? length + (alpha != null ? 1 : 0)\n\t\t\t\t\t\t\t: 1;\n\t\t\t\t\t}\n\t\t\t\t\tif (values.length > length)\n\t\t\t\t\t\tvalues = Base.slice(values, 0, length);\n\t\t\t\t} else if (argType === 'string') {\n\t\t\t\t\tvar converted = fromCSS(arg);\n\t\t\t\t\ttype = converted[0];\n\t\t\t\t\tcomponents = converted[1];\n\t\t\t\t\tif (components.length === 4) {\n\t\t\t\t\t\talpha = components[3];\n\t\t\t\t\t\tcomponents.length--;\n\t\t\t\t\t}\n\t\t\t\t} else if (argType === 'object') {\n\t\t\t\t\tif (arg.constructor === Color) {\n\t\t\t\t\t\ttype = arg._type;\n\t\t\t\t\t\tcomponents = arg._components.slice();\n\t\t\t\t\t\talpha = arg._alpha;\n\t\t\t\t\t\tif (type === 'gradient') {\n\t\t\t\t\t\t\tfor (var i = 1, l = components.length; i < l; i++) {\n\t\t\t\t\t\t\t\tvar point = components[i];\n\t\t\t\t\t\t\t\tif (point)\n\t\t\t\t\t\t\t\t\tcomponents[i] = point.clone();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (arg.constructor === Gradient) {\n\t\t\t\t\t\ttype = 'gradient';\n\t\t\t\t\t\tvalues = args;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttype = 'hue' in arg\n\t\t\t\t\t\t\t? 'lightness' in arg\n\t\t\t\t\t\t\t\t? 'hsl'\n\t\t\t\t\t\t\t\t: 'hsb'\n\t\t\t\t\t\t\t: 'gradient' in arg || 'stops' in arg\n\t\t\t\t\t\t\t\t\t|| 'radial' in arg\n\t\t\t\t\t\t\t\t? 'gradient'\n\t\t\t\t\t\t\t\t: 'gray' in arg\n\t\t\t\t\t\t\t\t\t? 'gray'\n\t\t\t\t\t\t\t\t\t: 'rgb';\n\t\t\t\t\t\tvar properties = types[type],\n\t\t\t\t\t\t\tparsers = componentParsers[type];\n\t\t\t\t\t\tthis._components = components = [];\n\t\t\t\t\t\tfor (var i = 0, l = properties.length; i < l; i++) {\n\t\t\t\t\t\t\tvar value = arg[properties[i]];\n\t\t\t\t\t\t\tif (value == null && !i && type === 'gradient'\n\t\t\t\t\t\t\t\t\t&& 'stops' in arg) {\n\t\t\t\t\t\t\t\tvalue = {\n\t\t\t\t\t\t\t\t\tstops: arg.stops,\n\t\t\t\t\t\t\t\t\tradial: arg.radial\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvalue = parsers[i].call(this, value);\n\t\t\t\t\t\t\tif (value != null)\n\t\t\t\t\t\t\t\tcomponents[i] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\talpha = arg.alpha;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (reading && type)\n\t\t\t\t\tread = 1;\n\t\t\t}\n\t\t\tthis._type = type || 'rgb';\n\t\t\tif (!components) {\n\t\t\t\tthis._components = components = [];\n\t\t\t\tvar parsers = componentParsers[this._type];\n\t\t\t\tfor (var i = 0, l = parsers.length; i < l; i++) {\n\t\t\t\t\tvar value = parsers[i].call(this, values && values[i]);\n\t\t\t\t\tif (value != null)\n\t\t\t\t\t\tcomponents[i] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._components = components;\n\t\t\tthis._properties = types[this._type];\n\t\t\tthis._alpha = alpha;\n\t\t\tif (reading)\n\t\t\t\tthis.__read = read;\n\t\t\treturn this;\n\t\t},\n\n\t\tset: '#initialize',\n\n\t\t_serialize: function(options, dictionary) {\n\t\t\tvar components = this.getComponents();\n\t\t\treturn Base.serialize(\n\t\t\t\t\t/^(gray|rgb)$/.test(this._type)\n\t\t\t\t\t\t? components\n\t\t\t\t\t\t: [this._type].concat(components),\n\t\t\t\t\toptions, true, dictionary);\n\t\t},\n\n\t\t_changed: function() {\n\t\t\tthis._canvasStyle = null;\n\t\t\tif (this._owner) {\n\t\t\t\tif (this._setter) {\n\t\t\t\t\tthis._owner[this._setter](this);\n\t\t\t\t} else {\n\t\t\t\t\tthis._owner._changed(129);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_convert: function(type) {\n\t\t\tvar converter;\n\t\t\treturn this._type === type\n\t\t\t\t\t? this._components.slice()\n\t\t\t\t\t: (converter = converters[this._type + '-' + type])\n\t\t\t\t\t\t? converter.apply(this, this._components)\n\t\t\t\t\t\t: converters['rgb-' + type].apply(this,\n\t\t\t\t\t\t\tconverters[this._type + '-rgb'].apply(this,\n\t\t\t\t\t\t\t\tthis._components));\n\t\t},\n\n\t\tconvert: function(type) {\n\t\t\treturn new Color(type, this._convert(type), this._alpha);\n\t\t},\n\n\t\tgetType: function() {\n\t\t\treturn this._type;\n\t\t},\n\n\t\tsetType: function(type) {\n\t\t\tthis._components = this._convert(type);\n\t\t\tthis._properties = types[type];\n\t\t\tthis._type = type;\n\t\t},\n\n\t\tgetComponents: function() {\n\t\t\tvar components = this._components.slice();\n\t\t\tif (this._alpha != null)\n\t\t\t\tcomponents.push(this._alpha);\n\t\t\treturn components;\n\t\t},\n\n\t\tgetAlpha: function() {\n\t\t\treturn this._alpha != null ? this._alpha : 1;\n\t\t},\n\n\t\tsetAlpha: function(alpha) {\n\t\t\tthis._alpha = alpha == null ? null : Math.min(Math.max(alpha, 0), 1);\n\t\t\tthis._changed();\n\t\t},\n\n\t\thasAlpha: function() {\n\t\t\treturn this._alpha != null;\n\t\t},\n\n\t\tequals: function(color) {\n\t\t\tvar col = Base.isPlainValue(color, true)\n\t\t\t\t\t? Color.read(arguments)\n\t\t\t\t\t: color;\n\t\t\treturn col === this || col && this._class === col._class\n\t\t\t\t\t&& this._type === col._type\n\t\t\t\t\t&& this.getAlpha() === col.getAlpha()\n\t\t\t\t\t&& Base.equals(this._components, col._components)\n\t\t\t\t\t|| false;\n\t\t},\n\n\t\ttoString: function() {\n\t\t\tvar properties = this._properties,\n\t\t\t\tparts = [],\n\t\t\t\tisGradient = this._type === 'gradient',\n\t\t\t\tf = Formatter.instance;\n\t\t\tfor (var i = 0, l = properties.length; i < l; i++) {\n\t\t\t\tvar value = this._components[i];\n\t\t\t\tif (value != null)\n\t\t\t\t\tparts.push(properties[i] + ': '\n\t\t\t\t\t\t\t+ (isGradient ? value : f.number(value)));\n\t\t\t}\n\t\t\tif (this._alpha != null)\n\t\t\t\tparts.push('alpha: ' + f.number(this._alpha));\n\t\t\treturn '{ ' + parts.join(', ') + ' }';\n\t\t},\n\n\t\ttoCSS: function(hex) {\n\t\t\tvar components = this._convert('rgb'),\n\t\t\t\talpha = hex || this._alpha == null ? 1 : this._alpha;\n\t\t\tfunction convert(val) {\n\t\t\t\treturn Math.round((val < 0 ? 0 : val > 1 ? 1 : val) * 255);\n\t\t\t}\n\t\t\tcomponents = [\n\t\t\t\tconvert(components[0]),\n\t\t\t\tconvert(components[1]),\n\t\t\t\tconvert(components[2])\n\t\t\t];\n\t\t\tif (alpha < 1)\n\t\t\t\tcomponents.push(alpha < 0 ? 0 : alpha);\n\t\t\treturn hex\n\t\t\t\t\t? '#' + ((1 << 24) + (components[0] << 16)\n\t\t\t\t\t\t+ (components[1] << 8)\n\t\t\t\t\t\t+ components[2]).toString(16).slice(1)\n\t\t\t\t\t: (components.length == 4 ? 'rgba(' : 'rgb(')\n\t\t\t\t\t\t+ components.join(',') + ')';\n\t\t},\n\n\t\ttoCanvasStyle: function(ctx, matrix, strokeMatrix) {\n\t\t\tvar strokeMayChange = this._type === 'gradient' && strokeMatrix;\n\t\t\tif (this._canvasStyle && !strokeMayChange)\n\t\t\t\treturn this._canvasStyle;\n\t\t\tif (this._type !== 'gradient')\n\t\t\t\treturn this._canvasStyle = this.toCSS();\n\t\t\tvar components = this._components,\n\t\t\t\tgradient = components[0],\n\t\t\t\tstops = gradient._stops,\n\t\t\t\torigin = components[1],\n\t\t\t\tdestination = components[2],\n\t\t\t\thighlight = components[3],\n\t\t\t\tinverse = matrix && matrix.inverted(),\n\t\t\t\tcanvasGradient;\n\t\t\tif (inverse) {\n\t\t\t\torigin = inverse._transformPoint(origin);\n\t\t\t\tdestination = inverse._transformPoint(destination);\n\t\t\t\tif (highlight)\n\t\t\t\t\thighlight = inverse._transformPoint(highlight);\n\t\t\t}\n\t\t\tif (strokeMatrix) {\n\t\t\t\torigin = strokeMatrix._transformPoint(origin);\n\t\t\t\tdestination = strokeMatrix._transformPoint(destination);\n\t\t\t\tif (highlight)\n\t\t\t\t\thighlight = strokeMatrix._transformPoint(highlight);\n\t\t\t}\n\t\t\tif (gradient._radial) {\n\t\t\t\tvar radius = destination.getDistance(origin);\n\t\t\t\tif (highlight) {\n\t\t\t\t\tvar vector = highlight.subtract(origin);\n\t\t\t\t\tif (vector.getLength() > radius)\n\t\t\t\t\t\thighlight = origin.add(vector.normalize(radius - 0.1));\n\t\t\t\t}\n\t\t\t\tvar start = highlight || origin;\n\t\t\t\tcanvasGradient = ctx.createRadialGradient(start.x, start.y,\n\t\t\t\t\t\t0, origin.x, origin.y, radius);\n\t\t\t} else {\n\t\t\t\tcanvasGradient = ctx.createLinearGradient(origin.x, origin.y,\n\t\t\t\t\t\tdestination.x, destination.y);\n\t\t\t}\n\t\t\tfor (var i = 0, l = stops.length; i < l; i++) {\n\t\t\t\tvar stop = stops[i],\n\t\t\t\t\toffset = stop._offset;\n\t\t\t\tcanvasGradient.addColorStop(\n\t\t\t\t\t\toffset == null ? i / (l - 1) : offset,\n\t\t\t\t\t\tstop._color.toCanvasStyle());\n\t\t\t}\n\t\t\tif (!strokeMayChange) this._canvasStyle = canvasGradient;\n\t\t\treturn canvasGradient;\n\t\t},\n\n\t\ttransform: function(matrix) {\n\t\t\tif (this._type === 'gradient') {\n\t\t\t\tvar components = this._components;\n\t\t\t\tfor (var i = 1, l = components.length; i < l; i++) {\n\t\t\t\t\tvar point = components[i];\n\t\t\t\t\tmatrix._transformPoint(point, point, true);\n\t\t\t\t}\n\t\t\t\tthis._changed();\n\t\t\t}\n\t\t},\n\n\t\tstatics: {\n\t\t\t_types: types,\n\n\t\t\trandom: function() {\n\t\t\t\tvar random = Math.random;\n\t\t\t\treturn new Color(random(), random(), random());\n\t\t\t},\n\n\t\t\t_setOwner: function(color, owner, setter) {\n\t\t\t\tif (color) {\n\t\t\t\t\tif (color._owner && owner && color._owner !== owner) {\n\t\t\t\t\t\tcolor = color.clone();\n\t\t\t\t\t}\n\t\t\t\t\tif (!color._owner ^ !owner) {\n\t\t\t\t\t\tcolor._owner = owner || null;\n\t\t\t\t\t\tcolor._setter = setter || null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn color;\n\t\t\t}\n\t\t}\n\t});\n},\nnew function() {\n\tvar operators = {\n\t\tadd: function(a, b) {\n\t\t\treturn a + b;\n\t\t},\n\n\t\tsubtract: function(a, b) {\n\t\t\treturn a - b;\n\t\t},\n\n\t\tmultiply: function(a, b) {\n\t\t\treturn a * b;\n\t\t},\n\n\t\tdivide: function(a, b) {\n\t\t\treturn a / b;\n\t\t}\n\t};\n\n\treturn Base.each(operators, function(operator, name) {\n\t\tthis[name] = function(color) {\n\t\t\tcolor = Color.read(arguments);\n\t\t\tvar type = this._type,\n\t\t\t\tcomponents1 = this._components,\n\t\t\t\tcomponents2 = color._convert(type);\n\t\t\tfor (var i = 0, l = components1.length; i < l; i++)\n\t\t\t\tcomponents2[i] = operator(components1[i], components2[i]);\n\t\t\treturn new Color(type, components2,\n\t\t\t\t\tthis._alpha != null\n\t\t\t\t\t\t\t? operator(this._alpha, color.getAlpha())\n\t\t\t\t\t\t\t: null);\n\t\t};\n\t}, {\n\t});\n});\n\nvar Gradient = Base.extend({\n\t_class: 'Gradient',\n\n\tinitialize: function Gradient(stops, radial) {\n\t\tthis._id = UID.get();\n\t\tif (stops && Base.isPlainObject(stops)) {\n\t\t\tthis.set(stops);\n\t\t\tstops = radial = null;\n\t\t}\n\t\tif (this._stops == null) {\n\t\t\tthis.setStops(stops || ['white', 'black']);\n\t\t}\n\t\tif (this._radial == null) {\n\t\t\tthis.setRadial(typeof radial === 'string' && radial === 'radial'\n\t\t\t\t\t|| radial || false);\n\t\t}\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\treturn dictionary.add(this, function() {\n\t\t\treturn Base.serialize([this._stops, this._radial],\n\t\t\t\t\toptions, true, dictionary);\n\t\t});\n\t},\n\n\t_changed: function() {\n\t\tfor (var i = 0, l = this._owners && this._owners.length; i < l; i++) {\n\t\t\tthis._owners[i]._changed();\n\t\t}\n\t},\n\n\t_addOwner: function(color) {\n\t\tif (!this._owners)\n\t\t\tthis._owners = [];\n\t\tthis._owners.push(color);\n\t},\n\n\t_removeOwner: function(color) {\n\t\tvar index = this._owners ? this._owners.indexOf(color) : -1;\n\t\tif (index != -1) {\n\t\t\tthis._owners.splice(index, 1);\n\t\t\tif (!this._owners.length)\n\t\t\t\tthis._owners = undefined;\n\t\t}\n\t},\n\n\tclone: function() {\n\t\tvar stops = [];\n\t\tfor (var i = 0, l = this._stops.length; i < l; i++) {\n\t\t\tstops[i] = this._stops[i].clone();\n\t\t}\n\t\treturn new Gradient(stops, this._radial);\n\t},\n\n\tgetStops: function() {\n\t\treturn this._stops;\n\t},\n\n\tsetStops: function(stops) {\n\t\tif (stops.length < 2) {\n\t\t\tthrow new Error(\n\t\t\t\t\t'Gradient stop list needs to contain at least two stops.');\n\t\t}\n\t\tvar _stops = this._stops;\n\t\tif (_stops) {\n\t\t\tfor (var i = 0, l = _stops.length; i < l; i++)\n\t\t\t\t_stops[i]._owner = undefined;\n\t\t}\n\t\t_stops = this._stops = GradientStop.readList(stops, 0, { clone: true });\n\t\tfor (var i = 0, l = _stops.length; i < l; i++)\n\t\t\t_stops[i]._owner = this;\n\t\tthis._changed();\n\t},\n\n\tgetRadial: function() {\n\t\treturn this._radial;\n\t},\n\n\tsetRadial: function(radial) {\n\t\tthis._radial = radial;\n\t\tthis._changed();\n\t},\n\n\tequals: function(gradient) {\n\t\tif (gradient === this)\n\t\t\treturn true;\n\t\tif (gradient && this._class === gradient._class) {\n\t\t\tvar stops1 = this._stops,\n\t\t\t\tstops2 = gradient._stops,\n\t\t\t\tlength = stops1.length;\n\t\t\tif (length === stops2.length) {\n\t\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\t\tif (!stops1[i].equals(stops2[i]))\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n});\n\nvar GradientStop = Base.extend({\n\t_class: 'GradientStop',\n\n\tinitialize: function GradientStop(arg0, arg1) {\n\t\tvar color = arg0,\n\t\t\toffset = arg1;\n\t\tif (typeof arg0 === 'object' && arg1 === undefined) {\n\t\t\tif (Array.isArray(arg0) && typeof arg0[0] !== 'number') {\n\t\t\t\tcolor = arg0[0];\n\t\t\t\toffset = arg0[1];\n\t\t\t} else if ('color' in arg0 || 'offset' in arg0\n\t\t\t\t\t|| 'rampPoint' in arg0) {\n\t\t\t\tcolor = arg0.color;\n\t\t\t\toffset = arg0.offset || arg0.rampPoint || 0;\n\t\t\t}\n\t\t}\n\t\tthis.setColor(color);\n\t\tthis.setOffset(offset);\n\t},\n\n\tclone: function() {\n\t\treturn new GradientStop(this._color.clone(), this._offset);\n\t},\n\n\t_serialize: function(options, dictionary) {\n\t\tvar color = this._color,\n\t\t\toffset = this._offset;\n\t\treturn Base.serialize(offset == null ? [color] : [color, offset],\n\t\t\t\toptions, true, dictionary);\n\t},\n\n\t_changed: function() {\n\t\tif (this._owner)\n\t\t\tthis._owner._changed(129);\n\t},\n\n\tgetOffset: function() {\n\t\treturn this._offset;\n\t},\n\n\tsetOffset: function(offset) {\n\t\tthis._offset = offset;\n\t\tthis._changed();\n\t},\n\n\tgetRampPoint: '#getOffset',\n\tsetRampPoint: '#setOffset',\n\n\tgetColor: function() {\n\t\treturn this._color;\n\t},\n\n\tsetColor: function() {\n\t\tColor._setOwner(this._color, null);\n\t\tthis._color = Color._setOwner(Color.read(arguments, 0), this,\n\t\t\t\t'setColor');\n\t\tthis._changed();\n\t},\n\n\tequals: function(stop) {\n\t\treturn stop === this || stop && this._class === stop._class\n\t\t\t\t&& this._color.equals(stop._color)\n\t\t\t\t&& this._offset == stop._offset\n\t\t\t\t|| false;\n\t}\n});\n\nvar Style = Base.extend(new function() {\n\tvar itemDefaults = {\n\t\tfillColor: null,\n\t\tfillRule: 'nonzero',\n\t\tstrokeColor: null,\n\t\tstrokeWidth: 1,\n\t\tstrokeCap: 'butt',\n\t\tstrokeJoin: 'miter',\n\t\tstrokeScaling: true,\n\t\tmiterLimit: 10,\n\t\tdashOffset: 0,\n\t\tdashArray: [],\n\t\tshadowColor: null,\n\t\tshadowBlur: 0,\n\t\tshadowOffset: new Point(),\n\t\tselectedColor: null\n\t},\n\tgroupDefaults = Base.set({}, itemDefaults, {\n\t\tfontFamily: 'sans-serif',\n\t\tfontWeight: 'normal',\n\t\tfontSize: 12,\n\t\tleading: null,\n\t\tjustification: 'left'\n\t}),\n\ttextDefaults = Base.set({}, groupDefaults, {\n\t\tfillColor: new Color()\n\t}),\n\tflags = {\n\t\tstrokeWidth: 193,\n\t\tstrokeCap: 193,\n\t\tstrokeJoin: 193,\n\t\tstrokeScaling: 201,\n\t\tmiterLimit: 193,\n\t\tfontFamily: 9,\n\t\tfontWeight: 9,\n\t\tfontSize: 9,\n\t\tfont: 9,\n\t\tleading: 9,\n\t\tjustification: 9\n\t},\n\titem = {\n\t\tbeans: true\n\t},\n\tfields = {\n\t\t_class: 'Style',\n\t\tbeans: true,\n\n\t\tinitialize: function Style(style, _owner, _project) {\n\t\t\tthis._values = {};\n\t\t\tthis._owner = _owner;\n\t\t\tthis._project = _owner && _owner._project || _project\n\t\t\t\t\t|| paper.project;\n\t\t\tthis._defaults = !_owner || _owner instanceof Group ? groupDefaults\n\t\t\t\t\t: _owner instanceof TextItem ? textDefaults\n\t\t\t\t\t: itemDefaults;\n\t\t\tif (style)\n\t\t\t\tthis.set(style);\n\t\t}\n\t};\n\n\tBase.each(groupDefaults, function(value, key) {\n\t\tvar isColor = /Color$/.test(key),\n\t\t\tisPoint = key === 'shadowOffset',\n\t\t\tpart = Base.capitalize(key),\n\t\t\tflag = flags[key],\n\t\t\tset = 'set' + part,\n\t\t\tget = 'get' + part;\n\n\t\tfields[set] = function(value) {\n\t\t\tvar owner = this._owner,\n\t\t\t\tchildren = owner && owner._children,\n\t\t\t\tapplyToChildren = children && children.length > 0\n\t\t\t\t\t&& !(owner instanceof CompoundPath);\n\t\t\tif (applyToChildren) {\n\t\t\t\tfor (var i = 0, l = children.length; i < l; i++)\n\t\t\t\t\tchildren[i]._style[set](value);\n\t\t\t}\n\t\t\tif ((key === 'selectedColor' || !applyToChildren)\n\t\t\t\t\t&& key in this._defaults) {\n\t\t\t\tvar old = this._values[key];\n\t\t\t\tif (old !== value) {\n\t\t\t\t\tif (isColor) {\n\t\t\t\t\t\tif (old) {\n\t\t\t\t\t\t\tColor._setOwner(old, null);\n\t\t\t\t\t\t\told._canvasStyle = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value && value.constructor === Color) {\n\t\t\t\t\t\t\tvalue = Color._setOwner(value, owner,\n\t\t\t\t\t\t\t\t\tapplyToChildren && set);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis._values[key] = value;\n\t\t\t\t\tif (owner)\n\t\t\t\t\t\towner._changed(flag || 129);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tfields[get] = function(_dontMerge) {\n\t\t\tvar owner = this._owner,\n\t\t\t\tchildren = owner && owner._children,\n\t\t\t\tapplyToChildren = children && children.length > 0\n\t\t\t\t\t&& !(owner instanceof CompoundPath),\n\t\t\t\tvalue;\n\t\t\tif (applyToChildren && !_dontMerge) {\n\t\t\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\t\t\tvar childValue = children[i]._style[get]();\n\t\t\t\t\tif (!i) {\n\t\t\t\t\t\tvalue = childValue;\n\t\t\t\t\t} else if (!Base.equals(value, childValue)) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (key in this._defaults) {\n\t\t\t\tvar value = this._values[key];\n\t\t\t\tif (value === undefined) {\n\t\t\t\t\tvalue = this._defaults[key];\n\t\t\t\t\tif (value && value.clone) {\n\t\t\t\t\t\tvalue = value.clone();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar ctor = isColor ? Color : isPoint ? Point : null;\n\t\t\t\t\tif (ctor && !(value && value.constructor === ctor)) {\n\t\t\t\t\t\tthis._values[key] = value = ctor.read([value], 0,\n\t\t\t\t\t\t\t\t{ readNull: true, clone: true });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (value && isColor) {\n\t\t\t\tvalue = Color._setOwner(value, owner, applyToChildren && set);\n\t\t\t}\n\t\t\treturn value;\n\t\t};\n\n\t\titem[get] = function(_dontMerge) {\n\t\t\treturn this._style[get](_dontMerge);\n\t\t};\n\n\t\titem[set] = function(value) {\n\t\t\tthis._style[set](value);\n\t\t};\n\t});\n\n\tBase.each({\n\t\tFont: 'FontFamily',\n\t\tWindingRule: 'FillRule'\n\t}, function(value, key) {\n\t\tvar get = 'get' + key,\n\t\t\tset = 'set' + key;\n\t\tfields[get] = item[get] = '#get' + value;\n\t\tfields[set] = item[set] = '#set' + value;\n\t});\n\n\tItem.inject(item);\n\treturn fields;\n}, {\n\tset: function(style) {\n\t\tvar isStyle = style instanceof Style,\n\t\t\tvalues = isStyle ? style._values : style;\n\t\tif (values) {\n\t\t\tfor (var key in values) {\n\t\t\t\tif (key in this._defaults) {\n\t\t\t\t\tvar value = values[key];\n\t\t\t\t\tthis[key] = value && isStyle && value.clone\n\t\t\t\t\t\t\t? value.clone() : value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tequals: function(style) {\n\t\tfunction compare(style1, style2, secondary) {\n\t\t\tvar values1 = style1._values,\n\t\t\t\tvalues2 = style2._values,\n\t\t\t\tdefaults2 = style2._defaults;\n\t\t\tfor (var key in values1) {\n\t\t\t\tvar value1 = values1[key],\n\t\t\t\t\tvalue2 = values2[key];\n\t\t\t\tif (!(secondary && key in values2) && !Base.equals(value1,\n\t\t\t\t\t\tvalue2 === undefined ? defaults2[key] : value2))\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\treturn style === this || style && this._class === style._class\n\t\t\t\t&& compare(this, style)\n\t\t\t\t&& compare(style, this, true)\n\t\t\t\t|| false;\n\t},\n\n\t_dispose: function() {\n\t\tvar color;\n\t\tcolor = this.getFillColor();\n\t\tif (color) color._canvasStyle = null;\n\t\tcolor = this.getStrokeColor();\n\t\tif (color) color._canvasStyle = null;\n\t\tcolor = this.getShadowColor();\n\t\tif (color) color._canvasStyle = null;\n\t},\n\n\thasFill: function() {\n\t\tvar color = this.getFillColor();\n\t\treturn !!color && color.alpha > 0;\n\t},\n\n\thasStroke: function() {\n\t\tvar color = this.getStrokeColor();\n\t\treturn !!color && color.alpha > 0 && this.getStrokeWidth() > 0;\n\t},\n\n\thasShadow: function() {\n\t\tvar color = this.getShadowColor();\n\t\treturn !!color && color.alpha > 0 && (this.getShadowBlur() > 0\n\t\t\t\t|| !this.getShadowOffset().isZero());\n\t},\n\n\tgetView: function() {\n\t\treturn this._project._view;\n\t},\n\n\tgetFontStyle: function() {\n\t\tvar fontSize = this.getFontSize();\n\t\treturn this.getFontWeight()\n\t\t\t\t+ ' ' + fontSize + (/[a-z]/i.test(fontSize + '') ? ' ' : 'px ')\n\t\t\t\t+ this.getFontFamily();\n\t},\n\n\tgetFont: '#getFontFamily',\n\tsetFont: '#setFontFamily',\n\n\tgetLeading: function getLeading() {\n\t\tvar leading = getLeading.base.call(this),\n\t\t\tfontSize = this.getFontSize();\n\t\tif (/pt|em|%|px/.test(fontSize))\n\t\t\tfontSize = this.getView().getPixelSize(fontSize);\n\t\treturn leading != null ? leading : fontSize * 1.2;\n\t}\n\n});\n\nvar DomElement = new function() {\n\tfunction handlePrefix(el, name, set, value) {\n\t\tvar prefixes = ['', 'webkit', 'moz', 'Moz', 'ms', 'o'],\n\t\t\tsuffix = name[0].toUpperCase() + name.substring(1);\n\t\tfor (var i = 0; i < 6; i++) {\n\t\t\tvar prefix = prefixes[i],\n\t\t\t\tkey = prefix ? prefix + suffix : name;\n\t\t\tif (key in el) {\n\t\t\t\tif (set) {\n\t\t\t\t\tel[key] = value;\n\t\t\t\t} else {\n\t\t\t\t\treturn el[key];\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tgetStyles: function(el) {\n\t\t\tvar doc = el && el.nodeType !== 9 ? el.ownerDocument : el,\n\t\t\t\tview = doc && doc.defaultView;\n\t\t\treturn view && view.getComputedStyle(el, '');\n\t\t},\n\n\t\tgetBounds: function(el, viewport) {\n\t\t\tvar doc = el.ownerDocument,\n\t\t\t\tbody = doc.body,\n\t\t\t\thtml = doc.documentElement,\n\t\t\t\trect;\n\t\t\ttry {\n\t\t\t\trect = el.getBoundingClientRect();\n\t\t\t} catch (e) {\n\t\t\t\trect = { left: 0, top: 0, width: 0, height: 0 };\n\t\t\t}\n\t\t\tvar x = rect.left - (html.clientLeft || body.clientLeft || 0),\n\t\t\t\ty = rect.top - (html.clientTop || body.clientTop || 0);\n\t\t\tif (!viewport) {\n\t\t\t\tvar view = doc.defaultView;\n\t\t\t\tx += view.pageXOffset || html.scrollLeft || body.scrollLeft;\n\t\t\t\ty += view.pageYOffset || html.scrollTop || body.scrollTop;\n\t\t\t}\n\t\t\treturn new Rectangle(x, y, rect.width, rect.height);\n\t\t},\n\n\t\tgetViewportBounds: function(el) {\n\t\t\tvar doc = el.ownerDocument,\n\t\t\t\tview = doc.defaultView,\n\t\t\t\thtml = doc.documentElement;\n\t\t\treturn new Rectangle(0, 0,\n\t\t\t\tview.innerWidth || html.clientWidth,\n\t\t\t\tview.innerHeight || html.clientHeight\n\t\t\t);\n\t\t},\n\n\t\tgetOffset: function(el, viewport) {\n\t\t\treturn DomElement.getBounds(el, viewport).getPoint();\n\t\t},\n\n\t\tgetSize: function(el) {\n\t\t\treturn DomElement.getBounds(el, true).getSize();\n\t\t},\n\n\t\tisInvisible: function(el) {\n\t\t\treturn DomElement.getSize(el).equals(new Size(0, 0));\n\t\t},\n\n\t\tisInView: function(el) {\n\t\t\treturn !DomElement.isInvisible(el)\n\t\t\t\t\t&& DomElement.getViewportBounds(el).intersects(\n\t\t\t\t\t\tDomElement.getBounds(el, true));\n\t\t},\n\n\t\tisInserted: function(el) {\n\t\t\treturn document.body.contains(el);\n\t\t},\n\n\t\tgetPrefixed: function(el, name) {\n\t\t\treturn el && handlePrefix(el, name);\n\t\t},\n\n\t\tsetPrefixed: function(el, name, value) {\n\t\t\tif (typeof name === 'object') {\n\t\t\t\tfor (var key in name)\n\t\t\t\t\thandlePrefix(el, key, true, name[key]);\n\t\t\t} else {\n\t\t\t\thandlePrefix(el, name, true, value);\n\t\t\t}\n\t\t}\n\t};\n};\n\nvar DomEvent = {\n\tadd: function(el, events) {\n\t\tif (el) {\n\t\t\tfor (var type in events) {\n\t\t\t\tvar func = events[type],\n\t\t\t\t\tparts = type.split(/[\\s,]+/g);\n\t\t\t\tfor (var i = 0, l = parts.length; i < l; i++) {\n\t\t\t\t\tvar name = parts[i];\n\t\t\t\t\tvar options = (\n\t\t\t\t\t\tel === document\n\t\t\t\t\t\t&& (name === 'touchstart' || name === 'touchmove')\n\t\t\t\t\t) ? { passive: false } : false;\n\t\t\t\t\tel.addEventListener(name, func, options);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremove: function(el, events) {\n\t\tif (el) {\n\t\t\tfor (var type in events) {\n\t\t\t\tvar func = events[type],\n\t\t\t\t\tparts = type.split(/[\\s,]+/g);\n\t\t\t\tfor (var i = 0, l = parts.length; i < l; i++)\n\t\t\t\t\tel.removeEventListener(parts[i], func, false);\n\t\t\t}\n\t\t}\n\t},\n\n\tgetPoint: function(event) {\n\t\tvar pos = event.targetTouches\n\t\t\t\t? event.targetTouches.length\n\t\t\t\t\t? event.targetTouches[0]\n\t\t\t\t\t: event.changedTouches[0]\n\t\t\t\t: event;\n\t\treturn new Point(\n\t\t\tpos.pageX || pos.clientX + document.documentElement.scrollLeft,\n\t\t\tpos.pageY || pos.clientY + document.documentElement.scrollTop\n\t\t);\n\t},\n\n\tgetTarget: function(event) {\n\t\treturn event.target || event.srcElement;\n\t},\n\n\tgetRelatedTarget: function(event) {\n\t\treturn event.relatedTarget || event.toElement;\n\t},\n\n\tgetOffset: function(event, target) {\n\t\treturn DomEvent.getPoint(event).subtract(DomElement.getOffset(\n\t\t\t\ttarget || DomEvent.getTarget(event)));\n\t}\n};\n\nDomEvent.requestAnimationFrame = new function() {\n\tvar nativeRequest = DomElement.getPrefixed(window, 'requestAnimationFrame'),\n\t\trequested = false,\n\t\tcallbacks = [],\n\t\ttimer;\n\n\tfunction handleCallbacks() {\n\t\tvar functions = callbacks;\n\t\tcallbacks = [];\n\t\tfor (var i = 0, l = functions.length; i < l; i++)\n\t\t\tfunctions[i]();\n\t\trequested = nativeRequest && callbacks.length;\n\t\tif (requested)\n\t\t\tnativeRequest(handleCallbacks);\n\t}\n\n\treturn function(callback) {\n\t\tcallbacks.push(callback);\n\t\tif (nativeRequest) {\n\t\t\tif (!requested) {\n\t\t\t\tnativeRequest(handleCallbacks);\n\t\t\t\trequested = true;\n\t\t\t}\n\t\t} else if (!timer) {\n\t\t\ttimer = setInterval(handleCallbacks, 1000 / 60);\n\t\t}\n\t};\n};\n\nvar View = Base.extend(Emitter, {\n\t_class: 'View',\n\n\tinitialize: function View(project, element) {\n\n\t\tfunction getSize(name) {\n\t\t\treturn element[name] || parseInt(element.getAttribute(name), 10);\n\t\t}\n\n\t\tfunction getCanvasSize() {\n\t\t\tvar size = DomElement.getSize(element);\n\t\t\treturn size.isNaN() || size.isZero()\n\t\t\t\t\t? new Size(getSize('width'), getSize('height'))\n\t\t\t\t\t: size;\n\t\t}\n\n\t\tvar size;\n\t\tif (window && element) {\n\t\t\tthis._id = element.getAttribute('id');\n\t\t\tif (this._id == null)\n\t\t\t\telement.setAttribute('id', this._id = 'paper-view-' + View._id++);\n\t\t\tDomEvent.add(element, this._viewEvents);\n\t\t\tvar none = 'none';\n\t\t\tDomElement.setPrefixed(element.style, {\n\t\t\t\tuserDrag: none,\n\t\t\t\tuserSelect: none,\n\t\t\t\ttouchCallout: none,\n\t\t\t\tcontentZooming: none,\n\t\t\t\ttapHighlightColor: 'rgba(0,0,0,0)'\n\t\t\t});\n\n\t\t\tif (PaperScope.hasAttribute(element, 'resize')) {\n\t\t\t\tvar that = this;\n\t\t\t\tDomEvent.add(window, this._windowEvents = {\n\t\t\t\t\tresize: function() {\n\t\t\t\t\t\tthat.setViewSize(getCanvasSize());\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tsize = getCanvasSize();\n\n\t\t\tif (PaperScope.hasAttribute(element, 'stats')\n\t\t\t\t\t&& typeof Stats !== 'undefined') {\n\t\t\t\tthis._stats = new Stats();\n\t\t\t\tvar stats = this._stats.domElement,\n\t\t\t\t\tstyle = stats.style,\n\t\t\t\t\toffset = DomElement.getOffset(element);\n\t\t\t\tstyle.position = 'absolute';\n\t\t\t\tstyle.left = offset.x + 'px';\n\t\t\t\tstyle.top = offset.y + 'px';\n\t\t\t\tdocument.body.appendChild(stats);\n\t\t\t}\n\t\t} else {\n\t\t\tsize = new Size(element);\n\t\t\telement = null;\n\t\t}\n\t\tthis._project = project;\n\t\tthis._scope = project._scope;\n\t\tthis._element = element;\n\t\tif (!this._pixelRatio)\n\t\t\tthis._pixelRatio = window && window.devicePixelRatio || 1;\n\t\tthis._setElementSize(size.width, size.height);\n\t\tthis._viewSize = size;\n\t\tView._views.push(this);\n\t\tView._viewsById[this._id] = this;\n\t\t(this._matrix = new Matrix())._owner = this;\n\t\tif (!View._focused)\n\t\t\tView._focused = this;\n\t\tthis._frameItems = {};\n\t\tthis._frameItemCount = 0;\n\t\tthis._itemEvents = { native: {}, virtual: {} };\n\t\tthis._autoUpdate = !paper.agent.node;\n\t\tthis._needsUpdate = false;\n\t},\n\n\tremove: function() {\n\t\tif (!this._project)\n\t\t\treturn false;\n\t\tif (View._focused === this)\n\t\t\tView._focused = null;\n\t\tView._views.splice(View._views.indexOf(this), 1);\n\t\tdelete View._viewsById[this._id];\n\t\tvar project = this._project;\n\t\tif (project._view === this)\n\t\t\tproject._view = null;\n\t\tDomEvent.remove(this._element, this._viewEvents);\n\t\tDomEvent.remove(window, this._windowEvents);\n\t\tthis._element = this._project = null;\n\t\tthis.off('frame');\n\t\tthis._animate = false;\n\t\tthis._frameItems = {};\n\t\treturn true;\n\t},\n\n\t_events: Base.each(\n\t\tItem._itemHandlers.concat(['onResize', 'onKeyDown', 'onKeyUp']),\n\t\tfunction(name) {\n\t\t\tthis[name] = {};\n\t\t}, {\n\t\t\tonFrame: {\n\t\t\t\tinstall: function() {\n\t\t\t\t\tthis.play();\n\t\t\t\t},\n\n\t\t\t\tuninstall: function() {\n\t\t\t\t\tthis.pause();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t),\n\n\t_animate: false,\n\t_time: 0,\n\t_count: 0,\n\n\tgetAutoUpdate: function() {\n\t\treturn this._autoUpdate;\n\t},\n\n\tsetAutoUpdate: function(autoUpdate) {\n\t\tthis._autoUpdate = autoUpdate;\n\t\tif (autoUpdate)\n\t\t\tthis.requestUpdate();\n\t},\n\n\tupdate: function() {\n\t},\n\n\tdraw: function() {\n\t\tthis.update();\n\t},\n\n\trequestUpdate: function() {\n\t\tif (!this._requested) {\n\t\t\tvar that = this;\n\t\t\tDomEvent.requestAnimationFrame(function() {\n\t\t\t\tthat._requested = false;\n\t\t\t\tif (that._animate) {\n\t\t\t\t\tthat.requestUpdate();\n\t\t\t\t\tvar element = that._element;\n\t\t\t\t\tif ((!DomElement.getPrefixed(document, 'hidden')\n\t\t\t\t\t\t\t|| PaperScope.getAttribute(element, 'keepalive')\n\t\t\t\t\t\t\t\t=== 'true') && DomElement.isInView(element)) {\n\t\t\t\t\t\tthat._handleFrame();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (that._autoUpdate)\n\t\t\t\t\tthat.update();\n\t\t\t});\n\t\t\tthis._requested = true;\n\t\t}\n\t},\n\n\tplay: function() {\n\t\tthis._animate = true;\n\t\tthis.requestUpdate();\n\t},\n\n\tpause: function() {\n\t\tthis._animate = false;\n\t},\n\n\t_handleFrame: function() {\n\t\tpaper = this._scope;\n\t\tvar now = Date.now() / 1000,\n\t\t\tdelta = this._last ? now - this._last : 0;\n\t\tthis._last = now;\n\t\tthis.emit('frame', new Base({\n\t\t\tdelta: delta,\n\t\t\ttime: this._time += delta,\n\t\t\tcount: this._count++\n\t\t}));\n\t\tif (this._stats)\n\t\t\tthis._stats.update();\n\t},\n\n\t_animateItem: function(item, animate) {\n\t\tvar items = this._frameItems;\n\t\tif (animate) {\n\t\t\titems[item._id] = {\n\t\t\t\titem: item,\n\t\t\t\ttime: 0,\n\t\t\t\tcount: 0\n\t\t\t};\n\t\t\tif (++this._frameItemCount === 1)\n\t\t\t\tthis.on('frame', this._handleFrameItems);\n\t\t} else {\n\t\t\tdelete items[item._id];\n\t\t\tif (--this._frameItemCount === 0) {\n\t\t\t\tthis.off('frame', this._handleFrameItems);\n\t\t\t}\n\t\t}\n\t},\n\n\t_handleFrameItems: function(event) {\n\t\tfor (var i in this._frameItems) {\n\t\t\tvar entry = this._frameItems[i];\n\t\t\tentry.item.emit('frame', new Base(event, {\n\t\t\t\ttime: entry.time += event.delta,\n\t\t\t\tcount: entry.count++\n\t\t\t}));\n\t\t}\n\t},\n\n\t_changed: function() {\n\t\tthis._project._changed(4097);\n\t\tthis._bounds = this._decomposed = undefined;\n\t},\n\n\tgetElement: function() {\n\t\treturn this._element;\n\t},\n\n\tgetPixelRatio: function() {\n\t\treturn this._pixelRatio;\n\t},\n\n\tgetResolution: function() {\n\t\treturn this._pixelRatio * 72;\n\t},\n\n\tgetViewSize: function() {\n\t\tvar size = this._viewSize;\n\t\treturn new LinkedSize(size.width, size.height, this, 'setViewSize');\n\t},\n\n\tsetViewSize: function() {\n\t\tvar size = Size.read(arguments),\n\t\t\tdelta = size.subtract(this._viewSize);\n\t\tif (delta.isZero())\n\t\t\treturn;\n\t\tthis._setElementSize(size.width, size.height);\n\t\tthis._viewSize.set(size);\n\t\tthis._changed();\n\t\tthis.emit('resize', { size: size, delta: delta });\n\t\tif (this._autoUpdate) {\n\t\t\tthis.update();\n\t\t}\n\t},\n\n\t_setElementSize: function(width, height) {\n\t\tvar element = this._element;\n\t\tif (element) {\n\t\t\tif (element.width !== width)\n\t\t\t\telement.width = width;\n\t\t\tif (element.height !== height)\n\t\t\t\telement.height = height;\n\t\t}\n\t},\n\n\tgetBounds: function() {\n\t\tif (!this._bounds)\n\t\t\tthis._bounds = this._matrix.inverted()._transformBounds(\n\t\t\t\t\tnew Rectangle(new Point(), this._viewSize));\n\t\treturn this._bounds;\n\t},\n\n\tgetSize: function() {\n\t\treturn this.getBounds().getSize();\n\t},\n\n\tisVisible: function() {\n\t\treturn DomElement.isInView(this._element);\n\t},\n\n\tisInserted: function() {\n\t\treturn DomElement.isInserted(this._element);\n\t},\n\n\tgetPixelSize: function(size) {\n\t\tvar element = this._element,\n\t\t\tpixels;\n\t\tif (element) {\n\t\t\tvar parent = element.parentNode,\n\t\t\t\ttemp = document.createElement('div');\n\t\t\ttemp.style.fontSize = size;\n\t\t\tparent.appendChild(temp);\n\t\t\tpixels = parseFloat(DomElement.getStyles(temp).fontSize);\n\t\t\tparent.removeChild(temp);\n\t\t} else {\n\t\t\tpixels = parseFloat(pixels);\n\t\t}\n\t\treturn pixels;\n\t},\n\n\tgetTextWidth: function(font, lines) {\n\t\treturn 0;\n\t}\n}, Base.each(['rotate', 'scale', 'shear', 'skew'], function(key) {\n\tvar rotate = key === 'rotate';\n\tthis[key] = function() {\n\t\tvar args = arguments,\n\t\t\tvalue = (rotate ? Base : Point).read(args),\n\t\t\tcenter = Point.read(args, 0, { readNull: true });\n\t\treturn this.transform(new Matrix()[key](value,\n\t\t\t\tcenter || this.getCenter(true)));\n\t};\n}, {\n\t_decompose: function() {\n\t\treturn this._decomposed || (this._decomposed = this._matrix.decompose());\n\t},\n\n\ttranslate: function() {\n\t\tvar mx = new Matrix();\n\t\treturn this.transform(mx.translate.apply(mx, arguments));\n\t},\n\n\tgetCenter: function() {\n\t\treturn this.getBounds().getCenter();\n\t},\n\n\tsetCenter: function() {\n\t\tvar center = Point.read(arguments);\n\t\tthis.translate(this.getCenter().subtract(center));\n\t},\n\n\tgetZoom: function() {\n\t\tvar scaling = this._decompose().scaling;\n\t\treturn (scaling.x + scaling.y) / 2;\n\t},\n\n\tsetZoom: function(zoom) {\n\t\tthis.transform(new Matrix().scale(zoom / this.getZoom(),\n\t\t\tthis.getCenter()));\n\t},\n\n\tgetRotation: function() {\n\t\treturn this._decompose().rotation;\n\t},\n\n\tsetRotation: function(rotation) {\n\t\tvar current = this.getRotation();\n\t\tif (current != null && rotation != null) {\n\t\t\tthis.rotate(rotation - current);\n\t\t}\n\t},\n\n\tgetScaling: function() {\n\t\tvar scaling = this._decompose().scaling;\n\t\treturn new LinkedPoint(scaling.x, scaling.y, this, 'setScaling');\n\t},\n\n\tsetScaling: function() {\n\t\tvar current = this.getScaling(),\n\t\t\tscaling = Point.read(arguments, 0, { clone: true, readNull: true });\n\t\tif (current && scaling) {\n\t\t\tthis.scale(scaling.x / current.x, scaling.y / current.y);\n\t\t}\n\t},\n\n\tgetMatrix: function() {\n\t\treturn this._matrix;\n\t},\n\n\tsetMatrix: function() {\n\t\tvar matrix = this._matrix;\n\t\tmatrix.initialize.apply(matrix, arguments);\n\t},\n\n\ttransform: function(matrix) {\n\t\tthis._matrix.append(matrix);\n\t},\n\n\tscrollBy: function() {\n\t\tthis.translate(Point.read(arguments).negate());\n\t}\n}), {\n\n\tprojectToView: function() {\n\t\treturn this._matrix._transformPoint(Point.read(arguments));\n\t},\n\n\tviewToProject: function() {\n\t\treturn this._matrix._inverseTransform(Point.read(arguments));\n\t},\n\n\tgetEventPoint: function(event) {\n\t\treturn this.viewToProject(DomEvent.getOffset(event, this._element));\n\t},\n\n}, {\n\tstatics: {\n\t\t_views: [],\n\t\t_viewsById: {},\n\t\t_id: 0,\n\n\t\tcreate: function(project, element) {\n\t\t\tif (document && typeof element === 'string')\n\t\t\t\telement = document.getElementById(element);\n\t\t\tvar ctor = window ? CanvasView : View;\n\t\t\treturn new ctor(project, element);\n\t\t}\n\t}\n},\nnew function() {\n\tif (!window)\n\t\treturn;\n\tvar prevFocus,\n\t\ttempFocus,\n\t\tdragging = false,\n\t\tmouseDown = false;\n\n\tfunction getView(event) {\n\t\tvar target = DomEvent.getTarget(event);\n\t\treturn target.getAttribute && View._viewsById[\n\t\t\t\ttarget.getAttribute('id')];\n\t}\n\n\tfunction updateFocus() {\n\t\tvar view = View._focused;\n\t\tif (!view || !view.isVisible()) {\n\t\t\tfor (var i = 0, l = View._views.length; i < l; i++) {\n\t\t\t\tif ((view = View._views[i]).isVisible()) {\n\t\t\t\t\tView._focused = tempFocus = view;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction handleMouseMove(view, event, point) {\n\t\tview._handleMouseEvent('mousemove', event, point);\n\t}\n\n\tvar navigator = window.navigator,\n\t\tmousedown, mousemove, mouseup;\n\tif (navigator.pointerEnabled || navigator.msPointerEnabled) {\n\t\tmousedown = 'pointerdown MSPointerDown';\n\t\tmousemove = 'pointermove MSPointerMove';\n\t\tmouseup = 'pointerup pointercancel MSPointerUp MSPointerCancel';\n\t} else {\n\t\tmousedown = 'touchstart';\n\t\tmousemove = 'touchmove';\n\t\tmouseup = 'touchend touchcancel';\n\t\tif (!('ontouchstart' in window && navigator.userAgent.match(\n\t\t\t\t/mobile|tablet|ip(ad|hone|od)|android|silk/i))) {\n\t\t\tmousedown += ' mousedown';\n\t\t\tmousemove += ' mousemove';\n\t\t\tmouseup += ' mouseup';\n\t\t}\n\t}\n\n\tvar viewEvents = {},\n\t\tdocEvents = {\n\t\t\tmouseout: function(event) {\n\t\t\t\tvar view = View._focused,\n\t\t\t\t\ttarget = DomEvent.getRelatedTarget(event);\n\t\t\t\tif (view && (!target || target.nodeName === 'HTML')) {\n\t\t\t\t\tvar offset = DomEvent.getOffset(event, view._element),\n\t\t\t\t\t\tx = offset.x,\n\t\t\t\t\t\tabs = Math.abs,\n\t\t\t\t\t\tax = abs(x),\n\t\t\t\t\t\tmax = 1 << 25,\n\t\t\t\t\t\tdiff = ax - max;\n\t\t\t\t\toffset.x = abs(diff) < ax ? diff * (x < 0 ? -1 : 1) : x;\n\t\t\t\t\thandleMouseMove(view, event, view.viewToProject(offset));\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tscroll: updateFocus\n\t\t};\n\n\tviewEvents[mousedown] = function(event) {\n\t\tvar view = View._focused = getView(event);\n\t\tif (!dragging) {\n\t\t\tdragging = true;\n\t\t\tview._handleMouseEvent('mousedown', event);\n\t\t}\n\t};\n\n\tdocEvents[mousemove] = function(event) {\n\t\tvar view = View._focused;\n\t\tif (!mouseDown) {\n\t\t\tvar target = getView(event);\n\t\t\tif (target) {\n\t\t\t\tif (view !== target) {\n\t\t\t\t\tif (view)\n\t\t\t\t\t\thandleMouseMove(view, event);\n\t\t\t\t\tif (!prevFocus)\n\t\t\t\t\t\tprevFocus = view;\n\t\t\t\t\tview = View._focused = tempFocus = target;\n\t\t\t\t}\n\t\t\t} else if (tempFocus && tempFocus === view) {\n\t\t\t\tif (prevFocus && !prevFocus.isInserted())\n\t\t\t\t\tprevFocus = null;\n\t\t\t\tview = View._focused = prevFocus;\n\t\t\t\tprevFocus = null;\n\t\t\t\tupdateFocus();\n\t\t\t}\n\t\t}\n\t\tif (view)\n\t\t\thandleMouseMove(view, event);\n\t};\n\n\tdocEvents[mousedown] = function() {\n\t\tmouseDown = true;\n\t};\n\n\tdocEvents[mouseup] = function(event) {\n\t\tvar view = View._focused;\n\t\tif (view && dragging)\n\t\t\tview._handleMouseEvent('mouseup', event);\n\t\tmouseDown = dragging = false;\n\t};\n\n\tDomEvent.add(document, docEvents);\n\n\tDomEvent.add(window, {\n\t\tload: updateFocus\n\t});\n\n\tvar called = false,\n\t\tprevented = false,\n\t\tfallbacks = {\n\t\t\tdoubleclick: 'click',\n\t\t\tmousedrag: 'mousemove'\n\t\t},\n\t\twasInView = false,\n\t\toverView,\n\t\tdownPoint,\n\t\tlastPoint,\n\t\tdownItem,\n\t\toverItem,\n\t\tdragItem,\n\t\tclickItem,\n\t\tclickTime,\n\t\tdblClick;\n\n\tfunction emitMouseEvent(obj, target, type, event, point, prevPoint,\n\t\t\tstopItem) {\n\t\tvar stopped = false,\n\t\t\tmouseEvent;\n\n\t\tfunction emit(obj, type) {\n\t\t\tif (obj.responds(type)) {\n\t\t\t\tif (!mouseEvent) {\n\t\t\t\t\tmouseEvent = new MouseEvent(type, event, point,\n\t\t\t\t\t\t\ttarget || obj,\n\t\t\t\t\t\t\tprevPoint ? point.subtract(prevPoint) : null);\n\t\t\t\t}\n\t\t\t\tif (obj.emit(type, mouseEvent)) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif (mouseEvent.prevented)\n\t\t\t\t\t\tprevented = true;\n\t\t\t\t\tif (mouseEvent.stopped)\n\t\t\t\t\t\treturn stopped = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar fallback = fallbacks[type];\n\t\t\t\tif (fallback)\n\t\t\t\t\treturn emit(obj, fallback);\n\t\t\t}\n\t\t}\n\n\t\twhile (obj && obj !== stopItem) {\n\t\t\tif (emit(obj, type))\n\t\t\t\tbreak;\n\t\t\tobj = obj._parent;\n\t\t}\n\t\treturn stopped;\n\t}\n\n\tfunction emitMouseEvents(view, hitItem, type, event, point, prevPoint) {\n\t\tview._project.removeOn(type);\n\t\tprevented = called = false;\n\t\treturn (dragItem && emitMouseEvent(dragItem, null, type, event,\n\t\t\t\t\tpoint, prevPoint)\n\t\t\t|| hitItem && hitItem !== dragItem\n\t\t\t\t&& !hitItem.isDescendant(dragItem)\n\t\t\t\t&& emitMouseEvent(hitItem, null, type === 'mousedrag' ?\n\t\t\t\t\t'mousemove' : type, event, point, prevPoint, dragItem)\n\t\t\t|| emitMouseEvent(view, dragItem || hitItem || view, type, event,\n\t\t\t\t\tpoint, prevPoint));\n\t}\n\n\tvar itemEventsMap = {\n\t\tmousedown: {\n\t\t\tmousedown: 1,\n\t\t\tmousedrag: 1,\n\t\t\tclick: 1,\n\t\t\tdoubleclick: 1\n\t\t},\n\t\tmouseup: {\n\t\t\tmouseup: 1,\n\t\t\tmousedrag: 1,\n\t\t\tclick: 1,\n\t\t\tdoubleclick: 1\n\t\t},\n\t\tmousemove: {\n\t\t\tmousedrag: 1,\n\t\t\tmousemove: 1,\n\t\t\tmouseenter: 1,\n\t\t\tmouseleave: 1\n\t\t}\n\t};\n\n\treturn {\n\t\t_viewEvents: viewEvents,\n\n\t\t_handleMouseEvent: function(type, event, point) {\n\t\t\tvar itemEvents = this._itemEvents,\n\t\t\t\thitItems = itemEvents.native[type],\n\t\t\t\tnativeMove = type === 'mousemove',\n\t\t\t\ttool = this._scope.tool,\n\t\t\t\tview = this;\n\n\t\t\tfunction responds(type) {\n\t\t\t\treturn itemEvents.virtual[type] || view.responds(type)\n\t\t\t\t\t\t|| tool && tool.responds(type);\n\t\t\t}\n\n\t\t\tif (nativeMove && dragging && responds('mousedrag'))\n\t\t\t\ttype = 'mousedrag';\n\t\t\tif (!point)\n\t\t\t\tpoint = this.getEventPoint(event);\n\n\t\t\tvar inView = this.getBounds().contains(point),\n\t\t\t\thit = hitItems && inView && view._project.hitTest(point, {\n\t\t\t\t\ttolerance: 0,\n\t\t\t\t\tfill: true,\n\t\t\t\t\tstroke: true\n\t\t\t\t}),\n\t\t\t\thitItem = hit && hit.item || null,\n\t\t\t\thandle = false,\n\t\t\t\tmouse = {};\n\t\t\tmouse[type.substr(5)] = true;\n\n\t\t\tif (hitItems && hitItem !== overItem) {\n\t\t\t\tif (overItem) {\n\t\t\t\t\temitMouseEvent(overItem, null, 'mouseleave', event, point);\n\t\t\t\t}\n\t\t\t\tif (hitItem) {\n\t\t\t\t\temitMouseEvent(hitItem, null, 'mouseenter', event, point);\n\t\t\t\t}\n\t\t\t\toverItem = hitItem;\n\t\t\t}\n\t\t\tif (wasInView ^ inView) {\n\t\t\t\temitMouseEvent(this, null, inView ? 'mouseenter' : 'mouseleave',\n\t\t\t\t\t\tevent, point);\n\t\t\t\toverView = inView ? this : null;\n\t\t\t\thandle = true;\n\t\t\t}\n\t\t\tif ((inView || mouse.drag) && !point.equals(lastPoint)) {\n\t\t\t\temitMouseEvents(this, hitItem, nativeMove ? type : 'mousemove',\n\t\t\t\t\t\tevent, point, lastPoint);\n\t\t\t\thandle = true;\n\t\t\t}\n\t\t\twasInView = inView;\n\t\t\tif (mouse.down && inView || mouse.up && downPoint) {\n\t\t\t\temitMouseEvents(this, hitItem, type, event, point, downPoint);\n\t\t\t\tif (mouse.down) {\n\t\t\t\t\tdblClick = hitItem === clickItem\n\t\t\t\t\t\t&& (Date.now() - clickTime < 300);\n\t\t\t\t\tdownItem = clickItem = hitItem;\n\t\t\t\t\tif (!prevented && hitItem) {\n\t\t\t\t\t\tvar item = hitItem;\n\t\t\t\t\t\twhile (item && !item.responds('mousedrag'))\n\t\t\t\t\t\t\titem = item._parent;\n\t\t\t\t\t\tif (item)\n\t\t\t\t\t\t\tdragItem = hitItem;\n\t\t\t\t\t}\n\t\t\t\t\tdownPoint = point;\n\t\t\t\t} else if (mouse.up) {\n\t\t\t\t\tif (!prevented && hitItem === downItem) {\n\t\t\t\t\t\tclickTime = Date.now();\n\t\t\t\t\t\temitMouseEvents(this, hitItem, dblClick ? 'doubleclick'\n\t\t\t\t\t\t\t\t: 'click', event, point, downPoint);\n\t\t\t\t\t\tdblClick = false;\n\t\t\t\t\t}\n\t\t\t\t\tdownItem = dragItem = null;\n\t\t\t\t}\n\t\t\t\twasInView = false;\n\t\t\t\thandle = true;\n\t\t\t}\n\t\t\tlastPoint = point;\n\t\t\tif (handle && tool) {\n\t\t\t\tcalled = tool._handleMouseEvent(type, event, point, mouse)\n\t\t\t\t\t|| called;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tevent.cancelable !== false\n\t\t\t\t&& (called && !mouse.move || mouse.down && responds('mouseup'))\n\t\t\t) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\n\t\t_handleKeyEvent: function(type, event, key, character) {\n\t\t\tvar scope = this._scope,\n\t\t\t\ttool = scope.tool,\n\t\t\t\tkeyEvent;\n\n\t\t\tfunction emit(obj) {\n\t\t\t\tif (obj.responds(type)) {\n\t\t\t\t\tpaper = scope;\n\t\t\t\t\tobj.emit(type, keyEvent = keyEvent\n\t\t\t\t\t\t\t|| new KeyEvent(type, event, key, character));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isVisible()) {\n\t\t\t\temit(this);\n\t\t\t\tif (tool && tool.responds(type))\n\t\t\t\t\temit(tool);\n\t\t\t}\n\t\t},\n\n\t\t_countItemEvent: function(type, sign) {\n\t\t\tvar itemEvents = this._itemEvents,\n\t\t\t\tnative = itemEvents.native,\n\t\t\t\tvirtual = itemEvents.virtual;\n\t\t\tfor (var key in itemEventsMap) {\n\t\t\t\tnative[key] = (native[key] || 0)\n\t\t\t\t\t\t+ (itemEventsMap[key][type] || 0) * sign;\n\t\t\t}\n\t\t\tvirtual[type] = (virtual[type] || 0) + sign;\n\t\t},\n\n\t\tstatics: {\n\t\t\tupdateFocus: updateFocus,\n\n\t\t\t_resetState: function() {\n\t\t\t\tdragging = mouseDown = called = wasInView = false;\n\t\t\t\tprevFocus = tempFocus = overView = downPoint = lastPoint =\n\t\t\t\t\tdownItem = overItem = dragItem = clickItem = clickTime =\n\t\t\t\t\tdblClick = null;\n\t\t\t}\n\t\t}\n\t};\n});\n\nvar CanvasView = View.extend({\n\t_class: 'CanvasView',\n\n\tinitialize: function CanvasView(project, canvas) {\n\t\tif (!(canvas instanceof window.HTMLCanvasElement)) {\n\t\t\tvar size = Size.read(arguments, 1);\n\t\t\tif (size.isZero())\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'Cannot create CanvasView with the provided argument: '\n\t\t\t\t\t\t+ Base.slice(arguments, 1));\n\t\t\tcanvas = CanvasProvider.getCanvas(size);\n\t\t}\n\t\tvar ctx = this._context = canvas.getContext('2d');\n\t\tctx.save();\n\t\tthis._pixelRatio = 1;\n\t\tif (!/^off|false$/.test(PaperScope.getAttribute(canvas, 'hidpi'))) {\n\t\t\tvar deviceRatio = window.devicePixelRatio || 1,\n\t\t\t\tbackingStoreRatio = DomElement.getPrefixed(ctx,\n\t\t\t\t\t\t'backingStorePixelRatio') || 1;\n\t\t\tthis._pixelRatio = deviceRatio / backingStoreRatio;\n\t\t}\n\t\tView.call(this, project, canvas);\n\t\tthis._needsUpdate = true;\n\t},\n\n\tremove: function remove() {\n\t\tthis._context.restore();\n\t\treturn remove.base.call(this);\n\t},\n\n\t_setElementSize: function _setElementSize(width, height) {\n\t\tvar pixelRatio = this._pixelRatio;\n\t\t_setElementSize.base.call(this, width * pixelRatio, height * pixelRatio);\n\t\tif (pixelRatio !== 1) {\n\t\t\tvar element = this._element,\n\t\t\t\tctx = this._context;\n\t\t\tif (!PaperScope.hasAttribute(element, 'resize')) {\n\t\t\t\tvar style = element.style;\n\t\t\t\tstyle.width = width + 'px';\n\t\t\t\tstyle.height = height + 'px';\n\t\t\t}\n\t\t\tctx.restore();\n\t\t\tctx.save();\n\t\t\tctx.scale(pixelRatio, pixelRatio);\n\t\t}\n\t},\n\n\tgetContext: function() {\n\t\treturn this._context;\n\t},\n\n\tgetPixelSize: function getPixelSize(size) {\n\t\tvar agent = paper.agent,\n\t\t\tpixels;\n\t\tif (agent && agent.firefox) {\n\t\t\tpixels = getPixelSize.base.call(this, size);\n\t\t} else {\n\t\t\tvar ctx = this._context,\n\t\t\t\tprevFont = ctx.font;\n\t\t\tctx.font = size + ' serif';\n\t\t\tpixels = parseFloat(ctx.font);\n\t\t\tctx.font = prevFont;\n\t\t}\n\t\treturn pixels;\n\t},\n\n\tgetTextWidth: function(font, lines) {\n\t\tvar ctx = this._context,\n\t\t\tprevFont = ctx.font,\n\t\t\twidth = 0;\n\t\tctx.font = font;\n\t\tfor (var i = 0, l = lines.length; i < l; i++)\n\t\t\twidth = Math.max(width, ctx.measureText(lines[i]).width);\n\t\tctx.font = prevFont;\n\t\treturn width;\n\t},\n\n\tupdate: function() {\n\t\tif (!this._needsUpdate)\n\t\t\treturn false;\n\t\tvar project = this._project,\n\t\t\tctx = this._context,\n\t\t\tsize = this._viewSize;\n\t\tctx.clearRect(0, 0, size.width + 1, size.height + 1);\n\t\tif (project)\n\t\t\tproject.draw(ctx, this._matrix, this._pixelRatio);\n\t\tthis._needsUpdate = false;\n\t\treturn true;\n\t}\n});\n\nvar Event = Base.extend({\n\t_class: 'Event',\n\n\tinitialize: function Event(event) {\n\t\tthis.event = event;\n\t\tthis.type = event && event.type;\n\t},\n\n\tprevented: false,\n\tstopped: false,\n\n\tpreventDefault: function() {\n\t\tthis.prevented = true;\n\t\tthis.event.preventDefault();\n\t},\n\n\tstopPropagation: function() {\n\t\tthis.stopped = true;\n\t\tthis.event.stopPropagation();\n\t},\n\n\tstop: function() {\n\t\tthis.stopPropagation();\n\t\tthis.preventDefault();\n\t},\n\n\tgetTimeStamp: function() {\n\t\treturn this.event.timeStamp;\n\t},\n\n\tgetModifiers: function() {\n\t\treturn Key.modifiers;\n\t}\n});\n\nvar KeyEvent = Event.extend({\n\t_class: 'KeyEvent',\n\n\tinitialize: function KeyEvent(type, event, key, character) {\n\t\tthis.type = type;\n\t\tthis.event = event;\n\t\tthis.key = key;\n\t\tthis.character = character;\n\t},\n\n\ttoString: function() {\n\t\treturn \"{ type: '\" + this.type\n\t\t\t\t+ \"', key: '\" + this.key\n\t\t\t\t+ \"', character: '\" + this.character\n\t\t\t\t+ \"', modifiers: \" + this.getModifiers()\n\t\t\t\t+ \" }\";\n\t}\n});\n\nvar Key = new function() {\n\tvar keyLookup = {\n\t\t\t'\\t': 'tab',\n\t\t\t' ': 'space',\n\t\t\t'\\b': 'backspace',\n\t\t\t'\\x7f': 'delete',\n\t\t\t'Spacebar': 'space',\n\t\t\t'Del': 'delete',\n\t\t\t'Win': 'meta',\n\t\t\t'Esc': 'escape'\n\t\t},\n\n\t\tcharLookup = {\n\t\t\t'tab': '\\t',\n\t\t\t'space': ' ',\n\t\t\t'enter': '\\r'\n\t\t},\n\n\t\tkeyMap = {},\n\t\tcharMap = {},\n\t\tmetaFixMap,\n\t\tdownKey,\n\n\t\tmodifiers = new Base({\n\t\t\tshift: false,\n\t\t\tcontrol: false,\n\t\t\talt: false,\n\t\t\tmeta: false,\n\t\t\tcapsLock: false,\n\t\t\tspace: false\n\t\t}).inject({\n\t\t\toption: {\n\t\t\t\tget: function() {\n\t\t\t\t\treturn this.alt;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tcommand: {\n\t\t\t\tget: function() {\n\t\t\t\t\tvar agent = paper && paper.agent;\n\t\t\t\t\treturn agent && agent.mac ? this.meta : this.control;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\tfunction getKey(event) {\n\t\tvar key = event.key || event.keyIdentifier;\n\t\tkey = /^U\\+/.test(key)\n\t\t\t\t? String.fromCharCode(parseInt(key.substr(2), 16))\n\t\t\t\t: /^Arrow[A-Z]/.test(key) ? key.substr(5)\n\t\t\t\t: key === 'Unidentified'  || key === undefined\n\t\t\t\t\t? String.fromCharCode(event.keyCode)\n\t\t\t\t\t: key;\n\t\treturn keyLookup[key] ||\n\t\t\t\t(key.length > 1 ? Base.hyphenate(key) : key.toLowerCase());\n\t}\n\n\tfunction handleKey(down, key, character, event) {\n\t\tvar type = down ? 'keydown' : 'keyup',\n\t\t\tview = View._focused,\n\t\t\tname;\n\t\tkeyMap[key] = down;\n\t\tif (down) {\n\t\t\tcharMap[key] = character;\n\t\t} else {\n\t\t\tdelete charMap[key];\n\t\t}\n\t\tif (key.length > 1 && (name = Base.camelize(key)) in modifiers) {\n\t\t\tmodifiers[name] = down;\n\t\t\tvar agent = paper && paper.agent;\n\t\t\tif (name === 'meta' && agent && agent.mac) {\n\t\t\t\tif (down) {\n\t\t\t\t\tmetaFixMap = {};\n\t\t\t\t} else {\n\t\t\t\t\tfor (var k in metaFixMap) {\n\t\t\t\t\t\tif (k in charMap)\n\t\t\t\t\t\t\thandleKey(false, k, metaFixMap[k], event);\n\t\t\t\t\t}\n\t\t\t\t\tmetaFixMap = null;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (down && metaFixMap) {\n\t\t\tmetaFixMap[key] = character;\n\t\t}\n\t\tif (view) {\n\t\t\tview._handleKeyEvent(down ? 'keydown' : 'keyup', event, key,\n\t\t\t\t\tcharacter);\n\t\t}\n\t}\n\n\tDomEvent.add(document, {\n\t\tkeydown: function(event) {\n\t\t\tvar key = getKey(event),\n\t\t\t\tagent = paper && paper.agent;\n\t\t\tif (key.length > 1 || agent && (agent.chrome && (event.altKey\n\t\t\t\t\t\t|| agent.mac && event.metaKey\n\t\t\t\t\t\t|| !agent.mac && event.ctrlKey))) {\n\t\t\t\thandleKey(true, key,\n\t\t\t\t\t\tcharLookup[key] || (key.length > 1 ? '' : key), event);\n\t\t\t} else {\n\t\t\t\tdownKey = key;\n\t\t\t}\n\t\t},\n\n\t\tkeypress: function(event) {\n\t\t\tif (downKey) {\n\t\t\t\tvar key = getKey(event),\n\t\t\t\t\tcode = event.charCode,\n\t\t\t\t\tcharacter = code >= 32 ? String.fromCharCode(code)\n\t\t\t\t\t\t: key.length > 1 ? '' : key;\n\t\t\t\tif (key !== downKey) {\n\t\t\t\t\tkey = character.toLowerCase();\n\t\t\t\t}\n\t\t\t\thandleKey(true, key, character, event);\n\t\t\t\tdownKey = null;\n\t\t\t}\n\t\t},\n\n\t\tkeyup: function(event) {\n\t\t\tvar key = getKey(event);\n\t\t\tif (key in charMap)\n\t\t\t\thandleKey(false, key, charMap[key], event);\n\t\t}\n\t});\n\n\tDomEvent.add(window, {\n\t\tblur: function(event) {\n\t\t\tfor (var key in charMap)\n\t\t\t\thandleKey(false, key, charMap[key], event);\n\t\t}\n\t});\n\n\treturn {\n\t\tmodifiers: modifiers,\n\n\t\tisDown: function(key) {\n\t\t\treturn !!keyMap[key];\n\t\t}\n\t};\n};\n\nvar MouseEvent = Event.extend({\n\t_class: 'MouseEvent',\n\n\tinitialize: function MouseEvent(type, event, point, target, delta) {\n\t\tthis.type = type;\n\t\tthis.event = event;\n\t\tthis.point = point;\n\t\tthis.target = target;\n\t\tthis.delta = delta;\n\t},\n\n\ttoString: function() {\n\t\treturn \"{ type: '\" + this.type\n\t\t\t\t+ \"', point: \" + this.point\n\t\t\t\t+ ', target: ' + this.target\n\t\t\t\t+ (this.delta ? ', delta: ' + this.delta : '')\n\t\t\t\t+ ', modifiers: ' + this.getModifiers()\n\t\t\t\t+ ' }';\n\t}\n});\n\nvar ToolEvent = Event.extend({\n\t_class: 'ToolEvent',\n\t_item: null,\n\n\tinitialize: function ToolEvent(tool, type, event) {\n\t\tthis.tool = tool;\n\t\tthis.type = type;\n\t\tthis.event = event;\n\t},\n\n\t_choosePoint: function(point, toolPoint) {\n\t\treturn point ? point : toolPoint ? toolPoint.clone() : null;\n\t},\n\n\tgetPoint: function() {\n\t\treturn this._choosePoint(this._point, this.tool._point);\n\t},\n\n\tsetPoint: function(point) {\n\t\tthis._point = point;\n\t},\n\n\tgetLastPoint: function() {\n\t\treturn this._choosePoint(this._lastPoint, this.tool._lastPoint);\n\t},\n\n\tsetLastPoint: function(lastPoint) {\n\t\tthis._lastPoint = lastPoint;\n\t},\n\n\tgetDownPoint: function() {\n\t\treturn this._choosePoint(this._downPoint, this.tool._downPoint);\n\t},\n\n\tsetDownPoint: function(downPoint) {\n\t\tthis._downPoint = downPoint;\n\t},\n\n\tgetMiddlePoint: function() {\n\t\tif (!this._middlePoint && this.tool._lastPoint) {\n\t\t\treturn this.tool._point.add(this.tool._lastPoint).divide(2);\n\t\t}\n\t\treturn this._middlePoint;\n\t},\n\n\tsetMiddlePoint: function(middlePoint) {\n\t\tthis._middlePoint = middlePoint;\n\t},\n\n\tgetDelta: function() {\n\t\treturn !this._delta && this.tool._lastPoint\n\t\t\t\t? this.tool._point.subtract(this.tool._lastPoint)\n\t\t\t\t: this._delta;\n\t},\n\n\tsetDelta: function(delta) {\n\t\tthis._delta = delta;\n\t},\n\n\tgetCount: function() {\n\t\treturn this.tool[/^mouse(down|up)$/.test(this.type)\n\t\t\t\t? '_downCount' : '_moveCount'];\n\t},\n\n\tsetCount: function(count) {\n\t\tthis.tool[/^mouse(down|up)$/.test(this.type) ? 'downCount' : 'count']\n\t\t\t= count;\n\t},\n\n\tgetItem: function() {\n\t\tif (!this._item) {\n\t\t\tvar result = this.tool._scope.project.hitTest(this.getPoint());\n\t\t\tif (result) {\n\t\t\t\tvar item = result.item,\n\t\t\t\t\tparent = item._parent;\n\t\t\t\twhile (/^(Group|CompoundPath)$/.test(parent._class)) {\n\t\t\t\t\titem = parent;\n\t\t\t\t\tparent = parent._parent;\n\t\t\t\t}\n\t\t\t\tthis._item = item;\n\t\t\t}\n\t\t}\n\t\treturn this._item;\n\t},\n\n\tsetItem: function(item) {\n\t\tthis._item = item;\n\t},\n\n\ttoString: function() {\n\t\treturn '{ type: ' + this.type\n\t\t\t\t+ ', point: ' + this.getPoint()\n\t\t\t\t+ ', count: ' + this.getCount()\n\t\t\t\t+ ', modifiers: ' + this.getModifiers()\n\t\t\t\t+ ' }';\n\t}\n});\n\nvar Tool = PaperScopeItem.extend({\n\t_class: 'Tool',\n\t_list: 'tools',\n\t_reference: 'tool',\n\t_events: ['onMouseDown', 'onMouseUp', 'onMouseDrag', 'onMouseMove',\n\t\t\t'onActivate', 'onDeactivate', 'onEditOptions', 'onKeyDown',\n\t\t\t'onKeyUp'],\n\n\tinitialize: function Tool(props) {\n\t\tPaperScopeItem.call(this);\n\t\tthis._moveCount = -1;\n\t\tthis._downCount = -1;\n\t\tthis.set(props);\n\t},\n\n\tgetMinDistance: function() {\n\t\treturn this._minDistance;\n\t},\n\n\tsetMinDistance: function(minDistance) {\n\t\tthis._minDistance = minDistance;\n\t\tif (minDistance != null && this._maxDistance != null\n\t\t\t\t&& minDistance > this._maxDistance) {\n\t\t\tthis._maxDistance = minDistance;\n\t\t}\n\t},\n\n\tgetMaxDistance: function() {\n\t\treturn this._maxDistance;\n\t},\n\n\tsetMaxDistance: function(maxDistance) {\n\t\tthis._maxDistance = maxDistance;\n\t\tif (this._minDistance != null && maxDistance != null\n\t\t\t\t&& maxDistance < this._minDistance) {\n\t\t\tthis._minDistance = maxDistance;\n\t\t}\n\t},\n\n\tgetFixedDistance: function() {\n\t\treturn this._minDistance == this._maxDistance\n\t\t\t? this._minDistance : null;\n\t},\n\n\tsetFixedDistance: function(distance) {\n\t\tthis._minDistance = this._maxDistance = distance;\n\t},\n\n\t_handleMouseEvent: function(type, event, point, mouse) {\n\t\tpaper = this._scope;\n\t\tif (mouse.drag && !this.responds(type))\n\t\t\ttype = 'mousemove';\n\t\tvar move = mouse.move || mouse.drag,\n\t\t\tresponds = this.responds(type),\n\t\t\tminDistance = this.minDistance,\n\t\t\tmaxDistance = this.maxDistance,\n\t\t\tcalled = false,\n\t\t\ttool = this;\n\t\tfunction update(minDistance, maxDistance) {\n\t\t\tvar pt = point,\n\t\t\t\ttoolPoint = move ? tool._point : (tool._downPoint || pt);\n\t\t\tif (move) {\n\t\t\t\tif (tool._moveCount >= 0 && pt.equals(toolPoint)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (toolPoint && (minDistance != null || maxDistance != null)) {\n\t\t\t\t\tvar vector = pt.subtract(toolPoint),\n\t\t\t\t\t\tdistance = vector.getLength();\n\t\t\t\t\tif (distance < (minDistance || 0))\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tif (maxDistance) {\n\t\t\t\t\t\tpt = toolPoint.add(vector.normalize(\n\t\t\t\t\t\t\t\tMath.min(distance, maxDistance)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttool._moveCount++;\n\t\t\t}\n\t\t\ttool._point = pt;\n\t\t\ttool._lastPoint = toolPoint || pt;\n\t\t\tif (mouse.down) {\n\t\t\t\ttool._moveCount = -1;\n\t\t\t\ttool._downPoint = pt;\n\t\t\t\ttool._downCount++;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tfunction emit() {\n\t\t\tif (responds) {\n\t\t\t\tcalled = tool.emit(type, new ToolEvent(tool, type, event))\n\t\t\t\t\t\t|| called;\n\t\t\t}\n\t\t}\n\n\t\tif (mouse.down) {\n\t\t\tupdate();\n\t\t\temit();\n\t\t} else if (mouse.up) {\n\t\t\tupdate(null, maxDistance);\n\t\t\temit();\n\t\t} else if (responds) {\n\t\t\twhile (update(minDistance, maxDistance))\n\t\t\t\temit();\n\t\t}\n\t\treturn called;\n\t}\n\n});\n\nvar Tween = Base.extend(Emitter, {\n\t_class: 'Tween',\n\n\tstatics: {\n\t\teasings: {\n\t\t\tlinear: function(t) {\n\t\t\t\treturn t;\n\t\t\t},\n\n\t\t\teaseInQuad: function(t) {\n\t\t\t\treturn t * t;\n\t\t\t},\n\n\t\t\teaseOutQuad: function(t) {\n\t\t\t\treturn t * (2 - t);\n\t\t\t},\n\n\t\t\teaseInOutQuad: function(t) {\n\t\t\t\treturn t < 0.5\n\t\t\t\t\t? 2 * t * t\n\t\t\t\t\t: -1 + 2 * (2 - t) * t;\n\t\t\t},\n\n\t\t\teaseInCubic: function(t) {\n\t\t\t\treturn t * t * t;\n\t\t\t},\n\n\t\t\teaseOutCubic: function(t) {\n\t\t\t\treturn --t * t * t + 1;\n\t\t\t},\n\n\t\t\teaseInOutCubic: function(t) {\n\t\t\t\treturn t < 0.5\n\t\t\t\t\t? 4 * t * t * t\n\t\t\t\t\t: (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n\t\t\t},\n\n\t\t\teaseInQuart: function(t) {\n\t\t\t\treturn t * t * t * t;\n\t\t\t},\n\n\t\t\teaseOutQuart: function(t) {\n\t\t\t\treturn 1 - (--t) * t * t * t;\n\t\t\t},\n\n\t\t\teaseInOutQuart: function(t) {\n\t\t\t\treturn t < 0.5\n\t\t\t\t\t? 8 * t * t * t * t\n\t\t\t\t\t: 1 - 8 * (--t) * t * t * t;\n\t\t\t},\n\n\t\t\teaseInQuint: function(t) {\n\t\t\t\treturn t * t * t * t * t;\n\t\t\t},\n\n\t\t\teaseOutQuint: function(t) {\n\t\t\t\treturn 1 + --t * t * t * t * t;\n\t\t\t},\n\n\t\t\teaseInOutQuint: function(t) {\n\t\t\t\treturn t < 0.5\n\t\t\t\t\t? 16 * t * t * t * t * t\n\t\t\t\t\t: 1 + 16 * (--t) * t * t * t * t;\n\t\t\t}\n\t\t}\n\t},\n\n\tinitialize: function Tween(object, from, to, duration, easing, start) {\n\t\tthis.object = object;\n\t\tvar type = typeof easing;\n\t\tvar isFunction = type === 'function';\n\t\tthis.type = isFunction\n\t\t\t? type\n\t\t\t: type === 'string'\n\t\t\t\t? easing\n\t\t\t\t: 'linear';\n\t\tthis.easing = isFunction ? easing : Tween.easings[this.type];\n\t\tthis.duration = duration;\n\t\tthis.running = false;\n\n\t\tthis._then = null;\n\t\tthis._startTime = null;\n\t\tvar state = from || to;\n\t\tthis._keys = state ? Object.keys(state) : [];\n\t\tthis._parsedKeys = this._parseKeys(this._keys);\n\t\tthis._from = state && this._getState(from);\n\t\tthis._to = state && this._getState(to);\n\t\tif (start !== false) {\n\t\t\tthis.start();\n\t\t}\n\t},\n\n\tthen: function(then) {\n\t\tthis._then = then;\n\t\treturn this;\n\t},\n\n\tstart: function() {\n\t\tthis._startTime = null;\n\t\tthis.running = true;\n\t\treturn this;\n\t},\n\n\tstop: function() {\n\t\tthis.running = false;\n\t\treturn this;\n\t},\n\n\tupdate: function(progress) {\n\t\tif (this.running) {\n\t\t\tif (progress > 1) {\n\t\t\t\tprogress = 1;\n\t\t\t\tthis.running = false;\n\t\t\t}\n\n\t\t\tvar factor = this.easing(progress),\n\t\t\t\tkeys = this._keys,\n\t\t\t\tgetValue = function(value) {\n\t\t\t\t\treturn typeof value === 'function'\n\t\t\t\t\t\t? value(factor, progress)\n\t\t\t\t\t\t: value;\n\t\t\t\t};\n\t\t\tfor (var i = 0, l = keys && keys.length; i < l; i++) {\n\t\t\t\tvar key = keys[i],\n\t\t\t\t\tfrom = getValue(this._from[key]),\n\t\t\t\t\tto = getValue(this._to[key]),\n\t\t\t\t\tvalue = (from && to && from.__add && to.__add)\n\t\t\t\t\t\t? to.__subtract(from).__multiply(factor).__add(from)\n\t\t\t\t\t\t: ((to - from) * factor) + from;\n\t\t\t\tthis._setProperty(this._parsedKeys[key], value);\n\t\t\t}\n\n\t\t\tif (!this.running && this._then) {\n\t\t\t\tthis._then(this.object);\n\t\t\t}\n\t\t\tif (this.responds('update')) {\n\t\t\t\tthis.emit('update', new Base({\n\t\t\t\t\tprogress: progress,\n\t\t\t\t\tfactor: factor\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\t_events: {\n\t\tonUpdate: {}\n\t},\n\n\t_handleFrame: function(time) {\n\t\tvar startTime = this._startTime,\n\t\t\tprogress = startTime\n\t\t\t\t? (time - startTime) / this.duration\n\t\t\t\t: 0;\n\t\tif (!startTime) {\n\t\t\tthis._startTime = time;\n\t\t}\n\t\tthis.update(progress);\n\t},\n\n\t_getState: function(state) {\n\t\tvar keys = this._keys,\n\t\t\tresult = {};\n\t\tfor (var i = 0, l = keys.length; i < l; i++) {\n\t\t\tvar key = keys[i],\n\t\t\t\tpath = this._parsedKeys[key],\n\t\t\t\tcurrent = this._getProperty(path),\n\t\t\t\tvalue;\n\t\t\tif (state) {\n\t\t\t\tvar resolved = this._resolveValue(current, state[key]);\n\t\t\t\tthis._setProperty(path, resolved);\n\t\t\t\tvalue = this._getProperty(path);\n\t\t\t\tvalue = value && value.clone ? value.clone() : value;\n\t\t\t\tthis._setProperty(path, current);\n\t\t\t} else {\n\t\t\t\tvalue = current && current.clone ? current.clone() : current;\n\t\t\t}\n\t\t\tresult[key] = value;\n\t\t}\n\t\treturn result;\n\t},\n\n\t_resolveValue: function(current, value) {\n\t\tif (value) {\n\t\t\tif (Array.isArray(value) && value.length === 2) {\n\t\t\t\tvar operator = value[0];\n\t\t\t\treturn (\n\t\t\t\t\toperator &&\n\t\t\t\t\toperator.match &&\n\t\t\t\t\toperator.match(/^[+\\-\\*\\/]=/)\n\t\t\t\t)\n\t\t\t\t\t? this._calculate(current, operator[0], value[1])\n\t\t\t\t\t: value;\n\t\t\t} else if (typeof value === 'string') {\n\t\t\t\tvar match = value.match(/^[+\\-*/]=(.*)/);\n\t\t\t\tif (match) {\n\t\t\t\t\tvar parsed = JSON.parse(match[1].replace(\n\t\t\t\t\t\t/(['\"])?([a-zA-Z0-9_]+)(['\"])?:/g,\n\t\t\t\t\t\t'\"$2\": '\n\t\t\t\t\t));\n\t\t\t\t\treturn this._calculate(current, value[0], parsed);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t},\n\n\t_calculate: function(left, operator, right) {\n\t\treturn paper.PaperScript.calculateBinary(left, operator, right);\n\t},\n\n\t_parseKeys: function(keys) {\n\t\tvar parsed = {};\n\t\tfor (var i = 0, l = keys.length; i < l; i++) {\n\t\t\tvar key = keys[i],\n\t\t\t\tpath = key\n\t\t\t\t\t.replace(/\\.([^.]*)/g, '/$1')\n\t\t\t\t\t.replace(/\\[['\"]?([^'\"\\]]*)['\"]?\\]/g, '/$1');\n\t\t\tparsed[key] = path.split('/');\n\t\t}\n\t\treturn parsed;\n\t},\n\n\t_getProperty: function(path, offset) {\n\t\tvar obj = this.object;\n\t\tfor (var i = 0, l = path.length - (offset || 0); i < l && obj; i++) {\n\t\t\tobj = obj[path[i]];\n\t\t}\n\t\treturn obj;\n\t},\n\n\t_setProperty: function(path, value) {\n\t\tvar dest = this._getProperty(path, 1);\n\t\tif (dest) {\n\t\t\tdest[path[path.length - 1]] = value;\n\t\t}\n\t}\n});\n\nvar Http = {\n\trequest: function(options) {\n\t\tvar xhr = new self.XMLHttpRequest();\n\t\txhr.open((options.method || 'get').toUpperCase(), options.url,\n\t\t\t\tBase.pick(options.async, true));\n\t\tif (options.mimeType)\n\t\t\txhr.overrideMimeType(options.mimeType);\n\t\txhr.onload = function() {\n\t\t\tvar status = xhr.status;\n\t\t\tif (status === 0 || status === 200) {\n\t\t\t\tif (options.onLoad) {\n\t\t\t\t\toptions.onLoad.call(xhr, xhr.responseText);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\txhr.onerror();\n\t\t\t}\n\t\t};\n\t\txhr.onerror = function() {\n\t\t\tvar status = xhr.status,\n\t\t\t\tmessage = 'Could not load \"' + options.url + '\" (Status: '\n\t\t\t\t\t\t+ status + ')';\n\t\t\tif (options.onError) {\n\t\t\t\toptions.onError(message, status);\n\t\t\t} else {\n\t\t\t\tthrow new Error(message);\n\t\t\t}\n\t\t};\n\t\treturn xhr.send(null);\n\t}\n};\n\nvar CanvasProvider = {\n\tcanvases: [],\n\n\tgetCanvas: function(width, height) {\n\t\tif (!window)\n\t\t\treturn null;\n\t\tvar canvas,\n\t\t\tclear = true;\n\t\tif (typeof width === 'object') {\n\t\t\theight = width.height;\n\t\t\twidth = width.width;\n\t\t}\n\t\tif (this.canvases.length) {\n\t\t\tcanvas = this.canvases.pop();\n\t\t} else {\n\t\t\tcanvas = document.createElement('canvas');\n\t\t\tclear = false;\n\t\t}\n\t\tvar ctx = canvas.getContext('2d');\n\t\tif (!ctx) {\n\t\t\tthrow new Error('Canvas ' + canvas +\n\t\t\t\t\t' is unable to provide a 2D context.');\n\t\t}\n\t\tif (canvas.width === width && canvas.height === height) {\n\t\t\tif (clear)\n\t\t\t\tctx.clearRect(0, 0, width + 1, height + 1);\n\t\t} else {\n\t\t\tcanvas.width = width;\n\t\t\tcanvas.height = height;\n\t\t}\n\t\tctx.save();\n\t\treturn canvas;\n\t},\n\n\tgetContext: function(width, height) {\n\t\tvar canvas = this.getCanvas(width, height);\n\t\treturn canvas ? canvas.getContext('2d') : null;\n\t},\n\n\trelease: function(obj) {\n\t\tvar canvas = obj && obj.canvas ? obj.canvas : obj;\n\t\tif (canvas && canvas.getContext) {\n\t\t\tcanvas.getContext('2d').restore();\n\t\t\tthis.canvases.push(canvas);\n\t\t}\n\t}\n};\n\nvar BlendMode = new function() {\n\tvar min = Math.min,\n\t\tmax = Math.max,\n\t\tabs = Math.abs,\n\t\tsr, sg, sb, sa,\n\t\tbr, bg, bb, ba,\n\t\tdr, dg, db;\n\n\tfunction getLum(r, g, b) {\n\t\treturn 0.2989 * r + 0.587 * g + 0.114 * b;\n\t}\n\n\tfunction setLum(r, g, b, l) {\n\t\tvar d = l - getLum(r, g, b);\n\t\tdr = r + d;\n\t\tdg = g + d;\n\t\tdb = b + d;\n\t\tvar l = getLum(dr, dg, db),\n\t\t\tmn = min(dr, dg, db),\n\t\t\tmx = max(dr, dg, db);\n\t\tif (mn < 0) {\n\t\t\tvar lmn = l - mn;\n\t\t\tdr = l + (dr - l) * l / lmn;\n\t\t\tdg = l + (dg - l) * l / lmn;\n\t\t\tdb = l + (db - l) * l / lmn;\n\t\t}\n\t\tif (mx > 255) {\n\t\t\tvar ln = 255 - l,\n\t\t\t\tmxl = mx - l;\n\t\t\tdr = l + (dr - l) * ln / mxl;\n\t\t\tdg = l + (dg - l) * ln / mxl;\n\t\t\tdb = l + (db - l) * ln / mxl;\n\t\t}\n\t}\n\n\tfunction getSat(r, g, b) {\n\t\treturn max(r, g, b) - min(r, g, b);\n\t}\n\n\tfunction setSat(r, g, b, s) {\n\t\tvar col = [r, g, b],\n\t\t\tmx = max(r, g, b),\n\t\t\tmn = min(r, g, b),\n\t\t\tmd;\n\t\tmn = mn === r ? 0 : mn === g ? 1 : 2;\n\t\tmx = mx === r ? 0 : mx === g ? 1 : 2;\n\t\tmd = min(mn, mx) === 0 ? max(mn, mx) === 1 ? 2 : 1 : 0;\n\t\tif (col[mx] > col[mn]) {\n\t\t\tcol[md] = (col[md] - col[mn]) * s / (col[mx] - col[mn]);\n\t\t\tcol[mx] = s;\n\t\t} else {\n\t\t\tcol[md] = col[mx] = 0;\n\t\t}\n\t\tcol[mn] = 0;\n\t\tdr = col[0];\n\t\tdg = col[1];\n\t\tdb = col[2];\n\t}\n\n\tvar modes = {\n\t\tmultiply: function() {\n\t\t\tdr = br * sr / 255;\n\t\t\tdg = bg * sg / 255;\n\t\t\tdb = bb * sb / 255;\n\t\t},\n\n\t\tscreen: function() {\n\t\t\tdr = br + sr - (br * sr / 255);\n\t\t\tdg = bg + sg - (bg * sg / 255);\n\t\t\tdb = bb + sb - (bb * sb / 255);\n\t\t},\n\n\t\toverlay: function() {\n\t\t\tdr = br < 128 ? 2 * br * sr / 255 : 255 - 2 * (255 - br) * (255 - sr) / 255;\n\t\t\tdg = bg < 128 ? 2 * bg * sg / 255 : 255 - 2 * (255 - bg) * (255 - sg) / 255;\n\t\t\tdb = bb < 128 ? 2 * bb * sb / 255 : 255 - 2 * (255 - bb) * (255 - sb) / 255;\n\t\t},\n\n\t\t'soft-light': function() {\n\t\t\tvar t = sr * br / 255;\n\t\t\tdr = t + br * (255 - (255 - br) * (255 - sr) / 255 - t) / 255;\n\t\t\tt = sg * bg / 255;\n\t\t\tdg = t + bg * (255 - (255 - bg) * (255 - sg) / 255 - t) / 255;\n\t\t\tt = sb * bb / 255;\n\t\t\tdb = t + bb * (255 - (255 - bb) * (255 - sb) / 255 - t) / 255;\n\t\t},\n\n\t\t'hard-light': function() {\n\t\t\tdr = sr < 128 ? 2 * sr * br / 255 : 255 - 2 * (255 - sr) * (255 - br) / 255;\n\t\t\tdg = sg < 128 ? 2 * sg * bg / 255 : 255 - 2 * (255 - sg) * (255 - bg) / 255;\n\t\t\tdb = sb < 128 ? 2 * sb * bb / 255 : 255 - 2 * (255 - sb) * (255 - bb) / 255;\n\t\t},\n\n\t\t'color-dodge': function() {\n\t\t\tdr = br === 0 ? 0 : sr === 255 ? 255 : min(255, 255 * br / (255 - sr));\n\t\t\tdg = bg === 0 ? 0 : sg === 255 ? 255 : min(255, 255 * bg / (255 - sg));\n\t\t\tdb = bb === 0 ? 0 : sb === 255 ? 255 : min(255, 255 * bb / (255 - sb));\n\t\t},\n\n\t\t'color-burn': function() {\n\t\t\tdr = br === 255 ? 255 : sr === 0 ? 0 : max(0, 255 - (255 - br) * 255 / sr);\n\t\t\tdg = bg === 255 ? 255 : sg === 0 ? 0 : max(0, 255 - (255 - bg) * 255 / sg);\n\t\t\tdb = bb === 255 ? 255 : sb === 0 ? 0 : max(0, 255 - (255 - bb) * 255 / sb);\n\t\t},\n\n\t\tdarken: function() {\n\t\t\tdr = br < sr ? br : sr;\n\t\t\tdg = bg < sg ? bg : sg;\n\t\t\tdb = bb < sb ? bb : sb;\n\t\t},\n\n\t\tlighten: function() {\n\t\t\tdr = br > sr ? br : sr;\n\t\t\tdg = bg > sg ? bg : sg;\n\t\t\tdb = bb > sb ? bb : sb;\n\t\t},\n\n\t\tdifference: function() {\n\t\t\tdr = br - sr;\n\t\t\tif (dr < 0)\n\t\t\t\tdr = -dr;\n\t\t\tdg = bg - sg;\n\t\t\tif (dg < 0)\n\t\t\t\tdg = -dg;\n\t\t\tdb = bb - sb;\n\t\t\tif (db < 0)\n\t\t\t\tdb = -db;\n\t\t},\n\n\t\texclusion: function() {\n\t\t\tdr = br + sr * (255 - br - br) / 255;\n\t\t\tdg = bg + sg * (255 - bg - bg) / 255;\n\t\t\tdb = bb + sb * (255 - bb - bb) / 255;\n\t\t},\n\n\t\thue: function() {\n\t\t\tsetSat(sr, sg, sb, getSat(br, bg, bb));\n\t\t\tsetLum(dr, dg, db, getLum(br, bg, bb));\n\t\t},\n\n\t\tsaturation: function() {\n\t\t\tsetSat(br, bg, bb, getSat(sr, sg, sb));\n\t\t\tsetLum(dr, dg, db, getLum(br, bg, bb));\n\t\t},\n\n\t\tluminosity: function() {\n\t\t\tsetLum(br, bg, bb, getLum(sr, sg, sb));\n\t\t},\n\n\t\tcolor: function() {\n\t\t\tsetLum(sr, sg, sb, getLum(br, bg, bb));\n\t\t},\n\n\t\tadd: function() {\n\t\t\tdr = min(br + sr, 255);\n\t\t\tdg = min(bg + sg, 255);\n\t\t\tdb = min(bb + sb, 255);\n\t\t},\n\n\t\tsubtract: function() {\n\t\t\tdr = max(br - sr, 0);\n\t\t\tdg = max(bg - sg, 0);\n\t\t\tdb = max(bb - sb, 0);\n\t\t},\n\n\t\taverage: function() {\n\t\t\tdr = (br + sr) / 2;\n\t\t\tdg = (bg + sg) / 2;\n\t\t\tdb = (bb + sb) / 2;\n\t\t},\n\n\t\tnegation: function() {\n\t\t\tdr = 255 - abs(255 - sr - br);\n\t\t\tdg = 255 - abs(255 - sg - bg);\n\t\t\tdb = 255 - abs(255 - sb - bb);\n\t\t}\n\t};\n\n\tvar nativeModes = this.nativeModes = Base.each([\n\t\t'source-over', 'source-in', 'source-out', 'source-atop',\n\t\t'destination-over', 'destination-in', 'destination-out',\n\t\t'destination-atop', 'lighter', 'darker', 'copy', 'xor'\n\t], function(mode) {\n\t\tthis[mode] = true;\n\t}, {});\n\n\tvar ctx = CanvasProvider.getContext(1, 1);\n\tif (ctx) {\n\t\tBase.each(modes, function(func, mode) {\n\t\t\tvar darken = mode === 'darken',\n\t\t\t\tok = false;\n\t\t\tctx.save();\n\t\t\ttry {\n\t\t\t\tctx.fillStyle = darken ? '#300' : '#a00';\n\t\t\t\tctx.fillRect(0, 0, 1, 1);\n\t\t\t\tctx.globalCompositeOperation = mode;\n\t\t\t\tif (ctx.globalCompositeOperation === mode) {\n\t\t\t\t\tctx.fillStyle = darken ? '#a00' : '#300';\n\t\t\t\t\tctx.fillRect(0, 0, 1, 1);\n\t\t\t\t\tok = ctx.getImageData(0, 0, 1, 1).data[0] !== darken\n\t\t\t\t\t\t\t? 170 : 51;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t\tctx.restore();\n\t\t\tnativeModes[mode] = ok;\n\t\t});\n\t\tCanvasProvider.release(ctx);\n\t}\n\n\tthis.process = function(mode, srcContext, dstContext, alpha, offset) {\n\t\tvar srcCanvas = srcContext.canvas,\n\t\t\tnormal = mode === 'normal';\n\t\tif (normal || nativeModes[mode]) {\n\t\t\tdstContext.save();\n\t\t\tdstContext.setTransform(1, 0, 0, 1, 0, 0);\n\t\t\tdstContext.globalAlpha = alpha;\n\t\t\tif (!normal)\n\t\t\t\tdstContext.globalCompositeOperation = mode;\n\t\t\tdstContext.drawImage(srcCanvas, offset.x, offset.y);\n\t\t\tdstContext.restore();\n\t\t} else {\n\t\t\tvar process = modes[mode];\n\t\t\tif (!process)\n\t\t\t\treturn;\n\t\t\tvar dstData = dstContext.getImageData(offset.x, offset.y,\n\t\t\t\t\tsrcCanvas.width, srcCanvas.height),\n\t\t\t\tdst = dstData.data,\n\t\t\t\tsrc = srcContext.getImageData(0, 0,\n\t\t\t\t\tsrcCanvas.width, srcCanvas.height).data;\n\t\t\tfor (var i = 0, l = dst.length; i < l; i += 4) {\n\t\t\t\tsr = src[i];\n\t\t\t\tbr = dst[i];\n\t\t\t\tsg = src[i + 1];\n\t\t\t\tbg = dst[i + 1];\n\t\t\t\tsb = src[i + 2];\n\t\t\t\tbb = dst[i + 2];\n\t\t\t\tsa = src[i + 3];\n\t\t\t\tba = dst[i + 3];\n\t\t\t\tprocess();\n\t\t\t\tvar a1 = sa * alpha / 255,\n\t\t\t\t\ta2 = 1 - a1;\n\t\t\t\tdst[i] = a1 * dr + a2 * br;\n\t\t\t\tdst[i + 1] = a1 * dg + a2 * bg;\n\t\t\t\tdst[i + 2] = a1 * db + a2 * bb;\n\t\t\t\tdst[i + 3] = sa * alpha + a2 * ba;\n\t\t\t}\n\t\t\tdstContext.putImageData(dstData, offset.x, offset.y);\n\t\t}\n\t};\n};\n\nvar SvgElement = new function() {\n\tvar svg = 'http://www.w3.org/2000/svg',\n\t\txmlns = 'http://www.w3.org/2000/xmlns',\n\t\txlink = 'http://www.w3.org/1999/xlink',\n\t\tattributeNamespace = {\n\t\t\thref: xlink,\n\t\t\txlink: xmlns,\n\t\t\txmlns: xmlns + '/',\n\t\t\t'xmlns:xlink': xmlns + '/'\n\t\t};\n\n\tfunction create(tag, attributes, formatter) {\n\t\treturn set(document.createElementNS(svg, tag), attributes, formatter);\n\t}\n\n\tfunction get(node, name) {\n\t\tvar namespace = attributeNamespace[name],\n\t\t\tvalue = namespace\n\t\t\t\t? node.getAttributeNS(namespace, name)\n\t\t\t\t: node.getAttribute(name);\n\t\treturn value === 'null' ? null : value;\n\t}\n\n\tfunction set(node, attributes, formatter) {\n\t\tfor (var name in attributes) {\n\t\t\tvar value = attributes[name],\n\t\t\t\tnamespace = attributeNamespace[name];\n\t\t\tif (typeof value === 'number' && formatter)\n\t\t\t\tvalue = formatter.number(value);\n\t\t\tif (namespace) {\n\t\t\t\tnode.setAttributeNS(namespace, name, value);\n\t\t\t} else {\n\t\t\t\tnode.setAttribute(name, value);\n\t\t\t}\n\t\t}\n\t\treturn node;\n\t}\n\n\treturn {\n\t\tsvg: svg,\n\t\txmlns: xmlns,\n\t\txlink: xlink,\n\n\t\tcreate: create,\n\t\tget: get,\n\t\tset: set\n\t};\n};\n\nvar SvgStyles = Base.each({\n\tfillColor: ['fill', 'color'],\n\tfillRule: ['fill-rule', 'string'],\n\tstrokeColor: ['stroke', 'color'],\n\tstrokeWidth: ['stroke-width', 'number'],\n\tstrokeCap: ['stroke-linecap', 'string'],\n\tstrokeJoin: ['stroke-linejoin', 'string'],\n\tstrokeScaling: ['vector-effect', 'lookup', {\n\t\ttrue: 'none',\n\t\tfalse: 'non-scaling-stroke'\n\t}, function(item, value) {\n\t\treturn !value\n\t\t\t\t&& (item instanceof PathItem\n\t\t\t\t\t|| item instanceof Shape\n\t\t\t\t\t|| item instanceof TextItem);\n\t}],\n\tmiterLimit: ['stroke-miterlimit', 'number'],\n\tdashArray: ['stroke-dasharray', 'array'],\n\tdashOffset: ['stroke-dashoffset', 'number'],\n\tfontFamily: ['font-family', 'string'],\n\tfontWeight: ['font-weight', 'string'],\n\tfontSize: ['font-size', 'number'],\n\tjustification: ['text-anchor', 'lookup', {\n\t\tleft: 'start',\n\t\tcenter: 'middle',\n\t\tright: 'end'\n\t}],\n\topacity: ['opacity', 'number'],\n\tblendMode: ['mix-blend-mode', 'style']\n}, function(entry, key) {\n\tvar part = Base.capitalize(key),\n\t\tlookup = entry[2];\n\tthis[key] = {\n\t\ttype: entry[1],\n\t\tproperty: key,\n\t\tattribute: entry[0],\n\t\ttoSVG: lookup,\n\t\tfromSVG: lookup && Base.each(lookup, function(value, name) {\n\t\t\tthis[value] = name;\n\t\t}, {}),\n\t\texportFilter: entry[3],\n\t\tget: 'get' + part,\n\t\tset: 'set' + part\n\t};\n}, {});\n\nnew function() {\n\tvar formatter;\n\n\tfunction getTransform(matrix, coordinates, center) {\n\t\tvar attrs = new Base(),\n\t\t\ttrans = matrix.getTranslation();\n\t\tif (coordinates) {\n\t\t\tvar point;\n\t\t\tif (matrix.isInvertible()) {\n\t\t\t\tmatrix = matrix._shiftless();\n\t\t\t\tpoint = matrix._inverseTransform(trans);\n\t\t\t\ttrans = null;\n\t\t\t} else {\n\t\t\t\tpoint = new Point();\n\t\t\t}\n\t\t\tattrs[center ? 'cx' : 'x'] = point.x;\n\t\t\tattrs[center ? 'cy' : 'y'] = point.y;\n\t\t}\n\t\tif (!matrix.isIdentity()) {\n\t\t\tvar decomposed = matrix.decompose();\n\t\t\tif (decomposed) {\n\t\t\t\tvar parts = [],\n\t\t\t\t\tangle = decomposed.rotation,\n\t\t\t\t\tscale = decomposed.scaling,\n\t\t\t\t\tskew = decomposed.skewing;\n\t\t\t\tif (trans && !trans.isZero())\n\t\t\t\t\tparts.push('translate(' + formatter.point(trans) + ')');\n\t\t\t\tif (angle)\n\t\t\t\t\tparts.push('rotate(' + formatter.number(angle) + ')');\n\t\t\t\tif (!Numerical.isZero(scale.x - 1)\n\t\t\t\t\t\t|| !Numerical.isZero(scale.y - 1))\n\t\t\t\t\tparts.push('scale(' + formatter.point(scale) +')');\n\t\t\t\tif (skew.x)\n\t\t\t\t\tparts.push('skewX(' + formatter.number(skew.x) + ')');\n\t\t\t\tif (skew.y)\n\t\t\t\t\tparts.push('skewY(' + formatter.number(skew.y) + ')');\n\t\t\t\tattrs.transform = parts.join(' ');\n\t\t\t} else {\n\t\t\t\tattrs.transform = 'matrix(' + matrix.getValues().join(',') + ')';\n\t\t\t}\n\t\t}\n\t\treturn attrs;\n\t}\n\n\tfunction exportGroup(item, options) {\n\t\tvar attrs = getTransform(item._matrix),\n\t\t\tchildren = item._children;\n\t\tvar node = SvgElement.create('g', attrs, formatter);\n\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\tvar child = children[i];\n\t\t\tvar childNode = exportSVG(child, options);\n\t\t\tif (childNode) {\n\t\t\t\tif (child.isClipMask()) {\n\t\t\t\t\tvar clip = SvgElement.create('clipPath');\n\t\t\t\t\tclip.appendChild(childNode);\n\t\t\t\t\tsetDefinition(child, clip, 'clip');\n\t\t\t\t\tSvgElement.set(node, {\n\t\t\t\t\t\t'clip-path': 'url(#' + clip.id + ')'\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tnode.appendChild(childNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn node;\n\t}\n\n\tfunction exportRaster(item, options) {\n\t\tvar attrs = getTransform(item._matrix, true),\n\t\t\tsize = item.getSize(),\n\t\t\timage = item.getImage();\n\t\tattrs.x -= size.width / 2;\n\t\tattrs.y -= size.height / 2;\n\t\tattrs.width = size.width;\n\t\tattrs.height = size.height;\n\t\tattrs.href = options.embedImages == false && image && image.src\n\t\t\t\t|| item.toDataURL();\n\t\treturn SvgElement.create('image', attrs, formatter);\n\t}\n\n\tfunction exportPath(item, options) {\n\t\tvar matchShapes = options.matchShapes;\n\t\tif (matchShapes) {\n\t\t\tvar shape = item.toShape(false);\n\t\t\tif (shape)\n\t\t\t\treturn exportShape(shape, options);\n\t\t}\n\t\tvar segments = item._segments,\n\t\t\tlength = segments.length,\n\t\t\ttype,\n\t\t\tattrs = getTransform(item._matrix);\n\t\tif (matchShapes && length >= 2 && !item.hasHandles()) {\n\t\t\tif (length > 2) {\n\t\t\t\ttype = item._closed ? 'polygon' : 'polyline';\n\t\t\t\tvar parts = [];\n\t\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\t\tparts.push(formatter.point(segments[i]._point));\n\t\t\t\t}\n\t\t\t\tattrs.points = parts.join(' ');\n\t\t\t} else {\n\t\t\t\ttype = 'line';\n\t\t\t\tvar start = segments[0]._point,\n\t\t\t\t\tend = segments[1]._point;\n\t\t\t\tattrs.set({\n\t\t\t\t\tx1: start.x,\n\t\t\t\t\ty1: start.y,\n\t\t\t\t\tx2: end.x,\n\t\t\t\t\ty2: end.y\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\ttype = 'path';\n\t\t\tattrs.d = item.getPathData(null, options.precision);\n\t\t}\n\t\treturn SvgElement.create(type, attrs, formatter);\n\t}\n\n\tfunction exportShape(item) {\n\t\tvar type = item._type,\n\t\t\tradius = item._radius,\n\t\t\tattrs = getTransform(item._matrix, true, type !== 'rectangle');\n\t\tif (type === 'rectangle') {\n\t\t\ttype = 'rect';\n\t\t\tvar size = item._size,\n\t\t\t\twidth = size.width,\n\t\t\t\theight = size.height;\n\t\t\tattrs.x -= width / 2;\n\t\t\tattrs.y -= height / 2;\n\t\t\tattrs.width = width;\n\t\t\tattrs.height = height;\n\t\t\tif (radius.isZero())\n\t\t\t\tradius = null;\n\t\t}\n\t\tif (radius) {\n\t\t\tif (type === 'circle') {\n\t\t\t\tattrs.r = radius;\n\t\t\t} else {\n\t\t\t\tattrs.rx = radius.width;\n\t\t\t\tattrs.ry = radius.height;\n\t\t\t}\n\t\t}\n\t\treturn SvgElement.create(type, attrs, formatter);\n\t}\n\n\tfunction exportCompoundPath(item, options) {\n\t\tvar attrs = getTransform(item._matrix);\n\t\tvar data = item.getPathData(null, options.precision);\n\t\tif (data)\n\t\t\tattrs.d = data;\n\t\treturn SvgElement.create('path', attrs, formatter);\n\t}\n\n\tfunction exportSymbolItem(item, options) {\n\t\tvar attrs = getTransform(item._matrix, true),\n\t\t\tdefinition = item._definition,\n\t\t\tnode = getDefinition(definition, 'symbol'),\n\t\t\tdefinitionItem = definition._item,\n\t\t\tbounds = definitionItem.getStrokeBounds();\n\t\tif (!node) {\n\t\t\tnode = SvgElement.create('symbol', {\n\t\t\t\tviewBox: formatter.rectangle(bounds)\n\t\t\t});\n\t\t\tnode.appendChild(exportSVG(definitionItem, options));\n\t\t\tsetDefinition(definition, node, 'symbol');\n\t\t}\n\t\tattrs.href = '#' + node.id;\n\t\tattrs.x += bounds.x;\n\t\tattrs.y += bounds.y;\n\t\tattrs.width = bounds.width;\n\t\tattrs.height = bounds.height;\n\t\tattrs.overflow = 'visible';\n\t\treturn SvgElement.create('use', attrs, formatter);\n\t}\n\n\tfunction exportGradient(color, item) {\n\t\tvar gradientNode = getDefinition(color, 'color');\n\t\tif (!gradientNode) {\n\t\t\tvar gradient = color.getGradient(),\n\t\t\t\tradial = gradient._radial,\n\t\t\t\torigin = color.getOrigin(),\n\t\t\t\tdestination = color.getDestination(),\n\t\t\t\tattrs;\n\t\t\tif (radial) {\n\t\t\t\tattrs = {\n\t\t\t\t\tcx: origin.x,\n\t\t\t\t\tcy: origin.y,\n\t\t\t\t\tr: origin.getDistance(destination)\n\t\t\t\t};\n\t\t\t\tvar highlight = color.getHighlight();\n\t\t\t\tif (highlight) {\n\t\t\t\t\tattrs.fx = highlight.x;\n\t\t\t\t\tattrs.fy = highlight.y;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tattrs = {\n\t\t\t\t\tx1: origin.x,\n\t\t\t\t\ty1: origin.y,\n\t\t\t\t\tx2: destination.x,\n\t\t\t\t\ty2: destination.y\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (item instanceof paper.PointText) {\n\t\t\t\tattrs.gradientTransform = getTransform(\n\t\t\t\t\titem._matrix.clone().invert(), false, formatter).transform;\n\t\t\t}\n\n\t\t\tattrs.gradientUnits = 'userSpaceOnUse';\n\t\t\tgradientNode = SvgElement.create((radial ? 'radial' : 'linear')\n\t\t\t\t\t+ 'Gradient', attrs, formatter);\n\t\t\tvar stops = gradient._stops;\n\t\t\tfor (var i = 0, l = stops.length; i < l; i++) {\n\t\t\t\tvar stop = stops[i],\n\t\t\t\t\tstopColor = stop._color,\n\t\t\t\t\talpha = stopColor.getAlpha(),\n\t\t\t\t\toffset = stop._offset;\n\t\t\t\tattrs = {\n\t\t\t\t\toffset: offset == null ? i / (l - 1) : offset\n\t\t\t\t};\n\t\t\t\tif (stopColor)\n\t\t\t\t\tattrs['stop-color'] = stopColor.toCSS(true);\n\t\t\t\tif (alpha < 1)\n\t\t\t\t\tattrs['stop-opacity'] = alpha;\n\t\t\t\tgradientNode.appendChild(\n\t\t\t\t\t\tSvgElement.create('stop', attrs, formatter));\n\t\t\t}\n\t\t\tsetDefinition(color, gradientNode, 'color');\n\t\t}\n\t\treturn 'url(#' + gradientNode.id + ')';\n\t}\n\n\tfunction exportText(item) {\n\t\tvar node = SvgElement.create('text', getTransform(item._matrix, false),\n\t\t\t\tformatter);\n\t\tnode.setAttribute('font-size', item.fontSize);\n\t\tnode.setAttribute('xml:space', 'preserve');\n\t\tfor (var i = 0; i < item._lines.length; i++) {\n\t\t\tvar tspanNode = SvgElement.create('tspan', {\n\t\t\t\tx: '0',\n\t\t\t\tdy: i === 0 ? '0' : item.getLeading() + 'px'\n\t\t\t}, formatter);\n\t\t\ttspanNode.textContent = item._lines[i] ? item._lines[i] : ' ';\n\t\t\tnode.appendChild(tspanNode);\n\t\t}\n\t\treturn node;\n\t}\n\n\tvar exporters = {\n\t\tGroup: exportGroup,\n\t\tLayer: exportGroup,\n\t\tRaster: exportRaster,\n\t\tPath: exportPath,\n\t\tShape: exportShape,\n\t\tCompoundPath: exportCompoundPath,\n\t\tSymbolItem: exportSymbolItem,\n\t\tPointText: exportText\n\t};\n\n\tfunction applyStyle(item, node, isRoot) {\n\t\tvar attrs = {},\n\t\t\tparent = !isRoot && item.getParent(),\n\t\t\tstyle = [];\n\n\t\tif (item._name != null)\n\t\t\tattrs.id = item._name;\n\n\t\tBase.each(SvgStyles, function(entry) {\n\t\t\tvar get = entry.get,\n\t\t\t\ttype = entry.type,\n\t\t\t\tvalue = item[get]();\n\n\t\t\tif (value === undefined) return;\n\n\t\t\tif (entry.exportFilter\n\t\t\t\t\t? entry.exportFilter(item, value)\n\t\t\t\t\t: !parent || !Base.equals(parent[get](), value) ||\n\t\t\t\t\t  item instanceof paper.PointText) {\n\t\t\t\tif (type === 'color' && value != null) {\n\t\t\t\t\tvar alpha = value.getAlpha();\n\t\t\t\t\tif (alpha < 1)\n\t\t\t\t\t\tattrs[entry.attribute + '-opacity'] = alpha;\n\t\t\t\t}\n\t\t\t\tif (type === 'style') {\n\t\t\t\t\tstyle.push(entry.attribute + ': ' + value);\n\t\t\t\t} else {\n\t\t\t\t\tattrs[entry.attribute] = value == null ? 'none'\n\t\t\t\t\t\t\t: type === 'color' ? value.gradient\n\t\t\t\t\t\t\t\t? exportGradient(value, item)\n\t\t\t\t\t\t\t\t: value.toCSS(true)\n\t\t\t\t\t\t\t: type === 'array' ? value.join(',')\n\t\t\t\t\t\t\t: type === 'lookup' ? entry.toSVG[value]\n\t\t\t\t\t\t\t: value;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (style.length)\n\t\t\tattrs.style = style.join(';');\n\n\t\tif (attrs.opacity === 1)\n\t\t\tdelete attrs.opacity;\n\n\t\tif (!item._visible)\n\t\t\tattrs.visibility = 'hidden';\n\n\t\treturn SvgElement.set(node, attrs, formatter);\n\t}\n\n\tvar definitions;\n\tfunction getDefinition(item, type) {\n\t\tif (!definitions)\n\t\t\tdefinitions = { ids: {}, svgs: {} };\n\t\treturn item && definitions.svgs[type + '-'\n\t\t\t\t+ (item._id || item.__id || (item.__id = UID.get('svg')))];\n\t}\n\n\tfunction setDefinition(item, node, type) {\n\t\tif (!definitions)\n\t\t\tgetDefinition();\n\t\tvar typeId = definitions.ids[type] = (definitions.ids[type] || 0) + 1;\n\t\tnode.id = type + '-' + typeId;\n\t\tdefinitions.svgs[type + '-' + (item._id || item.__id)] = node;\n\t}\n\n\tfunction exportDefinitions(node, options) {\n\t\tvar svg = node,\n\t\t\tdefs = null;\n\t\tif (definitions) {\n\t\t\tsvg = node.nodeName.toLowerCase() === 'svg' && node;\n\t\t\tfor (var i in definitions.svgs) {\n\t\t\t\tif (!defs) {\n\t\t\t\t\tif (!svg) {\n\t\t\t\t\t\tsvg = SvgElement.create('svg');\n\t\t\t\t\t\tsvg.appendChild(node);\n\t\t\t\t\t}\n\t\t\t\t\tdefs = svg.insertBefore(SvgElement.create('defs'),\n\t\t\t\t\t\t\tsvg.firstChild);\n\t\t\t\t}\n\t\t\t\tdefs.appendChild(definitions.svgs[i]);\n\t\t\t}\n\t\t\tdefinitions = null;\n\t\t}\n\t\treturn options.asString\n\t\t\t\t? new self.XMLSerializer().serializeToString(svg)\n\t\t\t\t: svg;\n\t}\n\n\tfunction exportSVG(item, options, isRoot) {\n\t\tvar exporter = exporters[item._class],\n\t\t\tnode = exporter && exporter(item, options);\n\t\tif (node) {\n\t\t\tvar onExport = options.onExport;\n\t\t\tif (onExport)\n\t\t\t\tnode = onExport(item, node, options) || node;\n\t\t\tvar data = JSON.stringify(item._data);\n\t\t\tif (data && data !== '{}' && data !== 'null')\n\t\t\t\tnode.setAttribute('data-paper-data', data);\n\t\t}\n\t\treturn node && applyStyle(item, node, isRoot);\n\t}\n\n\tfunction setOptions(options) {\n\t\tif (!options)\n\t\t\toptions = {};\n\t\tformatter = new Formatter(options.precision);\n\t\treturn options;\n\t}\n\n\tItem.inject({\n\t\texportSVG: function(options) {\n\t\t\toptions = setOptions(options);\n\t\t\treturn exportDefinitions(exportSVG(this, options, true), options);\n\t\t}\n\t});\n\n\tProject.inject({\n\t\texportSVG: function(options) {\n\t\t\toptions = setOptions(options);\n\t\t\tvar children = this._children,\n\t\t\t\tview = this.getView(),\n\t\t\t\tbounds = Base.pick(options.bounds, 'view'),\n\t\t\t\tmx = options.matrix || bounds === 'view' && view._matrix,\n\t\t\t\tmatrix = mx && Matrix.read([mx]),\n\t\t\t\trect = bounds === 'view'\n\t\t\t\t\t? new Rectangle([0, 0], view.getViewSize())\n\t\t\t\t\t: bounds === 'content'\n\t\t\t\t\t\t? Item._getBounds(children, matrix, { stroke: true, drawnTextBounds: true })\n\t\t\t\t\t\t\t.rect\n\t\t\t\t\t\t: Rectangle.read([bounds], 0, { readNull: true }),\n\t\t\t\tattrs = {\n\t\t\t\t\tversion: '1.1',\n\t\t\t\t\txmlns: SvgElement.svg,\n\t\t\t\t\t'xmlns:xlink': SvgElement.xlink,\n\t\t\t\t};\n\t\t\tif (rect) {\n\t\t\t\tattrs.width = rect.width;\n\t\t\t\tattrs.height = rect.height;\n\t\t\t\tif (rect.x || rect.x === 0 || rect.y || rect.y === 0)\n\t\t\t\t\tattrs.viewBox = formatter.rectangle(rect);\n\t\t\t}\n\t\t\tvar node = SvgElement.create('svg', attrs, formatter),\n\t\t\t\tparent = node;\n\t\t\tif (matrix && !matrix.isIdentity()) {\n\t\t\t\tparent = node.appendChild(SvgElement.create('g',\n\t\t\t\t\t\tgetTransform(matrix), formatter));\n\t\t\t}\n\t\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\t\tparent.appendChild(exportSVG(children[i], options, true));\n\t\t\t}\n\t\t\treturn exportDefinitions(node, options);\n\t\t}\n\t});\n};\n\nnew function() {\n\n\tvar definitions = {},\n\t\trootSize;\n\n\tfunction getValue(node, name, isString, allowNull, allowPercent,\n\t\t\tdefaultValue) {\n\t\tvar value = SvgElement.get(node, name) || defaultValue,\n\t\t\tres = value == null\n\t\t\t\t? allowNull\n\t\t\t\t\t? null\n\t\t\t\t\t: isString ? '' : 0\n\t\t\t\t: isString\n\t\t\t\t\t? value\n\t\t\t\t\t: parseFloat(value);\n\t\treturn /%\\s*$/.test(value)\n\t\t\t? (res / 100) * (allowPercent ? 1\n\t\t\t\t: rootSize[/x|^width/.test(name) ? 'width' : 'height'])\n\t\t\t: res;\n\t}\n\n\tfunction getPoint(node, x, y, allowNull, allowPercent, defaultX, defaultY) {\n\t\tx = getValue(node, x || 'x', false, allowNull, allowPercent, defaultX);\n\t\ty = getValue(node, y || 'y', false, allowNull, allowPercent, defaultY);\n\t\treturn allowNull && (x == null || y == null) ? null\n\t\t\t\t: new Point(x, y);\n\t}\n\n\tfunction getSize(node, w, h, allowNull, allowPercent) {\n\t\tw = getValue(node, w || 'width', false, allowNull, allowPercent);\n\t\th = getValue(node, h || 'height', false, allowNull, allowPercent);\n\t\treturn allowNull && (w == null || h == null) ? null\n\t\t\t\t: new Size(w, h);\n\t}\n\n\tfunction convertValue(value, type, lookup) {\n\t\treturn value === 'none' ? null\n\t\t\t\t: type === 'number' ? parseFloat(value)\n\t\t\t\t: type === 'array' ?\n\t\t\t\t\tvalue ? value.split(/[\\s,]+/g).map(parseFloat) : []\n\t\t\t\t: type === 'color' ? getDefinition(value) || value\n\t\t\t\t: type === 'lookup' ? lookup[value]\n\t\t\t\t: value;\n\t}\n\n\tfunction importGroup(node, type, options, isRoot) {\n\t\tvar nodes = node.childNodes,\n\t\t\tisClip = type === 'clippath',\n\t\t\tisDefs = type === 'defs',\n\t\t\titem = new Group(),\n\t\t\tproject = item._project,\n\t\t\tcurrentStyle = project._currentStyle,\n\t\t\tchildren = [];\n\t\tif (!isClip && !isDefs) {\n\t\t\titem = applyAttributes(item, node, isRoot);\n\t\t\tproject._currentStyle = item._style.clone();\n\t\t}\n\t\tif (isRoot) {\n\t\t\tvar defs = node.querySelectorAll('defs');\n\t\t\tfor (var i = 0, l = defs.length; i < l; i++) {\n\t\t\t\timportNode(defs[i], options, false);\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0, l = nodes.length; i < l; i++) {\n\t\t\tvar childNode = nodes[i],\n\t\t\t\tchild;\n\t\t\tif (childNode.nodeType === 1\n\t\t\t\t\t&& !/^defs$/i.test(childNode.nodeName)\n\t\t\t\t\t&& (child = importNode(childNode, options, false))\n\t\t\t\t\t&& !(child instanceof SymbolDefinition))\n\t\t\t\tchildren.push(child);\n\t\t}\n\t\titem.addChildren(children);\n\t\tif (isClip)\n\t\t\titem = applyAttributes(item.reduce(), node, isRoot);\n\t\tproject._currentStyle = currentStyle;\n\t\tif (isClip || isDefs) {\n\t\t\titem.remove();\n\t\t\titem = null;\n\t\t}\n\t\treturn item;\n\t}\n\n\tfunction importPoly(node, type) {\n\t\tvar coords = node.getAttribute('points').match(\n\t\t\t\t\t/[+-]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?/g),\n\t\t\tpoints = [];\n\t\tfor (var i = 0, l = coords.length; i < l; i += 2)\n\t\t\tpoints.push(new Point(\n\t\t\t\t\tparseFloat(coords[i]),\n\t\t\t\t\tparseFloat(coords[i + 1])));\n\t\tvar path = new Path(points);\n\t\tif (type === 'polygon')\n\t\t\tpath.closePath();\n\t\treturn path;\n\t}\n\n\tfunction importPath(node) {\n\t\treturn PathItem.create(node.getAttribute('d'));\n\t}\n\n\tfunction importGradient(node, type) {\n\t\tvar id = (getValue(node, 'href', true) || '').substring(1),\n\t\t\tradial = type === 'radialgradient',\n\t\t\tgradient;\n\t\tif (id) {\n\t\t\tgradient = definitions[id].getGradient();\n\t\t\tif (gradient._radial ^ radial) {\n\t\t\t\tgradient = gradient.clone();\n\t\t\t\tgradient._radial = radial;\n\t\t\t}\n\t\t} else {\n\t\t\tvar nodes = node.childNodes,\n\t\t\t\tstops = [];\n\t\t\tfor (var i = 0, l = nodes.length; i < l; i++) {\n\t\t\t\tvar child = nodes[i];\n\t\t\t\tif (child.nodeType === 1)\n\t\t\t\t\tstops.push(applyAttributes(new GradientStop(), child));\n\t\t\t}\n\t\t\tgradient = new Gradient(stops, radial);\n\t\t}\n\t\tvar origin, destination, highlight,\n\t\t\tscaleToBounds = getValue(node, 'gradientUnits', true) !==\n\t\t\t\t'userSpaceOnUse';\n\t\tif (radial) {\n\t\t\torigin = getPoint(node, 'cx', 'cy', false, scaleToBounds,\n\t\t\t\t'50%', '50%');\n\t\t\tdestination = origin.add(\n\t\t\t\tgetValue(node, 'r', false, false, scaleToBounds, '50%'), 0);\n\t\t\thighlight = getPoint(node, 'fx', 'fy', true, scaleToBounds);\n\t\t} else {\n\t\t\torigin = getPoint(node, 'x1', 'y1', false, scaleToBounds,\n\t\t\t\t'0%', '0%');\n\t\t\tdestination = getPoint(node, 'x2', 'y2', false, scaleToBounds,\n\t\t\t\t'100%', '0%');\n\t\t}\n\t\tvar color = applyAttributes(\n\t\t\t\tnew Color(gradient, origin, destination, highlight), node);\n\t\tcolor._scaleToBounds = scaleToBounds;\n\t\treturn null;\n\t}\n\n\tvar importers = {\n\t\t'#document': function (node, type, options, isRoot) {\n\t\t\tvar nodes = node.childNodes;\n\t\t\tfor (var i = 0, l = nodes.length; i < l; i++) {\n\t\t\t\tvar child = nodes[i];\n\t\t\t\tif (child.nodeType === 1)\n\t\t\t\t\treturn importNode(child, options, isRoot);\n\t\t\t}\n\t\t},\n\t\tg: importGroup,\n\t\tsvg: importGroup,\n\t\tclippath: importGroup,\n\t\tpolygon: importPoly,\n\t\tpolyline: importPoly,\n\t\tpath: importPath,\n\t\tlineargradient: importGradient,\n\t\tradialgradient: importGradient,\n\n\t\timage: function (node) {\n\t\t\tvar raster = new Raster(getValue(node, 'href', true));\n\t\t\traster.on('load', function() {\n\t\t\t\tvar size = getSize(node);\n\t\t\t\tthis.setSize(size);\n\t\t\t\tvar center = getPoint(node).add(size.divide(2));\n\t\t\t\tthis._matrix.append(new Matrix().translate(center));\n\t\t\t});\n\t\t\treturn raster;\n\t\t},\n\n\t\tsymbol: function(node, type, options, isRoot) {\n\t\t\treturn new SymbolDefinition(\n\t\t\t\t\timportGroup(node, type, options, isRoot), true);\n\t\t},\n\n\t\tdefs: importGroup,\n\n\t\tuse: function(node) {\n\t\t\tvar id = (getValue(node, 'href', true) || '').substring(1),\n\t\t\t\tdefinition = definitions[id],\n\t\t\t\tpoint = getPoint(node);\n\t\t\treturn definition\n\t\t\t\t\t? definition instanceof SymbolDefinition\n\t\t\t\t\t\t? definition.place(point)\n\t\t\t\t\t\t: definition.clone().translate(point)\n\t\t\t\t\t: null;\n\t\t},\n\n\t\tcircle: function(node) {\n\t\t\treturn new Shape.Circle(\n\t\t\t\t\tgetPoint(node, 'cx', 'cy'),\n\t\t\t\t\tgetValue(node, 'r'));\n\t\t},\n\n\t\tellipse: function(node) {\n\t\t\treturn new Shape.Ellipse({\n\t\t\t\tcenter: getPoint(node, 'cx', 'cy'),\n\t\t\t\tradius: getSize(node, 'rx', 'ry')\n\t\t\t});\n\t\t},\n\n\t\trect: function(node) {\n\t\t\treturn new Shape.Rectangle(new Rectangle(\n\t\t\t\t\t\tgetPoint(node),\n\t\t\t\t\t\tgetSize(node)\n\t\t\t\t\t), getSize(node, 'rx', 'ry'));\n\t\t\t},\n\n\t\tline: function(node) {\n\t\t\treturn new Path.Line(\n\t\t\t\t\tgetPoint(node, 'x1', 'y1'),\n\t\t\t\t\tgetPoint(node, 'x2', 'y2'));\n\t\t},\n\n\t\ttext: function(node) {\n\n\t\t\tvar fontSize = parseFloat(node.getAttribute(\"font-size\"));\n\t\t\tvar alignmentBaseline = node.getAttribute(\"alignment-baseline\");\n\t\t\tif (node.childElementCount === 0) {\n\t\t\t\tvar text = new PointText();\n\t\t\t\ttext.setContent(node.textContent.trim() || '');\n\t\t\t\ttext.translate(0, text._style.getLeading());\n\t\t\t\tif (!isNaN(fontSize)) text.setFontSize(fontSize);\n\t\t\t\treturn text;\n\t\t\t} else {\n\t\t\t\tvar lines = [];\n\t\t\t\tvar spacing = 1.2;\n\t\t\t\tfor (var i = 0; i < node.childNodes.length; i++) {\n\t\t\t\t\tvar child = node.childNodes[i];\n\t\t\t\t\tif (!child.getAttribute) continue;\n\t\t\t\t\tlines.push(child.textContent);\n\t\t\t\t\tvar dyString = child.getAttribute('dy');\n\t\t\t\t\tif (dyString) {\n\t\t\t\t\t\tvar dy = parseFloat(dyString);\n\t\t\t\t\t\tif (!isNaN(dy)) {\n\t\t\t\t\t\t\tif (dyString.endsWith('em')) {\n\t\t\t\t\t\t\t\tspacing = dy;\n\t\t\t\t\t\t\t} else if (dyString.endsWith('px') && !isNaN(fontSize)) {\n\t\t\t\t\t\t\t\tspacing = dy / fontSize;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar text = new PointText();\n\t\t\t\tif (!isNaN(fontSize)) text.setFontSize(fontSize);\n\t\t\t\ttext.setLeading(text.fontSize * spacing);\n\t\t\t\tif (alignmentBaseline === 'text-before-edge') {\n\t\t\t\t\ttext.setContent(' ');\n\t\t\t\t\ttext.translate(0, text.bounds.height);\n\t\t\t\t}\n\t\t\t\ttext.setContent(lines.join('\\n'));\n\t\t\t\treturn text;\n\t\t\t}\n\t\t},\n\n\t\tswitch: importGroup\n\t};\n\n\tfunction applyTransform(item, value, name, node) {\n\t\tif (item.transform) {\n\t\t\tvar transforms = (node.getAttribute(name) || '').split(/\\)\\s*/g),\n\t\t\t\tmatrix = new Matrix();\n\t\t\tfor (var i = 0, l = transforms.length; i < l; i++) {\n\t\t\t\tvar transform = transforms[i];\n\t\t\t\tif (!transform)\n\t\t\t\t\tbreak;\n\t\t\t\tvar parts = transform.split(/\\(\\s*/),\n\t\t\t\t\tcommand = parts[0],\n\t\t\t\t\tv = parts[1].split(/[\\s,]+/g);\n\t\t\t\tfor (var j = 0, m = v.length; j < m; j++)\n\t\t\t\t\tv[j] = parseFloat(v[j]);\n\t\t\t\tswitch (command) {\n\t\t\t\tcase 'matrix':\n\t\t\t\t\tmatrix.append(\n\t\t\t\t\t\t\tnew Matrix(v[0], v[1], v[2], v[3], v[4], v[5]));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'rotate':\n\t\t\t\t\tmatrix.rotate(v[0], v[1] || 0, v[2] || 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'translate':\n\t\t\t\t\tmatrix.translate(v[0], v[1] || 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'scale':\n\t\t\t\t\tmatrix.scale(v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'skewX':\n\t\t\t\t\tmatrix.skew(v[0], 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'skewY':\n\t\t\t\t\tmatrix.skew(0, v[0]);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\titem.transform(matrix);\n\t\t}\n\t}\n\n\tfunction applyOpacity(item, value, name) {\n\t\tvar key = name === 'fill-opacity' ? 'getFillColor' : 'getStrokeColor',\n\t\t\tcolor = item[key] && item[key]();\n\t\tif (color)\n\t\t\tcolor.setAlpha(parseFloat(value));\n\t}\n\n\tvar attributes = Base.set(Base.each(SvgStyles, function(entry) {\n\t\tthis[entry.attribute] = function(item, value) {\n\t\t\tif (item[entry.set]) {\n\t\t\t\titem[entry.set](convertValue(value, entry.type, entry.fromSVG));\n\t\t\t\tif (entry.type === 'color') {\n\t\t\t\t\tvar color = item[entry.get]();\n\t\t\t\t\tif (color) {\n\t\t\t\t\t\tif (color._scaleToBounds) {\n\t\t\t\t\t\t\tvar bounds = item.getBounds();\n\t\t\t\t\t\t\tcolor.transform(new Matrix()\n\t\t\t\t\t\t\t\t.translate(bounds.getPoint())\n\t\t\t\t\t\t\t\t.scale(bounds.getSize()));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}, {}), {\n\t\tid: function(item, value) {\n\t\t\tdefinitions[value] = item;\n\t\t},\n\n\t\t'clip-path': function(item, value) {\n\t\t\tvar clip = getDefinition(value);\n\t\t\tif (clip) {\n\t\t\t\tclip = clip.clone();\n\t\t\t\tclip.setClipMask(true);\n\t\t\t\tif (item instanceof Group) {\n\t\t\t\t\titem.insertChild(0, clip);\n\t\t\t\t} else {\n\t\t\t\t\treturn new Group(clip, item);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tgradientTransform: applyTransform,\n\t\ttransform: applyTransform,\n\n\t\t'fill-opacity': applyOpacity,\n\t\t'stroke-opacity': applyOpacity,\n\n\t\tvisibility: function(item, value) {\n\t\t\tif (item.setVisible)\n\t\t\t\titem.setVisible(value === 'visible');\n\t\t},\n\n\t\tdisplay: function(item, value) {\n\t\t\tif (item.setVisible)\n\t\t\t\titem.setVisible(value !== null);\n\t\t},\n\n\t\t'stop-color': function(item, value) {\n\t\t\tif (item.setColor)\n\t\t\t\titem.setColor(value);\n\t\t},\n\n\t\t'stop-opacity': function(item, value) {\n\t\t\tif (item._color)\n\t\t\t\titem._color.setAlpha(parseFloat(value));\n\t\t},\n\n\t\toffset: function(item, value) {\n\t\t\tif (item.setOffset) {\n\t\t\t\tvar percent = value.match(/(.*)%$/);\n\t\t\t\titem.setOffset(percent ? percent[1] / 100 : parseFloat(value));\n\t\t\t}\n\t\t},\n\n\t\tviewBox: function(item, value, name, node, styles) {\n\t\t\tvar rect = new Rectangle(convertValue(value, 'array')),\n\t\t\t\tsize = getSize(node, null, null, true),\n\t\t\t\tgroup,\n\t\t\t\tmatrix;\n\t\t\tif (item instanceof Group) {\n\t\t\t\tvar scale = size ? size.divide(rect.getSize()) : 1,\n\t\t\t\tmatrix = new Matrix().scale(scale)\n\t\t\t\t\t\t.translate(rect.getPoint().negate());\n\t\t\t\tgroup = item;\n\t\t\t} else if (item instanceof SymbolDefinition) {\n\t\t\t\tif (size)\n\t\t\t\t\trect.setSize(size);\n\t\t\t\tgroup = item._item;\n\t\t\t}\n\t\t\tif (group)  {\n\t\t\t\tif (getAttribute(node, 'overflow', styles) !== 'visible') {\n\t\t\t\t\tvar clip = new Shape.Rectangle(rect);\n\t\t\t\t\tclip.setClipMask(true);\n\t\t\t\t\tgroup.addChild(clip);\n\t\t\t\t}\n\t\t\t\tif (matrix)\n\t\t\t\t\tgroup.transform(matrix);\n\t\t\t}\n\t\t},\n\n\t\t'fill-rule': function(item, value) {\n\t\t\tif (value === 'evenodd' || value === 'nonzero') item.fillRule = value;\n\t\t}\n\t});\n\n\tfunction getAttribute(node, name, styles) {\n\t\tvar attr = node.attributes[name],\n\t\t\tvalue = attr && attr.value;\n\t\tif (!value && node.style) {\n\t\t\tvar style = Base.camelize(name);\n\t\t\tvalue = node.style[style];\n\t\t\tif (!value && styles.node[style] !== styles.parent[style])\n\t\t\t\tvalue = styles.node[style];\n\t\t}\n\t\treturn !value ? undefined\n\t\t\t\t: value === 'none' ? null\n\t\t\t\t: value;\n\t}\n\n\tfunction applyAttributes(item, node, isRoot) {\n\t\tvar parent = node.parentNode,\n\t\t\tstyles = {\n\t\t\t\tnode: DomElement.getStyles(node) || {},\n\t\t\t\tparent: !isRoot && !/^defs$/i.test(parent.tagName)\n\t\t\t\t\t\t&& DomElement.getStyles(parent) || {}\n\t\t\t};\n\t\tBase.each(attributes, function(apply, name) {\n\t\t\tvar value = getAttribute(node, name, styles);\n\t\t\titem = value !== undefined\n\t\t\t\t\t&& apply(item, value, name, node, styles) || item;\n\t\t});\n\t\treturn item;\n\t}\n\n\tfunction getDefinition(value) {\n\t\tvar match = value && value.match(/\\((?:[\"'#]*)([^\"')]+)/),\n\t\t\tname = match && match[1],\n\t\t\tres = name && definitions[window\n\t\t\t\t\t? name.replace(window.location.href.split('#')[0] + '#', '')\n\t\t\t\t\t: name];\n\t\tif (res && res._scaleToBounds) {\n\t\t\tres = res.clone();\n\t\t\tres._scaleToBounds = true;\n\t\t}\n\t\treturn res;\n\t}\n\n\tfunction importNode(node, options, isRoot) {\n\t\tvar type = node.nodeName.toLowerCase(),\n\t\t\tisElement = type !== '#document',\n\t\t\tbody = document.body,\n\t\t\tcontainer,\n\t\t\tparent,\n\t\t\tnext;\n\t\tif (isRoot && isElement) {\n\t\t\trootSize = paper.getView().getSize();\n\t\t\trootSize = getSize(node, null, null, true) || rootSize;\n\t\t\tcontainer = SvgElement.create('svg', {\n\t\t\t\tstyle: 'stroke-width: 1px; stroke-miterlimit: 10'\n\t\t\t});\n\t\t\tparent = node.parentNode;\n\t\t\tnext = node.nextSibling;\n\t\t\tcontainer.appendChild(node);\n\t\t\tbody.appendChild(container);\n\t\t}\n\t\tvar settings = paper.settings,\n\t\t\tapplyMatrix = settings.applyMatrix,\n\t\t\tinsertItems = settings.insertItems;\n\t\tsettings.applyMatrix = false;\n\t\tsettings.insertItems = false;\n\t\tvar importer = importers[type],\n\t\t\titem = importer && importer(node, type, options, isRoot) || null;\n\t\tsettings.insertItems = insertItems;\n\t\tsettings.applyMatrix = applyMatrix;\n\t\tif (item) {\n\t\t\tif (isElement && !(item instanceof Group))\n\t\t\t\titem = applyAttributes(item, node, isRoot);\n\t\t\tvar onImport = options.onImport,\n\t\t\t\tdata = isElement && node.getAttribute('data-paper-data');\n\t\t\tif (onImport)\n\t\t\t\titem = onImport(node, item, options) || item;\n\t\t\tif (options.expandShapes && item instanceof Shape) {\n\t\t\t\titem.remove();\n\t\t\t\titem = item.toPath();\n\t\t\t}\n\t\t\tif (data)\n\t\t\t\titem._data = JSON.parse(data);\n\t\t}\n\t\tif (container) {\n\t\t\tbody.removeChild(container);\n\t\t\tif (parent) {\n\t\t\t\tif (next) {\n\t\t\t\t\tparent.insertBefore(node, next);\n\t\t\t\t} else {\n\t\t\t\t\tparent.appendChild(node);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (isRoot) {\n\t\t\tdefinitions = {};\n\t\t\tif (item && Base.pick(options.applyMatrix, applyMatrix))\n\t\t\t\titem.matrix.apply(true, true);\n\t\t}\n\t\treturn item;\n\t}\n\n\tfunction importSVG(source, options, owner) {\n\t\tif (!source)\n\t\t\treturn null;\n\t\toptions = typeof options === 'function' ? { onLoad: options }\n\t\t\t\t: options || {};\n\t\tvar scope = paper,\n\t\t\titem = null;\n\n\t\tfunction onLoad(svg) {\n\t\t\ttry {\n\t\t\t\tvar node = typeof svg === 'object'\n\t\t\t\t\t? svg\n\t\t\t\t\t: new self.DOMParser().parseFromString(\n\t\t\t\t\t\tsvg,\n\t\t\t\t\t\t'image/svg+xml'\n\t\t\t\t\t);\n\t\t\t\tif (!node.nodeName) {\n\t\t\t\t\tnode = null;\n\t\t\t\t\tthrow new Error('Unsupported SVG source: ' + source);\n\t\t\t\t}\n\t\t\t\tpaper = scope;\n\t\t\t\titem = importNode(node, options, true);\n\t\t\t\tif (!options || options.insert !== false) {\n\t\t\t\t\towner._insertItem(undefined, item);\n\t\t\t\t}\n\t\t\t\tvar onLoad = options.onLoad;\n\t\t\t\tif (onLoad)\n\t\t\t\t\tonLoad(item, svg);\n\t\t\t} catch (e) {\n\t\t\t\tonError(e);\n\t\t\t}\n\t\t}\n\n\t\tfunction onError(message, status) {\n\t\t\tvar onError = options.onError;\n\t\t\tif (onError) {\n\t\t\t\tonError(message, status);\n\t\t\t} else {\n\t\t\t\tthrow new Error(message);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof source === 'string' && !/^[\\s\\S]*</.test(source)) {\n\t\t\tvar node = document.getElementById(source);\n\t\t\tif (node) {\n\t\t\t\tonLoad(node);\n\t\t\t} else {\n\t\t\t\tHttp.request({\n\t\t\t\t\turl: source,\n\t\t\t\t\tasync: true,\n\t\t\t\t\tonLoad: onLoad,\n\t\t\t\t\tonError: onError\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (typeof File !== 'undefined' && source instanceof File) {\n\t\t\tvar reader = new FileReader();\n\t\t\treader.onload = function() {\n\t\t\t\tonLoad(reader.result);\n\t\t\t};\n\t\t\treader.onerror = function() {\n\t\t\t\tonError(reader.error);\n\t\t\t};\n\t\t\treturn reader.readAsText(source);\n\t\t} else {\n\t\t\tonLoad(source);\n\t\t}\n\n\t\treturn item;\n\t}\n\n\tItem.inject({\n\t\timportSVG: function(node, options) {\n\t\t\treturn importSVG(node, options, this);\n\t\t}\n\t});\n\n\tProject.inject({\n\t\timportSVG: function(node, options) {\n\t\t\tthis.activate();\n\t\t\treturn importSVG(node, options, this);\n\t\t}\n\t});\n};\n\nBase.exports.PaperScript = function() {\n\tvar global = this,\n\t\tacorn = global.acorn;\n\tif (!acorn && typeof require !== 'undefined') {\n\t\ttry { acorn = require('acorn'); } catch(e) {}\n\t}\n\tif (!acorn) {\n\t\tvar exports, module;\n\t\tacorn = exports = module = {};\n\n(function(root, mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") return mod(exports);\n  if (typeof define == \"function\" && define.amd) return define([\"exports\"], mod);\n  mod(root.acorn || (root.acorn = {}));\n})(this, function(exports) {\n  \"use strict\";\n\n  exports.version = \"0.5.0\";\n\n  var options, input, inputLen, sourceFile;\n\n  exports.parse = function(inpt, opts) {\n\tinput = String(inpt); inputLen = input.length;\n\tsetOptions(opts);\n\tinitTokenState();\n\treturn parseTopLevel(options.program);\n  };\n\n  var defaultOptions = exports.defaultOptions = {\n\tecmaVersion: 5,\n\tstrictSemicolons: false,\n\tallowTrailingCommas: true,\n\tforbidReserved: false,\n\tallowReturnOutsideFunction: false,\n\tlocations: false,\n\tonComment: null,\n\tranges: false,\n\tprogram: null,\n\tsourceFile: null,\n\tdirectSourceFile: null\n  };\n\n  function setOptions(opts) {\n\toptions = opts || {};\n\tfor (var opt in defaultOptions) if (!Object.prototype.hasOwnProperty.call(options, opt))\n\t  options[opt] = defaultOptions[opt];\n\tsourceFile = options.sourceFile || null;\n  }\n\n  var getLineInfo = exports.getLineInfo = function(input, offset) {\n\tfor (var line = 1, cur = 0;;) {\n\t  lineBreak.lastIndex = cur;\n\t  var match = lineBreak.exec(input);\n\t  if (match && match.index < offset) {\n\t\t++line;\n\t\tcur = match.index + match[0].length;\n\t  } else break;\n\t}\n\treturn {line: line, column: offset - cur};\n  };\n\n  exports.tokenize = function(inpt, opts) {\n\tinput = String(inpt); inputLen = input.length;\n\tsetOptions(opts);\n\tinitTokenState();\n\n\tvar t = {};\n\tfunction getToken(forceRegexp) {\n\t  lastEnd = tokEnd;\n\t  readToken(forceRegexp);\n\t  t.start = tokStart; t.end = tokEnd;\n\t  t.startLoc = tokStartLoc; t.endLoc = tokEndLoc;\n\t  t.type = tokType; t.value = tokVal;\n\t  return t;\n\t}\n\tgetToken.jumpTo = function(pos, reAllowed) {\n\t  tokPos = pos;\n\t  if (options.locations) {\n\t\ttokCurLine = 1;\n\t\ttokLineStart = lineBreak.lastIndex = 0;\n\t\tvar match;\n\t\twhile ((match = lineBreak.exec(input)) && match.index < pos) {\n\t\t  ++tokCurLine;\n\t\t  tokLineStart = match.index + match[0].length;\n\t\t}\n\t  }\n\t  tokRegexpAllowed = reAllowed;\n\t  skipSpace();\n\t};\n\treturn getToken;\n  };\n\n  var tokPos;\n\n  var tokStart, tokEnd;\n\n  var tokStartLoc, tokEndLoc;\n\n  var tokType, tokVal;\n\n  var tokRegexpAllowed;\n\n  var tokCurLine, tokLineStart;\n\n  var lastStart, lastEnd, lastEndLoc;\n\n  var inFunction, labels, strict;\n\n  function raise(pos, message) {\n\tvar loc = getLineInfo(input, pos);\n\tmessage += \" (\" + loc.line + \":\" + loc.column + \")\";\n\tvar err = new SyntaxError(message);\n\terr.pos = pos; err.loc = loc; err.raisedAt = tokPos;\n\tthrow err;\n  }\n\n  var empty = [];\n\n  var _num = {type: \"num\"}, _regexp = {type: \"regexp\"}, _string = {type: \"string\"};\n  var _name = {type: \"name\"}, _eof = {type: \"eof\"};\n\n  var _break = {keyword: \"break\"}, _case = {keyword: \"case\", beforeExpr: true}, _catch = {keyword: \"catch\"};\n  var _continue = {keyword: \"continue\"}, _debugger = {keyword: \"debugger\"}, _default = {keyword: \"default\"};\n  var _do = {keyword: \"do\", isLoop: true}, _else = {keyword: \"else\", beforeExpr: true};\n  var _finally = {keyword: \"finally\"}, _for = {keyword: \"for\", isLoop: true}, _function = {keyword: \"function\"};\n  var _if = {keyword: \"if\"}, _return = {keyword: \"return\", beforeExpr: true}, _switch = {keyword: \"switch\"};\n  var _throw = {keyword: \"throw\", beforeExpr: true}, _try = {keyword: \"try\"}, _var = {keyword: \"var\"};\n  var _while = {keyword: \"while\", isLoop: true}, _with = {keyword: \"with\"}, _new = {keyword: \"new\", beforeExpr: true};\n  var _this = {keyword: \"this\"};\n\n  var _null = {keyword: \"null\", atomValue: null}, _true = {keyword: \"true\", atomValue: true};\n  var _false = {keyword: \"false\", atomValue: false};\n\n  var _in = {keyword: \"in\", binop: 7, beforeExpr: true};\n\n  var keywordTypes = {\"break\": _break, \"case\": _case, \"catch\": _catch,\n\t\t\t\t\t  \"continue\": _continue, \"debugger\": _debugger, \"default\": _default,\n\t\t\t\t\t  \"do\": _do, \"else\": _else, \"finally\": _finally, \"for\": _for,\n\t\t\t\t\t  \"function\": _function, \"if\": _if, \"return\": _return, \"switch\": _switch,\n\t\t\t\t\t  \"throw\": _throw, \"try\": _try, \"var\": _var, \"while\": _while, \"with\": _with,\n\t\t\t\t\t  \"null\": _null, \"true\": _true, \"false\": _false, \"new\": _new, \"in\": _in,\n\t\t\t\t\t  \"instanceof\": {keyword: \"instanceof\", binop: 7, beforeExpr: true}, \"this\": _this,\n\t\t\t\t\t  \"typeof\": {keyword: \"typeof\", prefix: true, beforeExpr: true},\n\t\t\t\t\t  \"void\": {keyword: \"void\", prefix: true, beforeExpr: true},\n\t\t\t\t\t  \"delete\": {keyword: \"delete\", prefix: true, beforeExpr: true}};\n\n  var _bracketL = {type: \"[\", beforeExpr: true}, _bracketR = {type: \"]\"}, _braceL = {type: \"{\", beforeExpr: true};\n  var _braceR = {type: \"}\"}, _parenL = {type: \"(\", beforeExpr: true}, _parenR = {type: \")\"};\n  var _comma = {type: \",\", beforeExpr: true}, _semi = {type: \";\", beforeExpr: true};\n  var _colon = {type: \":\", beforeExpr: true}, _dot = {type: \".\"}, _question = {type: \"?\", beforeExpr: true};\n\n  var _slash = {binop: 10, beforeExpr: true}, _eq = {isAssign: true, beforeExpr: true};\n  var _assign = {isAssign: true, beforeExpr: true};\n  var _incDec = {postfix: true, prefix: true, isUpdate: true}, _prefix = {prefix: true, beforeExpr: true};\n  var _logicalOR = {binop: 1, beforeExpr: true};\n  var _logicalAND = {binop: 2, beforeExpr: true};\n  var _bitwiseOR = {binop: 3, beforeExpr: true};\n  var _bitwiseXOR = {binop: 4, beforeExpr: true};\n  var _bitwiseAND = {binop: 5, beforeExpr: true};\n  var _equality = {binop: 6, beforeExpr: true};\n  var _relational = {binop: 7, beforeExpr: true};\n  var _bitShift = {binop: 8, beforeExpr: true};\n  var _plusMin = {binop: 9, prefix: true, beforeExpr: true};\n  var _multiplyModulo = {binop: 10, beforeExpr: true};\n\n  exports.tokTypes = {bracketL: _bracketL, bracketR: _bracketR, braceL: _braceL, braceR: _braceR,\n\t\t\t\t\t  parenL: _parenL, parenR: _parenR, comma: _comma, semi: _semi, colon: _colon,\n\t\t\t\t\t  dot: _dot, question: _question, slash: _slash, eq: _eq, name: _name, eof: _eof,\n\t\t\t\t\t  num: _num, regexp: _regexp, string: _string};\n  for (var kw in keywordTypes) exports.tokTypes[\"_\" + kw] = keywordTypes[kw];\n\n  function makePredicate(words) {\n\twords = words.split(\" \");\n\tvar f = \"\", cats = [];\n\tout: for (var i = 0; i < words.length; ++i) {\n\t  for (var j = 0; j < cats.length; ++j)\n\t\tif (cats[j][0].length == words[i].length) {\n\t\t  cats[j].push(words[i]);\n\t\t  continue out;\n\t\t}\n\t  cats.push([words[i]]);\n\t}\n\tfunction compareTo(arr) {\n\t  if (arr.length == 1) return f += \"return str === \" + JSON.stringify(arr[0]) + \";\";\n\t  f += \"switch(str){\";\n\t  for (var i = 0; i < arr.length; ++i) f += \"case \" + JSON.stringify(arr[i]) + \":\";\n\t  f += \"return true}return false;\";\n\t}\n\n\tif (cats.length > 3) {\n\t  cats.sort(function(a, b) {return b.length - a.length;});\n\t  f += \"switch(str.length){\";\n\t  for (var i = 0; i < cats.length; ++i) {\n\t\tvar cat = cats[i];\n\t\tf += \"case \" + cat[0].length + \":\";\n\t\tcompareTo(cat);\n\t  }\n\t  f += \"}\";\n\n\t} else {\n\t  compareTo(words);\n\t}\n\treturn new Function(\"str\", f);\n  }\n\n  var isReservedWord3 = makePredicate(\"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\");\n\n  var isReservedWord5 = makePredicate(\"class enum extends super const export import\");\n\n  var isStrictReservedWord = makePredicate(\"implements interface let package private protected public static yield\");\n\n  var isStrictBadIdWord = makePredicate(\"eval arguments\");\n\n  var isKeyword = makePredicate(\"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\");\n\n  var nonASCIIwhitespace = /[\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n  var nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n  var nonASCIIidentifierChars = \"\\u0300-\\u036f\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u0620-\\u0649\\u0672-\\u06d3\\u06e7-\\u06e8\\u06fb-\\u06fc\\u0730-\\u074a\\u0800-\\u0814\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0840-\\u0857\\u08e4-\\u08fe\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962-\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09d7\\u09df-\\u09e0\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2-\\u0ae3\\u0ae6-\\u0aef\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b5f-\\u0b60\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c01-\\u0c03\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62-\\u0c63\\u0c66-\\u0c6f\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2-\\u0ce3\\u0ce6-\\u0cef\\u0d02\\u0d03\\u0d46-\\u0d48\\u0d57\\u0d62-\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e34-\\u0e3a\\u0e40-\\u0e45\\u0e50-\\u0e59\\u0eb4-\\u0eb9\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f41-\\u0f47\\u0f71-\\u0f84\\u0f86-\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u1000-\\u1029\\u1040-\\u1049\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u170e-\\u1710\\u1720-\\u1730\\u1740-\\u1750\\u1772\\u1773\\u1780-\\u17b2\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u1920-\\u192b\\u1930-\\u193b\\u1951-\\u196d\\u19b0-\\u19c0\\u19c8-\\u19c9\\u19d0-\\u19d9\\u1a00-\\u1a15\\u1a20-\\u1a53\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1b46-\\u1b4b\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c00-\\u1c22\\u1c40-\\u1c49\\u1c5b-\\u1c7d\\u1cd0-\\u1cd2\\u1d00-\\u1dbe\\u1e01-\\u1f15\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2d81-\\u2d96\\u2de0-\\u2dff\\u3021-\\u3028\\u3099\\u309a\\ua640-\\ua66d\\ua674-\\ua67d\\ua69f\\ua6f0-\\ua6f1\\ua7f8-\\ua800\\ua806\\ua80b\\ua823-\\ua827\\ua880-\\ua881\\ua8b4-\\ua8c4\\ua8d0-\\ua8d9\\ua8f3-\\ua8f7\\ua900-\\ua909\\ua926-\\ua92d\\ua930-\\ua945\\ua980-\\ua983\\ua9b3-\\ua9c0\\uaa00-\\uaa27\\uaa40-\\uaa41\\uaa4c-\\uaa4d\\uaa50-\\uaa59\\uaa7b\\uaae0-\\uaae9\\uaaf2-\\uaaf3\\uabc0-\\uabe1\\uabec\\uabed\\uabf0-\\uabf9\\ufb20-\\ufb28\\ufe00-\\ufe0f\\ufe20-\\ufe26\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\n  var nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\n  var nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\n  var newline = /[\\n\\r\\u2028\\u2029]/;\n\n  var lineBreak = /\\r\\n|[\\n\\r\\u2028\\u2029]/g;\n\n  var isIdentifierStart = exports.isIdentifierStart = function(code) {\n\tif (code < 65) return code === 36;\n\tif (code < 91) return true;\n\tif (code < 97) return code === 95;\n\tif (code < 123)return true;\n\treturn code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n  };\n\n  var isIdentifierChar = exports.isIdentifierChar = function(code) {\n\tif (code < 48) return code === 36;\n\tif (code < 58) return true;\n\tif (code < 65) return false;\n\tif (code < 91) return true;\n\tif (code < 97) return code === 95;\n\tif (code < 123)return true;\n\treturn code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n  };\n\n  function line_loc_t() {\n\tthis.line = tokCurLine;\n\tthis.column = tokPos - tokLineStart;\n  }\n\n  function initTokenState() {\n\ttokCurLine = 1;\n\ttokPos = tokLineStart = 0;\n\ttokRegexpAllowed = true;\n\tskipSpace();\n  }\n\n  function finishToken(type, val) {\n\ttokEnd = tokPos;\n\tif (options.locations) tokEndLoc = new line_loc_t;\n\ttokType = type;\n\tskipSpace();\n\ttokVal = val;\n\ttokRegexpAllowed = type.beforeExpr;\n  }\n\n  function skipBlockComment() {\n\tvar startLoc = options.onComment && options.locations && new line_loc_t;\n\tvar start = tokPos, end = input.indexOf(\"*/\", tokPos += 2);\n\tif (end === -1) raise(tokPos - 2, \"Unterminated comment\");\n\ttokPos = end + 2;\n\tif (options.locations) {\n\t  lineBreak.lastIndex = start;\n\t  var match;\n\t  while ((match = lineBreak.exec(input)) && match.index < tokPos) {\n\t\t++tokCurLine;\n\t\ttokLineStart = match.index + match[0].length;\n\t  }\n\t}\n\tif (options.onComment)\n\t  options.onComment(true, input.slice(start + 2, end), start, tokPos,\n\t\t\t\t\t\tstartLoc, options.locations && new line_loc_t);\n  }\n\n  function skipLineComment() {\n\tvar start = tokPos;\n\tvar startLoc = options.onComment && options.locations && new line_loc_t;\n\tvar ch = input.charCodeAt(tokPos+=2);\n\twhile (tokPos < inputLen && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) {\n\t  ++tokPos;\n\t  ch = input.charCodeAt(tokPos);\n\t}\n\tif (options.onComment)\n\t  options.onComment(false, input.slice(start + 2, tokPos), start, tokPos,\n\t\t\t\t\t\tstartLoc, options.locations && new line_loc_t);\n  }\n\n  function skipSpace() {\n\twhile (tokPos < inputLen) {\n\t  var ch = input.charCodeAt(tokPos);\n\t  if (ch === 32) {\n\t\t++tokPos;\n\t  } else if (ch === 13) {\n\t\t++tokPos;\n\t\tvar next = input.charCodeAt(tokPos);\n\t\tif (next === 10) {\n\t\t  ++tokPos;\n\t\t}\n\t\tif (options.locations) {\n\t\t  ++tokCurLine;\n\t\t  tokLineStart = tokPos;\n\t\t}\n\t  } else if (ch === 10 || ch === 8232 || ch === 8233) {\n\t\t++tokPos;\n\t\tif (options.locations) {\n\t\t  ++tokCurLine;\n\t\t  tokLineStart = tokPos;\n\t\t}\n\t  } else if (ch > 8 && ch < 14) {\n\t\t++tokPos;\n\t  } else if (ch === 47) {\n\t\tvar next = input.charCodeAt(tokPos + 1);\n\t\tif (next === 42) {\n\t\t  skipBlockComment();\n\t\t} else if (next === 47) {\n\t\t  skipLineComment();\n\t\t} else break;\n\t  } else if (ch === 160) {\n\t\t++tokPos;\n\t  } else if (ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n\t\t++tokPos;\n\t  } else {\n\t\tbreak;\n\t  }\n\t}\n  }\n\n  function readToken_dot() {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tif (next >= 48 && next <= 57) return readNumber(true);\n\t++tokPos;\n\treturn finishToken(_dot);\n  }\n\n  function readToken_slash() {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tif (tokRegexpAllowed) {++tokPos; return readRegexp();}\n\tif (next === 61) return finishOp(_assign, 2);\n\treturn finishOp(_slash, 1);\n  }\n\n  function readToken_mult_modulo() {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tif (next === 61) return finishOp(_assign, 2);\n\treturn finishOp(_multiplyModulo, 1);\n  }\n\n  function readToken_pipe_amp(code) {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tif (next === code) return finishOp(code === 124 ? _logicalOR : _logicalAND, 2);\n\tif (next === 61) return finishOp(_assign, 2);\n\treturn finishOp(code === 124 ? _bitwiseOR : _bitwiseAND, 1);\n  }\n\n  function readToken_caret() {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tif (next === 61) return finishOp(_assign, 2);\n\treturn finishOp(_bitwiseXOR, 1);\n  }\n\n  function readToken_plus_min(code) {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tif (next === code) {\n\t  if (next == 45 && input.charCodeAt(tokPos + 2) == 62 &&\n\t\t  newline.test(input.slice(lastEnd, tokPos))) {\n\t\ttokPos += 3;\n\t\tskipLineComment();\n\t\tskipSpace();\n\t\treturn readToken();\n\t  }\n\t  return finishOp(_incDec, 2);\n\t}\n\tif (next === 61) return finishOp(_assign, 2);\n\treturn finishOp(_plusMin, 1);\n  }\n\n  function readToken_lt_gt(code) {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tvar size = 1;\n\tif (next === code) {\n\t  size = code === 62 && input.charCodeAt(tokPos + 2) === 62 ? 3 : 2;\n\t  if (input.charCodeAt(tokPos + size) === 61) return finishOp(_assign, size + 1);\n\t  return finishOp(_bitShift, size);\n\t}\n\tif (next == 33 && code == 60 && input.charCodeAt(tokPos + 2) == 45 &&\n\t\tinput.charCodeAt(tokPos + 3) == 45) {\n\t  tokPos += 4;\n\t  skipLineComment();\n\t  skipSpace();\n\t  return readToken();\n\t}\n\tif (next === 61)\n\t  size = input.charCodeAt(tokPos + 2) === 61 ? 3 : 2;\n\treturn finishOp(_relational, size);\n  }\n\n  function readToken_eq_excl(code) {\n\tvar next = input.charCodeAt(tokPos + 1);\n\tif (next === 61) return finishOp(_equality, input.charCodeAt(tokPos + 2) === 61 ? 3 : 2);\n\treturn finishOp(code === 61 ? _eq : _prefix, 1);\n  }\n\n  function getTokenFromCode(code) {\n\tswitch(code) {\n\tcase 46:\n\t  return readToken_dot();\n\n\tcase 40: ++tokPos; return finishToken(_parenL);\n\tcase 41: ++tokPos; return finishToken(_parenR);\n\tcase 59: ++tokPos; return finishToken(_semi);\n\tcase 44: ++tokPos; return finishToken(_comma);\n\tcase 91: ++tokPos; return finishToken(_bracketL);\n\tcase 93: ++tokPos; return finishToken(_bracketR);\n\tcase 123: ++tokPos; return finishToken(_braceL);\n\tcase 125: ++tokPos; return finishToken(_braceR);\n\tcase 58: ++tokPos; return finishToken(_colon);\n\tcase 63: ++tokPos; return finishToken(_question);\n\n\tcase 48:\n\t  var next = input.charCodeAt(tokPos + 1);\n\t  if (next === 120 || next === 88) return readHexNumber();\n\tcase 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57:\n\t  return readNumber(false);\n\n\tcase 34: case 39:\n\t  return readString(code);\n\n\tcase 47:\n\t  return readToken_slash(code);\n\n\tcase 37: case 42:\n\t  return readToken_mult_modulo();\n\n\tcase 124: case 38:\n\t  return readToken_pipe_amp(code);\n\n\tcase 94:\n\t  return readToken_caret();\n\n\tcase 43: case 45:\n\t  return readToken_plus_min(code);\n\n\tcase 60: case 62:\n\t  return readToken_lt_gt(code);\n\n\tcase 61: case 33:\n\t  return readToken_eq_excl(code);\n\n\tcase 126:\n\t  return finishOp(_prefix, 1);\n\t}\n\n\treturn false;\n  }\n\n  function readToken(forceRegexp) {\n\tif (!forceRegexp) tokStart = tokPos;\n\telse tokPos = tokStart + 1;\n\tif (options.locations) tokStartLoc = new line_loc_t;\n\tif (forceRegexp) return readRegexp();\n\tif (tokPos >= inputLen) return finishToken(_eof);\n\n\tvar code = input.charCodeAt(tokPos);\n\tif (isIdentifierStart(code) || code === 92 ) return readWord();\n\n\tvar tok = getTokenFromCode(code);\n\n\tif (tok === false) {\n\t  var ch = String.fromCharCode(code);\n\t  if (ch === \"\\\\\" || nonASCIIidentifierStart.test(ch)) return readWord();\n\t  raise(tokPos, \"Unexpected character '\" + ch + \"'\");\n\t}\n\treturn tok;\n  }\n\n  function finishOp(type, size) {\n\tvar str = input.slice(tokPos, tokPos + size);\n\ttokPos += size;\n\tfinishToken(type, str);\n  }\n\n  function readRegexp() {\n\tvar content = \"\", escaped, inClass, start = tokPos;\n\tfor (;;) {\n\t  if (tokPos >= inputLen) raise(start, \"Unterminated regular expression\");\n\t  var ch = input.charAt(tokPos);\n\t  if (newline.test(ch)) raise(start, \"Unterminated regular expression\");\n\t  if (!escaped) {\n\t\tif (ch === \"[\") inClass = true;\n\t\telse if (ch === \"]\" && inClass) inClass = false;\n\t\telse if (ch === \"/\" && !inClass) break;\n\t\tescaped = ch === \"\\\\\";\n\t  } else escaped = false;\n\t  ++tokPos;\n\t}\n\tvar content = input.slice(start, tokPos);\n\t++tokPos;\n\tvar mods = readWord1();\n\tif (mods && !/^[gmsiy]*$/.test(mods)) raise(start, \"Invalid regexp flag\");\n\ttry {\n\t  var value = new RegExp(content, mods);\n\t} catch (e) {\n\t  if (e instanceof SyntaxError) raise(start, e.message);\n\t  raise(e);\n\t}\n\treturn finishToken(_regexp, value);\n  }\n\n  function readInt(radix, len) {\n\tvar start = tokPos, total = 0;\n\tfor (var i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n\t  var code = input.charCodeAt(tokPos), val;\n\t  if (code >= 97) val = code - 97 + 10;\n\t  else if (code >= 65) val = code - 65 + 10;\n\t  else if (code >= 48 && code <= 57) val = code - 48;\n\t  else val = Infinity;\n\t  if (val >= radix) break;\n\t  ++tokPos;\n\t  total = total * radix + val;\n\t}\n\tif (tokPos === start || len != null && tokPos - start !== len) return null;\n\n\treturn total;\n  }\n\n  function readHexNumber() {\n\ttokPos += 2;\n\tvar val = readInt(16);\n\tif (val == null) raise(tokStart + 2, \"Expected hexadecimal number\");\n\tif (isIdentifierStart(input.charCodeAt(tokPos))) raise(tokPos, \"Identifier directly after number\");\n\treturn finishToken(_num, val);\n  }\n\n  function readNumber(startsWithDot) {\n\tvar start = tokPos, isFloat = false, octal = input.charCodeAt(tokPos) === 48;\n\tif (!startsWithDot && readInt(10) === null) raise(start, \"Invalid number\");\n\tif (input.charCodeAt(tokPos) === 46) {\n\t  ++tokPos;\n\t  readInt(10);\n\t  isFloat = true;\n\t}\n\tvar next = input.charCodeAt(tokPos);\n\tif (next === 69 || next === 101) {\n\t  next = input.charCodeAt(++tokPos);\n\t  if (next === 43 || next === 45) ++tokPos;\n\t  if (readInt(10) === null) raise(start, \"Invalid number\");\n\t  isFloat = true;\n\t}\n\tif (isIdentifierStart(input.charCodeAt(tokPos))) raise(tokPos, \"Identifier directly after number\");\n\n\tvar str = input.slice(start, tokPos), val;\n\tif (isFloat) val = parseFloat(str);\n\telse if (!octal || str.length === 1) val = parseInt(str, 10);\n\telse if (/[89]/.test(str) || strict) raise(start, \"Invalid number\");\n\telse val = parseInt(str, 8);\n\treturn finishToken(_num, val);\n  }\n\n  function readString(quote) {\n\ttokPos++;\n\tvar out = \"\";\n\tfor (;;) {\n\t  if (tokPos >= inputLen) raise(tokStart, \"Unterminated string constant\");\n\t  var ch = input.charCodeAt(tokPos);\n\t  if (ch === quote) {\n\t\t++tokPos;\n\t\treturn finishToken(_string, out);\n\t  }\n\t  if (ch === 92) {\n\t\tch = input.charCodeAt(++tokPos);\n\t\tvar octal = /^[0-7]+/.exec(input.slice(tokPos, tokPos + 3));\n\t\tif (octal) octal = octal[0];\n\t\twhile (octal && parseInt(octal, 8) > 255) octal = octal.slice(0, -1);\n\t\tif (octal === \"0\") octal = null;\n\t\t++tokPos;\n\t\tif (octal) {\n\t\t  if (strict) raise(tokPos - 2, \"Octal literal in strict mode\");\n\t\t  out += String.fromCharCode(parseInt(octal, 8));\n\t\t  tokPos += octal.length - 1;\n\t\t} else {\n\t\t  switch (ch) {\n\t\t  case 110: out += \"\\n\"; break;\n\t\t  case 114: out += \"\\r\"; break;\n\t\t  case 120: out += String.fromCharCode(readHexChar(2)); break;\n\t\t  case 117: out += String.fromCharCode(readHexChar(4)); break;\n\t\t  case 85: out += String.fromCharCode(readHexChar(8)); break;\n\t\t  case 116: out += \"\\t\"; break;\n\t\t  case 98: out += \"\\b\"; break;\n\t\t  case 118: out += \"\\u000b\"; break;\n\t\t  case 102: out += \"\\f\"; break;\n\t\t  case 48: out += \"\\0\"; break;\n\t\t  case 13: if (input.charCodeAt(tokPos) === 10) ++tokPos;\n\t\t  case 10:\n\t\t\tif (options.locations) { tokLineStart = tokPos; ++tokCurLine; }\n\t\t\tbreak;\n\t\t  default: out += String.fromCharCode(ch); break;\n\t\t  }\n\t\t}\n\t  } else {\n\t\tif (ch === 13 || ch === 10 || ch === 8232 || ch === 8233) raise(tokStart, \"Unterminated string constant\");\n\t\tout += String.fromCharCode(ch);\n\t\t++tokPos;\n\t  }\n\t}\n  }\n\n  function readHexChar(len) {\n\tvar n = readInt(16, len);\n\tif (n === null) raise(tokStart, \"Bad character escape sequence\");\n\treturn n;\n  }\n\n  var containsEsc;\n\n  function readWord1() {\n\tcontainsEsc = false;\n\tvar word, first = true, start = tokPos;\n\tfor (;;) {\n\t  var ch = input.charCodeAt(tokPos);\n\t  if (isIdentifierChar(ch)) {\n\t\tif (containsEsc) word += input.charAt(tokPos);\n\t\t++tokPos;\n\t  } else if (ch === 92) {\n\t\tif (!containsEsc) word = input.slice(start, tokPos);\n\t\tcontainsEsc = true;\n\t\tif (input.charCodeAt(++tokPos) != 117)\n\t\t  raise(tokPos, \"Expecting Unicode escape sequence \\\\uXXXX\");\n\t\t++tokPos;\n\t\tvar esc = readHexChar(4);\n\t\tvar escStr = String.fromCharCode(esc);\n\t\tif (!escStr) raise(tokPos - 1, \"Invalid Unicode escape\");\n\t\tif (!(first ? isIdentifierStart(esc) : isIdentifierChar(esc)))\n\t\t  raise(tokPos - 4, \"Invalid Unicode escape\");\n\t\tword += escStr;\n\t  } else {\n\t\tbreak;\n\t  }\n\t  first = false;\n\t}\n\treturn containsEsc ? word : input.slice(start, tokPos);\n  }\n\n  function readWord() {\n\tvar word = readWord1();\n\tvar type = _name;\n\tif (!containsEsc && isKeyword(word))\n\t  type = keywordTypes[word];\n\treturn finishToken(type, word);\n  }\n\n  function next() {\n\tlastStart = tokStart;\n\tlastEnd = tokEnd;\n\tlastEndLoc = tokEndLoc;\n\treadToken();\n  }\n\n  function setStrict(strct) {\n\tstrict = strct;\n\ttokPos = tokStart;\n\tif (options.locations) {\n\t  while (tokPos < tokLineStart) {\n\t\ttokLineStart = input.lastIndexOf(\"\\n\", tokLineStart - 2) + 1;\n\t\t--tokCurLine;\n\t  }\n\t}\n\tskipSpace();\n\treadToken();\n  }\n\n  function node_t() {\n\tthis.type = null;\n\tthis.start = tokStart;\n\tthis.end = null;\n  }\n\n  function node_loc_t() {\n\tthis.start = tokStartLoc;\n\tthis.end = null;\n\tif (sourceFile !== null) this.source = sourceFile;\n  }\n\n  function startNode() {\n\tvar node = new node_t();\n\tif (options.locations)\n\t  node.loc = new node_loc_t();\n\tif (options.directSourceFile)\n\t  node.sourceFile = options.directSourceFile;\n\tif (options.ranges)\n\t  node.range = [tokStart, 0];\n\treturn node;\n  }\n\n  function startNodeFrom(other) {\n\tvar node = new node_t();\n\tnode.start = other.start;\n\tif (options.locations) {\n\t  node.loc = new node_loc_t();\n\t  node.loc.start = other.loc.start;\n\t}\n\tif (options.ranges)\n\t  node.range = [other.range[0], 0];\n\n\treturn node;\n  }\n\n  function finishNode(node, type) {\n\tnode.type = type;\n\tnode.end = lastEnd;\n\tif (options.locations)\n\t  node.loc.end = lastEndLoc;\n\tif (options.ranges)\n\t  node.range[1] = lastEnd;\n\treturn node;\n  }\n\n  function isUseStrict(stmt) {\n\treturn options.ecmaVersion >= 5 && stmt.type === \"ExpressionStatement\" &&\n\t  stmt.expression.type === \"Literal\" && stmt.expression.value === \"use strict\";\n  }\n\n  function eat(type) {\n\tif (tokType === type) {\n\t  next();\n\t  return true;\n\t}\n  }\n\n  function canInsertSemicolon() {\n\treturn !options.strictSemicolons &&\n\t  (tokType === _eof || tokType === _braceR || newline.test(input.slice(lastEnd, tokStart)));\n  }\n\n  function semicolon() {\n\tif (!eat(_semi) && !canInsertSemicolon()) unexpected();\n  }\n\n  function expect(type) {\n\tif (tokType === type) next();\n\telse unexpected();\n  }\n\n  function unexpected() {\n\traise(tokStart, \"Unexpected token\");\n  }\n\n  function checkLVal(expr) {\n\tif (expr.type !== \"Identifier\" && expr.type !== \"MemberExpression\")\n\t  raise(expr.start, \"Assigning to rvalue\");\n\tif (strict && expr.type === \"Identifier\" && isStrictBadIdWord(expr.name))\n\t  raise(expr.start, \"Assigning to \" + expr.name + \" in strict mode\");\n  }\n\n  function parseTopLevel(program) {\n\tlastStart = lastEnd = tokPos;\n\tif (options.locations) lastEndLoc = new line_loc_t;\n\tinFunction = strict = null;\n\tlabels = [];\n\treadToken();\n\n\tvar node = program || startNode(), first = true;\n\tif (!program) node.body = [];\n\twhile (tokType !== _eof) {\n\t  var stmt = parseStatement();\n\t  node.body.push(stmt);\n\t  if (first && isUseStrict(stmt)) setStrict(true);\n\t  first = false;\n\t}\n\treturn finishNode(node, \"Program\");\n  }\n\n  var loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"};\n\n  function parseStatement() {\n\tif (tokType === _slash || tokType === _assign && tokVal == \"/=\")\n\t  readToken(true);\n\n\tvar starttype = tokType, node = startNode();\n\n\tswitch (starttype) {\n\tcase _break: case _continue:\n\t  next();\n\t  var isBreak = starttype === _break;\n\t  if (eat(_semi) || canInsertSemicolon()) node.label = null;\n\t  else if (tokType !== _name) unexpected();\n\t  else {\n\t\tnode.label = parseIdent();\n\t\tsemicolon();\n\t  }\n\n\t  for (var i = 0; i < labels.length; ++i) {\n\t\tvar lab = labels[i];\n\t\tif (node.label == null || lab.name === node.label.name) {\n\t\t  if (lab.kind != null && (isBreak || lab.kind === \"loop\")) break;\n\t\t  if (node.label && isBreak) break;\n\t\t}\n\t  }\n\t  if (i === labels.length) raise(node.start, \"Unsyntactic \" + starttype.keyword);\n\t  return finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\");\n\n\tcase _debugger:\n\t  next();\n\t  semicolon();\n\t  return finishNode(node, \"DebuggerStatement\");\n\n\tcase _do:\n\t  next();\n\t  labels.push(loopLabel);\n\t  node.body = parseStatement();\n\t  labels.pop();\n\t  expect(_while);\n\t  node.test = parseParenExpression();\n\t  semicolon();\n\t  return finishNode(node, \"DoWhileStatement\");\n\n\tcase _for:\n\t  next();\n\t  labels.push(loopLabel);\n\t  expect(_parenL);\n\t  if (tokType === _semi) return parseFor(node, null);\n\t  if (tokType === _var) {\n\t\tvar init = startNode();\n\t\tnext();\n\t\tparseVar(init, true);\n\t\tfinishNode(init, \"VariableDeclaration\");\n\t\tif (init.declarations.length === 1 && eat(_in))\n\t\t  return parseForIn(node, init);\n\t\treturn parseFor(node, init);\n\t  }\n\t  var init = parseExpression(false, true);\n\t  if (eat(_in)) {checkLVal(init); return parseForIn(node, init);}\n\t  return parseFor(node, init);\n\n\tcase _function:\n\t  next();\n\t  return parseFunction(node, true);\n\n\tcase _if:\n\t  next();\n\t  node.test = parseParenExpression();\n\t  node.consequent = parseStatement();\n\t  node.alternate = eat(_else) ? parseStatement() : null;\n\t  return finishNode(node, \"IfStatement\");\n\n\tcase _return:\n\t  if (!inFunction && !options.allowReturnOutsideFunction)\n\t\traise(tokStart, \"'return' outside of function\");\n\t  next();\n\n\t  if (eat(_semi) || canInsertSemicolon()) node.argument = null;\n\t  else { node.argument = parseExpression(); semicolon(); }\n\t  return finishNode(node, \"ReturnStatement\");\n\n\tcase _switch:\n\t  next();\n\t  node.discriminant = parseParenExpression();\n\t  node.cases = [];\n\t  expect(_braceL);\n\t  labels.push(switchLabel);\n\n\t  for (var cur, sawDefault; tokType != _braceR;) {\n\t\tif (tokType === _case || tokType === _default) {\n\t\t  var isCase = tokType === _case;\n\t\t  if (cur) finishNode(cur, \"SwitchCase\");\n\t\t  node.cases.push(cur = startNode());\n\t\t  cur.consequent = [];\n\t\t  next();\n\t\t  if (isCase) cur.test = parseExpression();\n\t\t  else {\n\t\t\tif (sawDefault) raise(lastStart, \"Multiple default clauses\"); sawDefault = true;\n\t\t\tcur.test = null;\n\t\t  }\n\t\t  expect(_colon);\n\t\t} else {\n\t\t  if (!cur) unexpected();\n\t\t  cur.consequent.push(parseStatement());\n\t\t}\n\t  }\n\t  if (cur) finishNode(cur, \"SwitchCase\");\n\t  next();\n\t  labels.pop();\n\t  return finishNode(node, \"SwitchStatement\");\n\n\tcase _throw:\n\t  next();\n\t  if (newline.test(input.slice(lastEnd, tokStart)))\n\t\traise(lastEnd, \"Illegal newline after throw\");\n\t  node.argument = parseExpression();\n\t  semicolon();\n\t  return finishNode(node, \"ThrowStatement\");\n\n\tcase _try:\n\t  next();\n\t  node.block = parseBlock();\n\t  node.handler = null;\n\t  if (tokType === _catch) {\n\t\tvar clause = startNode();\n\t\tnext();\n\t\texpect(_parenL);\n\t\tclause.param = parseIdent();\n\t\tif (strict && isStrictBadIdWord(clause.param.name))\n\t\t  raise(clause.param.start, \"Binding \" + clause.param.name + \" in strict mode\");\n\t\texpect(_parenR);\n\t\tclause.guard = null;\n\t\tclause.body = parseBlock();\n\t\tnode.handler = finishNode(clause, \"CatchClause\");\n\t  }\n\t  node.guardedHandlers = empty;\n\t  node.finalizer = eat(_finally) ? parseBlock() : null;\n\t  if (!node.handler && !node.finalizer)\n\t\traise(node.start, \"Missing catch or finally clause\");\n\t  return finishNode(node, \"TryStatement\");\n\n\tcase _var:\n\t  next();\n\t  parseVar(node);\n\t  semicolon();\n\t  return finishNode(node, \"VariableDeclaration\");\n\n\tcase _while:\n\t  next();\n\t  node.test = parseParenExpression();\n\t  labels.push(loopLabel);\n\t  node.body = parseStatement();\n\t  labels.pop();\n\t  return finishNode(node, \"WhileStatement\");\n\n\tcase _with:\n\t  if (strict) raise(tokStart, \"'with' in strict mode\");\n\t  next();\n\t  node.object = parseParenExpression();\n\t  node.body = parseStatement();\n\t  return finishNode(node, \"WithStatement\");\n\n\tcase _braceL:\n\t  return parseBlock();\n\n\tcase _semi:\n\t  next();\n\t  return finishNode(node, \"EmptyStatement\");\n\n\tdefault:\n\t  var maybeName = tokVal, expr = parseExpression();\n\t  if (starttype === _name && expr.type === \"Identifier\" && eat(_colon)) {\n\t\tfor (var i = 0; i < labels.length; ++i)\n\t\t  if (labels[i].name === maybeName) raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n\t\tvar kind = tokType.isLoop ? \"loop\" : tokType === _switch ? \"switch\" : null;\n\t\tlabels.push({name: maybeName, kind: kind});\n\t\tnode.body = parseStatement();\n\t\tlabels.pop();\n\t\tnode.label = expr;\n\t\treturn finishNode(node, \"LabeledStatement\");\n\t  } else {\n\t\tnode.expression = expr;\n\t\tsemicolon();\n\t\treturn finishNode(node, \"ExpressionStatement\");\n\t  }\n\t}\n  }\n\n  function parseParenExpression() {\n\texpect(_parenL);\n\tvar val = parseExpression();\n\texpect(_parenR);\n\treturn val;\n  }\n\n  function parseBlock(allowStrict) {\n\tvar node = startNode(), first = true, strict = false, oldStrict;\n\tnode.body = [];\n\texpect(_braceL);\n\twhile (!eat(_braceR)) {\n\t  var stmt = parseStatement();\n\t  node.body.push(stmt);\n\t  if (first && allowStrict && isUseStrict(stmt)) {\n\t\toldStrict = strict;\n\t\tsetStrict(strict = true);\n\t  }\n\t  first = false;\n\t}\n\tif (strict && !oldStrict) setStrict(false);\n\treturn finishNode(node, \"BlockStatement\");\n  }\n\n  function parseFor(node, init) {\n\tnode.init = init;\n\texpect(_semi);\n\tnode.test = tokType === _semi ? null : parseExpression();\n\texpect(_semi);\n\tnode.update = tokType === _parenR ? null : parseExpression();\n\texpect(_parenR);\n\tnode.body = parseStatement();\n\tlabels.pop();\n\treturn finishNode(node, \"ForStatement\");\n  }\n\n  function parseForIn(node, init) {\n\tnode.left = init;\n\tnode.right = parseExpression();\n\texpect(_parenR);\n\tnode.body = parseStatement();\n\tlabels.pop();\n\treturn finishNode(node, \"ForInStatement\");\n  }\n\n  function parseVar(node, noIn) {\n\tnode.declarations = [];\n\tnode.kind = \"var\";\n\tfor (;;) {\n\t  var decl = startNode();\n\t  decl.id = parseIdent();\n\t  if (strict && isStrictBadIdWord(decl.id.name))\n\t\traise(decl.id.start, \"Binding \" + decl.id.name + \" in strict mode\");\n\t  decl.init = eat(_eq) ? parseExpression(true, noIn) : null;\n\t  node.declarations.push(finishNode(decl, \"VariableDeclarator\"));\n\t  if (!eat(_comma)) break;\n\t}\n\treturn node;\n  }\n\n  function parseExpression(noComma, noIn) {\n\tvar expr = parseMaybeAssign(noIn);\n\tif (!noComma && tokType === _comma) {\n\t  var node = startNodeFrom(expr);\n\t  node.expressions = [expr];\n\t  while (eat(_comma)) node.expressions.push(parseMaybeAssign(noIn));\n\t  return finishNode(node, \"SequenceExpression\");\n\t}\n\treturn expr;\n  }\n\n  function parseMaybeAssign(noIn) {\n\tvar left = parseMaybeConditional(noIn);\n\tif (tokType.isAssign) {\n\t  var node = startNodeFrom(left);\n\t  node.operator = tokVal;\n\t  node.left = left;\n\t  next();\n\t  node.right = parseMaybeAssign(noIn);\n\t  checkLVal(left);\n\t  return finishNode(node, \"AssignmentExpression\");\n\t}\n\treturn left;\n  }\n\n  function parseMaybeConditional(noIn) {\n\tvar expr = parseExprOps(noIn);\n\tif (eat(_question)) {\n\t  var node = startNodeFrom(expr);\n\t  node.test = expr;\n\t  node.consequent = parseExpression(true);\n\t  expect(_colon);\n\t  node.alternate = parseExpression(true, noIn);\n\t  return finishNode(node, \"ConditionalExpression\");\n\t}\n\treturn expr;\n  }\n\n  function parseExprOps(noIn) {\n\treturn parseExprOp(parseMaybeUnary(), -1, noIn);\n  }\n\n  function parseExprOp(left, minPrec, noIn) {\n\tvar prec = tokType.binop;\n\tif (prec != null && (!noIn || tokType !== _in)) {\n\t  if (prec > minPrec) {\n\t\tvar node = startNodeFrom(left);\n\t\tnode.left = left;\n\t\tnode.operator = tokVal;\n\t\tvar op = tokType;\n\t\tnext();\n\t\tnode.right = parseExprOp(parseMaybeUnary(), prec, noIn);\n\t\tvar exprNode = finishNode(node, (op === _logicalOR || op === _logicalAND) ? \"LogicalExpression\" : \"BinaryExpression\");\n\t\treturn parseExprOp(exprNode, minPrec, noIn);\n\t  }\n\t}\n\treturn left;\n  }\n\n  function parseMaybeUnary() {\n\tif (tokType.prefix) {\n\t  var node = startNode(), update = tokType.isUpdate;\n\t  node.operator = tokVal;\n\t  node.prefix = true;\n\t  tokRegexpAllowed = true;\n\t  next();\n\t  node.argument = parseMaybeUnary();\n\t  if (update) checkLVal(node.argument);\n\t  else if (strict && node.operator === \"delete\" &&\n\t\t\t   node.argument.type === \"Identifier\")\n\t\traise(node.start, \"Deleting local variable in strict mode\");\n\t  return finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n\t}\n\tvar expr = parseExprSubscripts();\n\twhile (tokType.postfix && !canInsertSemicolon()) {\n\t  var node = startNodeFrom(expr);\n\t  node.operator = tokVal;\n\t  node.prefix = false;\n\t  node.argument = expr;\n\t  checkLVal(expr);\n\t  next();\n\t  expr = finishNode(node, \"UpdateExpression\");\n\t}\n\treturn expr;\n  }\n\n  function parseExprSubscripts() {\n\treturn parseSubscripts(parseExprAtom());\n  }\n\n  function parseSubscripts(base, noCalls) {\n\tif (eat(_dot)) {\n\t  var node = startNodeFrom(base);\n\t  node.object = base;\n\t  node.property = parseIdent(true);\n\t  node.computed = false;\n\t  return parseSubscripts(finishNode(node, \"MemberExpression\"), noCalls);\n\t} else if (eat(_bracketL)) {\n\t  var node = startNodeFrom(base);\n\t  node.object = base;\n\t  node.property = parseExpression();\n\t  node.computed = true;\n\t  expect(_bracketR);\n\t  return parseSubscripts(finishNode(node, \"MemberExpression\"), noCalls);\n\t} else if (!noCalls && eat(_parenL)) {\n\t  var node = startNodeFrom(base);\n\t  node.callee = base;\n\t  node.arguments = parseExprList(_parenR, false);\n\t  return parseSubscripts(finishNode(node, \"CallExpression\"), noCalls);\n\t} else return base;\n  }\n\n  function parseExprAtom() {\n\tswitch (tokType) {\n\tcase _this:\n\t  var node = startNode();\n\t  next();\n\t  return finishNode(node, \"ThisExpression\");\n\tcase _name:\n\t  return parseIdent();\n\tcase _num: case _string: case _regexp:\n\t  var node = startNode();\n\t  node.value = tokVal;\n\t  node.raw = input.slice(tokStart, tokEnd);\n\t  next();\n\t  return finishNode(node, \"Literal\");\n\n\tcase _null: case _true: case _false:\n\t  var node = startNode();\n\t  node.value = tokType.atomValue;\n\t  node.raw = tokType.keyword;\n\t  next();\n\t  return finishNode(node, \"Literal\");\n\n\tcase _parenL:\n\t  var tokStartLoc1 = tokStartLoc, tokStart1 = tokStart;\n\t  next();\n\t  var val = parseExpression();\n\t  val.start = tokStart1;\n\t  val.end = tokEnd;\n\t  if (options.locations) {\n\t\tval.loc.start = tokStartLoc1;\n\t\tval.loc.end = tokEndLoc;\n\t  }\n\t  if (options.ranges)\n\t\tval.range = [tokStart1, tokEnd];\n\t  expect(_parenR);\n\t  return val;\n\n\tcase _bracketL:\n\t  var node = startNode();\n\t  next();\n\t  node.elements = parseExprList(_bracketR, true, true);\n\t  return finishNode(node, \"ArrayExpression\");\n\n\tcase _braceL:\n\t  return parseObj();\n\n\tcase _function:\n\t  var node = startNode();\n\t  next();\n\t  return parseFunction(node, false);\n\n\tcase _new:\n\t  return parseNew();\n\n\tdefault:\n\t  unexpected();\n\t}\n  }\n\n  function parseNew() {\n\tvar node = startNode();\n\tnext();\n\tnode.callee = parseSubscripts(parseExprAtom(), true);\n\tif (eat(_parenL)) node.arguments = parseExprList(_parenR, false);\n\telse node.arguments = empty;\n\treturn finishNode(node, \"NewExpression\");\n  }\n\n  function parseObj() {\n\tvar node = startNode(), first = true, sawGetSet = false;\n\tnode.properties = [];\n\tnext();\n\twhile (!eat(_braceR)) {\n\t  if (!first) {\n\t\texpect(_comma);\n\t\tif (options.allowTrailingCommas && eat(_braceR)) break;\n\t  } else first = false;\n\n\t  var prop = {key: parsePropertyName()}, isGetSet = false, kind;\n\t  if (eat(_colon)) {\n\t\tprop.value = parseExpression(true);\n\t\tkind = prop.kind = \"init\";\n\t  } else if (options.ecmaVersion >= 5 && prop.key.type === \"Identifier\" &&\n\t\t\t\t (prop.key.name === \"get\" || prop.key.name === \"set\")) {\n\t\tisGetSet = sawGetSet = true;\n\t\tkind = prop.kind = prop.key.name;\n\t\tprop.key = parsePropertyName();\n\t\tif (tokType !== _parenL) unexpected();\n\t\tprop.value = parseFunction(startNode(), false);\n\t  } else unexpected();\n\n\t  if (prop.key.type === \"Identifier\" && (strict || sawGetSet)) {\n\t\tfor (var i = 0; i < node.properties.length; ++i) {\n\t\t  var other = node.properties[i];\n\t\t  if (other.key.name === prop.key.name) {\n\t\t\tvar conflict = kind == other.kind || isGetSet && other.kind === \"init\" ||\n\t\t\t  kind === \"init\" && (other.kind === \"get\" || other.kind === \"set\");\n\t\t\tif (conflict && !strict && kind === \"init\" && other.kind === \"init\") conflict = false;\n\t\t\tif (conflict) raise(prop.key.start, \"Redefinition of property\");\n\t\t  }\n\t\t}\n\t  }\n\t  node.properties.push(prop);\n\t}\n\treturn finishNode(node, \"ObjectExpression\");\n  }\n\n  function parsePropertyName() {\n\tif (tokType === _num || tokType === _string) return parseExprAtom();\n\treturn parseIdent(true);\n  }\n\n  function parseFunction(node, isStatement) {\n\tif (tokType === _name) node.id = parseIdent();\n\telse if (isStatement) unexpected();\n\telse node.id = null;\n\tnode.params = [];\n\tvar first = true;\n\texpect(_parenL);\n\twhile (!eat(_parenR)) {\n\t  if (!first) expect(_comma); else first = false;\n\t  node.params.push(parseIdent());\n\t}\n\n\tvar oldInFunc = inFunction, oldLabels = labels;\n\tinFunction = true; labels = [];\n\tnode.body = parseBlock(true);\n\tinFunction = oldInFunc; labels = oldLabels;\n\n\tif (strict || node.body.body.length && isUseStrict(node.body.body[0])) {\n\t  for (var i = node.id ? -1 : 0; i < node.params.length; ++i) {\n\t\tvar id = i < 0 ? node.id : node.params[i];\n\t\tif (isStrictReservedWord(id.name) || isStrictBadIdWord(id.name))\n\t\t  raise(id.start, \"Defining '\" + id.name + \"' in strict mode\");\n\t\tif (i >= 0) for (var j = 0; j < i; ++j) if (id.name === node.params[j].name)\n\t\t  raise(id.start, \"Argument name clash in strict mode\");\n\t  }\n\t}\n\n\treturn finishNode(node, isStatement ? \"FunctionDeclaration\" : \"FunctionExpression\");\n  }\n\n  function parseExprList(close, allowTrailingComma, allowEmpty) {\n\tvar elts = [], first = true;\n\twhile (!eat(close)) {\n\t  if (!first) {\n\t\texpect(_comma);\n\t\tif (allowTrailingComma && options.allowTrailingCommas && eat(close)) break;\n\t  } else first = false;\n\n\t  if (allowEmpty && tokType === _comma) elts.push(null);\n\t  else elts.push(parseExpression(true));\n\t}\n\treturn elts;\n  }\n\n  function parseIdent(liberal) {\n\tvar node = startNode();\n\tif (liberal && options.forbidReserved == \"everywhere\") liberal = false;\n\tif (tokType === _name) {\n\t  if (!liberal &&\n\t\t  (options.forbidReserved &&\n\t\t   (options.ecmaVersion === 3 ? isReservedWord3 : isReservedWord5)(tokVal) ||\n\t\t   strict && isStrictReservedWord(tokVal)) &&\n\t\t  input.slice(tokStart, tokEnd).indexOf(\"\\\\\") == -1)\n\t\traise(tokStart, \"The keyword '\" + tokVal + \"' is reserved\");\n\t  node.name = tokVal;\n\t} else if (liberal && tokType.keyword) {\n\t  node.name = tokType.keyword;\n\t} else {\n\t  unexpected();\n\t}\n\ttokRegexpAllowed = false;\n\tnext();\n\treturn finishNode(node, \"Identifier\");\n  }\n\n});\n\n\t\tif (!acorn.version)\n\t\t\tacorn = null;\n\t}\n\n\tfunction parse(code, options) {\n\t\treturn (global.acorn || acorn).parse(code, options);\n\t}\n\n\tvar binaryOperators = {\n\t\t'+': '__add',\n\t\t'-': '__subtract',\n\t\t'*': '__multiply',\n\t\t'/': '__divide',\n\t\t'%': '__modulo',\n\t\t'==': '__equals',\n\t\t'!=': '__equals'\n\t};\n\n\tvar unaryOperators = {\n\t\t'-': '__negate',\n\t\t'+': '__self'\n\t};\n\n\tvar fields = Base.each(\n\t\t['add', 'subtract', 'multiply', 'divide', 'modulo', 'equals', 'negate'],\n\t\tfunction(name) {\n\t\t\tthis['__' + name] = '#' + name;\n\t\t},\n\t\t{\n\t\t\t__self: function() {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t);\n\tPoint.inject(fields);\n\tSize.inject(fields);\n\tColor.inject(fields);\n\n\tfunction __$__(left, operator, right) {\n\t\tvar handler = binaryOperators[operator];\n\t\tif (left && left[handler]) {\n\t\t\tvar res = left[handler](right);\n\t\t\treturn operator === '!=' ? !res : res;\n\t\t}\n\t\tswitch (operator) {\n\t\tcase '+': return left + right;\n\t\tcase '-': return left - right;\n\t\tcase '*': return left * right;\n\t\tcase '/': return left / right;\n\t\tcase '%': return left % right;\n\t\tcase '==': return left == right;\n\t\tcase '!=': return left != right;\n\t\t}\n\t}\n\n\tfunction $__(operator, value) {\n\t\tvar handler = unaryOperators[operator];\n\t\tif (value && value[handler])\n\t\t\treturn value[handler]();\n\t\tswitch (operator) {\n\t\tcase '+': return +value;\n\t\tcase '-': return -value;\n\t\t}\n\t}\n\n\tfunction compile(code, options) {\n\t\tif (!code)\n\t\t\treturn '';\n\t\toptions = options || {};\n\n\t\tvar insertions = [];\n\n\t\tfunction getOffset(offset) {\n\t\t\tfor (var i = 0, l = insertions.length; i < l; i++) {\n\t\t\t\tvar insertion = insertions[i];\n\t\t\t\tif (insertion[0] >= offset)\n\t\t\t\t\tbreak;\n\t\t\t\toffset += insertion[1];\n\t\t\t}\n\t\t\treturn offset;\n\t\t}\n\n\t\tfunction getCode(node) {\n\t\t\treturn code.substring(getOffset(node.range[0]),\n\t\t\t\t\tgetOffset(node.range[1]));\n\t\t}\n\n\t\tfunction getBetween(left, right) {\n\t\t\treturn code.substring(getOffset(left.range[1]),\n\t\t\t\t\tgetOffset(right.range[0]));\n\t\t}\n\n\t\tfunction replaceCode(node, str) {\n\t\t\tvar start = getOffset(node.range[0]),\n\t\t\t\tend = getOffset(node.range[1]),\n\t\t\t\tinsert = 0;\n\t\t\tfor (var i = insertions.length - 1; i >= 0; i--) {\n\t\t\t\tif (start > insertions[i][0]) {\n\t\t\t\t\tinsert = i + 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tinsertions.splice(insert, 0, [start, str.length - end + start]);\n\t\t\tcode = code.substring(0, start) + str + code.substring(end);\n\t\t}\n\n\t\tfunction handleOverloading(node, parent) {\n\t\t\tswitch (node.type) {\n\t\t\tcase 'UnaryExpression':\n\t\t\t\tif (node.operator in unaryOperators\n\t\t\t\t\t\t&& node.argument.type !== 'Literal') {\n\t\t\t\t\tvar arg = getCode(node.argument);\n\t\t\t\t\treplaceCode(node, '$__(\"' + node.operator + '\", '\n\t\t\t\t\t\t\t+ arg + ')');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'BinaryExpression':\n\t\t\t\tif (node.operator in binaryOperators\n\t\t\t\t\t\t&& node.left.type !== 'Literal') {\n\t\t\t\t\tvar left = getCode(node.left),\n\t\t\t\t\t\tright = getCode(node.right),\n\t\t\t\t\t\tbetween = getBetween(node.left, node.right),\n\t\t\t\t\t\toperator = node.operator;\n\t\t\t\t\treplaceCode(node, '__$__(' + left + ','\n\t\t\t\t\t\t\t+ between.replace(new RegExp('\\\\' + operator),\n\t\t\t\t\t\t\t\t'\"' + operator + '\"')\n\t\t\t\t\t\t\t+ ', ' + right + ')');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'UpdateExpression':\n\t\t\tcase 'AssignmentExpression':\n\t\t\t\tvar parentType = parent && parent.type;\n\t\t\t\tif (!(\n\t\t\t\t\t\tparentType === 'ForStatement'\n\t\t\t\t\t\t|| parentType === 'BinaryExpression'\n\t\t\t\t\t\t\t&& /^[=!<>]/.test(parent.operator)\n\t\t\t\t\t\t|| parentType === 'MemberExpression' && parent.computed\n\t\t\t\t)) {\n\t\t\t\t\tif (node.type === 'UpdateExpression') {\n\t\t\t\t\t\tvar arg = getCode(node.argument),\n\t\t\t\t\t\t\texp = '__$__(' + arg + ', \"' + node.operator[0]\n\t\t\t\t\t\t\t\t\t+ '\", 1)',\n\t\t\t\t\t\t\tstr = arg + ' = ' + exp;\n\t\t\t\t\t\tif (node.prefix) {\n\t\t\t\t\t\t\tstr = '(' + str + ')';\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tparentType === 'AssignmentExpression' ||\n\t\t\t\t\t\t\tparentType === 'VariableDeclarator' ||\n\t\t\t\t\t\t\tparentType === 'BinaryExpression'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (getCode(parent.left || parent.id) === arg)\n\t\t\t\t\t\t\t\tstr = exp;\n\t\t\t\t\t\t\tstr = arg + '; ' + str;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treplaceCode(node, str);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (/^.=$/.test(node.operator)\n\t\t\t\t\t\t\t\t&& node.left.type !== 'Literal') {\n\t\t\t\t\t\t\tvar left = getCode(node.left),\n\t\t\t\t\t\t\t\tright = getCode(node.right),\n\t\t\t\t\t\t\t\texp = left + ' = __$__(' + left + ', \"'\n\t\t\t\t\t\t\t\t\t+ node.operator[0] + '\", ' + right + ')';\n\t\t\t\t\t\t\treplaceCode(node, /^\\(.*\\)$/.test(getCode(node))\n\t\t\t\t\t\t\t\t\t? '(' + exp + ')' : exp);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfunction handleExports(node) {\n\t\t\tswitch (node.type) {\n\t\t\tcase 'ExportDefaultDeclaration':\n\t\t\t\treplaceCode({\n\t\t\t\t\trange: [node.start, node.declaration.start]\n\t\t\t\t}, 'module.exports = ');\n\t\t\t\tbreak;\n\t\t\tcase 'ExportNamedDeclaration':\n\t\t\t\tvar declaration = node.declaration;\n\t\t\t\tvar specifiers = node.specifiers;\n\t\t\t\tif (declaration) {\n\t\t\t\t\tvar declarations = declaration.declarations;\n\t\t\t\t\tif (declarations) {\n\t\t\t\t\t\tdeclarations.forEach(function(dec) {\n\t\t\t\t\t\t\treplaceCode(dec, 'module.exports.' + getCode(dec));\n\t\t\t\t\t\t});\n\t\t\t\t\t\treplaceCode({\n\t\t\t\t\t\t\trange: [\n\t\t\t\t\t\t\t\tnode.start,\n\t\t\t\t\t\t\t\tdeclaration.start + declaration.kind.length\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}, '');\n\t\t\t\t\t}\n\t\t\t\t} else if (specifiers) {\n\t\t\t\t\tvar exports = specifiers.map(function(specifier) {\n\t\t\t\t\t\tvar name = getCode(specifier);\n\t\t\t\t\t\treturn 'module.exports.' + name + ' = ' + name + '; ';\n\t\t\t\t\t}).join('');\n\t\t\t\t\tif (exports) {\n\t\t\t\t\t\treplaceCode(node, exports);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfunction walkAST(node, parent, paperFeatures) {\n\t\t\tif (node) {\n\t\t\t\tfor (var key in node) {\n\t\t\t\t\tif (key !== 'range' && key !== 'loc') {\n\t\t\t\t\t\tvar value = node[key];\n\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\tfor (var i = 0, l = value.length; i < l; i++) {\n\t\t\t\t\t\t\t\twalkAST(value[i], node, paperFeatures);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (value && typeof value === 'object') {\n\t\t\t\t\t\t\twalkAST(value, node, paperFeatures);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (paperFeatures.operatorOverloading !== false) {\n\t\t\t\t\thandleOverloading(node, parent);\n\t\t\t\t}\n\t\t\t\tif (paperFeatures.moduleExports !== false) {\n\t\t\t\t\thandleExports(node);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction encodeVLQ(value) {\n\t\t\tvar res = '',\n\t\t\t\tbase64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t\t\tvalue = (Math.abs(value) << 1) + (value < 0 ? 1 : 0);\n\t\t\twhile (value || !res) {\n\t\t\t\tvar next = value & (32 - 1);\n\t\t\t\tvalue >>= 5;\n\t\t\t\tif (value)\n\t\t\t\t\tnext |= 32;\n\t\t\t\tres += base64[next];\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\n\t\tvar url = options.url || '',\n\t\t\tsourceMaps = options.sourceMaps,\n\t\t\tpaperFeatures = options.paperFeatures || {},\n\t\t\tsource = options.source || code,\n\t\t\toffset = options.offset || 0,\n\t\t\tagent = paper.agent,\n\t\t\tversion = agent.versionNumber,\n\t\t\toffsetCode = false,\n\t\t\tlineBreaks = /\\r\\n|\\n|\\r/mg,\n\t\t\tmap;\n\t\tif (sourceMaps && (agent.chrome && version >= 30\n\t\t\t\t|| agent.webkit && version >= 537.76\n\t\t\t\t|| agent.firefox && version >= 23\n\t\t\t\t|| agent.node)) {\n\t\t\tif (agent.node) {\n\t\t\t\toffset -= 2;\n\t\t\t} else if (window && url && !window.location.href.indexOf(url)) {\n\t\t\t\tvar html = document.getElementsByTagName('html')[0].innerHTML;\n\t\t\t\toffset = html.substr(0, html.indexOf(code) + 1).match(\n\t\t\t\t\t\tlineBreaks).length + 1;\n\t\t\t}\n\t\t\toffsetCode = offset > 0 && !(\n\t\t\t\t\tagent.chrome && version >= 36 ||\n\t\t\t\t\tagent.safari && version >= 600 ||\n\t\t\t\t\tagent.firefox && version >= 40 ||\n\t\t\t\t\tagent.node);\n\t\t\tvar mappings = ['AA' + encodeVLQ(offsetCode ? 0 : offset) + 'A'];\n\t\t\tmappings.length = (code.match(lineBreaks) || []).length + 1\n\t\t\t\t\t+ (offsetCode ? offset : 0);\n\t\t\tmap = {\n\t\t\t\tversion: 3,\n\t\t\t\tfile: url,\n\t\t\t\tnames:[],\n\t\t\t\tmappings: mappings.join(';AACA'),\n\t\t\t\tsourceRoot: '',\n\t\t\t\tsources: [url],\n\t\t\t\tsourcesContent: [source]\n\t\t\t};\n\t\t}\n\t\tif (\n\t\t\tpaperFeatures.operatorOverloading !== false ||\n\t\t\tpaperFeatures.moduleExports !== false\n\t\t) {\n\t\t\twalkAST(parse(code, {\n\t\t\t\tranges: true,\n\t\t\t\tpreserveParens: true,\n\t\t\t\tsourceType: 'module'\n\t\t\t}), null, paperFeatures);\n\t\t}\n\t\tif (map) {\n\t\t\tif (offsetCode) {\n\t\t\t\tcode = new Array(offset + 1).join('\\n') + code;\n\t\t\t}\n\t\t\tif (/^(inline|both)$/.test(sourceMaps)) {\n\t\t\t\tcode += \"\\n//# sourceMappingURL=data:application/json;base64,\"\n\t\t\t\t\t\t+ self.btoa(unescape(encodeURIComponent(\n\t\t\t\t\t\t\tJSON.stringify(map))));\n\t\t\t}\n\t\t\tcode += \"\\n//# sourceURL=\" + (url || 'paperscript');\n\t\t}\n\t\treturn {\n\t\t\turl: url,\n\t\t\tsource: source,\n\t\t\tcode: code,\n\t\t\tmap: map\n\t\t};\n\t}\n\n\tfunction execute(code, scope, options) {\n\t\tpaper = scope;\n\t\tvar view = scope.getView(),\n\t\t\ttool = /\\btool\\.\\w+|\\s+on(?:Key|Mouse)(?:Up|Down|Move|Drag)\\b/\n\t\t\t\t\t.test(code) && !/\\bnew\\s+Tool\\b/.test(code)\n\t\t\t\t\t\t? new Tool() : null,\n\t\t\ttoolHandlers = tool ? tool._events : [],\n\t\t\thandlers = ['onFrame', 'onResize'].concat(toolHandlers),\n\t\t\tparams = [],\n\t\t\targs = [],\n\t\t\tfunc,\n\t\t\tcompiled = typeof code === 'object' ? code : compile(code, options);\n\t\tcode = compiled.code;\n\t\tfunction expose(scope, hidden) {\n\t\t\tfor (var key in scope) {\n\t\t\t\tif ((hidden || !/^_/.test(key)) && new RegExp('([\\\\b\\\\s\\\\W]|^)'\n\t\t\t\t\t\t+ key.replace(/\\$/g, '\\\\$') + '\\\\b').test(code)) {\n\t\t\t\t\tparams.push(key);\n\t\t\t\t\targs.push(scope[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\texpose({ __$__: __$__, $__: $__, paper: scope, tool: tool },\n\t\t\t\ttrue);\n\t\texpose(scope);\n\t\tcode = 'var module = { exports: {} }; ' + code;\n\t\tvar exports = Base.each(handlers, function(key) {\n\t\t\tif (new RegExp('\\\\s+' + key + '\\\\b').test(code)) {\n\t\t\t\tparams.push(key);\n\t\t\t\tthis.push('module.exports.' + key + ' = ' + key + ';');\n\t\t\t}\n\t\t}, []).join('\\n');\n\t\tif (exports) {\n\t\t\tcode += '\\n' + exports;\n\t\t}\n\t\tcode += '\\nreturn module.exports;';\n\t\tvar agent = paper.agent;\n\t\tif (document && (agent.chrome\n\t\t\t\t|| agent.firefox && agent.versionNumber < 40)) {\n\t\t\tvar script = document.createElement('script'),\n\t\t\t\thead = document.head || document.getElementsByTagName('head')[0];\n\t\t\tif (agent.firefox)\n\t\t\t\tcode = '\\n' + code;\n\t\t\tscript.appendChild(document.createTextNode(\n\t\t\t\t'document.__paperscript__ = function(' + params + ') {' +\n\t\t\t\t\tcode +\n\t\t\t\t'\\n}'\n\t\t\t));\n\t\t\thead.appendChild(script);\n\t\t\tfunc = document.__paperscript__;\n\t\t\tdelete document.__paperscript__;\n\t\t\thead.removeChild(script);\n\t\t} else {\n\t\t\tfunc = Function(params, code);\n\t\t}\n\t\tvar exports = func && func.apply(scope, args);\n\t\tvar obj = exports || {};\n\t\tBase.each(toolHandlers, function(key) {\n\t\t\tvar value = obj[key];\n\t\t\tif (value)\n\t\t\t\ttool[key] = value;\n\t\t});\n\t\tif (view) {\n\t\t\tif (obj.onResize)\n\t\t\t\tview.setOnResize(obj.onResize);\n\t\t\tview.emit('resize', {\n\t\t\t\tsize: view.size,\n\t\t\t\tdelta: new Point()\n\t\t\t});\n\t\t\tif (obj.onFrame)\n\t\t\t\tview.setOnFrame(obj.onFrame);\n\t\t\tview.requestUpdate();\n\t\t}\n\t\treturn exports;\n\t}\n\n\tfunction loadScript(script) {\n\t\tif (/^text\\/(?:x-|)paperscript$/.test(script.type)\n\t\t\t\t&& PaperScope.getAttribute(script, 'ignore') !== 'true') {\n\t\t\tvar canvasId = PaperScope.getAttribute(script, 'canvas'),\n\t\t\t\tcanvas = document.getElementById(canvasId),\n\t\t\t\tsrc = script.src || script.getAttribute('data-src'),\n\t\t\t\tasync = PaperScope.hasAttribute(script, 'async'),\n\t\t\t\tscopeAttribute = 'data-paper-scope';\n\t\t\tif (!canvas)\n\t\t\t\tthrow new Error('Unable to find canvas with id \"'\n\t\t\t\t\t\t+ canvasId + '\"');\n\t\t\tvar scope = PaperScope.get(canvas.getAttribute(scopeAttribute))\n\t\t\t\t\t\t|| new PaperScope().setup(canvas);\n\t\t\tcanvas.setAttribute(scopeAttribute, scope._id);\n\t\t\tif (src) {\n\t\t\t\tHttp.request({\n\t\t\t\t\turl: src,\n\t\t\t\t\tasync: async,\n\t\t\t\t\tmimeType: 'text/plain',\n\t\t\t\t\tonLoad: function(code) {\n\t\t\t\t\t\texecute(code, scope, src);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\texecute(script.innerHTML, scope, script.baseURI);\n\t\t\t}\n\t\t\tscript.setAttribute('data-paper-ignore', 'true');\n\t\t\treturn scope;\n\t\t}\n\t}\n\n\tfunction loadAll() {\n\t\tBase.each(document && document.getElementsByTagName('script'),\n\t\t\t\tloadScript);\n\t}\n\n\tfunction load(script) {\n\t\treturn script ? loadScript(script) : loadAll();\n\t}\n\n\tif (window) {\n\t\tif (document.readyState === 'complete') {\n\t\t\tsetTimeout(loadAll);\n\t\t} else {\n\t\t\tDomEvent.add(window, { load: loadAll });\n\t\t}\n\t}\n\n\treturn {\n\t\tcompile: compile,\n\t\texecute: execute,\n\t\tload: load,\n\t\tparse: parse,\n\t\tcalculateBinary: __$__,\n\t\tcalculateUnary: $__\n\t};\n\n}.call(this);\n\nvar paper = new (PaperScope.inject(Base.exports, {\n\tBase: Base,\n\tNumerical: Numerical,\n\tKey: Key,\n\tDomEvent: DomEvent,\n\tDomElement: DomElement,\n\tdocument: document,\n\twindow: window,\n\tSymbol: SymbolDefinition,\n\tPlacedSymbol: SymbolItem\n}))();\n\nif (paper.agent.node) {\n\trequire('./node/extend.js')(paper);\n}\n\nif (typeof define === 'function' && define.amd) {\n\tdefine('paper', paper);\n} else if (typeof module === 'object' && module) {\n\tmodule.exports = paper;\n}\n\nreturn paper;\n}.call(this, typeof self === 'object' ? self : null);\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar BIND_FLAG = 1,\n    BIND_KEY_FLAG = 2,\n    CURRY_BOUND_FLAG = 4,\n    CURRY_FLAG = 8,\n    CURRY_RIGHT_FLAG = 16,\n    PARTIAL_FLAG = 32,\n    PARTIAL_RIGHT_FLAG = 64,\n    ARY_FLAG = 128,\n    REARG_FLAG = 256,\n    FLIP_FLAG = 512;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991,\n    MAX_INTEGER = 1.7976931348623157e+308,\n    NAN = 0 / 0;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n  ['ary', ARY_FLAG],\n  ['bind', BIND_FLAG],\n  ['bindKey', BIND_KEY_FLAG],\n  ['curry', CURRY_FLAG],\n  ['curryRight', CURRY_RIGHT_FLAG],\n  ['flip', FLIP_FLAG],\n  ['partial', PARTIAL_FLAG],\n  ['partialRight', PARTIAL_RIGHT_FLAG],\n  ['rearg', REARG_FLAG]\n];\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    symbolTag = '[object Symbol]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n    reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n    reSplitDetails = /,? & /;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array ? array.length : 0;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  if (value !== value) {\n    return baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\n/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n  var length = array.length,\n      result = 0;\n\n  while (length--) {\n    if (array[length] === placeholder) {\n      result++;\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n  var index = -1,\n      length = array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (value === placeholder || value === PLACEHOLDER) {\n      array[index] = PLACEHOLDER;\n      result[resIndex++] = index;\n    }\n  }\n  return result;\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    objectCreate = Object.create,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/* Used to set `toString` methods. */\nvar defineProperty = (function() {\n  var func = getNative(Object, 'defineProperty'),\n      name = getNative.name;\n\n  return (name && name.length > 2) ? func : undefined;\n}());\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n  return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = array;\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n  var argsIndex = -1,\n      argsLength = args.length,\n      holdersLength = holders.length,\n      leftIndex = -1,\n      leftLength = partials.length,\n      rangeLength = nativeMax(argsLength - holdersLength, 0),\n      result = Array(leftLength + rangeLength),\n      isUncurried = !isCurried;\n\n  while (++leftIndex < leftLength) {\n    result[leftIndex] = partials[leftIndex];\n  }\n  while (++argsIndex < holdersLength) {\n    if (isUncurried || argsIndex < argsLength) {\n      result[holders[argsIndex]] = args[argsIndex];\n    }\n  }\n  while (rangeLength--) {\n    result[leftIndex++] = args[argsIndex++];\n  }\n  return result;\n}\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n  var argsIndex = -1,\n      argsLength = args.length,\n      holdersIndex = -1,\n      holdersLength = holders.length,\n      rightIndex = -1,\n      rightLength = partials.length,\n      rangeLength = nativeMax(argsLength - holdersLength, 0),\n      result = Array(rangeLength + rightLength),\n      isUncurried = !isCurried;\n\n  while (++argsIndex < rangeLength) {\n    result[argsIndex] = args[argsIndex];\n  }\n  var offset = argsIndex;\n  while (++rightIndex < rightLength) {\n    result[offset + rightIndex] = partials[rightIndex];\n  }\n  while (++holdersIndex < holdersLength) {\n    if (isUncurried || argsIndex < argsLength) {\n      result[offset + holders[holdersIndex]] = args[argsIndex++];\n    }\n  }\n  return result;\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n  var isBind = bitmask & BIND_FLAG,\n      Ctor = createCtor(func);\n\n  function wrapper() {\n    var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n    return fn.apply(isBind ? thisArg : this, arguments);\n  }\n  return wrapper;\n}\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n  return function() {\n    // Use a `switch` statement to work with class constructors. See\n    // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n    // for more details.\n    var args = arguments;\n    switch (args.length) {\n      case 0: return new Ctor;\n      case 1: return new Ctor(args[0]);\n      case 2: return new Ctor(args[0], args[1]);\n      case 3: return new Ctor(args[0], args[1], args[2]);\n      case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n      case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n      case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n      case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n    }\n    var thisBinding = baseCreate(Ctor.prototype),\n        result = Ctor.apply(thisBinding, args);\n\n    // Mimic the constructor's `return` behavior.\n    // See https://es5.github.io/#x13.2.2 for more details.\n    return isObject(result) ? result : thisBinding;\n  };\n}\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n  var Ctor = createCtor(func);\n\n  function wrapper() {\n    var length = arguments.length,\n        args = Array(length),\n        index = length,\n        placeholder = getHolder(wrapper);\n\n    while (index--) {\n      args[index] = arguments[index];\n    }\n    var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n      ? []\n      : replaceHolders(args, placeholder);\n\n    length -= holders.length;\n    if (length < arity) {\n      return createRecurry(\n        func, bitmask, createHybrid, wrapper.placeholder, undefined,\n        args, holders, undefined, undefined, arity - length);\n    }\n    var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n    return apply(fn, this, args);\n  }\n  return wrapper;\n}\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n *  the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n *  to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n  var isAry = bitmask & ARY_FLAG,\n      isBind = bitmask & BIND_FLAG,\n      isBindKey = bitmask & BIND_KEY_FLAG,\n      isCurried = bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG),\n      isFlip = bitmask & FLIP_FLAG,\n      Ctor = isBindKey ? undefined : createCtor(func);\n\n  function wrapper() {\n    var length = arguments.length,\n        args = Array(length),\n        index = length;\n\n    while (index--) {\n      args[index] = arguments[index];\n    }\n    if (isCurried) {\n      var placeholder = getHolder(wrapper),\n          holdersCount = countHolders(args, placeholder);\n    }\n    if (partials) {\n      args = composeArgs(args, partials, holders, isCurried);\n    }\n    if (partialsRight) {\n      args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n    }\n    length -= holdersCount;\n    if (isCurried && length < arity) {\n      var newHolders = replaceHolders(args, placeholder);\n      return createRecurry(\n        func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n        args, newHolders, argPos, ary, arity - length\n      );\n    }\n    var thisBinding = isBind ? thisArg : this,\n        fn = isBindKey ? thisBinding[func] : func;\n\n    length = args.length;\n    if (argPos) {\n      args = reorder(args, argPos);\n    } else if (isFlip && length > 1) {\n      args.reverse();\n    }\n    if (isAry && ary < length) {\n      args.length = ary;\n    }\n    if (this && this !== root && this instanceof wrapper) {\n      fn = Ctor || createCtor(fn);\n    }\n    return fn.apply(thisBinding, args);\n  }\n  return wrapper;\n}\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n *  the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n  var isBind = bitmask & BIND_FLAG,\n      Ctor = createCtor(func);\n\n  function wrapper() {\n    var argsIndex = -1,\n        argsLength = arguments.length,\n        leftIndex = -1,\n        leftLength = partials.length,\n        args = Array(leftLength + argsLength),\n        fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n    while (++leftIndex < leftLength) {\n      args[leftIndex] = partials[leftIndex];\n    }\n    while (argsLength--) {\n      args[leftIndex++] = arguments[++argsIndex];\n    }\n    return apply(fn, isBind ? thisArg : this, args);\n  }\n  return wrapper;\n}\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n *  the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n  var isCurry = bitmask & CURRY_FLAG,\n      newHolders = isCurry ? holders : undefined,\n      newHoldersRight = isCurry ? undefined : holders,\n      newPartials = isCurry ? partials : undefined,\n      newPartialsRight = isCurry ? undefined : partials;\n\n  bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);\n  bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);\n\n  if (!(bitmask & CURRY_BOUND_FLAG)) {\n    bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);\n  }\n\n  var result = wrapFunc(func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, newHoldersRight, argPos, ary, arity);\n  result.placeholder = placeholder;\n  return setWrapToString(result, func, bitmask);\n}\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n *  The bitmask may be composed of the following flags:\n *     1 - `_.bind`\n *     2 - `_.bindKey`\n *     4 - `_.curry` or `_.curryRight` of a bound function\n *     8 - `_.curry`\n *    16 - `_.curryRight`\n *    32 - `_.partial`\n *    64 - `_.partialRight`\n *   128 - `_.rearg`\n *   256 - `_.ary`\n *   512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n  var isBindKey = bitmask & BIND_KEY_FLAG;\n  if (!isBindKey && typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var length = partials ? partials.length : 0;\n  if (!length) {\n    bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);\n    partials = holders = undefined;\n  }\n  ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n  arity = arity === undefined ? arity : toInteger(arity);\n  length -= holders ? holders.length : 0;\n\n  if (bitmask & PARTIAL_RIGHT_FLAG) {\n    var partialsRight = partials,\n        holdersRight = holders;\n\n    partials = holders = undefined;\n  }\n\n  var newData = [\n    func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n    argPos, ary, arity\n  ];\n\n  func = newData[0];\n  bitmask = newData[1];\n  thisArg = newData[2];\n  partials = newData[3];\n  holders = newData[4];\n  arity = newData[9] = newData[9] == null\n    ? (isBindKey ? 0 : func.length)\n    : nativeMax(newData[9] - length, 0);\n\n  if (!arity && bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG)) {\n    bitmask &= ~(CURRY_FLAG | CURRY_RIGHT_FLAG);\n  }\n  if (!bitmask || bitmask == BIND_FLAG) {\n    var result = createBind(func, bitmask, thisArg);\n  } else if (bitmask == CURRY_FLAG || bitmask == CURRY_RIGHT_FLAG) {\n    result = createCurry(func, bitmask, arity);\n  } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !holders.length) {\n    result = createPartial(func, bitmask, thisArg, partials);\n  } else {\n    result = createHybrid.apply(undefined, newData);\n  }\n  return setWrapToString(result, func, bitmask);\n}\n\n/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n  var object = func;\n  return object.placeholder;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n  var match = source.match(reWrapDetails);\n  return match ? match[1].split(reSplitDetails) : [];\n}\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n  var length = details.length,\n      lastIndex = length - 1;\n\n  details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n  details = details.join(length > 2 ? ', ' : ' ');\n  return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n  var arrLength = array.length,\n      length = nativeMin(indexes.length, arrLength),\n      oldArray = copyArray(array);\n\n  while (length--) {\n    var index = indexes[length];\n    array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n  }\n  return array;\n}\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nvar setWrapToString = !defineProperty ? identity : function(wrapper, reference, bitmask) {\n  var source = (reference + '');\n  return defineProperty(wrapper, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)))\n  });\n};\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n  arrayEach(wrapFlags, function(pair) {\n    var value = '_.' + pair[0];\n    if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n      details.push(value);\n    }\n  });\n  return details.sort();\n}\n\n/**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n *   return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\nvar bind = baseRest(function(func, thisArg, partials) {\n  var bitmask = BIND_FLAG;\n  if (partials.length) {\n    var holders = replaceHolders(partials, getHolder(bind));\n    bitmask |= PARTIAL_FLAG;\n  }\n  return createWrap(func, bitmask, thisArg, partials, holders);\n});\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n *   'label': 'docs',\n *   'click': function() {\n *     console.log('clicked ' + this.label);\n *   }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\nvar bindAll = baseRest(function(object, methodNames) {\n  arrayEach(baseFlatten(methodNames, 1), function(key) {\n    key = toKey(key);\n    object[key] = bind(object[key], object);\n  });\n  return object;\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\n// Assign default placeholders.\nbind.placeholder = {};\n\nmodule.exports = bindAll;\n","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","import PropTypes from 'prop-types';\nexport var subscriptionShape = PropTypes.shape({\n  trySubscribe: PropTypes.func.isRequired,\n  tryUnsubscribe: PropTypes.func.isRequired,\n  notifyNestedSubs: PropTypes.func.isRequired,\n  isSubscribed: PropTypes.func.isRequired\n});\nexport var storeShape = PropTypes.shape({\n  subscribe: PropTypes.func.isRequired,\n  dispatch: PropTypes.func.isRequired,\n  getState: PropTypes.func.isRequired\n});","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n\n\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n    /* eslint-disable no-empty */\n  } catch (e) {}\n  /* eslint-enable no-empty */\n\n}","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React, { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nimport warning from '../utils/warning';\nvar prefixUnsafeLifecycleMethods = typeof React.forwardRef !== \"undefined\";\nvar didWarnAboutReceivingStore = false;\n\nfunction warnAboutReceivingStore() {\n  if (didWarnAboutReceivingStore) {\n    return;\n  }\n\n  didWarnAboutReceivingStore = true;\n  warning('<Provider> does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reduxjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nexport function createProvider(storeKey) {\n  var _Provider$childContex;\n\n  if (storeKey === void 0) {\n    storeKey = 'store';\n  }\n\n  var subscriptionKey = storeKey + \"Subscription\";\n\n  var Provider =\n  /*#__PURE__*/\n  function (_Component) {\n    _inheritsLoose(Provider, _Component);\n\n    var _proto = Provider.prototype;\n\n    _proto.getChildContext = function getChildContext() {\n      var _ref;\n\n      return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref;\n    };\n\n    function Provider(props, context) {\n      var _this;\n\n      _this = _Component.call(this, props, context) || this;\n      _this[storeKey] = props.store;\n      return _this;\n    }\n\n    _proto.render = function render() {\n      return Children.only(this.props.children);\n    };\n\n    return Provider;\n  }(Component);\n\n  if (process.env.NODE_ENV !== 'production') {\n    // Use UNSAFE_ event name where supported\n    var eventName = prefixUnsafeLifecycleMethods ? 'UNSAFE_componentWillReceiveProps' : 'componentWillReceiveProps';\n\n    Provider.prototype[eventName] = function (nextProps) {\n      if (this[storeKey] !== nextProps.store) {\n        warnAboutReceivingStore();\n      }\n    };\n  }\n\n  Provider.propTypes = {\n    store: storeShape.isRequired,\n    children: PropTypes.element.isRequired\n  };\n  Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = storeShape.isRequired, _Provider$childContex[subscriptionKey] = subscriptionShape, _Provider$childContex);\n  return Provider;\n}\nexport default createProvider();","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\nvar CLEARED = null;\nvar nullListeners = {\n  notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n  // the current/next pattern is copied from redux's createStore code.\n  // TODO: refactor+expose that code to be reusable here?\n  var current = [];\n  var next = [];\n  return {\n    clear: function clear() {\n      next = CLEARED;\n      current = CLEARED;\n    },\n    notify: function notify() {\n      var listeners = current = next;\n\n      for (var i = 0; i < listeners.length; i++) {\n        listeners[i]();\n      }\n    },\n    get: function get() {\n      return next;\n    },\n    subscribe: function subscribe(listener) {\n      var isSubscribed = true;\n      if (next === current) next = current.slice();\n      next.push(listener);\n      return function unsubscribe() {\n        if (!isSubscribed || current === CLEARED) return;\n        isSubscribed = false;\n        if (next === current) next = current.slice();\n        next.splice(next.indexOf(listener), 1);\n      };\n    }\n  };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n  function Subscription(store, parentSub, onStateChange) {\n    this.store = store;\n    this.parentSub = parentSub;\n    this.onStateChange = onStateChange;\n    this.unsubscribe = null;\n    this.listeners = nullListeners;\n  }\n\n  var _proto = Subscription.prototype;\n\n  _proto.addNestedSub = function addNestedSub(listener) {\n    this.trySubscribe();\n    return this.listeners.subscribe(listener);\n  };\n\n  _proto.notifyNestedSubs = function notifyNestedSubs() {\n    this.listeners.notify();\n  };\n\n  _proto.isSubscribed = function isSubscribed() {\n    return Boolean(this.unsubscribe);\n  };\n\n  _proto.trySubscribe = function trySubscribe() {\n    if (!this.unsubscribe) {\n      this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);\n      this.listeners = createListenerCollection();\n    }\n  };\n\n  _proto.tryUnsubscribe = function tryUnsubscribe() {\n    if (this.unsubscribe) {\n      this.unsubscribe();\n      this.unsubscribe = null;\n      this.listeners.clear();\n      this.listeners = nullListeners;\n    }\n  };\n\n  return Subscription;\n}();\n\nexport { Subscription as default };","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { Component, createElement } from 'react';\nimport { isValidElementType } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nvar prefixUnsafeLifecycleMethods = typeof React.forwardRef !== \"undefined\";\nvar hotReloadingVersion = 0;\nvar dummyState = {};\n\nfunction noop() {}\n\nfunction makeSelectorStateful(sourceSelector, store) {\n  // wrap the selector in an object that tracks its results between runs.\n  var selector = {\n    run: function runComponentSelector(props) {\n      try {\n        var nextProps = sourceSelector(store.getState(), props);\n\n        if (nextProps !== selector.props || selector.error) {\n          selector.shouldComponentUpdate = true;\n          selector.props = nextProps;\n          selector.error = null;\n        }\n      } catch (error) {\n        selector.shouldComponentUpdate = true;\n        selector.error = error;\n      }\n    }\n  };\n  return selector;\n}\n\nexport default function connectAdvanced(\n/*\n  selectorFactory is a func that is responsible for returning the selector function used to\n  compute new props from state, props, and dispatch. For example:\n     export default connectAdvanced((dispatch, options) => (state, props) => ({\n      thing: state.things[props.thingId],\n      saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n    }))(YourComponent)\n   Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n  outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n  the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n   Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n  props. Do not use connectAdvanced directly without memoizing results between calls to your\n  selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n  var _contextTypes, _childContextTypes;\n\n  if (_ref === void 0) {\n    _ref = {};\n  }\n\n  var _ref2 = _ref,\n      _ref2$getDisplayName = _ref2.getDisplayName,\n      getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n    return \"ConnectAdvanced(\" + name + \")\";\n  } : _ref2$getDisplayName,\n      _ref2$methodName = _ref2.methodName,\n      methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n      _ref2$renderCountProp = _ref2.renderCountProp,\n      renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n      _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n      shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n      _ref2$storeKey = _ref2.storeKey,\n      storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n      _ref2$withRef = _ref2.withRef,\n      withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n      connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\"]);\n\n  var subscriptionKey = storeKey + 'Subscription';\n  var version = hotReloadingVersion++;\n  var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = storeShape, _contextTypes[subscriptionKey] = subscriptionShape, _contextTypes);\n  var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = subscriptionShape, _childContextTypes);\n  return function wrapWithConnect(WrappedComponent) {\n    invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n    var displayName = getDisplayName(wrappedComponentName);\n\n    var selectorFactoryOptions = _extends({}, connectOptions, {\n      getDisplayName: getDisplayName,\n      methodName: methodName,\n      renderCountProp: renderCountProp,\n      shouldHandleStateChanges: shouldHandleStateChanges,\n      storeKey: storeKey,\n      withRef: withRef,\n      displayName: displayName,\n      wrappedComponentName: wrappedComponentName,\n      WrappedComponent: WrappedComponent // TODO Actually fix our use of componentWillReceiveProps\n\n      /* eslint-disable react/no-deprecated */\n\n    });\n\n    var Connect =\n    /*#__PURE__*/\n    function (_Component) {\n      _inheritsLoose(Connect, _Component);\n\n      function Connect(props, context) {\n        var _this;\n\n        _this = _Component.call(this, props, context) || this;\n        _this.version = version;\n        _this.state = {};\n        _this.renderCount = 0;\n        _this.store = props[storeKey] || context[storeKey];\n        _this.propsMode = Boolean(props[storeKey]);\n        _this.setWrappedInstance = _this.setWrappedInstance.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n        invariant(_this.store, \"Could not find \\\"\" + storeKey + \"\\\" in either the context or props of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + (\"or explicitly pass \\\"\" + storeKey + \"\\\" as a prop to \\\"\" + displayName + \"\\\".\"));\n\n        _this.initSelector();\n\n        _this.initSubscription();\n\n        return _this;\n      }\n\n      var _proto = Connect.prototype;\n\n      _proto.getChildContext = function getChildContext() {\n        var _ref3;\n\n        // If this component received store from props, its subscription should be transparent\n        // to any descendants receiving store+subscription from context; it passes along\n        // subscription passed to it. Otherwise, it shadows the parent subscription, which allows\n        // Connect to control ordering of notifications to flow top-down.\n        var subscription = this.propsMode ? null : this.subscription;\n        return _ref3 = {}, _ref3[subscriptionKey] = subscription || this.context[subscriptionKey], _ref3;\n      };\n\n      _proto.componentDidMount = function componentDidMount() {\n        if (!shouldHandleStateChanges) return; // componentWillMount fires during server side rendering, but componentDidMount and\n        // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.\n        // Otherwise, unsubscription would never take place during SSR, causing a memory leak.\n        // To handle the case where a child component may have triggered a state change by\n        // dispatching an action in its componentWillMount, we have to re-run the select and maybe\n        // re-render.\n\n        this.subscription.trySubscribe();\n        this.selector.run(this.props);\n        if (this.selector.shouldComponentUpdate) this.forceUpdate();\n      }; // Note: this is renamed below to the UNSAFE_ version in React >=16.3.0\n\n\n      _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n        this.selector.run(nextProps);\n      };\n\n      _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n        return this.selector.shouldComponentUpdate;\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        if (this.subscription) this.subscription.tryUnsubscribe();\n        this.subscription = null;\n        this.notifyNestedSubs = noop;\n        this.store = null;\n        this.selector.run = noop;\n        this.selector.shouldComponentUpdate = false;\n      };\n\n      _proto.getWrappedInstance = function getWrappedInstance() {\n        invariant(withRef, \"To access the wrapped instance, you need to specify \" + (\"{ withRef: true } in the options argument of the \" + methodName + \"() call.\"));\n        return this.wrappedInstance;\n      };\n\n      _proto.setWrappedInstance = function setWrappedInstance(ref) {\n        this.wrappedInstance = ref;\n      };\n\n      _proto.initSelector = function initSelector() {\n        var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions);\n        this.selector = makeSelectorStateful(sourceSelector, this.store);\n        this.selector.run(this.props);\n      };\n\n      _proto.initSubscription = function initSubscription() {\n        if (!shouldHandleStateChanges) return; // parentSub's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n        var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey];\n        this.subscription = new Subscription(this.store, parentSub, this.onStateChange.bind(this)); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `this.subscription` will then be null. An\n        // extra null check every change can be avoided by copying the method onto `this` and then\n        // replacing it with a no-op on unmount. This can probably be avoided if Subscription's\n        // listeners logic is changed to not call listeners that have been unsubscribed in the\n        // middle of the notification loop.\n\n        this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription);\n      };\n\n      _proto.onStateChange = function onStateChange() {\n        this.selector.run(this.props);\n\n        if (!this.selector.shouldComponentUpdate) {\n          this.notifyNestedSubs();\n        } else {\n          this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate;\n          this.setState(dummyState);\n        }\n      };\n\n      _proto.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() {\n        // `componentDidUpdate` is conditionally implemented when `onStateChange` determines it\n        // needs to notify nested subs. Once called, it unimplements itself until further state\n        // changes occur. Doing it this way vs having a permanent `componentDidUpdate` that does\n        // a boolean check every time avoids an extra method call most of the time, resulting\n        // in some perf boost.\n        this.componentDidUpdate = undefined;\n        this.notifyNestedSubs();\n      };\n\n      _proto.isSubscribed = function isSubscribed() {\n        return Boolean(this.subscription) && this.subscription.isSubscribed();\n      };\n\n      _proto.addExtraProps = function addExtraProps(props) {\n        if (!withRef && !renderCountProp && !(this.propsMode && this.subscription)) return props; // make a shallow copy so that fields added don't leak to the original selector.\n        // this is especially important for 'ref' since that's a reference back to the component\n        // instance. a singleton memoized selector would then be holding a reference to the\n        // instance, preventing the instance from being garbage collected, and that would be bad\n\n        var withExtras = _extends({}, props);\n\n        if (withRef) withExtras.ref = this.setWrappedInstance;\n        if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;\n        if (this.propsMode && this.subscription) withExtras[subscriptionKey] = this.subscription;\n        return withExtras;\n      };\n\n      _proto.render = function render() {\n        var selector = this.selector;\n        selector.shouldComponentUpdate = false;\n\n        if (selector.error) {\n          throw selector.error;\n        } else {\n          return createElement(WrappedComponent, this.addExtraProps(selector.props));\n        }\n      };\n\n      return Connect;\n    }(Component);\n\n    if (prefixUnsafeLifecycleMethods) {\n      // Use UNSAFE_ event name where supported\n      Connect.prototype.UNSAFE_componentWillReceiveProps = Connect.prototype.componentWillReceiveProps;\n      delete Connect.prototype.componentWillReceiveProps;\n    }\n    /* eslint-enable react/no-deprecated */\n\n\n    Connect.WrappedComponent = WrappedComponent;\n    Connect.displayName = displayName;\n    Connect.childContextTypes = childContextTypes;\n    Connect.contextTypes = contextTypes;\n    Connect.propTypes = contextTypes;\n\n    if (process.env.NODE_ENV !== 'production') {\n      // Use UNSAFE_ event name where supported\n      var eventName = prefixUnsafeLifecycleMethods ? 'UNSAFE_componentWillUpdate' : 'componentWillUpdate';\n\n      Connect.prototype[eventName] = function componentWillUpdate() {\n        var _this2 = this;\n\n        // We are hot reloading!\n        if (this.version !== version) {\n          this.version = version;\n          this.initSelector(); // If any connected descendants don't hot reload (and resubscribe in the process), their\n          // listeners will be lost when we unsubscribe. Unfortunately, by copying over all\n          // listeners, this does mean that the old versions of connected descendants will still be\n          // notified of state changes; however, their onStateChange function is a no-op so this\n          // isn't a huge deal.\n\n          var oldListeners = [];\n\n          if (this.subscription) {\n            oldListeners = this.subscription.listeners.get();\n            this.subscription.tryUnsubscribe();\n          }\n\n          this.initSubscription();\n\n          if (shouldHandleStateChanges) {\n            this.subscription.trySubscribe();\n            oldListeners.forEach(function (listener) {\n              return _this2.subscription.listeners.subscribe(listener);\n            });\n          }\n        }\n      };\n    }\n\n    return hoistStatics(Connect, WrappedComponent);\n  };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n  if (x === y) {\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nexport default function shallowEqual(objA, objB) {\n  if (is(objA, objB)) return true;\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return false;\n\n  for (var i = 0; i < keysA.length; i++) {\n    if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}","/**\r\n * @param {any} obj The object to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n */\nexport default function isPlainObject(obj) {\n  if (typeof obj !== 'object' || obj === null) return false;\n  var proto = Object.getPrototypeOf(obj);\n  if (proto === null) return true;\n  var baseProto = proto;\n\n  while (Object.getPrototypeOf(baseProto) !== null) {\n    baseProto = Object.getPrototypeOf(baseProto);\n  }\n\n  return proto === baseProto;\n}","import isPlainObject from './isPlainObject';\nimport warning from './warning';\nexport default function verifyPlainObject(value, displayName, methodName) {\n  if (!isPlainObject(value)) {\n    warning(methodName + \"() in \" + displayName + \" must return a plain object. Instead received \" + value + \".\");\n  }\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n  return function initConstantSelector(dispatch, options) {\n    var constant = getConstant(dispatch, options);\n\n    function constantSelector() {\n      return constant;\n    }\n\n    constantSelector.dependsOnOwnProps = false;\n    return constantSelector;\n  };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n// \n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n  return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n// \n//  * Detects whether the mapToProps function being called depends on props, which\n//    is used by selectorFactory to decide if it should reinvoke on props changes.\n//    \n//  * On first call, handles mapToProps if returns another function, and treats that\n//    new function as the true mapToProps for subsequent calls.\n//    \n//  * On first call, verifies the first result is a plain object, in order to warn\n//    the developer that their mapToProps function is not returning a valid result.\n//    \n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n  return function initProxySelector(dispatch, _ref) {\n    var displayName = _ref.displayName;\n\n    var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n    }; // allow detectFactoryAndVerify to get ownProps\n\n\n    proxy.dependsOnOwnProps = true;\n\n    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n      proxy.mapToProps = mapToProps;\n      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n      var props = proxy(stateOrDispatch, ownProps);\n\n      if (typeof props === 'function') {\n        proxy.mapToProps = props;\n        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n        props = proxy(stateOrDispatch, ownProps);\n      }\n\n      if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n      return props;\n    };\n\n    return proxy;\n  };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n  return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n  return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n    return {\n      dispatch: dispatch\n    };\n  }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n    return bindActionCreators(mapDispatchToProps, dispatch);\n  }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n  return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n  return !mapStateToProps ? wrapMapToPropsConstant(function () {\n    return {};\n  }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n  return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n  return function initMergePropsProxy(dispatch, _ref) {\n    var displayName = _ref.displayName,\n        pure = _ref.pure,\n        areMergedPropsEqual = _ref.areMergedPropsEqual;\n    var hasRunOnce = false;\n    var mergedProps;\n    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n      var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n      if (hasRunOnce) {\n        if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n      } else {\n        hasRunOnce = true;\n        mergedProps = nextMergedProps;\n        if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n      }\n\n      return mergedProps;\n    };\n  };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n  return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n  return !mergeProps ? function () {\n    return defaultMergeProps;\n  } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import warning from '../utils/warning';\n\nfunction verify(selector, methodName, displayName) {\n  if (!selector) {\n    throw new Error(\"Unexpected value for \" + methodName + \" in \" + displayName + \".\");\n  } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n    if (!selector.hasOwnProperty('dependsOnOwnProps')) {\n      warning(\"The selector for \" + methodName + \" of \" + displayName + \" did not specify a value for dependsOnOwnProps.\");\n    }\n  }\n}\n\nexport default function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {\n  verify(mapStateToProps, 'mapStateToProps', displayName);\n  verify(mapDispatchToProps, 'mapDispatchToProps', displayName);\n  verify(mergeProps, 'mergeProps', displayName);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n  return function impureFinalPropsSelector(state, ownProps) {\n    return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n  };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n  var areStatesEqual = _ref.areStatesEqual,\n      areOwnPropsEqual = _ref.areOwnPropsEqual,\n      areStatePropsEqual = _ref.areStatePropsEqual;\n  var hasRunAtLeastOnce = false;\n  var state;\n  var ownProps;\n  var stateProps;\n  var dispatchProps;\n  var mergedProps;\n\n  function handleFirstCall(firstState, firstOwnProps) {\n    state = firstState;\n    ownProps = firstOwnProps;\n    stateProps = mapStateToProps(state, ownProps);\n    dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    hasRunAtLeastOnce = true;\n    return mergedProps;\n  }\n\n  function handleNewPropsAndNewState() {\n    stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewProps() {\n    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewState() {\n    var nextStateProps = mapStateToProps(state, ownProps);\n    var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n    stateProps = nextStateProps;\n    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleSubsequentCalls(nextState, nextOwnProps) {\n    var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n    var stateChanged = !areStatesEqual(nextState, state);\n    state = nextState;\n    ownProps = nextOwnProps;\n    if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n    if (propsChanged) return handleNewProps();\n    if (stateChanged) return handleNewState();\n    return mergedProps;\n  }\n\n  return function pureFinalPropsSelector(nextState, nextOwnProps) {\n    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n  };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n  var initMapStateToProps = _ref2.initMapStateToProps,\n      initMapDispatchToProps = _ref2.initMapDispatchToProps,\n      initMergeProps = _ref2.initMergeProps,\n      options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n  var mapStateToProps = initMapStateToProps(dispatch, options);\n  var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n  var mergeProps = initMergeProps(dispatch, options);\n\n  if (process.env.NODE_ENV !== 'production') {\n    verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n  }\n\n  var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n  return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n  connect is a facade over connectAdvanced. It turns its args into a compatible\n  selectorFactory, which has the signature:\n\n    (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n  \n  connect passes its args to connectAdvanced as options, which will in turn pass them to\n  selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n  selectorFactory returns a final props selector from its mapStateToProps,\n  mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n  mergePropsFactories, and pure args.\n\n  The resulting final props selector is called by the Connect component instance whenever\n  it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n  for (var i = factories.length - 1; i >= 0; i--) {\n    var result = factories[i](arg);\n    if (result) return result;\n  }\n\n  return function (dispatch, options) {\n    throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n  };\n}\n\nfunction strictEqual(a, b) {\n  return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$connectHOC = _ref.connectHOC,\n      connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n      _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n      mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n      _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n      mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n      _ref$mergePropsFactor = _ref.mergePropsFactories,\n      mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n      _ref$selectorFactory = _ref.selectorFactory,\n      selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n  return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n    if (_ref2 === void 0) {\n      _ref2 = {};\n    }\n\n    var _ref3 = _ref2,\n        _ref3$pure = _ref3.pure,\n        pure = _ref3$pure === void 0 ? true : _ref3$pure,\n        _ref3$areStatesEqual = _ref3.areStatesEqual,\n        areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n        _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n        areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n        _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n        areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n        _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n        areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n        extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n    var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n    var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n    var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n    return connectHOC(selectorFactory, _extends({\n      // used in error messages\n      methodName: 'connect',\n      // used to compute Connect's displayName from the wrapped component's displayName.\n      getDisplayName: function getDisplayName(name) {\n        return \"Connect(\" + name + \")\";\n      },\n      // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n      shouldHandleStateChanges: Boolean(mapStateToProps),\n      // passed through to selectorFactory\n      initMapStateToProps: initMapStateToProps,\n      initMapDispatchToProps: initMapDispatchToProps,\n      initMergeProps: initMergeProps,\n      pure: pure,\n      areStatesEqual: areStatesEqual,\n      areOwnPropsEqual: areOwnPropsEqual,\n      areStatePropsEqual: areStatePropsEqual,\n      areMergedPropsEqual: areMergedPropsEqual\n    }, extraOptions));\n  };\n}\nexport default createConnect();","import Provider, { createProvider } from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport connect from './connect/connect';\nexport { Provider, createProvider, connectAdvanced, connect };","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./color-picker.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./paint-editor.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nvar RelativeTimeFormat;\n// -- Utilities ----------------------------------------------------------------\nfunction getCacheId(inputs) {\n    return JSON.stringify(inputs.map(function (input) {\n        return input && typeof input === 'object' ? orderedProps(input) : input;\n    }));\n}\nfunction orderedProps(obj) {\n    return Object.keys(obj)\n        .sort()\n        .map(function (k) {\n        var _a;\n        return (_a = {}, _a[k] = obj[k], _a);\n    });\n}\nvar memoizeFormatConstructor = function (FormatConstructor, cache) {\n    if (cache === void 0) { cache = {}; }\n    return function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var cacheId = getCacheId(args);\n        var format = cacheId && cache[cacheId];\n        if (!format) {\n            format = new ((_a = FormatConstructor).bind.apply(_a, [void 0].concat(args)))();\n            if (cacheId) {\n                cache[cacheId] = format;\n            }\n        }\n        return format;\n    };\n};\nexport default memoizeFormatConstructor;\n//# sourceMappingURL=index.js.map","/*\n * Copyright 2019, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport allLocaleData from '../locale-data/index.js';\nimport IntlMessageFormat from 'intl-messageformat';\nimport IntlRelativeFormat from 'intl-relativeformat';\nimport PropTypes from 'prop-types';\nimport React, { Children, Component, createElement, isValidElement } from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport memoizeIntlConstructor from 'intl-format-cache';\n\n// GENERATED FILE\nvar defaultLocaleData = { \"locale\": \"en\", \"pluralRuleFunction\": function pluralRuleFunction(n, ord) {\n    var s = String(n).split(\".\"),\n        v0 = !s[1],\n        t0 = Number(s[0]) == n,\n        n10 = t0 && s[0].slice(-1),\n        n100 = t0 && s[0].slice(-2);if (ord) return n10 == 1 && n100 != 11 ? \"one\" : n10 == 2 && n100 != 12 ? \"two\" : n10 == 3 && n100 != 13 ? \"few\" : \"other\";return n == 1 && v0 ? \"one\" : \"other\";\n  }, \"fields\": { \"year\": { \"displayName\": \"year\", \"relative\": { \"0\": \"this year\", \"1\": \"next year\", \"-1\": \"last year\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} year\", \"other\": \"in {0} years\" }, \"past\": { \"one\": \"{0} year ago\", \"other\": \"{0} years ago\" } } }, \"year-short\": { \"displayName\": \"yr.\", \"relative\": { \"0\": \"this yr.\", \"1\": \"next yr.\", \"-1\": \"last yr.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} yr.\", \"other\": \"in {0} yr.\" }, \"past\": { \"one\": \"{0} yr. ago\", \"other\": \"{0} yr. ago\" } } }, \"month\": { \"displayName\": \"month\", \"relative\": { \"0\": \"this month\", \"1\": \"next month\", \"-1\": \"last month\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} month\", \"other\": \"in {0} months\" }, \"past\": { \"one\": \"{0} month ago\", \"other\": \"{0} months ago\" } } }, \"month-short\": { \"displayName\": \"mo.\", \"relative\": { \"0\": \"this mo.\", \"1\": \"next mo.\", \"-1\": \"last mo.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} mo.\", \"other\": \"in {0} mo.\" }, \"past\": { \"one\": \"{0} mo. ago\", \"other\": \"{0} mo. ago\" } } }, \"day\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"day-short\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"hour\": { \"displayName\": \"hour\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hour\", \"other\": \"in {0} hours\" }, \"past\": { \"one\": \"{0} hour ago\", \"other\": \"{0} hours ago\" } } }, \"hour-short\": { \"displayName\": \"hr.\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hr.\", \"other\": \"in {0} hr.\" }, \"past\": { \"one\": \"{0} hr. ago\", \"other\": \"{0} hr. ago\" } } }, \"minute\": { \"displayName\": \"minute\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} minute\", \"other\": \"in {0} minutes\" }, \"past\": { \"one\": \"{0} minute ago\", \"other\": \"{0} minutes ago\" } } }, \"minute-short\": { \"displayName\": \"min.\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} min.\", \"other\": \"in {0} min.\" }, \"past\": { \"one\": \"{0} min. ago\", \"other\": \"{0} min. ago\" } } }, \"second\": { \"displayName\": \"second\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} second\", \"other\": \"in {0} seconds\" }, \"past\": { \"one\": \"{0} second ago\", \"other\": \"{0} seconds ago\" } } }, \"second-short\": { \"displayName\": \"sec.\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} sec.\", \"other\": \"in {0} sec.\" }, \"past\": { \"one\": \"{0} sec. ago\", \"other\": \"{0} sec. ago\" } } } } };\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nfunction addLocaleData() {\n  var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n  var locales = Array.isArray(data) ? data : [data];\n\n  locales.forEach(function (localeData) {\n    if (localeData && localeData.locale) {\n      IntlMessageFormat.__addLocaleData(localeData);\n      IntlRelativeFormat.__addLocaleData(localeData);\n    }\n  });\n}\n\nfunction hasLocaleData(locale) {\n  var localeParts = (locale || '').split('-');\n\n  while (localeParts.length > 0) {\n    if (hasIMFAndIRFLocaleData(localeParts.join('-'))) {\n      return true;\n    }\n\n    localeParts.pop();\n  }\n\n  return false;\n}\n\nfunction hasIMFAndIRFLocaleData(locale) {\n  var normalizedLocale = locale && locale.toLowerCase();\n\n  return !!(IntlMessageFormat.__localeData__[normalizedLocale] && IntlRelativeFormat.__localeData__[normalizedLocale]);\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\nvar asyncGenerator = function () {\n  function AwaitValue(value) {\n    this.value = value;\n  }\n\n  function AsyncGenerator(gen) {\n    var front, back;\n\n    function send(key, arg) {\n      return new Promise(function (resolve, reject) {\n        var request = {\n          key: key,\n          arg: arg,\n          resolve: resolve,\n          reject: reject,\n          next: null\n        };\n\n        if (back) {\n          back = back.next = request;\n        } else {\n          front = back = request;\n          resume(key, arg);\n        }\n      });\n    }\n\n    function resume(key, arg) {\n      try {\n        var result = gen[key](arg);\n        var value = result.value;\n\n        if (value instanceof AwaitValue) {\n          Promise.resolve(value.value).then(function (arg) {\n            resume(\"next\", arg);\n          }, function (arg) {\n            resume(\"throw\", arg);\n          });\n        } else {\n          settle(result.done ? \"return\" : \"normal\", result.value);\n        }\n      } catch (err) {\n        settle(\"throw\", err);\n      }\n    }\n\n    function settle(type, value) {\n      switch (type) {\n        case \"return\":\n          front.resolve({\n            value: value,\n            done: true\n          });\n          break;\n\n        case \"throw\":\n          front.reject(value);\n          break;\n\n        default:\n          front.resolve({\n            value: value,\n            done: false\n          });\n          break;\n      }\n\n      front = front.next;\n\n      if (front) {\n        resume(front.key, front.arg);\n      } else {\n        back = null;\n      }\n    }\n\n    this._invoke = send;\n\n    if (typeof gen.return !== \"function\") {\n      this.return = undefined;\n    }\n  }\n\n  if (typeof Symbol === \"function\" && Symbol.asyncIterator) {\n    AsyncGenerator.prototype[Symbol.asyncIterator] = function () {\n      return this;\n    };\n  }\n\n  AsyncGenerator.prototype.next = function (arg) {\n    return this._invoke(\"next\", arg);\n  };\n\n  AsyncGenerator.prototype.throw = function (arg) {\n    return this._invoke(\"throw\", arg);\n  };\n\n  AsyncGenerator.prototype.return = function (arg) {\n    return this._invoke(\"return\", arg);\n  };\n\n  return {\n    wrap: function (fn) {\n      return function () {\n        return new AsyncGenerator(fn.apply(this, arguments));\n      };\n    },\n    await: function (value) {\n      return new AwaitValue(value);\n    }\n  };\n}();\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\n\n\nvar inherits = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\nvar objectWithoutProperties = function (obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n};\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar bool = PropTypes.bool;\nvar number = PropTypes.number;\nvar string = PropTypes.string;\nvar func = PropTypes.func;\nvar object = PropTypes.object;\nvar oneOf = PropTypes.oneOf;\nvar shape = PropTypes.shape;\nvar any = PropTypes.any;\nvar oneOfType = PropTypes.oneOfType;\n\nvar localeMatcher = oneOf(['best fit', 'lookup']);\nvar narrowShortLong = oneOf(['narrow', 'short', 'long']);\nvar numeric2digit = oneOf(['numeric', '2-digit']);\nvar funcReq = func.isRequired;\n\nvar intlConfigPropTypes = {\n  locale: string,\n  timeZone: string,\n  formats: object,\n  messages: object,\n  textComponent: any,\n\n  defaultLocale: string,\n  defaultFormats: object,\n\n  onError: func\n};\n\nvar intlFormatPropTypes = {\n  formatDate: funcReq,\n  formatTime: funcReq,\n  formatRelative: funcReq,\n  formatNumber: funcReq,\n  formatPlural: funcReq,\n  formatMessage: funcReq,\n  formatHTMLMessage: funcReq\n};\n\nvar intlShape = shape(_extends({}, intlConfigPropTypes, intlFormatPropTypes, {\n  formatters: object,\n  now: funcReq\n}));\n\nvar messageDescriptorPropTypes = {\n  id: string.isRequired,\n  description: oneOfType([string, object]),\n  defaultMessage: string\n};\n\nvar dateTimeFormatPropTypes = {\n  localeMatcher: localeMatcher,\n  formatMatcher: oneOf(['basic', 'best fit']),\n\n  timeZone: string,\n  hour12: bool,\n\n  weekday: narrowShortLong,\n  era: narrowShortLong,\n  year: numeric2digit,\n  month: oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n  day: numeric2digit,\n  hour: numeric2digit,\n  minute: numeric2digit,\n  second: numeric2digit,\n  timeZoneName: oneOf(['short', 'long'])\n};\n\nvar numberFormatPropTypes = {\n  localeMatcher: localeMatcher,\n\n  style: oneOf(['decimal', 'currency', 'percent']),\n  currency: string,\n  currencyDisplay: oneOf(['symbol', 'code', 'name']),\n  useGrouping: bool,\n\n  minimumIntegerDigits: number,\n  minimumFractionDigits: number,\n  maximumFractionDigits: number,\n  minimumSignificantDigits: number,\n  maximumSignificantDigits: number\n};\n\nvar relativeFormatPropTypes = {\n  style: oneOf(['best fit', 'numeric']),\n  units: oneOf(['second', 'minute', 'hour', 'day', 'month', 'year', 'second-short', 'minute-short', 'hour-short', 'day-short', 'month-short', 'year-short'])\n};\n\nvar pluralFormatPropTypes = {\n  style: oneOf(['cardinal', 'ordinal'])\n};\n\n/*\nHTML escaping and shallow-equals implementations are the same as React's\n(on purpose.) Therefore, it has the following Copyright and Licensing:\n\nCopyright 2013-2014, Facebook, Inc.\nAll rights reserved.\n\nThis source code is licensed under the BSD-style license found in the LICENSE\nfile in the root directory of React's source tree.\n*/\n\nvar intlConfigPropNames = Object.keys(intlConfigPropTypes);\n\nvar ESCAPED_CHARS = {\n  '&': '&amp;',\n  '>': '&gt;',\n  '<': '&lt;',\n  '\"': '&quot;',\n  \"'\": '&#x27;'\n};\n\nvar UNSAFE_CHARS_REGEX = /[&><\"']/g;\n\nfunction escape(str) {\n  return ('' + str).replace(UNSAFE_CHARS_REGEX, function (match) {\n    return ESCAPED_CHARS[match];\n  });\n}\n\nfunction filterProps(props, whitelist) {\n  var defaults$$1 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  return whitelist.reduce(function (filtered, name) {\n    if (props.hasOwnProperty(name)) {\n      filtered[name] = props[name];\n    } else if (defaults$$1.hasOwnProperty(name)) {\n      filtered[name] = defaults$$1[name];\n    }\n\n    return filtered;\n  }, {});\n}\n\nfunction invariantIntlContext() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      intl = _ref.intl;\n\n  invariant(intl, '[React Intl] Could not find required `intl` object. ' + '<IntlProvider> needs to exist in the component ancestry.');\n}\n\nfunction shallowEquals(objA, objB) {\n  if (objA === objB) {\n    return true;\n  }\n\n  if ((typeof objA === 'undefined' ? 'undefined' : _typeof(objA)) !== 'object' || objA === null || (typeof objB === 'undefined' ? 'undefined' : _typeof(objB)) !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  // Test for A's keys different from B.\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n  for (var i = 0; i < keysA.length; i++) {\n    if (!bHasOwnProperty(keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction shouldIntlComponentUpdate(_ref2, nextProps, nextState) {\n  var props = _ref2.props,\n      state = _ref2.state,\n      _ref2$context = _ref2.context,\n      context = _ref2$context === undefined ? {} : _ref2$context;\n  var nextContext = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var _context$intl = context.intl,\n      intl = _context$intl === undefined ? {} : _context$intl;\n  var _nextContext$intl = nextContext.intl,\n      nextIntl = _nextContext$intl === undefined ? {} : _nextContext$intl;\n\n\n  return !shallowEquals(nextProps, props) || !shallowEquals(nextState, state) || !(nextIntl === intl || shallowEquals(filterProps(nextIntl, intlConfigPropNames), filterProps(intl, intlConfigPropNames)));\n}\n\nfunction createError(message, exception) {\n  var eMsg = exception ? '\\n' + exception : '';\n  return '[React Intl] ' + message + eMsg;\n}\n\nfunction defaultErrorHandler(error) {\n  if (process.env.NODE_ENV !== 'production') {\n    console.error(error);\n  }\n}\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n// Inspired by react-redux's `connect()` HOC factory function implementation:\n// https://github.com/rackt/react-redux\n\nfunction getDisplayName(Component$$1) {\n  return Component$$1.displayName || Component$$1.name || 'Component';\n}\n\nfunction injectIntl(WrappedComponent) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _options$intlPropName = options.intlPropName,\n      intlPropName = _options$intlPropName === undefined ? 'intl' : _options$intlPropName,\n      _options$withRef = options.withRef,\n      withRef = _options$withRef === undefined ? false : _options$withRef;\n\n  var InjectIntl = function (_Component) {\n    inherits(InjectIntl, _Component);\n\n    function InjectIntl(props, context) {\n      classCallCheck(this, InjectIntl);\n\n      var _this = possibleConstructorReturn(this, (InjectIntl.__proto__ || Object.getPrototypeOf(InjectIntl)).call(this, props, context));\n\n      invariantIntlContext(context);\n      return _this;\n    }\n\n    createClass(InjectIntl, [{\n      key: 'getWrappedInstance',\n      value: function getWrappedInstance() {\n        invariant(withRef, '[React Intl] To access the wrapped instance, ' + 'the `{withRef: true}` option must be set when calling: ' + '`injectIntl()`');\n\n        return this._wrappedInstance;\n      }\n    }, {\n      key: 'render',\n      value: function render() {\n        var _this2 = this;\n\n        return React.createElement(WrappedComponent, _extends({}, this.props, defineProperty({}, intlPropName, this.context.intl), {\n          ref: withRef ? /* istanbul ignore next */function (ref) {\n            return _this2._wrappedInstance = ref;\n          } : null\n        }));\n      }\n    }]);\n    return InjectIntl;\n  }(Component);\n\n  InjectIntl.displayName = 'InjectIntl(' + getDisplayName(WrappedComponent) + ')';\n  InjectIntl.contextTypes = {\n    intl: intlShape\n  };\n  InjectIntl.WrappedComponent = WrappedComponent;\n\n\n  return hoistNonReactStatics(InjectIntl, WrappedComponent);\n}\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nfunction defineMessages(messageDescriptors) {\n  // This simply returns what's passed-in because it's meant to be a hook for\n  // babel-plugin-react-intl.\n  return messageDescriptors;\n}\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n// This is a \"hack\" until a proper `intl-pluralformat` package is created.\n\nfunction resolveLocale(locales) {\n  // IntlMessageFormat#_resolveLocale() does not depend on `this`.\n  return IntlMessageFormat.prototype._resolveLocale(locales);\n}\n\nfunction findPluralFunction(locale) {\n  // IntlMessageFormat#_findPluralFunction() does not depend on `this`.\n  return IntlMessageFormat.prototype._findPluralRuleFunction(locale);\n}\n\nvar IntlPluralFormat = function IntlPluralFormat(locales) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  classCallCheck(this, IntlPluralFormat);\n\n  var useOrdinal = options.style === 'ordinal';\n  var pluralFn = findPluralFunction(resolveLocale(locales));\n\n  this.format = function (value) {\n    return pluralFn(value, useOrdinal);\n  };\n};\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar DATE_TIME_FORMAT_OPTIONS = Object.keys(dateTimeFormatPropTypes);\nvar NUMBER_FORMAT_OPTIONS = Object.keys(numberFormatPropTypes);\nvar RELATIVE_FORMAT_OPTIONS = Object.keys(relativeFormatPropTypes);\nvar PLURAL_FORMAT_OPTIONS = Object.keys(pluralFormatPropTypes);\n\nvar RELATIVE_FORMAT_THRESHOLDS = {\n  second: 60, // seconds to minute\n  minute: 60, // minutes to hour\n  hour: 24, // hours to day\n  day: 30, // days to month\n  month: 12 };\n\nfunction updateRelativeFormatThresholds(newThresholds) {\n  var thresholds = IntlRelativeFormat.thresholds;\n  thresholds.second = newThresholds.second;\n  thresholds.minute = newThresholds.minute;\n  thresholds.hour = newThresholds.hour;\n  thresholds.day = newThresholds.day;\n  thresholds.month = newThresholds.month;\n  thresholds['second-short'] = newThresholds['second-short'];\n  thresholds['minute-short'] = newThresholds['minute-short'];\n  thresholds['hour-short'] = newThresholds['hour-short'];\n  thresholds['day-short'] = newThresholds['day-short'];\n  thresholds['month-short'] = newThresholds['month-short'];\n}\n\nfunction getNamedFormat(formats, type, name, onError) {\n  var format = formats && formats[type] && formats[type][name];\n  if (format) {\n    return format;\n  }\n\n  onError(createError('No ' + type + ' format named: ' + name));\n}\n\nfunction formatDate(config, state, value) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale,\n      formats = config.formats,\n      timeZone = config.timeZone;\n  var format = options.format;\n\n\n  var onError = config.onError || defaultErrorHandler;\n  var date = new Date(value);\n  var defaults$$1 = _extends({}, timeZone && { timeZone: timeZone }, format && getNamedFormat(formats, 'date', format, onError));\n  var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults$$1);\n\n  try {\n    return state.getDateTimeFormat(locale, filteredOptions).format(date);\n  } catch (e) {\n    onError(createError('Error formatting date.', e));\n  }\n\n  return String(date);\n}\n\nfunction formatTime(config, state, value) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale,\n      formats = config.formats,\n      timeZone = config.timeZone;\n  var format = options.format;\n\n\n  var onError = config.onError || defaultErrorHandler;\n  var date = new Date(value);\n  var defaults$$1 = _extends({}, timeZone && { timeZone: timeZone }, format && getNamedFormat(formats, 'time', format, onError));\n  var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults$$1);\n\n  if (!filteredOptions.hour && !filteredOptions.minute && !filteredOptions.second) {\n    // Add default formatting options if hour, minute, or second isn't defined.\n    filteredOptions = _extends({}, filteredOptions, { hour: 'numeric', minute: 'numeric' });\n  }\n\n  try {\n    return state.getDateTimeFormat(locale, filteredOptions).format(date);\n  } catch (e) {\n    onError(createError('Error formatting time.', e));\n  }\n\n  return String(date);\n}\n\nfunction formatRelative(config, state, value) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale,\n      formats = config.formats;\n  var format = options.format;\n\n\n  var onError = config.onError || defaultErrorHandler;\n  var date = new Date(value);\n  var now = new Date(options.now);\n  var defaults$$1 = format && getNamedFormat(formats, 'relative', format, onError);\n  var filteredOptions = filterProps(options, RELATIVE_FORMAT_OPTIONS, defaults$$1);\n\n  // Capture the current threshold values, then temporarily override them with\n  // specific values just for this render.\n  var oldThresholds = _extends({}, IntlRelativeFormat.thresholds);\n  updateRelativeFormatThresholds(RELATIVE_FORMAT_THRESHOLDS);\n\n  try {\n    return state.getRelativeFormat(locale, filteredOptions).format(date, {\n      now: isFinite(now) ? now : state.now()\n    });\n  } catch (e) {\n    onError(createError('Error formatting relative time.', e));\n  } finally {\n    updateRelativeFormatThresholds(oldThresholds);\n  }\n\n  return String(date);\n}\n\nfunction formatNumber(config, state, value) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale,\n      formats = config.formats;\n  var format = options.format;\n\n\n  var onError = config.onError || defaultErrorHandler;\n  var defaults$$1 = format && getNamedFormat(formats, 'number', format, onError);\n  var filteredOptions = filterProps(options, NUMBER_FORMAT_OPTIONS, defaults$$1);\n\n  try {\n    return state.getNumberFormat(locale, filteredOptions).format(value);\n  } catch (e) {\n    onError(createError('Error formatting number.', e));\n  }\n\n  return String(value);\n}\n\nfunction formatPlural(config, state, value) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale;\n\n\n  var filteredOptions = filterProps(options, PLURAL_FORMAT_OPTIONS);\n  var onError = config.onError || defaultErrorHandler;\n\n  try {\n    return state.getPluralFormat(locale, filteredOptions).format(value);\n  } catch (e) {\n    onError(createError('Error formatting plural.', e));\n  }\n\n  return 'other';\n}\n\nfunction formatMessage(config, state) {\n  var messageDescriptor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var values = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n  var locale = config.locale,\n      formats = config.formats,\n      messages = config.messages,\n      defaultLocale = config.defaultLocale,\n      defaultFormats = config.defaultFormats;\n  var id = messageDescriptor.id,\n      defaultMessage = messageDescriptor.defaultMessage;\n\n  // Produce a better error if the user calls `intl.formatMessage(element)`\n\n  if (process.env.NODE_ENV !== 'production') {\n    invariant(!isValidElement(config), '[React Intl] Don\\'t pass React elements to ' + 'formatMessage(), pass `.props`.');\n  }\n\n  // `id` is a required field of a Message Descriptor.\n  invariant(id, '[React Intl] An `id` must be provided to format a message.');\n\n  var message = messages && messages[id];\n  var hasValues = Object.keys(values).length > 0;\n\n  // Avoid expensive message formatting for simple messages without values. In\n  // development messages will always be formatted in case of missing values.\n  if (!hasValues && process.env.NODE_ENV === 'production') {\n    return message || defaultMessage || id;\n  }\n\n  var formattedMessage = void 0;\n  var onError = config.onError || defaultErrorHandler;\n\n  if (message) {\n    try {\n      var formatter = state.getMessageFormat(message, locale, formats);\n\n      formattedMessage = formatter.format(values);\n    } catch (e) {\n      onError(createError('Error formatting message: \"' + id + '\" for locale: \"' + locale + '\"' + (defaultMessage ? ', using default message as fallback.' : ''), e));\n    }\n  } else {\n    // This prevents warnings from littering the console in development\n    // when no `messages` are passed into the <IntlProvider> for the\n    // default locale, and a default message is in the source.\n    if (!defaultMessage || locale && locale.toLowerCase() !== defaultLocale.toLowerCase()) {\n      onError(createError('Missing message: \"' + id + '\" for locale: \"' + locale + '\"' + (defaultMessage ? ', using default message as fallback.' : '')));\n    }\n  }\n\n  if (!formattedMessage && defaultMessage) {\n    try {\n      var _formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats);\n\n      formattedMessage = _formatter.format(values);\n    } catch (e) {\n      onError(createError('Error formatting the default message for: \"' + id + '\"', e));\n    }\n  }\n\n  if (!formattedMessage) {\n    onError(createError('Cannot format message: \"' + id + '\", ' + ('using message ' + (message || defaultMessage ? 'source' : 'id') + ' as fallback.')));\n  }\n\n  return formattedMessage || message || defaultMessage || id;\n}\n\nfunction formatHTMLMessage(config, state, messageDescriptor) {\n  var rawValues = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n  // Process all the values before they are used when formatting the ICU\n  // Message string. Since the formatted message might be injected via\n  // `innerHTML`, all String-based values need to be HTML-escaped.\n  var escapedValues = Object.keys(rawValues).reduce(function (escaped, name) {\n    var value = rawValues[name];\n    escaped[name] = typeof value === 'string' ? escape(value) : value;\n    return escaped;\n  }, {});\n\n  return formatMessage(config, state, messageDescriptor, escapedValues);\n}\n\n\n\nvar format = Object.freeze({\n\tformatDate: formatDate,\n\tformatTime: formatTime,\n\tformatRelative: formatRelative,\n\tformatNumber: formatNumber,\n\tformatPlural: formatPlural,\n\tformatMessage: formatMessage,\n\tformatHTMLMessage: formatHTMLMessage\n});\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar intlConfigPropNames$1 = Object.keys(intlConfigPropTypes);\nvar intlFormatPropNames = Object.keys(intlFormatPropTypes);\n\n// These are not a static property on the `IntlProvider` class so the intl\n// config values can be inherited from an <IntlProvider> ancestor.\nvar defaultProps = {\n  formats: {},\n  messages: {},\n  timeZone: null,\n  textComponent: 'span',\n\n  defaultLocale: 'en',\n  defaultFormats: {},\n\n  onError: defaultErrorHandler\n};\n\nvar IntlProvider = function (_Component) {\n  inherits(IntlProvider, _Component);\n\n  function IntlProvider(props) {\n    var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    classCallCheck(this, IntlProvider);\n\n    var _this = possibleConstructorReturn(this, (IntlProvider.__proto__ || Object.getPrototypeOf(IntlProvider)).call(this, props, context));\n\n    invariant(typeof Intl !== 'undefined', '[React Intl] The `Intl` APIs must be available in the runtime, ' + 'and do not appear to be built-in. An `Intl` polyfill should be loaded.\\n' + 'See: http://formatjs.io/guides/runtime-environments/');\n\n    var intlContext = context.intl;\n\n    // Used to stabilize time when performing an initial rendering so that\n    // all relative times use the same reference \"now\" time.\n\n    var initialNow = void 0;\n    if (isFinite(props.initialNow)) {\n      initialNow = Number(props.initialNow);\n    } else {\n      // When an `initialNow` isn't provided via `props`, look to see an\n      // <IntlProvider> exists in the ancestry and call its `now()`\n      // function to propagate its value for \"now\".\n      initialNow = intlContext ? intlContext.now() : Date.now();\n    }\n\n    // Creating `Intl*` formatters is expensive. If there's a parent\n    // `<IntlProvider>`, then its formatters will be used. Otherwise, this\n    // memoize the `Intl*` constructors and cache them for the lifecycle of\n    // this IntlProvider instance.\n\n    var _ref = intlContext || {},\n        _ref$formatters = _ref.formatters,\n        formatters = _ref$formatters === undefined ? {\n      getDateTimeFormat: memoizeIntlConstructor(Intl.DateTimeFormat),\n      getNumberFormat: memoizeIntlConstructor(Intl.NumberFormat),\n      getMessageFormat: memoizeIntlConstructor(IntlMessageFormat),\n      getRelativeFormat: memoizeIntlConstructor(IntlRelativeFormat),\n      getPluralFormat: memoizeIntlConstructor(IntlPluralFormat)\n    } : _ref$formatters;\n\n    _this.state = _extends({}, formatters, {\n\n      // Wrapper to provide stable \"now\" time for initial render.\n      now: function now() {\n        return _this._didDisplay ? Date.now() : initialNow;\n      }\n    });\n    return _this;\n  }\n\n  createClass(IntlProvider, [{\n    key: 'getConfig',\n    value: function getConfig() {\n      var intlContext = this.context.intl;\n\n      // Build a whitelisted config object from `props`, defaults, and\n      // `context.intl`, if an <IntlProvider> exists in the ancestry.\n\n      var config = filterProps(this.props, intlConfigPropNames$1, intlContext);\n\n      // Apply default props. This must be applied last after the props have\n      // been resolved and inherited from any <IntlProvider> in the ancestry.\n      // This matches how React resolves `defaultProps`.\n      for (var propName in defaultProps) {\n        if (config[propName] === undefined) {\n          config[propName] = defaultProps[propName];\n        }\n      }\n\n      if (!hasLocaleData(config.locale)) {\n        var _config = config,\n            locale = _config.locale,\n            defaultLocale = _config.defaultLocale,\n            defaultFormats = _config.defaultFormats,\n            onError = _config.onError;\n\n\n        onError(createError('Missing locale data for locale: \"' + locale + '\". ' + ('Using default locale: \"' + defaultLocale + '\" as fallback.')));\n\n        // Since there's no registered locale data for `locale`, this will\n        // fallback to the `defaultLocale` to make sure things can render.\n        // The `messages` are overridden to the `defaultProps` empty object\n        // to maintain referential equality across re-renders. It's assumed\n        // each <FormattedMessage> contains a `defaultMessage` prop.\n        config = _extends({}, config, {\n          locale: defaultLocale,\n          formats: defaultFormats,\n          messages: defaultProps.messages\n        });\n      }\n\n      return config;\n    }\n  }, {\n    key: 'getBoundFormatFns',\n    value: function getBoundFormatFns(config, state) {\n      return intlFormatPropNames.reduce(function (boundFormatFns, name) {\n        boundFormatFns[name] = format[name].bind(null, config, state);\n        return boundFormatFns;\n      }, {});\n    }\n  }, {\n    key: 'getChildContext',\n    value: function getChildContext() {\n      var config = this.getConfig();\n\n      // Bind intl factories and current config to the format functions.\n      var boundFormatFns = this.getBoundFormatFns(config, this.state);\n\n      var _state = this.state,\n          now = _state.now,\n          formatters = objectWithoutProperties(_state, ['now']);\n\n\n      return {\n        intl: _extends({}, config, boundFormatFns, {\n          formatters: formatters,\n          now: now\n        })\n      };\n    }\n  }, {\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this._didDisplay = true;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return Children.only(this.props.children);\n    }\n  }]);\n  return IntlProvider;\n}(Component);\n\nIntlProvider.displayName = 'IntlProvider';\nIntlProvider.contextTypes = {\n  intl: intlShape\n};\nIntlProvider.childContextTypes = {\n  intl: intlShape.isRequired\n};\nprocess.env.NODE_ENV !== \"production\" ? IntlProvider.propTypes = _extends({}, intlConfigPropTypes, {\n  children: PropTypes.element.isRequired,\n  initialNow: PropTypes.any\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedDate = function (_Component) {\n  inherits(FormattedDate, _Component);\n\n  function FormattedDate(props, context) {\n    classCallCheck(this, FormattedDate);\n\n    var _this = possibleConstructorReturn(this, (FormattedDate.__proto__ || Object.getPrototypeOf(FormattedDate)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedDate, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatDate = _context$intl.formatDate,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          value = _props.value,\n          children = _props.children;\n\n\n      var formattedDate = formatDate(value, this.props);\n\n      if (typeof children === 'function') {\n        return children(formattedDate);\n      }\n\n      return React.createElement(\n        Text,\n        null,\n        formattedDate\n      );\n    }\n  }]);\n  return FormattedDate;\n}(Component);\n\nFormattedDate.displayName = 'FormattedDate';\nFormattedDate.contextTypes = {\n  intl: intlShape\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedDate.propTypes = _extends({}, dateTimeFormatPropTypes, {\n  value: PropTypes.any.isRequired,\n  format: PropTypes.string,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedTime = function (_Component) {\n  inherits(FormattedTime, _Component);\n\n  function FormattedTime(props, context) {\n    classCallCheck(this, FormattedTime);\n\n    var _this = possibleConstructorReturn(this, (FormattedTime.__proto__ || Object.getPrototypeOf(FormattedTime)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedTime, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatTime = _context$intl.formatTime,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          value = _props.value,\n          children = _props.children;\n\n\n      var formattedTime = formatTime(value, this.props);\n\n      if (typeof children === 'function') {\n        return children(formattedTime);\n      }\n\n      return React.createElement(\n        Text,\n        null,\n        formattedTime\n      );\n    }\n  }]);\n  return FormattedTime;\n}(Component);\n\nFormattedTime.displayName = 'FormattedTime';\nFormattedTime.contextTypes = {\n  intl: intlShape\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedTime.propTypes = _extends({}, dateTimeFormatPropTypes, {\n  value: PropTypes.any.isRequired,\n  format: PropTypes.string,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar SECOND = 1000;\nvar MINUTE = 1000 * 60;\nvar HOUR = 1000 * 60 * 60;\nvar DAY = 1000 * 60 * 60 * 24;\n\n// The maximum timer delay value is a 32-bit signed integer.\n// See: https://mdn.io/setTimeout\nvar MAX_TIMER_DELAY = 2147483647;\n\nfunction selectUnits(delta) {\n  var absDelta = Math.abs(delta);\n\n  if (absDelta < MINUTE) {\n    return 'second';\n  }\n\n  if (absDelta < HOUR) {\n    return 'minute';\n  }\n\n  if (absDelta < DAY) {\n    return 'hour';\n  }\n\n  // The maximum scheduled delay will be measured in days since the maximum\n  // timer delay is less than the number of milliseconds in 25 days.\n  return 'day';\n}\n\nfunction getUnitDelay(units) {\n  switch (units) {\n    case 'second':\n      return SECOND;\n    case 'minute':\n      return MINUTE;\n    case 'hour':\n      return HOUR;\n    case 'day':\n      return DAY;\n    default:\n      return MAX_TIMER_DELAY;\n  }\n}\n\nfunction isSameDate(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  var aTime = new Date(a).getTime();\n  var bTime = new Date(b).getTime();\n\n  return isFinite(aTime) && isFinite(bTime) && aTime === bTime;\n}\n\nvar FormattedRelative = function (_Component) {\n  inherits(FormattedRelative, _Component);\n\n  function FormattedRelative(props, context) {\n    classCallCheck(this, FormattedRelative);\n\n    var _this = possibleConstructorReturn(this, (FormattedRelative.__proto__ || Object.getPrototypeOf(FormattedRelative)).call(this, props, context));\n\n    invariantIntlContext(context);\n\n    var now = isFinite(props.initialNow) ? Number(props.initialNow) : context.intl.now();\n\n    // `now` is stored as state so that `render()` remains a function of\n    // props + state, instead of accessing `Date.now()` inside `render()`.\n    _this.state = { now: now };\n    return _this;\n  }\n\n  createClass(FormattedRelative, [{\n    key: 'scheduleNextUpdate',\n    value: function scheduleNextUpdate(props, state) {\n      var _this2 = this;\n\n      // Cancel and pending update because we're scheduling a new update.\n      clearTimeout(this._timer);\n\n      var value = props.value,\n          units = props.units,\n          updateInterval = props.updateInterval;\n\n      var time = new Date(value).getTime();\n\n      // If the `updateInterval` is falsy, including `0` or we don't have a\n      // valid date, then auto updates have been turned off, so we bail and\n      // skip scheduling an update.\n      if (!updateInterval || !isFinite(time)) {\n        return;\n      }\n\n      var delta = time - state.now;\n      var unitDelay = getUnitDelay(units || selectUnits(delta));\n      var unitRemainder = Math.abs(delta % unitDelay);\n\n      // We want the largest possible timer delay which will still display\n      // accurate information while reducing unnecessary re-renders. The delay\n      // should be until the next \"interesting\" moment, like a tick from\n      // \"1 minute ago\" to \"2 minutes ago\" when the delta is 120,000ms.\n      var delay = delta < 0 ? Math.max(updateInterval, unitDelay - unitRemainder) : Math.max(updateInterval, unitRemainder);\n\n      this._timer = setTimeout(function () {\n        _this2.setState({ now: _this2.context.intl.now() });\n      }, delay);\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.scheduleNextUpdate(this.props, this.state);\n    }\n  }, {\n    key: 'componentWillReceiveProps',\n    value: function componentWillReceiveProps(_ref) {\n      var nextValue = _ref.value;\n\n      // When the `props.value` date changes, `state.now` needs to be updated,\n      // and the next update can be rescheduled.\n      if (!isSameDate(nextValue, this.props.value)) {\n        this.setState({ now: this.context.intl.now() });\n      }\n    }\n  }, {\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'componentWillUpdate',\n    value: function componentWillUpdate(nextProps, nextState) {\n      this.scheduleNextUpdate(nextProps, nextState);\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      clearTimeout(this._timer);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatRelative = _context$intl.formatRelative,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          value = _props.value,\n          children = _props.children;\n\n\n      var formattedRelative = formatRelative(value, _extends({}, this.props, this.state));\n\n      if (typeof children === 'function') {\n        return children(formattedRelative);\n      }\n\n      return React.createElement(\n        Text,\n        null,\n        formattedRelative\n      );\n    }\n  }]);\n  return FormattedRelative;\n}(Component);\n\nFormattedRelative.displayName = 'FormattedRelative';\nFormattedRelative.contextTypes = {\n  intl: intlShape\n};\nFormattedRelative.defaultProps = {\n  updateInterval: 1000 * 10\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedRelative.propTypes = _extends({}, relativeFormatPropTypes, {\n  value: PropTypes.any.isRequired,\n  format: PropTypes.string,\n  updateInterval: PropTypes.number,\n  initialNow: PropTypes.any,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedNumber = function (_Component) {\n  inherits(FormattedNumber, _Component);\n\n  function FormattedNumber(props, context) {\n    classCallCheck(this, FormattedNumber);\n\n    var _this = possibleConstructorReturn(this, (FormattedNumber.__proto__ || Object.getPrototypeOf(FormattedNumber)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedNumber, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatNumber = _context$intl.formatNumber,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          value = _props.value,\n          children = _props.children;\n\n\n      var formattedNumber = formatNumber(value, this.props);\n\n      if (typeof children === 'function') {\n        return children(formattedNumber);\n      }\n\n      return React.createElement(\n        Text,\n        null,\n        formattedNumber\n      );\n    }\n  }]);\n  return FormattedNumber;\n}(Component);\n\nFormattedNumber.displayName = 'FormattedNumber';\nFormattedNumber.contextTypes = {\n  intl: intlShape\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedNumber.propTypes = _extends({}, numberFormatPropTypes, {\n  value: PropTypes.any.isRequired,\n  format: PropTypes.string,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedPlural = function (_Component) {\n  inherits(FormattedPlural, _Component);\n\n  function FormattedPlural(props, context) {\n    classCallCheck(this, FormattedPlural);\n\n    var _this = possibleConstructorReturn(this, (FormattedPlural.__proto__ || Object.getPrototypeOf(FormattedPlural)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedPlural, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate() {\n      for (var _len = arguments.length, next = Array(_len), _key = 0; _key < _len; _key++) {\n        next[_key] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatPlural = _context$intl.formatPlural,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          value = _props.value,\n          other = _props.other,\n          children = _props.children;\n\n\n      var pluralCategory = formatPlural(value, this.props);\n      var formattedPlural = this.props[pluralCategory] || other;\n\n      if (typeof children === 'function') {\n        return children(formattedPlural);\n      }\n\n      return React.createElement(\n        Text,\n        null,\n        formattedPlural\n      );\n    }\n  }]);\n  return FormattedPlural;\n}(Component);\n\nFormattedPlural.displayName = 'FormattedPlural';\nFormattedPlural.contextTypes = {\n  intl: intlShape\n};\nFormattedPlural.defaultProps = {\n  style: 'cardinal'\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedPlural.propTypes = _extends({}, pluralFormatPropTypes, {\n  value: PropTypes.any.isRequired,\n\n  other: PropTypes.node.isRequired,\n  zero: PropTypes.node,\n  one: PropTypes.node,\n  two: PropTypes.node,\n  few: PropTypes.node,\n  many: PropTypes.node,\n\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar defaultFormatMessage = function defaultFormatMessage(descriptor, values) {\n  if (process.env.NODE_ENV !== 'production') {\n    console.error('[React Intl] Could not find required `intl` object. <IntlProvider> needs to exist in the component ancestry. Using default message as fallback.');\n  }\n  return formatMessage({}, { getMessageFormat: memoizeIntlConstructor(IntlMessageFormat) }, descriptor, values);\n};\n\nvar FormattedMessage = function (_Component) {\n  inherits(FormattedMessage, _Component);\n\n  function FormattedMessage(props, context) {\n    classCallCheck(this, FormattedMessage);\n\n    var _this = possibleConstructorReturn(this, (FormattedMessage.__proto__ || Object.getPrototypeOf(FormattedMessage)).call(this, props, context));\n\n    if (!props.defaultMessage) {\n      invariantIntlContext(context);\n    }\n    return _this;\n  }\n\n  createClass(FormattedMessage, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      var values = this.props.values;\n      var nextValues = nextProps.values;\n\n\n      if (!shallowEquals(nextValues, values)) {\n        return true;\n      }\n\n      // Since `values` has already been checked, we know they're not\n      // different, so the current `values` are carried over so the shallow\n      // equals comparison on the other props isn't affected by the `values`.\n      var nextPropsToCheck = _extends({}, nextProps, {\n        values: values\n      });\n\n      for (var _len = arguments.length, next = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        next[_key - 1] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this, nextPropsToCheck].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _ref = this.context.intl || {},\n          _ref$formatMessage = _ref.formatMessage,\n          formatMessage$$1 = _ref$formatMessage === undefined ? defaultFormatMessage : _ref$formatMessage,\n          _ref$textComponent = _ref.textComponent,\n          Text = _ref$textComponent === undefined ? 'span' : _ref$textComponent;\n\n      var _props = this.props,\n          id = _props.id,\n          description = _props.description,\n          defaultMessage = _props.defaultMessage,\n          values = _props.values,\n          _props$tagName = _props.tagName,\n          Component$$1 = _props$tagName === undefined ? Text : _props$tagName,\n          children = _props.children;\n\n\n      var tokenDelimiter = void 0;\n      var tokenizedValues = void 0;\n      var elements = void 0;\n\n      var hasValues = values && Object.keys(values).length > 0;\n      if (hasValues) {\n        // Creates a token with a random UID that should not be guessable or\n        // conflict with other parts of the `message` string.\n        var uid = Math.floor(Math.random() * 0x10000000000).toString(16);\n\n        var generateToken = function () {\n          var counter = 0;\n          return function () {\n            return 'ELEMENT-' + uid + '-' + (counter += 1);\n          };\n        }();\n\n        // Splitting with a delimiter to support IE8. When using a regex\n        // with a capture group IE8 does not include the capture group in\n        // the resulting array.\n        tokenDelimiter = '@__' + uid + '__@';\n        tokenizedValues = {};\n        elements = {};\n\n        // Iterates over the `props` to keep track of any React Element\n        // values so they can be represented by the `token` as a placeholder\n        // when the `message` is formatted. This allows the formatted\n        // message to then be broken-up into parts with references to the\n        // React Elements inserted back in.\n        Object.keys(values).forEach(function (name) {\n          var value = values[name];\n\n          if (isValidElement(value)) {\n            var token = generateToken();\n            tokenizedValues[name] = tokenDelimiter + token + tokenDelimiter;\n            elements[token] = value;\n          } else {\n            tokenizedValues[name] = value;\n          }\n        });\n      }\n\n      var descriptor = { id: id, description: description, defaultMessage: defaultMessage };\n      var formattedMessage = formatMessage$$1(descriptor, tokenizedValues || values);\n\n      var nodes = void 0;\n\n      var hasElements = elements && Object.keys(elements).length > 0;\n      if (hasElements) {\n        // Split the message into parts so the React Element values captured\n        // above can be inserted back into the rendered message. This\n        // approach allows messages to render with React Elements while\n        // keeping React's virtual diffing working properly.\n        nodes = formattedMessage.split(tokenDelimiter).filter(function (part) {\n          return !!part;\n        }).map(function (part) {\n          return elements[part] || part;\n        });\n      } else {\n        nodes = [formattedMessage];\n      }\n\n      if (typeof children === 'function') {\n        return children.apply(undefined, toConsumableArray(nodes));\n      }\n\n      // Needs to use `createElement()` instead of JSX, otherwise React will\n      // warn about a missing `key` prop with rich-text message formatting.\n      return createElement.apply(undefined, [Component$$1, null].concat(toConsumableArray(nodes)));\n    }\n  }]);\n  return FormattedMessage;\n}(Component);\n\nFormattedMessage.displayName = 'FormattedMessage';\nFormattedMessage.contextTypes = {\n  intl: intlShape\n};\nFormattedMessage.defaultProps = {\n  values: {}\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedMessage.propTypes = _extends({}, messageDescriptorPropTypes, {\n  values: PropTypes.object,\n  tagName: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nvar FormattedHTMLMessage = function (_Component) {\n  inherits(FormattedHTMLMessage, _Component);\n\n  function FormattedHTMLMessage(props, context) {\n    classCallCheck(this, FormattedHTMLMessage);\n\n    var _this = possibleConstructorReturn(this, (FormattedHTMLMessage.__proto__ || Object.getPrototypeOf(FormattedHTMLMessage)).call(this, props, context));\n\n    invariantIntlContext(context);\n    return _this;\n  }\n\n  createClass(FormattedHTMLMessage, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      var values = this.props.values;\n      var nextValues = nextProps.values;\n\n\n      if (!shallowEquals(nextValues, values)) {\n        return true;\n      }\n\n      // Since `values` has already been checked, we know they're not\n      // different, so the current `values` are carried over so the shallow\n      // equals comparison on the other props isn't affected by the `values`.\n      var nextPropsToCheck = _extends({}, nextProps, {\n        values: values\n      });\n\n      for (var _len = arguments.length, next = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        next[_key - 1] = arguments[_key];\n      }\n\n      return shouldIntlComponentUpdate.apply(undefined, [this, nextPropsToCheck].concat(next));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _context$intl = this.context.intl,\n          formatHTMLMessage = _context$intl.formatHTMLMessage,\n          Text = _context$intl.textComponent;\n      var _props = this.props,\n          id = _props.id,\n          description = _props.description,\n          defaultMessage = _props.defaultMessage,\n          rawValues = _props.values,\n          _props$tagName = _props.tagName,\n          Component$$1 = _props$tagName === undefined ? Text : _props$tagName,\n          children = _props.children;\n\n\n      var descriptor = { id: id, description: description, defaultMessage: defaultMessage };\n      var formattedHTMLMessage = formatHTMLMessage(descriptor, rawValues);\n\n      if (typeof children === 'function') {\n        return children(formattedHTMLMessage);\n      }\n\n      // Since the message presumably has HTML in it, we need to set\n      // `innerHTML` in order for it to be rendered and not escaped by React.\n      // To be safe, all string prop values were escaped when formatting the\n      // message. It is assumed that the message is not UGC, and came from the\n      // developer making it more like a template.\n      //\n      // Note: There's a perf impact of using this component since there's no\n      // way for React to do its virtual DOM diffing.\n      var html = { __html: formattedHTMLMessage };\n      return React.createElement(Component$$1, { dangerouslySetInnerHTML: html });\n    }\n  }]);\n  return FormattedHTMLMessage;\n}(Component);\n\nFormattedHTMLMessage.displayName = 'FormattedHTMLMessage';\nFormattedHTMLMessage.contextTypes = {\n  intl: intlShape\n};\nFormattedHTMLMessage.defaultProps = {\n  values: {}\n};\nprocess.env.NODE_ENV !== \"production\" ? FormattedHTMLMessage.propTypes = _extends({}, messageDescriptorPropTypes, {\n  values: PropTypes.object,\n  tagName: PropTypes.string,\n  children: PropTypes.func\n}) : void 0;\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\naddLocaleData(defaultLocaleData);\n\n/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\naddLocaleData(allLocaleData);\n\nexport { addLocaleData, intlShape, injectIntl, defineMessages, IntlProvider, FormattedDate, FormattedTime, FormattedRelative, FormattedNumber, FormattedPlural, FormattedMessage, FormattedHTMLMessage };\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./font-dropdown.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./fixed-tools.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n  var memo;\n  return function memorize() {\n    if (typeof memo === 'undefined') {\n      // Test for IE <= 9 as proposed by Browserhacks\n      // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n      // Tests for existence of standard globals is to allow style-loader\n      // to operate correctly into non-standard environments\n      // @see https://github.com/webpack-contrib/style-loader/issues/177\n      memo = Boolean(window && document && document.all && !window.atob);\n    }\n\n    return memo;\n  };\n}();\n\nvar getTarget = function getTarget() {\n  var memo = {};\n  return function memorize(target) {\n    if (typeof memo[target] === 'undefined') {\n      var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n      if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n        try {\n          // This will throw an exception if access to iframe is blocked\n          // due to cross-origin restrictions\n          styleTarget = styleTarget.contentDocument.head;\n        } catch (e) {\n          // istanbul ignore next\n          styleTarget = null;\n        }\n      }\n\n      memo[target] = styleTarget;\n    }\n\n    return memo[target];\n  };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n  var result = -1;\n\n  for (var i = 0; i < stylesInDom.length; i++) {\n    if (stylesInDom[i].identifier === identifier) {\n      result = i;\n      break;\n    }\n  }\n\n  return result;\n}\n\nfunction modulesToDom(list, options) {\n  var idCountMap = {};\n  var identifiers = [];\n\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i];\n    var id = options.base ? item[0] + options.base : item[0];\n    var count = idCountMap[id] || 0;\n    var identifier = \"\".concat(id, \" \").concat(count);\n    idCountMap[id] = count + 1;\n    var index = getIndexByIdentifier(identifier);\n    var obj = {\n      css: item[1],\n      media: item[2],\n      sourceMap: item[3]\n    };\n\n    if (index !== -1) {\n      stylesInDom[index].references++;\n      stylesInDom[index].updater(obj);\n    } else {\n      stylesInDom.push({\n        identifier: identifier,\n        updater: addStyle(obj, options),\n        references: 1\n      });\n    }\n\n    identifiers.push(identifier);\n  }\n\n  return identifiers;\n}\n\nfunction insertStyleElement(options) {\n  var style = document.createElement('style');\n  var attributes = options.attributes || {};\n\n  if (typeof attributes.nonce === 'undefined') {\n    var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n    if (nonce) {\n      attributes.nonce = nonce;\n    }\n  }\n\n  Object.keys(attributes).forEach(function (key) {\n    style.setAttribute(key, attributes[key]);\n  });\n\n  if (typeof options.insert === 'function') {\n    options.insert(style);\n  } else {\n    var target = getTarget(options.insert || 'head');\n\n    if (!target) {\n      throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n    }\n\n    target.appendChild(style);\n  }\n\n  return style;\n}\n\nfunction removeStyleElement(style) {\n  // istanbul ignore if\n  if (style.parentNode === null) {\n    return false;\n  }\n\n  style.parentNode.removeChild(style);\n}\n/* istanbul ignore next  */\n\n\nvar replaceText = function replaceText() {\n  var textStore = [];\n  return function replace(index, replacement) {\n    textStore[index] = replacement;\n    return textStore.filter(Boolean).join('\\n');\n  };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n  var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n  /* istanbul ignore if  */\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = replaceText(index, css);\n  } else {\n    var cssNode = document.createTextNode(css);\n    var childNodes = style.childNodes;\n\n    if (childNodes[index]) {\n      style.removeChild(childNodes[index]);\n    }\n\n    if (childNodes.length) {\n      style.insertBefore(cssNode, childNodes[index]);\n    } else {\n      style.appendChild(cssNode);\n    }\n  }\n}\n\nfunction applyToTag(style, options, obj) {\n  var css = obj.css;\n  var media = obj.media;\n  var sourceMap = obj.sourceMap;\n\n  if (media) {\n    style.setAttribute('media', media);\n  } else {\n    style.removeAttribute('media');\n  }\n\n  if (sourceMap && typeof btoa !== 'undefined') {\n    css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n  } // For old IE\n\n  /* istanbul ignore if  */\n\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    while (style.firstChild) {\n      style.removeChild(style.firstChild);\n    }\n\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n  var style;\n  var update;\n  var remove;\n\n  if (options.singleton) {\n    var styleIndex = singletonCounter++;\n    style = singleton || (singleton = insertStyleElement(options));\n    update = applyToSingletonTag.bind(null, style, styleIndex, false);\n    remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n  } else {\n    style = insertStyleElement(options);\n    update = applyToTag.bind(null, style, options);\n\n    remove = function remove() {\n      removeStyleElement(style);\n    };\n  }\n\n  update(obj);\n  return function updateStyle(newObj) {\n    if (newObj) {\n      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n        return;\n      }\n\n      update(obj = newObj);\n    } else {\n      remove();\n    }\n  };\n}\n\nmodule.exports = function (list, options) {\n  options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n  // tags it will allow on a page\n\n  if (!options.singleton && typeof options.singleton !== 'boolean') {\n    options.singleton = isOldIE();\n  }\n\n  list = list || [];\n  var lastIdentifiers = modulesToDom(list, options);\n  return function update(newList) {\n    newList = newList || [];\n\n    if (Object.prototype.toString.call(newList) !== '[object Array]') {\n      return;\n    }\n\n    for (var i = 0; i < lastIdentifiers.length; i++) {\n      var identifier = lastIdentifiers[i];\n      var index = getIndexByIdentifier(identifier);\n      stylesInDom[index].references--;\n    }\n\n    var newLastIdentifiers = modulesToDom(newList, options);\n\n    for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n      var _identifier = lastIdentifiers[_i];\n\n      var _index = getIndexByIdentifier(_identifier);\n\n      if (stylesInDom[_index].references === 0) {\n        stylesInDom[_index].updater();\n\n        stylesInDom.splice(_index, 1);\n      }\n    }\n\n    lastIdentifiers = newLastIdentifiers;\n  };\n};","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery, dedupe) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var i = 0; i < this.length; i++) {\n        // eslint-disable-next-line prefer-destructuring\n        var id = this[i][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = [].concat(modules[_i]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if (mediaQuery) {\n        if (!item[2]) {\n          item[2] = mediaQuery;\n        } else {\n          item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./mode-tools.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\"use strict\";\n\n/**\n * Constructs an enumeration with keys equal to their value.\n *\n * For example:\n *\n *   var COLORS = keyMirror({blue: null, red: null});\n *   var myColor = COLORS.blue;\n *   var isColorValid = !!COLORS[myColor];\n *\n * The last line could not be performed if the values of the generated enum were\n * not equal to their keys.\n *\n *   Input:  {key1: val1, key2: val2}\n *   Output: {key1: key1, key2: key2}\n *\n * @param {object} obj\n * @return {object}\n */\nvar keyMirror = function(obj) {\n  var ret = {};\n  var key;\n  if (!(obj instanceof Object && !Array.isArray(obj))) {\n    throw new Error('keyMirror(...): Argument must be an object.');\n  }\n  for (key in obj) {\n    if (!obj.hasOwnProperty(key)) {\n      continue;\n    }\n    ret[key] = key;\n  }\n  return ret;\n};\n\nmodule.exports = keyMirror;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import isPlainObject from 'lodash-es/isPlainObject';\nimport $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nexport var ActionTypes = {\n  INIT: '@@redux/INIT'\n\n  /**\n   * Creates a Redux store that holds the state tree.\n   * The only way to change the data in the store is to call `dispatch()` on it.\n   *\n   * There should only be a single store in your app. To specify how different\n   * parts of the state tree respond to actions, you may combine several reducers\n   * into a single reducer function by using `combineReducers`.\n   *\n   * @param {Function} reducer A function that returns the next state tree, given\n   * the current state tree and the action to handle.\n   *\n   * @param {any} [preloadedState] The initial state. You may optionally specify it\n   * to hydrate the state from the server in universal apps, or to restore a\n   * previously serialized user session.\n   * If you use `combineReducers` to produce the root reducer function, this must be\n   * an object with the same shape as `combineReducers` keys.\n   *\n   * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n   * to enhance the store with third-party capabilities such as middleware,\n   * time travel, persistence, etc. The only store enhancer that ships with Redux\n   * is `applyMiddleware()`.\n   *\n   * @returns {Store} A Redux store that lets you read the state, dispatch actions\n   * and subscribe to changes.\n   */\n};export default function createStore(reducer, preloadedState, enhancer) {\n  var _ref2;\n\n  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n    enhancer = preloadedState;\n    preloadedState = undefined;\n  }\n\n  if (typeof enhancer !== 'undefined') {\n    if (typeof enhancer !== 'function') {\n      throw new Error('Expected the enhancer to be a function.');\n    }\n\n    return enhancer(createStore)(reducer, preloadedState);\n  }\n\n  if (typeof reducer !== 'function') {\n    throw new Error('Expected the reducer to be a function.');\n  }\n\n  var currentReducer = reducer;\n  var currentState = preloadedState;\n  var currentListeners = [];\n  var nextListeners = currentListeners;\n  var isDispatching = false;\n\n  function ensureCanMutateNextListeners() {\n    if (nextListeners === currentListeners) {\n      nextListeners = currentListeners.slice();\n    }\n  }\n\n  /**\n   * Reads the state tree managed by the store.\n   *\n   * @returns {any} The current state tree of your application.\n   */\n  function getState() {\n    return currentState;\n  }\n\n  /**\n   * Adds a change listener. It will be called any time an action is dispatched,\n   * and some part of the state tree may potentially have changed. You may then\n   * call `getState()` to read the current state tree inside the callback.\n   *\n   * You may call `dispatch()` from a change listener, with the following\n   * caveats:\n   *\n   * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n   * If you subscribe or unsubscribe while the listeners are being invoked, this\n   * will not have any effect on the `dispatch()` that is currently in progress.\n   * However, the next `dispatch()` call, whether nested or not, will use a more\n   * recent snapshot of the subscription list.\n   *\n   * 2. The listener should not expect to see all state changes, as the state\n   * might have been updated multiple times during a nested `dispatch()` before\n   * the listener is called. It is, however, guaranteed that all subscribers\n   * registered before the `dispatch()` started will be called with the latest\n   * state by the time it exits.\n   *\n   * @param {Function} listener A callback to be invoked on every dispatch.\n   * @returns {Function} A function to remove this change listener.\n   */\n  function subscribe(listener) {\n    if (typeof listener !== 'function') {\n      throw new Error('Expected listener to be a function.');\n    }\n\n    var isSubscribed = true;\n\n    ensureCanMutateNextListeners();\n    nextListeners.push(listener);\n\n    return function unsubscribe() {\n      if (!isSubscribed) {\n        return;\n      }\n\n      isSubscribed = false;\n\n      ensureCanMutateNextListeners();\n      var index = nextListeners.indexOf(listener);\n      nextListeners.splice(index, 1);\n    };\n  }\n\n  /**\n   * Dispatches an action. It is the only way to trigger a state change.\n   *\n   * The `reducer` function, used to create the store, will be called with the\n   * current state tree and the given `action`. Its return value will\n   * be considered the **next** state of the tree, and the change listeners\n   * will be notified.\n   *\n   * The base implementation only supports plain object actions. If you want to\n   * dispatch a Promise, an Observable, a thunk, or something else, you need to\n   * wrap your store creating function into the corresponding middleware. For\n   * example, see the documentation for the `redux-thunk` package. Even the\n   * middleware will eventually dispatch plain object actions using this method.\n   *\n   * @param {Object} action A plain object representing “what changed”. It is\n   * a good idea to keep actions serializable so you can record and replay user\n   * sessions, or use the time travelling `redux-devtools`. An action must have\n   * a `type` property which may not be `undefined`. It is a good idea to use\n   * string constants for action types.\n   *\n   * @returns {Object} For convenience, the same action object you dispatched.\n   *\n   * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n   * return something else (for example, a Promise you can await).\n   */\n  function dispatch(action) {\n    if (!isPlainObject(action)) {\n      throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n    }\n\n    if (typeof action.type === 'undefined') {\n      throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n    }\n\n    if (isDispatching) {\n      throw new Error('Reducers may not dispatch actions.');\n    }\n\n    try {\n      isDispatching = true;\n      currentState = currentReducer(currentState, action);\n    } finally {\n      isDispatching = false;\n    }\n\n    var listeners = currentListeners = nextListeners;\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener();\n    }\n\n    return action;\n  }\n\n  /**\n   * Replaces the reducer currently used by the store to calculate the state.\n   *\n   * You might need this if your app implements code splitting and you want to\n   * load some of the reducers dynamically. You might also need this if you\n   * implement a hot reloading mechanism for Redux.\n   *\n   * @param {Function} nextReducer The reducer for the store to use instead.\n   * @returns {void}\n   */\n  function replaceReducer(nextReducer) {\n    if (typeof nextReducer !== 'function') {\n      throw new Error('Expected the nextReducer to be a function.');\n    }\n\n    currentReducer = nextReducer;\n    dispatch({ type: ActionTypes.INIT });\n  }\n\n  /**\n   * Interoperability point for observable/reactive libraries.\n   * @returns {observable} A minimal observable of state changes.\n   * For more information, see the observable proposal:\n   * https://github.com/tc39/proposal-observable\n   */\n  function observable() {\n    var _ref;\n\n    var outerSubscribe = subscribe;\n    return _ref = {\n      /**\n       * The minimal observable subscription method.\n       * @param {Object} observer Any object that can be used as an observer.\n       * The observer object should have a `next` method.\n       * @returns {subscription} An object with an `unsubscribe` method that can\n       * be used to unsubscribe the observable from the store, and prevent further\n       * emission of values from the observable.\n       */\n      subscribe: function subscribe(observer) {\n        if (typeof observer !== 'object') {\n          throw new TypeError('Expected the observer to be an object.');\n        }\n\n        function observeState() {\n          if (observer.next) {\n            observer.next(getState());\n          }\n        }\n\n        observeState();\n        var unsubscribe = outerSubscribe(observeState);\n        return { unsubscribe: unsubscribe };\n      }\n    }, _ref[$$observable] = function () {\n      return this;\n    }, _ref;\n  }\n\n  // When a store is created, an \"INIT\" action is dispatched so that every\n  // reducer returns their initial state. This effectively populates\n  // the initial state tree.\n  dispatch({ type: ActionTypes.INIT });\n\n  return _ref2 = {\n    dispatch: dispatch,\n    subscribe: subscribe,\n    getState: getState,\n    replaceReducer: replaceReducer\n  }, _ref2[$$observable] = observable, _ref2;\n}","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n  /* eslint-disable no-console */\n  if (typeof console !== 'undefined' && typeof console.error === 'function') {\n    console.error(message);\n  }\n  /* eslint-enable no-console */\n  try {\n    // This error was thrown as a convenience so that if you enable\n    // \"break on all exceptions\" in your console,\n    // it would pause the execution at this line.\n    throw new Error(message);\n    /* eslint-disable no-empty */\n  } catch (e) {}\n  /* eslint-enable no-empty */\n}","import { ActionTypes } from './createStore';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport warning from './utils/warning';\n\nfunction getUndefinedStateErrorMessage(key, action) {\n  var actionType = action && action.type;\n  var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n  return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n  var reducerKeys = Object.keys(reducers);\n  var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n  if (reducerKeys.length === 0) {\n    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n  }\n\n  if (!isPlainObject(inputState)) {\n    return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n  }\n\n  var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n  });\n\n  unexpectedKeys.forEach(function (key) {\n    unexpectedKeyCache[key] = true;\n  });\n\n  if (unexpectedKeys.length > 0) {\n    return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n  }\n}\n\nfunction assertReducerShape(reducers) {\n  Object.keys(reducers).forEach(function (key) {\n    var reducer = reducers[key];\n    var initialState = reducer(undefined, { type: ActionTypes.INIT });\n\n    if (typeof initialState === 'undefined') {\n      throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');\n    }\n\n    var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n    if (typeof reducer(undefined, { type: type }) === 'undefined') {\n      throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');\n    }\n  });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers) {\n  var reducerKeys = Object.keys(reducers);\n  var finalReducers = {};\n  for (var i = 0; i < reducerKeys.length; i++) {\n    var key = reducerKeys[i];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof reducers[key] === 'undefined') {\n        warning('No reducer provided for key \"' + key + '\"');\n      }\n    }\n\n    if (typeof reducers[key] === 'function') {\n      finalReducers[key] = reducers[key];\n    }\n  }\n  var finalReducerKeys = Object.keys(finalReducers);\n\n  var unexpectedKeyCache = void 0;\n  if (process.env.NODE_ENV !== 'production') {\n    unexpectedKeyCache = {};\n  }\n\n  var shapeAssertionError = void 0;\n  try {\n    assertReducerShape(finalReducers);\n  } catch (e) {\n    shapeAssertionError = e;\n  }\n\n  return function combination() {\n    var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var action = arguments[1];\n\n    if (shapeAssertionError) {\n      throw shapeAssertionError;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n      if (warningMessage) {\n        warning(warningMessage);\n      }\n    }\n\n    var hasChanged = false;\n    var nextState = {};\n    for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n      var _key = finalReducerKeys[_i];\n      var reducer = finalReducers[_key];\n      var previousStateForKey = state[_key];\n      var nextStateForKey = reducer(previousStateForKey, action);\n      if (typeof nextStateForKey === 'undefined') {\n        var errorMessage = getUndefinedStateErrorMessage(_key, action);\n        throw new Error(errorMessage);\n      }\n      nextState[_key] = nextStateForKey;\n      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n    }\n    return hasChanged ? nextState : state;\n  };\n}","function bindActionCreator(actionCreator, dispatch) {\n  return function () {\n    return dispatch(actionCreator.apply(undefined, arguments));\n  };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nexport default function bindActionCreators(actionCreators, dispatch) {\n  if (typeof actionCreators === 'function') {\n    return bindActionCreator(actionCreators, dispatch);\n  }\n\n  if (typeof actionCreators !== 'object' || actionCreators === null) {\n    throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n  }\n\n  var keys = Object.keys(actionCreators);\n  var boundActionCreators = {};\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    var actionCreator = actionCreators[key];\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n    }\n  }\n  return boundActionCreators;\n}","/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nexport default function compose() {\n  for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  if (funcs.length === 0) {\n    return function (arg) {\n      return arg;\n    };\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0];\n  }\n\n  return funcs.reduce(function (a, b) {\n    return function () {\n      return a(b.apply(undefined, arguments));\n    };\n  });\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport compose from './compose';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nexport default function applyMiddleware() {\n  for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n    middlewares[_key] = arguments[_key];\n  }\n\n  return function (createStore) {\n    return function (reducer, preloadedState, enhancer) {\n      var store = createStore(reducer, preloadedState, enhancer);\n      var _dispatch = store.dispatch;\n      var chain = [];\n\n      var middlewareAPI = {\n        getState: store.getState,\n        dispatch: function dispatch(action) {\n          return _dispatch(action);\n        }\n      };\n      chain = middlewares.map(function (middleware) {\n        return middleware(middlewareAPI);\n      });\n      _dispatch = compose.apply(undefined, chain)(store.dispatch);\n\n      return _extends({}, store, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}","import createStore from './createStore';\nimport combineReducers from './combineReducers';\nimport bindActionCreators from './bindActionCreators';\nimport applyMiddleware from './applyMiddleware';\nimport compose from './compose';\nimport warning from './utils/warning';\n\n/*\n* This is a dummy function to check if the function name has been altered by minification.\n* If the function has been minified and NODE_ENV !== 'production', warn the user.\n*/\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n  warning('You are currently using minified code outside of NODE_ENV === \\'production\\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose };","var convert = require('color-convert');\n\nmodule.exports = function (cstr) {\n    var m, conv, parts, alpha;\n    if (m = /^((?:rgb|hs[lv]|cmyk|xyz|lab)a?)\\s*\\(([^\\)]*)\\)/.exec(cstr)) {\n        var name = m[1];\n        var base = name.replace(/a$/, '');\n        var size = base === 'cmyk' ? 4 : 3;\n        conv = convert[base];\n        \n        parts = m[2].replace(/^\\s+|\\s+$/g, '')\n            .split(/\\s*,\\s*/)\n            .map(function (x, i) {\n                if (/%$/.test(x) && i === size) {\n                    return parseFloat(x) / 100;\n                }\n                else if (/%$/.test(x)) {\n                    return parseFloat(x);\n                }\n                return parseFloat(x);\n            })\n        ;\n        if (name === base) parts.push(1);\n        alpha = parts[size] === undefined ? 1 : parts[size];\n        parts = parts.slice(0, size);\n        \n        conv[base] = function () { return parts };\n    }\n    else if (/^#[A-Fa-f0-9]+$/.test(cstr)) {\n        var base = cstr.replace(/^#/,'');\n        var size = base.length;\n        conv = convert.rgb;\n        parts = base.split(size === 3 ? /(.)/ : /(..)/);\n        parts = parts.filter(Boolean)\n            .map(function (x) {\n                if (size === 3) {\n                    return parseInt(x + x, 16);\n                }\n                else {\n                    return parseInt(x, 16)\n                }\n            })\n        ;\n        alpha = 1;\n        conv.rgb = function () { return parts };\n        if (!parts[0]) parts[0] = 0;\n        if (!parts[1]) parts[1] = 0;\n        if (!parts[2]) parts[2] = 0;\n    }\n    else {\n        conv = convert.keyword;\n        conv.keyword = function () { return cstr };\n        parts = cstr;\n        alpha = 1;\n    }\n    \n    var res = {\n        rgb: undefined,\n        hsl: undefined,\n        hsv: undefined,\n        cmyk: undefined,\n        keyword: undefined,\n        hex: undefined\n    };\n    try { res.rgb = conv.rgb(parts) } catch (e) {}\n    try { res.hsl = conv.hsl(parts) } catch (e) {}\n    try { res.hsv = conv.hsv(parts) } catch (e) {}\n    try { res.cmyk = conv.cmyk(parts) } catch (e) {}\n    try { res.keyword = conv.keyword(parts) } catch (e) {}\n    \n    if (res.rgb) res.hex = '#' + res.rgb.map(function (x) {\n        var s = x.toString(16);\n        if (s.length === 1) return '0' + s;\n        return s;\n    }).join('');\n    \n    if (res.rgb) res.rgba = res.rgb.concat(alpha);\n    if (res.hsl) res.hsla = res.hsl.concat(alpha);\n    if (res.hsv) res.hsva = res.hsv.concat(alpha);\n    if (res.cmyk) res.cmyka = res.cmyk.concat(alpha);\n    \n    return res;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n","var microee = require('microee');\n\n// Implements a subset of Node's stream.Transform - in a cross-platform manner.\nfunction Transform() {}\n\nmicroee.mixin(Transform);\n\n// The write() signature is different from Node's\n// --> makes it much easier to work with objects in logs.\n// One of the lessons from v1 was that it's better to target\n// a good browser rather than the lowest common denominator\n// internally.\n// If you want to use external streams, pipe() to ./stringify.js first.\nTransform.prototype.write = function(name, level, args) {\n  this.emit('item', name, level, args);\n};\n\nTransform.prototype.end = function() {\n  this.emit('end');\n  this.removeAllListeners();\n};\n\nTransform.prototype.pipe = function(dest) {\n  var s = this;\n  // prevent double piping\n  s.emit('unpipe', dest);\n  // tell the dest that it's being piped to\n  dest.emit('pipe', s);\n\n  function onItem() {\n    dest.write.apply(dest, Array.prototype.slice.call(arguments));\n  }\n  function onEnd() { !dest._isStdio && dest.end(); }\n\n  s.on('item', onItem);\n  s.on('end', onEnd);\n\n  s.when('unpipe', function(from) {\n    var match = (from === dest) || typeof from == 'undefined';\n    if(match) {\n      s.removeListener('item', onItem);\n      s.removeListener('end', onEnd);\n      dest.emit('unpipe');\n    }\n    return match;\n  });\n\n  return dest;\n};\n\nTransform.prototype.unpipe = function(from) {\n  this.emit('unpipe', from);\n  return this;\n};\n\nTransform.prototype.format = function(dest) {\n  throw new Error([\n    'Warning: .format() is deprecated in Minilog v2! Use .pipe() instead. For example:',\n    'var Minilog = require(\\'minilog\\');',\n    'Minilog',\n    '  .pipe(Minilog.backends.console.formatClean)',\n    '  .pipe(Minilog.backends.console);'].join('\\n'));\n};\n\nTransform.mixin = function(dest) {\n  var o = Transform.prototype, k;\n  for (k in o) {\n    o.hasOwnProperty(k) && (dest.prototype[k] = o[k]);\n  }\n};\n\nmodule.exports = Transform;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    symbolTag = '[object Symbol]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array ? array.length : 0;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  if (value !== value) {\n    return baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    getPrototype = overArg(Object.getPrototypeOf, Object),\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, props) {\n  object = Object(object);\n  return basePickBy(object, props, function(value, key) {\n    return key in object;\n  });\n}\n\n/**\n * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick from.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, props, predicate) {\n  var index = -1,\n      length = props.length,\n      result = {};\n\n  while (++index < length) {\n    var key = props[index],\n        value = object[key];\n\n    if (predicate(value, key)) {\n      result[key] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = array;\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Creates an array of the own and inherited enumerable symbol properties\n * of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable string keyed properties of `object` that are\n * not omitted.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [props] The property identifiers to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = baseRest(function(object, props) {\n  if (object == null) {\n    return {};\n  }\n  props = arrayMap(baseFlatten(props, 1), toKey);\n  return basePick(object, baseDifference(getAllKeysIn(object), props));\n});\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = omit;\n","/* jshint node:true */\n\n'use strict';\n\nvar IntlMessageFormat = require('./lib/main')['default'];\n\n// Add all locale data to `IntlMessageFormat`. This module will be ignored when\n// bundling for the browser with Browserify/Webpack.\nrequire('./lib/locales');\n\n// Re-export `IntlMessageFormat` as the CommonJS default exports with all the\n// locale data registered, and with English set as the default locale. Define\n// the `default` prop for use with other compiled ES6 Modules.\nexports = module.exports = IntlMessageFormat;\nexports['default'] = exports;\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./scrollable-canvas.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./color-button.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../node_modules/postcss-loader/src/index.js??postcss!./playground.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eno-fill%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-linecap='square'%3E %3Cg id='no-fill' stroke='%23FF661A' stroke-width='2'%3E %3Cpath d='M3,17 L17,3' id='Line'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","/* jshint node:true */\n\n'use strict';\n\nvar IntlRelativeFormat = require('./lib/main')['default'];\n\n// Add all locale data to `IntlRelativeFormat`. This module will be ignored when\n// bundling for the browser with Browserify/Webpack.\nrequire('./lib/locales');\n\n// Re-export `IntlRelativeFormat` as the CommonJS default exports with all the\n// locale data registered, and with English set as the default locale. Define\n// the `default` prop for use with other compiled ES6 Modules.\nexports = module.exports = IntlRelativeFormat;\nexports['default'] = exports;\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./dropdown.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"IntlProvider\", {\n  enumerable: true,\n  get: function get() {\n    return _IntlProvider.default;\n  }\n});\nObject.defineProperty(exports, \"Provider\", {\n  enumerable: true,\n  get: function get() {\n    return _Provider.default;\n  }\n});\nexports.initialState = exports.UPDATE = void 0;\nexports.intlReducer = intlReducer;\nexports.updateIntl = void 0;\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _IntlProvider = _interopRequireDefault(require(\"./components/IntlProvider\"));\nvar _Provider = _interopRequireDefault(require(\"./components/Provider\"));\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nvar UPDATE = exports.UPDATE = '@@intl/UPDATE';\nvar updateIntl = exports.updateIntl = function updateIntl(_ref) {\n  var locale = _ref.locale,\n    formats = _ref.formats,\n    messages = _ref.messages;\n  return {\n    type: UPDATE,\n    payload: {\n      locale: locale,\n      formats: formats,\n      messages: messages\n    }\n  };\n};\nvar initialState = exports.initialState = {\n  locale: 'en',\n  messages: {}\n};\nfunction intlReducer() {\n  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n  if (action.type !== UPDATE) {\n    return state;\n  }\n  return _objectSpread(_objectSpread({}, state), action.payload);\n}","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Emixed-fill%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0.75'%3E %3Cg id='mixed-fill'%3E %3Cg id='mixed-fill-icon' transform='translate(2.000000, 2.500000)'%3E %3Ccircle id='blue' fill='%234C97FF' cx='4.5' cy='10.5' r='4.5'%3E%3C/circle%3E %3Ccircle id='red' fill='%23FF5500' cx='8' cy='4.5' r='4.5'%3E%3C/circle%3E %3Ccircle id='yellow' fill='%23FFBF00' cx='11.4099998' cy='10.5' r='4.5'%3E%3C/circle%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","!function(root, factory) {\n    \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory(require(\"react\")) : \"function\" == typeof define && define.amd ? define([ \"react\" ], factory) : \"object\" == typeof exports ? exports.MediaQuery = factory(require(\"react\")) : root.MediaQuery = factory(root.react);\n}(\"undefined\" != typeof self ? self : this, function(__WEBPACK_EXTERNAL_MODULE_5__) {\n    return function(modules) {\n        function __webpack_require__(moduleId) {\n            if (installedModules[moduleId]) return installedModules[moduleId].exports;\n            var module = installedModules[moduleId] = {\n                i: moduleId,\n                l: !1,\n                exports: {}\n            };\n            return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), \n            module.l = !0, module.exports;\n        }\n        var installedModules = {};\n        return __webpack_require__.m = modules, __webpack_require__.c = installedModules, \n        __webpack_require__.d = function(exports, name, getter) {\n            __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n                configurable: !1,\n                enumerable: !0,\n                get: getter\n            });\n        }, __webpack_require__.n = function(module) {\n            var getter = module && module.__esModule ? function() {\n                return module.default;\n            } : function() {\n                return module;\n            };\n            return __webpack_require__.d(getter, \"a\", getter), getter;\n        }, __webpack_require__.o = function(object, property) {\n            return Object.prototype.hasOwnProperty.call(object, property);\n        }, __webpack_require__.p = \"\", __webpack_require__(__webpack_require__.s = 4);\n    }([ function(module, exports, __webpack_require__) {\n        var REACT_ELEMENT_TYPE = \"function\" == typeof Symbol && Symbol.for && Symbol.for(\"react.element\") || 60103, isValidElement = function(object) {\n            return \"object\" == typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;\n        };\n        module.exports = __webpack_require__(6)(isValidElement, !0);\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        module.exports = \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function hyphenateStyleName(string) {\n            return string in cache ? cache[string] : cache[string] = string.replace(uppercasePattern, \"-$&\").toLowerCase().replace(msPattern, \"-ms-\");\n        }\n        var uppercasePattern = /[A-Z]/g, msPattern = /^ms-/, cache = {};\n        module.exports = hyphenateStyleName;\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        Object.defineProperty(exports, \"__esModule\", {\n            value: !0\n        });\n        var _extends = Object.assign || function(target) {\n            for (var i = 1; i < arguments.length; i++) {\n                var source = arguments[i];\n                for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n            }\n            return target;\n        }, _propTypes = __webpack_require__(0), _propTypes2 = function(obj) {\n            return obj && obj.__esModule ? obj : {\n                default: obj\n            };\n        }(_propTypes), stringOrNumber = _propTypes2.default.oneOfType([ _propTypes2.default.string, _propTypes2.default.number ]), matchers = {\n            orientation: _propTypes2.default.oneOf([ \"portrait\", \"landscape\" ]),\n            scan: _propTypes2.default.oneOf([ \"progressive\", \"interlace\" ]),\n            aspectRatio: _propTypes2.default.string,\n            deviceAspectRatio: _propTypes2.default.string,\n            height: stringOrNumber,\n            deviceHeight: stringOrNumber,\n            width: stringOrNumber,\n            deviceWidth: stringOrNumber,\n            color: _propTypes2.default.bool,\n            colorIndex: _propTypes2.default.bool,\n            monochrome: _propTypes2.default.bool,\n            resolution: stringOrNumber\n        }, features = _extends({\n            minAspectRatio: _propTypes2.default.string,\n            maxAspectRatio: _propTypes2.default.string,\n            minDeviceAspectRatio: _propTypes2.default.string,\n            maxDeviceAspectRatio: _propTypes2.default.string,\n            minHeight: stringOrNumber,\n            maxHeight: stringOrNumber,\n            minDeviceHeight: stringOrNumber,\n            maxDeviceHeight: stringOrNumber,\n            minWidth: stringOrNumber,\n            maxWidth: stringOrNumber,\n            minDeviceWidth: stringOrNumber,\n            maxDeviceWidth: stringOrNumber,\n            minColor: _propTypes2.default.number,\n            maxColor: _propTypes2.default.number,\n            minColorIndex: _propTypes2.default.number,\n            maxColorIndex: _propTypes2.default.number,\n            minMonochrome: _propTypes2.default.number,\n            maxMonochrome: _propTypes2.default.number,\n            minResolution: stringOrNumber,\n            maxResolution: stringOrNumber\n        }, matchers), types = {\n            all: _propTypes2.default.bool,\n            grid: _propTypes2.default.bool,\n            aural: _propTypes2.default.bool,\n            braille: _propTypes2.default.bool,\n            handheld: _propTypes2.default.bool,\n            print: _propTypes2.default.bool,\n            projection: _propTypes2.default.bool,\n            screen: _propTypes2.default.bool,\n            tty: _propTypes2.default.bool,\n            tv: _propTypes2.default.bool,\n            embossed: _propTypes2.default.bool\n        }, all = _extends({}, types, features);\n        matchers.type = Object.keys(types), exports.default = {\n            all: all,\n            types: types,\n            matchers: matchers,\n            features: features\n        }, module.exports = exports.default;\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function _interopRequireDefault(obj) {\n            return obj && obj.__esModule ? obj : {\n                default: obj\n            };\n        }\n        function _classCallCheck(instance, Constructor) {\n            if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n        }\n        function _possibleConstructorReturn(self, call) {\n            if (!self) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n            return !call || \"object\" != typeof call && \"function\" != typeof call ? self : call;\n        }\n        function _inherits(subClass, superClass) {\n            if (\"function\" != typeof superClass && null !== superClass) throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n            subClass.prototype = Object.create(superClass && superClass.prototype, {\n                constructor: {\n                    value: subClass,\n                    enumerable: !1,\n                    writable: !0,\n                    configurable: !0\n                }\n            }), superClass && (Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass);\n        }\n        function omit(object, keys) {\n            var newObject = _extends({}, object);\n            return keys.forEach(function(key) {\n                return delete newObject[key];\n            }), newObject;\n        }\n        Object.defineProperty(exports, \"__esModule\", {\n            value: !0\n        }), exports.toQuery = exports.default = void 0;\n        var _createClass = function() {\n            function defineProperties(target, props) {\n                for (var i = 0; i < props.length; i++) {\n                    var descriptor = props[i];\n                    descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, \n                    \"value\" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor);\n                }\n            }\n            return function(Constructor, protoProps, staticProps) {\n                return protoProps && defineProperties(Constructor.prototype, protoProps), staticProps && defineProperties(Constructor, staticProps), \n                Constructor;\n            };\n        }(), _extends = Object.assign || function(target) {\n            for (var i = 1; i < arguments.length; i++) {\n                var source = arguments[i];\n                for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n            }\n            return target;\n        }, _react = __webpack_require__(5), _react2 = _interopRequireDefault(_react), _propTypes = __webpack_require__(0), _propTypes2 = _interopRequireDefault(_propTypes), _matchmediaquery = __webpack_require__(9), _matchmediaquery2 = _interopRequireDefault(_matchmediaquery), _hyphenateStyleName = __webpack_require__(2), _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName), _mediaQuery = __webpack_require__(3), _mediaQuery2 = _interopRequireDefault(_mediaQuery), _toQuery = __webpack_require__(11), _toQuery2 = _interopRequireDefault(_toQuery), defaultTypes = {\n            component: _propTypes2.default.node,\n            query: _propTypes2.default.string,\n            values: _propTypes2.default.shape(_mediaQuery2.default.matchers),\n            children: _propTypes2.default.oneOfType([ _propTypes2.default.node, _propTypes2.default.func ]),\n            onChange: _propTypes2.default.func,\n            onBeforeChange: _propTypes2.default.func\n        }, mediaKeys = Object.keys(_mediaQuery2.default.all), excludedQueryKeys = Object.keys(defaultTypes), excludedPropKeys = excludedQueryKeys.concat(mediaKeys), MediaQuery = function(_React$Component) {\n            function MediaQuery() {\n                var _ref, _temp, _this, _ret;\n                _classCallCheck(this, MediaQuery);\n                for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];\n                return _temp = _this = _possibleConstructorReturn(this, (_ref = MediaQuery.__proto__ || Object.getPrototypeOf(MediaQuery)).call.apply(_ref, [ this ].concat(args))), \n                _this.state = {\n                    matches: !1\n                }, _this.updateMatches = function() {\n                    _this._mql.matches !== _this.state.matches && _this.setState({\n                        matches: _this._mql.matches\n                    });\n                }, _this.removeMql = function() {\n                    _this._mql && (_this._mql.removeListener(_this.updateMatches), _this._mql.dispose());\n                }, _ret = _temp, _possibleConstructorReturn(_this, _ret);\n            }\n            return _inherits(MediaQuery, _React$Component), _createClass(MediaQuery, [ {\n                key: \"componentWillMount\",\n                value: function() {\n                    this.updateQuery(this.props);\n                }\n            }, {\n                key: \"componentWillReceiveProps\",\n                value: function(nextProps) {\n                    this.updateQuery(nextProps);\n                }\n            }, {\n                key: \"updateQuery\",\n                value: function(props) {\n                    var values = void 0, forceStatic = !1;\n                    if (props.query ? this.query = props.query : this.query = (0, _toQuery2.default)(omit(props, excludedQueryKeys)), \n                    !this.query) throw new Error(\"Invalid or missing MediaQuery!\");\n                    props.values && (values = Object.keys(props.values).reduce(function(result, key) {\n                        return result[(0, _hyphenateStyleName2.default)(key)] = props.values[key], result;\n                    }, {}), 0 !== Object.keys(values).length && (forceStatic = !0)), this.removeMql(), \n                    this._mql = (0, _matchmediaquery2.default)(this.query, values, forceStatic), this._mql.addListener(this.updateMatches), \n                    this.updateMatches();\n                }\n            }, {\n                key: \"componentWillUpdate\",\n                value: function(_, nextState) {\n                    this.props.onBeforeChange && this.state.matches !== nextState.matches && this.props.onBeforeChange(this.state.matches);\n                }\n            }, {\n                key: \"componentDidUpdate\",\n                value: function(_, prevState) {\n                    this.props.onChange && prevState.matches !== this.state.matches && this.props.onChange(this.state.matches);\n                }\n            }, {\n                key: \"componentWillUnmount\",\n                value: function() {\n                    this.removeMql();\n                }\n            }, {\n                key: \"render\",\n                value: function() {\n                    if (\"function\" == typeof this.props.children) return this.props.children(this.state.matches);\n                    if (!1 === this.state.matches) return null;\n                    var props = omit(this.props, excludedPropKeys), hasMergeProps = Object.keys(props).length > 0, childrenCount = _react2.default.Children.count(this.props.children);\n                    return this.props.component || null == this.props.children || hasMergeProps && childrenCount > 1 ? _react2.default.createElement(this.props.component || \"div\", props, this.props.children) : hasMergeProps ? _react2.default.cloneElement(this.props.children, props) : childrenCount ? this.props.children : null;\n                }\n            } ]), MediaQuery;\n        }(_react2.default.Component);\n        MediaQuery.displayName = \"MediaQuery\", MediaQuery.defaultProps = {\n            values: {}\n        }, exports.default = MediaQuery, exports.toQuery = _toQuery2.default;\n    }, function(module, exports) {\n        module.exports = __WEBPACK_EXTERNAL_MODULE_5__;\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function emptyFunctionThatReturnsNull() {\n            return null;\n        }\n        var assign = __webpack_require__(7), ReactPropTypesSecret = __webpack_require__(1), checkPropTypes = __webpack_require__(8), printWarning = function() {};\n        printWarning = function(text) {\n            var message = \"Warning: \" + text;\n            \"undefined\" != typeof console && console.error(message);\n            try {\n                throw new Error(message);\n            } catch (x) {}\n        }, module.exports = function(isValidElement, throwOnDirectAccess) {\n            function getIteratorFn(maybeIterable) {\n                var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n                if (\"function\" == typeof iteratorFn) return iteratorFn;\n            }\n            function is(x, y) {\n                return x === y ? 0 !== x || 1 / x == 1 / y : x !== x && y !== y;\n            }\n            function PropTypeError(message) {\n                this.message = message, this.stack = \"\";\n            }\n            function createChainableTypeChecker(validate) {\n                function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n                    if (componentName = componentName || ANONYMOUS, propFullName = propFullName || propName, \n                    secret !== ReactPropTypesSecret) {\n                        if (throwOnDirectAccess) {\n                            var err = new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types\");\n                            throw err.name = \"Invariant Violation\", err;\n                        }\n                        if (\"undefined\" != typeof console) {\n                            var cacheKey = componentName + \":\" + propName;\n                            !manualPropTypeCallCache[cacheKey] && manualPropTypeWarningCount < 3 && (printWarning(\"You are manually calling a React.PropTypes validation function for the `\" + propFullName + \"` prop on `\" + componentName + \"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.\"), \n                            manualPropTypeCallCache[cacheKey] = !0, manualPropTypeWarningCount++);\n                        }\n                    }\n                    return null == props[propName] ? isRequired ? new PropTypeError(null === props[propName] ? \"The \" + location + \" `\" + propFullName + \"` is marked as required in `\" + componentName + \"`, but its value is `null`.\" : \"The \" + location + \" `\" + propFullName + \"` is marked as required in `\" + componentName + \"`, but its value is `undefined`.\") : null : validate(props, propName, componentName, location, propFullName);\n                }\n                var manualPropTypeCallCache = {}, manualPropTypeWarningCount = 0, chainedCheckType = checkType.bind(null, !1);\n                return chainedCheckType.isRequired = checkType.bind(null, !0), chainedCheckType;\n            }\n            function createPrimitiveTypeChecker(expectedType) {\n                function validate(props, propName, componentName, location, propFullName, secret) {\n                    var propValue = props[propName];\n                    if (getPropType(propValue) !== expectedType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPreciseType(propValue) + \"` supplied to `\" + componentName + \"`, expected `\" + expectedType + \"`.\");\n                    return null;\n                }\n                return createChainableTypeChecker(validate);\n            }\n            function createArrayOfTypeChecker(typeChecker) {\n                function validate(props, propName, componentName, location, propFullName) {\n                    if (\"function\" != typeof typeChecker) return new PropTypeError(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has invalid PropType notation inside arrayOf.\");\n                    var propValue = props[propName];\n                    if (!Array.isArray(propValue)) {\n                        return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPropType(propValue) + \"` supplied to `\" + componentName + \"`, expected an array.\");\n                    }\n                    for (var i = 0; i < propValue.length; i++) {\n                        var error = typeChecker(propValue, i, componentName, location, propFullName + \"[\" + i + \"]\", ReactPropTypesSecret);\n                        if (error instanceof Error) return error;\n                    }\n                    return null;\n                }\n                return createChainableTypeChecker(validate);\n            }\n            function createInstanceTypeChecker(expectedClass) {\n                function validate(props, propName, componentName, location, propFullName) {\n                    if (!(props[propName] instanceof expectedClass)) {\n                        var expectedClassName = expectedClass.name || ANONYMOUS;\n                        return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getClassName(props[propName]) + \"` supplied to `\" + componentName + \"`, expected instance of `\" + expectedClassName + \"`.\");\n                    }\n                    return null;\n                }\n                return createChainableTypeChecker(validate);\n            }\n            function createEnumTypeChecker(expectedValues) {\n                function validate(props, propName, componentName, location, propFullName) {\n                    for (var propValue = props[propName], i = 0; i < expectedValues.length; i++) if (is(propValue, expectedValues[i])) return null;\n                    return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of value `\" + propValue + \"` supplied to `\" + componentName + \"`, expected one of \" + JSON.stringify(expectedValues) + \".\");\n                }\n                return Array.isArray(expectedValues) ? createChainableTypeChecker(validate) : (printWarning(\"Invalid argument supplied to oneOf, expected an instance of array.\"), \n                emptyFunctionThatReturnsNull);\n            }\n            function createObjectOfTypeChecker(typeChecker) {\n                function validate(props, propName, componentName, location, propFullName) {\n                    if (\"function\" != typeof typeChecker) return new PropTypeError(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has invalid PropType notation inside objectOf.\");\n                    var propValue = props[propName], propType = getPropType(propValue);\n                    if (\"object\" !== propType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` supplied to `\" + componentName + \"`, expected an object.\");\n                    for (var key in propValue) if (propValue.hasOwnProperty(key)) {\n                        var error = typeChecker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n                        if (error instanceof Error) return error;\n                    }\n                    return null;\n                }\n                return createChainableTypeChecker(validate);\n            }\n            function createUnionTypeChecker(arrayOfTypeCheckers) {\n                function validate(props, propName, componentName, location, propFullName) {\n                    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n                        if (null == (0, arrayOfTypeCheckers[i])(props, propName, componentName, location, propFullName, ReactPropTypesSecret)) return null;\n                    }\n                    return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` supplied to `\" + componentName + \"`.\");\n                }\n                if (!Array.isArray(arrayOfTypeCheckers)) return printWarning(\"Invalid argument supplied to oneOfType, expected an instance of array.\"), \n                emptyFunctionThatReturnsNull;\n                for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n                    var checker = arrayOfTypeCheckers[i];\n                    if (\"function\" != typeof checker) return printWarning(\"Invalid argument supplied to oneOfType. Expected an array of check functions, but received \" + getPostfixForTypeWarning(checker) + \" at index \" + i + \".\"), \n                    emptyFunctionThatReturnsNull;\n                }\n                return createChainableTypeChecker(validate);\n            }\n            function createShapeTypeChecker(shapeTypes) {\n                function validate(props, propName, componentName, location, propFullName) {\n                    var propValue = props[propName], propType = getPropType(propValue);\n                    if (\"object\" !== propType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` supplied to `\" + componentName + \"`, expected `object`.\");\n                    for (var key in shapeTypes) {\n                        var checker = shapeTypes[key];\n                        if (checker) {\n                            var error = checker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n                            if (error) return error;\n                        }\n                    }\n                    return null;\n                }\n                return createChainableTypeChecker(validate);\n            }\n            function createStrictShapeTypeChecker(shapeTypes) {\n                function validate(props, propName, componentName, location, propFullName) {\n                    var propValue = props[propName], propType = getPropType(propValue);\n                    if (\"object\" !== propType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` supplied to `\" + componentName + \"`, expected `object`.\");\n                    var allKeys = assign({}, props[propName], shapeTypes);\n                    for (var key in allKeys) {\n                        var checker = shapeTypes[key];\n                        if (!checker) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` key `\" + key + \"` supplied to `\" + componentName + \"`.\\nBad object: \" + JSON.stringify(props[propName], null, \"  \") + \"\\nValid keys: \" + JSON.stringify(Object.keys(shapeTypes), null, \"  \"));\n                        var error = checker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n                        if (error) return error;\n                    }\n                    return null;\n                }\n                return createChainableTypeChecker(validate);\n            }\n            function isNode(propValue) {\n                switch (typeof propValue) {\n                  case \"number\":\n                  case \"string\":\n                  case \"undefined\":\n                    return !0;\n\n                  case \"boolean\":\n                    return !propValue;\n\n                  case \"object\":\n                    if (Array.isArray(propValue)) return propValue.every(isNode);\n                    if (null === propValue || isValidElement(propValue)) return !0;\n                    var iteratorFn = getIteratorFn(propValue);\n                    if (!iteratorFn) return !1;\n                    var step, iterator = iteratorFn.call(propValue);\n                    if (iteratorFn !== propValue.entries) {\n                        for (;!(step = iterator.next()).done; ) if (!isNode(step.value)) return !1;\n                    } else for (;!(step = iterator.next()).done; ) {\n                        var entry = step.value;\n                        if (entry && !isNode(entry[1])) return !1;\n                    }\n                    return !0;\n\n                  default:\n                    return !1;\n                }\n            }\n            function isSymbol(propType, propValue) {\n                return \"symbol\" === propType || (\"Symbol\" === propValue[\"@@toStringTag\"] || \"function\" == typeof Symbol && propValue instanceof Symbol);\n            }\n            function getPropType(propValue) {\n                var propType = typeof propValue;\n                return Array.isArray(propValue) ? \"array\" : propValue instanceof RegExp ? \"object\" : isSymbol(propType, propValue) ? \"symbol\" : propType;\n            }\n            function getPreciseType(propValue) {\n                if (void 0 === propValue || null === propValue) return \"\" + propValue;\n                var propType = getPropType(propValue);\n                if (\"object\" === propType) {\n                    if (propValue instanceof Date) return \"date\";\n                    if (propValue instanceof RegExp) return \"regexp\";\n                }\n                return propType;\n            }\n            function getPostfixForTypeWarning(value) {\n                var type = getPreciseType(value);\n                switch (type) {\n                  case \"array\":\n                  case \"object\":\n                    return \"an \" + type;\n\n                  case \"boolean\":\n                  case \"date\":\n                  case \"regexp\":\n                    return \"a \" + type;\n\n                  default:\n                    return type;\n                }\n            }\n            function getClassName(propValue) {\n                return propValue.constructor && propValue.constructor.name ? propValue.constructor.name : ANONYMOUS;\n            }\n            var ITERATOR_SYMBOL = \"function\" == typeof Symbol && Symbol.iterator, FAUX_ITERATOR_SYMBOL = \"@@iterator\", ANONYMOUS = \"<<anonymous>>\", ReactPropTypes = {\n                array: createPrimitiveTypeChecker(\"array\"),\n                bool: createPrimitiveTypeChecker(\"boolean\"),\n                func: createPrimitiveTypeChecker(\"function\"),\n                number: createPrimitiveTypeChecker(\"number\"),\n                object: createPrimitiveTypeChecker(\"object\"),\n                string: createPrimitiveTypeChecker(\"string\"),\n                symbol: createPrimitiveTypeChecker(\"symbol\"),\n                any: function() {\n                    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n                }(),\n                arrayOf: createArrayOfTypeChecker,\n                element: function() {\n                    function validate(props, propName, componentName, location, propFullName) {\n                        var propValue = props[propName];\n                        if (!isValidElement(propValue)) {\n                            return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPropType(propValue) + \"` supplied to `\" + componentName + \"`, expected a single ReactElement.\");\n                        }\n                        return null;\n                    }\n                    return createChainableTypeChecker(validate);\n                }(),\n                instanceOf: createInstanceTypeChecker,\n                node: function() {\n                    function validate(props, propName, componentName, location, propFullName) {\n                        return isNode(props[propName]) ? null : new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` supplied to `\" + componentName + \"`, expected a ReactNode.\");\n                    }\n                    return createChainableTypeChecker(validate);\n                }(),\n                objectOf: createObjectOfTypeChecker,\n                oneOf: createEnumTypeChecker,\n                oneOfType: createUnionTypeChecker,\n                shape: createShapeTypeChecker,\n                exact: createStrictShapeTypeChecker\n            };\n            return PropTypeError.prototype = Error.prototype, ReactPropTypes.checkPropTypes = checkPropTypes, \n            ReactPropTypes.PropTypes = ReactPropTypes, ReactPropTypes;\n        };\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function toObject(val) {\n            if (null === val || void 0 === val) throw new TypeError(\"Object.assign cannot be called with null or undefined\");\n            return Object(val);\n        }\n        /*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n        var getOwnPropertySymbols = Object.getOwnPropertySymbols, hasOwnProperty = Object.prototype.hasOwnProperty, propIsEnumerable = Object.prototype.propertyIsEnumerable;\n        module.exports = function() {\n            try {\n                if (!Object.assign) return !1;\n                var test1 = new String(\"abc\");\n                if (test1[5] = \"de\", \"5\" === Object.getOwnPropertyNames(test1)[0]) return !1;\n                for (var test2 = {}, i = 0; i < 10; i++) test2[\"_\" + String.fromCharCode(i)] = i;\n                if (\"0123456789\" !== Object.getOwnPropertyNames(test2).map(function(n) {\n                    return test2[n];\n                }).join(\"\")) return !1;\n                var test3 = {};\n                return \"abcdefghijklmnopqrst\".split(\"\").forEach(function(letter) {\n                    test3[letter] = letter;\n                }), \"abcdefghijklmnopqrst\" === Object.keys(Object.assign({}, test3)).join(\"\");\n            } catch (err) {\n                return !1;\n            }\n        }() ? Object.assign : function(target, source) {\n            for (var from, symbols, to = toObject(target), s = 1; s < arguments.length; s++) {\n                from = Object(arguments[s]);\n                for (var key in from) hasOwnProperty.call(from, key) && (to[key] = from[key]);\n                if (getOwnPropertySymbols) {\n                    symbols = getOwnPropertySymbols(from);\n                    for (var i = 0; i < symbols.length; i++) propIsEnumerable.call(from, symbols[i]) && (to[symbols[i]] = from[symbols[i]]);\n                }\n            }\n            return to;\n        };\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n            for (var typeSpecName in typeSpecs) if (typeSpecs.hasOwnProperty(typeSpecName)) {\n                var error;\n                try {\n                    if (\"function\" != typeof typeSpecs[typeSpecName]) {\n                        var err = Error((componentName || \"React class\") + \": \" + location + \" type `\" + typeSpecName + \"` is invalid; it must be a function, usually from the `prop-types` package, but received `\" + typeof typeSpecs[typeSpecName] + \"`.\");\n                        throw err.name = \"Invariant Violation\", err;\n                    }\n                    error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n                } catch (ex) {\n                    error = ex;\n                }\n                if (!error || error instanceof Error || printWarning((componentName || \"React class\") + \": type specification of \" + location + \" `\" + typeSpecName + \"` is invalid; the type checker function must return `null` or an `Error` but returned a \" + typeof error + \". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\"), \n                error instanceof Error && !(error.message in loggedTypeFailures)) {\n                    loggedTypeFailures[error.message] = !0;\n                    var stack = getStack ? getStack() : \"\";\n                    printWarning(\"Failed \" + location + \" type: \" + error.message + (null != stack ? stack : \"\"));\n                }\n            }\n        }\n        var printWarning = function() {}, ReactPropTypesSecret = __webpack_require__(1), loggedTypeFailures = {};\n        printWarning = function(text) {\n            var message = \"Warning: \" + text;\n            \"undefined\" != typeof console && console.error(message);\n            try {\n                throw new Error(message);\n            } catch (x) {}\n        }, module.exports = checkPropTypes;\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function Mql(query, values, forceStatic) {\n            function addListener(listener) {\n                mql && mql.addListener(listener);\n            }\n            function removeListener(listener) {\n                mql && mql.removeListener(listener);\n            }\n            function update(evt) {\n                self.matches = evt.matches, self.media = evt.media;\n            }\n            function dispose() {\n                mql && mql.removeListener(update);\n            }\n            var self = this;\n            if (dynamicMatch && !forceStatic) {\n                var mql = dynamicMatch.call(window, query);\n                this.matches = mql.matches, this.media = mql.media, mql.addListener(update);\n            } else this.matches = staticMatch(query, values), this.media = query;\n            this.addListener = addListener, this.removeListener = removeListener, this.dispose = dispose;\n        }\n        function matchMedia(query, values, forceStatic) {\n            return new Mql(query, values, forceStatic);\n        }\n        var staticMatch = __webpack_require__(10).match, dynamicMatch = \"undefined\" != typeof window ? window.matchMedia : null;\n        module.exports = matchMedia;\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function matchQuery(mediaQuery, values) {\n            return parseQuery(mediaQuery).some(function(query) {\n                var inverse = query.inverse, typeMatch = \"all\" === query.type || values.type === query.type;\n                if (typeMatch && inverse || !typeMatch && !inverse) return !1;\n                var expressionsMatch = query.expressions.every(function(expression) {\n                    var feature = expression.feature, modifier = expression.modifier, expValue = expression.value, value = values[feature];\n                    if (!value) return !1;\n                    switch (feature) {\n                      case \"orientation\":\n                      case \"scan\":\n                        return value.toLowerCase() === expValue.toLowerCase();\n\n                      case \"width\":\n                      case \"height\":\n                      case \"device-width\":\n                      case \"device-height\":\n                        expValue = toPx(expValue), value = toPx(value);\n                        break;\n\n                      case \"resolution\":\n                        expValue = toDpi(expValue), value = toDpi(value);\n                        break;\n\n                      case \"aspect-ratio\":\n                      case \"device-aspect-ratio\":\n                      case \"device-pixel-ratio\":\n                        expValue = toDecimal(expValue), value = toDecimal(value);\n                        break;\n\n                      case \"grid\":\n                      case \"color\":\n                      case \"color-index\":\n                      case \"monochrome\":\n                        expValue = parseInt(expValue, 10) || 1, value = parseInt(value, 10) || 0;\n                    }\n                    switch (modifier) {\n                      case \"min\":\n                        return value >= expValue;\n\n                      case \"max\":\n                        return value <= expValue;\n\n                      default:\n                        return value === expValue;\n                    }\n                });\n                return expressionsMatch && !inverse || !expressionsMatch && inverse;\n            });\n        }\n        function parseQuery(mediaQuery) {\n            return mediaQuery.split(\",\").map(function(query) {\n                query = query.trim();\n                var captures = query.match(RE_MEDIA_QUERY), modifier = captures[1], type = captures[2], expressions = captures[3] || \"\", parsed = {};\n                return parsed.inverse = !!modifier && \"not\" === modifier.toLowerCase(), parsed.type = type ? type.toLowerCase() : \"all\", \n                expressions = expressions.match(/\\([^\\)]+\\)/g) || [], parsed.expressions = expressions.map(function(expression) {\n                    var captures = expression.match(RE_MQ_EXPRESSION), feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n                    return {\n                        modifier: feature[1],\n                        feature: feature[2],\n                        value: captures[2]\n                    };\n                }), parsed;\n            });\n        }\n        function toDecimal(ratio) {\n            var numbers, decimal = Number(ratio);\n            return decimal || (numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/), decimal = numbers[1] / numbers[2]), \n            decimal;\n        }\n        function toDpi(resolution) {\n            var value = parseFloat(resolution);\n            switch (String(resolution).match(RE_RESOLUTION_UNIT)[1]) {\n              case \"dpcm\":\n                return value / 2.54;\n\n              case \"dppx\":\n                return 96 * value;\n\n              default:\n                return value;\n            }\n        }\n        function toPx(length) {\n            var value = parseFloat(length);\n            switch (String(length).match(RE_LENGTH_UNIT)[1]) {\n              case \"em\":\n              case \"rem\":\n                return 16 * value;\n\n              case \"cm\":\n                return 96 * value / 2.54;\n\n              case \"mm\":\n                return 96 * value / 2.54 / 10;\n\n              case \"in\":\n                return 96 * value;\n\n              case \"pt\":\n                return 72 * value;\n\n              case \"pc\":\n                return 72 * value / 12;\n\n              default:\n                return value;\n            }\n        }\n        exports.match = matchQuery, exports.parse = parseQuery;\n        var RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i, RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/, RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/, RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/, RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n    }, function(module, exports, __webpack_require__) {\n        \"use strict\";\n        function _interopRequireDefault(obj) {\n            return obj && obj.__esModule ? obj : {\n                default: obj\n            };\n        }\n        function keyVal(k, v) {\n            var realKey = (0, _hyphenateStyleName2.default)(k);\n            return \"number\" == typeof v && (v += \"px\"), !0 === v ? k : !1 === v ? negate(k) : \"(\" + realKey + \": \" + v + \")\";\n        }\n        function join(conds) {\n            return conds.join(\" and \");\n        }\n        Object.defineProperty(exports, \"__esModule\", {\n            value: !0\n        }), exports.default = function(obj) {\n            var rules = [];\n            return Object.keys(_mediaQuery2.default.all).forEach(function(k) {\n                var v = obj[k];\n                null != v && rules.push(keyVal(k, v));\n            }), join(rules);\n        };\n        var _hyphenateStyleName = __webpack_require__(2), _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName), _mediaQuery = __webpack_require__(3), _mediaQuery2 = _interopRequireDefault(_mediaQuery), negate = function(cond) {\n            return \"not \" + cond;\n        };\n        module.exports = exports.default;\n    } ]);\n});\n//# sourceMappingURL=react-responsive.js.map","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar isServer = typeof window === \"undefined\";\nvar isClient = !isServer;\nvar WINDOW = isClient ? window : null;\nvar DOCUMENT = isClient ? document : null;\n\nexports.default = {\n  isServer: isServer,\n  isClient: isClient,\n  window: WINDOW,\n  document: DOCUMENT\n};\nexports.isServer = isServer;\nexports.isClient = isClient;\nexports.window = WINDOW;\nexports.document = DOCUMENT;","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Ebrush%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='brush' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cpath d='M9.50062663,11.4981734 L10.4995734,11.4981734 L10.4995734,14.4990134 L9.49962669,14.4990134 L9.49962669,11.4991734 L6.49978668,11.4991734 L6.49978668,10.4992267 L9.50062663,10.4992267 L9.50062663,11.4981734 Z M13.4992134,3.5 L16.5000533,3.5 L16.5000533,4.49994667 L17.5,4.49994667 L17.5,7.49978668 L16.5000533,7.49978668 L16.5000533,8.4987334 L15.4991067,8.4987334 L15.4991067,9.49868007 L14.49916,9.49868007 L14.49916,10.4986267 L12.4992667,10.4986267 L12.4992667,11.4985734 L11.49932,11.4985734 L11.49932,10.4986267 L10.4993734,10.4986267 L10.4993734,9.49868007 L9.4994267,9.49868007 L9.4994267,7.49978668 L10.4993734,7.49978668 L10.4993734,6.49984001 L11.49932,6.49984001 L11.49932,5.49989334 L12.4992667,5.49989334 L12.4992667,4.49994667 L13.4992134,4.49994667 L13.4992134,3.5 Z M5.49954002,11.4987734 L6.49948669,11.4987734 L6.49948669,12.49972 L7.50043331,12.49972 L7.50043331,13.4996667 L8.50037998,13.4996667 L8.50037998,14.4996134 L9.50032665,14.4996134 L9.50032665,15.49956 L8.50037998,15.49956 L8.50037998,16.4985067 L4.49959336,16.4985067 L4.49959336,15.49956 L3.49964669,15.49956 L3.49964669,13.4996667 L5.49954002,13.4996667 L5.49954002,11.4987734 Z M2.5,13.4990667 L2.5,12.49912 L3.49994667,12.49912 L3.49994667,13.4990667 L2.5,13.4990667 Z' id='Combined-Shape' fill='%23575E75'%3E%3C/path%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eline%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='line' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cpath d='M12,7.998 L12,6 L14,6 L14,8 L12.002,8 L12.002,10 L10,10 L10,7.998 L12,7.998 Z M8,12 L8,10 L10,10 L10,12 L8,12 Z M14,6 L14,4 L16,4 L16,6 L14,6 Z M4,16 L4,14 L6,14 L6,16 L4,16 Z M6,14 L6,12 L8,12 L8,14 L6,14 Z' id='Combined-Shape' fill='%23575E75'%3E%3C/path%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eoval%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='oval' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cpolygon id='Page-1' fill='%23575E75' points='6.66666667 4 6.66666667 5.33333333 5.33333333 5.33333333 5.33333333 6.66666667 4 6.66666667 4 13.3333333 5.33333333 13.3333333 5.33333333 14.6666667 6.66666667 14.6666667 6.66666667 16 13.3333333 16 13.3333333 14.6666667 14.6666667 14.6666667 14.6666667 13.3333333 16 13.3333333 16 6.66666667 14.6666667 6.66666667 14.6666667 5.33333333 13.3333333 5.33333333 13.3333333 4'%3E%3C/polygon%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Erectange%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='rectange' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Crect id='rectangle-icon' fill='%23575E75' x='4' y='4' width='12' height='12'%3E%3C/rect%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eeraser%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='eraser' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cpath d='M9.30022904,14.1996946 L7.89984723,14.1996946 L7.89984723,12.7997327 L6.49988541,12.7997327 L6.49988541,11.3997709 L5.09992359,11.3997709 L5.09992359,9.99840913 L3.69996177,9.99840913 L3.69996177,8.59984728 L2.29999995,8.59984728 L2.29999995,7.19988546 L3.69996177,7.19988546 L3.69996177,5.79992364 L5.09992359,5.79992364 L5.09992359,4.39996182 L6.49988541,4.39996182 L6.49988541,3 L7.89984723,3 L7.89984723,4.39996182 L9.30120901,4.39996182 L9.30120901,5.79992364 L10.7011708,5.79992364 L10.7011708,7.19988546 L12.1011326,7.19988546 L12.1011326,8.59984728 L13.4996945,8.59984728 L13.4996945,9.99840913 L12.1011326,9.99840913 L12.1011326,11.3997709 L10.7011708,11.3997709 L10.7011708,12.7997327 L9.30120901,12.7997327 L9.30120901,14.1995546 L10.7001909,14.1995546 L10.7001909,15.5995164 L9.30022904,15.5995164 L9.30022904,14.1996946 Z M10.7001909,16.9994782 L10.7001909,15.5995164 L14.9000763,15.5995164 L14.9000763,16.9994782 L10.7001909,16.9994782 Z M14.9000763,15.5995164 L14.9000763,14.1995546 L16.3000381,14.1995546 L16.3000381,15.5995164 L14.9000763,15.5995164 Z M14.9000763,12.7995927 L14.9000763,11.3996309 L16.3000381,11.3996309 L16.3000381,12.7995927 L14.9000763,12.7995927 Z M16.3000381,14.1995546 L16.3000381,12.7995927 L17.7,12.7995927 L17.7,14.1995546 L16.3000381,14.1995546 Z M13.5001145,11.3996309 L13.5001145,9.99826914 L14.9000763,9.99826914 L14.9000763,11.3996309 L13.5001145,11.3996309 Z' id='Combined-Shape' fill='%23575E75'%3E%3C/path%3E %3C/g%3E %3C/svg%3E\"","/* DO NOT EDIT\n@todo This file is copied from GUI and should be pulled out into a shared library.\nSee https://github.com/LLK/scratch-paint/issues/13 */\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport stylePropType from 'react-style-proptype';\n\nconst getRandomColor = (function () {\n    // In \"DEBUG\" mode this is used to output a random background color for each\n    // box. The function gives the same \"random\" set for each seed, allowing re-\n    // renders of the same content to give the same random display.\n    const random = (function (seed) {\n        let mW = seed;\n        let mZ = 987654321;\n        const mask = 0xffffffff;\n        return function () {\n            mZ = ((36969 * (mZ & 65535)) + (mZ >> 16)) & mask;\n            mW = ((18000 * (mW & 65535)) + (mW >> 16)) & mask;\n            let result = ((mZ << 16) + mW) & mask;\n            result /= 4294967296;\n            return result + 1;\n        };\n    }(601));\n    return function () {\n        const r = Math.max(parseInt(random() * 100, 10) % 256, 1);\n        const g = Math.max(parseInt(random() * 100, 10) % 256, 1);\n        const b = Math.max(parseInt(random() * 100, 10) % 256, 1);\n        return `rgb(${r},${g},${b})`;\n    };\n}());\n\nconst Box = props => {\n    const {\n        alignContent,\n        alignItems,\n        alignSelf,\n        basis,\n        children,\n        className,\n        componentRef,\n        direction,\n        element,\n        grow,\n        height,\n        justifyContent,\n        width,\n        wrap,\n        shrink,\n        style,\n        ...componentProps\n    } = props;\n    return React.createElement(element, {\n        className: className,\n        ref: componentRef,\n        style: Object.assign(\n            {\n                alignContent: alignContent,\n                alignItems: alignItems,\n                alignSelf: alignSelf,\n                flexBasis: basis,\n                flexDirection: direction,\n                flexGrow: grow,\n                flexShrink: shrink,\n                flexWrap: wrap,\n                justifyContent: justifyContent,\n                width: width,\n                height: height\n            },\n            process.env.DEBUG ? { // eslint-disable-line no-undef\n                backgroundColor: getRandomColor(),\n                outline: `1px solid black`\n            } : {},\n            style\n        ),\n        ...componentProps\n    }, children);\n};\nBox.propTypes = {\n    /** Defines how the browser distributes space between and around content items vertically within this box. */\n    alignContent: PropTypes.oneOf([\n        'flex-start', 'flex-end', 'center', 'space-between', 'space-around', 'stretch'\n    ]),\n    /** Defines how the browser distributes space between and around flex items horizontally within this box. */\n    alignItems: PropTypes.oneOf([\n        'flex-start', 'flex-end', 'center', 'baseline', 'stretch'\n    ]),\n    /** Specifies how this box should be aligned inside of its container (requires the container to be flexable). */\n    alignSelf: PropTypes.oneOf([\n        'auto', 'flex-start', 'flex-end', 'center', 'baseline', 'stretch'\n    ]),\n    /** Specifies the initial length of this box */\n    basis: PropTypes.oneOfType([\n        PropTypes.number,\n        PropTypes.oneOf(['auto'])\n    ]),\n    /** Specifies the the HTML nodes which will be child elements of this box. */\n    children: PropTypes.node,\n    /** Specifies the class name that will be set on this box */\n    className: PropTypes.string,\n    /**\n     * A callback function whose first parameter is the underlying dom elements.\n     * This call back will be executed immediately after the component is mounted or unmounted\n     */\n    componentRef: PropTypes.func,\n    /** https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction */\n    direction: PropTypes.oneOf([\n        'row', 'row-reverse', 'column', 'column-reverse'\n    ]),\n    /** Specifies the type of HTML element of this box. Defaults to div. */\n    element: PropTypes.string,\n    /** Specifies the flex grow factor of a flex item. */\n    grow: PropTypes.number,\n    /** The height in pixels (if specified as a number) or a string if different units are required. */\n    height: PropTypes.oneOfType([\n        PropTypes.number,\n        PropTypes.string\n    ]),\n    /** https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content */\n    justifyContent: PropTypes.oneOf([\n        'flex-start', 'flex-end', 'center', 'space-between', 'space-around'\n    ]),\n    /** Specifies the flex shrink factor of a flex item. */\n    shrink: PropTypes.number,\n    /** An object whose keys are css property names and whose values correspond the the css property. */\n    style: stylePropType,\n    /** The width in pixels (if specified as a number) or a string if different units are required. */\n    width: PropTypes.oneOfType([\n        PropTypes.number,\n        PropTypes.string\n    ]),\n    /** How whitespace should wrap within this block. */\n    wrap: PropTypes.oneOf([\n        'nowrap', 'wrap', 'wrap-reverse'\n    ])\n};\nBox.defaultProps = {\n    element: 'div',\n    style: {}\n};\nexport default Box;\n","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Ebrush%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-linecap='round' stroke-linejoin='round'%3E %3Cg id='brush' stroke='%23575E75' stroke-width='0.5' fill='%23575E75'%3E %3Cpath d='M12.5787225,11.2102026 C11.6196284,12.1692967 10.9129274,12.6614634 10.3576624,12.8507583 C10.1936069,12.3459719 9.91597437,11.8790445 9.52476494,11.4878351 C9.12093585,11.0966257 8.65400846,10.8189932 8.14922209,10.6423179 C8.35113664,10.0870529 8.84330335,9.38035203 9.78977778,8.43387759 C12.0613164,6.14971929 16.0996074,3.36077461 16.8694066,4.13057382 C17.6392058,4.90037303 14.8502611,8.93866396 12.5787225,11.2102026 Z M8.39124334,15.4120104 C8.01569197,15.7748657 7.53110955,15.9621459 7.04652713,15.9855559 L7.04652713,15.9972609 L6.92538153,15.9972609 C3.67867934,16.114311 2.26127577,12.4389379 3.37581533,12.8252032 C4.84167714,13.3285186 5.43650205,12.602808 5.45951972,12.579398 C6.27119527,11.8068673 7.57956779,11.8068673 8.39124334,12.579398 C9.20291889,13.3636337 9.20291889,14.6394798 8.39124334,15.4120104 Z' id='bursh-icon'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eeraser%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='eraser' fill='%23575E75'%3E %3Cpath d='M13.5370061,14.8291597 L10.9660545,14.8291597 L8.3016138,12.164719 L11.1686144,9.29771842 L15.1263216,13.2554257 L13.5370061,14.8291597 Z M16.7779633,12.6944908 L11.1686144,7.10072343 L8.3016138,4.23372287 C8.00556483,3.92209238 7.50695604,3.92209238 7.19532554,4.23372287 L3.22203673,8.20701169 C2.92598776,8.50306066 2.92598776,9.00166945 3.22203673,9.29771842 L6.10461881,12.164719 L10.0934891,16.1535893 C10.2337229,16.3094046 10.4362827,16.3873122 10.6388425,16.3873122 L13.8642181,16.3873122 C14.066778,16.3873122 14.2693378,16.3094046 14.4095715,16.1535893 L16.7779633,13.8007791 C17.0740122,13.5047301 17.0740122,13.0061213 16.7779633,12.6944908 L16.7779633,12.6944908 Z' id='eraser-icon'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","// http://stackoverflow.com/questions/33505992/babel-6-changes-how-it-exports-default\n\nconst lib = require(\"./build\")\nmodule.exports = lib.default\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./button.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./tool-select-base.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./slider.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./labeled-icon-button.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./label.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./input.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _isInBrowser = require('is-in-browser');\n\nvar _isInBrowser2 = _interopRequireDefault(_isInBrowser);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar js = ''; /**\n              * Export javascript style and css style vendor prefixes.\n              * Based on \"transform\" support test.\n              */\n\nvar css = '';\n\n// We should not do anything if required serverside.\nif (_isInBrowser2['default']) {\n  // Order matters. We need to check Webkit the last one because\n  // other vendors use to add Webkit prefixes to some properties\n  var jsCssMap = {\n    Moz: '-moz-',\n    // IE did it wrong again ...\n    ms: '-ms-',\n    O: '-o-',\n    Webkit: '-webkit-'\n  };\n  var style = document.createElement('p').style;\n  var testProp = 'Transform';\n\n  for (var key in jsCssMap) {\n    if (key + testProp in style) {\n      js = key;\n      css = jsCssMap[key];\n      break;\n    }\n  }\n}\n\n/**\n * Vendor prefix string for the current browser.\n *\n * @type {{js: String, css: String}}\n * @api public\n */\nexports['default'] = { js: js, css: css };","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexport var isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\n\nexport default isBrowser;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.clientOnly = exports.noop = exports.equalRecords = exports.find = undefined;\n\nvar _platform = require(\"./platform\");\n\nvar find = function find(f, xs) {\n  return xs.reduce(function (b, x) {\n    return b ? b : f(x) ? x : null;\n  }, null);\n};\n\nvar equalRecords = function equalRecords(o1, o2) {\n  for (var key in o1) {\n    if (o1[key] !== o2[key]) return false;\n  }return true;\n};\n\nvar noop = function noop() {\n  return undefined;\n};\n\nvar clientOnly = function clientOnly(f) {\n  return _platform.isClient ? f : noop;\n};\n\nexports.default = {\n  find: find,\n  equalRecords: equalRecords,\n  noop: noop,\n  clientOnly: clientOnly\n};\nexports.find = find;\nexports.equalRecords = equalRecords;\nexports.noop = noop;\nexports.clientOnly = clientOnly;","function _interopRequireDefault(e) {\n  return e && e.__esModule ? e : {\n    \"default\": e\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","var Minilog = require('../common/minilog.js');\n\nvar oldEnable = Minilog.enable,\n    oldDisable = Minilog.disable,\n    isChrome = (typeof navigator != 'undefined' && /chrome/i.test(navigator.userAgent)),\n    console = require('./console.js');\n\n// Use a more capable logging backend if on Chrome\nMinilog.defaultBackend = (isChrome ? console.minilog : console);\n\n// apply enable inputs from localStorage and from the URL\nif(typeof window != 'undefined') {\n  try {\n    Minilog.enable(JSON.parse(window.localStorage['minilogSettings']));\n  } catch(e) {}\n  if(window.location && window.location.search) {\n    var match = RegExp('[?&]minilog=([^&]*)').exec(window.location.search);\n    match && Minilog.enable(decodeURIComponent(match[1]));\n  }\n}\n\n// Make enable also add to localStorage\nMinilog.enable = function() {\n  oldEnable.call(Minilog, true);\n  try { window.localStorage['minilogSettings'] = JSON.stringify(true); } catch(e) {}\n  return this;\n};\n\nMinilog.disable = function() {\n  oldDisable.call(Minilog);\n  try { delete window.localStorage.minilogSettings; } catch(e) {}\n  return this;\n};\n\nexports = module.exports = Minilog;\n\nexports.backends = {\n  array: require('./array.js'),\n  browser: Minilog.defaultBackend,\n  localStorage: require('./localstorage.js'),\n  jQuery: require('./jquery_simple.js')\n};\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n  root = self;\n} else if (typeof window !== 'undefined') {\n  root = window;\n} else if (typeof global !== 'undefined') {\n  root = global;\n} else if (typeof module !== 'undefined') {\n  root = module;\n} else {\n  root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./input-group.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Esend-back%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='send-back'%3E %3Cg transform='translate(10.000000, 10.000000) rotate(180.000000) translate(-10.000000, -10.000000) translate(2.000000, 3.000000)'%3E %3Cpath d='M12.3476736,5.92549723 L10.2407376,5.92549723 L9.33601611,12.7635981 C9.23807603,13.5476661 8.54025295,14.1003698 7.78121732,13.9846876 C7.16909181,13.8947126 6.69163391,13.3805697 6.6169546,12.7635981 L5.7122331,5.92549723 L3.65426714,5.92549723 C3.0678509,5.92549723 2.78504892,5.19284356 3.190276,4.76867564 L7.53514286,0.192803597 C7.79223558,-0.0642678658 8.20970517,-0.0642678658 8.45333113,0.192803597 L12.812889,4.76867564 C13.2168918,5.19284356 12.9230716,5.92549723 12.3476736,5.92549723' id='Fill-1' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M12,8 L16,8' id='Stroke-6' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M12,10 L15,10' id='Stroke-6-Copy' stroke='%23575E75' opacity='0.75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M12,12 L14,12' id='Stroke-6-Copy-2' stroke='%23575E75' opacity='0.5' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M0,8 L4,8' id='Stroke-10' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M1,10 L4,10' id='Stroke-10-Copy' stroke='%23575E75' opacity='0.75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M2,12 L4,12' id='Stroke-10-Copy-2' stroke='%23575E75' opacity='0.5' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Esend-front%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='send-front'%3E %3Cg transform='translate(2.000000, 3.000000)'%3E %3Cpath d='M12.3476736,5.92549723 L10.2407376,5.92549723 L9.33601611,12.7635981 C9.23807603,13.5476661 8.54025295,14.1003698 7.78121732,13.9846876 C7.16909181,13.8947126 6.69163391,13.3805697 6.6169546,12.7635981 L5.7122331,5.92549723 L3.65426714,5.92549723 C3.0678509,5.92549723 2.78504892,5.19284356 3.190276,4.76867564 L7.53514286,0.192803597 C7.79223558,-0.0642678658 8.20970517,-0.0642678658 8.45333113,0.192803597 L12.812889,4.76867564 C13.2168918,5.19284356 12.9230716,5.92549723 12.3476736,5.92549723' id='Fill-1' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M12,8 L16,8' id='Stroke-6' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M12,10 L15,10' id='Stroke-6-Copy' stroke='%23575E75' opacity='0.75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M12,12 L14,12' id='Stroke-6-Copy-2' stroke='%23575E75' opacity='0.5' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M0,8 L4,8' id='Stroke-10' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M1,10 L4,10' id='Stroke-10-Copy' stroke='%23575E75' opacity='0.75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M2,12 L4,12' id='Stroke-10-Copy-2' stroke='%23575E75' opacity='0.5' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Edelete%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='delete' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='Delete-Icon' transform='translate(2.000000, 1.500000)' fill='%23855CD6' fill-rule='nonzero'%3E %3Cpath d='M2,3.25 L14,3.25 C14.4437164,3.25 14.7904293,3.63311343 14.7462779,4.07462779 L13.6363275,15.1741315 C13.5468672,16.0687347 12.7940775,16.75 11.8950124,16.75 L4.10498756,16.75 C3.20592253,16.75 2.45313279,16.0687347 2.36367248,15.1741315 L1.25372211,4.07462779 C1.20957067,3.63311343 1.55628356,3.25 2,3.25 Z M8.75,12 L8.75,7 C8.75,6.58578644 8.41421356,6.25 8,6.25 C7.58578644,6.25 7.25,6.58578644 7.25,7 L7.25,12 C7.25,12.4142136 7.58578644,12.75 8,12.75 C8.41421356,12.75 8.75,12.4142136 8.75,12 Z M11.25,12 L11.25,7 C11.25,6.58578644 10.9142136,6.25 10.5,6.25 C10.0857864,6.25 9.75,6.58578644 9.75,7 L9.75,12 C9.75,12.4142136 10.0857864,12.75 10.5,12.75 C10.9142136,12.75 11.25,12.4142136 11.25,12 Z M6.25,12 L6.25,7 C6.25,6.58578644 5.91421356,6.25 5.5,6.25 C5.08578644,6.25 4.75,6.58578644 4.75,7 L4.75,12 C4.75,12.4142136 5.08578644,12.75 5.5,12.75 C5.91421356,12.75 6.25,12.4142136 6.25,12 Z M1.5,4 L14.5,4 L1.5,4 Z M1.5,3 L14.5,3 C15.0522847,3 15.5,3.44771525 15.5,4 C15.5,4.55228475 15.0522847,5 14.5,5 L1.5,5 C0.94771525,5 0.5,4.55228475 0.5,4 C0.5,3.44771525 0.94771525,3 1.5,3 Z M9.25,3.25 L9.25,2 C9.25,1.86192881 9.13807119,1.75 9,1.75 L7,1.75 C6.86192881,1.75 6.75,1.86192881 6.75,2 L6.75,3.25 L9.25,3.25 Z M7,0.25 L9,0.25 C9.96649831,0.25 10.75,1.03350169 10.75,2 L10.75,4.75 L5.25,4.75 L5.25,2 C5.25,1.03350169 6.03350169,0.25 7,0.25 Z' id='Combined-Shape'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 47.1 (45422) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Ebitmap%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='bitmap' fill='%23FFFFFF'%3E %3Cpath d='M4,3 L16,3 L16,4 L4,4 L4,3 Z M2,5 L3,5 L3,13 L2,13 L2,5 Z M17,5 L18,5 L18,13 L17,13 L17,5 Z M2,13 L18,13 L18,15 L2,15 L2,13 Z M4,12 L16,12 L16,13 L4,13 L4,12 Z M5,11 L8,11 L8,12 L5,12 L5,11 Z M6,10 L7,10 L7,11 L6,11 L6,10 Z M9,11 L16,11 L16,12 L9,12 L9,11 Z M10,10 L15,10 L15,11 L10,11 L10,10 Z M11,9 L14,9 L14,10 L11,10 L11,9 Z M12,8 L13,8 L13,9 L12,9 L12,8 Z M16,12 L17,12 L17,13 L16,13 L16,12 Z M3,15 L17,15 L17,16 L3,16 L3,15 Z M3,4 L4,4 L4,5 L3,5 L3,4 Z M16,4 L17,4 L17,5 L16,5 L16,4 Z M4,16 L16,16 L16,17 L4,17 L4,16 Z' id='Combined-Shape'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var hex = {\n  black: '#000',\n  red: '#c23621',\n  green: '#25bc26',\n  yellow: '#bbbb00',\n  blue:  '#492ee1',\n  magenta: '#d338d3',\n  cyan: '#33bbc8',\n  gray: '#808080',\n  purple: '#708'\n};\nfunction color(fg, isInverse) {\n  if(isInverse) {\n    return 'color: #fff; background: '+hex[fg]+';';\n  } else {\n    return 'color: '+hex[fg]+';';\n  }\n}\n\nmodule.exports = color;\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nexports.extend = extend;\nvar hop = Object.prototype.hasOwnProperty;\n\nfunction extend(obj) {\n    var sources = Array.prototype.slice.call(arguments, 1),\n        i, len, source, key;\n\n    for (i = 0, len = sources.length; i < len; i += 1) {\n        source = sources[i];\n        if (!source) { continue; }\n\n        for (key in source) {\n            if (hop.call(source, key)) {\n                obj[key] = source[key];\n            }\n        }\n    }\n\n    return obj;\n}\nexports.hop = hop;\n\n//# sourceMappingURL=utils.js.map","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return module.exports = _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  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\nvar _reactRedux = require(\"react-redux\");\nvar _reactIntl = require(\"react-intl\");\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction defaultSelector(state) {\n  var intl = state.intl;\n  return _objectSpread({\n    key: intl.locale\n  }, intl);\n}\nvar mapStateToProps = function mapStateToProps(state, _ref) {\n  var _ref$intlSelector = _ref.intlSelector,\n    intlSelector = _ref$intlSelector === void 0 ? defaultSelector : _ref$intlSelector;\n  return intlSelector(state);\n};\nvar _default = exports.default = (0, _reactRedux.connect)(mapStateToProps)(_reactIntl.IntlProvider);","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","/* (ignored) */","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../node_modules/postcss-loader/src/index.js??postcss!./paper-canvas.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Efill%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='fill' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cpath d='M10.7000634,5.80137446 L9.29979614,5.80137446 L9.29979614,8.59994895 L7.89980891,8.59994895 L7.89980891,4.39998724 L6.49982167,4.39998724 L6.49982167,5.80137446 L5.09983443,5.80137446 L5.09983443,3 L9.29979614,3 L9.29979614,4.39998724 L10.7011834,4.39998724 L10.7011834,5.80123446 L12.1000506,5.80123446 L12.1000506,7.2012217 L10.7000634,7.2012217 L10.7000634,5.80137446 Z M5.10011443,8.60120894 L5.10011443,7.2012217 L6.50010167,7.2012217 L6.50010167,8.60120894 L5.10011443,8.60120894 Z M16.3000123,16.9997324 L16.3000123,10.0011962 L17.6999996,10.0011962 L17.6999996,16.9997324 L16.3000123,16.9997324 Z M12.1003306,7.20080171 L13.5003179,7.20080171 L13.5003179,8.60078894 L16.3002923,8.60078894 L16.3002923,10.0007762 L14.9003051,10.0007762 L14.9003051,11.3573638 L13.5003179,11.3573638 L13.5003179,12.758751 L12.1003306,12.758751 L12.1003306,14.1587383 L10.7003434,14.1587383 L10.7003434,15.5587255 L9.29895615,15.5587255 L9.29895615,16.9587128 L7.89896891,16.9587128 L7.89896891,15.5587255 L6.49898168,15.5587255 L6.49898168,14.1587383 L5.10039442,14.1587383 L5.10039442,12.758751 L3.70040719,12.758751 L3.70040719,11.3573638 L6.49898168,11.3573638 L6.49898168,11.3713637 L9.29895615,11.3713637 L9.29895615,10.0007762 L12.1003306,10.0007762 L12.1003306,7.20080171 Z M3.69998719,8.60064895 L5.09997443,8.60064895 L5.09997443,10.0006362 L3.69998719,10.0006362 L3.69998719,11.3572238 L2.29999995,11.3572238 L2.29999995,9.95723658 L3.69998719,9.95723658 L3.69998719,8.60064895 Z' id='Combined-Shape' fill='%23575E75'%3E%3C/path%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Emarquee%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='marquee' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cpath d='M4.5,4.18186116 L4.5,3 L5.68186116,3 L5.68186116,4.18186116 L4.5,4.18186116 Z M11.591167,4.18186116 L11.591167,3 L12.7730281,3 L12.7730281,4.18186116 L11.591167,4.18186116 Z M4.5,13.6367504 L4.5,12.4537074 L5.68186116,12.4537074 L5.68186116,13.6367504 L4.5,13.6367504 Z M9.22697189,6.54570166 L10.4100149,6.54570166 L10.4100149,7.72756282 L11.5918761,7.72756282 L11.5918761,8.90942398 L12.7737372,8.90942398 L12.7737372,10.0912851 L13.9555984,10.0912851 L13.9555984,11.2731463 L15.1362777,11.2731463 L15.1362777,12.4538256 L16.3181388,12.4538256 L16.3181388,13.6368686 L17.5,13.6368686 L17.5,14.8187298 L12.7737372,14.8187298 L12.7737372,16.0005909 L11.5918761,16.0005909 L11.5918761,17.1824521 L10.4100149,17.1824521 L10.4100149,18.3643132 L9.22697189,18.3643132 L9.22697189,6.54570166 Z M13.9548893,8.90930579 L13.9548893,7.72744463 L15.1367504,7.72744463 L15.1367504,8.90930579 L13.9548893,8.90930579 Z M6.86372232,4.18186116 L6.86372232,3 L8.04558348,3 L8.04558348,4.18186116 L6.86372232,4.18186116 Z M4.5,11.2730281 L4.5,10.091167 L5.68186116,10.091167 L5.68186116,11.2730281 L4.5,11.2730281 Z M13.9548893,4.18186116 L13.9548893,3 L15.1367504,3 L15.1367504,4.18186116 L13.9548893,4.18186116 Z M9.22744463,4.18186116 L9.22744463,3 L10.4104877,3 L10.4104877,4.18186116 L9.22744463,4.18186116 Z M4.5,8.90930579 L4.5,7.72744463 L5.68186116,7.72744463 L5.68186116,8.90930579 L4.5,8.90930579 Z M4.5,6.54558348 L4.5,5.36372232 L5.68186116,5.36372232 L5.68186116,6.54558348 L4.5,6.54558348 Z M13.9548893,6.54558348 L13.9548893,5.36372232 L15.1367504,5.36372232 L15.1367504,6.54558348 L13.9548893,6.54558348 Z M6.86372232,13.6367504 L6.86372232,12.4537074 L8.04558348,12.4537074 L8.04558348,13.6367504 L6.86372232,13.6367504 Z' id='Combined-Shape' fill='%23575E75'%3E%3C/path%3E %3C/g%3E %3C/svg%3E\"","var properties = require('./css-properties.js');\nvar PropTypes = require('prop-types');\n\nmodule.exports = function(props, propName, componentName) {\n  var styles = props[propName];\n  if (!styles) {\n    return;\n  }\n\n  var failures = [];\n  Object.keys(styles).forEach(function(styleKey){\n    if (properties.indexOf(styleKey) === -1) {\n      failures.push(styleKey);\n    }\n  });\n  if (failures.length) {\n    throw new Error('Prop ' + propName + ' passed to ' + componentName + '. Has invalid keys ' + failures.join(', '));\n  }\n};\n\nmodule.exports.isRequired = function(props, propName, componentName) {\n  if (!props[propName]) {\n    throw new Error('Prop ' + propName + ' passed to ' + componentName + ' is required');\n  }\n  return module.exports(props, propName, componentName);\n};\n\nmodule.exports.supportingArrays = PropTypes.oneOfType([\n  PropTypes.arrayOf(module.exports),\n  module.exports\n]);\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./button-group.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eeye-dropper%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='eye-dropper' fill='%23575E75'%3E %3Cpath d='M9.15334605,12.4824962 C9.03394044,12.6188737 8.88041895,12.7041096 8.60749186,12.7722983 C7.90811618,12.925723 7.24285639,13.5564688 7.03816107,14.2554033 C6.9699293,14.4770167 6.74817603,14.7156773 6.50936483,14.8350076 L4.73533871,15.6703196 C4.650049,15.704414 4.58181722,15.7214612 4.54770134,15.7214612 L4.27477424,15.4657534 C4.27477424,15.4487062 4.27477424,15.3805175 4.32594807,15.2611872 L5.1617873,13.4712329 C5.26413496,13.2496195 5.50294617,13.0280061 5.74175737,12.9598174 C6.44113305,12.738204 7.07227696,12.090411 7.25991433,11.2380518 C7.29403022,11.1016743 7.37931994,10.9652968 7.49872554,10.8289193 L11.4391105,6.90806697 L13.093731,8.56164384 L9.15334605,12.4824962 Z M16.6076673,5.28858447 C16.8635365,5.03287671 17,4.67488584 17,4.33394216 C17,3.99299848 16.8635365,3.65205479 16.6076673,3.39634703 C16.0788711,2.86788432 15.2430318,2.86788432 14.7142356,3.39634703 L13.2301945,4.87945205 L13.0596151,4.70898021 L12.5137609,4.16347032 C12.172602,3.82252664 11.6096899,3.82252664 11.268531,4.16347032 L10.6032712,4.81126332 C10.2791703,5.152207 10.2621124,5.64657534 10.5520974,5.98751903 L6.59465454,9.92541857 C6.30466951,10.2322679 6.09997418,10.5902588 5.98056858,11.1016743 C5.92939475,11.357382 5.63940971,11.6471842 5.36648262,11.7324201 C4.80357049,11.9028919 4.2577163,12.3802131 4.00184715,12.9427702 L3.16600792,14.7156773 C2.89308083,15.3123288 2.9613126,15.9260274 3.33658736,16.3181126 L3.67774623,16.6590563 C3.89949949,16.8806697 4.20654247,17 4.54770134,17 C4.7694546,17 5.02532375,16.9318113 5.26413496,16.8295282 L7.05521901,15.9942161 C7.61813114,15.7214612 8.09575356,15.1929985 8.26633299,14.6304414 C8.33456477,14.3576865 8.64160775,14.0678843 9.05099839,13.9826484 C9.4092152,13.8974125 9.76743201,13.6928463 10.057417,13.385997 L14.0148599,9.44809741 C14.3560188,9.73789954 14.8677571,9.70380518 15.1748001,9.37990868 L15.8400599,8.73211568 C16.1812187,8.39117199 16.1812187,7.82861492 15.8400599,7.48767123 L15.2600898,6.90806697 L15.1236262,6.7716895 L16.6076673,5.28858447 Z' id='eye-dropper-icon'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Efill-horz-gradient-enabled%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E %3ClinearGradient x1='100%25' y1='50%25' x2='0%25' y2='50%25' id='linearGradient-1'%3E %3Cstop stop-color='%23FFFFFF' offset='0%25'%3E%3C/stop%3E %3Cstop stop-color='%23855CD6' offset='100%25'%3E%3C/stop%3E %3C/linearGradient%3E %3C/defs%3E %3Cg id='fill-horz-gradient-enabled' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-opacity='0.15'%3E %3Crect id='Horizontal' stroke='%23000000' fill='url(%23linearGradient-1)' x='0.5' y='0.5' width='19' height='19' rx='4'%3E%3C/rect%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 51 (57462) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Efill-radial-enabled%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E %3CradialGradient cx='50%25' cy='50%25' fx='50%25' fy='50%25' r='39.3896484%25' id='radialGradient-1'%3E %3Cstop stop-color='%23855CD6' offset='0%25'%3E%3C/stop%3E %3Cstop stop-color='%23FFFFFF' offset='100%25'%3E%3C/stop%3E %3C/radialGradient%3E %3C/defs%3E %3Cg id='fill-radial-enabled' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-opacity='0.15'%3E %3Crect id='Radial' stroke='%23000000' fill='url(%23radialGradient-1)' x='0.5' y='0.5' width='19' height='19' rx='4'%3E%3C/rect%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Efill-solid-enabled%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='fill-solid-enabled' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-opacity='0.15'%3E %3Crect id='Solid' stroke='%23000000' fill='%23855CD6' x='0.5' y='0.5' width='19' height='19' rx='4'%3E%3C/rect%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 51 (57462) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Efill-vert-gradient-enabled%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E %3ClinearGradient x1='50%25' y1='100%25' x2='50%25' y2='3.061617e-15%25' id='linearGradient-1'%3E %3Cstop stop-color='%23FFFFFF' offset='0%25'%3E%3C/stop%3E %3Cstop stop-color='%23855CD6' offset='100%25'%3E%3C/stop%3E %3C/linearGradient%3E %3C/defs%3E %3Cg id='fill-vert-gradient-enabled' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-opacity='0.15'%3E %3Crect id='Vertical' stroke='%23000000' fill='url(%23linearGradient-1)' x='0.5' y='0.5' width='19' height='19' rx='4'%3E%3C/rect%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eswap%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='swap' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='Swap-v2' transform='translate(2.000000, 2.000000)' fill='%23855CD6'%3E %3Cpath d='M3.69424597,2.00682151 L7.95663608,2.66498231 C8.44536222,2.73588913 8.7900887,3.24405473 8.7176525,3.79585529 C8.66179809,4.24129561 8.34150792,4.58764819 7.95663608,4.64128284 L3.69424597,5.30126176 L3.69424597,6.79666856 C3.69424597,7.22392764 3.23781067,7.42846657 2.97250219,7.13483958 L0.120436084,3.97403142 C-0.0401453614,3.78767373 -0.0401453614,3.48404706 0.120436084,3.30587093 L2.97250219,0.135972153 C3.23781067,-0.157654834 3.69424597,0.0559747078 3.69424597,0.474143173 L3.69424597,2.00682151 Z M12.305754,10.7340942 L12.305754,9.2014159 C12.305754,8.78324744 12.7621893,8.56961789 13.0274978,8.86324488 L15.8795639,12.0331437 C16.0401454,12.2113198 16.0401454,12.5149465 15.8795639,12.7013041 L13.0274978,15.8621123 C12.7621893,16.1557393 12.305754,15.9512004 12.305754,15.5239413 L12.305754,14.0285345 L8.04336392,13.3685556 C7.65849208,13.3149209 7.33820191,12.9685683 7.2823475,12.523128 C7.2099113,11.9713275 7.55463778,11.4631619 8.04336392,11.392255 L12.305754,10.7340942 Z' id='Swap-v1'%3E%3C/path%3E %3Cpath d='M11.2727273,1.45454545 L13.4545455,1.45454545 C14.0567273,1.45454545 14.5454545,1.94327273 14.5454545,2.54545455 L14.5454545,4.72727273 C14.5454545,5.33054545 14.0567273,5.81818182 13.4545455,5.81818182 L11.2727273,5.81818182 C10.6705455,5.81818182 10.1818182,5.33054545 10.1818182,4.72727273 L10.1818182,2.54545455 C10.1818182,1.94327273 10.6705455,1.45454545 11.2727273,1.45454545' id='Fill-6' fill-opacity='0.5'%3E%3C/path%3E %3Cpath d='M2.54545455,10.1818182 L4.72727273,10.1818182 C5.32945455,10.1818182 5.81818182,10.6705455 5.81818182,11.2727273 L5.81818182,13.4545455 C5.81818182,14.0578182 5.32945455,14.5454545 4.72727273,14.5454545 L2.54545455,14.5454545 C1.94327273,14.5454545 1.45454545,14.0578182 1.45454545,13.4545455 L1.45454545,11.2727273 C1.45454545,10.6705455 1.94327273,10.1818182 2.54545455,10.1818182' id='Fill-6-Copy' fill-opacity='0.5'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 48.1 (47250) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Efill%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='fill' fill='%23575E75'%3E %3Cpath d='M14.0450969,9.69349504 L14.0306818,9.67916207 C13.4396629,9.36383682 12.5170968,8.69018743 11.4215496,7.60088203 C11.0900024,7.27122381 10.7872854,6.95589857 10.5422288,6.65490628 C10.71521,6.4399118 10.8881911,6.22491731 11.0611722,6.00992282 C11.3783043,6.26791621 11.7242666,6.58324146 12.084644,6.9415656 C12.3152855,7.17089305 12.5026817,7.37155458 12.690078,7.5722161 C12.7189081,7.61521499 12.7621534,7.65821389 12.8198138,7.70121279 C13.6270591,8.6185226 14.1027573,9.36383682 14.3189837,9.7938258 C14.3189837,9.80815877 14.3333988,9.82249173 14.3333988,9.8368247 C14.2469082,9.7938258 14.1460025,9.7508269 14.0450969,9.69349504 M10.5998892,10.0661521 C9.7349835,10.53914 8.91332309,10.983462 7.61596455,10.6824697 C6.17445506,10.3528115 5.4825305,9.76515987 5.19422861,9.42116869 L8.3078891,5.40793826 C8.52411553,5.83792723 8.84124762,6.28224917 9.1727948,6.69790518 C8.82683252,7.21389195 8.55294572,7.64388093 8.42320986,7.84454245 C8.27905891,8.08820287 8.35113439,8.41786108 8.6106061,8.5755237 C8.69709667,8.63285557 8.79800233,8.6615215 8.8844929,8.6615215 C9.07188913,8.6615215 9.24487027,8.56119074 9.34577594,8.40352811 C9.50434198,8.13120176 9.69173821,7.84454245 9.89354954,7.55788313 C10.1962665,7.90187431 10.4701533,8.17420066 10.6575496,8.36052922 C11.0755873,8.77618523 11.4936251,9.14884234 11.8972477,9.47850055 C11.4215496,9.60749724 11.0035119,9.85115766 10.5998892,10.0661521 M10.2106816,5.33627343 C10.0953609,5.49393605 9.96562502,5.65159868 9.85030426,5.79492834 C9.50434198,5.33627343 9.28811556,4.96361632 9.1727948,4.70562293 C9.41785141,4.80595369 9.76381369,5.02094818 10.2106816,5.33627343 M13.5117384,4.07497244 C13.6703044,4.07497244 13.8432855,4.10363837 13.8721157,4.1753032 C14.0450969,4.49062845 13.6270591,5.49393605 13.0648704,6.3969129 L12.848644,6.18191841 C12.6180025,5.95259096 12.2287949,5.59426681 11.781927,5.20727674 C12.4450213,4.53362734 13.0504553,4.07497244 13.5117384,4.07497244 M16.5533234,12.1587652 C16.337097,11.5997795 15.9911347,11.0981257 15.587512,10.6681367 C15.5442667,10.6108049 15.4866064,10.567806 15.428946,10.5248071 C15.6740026,9.99448732 15.2703799,9.23484013 14.9244177,8.69018743 C14.6505309,8.24586549 14.2757384,7.74421169 13.8288705,7.24255788 C14.3910592,6.38257993 15.3568705,4.676957 14.8379271,3.67364939 C14.679361,3.37265711 14.3189837,3 13.5117384,3 L13.4973233,3 C12.6756629,3 11.7675119,3.65931643 10.9458515,4.51929438 C10.0232854,3.84564498 9.01422875,3.31532525 8.40879477,3.65931643 C8.35113439,3.68798236 8.27905891,3.71664829 8.23581363,3.77398015 C8.22139853,3.78831312 8.19256835,3.80264609 8.17815325,3.83131202 C8.16373816,3.84564498 8.14932306,3.85997795 8.13490797,3.88864388 L8.12049287,3.91730981 L4.12751158,9.04851158 C4.11309649,9.04851158 4.11309649,9.04851158 4.09868139,9.06284454 L3.20494551,10.2238148 L3.16170023,10.2668137 C3.11845494,10.3098126 3.08962475,10.3671444 3.07520966,10.4101433 L3.07520966,10.4244763 C2.62834171,11.3417861 4.28607763,13.1334068 5.06449275,13.92172 C5.75641731,14.6097023 7.28441737,16 8.23581363,16 C8.43762496,16 8.596191,15.9426681 8.74034195,15.8136714 L14.2613233,11.5567806 C14.2901535,11.5424476 14.3045686,11.5137817 14.3333988,11.4851158 C14.362229,11.5137817 14.3766441,11.5567806 14.3910592,11.5854465 C14.5640403,11.9294377 14.679361,12.2877619 14.6937761,12.6747519 C14.7370214,13.061742 14.7081912,13.463065 14.6505309,13.8500551 L14.6505309,13.8643881 C14.6361158,13.9790518 14.6361158,14.0793826 14.6505309,14.1940463 C14.7514365,14.8390298 15.3568705,15.2833517 15.9911347,15.1830209 C16.639814,15.0826902 17.0866819,14.4807056 16.9857762,13.8357222 C16.8992857,13.2767365 16.7839649,12.7034179 16.5533234,12.1587652' id='Fill-1'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eline%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-linecap='square'%3E %3Cg id='line' stroke='%23575E75' stroke-width='2'%3E %3Cpath d='M5,15 L15,5' id='Line'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/postcss-loader/src/index.js??postcss!./loupe.css\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.id, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='8px' height='5px' viewBox='0 0 8 5' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Edropdown-caret%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='dropdown-caret' fill='%23855CD6'%3E %3Cpath d='M4,5 C3.72520708,5 3.45163006,4.89695045 3.24127973,4.68965311 L0.314613572,1.80666227 C-0.104871191,1.39326583 -0.104871191,0.724642023 0.314613572,0.310047331 C0.732882438,-0.10334911 7.26711756,-0.10334911 7.68538643,0.310047331 C8.10487119,0.723443772 8.10487119,1.39326583 7.68538643,1.80666227 L4.75993617,4.68965311 C4.54958583,4.89695045 4.27600882,5 4,5'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Egroup%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='group' stroke-width='0.75'%3E %3Cg id='group-icon' transform='translate(2.000000, 2.000000)'%3E %3Crect id='Rectangle-2' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='0' y='0' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy-2' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='13' y='0' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='0' y='13' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy-3' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='13' y='13' width='3' height='3'%3E%3C/rect%3E %3Cpath d='M1.5,3 L1.5,13' id='Line' stroke='%23855CD6' stroke-linecap='square'%3E%3C/path%3E %3Cpath d='M14.5,3 L14.5,13' id='Line-Copy' stroke='%23855CD6' stroke-linecap='square'%3E%3C/path%3E %3Cpath d='M13,1.5 L3,1.5' id='Line-Copy-2' stroke='%23855CD6' stroke-linecap='square'%3E%3C/path%3E %3Cpath d='M13,14.5 L3,14.5' id='Line-Copy-3' stroke='%23855CD6' stroke-linecap='square'%3E%3C/path%3E %3Cg id='Group' transform='translate(8.000000, 8.000000) rotate(180.000000) translate(-8.000000, -8.000000) translate(4.000000, 4.000000)' stroke='%23575E75'%3E %3Crect id='Rectangle-3-Copy' fill='%23FFFFFF' transform='translate(5.500000, 5.500000) rotate(180.000000) translate(-5.500000, -5.500000) ' x='3' y='3' width='5' height='5' rx='0.5'%3E%3C/rect%3E %3Crect id='Rectangle-3' fill='%23575E75' transform='translate(2.500000, 2.500000) rotate(180.000000) translate(-2.500000, -2.500000) ' x='0' y='0' width='5' height='5' rx='0.5'%3E%3C/rect%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eredo%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='redo' fill='%23855CD6'%3E %3Cpath d='M17.5581635,12.7700651 L13.8403972,16.4941315 C13.5610922,16.7671364 13.1830854,16.9211391 12.7903784,16.9211391 C12.3990715,16.9211391 12.0210647,16.7671364 11.7403597,16.4941315 L8.02399342,12.7700651 C7.5969858,12.3430574 7.47098355,11.7060461 7.70198767,11.1530362 C7.93299179,10.6000263 8.46500128,10.24302 9.06701202,10.24302 L10.4040359,10.24302 C10.3690352,9.92101423 10.2780336,9.55700774 10.1240309,9.17200087 C10.07573,9.05999887 10.0260291,8.94799688 9.97002813,8.83599488 C9.89302676,8.70999263 9.90072689,8.67499201 9.79502501,8.52098926 C9.62702201,8.26898476 9.47301926,8.07998139 9.29031601,7.86297752 C8.9200094,7.4639704 8.47200141,7.12096429 7.99599292,6.86895979 C7.5129843,6.6169553 7.00897531,6.46295255 6.56096732,6.37895105 C6.11995945,6.30194968 5.71395221,6.29494955 5.47594796,6.29494955 C5.35694584,6.28794943 5.2029431,6.31594993 5.12594172,6.32295005 C5.04194022,6.32995018 4.99293935,6.3369503 4.99293935,6.3369503 C4.49593048,6.38595117 4.04792249,6.02194468 3.99892162,5.52493582 C3.95692087,5.10492832 4.20192524,4.72692158 4.57293186,4.58691908 C4.57293186,4.58691908 4.62193273,4.56591871 4.6989341,4.53791821 C4.78993573,4.50991771 4.87393723,4.46091684 5.06994072,4.40491584 C5.46194772,4.28591371 5.95895658,4.15991147 6.60996819,4.09691034 C7.25397968,4.04090934 8.03099354,4.05490959 8.85070816,4.22291259 C9.66902276,4.39791571 10.5300381,4.72692158 11.3280524,5.20293007 C11.7060591,5.44793444 12.1120663,5.73493956 12.427072,6.01494456 C12.5670745,6.11994643 12.8050787,6.35795068 12.9450812,6.5049533 C13.1060841,6.67295629 13.2530867,6.84095929 13.4007893,7.01596241 C13.9670994,7.7159749 14.3871069,8.47198839 14.6601118,9.15800062 C14.8211147,9.55000762 14.9331167,9.92101423 15.0171182,10.24302 L16.5151449,10.24302 C17.1171556,10.24302 17.6491651,10.6000263 17.8801692,11.1530362 C18.1111734,11.7060461 17.9851711,12.3430574 17.5581635,12.7700651' id='Fill-1' transform='translate(10.994247, 10.494247) rotate(-45.000000) translate(-10.994247, -10.494247) '%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Esend-backward%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='send-backward'%3E %3Cg id='send-forward' transform='translate(10.000000, 10.000000) rotate(180.000000) translate(-10.000000, -10.000000) translate(2.000000, 3.000000)'%3E %3Cpath d='M12.3476736,5.92549723 L10.2407376,5.92549723 L9.33601611,12.7635981 C9.23807603,13.5476661 8.54025295,14.1003698 7.78121732,13.9846876 C7.16909181,13.8947126 6.69163391,13.3805697 6.6169546,12.7635981 L5.7122331,5.92549723 L3.65426714,5.92549723 C3.0678509,5.92549723 2.78504892,5.19284356 3.190276,4.76867564 L7.53514286,0.192803597 C7.79223558,-0.0642678658 8.20970517,-0.0642678658 8.45333113,0.192803597 L12.812889,4.76867564 C13.2168918,5.19284356 12.9230716,5.92549723 12.3476736,5.92549723' id='Fill-1' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M12,8 L16,8' id='Stroke-6' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M0,8 L4,8' id='Stroke-10' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Esend-forward%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='send-forward'%3E %3Cg transform='translate(2.000000, 3.000000)'%3E %3Cpath d='M12.3476736,5.92549723 L10.2407376,5.92549723 L9.33601611,12.7635981 C9.23807603,13.5476661 8.54025295,14.1003698 7.78121732,13.9846876 C7.16909181,13.8947126 6.69163391,13.3805697 6.6169546,12.7635981 L5.7122331,5.92549723 L3.65426714,5.92549723 C3.0678509,5.92549723 2.78504892,5.19284356 3.190276,4.76867564 L7.53514286,0.192803597 C7.79223558,-0.0642678658 8.20970517,-0.0642678658 8.45333113,0.192803597 L12.812889,4.76867564 C13.2168918,5.19284356 12.9230716,5.92549723 12.3476736,5.92549723' id='Fill-1' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M12,8 L16,8' id='Stroke-6' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M0,8 L4,8' id='Stroke-10' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eundo%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='undo' fill='%23855CD6'%3E %3Cpath d='M15.5581635,12.7700651 L11.8403972,16.4941315 C11.5610922,16.7671364 11.1830854,16.9211391 10.7903784,16.9211391 C10.3990715,16.9211391 10.0210647,16.7671364 9.74035971,16.4941315 L6.02399342,12.7700651 C5.5969858,12.3430574 5.47098355,11.7060461 5.70198767,11.1530362 C5.93299179,10.6000263 6.46500128,10.24302 7.06701202,10.24302 L8.40403587,10.24302 C8.36903525,9.92101423 8.27803362,9.55700774 8.12403088,9.17200087 C8.07573002,9.05999887 8.02602913,8.94799688 7.97002813,8.83599488 C7.89302676,8.70999263 7.90072689,8.67499201 7.79502501,8.52098926 C7.62702201,8.26898476 7.47301926,8.07998139 7.29031601,7.86297752 C6.9200094,7.4639704 6.47200141,7.12096429 5.99599292,6.86895979 C5.5129843,6.6169553 5.00897531,6.46295255 4.56096732,6.37895105 C4.11995945,6.30194968 3.71395221,6.29494955 3.47594796,6.29494955 C3.35694584,6.28794943 3.2029431,6.31594993 3.12594172,6.32295005 C3.04194022,6.32995018 2.99293935,6.3369503 2.99293935,6.3369503 C2.49593048,6.38595117 2.04792249,6.02194468 1.99892162,5.52493582 C1.95692087,5.10492832 2.20192524,4.72692158 2.57293186,4.58691908 C2.57293186,4.58691908 2.62193273,4.56591871 2.6989341,4.53791821 C2.78993573,4.50991771 2.87393723,4.46091684 3.06994072,4.40491584 C3.46194772,4.28591371 3.95895658,4.15991147 4.60996819,4.09691034 C5.25397968,4.04090934 6.03099354,4.05490959 6.85070816,4.22291259 C7.66902276,4.39791571 8.53003812,4.72692158 9.32805235,5.20293007 C9.7060591,5.44793444 10.1120663,5.73493956 10.427072,6.01494456 C10.5670745,6.11994643 10.8050787,6.35795068 10.9450812,6.5049533 C11.1060841,6.67295629 11.2530867,6.84095929 11.4007893,7.01596241 C11.9670994,7.7159749 12.3871069,8.47198839 12.6601118,9.15800062 C12.8211147,9.55000762 12.9331167,9.92101423 13.0171182,10.24302 L14.5151449,10.24302 C15.1171556,10.24302 15.6491651,10.6000263 15.8801692,11.1530362 C16.1111734,11.7060461 15.9851711,12.3430574 15.5581635,12.7700651' id='Fill-1' transform='translate(8.994247, 10.494247) scale(-1, 1) rotate(-45.000000) translate(-8.994247, -10.494247) '%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eungroup%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='ungroup' stroke-width='0.75'%3E %3Cg id='ungroup-icon' transform='translate(10.000000, 10.000000) rotate(180.000000) translate(-10.000000, -10.000000) translate(2.000000, 2.000000)'%3E %3Crect id='Rectangle-3-Copy' stroke='%23575E75' fill='%23FFFFFF' x='6.5' y='6.5' width='8' height='8' rx='0.5'%3E%3C/rect%3E %3Crect id='Rectangle-3' stroke='%23575E75' fill='%23575E75' x='1.5' y='1.5' width='8' height='8' rx='0.5'%3E%3C/rect%3E %3Crect id='Rectangle-2' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='0' y='0' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy-2' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='8' y='0' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='0' y='8' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy-3' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='8' y='8' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy-4' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='13' y='5' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy-5' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='13' y='13' width='3' height='3'%3E%3C/rect%3E %3Crect id='Rectangle-2-Copy-6' stroke='%23855CD6' fill='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' x='5' y='13' width='3' height='3'%3E%3C/rect%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Ecopy v2%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='copy-v2'%3E %3Cg id='copy' transform='translate(3.000000, 2.000000)'%3E %3Cpolyline id='Path-3' stroke-opacity='0.5' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round' stroke-dasharray='1,2' points='0.503173828 3 0.503173828 15.5 13 15.5'%3E%3C/polyline%3E %3Cpath d='M2,1.00684547 C2,0.450780073 2.45303631,0 2.99703014,0 L10,0 L10,2.34995317 C10,3.26124887 10.7336617,4 11.6500468,4 L14,4 L14,13.0046024 C14,13.5543453 13.544239,14 12.9975267,14 L3.00247329,14 C2.44882258,14 2,13.5500512 2,12.9931545 L2,1.00684547 Z' id='Rectangle-4' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M11,0 L14,3 L11.9989566,3 C11.4472481,3 11,2.55733967 11,2.00104344 L11,0 Z' id='Rectangle-5' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M9.8115942,9.1884058 L8.6884058,9.1884058 L8.6884058,10.3115942 C8.6884058,10.6859903 8.38647343,11 8,11 C7.61352657,11 7.3115942,10.6859903 7.3115942,10.3115942 L7.3115942,9.1884058 L6.1884058,9.1884058 C5.81400966,9.1884058 5.5,8.88647343 5.5,8.5 C5.5,8.11352657 5.81400966,7.8115942 6.1884058,7.8115942 L7.3115942,7.8115942 L7.3115942,6.6884058 C7.3115942,6.31280193 7.61352657,6 8,6 C8.38647343,6 8.6884058,6.31280193 8.6884058,6.6884058 L8.6884058,7.8115942 L9.8115942,7.8115942 C10.1859903,7.8115942 10.5,8.11352657 10.5,8.5 C10.5,8.88647343 10.1859903,9.1884058 9.8115942,9.1884058 Z' id='Fill-1' stroke='%23FFFFFF' stroke-width='0.25' fill='%23FFFFFF'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 48.2 (47327) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Epaste v2%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='paste-v2'%3E %3Cg id='paste' transform='translate(3.000000, 2.000000)'%3E %3Cpolyline id='Path-3' stroke-opacity='0.5' stroke='%23575E75' stroke-linecap='round' stroke-linejoin='round' stroke-dasharray='1,2' transform='translate(6.748413, 6.750000) scale(1, -1) translate(-6.748413, -6.750000) ' points='0.5 0.5 0.5 13 12.9968262 13'%3E%3C/polyline%3E %3Cpath d='M2,3.00684547 C2,2.45078007 2.45303631,2 2.99703014,2 L10,2 L10,4.34995317 C10,5.26124887 10.7336617,6 11.6500468,6 L14,6 L14,15.0046024 C14,15.5543453 13.544239,16 12.9975267,16 L3.00247329,16 C2.44882258,16 2,15.5500512 2,14.9931545 L2,3.00684547 Z' id='Rectangle-4' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M11,2 L14,5 L11.9989566,5 C11.4472481,5 11,4.55733967 11,4.00104344 L11,2 Z' id='Rectangle-5' fill='%23855CD6'%3E%3C/path%3E %3Cpath d='M8.34791833,12.8771885 C8.26180668,12.9633001 8.14699113,13.0063559 8.03217559,13.0063559 C7.9030081,13.0063559 7.78819256,12.9633001 7.70208091,12.8771885 L5.86503222,11.0401398 C5.73586474,10.8966203 5.69280891,10.7100451 5.76456862,10.5378218 C5.83632834,10.3655985 5.99419971,10.2651349 6.18077497,10.2651349 L6.92707599,10.2651349 L7.28587456,7.66743321 C7.31457845,7.46650601 7.41504205,7.27993075 7.57291342,7.16511521 C7.73078479,7.03594773 7.94606393,6.97853995 8.13263919,7.00724384 C8.47708582,7.06321642 8.74977273,7.33733852 8.79282856,7.66743321 L9.16597907,10.2651349 L9.86922427,10.2651349 C10.0557995,10.2651349 10.2136709,10.3799504 10.2854306,10.5521737 C10.3571903,10.7100451 10.3141345,10.9109723 10.184967,11.0401398 L8.34791833,12.8771885 Z' id='Fill-1' fill='%23FFFFFF'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Ecurved-point%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='curved-point'%3E %3Cpath d='M2,15 C2,10.5818452 5.58151214,7 10.000744,7 C14.4184879,7 18,10.5818452 18,15' id='Stroke-3' stroke='%23855CD6' stroke-width='0.75' fill-opacity='0.25' fill='%23855CD6' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Cpath d='M3,7 L17,7' id='Stroke-7' stroke='%23855CD6' stroke-width='0.75' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3Ccircle id='Oval-4' fill-opacity='0.25' fill='%23855CD6' cx='10' cy='7' r='3'%3E%3C/circle%3E %3Ccircle id='Oval-4' fill='%23855CD6' cx='10' cy='7' r='2'%3E%3C/circle%3E %3Ccircle id='Oval-5' fill='%23855CD6' cx='3' cy='7' r='1'%3E%3C/circle%3E %3Ccircle id='Oval-5-Copy' fill='%23855CD6' cx='17' cy='7' r='1'%3E%3C/circle%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eflip-horizontal%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='flip-horizontal'%3E %3Cg transform='translate(2.000000, 3.000000)'%3E %3Ccircle id='Oval' fill='%23575E75' opacity='0.5' cx='8' cy='0.75' r='1'%3E%3C/circle%3E %3Ccircle id='Oval' fill='%23575E75' opacity='0.5' cx='8' cy='13.25' r='1'%3E%3C/circle%3E %3Ccircle id='Oval-Copy' fill='%23575E75' opacity='0.5' cx='8' cy='3.875' r='1'%3E%3C/circle%3E %3Ccircle id='Oval-Copy-2' fill='%23575E75' opacity='0.5' cx='8' cy='7' r='1'%3E%3C/circle%3E %3Ccircle id='Oval-Copy-3' fill='%23575E75' opacity='0.5' cx='8' cy='10.125' r='1'%3E%3C/circle%3E %3Cpath d='M16,3.08425423 L16,10.9157458 C16,11.4342626 15.2574491,11.6956996 14.8235798,11.3282353 L10.2019293,7.41103711 C9.93269025,7.18445835 9.93269025,6.81408922 10.2019293,6.58751046 L14.8235798,2.67176469 C15.2574491,2.30430042 16,2.56573745 16,3.08425423' id='Fill-11' fill='%23855CD6' opacity='0.5'%3E%3C/path%3E %3Cpath d='M0,10.9157458 L0,3.08425423 C0,2.56573745 0.742550911,2.30430042 1.17470525,2.67176469 L5.79807074,6.58896289 C6.06730975,6.81554165 6.06730975,7.18591078 5.79807074,7.41248954 L1.17470525,11.3282353 C0.742550911,11.6956996 0,11.4342626 0,10.9157458' id='Fill-14' fill='%23855CD6'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eflip-vertical%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='flip-vertical'%3E %3Cg id='flip-horizontal' transform='translate(10.000000, 10.000000) rotate(90.000000) translate(-10.000000, -10.000000) translate(2.000000, 3.000000)'%3E %3Ccircle id='Oval' fill='%23575E75' opacity='0.5' cx='8' cy='0.75' r='1'%3E%3C/circle%3E %3Ccircle id='Oval' fill='%23575E75' opacity='0.5' cx='8' cy='13.25' r='1'%3E%3C/circle%3E %3Ccircle id='Oval-Copy' fill='%23575E75' opacity='0.5' cx='8' cy='3.875' r='1'%3E%3C/circle%3E %3Ccircle id='Oval-Copy-2' fill='%23575E75' opacity='0.5' cx='8' cy='7' r='1'%3E%3C/circle%3E %3Ccircle id='Oval-Copy-3' fill='%23575E75' opacity='0.5' cx='8' cy='10.125' r='1'%3E%3C/circle%3E %3Cpath d='M16,3.08425423 L16,10.9157458 C16,11.4342626 15.2574491,11.6956996 14.8235798,11.3282353 L10.2019293,7.41103711 C9.93269025,7.18445835 9.93269025,6.81408922 10.2019293,6.58751046 L14.8235798,2.67176469 C15.2574491,2.30430042 16,2.56573745 16,3.08425423' id='Fill-11' fill='%23855CD6' opacity='0.5'%3E%3C/path%3E %3Cpath d='M0,10.9157458 L0,3.08425423 C0,2.56573745 0.742550911,2.30430042 1.17470525,2.67176469 L5.79807074,6.58896289 C6.06730975,6.81554165 6.06730975,7.18591078 5.79807074,7.41248954 L1.17470525,11.3282353 C0.742550911,11.6956996 0,11.4342626 0,10.9157458' id='Fill-14' fill='%23855CD6'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Estraight-point%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='straight-point' fill='%23855CD6'%3E %3Cpolyline id='Path-2' stroke='%23855CD6' stroke-width='0.75' fill-opacity='0.25' stroke-linecap='round' stroke-linejoin='round' points='2 15 10 7 18 15'%3E%3C/polyline%3E %3Ccircle id='Oval-4' fill-opacity='0.25' cx='10' cy='7' r='3'%3E%3C/circle%3E %3Ccircle id='Oval-4' cx='10' cy='7' r='2'%3E%3C/circle%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eoval-outlined%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='oval-outlined' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='Group' transform='translate(4.000000, 4.000000)' fill='%23575E75'%3E %3Cpolygon id='Fill-1' points='0 9.33333333 1.33333333 9.33333333 1.33333333 2.66666667 0 2.66666667'%3E%3C/polygon%3E %3Cpolygon id='Fill-2' points='1.33333333 2.66666667 2.66666667 2.66666667 2.66666667 1.33333333 1.33333333 1.33333333'%3E%3C/polygon%3E %3Cpolygon id='Fill-3' points='1.33333333 10.6666667 2.66666667 10.6666667 2.66666667 9.33333333 1.33333333 9.33333333'%3E%3C/polygon%3E %3Cpolygon id='Fill-4' points='2.66666667 1.33333333 9.33333333 1.33333333 9.33333333 0 2.66666667 0'%3E%3C/polygon%3E %3Cpolygon id='Fill-5' points='9.33333333 2.66666667 10.6666667 2.66666667 10.6666667 1.33333333 9.33333333 1.33333333'%3E%3C/polygon%3E %3Cpolygon id='Fill-6' points='10.6666667 9.33333333 12 9.33333333 12 2.66666667 10.6666667 2.66666667'%3E%3C/polygon%3E %3Cpolygon id='Fill-7' points='9.33333333 10.6666667 10.6666667 10.6666667 10.6666667 9.33333333 9.33333333 9.33333333'%3E%3C/polygon%3E %3Cpolygon id='Fill-8' points='2.66666667 12 9.33333333 12 9.33333333 10.6666667 2.66666667 10.6666667'%3E%3C/polygon%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Erectange-outlined%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='rectange-outlined' stroke='none' stroke-width='1.33333333' fill='none' fill-rule='evenodd'%3E %3Crect id='rectangle-icon' stroke='%23575E75' x='4.5' y='4.5' width='11' height='11'%3E%3C/rect%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eoval%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='oval' stroke-width='1.5' stroke='%23575E75'%3E %3Ccircle id='oval-icon' cx='10' cy='10' r='5'%3E%3C/circle%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Erectangle%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' stroke-linecap='round' stroke-linejoin='round'%3E %3Cg id='rectangle' stroke='%23575E75' stroke-width='1.5'%3E %3Crect id='rectangle-icon' x='5' y='5' width='10' height='10'%3E%3C/rect%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Ereshape%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='reshape'%3E %3Cg id='reshape-icon' transform='translate(3.000000, 2.000000)'%3E %3Cpath d='M6.3718,4e-05 C6.3718,1.20298846 6.03840639,2.32811001 5.45898306,3.28804076 C5.31876362,3.52034235 4.30079812,3.15107034 3.82818604,3.61859131 C3.35557395,4.08611228 3.47873759,5.34529147 3.26181884,5.47482181 C2.30759304,6.04462589 1.19191205,6.37204 -0.0002,6.37204' id='Stroke-1' stroke='%23575E75' stroke-width='0.75'%3E%3C/path%3E %3Cpath d='M4,6.94999094 C2.85887984,6.71835578 2,5.70947896 2,4.5 C2,3.11928813 3.11928813,2 4.5,2 C5.88071187,2 7,3.11928813 7,4.5 C7,4.56854233 6.99724162,4.63644042 6.99182982,4.70358929 L6.68137747,4.42017327 C5.65792772,3.48493325 4,4.20484091 4,5.595932 L4,6.94999094 Z' id='Combined-Shape' fill='%23575E75'%3E%3C/path%3E %3Cpath d='M4,7.96455557 C2.30385293,7.72194074 1,6.26323595 1,4.5 C1,2.56700338 2.56700338,1 4.5,1 C6.43299662,1 8,2.56700338 8,4.5 C8,4.84508345 7.95005914,5.1785026 7.85701065,5.4934242 L6.68137747,4.42017327 C5.65792772,3.48493325 4,4.20484091 4,5.595932 L4,7.96455557 Z' id='Oval-2' fill-opacity='0.15' fill='%23575E75'%3E%3C/path%3E %3Cpath d='M7.87915329,13.1684522 L8.98467414,15.6316703 C9.20235954,16.1186581 9.76980913,16.3337238 10.2516521,16.1137141 C10.7334951,15.8924683 10.9462887,15.3189598 10.7286032,14.833208 L9.63583183,12.3973461 L12.3974628,12.3973461 C12.945512,12.3973461 13.207518,11.7313818 12.8048941,11.3644462 L6.00716065,5.15870674 C5.6225647,4.80725864 5,5.07769498 5,5.595932 L5,14.8026807 C5,15.3507015 5.68145595,15.608033 6.04802397,15.1994001 L7.87915329,13.1684522 Z' id='select-icon' fill='%23575E75'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Eselect%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='select' fill='%23575E75'%3E %3Cpath d='M9.08480709,12.7519131 L10.2692937,15.3910753 C10.5025281,15.912848 11.1105098,16.1432755 11.6267701,15.9075508 C12.1430304,15.6705018 12.3710236,15.0560284 12.1377892,14.53558 L10.9669627,11.925728 L13.925853,11.925728 C14.5130486,11.925728 14.7937693,11.2121948 14.3623865,10.8190495 L7.0791007,4.17004294 C6.6670336,3.7934914 6,4.08324462 6,4.63849857 L6,14.5028722 C6,15.0900373 6.73013138,15.3657496 7.12288282,14.9279287 L9.08480709,12.7519131 Z' id='select-icon'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8' standalone='no'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Etext%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cg id='text' fill='%23575E75'%3E %3Cpath d='M16,4.35294118 L16,6.85176471 C16,7.04941176 15.8447059,7.20470588 15.6470588,7.20470588 L14.8988235,7.20470588 C14.7576471,7.20470588 14.6164706,7.12 14.5741176,6.99294118 L14.2070588,6.11764706 L11.0588235,6.11764706 L11.0588235,14.2917647 L11.92,14.6164706 C12.0611765,14.6729412 12.16,14.8 12.16,14.9552941 L12.16,15.6470588 C12.16,15.8447059 11.9905882,16 11.8070588,16 L8.20705882,16 C8.02352941,16 7.85411765,15.8447059 7.85411765,15.6470588 L7.85411765,14.9552941 C7.85411765,14.8 7.95294118,14.6729412 8.08,14.6164706 L8.94117647,14.2917647 L8.94117647,6.11764706 L5.80705882,6.11764706 L5.44,6.99294118 C5.38352941,7.12 5.25647059,7.20470588 5.11529412,7.20470588 L4.35294118,7.20470588 C4.16941176,7.20470588 4,7.04941176 4,6.85176471 L4,4.35294118 C4,4.15529412 4.16941176,4 4.35294118,4 L15.6470588,4 C15.8447059,4 16,4.15529412 16,4.35294118' id='text-icon'%3E%3C/path%3E %3C/g%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='20px' height='20px' viewBox='0 0 20 20' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3C!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch --%3E %3Ctitle%3Etext%3C/title%3E %3Cdesc%3ECreated with Sketch.%3C/desc%3E %3Cdefs%3E%3C/defs%3E %3Cg id='text' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E %3Cpolygon id='Page-1' fill='%23575E75' points='4 4 4 8 6 8 6 6 9 6 9 14 7 14 7 16 13 16 13 14 11 14 11 6 14 6 14 8 16 8 16 4'%3E%3C/polygon%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0'?%3E %3Csvg xmlns='http://www.w3.org/2000/svg' id='Layer_1' data-name='Layer 1' viewBox='6 6 24 24'%3E %3Cdefs%3E %3Cstyle%3E .cls-4%7Bfill:none;stroke:%23575e75;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;%7D %3C/style%3E %3C/defs%3E %3Ctitle%3Ezoom-in%3C/title%3E %3Cg class='cls-3'%3E %3Ccircle class='cls-4' cx='18' cy='18' r='7'/%3E %3Cline class='cls-4' x1='23' y1='23' x2='26' y2='26'/%3E %3Cline class='cls-4' x1='16' y1='18' x2='20' y2='18'/%3E %3Cline class='cls-4' x1='18' y1='16' x2='18' y2='20'/%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0'?%3E %3Csvg xmlns='http://www.w3.org/2000/svg' id='Layer_1' data-name='Layer 1' viewBox='6 6 24 24'%3E %3Cdefs%3E %3Cstyle%3E .cls-4%7Bfill:none;stroke:%23575e75;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;%7D %3C/style%3E %3C/defs%3E %3Ctitle%3Ezoom-out%3C/title%3E %3Cg class='cls-3'%3E %3Ccircle class='cls-4' cx='18' cy='18' r='7'/%3E %3Cline class='cls-4' x1='23' y1='23' x2='26' y2='26'/%3E %3Cline class='cls-4' x1='16' y1='18' x2='20' y2='18'/%3E %3C/g%3E %3C/svg%3E\"","module.exports = \"data:image/svg+xml,%3C?xml version='1.0'?%3E %3Csvg xmlns='http://www.w3.org/2000/svg' id='Layer_1' data-name='Layer 1' viewBox='6 6 24 24'%3E %3Cdefs%3E %3Cstyle%3E .cls-4%7Bfill:%23575e75;%7D %3C/style%3E %3C/defs%3E %3Ctitle%3Ezoom-reset%3C/title%3E %3Cg class='cls-3'%3E %3Crect class='cls-4' x='13' y='14' width='10' height='2' rx='1' ry='1'/%3E %3Crect class='cls-4' x='13' y='20' width='10' height='2' rx='1' ry='1'/%3E %3C/g%3E %3C/svg%3E\"","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.en=a())}(this,function(){\"use strict\";return[{locale:\"en\",pluralRuleFunction:function(e,a){var t=String(e).split(\".\"),o=!t[1],n=Number(t[0])==e,r=n&&t[0].slice(-1),i=n&&t[0].slice(-2);return a?1==r&&11!=i?\"one\":2==r&&12!=i?\"two\":3==r&&13!=i?\"few\":\"other\":1==e&&o?\"one\":\"other\"},fields:{year:{displayName:\"year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{one:\"in {0} year\",other:\"in {0} years\"},past:{one:\"{0} year ago\",other:\"{0} years ago\"}}},\"year-short\":{displayName:\"yr.\",relative:{0:\"this yr.\",1:\"next yr.\",\"-1\":\"last yr.\"},relativeTime:{future:{one:\"in {0} yr.\",other:\"in {0} yr.\"},past:{one:\"{0} yr. ago\",other:\"{0} yr. ago\"}}},month:{displayName:\"month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{one:\"in {0} month\",other:\"in {0} months\"},past:{one:\"{0} month ago\",other:\"{0} months ago\"}}},\"month-short\":{displayName:\"mo.\",relative:{0:\"this mo.\",1:\"next mo.\",\"-1\":\"last mo.\"},relativeTime:{future:{one:\"in {0} mo.\",other:\"in {0} mo.\"},past:{one:\"{0} mo. ago\",other:\"{0} mo. ago\"}}},day:{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},\"day-short\":{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},hour:{displayName:\"hour\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hour\",other:\"in {0} hours\"},past:{one:\"{0} hour ago\",other:\"{0} hours ago\"}}},\"hour-short\":{displayName:\"hr.\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hr.\",other:\"in {0} hr.\"},past:{one:\"{0} hr. ago\",other:\"{0} hr. ago\"}}},minute:{displayName:\"minute\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} minute\",other:\"in {0} minutes\"},past:{one:\"{0} minute ago\",other:\"{0} minutes ago\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} min.\",other:\"in {0} min.\"},past:{one:\"{0} min. ago\",other:\"{0} min. ago\"}}},second:{displayName:\"second\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} second\",other:\"in {0} seconds\"},past:{one:\"{0} second ago\",other:\"{0} seconds ago\"}}},\"second-short\":{displayName:\"sec.\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} sec.\",other:\"in {0} sec.\"},past:{one:\"{0} sec. ago\",other:\"{0} sec. ago\"}}}}},{locale:\"en-001\",parentLocale:\"en\",fields:{year:{displayName:\"year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{one:\"in {0} year\",other:\"in {0} years\"},past:{one:\"{0} year ago\",other:\"{0} years ago\"}}},\"year-short\":{displayName:\"yr\",relative:{0:\"this yr.\",1:\"next yr.\",\"-1\":\"last yr.\"},relativeTime:{future:{one:\"in {0} yr\",other:\"in {0} yr\"},past:{one:\"{0} yr ago\",other:\"{0} yr ago\"}}},month:{displayName:\"month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{one:\"in {0} month\",other:\"in {0} months\"},past:{one:\"{0} month ago\",other:\"{0} months ago\"}}},\"month-short\":{displayName:\"mo\",relative:{0:\"this mo.\",1:\"next mo.\",\"-1\":\"last mo.\"},relativeTime:{future:{one:\"in {0} mo\",other:\"in {0} mo\"},past:{one:\"{0} mo ago\",other:\"{0} mo ago\"}}},day:{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},\"day-short\":{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},hour:{displayName:\"hour\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hour\",other:\"in {0} hours\"},past:{one:\"{0} hour ago\",other:\"{0} hours ago\"}}},\"hour-short\":{displayName:\"hr\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hr\",other:\"in {0} hr\"},past:{one:\"{0} hr ago\",other:\"{0} hr ago\"}}},minute:{displayName:\"minute\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} minute\",other:\"in {0} minutes\"},past:{one:\"{0} minute ago\",other:\"{0} minutes ago\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} min\",other:\"in {0} min\"},past:{one:\"{0} min ago\",other:\"{0} min ago\"}}},second:{displayName:\"second\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} second\",other:\"in {0} seconds\"},past:{one:\"{0} second ago\",other:\"{0} seconds ago\"}}},\"second-short\":{displayName:\"sec\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} sec\",other:\"in {0} sec\"},past:{one:\"{0} sec ago\",other:\"{0} sec ago\"}}}}},{locale:\"en-150\",parentLocale:\"en-001\"},{locale:\"en-AG\",parentLocale:\"en-001\"},{locale:\"en-AI\",parentLocale:\"en-001\"},{locale:\"en-AS\",parentLocale:\"en\"},{locale:\"en-AT\",parentLocale:\"en-150\"},{locale:\"en-AU\",parentLocale:\"en-001\",fields:{year:{displayName:\"year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{one:\"in {0} year\",other:\"in {0} years\"},past:{one:\"{0} year ago\",other:\"{0} years ago\"}}},\"year-short\":{displayName:\"yr\",relative:{0:\"this yr.\",1:\"next yr.\",\"-1\":\"last yr.\"},relativeTime:{future:{one:\"in {0} yr\",other:\"in {0} yrs\"},past:{one:\"{0} yr ago\",other:\"{0} yrs ago\"}}},month:{displayName:\"month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{one:\"in {0} month\",other:\"in {0} months\"},past:{one:\"{0} month ago\",other:\"{0} months ago\"}}},\"month-short\":{displayName:\"mo.\",relative:{0:\"this mo.\",1:\"next mo.\",\"-1\":\"last mo.\"},relativeTime:{future:{one:\"in {0} mo.\",other:\"in {0} mo.\"},past:{one:\"{0} mo. ago\",other:\"{0} mo. ago\"}}},day:{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},\"day-short\":{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},hour:{displayName:\"hour\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hour\",other:\"in {0} hours\"},past:{one:\"{0} hour ago\",other:\"{0} hours ago\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hr\",other:\"in {0} hrs\"},past:{one:\"{0} hr ago\",other:\"{0} hrs ago\"}}},minute:{displayName:\"minute\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} minute\",other:\"in {0} minutes\"},past:{one:\"{0} minute ago\",other:\"{0} minutes ago\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} min.\",other:\"in {0} mins\"},past:{one:\"{0} min. ago\",other:\"{0} mins ago\"}}},second:{displayName:\"second\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} second\",other:\"in {0} seconds\"},past:{one:\"{0} second ago\",other:\"{0} seconds ago\"}}},\"second-short\":{displayName:\"sec.\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} sec.\",other:\"in {0} secs\"},past:{one:\"{0} sec. ago\",other:\"{0} secs ago\"}}}}},{locale:\"en-BB\",parentLocale:\"en-001\"},{locale:\"en-BE\",parentLocale:\"en-001\"},{locale:\"en-BI\",parentLocale:\"en\"},{locale:\"en-BM\",parentLocale:\"en-001\"},{locale:\"en-BS\",parentLocale:\"en-001\"},{locale:\"en-BW\",parentLocale:\"en-001\"},{locale:\"en-BZ\",parentLocale:\"en-001\"},{locale:\"en-CA\",parentLocale:\"en-001\",fields:{year:{displayName:\"year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{one:\"in {0} year\",other:\"in {0} years\"},past:{one:\"{0} year ago\",other:\"{0} years ago\"}}},\"year-short\":{displayName:\"yr.\",relative:{0:\"this yr.\",1:\"next yr.\",\"-1\":\"last yr.\"},relativeTime:{future:{one:\"in {0} yr.\",other:\"in {0} yrs.\"},past:{one:\"{0} yr. ago\",other:\"{0} yrs. ago\"}}},month:{displayName:\"month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{one:\"in {0} month\",other:\"in {0} months\"},past:{one:\"{0} month ago\",other:\"{0} months ago\"}}},\"month-short\":{displayName:\"mo.\",relative:{0:\"this mo.\",1:\"next mo.\",\"-1\":\"last mo.\"},relativeTime:{future:{one:\"in {0} mo.\",other:\"in {0} mos.\"},past:{one:\"{0} mo. ago\",other:\"{0} mos. ago\"}}},day:{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},\"day-short\":{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},hour:{displayName:\"hour\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hour\",other:\"in {0} hours\"},past:{one:\"{0} hour ago\",other:\"{0} hours ago\"}}},\"hour-short\":{displayName:\"hr.\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hr.\",other:\"in {0} hrs.\"},past:{one:\"{0} hr. ago\",other:\"{0} hrs. ago\"}}},minute:{displayName:\"minute\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} minute\",other:\"in {0} minutes\"},past:{one:\"{0} minute ago\",other:\"{0} minutes ago\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} min.\",other:\"in {0} mins.\"},past:{one:\"{0} min. ago\",other:\"{0} mins. ago\"}}},second:{displayName:\"second\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} second\",other:\"in {0} seconds\"},past:{one:\"{0} second ago\",other:\"{0} seconds ago\"}}},\"second-short\":{displayName:\"sec.\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} sec.\",other:\"in {0} secs.\"},past:{one:\"{0} sec. ago\",other:\"{0} secs. ago\"}}}}},{locale:\"en-CC\",parentLocale:\"en-001\"},{locale:\"en-CH\",parentLocale:\"en-150\"},{locale:\"en-CK\",parentLocale:\"en-001\"},{locale:\"en-CM\",parentLocale:\"en-001\"},{locale:\"en-CX\",parentLocale:\"en-001\"},{locale:\"en-CY\",parentLocale:\"en-001\"},{locale:\"en-DE\",parentLocale:\"en-150\"},{locale:\"en-DG\",parentLocale:\"en-001\"},{locale:\"en-DK\",parentLocale:\"en-150\"},{locale:\"en-DM\",parentLocale:\"en-001\"},{locale:\"en-Dsrt\",pluralRuleFunction:function(e,a){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"en-ER\",parentLocale:\"en-001\"},{locale:\"en-FI\",parentLocale:\"en-150\"},{locale:\"en-FJ\",parentLocale:\"en-001\"},{locale:\"en-FK\",parentLocale:\"en-001\"},{locale:\"en-FM\",parentLocale:\"en-001\"},{locale:\"en-GB\",parentLocale:\"en-001\"},{locale:\"en-GD\",parentLocale:\"en-001\"},{locale:\"en-GG\",parentLocale:\"en-001\"},{locale:\"en-GH\",parentLocale:\"en-001\"},{locale:\"en-GI\",parentLocale:\"en-001\"},{locale:\"en-GM\",parentLocale:\"en-001\"},{locale:\"en-GU\",parentLocale:\"en\"},{locale:\"en-GY\",parentLocale:\"en-001\"},{locale:\"en-HK\",parentLocale:\"en-001\"},{locale:\"en-IE\",parentLocale:\"en-001\"},{locale:\"en-IL\",parentLocale:\"en-001\"},{locale:\"en-IM\",parentLocale:\"en-001\"},{locale:\"en-IN\",parentLocale:\"en-001\"},{locale:\"en-IO\",parentLocale:\"en-001\"},{locale:\"en-JE\",parentLocale:\"en-001\"},{locale:\"en-JM\",parentLocale:\"en-001\"},{locale:\"en-KE\",parentLocale:\"en-001\"},{locale:\"en-KI\",parentLocale:\"en-001\"},{locale:\"en-KN\",parentLocale:\"en-001\"},{locale:\"en-KY\",parentLocale:\"en-001\"},{locale:\"en-LC\",parentLocale:\"en-001\"},{locale:\"en-LR\",parentLocale:\"en-001\"},{locale:\"en-LS\",parentLocale:\"en-001\"},{locale:\"en-MG\",parentLocale:\"en-001\"},{locale:\"en-MH\",parentLocale:\"en\"},{locale:\"en-MO\",parentLocale:\"en-001\"},{locale:\"en-MP\",parentLocale:\"en\"},{locale:\"en-MS\",parentLocale:\"en-001\"},{locale:\"en-MT\",parentLocale:\"en-001\"},{locale:\"en-MU\",parentLocale:\"en-001\"},{locale:\"en-MW\",parentLocale:\"en-001\"},{locale:\"en-MY\",parentLocale:\"en-001\"},{locale:\"en-NA\",parentLocale:\"en-001\"},{locale:\"en-NF\",parentLocale:\"en-001\"},{locale:\"en-NG\",parentLocale:\"en-001\"},{locale:\"en-NL\",parentLocale:\"en-150\"},{locale:\"en-NR\",parentLocale:\"en-001\"},{locale:\"en-NU\",parentLocale:\"en-001\"},{locale:\"en-NZ\",parentLocale:\"en-001\"},{locale:\"en-PG\",parentLocale:\"en-001\"},{locale:\"en-PH\",parentLocale:\"en-001\"},{locale:\"en-PK\",parentLocale:\"en-001\"},{locale:\"en-PN\",parentLocale:\"en-001\"},{locale:\"en-PR\",parentLocale:\"en\"},{locale:\"en-PW\",parentLocale:\"en-001\"},{locale:\"en-RW\",parentLocale:\"en-001\"},{locale:\"en-SB\",parentLocale:\"en-001\"},{locale:\"en-SC\",parentLocale:\"en-001\"},{locale:\"en-SD\",parentLocale:\"en-001\"},{locale:\"en-SE\",parentLocale:\"en-150\"},{locale:\"en-SG\",parentLocale:\"en-001\",fields:{year:{displayName:\"year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{one:\"in {0} year\",other:\"in {0} years\"},past:{one:\"{0} year ago\",other:\"{0} years ago\"}}},\"year-short\":{displayName:\"yr\",relative:{0:\"this yr\",1:\"next yr\",\"-1\":\"last yr\"},relativeTime:{future:{one:\"in {0} yr\",other:\"in {0} yr\"},past:{one:\"{0} yr ago\",other:\"{0} yr ago\"}}},month:{displayName:\"month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{one:\"in {0} month\",other:\"in {0} months\"},past:{one:\"{0} month ago\",other:\"{0} months ago\"}}},\"month-short\":{displayName:\"mth\",relative:{0:\"this mth\",1:\"next mth\",\"-1\":\"last mth\"},relativeTime:{future:{one:\"in {0} mth\",other:\"in {0} mth\"},past:{one:\"{0} mth ago\",other:\"{0} mth ago\"}}},day:{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},\"day-short\":{displayName:\"day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{one:\"in {0} day\",other:\"in {0} days\"},past:{one:\"{0} day ago\",other:\"{0} days ago\"}}},hour:{displayName:\"hour\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hour\",other:\"in {0} hours\"},past:{one:\"{0} hour ago\",other:\"{0} hours ago\"}}},\"hour-short\":{displayName:\"hr\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"in {0} hr\",other:\"in {0} hr\"},past:{one:\"{0} hr ago\",other:\"{0} hr ago\"}}},minute:{displayName:\"minute\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} minute\",other:\"in {0} minutes\"},past:{one:\"{0} minute ago\",other:\"{0} minutes ago\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"in {0} min\",other:\"in {0} min\"},past:{one:\"{0} min ago\",other:\"{0} min ago\"}}},second:{displayName:\"second\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} second\",other:\"in {0} seconds\"},past:{one:\"{0} second ago\",other:\"{0} seconds ago\"}}},\"second-short\":{displayName:\"sec\",relative:{0:\"now\"},relativeTime:{future:{one:\"in {0} sec\",other:\"in {0} sec\"},past:{one:\"{0} sec ago\",other:\"{0} sec ago\"}}}}},{locale:\"en-SH\",parentLocale:\"en-001\"},{locale:\"en-SI\",parentLocale:\"en-150\"},{locale:\"en-SL\",parentLocale:\"en-001\"},{locale:\"en-SS\",parentLocale:\"en-001\"},{locale:\"en-SX\",parentLocale:\"en-001\"},{locale:\"en-SZ\",parentLocale:\"en-001\"},{locale:\"en-Shaw\",pluralRuleFunction:function(e,a){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"en-TC\",parentLocale:\"en-001\"},{locale:\"en-TK\",parentLocale:\"en-001\"},{locale:\"en-TO\",parentLocale:\"en-001\"},{locale:\"en-TT\",parentLocale:\"en-001\"},{locale:\"en-TV\",parentLocale:\"en-001\"},{locale:\"en-TZ\",parentLocale:\"en-001\"},{locale:\"en-UG\",parentLocale:\"en-001\"},{locale:\"en-UM\",parentLocale:\"en\"},{locale:\"en-US\",parentLocale:\"en\"},{locale:\"en-VC\",parentLocale:\"en-001\"},{locale:\"en-VG\",parentLocale:\"en-001\"},{locale:\"en-VI\",parentLocale:\"en\"},{locale:\"en-VU\",parentLocale:\"en-001\"},{locale:\"en-WS\",parentLocale:\"en-001\"},{locale:\"en-ZA\",parentLocale:\"en-001\"},{locale:\"en-ZM\",parentLocale:\"en-001\"},{locale:\"en-ZW\",parentLocale:\"en-001\"}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.af=a())}(this,function(){\"use strict\";return[{locale:\"af\",pluralRuleFunction:function(e,a){return a?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"jaar\",relative:{0:\"hierdie jaar\",1:\"volgende jaar\",\"-1\":\"verlede jaar\"},relativeTime:{future:{one:\"oor {0} jaar\",other:\"oor {0} jaar\"},past:{one:\"{0} jaar gelede\",other:\"{0} jaar gelede\"}}},\"year-short\":{displayName:\"j.\",relative:{0:\"hierdie jaar\",1:\"volgende jaar\",\"-1\":\"verlede jaar\"},relativeTime:{future:{one:\"oor {0} j.\",other:\"oor {0} j.\"},past:{one:\"{0} j. gelede\",other:\"{0} j. gelede\"}}},month:{displayName:\"maand\",relative:{0:\"vandeesmaand\",1:\"volgende maand\",\"-1\":\"verlede maand\"},relativeTime:{future:{one:\"oor {0} maand\",other:\"oor {0} maande\"},past:{one:\"{0} maand gelede\",other:\"{0} maande gelede\"}}},\"month-short\":{displayName:\"md.\",relative:{0:\"vandeesmaand\",1:\"volgende maand\",\"-1\":\"verlede maand\"},relativeTime:{future:{one:\"oor {0} md.\",other:\"oor {0} md.\"},past:{one:\"{0} md. gelede\",other:\"{0} md. gelede\"}}},day:{displayName:\"dag\",relative:{0:\"vandag\",1:\"môre\",2:\"oormôre\",\"-2\":\"eergister\",\"-1\":\"gister\"},relativeTime:{future:{one:\"oor {0} dag\",other:\"oor {0} dae\"},past:{one:\"{0} dag gelede\",other:\"{0} dae gelede\"}}},\"day-short\":{displayName:\"d.\",relative:{0:\"vandag\",1:\"môre\",2:\"oormôre\",\"-2\":\"eergister\",\"-1\":\"gister\"},relativeTime:{future:{one:\"oor {0} dag\",other:\"oor {0} dae\"},past:{one:\"{0} dag gelede\",other:\"{0} dae gelede\"}}},hour:{displayName:\"uur\",relative:{0:\"hierdie uur\"},relativeTime:{future:{one:\"oor {0} uur\",other:\"oor {0} uur\"},past:{one:\"{0} uur gelede\",other:\"{0} uur gelede\"}}},\"hour-short\":{displayName:\"u.\",relative:{0:\"hierdie uur\"},relativeTime:{future:{one:\"oor {0} u.\",other:\"oor {0} u.\"},past:{one:\"{0} u. gelede\",other:\"{0} u. gelede\"}}},minute:{displayName:\"minuut\",relative:{0:\"hierdie minuut\"},relativeTime:{future:{one:\"oor {0} minuut\",other:\"oor {0} minute\"},past:{one:\"{0} minuut gelede\",other:\"{0} minute gelede\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"hierdie minuut\"},relativeTime:{future:{one:\"oor {0} min.\",other:\"oor {0} min.\"},past:{one:\"{0} min. gelede\",other:\"{0} min. gelede\"}}},second:{displayName:\"sekonde\",relative:{0:\"nou\"},relativeTime:{future:{one:\"oor {0} sekonde\",other:\"oor {0} sekondes\"},past:{one:\"{0} sekonde gelede\",other:\"{0} sekondes gelede\"}}},\"second-short\":{displayName:\"s.\",relative:{0:\"nou\"},relativeTime:{future:{one:\"oor {0} s.\",other:\"oor {0} s.\"},past:{one:\"{0} s. gelede\",other:\"{0} s. gelede\"}}}}},{locale:\"af-NA\",parentLocale:\"af\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.am=t())}(this,function(){\"use strict\";return[{locale:\"am\",pluralRuleFunction:function(e,t){return t?\"other\":e>=0&&e<=1?\"one\":\"other\"},fields:{year:{displayName:\"ዓመት\",relative:{0:\"በዚህ ዓመት\",1:\"የሚቀጥለው ዓመት\",\"-1\":\"ያለፈው ዓመት\"},relativeTime:{future:{one:\"በ{0} ዓመታት ውስጥ\",other:\"በ{0} ዓመታት ውስጥ\"},past:{one:\"ከ{0} ዓመት በፊት\",other:\"ከ{0} ዓመታት በፊት\"}}},\"year-short\":{displayName:\"ዓመት\",relative:{0:\"በዚህ ዓመት\",1:\"የሚቀጥለው ዓመት\",\"-1\":\"ያለፈው ዓመት\"},relativeTime:{future:{one:\"በ{0} ዓመታት ውስጥ\",other:\"በ{0} ዓመታት ውስጥ\"},past:{one:\"ከ{0} ዓመታት በፊት\",other:\"ከ{0} ዓመታት በፊት\"}}},month:{displayName:\"ወር\",relative:{0:\"በዚህ ወር\",1:\"የሚቀጥለው ወር\",\"-1\":\"ያለፈው ወር\"},relativeTime:{future:{one:\"በ{0} ወር ውስጥ\",other:\"በ{0} ወራት ውስጥ\"},past:{one:\"ከ{0} ወር በፊት\",other:\"ከ{0} ወራት በፊት\"}}},\"month-short\":{displayName:\"ወር\",relative:{0:\"በዚህ ወር\",1:\"የሚቀጥለው ወር\",\"-1\":\"ያለፈው ወር\"},relativeTime:{future:{one:\"በ{0} ወራት ውስጥ\",other:\"በ{0} ወራት ውስጥ\"},past:{one:\"ከ{0} ወራት በፊት\",other:\"ከ{0} ወራት በፊት\"}}},day:{displayName:\"ቀን\",relative:{0:\"ዛሬ\",1:\"ነገ\",2:\"ከነገ ወዲያ\",\"-2\":\"ከትናንት ወዲያ\",\"-1\":\"ትናንት\"},relativeTime:{future:{one:\"በ{0} ቀን ውስጥ\",other:\"በ{0} ቀናት ውስጥ\"},past:{one:\"ከ{0} ቀን በፊት\",other:\"ከ{0} ቀናት በፊት\"}}},\"day-short\":{displayName:\"ቀን\",relative:{0:\"ዛሬ\",1:\"ነገ\",2:\"ከነገ ወዲያ\",\"-2\":\"ከትናንት ወዲያ\",\"-1\":\"ትላንትና\"},relativeTime:{future:{one:\"በ{0} ቀን ውስጥ\",other:\"በ{0} ቀኖች ውስጥ\"},past:{one:\"ከ {0} ቀን በፊት\",other:\"ከ{0} ቀኖች በፊት\"}}},hour:{displayName:\"ሰዓት\",relative:{0:\"ይህ ሰዓት\"},relativeTime:{future:{one:\"በ{0} ሰዓት ውስጥ\",other:\"በ{0} ሰዓቶች ውስጥ\"},past:{one:\"ከ{0} ሰዓት በፊት\",other:\"ከ{0} ሰዓቶች በፊት\"}}},\"hour-short\":{displayName:\"ሰዓት\",relative:{0:\"ይህ ሰዓት\"},relativeTime:{future:{one:\"በ{0} ሰዓት ውስጥ\",other:\"በ{0} ሰዓቶች ውስጥ\"},past:{one:\"ከ{0} ሰዓት በፊት\",other:\"ከ{0} ሰዓቶች በፊት\"}}},minute:{displayName:\"ደቂቃ\",relative:{0:\"ይህ ደቂቃ\"},relativeTime:{future:{one:\"በ{0} ደቂቃ ውስጥ\",other:\"በ{0} ደቂቃዎች ውስጥ\"},past:{one:\"ከ{0} ደቂቃ በፊት\",other:\"ከ{0} ደቂቃዎች በፊት\"}}},\"minute-short\":{displayName:\"ደቂቃ\",relative:{0:\"ይህ ደቂቃ\"},relativeTime:{future:{one:\"በ{0} ደቂቃ ውስጥ\",other:\"በ{0} ደቂቃዎች ውስጥ\"},past:{one:\"ከ{0} ደቂቃ በፊት\",other:\"ከ{0} ደቂቃዎች በፊት\"}}},second:{displayName:\"ሰከንድ\",relative:{0:\"አሁን\"},relativeTime:{future:{one:\"በ{0} ሰከንድ ውስጥ\",other:\"በ{0} ሰከንዶች ውስጥ\"},past:{one:\"ከ{0} ሰከንድ በፊት\",other:\"ከ{0} ሰከንዶች በፊት\"}}},\"second-short\":{displayName:\"ሰከንድ\",relative:{0:\"አሁን\"},relativeTime:{future:{one:\"በ{0} ሰከንድ ውስጥ\",other:\"በ{0} ሰከንዶች ውስጥ\"},past:{one:\"ከ{0} ሰከንድ በፊት\",other:\"ከ{0} ሰከንዶች በፊት\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ar=a())}(this,function(){\"use strict\";return[{locale:\"ar\",pluralRuleFunction:function(e,a){var o=String(e).split(\".\"),r=Number(o[0])==e&&o[0].slice(-2);return a?\"other\":0==e?\"zero\":1==e?\"one\":2==e?\"two\":r>=3&&r<=10?\"few\":r>=11&&r<=99?\"many\":\"other\"},fields:{year:{displayName:\"السنة\",relative:{0:\"السنة الحالية\",1:\"السنة القادمة\",\"-1\":\"السنة الماضية\"},relativeTime:{future:{zero:\"خلال {0} سنة\",one:\"خلال سنة واحدة\",two:\"خلال سنتين\",few:\"خلال {0} سنوات\",many:\"خلال {0} سنة\",other:\"خلال {0} سنة\"},past:{zero:\"قبل {0} سنة\",one:\"قبل سنة واحدة\",two:\"قبل سنتين\",few:\"قبل {0} سنوات\",many:\"قبل {0} سنة\",other:\"قبل {0} سنة\"}}},\"year-short\":{displayName:\"السنة\",relative:{0:\"السنة الحالية\",1:\"السنة القادمة\",\"-1\":\"السنة الماضية\"},relativeTime:{future:{zero:\"خلال {0} سنة\",one:\"خلال سنة واحدة\",two:\"خلال سنتين\",few:\"خلال {0} سنوات\",many:\"خلال {0} سنة\",other:\"خلال {0} سنة\"},past:{zero:\"قبل {0} سنة\",one:\"قبل سنة واحدة\",two:\"قبل سنتين\",few:\"قبل {0} سنوات\",many:\"قبل {0} سنة\",other:\"قبل {0} سنة\"}}},month:{displayName:\"الشهر\",relative:{0:\"هذا الشهر\",1:\"الشهر القادم\",\"-1\":\"الشهر الماضي\"},relativeTime:{future:{zero:\"خلال {0} شهر\",one:\"خلال شهر واحد\",two:\"خلال شهرين\",few:\"خلال {0} أشهر\",many:\"خلال {0} شهرًا\",other:\"خلال {0} شهر\"},past:{zero:\"قبل {0} شهر\",one:\"قبل شهر واحد\",two:\"قبل شهرين\",few:\"قبل {0} أشهر\",many:\"قبل {0} شهرًا\",other:\"قبل {0} شهر\"}}},\"month-short\":{displayName:\"الشهر\",relative:{0:\"هذا الشهر\",1:\"الشهر القادم\",\"-1\":\"الشهر الماضي\"},relativeTime:{future:{zero:\"خلال {0} شهر\",one:\"خلال شهر واحد\",two:\"خلال شهرين\",few:\"خلال {0} أشهر\",many:\"خلال {0} شهرًا\",other:\"خلال {0} شهر\"},past:{zero:\"قبل {0} شهر\",one:\"قبل شهر واحد\",two:\"قبل شهرين\",few:\"خلال {0} أشهر\",many:\"قبل {0} شهرًا\",other:\"قبل {0} شهر\"}}},day:{displayName:\"يوم\",relative:{0:\"اليوم\",1:\"غدًا\",2:\"بعد الغد\",\"-2\":\"أول أمس\",\"-1\":\"أمس\"},relativeTime:{future:{zero:\"خلال {0} يوم\",one:\"خلال يوم واحد\",two:\"خلال يومين\",few:\"خلال {0} أيام\",many:\"خلال {0} يومًا\",other:\"خلال {0} يوم\"},past:{zero:\"قبل {0} يوم\",one:\"قبل يوم واحد\",two:\"قبل يومين\",few:\"قبل {0} أيام\",many:\"قبل {0} يومًا\",other:\"قبل {0} يوم\"}}},\"day-short\":{displayName:\"يوم\",relative:{0:\"اليوم\",1:\"غدًا\",2:\"بعد الغد\",\"-2\":\"أول أمس\",\"-1\":\"أمس\"},relativeTime:{future:{zero:\"خلال {0} يوم\",one:\"خلال يوم واحد\",two:\"خلال يومين\",few:\"خلال {0} أيام\",many:\"خلال {0} يومًا\",other:\"خلال {0} يوم\"},past:{zero:\"قبل {0} يوم\",one:\"قبل يوم واحد\",two:\"قبل يومين\",few:\"قبل {0} أيام\",many:\"قبل {0} يومًا\",other:\"قبل {0} يوم\"}}},hour:{displayName:\"الساعات\",relative:{0:\"الساعة الحالية\"},relativeTime:{future:{zero:\"خلال {0} ساعة\",one:\"خلال ساعة واحدة\",two:\"خلال ساعتين\",few:\"خلال {0} ساعات\",many:\"خلال {0} ساعة\",other:\"خلال {0} ساعة\"},past:{zero:\"قبل {0} ساعة\",one:\"قبل ساعة واحدة\",two:\"قبل ساعتين\",few:\"قبل {0} ساعات\",many:\"قبل {0} ساعة\",other:\"قبل {0} ساعة\"}}},\"hour-short\":{displayName:\"الساعات\",relative:{0:\"الساعة الحالية\"},relativeTime:{future:{zero:\"خلال {0} ساعة\",one:\"خلال ساعة واحدة\",two:\"خلال ساعتين\",few:\"خلال {0} ساعات\",many:\"خلال {0} ساعة\",other:\"خلال {0} ساعة\"},past:{zero:\"قبل {0} ساعة\",one:\"قبل ساعة واحدة\",two:\"قبل ساعتين\",few:\"قبل {0} ساعات\",many:\"قبل {0} ساعة\",other:\"قبل {0} ساعة\"}}},minute:{displayName:\"الدقائق\",relative:{0:\"هذه الدقيقة\"},relativeTime:{future:{zero:\"خلال {0} دقيقة\",one:\"خلال دقيقة واحدة\",two:\"خلال دقيقتين\",few:\"خلال {0} دقائق\",many:\"خلال {0} دقيقة\",other:\"خلال {0} دقيقة\"},past:{zero:\"قبل {0} دقيقة\",one:\"قبل دقيقة واحدة\",two:\"قبل دقيقتين\",few:\"قبل {0} دقائق\",many:\"قبل {0} دقيقة\",other:\"قبل {0} دقيقة\"}}},\"minute-short\":{displayName:\"الدقائق\",relative:{0:\"هذه الدقيقة\"},relativeTime:{future:{zero:\"خلال {0} دقيقة\",one:\"خلال دقيقة واحدة\",two:\"خلال دقيقتين\",few:\"خلال {0} دقائق\",many:\"خلال {0} دقيقة\",other:\"خلال {0} دقيقة\"},past:{zero:\"قبل {0} دقيقة\",one:\"قبل دقيقة واحدة\",two:\"قبل دقيقتين\",few:\"قبل {0} دقائق\",many:\"قبل {0} دقيقة\",other:\"قبل {0} دقيقة\"}}},second:{displayName:\"الثواني\",relative:{0:\"الآن\"},relativeTime:{future:{zero:\"خلال {0} ثانية\",one:\"خلال ثانية واحدة\",two:\"خلال ثانيتين\",few:\"خلال {0} ثوانٍ\",many:\"خلال {0} ثانية\",other:\"خلال {0} ثانية\"},past:{zero:\"قبل {0} ثانية\",one:\"قبل ثانية واحدة\",two:\"قبل ثانيتين\",few:\"قبل {0} ثوانِ\",many:\"قبل {0} ثانية\",other:\"قبل {0} ثانية\"}}},\"second-short\":{displayName:\"الثواني\",relative:{0:\"الآن\"},relativeTime:{future:{zero:\"خلال {0} ثانية\",one:\"خلال ثانية واحدة\",two:\"خلال ثانيتين\",few:\"خلال {0} ثوانٍ\",many:\"خلال {0} ثانية\",other:\"خلال {0} ثانية\"},past:{zero:\"قبل {0} ثانية\",one:\"قبل ثانية واحدة\",two:\"قبل ثانيتين\",few:\"قبل {0} ثوانٍ\",many:\"قبل {0} ثانية\",other:\"قبل {0} ثانية\"}}}}},{locale:\"ar-AE\",parentLocale:\"ar\",fields:{year:{displayName:\"السنة\",relative:{0:\"هذه السنة\",1:\"السنة التالية\",\"-1\":\"السنة الماضية\"},relativeTime:{future:{zero:\"خلال {0} سنة\",one:\"خلال سنة واحدة\",two:\"خلال سنتين\",few:\"خلال {0} سنوات\",many:\"خلال {0} سنة\",other:\"خلال {0} سنة\"},past:{zero:\"قبل {0} سنة\",one:\"قبل سنة واحدة\",two:\"قبل سنتين\",few:\"قبل {0} سنوات\",many:\"قبل {0} سنة\",other:\"قبل {0} سنة\"}}},\"year-short\":{displayName:\"السنة\",relative:{0:\"هذه السنة\",1:\"السنة التالية\",\"-1\":\"السنة الماضية\"},relativeTime:{future:{zero:\"خلال {0} سنة\",one:\"خلال سنة واحدة\",two:\"خلال سنتين\",few:\"خلال {0} سنوات\",many:\"خلال {0} سنة\",other:\"خلال {0} سنة\"},past:{zero:\"قبل {0} سنة\",one:\"قبل سنة واحدة\",two:\"قبل سنتين\",few:\"قبل {0} سنوات\",many:\"قبل {0} سنة\",other:\"قبل {0} سنة\"}}},month:{displayName:\"الشهر\",relative:{0:\"هذا الشهر\",1:\"الشهر القادم\",\"-1\":\"الشهر الماضي\"},relativeTime:{future:{zero:\"خلال {0} شهر\",one:\"خلال شهر واحد\",two:\"خلال شهرين\",few:\"خلال {0} أشهر\",many:\"خلال {0} شهرًا\",other:\"خلال {0} شهر\"},past:{zero:\"قبل {0} شهر\",one:\"قبل شهر واحد\",two:\"قبل شهرين\",few:\"قبل {0} أشهر\",many:\"قبل {0} شهرًا\",other:\"قبل {0} شهر\"}}},\"month-short\":{displayName:\"الشهر\",relative:{0:\"هذا الشهر\",1:\"الشهر القادم\",\"-1\":\"الشهر الماضي\"},relativeTime:{future:{zero:\"خلال {0} شهر\",one:\"خلال شهر واحد\",two:\"خلال شهرين\",few:\"خلال {0} أشهر\",many:\"خلال {0} شهرًا\",other:\"خلال {0} شهر\"},past:{zero:\"قبل {0} شهر\",one:\"قبل شهر واحد\",two:\"قبل شهرين\",few:\"خلال {0} أشهر\",many:\"قبل {0} شهرًا\",other:\"قبل {0} شهر\"}}},day:{displayName:\"يوم\",relative:{0:\"اليوم\",1:\"غدًا\",2:\"بعد الغد\",\"-2\":\"أول أمس\",\"-1\":\"أمس\"},relativeTime:{future:{zero:\"خلال {0} يوم\",one:\"خلال يوم واحد\",two:\"خلال يومين\",few:\"خلال {0} أيام\",many:\"خلال {0} يومًا\",other:\"خلال {0} يوم\"},past:{zero:\"قبل {0} يوم\",one:\"قبل يوم واحد\",two:\"قبل يومين\",few:\"قبل {0} أيام\",many:\"قبل {0} يومًا\",other:\"قبل {0} يوم\"}}},\"day-short\":{displayName:\"يوم\",relative:{0:\"اليوم\",1:\"غدًا\",2:\"بعد الغد\",\"-2\":\"أول أمس\",\"-1\":\"أمس\"},relativeTime:{future:{zero:\"خلال {0} يوم\",one:\"خلال يوم واحد\",two:\"خلال يومين\",few:\"خلال {0} أيام\",many:\"خلال {0} يومًا\",other:\"خلال {0} يوم\"},past:{zero:\"قبل {0} يوم\",one:\"قبل يوم واحد\",two:\"قبل يومين\",few:\"قبل {0} أيام\",many:\"قبل {0} يومًا\",other:\"قبل {0} يوم\"}}},hour:{displayName:\"الساعات\",relative:{0:\"الساعة الحالية\"},relativeTime:{future:{zero:\"خلال {0} ساعة\",one:\"خلال ساعة واحدة\",two:\"خلال ساعتين\",few:\"خلال {0} ساعات\",many:\"خلال {0} ساعة\",other:\"خلال {0} ساعة\"},past:{zero:\"قبل {0} ساعة\",one:\"قبل ساعة واحدة\",two:\"قبل ساعتين\",few:\"قبل {0} ساعات\",many:\"قبل {0} ساعة\",other:\"قبل {0} ساعة\"}}},\"hour-short\":{displayName:\"الساعات\",relative:{0:\"الساعة الحالية\"},relativeTime:{future:{zero:\"خلال {0} ساعة\",one:\"خلال ساعة واحدة\",two:\"خلال ساعتين\",few:\"خلال {0} ساعات\",many:\"خلال {0} ساعة\",other:\"خلال {0} ساعة\"},past:{zero:\"قبل {0} ساعة\",one:\"قبل ساعة واحدة\",two:\"قبل ساعتين\",few:\"قبل {0} ساعات\",many:\"قبل {0} ساعة\",other:\"قبل {0} ساعة\"}}},minute:{displayName:\"الدقائق\",relative:{0:\"هذه الدقيقة\"},relativeTime:{future:{zero:\"خلال {0} دقيقة\",one:\"خلال دقيقة واحدة\",two:\"خلال دقيقتين\",few:\"خلال {0} دقائق\",many:\"خلال {0} دقيقة\",other:\"خلال {0} دقيقة\"},past:{zero:\"قبل {0} دقيقة\",one:\"قبل دقيقة واحدة\",two:\"قبل دقيقتين\",few:\"قبل {0} دقائق\",many:\"قبل {0} دقيقة\",other:\"قبل {0} دقيقة\"}}},\"minute-short\":{displayName:\"الدقائق\",relative:{0:\"هذه الدقيقة\"},relativeTime:{future:{zero:\"خلال {0} دقيقة\",one:\"خلال دقيقة واحدة\",two:\"خلال دقيقتين\",few:\"خلال {0} دقائق\",many:\"خلال {0} دقيقة\",other:\"خلال {0} دقيقة\"},past:{zero:\"قبل {0} دقيقة\",one:\"قبل دقيقة واحدة\",two:\"قبل دقيقتين\",few:\"قبل {0} دقائق\",many:\"قبل {0} دقيقة\",other:\"قبل {0} دقيقة\"}}},second:{displayName:\"الثواني\",relative:{0:\"الآن\"},relativeTime:{future:{zero:\"خلال {0} ثانية\",one:\"خلال ثانية واحدة\",two:\"خلال ثانيتين\",few:\"خلال {0} ثوانٍ\",many:\"خلال {0} ثانية\",other:\"خلال {0} ثانية\"},past:{zero:\"قبل {0} ثانية\",one:\"قبل ثانية واحدة\",two:\"قبل ثانيتين\",few:\"قبل {0} ثوانِ\",many:\"قبل {0} ثانية\",other:\"قبل {0} ثانية\"}}},\"second-short\":{displayName:\"الثواني\",relative:{0:\"الآن\"},relativeTime:{future:{zero:\"خلال {0} ثانية\",one:\"خلال ثانية واحدة\",two:\"خلال ثانيتين\",few:\"خلال {0} ثوانٍ\",many:\"خلال {0} ثانية\",other:\"خلال {0} ثانية\"},past:{zero:\"قبل {0} ثانية\",one:\"قبل ثانية واحدة\",two:\"قبل ثانيتين\",few:\"قبل {0} ثوانٍ\",many:\"قبل {0} ثانية\",other:\"قبل {0} ثانية\"}}}}},{locale:\"ar-BH\",parentLocale:\"ar\"},{locale:\"ar-DJ\",parentLocale:\"ar\"},{locale:\"ar-DZ\",parentLocale:\"ar\"},{locale:\"ar-EG\",parentLocale:\"ar\"},{locale:\"ar-EH\",parentLocale:\"ar\"},{locale:\"ar-ER\",parentLocale:\"ar\"},{locale:\"ar-IL\",parentLocale:\"ar\"},{locale:\"ar-IQ\",parentLocale:\"ar\"},{locale:\"ar-JO\",parentLocale:\"ar\"},{locale:\"ar-KM\",parentLocale:\"ar\"},{locale:\"ar-KW\",parentLocale:\"ar\"},{locale:\"ar-LB\",parentLocale:\"ar\"},{locale:\"ar-LY\",parentLocale:\"ar\"},{locale:\"ar-MA\",parentLocale:\"ar\"},{locale:\"ar-MR\",parentLocale:\"ar\"},{locale:\"ar-OM\",parentLocale:\"ar\"},{locale:\"ar-PS\",parentLocale:\"ar\"},{locale:\"ar-QA\",parentLocale:\"ar\"},{locale:\"ar-SA\",parentLocale:\"ar\"},{locale:\"ar-SD\",parentLocale:\"ar\"},{locale:\"ar-SO\",parentLocale:\"ar\"},{locale:\"ar-SS\",parentLocale:\"ar\"},{locale:\"ar-SY\",parentLocale:\"ar\"},{locale:\"ar-TD\",parentLocale:\"ar\"},{locale:\"ar-TN\",parentLocale:\"ar\"},{locale:\"ar-YE\",parentLocale:\"ar\"}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ast=a())}(this,function(){\"use strict\";return[{locale:\"ast\",pluralRuleFunction:function(e,a){var t=!String(e).split(\".\")[1];return a?\"other\":1==e&&t?\"one\":\"other\"},fields:{year:{displayName:\"añu\",relative:{0:\"esti añu\",1:\"l’añu viniente\",\"-1\":\"l’añu pasáu\"},relativeTime:{future:{one:\"en {0} añu\",other:\"en {0} años\"},past:{one:\"hai {0} añu\",other:\"hai {0} años\"}}},\"year-short\":{displayName:\"añu\",relative:{0:\"esti añu\",1:\"l’añu vin.\",\"-1\":\"l’añu pas.\"},relativeTime:{future:{one:\"en {0} añu\",other:\"en {0} años\"},past:{one:\"hai {0} añu\",other:\"hai {0} años\"}}},month:{displayName:\"mes\",relative:{0:\"esti mes\",1:\"el mes viniente\",\"-1\":\"el mes pasáu\"},relativeTime:{future:{one:\"en {0} mes\",other:\"en {0} meses\"},past:{one:\"hai {0} mes\",other:\"hai {0} meses\"}}},\"month-short\":{displayName:\"mes\",relative:{0:\"esti mes\",1:\"mes vin.\",\"-1\":\"mes pas.\"},relativeTime:{future:{one:\"en {0} mes\",other:\"en {0} meses\"},past:{one:\"hai {0} mes\",other:\"hai {0} meses\"}}},day:{displayName:\"día\",relative:{0:\"güei\",1:\"mañana\",2:\"pasao mañana\",\"-2\":\"antayeri\",\"-1\":\"ayeri\"},relativeTime:{future:{one:\"en {0} día\",other:\"en {0} díes\"},past:{one:\"hai {0} día\",other:\"hai {0} díes\"}}},\"day-short\":{displayName:\"día\",relative:{0:\"güei\",1:\"mañana\",2:\"pasao mañana\",\"-2\":\"antayeri\",\"-1\":\"ayeri\"},relativeTime:{future:{one:\"en {0} día\",other:\"en {0} díes\"},past:{one:\"hai {0} día\",other:\"hai {0} díes\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"en {0} hora\",other:\"en {0} hores\"},past:{one:\"hai {0} hora\",other:\"hai {0} hores\"}}},\"hour-short\":{displayName:\"h.\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"en {0} h.\",other:\"en {0} h.\"},past:{one:\"hai {0} h.\",other:\"hai {0} h.\"}}},minute:{displayName:\"minutu\",relative:{0:\"esti minutu\"},relativeTime:{future:{one:\"en {0} minutu\",other:\"en {0} minutos\"},past:{one:\"hai {0} minutu\",other:\"hai {0} minutos\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"esti min.\"},relativeTime:{future:{one:\"en {0} min.\",other:\"en {0} min.\"},past:{one:\"hai {0} min.\",other:\"hai {0} min.\"}}},second:{displayName:\"segundu\",relative:{0:\"agora\"},relativeTime:{future:{one:\"en {0} segundu\",other:\"en {0} segundos\"},past:{one:\"hai {0} segundu\",other:\"hai {0} segundos\"}}},\"second-short\":{displayName:\"s.\",relative:{0:\"agora\"},relativeTime:{future:{one:\"en {0} seg.\",other:\"en {0} seg.\"},past:{one:\"hai {0} seg.\",other:\"hai {0} seg.\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.az=t())}(this,function(){\"use strict\";return[{locale:\"az\",pluralRuleFunction:function(e,t){var a=String(e).split(\".\")[0],r=a.slice(-1),i=a.slice(-2),o=a.slice(-3);return t?1==r||2==r||5==r||7==r||8==r||20==i||50==i||70==i||80==i?\"one\":3==r||4==r||100==o||200==o||300==o||400==o||500==o||600==o||700==o||800==o||900==o?\"few\":0==a||6==r||40==i||60==i||90==i?\"many\":\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"İl\",relative:{0:\"bu il\",1:\"gələn il\",\"-1\":\"keçən il\"},relativeTime:{future:{one:\"{0} il ərzində\",other:\"{0} il ərzində\"},past:{one:\"{0} il öncə\",other:\"{0} il öncə\"}}},\"year-short\":{displayName:\"il\",relative:{0:\"bu il\",1:\"gələn il\",\"-1\":\"keçən il\"},relativeTime:{future:{one:\"{0} il ərzində\",other:\"{0} il ərzində\"},past:{one:\"{0} il öncə\",other:\"{0} il öncə\"}}},month:{displayName:\"Ay\",relative:{0:\"bu ay\",1:\"gələn ay\",\"-1\":\"keçən ay\"},relativeTime:{future:{one:\"{0} ay ərzində\",other:\"{0} ay ərzində\"},past:{one:\"{0} ay öncə\",other:\"{0} ay öncə\"}}},\"month-short\":{displayName:\"ay\",relative:{0:\"bu ay\",1:\"gələn ay\",\"-1\":\"keçən ay\"},relativeTime:{future:{one:\"{0} ay ərzində\",other:\"{0} ay ərzində\"},past:{one:\"{0} ay öncə\",other:\"{0} ay öncə\"}}},day:{displayName:\"Gün\",relative:{0:\"bu gün\",1:\"sabah\",\"-1\":\"dünən\"},relativeTime:{future:{one:\"{0} gün ərzində\",other:\"{0} gün ərzində\"},past:{one:\"{0} gün öncə\",other:\"{0} gün öncə\"}}},\"day-short\":{displayName:\"Gün\",relative:{0:\"bu gün\",1:\"sabah\",\"-1\":\"dünən\"},relativeTime:{future:{one:\"{0} gün ərzində\",other:\"{0} gün ərzində\"},past:{one:\"{0} gün öncə\",other:\"{0} gün öncə\"}}},hour:{displayName:\"Saat\",relative:{0:\"bu saat\"},relativeTime:{future:{one:\"{0} saat ərzində\",other:\"{0} saat ərzində\"},past:{one:\"{0} saat öncə\",other:\"{0} saat öncə\"}}},\"hour-short\":{displayName:\"saat\",relative:{0:\"bu saat\"},relativeTime:{future:{one:\"{0} saat ərzində\",other:\"{0} saat ərzində\"},past:{one:\"{0} saat öncə\",other:\"{0} saat öncə\"}}},minute:{displayName:\"Dəqiqə\",relative:{0:\"bu dəqiqə\"},relativeTime:{future:{one:\"{0} dəqiqə ərzində\",other:\"{0} dəqiqə ərzində\"},past:{one:\"{0} dəqiqə öncə\",other:\"{0} dəqiqə öncə\"}}},\"minute-short\":{displayName:\"dəq.\",relative:{0:\"bu dəqiqə\"},relativeTime:{future:{one:\"{0} dəqiqə ərzində\",other:\"{0} dəqiqə ərzində\"},past:{one:\"{0} dəqiqə öncə\",other:\"{0} dəqiqə öncə\"}}},second:{displayName:\"Saniyə\",relative:{0:\"indi\"},relativeTime:{future:{one:\"{0} saniyə ərzində\",other:\"{0} saniyə ərzində\"},past:{one:\"{0} saniyə öncə\",other:\"{0} saniyə öncə\"}}},\"second-short\":{displayName:\"san.\",relative:{0:\"indi\"},relativeTime:{future:{one:\"{0} saniyə ərzində\",other:\"{0} saniyə ərzində\"},past:{one:\"{0} saniyə öncə\",other:\"{0} saniyə öncə\"}}}}},{locale:\"az-Arab\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"az-Cyrl\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"az-Latn\",parentLocale:\"az\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.be=t())}(this,function(){\"use strict\";return[{locale:\"be\",pluralRuleFunction:function(e,t){var a=String(e).split(\".\"),r=Number(a[0])==e,o=r&&a[0].slice(-1),n=r&&a[0].slice(-2);return t?2!=o&&3!=o||12==n||13==n?\"other\":\"few\":1==o&&11!=n?\"one\":o>=2&&o<=4&&(n<12||n>14)?\"few\":r&&0==o||o>=5&&o<=9||n>=11&&n<=14?\"many\":\"other\"},fields:{year:{displayName:\"год\",relative:{0:\"у гэтым годзе\",1:\"у наступным годзе\",\"-1\":\"у мінулым годзе\"},relativeTime:{future:{one:\"праз {0} год\",few:\"праз {0} гады\",many:\"праз {0} гадоў\",other:\"праз {0} года\"},past:{one:\"{0} год таму\",few:\"{0} гады таму\",many:\"{0} гадоў таму\",other:\"{0} года таму\"}}},\"year-short\":{displayName:\"г.\",relative:{0:\"у гэтым годзе\",1:\"у наступным годзе\",\"-1\":\"у мінулым годзе\"},relativeTime:{future:{one:\"праз {0} г.\",few:\"праз {0} г.\",many:\"праз {0} г.\",other:\"праз {0} г.\"},past:{one:\"{0} г. таму\",few:\"{0} г. таму\",many:\"{0} г. таму\",other:\"{0} г. таму\"}}},month:{displayName:\"месяц\",relative:{0:\"у гэтым месяцы\",1:\"у наступным месяцы\",\"-1\":\"у мінулым месяцы\"},relativeTime:{future:{one:\"праз {0} месяц\",few:\"праз {0} месяцы\",many:\"праз {0} месяцаў\",other:\"праз {0} месяца\"},past:{one:\"{0} месяц таму\",few:\"{0} месяцы таму\",many:\"{0} месяцаў таму\",other:\"{0} месяца таму\"}}},\"month-short\":{displayName:\"мес.\",relative:{0:\"у гэтым месяцы\",1:\"у наступным месяцы\",\"-1\":\"у мінулым месяцы\"},relativeTime:{future:{one:\"праз {0} мес.\",few:\"праз {0} мес.\",many:\"праз {0} мес.\",other:\"праз {0} мес.\"},past:{one:\"{0} мес. таму\",few:\"{0} мес. таму\",many:\"{0} мес. таму\",other:\"{0} мес. таму\"}}},day:{displayName:\"дзень\",relative:{0:\"сёння\",1:\"заўтра\",2:\"паслязаўтра\",\"-2\":\"пазаўчора\",\"-1\":\"учора\"},relativeTime:{future:{one:\"праз {0} дзень\",few:\"праз {0} дні\",many:\"праз {0} дзён\",other:\"праз {0} дня\"},past:{one:\"{0} дзень таму\",few:\"{0} дні таму\",many:\"{0} дзён таму\",other:\"{0} дня таму\"}}},\"day-short\":{displayName:\"дзень\",relative:{0:\"сёння\",1:\"заўтра\",2:\"паслязаўтра\",\"-2\":\"пазаўчора\",\"-1\":\"учора\"},relativeTime:{future:{one:\"праз {0} дзень\",few:\"праз {0} дні\",many:\"праз {0} дзён\",other:\"праз {0} дня\"},past:{one:\"{0} дзень таму\",few:\"{0} дні таму\",many:\"{0} дзён таму\",other:\"{0} дня таму\"}}},hour:{displayName:\"гадзіна\",relative:{0:\"у гэту гадзіну\"},relativeTime:{future:{one:\"праз {0} гадзіну\",few:\"праз {0} гадзіны\",many:\"праз {0} гадзін\",other:\"праз {0} гадзіны\"},past:{one:\"{0} гадзіну таму\",few:\"{0} гадзіны таму\",many:\"{0} гадзін таму\",other:\"{0} гадзіны таму\"}}},\"hour-short\":{displayName:\"гадз\",relative:{0:\"у гэту гадзіну\"},relativeTime:{future:{one:\"праз {0} гадз\",few:\"праз {0} гадз\",many:\"праз {0} гадз\",other:\"праз {0} гадз\"},past:{one:\"{0} гадз таму\",few:\"{0} гадз таму\",many:\"{0} гадз таму\",other:\"{0} гадз таму\"}}},minute:{displayName:\"хвіліна\",relative:{0:\"у гэту хвіліну\"},relativeTime:{future:{one:\"праз {0} хвіліну\",few:\"праз {0} хвіліны\",many:\"праз {0} хвілін\",other:\"праз {0} хвіліны\"},past:{one:\"{0} хвіліну таму\",few:\"{0} хвіліны таму\",many:\"{0} хвілін таму\",other:\"{0} хвіліны таму\"}}},\"minute-short\":{displayName:\"хв\",relative:{0:\"у гэту хвіліну\"},relativeTime:{future:{one:\"праз {0} хв\",few:\"праз {0} хв\",many:\"праз {0} хв\",other:\"праз {0} хв\"},past:{one:\"{0} хв таму\",few:\"{0} хв таму\",many:\"{0} хв таму\",other:\"{0} хв таму\"}}},second:{displayName:\"секунда\",relative:{0:\"цяпер\"},relativeTime:{future:{one:\"праз {0} секунду\",few:\"праз {0} секунды\",many:\"праз {0} секунд\",other:\"праз {0} секунды\"},past:{one:\"{0} секунду таму\",few:\"{0} секунды таму\",many:\"{0} секунд таму\",other:\"{0} секунды таму\"}}},\"second-short\":{displayName:\"с\",relative:{0:\"цяпер\"},relativeTime:{future:{one:\"праз {0} с\",few:\"праз {0} с\",many:\"праз {0} с\",other:\"праз {0} с\"},past:{one:\"{0} с таму\",few:\"{0} с таму\",many:\"{0} с таму\",other:\"{0} с таму\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.bn=t())}(this,function(){\"use strict\";return[{locale:\"bn\",pluralRuleFunction:function(e,t){return t?1==e||5==e||7==e||8==e||9==e||10==e?\"one\":2==e||3==e?\"two\":4==e?\"few\":6==e?\"many\":\"other\":e>=0&&e<=1?\"one\":\"other\"},fields:{year:{displayName:\"বছর\",relative:{0:\"এই বছর\",1:\"পরের বছর\",\"-1\":\"গত বছর\"},relativeTime:{future:{one:\"{0} বছরে\",other:\"{0} বছরে\"},past:{one:\"{0} বছর পূর্বে\",other:\"{0} বছর পূর্বে\"}}},\"year-short\":{displayName:\"বছর\",relative:{0:\"এই বছর\",1:\"পরের বছর\",\"-1\":\"গত বছর\"},relativeTime:{future:{one:\"{0} বছরে\",other:\"{0} বছরে\"},past:{one:\"{0} বছর পূর্বে\",other:\"{0} বছর পূর্বে\"}}},month:{displayName:\"মাস\",relative:{0:\"এই মাস\",1:\"পরের মাস\",\"-1\":\"গত মাস\"},relativeTime:{future:{one:\"{0} মাসে\",other:\"{0} মাসে\"},past:{one:\"{0} মাস আগে\",other:\"{0} মাস আগে\"}}},\"month-short\":{displayName:\"মাস\",relative:{0:\"এই মাস\",1:\"পরের মাস\",\"-1\":\"গত মাস\"},relativeTime:{future:{one:\"{0} মাসে\",other:\"{0} মাসে\"},past:{one:\"{0} মাস আগে\",other:\"{0} মাস আগে\"}}},day:{displayName:\"দিন\",relative:{0:\"আজ\",1:\"আগামীকাল\",2:\"আগামী পরশু\",\"-2\":\"গত পরশু\",\"-1\":\"গতকাল\"},relativeTime:{future:{one:\"{0} দিনের মধ্যে\",other:\"{0} দিনের মধ্যে\"},past:{one:\"{0} দিন আগে\",other:\"{0} দিন আগে\"}}},\"day-short\":{displayName:\"দিন\",relative:{0:\"আজ\",1:\"আগামীকাল\",2:\"আগামী পরশু\",\"-2\":\"গত পরশু\",\"-1\":\"গতকাল\"},relativeTime:{future:{one:\"{0} দিনের মধ্যে\",other:\"{0} দিনের মধ্যে\"},past:{one:\"{0} দিন আগে\",other:\"{0} দিন আগে\"}}},hour:{displayName:\"ঘণ্টা\",relative:{0:\"এই ঘণ্টায়\"},relativeTime:{future:{one:\"{0} ঘন্টায়\",other:\"{0} ঘন্টায়\"},past:{one:\"{0} ঘন্টা আগে\",other:\"{0} ঘন্টা আগে\"}}},\"hour-short\":{displayName:\"ঘণ্টা\",relative:{0:\"এই ঘণ্টায়\"},relativeTime:{future:{one:\"{0} ঘন্টায়\",other:\"{0} ঘন্টায়\"},past:{one:\"{0} ঘন্টা আগে\",other:\"{0} ঘন্টা আগে\"}}},minute:{displayName:\"মিনিট\",relative:{0:\"এই মিনিট\"},relativeTime:{future:{one:\"{0} মিনিটে\",other:\"{0} মিনিটে\"},past:{one:\"{0} মিনিট আগে\",other:\"{0} মিনিট আগে\"}}},\"minute-short\":{displayName:\"মিনিট\",relative:{0:\"এই মিনিট\"},relativeTime:{future:{one:\"{0} মিনিটে\",other:\"{0} মিনিটে\"},past:{one:\"{0} মিনিট আগে\",other:\"{0} মিনিট আগে\"}}},second:{displayName:\"সেকেন্ড\",relative:{0:\"এখন\"},relativeTime:{future:{one:\"{0} সেকেন্ডে\",other:\"{0} সেকেন্ডে\"},past:{one:\"{0} সেকেন্ড পূর্বে\",other:\"{0} সেকেন্ড পূর্বে\"}}},\"second-short\":{displayName:\"সেকেন্ড\",relative:{0:\"এখন\"},relativeTime:{future:{one:\"{0} সেকেন্ডে\",other:\"{0} সেকেন্ডে\"},past:{one:\"{0} সেকেন্ড পূর্বে\",other:\"{0} সেকেন্ড পূর্বে\"}}}}},{locale:\"bn-IN\",parentLocale:\"bn\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.bg=t())}(this,function(){\"use strict\";return[{locale:\"bg\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"година\",relative:{0:\"тази година\",1:\"следващата година\",\"-1\":\"миналата година\"},relativeTime:{future:{one:\"след {0} година\",other:\"след {0} години\"},past:{one:\"преди {0} година\",other:\"преди {0} години\"}}},\"year-short\":{displayName:\"г.\",relative:{0:\"т. г.\",1:\"следв. г.\",\"-1\":\"мин. г.\"},relativeTime:{future:{one:\"след {0} г.\",other:\"след {0} г.\"},past:{one:\"преди {0} г.\",other:\"преди {0} г.\"}}},month:{displayName:\"месец\",relative:{0:\"този месец\",1:\"следващ месец\",\"-1\":\"предходен месец\"},relativeTime:{future:{one:\"след {0} месец\",other:\"след {0} месеца\"},past:{one:\"преди {0} месец\",other:\"преди {0} месеца\"}}},\"month-short\":{displayName:\"мес.\",relative:{0:\"този мес.\",1:\"следв. мес.\",\"-1\":\"мин. мес.\"},relativeTime:{future:{one:\"след {0} м.\",other:\"след {0} м.\"},past:{one:\"преди {0} м.\",other:\"преди {0} м.\"}}},day:{displayName:\"ден\",relative:{0:\"днес\",1:\"утре\",2:\"вдругиден\",\"-2\":\"онзи ден\",\"-1\":\"вчера\"},relativeTime:{future:{one:\"след {0} ден\",other:\"след {0} дни\"},past:{one:\"преди {0} ден\",other:\"преди {0} дни\"}}},\"day-short\":{displayName:\"д\",relative:{0:\"днес\",1:\"утре\",2:\"вдругиден\",\"-2\":\"онзи ден\",\"-1\":\"вчера\"},relativeTime:{future:{one:\"след {0} ден\",other:\"след {0} дни\"},past:{one:\"преди {0} ден\",other:\"преди {0} дни\"}}},hour:{displayName:\"час\",relative:{0:\"в този час\"},relativeTime:{future:{one:\"след {0} час\",other:\"след {0} часа\"},past:{one:\"преди {0} час\",other:\"преди {0} часа\"}}},\"hour-short\":{displayName:\"ч\",relative:{0:\"в този час\"},relativeTime:{future:{one:\"след {0} ч\",other:\"след {0} ч\"},past:{one:\"преди {0} ч\",other:\"преди {0} ч\"}}},minute:{displayName:\"минута\",relative:{0:\"в тази минута\"},relativeTime:{future:{one:\"след {0} минута\",other:\"след {0} минути\"},past:{one:\"преди {0} минута\",other:\"преди {0} минути\"}}},\"minute-short\":{displayName:\"мин\",relative:{0:\"в тази минута\"},relativeTime:{future:{one:\"след {0} мин\",other:\"след {0} мин\"},past:{one:\"преди {0} мин\",other:\"преди {0} мин\"}}},second:{displayName:\"секунда\",relative:{0:\"сега\"},relativeTime:{future:{one:\"след {0} секунда\",other:\"след {0} секунди\"},past:{one:\"преди {0} секунда\",other:\"преди {0} секунди\"}}},\"second-short\":{displayName:\"сек\",relative:{0:\"сега\"},relativeTime:{future:{one:\"след {0} сек\",other:\"след {0} сек\"},past:{one:\"преди {0} сек\",other:\"преди {0} сек\"}}}}}]});\n","!function(a,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(a.ReactIntlLocaleData=a.ReactIntlLocaleData||{},a.ReactIntlLocaleData.ca=e())}(this,function(){\"use strict\";return[{locale:\"ca\",pluralRuleFunction:function(a,e){var t=!String(a).split(\".\")[1];return e?1==a||3==a?\"one\":2==a?\"two\":4==a?\"few\":\"other\":1==a&&t?\"one\":\"other\"},fields:{year:{displayName:\"any\",relative:{0:\"enguany\",1:\"l’any que ve\",\"-1\":\"l’any passat\"},relativeTime:{future:{one:\"d’aquí a {0} any\",other:\"d’aquí a {0} anys\"},past:{one:\"fa {0} any\",other:\"fa {0} anys\"}}},\"year-short\":{displayName:\"any\",relative:{0:\"enguany\",1:\"l’any que ve\",\"-1\":\"l’any passat\"},relativeTime:{future:{one:\"d’aquí a {0} any\",other:\"d’aquí a {0} anys\"},past:{one:\"fa {0} any\",other:\"fa {0} anys\"}}},month:{displayName:\"mes\",relative:{0:\"aquest mes\",1:\"el mes que ve\",\"-1\":\"el mes passat\"},relativeTime:{future:{one:\"d’aquí a {0} mes\",other:\"d’aquí a {0} mesos\"},past:{one:\"fa {0} mes\",other:\"fa {0} mesos\"}}},\"month-short\":{displayName:\"mes\",relative:{0:\"aquest mes\",1:\"el mes que ve\",\"-1\":\"el mes passat\"},relativeTime:{future:{one:\"d’aquí a {0} mes\",other:\"d’aquí a {0} mesos\"},past:{one:\"fa {0} mes\",other:\"fa {0} mesos\"}}},day:{displayName:\"dia\",relative:{0:\"avui\",1:\"demà\",2:\"demà passat\",\"-2\":\"abans-d’ahir\",\"-1\":\"ahir\"},relativeTime:{future:{one:\"d’aquí a {0} dia\",other:\"d’aquí a {0} dies\"},past:{one:\"fa {0} dia\",other:\"fa {0} dies\"}}},\"day-short\":{displayName:\"dia\",relative:{0:\"avui\",1:\"demà\",2:\"demà passat\",\"-2\":\"abans-d’ahir\",\"-1\":\"ahir\"},relativeTime:{future:{one:\"d’aquí a {0} dia\",other:\"d’aquí a {0} dies\"},past:{one:\"fa {0} dia\",other:\"fa {0} dies\"}}},hour:{displayName:\"hora\",relative:{0:\"aquesta hora\"},relativeTime:{future:{one:\"d’aquí a {0} hora\",other:\"d’aquí a {0} hores\"},past:{one:\"fa {0} hora\",other:\"fa {0} hores\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"aquesta hora\"},relativeTime:{future:{one:\"d’aquí a {0} h\",other:\"d’aquí a {0} h\"},past:{one:\"fa {0} h\",other:\"fa {0} h\"}}},minute:{displayName:\"minut\",relative:{0:\"aquest minut\"},relativeTime:{future:{one:\"d’aquí a {0} minut\",other:\"d’aquí a {0} minuts\"},past:{one:\"fa {0} minut\",other:\"fa {0} minuts\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"aquest minut\"},relativeTime:{future:{one:\"d’aquí a {0} min\",other:\"d’aquí a {0} min\"},past:{one:\"fa {0} min\",other:\"fa {0} min\"}}},second:{displayName:\"segon\",relative:{0:\"ara\"},relativeTime:{future:{one:\"d’aquí a {0} segon\",other:\"d’aquí a {0} segons\"},past:{one:\"fa {0} segon\",other:\"fa {0} segons\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ara\"},relativeTime:{future:{one:\"d’aquí a {0} s\",other:\"d’aquí a {0} s\"},past:{one:\"fa {0} s\",other:\"fa {0} s\"}}}}},{locale:\"ca-AD\",parentLocale:\"ca\"},{locale:\"ca-ES-VALENCIA\",parentLocale:\"ca-ES\",fields:{year:{displayName:\"any\",relative:{0:\"enguany\",1:\"l’any que ve\",\"-1\":\"l’any passat\"},relativeTime:{future:{one:\"d’aquí a {0} any\",other:\"d’aquí a {0} anys\"},past:{one:\"fa {0} any\",other:\"fa {0} anys\"}}},\"year-short\":{displayName:\"any\",relative:{0:\"enguany\",1:\"l’any que ve\",\"-1\":\"l’any passat\"},relativeTime:{future:{one:\"d’aquí a {0} any\",other:\"d’aquí a {0} anys\"},past:{one:\"fa {0} any\",other:\"fa {0} anys\"}}},month:{displayName:\"mes\",relative:{0:\"aquest mes\",1:\"el mes que ve\",\"-1\":\"el mes passat\"},relativeTime:{future:{one:\"d’aquí a {0} mes\",other:\"d’aquí a {0} mesos\"},past:{one:\"fa {0} mes\",other:\"fa {0} mesos\"}}},\"month-short\":{displayName:\"mes\",relative:{0:\"aquest mes\",1:\"el mes que ve\",\"-1\":\"el mes passat\"},relativeTime:{future:{one:\"d’aquí a {0} mes\",other:\"d’aquí a {0} mesos\"},past:{one:\"fa {0} mes\",other:\"fa {0} mesos\"}}},day:{displayName:\"dia\",relative:{0:\"avui\",1:\"demà\",2:\"demà passat\",\"-2\":\"abans-d’ahir\",\"-1\":\"ahir\"},relativeTime:{future:{one:\"d’aquí a {0} dia\",other:\"d’aquí a {0} dies\"},past:{one:\"fa {0} dia\",other:\"fa {0} dies\"}}},\"day-short\":{displayName:\"dia\",relative:{0:\"avui\",1:\"demà\",2:\"demà passat\",\"-2\":\"abans-d’ahir\",\"-1\":\"ahir\"},relativeTime:{future:{one:\"d’aquí a {0} dia\",other:\"d’aquí a {0} dies\"},past:{one:\"fa {0} dia\",other:\"fa {0} dies\"}}},hour:{displayName:\"hora\",relative:{0:\"aquesta hora\"},relativeTime:{future:{one:\"d’aquí a {0} hora\",other:\"d’aquí a {0} hores\"},past:{one:\"fa {0} hora\",other:\"fa {0} hores\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"aquesta hora\"},relativeTime:{future:{one:\"d’aquí a {0} h\",other:\"d’aquí a {0} h\"},past:{one:\"fa {0} h\",other:\"fa {0} h\"}}},minute:{displayName:\"minut\",relative:{0:\"aquest minut\"},relativeTime:{future:{one:\"d’aquí a {0} minut\",other:\"d’aquí a {0} minuts\"},past:{one:\"fa {0} minut\",other:\"fa {0} minuts\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"aquest minut\"},relativeTime:{future:{one:\"d’aquí a {0} min\",other:\"d’aquí a {0} min\"},past:{one:\"fa {0} min\",other:\"fa {0} min\"}}},second:{displayName:\"segon\",relative:{0:\"ara\"},relativeTime:{future:{one:\"d’aquí a {0} segon\",other:\"d’aquí a {0} segons\"},past:{one:\"fa {0} segon\",other:\"fa {0} segons\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ara\"},relativeTime:{future:{one:\"d’aquí a {0} s\",other:\"d’aquí a {0} s\"},past:{one:\"fa {0} s\",other:\"fa {0} s\"}}}}},{locale:\"ca-ES\",parentLocale:\"ca\"},{locale:\"ca-FR\",parentLocale:\"ca\"},{locale:\"ca-IT\",parentLocale:\"ca\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ckb=t())}(this,function(){\"use strict\";return[{locale:\"ckb\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"ckb-IR\",parentLocale:\"ckb\"}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.cs=a())}(this,function(){\"use strict\";return[{locale:\"cs\",pluralRuleFunction:function(e,a){var n=String(e).split(\".\"),t=n[0],m=!n[1];return a?\"other\":1==e&&m?\"one\":t>=2&&t<=4&&m?\"few\":m?\"other\":\"many\"},fields:{year:{displayName:\"rok\",relative:{0:\"tento rok\",1:\"příští rok\",\"-1\":\"minulý rok\"},relativeTime:{future:{one:\"za {0} rok\",few:\"za {0} roky\",many:\"za {0} roku\",other:\"za {0} let\"},past:{one:\"před {0} rokem\",few:\"před {0} lety\",many:\"před {0} roku\",other:\"před {0} lety\"}}},\"year-short\":{displayName:\"r.\",relative:{0:\"tento rok\",1:\"příští rok\",\"-1\":\"minulý rok\"},relativeTime:{future:{one:\"za {0} r.\",few:\"za {0} r.\",many:\"za {0} r.\",other:\"za {0} l.\"},past:{one:\"před {0} r.\",few:\"před {0} r.\",many:\"před {0} r.\",other:\"před {0} l.\"}}},month:{displayName:\"měsíc\",relative:{0:\"tento měsíc\",1:\"příští měsíc\",\"-1\":\"minulý měsíc\"},relativeTime:{future:{one:\"za {0} měsíc\",few:\"za {0} měsíce\",many:\"za {0} měsíce\",other:\"za {0} měsíců\"},past:{one:\"před {0} měsícem\",few:\"před {0} měsíci\",many:\"před {0} měsíce\",other:\"před {0} měsíci\"}}},\"month-short\":{displayName:\"měs.\",relative:{0:\"tento měs.\",1:\"příští měs.\",\"-1\":\"minulý měs.\"},relativeTime:{future:{one:\"za {0} měs.\",few:\"za {0} měs.\",many:\"za {0} měs.\",other:\"za {0} měs.\"},past:{one:\"před {0} měs.\",few:\"před {0} měs.\",many:\"před {0} měs.\",other:\"před {0} měs.\"}}},day:{displayName:\"den\",relative:{0:\"dnes\",1:\"zítra\",2:\"pozítří\",\"-2\":\"předevčírem\",\"-1\":\"včera\"},relativeTime:{future:{one:\"za {0} den\",few:\"za {0} dny\",many:\"za {0} dne\",other:\"za {0} dní\"},past:{one:\"před {0} dnem\",few:\"před {0} dny\",many:\"před {0} dne\",other:\"před {0} dny\"}}},\"day-short\":{displayName:\"den\",relative:{0:\"dnes\",1:\"zítra\",2:\"pozítří\",\"-2\":\"předevčírem\",\"-1\":\"včera\"},relativeTime:{future:{one:\"za {0} den\",few:\"za {0} dny\",many:\"za {0} dne\",other:\"za {0} dní\"},past:{one:\"před {0} dnem\",few:\"před {0} dny\",many:\"před {0} dne\",other:\"před {0} dny\"}}},hour:{displayName:\"hodina\",relative:{0:\"tuto hodinu\"},relativeTime:{future:{one:\"za {0} hodinu\",few:\"za {0} hodiny\",many:\"za {0} hodiny\",other:\"za {0} hodin\"},past:{one:\"před {0} hodinou\",few:\"před {0} hodinami\",many:\"před {0} hodiny\",other:\"před {0} hodinami\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"tuto hodinu\"},relativeTime:{future:{one:\"za {0} h\",few:\"za {0} h\",many:\"za {0} h\",other:\"za {0} h\"},past:{one:\"před {0} h\",few:\"před {0} h\",many:\"před {0} h\",other:\"před {0} h\"}}},minute:{displayName:\"minuta\",relative:{0:\"tuto minutu\"},relativeTime:{future:{one:\"za {0} minutu\",few:\"za {0} minuty\",many:\"za {0} minuty\",other:\"za {0} minut\"},past:{one:\"před {0} minutou\",few:\"před {0} minutami\",many:\"před {0} minuty\",other:\"před {0} minutami\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"tuto minutu\"},relativeTime:{future:{one:\"za {0} min\",few:\"za {0} min\",many:\"za {0} min\",other:\"za {0} min\"},past:{one:\"před {0} min\",few:\"před {0} min\",many:\"před {0} min\",other:\"před {0} min\"}}},second:{displayName:\"sekunda\",relative:{0:\"nyní\"},relativeTime:{future:{one:\"za {0} sekundu\",few:\"za {0} sekundy\",many:\"za {0} sekundy\",other:\"za {0} sekund\"},past:{one:\"před {0} sekundou\",few:\"před {0} sekundami\",many:\"před {0} sekundy\",other:\"před {0} sekundami\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"nyní\"},relativeTime:{future:{one:\"za {0} s\",few:\"za {0} s\",many:\"za {0} s\",other:\"za {0} s\"},past:{one:\"před {0} s\",few:\"před {0} s\",many:\"před {0} s\",other:\"před {0} s\"}}}}}]});\n","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.cy=n())}(this,function(){\"use strict\";return[{locale:\"cy\",pluralRuleFunction:function(e,n){return n?0==e||7==e||8==e||9==e?\"zero\":1==e?\"one\":2==e?\"two\":3==e||4==e?\"few\":5==e||6==e?\"many\":\"other\":0==e?\"zero\":1==e?\"one\":2==e?\"two\":3==e?\"few\":6==e?\"many\":\"other\"},fields:{year:{displayName:\"blwyddyn\",relative:{0:\"eleni\",1:\"blwyddyn nesaf\",\"-1\":\"llynedd\"},relativeTime:{future:{zero:\"ymhen {0} mlynedd\",one:\"ymhen blwyddyn\",two:\"ymhen {0} flynedd\",few:\"ymhen {0} blynedd\",many:\"ymhen {0} blynedd\",other:\"ymhen {0} mlynedd\"},past:{zero:\"{0} o flynyddoedd yn ôl\",one:\"blwyddyn yn ôl\",two:\"{0} flynedd yn ôl\",few:\"{0} blynedd yn ôl\",many:\"{0} blynedd yn ôl\",other:\"{0} o flynyddoedd yn ôl\"}}},\"year-short\":{displayName:\"bl.\",relative:{0:\"eleni\",1:\"blwyddyn nesaf\",\"-1\":\"llynedd\"},relativeTime:{future:{zero:\"ymhen {0} mlynedd\",one:\"ymhen blwyddyn\",two:\"ymhen {0} flynedd\",few:\"ymhen {0} blynedd\",many:\"ymhen {0} blynedd\",other:\"ymhen {0} mlynedd\"},past:{zero:\"{0} o flynyddoedd yn ôl\",one:\"blwyddyn yn ôl\",two:\"{0} flynedd yn ôl\",few:\"{0} blynedd yn ôl\",many:\"{0} blynedd yn ôl\",other:\"{0} o flynyddoedd yn ôl\"}}},month:{displayName:\"mis\",relative:{0:\"y mis hwn\",1:\"mis nesaf\",\"-1\":\"mis diwethaf\"},relativeTime:{future:{zero:\"ymhen {0} mis\",one:\"ymhen mis\",two:\"ymhen deufis\",few:\"ymhen {0} mis\",many:\"ymhen {0} mis\",other:\"ymhen {0} mis\"},past:{zero:\"{0} mis yn ôl\",one:\"{0} mis yn ôl\",two:\"{0} fis yn ôl\",few:\"{0} mis yn ôl\",many:\"{0} mis yn ôl\",other:\"{0} mis yn ôl\"}}},\"month-short\":{displayName:\"mis\",relative:{0:\"y mis hwn\",1:\"mis nesaf\",\"-1\":\"mis diwethaf\"},relativeTime:{future:{zero:\"ymhen {0} mis\",one:\"ymhen mis\",two:\"ymhen deufis\",few:\"ymhen {0} mis\",many:\"ymhen {0} mis\",other:\"ymhen {0} mis\"},past:{zero:\"{0} mis yn ôl\",one:\"{0} mis yn ôl\",two:\"deufis yn ôl\",few:\"{0} mis yn ôl\",many:\"{0} mis yn ôl\",other:\"{0} mis yn ôl\"}}},day:{displayName:\"diwrnod\",relative:{0:\"heddiw\",1:\"yfory\",2:\"drennydd\",\"-2\":\"echdoe\",\"-1\":\"ddoe\"},relativeTime:{future:{zero:\"ymhen {0} diwrnod\",one:\"ymhen diwrnod\",two:\"ymhen deuddydd\",few:\"ymhen {0} diwrnod\",many:\"ymhen {0} diwrnod\",other:\"ymhen {0} diwrnod\"},past:{zero:\"{0} diwrnod yn ôl\",one:\"{0} diwrnod yn ôl\",two:\"{0} ddiwrnod yn ôl\",few:\"{0} diwrnod yn ôl\",many:\"{0} diwrnod yn ôl\",other:\"{0} diwrnod yn ôl\"}}},\"day-short\":{displayName:\"diwrnod\",relative:{0:\"heddiw\",1:\"yfory\",2:\"drennydd\",\"-2\":\"echdoe\",\"-1\":\"ddoe\"},relativeTime:{future:{zero:\"ymhen {0} diwrnod\",one:\"ymhen diwrnod\",two:\"ymhen deuddydd\",few:\"ymhen {0} diwrnod\",many:\"ymhen {0} diwrnod\",other:\"ymhen {0} diwrnod\"},past:{zero:\"{0} diwrnod yn ôl\",one:\"{0} diwrnod yn ôl\",two:\"{0} ddiwrnod yn ôl\",few:\"{0} diwrnod yn ôl\",many:\"{0} diwrnod yn ôl\",other:\"{0} diwrnod yn ôl\"}}},hour:{displayName:\"awr\",relative:{0:\"yr awr hon\"},relativeTime:{future:{zero:\"ymhen {0} awr\",one:\"ymhen awr\",two:\"ymhen {0} awr\",few:\"ymhen {0} awr\",many:\"ymhen {0} awr\",other:\"ymhen {0} awr\"},past:{zero:\"{0} awr yn ôl\",one:\"{0} awr yn ôl\",two:\"{0} awr yn ôl\",few:\"{0} awr yn ôl\",many:\"{0} awr yn ôl\",other:\"{0} awr yn ôl\"}}},\"hour-short\":{displayName:\"awr\",relative:{0:\"yr awr hon\"},relativeTime:{future:{zero:\"ymhen {0} awr\",one:\"ymhen awr\",two:\"ymhen {0} awr\",few:\"ymhen {0} awr\",many:\"ymhen {0} awr\",other:\"ymhen {0} awr\"},past:{zero:\"{0} awr yn ôl\",one:\"awr yn ôl\",two:\"{0} awr yn ôl\",few:\"{0} awr yn ôl\",many:\"{0} awr yn ôl\",other:\"{0} awr yn ôl\"}}},minute:{displayName:\"munud\",relative:{0:\"y funud hon\"},relativeTime:{future:{zero:\"ymhen {0} munud\",one:\"ymhen {0} munud\",two:\"ymhen {0} munud\",few:\"ymhen {0} munud\",many:\"ymhen {0} munud\",other:\"ymhen {0} munud\"},past:{zero:\"{0} munud yn ôl\",one:\"{0} munud yn ôl\",two:\"{0} munud yn ôl\",few:\"{0} munud yn ôl\",many:\"{0} munud yn ôl\",other:\"{0} munud yn ôl\"}}},\"minute-short\":{displayName:\"mun.\",relative:{0:\"y funud hon\"},relativeTime:{future:{zero:\"ymhen {0} munud\",one:\"ymhen {0} mun.\",two:\"ymhen {0} fun.\",few:\"ymhen {0} munud\",many:\"ymhen {0} munud\",other:\"ymhen {0} munud\"},past:{zero:\"{0} munud yn ôl\",one:\"{0} munud yn ôl\",two:\"{0} fun. yn ôl\",few:\"{0} munud yn ôl\",many:\"{0} munud yn ôl\",other:\"{0} munud yn ôl\"}}},second:{displayName:\"eiliad\",relative:{0:\"nawr\"},relativeTime:{future:{zero:\"ymhen {0} eiliad\",one:\"ymhen {0} eiliad\",two:\"ymhen {0} eiliad\",few:\"ymhen {0} eiliad\",many:\"ymhen {0} eiliad\",other:\"ymhen {0} eiliad\"},past:{zero:\"{0} eiliad yn ôl\",one:\"{0} eiliad yn ôl\",two:\"{0} eiliad yn ôl\",few:\"{0} eiliad yn ôl\",many:\"{0} eiliad yn ôl\",other:\"{0} eiliad yn ôl\"}}},\"second-short\":{displayName:\"eiliad\",relative:{0:\"nawr\"},relativeTime:{future:{zero:\"ymhen {0} eiliad\",one:\"ymhen {0} eiliad\",two:\"ymhen {0} eiliad\",few:\"ymhen {0} eiliad\",many:\"ymhen {0} eiliad\",other:\"ymhen {0} eiliad\"},past:{zero:\"{0} eiliad yn ôl\",one:\"{0} eiliad yn ôl\",two:\"{0} eiliad yn ôl\",few:\"{0} eiliad yn ôl\",many:\"{0} eiliad yn ôl\",other:\"{0} eiliad yn ôl\"}}}}}]});\n","!function(e,r){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(r):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.da=r())}(this,function(){\"use strict\";return[{locale:\"da\",pluralRuleFunction:function(e,r){var t=String(e).split(\".\"),o=t[0],i=Number(t[0])==e;return r?\"other\":1!=e&&(i||0!=o&&1!=o)?\"other\":\"one\"},fields:{year:{displayName:\"år\",relative:{0:\"i år\",1:\"næste år\",\"-1\":\"sidste år\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"for {0} år siden\",other:\"for {0} år siden\"}}},\"year-short\":{displayName:\"år\",relative:{0:\"i år\",1:\"næste år\",\"-1\":\"sidste år\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"for {0} år siden\",other:\"for {0} år siden\"}}},month:{displayName:\"måned\",relative:{0:\"denne måned\",1:\"næste måned\",\"-1\":\"sidste måned\"},relativeTime:{future:{one:\"om {0} måned\",other:\"om {0} måneder\"},past:{one:\"for {0} måned siden\",other:\"for {0} måneder siden\"}}},\"month-short\":{displayName:\"md.\",relative:{0:\"denne md.\",1:\"næste md.\",\"-1\":\"sidste md.\"},relativeTime:{future:{one:\"om {0} md.\",other:\"om {0} mdr.\"},past:{one:\"for {0} md. siden\",other:\"for {0} mdr. siden\"}}},day:{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgen\",2:\"i overmorgen\",\"-2\":\"i forgårs\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} dag\",other:\"om {0} dage\"},past:{one:\"for {0} dag siden\",other:\"for {0} dage siden\"}}},\"day-short\":{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgen\",2:\"i overmorgen\",\"-2\":\"i forgårs\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} dag\",other:\"om {0} dage\"},past:{one:\"for {0} dag siden\",other:\"for {0} dage siden\"}}},hour:{displayName:\"time\",relative:{0:\"i den kommende time\"},relativeTime:{future:{one:\"om {0} time\",other:\"om {0} timer\"},past:{one:\"for {0} time siden\",other:\"for {0} timer siden\"}}},\"hour-short\":{displayName:\"t.\",relative:{0:\"i den kommende time\"},relativeTime:{future:{one:\"om {0} time\",other:\"om {0} timer\"},past:{one:\"for {0} time siden\",other:\"for {0} timer siden\"}}},minute:{displayName:\"minut\",relative:{0:\"i det kommende minut\"},relativeTime:{future:{one:\"om {0} minut\",other:\"om {0} minutter\"},past:{one:\"for {0} minut siden\",other:\"for {0} minutter siden\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"i det kommende minut\"},relativeTime:{future:{one:\"om {0} min.\",other:\"om {0} min.\"},past:{one:\"for {0} min. siden\",other:\"for {0} min. siden\"}}},second:{displayName:\"sekund\",relative:{0:\"nu\"},relativeTime:{future:{one:\"om {0} sekund\",other:\"om {0} sekunder\"},past:{one:\"for {0} sekund siden\",other:\"for {0} sekunder siden\"}}},\"second-short\":{displayName:\"sek.\",relative:{0:\"nu\"},relativeTime:{future:{one:\"om {0} sek.\",other:\"om {0} sek.\"},past:{one:\"for {0} sek. siden\",other:\"for {0} sek. siden\"}}}}},{locale:\"da-GL\",parentLocale:\"da\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.de=t())}(this,function(){\"use strict\";return[{locale:\"de\",pluralRuleFunction:function(e,t){var n=!String(e).split(\".\")[1];return t?\"other\":1==e&&n?\"one\":\"other\"},fields:{year:{displayName:\"Jahr\",relative:{0:\"dieses Jahr\",1:\"nächstes Jahr\",\"-1\":\"letztes Jahr\"},relativeTime:{future:{one:\"in {0} Jahr\",other:\"in {0} Jahren\"},past:{one:\"vor {0} Jahr\",other:\"vor {0} Jahren\"}}},\"year-short\":{displayName:\"Jahr\",relative:{0:\"dieses Jahr\",1:\"nächstes Jahr\",\"-1\":\"letztes Jahr\"},relativeTime:{future:{one:\"in {0} Jahr\",other:\"in {0} Jahren\"},past:{one:\"vor {0} Jahr\",other:\"vor {0} Jahren\"}}},month:{displayName:\"Monat\",relative:{0:\"diesen Monat\",1:\"nächsten Monat\",\"-1\":\"letzten Monat\"},relativeTime:{future:{one:\"in {0} Monat\",other:\"in {0} Monaten\"},past:{one:\"vor {0} Monat\",other:\"vor {0} Monaten\"}}},\"month-short\":{displayName:\"Monat\",relative:{0:\"diesen Monat\",1:\"nächsten Monat\",\"-1\":\"letzten Monat\"},relativeTime:{future:{one:\"in {0} Monat\",other:\"in {0} Monaten\"},past:{one:\"vor {0} Monat\",other:\"vor {0} Monaten\"}}},day:{displayName:\"Tag\",relative:{0:\"heute\",1:\"morgen\",2:\"übermorgen\",\"-2\":\"vorgestern\",\"-1\":\"gestern\"},relativeTime:{future:{one:\"in {0} Tag\",other:\"in {0} Tagen\"},past:{one:\"vor {0} Tag\",other:\"vor {0} Tagen\"}}},\"day-short\":{displayName:\"Tag\",relative:{0:\"heute\",1:\"morgen\",2:\"übermorgen\",\"-2\":\"vorgestern\",\"-1\":\"gestern\"},relativeTime:{future:{one:\"in {0} Tag\",other:\"in {0} Tagen\"},past:{one:\"vor {0} Tag\",other:\"vor {0} Tagen\"}}},hour:{displayName:\"Stunde\",relative:{0:\"in dieser Stunde\"},relativeTime:{future:{one:\"in {0} Stunde\",other:\"in {0} Stunden\"},past:{one:\"vor {0} Stunde\",other:\"vor {0} Stunden\"}}},\"hour-short\":{displayName:\"Std.\",relative:{0:\"in dieser Stunde\"},relativeTime:{future:{one:\"in {0} Std.\",other:\"in {0} Std.\"},past:{one:\"vor {0} Std.\",other:\"vor {0} Std.\"}}},minute:{displayName:\"Minute\",relative:{0:\"in dieser Minute\"},relativeTime:{future:{one:\"in {0} Minute\",other:\"in {0} Minuten\"},past:{one:\"vor {0} Minute\",other:\"vor {0} Minuten\"}}},\"minute-short\":{displayName:\"Min.\",relative:{0:\"in dieser Minute\"},relativeTime:{future:{one:\"in {0} Min.\",other:\"in {0} Min.\"},past:{one:\"vor {0} Min.\",other:\"vor {0} Min.\"}}},second:{displayName:\"Sekunde\",relative:{0:\"jetzt\"},relativeTime:{future:{one:\"in {0} Sekunde\",other:\"in {0} Sekunden\"},past:{one:\"vor {0} Sekunde\",other:\"vor {0} Sekunden\"}}},\"second-short\":{displayName:\"Sek.\",relative:{0:\"jetzt\"},relativeTime:{future:{one:\"in {0} Sek.\",other:\"in {0} Sek.\"},past:{one:\"vor {0} Sek.\",other:\"vor {0} Sek.\"}}}}},{locale:\"de-AT\",parentLocale:\"de\"},{locale:\"de-BE\",parentLocale:\"de\"},{locale:\"de-CH\",parentLocale:\"de\"},{locale:\"de-IT\",parentLocale:\"de\"},{locale:\"de-LI\",parentLocale:\"de\"},{locale:\"de-LU\",parentLocale:\"de\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.el=t())}(this,function(){\"use strict\";return[{locale:\"el\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"έτος\",relative:{0:\"φέτος\",1:\"επόμενο έτος\",\"-1\":\"πέρσι\"},relativeTime:{future:{one:\"σε {0} έτος\",other:\"σε {0} έτη\"},past:{one:\"πριν από {0} έτος\",other:\"πριν από {0} έτη\"}}},\"year-short\":{displayName:\"έτ.\",relative:{0:\"φέτος\",1:\"επόμενο έτος\",\"-1\":\"πέρσι\"},relativeTime:{future:{one:\"σε {0} έτος\",other:\"σε {0} έτη\"},past:{one:\"πριν από {0} έτος\",other:\"πριν από {0} έτη\"}}},month:{displayName:\"μήνας\",relative:{0:\"τρέχων μήνας\",1:\"επόμενος μήνας\",\"-1\":\"προηγούμενος μήνας\"},relativeTime:{future:{one:\"σε {0} μήνα\",other:\"σε {0} μήνες\"},past:{one:\"πριν από {0} μήνα\",other:\"πριν από {0} μήνες\"}}},\"month-short\":{displayName:\"μήν.\",relative:{0:\"τρέχων μήνας\",1:\"επόμενος μήνας\",\"-1\":\"προηγούμενος μήνας\"},relativeTime:{future:{one:\"σε {0} μήνα\",other:\"σε {0} μήνες\"},past:{one:\"πριν από {0} μήνα\",other:\"πριν από {0} μήνες\"}}},day:{displayName:\"ημέρα\",relative:{0:\"σήμερα\",1:\"αύριο\",2:\"μεθαύριο\",\"-2\":\"προχθές\",\"-1\":\"χθες\"},relativeTime:{future:{one:\"σε {0} ημέρα\",other:\"σε {0} ημέρες\"},past:{one:\"πριν από {0} ημέρα\",other:\"πριν από {0} ημέρες\"}}},\"day-short\":{displayName:\"ημ.\",relative:{0:\"σήμερα\",1:\"αύριο\",2:\"μεθαύριο\",\"-2\":\"προχθές\",\"-1\":\"χθες\"},relativeTime:{future:{one:\"σε {0} ημ.\",other:\"σε {0} ημ.\"},past:{one:\"πριν από {0} ημ.\",other:\"πριν από {0} ημ.\"}}},hour:{displayName:\"ώρα\",relative:{0:\"τρέχουσα ώρα\"},relativeTime:{future:{one:\"σε {0} ώρα\",other:\"σε {0} ώρες\"},past:{one:\"πριν από {0} ώρα\",other:\"πριν από {0} ώρες\"}}},\"hour-short\":{displayName:\"ώ.\",relative:{0:\"τρέχουσα ώρα\"},relativeTime:{future:{one:\"σε {0} ώ.\",other:\"σε {0} ώ.\"},past:{one:\"πριν από {0} ώ.\",other:\"πριν από {0} ώ.\"}}},minute:{displayName:\"λεπτό\",relative:{0:\"τρέχον λεπτό\"},relativeTime:{future:{one:\"σε {0} λεπτό\",other:\"σε {0} λεπτά\"},past:{one:\"πριν από {0} λεπτό\",other:\"πριν από {0} λεπτά\"}}},\"minute-short\":{displayName:\"λεπ.\",relative:{0:\"τρέχον λεπτό\"},relativeTime:{future:{one:\"σε {0} λεπ.\",other:\"σε {0} λεπ.\"},past:{one:\"πριν από {0} λεπ.\",other:\"πριν από {0} λεπ.\"}}},second:{displayName:\"δευτερόλεπτο\",relative:{0:\"τώρα\"},relativeTime:{future:{one:\"σε {0} δευτερόλεπτο\",other:\"σε {0} δευτερόλεπτα\"},past:{one:\"πριν από {0} δευτερόλεπτο\",other:\"πριν από {0} δευτερόλεπτα\"}}},\"second-short\":{displayName:\"δευτ.\",relative:{0:\"τώρα\"},relativeTime:{future:{one:\"σε {0} δευτ.\",other:\"σε {0} δευτ.\"},past:{one:\"πριν από {0} δευτ.\",other:\"πριν από {0} δευτ.\"}}}}},{locale:\"el-CY\",parentLocale:\"el\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.eo=t())}(this,function(){\"use strict\";return[{locale:\"eo\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.es=a())}(this,function(){\"use strict\";return[{locale:\"es\",pluralRuleFunction:function(e,a){return a?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"año\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} año\",other:\"dentro de {0} años\"},past:{one:\"hace {0} año\",other:\"hace {0} años\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} a\",other:\"dentro de {0} a\"},past:{one:\"hace {0} a\",other:\"hace {0} a\"}}},month:{displayName:\"mes\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} mes\",other:\"dentro de {0} meses\"},past:{one:\"hace {0} mes\",other:\"hace {0} meses\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} m\",other:\"dentro de {0} m\"},past:{one:\"hace {0} m\",other:\"hace {0} m\"}}},day:{displayName:\"día\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},\"day-short\":{displayName:\"d\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"hace {0} hora\",other:\"hace {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} h\",other:\"dentro de {0} h\"},past:{one:\"hace {0} h\",other:\"hace {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"hace {0} minuto\",other:\"hace {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} min\",other:\"dentro de {0} min\"},past:{one:\"hace {0} min\",other:\"hace {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"hace {0} segundo\",other:\"hace {0} segundos\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} s\",other:\"dentro de {0} s\"},past:{one:\"hace {0} s\",other:\"hace {0} s\"}}}}},{locale:\"es-419\",parentLocale:\"es\"},{locale:\"es-AR\",parentLocale:\"es-419\",fields:{year:{displayName:\"año\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} año\",other:\"dentro de {0} años\"},past:{one:\"hace {0} año\",other:\"hace {0} años\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} a\",other:\"dentro de {0} a\"},past:{one:\"hace {0} a\",other:\"hace {0} a\"}}},month:{displayName:\"mes\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} mes\",other:\"dentro de {0} meses\"},past:{one:\"hace {0} mes\",other:\"hace {0} meses\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} m\",other:\"dentro de {0} m\"},past:{one:\"hace {0} m\",other:\"hace {0} m\"}}},day:{displayName:\"día\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},\"day-short\":{displayName:\"d\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} días\",other:\"dentro de {0} días\"},past:{one:\"hace {0} días\",other:\"hace {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"hace {0} hora\",other:\"hace {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} h\",other:\"dentro de {0} h\"},past:{one:\"hace {0} h\",other:\"hace {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"hace {0} minuto\",other:\"hace {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} min\",other:\"dentro de {0} min\"},past:{one:\"hace {0} min\",other:\"hace {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"hace {0} segundo\",other:\"hace {0} segundos\"}}},\"second-short\":{displayName:\"seg.\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} seg.\",other:\"dentro de {0} seg.\"},past:{one:\"hace {0} seg.\",other:\"hace {0} seg.\"}}}}},{locale:\"es-BO\",parentLocale:\"es-419\"},{locale:\"es-BR\",parentLocale:\"es-419\"},{locale:\"es-BZ\",parentLocale:\"es-419\"},{locale:\"es-CL\",parentLocale:\"es-419\"},{locale:\"es-CO\",parentLocale:\"es-419\"},{locale:\"es-CR\",parentLocale:\"es-419\"},{locale:\"es-CU\",parentLocale:\"es-419\"},{locale:\"es-DO\",parentLocale:\"es-419\",fields:{year:{displayName:\"Año\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} año\",other:\"dentro de {0} años\"},past:{one:\"hace {0} año\",other:\"hace {0} años\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} a\",other:\"dentro de {0} a\"},past:{one:\"hace {0} a\",other:\"hace {0} a\"}}},month:{displayName:\"Mes\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} mes\",other:\"dentro de {0} meses\"},past:{one:\"hace {0} mes\",other:\"hace {0} meses\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} m\",other:\"dentro de {0} m\"},past:{one:\"hace {0} m\",other:\"hace {0} m\"}}},day:{displayName:\"Día\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},\"day-short\":{displayName:\"d\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"hace {0} hora\",other:\"hace {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} h\",other:\"dentro de {0} h\"},past:{one:\"hace {0} h\",other:\"hace {0} h\"}}},minute:{displayName:\"Minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"hace {0} minuto\",other:\"hace {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} min\",other:\"dentro de {0} min\"},past:{one:\"hace {0} min\",other:\"hace {0} min\"}}},second:{displayName:\"Segundo\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"hace {0} segundo\",other:\"hace {0} segundos\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} s\",other:\"dentro de {0} s\"},past:{one:\"hace {0} s\",other:\"hace {0} s\"}}}}},{locale:\"es-EA\",parentLocale:\"es\"},{locale:\"es-EC\",parentLocale:\"es-419\"},{locale:\"es-GQ\",parentLocale:\"es\"},{locale:\"es-GT\",parentLocale:\"es-419\"},{locale:\"es-HN\",parentLocale:\"es-419\"},{locale:\"es-IC\",parentLocale:\"es\"},{locale:\"es-MX\",parentLocale:\"es-419\",fields:{year:{displayName:\"año\",relative:{0:\"este año\",1:\"el año próximo\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} año\",other:\"dentro de {0} años\"},past:{one:\"hace {0} año\",other:\"hace {0} años\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"en {0} a\",other:\"en {0} a\"},past:{one:\"hace {0} a\",other:\"hace {0} a\"}}},month:{displayName:\"mes\",relative:{0:\"este mes\",1:\"el mes próximo\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"en {0} mes\",other:\"en {0} meses\"},past:{one:\"hace {0} mes\",other:\"hace {0} meses\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"en {0} m\",other:\"en {0} m\"},past:{one:\"hace {0} m\",other:\"hace {0} m\"}}},day:{displayName:\"día\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},\"day-short\":{displayName:\"d\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"en {0} día\",other:\"en {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"hace {0} hora\",other:\"hace {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"en {0} h\",other:\"en {0} n\"},past:{one:\"hace {0} h\",other:\"hace {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"hace {0} minuto\",other:\"hace {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"en {0} min\",other:\"en {0} min\"},past:{one:\"hace {0} min\",other:\"hace {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"hace {0} segundo\",other:\"hace {0} segundos\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"en {0} s\",other:\"en {0} s\"},past:{one:\"hace {0} s\",other:\"hace {0} s\"}}}}},{locale:\"es-NI\",parentLocale:\"es-419\"},{locale:\"es-PA\",parentLocale:\"es-419\"},{locale:\"es-PE\",parentLocale:\"es-419\"},{locale:\"es-PH\",parentLocale:\"es\"},{locale:\"es-PR\",parentLocale:\"es-419\"},{locale:\"es-PY\",parentLocale:\"es-419\",fields:{year:{displayName:\"año\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} año\",other:\"dentro de {0} años\"},past:{one:\"hace {0} año\",other:\"hace {0} años\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} a\",other:\"dentro de {0} a\"},past:{one:\"hace {0} a\",other:\"hace {0} a\"}}},month:{displayName:\"mes\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} mes\",other:\"dentro de {0} meses\"},past:{one:\"hace {0} mes\",other:\"hace {0} meses\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} m\",other:\"dentro de {0} m\"},past:{one:\"hace {0} m\",other:\"hace {0} m\"}}},day:{displayName:\"día\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},\"day-short\":{displayName:\"d\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"hace {0} hora\",other:\"hace {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} h\",other:\"dentro de {0} h\"},past:{one:\"hace {0} h\",other:\"hace {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"hace {0} minuto\",other:\"hace {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} min\",other:\"dentro de {0} min\"},past:{one:\"hace {0} min\",other:\"hace {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"hace {0} segundo\",other:\"hace {0} segundos\"}}},\"second-short\":{displayName:\"seg.\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} seg.\",other:\"dentro de {0} seg.\"},past:{one:\"hace {0} seg.\",other:\"hace {0} seg.\"}}}}},{locale:\"es-SV\",parentLocale:\"es-419\",fields:{year:{displayName:\"año\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} año\",other:\"dentro de {0} años\"},past:{one:\"hace {0} año\",other:\"hace {0} años\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} a\",other:\"dentro de {0} a\"},past:{one:\"hace {0} a\",other:\"hace {0} a\"}}},month:{displayName:\"mes\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} mes\",other:\"dentro de {0} meses\"},past:{one:\"hace {0} mes\",other:\"hace {0} meses\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} m\",other:\"dentro de {0} m\"},past:{one:\"hace {0} m\",other:\"hace {0} m\"}}},day:{displayName:\"día\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"antier\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},\"day-short\":{displayName:\"d\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"hace {0} hora\",other:\"hace {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} h\",other:\"dentro de {0} h\"},past:{one:\"hace {0} h\",other:\"hace {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"hace {0} minuto\",other:\"hace {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} min\",other:\"dentro de {0} min\"},past:{one:\"hace {0} min\",other:\"hace {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"hace {0} segundo\",other:\"hace {0} segundos\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} s\",other:\"dentro de {0} s\"},past:{one:\"hace {0} s\",other:\"hace {0} s\"}}}}},{locale:\"es-US\",parentLocale:\"es-419\",fields:{year:{displayName:\"año\",relative:{0:\"este año\",1:\"el año próximo\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} año\",other:\"dentro de {0} años\"},past:{one:\"hace {0} año\",other:\"hace {0} años\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"este año\",1:\"el próximo año\",\"-1\":\"el año pasado\"},relativeTime:{future:{one:\"dentro de {0} a\",other:\"dentro de {0} a\"},past:{one:\"hace {0} a\",other:\"hace {0} a\"}}},month:{displayName:\"mes\",relative:{0:\"este mes\",1:\"el mes próximo\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} mes\",other:\"dentro de {0} meses\"},past:{one:\"hace {0} mes\",other:\"hace {0} meses\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"este mes\",1:\"el próximo mes\",\"-1\":\"el mes pasado\"},relativeTime:{future:{one:\"dentro de {0} m\",other:\"dentro de {0} m\"},past:{one:\"hace {0} m\",other:\"hace {0} m\"}}},day:{displayName:\"día\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},\"day-short\":{displayName:\"d\",relative:{0:\"hoy\",1:\"mañana\",2:\"pasado mañana\",\"-2\":\"anteayer\",\"-1\":\"ayer\"},relativeTime:{future:{one:\"dentro de {0} día\",other:\"dentro de {0} días\"},past:{one:\"hace {0} día\",other:\"hace {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"hace {0} hora\",other:\"hace {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} h\",other:\"dentro de {0} h\"},past:{one:\"hace {0} h\",other:\"hace {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"hace {0} minuto\",other:\"hace {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} min\",other:\"dentro de {0} min\"},past:{one:\"hace {0} min\",other:\"hace {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"hace {0} segundo\",other:\"hace {0} segundos\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ahora\"},relativeTime:{future:{one:\"dentro de {0} s\",other:\"dentro de {0} s\"},past:{one:\"hace {0} s\",other:\"hace {0} s\"}}}}},{locale:\"es-UY\",parentLocale:\"es-419\"},{locale:\"es-VE\",parentLocale:\"es-419\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.et=t())}(this,function(){\"use strict\";return[{locale:\"et\",pluralRuleFunction:function(e,t){var a=!String(e).split(\".\")[1];return t?\"other\":1==e&&a?\"one\":\"other\"},fields:{year:{displayName:\"aasta\",relative:{0:\"käesolev aasta\",1:\"järgmine aasta\",\"-1\":\"eelmine aasta\"},relativeTime:{future:{one:\"{0} aasta pärast\",other:\"{0} aasta pärast\"},past:{one:\"{0} aasta eest\",other:\"{0} aasta eest\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"käesolev aasta\",1:\"järgmine aasta\",\"-1\":\"eelmine aasta\"},relativeTime:{future:{one:\"{0} a pärast\",other:\"{0} a pärast\"},past:{one:\"{0} a eest\",other:\"{0} a eest\"}}},month:{displayName:\"kuu\",relative:{0:\"käesolev kuu\",1:\"järgmine kuu\",\"-1\":\"eelmine kuu\"},relativeTime:{future:{one:\"{0} kuu pärast\",other:\"{0} kuu pärast\"},past:{one:\"{0} kuu eest\",other:\"{0} kuu eest\"}}},\"month-short\":{displayName:\"k\",relative:{0:\"käesolev kuu\",1:\"järgmine kuu\",\"-1\":\"eelmine kuu\"},relativeTime:{future:{one:\"{0} kuu pärast\",other:\"{0} kuu pärast\"},past:{one:\"{0} kuu eest\",other:\"{0} kuu eest\"}}},day:{displayName:\"päev\",relative:{0:\"täna\",1:\"homme\",2:\"ülehomme\",\"-2\":\"üleeile\",\"-1\":\"eile\"},relativeTime:{future:{one:\"{0} päeva pärast\",other:\"{0} päeva pärast\"},past:{one:\"{0} päeva eest\",other:\"{0} päeva eest\"}}},\"day-short\":{displayName:\"p\",relative:{0:\"täna\",1:\"homme\",2:\"ülehomme\",\"-2\":\"üleeile\",\"-1\":\"eile\"},relativeTime:{future:{one:\"{0} p pärast\",other:\"{0} p pärast\"},past:{one:\"{0} p eest\",other:\"{0} p eest\"}}},hour:{displayName:\"tund\",relative:{0:\"praegusel tunnil\"},relativeTime:{future:{one:\"{0} tunni pärast\",other:\"{0} tunni pärast\"},past:{one:\"{0} tunni eest\",other:\"{0} tunni eest\"}}},\"hour-short\":{displayName:\"t\",relative:{0:\"praegusel tunnil\"},relativeTime:{future:{one:\"{0} t pärast\",other:\"{0} t pärast\"},past:{one:\"{0} t eest\",other:\"{0} t eest\"}}},minute:{displayName:\"minut\",relative:{0:\"praegusel minutil\"},relativeTime:{future:{one:\"{0} minuti pärast\",other:\"{0} minuti pärast\"},past:{one:\"{0} minuti eest\",other:\"{0} minuti eest\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"praegusel minutil\"},relativeTime:{future:{one:\"{0} min pärast\",other:\"{0} min pärast\"},past:{one:\"{0} min eest\",other:\"{0} min eest\"}}},second:{displayName:\"sekund\",relative:{0:\"nüüd\"},relativeTime:{future:{one:\"{0} sekundi pärast\",other:\"{0} sekundi pärast\"},past:{one:\"{0} sekundi eest\",other:\"{0} sekundi eest\"}}},\"second-short\":{displayName:\"sek\",relative:{0:\"nüüd\"},relativeTime:{future:{one:\"{0} sek pärast\",other:\"{0} sek pärast\"},past:{one:\"{0} sek eest\",other:\"{0} sek eest\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.eu=a())}(this,function(){\"use strict\";return[{locale:\"eu\",pluralRuleFunction:function(e,a){return a?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"urtea\",relative:{0:\"aurten\",1:\"hurrengo urtean\",\"-1\":\"iaz\"},relativeTime:{future:{one:\"{0} urte barru\",other:\"{0} urte barru\"},past:{one:\"Duela {0} urte\",other:\"Duela {0} urte\"}}},\"year-short\":{displayName:\"urtea\",relative:{0:\"aurten\",1:\"hurrengo urtea\",\"-1\":\"aurreko urtea\"},relativeTime:{future:{one:\"{0} urte barru\",other:\"{0} urte barru\"},past:{one:\"Duela {0} urte\",other:\"Duela {0} urte\"}}},month:{displayName:\"hilabetea\",relative:{0:\"hilabete honetan\",1:\"hurrengo hilabetean\",\"-1\":\"aurreko hilabetean\"},relativeTime:{future:{one:\"{0} hilabete barru\",other:\"{0} hilabete barru\"},past:{one:\"Duela {0} hilabete\",other:\"Duela {0} hilabete\"}}},\"month-short\":{displayName:\"hil.\",relative:{0:\"hilabete honetan\",1:\"hurrengo hilabetean\",\"-1\":\"aurreko hilabetean\"},relativeTime:{future:{one:\"{0} hilabete barru\",other:\"{0} hilabete barru\"},past:{one:\"Duela {0} hilabete\",other:\"Duela {0} hilabete\"}}},day:{displayName:\"eguna\",relative:{0:\"gaur\",1:\"bihar\",2:\"etzi\",\"-2\":\"herenegun\",\"-1\":\"atzo\"},relativeTime:{future:{one:\"{0} egun barru\",other:\"{0} egun barru\"},past:{one:\"Duela {0} egun\",other:\"Duela {0} egun\"}}},\"day-short\":{displayName:\"eg.\",relative:{0:\"gaur\",1:\"bihar\",2:\"etzi\",\"-2\":\"herenegun\",\"-1\":\"atzo\"},relativeTime:{future:{one:\"{0} egun barru\",other:\"{0} egun barru\"},past:{one:\"Duela {0} egun\",other:\"Duela {0} egun\"}}},hour:{displayName:\"ordua\",relative:{0:\"ordu honetan\"},relativeTime:{future:{one:\"{0} ordu barru\",other:\"{0} ordu barru\"},past:{one:\"Duela {0} ordu\",other:\"Duela {0} ordu\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"ordu honetan\"},relativeTime:{future:{one:\"{0} ordu barru\",other:\"{0} ordu barru\"},past:{one:\"Duela {0} ordu\",other:\"Duela {0} ordu\"}}},minute:{displayName:\"minutua\",relative:{0:\"minutu honetan\"},relativeTime:{future:{one:\"{0} minutu barru\",other:\"{0} minutu barru\"},past:{one:\"Duela {0} minutu\",other:\"Duela {0} minutu\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"minutu honetan\"},relativeTime:{future:{one:\"{0} minutu barru\",other:\"{0} minutu barru\"},past:{one:\"Duela {0} minutu\",other:\"Duela {0} minutu\"}}},second:{displayName:\"segundoa\",relative:{0:\"orain\"},relativeTime:{future:{one:\"{0} segundo barru\",other:\"{0} segundo barru\"},past:{one:\"Duela {0} segundo\",other:\"Duela {0} segundo\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"orain\"},relativeTime:{future:{one:\"{0} segundo barru\",other:\"{0} segundo barru\"},past:{one:\"Duela {0} segundo\",other:\"Duela {0} segundo\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.fa=t())}(this,function(){\"use strict\";return[{locale:\"fa\",pluralRuleFunction:function(e,t){return t?\"other\":e>=0&&e<=1?\"one\":\"other\"},fields:{year:{displayName:\"سال\",relative:{0:\"امسال\",1:\"سال آینده\",\"-1\":\"سال گذشته\"},relativeTime:{future:{one:\"{0} سال بعد\",other:\"{0} سال بعد\"},past:{one:\"{0} سال پیش\",other:\"{0} سال پیش\"}}},\"year-short\":{displayName:\"سال\",relative:{0:\"امسال\",1:\"سال آینده\",\"-1\":\"سال گذشته\"},relativeTime:{future:{one:\"{0} سال بعد\",other:\"{0} سال بعد\"},past:{one:\"{0} سال پیش\",other:\"{0} سال پیش\"}}},month:{displayName:\"ماه\",relative:{0:\"این ماه\",1:\"ماه آینده\",\"-1\":\"ماه گذشته\"},relativeTime:{future:{one:\"{0} ماه بعد\",other:\"{0} ماه بعد\"},past:{one:\"{0} ماه پیش\",other:\"{0} ماه پیش\"}}},\"month-short\":{displayName:\"ماه\",relative:{0:\"این ماه\",1:\"ماه آینده\",\"-1\":\"ماه پیش\"},relativeTime:{future:{one:\"{0} ماه بعد\",other:\"{0} ماه بعد\"},past:{one:\"{0} ماه پیش\",other:\"{0} ماه پیش\"}}},day:{displayName:\"روز\",relative:{0:\"امروز\",1:\"فردا\",2:\"پس‌فردا\",\"-2\":\"پریروز\",\"-1\":\"دیروز\"},relativeTime:{future:{one:\"{0} روز بعد\",other:\"{0} روز بعد\"},past:{one:\"{0} روز پیش\",other:\"{0} روز پیش\"}}},\"day-short\":{displayName:\"روز\",relative:{0:\"امروز\",1:\"فردا\",2:\"پس‌فردا\",\"-2\":\"پریروز\",\"-1\":\"دیروز\"},relativeTime:{future:{one:\"{0} روز بعد\",other:\"{0} روز بعد\"},past:{one:\"{0} روز پیش\",other:\"{0} روز پیش\"}}},hour:{displayName:\"ساعت\",relative:{0:\"همین ساعت\"},relativeTime:{future:{one:\"{0} ساعت بعد\",other:\"{0} ساعت بعد\"},past:{one:\"{0} ساعت پیش\",other:\"{0} ساعت پیش\"}}},\"hour-short\":{displayName:\"ساعت\",relative:{0:\"همین ساعت\"},relativeTime:{future:{one:\"{0} ساعت بعد\",other:\"{0} ساعت بعد\"},past:{one:\"{0} ساعت پیش\",other:\"{0} ساعت پیش\"}}},minute:{displayName:\"دقیقه\",relative:{0:\"همین دقیقه\"},relativeTime:{future:{one:\"{0} دقیقه بعد\",other:\"{0} دقیقه بعد\"},past:{one:\"{0} دقیقه پیش\",other:\"{0} دقیقه پیش\"}}},\"minute-short\":{displayName:\"دقیقه\",relative:{0:\"همین دقیقه\"},relativeTime:{future:{one:\"{0} دقیقه بعد\",other:\"{0} دقیقه بعد\"},past:{one:\"{0} دقیقه پیش\",other:\"{0} دقیقه پیش\"}}},second:{displayName:\"ثانیه\",relative:{0:\"اکنون\"},relativeTime:{future:{one:\"{0} ثانیه بعد\",other:\"{0} ثانیه بعد\"},past:{one:\"{0} ثانیه پیش\",other:\"{0} ثانیه پیش\"}}},\"second-short\":{displayName:\"ثانیه\",relative:{0:\"اکنون\"},relativeTime:{future:{one:\"{0} ثانیه بعد\",other:\"{0} ثانیه بعد\"},past:{one:\"{0} ثانیه پیش\",other:\"{0} ثانیه پیش\"}}}}},{locale:\"fa-AF\",parentLocale:\"fa\"}]});\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t.ReactIntlLocaleData=t.ReactIntlLocaleData||{},t.ReactIntlLocaleData.fi=e())}(this,function(){\"use strict\";return[{locale:\"fi\",pluralRuleFunction:function(t,e){var i=!String(t).split(\".\")[1];return e?\"other\":1==t&&i?\"one\":\"other\"},fields:{year:{displayName:\"vuosi\",relative:{0:\"tänä vuonna\",1:\"ensi vuonna\",\"-1\":\"viime vuonna\"},relativeTime:{future:{one:\"{0} vuoden päästä\",other:\"{0} vuoden päästä\"},past:{one:\"{0} vuosi sitten\",other:\"{0} vuotta sitten\"}}},\"year-short\":{displayName:\"v\",relative:{0:\"tänä v\",1:\"ensi v\",\"-1\":\"viime v\"},relativeTime:{future:{one:\"{0} v päästä\",other:\"{0} v päästä\"},past:{one:\"{0} v sitten\",other:\"{0} v sitten\"}}},month:{displayName:\"kuukausi\",relative:{0:\"tässä kuussa\",1:\"ensi kuussa\",\"-1\":\"viime kuussa\"},relativeTime:{future:{one:\"{0} kuukauden päästä\",other:\"{0} kuukauden päästä\"},past:{one:\"{0} kuukausi sitten\",other:\"{0} kuukautta sitten\"}}},\"month-short\":{displayName:\"kk\",relative:{0:\"tässä kk\",1:\"ensi kk\",\"-1\":\"viime kk\"},relativeTime:{future:{one:\"{0} kk päästä\",other:\"{0} kk päästä\"},past:{one:\"{0} kk sitten\",other:\"{0} kk sitten\"}}},day:{displayName:\"päivä\",relative:{0:\"tänään\",1:\"huomenna\",2:\"ylihuomenna\",\"-2\":\"toissa päivänä\",\"-1\":\"eilen\"},relativeTime:{future:{one:\"{0} päivän päästä\",other:\"{0} päivän päästä\"},past:{one:\"{0} päivä sitten\",other:\"{0} päivää sitten\"}}},\"day-short\":{displayName:\"pv\",relative:{0:\"tänään\",1:\"huom.\",2:\"ylihuom.\",\"-2\":\"toissap.\",\"-1\":\"eilen\"},relativeTime:{future:{one:\"{0} pv päästä\",other:\"{0} pv päästä\"},past:{one:\"{0} pv sitten\",other:\"{0} pv sitten\"}}},hour:{displayName:\"tunti\",relative:{0:\"tämän tunnin aikana\"},relativeTime:{future:{one:\"{0} tunnin päästä\",other:\"{0} tunnin päästä\"},past:{one:\"{0} tunti sitten\",other:\"{0} tuntia sitten\"}}},\"hour-short\":{displayName:\"t\",relative:{0:\"tunnin sisällä\"},relativeTime:{future:{one:\"{0} t päästä\",other:\"{0} t päästä\"},past:{one:\"{0} t sitten\",other:\"{0} t sitten\"}}},minute:{displayName:\"minuutti\",relative:{0:\"tämän minuutin aikana\"},relativeTime:{future:{one:\"{0} minuutin päästä\",other:\"{0} minuutin päästä\"},past:{one:\"{0} minuutti sitten\",other:\"{0} minuuttia sitten\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"minuutin sisällä\"},relativeTime:{future:{one:\"{0} min päästä\",other:\"{0} min päästä\"},past:{one:\"{0} min sitten\",other:\"{0} min sitten\"}}},second:{displayName:\"sekunti\",relative:{0:\"nyt\"},relativeTime:{future:{one:\"{0} sekunnin päästä\",other:\"{0} sekunnin päästä\"},past:{one:\"{0} sekunti sitten\",other:\"{0} sekuntia sitten\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"nyt\"},relativeTime:{future:{one:\"{0} s päästä\",other:\"{0} s päästä\"},past:{one:\"{0} s sitten\",other:\"{0} s sitten\"}}}}}]});\n","!function(a,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(a.ReactIntlLocaleData=a.ReactIntlLocaleData||{},a.ReactIntlLocaleData.fil=n())}(this,function(){\"use strict\";return[{locale:\"fil\",pluralRuleFunction:function(a,n){var e=String(a).split(\".\"),o=e[0],t=e[1]||\"\",s=!e[1],r=o.slice(-1),i=t.slice(-1);return n?1==a?\"one\":\"other\":s&&(1==o||2==o||3==o)||s&&4!=r&&6!=r&&9!=r||!s&&4!=i&&6!=i&&9!=i?\"one\":\"other\"},fields:{year:{displayName:\"taon\",relative:{0:\"ngayong taon\",1:\"susunod na taon\",\"-1\":\"nakaraang taon\"},relativeTime:{future:{one:\"sa {0} taon\",other:\"sa {0} (na) taon\"},past:{one:\"{0} taon ang nakalipas\",other:\"{0} (na) taon ang nakalipas\"}}},\"year-short\":{displayName:\"taon\",relative:{0:\"ngayong taon\",1:\"susunod na taon\",\"-1\":\"nakaraang taon\"},relativeTime:{future:{one:\"sa {0} taon\",other:\"sa {0} (na) taon\"},past:{one:\"{0} taon ang nakalipas\",other:\"{0} (na) taon ang nakalipas\"}}},month:{displayName:\"buwan\",relative:{0:\"ngayong buwan\",1:\"susunod na buwan\",\"-1\":\"nakaraang buwan\"},relativeTime:{future:{one:\"sa {0} buwan\",other:\"sa {0} (na) buwan\"},past:{one:\"{0} buwan ang nakalipas\",other:\"{0} (na) buwan ang nakalipas\"}}},\"month-short\":{displayName:\"buwan\",relative:{0:\"ngayong buwan\",1:\"susunod na buwan\",\"-1\":\"nakaraang buwan\"},relativeTime:{future:{one:\"sa {0} buwan\",other:\"sa {0} (na) buwan\"},past:{one:\"{0} buwan ang nakalipas\",other:\"{0} (na) buwan ang nakalipas\"}}},day:{displayName:\"araw\",relative:{0:\"ngayong araw\",1:\"bukas\",2:\"Samakalawa\",\"-2\":\"Araw bago ang kahapon\",\"-1\":\"kahapon\"},relativeTime:{future:{one:\"sa {0} araw\",other:\"sa {0} (na) araw\"},past:{one:\"{0} araw ang nakalipas\",other:\"{0} (na) araw ang nakalipas\"}}},\"day-short\":{displayName:\"araw\",relative:{0:\"ngayong araw\",1:\"bukas\",2:\"Samakalawa\",\"-2\":\"Araw bago ang kahapon\",\"-1\":\"kahapon\"},relativeTime:{future:{one:\"sa {0} (na) araw\",other:\"sa {0} (na) araw\"},past:{one:\"{0} (na) araw ang nakalipas\",other:\"{0} (na) araw ang nakalipas\"}}},hour:{displayName:\"oras\",relative:{0:\"ngayong oras\"},relativeTime:{future:{one:\"sa {0} oras\",other:\"sa {0} (na) oras\"},past:{one:\"{0} oras ang nakalipas\",other:\"{0} (na) oras ang nakalipas\"}}},\"hour-short\":{displayName:\"oras\",relative:{0:\"ngayong oras\"},relativeTime:{future:{one:\"sa {0} oras\",other:\"sa {0} (na) oras\"},past:{one:\"{0} oras ang nakalipas\",other:\"{0} (na) oras ang nakalipas\"}}},minute:{displayName:\"minuto\",relative:{0:\"sa minutong ito\"},relativeTime:{future:{one:\"sa {0} minuto\",other:\"sa {0} (na) minuto\"},past:{one:\"{0} minuto ang nakalipas\",other:\"{0} (na) minuto ang nakalipas\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"sa minutong ito\"},relativeTime:{future:{one:\"sa {0} min.\",other:\"sa {0} (na) min.\"},past:{one:\"{0} min. ang nakalipas\",other:\"{0} (na) min. ang nakalipas\"}}},second:{displayName:\"segundo\",relative:{0:\"ngayon\"},relativeTime:{future:{one:\"sa {0} segundo\",other:\"sa {0} (na) segundo\"},past:{one:\"{0} segundo ang nakalipas\",other:\"{0} (na) segundo ang nakalipas\"}}},\"second-short\":{displayName:\"seg.\",relative:{0:\"ngayon\"},relativeTime:{future:{one:\"sa {0} seg.\",other:\"sa {0} (na) seg.\"},past:{one:\"{0} seg. ang nakalipas\",other:\"{0} (na) seg. nakalipas\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.fr=a())}(this,function(){\"use strict\";return[{locale:\"fr\",pluralRuleFunction:function(e,a){return a?1==e?\"one\":\"other\":e>=0&&e<2?\"one\":\"other\"},fields:{year:{displayName:\"année\",relative:{0:\"cette année\",1:\"l’année prochaine\",\"-1\":\"l’année dernière\"},relativeTime:{future:{one:\"dans {0} an\",other:\"dans {0} ans\"},past:{one:\"il y a {0} an\",other:\"il y a {0} ans\"}}},\"year-short\":{displayName:\"an\",relative:{0:\"cette année\",1:\"l’année prochaine\",\"-1\":\"l’année dernière\"},relativeTime:{future:{one:\"dans {0} a\",other:\"dans {0} a\"},past:{one:\"il y a {0} a\",other:\"il y a {0} a\"}}},month:{displayName:\"mois\",relative:{0:\"ce mois-ci\",1:\"le mois prochain\",\"-1\":\"le mois dernier\"},relativeTime:{future:{one:\"dans {0} mois\",other:\"dans {0} mois\"},past:{one:\"il y a {0} mois\",other:\"il y a {0} mois\"}}},\"month-short\":{displayName:\"m.\",relative:{0:\"ce mois-ci\",1:\"le mois prochain\",\"-1\":\"le mois dernier\"},relativeTime:{future:{one:\"dans {0} m.\",other:\"dans {0} m.\"},past:{one:\"il y a {0} m.\",other:\"il y a {0} m.\"}}},day:{displayName:\"jour\",relative:{0:\"aujourd’hui\",1:\"demain\",2:\"après-demain\",\"-2\":\"avant-hier\",\"-1\":\"hier\"},relativeTime:{future:{one:\"dans {0} jour\",other:\"dans {0} jours\"},past:{one:\"il y a {0} jour\",other:\"il y a {0} jours\"}}},\"day-short\":{displayName:\"j\",relative:{0:\"aujourd’hui\",1:\"demain\",2:\"après-demain\",\"-2\":\"avant-hier\",\"-1\":\"hier\"},relativeTime:{future:{one:\"dans {0} j\",other:\"dans {0} j\"},past:{one:\"il y a {0} j\",other:\"il y a {0} j\"}}},hour:{displayName:\"heure\",relative:{0:\"cette heure-ci\"},relativeTime:{future:{one:\"dans {0} heure\",other:\"dans {0} heures\"},past:{one:\"il y a {0} heure\",other:\"il y a {0} heures\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"cette heure-ci\"},relativeTime:{future:{one:\"dans {0} h\",other:\"dans {0} h\"},past:{one:\"il y a {0} h\",other:\"il y a {0} h\"}}},minute:{displayName:\"minute\",relative:{0:\"cette minute-ci\"},relativeTime:{future:{one:\"dans {0} minute\",other:\"dans {0} minutes\"},past:{one:\"il y a {0} minute\",other:\"il y a {0} minutes\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"cette minute-ci\"},relativeTime:{future:{one:\"dans {0} min\",other:\"dans {0} min\"},past:{one:\"il y a {0} min\",other:\"il y a {0} min\"}}},second:{displayName:\"seconde\",relative:{0:\"maintenant\"},relativeTime:{future:{one:\"dans {0} seconde\",other:\"dans {0} secondes\"},past:{one:\"il y a {0} seconde\",other:\"il y a {0} secondes\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"maintenant\"},relativeTime:{future:{one:\"dans {0} s\",other:\"dans {0} s\"},past:{one:\"il y a {0} s\",other:\"il y a {0} s\"}}}}},{locale:\"fr-BE\",parentLocale:\"fr\"},{locale:\"fr-BF\",parentLocale:\"fr\"},{locale:\"fr-BI\",parentLocale:\"fr\"},{locale:\"fr-BJ\",parentLocale:\"fr\"},{locale:\"fr-BL\",parentLocale:\"fr\"},{locale:\"fr-CA\",parentLocale:\"fr\",fields:{year:{displayName:\"année\",relative:{0:\"cette année\",1:\"l’année prochaine\",\"-1\":\"l’année dernière\"},relativeTime:{future:{one:\"Dans {0} an\",other:\"Dans {0} ans\"},past:{one:\"Il y a {0} an\",other:\"Il y a {0} ans\"}}},\"year-short\":{displayName:\"a\",relative:{0:\"cette année\",1:\"l’année prochaine\",\"-1\":\"l’année dernière\"},relativeTime:{future:{one:\"dans {0} a\",other:\"dans {0} a\"},past:{one:\"il y a {0} a\",other:\"il y a {0} a\"}}},month:{displayName:\"mois\",relative:{0:\"ce mois-ci\",1:\"le mois prochain\",\"-1\":\"le mois dernier\"},relativeTime:{future:{one:\"dans {0} mois\",other:\"dans {0} mois\"},past:{one:\"il y a {0} mois\",other:\"il y a {0} mois\"}}},\"month-short\":{displayName:\"m.\",relative:{0:\"ce mois-ci\",1:\"le mois prochain\",\"-1\":\"le mois dernier\"},relativeTime:{future:{one:\"dans {0} m.\",other:\"dans {0} m.\"},past:{one:\"il y a {0} m.\",other:\"il y a {0} m.\"}}},day:{displayName:\"jour\",relative:{0:\"aujourd’hui\",1:\"demain\",2:\"après-demain\",\"-2\":\"avant-hier\",\"-1\":\"hier\"},relativeTime:{future:{one:\"dans {0} jour\",other:\"dans {0} jours\"},past:{one:\"il y a {0} jour\",other:\"il y a {0} jours\"}}},\"day-short\":{displayName:\"j\",relative:{0:\"aujourd’hui\",1:\"demain\",2:\"après-demain\",\"-2\":\"avant-hier\",\"-1\":\"hier\"},relativeTime:{future:{one:\"dans {0} j\",other:\"dans {0} j\"},past:{one:\"il y a {0} j\",other:\"il y a {0} j\"}}},hour:{displayName:\"heure\",relative:{0:\"cette heure-ci\"},relativeTime:{future:{one:\"dans {0} heure\",other:\"dans {0} heures\"},past:{one:\"il y a {0} heure\",other:\"il y a {0} heures\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"cette heure-ci\"},relativeTime:{future:{one:\"dans {0} h\",other:\"dans {0} h\"},past:{one:\"il y a {0} h\",other:\"il y a {0} h\"}}},minute:{displayName:\"minute\",relative:{0:\"cette minute-ci\"},relativeTime:{future:{one:\"dans {0} minute\",other:\"dans {0} minutes\"},past:{one:\"il y a {0} minute\",other:\"il y a {0} minutes\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"cette minute-ci\"},relativeTime:{future:{one:\"dans {0} min\",other:\"dans {0} min\"},past:{one:\"il y a {0} min\",other:\"il y a {0} min\"}}},second:{displayName:\"seconde\",relative:{0:\"maintenant\"},relativeTime:{future:{one:\"dans {0} seconde\",other:\"dans {0} secondes\"},past:{one:\"il y a {0} seconde\",other:\"il y a {0} secondes\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"maintenant\"},relativeTime:{future:{one:\"dans {0} s\",other:\"dans {0} s\"},past:{one:\"il y a {0} s\",other:\"il y a {0} s\"}}}}},{locale:\"fr-CD\",parentLocale:\"fr\"},{locale:\"fr-CF\",parentLocale:\"fr\"},{locale:\"fr-CG\",parentLocale:\"fr\"},{locale:\"fr-CH\",parentLocale:\"fr\"},{locale:\"fr-CI\",parentLocale:\"fr\"},{locale:\"fr-CM\",parentLocale:\"fr\"},{locale:\"fr-DJ\",parentLocale:\"fr\"},{locale:\"fr-DZ\",parentLocale:\"fr\"},{locale:\"fr-GA\",parentLocale:\"fr\"},{locale:\"fr-GF\",parentLocale:\"fr\"},{locale:\"fr-GN\",parentLocale:\"fr\"},{locale:\"fr-GP\",parentLocale:\"fr\"},{locale:\"fr-GQ\",parentLocale:\"fr\"},{locale:\"fr-HT\",parentLocale:\"fr\",fields:{year:{displayName:\"année\",relative:{0:\"cette année\",1:\"l’année prochaine\",\"-1\":\"l’année dernière\"},relativeTime:{future:{one:\"dans {0} an\",other:\"dans {0} ans\"},past:{one:\"il y a {0} an\",other:\"il y a {0} ans\"}}},\"year-short\":{displayName:\"an\",relative:{0:\"cette année\",1:\"l’année prochaine\",\"-1\":\"l’année dernière\"},relativeTime:{future:{one:\"dans {0} a\",other:\"dans {0} a\"},past:{one:\"il y a {0} a\",other:\"il y a {0} a\"}}},month:{displayName:\"mois\",relative:{0:\"ce mois-ci\",1:\"le mois prochain\",\"-1\":\"le mois dernier\"},relativeTime:{future:{one:\"dans {0} mois\",other:\"dans {0} mois\"},past:{one:\"il y a {0} mois\",other:\"il y a {0} mois\"}}},\"month-short\":{displayName:\"m.\",relative:{0:\"ce mois-ci\",1:\"le mois prochain\",\"-1\":\"le mois dernier\"},relativeTime:{future:{one:\"dans {0} m.\",other:\"dans {0} m.\"},past:{one:\"il y a {0} m.\",other:\"il y a {0} m.\"}}},day:{displayName:\"jour\",relative:{0:\"aujourd’hui\",1:\"demain\",2:\"après-demain\",\"-2\":\"avant-hier\",\"-1\":\"hier\"},relativeTime:{future:{one:\"dans {0} jour\",other:\"dans {0} jours\"},past:{one:\"il y a {0} jour\",other:\"il y a {0} jours\"}}},\"day-short\":{displayName:\"jr.\",relative:{0:\"aujourd’hui\",1:\"demain\",2:\"après-demain\",\"-2\":\"avant-hier\",\"-1\":\"hier\"},relativeTime:{future:{one:\"dans {0} j\",other:\"dans {0} j\"},past:{one:\"il y a {0} j\",other:\"il y a {0} j\"}}},hour:{displayName:\"heure\",relative:{0:\"cette heure-ci\"},relativeTime:{future:{one:\"dans {0} heure\",other:\"dans {0} heures\"},past:{one:\"il y a {0} heure\",other:\"il y a {0} heures\"}}},\"hour-short\":{displayName:\"hr\",relative:{0:\"cette heure-ci\"},relativeTime:{future:{one:\"dans {0} h\",other:\"dans {0} h\"},past:{one:\"il y a {0} h\",other:\"il y a {0} h\"}}},minute:{displayName:\"minute\",relative:{0:\"cette minute-ci\"},relativeTime:{future:{one:\"dans {0} minute\",other:\"dans {0} minutes\"},past:{one:\"il y a {0} minute\",other:\"il y a {0} minutes\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"cette minute-ci\"},relativeTime:{future:{one:\"dans {0} min\",other:\"dans {0} min\"},past:{one:\"il y a {0} min\",other:\"il y a {0} min\"}}},second:{displayName:\"seconde\",relative:{0:\"maintenant\"},relativeTime:{future:{one:\"dans {0} seconde\",other:\"dans {0} secondes\"},past:{one:\"il y a {0} seconde\",other:\"il y a {0} secondes\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"maintenant\"},relativeTime:{future:{one:\"dans {0} s\",other:\"dans {0} s\"},past:{one:\"il y a {0} s\",other:\"il y a {0} s\"}}}}},{locale:\"fr-KM\",parentLocale:\"fr\"},{locale:\"fr-LU\",parentLocale:\"fr\"},{locale:\"fr-MA\",parentLocale:\"fr\"},{locale:\"fr-MC\",parentLocale:\"fr\"},{locale:\"fr-MF\",parentLocale:\"fr\"},{locale:\"fr-MG\",parentLocale:\"fr\"},{locale:\"fr-ML\",parentLocale:\"fr\"},{locale:\"fr-MQ\",parentLocale:\"fr\"},{locale:\"fr-MR\",parentLocale:\"fr\"},{locale:\"fr-MU\",parentLocale:\"fr\"},{locale:\"fr-NC\",parentLocale:\"fr\"},{locale:\"fr-NE\",parentLocale:\"fr\"},{locale:\"fr-PF\",parentLocale:\"fr\"},{locale:\"fr-PM\",parentLocale:\"fr\"},{locale:\"fr-RE\",parentLocale:\"fr\"},{locale:\"fr-RW\",parentLocale:\"fr\"},{locale:\"fr-SC\",parentLocale:\"fr\"},{locale:\"fr-SN\",parentLocale:\"fr\"},{locale:\"fr-SY\",parentLocale:\"fr\"},{locale:\"fr-TD\",parentLocale:\"fr\"},{locale:\"fr-TG\",parentLocale:\"fr\"},{locale:\"fr-TN\",parentLocale:\"fr\"},{locale:\"fr-VU\",parentLocale:\"fr\"},{locale:\"fr-WF\",parentLocale:\"fr\"},{locale:\"fr-YT\",parentLocale:\"fr\"}]});\n","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.fy=n())}(this,function(){\"use strict\";return[{locale:\"fy\",pluralRuleFunction:function(e,n){var r=!String(e).split(\".\")[1];return n?\"other\":1==e&&r?\"one\":\"other\"},fields:{year:{displayName:\"Jier\",relative:{0:\"dit jier\",1:\"folgjend jier\",\"-1\":\"foarich jier\"},relativeTime:{future:{one:\"Oer {0} jier\",other:\"Oer {0} jier\"},past:{one:\"{0} jier lyn\",other:\"{0} jier lyn\"}}},\"year-short\":{displayName:\"Jier\",relative:{0:\"dit jier\",1:\"folgjend jier\",\"-1\":\"foarich jier\"},relativeTime:{future:{one:\"Oer {0} jier\",other:\"Oer {0} jier\"},past:{one:\"{0} jier lyn\",other:\"{0} jier lyn\"}}},month:{displayName:\"Moanne\",relative:{0:\"dizze moanne\",1:\"folgjende moanne\",\"-1\":\"foarige moanne\"},relativeTime:{future:{one:\"Oer {0} moanne\",other:\"Oer {0} moannen\"},past:{one:\"{0} moanne lyn\",other:\"{0} moannen lyn\"}}},\"month-short\":{displayName:\"Moanne\",relative:{0:\"dizze moanne\",1:\"folgjende moanne\",\"-1\":\"foarige moanne\"},relativeTime:{future:{one:\"Oer {0} moanne\",other:\"Oer {0} moannen\"},past:{one:\"{0} moanne lyn\",other:\"{0} moannen lyn\"}}},day:{displayName:\"dei\",relative:{0:\"vandaag\",1:\"morgen\",2:\"Oermorgen\",\"-2\":\"eergisteren\",\"-1\":\"gisteren\"},relativeTime:{future:{one:\"Oer {0} dei\",other:\"Oer {0} deien\"},past:{one:\"{0} dei lyn\",other:\"{0} deien lyn\"}}},\"day-short\":{displayName:\"dei\",relative:{0:\"vandaag\",1:\"morgen\",2:\"Oermorgen\",\"-2\":\"eergisteren\",\"-1\":\"gisteren\"},relativeTime:{future:{one:\"Oer {0} dei\",other:\"Oer {0} deien\"},past:{one:\"{0} dei lyn\",other:\"{0} deien lyn\"}}},hour:{displayName:\"oere\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"Oer {0} oere\",other:\"Oer {0} oere\"},past:{one:\"{0} oere lyn\",other:\"{0} oere lyn\"}}},\"hour-short\":{displayName:\"oere\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"Oer {0} oere\",other:\"Oer {0} oere\"},past:{one:\"{0} oere lyn\",other:\"{0} oere lyn\"}}},minute:{displayName:\"Minút\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"Oer {0} minút\",other:\"Oer {0} minuten\"},past:{one:\"{0} minút lyn\",other:\"{0} minuten lyn\"}}},\"minute-short\":{displayName:\"Minút\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"Oer {0} minút\",other:\"Oer {0} minuten\"},past:{one:\"{0} minút lyn\",other:\"{0} minuten lyn\"}}},second:{displayName:\"Sekonde\",relative:{0:\"nu\"},relativeTime:{future:{one:\"Oer {0} sekonde\",other:\"Oer {0} sekonden\"},past:{one:\"{0} sekonde lyn\",other:\"{0} sekonden lyn\"}}},\"second-short\":{displayName:\"Sekonde\",relative:{0:\"nu\"},relativeTime:{future:{one:\"Oer {0} sekonde\",other:\"Oer {0} sekonden\"},past:{one:\"{0} sekonde lyn\",other:\"{0} sekonden lyn\"}}}}}]});\n","!function(n,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(n.ReactIntlLocaleData=n.ReactIntlLocaleData||{},n.ReactIntlLocaleData.ga=i())}(this,function(){\"use strict\";return[{locale:\"ga\",pluralRuleFunction:function(n,i){var e=String(n).split(\".\"),a=Number(e[0])==n;return i?1==n?\"one\":\"other\":1==n?\"one\":2==n?\"two\":a&&n>=3&&n<=6?\"few\":a&&n>=7&&n<=10?\"many\":\"other\"},fields:{year:{displayName:\"Bliain\",relative:{0:\"an bhliain seo\",1:\"an bhliain seo chugainn\",\"-1\":\"anuraidh\"},relativeTime:{future:{one:\"i gceann {0} bhliain\",two:\"i gceann {0} bhliain\",few:\"i gceann {0} bliana\",many:\"i gceann {0} mbliana\",other:\"i gceann {0} bliain\"},past:{one:\"{0} bhliain ó shin\",two:\"{0} bhliain ó shin\",few:\"{0} bliana ó shin\",many:\"{0} mbliana ó shin\",other:\"{0} bliain ó shin\"}}},\"year-short\":{displayName:\"bl.\",relative:{0:\"an bhl. seo\",1:\"an bhl. seo chugainn\",\"-1\":\"anuraidh\"},relativeTime:{future:{one:\"i gceann {0} bl.\",two:\"i gceann {0} bhl.\",few:\"i gceann {0} bl.\",many:\"i gceann {0} mbl.\",other:\"i gceann {0} bl.\"},past:{one:\"{0} bhl. ó shin\",two:\"{0} bhl. ó shin\",few:\"{0} bl. ó shin\",many:\"{0} mbl. ó shin\",other:\"{0} bl. ó shin\"}}},month:{displayName:\"Mí\",relative:{0:\"an mhí seo\",1:\"an mhí seo chugainn\",\"-1\":\"an mhí seo caite\"},relativeTime:{future:{one:\"i gceann {0} mhí\",two:\"i gceann {0} mhí\",few:\"i gceann {0} mhí\",many:\"i gceann {0} mí\",other:\"i gceann {0} mí\"},past:{one:\"{0} mhí ó shin\",two:\"{0} mhí ó shin\",few:\"{0} mhí ó shin\",many:\"{0} mí ó shin\",other:\"{0} mí ó shin\"}}},\"month-short\":{displayName:\"mí\",relative:{0:\"an mhí seo\",1:\"an mhí seo chugainn\",\"-1\":\"an mhí seo caite\"},relativeTime:{future:{one:\"i gceann {0} mhí\",two:\"i gceann {0} mhí\",few:\"i gceann {0} mhí\",many:\"i gceann {0} mí\",other:\"i gceann {0} mí\"},past:{one:\"{0} mhí ó shin\",two:\"{0} mhí ó shin\",few:\"{0} mhí ó shin\",many:\"{0} mí ó shin\",other:\"{0} mí ó shin\"}}},day:{displayName:\"Lá\",relative:{0:\"inniu\",1:\"amárach\",2:\"arú amárach\",\"-2\":\"arú inné\",\"-1\":\"inné\"},relativeTime:{future:{one:\"i gceann {0} lá\",two:\"i gceann {0} lá\",few:\"i gceann {0} lá\",many:\"i gceann {0} lá\",other:\"i gceann {0} lá\"},past:{one:\"{0} lá ó shin\",two:\"{0} lá ó shin\",few:\"{0} lá ó shin\",many:\"{0} lá ó shin\",other:\"{0} lá ó shin\"}}},\"day-short\":{displayName:\"Lá\",relative:{0:\"inniu\",1:\"amárach\",2:\"arú amárach\",\"-2\":\"arú inné\",\"-1\":\"inné\"},relativeTime:{future:{one:\"i gceann {0} lá\",two:\"i gceann {0} lá\",few:\"i gceann {0} lá\",many:\"i gceann {0} lá\",other:\"i gceann {0} lá\"},past:{one:\"{0} lá ó shin\",two:\"{0} lá ó shin\",few:\"{0} lá ó shin\",many:\"{0} lá ó shin\",other:\"{0} lá ó shin\"}}},hour:{displayName:\"Uair\",relative:{0:\"an uair seo\"},relativeTime:{future:{one:\"i gceann {0} uair an chloig\",two:\"i gceann {0} uair an chloig\",few:\"i gceann {0} huaire an chloig\",many:\"i gceann {0} n-uaire an chloig\",other:\"i gceann {0} uair an chloig\"},past:{one:\"{0} uair an chloig ó shin\",two:\"{0} uair an chloig ó shin\",few:\"{0} huaire an chloig ó shin\",many:\"{0} n-uaire an chloig ó shin\",other:\"{0} uair an chloig ó shin\"}}},\"hour-short\":{displayName:\"uair\",relative:{0:\"an uair seo\"},relativeTime:{future:{one:\"i gceann {0} uair\",two:\"i gceann {0} uair\",few:\"i gceann {0} huaire\",many:\"i gceann {0} n-uaire\",other:\"i gceann {0} uair\"},past:{one:\"{0} uair ó shin\",two:\"{0} uair ó shin\",few:\"{0} huaire ó shin\",many:\"{0} n-uaire ó shin\",other:\"{0} uair ó shin\"}}},minute:{displayName:\"Nóiméad\",relative:{0:\"an nóiméad seo\"},relativeTime:{future:{one:\"i gceann {0} nóiméad\",two:\"i gceann {0} nóiméad\",few:\"i gceann {0} nóiméad\",many:\"i gceann {0} nóiméad\",other:\"i gceann {0} nóiméad\"},past:{one:\"{0} nóiméad ó shin\",two:\"{0} nóiméad ó shin\",few:\"{0} nóiméad ó shin\",many:\"{0} nóiméad ó shin\",other:\"{0} nóiméad ó shin\"}}},\"minute-short\":{displayName:\"nóim.\",relative:{0:\"an nóiméad seo\"},relativeTime:{future:{one:\"i gceann {0} nóim.\",two:\"i gceann {0} nóim.\",few:\"i gceann {0} nóim.\",many:\"i gceann {0} nóim.\",other:\"i gceann {0} nóim.\"},past:{one:\"{0} nóim. ó shin\",two:\"{0} nóim. ó shin\",few:\"{0} nóim. ó shin\",many:\"{0} nóim. ó shin\",other:\"{0} nóim. ó shin\"}}},second:{displayName:\"Soicind\",relative:{0:\"anois\"},relativeTime:{future:{one:\"i gceann {0} soicind\",two:\"i gceann {0} shoicind\",few:\"i gceann {0} shoicind\",many:\"i gceann {0} soicind\",other:\"i gceann {0} soicind\"},past:{one:\"{0} soicind ó shin\",two:\"{0} shoicind ó shin\",few:\"{0} shoicind ó shin\",many:\"{0} soicind ó shin\",other:\"{0} soicind ó shin\"}}},\"second-short\":{displayName:\"soic.\",relative:{0:\"anois\"},relativeTime:{future:{one:\"i gceann {0} soic.\",two:\"i gceann {0} shoic.\",few:\"i gceann {0} shoic.\",many:\"i gceann {0} soic.\",other:\"i gceann {0} soic.\"},past:{one:\"{0} soic. ó shin\",two:\"{0} shoic. ó shin\",few:\"{0} shoic. ó shin\",many:\"{0} soic. ó shin\",other:\"{0} soic. ó shin\"}}}}}]});\n","!function(a,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(a.ReactIntlLocaleData=a.ReactIntlLocaleData||{},a.ReactIntlLocaleData.gd=e())}(this,function(){\"use strict\";return[{locale:\"gd\",pluralRuleFunction:function(a,e){var i=String(a).split(\".\"),n=Number(i[0])==a;return e?1==a||11==a?\"one\":2==a||12==a?\"two\":3==a||13==a?\"few\":\"other\":1==a||11==a?\"one\":2==a||12==a?\"two\":n&&a>=3&&a<=10||n&&a>=13&&a<=19?\"few\":\"other\"},fields:{year:{displayName:\"bliadhna\",relative:{0:\"am bliadhna\",1:\"an ath-bhliadhna\",\"-2\":\"a-bhòn-uiridh\",\"-1\":\"an-uiridh\"},relativeTime:{future:{one:\"an ceann {0} bhliadhna\",two:\"an ceann {0} bhliadhna\",few:\"an ceann {0} bliadhnaichean\",other:\"an ceann {0} bliadhna\"},past:{one:\"{0} bhliadhna air ais\",two:\"{0} bhliadhna air ais\",few:\"{0} bhliadhnaichean air ais\",other:\"{0} bliadhna air ais\"}}},\"year-short\":{displayName:\"blia.\",relative:{0:\"am bliadhna\",1:\"an ath-bhliadhna\",\"-2\":\"a-bhòn-uiridh\",\"-1\":\"an-uiridh\"},relativeTime:{future:{one:\"an {0} bhlia.\",two:\"an {0} bhlia.\",few:\"an {0} blia.\",other:\"an {0} blia.\"},past:{one:\"o {0} bhlia.\",two:\"o {0} bhlia.\",few:\"o {0} blia.\",other:\"o {0} blia.\"}}},month:{displayName:\"mìos\",relative:{0:\"am mìos seo\",1:\"an ath-mhìos\",\"-1\":\"am mìos seo chaidh\"},relativeTime:{future:{one:\"an ceann {0} mhìosa\",two:\"an ceann {0} mhìosa\",few:\"an ceann {0} mìosan\",other:\"an ceann {0} mìosa\"},past:{one:\"{0} mhìos air ais\",two:\"{0} mhìos air ais\",few:\"{0} mìosan air ais\",other:\"{0} mìos air ais\"}}},\"month-short\":{displayName:\"mìos\",relative:{0:\"am mìos seo\",1:\"an ath-mhìos\",\"-1\":\"am mìos sa chaidh\"},relativeTime:{future:{one:\"an {0} mhìos.\",two:\"an {0} mhìos.\",few:\"an {0} mìos.\",other:\"an {0} mìos.\"},past:{one:\"o {0} mhìos.\",two:\"o {0} mhìos.\",few:\"o {0} mìos.\",other:\"o {0} mìos.\"}}},day:{displayName:\"latha\",relative:{0:\"an-diugh\",1:\"a-màireach\",2:\"an-earar\",3:\"an-eararais\",\"-2\":\"a-bhòin-dè\",\"-1\":\"an-dè\"},relativeTime:{future:{one:\"an ceann {0} latha\",two:\"an ceann {0} latha\",few:\"an ceann {0} làithean\",other:\"an ceann {0} latha\"},past:{one:\"{0} latha air ais\",two:\"{0} latha air ais\",few:\"{0} làithean air ais\",other:\"{0} latha air ais\"}}},\"day-short\":{displayName:\"là\",relative:{0:\"an-diugh\",1:\"a-màireach\",2:\"an-earar\",3:\"an-eararais\",\"-2\":\"a-bhòin-dè\",\"-1\":\"an-dè\"},relativeTime:{future:{one:\"an {0} là\",two:\"an {0} là\",few:\"an {0} là.\",other:\"an {0} là\"},past:{one:\"o {0} là\",two:\"o {0} là\",few:\"o {0} là.\",other:\"o {0} là\"}}},hour:{displayName:\"uair a thìde\",relative:{0:\"am broinn uair a thìde\"},relativeTime:{future:{one:\"an ceann {0} uair a thìde\",two:\"an ceann {0} uair a thìde\",few:\"an ceann {0} uairean a thìde\",other:\"an ceann {0} uair a thìde\"},past:{one:\"{0} uair a thìde air ais\",two:\"{0} uair a thìde air ais\",few:\"{0} uairean a thìde air ais\",other:\"{0} uair a thìde air ais\"}}},\"hour-short\":{displayName:\"uair\",relative:{0:\"am broinn uair\"},relativeTime:{future:{one:\"an {0} uair\",two:\"an {0} uair\",few:\"an {0} uair.\",other:\"an {0} uair\"},past:{one:\"o {0} uair\",two:\"o {0} uair\",few:\"o {0} uair.\",other:\"o {0} uair\"}}},minute:{displayName:\"mionaid\",relative:{0:\"am broinn mionaid\"},relativeTime:{future:{one:\"an ceann {0} mhionaid\",two:\"an ceann {0} mhionaid\",few:\"an ceann {0} mionaidean\",other:\"an ceann {0} mionaid\"},past:{one:\"{0} mhionaid air ais\",two:\"{0} mhionaid air ais\",few:\"{0} mionaidean air ais\",other:\"{0} mionaid air ais\"}}},\"minute-short\":{displayName:\"mion.\",relative:{0:\"am broinn mion.\"},relativeTime:{future:{one:\"an {0} mhion.\",two:\"an {0} mhion.\",few:\"an {0} mion.\",other:\"an {0} mion.\"},past:{one:\"o {0} mhion.\",two:\"o {0} mhion.\",few:\"o {0} mion.\",other:\"o {0} mion.\"}}},second:{displayName:\"diog\",relative:{0:\"an-dràsta\"},relativeTime:{future:{one:\"an ceann {0} diog\",two:\"an ceann {0} dhiog\",few:\"an ceann {0} diogan\",other:\"an ceann {0} diog\"},past:{one:\"{0} diog air ais\",two:\"{0} dhiog air ais\",few:\"{0} diogan air ais\",other:\"{0} diog air ais\"}}},\"second-short\":{displayName:\"diog\",relative:{0:\"an-dràsta\"},relativeTime:{future:{one:\"an {0} diog\",two:\"an {0} dhiog\",few:\"an {0} diog.\",other:\"an {0} diog\"},past:{one:\"o {0} diog\",two:\"o {0} dhiog\",few:\"o {0} diog.\",other:\"o {0} diog\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.gl=a())}(this,function(){\"use strict\";return[{locale:\"gl\",pluralRuleFunction:function(e,a){var o=!String(e).split(\".\")[1];return a?\"other\":1==e&&o?\"one\":\"other\"},fields:{year:{displayName:\"ano\",relative:{0:\"este ano\",1:\"o próximo ano\",\"-1\":\"o ano pasado\"},relativeTime:{future:{one:\"en {0} ano\",other:\"en {0} anos\"},past:{one:\"hai {0} ano\",other:\"hai {0} anos\"}}},\"year-short\":{displayName:\"ano\",relative:{0:\"este ano\",1:\"seguinte ano\",\"-1\":\"ano pasado\"},relativeTime:{future:{one:\"en {0} ano\",other:\"en {0} anos\"},past:{one:\"hai {0} ano\",other:\"hai {0} anos\"}}},month:{displayName:\"mes\",relative:{0:\"este mes\",1:\"o próximo mes\",\"-1\":\"o mes pasado\"},relativeTime:{future:{one:\"en {0} mes\",other:\"en {0} meses\"},past:{one:\"hai {0} mes\",other:\"hai {0} meses\"}}},\"month-short\":{displayName:\"mes\",relative:{0:\"este m.\",1:\"m. seguinte\",\"-1\":\"m. pasado\"},relativeTime:{future:{one:\"en {0} mes\",other:\"en {0} meses\"},past:{one:\"hai {0} mes\",other:\"hai {0} meses\"}}},day:{displayName:\"día\",relative:{0:\"hoxe\",1:\"mañá\",2:\"pasadomañá\",\"-2\":\"antonte\",\"-1\":\"onte\"},relativeTime:{future:{one:\"en {0} día\",other:\"en {0} días\"},past:{one:\"hai {0} día\",other:\"hai {0} días\"}}},\"day-short\":{displayName:\"día\",relative:{0:\"hoxe\",1:\"mañá\",2:\"pasadomañá\",\"-2\":\"antonte\",\"-1\":\"onte\"},relativeTime:{future:{one:\"en {0} día\",other:\"en {0} días\"},past:{one:\"hai {0} día\",other:\"hai {0} días\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"en {0} hora\",other:\"en {0} horas\"},past:{one:\"hai {0} hora\",other:\"hai {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"en {0} h\",other:\"en {0} h\"},past:{one:\"hai {0} h\",other:\"hai {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"en {0} minuto\",other:\"en {0} minutos\"},past:{one:\"hai {0} minuto\",other:\"hai {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"en {0} min\",other:\"en {0} min\"},past:{one:\"hai {0} min\",other:\"hai {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"agora\"},relativeTime:{future:{one:\"en {0} segundo\",other:\"en {0} segundos\"},past:{one:\"hai {0} segundo\",other:\"hai {0} segundos\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"agora\"},relativeTime:{future:{one:\"en {0} s\",other:\"en {0} s\"},past:{one:\"hai {0} s\",other:\"hai {0} s\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ha=t())}(this,function(){\"use strict\";return[{locale:\"ha\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"Shekara\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Shekara\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Wata\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Wata\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Kwana\",relative:{0:\"Yau\",1:\"Gobe\",\"-1\":\"Jiya\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Kwana\",relative:{0:\"Yau\",1:\"Gobe\",\"-1\":\"Jiya\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Awa\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Awa\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minti\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minti\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Daƙiƙa\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Daƙiƙa\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"ha-Arab\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"ha-GH\",parentLocale:\"ha\"},{locale:\"ha-NE\",parentLocale:\"ha\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.he=t())}(this,function(){\"use strict\";return[{locale:\"he\",pluralRuleFunction:function(e,t){var a=String(e).split(\".\"),o=a[0],r=!a[1],n=Number(a[0])==e,i=n&&a[0].slice(-1);return t?\"other\":1==e&&r?\"one\":2==o&&r?\"two\":r&&(e<0||e>10)&&n&&0==i?\"many\":\"other\"},fields:{year:{displayName:\"שנה\",relative:{0:\"השנה\",1:\"השנה הבאה\",\"-1\":\"השנה שעברה\"},relativeTime:{future:{one:\"בעוד שנה\",two:\"בעוד שנתיים\",many:\"בעוד {0} שנה\",other:\"בעוד {0} שנים\"},past:{one:\"לפני שנה\",two:\"לפני שנתיים\",many:\"לפני {0} שנה\",other:\"לפני {0} שנים\"}}},\"year-short\":{displayName:\"שנ׳\",relative:{0:\"השנה\",1:\"השנה הבאה\",\"-1\":\"השנה שעברה\"},relativeTime:{future:{one:\"בעוד שנה\",two:\"בעוד שנתיים\",many:\"בעוד {0} שנה\",other:\"בעוד {0} שנים\"},past:{one:\"לפני שנה\",two:\"לפני שנתיים\",many:\"לפני {0} שנה\",other:\"לפני {0} שנים\"}}},month:{displayName:\"חודש\",relative:{0:\"החודש\",1:\"החודש הבא\",\"-1\":\"החודש שעבר\"},relativeTime:{future:{one:\"בעוד חודש\",two:\"בעוד חודשיים\",many:\"בעוד {0} חודשים\",other:\"בעוד {0} חודשים\"},past:{one:\"לפני חודש\",two:\"לפני חודשיים\",many:\"לפני {0} חודשים\",other:\"לפני {0} חודשים\"}}},\"month-short\":{displayName:\"חו׳\",relative:{0:\"החודש\",1:\"החודש הבא\",\"-1\":\"החודש שעבר\"},relativeTime:{future:{one:\"בעוד חודש\",two:\"בעוד חודשיים\",many:\"בעוד {0} חודשים\",other:\"בעוד {0} חודשים\"},past:{one:\"לפני חודש\",two:\"לפני חודשיים\",many:\"לפני {0} חודשים\",other:\"לפני {0} חודשים\"}}},day:{displayName:\"יום\",relative:{0:\"היום\",1:\"מחר\",2:\"מחרתיים\",\"-2\":\"שלשום\",\"-1\":\"אתמול\"},relativeTime:{future:{one:\"בעוד יום {0}\",two:\"בעוד יומיים\",many:\"בעוד {0} ימים\",other:\"בעוד {0} ימים\"},past:{one:\"לפני יום {0}\",two:\"לפני יומיים\",many:\"לפני {0} ימים\",other:\"לפני {0} ימים\"}}},\"day-short\":{displayName:\"יום\",relative:{0:\"היום\",1:\"מחר\",2:\"מחרתיים\",\"-2\":\"שלשום\",\"-1\":\"אתמול\"},relativeTime:{future:{one:\"מחר\",two:\"בעוד יומיים\",many:\"בעוד {0} ימים\",other:\"בעוד {0} ימים\"},past:{one:\"אתמול\",two:\"לפני יומיים\",many:\"לפני {0} ימים\",other:\"לפני {0} ימים\"}}},hour:{displayName:\"שעה\",relative:{0:\"בשעה זו\"},relativeTime:{future:{one:\"בעוד שעה\",two:\"בעוד שעתיים\",many:\"בעוד {0} שעות\",other:\"בעוד {0} שעות\"},past:{one:\"לפני שעה\",two:\"לפני שעתיים\",many:\"לפני {0} שעות\",other:\"לפני {0} שעות\"}}},\"hour-short\":{displayName:\"שעה\",relative:{0:\"בשעה זו\"},relativeTime:{future:{one:\"בעוד שעה\",two:\"בעוד שעתיים\",many:\"בעוד {0} שע׳\",other:\"בעוד {0} שע׳\"},past:{one:\"לפני שעה\",two:\"לפני שעתיים\",many:\"לפני {0} שע׳\",other:\"לפני {0} שע׳\"}}},minute:{displayName:\"דקה\",relative:{0:\"בדקה זו\"},relativeTime:{future:{one:\"בעוד דקה\",two:\"בעוד שתי דקות\",many:\"בעוד {0} דקות\",other:\"בעוד {0} דקות\"},past:{one:\"לפני דקה\",two:\"לפני שתי דקות\",many:\"לפני {0} דקות\",other:\"לפני {0} דקות\"}}},\"minute-short\":{displayName:\"דק׳\",relative:{0:\"בדקה זו\"},relativeTime:{future:{one:\"בעוד דקה\",two:\"בעוד שתי דק׳\",many:\"בעוד {0} דק׳\",other:\"בעוד {0} דק׳\"},past:{one:\"לפני דקה\",two:\"לפני {0} דק׳\",many:\"לפני {0} דק׳\",other:\"לפני {0} דק׳\"}}},second:{displayName:\"שנייה\",relative:{0:\"עכשיו\"},relativeTime:{future:{one:\"בעוד שנייה\",two:\"בעוד שתי שניות\",many:\"בעוד {0} שניות\",other:\"בעוד {0} שניות\"},past:{one:\"לפני שנייה\",two:\"לפני שתי שניות\",many:\"לפני {0} שניות\",other:\"לפני {0} שניות\"}}},\"second-short\":{displayName:\"שנ׳\",relative:{0:\"עכשיו\"},relativeTime:{future:{one:\"בעוד שנ׳\",two:\"בעוד שתי שנ׳\",many:\"בעוד {0} שנ׳\",other:\"בעוד {0} שנ׳\"},past:{one:\"לפני שנ׳\",two:\"לפני שתי שנ׳\",many:\"לפני {0} שנ׳\",other:\"לפני {0} שנ׳\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.hi=t())}(this,function(){\"use strict\";return[{locale:\"hi\",pluralRuleFunction:function(e,t){return t?1==e?\"one\":2==e||3==e?\"two\":4==e?\"few\":6==e?\"many\":\"other\":e>=0&&e<=1?\"one\":\"other\"},fields:{year:{displayName:\"वर्ष\",relative:{0:\"इस वर्ष\",1:\"अगला वर्ष\",\"-1\":\"पिछला वर्ष\"},relativeTime:{future:{one:\"{0} वर्ष में\",other:\"{0} वर्ष में\"},past:{one:\"{0} वर्ष पहले\",other:\"{0} वर्ष पहले\"}}},\"year-short\":{displayName:\"वर्ष\",relative:{0:\"इस वर्ष\",1:\"अगला वर्ष\",\"-1\":\"पिछला वर्ष\"},relativeTime:{future:{one:\"{0} वर्ष में\",other:\"{0} वर्ष में\"},past:{one:\"{0} वर्ष पहले\",other:\"{0} वर्ष पहले\"}}},month:{displayName:\"माह\",relative:{0:\"इस माह\",1:\"अगला माह\",\"-1\":\"पिछला माह\"},relativeTime:{future:{one:\"{0} माह में\",other:\"{0} माह में\"},past:{one:\"{0} माह पहले\",other:\"{0} माह पहले\"}}},\"month-short\":{displayName:\"माह\",relative:{0:\"इस माह\",1:\"अगला माह\",\"-1\":\"पिछला माह\"},relativeTime:{future:{one:\"{0} माह में\",other:\"{0} माह में\"},past:{one:\"{0} माह पहले\",other:\"{0} माह पहले\"}}},day:{displayName:\"दिन\",relative:{0:\"आज\",1:\"कल\",2:\"परसों\",\"-2\":\"परसों\",\"-1\":\"कल\"},relativeTime:{future:{one:\"{0} दिन में\",other:\"{0} दिन में\"},past:{one:\"{0} दिन पहले\",other:\"{0} दिन पहले\"}}},\"day-short\":{displayName:\"दिन\",relative:{0:\"आज\",1:\"कल\",2:\"परसों\",\"-2\":\"परसों\",\"-1\":\"कल\"},relativeTime:{future:{one:\"{0} दिन में\",other:\"{0} दिन में\"},past:{one:\"{0} दिन पहले\",other:\"{0} दिन पहले\"}}},hour:{displayName:\"घंटा\",relative:{0:\"यह घंटा\"},relativeTime:{future:{one:\"{0} घंटे में\",other:\"{0} घंटे में\"},past:{one:\"{0} घंटे पहले\",other:\"{0} घंटे पहले\"}}},\"hour-short\":{displayName:\"घं॰\",relative:{0:\"यह घंटा\"},relativeTime:{future:{one:\"{0} घं॰ में\",other:\"{0} घं॰ में\"},past:{one:\"{0} घं॰ पहले\",other:\"{0} घं॰ पहले\"}}},minute:{displayName:\"मिनट\",relative:{0:\"यह मिनट\"},relativeTime:{future:{one:\"{0} मिनट में\",other:\"{0} मिनट में\"},past:{one:\"{0} मिनट पहले\",other:\"{0} मिनट पहले\"}}},\"minute-short\":{displayName:\"मि॰\",relative:{0:\"यह मिनट\"},relativeTime:{future:{one:\"{0} मि॰ में\",other:\"{0} मि॰ में\"},past:{one:\"{0} मि॰ पहले\",other:\"{0} मि॰ पहले\"}}},second:{displayName:\"सेकंड\",relative:{0:\"अब\"},relativeTime:{future:{one:\"{0} सेकंड में\",other:\"{0} सेकंड में\"},past:{one:\"{0} सेकंड पहले\",other:\"{0} सेकंड पहले\"}}},\"second-short\":{displayName:\"से॰\",relative:{0:\"अब\"},relativeTime:{future:{one:\"{0} से॰ में\",other:\"{0} से॰ में\"},past:{one:\"{0} से॰ पहले\",other:\"{0} से॰ पहले\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.hu=t())}(this,function(){\"use strict\";return[{locale:\"hu\",pluralRuleFunction:function(e,t){return t?1==e||5==e?\"one\":\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"év\",relative:{0:\"ez az év\",1:\"következő év\",\"-1\":\"előző év\"},relativeTime:{future:{one:\"{0} év múlva\",other:\"{0} év múlva\"},past:{one:\"{0} évvel ezelőtt\",other:\"{0} évvel ezelőtt\"}}},\"year-short\":{displayName:\"év\",relative:{0:\"ez az év\",1:\"következő év\",\"-1\":\"előző év\"},relativeTime:{future:{one:\"{0} év múlva\",other:\"{0} év múlva\"},past:{one:\"{0} évvel ezelőtt\",other:\"{0} évvel ezelőtt\"}}},month:{displayName:\"hónap\",relative:{0:\"ez a hónap\",1:\"következő hónap\",\"-1\":\"előző hónap\"},relativeTime:{future:{one:\"{0} hónap múlva\",other:\"{0} hónap múlva\"},past:{one:\"{0} hónappal ezelőtt\",other:\"{0} hónappal ezelőtt\"}}},\"month-short\":{displayName:\"hónap\",relative:{0:\"ez a hónap\",1:\"következő hónap\",\"-1\":\"előző hónap\"},relativeTime:{future:{one:\"{0} hónap múlva\",other:\"{0} hónap múlva\"},past:{one:\"{0} hónappal ezelőtt\",other:\"{0} hónappal ezelőtt\"}}},day:{displayName:\"nap\",relative:{0:\"ma\",1:\"holnap\",2:\"holnapután\",\"-2\":\"tegnapelőtt\",\"-1\":\"tegnap\"},relativeTime:{future:{one:\"{0} nap múlva\",other:\"{0} nap múlva\"},past:{one:\"{0} nappal ezelőtt\",other:\"{0} nappal ezelőtt\"}}},\"day-short\":{displayName:\"nap\",relative:{0:\"ma\",1:\"holnap\",2:\"holnapután\",\"-2\":\"tegnapelőtt\",\"-1\":\"tegnap\"},relativeTime:{future:{one:\"{0} nap múlva\",other:\"{0} nap múlva\"},past:{one:\"{0} napja\",other:\"{0} napja\"}}},hour:{displayName:\"óra\",relative:{0:\"ebben az órában\"},relativeTime:{future:{one:\"{0} óra múlva\",other:\"{0} óra múlva\"},past:{one:\"{0} órával ezelőtt\",other:\"{0} órával ezelőtt\"}}},\"hour-short\":{displayName:\"óra\",relative:{0:\"ebben az órában\"},relativeTime:{future:{one:\"{0} óra múlva\",other:\"{0} óra múlva\"},past:{one:\"{0} órával ezelőtt\",other:\"{0} órával ezelőtt\"}}},minute:{displayName:\"perc\",relative:{0:\"ebben a percben\"},relativeTime:{future:{one:\"{0} perc múlva\",other:\"{0} perc múlva\"},past:{one:\"{0} perccel ezelőtt\",other:\"{0} perccel ezelőtt\"}}},\"minute-short\":{displayName:\"perc\",relative:{0:\"ebben a percben\"},relativeTime:{future:{one:\"{0} perc múlva\",other:\"{0} perc múlva\"},past:{one:\"{0} perccel ezelőtt\",other:\"{0} perccel ezelőtt\"}}},second:{displayName:\"másodperc\",relative:{0:\"most\"},relativeTime:{future:{one:\"{0} másodperc múlva\",other:\"{0} másodperc múlva\"},past:{one:\"{0} másodperccel ezelőtt\",other:\"{0} másodperccel ezelőtt\"}}},\"second-short\":{displayName:\"másodperc\",relative:{0:\"most\"},relativeTime:{future:{one:\"{0} másodperc múlva\",other:\"{0} másodperc múlva\"},past:{one:\"{0} másodperccel ezelőtt\",other:\"{0} másodperccel ezelőtt\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.hr=a())}(this,function(){\"use strict\";return[{locale:\"hr\",pluralRuleFunction:function(e,a){var i=String(e).split(\".\"),r=i[0],t=i[1]||\"\",o=!i[1],n=r.slice(-1),s=r.slice(-2),p=t.slice(-1),u=t.slice(-2);return a?\"other\":o&&1==n&&11!=s||1==p&&11!=u?\"one\":o&&n>=2&&n<=4&&(s<12||s>14)||p>=2&&p<=4&&(u<12||u>14)?\"few\":\"other\"},fields:{year:{displayName:\"godina\",relative:{0:\"ove godine\",1:\"sljedeće godine\",\"-1\":\"prošle godine\"},relativeTime:{future:{one:\"za {0} godinu\",few:\"za {0} godine\",other:\"za {0} godina\"},past:{one:\"prije {0} godinu\",few:\"prije {0} godine\",other:\"prije {0} godina\"}}},\"year-short\":{displayName:\"g.\",relative:{0:\"ove god.\",1:\"sljedeće god.\",\"-1\":\"prošle god.\"},relativeTime:{future:{one:\"za {0} g.\",few:\"za {0} g.\",other:\"za {0} g.\"},past:{one:\"prije {0} g.\",few:\"prije {0} g.\",other:\"prije {0} g.\"}}},month:{displayName:\"mjesec\",relative:{0:\"ovaj mjesec\",1:\"sljedeći mjesec\",\"-1\":\"prošli mjesec\"},relativeTime:{future:{one:\"za {0} mjesec\",few:\"za {0} mjeseca\",other:\"za {0} mjeseci\"},past:{one:\"prije {0} mjesec\",few:\"prije {0} mjeseca\",other:\"prije {0} mjeseci\"}}},\"month-short\":{displayName:\"mj.\",relative:{0:\"ovaj mj.\",1:\"sljedeći mj.\",\"-1\":\"prošli mj.\"},relativeTime:{future:{one:\"za {0} mj.\",few:\"za {0} mj.\",other:\"za {0} mj.\"},past:{one:\"prije {0} mj.\",few:\"prije {0} mj.\",other:\"prije {0} mj.\"}}},day:{displayName:\"dan\",relative:{0:\"danas\",1:\"sutra\",2:\"prekosutra\",\"-2\":\"prekjučer\",\"-1\":\"jučer\"},relativeTime:{future:{one:\"za {0} dan\",few:\"za {0} dana\",other:\"za {0} dana\"},past:{one:\"prije {0} dan\",few:\"prije {0} dana\",other:\"prije {0} dana\"}}},\"day-short\":{displayName:\"d.\",relative:{0:\"danas\",1:\"sutra\",2:\"prekosutra\",\"-2\":\"prekjučer\",\"-1\":\"jučer\"},relativeTime:{future:{one:\"za {0} dan\",few:\"za {0} dana\",other:\"za {0} dana\"},past:{one:\"prije {0} dan\",few:\"prije {0} dana\",other:\"prije {0} dana\"}}},hour:{displayName:\"sat\",relative:{0:\"ovaj sat\"},relativeTime:{future:{one:\"za {0} sat\",few:\"za {0} sata\",other:\"za {0} sati\"},past:{one:\"prije {0} sat\",few:\"prije {0} sata\",other:\"prije {0} sati\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"ovaj sat\"},relativeTime:{future:{one:\"za {0} h\",few:\"za {0} h\",other:\"za {0} h\"},past:{one:\"prije {0} h\",few:\"prije {0} h\",other:\"prije {0} h\"}}},minute:{displayName:\"minuta\",relative:{0:\"ova minuta\"},relativeTime:{future:{one:\"za {0} minutu\",few:\"za {0} minute\",other:\"za {0} minuta\"},past:{one:\"prije {0} minutu\",few:\"prije {0} minute\",other:\"prije {0} minuta\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"ova minuta\"},relativeTime:{future:{one:\"za {0} min\",few:\"za {0} min\",other:\"za {0} min\"},past:{one:\"prije {0} min\",few:\"prije {0} min\",other:\"prije {0} min\"}}},second:{displayName:\"sekunda\",relative:{0:\"sad\"},relativeTime:{future:{one:\"za {0} sekundu\",few:\"za {0} sekunde\",other:\"za {0} sekundi\"},past:{one:\"prije {0} sekundu\",few:\"prije {0} sekunde\",other:\"prije {0} sekundi\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"sad\"},relativeTime:{future:{one:\"za {0} s\",few:\"za {0} s\",other:\"za {0} s\"},past:{one:\"prije {0} s\",few:\"prije {0} s\",other:\"prije {0} s\"}}}}},{locale:\"hr-BA\",parentLocale:\"hr\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.hy=t())}(this,function(){\"use strict\";return[{locale:\"hy\",pluralRuleFunction:function(e,t){return t?1==e?\"one\":\"other\":e>=0&&e<2?\"one\":\"other\"},fields:{year:{displayName:\"տարի\",relative:{0:\"այս տարի\",1:\"հաջորդ տարի\",\"-1\":\"նախորդ տարի\"},relativeTime:{future:{one:\"{0} տարուց\",other:\"{0} տարուց\"},past:{one:\"{0} տարի առաջ\",other:\"{0} տարի առաջ\"}}},\"year-short\":{displayName:\"տ\",relative:{0:\"այս տարի\",1:\"հաջորդ տարի\",\"-1\":\"նախորդ տարի\"},relativeTime:{future:{one:\"{0} տարուց\",other:\"{0} տարուց\"},past:{one:\"{0} տ առաջ\",other:\"{0} տ առաջ\"}}},month:{displayName:\"ամիս\",relative:{0:\"այս ամիս\",1:\"հաջորդ ամիս\",\"-1\":\"նախորդ ամիս\"},relativeTime:{future:{one:\"{0} ամսից\",other:\"{0} ամսից\"},past:{one:\"{0} ամիս առաջ\",other:\"{0} ամիս առաջ\"}}},\"month-short\":{displayName:\"ամս\",relative:{0:\"այս ամիս\",1:\"հաջորդ ամիս\",\"-1\":\"անցյալ ամիս\"},relativeTime:{future:{one:\"{0} ամսից\",other:\"{0} ամսից\"},past:{one:\"{0} ամիս առաջ\",other:\"{0} ամիս առաջ\"}}},day:{displayName:\"օր\",relative:{0:\"այսօր\",1:\"վաղը\",2:\"վաղը չէ մյուս օրը\",\"-2\":\"երեկ չէ առաջի օրը\",\"-1\":\"երեկ\"},relativeTime:{future:{one:\"{0} օրից\",other:\"{0} օրից\"},past:{one:\"{0} օր առաջ\",other:\"{0} օր առաջ\"}}},\"day-short\":{displayName:\"օր\",relative:{0:\"այսօր\",1:\"վաղը\",2:\"վաղը չէ մյուս օրը\",\"-2\":\"երեկ չէ առաջի օրը\",\"-1\":\"երեկ\"},relativeTime:{future:{one:\"{0} օրից\",other:\"{0} օրից\"},past:{one:\"{0} օր առաջ\",other:\"{0} օր առաջ\"}}},hour:{displayName:\"ժամ\",relative:{0:\"այս ժամին\"},relativeTime:{future:{one:\"{0} ժամից\",other:\"{0} ժամից\"},past:{one:\"{0} ժամ առաջ\",other:\"{0} ժամ առաջ\"}}},\"hour-short\":{displayName:\"ժ\",relative:{0:\"այս ժամին\"},relativeTime:{future:{one:\"{0} ժ-ից\",other:\"{0} ժ-ից\"},past:{one:\"{0} ժ առաջ\",other:\"{0} ժ առաջ\"}}},minute:{displayName:\"րոպե\",relative:{0:\"այս րոպեին\"},relativeTime:{future:{one:\"{0} րոպեից\",other:\"{0} րոպեից\"},past:{one:\"{0} րոպե առաջ\",other:\"{0} րոպե առաջ\"}}},\"minute-short\":{displayName:\"ր\",relative:{0:\"այս րոպեին\"},relativeTime:{future:{one:\"{0} ր-ից\",other:\"{0} ր-ից\"},past:{one:\"{0} ր առաջ\",other:\"{0} ր առաջ\"}}},second:{displayName:\"վայրկյան\",relative:{0:\"հիմա\"},relativeTime:{future:{one:\"{0} վայրկյանից\",other:\"{0} վայրկյանից\"},past:{one:\"{0} վայրկյան առաջ\",other:\"{0} վայրկյան առաջ\"}}},\"second-short\":{displayName:\"վ\",relative:{0:\"հիմա\"},relativeTime:{future:{one:\"{0} վրկ-ից\",other:\"{0} վրկ-ից\"},past:{one:\"{0} վրկ առաջ\",other:\"{0} վրկ առաջ\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.id=a())}(this,function(){\"use strict\";return[{locale:\"id\",pluralRuleFunction:function(e,a){return\"other\"},fields:{year:{displayName:\"tahun\",relative:{0:\"tahun ini\",1:\"tahun depan\",\"-1\":\"tahun lalu\"},relativeTime:{future:{other:\"dalam {0} tahun\"},past:{other:\"{0} tahun yang lalu\"}}},\"year-short\":{displayName:\"thn.\",relative:{0:\"tahun ini\",1:\"tahun depan\",\"-1\":\"tahun lalu\"},relativeTime:{future:{other:\"dlm {0} thn\"},past:{other:\"{0} thn lalu\"}}},month:{displayName:\"bulan\",relative:{0:\"bulan ini\",1:\"bulan berikutnya\",\"-1\":\"bulan lalu\"},relativeTime:{future:{other:\"dalam {0} bulan\"},past:{other:\"{0} bulan yang lalu\"}}},\"month-short\":{displayName:\"bln.\",relative:{0:\"bulan ini\",1:\"bulan berikutnya\",\"-1\":\"bulan lalu\"},relativeTime:{future:{other:\"dlm {0} bln\"},past:{other:\"{0} bln lalu\"}}},day:{displayName:\"hari\",relative:{0:\"hari ini\",1:\"besok\",2:\"lusa\",\"-2\":\"kemarin dulu\",\"-1\":\"kemarin\"},relativeTime:{future:{other:\"dalam {0} hari\"},past:{other:\"{0} hari yang lalu\"}}},\"day-short\":{displayName:\"h\",relative:{0:\"hari ini\",1:\"besok\",2:\"lusa\",\"-2\":\"kemarin dulu\",\"-1\":\"kemarin\"},relativeTime:{future:{other:\"dalam {0} h\"},past:{other:\"{0} h lalu\"}}},hour:{displayName:\"Jam\",relative:{0:\"jam ini\"},relativeTime:{future:{other:\"dalam {0} jam\"},past:{other:\"{0} jam yang lalu\"}}},\"hour-short\":{displayName:\"jam\",relative:{0:\"jam ini\"},relativeTime:{future:{other:\"dalam {0} jam\"},past:{other:\"{0} jam lalu\"}}},minute:{displayName:\"menit\",relative:{0:\"menit ini\"},relativeTime:{future:{other:\"dalam {0} menit\"},past:{other:\"{0} menit yang lalu\"}}},\"minute-short\":{displayName:\"mnt.\",relative:{0:\"menit ini\"},relativeTime:{future:{other:\"dlm {0} mnt\"},past:{other:\"{0} mnt lalu\"}}},second:{displayName:\"detik\",relative:{0:\"sekarang\"},relativeTime:{future:{other:\"dalam {0} detik\"},past:{other:\"{0} detik yang lalu\"}}},\"second-short\":{displayName:\"dtk.\",relative:{0:\"sekarang\"},relativeTime:{future:{other:\"dlm {0} dtk\"},past:{other:\"{0} dtk lalu\"}}}}}]});\n","!function(e,r){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(r):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.is=r())}(this,function(){\"use strict\";return[{locale:\"is\",pluralRuleFunction:function(e,r){var t=String(e).split(\".\"),i=t[0],a=Number(t[0])==e,n=i.slice(-1),s=i.slice(-2);return r?\"other\":a&&1==n&&11!=s||!a?\"one\":\"other\"},fields:{year:{displayName:\"ár\",relative:{0:\"á þessu ári\",1:\"á næsta ári\",\"-1\":\"á síðasta ári\"},relativeTime:{future:{one:\"eftir {0} ár\",other:\"eftir {0} ár\"},past:{one:\"fyrir {0} ári\",other:\"fyrir {0} árum\"}}},\"year-short\":{displayName:\"ár\",relative:{0:\"á þessu ári\",1:\"á næsta ári\",\"-1\":\"á síðasta ári\"},relativeTime:{future:{one:\"eftir {0} ár\",other:\"eftir {0} ár\"},past:{one:\"fyrir {0} ári\",other:\"fyrir {0} árum\"}}},month:{displayName:\"mánuður\",relative:{0:\"í þessum mánuði\",1:\"í næsta mánuði\",\"-1\":\"í síðasta mánuði\"},relativeTime:{future:{one:\"eftir {0} mánuð\",other:\"eftir {0} mánuði\"},past:{one:\"fyrir {0} mánuði\",other:\"fyrir {0} mánuðum\"}}},\"month-short\":{displayName:\"mán.\",relative:{0:\"í þessum mán.\",1:\"í næsta mán.\",\"-1\":\"í síðasta mán.\"},relativeTime:{future:{one:\"eftir {0} mán.\",other:\"eftir {0} mán.\"},past:{one:\"fyrir {0} mán.\",other:\"fyrir {0} mán.\"}}},day:{displayName:\"dagur\",relative:{0:\"í dag\",1:\"á morgun\",2:\"eftir tvo daga\",\"-2\":\"í fyrradag\",\"-1\":\"í gær\"},relativeTime:{future:{one:\"eftir {0} dag\",other:\"eftir {0} daga\"},past:{one:\"fyrir {0} degi\",other:\"fyrir {0} dögum\"}}},\"day-short\":{displayName:\"dagur\",relative:{0:\"í dag\",1:\"á morgun\",2:\"eftir tvo daga\",\"-2\":\"í fyrradag\",\"-1\":\"í gær\"},relativeTime:{future:{one:\"eftir {0} dag\",other:\"eftir {0} daga\"},past:{one:\"fyrir {0} degi\",other:\"fyrir {0} dögum\"}}},hour:{displayName:\"klukkustund\",relative:{0:\"þessa stundina\"},relativeTime:{future:{one:\"eftir {0} klukkustund\",other:\"eftir {0} klukkustundir\"},past:{one:\"fyrir {0} klukkustund\",other:\"fyrir {0} klukkustundum\"}}},\"hour-short\":{displayName:\"klst.\",relative:{0:\"þessa stundina\"},relativeTime:{future:{one:\"eftir {0} klst.\",other:\"eftir {0} klst.\"},past:{one:\"fyrir {0} klst.\",other:\"fyrir {0} klst.\"}}},minute:{displayName:\"mínúta\",relative:{0:\"á þessari mínútu\"},relativeTime:{future:{one:\"eftir {0} mínútu\",other:\"eftir {0} mínútur\"},past:{one:\"fyrir {0} mínútu\",other:\"fyrir {0} mínútum\"}}},\"minute-short\":{displayName:\"mín.\",relative:{0:\"á þessari mínútu\"},relativeTime:{future:{one:\"eftir {0} mín.\",other:\"eftir {0} mín.\"},past:{one:\"fyrir {0} mín.\",other:\"fyrir {0} mín.\"}}},second:{displayName:\"sekúnda\",relative:{0:\"núna\"},relativeTime:{future:{one:\"eftir {0} sekúndu\",other:\"eftir {0} sekúndur\"},past:{one:\"fyrir {0} sekúndu\",other:\"fyrir {0} sekúndum\"}}},\"second-short\":{displayName:\"sek.\",relative:{0:\"núna\"},relativeTime:{future:{one:\"eftir {0} sek.\",other:\"eftir {0} sek.\"},past:{one:\"fyrir {0} sek.\",other:\"fyrir {0} sek.\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.it=a())}(this,function(){\"use strict\";return[{locale:\"it\",pluralRuleFunction:function(e,a){var t=!String(e).split(\".\")[1];return a?11==e||8==e||80==e||800==e?\"many\":\"other\":1==e&&t?\"one\":\"other\"},fields:{year:{displayName:\"anno\",relative:{0:\"quest’anno\",1:\"anno prossimo\",\"-1\":\"anno scorso\"},relativeTime:{future:{one:\"tra {0} anno\",other:\"tra {0} anni\"},past:{one:\"{0} anno fa\",other:\"{0} anni fa\"}}},\"year-short\":{displayName:\"anno\",relative:{0:\"quest’anno\",1:\"anno prossimo\",\"-1\":\"anno scorso\"},relativeTime:{future:{one:\"tra {0} anno\",other:\"tra {0} anni\"},past:{one:\"{0} anno fa\",other:\"{0} anni fa\"}}},month:{displayName:\"mese\",relative:{0:\"questo mese\",1:\"mese prossimo\",\"-1\":\"mese scorso\"},relativeTime:{future:{one:\"tra {0} mese\",other:\"tra {0} mesi\"},past:{one:\"{0} mese fa\",other:\"{0} mesi fa\"}}},\"month-short\":{displayName:\"mese\",relative:{0:\"questo mese\",1:\"mese prossimo\",\"-1\":\"mese scorso\"},relativeTime:{future:{one:\"tra {0} mese\",other:\"tra {0} mesi\"},past:{one:\"{0} mese fa\",other:\"{0} mesi fa\"}}},day:{displayName:\"giorno\",relative:{0:\"oggi\",1:\"domani\",2:\"dopodomani\",\"-2\":\"l’altro ieri\",\"-1\":\"ieri\"},relativeTime:{future:{one:\"tra {0} giorno\",other:\"tra {0} giorni\"},past:{one:\"{0} giorno fa\",other:\"{0} giorni fa\"}}},\"day-short\":{displayName:\"g\",relative:{0:\"oggi\",1:\"domani\",2:\"dopodomani\",\"-2\":\"l’altro ieri\",\"-1\":\"ieri\"},relativeTime:{future:{one:\"tra {0} g\",other:\"tra {0} gg\"},past:{one:\"{0} g fa\",other:\"{0} gg fa\"}}},hour:{displayName:\"ora\",relative:{0:\"quest’ora\"},relativeTime:{future:{one:\"tra {0} ora\",other:\"tra {0} ore\"},past:{one:\"{0} ora fa\",other:\"{0} ore fa\"}}},\"hour-short\":{displayName:\"h.\",relative:{0:\"quest’ora\"},relativeTime:{future:{one:\"tra {0} h\",other:\"tra {0} h\"},past:{one:\"{0} h fa\",other:\"{0} h fa\"}}},minute:{displayName:\"minuto\",relative:{0:\"questo minuto\"},relativeTime:{future:{one:\"tra {0} minuto\",other:\"tra {0} minuti\"},past:{one:\"{0} minuto fa\",other:\"{0} minuti fa\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"questo minuto\"},relativeTime:{future:{one:\"tra {0} min\",other:\"tra {0} min\"},past:{one:\"{0} min fa\",other:\"{0} min fa\"}}},second:{displayName:\"secondo\",relative:{0:\"ora\"},relativeTime:{future:{one:\"tra {0} secondo\",other:\"tra {0} secondi\"},past:{one:\"{0} secondo fa\",other:\"{0} secondi fa\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"ora\"},relativeTime:{future:{one:\"tra {0} s\",other:\"tra {0} sec.\"},past:{one:\"{0} s fa\",other:\"{0} sec. fa\"}}}}},{locale:\"it-CH\",parentLocale:\"it\"},{locale:\"it-SM\",parentLocale:\"it\"},{locale:\"it-VA\",parentLocale:\"it\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ja=t())}(this,function(){\"use strict\";return[{locale:\"ja\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"年\",relative:{0:\"今年\",1:\"翌年\",\"-1\":\"昨年\"},relativeTime:{future:{other:\"{0} 年後\"},past:{other:\"{0} 年前\"}}},\"year-short\":{displayName:\"年\",relative:{0:\"今年\",1:\"翌年\",\"-1\":\"昨年\"},relativeTime:{future:{other:\"{0} 年後\"},past:{other:\"{0} 年前\"}}},month:{displayName:\"月\",relative:{0:\"今月\",1:\"翌月\",\"-1\":\"先月\"},relativeTime:{future:{other:\"{0} か月後\"},past:{other:\"{0} か月前\"}}},\"month-short\":{displayName:\"月\",relative:{0:\"今月\",1:\"翌月\",\"-1\":\"先月\"},relativeTime:{future:{other:\"{0} か月後\"},past:{other:\"{0} か月前\"}}},day:{displayName:\"日\",relative:{0:\"今日\",1:\"明日\",2:\"明後日\",\"-2\":\"一昨日\",\"-1\":\"昨日\"},relativeTime:{future:{other:\"{0} 日後\"},past:{other:\"{0} 日前\"}}},\"day-short\":{displayName:\"日\",relative:{0:\"今日\",1:\"明日\",2:\"明後日\",\"-2\":\"一昨日\",\"-1\":\"昨日\"},relativeTime:{future:{other:\"{0} 日後\"},past:{other:\"{0} 日前\"}}},hour:{displayName:\"時\",relative:{0:\"1 時間以内\"},relativeTime:{future:{other:\"{0} 時間後\"},past:{other:\"{0} 時間前\"}}},\"hour-short\":{displayName:\"時\",relative:{0:\"1 時間以内\"},relativeTime:{future:{other:\"{0} 時間後\"},past:{other:\"{0} 時間前\"}}},minute:{displayName:\"分\",relative:{0:\"1 分以内\"},relativeTime:{future:{other:\"{0} 分後\"},past:{other:\"{0} 分前\"}}},\"minute-short\":{displayName:\"分\",relative:{0:\"1 分以内\"},relativeTime:{future:{other:\"{0} 分後\"},past:{other:\"{0} 分前\"}}},second:{displayName:\"秒\",relative:{0:\"今\"},relativeTime:{future:{other:\"{0} 秒後\"},past:{other:\"{0} 秒前\"}}},\"second-short\":{displayName:\"秒\",relative:{0:\"今\"},relativeTime:{future:{other:\"{0} 秒後\"},past:{other:\"{0} 秒前\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ka=t())}(this,function(){\"use strict\";return[{locale:\"ka\",pluralRuleFunction:function(e,t){var a=String(e).split(\".\")[0],r=a.slice(-2);return t?1==a?\"one\":0==a||r>=2&&r<=20||40==r||60==r||80==r?\"many\":\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"წელი\",relative:{0:\"ამ წელს\",1:\"მომავალ წელს\",\"-1\":\"გასულ წელს\"},relativeTime:{future:{one:\"{0} წელიწადში\",other:\"{0} წელიწადში\"},past:{one:\"{0} წლის წინ\",other:\"{0} წლის წინ\"}}},\"year-short\":{displayName:\"წ.\",relative:{0:\"ამ წელს\",1:\"მომავალ წელს\",\"-1\":\"გასულ წელს\"},relativeTime:{future:{one:\"{0} წელში\",other:\"{0} წელში\"},past:{one:\"{0} წლის წინ\",other:\"{0} წლის წინ\"}}},month:{displayName:\"თვე\",relative:{0:\"ამ თვეში\",1:\"მომავალ თვეს\",\"-1\":\"გასულ თვეს\"},relativeTime:{future:{one:\"{0} თვეში\",other:\"{0} თვეში\"},past:{one:\"{0} თვის წინ\",other:\"{0} თვის წინ\"}}},\"month-short\":{displayName:\"თვე\",relative:{0:\"ამ თვეში\",1:\"მომავალ თვეს\",\"-1\":\"გასულ თვეს\"},relativeTime:{future:{one:\"{0} თვეში\",other:\"{0} თვეში\"},past:{one:\"{0} თვის წინ\",other:\"{0} თვის წინ\"}}},day:{displayName:\"დღე\",relative:{0:\"დღეს\",1:\"ხვალ\",2:\"ზეგ\",\"-2\":\"გუშინწინ\",\"-1\":\"გუშინ\"},relativeTime:{future:{one:\"{0} დღეში\",other:\"{0} დღეში\"},past:{one:\"{0} დღის წინ\",other:\"{0} დღის წინ\"}}},\"day-short\":{displayName:\"დღე\",relative:{0:\"დღეს\",1:\"ხვალ\",2:\"ზეგ\",\"-2\":\"გუშინწინ\",\"-1\":\"გუშინ\"},relativeTime:{future:{one:\"{0} დღეში\",other:\"{0} დღეში\"},past:{one:\"{0} დღის წინ\",other:\"{0} დღის წინ\"}}},hour:{displayName:\"საათი\",relative:{0:\"ამ საათში\"},relativeTime:{future:{one:\"{0} საათში\",other:\"{0} საათში\"},past:{one:\"{0} საათის წინ\",other:\"{0} საათის წინ\"}}},\"hour-short\":{displayName:\"სთ.\",relative:{0:\"ამ საათში\"},relativeTime:{future:{one:\"{0} საათში\",other:\"{0} საათში\"},past:{one:\"{0} სთ წინ\",other:\"{0} სთ წინ\"}}},minute:{displayName:\"წუთი\",relative:{0:\"ამ წუთში\"},relativeTime:{future:{one:\"{0} წუთში\",other:\"{0} წუთში\"},past:{one:\"{0} წუთის წინ\",other:\"{0} წუთის წინ\"}}},\"minute-short\":{displayName:\"წთ.\",relative:{0:\"ამ წუთში\"},relativeTime:{future:{one:\"{0} წუთში\",other:\"{0} წუთში\"},past:{one:\"{0} წთ წინ\",other:\"{0} წთ წინ\"}}},second:{displayName:\"წამი\",relative:{0:\"ახლა\"},relativeTime:{future:{one:\"{0} წამში\",other:\"{0} წამში\"},past:{one:\"{0} წამის წინ\",other:\"{0} წამის წინ\"}}},\"second-short\":{displayName:\"წმ.\",relative:{0:\"ახლა\"},relativeTime:{future:{one:\"{0} წამში\",other:\"{0} წამში\"},past:{one:\"{0} წმ წინ\",other:\"{0} წმ წინ\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.kk=t())}(this,function(){\"use strict\";return[{locale:\"kk\",pluralRuleFunction:function(e,t){var r=String(e).split(\".\"),a=Number(r[0])==e,o=a&&r[0].slice(-1);return t?6==o||9==o||a&&0==o&&0!=e?\"many\":\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"жыл\",relative:{0:\"биылғы жыл\",1:\"келесі жыл\",\"-1\":\"былтырғы жыл\"},relativeTime:{future:{one:\"{0} жылдан кейін\",other:\"{0} жылдан кейін\"},past:{one:\"{0} жыл бұрын\",other:\"{0} жыл бұрын\"}}},\"year-short\":{displayName:\"ж.\",relative:{0:\"биылғы жыл\",1:\"келесі жыл\",\"-1\":\"былтырғы жыл\"},relativeTime:{future:{one:\"{0} ж. кейін\",other:\"{0} ж. кейін\"},past:{one:\"{0} ж. бұрын\",other:\"{0} ж. бұрын\"}}},month:{displayName:\"ай\",relative:{0:\"осы ай\",1:\"келесі ай\",\"-1\":\"өткен ай\"},relativeTime:{future:{one:\"{0} айдан кейін\",other:\"{0} айдан кейін\"},past:{one:\"{0} ай бұрын\",other:\"{0} ай бұрын\"}}},\"month-short\":{displayName:\"ай\",relative:{0:\"осы ай\",1:\"келесі ай\",\"-1\":\"өткен ай\"},relativeTime:{future:{one:\"{0} айдан кейін\",other:\"{0} айдан кейін\"},past:{one:\"{0} ай бұрын\",other:\"{0} ай бұрын\"}}},day:{displayName:\"күн\",relative:{0:\"бүгін\",1:\"ертең\",2:\"бүрсігүні\",\"-2\":\"алдыңгүні\",\"-1\":\"кеше\"},relativeTime:{future:{one:\"{0} күннен кейін\",other:\"{0} күннен кейін\"},past:{one:\"{0} күн бұрын\",other:\"{0} күн бұрын\"}}},\"day-short\":{displayName:\"күн\",relative:{0:\"бүгін\",1:\"ертең\",2:\"бүрсігүні\",\"-2\":\"алдыңғы күні\",\"-1\":\"кеше\"},relativeTime:{future:{one:\"{0} күннен кейін\",other:\"{0} күннен кейін\"},past:{one:\"{0} күн бұрын\",other:\"{0} күн бұрын\"}}},hour:{displayName:\"сағат\",relative:{0:\"осы сағат\"},relativeTime:{future:{one:\"{0} сағаттан кейін\",other:\"{0} сағаттан кейін\"},past:{one:\"{0} сағат бұрын\",other:\"{0} сағат бұрын\"}}},\"hour-short\":{displayName:\"сағ\",relative:{0:\"осы сағат\"},relativeTime:{future:{one:\"{0} сағ. кейін\",other:\"{0} сағ. кейін\"},past:{one:\"{0} сағ. бұрын\",other:\"{0} сағ. бұрын\"}}},minute:{displayName:\"минут\",relative:{0:\"осы минут\"},relativeTime:{future:{one:\"{0} минуттан кейін\",other:\"{0} минуттан кейін\"},past:{one:\"{0} минут бұрын\",other:\"{0} минут бұрын\"}}},\"minute-short\":{displayName:\"мин\",relative:{0:\"осы минут\"},relativeTime:{future:{one:\"{0} мин. кейін\",other:\"{0} мин. кейін\"},past:{one:\"{0} мин. бұрын\",other:\"{0} мин. бұрын\"}}},second:{displayName:\"секунд\",relative:{0:\"қазір\"},relativeTime:{future:{one:\"{0} секундтан кейін\",other:\"{0} секундтан кейін\"},past:{one:\"{0} секунд бұрын\",other:\"{0} секунд бұрын\"}}},\"second-short\":{displayName:\"с\",relative:{0:\"қазір\"},relativeTime:{future:{one:\"{0} сек. кейін\",other:\"{0} сек. кейін\"},past:{one:\"{0} сек. бұрын\",other:\"{0} сек. бұрын\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ko=t())}(this,function(){\"use strict\";return[{locale:\"ko\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"년\",relative:{0:\"올해\",1:\"내년\",\"-1\":\"작년\"},relativeTime:{future:{other:\"{0}년 후\"},past:{other:\"{0}년 전\"}}},\"year-short\":{displayName:\"년\",relative:{0:\"올해\",1:\"내년\",\"-1\":\"작년\"},relativeTime:{future:{other:\"{0}년 후\"},past:{other:\"{0}년 전\"}}},month:{displayName:\"월\",relative:{0:\"이번 달\",1:\"다음 달\",\"-1\":\"지난달\"},relativeTime:{future:{other:\"{0}개월 후\"},past:{other:\"{0}개월 전\"}}},\"month-short\":{displayName:\"월\",relative:{0:\"이번 달\",1:\"다음 달\",\"-1\":\"지난달\"},relativeTime:{future:{other:\"{0}개월 후\"},past:{other:\"{0}개월 전\"}}},day:{displayName:\"일\",relative:{0:\"오늘\",1:\"내일\",2:\"모레\",\"-2\":\"그저께\",\"-1\":\"어제\"},relativeTime:{future:{other:\"{0}일 후\"},past:{other:\"{0}일 전\"}}},\"day-short\":{displayName:\"일\",relative:{0:\"오늘\",1:\"내일\",2:\"모레\",\"-2\":\"그저께\",\"-1\":\"어제\"},relativeTime:{future:{other:\"{0}일 후\"},past:{other:\"{0}일 전\"}}},hour:{displayName:\"시\",relative:{0:\"현재 시간\"},relativeTime:{future:{other:\"{0}시간 후\"},past:{other:\"{0}시간 전\"}}},\"hour-short\":{displayName:\"시\",relative:{0:\"현재 시간\"},relativeTime:{future:{other:\"{0}시간 후\"},past:{other:\"{0}시간 전\"}}},minute:{displayName:\"분\",relative:{0:\"현재 분\"},relativeTime:{future:{other:\"{0}분 후\"},past:{other:\"{0}분 전\"}}},\"minute-short\":{displayName:\"분\",relative:{0:\"현재 분\"},relativeTime:{future:{other:\"{0}분 후\"},past:{other:\"{0}분 전\"}}},second:{displayName:\"초\",relative:{0:\"지금\"},relativeTime:{future:{other:\"{0}초 후\"},past:{other:\"{0}초 전\"}}},\"second-short\":{displayName:\"초\",relative:{0:\"지금\"},relativeTime:{future:{other:\"{0}초 후\"},past:{other:\"{0}초 전\"}}}}},{locale:\"ko-KP\",parentLocale:\"ko\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.km=t())}(this,function(){\"use strict\";return[{locale:\"km\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"ឆ្នាំ\",relative:{0:\"ឆ្នាំ​នេះ\",1:\"ឆ្នាំ​ក្រោយ\",\"-1\":\"ឆ្នាំ​មុន\"},relativeTime:{future:{other:\"{0} ឆ្នាំទៀត\"},past:{other:\"{0} ឆ្នាំ​មុន\"}}},\"year-short\":{displayName:\"ឆ្នាំ\",relative:{0:\"ឆ្នាំ​នេះ\",1:\"ឆ្នាំ​ក្រោយ\",\"-1\":\"ឆ្នាំ​មុន\"},relativeTime:{future:{other:\"{0} ឆ្នាំទៀត\"},past:{other:\"{0} ឆ្នាំ​មុន\"}}},month:{displayName:\"ខែ\",relative:{0:\"ខែ​នេះ\",1:\"ខែ​ក្រោយ\",\"-1\":\"ខែ​មុន\"},relativeTime:{future:{other:\"{0} ខែទៀត\"},past:{other:\"{0} ខែមុន\"}}},\"month-short\":{displayName:\"ខែ\",relative:{0:\"ខែ​នេះ\",1:\"ខែ​ក្រោយ\",\"-1\":\"ខែ​មុន\"},relativeTime:{future:{other:\"{0} ខែទៀត\"},past:{other:\"{0} ខែមុន\"}}},day:{displayName:\"ថ្ងៃ\",relative:{0:\"ថ្ងៃ​នេះ\",1:\"ថ្ងៃ​ស្អែក\",2:\"​ខាន​ស្អែក\",\"-2\":\"ម្សិល​ម៉្ងៃ\",\"-1\":\"ម្សិលមិញ\"},relativeTime:{future:{other:\"{0} ថ្ងៃទៀត\"},past:{other:\"{0} ថ្ងៃ​មុន\"}}},\"day-short\":{displayName:\"ថ្ងៃ\",relative:{0:\"ថ្ងៃ​នេះ\",1:\"ថ្ងៃស្អែក\",2:\"​ខាន​ស្អែក\",\"-2\":\"ម្សិល​ម៉្ងៃ\",\"-1\":\"ម្សិលមិញ\"},relativeTime:{future:{other:\"{0} ថ្ងៃទៀត\"},past:{other:\"{0} ថ្ងៃ​​មុន\"}}},hour:{displayName:\"ម៉ោង\",relative:{0:\"ម៉ោងនេះ\"},relativeTime:{future:{other:\"ក្នុង​រយៈ​ពេល {0} ម៉ោង\"},past:{other:\"{0} ម៉ោង​មុន\"}}},\"hour-short\":{displayName:\"ម៉ោង\",relative:{0:\"ម៉ោងនេះ\"},relativeTime:{future:{other:\"{0} ម៉ោងទៀត\"},past:{other:\"{0} ម៉ោង​មុន\"}}},minute:{displayName:\"នាទី\",relative:{0:\"នាទីនេះ\"},relativeTime:{future:{other:\"{0} នាទីទៀត\"},past:{other:\"{0} នាទី​មុន\"}}},\"minute-short\":{displayName:\"នាទី\",relative:{0:\"នាទីនេះ\"},relativeTime:{future:{other:\"{0} នាទីទៀត\"},past:{other:\"{0} នាទី​​មុន\"}}},second:{displayName:\"វិនាទី\",relative:{0:\"ឥឡូវ\"},relativeTime:{future:{other:\"{0} វិនាទីទៀត\"},past:{other:\"{0} វិនាទី​មុន\"}}},\"second-short\":{displayName:\"វិនាទី\",relative:{0:\"ឥឡូវ\"},relativeTime:{future:{other:\"{0} វិនាទីទៀត\"},past:{other:\"{0} វិនាទី​មុន\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ku=t())}(this,function(){\"use strict\";return[{locale:\"ku\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"sal\",relative:{0:\"îsal\",1:\"sala piştî\",\"-1\":\"par\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"sal\",relative:{0:\"îsal\",1:\"sala piştî\",\"-1\":\"par\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"meh\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"m.\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"roj\",relative:{0:\"îro\",1:\"sibe\",\"-1\":\"duh\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"r.\",relative:{0:\"îro\",1:\"sibe\",\"-1\":\"duh\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"saet\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"st.\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"deqîqe\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"d.\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"saniye\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"s.\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}}]});\n","!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.lt=i())}(this,function(){\"use strict\";return[{locale:\"lt\",pluralRuleFunction:function(e,i){var a=String(e).split(\".\"),n=a[1]||\"\",r=Number(a[0])==e,t=r&&a[0].slice(-1),o=r&&a[0].slice(-2);return i?\"other\":1==t&&(o<11||o>19)?\"one\":t>=2&&t<=9&&(o<11||o>19)?\"few\":0!=n?\"many\":\"other\"},fields:{year:{displayName:\"metai\",relative:{0:\"šiais metais\",1:\"kitais metais\",\"-1\":\"praėjusiais metais\"},relativeTime:{future:{one:\"po {0} metų\",few:\"po {0} metų\",many:\"po {0} metų\",other:\"po {0} metų\"},past:{one:\"prieš {0} metus\",few:\"prieš {0} metus\",many:\"prieš {0} metų\",other:\"prieš {0} metų\"}}},\"year-short\":{displayName:\"m.\",relative:{0:\"šiais metais\",1:\"kitais metais\",\"-1\":\"praėjusiais metais\"},relativeTime:{future:{one:\"po {0} m.\",few:\"po {0} m.\",many:\"po {0} m.\",other:\"po {0} m.\"},past:{one:\"prieš {0} m.\",few:\"prieš {0} m.\",many:\"prieš {0} m.\",other:\"prieš {0} m.\"}}},month:{displayName:\"mėnuo\",relative:{0:\"šį mėnesį\",1:\"kitą mėnesį\",\"-1\":\"praėjusį mėnesį\"},relativeTime:{future:{one:\"po {0} mėnesio\",few:\"po {0} mėnesių\",many:\"po {0} mėnesio\",other:\"po {0} mėnesių\"},past:{one:\"prieš {0} mėnesį\",few:\"prieš {0} mėnesius\",many:\"prieš {0} mėnesio\",other:\"prieš {0} mėnesių\"}}},\"month-short\":{displayName:\"mėn.\",relative:{0:\"šį mėnesį\",1:\"kitą mėnesį\",\"-1\":\"praėjusį mėnesį\"},relativeTime:{future:{one:\"po {0} mėn.\",few:\"po {0} mėn.\",many:\"po {0} mėn.\",other:\"po {0} mėn.\"},past:{one:\"prieš {0} mėn.\",few:\"prieš {0} mėn.\",many:\"prieš {0} mėn.\",other:\"prieš {0} mėn.\"}}},day:{displayName:\"diena\",relative:{0:\"šiandien\",1:\"rytoj\",2:\"poryt\",\"-2\":\"užvakar\",\"-1\":\"vakar\"},relativeTime:{future:{one:\"po {0} dienos\",few:\"po {0} dienų\",many:\"po {0} dienos\",other:\"po {0} dienų\"},past:{one:\"prieš {0} dieną\",few:\"prieš {0} dienas\",many:\"prieš {0} dienos\",other:\"prieš {0} dienų\"}}},\"day-short\":{displayName:\"d.\",relative:{0:\"šiandien\",1:\"rytoj\",2:\"poryt\",\"-2\":\"užvakar\",\"-1\":\"vakar\"},relativeTime:{future:{one:\"po {0} d.\",few:\"po {0} d.\",many:\"po {0} d.\",other:\"po {0} d.\"},past:{one:\"prieš {0} d.\",few:\"prieš {0} d.\",many:\"prieš {0} d.\",other:\"prieš {0} d.\"}}},hour:{displayName:\"valanda\",relative:{0:\"šią valandą\"},relativeTime:{future:{one:\"po {0} valandos\",few:\"po {0} valandų\",many:\"po {0} valandos\",other:\"po {0} valandų\"},past:{one:\"prieš {0} valandą\",few:\"prieš {0} valandas\",many:\"prieš {0} valandos\",other:\"prieš {0} valandų\"}}},\"hour-short\":{displayName:\"val.\",relative:{0:\"šią valandą\"},relativeTime:{future:{one:\"po {0} val.\",few:\"po {0} val.\",many:\"po {0} val.\",other:\"po {0} val.\"},past:{one:\"prieš {0} val.\",few:\"prieš {0} val.\",many:\"prieš {0} val.\",other:\"prieš {0} val.\"}}},minute:{displayName:\"minutė\",relative:{0:\"šią minutę\"},relativeTime:{future:{one:\"po {0} minutės\",few:\"po {0} minučių\",many:\"po {0} minutės\",other:\"po {0} minučių\"},past:{one:\"prieš {0} minutę\",few:\"prieš {0} minutes\",many:\"prieš {0} minutės\",other:\"prieš {0} minučių\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"šią minutę\"},relativeTime:{future:{one:\"po {0} min.\",few:\"po {0} min.\",many:\"po {0} min.\",other:\"po {0} min.\"},past:{one:\"prieš {0} min.\",few:\"prieš {0} min.\",many:\"prieš {0} min.\",other:\"prieš {0} min.\"}}},second:{displayName:\"sekundė\",relative:{0:\"dabar\"},relativeTime:{future:{one:\"po {0} sekundės\",few:\"po {0} sekundžių\",many:\"po {0} sekundės\",other:\"po {0} sekundžių\"},past:{one:\"prieš {0} sekundę\",few:\"prieš {0} sekundes\",many:\"prieš {0} sekundės\",other:\"prieš {0} sekundžių\"}}},\"second-short\":{displayName:\"sek.\",relative:{0:\"dabar\"},relativeTime:{future:{one:\"po {0} sek.\",few:\"po {0} sek.\",many:\"po {0} sek.\",other:\"po {0} sek.\"},past:{one:\"prieš {0} sek.\",few:\"prieš {0} sek.\",many:\"prieš {0} sek.\",other:\"prieš {0} sek.\"}}}}}]});\n","!function(e,r){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(r):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.lv=r())}(this,function(){\"use strict\";return[{locale:\"lv\",pluralRuleFunction:function(e,r){var a=String(e).split(\".\"),t=a[1]||\"\",i=t.length,m=Number(a[0])==e,s=m&&a[0].slice(-1),n=m&&a[0].slice(-2),p=t.slice(-2),o=t.slice(-1);return r?\"other\":m&&0==s||n>=11&&n<=19||2==i&&p>=11&&p<=19?\"zero\":1==s&&11!=n||2==i&&1==o&&11!=p||2!=i&&1==o?\"one\":\"other\"},fields:{year:{displayName:\"gads\",relative:{0:\"šajā gadā\",1:\"nākamajā gadā\",\"-1\":\"pagājušajā gadā\"},relativeTime:{future:{zero:\"pēc {0} gadiem\",one:\"pēc {0} gada\",other:\"pēc {0} gadiem\"},past:{zero:\"pirms {0} gadiem\",one:\"pirms {0} gada\",other:\"pirms {0} gadiem\"}}},\"year-short\":{displayName:\"g.\",relative:{0:\"šajā gadā\",1:\"nākamajā gadā\",\"-1\":\"pagājušajā gadā\"},relativeTime:{future:{zero:\"pēc {0} g.\",one:\"pēc {0} g.\",other:\"pēc {0} g.\"},past:{zero:\"pirms {0} g.\",one:\"pirms {0} g.\",other:\"pirms {0} g.\"}}},month:{displayName:\"mēnesis\",relative:{0:\"šajā mēnesī\",1:\"nākamajā mēnesī\",\"-1\":\"pagājušajā mēnesī\"},relativeTime:{future:{zero:\"pēc {0} mēnešiem\",one:\"pēc {0} mēneša\",other:\"pēc {0} mēnešiem\"},past:{zero:\"pirms {0} mēnešiem\",one:\"pirms {0} mēneša\",other:\"pirms {0} mēnešiem\"}}},\"month-short\":{displayName:\"mēn.\",relative:{0:\"šajā mēnesī\",1:\"nākamajā mēnesī\",\"-1\":\"pagājušajā mēnesī\"},relativeTime:{future:{zero:\"pēc {0} mēn.\",one:\"pēc {0} mēn.\",other:\"pēc {0} mēn.\"},past:{zero:\"pirms {0} mēn.\",one:\"pirms {0} mēn.\",other:\"pirms {0} mēn.\"}}},day:{displayName:\"diena\",relative:{0:\"šodien\",1:\"rīt\",2:\"parīt\",\"-2\":\"aizvakar\",\"-1\":\"vakar\"},relativeTime:{future:{zero:\"pēc {0} dienām\",one:\"pēc {0} dienas\",other:\"pēc {0} dienām\"},past:{zero:\"pirms {0} dienām\",one:\"pirms {0} dienas\",other:\"pirms {0} dienām\"}}},\"day-short\":{displayName:\"d.\",relative:{0:\"šodien\",1:\"rīt\",2:\"parīt\",\"-2\":\"aizvakar\",\"-1\":\"vakar\"},relativeTime:{future:{zero:\"pēc {0} d.\",one:\"pēc {0} d.\",other:\"pēc {0} d.\"},past:{zero:\"pirms {0} d.\",one:\"pirms {0} d.\",other:\"pirms {0} d.\"}}},hour:{displayName:\"stundas\",relative:{0:\"šajā stundā\"},relativeTime:{future:{zero:\"pēc {0} stundām\",one:\"pēc {0} stundas\",other:\"pēc {0} stundām\"},past:{zero:\"pirms {0} stundām\",one:\"pirms {0} stundas\",other:\"pirms {0} stundām\"}}},\"hour-short\":{displayName:\"st.\",relative:{0:\"šajā stundā\"},relativeTime:{future:{zero:\"pēc {0} st.\",one:\"pēc {0} st.\",other:\"pēc {0} st.\"},past:{zero:\"pirms {0} st.\",one:\"pirms {0} st.\",other:\"pirms {0} st.\"}}},minute:{displayName:\"minūtes\",relative:{0:\"šajā minūtē\"},relativeTime:{future:{zero:\"pēc {0} minūtēm\",one:\"pēc {0} minūtes\",other:\"pēc {0} minūtēm\"},past:{zero:\"pirms {0} minūtēm\",one:\"pirms {0} minūtes\",other:\"pirms {0} minūtēm\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"šajā minūtē\"},relativeTime:{future:{zero:\"pēc {0} min.\",one:\"pēc {0} min.\",other:\"pēc {0} min.\"},past:{zero:\"pirms {0} min.\",one:\"pirms {0} min.\",other:\"pirms {0} min.\"}}},second:{displayName:\"sekundes\",relative:{0:\"tagad\"},relativeTime:{future:{zero:\"pēc {0} sekundēm\",one:\"pēc {0} sekundes\",other:\"pēc {0} sekundēm\"},past:{zero:\"pirms {0} sekundēm\",one:\"pirms {0} sekundes\",other:\"pirms {0} sekundēm\"}}},\"second-short\":{displayName:\"sek.\",relative:{0:\"tagad\"},relativeTime:{future:{zero:\"pēc {0} sek.\",one:\"pēc {0} sek.\",other:\"pēc {0} sek.\"},past:{zero:\"pirms {0} sek.\",one:\"pirms {0} sek.\",other:\"pirms {0} sek.\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.mi=t())}(this,function(){\"use strict\";return[{locale:\"mi\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"tau\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"t\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"marama\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"rā\",relative:{0:\"āianei\",1:\"āpōpō\",\"-1\":\"inanahi\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"rā\",relative:{0:\"āianei\",1:\"āpōpō\",\"-1\":\"inanahi\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"hāora\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"hr\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"meneti\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"men\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"hēkona\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"hēk\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.mn=t())}(this,function(){\"use strict\";return[{locale:\"mn\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"жил\",relative:{0:\"энэ жил\",1:\"ирэх жил\",\"-1\":\"өнгөрсөн жил\"},relativeTime:{future:{one:\"{0} жилийн дараа\",other:\"{0} жилийн дараа\"},past:{one:\"{0} жилийн өмнө\",other:\"{0} жилийн өмнө\"}}},\"year-short\":{displayName:\"жил\",relative:{0:\"энэ жил\",1:\"ирэх жил\",\"-1\":\"өнгөрсөн жил\"},relativeTime:{future:{one:\"{0} жилийн дараа\",other:\"{0} жилийн дараа\"},past:{one:\"{0} жилийн өмнө\",other:\"{0} жилийн өмнө\"}}},month:{displayName:\"сар\",relative:{0:\"энэ сар\",1:\"ирэх сар\",\"-1\":\"өнгөрсөн сар\"},relativeTime:{future:{one:\"{0} сарын дараа\",other:\"{0} сарын дараа\"},past:{one:\"{0} сарын өмнө\",other:\"{0} сарын өмнө\"}}},\"month-short\":{displayName:\"сар\",relative:{0:\"энэ сар\",1:\"ирэх сар\",\"-1\":\"өнгөрсөн сар\"},relativeTime:{future:{one:\"{0} сарын дараа\",other:\"{0} сарын дараа\"},past:{one:\"{0} сарын өмнө\",other:\"{0} сарын өмнө\"}}},day:{displayName:\"өдөр\",relative:{0:\"өнөөдөр\",1:\"маргааш\",2:\"нөгөөдөр\",\"-2\":\"уржигдар\",\"-1\":\"өчигдөр\"},relativeTime:{future:{one:\"{0} өдрийн дараа\",other:\"{0} өдрийн дараа\"},past:{one:\"{0} өдрийн өмнө\",other:\"{0} өдрийн өмнө\"}}},\"day-short\":{displayName:\"өдөр\",relative:{0:\"өнөөдөр\",1:\"маргааш\",2:\"нөгөөдөр\",\"-2\":\"уржигдар\",\"-1\":\"өчигдөр\"},relativeTime:{future:{one:\"{0} өдрийн дараа\",other:\"{0} өдрийн дараа\"},past:{one:\"{0} өдрийн өмнө\",other:\"{0} өдрийн өмнө\"}}},hour:{displayName:\"цаг\",relative:{0:\"энэ цаг\"},relativeTime:{future:{one:\"{0} цагийн дараа\",other:\"{0} цагийн дараа\"},past:{one:\"{0} цагийн өмнө\",other:\"{0} цагийн өмнө\"}}},\"hour-short\":{displayName:\"ц\",relative:{0:\"энэ цаг\"},relativeTime:{future:{one:\"{0} ц дараа\",other:\"{0} ц дараа\"},past:{one:\"{0} ц өмнө\",other:\"{0} ц өмнө\"}}},minute:{displayName:\"минут\",relative:{0:\"энэ минут\"},relativeTime:{future:{one:\"{0} минутын дараа\",other:\"{0} минутын дараа\"},past:{one:\"{0} минутын өмнө\",other:\"{0} минутын өмнө\"}}},\"minute-short\":{displayName:\"мин\",relative:{0:\"энэ минут\"},relativeTime:{future:{one:\"{0} мин дараа\",other:\"{0} мин дараа\"},past:{one:\"{0} мин өмнө\",other:\"{0} мин өмнө\"}}},second:{displayName:\"секунд\",relative:{0:\"одоо\"},relativeTime:{future:{one:\"{0} секундын дараа\",other:\"{0} секундын дараа\"},past:{one:\"{0} секундын өмнө\",other:\"{0} секундын өмнө\"}}},\"second-short\":{displayName:\"сек\",relative:{0:\"одоо\"},relativeTime:{future:{one:\"{0} сек дараа\",other:\"{0} сек дараа\"},past:{one:\"{0} сек өмнө\",other:\"{0} сек өмнө\"}}}}},{locale:\"mn-Mong\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}}]});\n","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.nl=n())}(this,function(){\"use strict\";return[{locale:\"nl\",pluralRuleFunction:function(e,n){var a=!String(e).split(\".\")[1];return n?\"other\":1==e&&a?\"one\":\"other\"},fields:{year:{displayName:\"jaar\",relative:{0:\"dit jaar\",1:\"volgend jaar\",\"-1\":\"vorig jaar\"},relativeTime:{future:{one:\"over {0} jaar\",other:\"over {0} jaar\"},past:{one:\"{0} jaar geleden\",other:\"{0} jaar geleden\"}}},\"year-short\":{displayName:\"jr\",relative:{0:\"dit jaar\",1:\"volgend jaar\",\"-1\":\"vorig jaar\"},relativeTime:{future:{one:\"over {0} jaar\",other:\"over {0} jaar\"},past:{one:\"{0} jaar geleden\",other:\"{0} jaar geleden\"}}},month:{displayName:\"maand\",relative:{0:\"deze maand\",1:\"volgende maand\",\"-1\":\"vorige maand\"},relativeTime:{future:{one:\"over {0} maand\",other:\"over {0} maanden\"},past:{one:\"{0} maand geleden\",other:\"{0} maanden geleden\"}}},\"month-short\":{displayName:\"mnd\",relative:{0:\"deze maand\",1:\"volgende maand\",\"-1\":\"vorige maand\"},relativeTime:{future:{one:\"over {0} maand\",other:\"over {0} maanden\"},past:{one:\"{0} maand geleden\",other:\"{0} maanden geleden\"}}},day:{displayName:\"dag\",relative:{0:\"vandaag\",1:\"morgen\",2:\"overmorgen\",\"-2\":\"eergisteren\",\"-1\":\"gisteren\"},relativeTime:{future:{one:\"over {0} dag\",other:\"over {0} dagen\"},past:{one:\"{0} dag geleden\",other:\"{0} dagen geleden\"}}},\"day-short\":{displayName:\"dag\",relative:{0:\"vandaag\",1:\"morgen\",2:\"overmorgen\",\"-2\":\"eergisteren\",\"-1\":\"gisteren\"},relativeTime:{future:{one:\"over {0} dag\",other:\"over {0} dgn\"},past:{one:\"{0} dag geleden\",other:\"{0} dgn geleden\"}}},hour:{displayName:\"uur\",relative:{0:\"binnen een uur\"},relativeTime:{future:{one:\"over {0} uur\",other:\"over {0} uur\"},past:{one:\"{0} uur geleden\",other:\"{0} uur geleden\"}}},\"hour-short\":{displayName:\"uur\",relative:{0:\"binnen een uur\"},relativeTime:{future:{one:\"over {0} uur\",other:\"over {0} uur\"},past:{one:\"{0} uur geleden\",other:\"{0} uur geleden\"}}},minute:{displayName:\"minuut\",relative:{0:\"binnen een minuut\"},relativeTime:{future:{one:\"over {0} minuut\",other:\"over {0} minuten\"},past:{one:\"{0} minuut geleden\",other:\"{0} minuten geleden\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"binnen een minuut\"},relativeTime:{future:{one:\"over {0} min.\",other:\"over {0} min.\"},past:{one:\"{0} min. geleden\",other:\"{0} min. geleden\"}}},second:{displayName:\"seconde\",relative:{0:\"nu\"},relativeTime:{future:{one:\"over {0} seconde\",other:\"over {0} seconden\"},past:{one:\"{0} seconde geleden\",other:\"{0} seconden geleden\"}}},\"second-short\":{displayName:\"sec\",relative:{0:\"nu\"},relativeTime:{future:{one:\"over {0} sec.\",other:\"over {0} sec.\"},past:{one:\"{0} sec. geleden\",other:\"{0} sec. geleden\"}}}}},{locale:\"nl-AW\",parentLocale:\"nl\"},{locale:\"nl-BE\",parentLocale:\"nl\"},{locale:\"nl-BQ\",parentLocale:\"nl\"},{locale:\"nl-CW\",parentLocale:\"nl\"},{locale:\"nl-SR\",parentLocale:\"nl\"},{locale:\"nl-SX\",parentLocale:\"nl\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.nb=t())}(this,function(){\"use strict\";return[{locale:\"nb\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"år\",relative:{0:\"i år\",1:\"neste år\",\"-1\":\"i fjor\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"for {0} år siden\",other:\"for {0} år siden\"}}},\"year-short\":{displayName:\"år\",relative:{0:\"i år\",1:\"neste år\",\"-1\":\"i fjor\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"for {0} år siden\",other:\"for {0} år siden\"}}},month:{displayName:\"måned\",relative:{0:\"denne måneden\",1:\"neste måned\",\"-1\":\"forrige måned\"},relativeTime:{future:{one:\"om {0} måned\",other:\"om {0} måneder\"},past:{one:\"for {0} måned siden\",other:\"for {0} måneder siden\"}}},\"month-short\":{displayName:\"mnd.\",relative:{0:\"denne md.\",1:\"neste md.\",\"-1\":\"forrige md.\"},relativeTime:{future:{one:\"om {0} md.\",other:\"om {0} md.\"},past:{one:\"for {0} md. siden\",other:\"for {0} md. siden\"}}},day:{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgen\",2:\"i overmorgen\",\"-2\":\"i forgårs\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} døgn\",other:\"om {0} døgn\"},past:{one:\"for {0} døgn siden\",other:\"for {0} døgn siden\"}}},\"day-short\":{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgen\",2:\"i overmorgen\",\"-2\":\"i forgårs\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} d.\",other:\"om {0} d.\"},past:{one:\"for {0} d. siden\",other:\"for {0} d. siden\"}}},hour:{displayName:\"time\",relative:{0:\"denne timen\"},relativeTime:{future:{one:\"om {0} time\",other:\"om {0} timer\"},past:{one:\"for {0} time siden\",other:\"for {0} timer siden\"}}},\"hour-short\":{displayName:\"t\",relative:{0:\"denne timen\"},relativeTime:{future:{one:\"om {0} t\",other:\"om {0} t\"},past:{one:\"for {0} t siden\",other:\"for {0} t siden\"}}},minute:{displayName:\"minutt\",relative:{0:\"dette minuttet\"},relativeTime:{future:{one:\"om {0} minutt\",other:\"om {0} minutter\"},past:{one:\"for {0} minutt siden\",other:\"for {0} minutter siden\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"dette minuttet\"},relativeTime:{future:{one:\"om {0} min\",other:\"om {0} min\"},past:{one:\"for {0} min siden\",other:\"for {0} min siden\"}}},second:{displayName:\"sekund\",relative:{0:\"nå\"},relativeTime:{future:{one:\"om {0} sekund\",other:\"om {0} sekunder\"},past:{one:\"for {0} sekund siden\",other:\"for {0} sekunder siden\"}}},\"second-short\":{displayName:\"sek\",relative:{0:\"nå\"},relativeTime:{future:{one:\"om {0} sek\",other:\"om {0} sek\"},past:{one:\"for {0} sek siden\",other:\"for {0} sek siden\"}}}}},{locale:\"nb-SJ\",parentLocale:\"nb\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.nn=t())}(this,function(){\"use strict\";return[{locale:\"nn\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"år\",relative:{0:\"i år\",1:\"neste år\",\"-1\":\"i fjor\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"for {0} år sidan\",other:\"for {0} år sidan\"}}},\"year-short\":{displayName:\"år\",relative:{0:\"i år\",1:\"neste år\",\"-1\":\"i fjor\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"for {0} år sidan\",other:\"for {0} år sidan\"}}},month:{displayName:\"månad\",relative:{0:\"denne månaden\",1:\"neste månad\",\"-1\":\"førre månad\"},relativeTime:{future:{one:\"om {0} månad\",other:\"om {0} månadar\"},past:{one:\"for {0} månad sidan\",other:\"for {0} månadar sidan\"}}},\"month-short\":{displayName:\"mnd.\",relative:{0:\"denne månaden\",1:\"neste månad\",\"-1\":\"førre månad\"},relativeTime:{future:{one:\"om {0} md.\",other:\"om {0} md.\"},past:{one:\"for {0} md. sidan\",other:\"for {0} md. sidan\"}}},day:{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgon\",2:\"i overmorgon\",\"-2\":\"i førgår\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} døgn\",other:\"om {0} døgn\"},past:{one:\"for {0} døgn sidan\",other:\"for {0} døgn sidan\"}}},\"day-short\":{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgon\",2:\"i overmorgon\",\"-2\":\"i førgår\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} d.\",other:\"om {0} d.\"},past:{one:\"for {0} d. sidan\",other:\"for {0} d. sidan\"}}},hour:{displayName:\"time\",relative:{0:\"denne timen\"},relativeTime:{future:{one:\"om {0} time\",other:\"om {0} timar\"},past:{one:\"for {0} time sidan\",other:\"for {0} timar sidan\"}}},\"hour-short\":{displayName:\"t\",relative:{0:\"denne timen\"},relativeTime:{future:{one:\"om {0} t\",other:\"om {0} t\"},past:{one:\"for {0} t sidan\",other:\"for {0} t sidan\"}}},minute:{displayName:\"minutt\",relative:{0:\"dette minuttet\"},relativeTime:{future:{one:\"om {0} minutt\",other:\"om {0} minutt\"},past:{one:\"for {0} minutt sidan\",other:\"for {0} minutt sidan\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"dette minuttet\"},relativeTime:{future:{one:\"om {0} min\",other:\"om {0} min\"},past:{one:\"for {0} min sidan\",other:\"for {0} min sidan\"}}},second:{displayName:\"sekund\",relative:{0:\"no\"},relativeTime:{future:{one:\"om {0} sekund\",other:\"om {0} sekund\"},past:{one:\"for {0} sekund sidan\",other:\"for {0} sekund sidan\"}}},\"second-short\":{displayName:\"sek\",relative:{0:\"no\"},relativeTime:{future:{one:\"om {0} sek\",other:\"om {0} sek\"},past:{one:\"for {0} sek sidan\",other:\"for {0} sek sidan\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.nso=t())}(this,function(){\"use strict\";return[{locale:\"nso\",pluralRuleFunction:function(e,t){return t?\"other\":0==e||1==e?\"one\":\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.or=t())}(this,function(){\"use strict\";return[{locale:\"or\",pluralRuleFunction:function(e,t){var r=String(e).split(\".\"),o=Number(r[0])==e;return t?1==e||5==e||o&&e>=7&&e<=9?\"one\":2==e||3==e?\"two\":4==e?\"few\":6==e?\"many\":\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"ବର୍ଷ\",relative:{0:\"ଏହି ବର୍ଷ\",1:\"ଆଗାମୀ ବର୍ଷ\",\"-1\":\"ଗତ ବର୍ଷ\"},relativeTime:{future:{one:\"{0} ବର୍ଷରେ\",other:\"{0} ବର୍ଷରେ\"},past:{one:\"{0} ବର୍ଷ ପୂର୍ବେ\",other:\"{0} ବର୍ଷ ପୂର୍ବେ\"}}},\"year-short\":{displayName:\"ବ.\",relative:{0:\"ଏହି ବର୍ଷ\",1:\"ଆଗାମୀ ବର୍ଷ\",\"-1\":\"ଗତ ବର୍ଷ\"},relativeTime:{future:{one:\"{0} ବ. ରେ\",other:\"{0} ବ. ରେ\"},past:{one:\"{0} ବ. ପୂର୍ବେ\",other:\"{0} ବ. ପୂର୍ବେ\"}}},month:{displayName:\"ମାସ\",relative:{0:\"ଏହି ମାସ\",1:\"ଆଗାମୀ ମାସ\",\"-1\":\"ଗତ ମାସ\"},relativeTime:{future:{one:\"{0} ମାସରେ\",other:\"{0} ମାସରେ\"},past:{one:\"{0} ମାସ ପୂର୍ବେ\",other:\"{0} ମାସ ପୂର୍ବେ\"}}},\"month-short\":{displayName:\"ମା.\",relative:{0:\"ଏହି ମାସ\",1:\"ଆଗାମୀ ମାସ\",\"-1\":\"ଗତ ମାସ\"},relativeTime:{future:{one:\"{0} ମା. ରେ\",other:\"{0} ମା. ରେ\"},past:{one:\"{0} ମା. ପୂର୍ବେ\",other:\"{0} ମା. ପୂର୍ବେ\"}}},day:{displayName:\"ଦିନ\",relative:{0:\"ଆଜି\",1:\"ଆସନ୍ତାକାଲି\",\"-1\":\"ଗତକାଲି\"},relativeTime:{future:{one:\"{0} ଦିନରେ\",other:\"{0} ଦିନରେ\"},past:{one:\"{0} ଦିନ ପୂର୍ବେ\",other:\"{0} ଦିନ ପୂର୍ବେ\"}}},\"day-short\":{displayName:\"ଦିନ\",relative:{0:\"ଆଜି\",1:\"ଆସନ୍ତାକାଲି\",\"-1\":\"ଗତକାଲି\"},relativeTime:{future:{one:\"{0} ଦିନରେ\",other:\"{0} ଦିନରେ\"},past:{one:\"{0} ଦିନ ପୂର୍ବେ\",other:\"{0} ଦିନ ପୂର୍ବେ\"}}},hour:{displayName:\"ଘଣ୍ଟା\",relative:{0:\"ଏହି ଘଣ୍ଟା\"},relativeTime:{future:{one:\"{0} ଘଣ୍ଟାରେ\",other:\"{0} ଘଣ୍ଟାରେ\"},past:{one:\"{0} ଘଣ୍ଟା ପୂର୍ବେ\",other:\"{0} ଘଣ୍ଟା ପୂର୍ବେ\"}}},\"hour-short\":{displayName:\"ଘ.\",relative:{0:\"ଏହି ଘଣ୍ଟା\"},relativeTime:{future:{one:\"{0} ଘ. ରେ\",other:\"{0} ଘ. ରେ\"},past:{one:\"{0} ଘ. ପୂର୍ବେ\",other:\"{0} ଘ. ପୂର୍ବେ\"}}},minute:{displayName:\"ମିନିଟ୍\",relative:{0:\"ଏହି ମିନିଟ୍\"},relativeTime:{future:{one:\"{0} ମିନିଟ୍‌‌ରେ\",other:\"{0} ମିନିଟ୍‌‌ରେ\"},past:{one:\"{0} ମିନିଟ୍ ପୂର୍ବେ\",other:\"{0} ମିନିଟ୍ ପୂର୍ବେ\"}}},\"minute-short\":{displayName:\"ମି.\",relative:{0:\"ଏହି ମିନିଟ୍\"},relativeTime:{future:{one:\"{0} ମି. ରେ\",other:\"{0} ମି. ରେ\"},past:{one:\"{0} ମି. ପୂର୍ବେ\",other:\"{0} ମି. ପୂର୍ବେ\"}}},second:{displayName:\"ସେକେଣ୍ଡ୍\",relative:{0:\"ବର୍ତ୍ତମାନ\"},relativeTime:{future:{one:\"{0} ସେକେଣ୍ଡରେ\",other:\"{0} ସେକେଣ୍ଡରେ\"},past:{one:\"{0} ସେକେଣ୍ଡ ପୂର୍ବେ\",other:\"{0} ସେକେଣ୍ଡ ପୂର୍ବେ\"}}},\"second-short\":{displayName:\"ସେକେଣ୍ଡ୍\",relative:{0:\"ବର୍ତ୍ତମାନ\"},relativeTime:{future:{one:\"{0} ସେ. ରେ\",other:\"{0} ସେ. ରେ\"},past:{one:\"{0} ସେ. ପୂର୍ବେ\",other:\"{0} ସେ. ପୂର୍ବେ\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.pl=t())}(this,function(){\"use strict\";return[{locale:\"pl\",pluralRuleFunction:function(e,t){var a=String(e).split(\".\"),m=a[0],i=!a[1],n=m.slice(-1),u=m.slice(-2);return t?\"other\":1==e&&i?\"one\":i&&n>=2&&n<=4&&(u<12||u>14)?\"few\":i&&1!=m&&(0==n||1==n)||i&&n>=5&&n<=9||i&&u>=12&&u<=14?\"many\":\"other\"},fields:{year:{displayName:\"rok\",relative:{0:\"w tym roku\",1:\"w przyszłym roku\",\"-1\":\"w zeszłym roku\"},relativeTime:{future:{one:\"za {0} rok\",few:\"za {0} lata\",many:\"za {0} lat\",other:\"za {0} roku\"},past:{one:\"{0} rok temu\",few:\"{0} lata temu\",many:\"{0} lat temu\",other:\"{0} roku temu\"}}},\"year-short\":{displayName:\"r.\",relative:{0:\"w tym roku\",1:\"w przyszłym roku\",\"-1\":\"w zeszłym roku\"},relativeTime:{future:{one:\"za {0} rok\",few:\"za {0} lata\",many:\"za {0} lat\",other:\"za {0} roku\"},past:{one:\"{0} rok temu\",few:\"{0} lata temu\",many:\"{0} lat temu\",other:\"{0} roku temu\"}}},month:{displayName:\"miesiąc\",relative:{0:\"w tym miesiącu\",1:\"w przyszłym miesiącu\",\"-1\":\"w zeszłym miesiącu\"},relativeTime:{future:{one:\"za {0} miesiąc\",few:\"za {0} miesiące\",many:\"za {0} miesięcy\",other:\"za {0} miesiąca\"},past:{one:\"{0} miesiąc temu\",few:\"{0} miesiące temu\",many:\"{0} miesięcy temu\",other:\"{0} miesiąca temu\"}}},\"month-short\":{displayName:\"mies.\",relative:{0:\"w tym miesiącu\",1:\"w przyszłym miesiącu\",\"-1\":\"w zeszłym miesiącu\"},relativeTime:{future:{one:\"za {0} mies.\",few:\"za {0} mies.\",many:\"za {0} mies.\",other:\"za {0} mies.\"},past:{one:\"{0} mies. temu\",few:\"{0} mies. temu\",many:\"{0} mies. temu\",other:\"{0} mies. temu\"}}},day:{displayName:\"dzień\",relative:{0:\"dzisiaj\",1:\"jutro\",2:\"pojutrze\",\"-2\":\"przedwczoraj\",\"-1\":\"wczoraj\"},relativeTime:{future:{one:\"za {0} dzień\",few:\"za {0} dni\",many:\"za {0} dni\",other:\"za {0} dnia\"},past:{one:\"{0} dzień temu\",few:\"{0} dni temu\",many:\"{0} dni temu\",other:\"{0} dnia temu\"}}},\"day-short\":{displayName:\"dzień\",relative:{0:\"dzisiaj\",1:\"jutro\",2:\"pojutrze\",\"-2\":\"przedwczoraj\",\"-1\":\"wczoraj\"},relativeTime:{future:{one:\"za {0} dzień\",few:\"za {0} dni\",many:\"za {0} dni\",other:\"za {0} dnia\"},past:{one:\"{0} dzień temu\",few:\"{0} dni temu\",many:\"{0} dni temu\",other:\"{0} dnia temu\"}}},hour:{displayName:\"godzina\",relative:{0:\"ta godzina\"},relativeTime:{future:{one:\"za {0} godzinę\",few:\"za {0} godziny\",many:\"za {0} godzin\",other:\"za {0} godziny\"},past:{one:\"{0} godzinę temu\",few:\"{0} godziny temu\",many:\"{0} godzin temu\",other:\"{0} godziny temu\"}}},\"hour-short\":{displayName:\"godz.\",relative:{0:\"ta godzina\"},relativeTime:{future:{one:\"za {0} godz.\",few:\"za {0} godz.\",many:\"za {0} godz.\",other:\"za {0} godz.\"},past:{one:\"{0} godz. temu\",few:\"{0} godz. temu\",many:\"{0} godz. temu\",other:\"{0} godz. temu\"}}},minute:{displayName:\"minuta\",relative:{0:\"ta minuta\"},relativeTime:{future:{one:\"za {0} minutę\",few:\"za {0} minuty\",many:\"za {0} minut\",other:\"za {0} minuty\"},past:{one:\"{0} minutę temu\",few:\"{0} minuty temu\",many:\"{0} minut temu\",other:\"{0} minuty temu\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"ta minuta\"},relativeTime:{future:{one:\"za {0} min\",few:\"za {0} min\",many:\"za {0} min\",other:\"za {0} min\"},past:{one:\"{0} min temu\",few:\"{0} min temu\",many:\"{0} min temu\",other:\"{0} min temu\"}}},second:{displayName:\"sekunda\",relative:{0:\"teraz\"},relativeTime:{future:{one:\"za {0} sekundę\",few:\"za {0} sekundy\",many:\"za {0} sekund\",other:\"za {0} sekundy\"},past:{one:\"{0} sekundę temu\",few:\"{0} sekundy temu\",many:\"{0} sekund temu\",other:\"{0} sekundy temu\"}}},\"second-short\":{displayName:\"sek.\",relative:{0:\"teraz\"},relativeTime:{future:{one:\"za {0} sek.\",few:\"za {0} sek.\",many:\"za {0} sek.\",other:\"za {0} sek.\"},past:{one:\"{0} sek. temu\",few:\"{0} sek. temu\",many:\"{0} sek. temu\",other:\"{0} sek. temu\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.pt=t())}(this,function(){\"use strict\";return[{locale:\"pt\",pluralRuleFunction:function(e,t){var o=String(e).split(\".\")[0];return t?\"other\":0==o||1==o?\"one\":\"other\"},fields:{year:{displayName:\"ano\",relative:{0:\"este ano\",1:\"próximo ano\",\"-1\":\"ano passado\"},relativeTime:{future:{one:\"em {0} ano\",other:\"em {0} anos\"},past:{one:\"há {0} ano\",other:\"há {0} anos\"}}},\"year-short\":{displayName:\"ano\",relative:{0:\"este ano\",1:\"próximo ano\",\"-1\":\"ano passado\"},relativeTime:{future:{one:\"em {0} ano\",other:\"em {0} anos\"},past:{one:\"há {0} ano\",other:\"há {0} anos\"}}},month:{displayName:\"mês\",relative:{0:\"este mês\",1:\"próximo mês\",\"-1\":\"mês passado\"},relativeTime:{future:{one:\"em {0} mês\",other:\"em {0} meses\"},past:{one:\"há {0} mês\",other:\"há {0} meses\"}}},\"month-short\":{displayName:\"mês\",relative:{0:\"este mês\",1:\"próximo mês\",\"-1\":\"mês passado\"},relativeTime:{future:{one:\"em {0} mês\",other:\"em {0} meses\"},past:{one:\"há {0} mês\",other:\"há {0} meses\"}}},day:{displayName:\"dia\",relative:{0:\"hoje\",1:\"amanhã\",2:\"depois de amanhã\",\"-2\":\"anteontem\",\"-1\":\"ontem\"},relativeTime:{future:{one:\"em {0} dia\",other:\"em {0} dias\"},past:{one:\"há {0} dia\",other:\"há {0} dias\"}}},\"day-short\":{displayName:\"dia\",relative:{0:\"hoje\",1:\"amanhã\",2:\"depois de amanhã\",\"-2\":\"anteontem\",\"-1\":\"ontem\"},relativeTime:{future:{one:\"em {0} dia\",other:\"em {0} dias\"},past:{one:\"há {0} dia\",other:\"há {0} dias\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"em {0} hora\",other:\"em {0} horas\"},past:{one:\"há {0} hora\",other:\"há {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"em {0} h\",other:\"em {0} h\"},past:{one:\"há {0} h\",other:\"há {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"em {0} minuto\",other:\"em {0} minutos\"},past:{one:\"há {0} minuto\",other:\"há {0} minutos\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"em {0} min.\",other:\"em {0} min.\"},past:{one:\"há {0} min.\",other:\"há {0} min.\"}}},second:{displayName:\"segundo\",relative:{0:\"agora\"},relativeTime:{future:{one:\"em {0} segundo\",other:\"em {0} segundos\"},past:{one:\"há {0} segundo\",other:\"há {0} segundos\"}}},\"second-short\":{displayName:\"seg.\",relative:{0:\"agora\"},relativeTime:{future:{one:\"em {0} seg.\",other:\"em {0} seg.\"},past:{one:\"há {0} seg.\",other:\"há {0} seg.\"}}}}},{locale:\"pt-AO\",parentLocale:\"pt-PT\"},{locale:\"pt-PT\",parentLocale:\"pt\",pluralRuleFunction:function(e,t){var o=!String(e).split(\".\")[1];return t?\"other\":1==e&&o?\"one\":\"other\"},fields:{year:{displayName:\"ano\",relative:{0:\"este ano\",1:\"próximo ano\",\"-1\":\"ano passado\"},relativeTime:{future:{one:\"dentro de {0} ano\",other:\"dentro de {0} anos\"},past:{one:\"há {0} ano\",other:\"há {0} anos\"}}},\"year-short\":{displayName:\"ano\",relative:{0:\"este ano\",1:\"próximo ano\",\"-1\":\"ano passado\"},relativeTime:{future:{one:\"dentro de {0} ano\",other:\"dentro de {0} anos\"},past:{one:\"há {0} ano\",other:\"há {0} anos\"}}},month:{displayName:\"mês\",relative:{0:\"este mês\",1:\"próximo mês\",\"-1\":\"mês passado\"},relativeTime:{future:{one:\"dentro de {0} mês\",other:\"dentro de {0} meses\"},past:{one:\"há {0} mês\",other:\"há {0} meses\"}}},\"month-short\":{displayName:\"mês\",relative:{0:\"este mês\",1:\"próximo mês\",\"-1\":\"mês passado\"},relativeTime:{future:{one:\"dentro de {0} mês\",other:\"dentro de {0} meses\"},past:{one:\"há {0} mês\",other:\"há {0} meses\"}}},day:{displayName:\"dia\",relative:{0:\"hoje\",1:\"amanhã\",2:\"depois de amanhã\",\"-2\":\"anteontem\",\"-1\":\"ontem\"},relativeTime:{future:{one:\"dentro de {0} dia\",other:\"dentro de {0} dias\"},past:{one:\"há {0} dia\",other:\"há {0} dias\"}}},\"day-short\":{displayName:\"dia\",relative:{0:\"hoje\",1:\"amanhã\",2:\"depois de amanhã\",\"-2\":\"anteontem\",\"-1\":\"ontem\"},relativeTime:{future:{one:\"dentro de {0} dia\",other:\"dentro de {0} dias\"},past:{one:\"há {0} dia\",other:\"há {0} dias\"}}},hour:{displayName:\"hora\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} hora\",other:\"dentro de {0} horas\"},past:{one:\"há {0} hora\",other:\"há {0} horas\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"esta hora\"},relativeTime:{future:{one:\"dentro de {0} h\",other:\"dentro de {0} h\"},past:{one:\"há {0} h\",other:\"há {0} h\"}}},minute:{displayName:\"minuto\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} minuto\",other:\"dentro de {0} minutos\"},past:{one:\"há {0} minuto\",other:\"há {0} minutos\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"este minuto\"},relativeTime:{future:{one:\"dentro de {0} min\",other:\"dentro de {0} min\"},past:{one:\"há {0} min\",other:\"há {0} min\"}}},second:{displayName:\"segundo\",relative:{0:\"agora\"},relativeTime:{future:{one:\"dentro de {0} segundo\",other:\"dentro de {0} segundos\"},past:{one:\"há {0} segundo\",other:\"há {0} segundos\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"agora\"},relativeTime:{future:{one:\"dentro de {0} s\",other:\"dentro de {0} s\"},past:{one:\"há {0} s\",other:\"há {0} s\"}}}}},{locale:\"pt-CH\",parentLocale:\"pt-PT\"},{locale:\"pt-CV\",parentLocale:\"pt-PT\"},{locale:\"pt-GQ\",parentLocale:\"pt-PT\"},{locale:\"pt-GW\",parentLocale:\"pt-PT\"},{locale:\"pt-LU\",parentLocale:\"pt-PT\"},{locale:\"pt-MO\",parentLocale:\"pt-PT\"},{locale:\"pt-MZ\",parentLocale:\"pt-PT\"},{locale:\"pt-ST\",parentLocale:\"pt-PT\"},{locale:\"pt-TL\",parentLocale:\"pt-PT\"}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.qu=a())}(this,function(){\"use strict\";return[{locale:\"qu\",pluralRuleFunction:function(e,a){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"kunan wata\",1:\"hamuq wata\",\"-1\":\"qayna wata\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"kunan wata\",1:\"hamuq wata\",\"-1\":\"qayna wata\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"kunan killa\",1:\"hamuq killa\",\"-1\":\"qayna killa\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"kunan killa\",1:\"hamuq killa\",\"-1\":\"qayna killa\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"kunan punchaw\",1:\"paqarin\",\"-1\":\"qayna punchaw\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"kunan punchaw\",1:\"paqarin\",\"-1\":\"qayna punchaw\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"kay hora\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"kay hora\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"kay minuto\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"kay minuto\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"qu-BO\",parentLocale:\"qu\"},{locale:\"qu-EC\",parentLocale:\"qu\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ro=t())}(this,function(){\"use strict\";return[{locale:\"ro\",pluralRuleFunction:function(e,t){var a=String(e).split(\".\"),i=!a[1],u=Number(a[0])==e&&a[0].slice(-2);return t?1==e?\"one\":\"other\":1==e&&i?\"one\":!i||0==e||1!=e&&u>=1&&u<=19?\"few\":\"other\"},fields:{year:{displayName:\"an\",relative:{0:\"anul acesta\",1:\"anul viitor\",\"-1\":\"anul trecut\"},relativeTime:{future:{one:\"peste {0} an\",few:\"peste {0} ani\",other:\"peste {0} de ani\"},past:{one:\"acum {0} an\",few:\"acum {0} ani\",other:\"acum {0} de ani\"}}},\"year-short\":{displayName:\"an\",relative:{0:\"anul acesta\",1:\"anul viitor\",\"-1\":\"anul trecut\"},relativeTime:{future:{one:\"peste {0} an\",few:\"peste {0} ani\",other:\"peste {0} de ani\"},past:{one:\"acum {0} an\",few:\"acum {0} ani\",other:\"acum {0} de ani\"}}},month:{displayName:\"lună\",relative:{0:\"luna aceasta\",1:\"luna viitoare\",\"-1\":\"luna trecută\"},relativeTime:{future:{one:\"peste {0} lună\",few:\"peste {0} luni\",other:\"peste {0} de luni\"},past:{one:\"acum {0} lună\",few:\"acum {0} luni\",other:\"acum {0} de luni\"}}},\"month-short\":{displayName:\"lună\",relative:{0:\"luna aceasta\",1:\"luna viitoare\",\"-1\":\"luna trecută\"},relativeTime:{future:{one:\"peste {0} lună\",few:\"peste {0} luni\",other:\"peste {0} luni\"},past:{one:\"acum {0} lună\",few:\"acum {0} luni\",other:\"acum {0} luni\"}}},day:{displayName:\"zi\",relative:{0:\"azi\",1:\"mâine\",2:\"poimâine\",\"-2\":\"alaltăieri\",\"-1\":\"ieri\"},relativeTime:{future:{one:\"peste {0} zi\",few:\"peste {0} zile\",other:\"peste {0} de zile\"},past:{one:\"acum {0} zi\",few:\"acum {0} zile\",other:\"acum {0} de zile\"}}},\"day-short\":{displayName:\"zi\",relative:{0:\"azi\",1:\"mâine\",2:\"poimâine\",\"-2\":\"alaltăieri\",\"-1\":\"ieri\"},relativeTime:{future:{one:\"peste {0} zi\",few:\"peste {0} zile\",other:\"peste {0} de zile\"},past:{one:\"acum {0} zi\",few:\"acum {0} zile\",other:\"acum {0} de zile\"}}},hour:{displayName:\"oră\",relative:{0:\"ora aceasta\"},relativeTime:{future:{one:\"peste {0} oră\",few:\"peste {0} ore\",other:\"peste {0} de ore\"},past:{one:\"acum {0} oră\",few:\"acum {0} ore\",other:\"acum {0} de ore\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"ora aceasta\"},relativeTime:{future:{one:\"peste {0} h\",few:\"peste {0} h\",other:\"peste {0} h\"},past:{one:\"acum {0} h\",few:\"acum {0} h\",other:\"acum {0} h\"}}},minute:{displayName:\"minut\",relative:{0:\"minutul acesta\"},relativeTime:{future:{one:\"peste {0} minut\",few:\"peste {0} minute\",other:\"peste {0} de minute\"},past:{one:\"acum {0} minut\",few:\"acum {0} minute\",other:\"acum {0} de minute\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"minutul acesta\"},relativeTime:{future:{one:\"peste {0} min.\",few:\"peste {0} min.\",other:\"peste {0} min.\"},past:{one:\"acum {0} min.\",few:\"acum {0} min.\",other:\"acum {0} min.\"}}},second:{displayName:\"secundă\",relative:{0:\"acum\"},relativeTime:{future:{one:\"peste {0} secundă\",few:\"peste {0} secunde\",other:\"peste {0} de secunde\"},past:{one:\"acum {0} secundă\",few:\"acum {0} secunde\",other:\"acum {0} de secunde\"}}},\"second-short\":{displayName:\"sec.\",relative:{0:\"acum\"},relativeTime:{future:{one:\"peste {0} sec.\",few:\"peste {0} sec.\",other:\"peste {0} sec.\"},past:{one:\"acum {0} sec.\",few:\"acum {0} sec.\",other:\"acum {0} sec.\"}}}}},{locale:\"ro-MD\",parentLocale:\"ro\"}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.ru=a())}(this,function(){\"use strict\";return[{locale:\"ru\",pluralRuleFunction:function(e,a){var t=String(e).split(\".\"),r=t[0],o=!t[1],n=r.slice(-1),l=r.slice(-2);return a?\"other\":o&&1==n&&11!=l?\"one\":o&&n>=2&&n<=4&&(l<12||l>14)?\"few\":o&&0==n||o&&n>=5&&n<=9||o&&l>=11&&l<=14?\"many\":\"other\"},fields:{year:{displayName:\"год\",relative:{0:\"в этом году\",1:\"в следующем году\",\"-1\":\"в прошлом году\"},relativeTime:{future:{one:\"через {0} год\",few:\"через {0} года\",many:\"через {0} лет\",other:\"через {0} года\"},past:{one:\"{0} год назад\",few:\"{0} года назад\",many:\"{0} лет назад\",other:\"{0} года назад\"}}},\"year-short\":{displayName:\"г.\",relative:{0:\"в этом г.\",1:\"в след. г.\",\"-1\":\"в прошлом г.\"},relativeTime:{future:{one:\"через {0} г.\",few:\"через {0} г.\",many:\"через {0} л.\",other:\"через {0} г.\"},past:{one:\"{0} г. назад\",few:\"{0} г. назад\",many:\"{0} л. назад\",other:\"{0} г. назад\"}}},month:{displayName:\"месяц\",relative:{0:\"в этом месяце\",1:\"в следующем месяце\",\"-1\":\"в прошлом месяце\"},relativeTime:{future:{one:\"через {0} месяц\",few:\"через {0} месяца\",many:\"через {0} месяцев\",other:\"через {0} месяца\"},past:{one:\"{0} месяц назад\",few:\"{0} месяца назад\",many:\"{0} месяцев назад\",other:\"{0} месяца назад\"}}},\"month-short\":{displayName:\"мес.\",relative:{0:\"в этом мес.\",1:\"в следующем мес.\",\"-1\":\"в прошлом мес.\"},relativeTime:{future:{one:\"через {0} мес.\",few:\"через {0} мес.\",many:\"через {0} мес.\",other:\"через {0} мес.\"},past:{one:\"{0} мес. назад\",few:\"{0} мес. назад\",many:\"{0} мес. назад\",other:\"{0} мес. назад\"}}},day:{displayName:\"день\",relative:{0:\"сегодня\",1:\"завтра\",2:\"послезавтра\",\"-2\":\"позавчера\",\"-1\":\"вчера\"},relativeTime:{future:{one:\"через {0} день\",few:\"через {0} дня\",many:\"через {0} дней\",other:\"через {0} дня\"},past:{one:\"{0} день назад\",few:\"{0} дня назад\",many:\"{0} дней назад\",other:\"{0} дня назад\"}}},\"day-short\":{displayName:\"дн.\",relative:{0:\"сегодня\",1:\"завтра\",2:\"послезавтра\",\"-2\":\"позавчера\",\"-1\":\"вчера\"},relativeTime:{future:{one:\"через {0} дн.\",few:\"через {0} дн.\",many:\"через {0} дн.\",other:\"через {0} дн.\"},past:{one:\"{0} дн. назад\",few:\"{0} дн. назад\",many:\"{0} дн. назад\",other:\"{0} дн. назад\"}}},hour:{displayName:\"час\",relative:{0:\"в этот час\"},relativeTime:{future:{one:\"через {0} час\",few:\"через {0} часа\",many:\"через {0} часов\",other:\"через {0} часа\"},past:{one:\"{0} час назад\",few:\"{0} часа назад\",many:\"{0} часов назад\",other:\"{0} часа назад\"}}},\"hour-short\":{displayName:\"ч\",relative:{0:\"в этот час\"},relativeTime:{future:{one:\"через {0} ч.\",few:\"через {0} ч.\",many:\"через {0} ч.\",other:\"через {0} ч.\"},past:{one:\"{0} ч. назад\",few:\"{0} ч. назад\",many:\"{0} ч. назад\",other:\"{0} ч. назад\"}}},minute:{displayName:\"минута\",relative:{0:\"в эту минуту\"},relativeTime:{future:{one:\"через {0} минуту\",few:\"через {0} минуты\",many:\"через {0} минут\",other:\"через {0} минуты\"},past:{one:\"{0} минуту назад\",few:\"{0} минуты назад\",many:\"{0} минут назад\",other:\"{0} минуты назад\"}}},\"minute-short\":{displayName:\"мин.\",relative:{0:\"в эту минуту\"},relativeTime:{future:{one:\"через {0} мин.\",few:\"через {0} мин.\",many:\"через {0} мин.\",other:\"через {0} мин.\"},past:{one:\"{0} мин. назад\",few:\"{0} мин. назад\",many:\"{0} мин. назад\",other:\"{0} мин. назад\"}}},second:{displayName:\"секунда\",relative:{0:\"сейчас\"},relativeTime:{future:{one:\"через {0} секунду\",few:\"через {0} секунды\",many:\"через {0} секунд\",other:\"через {0} секунды\"},past:{one:\"{0} секунду назад\",few:\"{0} секунды назад\",many:\"{0} секунд назад\",other:\"{0} секунды назад\"}}},\"second-short\":{displayName:\"сек.\",relative:{0:\"сейчас\"},relativeTime:{future:{one:\"через {0} сек.\",few:\"через {0} сек.\",many:\"через {0} сек.\",other:\"через {0} сек.\"},past:{one:\"{0} сек. назад\",few:\"{0} сек. назад\",many:\"{0} сек. назад\",other:\"{0} сек. назад\"}}}}},{locale:\"ru-BY\",parentLocale:\"ru\"},{locale:\"ru-KG\",parentLocale:\"ru\"},{locale:\"ru-KZ\",parentLocale:\"ru\"},{locale:\"ru-MD\",parentLocale:\"ru\"},{locale:\"ru-UA\",parentLocale:\"ru\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.sl=t())}(this,function(){\"use strict\";return[{locale:\"sl\",pluralRuleFunction:function(e,t){var r=String(e).split(\".\"),o=r[0],a=!r[1],i=o.slice(-2);return t?\"other\":a&&1==i?\"one\":a&&2==i?\"two\":a&&(3==i||4==i)||!a?\"few\":\"other\"},fields:{year:{displayName:\"leto\",relative:{0:\"letos\",1:\"naslednje leto\",\"-1\":\"lani\"},relativeTime:{future:{one:\"čez {0} leto\",two:\"čez {0} leti\",few:\"čez {0} leta\",other:\"čez {0} let\"},past:{one:\"pred {0} letom\",two:\"pred {0} letoma\",few:\"pred {0} leti\",other:\"pred {0} leti\"}}},\"year-short\":{displayName:\"leto\",relative:{0:\"letos\",1:\"naslednje leto\",\"-1\":\"lani\"},relativeTime:{future:{one:\"čez {0} leto\",two:\"čez {0} leti\",few:\"čez {0} leta\",other:\"čez {0} let\"},past:{one:\"pred {0} letom\",two:\"pred {0} letoma\",few:\"pred {0} leti\",other:\"pred {0} leti\"}}},month:{displayName:\"mesec\",relative:{0:\"ta mesec\",1:\"naslednji mesec\",\"-1\":\"prejšnji mesec\"},relativeTime:{future:{one:\"čez {0} mesec\",two:\"čez {0} meseca\",few:\"čez {0} mesece\",other:\"čez {0} mesecev\"},past:{one:\"pred {0} mesecem\",two:\"pred {0} mesecema\",few:\"pred {0} meseci\",other:\"pred {0} meseci\"}}},\"month-short\":{displayName:\"mes.\",relative:{0:\"ta mesec\",1:\"naslednji mesec\",\"-1\":\"prejšnji mesec\"},relativeTime:{future:{one:\"čez {0} mes.\",two:\"čez {0} mes.\",few:\"čez {0} mes.\",other:\"čez {0} mes.\"},past:{one:\"pred {0} mes.\",two:\"pred {0} mes.\",few:\"pred {0} mes.\",other:\"pred {0} mes.\"}}},day:{displayName:\"dan\",relative:{0:\"danes\",1:\"jutri\",2:\"pojutrišnjem\",\"-2\":\"predvčerajšnjim\",\"-1\":\"včeraj\"},relativeTime:{future:{one:\"čez {0} dan\",two:\"čez {0} dneva\",few:\"čez {0} dni\",other:\"čez {0} dni\"},past:{one:\"pred {0} dnevom\",two:\"pred {0} dnevoma\",few:\"pred {0} dnevi\",other:\"pred {0} dnevi\"}}},\"day-short\":{displayName:\"dan\",relative:{0:\"danes\",1:\"jutri\",2:\"pojutrišnjem\",\"-2\":\"predvčerajšnjim\",\"-1\":\"včeraj\"},relativeTime:{future:{one:\"čez {0} dan\",two:\"čez {0} dneva\",few:\"čez {0} dni\",other:\"čez {0} dni\"},past:{one:\"pred {0} dnevom\",two:\"pred {0} dnevoma\",few:\"pred {0} dnevi\",other:\"pred {0} dnevi\"}}},hour:{displayName:\"ura\",relative:{0:\"v tej uri\"},relativeTime:{future:{one:\"čez {0} uro\",two:\"čez {0} uri\",few:\"čez {0} ure\",other:\"čez {0} ur\"},past:{one:\"pred {0} uro\",two:\"pred {0} urama\",few:\"pred {0} urami\",other:\"pred {0} urami\"}}},\"hour-short\":{displayName:\"ura\",relative:{0:\"v tej uri\"},relativeTime:{future:{one:\"čez {0} uro\",two:\"čez {0} uri\",few:\"čez {0} ure\",other:\"čez {0} ur\"},past:{one:\"pred {0} uro\",two:\"pred {0} urama\",few:\"pred {0} urami\",other:\"pred {0} urami\"}}},minute:{displayName:\"minuta\",relative:{0:\"to minuto\"},relativeTime:{future:{one:\"čez {0} minuto\",two:\"čez {0} minuti\",few:\"čez {0} minute\",other:\"čez {0} minut\"},past:{one:\"pred {0} minuto\",two:\"pred {0} minutama\",few:\"pred {0} minutami\",other:\"pred {0} minutami\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"to minuto\"},relativeTime:{future:{one:\"čez {0} min.\",two:\"čez {0} min.\",few:\"čez {0} min.\",other:\"čez {0} min.\"},past:{one:\"pred {0} min.\",two:\"pred {0} min.\",few:\"pred {0} min.\",other:\"pred {0} min.\"}}},second:{displayName:\"sekunda\",relative:{0:\"zdaj\"},relativeTime:{future:{one:\"čez {0} sekundo\",two:\"čez {0} sekundi\",few:\"čez {0} sekunde\",other:\"čez {0} sekund\"},past:{one:\"pred {0} sekundo\",two:\"pred {0} sekundama\",few:\"pred {0} sekundami\",other:\"pred {0} sekundami\"}}},\"second-short\":{displayName:\"sek.\",relative:{0:\"zdaj\"},relativeTime:{future:{one:\"čez {0} s\",two:\"čez {0} s\",few:\"čez {0} s\",other:\"čez {0} s\"},past:{one:\"pred {0} s\",two:\"pred {0} s\",few:\"pred {0} s\",other:\"pred {0} s\"}}}}}]});\n","!function(e,o){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=o():\"function\"==typeof define&&define.amd?define(o):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.sk=o())}(this,function(){\"use strict\";return[{locale:\"sk\",pluralRuleFunction:function(e,o){var r=String(e).split(\".\"),a=r[0],t=!r[1];return o?\"other\":1==e&&t?\"one\":a>=2&&a<=4&&t?\"few\":t?\"other\":\"many\"},fields:{year:{displayName:\"rok\",relative:{0:\"tento rok\",1:\"budúci rok\",\"-1\":\"minulý rok\"},relativeTime:{future:{one:\"o {0} rok\",few:\"o {0} roky\",many:\"o {0} roka\",other:\"o {0} rokov\"},past:{one:\"pred {0} rokom\",few:\"pred {0} rokmi\",many:\"pred {0} roka\",other:\"pred {0} rokmi\"}}},\"year-short\":{displayName:\"r.\",relative:{0:\"tento rok\",1:\"budúci rok\",\"-1\":\"minulý rok\"},relativeTime:{future:{one:\"o {0} r.\",few:\"o {0} r.\",many:\"o {0} r.\",other:\"o {0} r.\"},past:{one:\"pred {0} r.\",few:\"pred {0} r.\",many:\"pred {0} r.\",other:\"pred {0} r.\"}}},month:{displayName:\"mesiac\",relative:{0:\"tento mesiac\",1:\"budúci mesiac\",\"-1\":\"minulý mesiac\"},relativeTime:{future:{one:\"o {0} mesiac\",few:\"o {0} mesiace\",many:\"o {0} mesiaca\",other:\"o {0} mesiacov\"},past:{one:\"pred {0} mesiacom\",few:\"pred {0} mesiacmi\",many:\"pred {0} mesiaca\",other:\"pred {0} mesiacmi\"}}},\"month-short\":{displayName:\"mes.\",relative:{0:\"tento mes.\",1:\"budúci mes.\",\"-1\":\"minulý mes.\"},relativeTime:{future:{one:\"o {0} mes.\",few:\"o {0} mes.\",many:\"o {0} mes.\",other:\"o {0} mes.\"},past:{one:\"pred {0} mes.\",few:\"pred {0} mes.\",many:\"pred {0} mes.\",other:\"pred {0} mes.\"}}},day:{displayName:\"deň\",relative:{0:\"dnes\",1:\"zajtra\",2:\"pozajtra\",\"-2\":\"predvčerom\",\"-1\":\"včera\"},relativeTime:{future:{one:\"o {0} deň\",few:\"o {0} dni\",many:\"o {0} dňa\",other:\"o {0} dní\"},past:{one:\"pred {0} dňom\",few:\"pred {0} dňami\",many:\"pred {0} dňa\",other:\"pred {0} dňami\"}}},\"day-short\":{displayName:\"d.\",relative:{0:\"dnes\",1:\"zajtra\",2:\"pozajtra\",\"-2\":\"predvčerom\",\"-1\":\"včera\"},relativeTime:{future:{one:\"o {0} d.\",few:\"o {0} d.\",many:\"o {0} d.\",other:\"o {0} d.\"},past:{one:\"pred {0} d.\",few:\"pred {0} d.\",many:\"pred {0} d.\",other:\"pred {0} d.\"}}},hour:{displayName:\"hodina\",relative:{0:\"v tejto hodine\"},relativeTime:{future:{one:\"o {0} hodinu\",few:\"o {0} hodiny\",many:\"o {0} hodiny\",other:\"o {0} hodín\"},past:{one:\"pred {0} hodinou\",few:\"pred {0} hodinami\",many:\"pred {0} hodinou\",other:\"pred {0} hodinami\"}}},\"hour-short\":{displayName:\"h\",relative:{0:\"v tejto hodine\"},relativeTime:{future:{one:\"o {0} h\",few:\"o {0} h\",many:\"o {0} h\",other:\"o {0} h\"},past:{one:\"pred {0} h\",few:\"pred {0} h\",many:\"pred {0} h\",other:\"pred {0} h\"}}},minute:{displayName:\"minúta\",relative:{0:\"v tejto minúte\"},relativeTime:{future:{one:\"o {0} minútu\",few:\"o {0} minúty\",many:\"o {0} minúty\",other:\"o {0} minút\"},past:{one:\"pred {0} minútou\",few:\"pred {0} minútami\",many:\"pred {0} minúty\",other:\"pred {0} minútami\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"v tejto minúte\"},relativeTime:{future:{one:\"o {0} min\",few:\"o {0} min\",many:\"o {0} min\",other:\"o {0} min\"},past:{one:\"pred {0} min\",few:\"pred {0} min\",many:\"pred {0} min\",other:\"pred {0} min\"}}},second:{displayName:\"sekunda\",relative:{0:\"teraz\"},relativeTime:{future:{one:\"o {0} sekundu\",few:\"o {0} sekundy\",many:\"o {0} sekundy\",other:\"o {0} sekúnd\"},past:{one:\"pred {0} sekundou\",few:\"pred {0} sekundami\",many:\"pred {0} sekundy\",other:\"pred {0} sekundami\"}}},\"second-short\":{displayName:\"s\",relative:{0:\"teraz\"},relativeTime:{future:{one:\"o {0} s\",few:\"o {0} s\",many:\"o {0} s\",other:\"o {0} s\"},past:{one:\"pred {0} s\",few:\"pred {0} s\",many:\"pred {0} s\",other:\"pred {0} s\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.sr=a())}(this,function(){\"use strict\";return[{locale:\"sr\",pluralRuleFunction:function(e,a){var r=String(e).split(\".\"),t=r[0],o=r[1]||\"\",i=!r[1],s=t.slice(-1),n=t.slice(-2),l=o.slice(-1),p=o.slice(-2);return a?\"other\":i&&1==s&&11!=n||1==l&&11!=p?\"one\":i&&s>=2&&s<=4&&(n<12||n>14)||l>=2&&l<=4&&(p<12||p>14)?\"few\":\"other\"},fields:{year:{displayName:\"година\",relative:{0:\"ове године\",1:\"следеће године\",\"-1\":\"прошле године\"},relativeTime:{future:{one:\"за {0} годину\",few:\"за {0} године\",other:\"за {0} година\"},past:{one:\"пре {0} године\",few:\"пре {0} године\",other:\"пре {0} година\"}}},\"year-short\":{displayName:\"год.\",relative:{0:\"ове год.\",1:\"следеће год.\",\"-1\":\"прошле год.\"},relativeTime:{future:{one:\"за {0} год.\",few:\"за {0} год.\",other:\"за {0} год.\"},past:{one:\"пре {0} год.\",few:\"пре {0} год.\",other:\"пре {0} год.\"}}},month:{displayName:\"месец\",relative:{0:\"овог месеца\",1:\"следећег месеца\",\"-1\":\"прошлог месеца\"},relativeTime:{future:{one:\"за {0} месец\",few:\"за {0} месеца\",other:\"за {0} месеци\"},past:{one:\"пре {0} месеца\",few:\"пре {0} месеца\",other:\"пре {0} месеци\"}}},\"month-short\":{displayName:\"мес.\",relative:{0:\"овог мес.\",1:\"следећег мес.\",\"-1\":\"прошлог мес.\"},relativeTime:{future:{one:\"за {0} мес.\",few:\"за {0} мес.\",other:\"за {0} мес.\"},past:{one:\"пре {0} мес.\",few:\"пре {0} мес.\",other:\"пре {0} мес.\"}}},day:{displayName:\"дан\",relative:{0:\"данас\",1:\"сутра\",2:\"прекосутра\",\"-2\":\"прекјуче\",\"-1\":\"јуче\"},relativeTime:{future:{one:\"за {0} дан\",few:\"за {0} дана\",other:\"за {0} дана\"},past:{one:\"пре {0} дана\",few:\"пре {0} дана\",other:\"пре {0} дана\"}}},\"day-short\":{displayName:\"д.\",relative:{0:\"данас\",1:\"сутра\",2:\"прекосутра\",\"-2\":\"прекјуче\",\"-1\":\"јуче\"},relativeTime:{future:{one:\"за {0} д.\",few:\"за {0} д.\",other:\"за {0} д.\"},past:{one:\"пре {0} д.\",few:\"пре {0} д.\",other:\"пре {0} д.\"}}},hour:{displayName:\"сат\",relative:{0:\"овог сата\"},relativeTime:{future:{one:\"за {0} сат\",few:\"за {0} сата\",other:\"за {0} сати\"},past:{one:\"пре {0} сата\",few:\"пре {0} сата\",other:\"пре {0} сати\"}}},\"hour-short\":{displayName:\"ч.\",relative:{0:\"овог сата\"},relativeTime:{future:{one:\"за {0} ч.\",few:\"за {0} ч.\",other:\"за {0} ч.\"},past:{one:\"пре {0} ч.\",few:\"пре {0} ч.\",other:\"пре {0} ч.\"}}},minute:{displayName:\"минут\",relative:{0:\"овог минута\"},relativeTime:{future:{one:\"за {0} минут\",few:\"за {0} минута\",other:\"за {0} минута\"},past:{one:\"пре {0} минута\",few:\"пре {0} минута\",other:\"пре {0} минута\"}}},\"minute-short\":{displayName:\"мин.\",relative:{0:\"овог минута\"},relativeTime:{future:{one:\"за {0} мин.\",few:\"за {0} мин.\",other:\"за {0} мин.\"},past:{one:\"пре {0} мин.\",few:\"пре {0} мин.\",other:\"пре {0} мин.\"}}},second:{displayName:\"секунд\",relative:{0:\"сада\"},relativeTime:{future:{one:\"за {0} секунду\",few:\"за {0} секунде\",other:\"за {0} секунди\"},past:{one:\"пре {0} секунде\",few:\"пре {0} секунде\",other:\"пре {0} секунди\"}}},\"second-short\":{displayName:\"сек.\",relative:{0:\"сада\"},relativeTime:{future:{one:\"за {0} сек.\",few:\"за {0} сек.\",other:\"за {0} сек.\"},past:{one:\"пре {0} сек.\",few:\"пре {0} сек.\",other:\"пре {0} сек.\"}}}}},{locale:\"sr-Cyrl\",parentLocale:\"sr\"},{locale:\"sr-Cyrl-BA\",parentLocale:\"sr-Cyrl\"},{locale:\"sr-Cyrl-ME\",parentLocale:\"sr-Cyrl\"},{locale:\"sr-Cyrl-XK\",parentLocale:\"sr-Cyrl\"},{locale:\"sr-Latn\",pluralRuleFunction:function(e,a){return\"other\"},fields:{year:{displayName:\"godina\",relative:{0:\"ove godine\",1:\"sledeće godine\",\"-1\":\"prošle godine\"},relativeTime:{future:{one:\"za {0} godinu\",few:\"za {0} godine\",other:\"za {0} godina\"},past:{one:\"pre {0} godine\",few:\"pre {0} godine\",other:\"pre {0} godina\"}}},\"year-short\":{displayName:\"god.\",relative:{0:\"ove god.\",1:\"sledeće god.\",\"-1\":\"prošle god.\"},relativeTime:{future:{one:\"za {0} god.\",few:\"za {0} god.\",other:\"za {0} god.\"},past:{one:\"pre {0} god.\",few:\"pre {0} god.\",other:\"pre {0} god.\"}}},month:{displayName:\"mesec\",relative:{0:\"ovog meseca\",1:\"sledećeg meseca\",\"-1\":\"prošlog meseca\"},relativeTime:{future:{one:\"za {0} mesec\",few:\"za {0} meseca\",other:\"za {0} meseci\"},past:{one:\"pre {0} meseca\",few:\"pre {0} meseca\",other:\"pre {0} meseci\"}}},\"month-short\":{displayName:\"mes.\",relative:{0:\"ovog mes.\",1:\"sledećeg mes.\",\"-1\":\"prošlog mes.\"},relativeTime:{future:{one:\"za {0} mes.\",few:\"za {0} mes.\",other:\"za {0} mes.\"},past:{one:\"pre {0} mes.\",few:\"pre {0} mes.\",other:\"pre {0} mes.\"}}},day:{displayName:\"dan\",relative:{0:\"danas\",1:\"sutra\",2:\"prekosutra\",\"-2\":\"prekjuče\",\"-1\":\"juče\"},relativeTime:{future:{one:\"za {0} dan\",few:\"za {0} dana\",other:\"za {0} dana\"},past:{one:\"pre {0} dana\",few:\"pre {0} dana\",other:\"pre {0} dana\"}}},\"day-short\":{displayName:\"d.\",relative:{0:\"danas\",1:\"sutra\",2:\"prekosutra\",\"-2\":\"prekjuče\",\"-1\":\"juče\"},relativeTime:{future:{one:\"za {0} d.\",few:\"za {0} d.\",other:\"za {0} d.\"},past:{one:\"pre {0} d.\",few:\"pre {0} d.\",other:\"pre {0} d.\"}}},hour:{displayName:\"sat\",relative:{0:\"ovog sata\"},relativeTime:{future:{one:\"za {0} sat\",few:\"za {0} sata\",other:\"za {0} sati\"},past:{one:\"pre {0} sata\",few:\"pre {0} sata\",other:\"pre {0} sati\"}}},\"hour-short\":{displayName:\"č.\",relative:{0:\"ovog sata\"},relativeTime:{future:{one:\"za {0} č.\",few:\"za {0} č.\",other:\"za {0} č.\"},past:{one:\"pre {0} č.\",few:\"pre {0} č.\",other:\"pre {0} č.\"}}},minute:{displayName:\"minut\",relative:{0:\"ovog minuta\"},relativeTime:{future:{one:\"za {0} minut\",few:\"za {0} minuta\",other:\"za {0} minuta\"},past:{one:\"pre {0} minuta\",few:\"pre {0} minuta\",other:\"pre {0} minuta\"}}},\"minute-short\":{displayName:\"min.\",relative:{0:\"ovog minuta\"},relativeTime:{future:{one:\"za {0} min.\",few:\"za {0} min.\",other:\"za {0} min.\"},past:{one:\"pre {0} min.\",few:\"pre {0} min.\",other:\"pre {0} min.\"}}},second:{displayName:\"sekund\",relative:{0:\"sada\"},relativeTime:{future:{one:\"za {0} sekundu\",few:\"za {0} sekunde\",other:\"za {0} sekundi\"},past:{one:\"pre {0} sekunde\",few:\"pre {0} sekunde\",other:\"pre {0} sekundi\"}}},\"second-short\":{displayName:\"sek.\",relative:{0:\"sada\"},relativeTime:{future:{one:\"za {0} sek.\",few:\"za {0} sek.\",other:\"za {0} sek.\"},past:{one:\"pre {0} sek.\",few:\"pre {0} sek.\",other:\"pre {0} sek.\"}}}}},{locale:\"sr-Latn-BA\",parentLocale:\"sr-Latn\"},{locale:\"sr-Latn-ME\",parentLocale:\"sr-Latn\"},{locale:\"sr-Latn-XK\",parentLocale:\"sr-Latn\"}]});\n","!function(e,r){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(r):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.sv=r())}(this,function(){\"use strict\";return[{locale:\"sv\",pluralRuleFunction:function(e,r){var t=String(e).split(\".\"),a=!t[1],n=Number(t[0])==e,o=n&&t[0].slice(-1),m=n&&t[0].slice(-2);return r?1!=o&&2!=o||11==m||12==m?\"other\":\"one\":1==e&&a?\"one\":\"other\"},fields:{year:{displayName:\"år\",relative:{0:\"i år\",1:\"nästa år\",\"-1\":\"i fjol\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"för {0} år sedan\",other:\"för {0} år sedan\"}}},\"year-short\":{displayName:\"år\",relative:{0:\"i år\",1:\"nästa år\",\"-1\":\"i fjol\"},relativeTime:{future:{one:\"om {0} år\",other:\"om {0} år\"},past:{one:\"för {0} år sen\",other:\"för {0} år sen\"}}},month:{displayName:\"månad\",relative:{0:\"denna månad\",1:\"nästa månad\",\"-1\":\"förra månaden\"},relativeTime:{future:{one:\"om {0} månad\",other:\"om {0} månader\"},past:{one:\"för {0} månad sedan\",other:\"för {0} månader sedan\"}}},\"month-short\":{displayName:\"m\",relative:{0:\"denna mån.\",1:\"nästa mån.\",\"-1\":\"förra mån.\"},relativeTime:{future:{one:\"om {0} mån.\",other:\"om {0} mån.\"},past:{one:\"för {0} mån. sen\",other:\"för {0} mån. sen\"}}},day:{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgon\",2:\"i övermorgon\",\"-2\":\"i förrgår\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} dag\",other:\"om {0} dagar\"},past:{one:\"för {0} dag sedan\",other:\"för {0} dagar sedan\"}}},\"day-short\":{displayName:\"dag\",relative:{0:\"i dag\",1:\"i morgon\",2:\"i övermorgon\",\"-2\":\"i förrgår\",\"-1\":\"i går\"},relativeTime:{future:{one:\"om {0} d\",other:\"om {0} d\"},past:{one:\"för {0} d sedan\",other:\"för {0} d sedan\"}}},hour:{displayName:\"timme\",relative:{0:\"denna timme\"},relativeTime:{future:{one:\"om {0} timme\",other:\"om {0} timmar\"},past:{one:\"för {0} timme sedan\",other:\"för {0} timmar sedan\"}}},\"hour-short\":{displayName:\"tim\",relative:{0:\"denna timme\"},relativeTime:{future:{one:\"om {0} tim\",other:\"om {0} tim\"},past:{one:\"för {0} tim sedan\",other:\"för {0} tim sedan\"}}},minute:{displayName:\"minut\",relative:{0:\"denna minut\"},relativeTime:{future:{one:\"om {0} minut\",other:\"om {0} minuter\"},past:{one:\"för {0} minut sedan\",other:\"för {0} minuter sedan\"}}},\"minute-short\":{displayName:\"min\",relative:{0:\"denna minut\"},relativeTime:{future:{one:\"om {0} min\",other:\"om {0} min\"},past:{one:\"för {0} min sen\",other:\"för {0} min sen\"}}},second:{displayName:\"sekund\",relative:{0:\"nu\"},relativeTime:{future:{one:\"om {0} sekund\",other:\"om {0} sekunder\"},past:{one:\"för {0} sekund sedan\",other:\"för {0} sekunder sedan\"}}},\"second-short\":{displayName:\"sek\",relative:{0:\"nu\"},relativeTime:{future:{one:\"om {0} sek\",other:\"om {0} sek\"},past:{one:\"för {0} s sen\",other:\"för {0} s sen\"}}}}},{locale:\"sv-AX\",parentLocale:\"sv\"},{locale:\"sv-FI\",parentLocale:\"sv\"}]});\n","!function(a,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(a.ReactIntlLocaleData=a.ReactIntlLocaleData||{},a.ReactIntlLocaleData.sw=e())}(this,function(){\"use strict\";return[{locale:\"sw\",pluralRuleFunction:function(a,e){var i=!String(a).split(\".\")[1];return e?\"other\":1==a&&i?\"one\":\"other\"},fields:{year:{displayName:\"mwaka\",relative:{0:\"mwaka huu\",1:\"mwaka ujao\",\"-1\":\"mwaka uliopita\"},relativeTime:{future:{one:\"baada ya mwaka {0}\",other:\"baada ya miaka {0}\"},past:{one:\"mwaka {0} uliopita\",other:\"miaka {0} iliyopita\"}}},\"year-short\":{displayName:\"mwaka\",relative:{0:\"mwaka huu\",1:\"mwaka ujao\",\"-1\":\"mwaka uliopita\"},relativeTime:{future:{one:\"baada ya mwaka {0}\",other:\"baada ya miaka {0}\"},past:{one:\"mwaka {0} uliopita\",other:\"miaka {0} iliyopita\"}}},month:{displayName:\"mwezi\",relative:{0:\"mwezi huu\",1:\"mwezi ujao\",\"-1\":\"mwezi uliopita\"},relativeTime:{future:{one:\"baada ya mwezi {0}\",other:\"baada ya miezi {0}\"},past:{one:\"mwezi {0} uliopita\",other:\"miezi {0} iliyopita\"}}},\"month-short\":{displayName:\"mwezi\",relative:{0:\"mwezi huu\",1:\"mwezi ujao\",\"-1\":\"mwezi uliopita\"},relativeTime:{future:{one:\"baada ya mwezi {0}\",other:\"baada ya miezi {0}\"},past:{one:\"mwezi {0} uliopita\",other:\"miezi {0} iliyopita\"}}},day:{displayName:\"siku\",relative:{0:\"leo\",1:\"kesho\",2:\"kesho kutwa\",\"-2\":\"juzi\",\"-1\":\"jana\"},relativeTime:{future:{one:\"baada ya siku {0}\",other:\"baada ya siku {0}\"},past:{one:\"siku {0} iliyopita\",other:\"siku {0} zilizopita\"}}},\"day-short\":{displayName:\"siku\",relative:{0:\"leo\",1:\"kesho\",2:\"kesho kutwa\",\"-2\":\"juzi\",\"-1\":\"jana\"},relativeTime:{future:{one:\"baada ya siku {0}\",other:\"baada ya siku {0}\"},past:{one:\"siku {0} iliyopita\",other:\"siku {0} zilizopita\"}}},hour:{displayName:\"saa\",relative:{0:\"saa hii\"},relativeTime:{future:{one:\"baada ya saa {0}\",other:\"baada ya saa {0}\"},past:{one:\"saa {0} iliyopita\",other:\"saa {0} zilizopita\"}}},\"hour-short\":{displayName:\"saa\",relative:{0:\"saa hii\"},relativeTime:{future:{one:\"baada ya saa {0}\",other:\"baada ya saa {0}\"},past:{one:\"saa {0} iliyopita\",other:\"saa {0} zilizopita\"}}},minute:{displayName:\"dakika\",relative:{0:\"dakika hii\"},relativeTime:{future:{one:\"baada ya dakika {0}\",other:\"baada ya dakika {0}\"},past:{one:\"dakika {0} iliyopita\",other:\"dakika {0} zilizopita\"}}},\"minute-short\":{displayName:\"dak\",relative:{0:\"dakika hii\"},relativeTime:{future:{one:\"baada ya dakika {0}\",other:\"baada ya dakika {0}\"},past:{one:\"dakika {0} iliyopita\",other:\"dakika {0} zilizopita\"}}},second:{displayName:\"sekunde\",relative:{0:\"sasa hivi\"},relativeTime:{future:{one:\"baada ya sekunde {0}\",other:\"baada ya sekunde {0}\"},past:{one:\"Sekunde {0} iliyopita\",other:\"Sekunde {0} zilizopita\"}}},\"second-short\":{displayName:\"sek\",relative:{0:\"sasa hivi\"},relativeTime:{future:{one:\"baada ya sekunde {0}\",other:\"baada ya sekunde {0}\"},past:{one:\"sekunde {0} iliyopita\",other:\"sekunde {0} zilizopita\"}}}}},{locale:\"sw-CD\",parentLocale:\"sw\"},{locale:\"sw-KE\",parentLocale:\"sw\"},{locale:\"sw-UG\",parentLocale:\"sw\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.th=t())}(this,function(){\"use strict\";return[{locale:\"th\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"ปี\",relative:{0:\"ปีนี้\",1:\"ปีหน้า\",\"-1\":\"ปีที่แล้ว\"},relativeTime:{future:{other:\"ในอีก {0} ปี\"},past:{other:\"{0} ปีที่แล้ว\"}}},\"year-short\":{displayName:\"ปี\",relative:{0:\"ปีนี้\",1:\"ปีหน้า\",\"-1\":\"ปีที่แล้ว\"},relativeTime:{future:{other:\"ใน {0} ปี\"},past:{other:\"{0} ปีที่แล้ว\"}}},month:{displayName:\"เดือน\",relative:{0:\"เดือนนี้\",1:\"เดือนหน้า\",\"-1\":\"เดือนที่แล้ว\"},relativeTime:{future:{other:\"ในอีก {0} เดือน\"},past:{other:\"{0} เดือนที่ผ่านมา\"}}},\"month-short\":{displayName:\"เดือน\",relative:{0:\"เดือนนี้\",1:\"เดือนหน้า\",\"-1\":\"เดือนที่แล้ว\"},relativeTime:{future:{other:\"ใน {0} เดือน\"},past:{other:\"{0} เดือนที่แล้ว\"}}},day:{displayName:\"วัน\",relative:{0:\"วันนี้\",1:\"พรุ่งนี้\",2:\"มะรืนนี้\",\"-2\":\"เมื่อวานซืน\",\"-1\":\"เมื่อวาน\"},relativeTime:{future:{other:\"ในอีก {0} วัน\"},past:{other:\"{0} วันที่ผ่านมา\"}}},\"day-short\":{displayName:\"วัน\",relative:{0:\"วันนี้\",1:\"พรุ่งนี้\",2:\"มะรืนนี้\",\"-2\":\"เมื่อวานซืน\",\"-1\":\"เมื่อวาน\"},relativeTime:{future:{other:\"ใน {0} วัน\"},past:{other:\"{0} วันที่แล้ว\"}}},hour:{displayName:\"ชั่วโมง\",relative:{0:\"ชั่วโมงนี้\"},relativeTime:{future:{other:\"ในอีก {0} ชั่วโมง\"},past:{other:\"{0} ชั่วโมงที่ผ่านมา\"}}},\"hour-short\":{displayName:\"ชม.\",relative:{0:\"ชั่วโมงนี้\"},relativeTime:{future:{other:\"ใน {0} ชม.\"},past:{other:\"{0} ชม. ที่แล้ว\"}}},minute:{displayName:\"นาที\",relative:{0:\"นาทีนี้\"},relativeTime:{future:{other:\"ในอีก {0} นาที\"},past:{other:\"{0} นาทีที่ผ่านมา\"}}},\"minute-short\":{displayName:\"น.\",relative:{0:\"นาทีนี้\"},relativeTime:{future:{other:\"ใน {0} นาที\"},past:{other:\"{0} นาทีที่แล้ว\"}}},second:{displayName:\"วินาที\",relative:{0:\"ขณะนี้\"},relativeTime:{future:{other:\"ในอีก {0} วินาที\"},past:{other:\"{0} วินาทีที่ผ่านมา\"}}},\"second-short\":{displayName:\"วิ\",relative:{0:\"ขณะนี้\"},relativeTime:{future:{other:\"ใน {0} วินาที\"},past:{other:\"{0} วินาทีที่แล้ว\"}}}}}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.tr=a())}(this,function(){\"use strict\";return[{locale:\"tr\",pluralRuleFunction:function(e,a){return a?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"yıl\",relative:{0:\"bu yıl\",1:\"gelecek yıl\",\"-1\":\"geçen yıl\"},relativeTime:{future:{one:\"{0} yıl sonra\",other:\"{0} yıl sonra\"},past:{one:\"{0} yıl önce\",other:\"{0} yıl önce\"}}},\"year-short\":{displayName:\"yıl\",relative:{0:\"bu yıl\",1:\"gelecek yıl\",\"-1\":\"geçen yıl\"},relativeTime:{future:{one:\"{0} yıl sonra\",other:\"{0} yıl sonra\"},past:{one:\"{0} yıl önce\",other:\"{0} yıl önce\"}}},month:{displayName:\"ay\",relative:{0:\"bu ay\",1:\"gelecek ay\",\"-1\":\"geçen ay\"},relativeTime:{future:{one:\"{0} ay sonra\",other:\"{0} ay sonra\"},past:{one:\"{0} ay önce\",other:\"{0} ay önce\"}}},\"month-short\":{displayName:\"ay\",relative:{0:\"bu ay\",1:\"gelecek ay\",\"-1\":\"geçen ay\"},relativeTime:{future:{one:\"{0} ay sonra\",other:\"{0} ay sonra\"},past:{one:\"{0} ay önce\",other:\"{0} ay önce\"}}},day:{displayName:\"gün\",relative:{0:\"bugün\",1:\"yarın\",2:\"öbür gün\",\"-2\":\"evvelsi gün\",\"-1\":\"dün\"},relativeTime:{future:{one:\"{0} gün sonra\",other:\"{0} gün sonra\"},past:{one:\"{0} gün önce\",other:\"{0} gün önce\"}}},\"day-short\":{displayName:\"gün\",relative:{0:\"bugün\",1:\"yarın\",2:\"öbür gün\",\"-2\":\"evvelsi gün\",\"-1\":\"dün\"},relativeTime:{future:{one:\"{0} gün sonra\",other:\"{0} gün sonra\"},past:{one:\"{0} gün önce\",other:\"{0} gün önce\"}}},hour:{displayName:\"saat\",relative:{0:\"bu saat\"},relativeTime:{future:{one:\"{0} saat sonra\",other:\"{0} saat sonra\"},past:{one:\"{0} saat önce\",other:\"{0} saat önce\"}}},\"hour-short\":{displayName:\"sa.\",relative:{0:\"bu saat\"},relativeTime:{future:{one:\"{0} sa. sonra\",other:\"{0} sa. sonra\"},past:{one:\"{0} sa. önce\",other:\"{0} sa. önce\"}}},minute:{displayName:\"dakika\",relative:{0:\"bu dakika\"},relativeTime:{future:{one:\"{0} dakika sonra\",other:\"{0} dakika sonra\"},past:{one:\"{0} dakika önce\",other:\"{0} dakika önce\"}}},\"minute-short\":{displayName:\"dk.\",relative:{0:\"bu dakika\"},relativeTime:{future:{one:\"{0} dk. sonra\",other:\"{0} dk. sonra\"},past:{one:\"{0} dk. önce\",other:\"{0} dk. önce\"}}},second:{displayName:\"saniye\",relative:{0:\"şimdi\"},relativeTime:{future:{one:\"{0} saniye sonra\",other:\"{0} saniye sonra\"},past:{one:\"{0} saniye önce\",other:\"{0} saniye önce\"}}},\"second-short\":{displayName:\"sn.\",relative:{0:\"şimdi\"},relativeTime:{future:{one:\"{0} sn. sonra\",other:\"{0} sn. sonra\"},past:{one:\"{0} sn. önce\",other:\"{0} sn. önce\"}}}}},{locale:\"tr-CY\",parentLocale:\"tr\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.tn=t())}(this,function(){\"use strict\";return[{locale:\"tn\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.uk=t())}(this,function(){\"use strict\";return[{locale:\"uk\",pluralRuleFunction:function(e,t){var a=String(e).split(\".\"),r=a[0],o=!a[1],n=Number(a[0])==e,i=n&&a[0].slice(-1),m=n&&a[0].slice(-2),l=r.slice(-1),f=r.slice(-2);return t?3==i&&13!=m?\"few\":\"other\":o&&1==l&&11!=f?\"one\":o&&l>=2&&l<=4&&(f<12||f>14)?\"few\":o&&0==l||o&&l>=5&&l<=9||o&&f>=11&&f<=14?\"many\":\"other\"},fields:{year:{displayName:\"рік\",relative:{0:\"цього року\",1:\"наступного року\",\"-1\":\"торік\"},relativeTime:{future:{one:\"через {0} рік\",few:\"через {0} роки\",many:\"через {0} років\",other:\"через {0} року\"},past:{one:\"{0} рік тому\",few:\"{0} роки тому\",many:\"{0} років тому\",other:\"{0} року тому\"}}},\"year-short\":{displayName:\"р.\",relative:{0:\"цього року\",1:\"наступного року\",\"-1\":\"торік\"},relativeTime:{future:{one:\"через {0} р.\",few:\"через {0} р.\",many:\"через {0} р.\",other:\"через {0} р.\"},past:{one:\"{0} р. тому\",few:\"{0} р. тому\",many:\"{0} р. тому\",other:\"{0} р. тому\"}}},month:{displayName:\"місяць\",relative:{0:\"цього місяця\",1:\"наступного місяця\",\"-1\":\"минулого місяця\"},relativeTime:{future:{one:\"через {0} місяць\",few:\"через {0} місяці\",many:\"через {0} місяців\",other:\"через {0} місяця\"},past:{one:\"{0} місяць тому\",few:\"{0} місяці тому\",many:\"{0} місяців тому\",other:\"{0} місяця тому\"}}},\"month-short\":{displayName:\"міс.\",relative:{0:\"цього місяця\",1:\"наступного місяця\",\"-1\":\"минулого місяця\"},relativeTime:{future:{one:\"через {0} міс.\",few:\"через {0} міс.\",many:\"через {0} міс.\",other:\"через {0} міс.\"},past:{one:\"{0} міс. тому\",few:\"{0} міс. тому\",many:\"{0} міс. тому\",other:\"{0} міс. тому\"}}},day:{displayName:\"день\",relative:{0:\"сьогодні\",1:\"завтра\",2:\"післязавтра\",\"-2\":\"позавчора\",\"-1\":\"учора\"},relativeTime:{future:{one:\"через {0} день\",few:\"через {0} дні\",many:\"через {0} днів\",other:\"через {0} дня\"},past:{one:\"{0} день тому\",few:\"{0} дні тому\",many:\"{0} днів тому\",other:\"{0} дня тому\"}}},\"day-short\":{displayName:\"д.\",relative:{0:\"сьогодні\",1:\"завтра\",2:\"післязавтра\",\"-2\":\"позавчора\",\"-1\":\"учора\"},relativeTime:{future:{one:\"через {0} дн.\",few:\"через {0} дн.\",many:\"через {0} дн.\",other:\"через {0} дн.\"},past:{one:\"{0} дн. тому\",few:\"{0} дн. тому\",many:\"{0} дн. тому\",other:\"{0} дн. тому\"}}},hour:{displayName:\"година\",relative:{0:\"цієї години\"},relativeTime:{future:{one:\"через {0} годину\",few:\"через {0} години\",many:\"через {0} годин\",other:\"через {0} години\"},past:{one:\"{0} годину тому\",few:\"{0} години тому\",many:\"{0} годин тому\",other:\"{0} години тому\"}}},\"hour-short\":{displayName:\"год.\",relative:{0:\"цієї години\"},relativeTime:{future:{one:\"через {0} год\",few:\"через {0} год\",many:\"через {0} год\",other:\"через {0} год\"},past:{one:\"{0} год тому\",few:\"{0} год тому\",many:\"{0} год тому\",other:\"{0} год тому\"}}},minute:{displayName:\"хвилина\",relative:{0:\"цієї хвилини\"},relativeTime:{future:{one:\"через {0} хвилину\",few:\"через {0} хвилини\",many:\"через {0} хвилин\",other:\"через {0} хвилини\"},past:{one:\"{0} хвилину тому\",few:\"{0} хвилини тому\",many:\"{0} хвилин тому\",other:\"{0} хвилини тому\"}}},\"minute-short\":{displayName:\"хв.\",relative:{0:\"цієї хвилини\"},relativeTime:{future:{one:\"через {0} хв\",few:\"через {0} хв\",many:\"через {0} хв\",other:\"через {0} хв\"},past:{one:\"{0} хв тому\",few:\"{0} хв тому\",many:\"{0} хв тому\",other:\"{0} хв тому\"}}},second:{displayName:\"секунда\",relative:{0:\"зараз\"},relativeTime:{future:{one:\"через {0} секунду\",few:\"через {0} секунди\",many:\"через {0} секунд\",other:\"через {0} секунди\"},past:{one:\"{0} секунду тому\",few:\"{0} секунди тому\",many:\"{0} секунд тому\",other:\"{0} секунди тому\"}}},\"second-short\":{displayName:\"с\",relative:{0:\"зараз\"},relativeTime:{future:{one:\"через {0} с\",few:\"через {0} с\",many:\"через {0} с\",other:\"через {0} с\"},past:{one:\"{0} с тому\",few:\"{0} с тому\",many:\"{0} с тому\",other:\"{0} с тому\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.uz=t())}(this,function(){\"use strict\";return[{locale:\"uz\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"yil\",relative:{0:\"shu yil\",1:\"keyingi yil\",\"-1\":\"o‘tgan yil\"},relativeTime:{future:{one:\"{0} yildan keyin\",other:\"{0} yildan keyin\"},past:{one:\"{0} yil oldin\",other:\"{0} yil oldin\"}}},\"year-short\":{displayName:\"yil\",relative:{0:\"bu yil\",1:\"keyingi yil\",\"-1\":\"oʻtgan yil\"},relativeTime:{future:{one:\"{0} yildan keyin\",other:\"{0} yildan keyin\"},past:{one:\"{0} yil oldin\",other:\"{0} yil oldin\"}}},month:{displayName:\"oy\",relative:{0:\"shu oy\",1:\"keyingi oy\",\"-1\":\"o‘tgan oy\"},relativeTime:{future:{one:\"{0} oydan keyin\",other:\"{0} oydan keyin\"},past:{one:\"{0} oy oldin\",other:\"{0} oy oldin\"}}},\"month-short\":{displayName:\"oy\",relative:{0:\"shu oy\",1:\"keyingi oy\",\"-1\":\"o‘tgan oy\"},relativeTime:{future:{one:\"{0} oydan keyin\",other:\"{0} oydan keyin\"},past:{one:\"{0} oy oldin\",other:\"{0} oy oldin\"}}},day:{displayName:\"kun\",relative:{0:\"bugun\",1:\"ertaga\",\"-1\":\"kecha\"},relativeTime:{future:{one:\"{0} kundan keyin\",other:\"{0} kundan keyin\"},past:{one:\"{0} kun oldin\",other:\"{0} kun oldin\"}}},\"day-short\":{displayName:\"kun\",relative:{0:\"bugun\",1:\"ertaga\",\"-1\":\"kecha\"},relativeTime:{future:{one:\"{0} kundan keyin\",other:\"{0} kundan keyin\"},past:{one:\"{0} kun oldin\",other:\"{0} kun oldin\"}}},hour:{displayName:\"soat\",relative:{0:\"shu soatda\"},relativeTime:{future:{one:\"{0} soatdan keyin\",other:\"{0} soatdan keyin\"},past:{one:\"{0} soat oldin\",other:\"{0} soat oldin\"}}},\"hour-short\":{displayName:\"soat\",relative:{0:\"shu soatda\"},relativeTime:{future:{one:\"{0} soatdan keyin\",other:\"{0} soatdan keyin\"},past:{one:\"{0} soat oldin\",other:\"{0} soat oldin\"}}},minute:{displayName:\"daqiqa\",relative:{0:\"shu daqiqada\"},relativeTime:{future:{one:\"{0} daqiqadan keyin\",other:\"{0} daqiqadan keyin\"},past:{one:\"{0} daqiqa oldin\",other:\"{0} daqiqa oldin\"}}},\"minute-short\":{displayName:\"daq.\",relative:{0:\"shu daqiqada\"},relativeTime:{future:{one:\"{0} daqiqadan keyin\",other:\"{0} daqiqadan keyin\"},past:{one:\"{0} daqiqa oldin\",other:\"{0} daqiqa oldin\"}}},second:{displayName:\"soniya\",relative:{0:\"hozir\"},relativeTime:{future:{one:\"{0} soniyadan keyin\",other:\"{0} soniyadan keyin\"},past:{one:\"{0} soniya oldin\",other:\"{0} soniya oldin\"}}},\"second-short\":{displayName:\"son.\",relative:{0:\"hozir\"},relativeTime:{future:{one:\"{0} soniyadan keyin\",other:\"{0} soniyadan keyin\"},past:{one:\"{0} soniya oldin\",other:\"{0} soniya oldin\"}}}}},{locale:\"uz-Arab\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}},{locale:\"uz-Cyrl\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"Йил\",relative:{0:\"бу йил\",1:\"кейинги йил\",\"-1\":\"ўтган йил\"},relativeTime:{future:{one:\"{0} йилдан сўнг\",other:\"{0} йилдан сўнг\"},past:{one:\"{0} йил аввал\",other:\"{0} йил аввал\"}}},\"year-short\":{displayName:\"Йил\",relative:{0:\"бу йил\",1:\"кейинги йил\",\"-1\":\"ўтган йил\"},relativeTime:{future:{one:\"{0} йилдан сўнг\",other:\"{0} йилдан сўнг\"},past:{one:\"{0} йил аввал\",other:\"{0} йил аввал\"}}},month:{displayName:\"Ой\",relative:{0:\"бу ой\",1:\"кейинги ой\",\"-1\":\"ўтган ой\"},relativeTime:{future:{one:\"{0} ойдан сўнг\",other:\"{0} ойдан сўнг\"},past:{one:\"{0} ой аввал\",other:\"{0} ой аввал\"}}},\"month-short\":{displayName:\"Ой\",relative:{0:\"бу ой\",1:\"кейинги ой\",\"-1\":\"ўтган ой\"},relativeTime:{future:{one:\"{0} ойдан сўнг\",other:\"{0} ойдан сўнг\"},past:{one:\"{0} ой аввал\",other:\"{0} ой аввал\"}}},day:{displayName:\"Кун\",relative:{0:\"бугун\",1:\"эртага\",\"-1\":\"кеча\"},relativeTime:{future:{one:\"{0} кундан сўнг\",other:\"{0} кундан сўнг\"},past:{one:\"{0} кун олдин\",other:\"{0} кун олдин\"}}},\"day-short\":{displayName:\"Кун\",relative:{0:\"бугун\",1:\"эртага\",\"-1\":\"кеча\"},relativeTime:{future:{one:\"{0} кундан сўнг\",other:\"{0} кундан сўнг\"},past:{one:\"{0} кун олдин\",other:\"{0} кун олдин\"}}},hour:{displayName:\"Соат\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"{0} соатдан сўнг\",other:\"{0} соатдан сўнг\"},past:{one:\"{0} соат олдин\",other:\"{0} соат олдин\"}}},\"hour-short\":{displayName:\"Соат\",relative:{0:\"this hour\"},relativeTime:{future:{one:\"{0} соатдан сўнг\",other:\"{0} соатдан сўнг\"},past:{one:\"{0} соат олдин\",other:\"{0} соат олдин\"}}},minute:{displayName:\"Дақиқа\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"{0} дақиқадан сўнг\",other:\"{0} дақиқадан сўнг\"},past:{one:\"{0} дақиқа олдин\",other:\"{0} дақиқа олдин\"}}},\"minute-short\":{displayName:\"Дақиқа\",relative:{0:\"this minute\"},relativeTime:{future:{one:\"{0} дақиқадан сўнг\",other:\"{0} дақиқадан сўнг\"},past:{one:\"{0} дақиқа олдин\",other:\"{0} дақиқа олдин\"}}},second:{displayName:\"Сония\",relative:{0:\"ҳозир\"},relativeTime:{future:{one:\"{0} сониядан сўнг\",other:\"{0} сониядан сўнг\"},past:{one:\"{0} сония олдин\",other:\"{0} сония олдин\"}}},\"second-short\":{displayName:\"Сония\",relative:{0:\"ҳозир\"},relativeTime:{future:{one:\"{0} сониядан сўнг\",other:\"{0} сониядан сўнг\"},past:{one:\"{0} сония олдин\",other:\"{0} сония олдин\"}}}}},{locale:\"uz-Latn\",parentLocale:\"uz\"}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.vi=t())}(this,function(){\"use strict\";return[{locale:\"vi\",pluralRuleFunction:function(e,t){return t&&1==e?\"one\":\"other\"},fields:{year:{displayName:\"Năm\",relative:{0:\"năm nay\",1:\"năm sau\",\"-1\":\"năm ngoái\"},relativeTime:{future:{other:\"sau {0} năm nữa\"},past:{other:\"{0} năm trước\"}}},\"year-short\":{displayName:\"Năm\",relative:{0:\"năm nay\",1:\"năm sau\",\"-1\":\"năm ngoái\"},relativeTime:{future:{other:\"sau {0} năm nữa\"},past:{other:\"{0} năm trước\"}}},month:{displayName:\"Tháng\",relative:{0:\"tháng này\",1:\"tháng sau\",\"-1\":\"tháng trước\"},relativeTime:{future:{other:\"sau {0} tháng nữa\"},past:{other:\"{0} tháng trước\"}}},\"month-short\":{displayName:\"Tháng\",relative:{0:\"tháng này\",1:\"tháng sau\",\"-1\":\"tháng trước\"},relativeTime:{future:{other:\"sau {0} tháng nữa\"},past:{other:\"{0} tháng trước\"}}},day:{displayName:\"Ngày\",relative:{0:\"Hôm nay\",1:\"Ngày mai\",2:\"Ngày kia\",\"-2\":\"Hôm kia\",\"-1\":\"Hôm qua\"},relativeTime:{future:{other:\"sau {0} ngày nữa\"},past:{other:\"{0} ngày trước\"}}},\"day-short\":{displayName:\"Ngày\",relative:{0:\"Hôm nay\",1:\"Ngày mai\",2:\"Ngày kia\",\"-2\":\"Hôm kia\",\"-1\":\"Hôm qua\"},relativeTime:{future:{other:\"sau {0} ngày nữa\"},past:{other:\"{0} ngày trước\"}}},hour:{displayName:\"Giờ\",relative:{0:\"giờ này\"},relativeTime:{future:{other:\"sau {0} giờ nữa\"},past:{other:\"{0} giờ trước\"}}},\"hour-short\":{displayName:\"Giờ\",relative:{0:\"giờ này\"},relativeTime:{future:{other:\"sau {0} giờ nữa\"},past:{other:\"{0} giờ trước\"}}},minute:{displayName:\"Phút\",relative:{0:\"phút này\"},relativeTime:{future:{other:\"sau {0} phút nữa\"},past:{other:\"{0} phút trước\"}}},\"minute-short\":{displayName:\"Phút\",relative:{0:\"phút này\"},relativeTime:{future:{other:\"sau {0} phút nữa\"},past:{other:\"{0} phút trước\"}}},second:{displayName:\"Giây\",relative:{0:\"bây giờ\"},relativeTime:{future:{other:\"sau {0} giây nữa\"},past:{other:\"{0} giây trước\"}}},\"second-short\":{displayName:\"Giây\",relative:{0:\"bây giờ\"},relativeTime:{future:{other:\"sau {0} giây nữa\"},past:{other:\"{0} giây trước\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.xh=t())}(this,function(){\"use strict\";return[{locale:\"xh\",pluralRuleFunction:function(e,t){return t?\"other\":1==e?\"one\":\"other\"},fields:{year:{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},\"year-short\":{displayName:\"Year\",relative:{0:\"this year\",1:\"next year\",\"-1\":\"last year\"},relativeTime:{future:{other:\"+{0} y\"},past:{other:\"-{0} y\"}}},month:{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},\"month-short\":{displayName:\"Month\",relative:{0:\"this month\",1:\"next month\",\"-1\":\"last month\"},relativeTime:{future:{other:\"+{0} m\"},past:{other:\"-{0} m\"}}},day:{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},\"day-short\":{displayName:\"Day\",relative:{0:\"today\",1:\"tomorrow\",\"-1\":\"yesterday\"},relativeTime:{future:{other:\"+{0} d\"},past:{other:\"-{0} d\"}}},hour:{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},\"hour-short\":{displayName:\"Hour\",relative:{0:\"this hour\"},relativeTime:{future:{other:\"+{0} h\"},past:{other:\"-{0} h\"}}},minute:{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},\"minute-short\":{displayName:\"Minute\",relative:{0:\"this minute\"},relativeTime:{future:{other:\"+{0} min\"},past:{other:\"-{0} min\"}}},second:{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}},\"second-short\":{displayName:\"Second\",relative:{0:\"now\"},relativeTime:{future:{other:\"+{0} s\"},past:{other:\"-{0} s\"}}}}}]});\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.zh=t())}(this,function(){\"use strict\";return[{locale:\"zh\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},\"year-short\":{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},month:{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},\"month-short\":{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},day:{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},\"day-short\":{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},hour:{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},\"hour-short\":{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},minute:{displayName:\"分钟\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},\"minute-short\":{displayName:\"分\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},second:{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒钟后\"},past:{other:\"{0}秒钟前\"}}},\"second-short\":{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒后\"},past:{other:\"{0}秒前\"}}}}},{locale:\"zh-Hans\",parentLocale:\"zh\"},{locale:\"zh-Hans-HK\",parentLocale:\"zh-Hans\",fields:{year:{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},\"year-short\":{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},month:{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},\"month-short\":{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},day:{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},\"day-short\":{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},hour:{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},\"hour-short\":{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},minute:{displayName:\"分钟\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},\"minute-short\":{displayName:\"分\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},second:{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒后\"},past:{other:\"{0}秒前\"}}},\"second-short\":{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒后\"},past:{other:\"{0}秒前\"}}}}},{locale:\"zh-Hans-MO\",parentLocale:\"zh-Hans\",fields:{year:{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},\"year-short\":{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},month:{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},\"month-short\":{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},day:{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},\"day-short\":{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},hour:{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},\"hour-short\":{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},minute:{displayName:\"分钟\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},\"minute-short\":{displayName:\"分\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},second:{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒后\"},past:{other:\"{0}秒前\"}}},\"second-short\":{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒后\"},past:{other:\"{0}秒前\"}}}}},{locale:\"zh-Hans-SG\",parentLocale:\"zh-Hans\",fields:{year:{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},\"year-short\":{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0}年后\"},past:{other:\"{0}年前\"}}},month:{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},\"month-short\":{displayName:\"月\",relative:{0:\"本月\",1:\"下个月\",\"-1\":\"上个月\"},relativeTime:{future:{other:\"{0}个月后\"},past:{other:\"{0}个月前\"}}},day:{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},\"day-short\":{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"后天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0}天后\"},past:{other:\"{0}天前\"}}},hour:{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},\"hour-short\":{displayName:\"小时\",relative:{0:\"这一时间 / 此时\"},relativeTime:{future:{other:\"{0}小时后\"},past:{other:\"{0}小时前\"}}},minute:{displayName:\"分钟\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},\"minute-short\":{displayName:\"分\",relative:{0:\"此刻\"},relativeTime:{future:{other:\"{0}分钟后\"},past:{other:\"{0}分钟前\"}}},second:{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒后\"},past:{other:\"{0}秒前\"}}},\"second-short\":{displayName:\"秒\",relative:{0:\"现在\"},relativeTime:{future:{other:\"{0}秒后\"},past:{other:\"{0}秒前\"}}}}},{locale:\"zh-Hant\",pluralRuleFunction:function(e,t){return\"other\"},fields:{year:{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0} 年後\"},past:{other:\"{0} 年前\"}}},\"year-short\":{displayName:\"年\",relative:{0:\"今年\",1:\"明年\",\"-1\":\"去年\"},relativeTime:{future:{other:\"{0} 年後\"},past:{other:\"{0} 年前\"}}},month:{displayName:\"月\",relative:{0:\"本月\",1:\"下個月\",\"-1\":\"上個月\"},relativeTime:{future:{other:\"{0} 個月後\"},past:{other:\"{0} 個月前\"}}},\"month-short\":{displayName:\"月\",relative:{0:\"本月\",1:\"下個月\",\"-1\":\"上個月\"},relativeTime:{future:{other:\"{0} 個月後\"},past:{other:\"{0} 個月前\"}}},day:{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"後天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0} 天後\"},past:{other:\"{0} 天前\"}}},\"day-short\":{displayName:\"日\",relative:{0:\"今天\",1:\"明天\",2:\"後天\",\"-2\":\"前天\",\"-1\":\"昨天\"},relativeTime:{future:{other:\"{0} 天後\"},past:{other:\"{0} 天前\"}}},hour:{displayName:\"小時\",relative:{0:\"這一小時\"},relativeTime:{future:{other:\"{0} 小時後\"},past:{other:\"{0} 小時前\"}}},\"hour-short\":{displayName:\"小時\",relative:{0:\"這一小時\"},relativeTime:{future:{other:\"{0} 小時後\"},past:{other:\"{0} 小時前\"}}},minute:{displayName:\"分鐘\",relative:{0:\"這一分鐘\"},relativeTime:{future:{other:\"{0} 分鐘後\"},past:{other:\"{0} 分鐘前\"}}},\"minute-short\":{displayName:\"分鐘\",relative:{0:\"這一分鐘\"},relativeTime:{future:{other:\"{0} 分鐘後\"},past:{other:\"{0} 分鐘前\"}}},second:{displayName:\"秒\",relative:{0:\"現在\"},relativeTime:{future:{other:\"{0} 秒後\"},past:{other:\"{0} 秒前\"}}},\"second-short\":{displayName:\"秒\",relative:{0:\"現在\"},relativeTime:{future:{other:\"{0} 秒後\"},past:{other:\"{0} 秒前\"}}}}},{locale:\"zh-Hant-HK\",parentLocale:\"zh-Hant\",fields:{year:{displayName:\"年\",relative:{0:\"今年\",1:\"下年\",\"-1\":\"上年\"},relativeTime:{future:{other:\"{0} 年後\"},past:{other:\"{0} 年前\"}}},\"year-short\":{displayName:\"年\",relative:{0:\"今年\",1:\"下年\",\"-1\":\"上年\"},relativeTime:{future:{other:\"{0} 年後\"},past:{other:\"{0} 年前\"}}},month:{displayName:\"月\",relative:{0:\"本月\",1:\"下個月\",\"-1\":\"上個月\"},relativeTime:{future:{other:\"{0} 個月後\"},past:{other:\"{0} 個月前\"}}},\"month-short\":{displayName:\"月\",relative:{0:\"本月\",1:\"下個月\",\"-1\":\"上個月\"},relativeTime:{future:{other:\"{0} 個月後\"},past:{other:\"{0} 個月前\"}}},day:{displayName:\"日\",relative:{0:\"今日\",1:\"明日\",2:\"後日\",\"-2\":\"前日\",\"-1\":\"昨日\"},relativeTime:{future:{other:\"{0} 日後\"},past:{other:\"{0} 日前\"}}},\"day-short\":{displayName:\"日\",relative:{0:\"今日\",1:\"明日\",2:\"後日\",\"-2\":\"前日\",\"-1\":\"昨日\"},relativeTime:{future:{other:\"{0} 日後\"},past:{other:\"{0} 日前\"}}},hour:{displayName:\"小時\",relative:{0:\"這個小時\"},relativeTime:{future:{other:\"{0} 小時後\"},past:{other:\"{0} 小時前\"}}},\"hour-short\":{displayName:\"小時\",relative:{0:\"這個小時\"},relativeTime:{future:{other:\"{0} 小時後\"},past:{other:\"{0} 小時前\"}}},minute:{displayName:\"分鐘\",relative:{0:\"這分鐘\"},relativeTime:{future:{other:\"{0} 分鐘後\"},past:{other:\"{0} 分鐘前\"}}},\"minute-short\":{displayName:\"分鐘\",relative:{0:\"這分鐘\"},relativeTime:{future:{other:\"{0} 分鐘後\"},past:{other:\"{0} 分鐘前\"}}},second:{displayName:\"秒\",relative:{0:\"現在\"},relativeTime:{future:{other:\"{0} 秒後\"},past:{other:\"{0} 秒前\"}}},\"second-short\":{displayName:\"秒\",relative:{0:\"現在\"},relativeTime:{future:{other:\"{0} 秒後\"},past:{other:\"{0} 秒前\"}}}}},{locale:\"zh-Hant-MO\",parentLocale:\"zh-Hant-HK\"}]});\n","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a():\"function\"==typeof define&&define.amd?define(a):(e.ReactIntlLocaleData=e.ReactIntlLocaleData||{},e.ReactIntlLocaleData.zu=a())}(this,function(){\"use strict\";return[{locale:\"zu\",pluralRuleFunction:function(e,a){return a?\"other\":e>=0&&e<=1?\"one\":\"other\"},fields:{year:{displayName:\"Unyaka\",relative:{0:\"kulo nyaka\",1:\"unyaka ozayo\",\"-1\":\"onyakeni odlule\"},relativeTime:{future:{one:\"onyakeni ongu-{0} ozayo\",other:\"eminyakeni engu-{0} ezayo\"},past:{one:\"{0} unyaka odlule\",other:\"{0} iminyaka edlule\"}}},\"year-short\":{displayName:\"Unyaka\",relative:{0:\"kulo nyaka\",1:\"unyaka ozayo\",\"-1\":\"onyakeni odlule\"},relativeTime:{future:{one:\"onyakeni ongu-{0} ozayo\",other:\"eminyakeni engu-{0} ezayo\"},past:{one:\"{0} unyaka odlule\",other:\"{0} unyaka odlule\"}}},month:{displayName:\"Inyanga\",relative:{0:\"le nyanga\",1:\"inyanga ezayo\",\"-1\":\"inyanga edlule\"},relativeTime:{future:{one:\"enyangeni engu-{0}\",other:\"ezinyangeni ezingu-{0} ezizayo\"},past:{one:\"{0} inyanga edlule\",other:\"{0} izinyanga ezedlule\"}}},\"month-short\":{displayName:\"Inyanga\",relative:{0:\"le nyanga\",1:\"inyanga ezayo\",\"-1\":\"inyanga edlule\"},relativeTime:{future:{one:\"ezinyangeni ezingu-{0} ezizayo\",other:\"ezinyangeni ezingu-{0} ezizayo\"},past:{one:\"{0} izinyanga ezedlule\",other:\"{0} izinyanga ezedlule\"}}},day:{displayName:\"Usuku\",relative:{0:\"namhlanje\",1:\"kusasa\",2:\"usuku olulandela olwakusasa\",\"-2\":\"usuku olwandulela olwayizolo\",\"-1\":\"izolo\"},relativeTime:{future:{one:\"osukwini olungu-{0} oluzayo\",other:\"ezinsukwini ezingu-{0} ezizayo\"},past:{one:\"osukwini olungu-{0} olwedlule\",other:\"ezinsukwini ezingu-{0} ezedlule.\"}}},\"day-short\":{displayName:\"Usuku\",relative:{0:\"namhlanje\",1:\"kusasa\",2:\"usuku olulandela olwakusasa\",\"-2\":\"usuku olwandulela olwayizolo\",\"-1\":\"izolo\"},relativeTime:{future:{one:\"osukwini olungu-{0} oluzayo\",other:\"ezinsukwini ezingu-{0} ezizayo\"},past:{one:\"{0} usuku olwedlule\",other:\"{0} izinsuku ezedlule\"}}},hour:{displayName:\"Ihora\",relative:{0:\"leli hora\"},relativeTime:{future:{one:\"ehoreni elingu-{0} elizayo\",other:\"emahoreni angu-{0} ezayo\"},past:{one:\"{0} ihora eledlule\",other:\"emahoreni angu-{0} edlule\"}}},\"hour-short\":{displayName:\"Ihora\",relative:{0:\"leli hora\"},relativeTime:{future:{one:\"ehoreni elingu-{0} elizayo\",other:\"emahoreni angu-{0} ezayo\"},past:{one:\"{0} ihora eledlule\",other:\"emahoreni angu-{0} edlule\"}}},minute:{displayName:\"Iminithi\",relative:{0:\"leli minithi\"},relativeTime:{future:{one:\"kuminithi elingu-{0} elizayo\",other:\"kumaminithi angu-{0} ezayo\"},past:{one:\"{0} iminithi eledlule\",other:\"{0} amaminithi edlule\"}}},\"minute-short\":{displayName:\"Iminithi\",relative:{0:\"leli minithi\"},relativeTime:{future:{one:\"kuminithi elingu-{0} elizayo\",other:\"kumaminithi angu-{0} ezayo\"},past:{one:\"{0} iminithi eledlule\",other:\"{0} amaminithi edlule\"}}},second:{displayName:\"Isekhondi\",relative:{0:\"manje\"},relativeTime:{future:{one:\"kusekhondi elingu-{0} elizayo\",other:\"kumasekhondi angu-{0} ezayo\"},past:{one:\"{0} isekhondi eledlule\",other:\"{0} amasekhondi edlule\"}}},\"second-short\":{displayName:\"Isekhondi\",relative:{0:\"manje\"},relativeTime:{future:{one:\"kusekhondi elingu-{0} elizayo\",other:\"kumasekhondi angu-{0} ezayo\"},past:{one:\"{0} isekhondi eledlule\",other:\"{0} amasekhondi edlule\"}}}}}]});\n","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E={};function F(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}F.prototype.isReactComponent={};F.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(C(85));this.updater.enqueueSetState(this,a,b,\"setState\")};F.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction G(){}G.prototype=F.prototype;function H(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}var I=H.prototype=new G;I.constructor=H;l(I,F.prototype);I.isPureReactComponent=!0;var J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,c){var e,d={},g=null,k=null;if(null!=b)for(e in void 0!==b.ref&&(k=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,e)&&!L.hasOwnProperty(e)&&(d[e]=b[e]);var f=arguments.length-2;if(1===f)d.children=c;else if(1<f){for(var h=Array(f),m=0;m<f;m++)h[m]=arguments[m+2];d.children=h}if(a&&a.defaultProps)for(e in f=a.defaultProps,f)void 0===d[e]&&(d[e]=f[e]);return{$$typeof:p,type:a,key:g,ref:k,props:d,_owner:J.current}}\nfunction N(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g,Q=[];function R(a,b,c,e){if(Q.length){var d=Q.pop();d.result=a;d.keyPrefix=b;d.func=c;d.context=e;d.count=0;return d}return{result:a,keyPrefix:b,func:c,context:e,count:0}}\nfunction S(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>Q.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k<a.length;k++){d=a[k];var f=b+U(d,k);g+=T(d,f,c,e)}else if(null===a||\"object\"!==typeof a?f=null:(f=B&&a[B]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),k=\n0;!(d=a.next()).done;)d=d.value,f=b+U(d,k++),g+=T(d,f,c,e);else if(\"object\"===d)throw c=\"\"+a,Error(C(31,\"[object Object]\"===c?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":c,\"\"));return g}function V(a,b,c){return null==a?0:T(a,\"\",b,c)}function U(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function W(a,b){a.func.call(a.context,b,a.count++)}\nfunction aa(a,b,c){var e=a.result,d=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?X(a,e,c,function(a){return a}):null!=a&&(O(a)&&(a=N(a,d+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(P,\"$&/\")+\"/\")+c)),e.push(a))}function X(a,b,c,e,d){var g=\"\";null!=c&&(g=(\"\"+c).replace(P,\"$&/\")+\"/\");b=R(b,g,e,d);V(a,aa,b);S(b)}var Y={current:null};function Z(){var a=Y.current;if(null===a)throw Error(C(321));return a}\nvar ba={ReactCurrentDispatcher:Y,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:J,IsSomeRendererActing:{current:!1},assign:l};exports.Children={map:function(a,b,c){if(null==a)return a;var e=[];X(a,e,null,b,c);return e},forEach:function(a,b,c){if(null==a)return a;b=R(null,null,b,c);V(a,W,b);S(b)},count:function(a){return V(a,function(){return null},null)},toArray:function(a){var b=[];X(a,b,null,function(a){return a});return b},only:function(a){if(!O(a))throw Error(C(143));return a}};\nexports.Component=F;exports.Fragment=r;exports.Profiler=u;exports.PureComponent=H;exports.StrictMode=t;exports.Suspense=y;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ba;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(C(267,a));var e=l({},a.props),d=a.key,g=a.ref,k=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,k=J.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var f=a.type.defaultProps;for(h in b)K.call(b,h)&&!L.hasOwnProperty(h)&&(e[h]=void 0===b[h]&&void 0!==f?f[h]:b[h])}var h=arguments.length-2;if(1===h)e.children=c;else if(1<h){f=Array(h);for(var m=0;m<h;m++)f[m]=arguments[m+2];e.children=f}return{$$typeof:p,type:a.type,\nkey:d,ref:g,props:e,_owner:k}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:x,render:a}};exports.isValidElement=O;\nexports.lazy=function(a){return{$$typeof:A,_ctor:a,_status:-1,_result:null}};exports.memo=function(a,b){return{$$typeof:z,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return Z().useCallback(a,b)};exports.useContext=function(a,b){return Z().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return Z().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return Z().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return Z().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return Z().useMemo(a,b)};exports.useReducer=function(a,b,c){return Z().useReducer(a,b,c)};exports.useRef=function(a){return Z().useRef(a)};exports.useState=function(a){return Z().useState(a)};exports.version=\"16.14.0\";\n","/** @license React v16.14.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function u(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(u(227));\nfunction ba(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,k){da=!1;ea=null;ba.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,k){ja.apply(this,arguments);if(da){if(da){var l=ea;da=!1;ea=null}else throw Error(u(198));fa||(fa=!0,ha=l)}}var la=null,ma=null,na=null;\nfunction oa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=na(c);ka(d,b,void 0,a);a.currentTarget=null}var pa=null,qa={};\nfunction ra(){if(pa)for(var a in qa){var b=qa[a],c=pa.indexOf(a);if(!(-1<c))throw Error(u(96,a));if(!sa[c]){if(!b.extractEvents)throw Error(u(97,a));sa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;if(ta.hasOwnProperty(h))throw Error(u(99,h));ta[h]=f;var k=f.phasedRegistrationNames;if(k){for(e in k)k.hasOwnProperty(e)&&ua(k[e],g,h);e=!0}else f.registrationName?(ua(f.registrationName,g,h),e=!0):e=!1;if(!e)throw Error(u(98,d,a));}}}}\nfunction ua(a,b,c){if(va[a])throw Error(u(100,a));va[a]=b;wa[a]=b.eventTypes[c].dependencies}var sa=[],ta={},va={},wa={};function xa(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];if(!qa.hasOwnProperty(c)||qa[c]!==d){if(qa[c])throw Error(u(102,c));qa[c]=d;b=!0}}b&&ra()}var ya=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),za=null,Aa=null,Ba=null;\nfunction Ca(a){if(a=ma(a)){if(\"function\"!==typeof za)throw Error(u(280));var b=a.stateNode;b&&(b=la(b),za(a.stateNode,a.type,b))}}function Da(a){Aa?Ba?Ba.push(a):Ba=[a]:Aa=a}function Ea(){if(Aa){var a=Aa,b=Ba;Ba=Aa=null;Ca(a);if(b)for(a=0;a<b.length;a++)Ca(b[a])}}function Fa(a,b){return a(b)}function Ga(a,b,c,d,e){return a(b,c,d,e)}function Ha(){}var Ia=Fa,Ja=!1,Ka=!1;function La(){if(null!==Aa||null!==Ba)Ha(),Ea()}\nfunction Ma(a,b,c){if(Ka)return a(b,c);Ka=!0;try{return Ia(a,b,c)}finally{Ka=!1,La()}}var Na=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,Oa=Object.prototype.hasOwnProperty,Pa={},Qa={};\nfunction Ra(a){if(Oa.call(Qa,a))return!0;if(Oa.call(Pa,a))return!1;if(Na.test(a))return Qa[a]=!0;Pa[a]=!0;return!1}function Sa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction Ta(a,b,c,d){if(null===b||\"undefined\"===typeof b||Sa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(Ta(b,c,e,d)&&(c=null),d||null===e?Ra(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar Ya=/^(.*)[\\\\\\/]/,E=\"function\"===typeof Symbol&&Symbol.for,Za=E?Symbol.for(\"react.element\"):60103,$a=E?Symbol.for(\"react.portal\"):60106,ab=E?Symbol.for(\"react.fragment\"):60107,bb=E?Symbol.for(\"react.strict_mode\"):60108,cb=E?Symbol.for(\"react.profiler\"):60114,db=E?Symbol.for(\"react.provider\"):60109,eb=E?Symbol.for(\"react.context\"):60110,fb=E?Symbol.for(\"react.concurrent_mode\"):60111,gb=E?Symbol.for(\"react.forward_ref\"):60112,hb=E?Symbol.for(\"react.suspense\"):60113,ib=E?Symbol.for(\"react.suspense_list\"):\n60120,jb=E?Symbol.for(\"react.memo\"):60115,kb=E?Symbol.for(\"react.lazy\"):60116,lb=E?Symbol.for(\"react.block\"):60121,mb=\"function\"===typeof Symbol&&Symbol.iterator;function nb(a){if(null===a||\"object\"!==typeof a)return null;a=mb&&a[mb]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function ob(a){if(-1===a._status){a._status=0;var b=a._ctor;b=b();a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}}\nfunction pb(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ab:return\"Fragment\";case $a:return\"Portal\";case cb:return\"Profiler\";case bb:return\"StrictMode\";case hb:return\"Suspense\";case ib:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case eb:return\"Context.Consumer\";case db:return\"Context.Provider\";case gb:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\n\"ForwardRef\");case jb:return pb(a.type);case lb:return pb(a.render);case kb:if(a=1===a._status?a._result:null)return pb(a)}return null}function qb(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=pb(a.type);c=null;d&&(c=pb(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Ya,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n    in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nfunction rb(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function sb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction tb(a){var b=sb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function xb(a){a._valueTracker||(a._valueTracker=tb(a))}function yb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=sb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function zb(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction Ab(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=rb(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Bb(a,b){b=b.checked;null!=b&&Xa(a,\"checked\",b,!1)}\nfunction Cb(a,b){Bb(a,b);var c=rb(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?Db(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&Db(a,b.type,rb(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Eb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction Db(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function Fb(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gb(a,b){a=n({children:void 0},b);if(b=Fb(b.children))a.children=b;return a}\nfunction Hb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+rb(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction Ib(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(u(91));return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function Jb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(u(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)oa(a,b[d],c[d]);else b&&oa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}function mc(a){null!==a&&(kc=ic(kc,a));a=kc;kc=null;if(a){jc(a,lc);if(kc)throw Error(u(95));if(fa)throw a=ha,fa=!1,ha=null,a;}}\nfunction nc(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function oc(a){if(!ya)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}var pc=[];function qc(a){a.topLevelType=null;a.nativeEvent=null;a.targetInst=null;a.ancestors.length=0;10>pc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=nc(a.nativeEvent);d=a.topLevelType;var f=a.nativeEvent,g=a.eventSystemFlags;0===c&&(g|=64);for(var h=null,k=0;k<sa.length;k++){var l=sa[k];l&&(l=l.extractEvents(d,b,f,e,g))&&(h=\nic(h,l))}mc(h)}}function uc(a,b,c){if(!c.has(a)){switch(a){case \"scroll\":vc(b,\"scroll\",!0);break;case \"focus\":case \"blur\":vc(b,\"focus\",!0);vc(b,\"blur\",!0);c.set(\"blur\",null);c.set(\"focus\",null);break;case \"cancel\":case \"close\":oc(a)&&vc(b,a,!0);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ac.indexOf(a)&&F(a,b)}c.set(a,null)}}\nvar wc,xc,yc,zc=!1,Ac=[],Bc=null,Cc=null,Dc=null,Ec=new Map,Fc=new Map,Gc=[],Hc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),Ic=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\nfunction Jc(a,b){var c=cc(b);Hc.forEach(function(a){uc(a,b,c)});Ic.forEach(function(a){uc(a,b,c)})}function Kc(a,b,c,d,e){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:e,container:d}}\nfunction Lc(a,b){switch(a){case \"focus\":case \"blur\":Bc=null;break;case \"dragenter\":case \"dragleave\":Cc=null;break;case \"mouseover\":case \"mouseout\":Dc=null;break;case \"pointerover\":case \"pointerout\":Ec.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Fc.delete(b.pointerId)}}function Mc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=Kc(b,c,d,e,f),null!==b&&(b=Nc(b),null!==b&&xc(b)),a;a.eventSystemFlags|=d;return a}\nfunction Oc(a,b,c,d,e){switch(b){case \"focus\":return Bc=Mc(Bc,a,b,c,d,e),!0;case \"dragenter\":return Cc=Mc(Cc,a,b,c,d,e),!0;case \"mouseover\":return Dc=Mc(Dc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Ec.set(f,Mc(Ec.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Fc.set(f,Mc(Fc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Pc(a){var b=tc(a.target);if(null!==b){var c=dc(b);if(null!==c)if(b=c.tag,13===b){if(b=ec(c),null!==b){a.blockedOn=b;r.unstable_runWithPriority(a.priority,function(){yc(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function Qc(a){if(null!==a.blockedOn)return!1;var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);if(null!==b){var c=Nc(b);null!==c&&xc(c);a.blockedOn=b;return!1}return!0}\nfunction Sc(a,b,c){Qc(a)&&c.delete(b)}function Tc(){for(zc=!1;0<Ac.length;){var a=Ac[0];if(null!==a.blockedOn){a=Nc(a.blockedOn);null!==a&&wc(a);break}var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);null!==b?a.blockedOn=b:Ac.shift()}null!==Bc&&Qc(Bc)&&(Bc=null);null!==Cc&&Qc(Cc)&&(Cc=null);null!==Dc&&Qc(Dc)&&(Dc=null);Ec.forEach(Sc);Fc.forEach(Sc)}function Uc(a,b){a.blockedOn===b&&(a.blockedOn=null,zc||(zc=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Tc)))}\nfunction Vc(a){function b(b){return Uc(b,a)}if(0<Ac.length){Uc(Ac[0],a);for(var c=1;c<Ac.length;c++){var d=Ac[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Bc&&Uc(Bc,a);null!==Cc&&Uc(Cc,a);null!==Dc&&Uc(Dc,a);Ec.forEach(b);Fc.forEach(b);for(c=0;c<Gc.length;c++)d=Gc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Gc.length&&(c=Gc[0],null===c.blockedOn);)Pc(c),null===c.blockedOn&&Gc.shift()}\nvar Wc={},Yc=new Map,Zc=new Map,$c=[\"abort\",\"abort\",Xb,\"animationEnd\",Yb,\"animationIteration\",Zb,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\n\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",$b,\"transitionEnd\",\"waiting\",\"waiting\"];function ad(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1],f=\"on\"+(e[0].toUpperCase()+e.slice(1));f={phasedRegistrationNames:{bubbled:f,captured:f+\"Capture\"},dependencies:[d],eventPriority:b};Zc.set(d,b);Yc.set(d,f);Wc[e]=f}}\nad(\"blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),0);\nad(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);ad($c,2);for(var bd=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),cd=0;cd<bd.length;cd++)Zc.set(bd[cd],0);\nvar dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function F(a,b){vc(b,a,!1)}function vc(a,b,c){var d=Zc.get(b);switch(void 0===d?2:d){case 0:d=gd.bind(null,b,1,a);break;case 1:d=hd.bind(null,b,1,a);break;default:d=id.bind(null,b,1,a)}c?a.addEventListener(b,d,!0):a.addEventListener(b,d,!1)}function gd(a,b,c,d){Ja||Ha();var e=id,f=Ja;Ja=!0;try{Ga(e,a,b,c,d)}finally{(Ja=f)||La()}}function hd(a,b,c,d){ed(dd,id.bind(null,a,b,c,d))}\nfunction id(a,b,c,d){if(fd)if(0<Ac.length&&-1<Hc.indexOf(a))a=Kc(null,a,b,c,d),Ac.push(a);else{var e=Rc(a,b,c,d);if(null===e)Lc(a,d);else if(-1<Hc.indexOf(a))a=Kc(e,a,b,c,d),Ac.push(a);else if(!Oc(e,a,b,c,d)){Lc(a,d);a=rc(a,d,null,b);try{Ma(sc,a)}finally{qc(a)}}}}\nfunction Rc(a,b,c,d){c=nc(d);c=tc(c);if(null!==c){var e=dc(c);if(null===e)c=null;else{var f=e.tag;if(13===f){c=ec(e);if(null!==c)return c;c=null}else if(3===f){if(e.stateNode.hydrate)return 3===e.tag?e.stateNode.containerInfo:null;c=null}else e!==c&&(c=null)}}a=rc(a,d,c,b);try{Ma(sc,a)}finally{qc(a)}return null}\nvar jd={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},kd=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(jd).forEach(function(a){kd.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);jd[b]=jd[a]})});function ld(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||jd.hasOwnProperty(a)&&jd[a]?(\"\"+b).trim():b+\"px\"}\nfunction md(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ld(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var nd=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction od(a,b){if(b){if(nd[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(u(137,a,\"\"));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(u(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(u(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(u(62,\"\"));}}\nfunction pd(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var qd=Mb.html;function rd(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=cc(a);b=wa[b];for(var d=0;d<b.length;d++)uc(b[d],a,c)}function sd(){}\nfunction td(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function ud(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function vd(a,b){var c=ud(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0<b--;)Td(c[b],\"captured\",a);for(b=0;b<c.length;b++)Td(c[b],\"bubbled\",a)}}\nfunction Vd(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Sd(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a))}function Wd(a){a&&a.dispatchConfig.registrationName&&Vd(a._targetInst,null,a)}function Xd(a){jc(a,Ud)}var Yd=null,Zd=null,$d=null;\nfunction ae(){if($d)return $d;var a,b=Zd,c=b.length,d,e=\"value\"in Yd?Yd.value:Yd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return $d=e.slice(a,1<d?1-d:void 0)}function be(){return!0}function ce(){return!1}\nfunction G(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?be:ce;this.isPropagationStopped=ce;return this}\nn(G.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=be)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=be)},persist:function(){this.isPersistent=be},isPersistent:ce,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=ce;this._dispatchInstances=this._dispatchListeners=null}});G.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\nG.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;de(c);return c};de(G);function ee(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}\nfunction fe(a){if(!(a instanceof this))throw Error(u(279));a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8<ke&&11>=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return me&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar ve={eventTypes:oe,extractEvents:function(a,b,c,d){var e;if(je)b:{switch(a){case \"compositionstart\":var f=oe.compositionStart;break b;case \"compositionend\":f=oe.compositionEnd;break b;case \"compositionupdate\":f=oe.compositionUpdate;break b}f=void 0}else se?qe(a,c)&&(f=oe.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(f=oe.compositionStart);f?(me&&\"ko\"!==c.locale&&(se||f!==oe.compositionStart?f===oe.compositionEnd&&se&&(e=ae()):(Yd=d,Zd=\"value\"in Yd?Yd.value:Yd.textContent,se=!0)),f=ge.getPooled(f,\nb,c,d),e?f.data=e:(e=re(c),null!==e&&(f.data=e)),Xd(f),e=f):e=null;(a=le?te(a,c):ue(a,c))?(b=he.getPooled(oe.beforeInput,b,c,d),b.data=a,Xd(b)):b=null;return null===e?b:null===b?e:[e,b]}},we={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function xe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!we[a.type]:\"textarea\"===b?!0:!1}\nvar ye={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function ze(a,b,c){a=G.getPooled(ye.change,a,b,c);a.type=\"change\";Da(c);Xd(a);return a}var Ae=null,Be=null;function Ce(a){mc(a)}function De(a){var b=Pd(a);if(yb(b))return a}function Ee(a,b){if(\"change\"===a)return b}var Fe=!1;ya&&(Fe=oc(\"input\")&&(!document.documentMode||9<document.documentMode));\nfunction Ge(){Ae&&(Ae.detachEvent(\"onpropertychange\",He),Be=Ae=null)}function He(a){if(\"value\"===a.propertyName&&De(Be))if(a=ze(Be,a,nc(a)),Ja)mc(a);else{Ja=!0;try{Fa(Ce,a)}finally{Ja=!1,La()}}}function Ie(a,b,c){\"focus\"===a?(Ge(),Ae=b,Be=c,Ae.attachEvent(\"onpropertychange\",He)):\"blur\"===a&&Ge()}function Je(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return De(Be)}function Ke(a,b){if(\"click\"===a)return De(b)}function Le(a,b){if(\"input\"===a||\"change\"===a)return De(b)}\nvar Me={eventTypes:ye,_isInputEventSupported:Fe,extractEvents:function(a,b,c,d){var e=b?Pd(b):window,f=e.nodeName&&e.nodeName.toLowerCase();if(\"select\"===f||\"input\"===f&&\"file\"===e.type)var g=Ee;else if(xe(e))if(Fe)g=Le;else{g=Je;var h=Ie}else(f=e.nodeName)&&\"input\"===f.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(g=Ke);if(g&&(g=g(a,b)))return ze(g,c,d);h&&h(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&Db(e,\"number\",e.value)}},Ne=G.extend({view:null,detail:null}),\nOe={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pe(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Oe[a])?!!b[a]:!1}function Qe(){return Pe}\nvar Re=0,Se=0,Te=!1,Ue=!1,Ve=Ne.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Qe,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Re;Re=a.screenX;return Te?\"mousemove\"===a.type?a.screenX-b:0:(Te=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Se;Se=a.screenY;return Ue?\"mousemove\"===a.type?a.screenY-b:0:(Ue=!0,0)}}),We=Ve.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Xe={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},Ye={eventTypes:Xe,extractEvents:function(a,b,c,d,e){var f=\"mouseover\"===a||\"pointerover\"===a,g=\"mouseout\"===a||\"pointerout\"===a;if(f&&0===(e&32)&&(c.relatedTarget||c.fromElement)||!g&&!f)return null;f=d.window===d?d:(f=d.ownerDocument)?f.defaultView||f.parentWindow:window;if(g){if(g=b,b=(b=c.relatedTarget||c.toElement)?tc(b):null,null!==b){var h=dc(b);if(b!==h||5!==b.tag&&6!==b.tag)b=null}}else g=null;if(g===b)return null;if(\"mouseout\"===a||\"mouseover\"===\na){var k=Ve;var l=Xe.mouseLeave;var m=Xe.mouseEnter;var p=\"mouse\"}else if(\"pointerout\"===a||\"pointerover\"===a)k=We,l=Xe.pointerLeave,m=Xe.pointerEnter,p=\"pointer\";a=null==g?f:Pd(g);f=null==b?f:Pd(b);l=k.getPooled(l,g,c,d);l.type=p+\"leave\";l.target=a;l.relatedTarget=f;c=k.getPooled(m,b,c,d);c.type=p+\"enter\";c.target=f;c.relatedTarget=a;d=g;p=b;if(d&&p)a:{k=d;m=p;g=0;for(a=k;a;a=Rd(a))g++;a=0;for(b=m;b;b=Rd(b))a++;for(;0<g-a;)k=Rd(k),g--;for(;0<a-g;)m=Rd(m),a--;for(;g--;){if(k===m||k===m.alternate)break a;\nk=Rd(k);m=Rd(m)}k=null}else k=null;m=k;for(k=[];d&&d!==m;){g=d.alternate;if(null!==g&&g===m)break;k.push(d);d=Rd(d)}for(d=[];p&&p!==m;){g=p.alternate;if(null!==g&&g===m)break;d.push(p);p=Rd(p)}for(p=0;p<k.length;p++)Vd(k[p],\"bubbled\",l);for(p=d.length;0<p--;)Vd(d[p],\"captured\",c);return 0===(e&64)?[l]:[l,c]}};function Ze(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var $e=\"function\"===typeof Object.is?Object.is:Ze,af=Object.prototype.hasOwnProperty;\nfunction bf(a,b){if($e(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!af.call(b,c[d])||!$e(a[c[d]],b[c[d]]))return!1;return!0}\nvar cf=ya&&\"documentMode\"in document&&11>=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;g<f.length;g++)if(!e.has(f[g])){e=!1;break a}e=!0}f=!e}if(f)return null;e=b?Pd(b):window;switch(a){case \"focus\":if(xe(e)||\"true\"===e.contentEditable)ef=e,ff=b,gf=null;break;case \"blur\":gf=ff=ef=null;break;case \"mousedown\":hf=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return hf=!1,jf(c,d);case \"selectionchange\":if(cf)break;\ncase \"keydown\":case \"keyup\":return jf(c,d)}return null}},lf=G.extend({animationName:null,elapsedTime:null,pseudoElement:null}),mf=G.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),nf=Ne.extend({relatedTarget:null});function of(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar pf={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},qf={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},rf=Ne.extend({key:function(a){if(a.key){var b=pf[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=of(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?qf[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Qe,charCode:function(a){return\"keypress\"===\na.type?of(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?of(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),sf=Ve.extend({dataTransfer:null}),tf=Ne.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Qe}),uf=G.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),vf=Ve.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),wf={eventTypes:Wc,extractEvents:function(a,b,c,d){var e=Yc.get(a);if(!e)return null;switch(a){case \"keypress\":if(0===of(c))return null;case \"keydown\":case \"keyup\":a=rf;break;case \"blur\":case \"focus\":a=nf;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=\nVe;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=sf;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=tf;break;case Xb:case Yb:case Zb:a=lf;break;case $b:a=uf;break;case \"scroll\":a=Ne;break;case \"wheel\":a=vf;break;case \"copy\":case \"cut\":case \"paste\":a=mf;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=\nWe;break;default:a=G}b=a.getPooled(e,b,c,d);Xd(b);return b}};if(pa)throw Error(u(101));pa=Array.prototype.slice.call(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));ra();var xf=Nc;la=Qd;ma=xf;na=Pd;xa({SimpleEventPlugin:wf,EnterLeaveEventPlugin:Ye,ChangeEventPlugin:Me,SelectEventPlugin:kf,BeforeInputEventPlugin:ve});var yf=[],zf=-1;function H(a){0>zf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});Wf=null}catch(c){throw null!==Wf&&(Wf=Wf.slice(a+1)),Jf(Of,gg),c;}finally{Yf=!1}}}function hg(a,b,c){c/=10;return 1073741821-(((1073741821-a+b/10)/c|0)+1)*c}function ig(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}var jg={current:null},kg=null,lg=null,mg=null;function ng(){mg=lg=kg=null}\nfunction og(a){var b=jg.current;H(jg);a.type._context._currentValue=b}function pg(a,b){for(;null!==a;){var c=a.alternate;if(a.childExpirationTime<b)a.childExpirationTime=b,null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);else if(null!==c&&c.childExpirationTime<b)c.childExpirationTime=b;else break;a=a.return}}function qg(a,b){kg=a;mg=lg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(a.expirationTime>=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(g<d){var ca={expirationTime:z.expirationTime,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null};null===x?(p=x=\nca,m=k):x=x.next=ca;g>l&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=e;e=c;if(\"function\"!==typeof d)throw Error(u(191,d));d.call(e)}}}var Dg=Wa.ReactCurrentBatchConfig,Eg=(new aa.Component).refs;function Fg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;0===a.expirationTime&&(a.updateQueue.baseState=c)}\nvar Jg={isMounted:function(a){return(a=a._reactInternalFiber)?dc(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.tag=1;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=Gg(),d=Dg.suspense;\nc=Hg(c,a,d);d=wg(c,d);d.tag=2;void 0!==b&&null!==b&&(d.callback=b);xg(a,d);Ig(a,c)}};function Kg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!bf(c,d)||!bf(e,f):!0}\nfunction Lg(a,b,c){var d=!1,e=Af;var f=b.contextType;\"object\"===typeof f&&null!==f?f=sg(f):(e=L(b)?Bf:J.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Cf(a,e):Af);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Jg;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Mg(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Jg.enqueueReplaceState(b,b.state,null)}\nfunction Ng(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Eg;ug(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=sg(f):(f=L(b)?Bf:J.current,e.context=Cf(a,f));zg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Fg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Jg.enqueueReplaceState(e,e.state,null),zg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var Og=Array.isArray;\nfunction Pg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(u(309));var d=c.stateNode}if(!d)throw Error(u(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Eg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(u(284));if(!c._owner)throw Error(u(290,a));}return a}\nfunction Qg(a,b){if(\"textarea\"!==a.type)throw Error(u(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\"));}\nfunction Rg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Sg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Tg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Pg(a,b,c),d.return=a,d;d=Ug(c.type,c.key,c.props,null,a.mode,d);d.ref=Pg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=Vg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Wg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Tg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Za:return c=Ug(b.type,b.key,b.props,null,a.mode,c),c.ref=Pg(a,null,b),c.return=a,c;case $a:return b=Vg(b,a.mode,c),b.return=a,b}if(Og(b)||\nnb(b))return b=Wg(b,a.mode,c,null),b.return=a,b;Qg(a,b)}return null}function x(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Za:return c.key===e?c.type===ab?m(a,b,c.props.children,d,e):k(a,b,c,d):null;case $a:return c.key===e?l(a,b,c,d):null}if(Og(c)||nb(c))return null!==e?null:m(a,b,c,d,null);Qg(a,c)}return null}function z(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Za:return a=a.get(null===d.key?c:d.key)||null,d.type===ab?m(b,a,d.props.children,e,d.key):k(b,a,d,e);case $a:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Og(d)||nb(d))return a=a.get(c)||null,m(b,a,d,e,null);Qg(b,d)}return null}function ca(e,g,h,k){for(var l=null,t=null,m=g,y=g=0,A=null;null!==m&&y<h.length;y++){m.index>y?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;y<h.length;y++)m=p(e,h[y],k),null!==m&&(g=f(m,g,y),null===t?l=m:t.sibling=m,t=m);return l}for(m=d(e,m);y<h.length;y++)A=z(m,e,y,h[y],k),null!==A&&(a&&null!==A.alternate&&m.delete(null===A.key?y:A.key),g=f(A,g,y),null===t?l=A:t.sibling=A,t=A);a&&m.forEach(function(a){return b(e,a)});return l}function D(e,g,h,l){var k=nb(h);if(\"function\"!==typeof k)throw Error(u(150));h=k.call(h);\nif(null==h)throw Error(u(151));for(var m=k=null,t=g,y=g=0,A=null,q=h.next();null!==t&&!q.done;y++,q=h.next()){t.index>y?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!$e(a[c],b[c]))return!1;return!0}\nfunction oh(a,b,c,d,e,f){lh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.expirationTime=0;jh.current=null===a||null===a.memoizedState?ph:qh;a=c(d,e);if(b.expirationTime===lh){f=0;do{b.expirationTime=0;if(!(25>f))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(l<lh){var m={expirationTime:k.expirationTime,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};null===h?(g=h=m,f=d):h=h.next=m;l>N.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97<d?97:d,function(){var d=kh.suspense;kh.suspense=void 0===b?null:b;try{a(!1),c()}finally{kh.suspense=d}})}\nfunction zh(a,b,c){var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e={expirationTime:d,suspenseConfig:e,action:c,eagerReducer:null,eagerState:null,next:null};var f=b.pending;null===f?e.next=e:(e.next=f.next,f.next=e);b.pending=e;f=a.alternate;if(a===N||null!==f&&f===N)mh=!0,e.expirationTime=lh,N.expirationTime=lh;else{if(0===a.expirationTime&&(null===f||0===f.expirationTime)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.eagerReducer=f;e.eagerState=h;if($e(h,g))return}catch(k){}finally{}Ig(a,\nd)}}\nvar sh={readContext:sg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useResponder:Q,useDeferredValue:Q,useTransition:Q},ph={readContext:sg,useCallback:Kh,useContext:sg,useEffect:Eh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Ch(4,2,Hh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Ch(4,2,a,b)},useMemo:function(a,b){var c=th();b=void 0===b?null:b;a=a();c.memoizedState=[a,\nb];return a},useReducer:function(a,b,c){var d=th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=zh.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=th();a={current:a};return b.memoizedState=a},useState:yh,useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=yh(a),d=c[0],e=c[1];Eh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=\nc}},[a,b]);return d},useTransition:function(a){var b=yh(!1),c=b[0];b=b[1];return[Kh(Nh.bind(null,b,a),[b,a]),c]}},qh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:wh,useRef:Bh,useState:function(){return wh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=wh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=\nwh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,b,a),[b,a]),c]}},rh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:xh,useRef:Bh,useState:function(){return xh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=xh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=xh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,\nb,a),[b,a]),c]}},Oh=null,Ph=null,Qh=!1;function Rh(a,b){var c=Sh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction Th(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Uh(a){if(Qh){var b=Ph;if(b){var c=b;if(!Th(a,b)){b=Jd(c.nextSibling);if(!b||!Th(a,b)){a.effectTag=a.effectTag&-1025|2;Qh=!1;Oh=a;return}Rh(Oh,c)}Oh=a;Ph=Jd(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,Qh=!1,Oh=a}}function Vh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Oh=a}\nfunction Wh(a){if(a!==Oh)return!1;if(!Qh)return Vh(a),Qh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Gd(b,a.memoizedProps))for(b=Ph;b;)Rh(a,b),b=Jd(b.nextSibling);Vh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(u(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===Ad){if(0===b){Ph=Jd(a.nextSibling);break a}b--}else c!==zd&&c!==Cd&&c!==Bd||b++}a=a.nextSibling}Ph=null}}else Ph=Oh?Jd(a.stateNode.nextSibling):null;return!0}\nfunction Xh(){Ph=Oh=null;Qh=!1}var Yh=Wa.ReactCurrentOwner,rg=!1;function R(a,b,c,d){b.child=null===a?Yg(b,null,c,d):Xg(b,a.child,c,d)}function Zh(a,b,c,d,e){c=c.render;var f=b.ref;qg(b,e);d=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction ai(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!bi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ci(a,b,g,d,e,f);a=Ug(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:bf,c(e,d)&&a.ref===b.ref))return $h(a,b,f);b.effectTag|=1;a=Sg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ci(a,b,c,d,e,f){return null!==a&&bf(a.memoizedProps,d)&&a.ref===b.ref&&(rg=!1,e<f)?(b.expirationTime=a.expirationTime,$h(a,b,f)):di(a,b,c,d,f)}function ei(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function di(a,b,c,d,e){var f=L(c)?Bf:J.current;f=Cf(b,f);qg(b,e);c=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,c,e);return b.child}\nfunction fi(a,b,c,d,e){if(L(c)){var f=!0;Gf(b)}else f=!1;qg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),Lg(b,c,d),Ng(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l);tg=!1;var x=b.memoizedState;g.state=x;zg(b,d,g,e);k=b.memoizedState;h!==d||x!==k||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),k=b.memoizedState),(h=tg||Kg(b,c,h,d,x,k,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,vg(a,b),h=b.memoizedProps,g.props=b.type===b.elementType?h:ig(b.type,h),k=g.context,l=c.contextType,\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l)),m=c.getDerivedStateFromProps,(p=\"function\"===typeof m||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l),tg=!1,k=b.memoizedState,g.state=k,zg(b,d,g,e),x=b.memoizedState,h!==d||k!==x||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),x=b.memoizedState),(m=tg||Kg(b,c,h,d,k,x,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,l),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,l)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=l,d=m):\n(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),d=!1);return gi(a,b,c,d,f,e)}\nfunction gi(a,b,c,d,e,f){ei(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Hf(b,c,!1),$h(a,b,f);d=b.stateNode;Yh.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Xg(b,a.child,null,f),b.child=Xg(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&Hf(b,c,!0);return b.child}function hi(a){var b=a.stateNode;b.pendingContext?Ef(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Ef(a,b.context,!1);dh(a,b.containerInfo)}\nvar ii={dehydrated:null,retryTime:0};\nfunction ji(a,b,c){var d=b.mode,e=b.pendingProps,f=M.current,g=!1,h;(h=0!==(b.effectTag&64))||(h=0!==(f&2)&&(null===a||null!==a.memoizedState));h?(g=!0,b.effectTag&=-65):null!==a&&null===a.memoizedState||void 0===e.fallback||!0===e.unstable_avoidThisFallback||(f|=1);I(M,f&1);if(null===a){void 0!==e.fallback&&Uh(b);if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=\nb;e.sibling=c;b.memoizedState=ii;b.child=e;return c}d=e.children;b.memoizedState=null;return b.child=Yg(b,null,d,c)}if(null!==a.memoizedState){a=a.child;d=a.sibling;if(g){e=e.fallback;c=Sg(a,a.pendingProps);c.return=b;if(0===(b.mode&2)&&(g=null!==b.memoizedState?b.child.child:b.child,g!==a.child))for(c.child=g;null!==g;)g.return=c,g=g.sibling;d=Sg(d,e);d.return=b;c.sibling=d;c.childExpirationTime=0;b.memoizedState=ii;b.child=c;return d}c=Xg(b,a.child,e.children,c);b.memoizedState=null;return b.child=\nc}a=a.child;if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;e.child=a;null!==a&&(a.return=e);if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=b;e.sibling=c;c.effectTag|=2;e.childExpirationTime=0;b.memoizedState=ii;b.child=e;return c}b.memoizedState=null;return b.child=Xg(b,a,e.children,c)}\nfunction ki(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);pg(a.return,b)}function li(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailExpiration:0,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailExpiration=0,g.tailMode=e,g.lastEffect=f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.effectTag|=64;else{if(null!==a&&0!==(a.effectTag&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&ki(a,c);else if(19===a.tag)ki(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(M,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===hh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);li(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===hh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}li(b,!0,c,null,f,b.lastEffect);break;case \"together\":li(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction $h(a,b,c){null!==a&&(b.dependencies=a.dependencies);var d=b.expirationTime;0!==d&&Bg(d);if(b.childExpirationTime<c)return null;if(null!==a&&b.child!==a.child)throw Error(u(153));if(null!==b.child){a=b.child;c=Sg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Sg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}var ni,oi,pi,qi;\nni=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};oi=function(){};\npi=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;ch($g.current);a=null;switch(c){case \"input\":f=zb(g,f);d=zb(g,d);a=[];break;case \"option\":f=Gb(g,f);d=Gb(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=Ib(g,f);d=Ib(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=sd)}od(c,d);var h,k;c=null;for(h in f)if(!d.hasOwnProperty(h)&&f.hasOwnProperty(h)&&null!=f[h])if(\"style\"===\nh)for(k in g=f[h],g)g.hasOwnProperty(k)&&(c||(c={}),c[k]=\"\");else\"dangerouslySetInnerHTML\"!==h&&\"children\"!==h&&\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&\"autoFocus\"!==h&&(va.hasOwnProperty(h)?a||(a=[]):(a=a||[]).push(h,null));for(h in d){var l=d[h];g=null!=f?f[h]:void 0;if(d.hasOwnProperty(h)&&l!==g&&(null!=l||null!=g))if(\"style\"===h)if(g){for(k in g)!g.hasOwnProperty(k)||l&&l.hasOwnProperty(k)||(c||(c={}),c[k]=\"\");for(k in l)l.hasOwnProperty(k)&&g[k]!==l[k]&&(c||(c={}),\nc[k]=l[k])}else c||(a||(a=[]),a.push(h,c)),c=l;else\"dangerouslySetInnerHTML\"===h?(l=l?l.__html:void 0,g=g?g.__html:void 0,null!=l&&g!==l&&(a=a||[]).push(h,l)):\"children\"===h?g===l||\"string\"!==typeof l&&\"number\"!==typeof l||(a=a||[]).push(h,\"\"+l):\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&(va.hasOwnProperty(h)?(null!=l&&rd(e,h),a||g===l||(a=[])):(a=a||[]).push(h,l))}c&&(a=a||[]).push(\"style\",c);e=a;if(b.updateQueue=e)b.effectTag|=4}};\nqi=function(a,b,c,d){c!==d&&(b.effectTag|=4)};function ri(a,b){switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction si(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return L(b.type)&&Df(),null;case 3:return eh(),H(K),H(J),c=b.stateNode,c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),null!==a&&null!==a.child||!Wh(b)||(b.effectTag|=4),oi(b),null;case 5:gh(b);c=ch(bh.current);var e=b.type;if(null!==a&&null!=b.stateNode)pi(a,b,e,d,c),a.ref!==b.ref&&(b.effectTag|=128);else{if(!d){if(null===b.stateNode)throw Error(u(166));\nreturn null}a=ch($g.current);if(Wh(b)){d=b.stateNode;e=b.type;var f=b.memoizedProps;d[Md]=b;d[Nd]=f;switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<ac.length;a++)F(ac[a],d);break;case \"source\":F(\"error\",d);break;case \"img\":case \"image\":case \"link\":F(\"error\",d);F(\"load\",d);break;case \"form\":F(\"reset\",d);F(\"submit\",d);break;case \"details\":F(\"toggle\",d);break;case \"input\":Ab(d,f);F(\"invalid\",d);rd(c,\"onChange\");break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};F(\"invalid\",d);rd(c,\"onChange\");break;case \"textarea\":Jb(d,f),F(\"invalid\",d),rd(c,\"onChange\")}od(e,f);a=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(a=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(a=[\"children\",\"\"+h]):va.hasOwnProperty(g)&&null!=h&&rd(c,g)}switch(e){case \"input\":xb(d);Eb(d,f,!0);break;case \"textarea\":xb(d);Lb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&\n(d.onclick=sd)}c=a;b.updateQueue=c;null!==c&&(b.effectTag|=4)}else{g=9===c.nodeType?c:c.ownerDocument;a===qd&&(a=Nb(e));a===qd?\"script\"===e?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;h<ac.length;h++)F(ac[h],a);h=d;break;case \"source\":F(\"error\",a);h=d;break;case \"img\":case \"image\":case \"link\":F(\"error\",a);F(\"load\",a);h=d;break;case \"form\":F(\"reset\",a);F(\"submit\",a);h=d;break;case \"details\":F(\"toggle\",a);h=d;break;case \"input\":Ab(a,d);h=zb(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;case \"option\":h=Gb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};h=n({},d,{value:void 0});F(\"invalid\",a);rd(c,\"onChange\");break;case \"textarea\":Jb(a,\nd);h=Ib(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;default:h=d}od(e,h);var k=h;for(f in k)if(k.hasOwnProperty(f)){var l=k[f];\"style\"===f?md(a,l):\"dangerouslySetInnerHTML\"===f?(l=l?l.__html:void 0,null!=l&&Qb(a,l)):\"children\"===f?\"string\"===typeof l?(\"textarea\"!==e||\"\"!==l)&&Rb(a,l):\"number\"===typeof l&&Rb(a,\"\"+l):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(va.hasOwnProperty(f)?null!=l&&rd(c,f):null!=l&&Xa(a,f,l,g))}switch(e){case \"input\":xb(a);Eb(a,d,!1);\nbreak;case \"textarea\":xb(a);Lb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+rb(d.value));break;case \"select\":a.multiple=!!d.multiple;c=d.value;null!=c?Hb(a,!!d.multiple,c,!1):null!=d.defaultValue&&Hb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(a.onclick=sd)}Fd(e,d)&&(b.effectTag|=4)}null!==b.ref&&(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)qi(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(u(166));\nc=ch(bh.current);ch($g.current);Wh(b)?(c=b.stateNode,d=b.memoizedProps,c[Md]=b,c.nodeValue!==d&&(b.effectTag|=4)):(c=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),c[Md]=b,b.stateNode=c)}return null;case 13:H(M);d=b.memoizedState;if(0!==(b.effectTag&64))return b.expirationTime=c,b;c=null!==d;d=!1;null===a?void 0!==b.memoizedProps.fallback&&Wh(b):(e=a.memoizedState,d=null!==e,c||null===e||(e=a.child.sibling,null!==e&&(f=b.firstEffect,null!==f?(b.firstEffect=e,e.nextEffect=f):(b.firstEffect=b.lastEffect=\ne,e.nextEffect=null),e.effectTag=8)));if(c&&!d&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(M.current&1))S===ti&&(S=ui);else{if(S===ti||S===ui)S=vi;0!==wi&&null!==T&&(xi(T,U),yi(T,wi))}if(c||d)b.effectTag|=4;return null;case 4:return eh(),oi(b),null;case 10:return og(b),null;case 17:return L(b.type)&&Df(),null;case 19:H(M);d=b.memoizedState;if(null===d)return null;e=0!==(b.effectTag&64);f=d.rendering;if(null===f)if(e)ri(d,!1);else{if(S!==ti||null!==a&&0!==(a.effectTag&\n64))for(f=b.child;null!==f;){a=hh(f);if(null!==a){b.effectTag|=64;ri(d,!1);e=a.updateQueue;null!==e&&(b.updateQueue=e,b.effectTag|=4);null===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;for(d=b.child;null!==d;)e=d,f=c,e.effectTag&=2,e.nextEffect=null,e.firstEffect=null,e.lastEffect=null,a=e.alternate,null===a?(e.childExpirationTime=0,e.expirationTime=f,e.child=null,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null):(e.childExpirationTime=a.childExpirationTime,\ne.expirationTime=a.expirationTime,e.child=a.child,e.memoizedProps=a.memoizedProps,e.memoizedState=a.memoizedState,e.updateQueue=a.updateQueue,f=a.dependencies,e.dependencies=null===f?null:{expirationTime:f.expirationTime,firstContext:f.firstContext,responders:f.responders}),d=d.sibling;I(M,M.current&1|2);return b.child}f=f.sibling}}else{if(!e)if(a=hh(f),null!==a){if(b.effectTag|=64,e=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.effectTag|=4),ri(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!f.alternate)return b=\nb.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*$f()-d.renderingStartTime>d.tailExpiration&&1<c&&(b.effectTag|=64,e=!0,ri(d,!1),b.expirationTime=b.childExpirationTime=c-1);d.isBackwards?(f.sibling=b.child,b.child=f):(c=d.last,null!==c?c.sibling=f:b.child=f,d.last=f)}return null!==d.tail?(0===d.tailExpiration&&(d.tailExpiration=$f()+500),c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=$f(),c.sibling=null,b=M.current,I(M,e?b&1|2:b&1),c):null}throw Error(u(156,\nb.tag));}function zi(a){switch(a.tag){case 1:L(a.type)&&Df();var b=a.effectTag;return b&4096?(a.effectTag=b&-4097|64,a):null;case 3:eh();H(K);H(J);b=a.effectTag;if(0!==(b&64))throw Error(u(285));a.effectTag=b&-4097|64;return a;case 5:return gh(a),null;case 13:return H(M),b=a.effectTag,b&4096?(a.effectTag=b&-4097|64,a):null;case 19:return H(M),null;case 4:return eh(),null;case 10:return og(a),null;default:return null}}function Ai(a,b){return{value:a,source:b,stack:qb(b)}}\nvar Bi=\"function\"===typeof WeakSet?WeakSet:Set;function Ci(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=qb(c));null!==c&&pb(c.type);b=b.value;null!==a&&1===a.tag&&pb(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function Di(a,b){try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(c){Ei(a,c)}}function Fi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Ei(a,c)}else b.current=null}\nfunction Gi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:ig(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(u(163));}\nfunction Hi(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.destroy;c.destroy=void 0;void 0!==d&&d()}c=c.next}while(c!==b)}}function Ii(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Ji(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:Ii(3,c);return;case 1:a=c.stateNode;if(c.effectTag&4)if(null===b)a.componentDidMount();else{var d=c.elementType===c.type?b.memoizedProps:ig(c.type,b.memoizedProps);a.componentDidUpdate(d,b.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}b=c.updateQueue;null!==b&&Cg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Cg(c,b,a)}return;\ncase 5:a=c.stateNode;null===b&&c.effectTag&4&&Fd(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Vc(c))));return;case 19:case 17:case 20:case 21:return}throw Error(u(163));}\nfunction Ki(a,b,c){\"function\"===typeof Li&&Li(b);switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a.next;cg(97<c?97:c,function(){var a=d;do{var c=a.destroy;if(void 0!==c){var g=b;try{c()}catch(h){Ei(g,h)}}a=a.next}while(a!==d)})}break;case 1:Fi(b);c=b.stateNode;\"function\"===typeof c.componentWillUnmount&&Di(b,c);break;case 5:Fi(b);break;case 4:Mi(a,b,c)}}\nfunction Ni(a){var b=a.alternate;a.return=null;a.child=null;a.memoizedState=null;a.updateQueue=null;a.dependencies=null;a.alternate=null;a.firstEffect=null;a.lastEffect=null;a.pendingProps=null;a.memoizedProps=null;a.stateNode=null;null!==b&&Ni(b)}function Oi(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Pi(a){a:{for(var b=a.return;null!==b;){if(Oi(b)){var c=b;break a}b=b.return}throw Error(u(160));}b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(u(161));}c.effectTag&16&&(Rb(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||Oi(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&2)continue b;\nif(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}d?Qi(a,c,b):Ri(a,c,b)}\nfunction Qi(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=sd));else if(4!==d&&(a=a.child,null!==a))for(Qi(a,b,c),a=a.sibling;null!==a;)Qi(a,b,c),a=a.sibling}\nfunction Ri(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Ri(a,b,c),a=a.sibling;null!==a;)Ri(a,b,c),a=a.sibling}\nfunction Mi(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(u(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag){a:for(var h=a,k=d,l=c,m=k;;)if(Ki(h,m,l),null!==m.child&&4!==m.tag)m.child.return=m,m=m.child;else{if(m===k)break a;for(;null===m.sibling;){if(null===m.return||m.return===k)break a;m=m.return}m.sibling.return=m.return;m=m.sibling}g?(h=\nf,k=d.stateNode,8===h.nodeType?h.parentNode.removeChild(k):h.removeChild(k)):f.removeChild(d.stateNode)}else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ki(a,d,c),null!==d.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Si(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:Hi(3,b);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps,e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[Nd]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&Bb(c,d);pd(a,e);b=pd(a,d);for(e=0;e<f.length;e+=2){var g=f[e],h=f[e+1];\"style\"===g?md(c,h):\"dangerouslySetInnerHTML\"===g?Qb(c,h):\"children\"===g?Rb(c,h):Xa(c,g,h,b)}switch(a){case \"input\":Cb(c,d);break;\ncase \"textarea\":Kb(c,d);break;case \"select\":b=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,a=d.value,null!=a?Hb(c,!!d.multiple,a,!1):b!==!!d.multiple&&(null!=d.defaultValue?Hb(c,!!d.multiple,d.defaultValue,!0):Hb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(u(162));b.stateNode.nodeValue=b.memoizedProps;return;case 3:b=b.stateNode;b.hydrate&&(b.hydrate=!1,Vc(b.containerInfo));return;case 12:return;case 13:c=b;null===b.memoizedState?\nd=!1:(d=!0,c=b.child,Ti=$f());if(null!==c)a:for(a=c;;){if(5===a.tag)f=a.stateNode,d?(f=f.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(f=a.stateNode,e=a.memoizedProps.style,e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null,f.style.display=ld(\"display\",e));else if(6===a.tag)a.stateNode.nodeValue=d?\"\":a.memoizedProps;else if(13===a.tag&&null!==a.memoizedState&&null===a.memoizedState.dehydrated){f=a.child.sibling;f.return=a;a=\nf;continue}else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===c)break;for(;null===a.sibling;){if(null===a.return||a.return===c)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}Ui(b);return;case 19:Ui(b);return;case 17:return}throw Error(u(163));}function Ui(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Bi);b.forEach(function(b){var d=Vi.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nvar Wi=\"function\"===typeof WeakMap?WeakMap:Map;function Xi(a,b,c){c=wg(c,null);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Yi||(Yi=!0,Zi=d);Ci(a,b)};return c}\nfunction $i(a,b,c){c=wg(c,null);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ci(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===aj?aj=new Set([this]):aj.add(this),Ci(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nvar bj=Math.ceil,cj=Wa.ReactCurrentDispatcher,dj=Wa.ReactCurrentOwner,V=0,ej=8,fj=16,gj=32,ti=0,hj=1,ij=2,ui=3,vi=4,jj=5,W=V,T=null,X=null,U=0,S=ti,kj=null,lj=1073741823,mj=1073741823,nj=null,wi=0,oj=!1,Ti=0,pj=500,Y=null,Yi=!1,Zi=null,aj=null,qj=!1,rj=null,sj=90,tj=null,uj=0,vj=null,wj=0;function Gg(){return(W&(fj|gj))!==V?1073741821-($f()/10|0):0!==wj?wj:wj=1073741821-($f()/10|0)}\nfunction Hg(a,b,c){b=b.mode;if(0===(b&2))return 1073741823;var d=ag();if(0===(b&4))return 99===d?1073741823:1073741822;if((W&fj)!==V)return U;if(null!==c)a=hg(a,c.timeoutMs|0||5E3,250);else switch(d){case 99:a=1073741823;break;case 98:a=hg(a,150,100);break;case 97:case 96:a=hg(a,5E3,250);break;case 95:a=2;break;default:throw Error(u(326));}null!==T&&a===U&&--a;return a}\nfunction Ig(a,b){if(50<uj)throw uj=0,vj=null,Error(u(185));a=xj(a,b);if(null!==a){var c=ag();1073741823===b?(W&ej)!==V&&(W&(fj|gj))===V?yj(a):(Z(a),W===V&&gg()):Z(a);(W&4)===V||98!==c&&99!==c||(null===tj?tj=new Map([[a,b]]):(c=tj.get(a),(void 0===c||c>b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}null!==e&&(T===e&&(Bg(b),S===vi&&xi(e,U)),yi(e,b));return e}\nfunction zj(a){var b=a.lastExpiredTime;if(0!==b)return b;b=a.firstPendingTime;if(!Aj(a,b))return b;var c=a.lastPingedTime;a=a.nextKnownPendingLevel;a=c>a?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2<c?2:c);break;case ui:xi(a,c);d=a.lastSuspendedTime;\nc===d&&(a.nextKnownPendingLevel=Ij(e));if(1073741823===lj&&(e=Ti+pj-$f(),10<e)){if(oj){var f=a.lastPingedTime;if(0===f||f>=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c<d&&(d=c));if(10<d){a.timeoutHandle=Hd(Jj.bind(null,a),d);break}Jj(a);break;case jj:if(1073741823!==lj&&null!==nj){f=lj;var g=nj;d=g.busyMinDurationMs|0;0>=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10<d){xi(a,c);a.timeoutHandle=\nHd(Jj.bind(null,a),d);break}}Jj(a);break;default:throw Error(u(329));}Z(a);if(a.callbackNode===b)return Bj.bind(null,a)}}return null}\nfunction yj(a){var b=a.lastExpiredTime;b=0!==b?b:1073741823;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&b===U||Ej(a,b);if(null!==X){var c=W;W|=fj;var d=Fj();do try{Kj();break}catch(e){Hj(a,e)}while(1);ng();W=c;cj.current=d;if(S===hj)throw c=kj,Ej(a,b),xi(a,b),Z(a),c;if(null!==X)throw Error(u(261));a.finishedWork=a.current.alternate;a.finishedExpirationTime=b;T=null;Jj(a);Z(a)}return null}function Lj(){if(null!==tj){var a=tj;tj=null;a.forEach(function(a,c){Cj(c,a);Z(c)});gg()}}\nfunction Mj(a,b){var c=W;W|=1;try{return a(b)}finally{W=c,W===V&&gg()}}function Nj(a,b){var c=W;W&=-2;W|=ej;try{return a(b)}finally{W=c,W===V&&gg()}}\nfunction Ej(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Id(c));if(null!==X)for(c=X.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Df();break;case 3:eh();H(K);H(J);break;case 5:gh(d);break;case 4:eh();break;case 13:H(M);break;case 19:H(M);break;case 10:og(d)}c=c.return}T=a;X=Sg(a.current,null);U=b;S=ti;kj=null;mj=lj=1073741823;nj=null;wi=0;oj=!1}\nfunction Hj(a,b){do{try{ng();jh.current=sh;if(mh)for(var c=N.memoizedState;null!==c;){var d=c.queue;null!==d&&(d.pending=null);c=c.next}lh=0;P=O=N=null;mh=!1;if(null===X||null===X.return)return S=hj,kj=b,X=null;a:{var e=a,f=X.return,g=X,h=b;b=U;g.effectTag|=2048;g.firstEffect=g.lastEffect=null;if(null!==h&&\"object\"===typeof h&&\"function\"===typeof h.then){var k=h;if(0===(g.mode&2)){var l=g.alternate;l?(g.updateQueue=l.updateQueue,g.memoizedState=l.memoizedState,g.expirationTime=l.expirationTime):(g.updateQueue=\nnull,g.memoizedState=null)}var m=0!==(M.current&1),p=f;do{var x;if(x=13===p.tag){var z=p.memoizedState;if(null!==z)x=null!==z.dehydrated?!0:!1;else{var ca=p.memoizedProps;x=void 0===ca.fallback?!1:!0!==ca.unstable_avoidThisFallback?!0:m?!1:!0}}if(x){var D=p.updateQueue;if(null===D){var t=new Set;t.add(k);p.updateQueue=t}else D.add(k);if(0===(p.mode&2)){p.effectTag|=64;g.effectTag&=-2981;if(1===g.tag)if(null===g.alternate)g.tag=17;else{var y=wg(1073741823,null);y.tag=2;xg(g,y)}g.expirationTime=1073741823;\nbreak a}h=void 0;g=b;var A=e.pingCache;null===A?(A=e.pingCache=new Wi,h=new Set,A.set(k,h)):(h=A.get(k),void 0===h&&(h=new Set,A.set(k,h)));if(!h.has(g)){h.add(g);var q=Oj.bind(null,e,k,g);k.then(q,q)}p.effectTag|=4096;p.expirationTime=b;break a}p=p.return}while(null!==p);h=Error((pb(g.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){a<lj&&2<a&&(lj=a);null!==b&&a<mj&&2<a&&(mj=a,nj=b)}function Bg(a){a>wi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1<X.effectTag&&(null!==\na.lastEffect?a.lastEffect.nextEffect=X:a.firstEffect=X,a.lastEffect=X))}else{b=zi(X);if(null!==b)return b.effectTag&=2047,b;null!==a&&(a.firstEffect=a.lastEffect=null,a.effectTag|=2048)}b=X.sibling;if(null!==b)return b;X=a}while(null!==X);S===ti&&(S=jj);return null}function Ij(a){var b=a.expirationTime;a=a.childExpirationTime;return b>a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1<c.effectTag?null!==c.lastEffect?(c.lastEffect.nextEffect=c,e=c.firstEffect):e=c:e=c.firstEffect;if(null!==e){var f=W;W|=gj;dj.current=null;Dd=fd;var g=xd();if(yd(g)){if(\"selectionStart\"in g)var h={start:g.selectionStart,end:g.selectionEnd};else a:{h=(h=g.ownerDocument)&&h.defaultView||window;var k=h.getSelection&&h.getSelection();if(k&&0!==k.rangeCount){h=k.anchorNode;var l=k.anchorOffset,\nm=k.focusNode;k=k.focusOffset;try{h.nodeType,m.nodeType}catch(wb){h=null;break a}var p=0,x=-1,z=-1,ca=0,D=0,t=g,y=null;b:for(;;){for(var A;;){t!==h||0!==l&&3!==t.nodeType||(x=p+l);t!==m||0!==k&&3!==t.nodeType||(z=p+k);3===t.nodeType&&(p+=t.nodeValue.length);if(null===(A=t.firstChild))break;y=t;t=A}for(;;){if(t===g)break b;y===h&&++ca===l&&(x=p);y===m&&++D===k&&(z=p);if(null!==(A=t.nextSibling))break;t=y;y=t.parentNode}t=A}h=-1===x||-1===z?null:{start:x,end:z}}else h=null}h=h||{start:0,end:0}}else h=\nnull;Ed={activeElementDetached:null,focusedElem:g,selectionRange:h};fd=!1;Y=e;do try{Tj()}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=e;do try{for(g=a,h=b;null!==Y;){var q=Y.effectTag;q&16&&Rb(Y.stateNode,\"\");if(q&128){var B=Y.alternate;if(null!==B){var w=B.ref;null!==w&&(\"function\"===typeof w?w(null):w.current=null)}}switch(q&1038){case 2:Pi(Y);Y.effectTag&=-3;break;case 6:Pi(Y);Y.effectTag&=-3;Si(Y.alternate,Y);break;case 1024:Y.effectTag&=-1025;break;case 1028:Y.effectTag&=\n-1025;Si(Y.alternate,Y);break;case 4:Si(Y.alternate,Y);break;case 8:l=Y,Mi(g,l,h),Ni(l)}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);w=Ed;B=xd();q=w.focusedElem;h=w.selectionRange;if(B!==q&&q&&q.ownerDocument&&wd(q.ownerDocument.documentElement,q)){null!==h&&yd(q)&&(B=h.start,w=h.end,void 0===w&&(w=B),\"selectionStart\"in q?(q.selectionStart=B,q.selectionEnd=Math.min(w,q.value.length)):(w=(B=q.ownerDocument||document)&&B.defaultView||window,w.getSelection&&\n(w=w.getSelection(),l=q.textContent.length,g=Math.min(h.start,l),h=void 0===h.end?g:Math.min(h.end,l),!w.extend&&g>h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q<B.length;q++)w=B[q],w.element.scrollLeft=w.left,w.element.scrollTop=w.top}fd=!!Dd;Ed=Dd=null;a.current=c;Y=e;do try{for(q=a;null!==Y;){var ub=Y.effectTag;ub&36&&Ji(q,Y.alternate,Y);if(ub&128){B=void 0;var vb=Y.ref;if(null!==vb){var Xc=Y.stateNode;switch(Y.tag){case 5:B=Xc;break;default:B=Xc}\"function\"===typeof vb?vb(B):vb.current=B}}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=\nnull;Vf();W=f}else a.current=c;if(qj)qj=!1,rj=a,sj=b;else for(Y=e;null!==Y;)b=Y.nextEffect,Y.nextEffect=null,Y=b;b=a.firstPendingTime;0===b&&(aj=null);1073741823===b?a===vj?uj++:(uj=0,vj=a):uj=0;\"function\"===typeof Uj&&Uj(c.stateNode,d);Z(a);if(Yi)throw Yi=!1,a=Zi,Zi=null,a;if((W&ej)!==V)return null;gg();return null}function Tj(){for(;null!==Y;){var a=Y.effectTag;0!==(a&256)&&Gi(Y.alternate,Y);0===(a&512)||qj||(qj=!0,dg(97,function(){Dj();return null}));Y=Y.nextEffect}}\nfunction Dj(){if(90!==sj){var a=97<sj?97:sj;sj=90;return cg(a,Vj)}}function Vj(){if(null===rj)return!1;var a=rj;rj=null;if((W&(fj|gj))!==V)throw Error(u(331));var b=W;W|=gj;for(a=a.current.firstEffect;null!==a;){try{var c=a;if(0!==(c.effectTag&512))switch(c.tag){case 0:case 11:case 15:case 22:Hi(5,c),Ii(5,c)}}catch(d){if(null===a)throw Error(u(330));Ei(a,d)}c=a.nextEffect;a.nextEffect=null;a=c}W=b;gg();return!0}\nfunction Wj(a,b,c){b=Ai(c,b);b=Xi(a,b,1073741823);xg(a,b);a=xj(a,1073741823);null!==a&&Z(a)}function Ei(a,b){if(3===a.tag)Wj(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){Wj(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===aj||!aj.has(d))){a=Ai(b,a);a=$i(c,a,1073741823);xg(c,a);c=xj(c,1073741823);null!==c&&Z(c);break}}c=c.return}}\nfunction Oj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);T===a&&U===c?S===vi||S===ui&&1073741823===lj&&$f()-Ti<pj?Ej(a,U):oj=!0:Aj(a,c)&&(b=a.lastPingedTime,0!==b&&b<c||(a.lastPingedTime=c,Z(a)))}function Vi(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=Gg(),b=Hg(b,a,null));a=xj(a,b);null!==a&&Z(a)}var Rj;\nRj=function(a,b,c){var d=b.expirationTime;if(null!==a){var e=b.pendingProps;if(a.memoizedProps!==e||K.current)rg=!0;else{if(d<c){rg=!1;switch(b.tag){case 3:hi(b);Xh();break;case 5:fh(b);if(b.mode&4&&1!==c&&e.hidden)return b.expirationTime=b.childExpirationTime=1,null;break;case 1:L(b.type)&&Gf(b);break;case 4:dh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;e=b.type._context;I(jg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;\nif(0!==d&&d>=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime<c&&(h.expirationTime=c);l=h.alternate;null!==l&&l.expirationTime<c&&(l.expirationTime=c);pg(h.return,c);k.expirationTime<c&&(k.expirationTime=c);break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=\ng}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,qg(b,c),e=sg(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,R(a,b,d,c),b.child;case 14:return e=b.type,f=ig(e,b.pendingProps),f=ig(e.type,f),ai(a,b,e,f,d,c);case 15:return ci(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,L(d)?(a=!0,Gf(b)):a=!1,qg(b,c),Lg(b,d,e),Ng(b,d,e,c),gi(null,\nb,d,!0,a,c);case 19:return mi(a,b,c)}throw Error(u(156,b.tag));};var Uj=null,Li=null;function Yj(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Uj=function(a){try{b.onCommitFiberRoot(c,a,void 0,64===(a.current.effectTag&64))}catch(e){}};Li=function(a){try{b.onCommitFiberUnmount(c,a)}catch(e){}}}catch(d){}return!0}\nfunction Zj(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function Sh(a,b,c,d){return new Zj(a,b,c,d)}\nfunction bi(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Xj(a){if(\"function\"===typeof a)return bi(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===gb)return 11;if(a===jb)return 14}return 2}\nfunction Sg(a,b){var c=a.alternate;null===c?(c=Sh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{expirationTime:b.expirationTime,\nfirstContext:b.firstContext,responders:b.responders};c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Ug(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bi(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ab:return Wg(c.children,e,f,b);case fb:g=8;e|=7;break;case bb:g=8;e|=1;break;case cb:return a=Sh(12,c,b,e|8),a.elementType=cb,a.type=cb,a.expirationTime=f,a;case hb:return a=Sh(13,c,b,e),a.type=hb,a.elementType=hb,a.expirationTime=f,a;case ib:return a=Sh(19,c,b,e),a.elementType=ib,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case db:g=\n10;break a;case eb:g=9;break a;case gb:g=11;break a;case jb:g=14;break a;case kb:g=16;d=null;break a;case lb:g=22;break a}throw Error(u(130,null==a?a:typeof a,\"\"));}b=Sh(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Wg(a,b,c,d){a=Sh(7,a,d,b);a.expirationTime=c;return a}function Tg(a,b,c){a=Sh(6,a,null,b);a.expirationTime=c;return a}\nfunction Vg(a,b,c){b=Sh(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction ak(a,b,c){this.tag=b;this.current=null;this.containerInfo=a;this.pingCache=this.pendingChildren=null;this.finishedExpirationTime=0;this.finishedWork=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=90;this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}\nfunction Aj(a,b){var c=a.firstSuspendedTime;a=a.lastSuspendedTime;return 0!==c&&c>=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;c<b&&(a.firstSuspendedTime=b);if(d>b||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime<b&&(a.retryTime=b)}function ek(a,b){dk(a,b);(a=a.alternate)&&dk(a,b)}\nfunction fk(a,b,c){c=null!=c&&!0===c.hydrate;var d=new ak(a,b,c),e=Sh(3,null,null,2===b?7:1===b?3:0);d.current=e;e.stateNode=d;ug(e);a[Od]=d.current;c&&0!==b&&Jc(a,9===a.nodeType?a:a.ownerDocument);this._internalRoot=d}fk.prototype.render=function(a){bk(a,this._internalRoot,null,null)};fk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;bk(null,a,null,function(){b[Od]=null})};\nfunction gk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function hk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new fk(a,0,b?{hydrate:!0}:void 0)}\nfunction ik(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=ck(g);h.call(a)}}bk(b,g,a,e)}else{f=c._reactRootContainer=hk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=ck(g);k.call(a)}}Nj(function(){bk(b,g,a,e)})}return ck(g)}function jk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:$a,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nwc=function(a){if(13===a.tag){var b=hg(Gg(),150,100);Ig(a,b);ek(a,b)}};xc=function(a){13===a.tag&&(Ig(a,3),ek(a,3))};yc=function(a){if(13===a.tag){var b=Gg();b=Hg(b,a,null);Ig(a,b);ek(a,b)}};\nza=function(a,b,c){switch(b){case \"input\":Cb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Qd(d);if(!e)throw Error(u(90));yb(d);Cb(d,e)}}}break;case \"textarea\":Kb(a,c);break;case \"select\":b=c.value,null!=b&&Hb(a,!!c.multiple,b,!1)}};Fa=Mj;\nGa=function(a,b,c,d,e){var f=W;W|=4;try{return cg(98,a.bind(null,b,c,d,e))}finally{W=f,W===V&&gg()}};Ha=function(){(W&(1|fj|gj))===V&&(Lj(),Dj())};Ia=function(a,b){var c=W;W|=2;try{return a(b)}finally{W=c,W===V&&gg()}};function kk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!gk(b))throw Error(u(200));return jk(a,b,null,c)}var lk={Events:[Nc,Pd,Qd,xa,ta,Xd,function(a){jc(a,Wd)},Da,Ea,id,mc,Dj,{current:!1}]};\n(function(a){var b=a.findFiberByHostInstance;return Yj(n({},a,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Wa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hc(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))})({findFiberByHostInstance:tc,bundleType:0,version:\"16.14.0\",\nrendererPackageName:\"react-dom\"});exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lk;exports.createPortal=kk;exports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;if(void 0===b){if(\"function\"===typeof a.render)throw Error(u(188));throw Error(u(268,Object.keys(a)));}a=hc(b);a=null===a?null:a.stateNode;return a};\nexports.flushSync=function(a,b){if((W&(fj|gj))!==V)throw Error(u(187));var c=W;W|=1;try{return cg(99,a.bind(null,b))}finally{W=c,gg()}};exports.hydrate=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!0,c)};exports.render=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!1,c)};\nexports.unmountComponentAtNode=function(a){if(!gk(a))throw Error(u(40));return a._reactRootContainer?(Nj(function(){ik(null,null,a,!1,function(){a._reactRootContainer=null;a[Od]=null})}),!0):!1};exports.unstable_batchedUpdates=Mj;exports.unstable_createPortal=function(a,b){return kk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!gk(c))throw Error(u(200));if(null==a||void 0===a._reactInternalFiber)throw Error(u(38));return ik(a,b,c,!1,d)};exports.version=\"16.14.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","/* (ignored) */","// This file was generated. Do not modify manually!\nvar astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\n// This file was generated. Do not modify manually!\nvar astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191];\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7cd\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7dc\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range.\n\n// Reserved word lists for various dialects of the language\n\nvar reservedWords = {\n  3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n  5: \"class enum extends super const export import\",\n  6: \"enum\",\n  strict: \"implements interface let package private protected public static yield\",\n  strictBind: \"eval arguments\"\n};\n\n// And the keywords\n\nvar ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\nvar keywords$1 = {\n  5: ecma5AndLessKeywords,\n  \"5module\": ecma5AndLessKeywords + \" export import\",\n  6: ecma5AndLessKeywords + \" const class extends export import super\"\n};\n\nvar keywordRelationalOperator = /^in(stanceof)?$/;\n\n// ## Character categories\n\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n  var pos = 0x10000;\n  for (var i = 0; i < set.length; i += 2) {\n    pos += set[i];\n    if (pos > code) { return false }\n    pos += set[i + 1];\n    if (pos >= code) { return true }\n  }\n  return false\n}\n\n// Test whether a given character code starts an identifier.\n\nfunction isIdentifierStart(code, astral) {\n  if (code < 65) { return code === 36 }\n  if (code < 91) { return true }\n  if (code < 97) { return code === 95 }\n  if (code < 123) { return true }\n  if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) }\n  if (astral === false) { return false }\n  return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nfunction isIdentifierChar(code, astral) {\n  if (code < 48) { return code === 36 }\n  if (code < 58) { return true }\n  if (code < 65) { return false }\n  if (code < 91) { return true }\n  if (code < 97) { return code === 95 }\n  if (code < 123) { return true }\n  if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) }\n  if (astral === false) { return false }\n  return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar TokenType = function TokenType(label, conf) {\n  if ( conf === void 0 ) conf = {};\n\n  this.label = label;\n  this.keyword = conf.keyword;\n  this.beforeExpr = !!conf.beforeExpr;\n  this.startsExpr = !!conf.startsExpr;\n  this.isLoop = !!conf.isLoop;\n  this.isAssign = !!conf.isAssign;\n  this.prefix = !!conf.prefix;\n  this.postfix = !!conf.postfix;\n  this.binop = conf.binop || null;\n  this.updateContext = null;\n};\n\nfunction binop(name, prec) {\n  return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nvar beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true};\n\n// Map keyword names to token types.\n\nvar keywords = {};\n\n// Succinct definitions of keyword token types\nfunction kw(name, options) {\n  if ( options === void 0 ) options = {};\n\n  options.keyword = name;\n  return keywords[name] = new TokenType(name, options)\n}\n\nvar types$1 = {\n  num: new TokenType(\"num\", startsExpr),\n  regexp: new TokenType(\"regexp\", startsExpr),\n  string: new TokenType(\"string\", startsExpr),\n  name: new TokenType(\"name\", startsExpr),\n  privateId: new TokenType(\"privateId\", startsExpr),\n  eof: new TokenType(\"eof\"),\n\n  // Punctuation token types.\n  bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n  bracketR: new TokenType(\"]\"),\n  braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n  braceR: new TokenType(\"}\"),\n  parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n  parenR: new TokenType(\")\"),\n  comma: new TokenType(\",\", beforeExpr),\n  semi: new TokenType(\";\", beforeExpr),\n  colon: new TokenType(\":\", beforeExpr),\n  dot: new TokenType(\".\"),\n  question: new TokenType(\"?\", beforeExpr),\n  questionDot: new TokenType(\"?.\"),\n  arrow: new TokenType(\"=>\", beforeExpr),\n  template: new TokenType(\"template\"),\n  invalidTemplate: new TokenType(\"invalidTemplate\"),\n  ellipsis: new TokenType(\"...\", beforeExpr),\n  backQuote: new TokenType(\"`\", startsExpr),\n  dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n  // Operators. These carry several kinds of properties to help the\n  // parser use them properly (the presence of these properties is\n  // what categorizes them as operators).\n  //\n  // `binop`, when present, specifies that this operator is a binary\n  // operator, and will refer to its precedence.\n  //\n  // `prefix` and `postfix` mark the operator as a prefix or postfix\n  // unary operator.\n  //\n  // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n  // binary operators with a very low precedence, that should result\n  // in AssignmentExpression nodes.\n\n  eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n  assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n  incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n  prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n  logicalOR: binop(\"||\", 1),\n  logicalAND: binop(\"&&\", 2),\n  bitwiseOR: binop(\"|\", 3),\n  bitwiseXOR: binop(\"^\", 4),\n  bitwiseAND: binop(\"&\", 5),\n  equality: binop(\"==/!=/===/!==\", 6),\n  relational: binop(\"</>/<=/>=\", 7),\n  bitShift: binop(\"<</>>/>>>\", 8),\n  plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n  modulo: binop(\"%\", 10),\n  star: binop(\"*\", 10),\n  slash: binop(\"/\", 10),\n  starstar: new TokenType(\"**\", {beforeExpr: true}),\n  coalesce: binop(\"??\", 1),\n\n  // Keyword token types.\n  _break: kw(\"break\"),\n  _case: kw(\"case\", beforeExpr),\n  _catch: kw(\"catch\"),\n  _continue: kw(\"continue\"),\n  _debugger: kw(\"debugger\"),\n  _default: kw(\"default\", beforeExpr),\n  _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n  _else: kw(\"else\", beforeExpr),\n  _finally: kw(\"finally\"),\n  _for: kw(\"for\", {isLoop: true}),\n  _function: kw(\"function\", startsExpr),\n  _if: kw(\"if\"),\n  _return: kw(\"return\", beforeExpr),\n  _switch: kw(\"switch\"),\n  _throw: kw(\"throw\", beforeExpr),\n  _try: kw(\"try\"),\n  _var: kw(\"var\"),\n  _const: kw(\"const\"),\n  _while: kw(\"while\", {isLoop: true}),\n  _with: kw(\"with\"),\n  _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n  _this: kw(\"this\", startsExpr),\n  _super: kw(\"super\", startsExpr),\n  _class: kw(\"class\", startsExpr),\n  _extends: kw(\"extends\", beforeExpr),\n  _export: kw(\"export\"),\n  _import: kw(\"import\", startsExpr),\n  _null: kw(\"null\", startsExpr),\n  _true: kw(\"true\", startsExpr),\n  _false: kw(\"false\", startsExpr),\n  _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n  _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n  _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n  _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n  _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n};\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\nvar lineBreakG = new RegExp(lineBreak.source, \"g\");\n\nfunction isNewLine(code) {\n  return code === 10 || code === 13 || code === 0x2028 || code === 0x2029\n}\n\nfunction nextLineBreak(code, from, end) {\n  if ( end === void 0 ) end = code.length;\n\n  for (var i = from; i < end; i++) {\n    var next = code.charCodeAt(i);\n    if (isNewLine(next))\n      { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 }\n  }\n  return -1\n}\n\nvar nonASCIIwhitespace = /[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n\nvar skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nvar ref = Object.prototype;\nvar hasOwnProperty = ref.hasOwnProperty;\nvar toString = ref.toString;\n\nvar hasOwn = Object.hasOwn || (function (obj, propName) { return (\n  hasOwnProperty.call(obj, propName)\n); });\n\nvar isArray = Array.isArray || (function (obj) { return (\n  toString.call(obj) === \"[object Array]\"\n); });\n\nvar regexpCache = Object.create(null);\n\nfunction wordsRegexp(words) {\n  return regexpCache[words] || (regexpCache[words] = new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\"))\n}\n\nfunction codePointToString(code) {\n  // UTF-16 Decoding\n  if (code <= 0xFFFF) { return String.fromCharCode(code) }\n  code -= 0x10000;\n  return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\nvar loneSurrogate = /(?:[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/;\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = function Position(line, col) {\n  this.line = line;\n  this.column = col;\n};\n\nPosition.prototype.offset = function offset (n) {\n  return new Position(this.line, this.column + n)\n};\n\nvar SourceLocation = function SourceLocation(p, start, end) {\n  this.start = start;\n  this.end = end;\n  if (p.sourceFile !== null) { this.source = p.sourceFile; }\n};\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nfunction getLineInfo(input, offset) {\n  for (var line = 1, cur = 0;;) {\n    var nextBreak = nextLineBreak(input, cur, offset);\n    if (nextBreak < 0) { return new Position(line, offset - cur) }\n    ++line;\n    cur = nextBreak;\n  }\n}\n\n// A second argument must be given to configure the parser process.\n// These options are recognized (only `ecmaVersion` is required):\n\nvar defaultOptions = {\n  // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n  // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10\n  // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `\"latest\"`\n  // (the latest version the library supports). This influences\n  // support for strict mode, the set of reserved words, and support\n  // for new syntax features.\n  ecmaVersion: null,\n  // `sourceType` indicates the mode the code should be parsed in.\n  // Can be either `\"script\"` or `\"module\"`. This influences global\n  // strict mode and parsing of `import` and `export` declarations.\n  sourceType: \"script\",\n  // `onInsertedSemicolon` can be a callback that will be called when\n  // a semicolon is automatically inserted. It will be passed the\n  // position of the inserted semicolon as an offset, and if\n  // `locations` is enabled, it is given the location as a `{line,\n  // column}` object as second argument.\n  onInsertedSemicolon: null,\n  // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n  // trailing commas.\n  onTrailingComma: null,\n  // By default, reserved words are only enforced if ecmaVersion >= 5.\n  // Set `allowReserved` to a boolean value to explicitly turn this on\n  // an off. When this option has the value \"never\", reserved words\n  // and keywords can also not be used as property names.\n  allowReserved: null,\n  // When enabled, a return at the top level is not considered an\n  // error.\n  allowReturnOutsideFunction: false,\n  // When enabled, import/export statements are not constrained to\n  // appearing at the top of the program, and an import.meta expression\n  // in a script isn't considered an error.\n  allowImportExportEverywhere: false,\n  // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022.\n  // When enabled, await identifiers are allowed to appear at the top-level scope,\n  // but they are still not allowed in non-async functions.\n  allowAwaitOutsideFunction: null,\n  // When enabled, super identifiers are not constrained to\n  // appearing in methods and do not raise an error when they appear elsewhere.\n  allowSuperOutsideMethod: null,\n  // When enabled, hashbang directive in the beginning of file is\n  // allowed and treated as a line comment. Enabled by default when\n  // `ecmaVersion` >= 2023.\n  allowHashBang: false,\n  // By default, the parser will verify that private properties are\n  // only used in places where they are valid and have been declared.\n  // Set this to false to turn such checks off.\n  checkPrivateFields: true,\n  // When `locations` is on, `loc` properties holding objects with\n  // `start` and `end` properties in `{line, column}` form (with\n  // line being 1-based and column 0-based) will be attached to the\n  // nodes.\n  locations: false,\n  // A function can be passed as `onToken` option, which will\n  // cause Acorn to call that function with object in the same\n  // format as tokens returned from `tokenizer().getToken()`. Note\n  // that you are not allowed to call the parser from the\n  // callback—that will corrupt its internal state.\n  onToken: null,\n  // A function can be passed as `onComment` option, which will\n  // cause Acorn to call that function with `(block, text, start,\n  // end)` parameters whenever a comment is skipped. `block` is a\n  // boolean indicating whether this is a block (`/* */`) comment,\n  // `text` is the content of the comment, and `start` and `end` are\n  // character offsets that denote the start and end of the comment.\n  // When the `locations` option is on, two more parameters are\n  // passed, the full `{line, column}` locations of the start and\n  // end of the comments. Note that you are not allowed to call the\n  // parser from the callback—that will corrupt its internal state.\n  // When this option has an array as value, objects representing the\n  // comments are pushed to it.\n  onComment: null,\n  // Nodes have their start and end characters offsets recorded in\n  // `start` and `end` properties (directly on the node, rather than\n  // the `loc` object, which holds line/column data. To also add a\n  // [semi-standardized][range] `range` property holding a `[start,\n  // end]` array with the same numbers, set the `ranges` option to\n  // `true`.\n  //\n  // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n  ranges: false,\n  // It is possible to parse multiple files into a single AST by\n  // passing the tree produced by parsing the first file as\n  // `program` option in subsequent parses. This will add the\n  // toplevel forms of the parsed file to the `Program` (top) node\n  // of an existing parse tree.\n  program: null,\n  // When `locations` is on, you can pass this to record the source\n  // file in every node's `loc` object.\n  sourceFile: null,\n  // This value, if given, is stored in every node, whether\n  // `locations` is on or off.\n  directSourceFile: null,\n  // When enabled, parenthesized expressions are represented by\n  // (non-standard) ParenthesizedExpression nodes\n  preserveParens: false\n};\n\n// Interpret and default an options object\n\nvar warnedAboutEcmaVersion = false;\n\nfunction getOptions(opts) {\n  var options = {};\n\n  for (var opt in defaultOptions)\n    { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; }\n\n  if (options.ecmaVersion === \"latest\") {\n    options.ecmaVersion = 1e8;\n  } else if (options.ecmaVersion == null) {\n    if (!warnedAboutEcmaVersion && typeof console === \"object\" && console.warn) {\n      warnedAboutEcmaVersion = true;\n      console.warn(\"Since Acorn 8.0.0, options.ecmaVersion is required.\\nDefaulting to 2020, but this will stop working in the future.\");\n    }\n    options.ecmaVersion = 11;\n  } else if (options.ecmaVersion >= 2015) {\n    options.ecmaVersion -= 2009;\n  }\n\n  if (options.allowReserved == null)\n    { options.allowReserved = options.ecmaVersion < 5; }\n\n  if (!opts || opts.allowHashBang == null)\n    { options.allowHashBang = options.ecmaVersion >= 14; }\n\n  if (isArray(options.onToken)) {\n    var tokens = options.onToken;\n    options.onToken = function (token) { return tokens.push(token); };\n  }\n  if (isArray(options.onComment))\n    { options.onComment = pushComment(options, options.onComment); }\n\n  return options\n}\n\nfunction pushComment(options, array) {\n  return function(block, text, start, end, startLoc, endLoc) {\n    var comment = {\n      type: block ? \"Block\" : \"Line\",\n      value: text,\n      start: start,\n      end: end\n    };\n    if (options.locations)\n      { comment.loc = new SourceLocation(this, startLoc, endLoc); }\n    if (options.ranges)\n      { comment.range = [start, end]; }\n    array.push(comment);\n  }\n}\n\n// Each scope gets a bitset that may contain these flags\nvar\n    SCOPE_TOP = 1,\n    SCOPE_FUNCTION = 2,\n    SCOPE_ASYNC = 4,\n    SCOPE_GENERATOR = 8,\n    SCOPE_ARROW = 16,\n    SCOPE_SIMPLE_CATCH = 32,\n    SCOPE_SUPER = 64,\n    SCOPE_DIRECT_SUPER = 128,\n    SCOPE_CLASS_STATIC_BLOCK = 256,\n    SCOPE_CLASS_FIELD_INIT = 512,\n    SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK;\n\nfunction functionFlags(async, generator) {\n  return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n}\n\n// Used in checkLVal* and declareName to determine the type of a binding\nvar\n    BIND_NONE = 0, // Not a binding\n    BIND_VAR = 1, // Var-style binding\n    BIND_LEXICAL = 2, // Let- or const-style binding\n    BIND_FUNCTION = 3, // Function declaration\n    BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n    BIND_OUTSIDE = 5; // Special case for function names as bound inside the function\n\nvar Parser = function Parser(options, input, startPos) {\n  this.options = options = getOptions(options);\n  this.sourceFile = options.sourceFile;\n  this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === \"module\" ? \"5module\" : 5]);\n  var reserved = \"\";\n  if (options.allowReserved !== true) {\n    reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3];\n    if (options.sourceType === \"module\") { reserved += \" await\"; }\n  }\n  this.reservedWords = wordsRegexp(reserved);\n  var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict;\n  this.reservedWordsStrict = wordsRegexp(reservedStrict);\n  this.reservedWordsStrictBind = wordsRegexp(reservedStrict + \" \" + reservedWords.strictBind);\n  this.input = String(input);\n\n  // Used to signal to callers of `readWord1` whether the word\n  // contained any escape sequences. This is needed because words with\n  // escape sequences must not be interpreted as keywords.\n  this.containsEsc = false;\n\n  // Set up token state\n\n  // The current position of the tokenizer in the input.\n  if (startPos) {\n    this.pos = startPos;\n    this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n    this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length;\n  } else {\n    this.pos = this.lineStart = 0;\n    this.curLine = 1;\n  }\n\n  // Properties of the current token:\n  // Its type\n  this.type = types$1.eof;\n  // For tokens that include more information than their type, the value\n  this.value = null;\n  // Its start and end offset\n  this.start = this.end = this.pos;\n  // And, if locations are used, the {line, column} object\n  // corresponding to those offsets\n  this.startLoc = this.endLoc = this.curPosition();\n\n  // Position information for the previous token\n  this.lastTokEndLoc = this.lastTokStartLoc = null;\n  this.lastTokStart = this.lastTokEnd = this.pos;\n\n  // The context stack is used to superficially track syntactic\n  // context to predict whether a regular expression is allowed in a\n  // given position.\n  this.context = this.initialContext();\n  this.exprAllowed = true;\n\n  // Figure out if it's a module code.\n  this.inModule = options.sourceType === \"module\";\n  this.strict = this.inModule || this.strictDirective(this.pos);\n\n  // Used to signify the start of a potential arrow function\n  this.potentialArrowAt = -1;\n  this.potentialArrowInForAwait = false;\n\n  // Positions to delayed-check that yield/await does not exist in default parameters.\n  this.yieldPos = this.awaitPos = this.awaitIdentPos = 0;\n  // Labels in scope.\n  this.labels = [];\n  // Thus-far undefined exports.\n  this.undefinedExports = Object.create(null);\n\n  // If enabled, skip leading hashbang line.\n  if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n    { this.skipLineComment(2); }\n\n  // Scope tracking for duplicate variable names (see scope.js)\n  this.scopeStack = [];\n  this.enterScope(SCOPE_TOP);\n\n  // For RegExp validation\n  this.regexpState = null;\n\n  // The stack of private names.\n  // Each element has two properties: 'declared' and 'used'.\n  // When it exited from the outermost class definition, all used private names must be declared.\n  this.privateNameStack = [];\n};\n\nvar prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },inClassStaticBlock: { configurable: true } };\n\nParser.prototype.parse = function parse () {\n  var node = this.options.program || this.startNode();\n  this.nextToken();\n  return this.parseTopLevel(node)\n};\n\nprototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 };\n\nprototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 };\n\nprototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 };\n\nprototypeAccessors.canAwait.get = function () {\n  for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n    var ref = this.scopeStack[i];\n      var flags = ref.flags;\n    if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT)) { return false }\n    if (flags & SCOPE_FUNCTION) { return (flags & SCOPE_ASYNC) > 0 }\n  }\n  return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction\n};\n\nprototypeAccessors.allowSuper.get = function () {\n  var ref = this.currentThisScope();\n    var flags = ref.flags;\n  return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod\n};\n\nprototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 };\n\nprototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) };\n\nprototypeAccessors.allowNewDotTarget.get = function () {\n  for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n    var ref = this.scopeStack[i];\n      var flags = ref.flags;\n    if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) ||\n        ((flags & SCOPE_FUNCTION) && !(flags & SCOPE_ARROW))) { return true }\n  }\n  return false\n};\n\nprototypeAccessors.inClassStaticBlock.get = function () {\n  return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0\n};\n\nParser.extend = function extend () {\n    var plugins = [], len = arguments.length;\n    while ( len-- ) plugins[ len ] = arguments[ len ];\n\n  var cls = this;\n  for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); }\n  return cls\n};\n\nParser.parse = function parse (input, options) {\n  return new this(options, input).parse()\n};\n\nParser.parseExpressionAt = function parseExpressionAt (input, pos, options) {\n  var parser = new this(options, input, pos);\n  parser.nextToken();\n  return parser.parseExpression()\n};\n\nParser.tokenizer = function tokenizer (input, options) {\n  return new this(options, input)\n};\n\nObject.defineProperties( Parser.prototype, prototypeAccessors );\n\nvar pp$9 = Parser.prototype;\n\n// ## Parser utilities\n\nvar literal = /^(?:'((?:\\\\[^]|[^'\\\\])*?)'|\"((?:\\\\[^]|[^\"\\\\])*?)\")/;\npp$9.strictDirective = function(start) {\n  if (this.options.ecmaVersion < 5) { return false }\n  for (;;) {\n    // Try to find string literal.\n    skipWhiteSpace.lastIndex = start;\n    start += skipWhiteSpace.exec(this.input)[0].length;\n    var match = literal.exec(this.input.slice(start));\n    if (!match) { return false }\n    if ((match[1] || match[2]) === \"use strict\") {\n      skipWhiteSpace.lastIndex = start + match[0].length;\n      var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length;\n      var next = this.input.charAt(end);\n      return next === \";\" || next === \"}\" ||\n        (lineBreak.test(spaceAfter[0]) &&\n         !(/[(`.[+\\-/*%<>=,?^&]/.test(next) || next === \"!\" && this.input.charAt(end + 1) === \"=\"))\n    }\n    start += match[0].length;\n\n    // Skip semicolon, if any.\n    skipWhiteSpace.lastIndex = start;\n    start += skipWhiteSpace.exec(this.input)[0].length;\n    if (this.input[start] === \";\")\n      { start++; }\n  }\n};\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp$9.eat = function(type) {\n  if (this.type === type) {\n    this.next();\n    return true\n  } else {\n    return false\n  }\n};\n\n// Tests whether parsed token is a contextual keyword.\n\npp$9.isContextual = function(name) {\n  return this.type === types$1.name && this.value === name && !this.containsEsc\n};\n\n// Consumes contextual keyword if possible.\n\npp$9.eatContextual = function(name) {\n  if (!this.isContextual(name)) { return false }\n  this.next();\n  return true\n};\n\n// Asserts that following token is given contextual keyword.\n\npp$9.expectContextual = function(name) {\n  if (!this.eatContextual(name)) { this.unexpected(); }\n};\n\n// Test whether a semicolon can be inserted at the current position.\n\npp$9.canInsertSemicolon = function() {\n  return this.type === types$1.eof ||\n    this.type === types$1.braceR ||\n    lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\npp$9.insertSemicolon = function() {\n  if (this.canInsertSemicolon()) {\n    if (this.options.onInsertedSemicolon)\n      { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); }\n    return true\n  }\n};\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp$9.semicolon = function() {\n  if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); }\n};\n\npp$9.afterTrailingComma = function(tokType, notNext) {\n  if (this.type === tokType) {\n    if (this.options.onTrailingComma)\n      { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }\n    if (!notNext)\n      { this.next(); }\n    return true\n  }\n};\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp$9.expect = function(type) {\n  this.eat(type) || this.unexpected();\n};\n\n// Raise an unexpected token error.\n\npp$9.unexpected = function(pos) {\n  this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n};\n\nvar DestructuringErrors = function DestructuringErrors() {\n  this.shorthandAssign =\n  this.trailingComma =\n  this.parenthesizedAssign =\n  this.parenthesizedBind =\n  this.doubleProto =\n    -1;\n};\n\npp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n  if (!refDestructuringErrors) { return }\n  if (refDestructuringErrors.trailingComma > -1)\n    { this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\"); }\n  var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;\n  if (parens > -1) { this.raiseRecoverable(parens, isAssign ? \"Assigning to rvalue\" : \"Parenthesized pattern\"); }\n};\n\npp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n  if (!refDestructuringErrors) { return false }\n  var shorthandAssign = refDestructuringErrors.shorthandAssign;\n  var doubleProto = refDestructuringErrors.doubleProto;\n  if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 }\n  if (shorthandAssign >= 0)\n    { this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\"); }\n  if (doubleProto >= 0)\n    { this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\"); }\n};\n\npp$9.checkYieldAwaitInDefaultParams = function() {\n  if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n    { this.raise(this.yieldPos, \"Yield expression cannot be a default value\"); }\n  if (this.awaitPos)\n    { this.raise(this.awaitPos, \"Await expression cannot be a default value\"); }\n};\n\npp$9.isSimpleAssignTarget = function(expr) {\n  if (expr.type === \"ParenthesizedExpression\")\n    { return this.isSimpleAssignTarget(expr.expression) }\n  return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n};\n\nvar pp$8 = Parser.prototype;\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node.  Optionally takes a\n// `program` argument.  If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp$8.parseTopLevel = function(node) {\n  var exports = Object.create(null);\n  if (!node.body) { node.body = []; }\n  while (this.type !== types$1.eof) {\n    var stmt = this.parseStatement(null, true, exports);\n    node.body.push(stmt);\n  }\n  if (this.inModule)\n    { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1)\n      {\n        var name = list[i];\n\n        this.raiseRecoverable(this.undefinedExports[name].start, (\"Export '\" + name + \"' is not defined\"));\n      } }\n  this.adaptDirectivePrologue(node.body);\n  this.next();\n  node.sourceType = this.options.sourceType;\n  return this.finishNode(node, \"Program\")\n};\n\nvar loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"};\n\npp$8.isLet = function(context) {\n  if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) { return false }\n  skipWhiteSpace.lastIndex = this.pos;\n  var skip = skipWhiteSpace.exec(this.input);\n  var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n  // For ambiguous cases, determine if a LexicalDeclaration (or only a\n  // Statement) is allowed here. If context is not empty then only a Statement\n  // is allowed. However, `let [` is an explicit negative lookahead for\n  // ExpressionStatement, so special-case it first.\n  if (nextCh === 91 || nextCh === 92) { return true } // '[', '\\'\n  if (context) { return false }\n\n  if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral\n  if (isIdentifierStart(nextCh, true)) {\n    var pos = next + 1;\n    while (isIdentifierChar(nextCh = this.input.charCodeAt(pos), true)) { ++pos; }\n    if (nextCh === 92 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true }\n    var ident = this.input.slice(next, pos);\n    if (!keywordRelationalOperator.test(ident)) { return true }\n  }\n  return false\n};\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp$8.isAsyncFunction = function() {\n  if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n    { return false }\n\n  skipWhiteSpace.lastIndex = this.pos;\n  var skip = skipWhiteSpace.exec(this.input);\n  var next = this.pos + skip[0].length, after;\n  return !lineBreak.test(this.input.slice(this.pos, next)) &&\n    this.input.slice(next, next + 8) === \"function\" &&\n    (next + 8 === this.input.length ||\n     !(isIdentifierChar(after = this.input.charCodeAt(next + 8)) || after > 0xd7ff && after < 0xdc00))\n};\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp$8.parseStatement = function(context, topLevel, exports) {\n  var starttype = this.type, node = this.startNode(), kind;\n\n  if (this.isLet(context)) {\n    starttype = types$1._var;\n    kind = \"let\";\n  }\n\n  // Most types of statements are recognized by the keyword they\n  // start with. Many are trivial to parse, some require a bit of\n  // complexity.\n\n  switch (starttype) {\n  case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n  case types$1._debugger: return this.parseDebuggerStatement(node)\n  case types$1._do: return this.parseDoStatement(node)\n  case types$1._for: return this.parseForStatement(node)\n  case types$1._function:\n    // Function as sole body of either an if statement or a labeled statement\n    // works, but not when it is part of a labeled statement that is the sole\n    // body of an if statement.\n    if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) { this.unexpected(); }\n    return this.parseFunctionStatement(node, false, !context)\n  case types$1._class:\n    if (context) { this.unexpected(); }\n    return this.parseClass(node, true)\n  case types$1._if: return this.parseIfStatement(node)\n  case types$1._return: return this.parseReturnStatement(node)\n  case types$1._switch: return this.parseSwitchStatement(node)\n  case types$1._throw: return this.parseThrowStatement(node)\n  case types$1._try: return this.parseTryStatement(node)\n  case types$1._const: case types$1._var:\n    kind = kind || this.value;\n    if (context && kind !== \"var\") { this.unexpected(); }\n    return this.parseVarStatement(node, kind)\n  case types$1._while: return this.parseWhileStatement(node)\n  case types$1._with: return this.parseWithStatement(node)\n  case types$1.braceL: return this.parseBlock(true, node)\n  case types$1.semi: return this.parseEmptyStatement(node)\n  case types$1._export:\n  case types$1._import:\n    if (this.options.ecmaVersion > 10 && starttype === types$1._import) {\n      skipWhiteSpace.lastIndex = this.pos;\n      var skip = skipWhiteSpace.exec(this.input);\n      var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n      if (nextCh === 40 || nextCh === 46) // '(' or '.'\n        { return this.parseExpressionStatement(node, this.parseExpression()) }\n    }\n\n    if (!this.options.allowImportExportEverywhere) {\n      if (!topLevel)\n        { this.raise(this.start, \"'import' and 'export' may only appear at the top level\"); }\n      if (!this.inModule)\n        { this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\"); }\n    }\n    return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n    // If the statement does not start with a statement keyword or a\n    // brace, it's an ExpressionStatement or LabeledStatement. We\n    // simply start parsing an expression, and afterwards, if the\n    // next token is a colon and the expression was a simple\n    // Identifier node, we switch to interpreting it as a label.\n  default:\n    if (this.isAsyncFunction()) {\n      if (context) { this.unexpected(); }\n      this.next();\n      return this.parseFunctionStatement(node, true, !context)\n    }\n\n    var maybeName = this.value, expr = this.parseExpression();\n    if (starttype === types$1.name && expr.type === \"Identifier\" && this.eat(types$1.colon))\n      { return this.parseLabeledStatement(node, maybeName, expr, context) }\n    else { return this.parseExpressionStatement(node, expr) }\n  }\n};\n\npp$8.parseBreakContinueStatement = function(node, keyword) {\n  var isBreak = keyword === \"break\";\n  this.next();\n  if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; }\n  else if (this.type !== types$1.name) { this.unexpected(); }\n  else {\n    node.label = this.parseIdent();\n    this.semicolon();\n  }\n\n  // Verify that there is an actual destination to break or\n  // continue to.\n  var i = 0;\n  for (; i < this.labels.length; ++i) {\n    var lab = this.labels[i];\n    if (node.label == null || lab.name === node.label.name) {\n      if (lab.kind != null && (isBreak || lab.kind === \"loop\")) { break }\n      if (node.label && isBreak) { break }\n    }\n  }\n  if (i === this.labels.length) { this.raise(node.start, \"Unsyntactic \" + keyword); }\n  return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n};\n\npp$8.parseDebuggerStatement = function(node) {\n  this.next();\n  this.semicolon();\n  return this.finishNode(node, \"DebuggerStatement\")\n};\n\npp$8.parseDoStatement = function(node) {\n  this.next();\n  this.labels.push(loopLabel);\n  node.body = this.parseStatement(\"do\");\n  this.labels.pop();\n  this.expect(types$1._while);\n  node.test = this.parseParenExpression();\n  if (this.options.ecmaVersion >= 6)\n    { this.eat(types$1.semi); }\n  else\n    { this.semicolon(); }\n  return this.finishNode(node, \"DoWhileStatement\")\n};\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp$8.parseForStatement = function(node) {\n  this.next();\n  var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual(\"await\")) ? this.lastTokStart : -1;\n  this.labels.push(loopLabel);\n  this.enterScope(0);\n  this.expect(types$1.parenL);\n  if (this.type === types$1.semi) {\n    if (awaitAt > -1) { this.unexpected(awaitAt); }\n    return this.parseFor(node, null)\n  }\n  var isLet = this.isLet();\n  if (this.type === types$1._var || this.type === types$1._const || isLet) {\n    var init$1 = this.startNode(), kind = isLet ? \"let\" : this.value;\n    this.next();\n    this.parseVar(init$1, true, kind);\n    this.finishNode(init$1, \"VariableDeclaration\");\n    if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init$1.declarations.length === 1) {\n      if (this.options.ecmaVersion >= 9) {\n        if (this.type === types$1._in) {\n          if (awaitAt > -1) { this.unexpected(awaitAt); }\n        } else { node.await = awaitAt > -1; }\n      }\n      return this.parseForIn(node, init$1)\n    }\n    if (awaitAt > -1) { this.unexpected(awaitAt); }\n    return this.parseFor(node, init$1)\n  }\n  var startsWithLet = this.isContextual(\"let\"), isForOf = false;\n  var containsEsc = this.containsEsc;\n  var refDestructuringErrors = new DestructuringErrors;\n  var initPos = this.start;\n  var init = awaitAt > -1\n    ? this.parseExprSubscripts(refDestructuringErrors, \"await\")\n    : this.parseExpression(true, refDestructuringErrors);\n  if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n    if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt)\n      if (this.type === types$1._in) { this.unexpected(awaitAt); }\n      node.await = true;\n    } else if (isForOf && this.options.ecmaVersion >= 8) {\n      if (init.start === initPos && !containsEsc && init.type === \"Identifier\" && init.name === \"async\") { this.unexpected(); }\n      else if (this.options.ecmaVersion >= 9) { node.await = false; }\n    }\n    if (startsWithLet && isForOf) { this.raise(init.start, \"The left-hand side of a for-of loop may not start with 'let'.\"); }\n    this.toAssignable(init, false, refDestructuringErrors);\n    this.checkLValPattern(init);\n    return this.parseForIn(node, init)\n  } else {\n    this.checkExpressionErrors(refDestructuringErrors, true);\n  }\n  if (awaitAt > -1) { this.unexpected(awaitAt); }\n  return this.parseFor(node, init)\n};\n\npp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n  this.next();\n  return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n};\n\npp$8.parseIfStatement = function(node) {\n  this.next();\n  node.test = this.parseParenExpression();\n  // allow function declarations in branches, but only in non-strict mode\n  node.consequent = this.parseStatement(\"if\");\n  node.alternate = this.eat(types$1._else) ? this.parseStatement(\"if\") : null;\n  return this.finishNode(node, \"IfStatement\")\n};\n\npp$8.parseReturnStatement = function(node) {\n  if (!this.inFunction && !this.options.allowReturnOutsideFunction)\n    { this.raise(this.start, \"'return' outside of function\"); }\n  this.next();\n\n  // In `return` (and `break`/`continue`), the keywords with\n  // optional arguments, we eagerly look for a semicolon or the\n  // possibility to insert one.\n\n  if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; }\n  else { node.argument = this.parseExpression(); this.semicolon(); }\n  return this.finishNode(node, \"ReturnStatement\")\n};\n\npp$8.parseSwitchStatement = function(node) {\n  this.next();\n  node.discriminant = this.parseParenExpression();\n  node.cases = [];\n  this.expect(types$1.braceL);\n  this.labels.push(switchLabel);\n  this.enterScope(0);\n\n  // Statements under must be grouped (by label) in SwitchCase\n  // nodes. `cur` is used to keep the node that we are currently\n  // adding statements to.\n\n  var cur;\n  for (var sawDefault = false; this.type !== types$1.braceR;) {\n    if (this.type === types$1._case || this.type === types$1._default) {\n      var isCase = this.type === types$1._case;\n      if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n      node.cases.push(cur = this.startNode());\n      cur.consequent = [];\n      this.next();\n      if (isCase) {\n        cur.test = this.parseExpression();\n      } else {\n        if (sawDefault) { this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\"); }\n        sawDefault = true;\n        cur.test = null;\n      }\n      this.expect(types$1.colon);\n    } else {\n      if (!cur) { this.unexpected(); }\n      cur.consequent.push(this.parseStatement(null));\n    }\n  }\n  this.exitScope();\n  if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n  this.next(); // Closing brace\n  this.labels.pop();\n  return this.finishNode(node, \"SwitchStatement\")\n};\n\npp$8.parseThrowStatement = function(node) {\n  this.next();\n  if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n    { this.raise(this.lastTokEnd, \"Illegal newline after throw\"); }\n  node.argument = this.parseExpression();\n  this.semicolon();\n  return this.finishNode(node, \"ThrowStatement\")\n};\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty$1 = [];\n\npp$8.parseCatchClauseParam = function() {\n  var param = this.parseBindingAtom();\n  var simple = param.type === \"Identifier\";\n  this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0);\n  this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL);\n  this.expect(types$1.parenR);\n\n  return param\n};\n\npp$8.parseTryStatement = function(node) {\n  this.next();\n  node.block = this.parseBlock();\n  node.handler = null;\n  if (this.type === types$1._catch) {\n    var clause = this.startNode();\n    this.next();\n    if (this.eat(types$1.parenL)) {\n      clause.param = this.parseCatchClauseParam();\n    } else {\n      if (this.options.ecmaVersion < 10) { this.unexpected(); }\n      clause.param = null;\n      this.enterScope(0);\n    }\n    clause.body = this.parseBlock(false);\n    this.exitScope();\n    node.handler = this.finishNode(clause, \"CatchClause\");\n  }\n  node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null;\n  if (!node.handler && !node.finalizer)\n    { this.raise(node.start, \"Missing catch or finally clause\"); }\n  return this.finishNode(node, \"TryStatement\")\n};\n\npp$8.parseVarStatement = function(node, kind, allowMissingInitializer) {\n  this.next();\n  this.parseVar(node, false, kind, allowMissingInitializer);\n  this.semicolon();\n  return this.finishNode(node, \"VariableDeclaration\")\n};\n\npp$8.parseWhileStatement = function(node) {\n  this.next();\n  node.test = this.parseParenExpression();\n  this.labels.push(loopLabel);\n  node.body = this.parseStatement(\"while\");\n  this.labels.pop();\n  return this.finishNode(node, \"WhileStatement\")\n};\n\npp$8.parseWithStatement = function(node) {\n  if (this.strict) { this.raise(this.start, \"'with' in strict mode\"); }\n  this.next();\n  node.object = this.parseParenExpression();\n  node.body = this.parseStatement(\"with\");\n  return this.finishNode(node, \"WithStatement\")\n};\n\npp$8.parseEmptyStatement = function(node) {\n  this.next();\n  return this.finishNode(node, \"EmptyStatement\")\n};\n\npp$8.parseLabeledStatement = function(node, maybeName, expr, context) {\n  for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1)\n    {\n    var label = list[i$1];\n\n    if (label.name === maybeName)\n      { this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n  } }\n  var kind = this.type.isLoop ? \"loop\" : this.type === types$1._switch ? \"switch\" : null;\n  for (var i = this.labels.length - 1; i >= 0; i--) {\n    var label$1 = this.labels[i];\n    if (label$1.statementStart === node.start) {\n      // Update information about previous labels on this node\n      label$1.statementStart = this.start;\n      label$1.kind = kind;\n    } else { break }\n  }\n  this.labels.push({name: maybeName, kind: kind, statementStart: this.start});\n  node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n  this.labels.pop();\n  node.label = expr;\n  return this.finishNode(node, \"LabeledStatement\")\n};\n\npp$8.parseExpressionStatement = function(node, expr) {\n  node.expression = expr;\n  this.semicolon();\n  return this.finishNode(node, \"ExpressionStatement\")\n};\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) {\n  if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;\n  if ( node === void 0 ) node = this.startNode();\n\n  node.body = [];\n  this.expect(types$1.braceL);\n  if (createNewLexicalScope) { this.enterScope(0); }\n  while (this.type !== types$1.braceR) {\n    var stmt = this.parseStatement(null);\n    node.body.push(stmt);\n  }\n  if (exitStrict) { this.strict = false; }\n  this.next();\n  if (createNewLexicalScope) { this.exitScope(); }\n  return this.finishNode(node, \"BlockStatement\")\n};\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp$8.parseFor = function(node, init) {\n  node.init = init;\n  this.expect(types$1.semi);\n  node.test = this.type === types$1.semi ? null : this.parseExpression();\n  this.expect(types$1.semi);\n  node.update = this.type === types$1.parenR ? null : this.parseExpression();\n  this.expect(types$1.parenR);\n  node.body = this.parseStatement(\"for\");\n  this.exitScope();\n  this.labels.pop();\n  return this.finishNode(node, \"ForStatement\")\n};\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp$8.parseForIn = function(node, init) {\n  var isForIn = this.type === types$1._in;\n  this.next();\n\n  if (\n    init.type === \"VariableDeclaration\" &&\n    init.declarations[0].init != null &&\n    (\n      !isForIn ||\n      this.options.ecmaVersion < 8 ||\n      this.strict ||\n      init.kind !== \"var\" ||\n      init.declarations[0].id.type !== \"Identifier\"\n    )\n  ) {\n    this.raise(\n      init.start,\n      ((isForIn ? \"for-in\" : \"for-of\") + \" loop variable declaration may not have an initializer\")\n    );\n  }\n  node.left = init;\n  node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();\n  this.expect(types$1.parenR);\n  node.body = this.parseStatement(\"for\");\n  this.exitScope();\n  this.labels.pop();\n  return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\")\n};\n\n// Parse a list of variable declarations.\n\npp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) {\n  node.declarations = [];\n  node.kind = kind;\n  for (;;) {\n    var decl = this.startNode();\n    this.parseVarId(decl, kind);\n    if (this.eat(types$1.eq)) {\n      decl.init = this.parseMaybeAssign(isFor);\n    } else if (!allowMissingInitializer && kind === \"const\" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n      this.unexpected();\n    } else if (!allowMissingInitializer && decl.id.type !== \"Identifier\" && !(isFor && (this.type === types$1._in || this.isContextual(\"of\")))) {\n      this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\");\n    } else {\n      decl.init = null;\n    }\n    node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n    if (!this.eat(types$1.comma)) { break }\n  }\n  return node\n};\n\npp$8.parseVarId = function(decl, kind) {\n  decl.id = this.parseBindingAtom();\n  this.checkLValPattern(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false);\n};\n\nvar FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4;\n\n// Parse a function declaration or literal (depending on the\n// `statement & FUNC_STATEMENT`).\n\n// Remove `allowExpressionBody` for 7.0.0, as it is only called with false\npp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) {\n  this.initFunction(node);\n  if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n    if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT))\n      { this.unexpected(); }\n    node.generator = this.eat(types$1.star);\n  }\n  if (this.options.ecmaVersion >= 8)\n    { node.async = !!isAsync; }\n\n  if (statement & FUNC_STATEMENT) {\n    node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent();\n    if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n      // If it is a regular function declaration in sloppy mode, then it is\n      // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n      // mode depends on properties of the current scope (see\n      // treatFunctionsAsVar).\n      { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); }\n  }\n\n  var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n  this.yieldPos = 0;\n  this.awaitPos = 0;\n  this.awaitIdentPos = 0;\n  this.enterScope(functionFlags(node.async, node.generator));\n\n  if (!(statement & FUNC_STATEMENT))\n    { node.id = this.type === types$1.name ? this.parseIdent() : null; }\n\n  this.parseFunctionParams(node);\n  this.parseFunctionBody(node, allowExpressionBody, false, forInit);\n\n  this.yieldPos = oldYieldPos;\n  this.awaitPos = oldAwaitPos;\n  this.awaitIdentPos = oldAwaitIdentPos;\n  return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n};\n\npp$8.parseFunctionParams = function(node) {\n  this.expect(types$1.parenL);\n  node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n  this.checkYieldAwaitInDefaultParams();\n};\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$8.parseClass = function(node, isStatement) {\n  this.next();\n\n  // ecma-262 14.6 Class Definitions\n  // A class definition is always strict mode code.\n  var oldStrict = this.strict;\n  this.strict = true;\n\n  this.parseClassId(node, isStatement);\n  this.parseClassSuper(node);\n  var privateNameMap = this.enterClassBody();\n  var classBody = this.startNode();\n  var hadConstructor = false;\n  classBody.body = [];\n  this.expect(types$1.braceL);\n  while (this.type !== types$1.braceR) {\n    var element = this.parseClassElement(node.superClass !== null);\n    if (element) {\n      classBody.body.push(element);\n      if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n        if (hadConstructor) { this.raiseRecoverable(element.start, \"Duplicate constructor in the same class\"); }\n        hadConstructor = true;\n      } else if (element.key && element.key.type === \"PrivateIdentifier\" && isPrivateNameConflicted(privateNameMap, element)) {\n        this.raiseRecoverable(element.key.start, (\"Identifier '#\" + (element.key.name) + \"' has already been declared\"));\n      }\n    }\n  }\n  this.strict = oldStrict;\n  this.next();\n  node.body = this.finishNode(classBody, \"ClassBody\");\n  this.exitClassBody();\n  return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n};\n\npp$8.parseClassElement = function(constructorAllowsSuper) {\n  if (this.eat(types$1.semi)) { return null }\n\n  var ecmaVersion = this.options.ecmaVersion;\n  var node = this.startNode();\n  var keyName = \"\";\n  var isGenerator = false;\n  var isAsync = false;\n  var kind = \"method\";\n  var isStatic = false;\n\n  if (this.eatContextual(\"static\")) {\n    // Parse static init block\n    if (ecmaVersion >= 13 && this.eat(types$1.braceL)) {\n      this.parseClassStaticBlock(node);\n      return node\n    }\n    if (this.isClassElementNameStart() || this.type === types$1.star) {\n      isStatic = true;\n    } else {\n      keyName = \"static\";\n    }\n  }\n  node.static = isStatic;\n  if (!keyName && ecmaVersion >= 8 && this.eatContextual(\"async\")) {\n    if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) {\n      isAsync = true;\n    } else {\n      keyName = \"async\";\n    }\n  }\n  if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) {\n    isGenerator = true;\n  }\n  if (!keyName && !isAsync && !isGenerator) {\n    var lastValue = this.value;\n    if (this.eatContextual(\"get\") || this.eatContextual(\"set\")) {\n      if (this.isClassElementNameStart()) {\n        kind = lastValue;\n      } else {\n        keyName = lastValue;\n      }\n    }\n  }\n\n  // Parse element name\n  if (keyName) {\n    // 'async', 'get', 'set', or 'static' were not a keyword contextually.\n    // The last token is any of those. Make it the element name.\n    node.computed = false;\n    node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc);\n    node.key.name = keyName;\n    this.finishNode(node.key, \"Identifier\");\n  } else {\n    this.parseClassElementName(node);\n  }\n\n  // Parse element value\n  if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== \"method\" || isGenerator || isAsync) {\n    var isConstructor = !node.static && checkKeyName(node, \"constructor\");\n    var allowsDirectSuper = isConstructor && constructorAllowsSuper;\n    // Couldn't move this check into the 'parseClassMethod' method for backward compatibility.\n    if (isConstructor && kind !== \"method\") { this.raise(node.key.start, \"Constructor can't have get/set modifier\"); }\n    node.kind = isConstructor ? \"constructor\" : kind;\n    this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper);\n  } else {\n    this.parseClassField(node);\n  }\n\n  return node\n};\n\npp$8.isClassElementNameStart = function() {\n  return (\n    this.type === types$1.name ||\n    this.type === types$1.privateId ||\n    this.type === types$1.num ||\n    this.type === types$1.string ||\n    this.type === types$1.bracketL ||\n    this.type.keyword\n  )\n};\n\npp$8.parseClassElementName = function(element) {\n  if (this.type === types$1.privateId) {\n    if (this.value === \"constructor\") {\n      this.raise(this.start, \"Classes can't have an element named '#constructor'\");\n    }\n    element.computed = false;\n    element.key = this.parsePrivateIdent();\n  } else {\n    this.parsePropertyName(element);\n  }\n};\n\npp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n  // Check key and flags\n  var key = method.key;\n  if (method.kind === \"constructor\") {\n    if (isGenerator) { this.raise(key.start, \"Constructor can't be a generator\"); }\n    if (isAsync) { this.raise(key.start, \"Constructor can't be an async method\"); }\n  } else if (method.static && checkKeyName(method, \"prototype\")) {\n    this.raise(key.start, \"Classes may not have a static property named prototype\");\n  }\n\n  // Parse value\n  var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);\n\n  // Check value\n  if (method.kind === \"get\" && value.params.length !== 0)\n    { this.raiseRecoverable(value.start, \"getter should have no params\"); }\n  if (method.kind === \"set\" && value.params.length !== 1)\n    { this.raiseRecoverable(value.start, \"setter should have exactly one param\"); }\n  if (method.kind === \"set\" && value.params[0].type === \"RestElement\")\n    { this.raiseRecoverable(value.params[0].start, \"Setter cannot use rest params\"); }\n\n  return this.finishNode(method, \"MethodDefinition\")\n};\n\npp$8.parseClassField = function(field) {\n  if (checkKeyName(field, \"constructor\")) {\n    this.raise(field.key.start, \"Classes can't have a field named 'constructor'\");\n  } else if (field.static && checkKeyName(field, \"prototype\")) {\n    this.raise(field.key.start, \"Classes can't have a static field named 'prototype'\");\n  }\n\n  if (this.eat(types$1.eq)) {\n    // To raise SyntaxError if 'arguments' exists in the initializer.\n    this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER);\n    field.value = this.parseMaybeAssign();\n    this.exitScope();\n  } else {\n    field.value = null;\n  }\n  this.semicolon();\n\n  return this.finishNode(field, \"PropertyDefinition\")\n};\n\npp$8.parseClassStaticBlock = function(node) {\n  node.body = [];\n\n  var oldLabels = this.labels;\n  this.labels = [];\n  this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER);\n  while (this.type !== types$1.braceR) {\n    var stmt = this.parseStatement(null);\n    node.body.push(stmt);\n  }\n  this.next();\n  this.exitScope();\n  this.labels = oldLabels;\n\n  return this.finishNode(node, \"StaticBlock\")\n};\n\npp$8.parseClassId = function(node, isStatement) {\n  if (this.type === types$1.name) {\n    node.id = this.parseIdent();\n    if (isStatement)\n      { this.checkLValSimple(node.id, BIND_LEXICAL, false); }\n  } else {\n    if (isStatement === true)\n      { this.unexpected(); }\n    node.id = null;\n  }\n};\n\npp$8.parseClassSuper = function(node) {\n  node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null;\n};\n\npp$8.enterClassBody = function() {\n  var element = {declared: Object.create(null), used: []};\n  this.privateNameStack.push(element);\n  return element.declared\n};\n\npp$8.exitClassBody = function() {\n  var ref = this.privateNameStack.pop();\n  var declared = ref.declared;\n  var used = ref.used;\n  if (!this.options.checkPrivateFields) { return }\n  var len = this.privateNameStack.length;\n  var parent = len === 0 ? null : this.privateNameStack[len - 1];\n  for (var i = 0; i < used.length; ++i) {\n    var id = used[i];\n    if (!hasOwn(declared, id.name)) {\n      if (parent) {\n        parent.used.push(id);\n      } else {\n        this.raiseRecoverable(id.start, (\"Private field '#\" + (id.name) + \"' must be declared in an enclosing class\"));\n      }\n    }\n  }\n};\n\nfunction isPrivateNameConflicted(privateNameMap, element) {\n  var name = element.key.name;\n  var curr = privateNameMap[name];\n\n  var next = \"true\";\n  if (element.type === \"MethodDefinition\" && (element.kind === \"get\" || element.kind === \"set\")) {\n    next = (element.static ? \"s\" : \"i\") + element.kind;\n  }\n\n  // `class { get #a(){}; static set #a(_){} }` is also conflict.\n  if (\n    curr === \"iget\" && next === \"iset\" ||\n    curr === \"iset\" && next === \"iget\" ||\n    curr === \"sget\" && next === \"sset\" ||\n    curr === \"sset\" && next === \"sget\"\n  ) {\n    privateNameMap[name] = \"true\";\n    return false\n  } else if (!curr) {\n    privateNameMap[name] = next;\n    return false\n  } else {\n    return true\n  }\n}\n\nfunction checkKeyName(node, name) {\n  var computed = node.computed;\n  var key = node.key;\n  return !computed && (\n    key.type === \"Identifier\" && key.name === name ||\n    key.type === \"Literal\" && key.value === name\n  )\n}\n\n// Parses module export declaration.\n\npp$8.parseExportAllDeclaration = function(node, exports) {\n  if (this.options.ecmaVersion >= 11) {\n    if (this.eatContextual(\"as\")) {\n      node.exported = this.parseModuleExportName();\n      this.checkExport(exports, node.exported, this.lastTokStart);\n    } else {\n      node.exported = null;\n    }\n  }\n  this.expectContextual(\"from\");\n  if (this.type !== types$1.string) { this.unexpected(); }\n  node.source = this.parseExprAtom();\n  if (this.options.ecmaVersion >= 16)\n    { node.attributes = this.parseWithClause(); }\n  this.semicolon();\n  return this.finishNode(node, \"ExportAllDeclaration\")\n};\n\npp$8.parseExport = function(node, exports) {\n  this.next();\n  // export * from '...'\n  if (this.eat(types$1.star)) {\n    return this.parseExportAllDeclaration(node, exports)\n  }\n  if (this.eat(types$1._default)) { // export default ...\n    this.checkExport(exports, \"default\", this.lastTokStart);\n    node.declaration = this.parseExportDefaultDeclaration();\n    return this.finishNode(node, \"ExportDefaultDeclaration\")\n  }\n  // export var|const|let|function|class ...\n  if (this.shouldParseExportStatement()) {\n    node.declaration = this.parseExportDeclaration(node);\n    if (node.declaration.type === \"VariableDeclaration\")\n      { this.checkVariableExport(exports, node.declaration.declarations); }\n    else\n      { this.checkExport(exports, node.declaration.id, node.declaration.id.start); }\n    node.specifiers = [];\n    node.source = null;\n    if (this.options.ecmaVersion >= 16)\n      { node.attributes = []; }\n  } else { // export { x, y as z } [from '...']\n    node.declaration = null;\n    node.specifiers = this.parseExportSpecifiers(exports);\n    if (this.eatContextual(\"from\")) {\n      if (this.type !== types$1.string) { this.unexpected(); }\n      node.source = this.parseExprAtom();\n      if (this.options.ecmaVersion >= 16)\n        { node.attributes = this.parseWithClause(); }\n    } else {\n      for (var i = 0, list = node.specifiers; i < list.length; i += 1) {\n        // check for keywords used as local names\n        var spec = list[i];\n\n        this.checkUnreserved(spec.local);\n        // check if export is defined\n        this.checkLocalExport(spec.local);\n\n        if (spec.local.type === \"Literal\") {\n          this.raise(spec.local.start, \"A string literal cannot be used as an exported binding without `from`.\");\n        }\n      }\n\n      node.source = null;\n      if (this.options.ecmaVersion >= 16)\n        { node.attributes = []; }\n    }\n    this.semicolon();\n  }\n  return this.finishNode(node, \"ExportNamedDeclaration\")\n};\n\npp$8.parseExportDeclaration = function(node) {\n  return this.parseStatement(null)\n};\n\npp$8.parseExportDefaultDeclaration = function() {\n  var isAsync;\n  if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) {\n    var fNode = this.startNode();\n    this.next();\n    if (isAsync) { this.next(); }\n    return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync)\n  } else if (this.type === types$1._class) {\n    var cNode = this.startNode();\n    return this.parseClass(cNode, \"nullableID\")\n  } else {\n    var declaration = this.parseMaybeAssign();\n    this.semicolon();\n    return declaration\n  }\n};\n\npp$8.checkExport = function(exports, name, pos) {\n  if (!exports) { return }\n  if (typeof name !== \"string\")\n    { name = name.type === \"Identifier\" ? name.name : name.value; }\n  if (hasOwn(exports, name))\n    { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n  exports[name] = true;\n};\n\npp$8.checkPatternExport = function(exports, pat) {\n  var type = pat.type;\n  if (type === \"Identifier\")\n    { this.checkExport(exports, pat, pat.start); }\n  else if (type === \"ObjectPattern\")\n    { for (var i = 0, list = pat.properties; i < list.length; i += 1)\n      {\n        var prop = list[i];\n\n        this.checkPatternExport(exports, prop);\n      } }\n  else if (type === \"ArrayPattern\")\n    { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {\n      var elt = list$1[i$1];\n\n        if (elt) { this.checkPatternExport(exports, elt); }\n    } }\n  else if (type === \"Property\")\n    { this.checkPatternExport(exports, pat.value); }\n  else if (type === \"AssignmentPattern\")\n    { this.checkPatternExport(exports, pat.left); }\n  else if (type === \"RestElement\")\n    { this.checkPatternExport(exports, pat.argument); }\n};\n\npp$8.checkVariableExport = function(exports, decls) {\n  if (!exports) { return }\n  for (var i = 0, list = decls; i < list.length; i += 1)\n    {\n    var decl = list[i];\n\n    this.checkPatternExport(exports, decl.id);\n  }\n};\n\npp$8.shouldParseExportStatement = function() {\n  return this.type.keyword === \"var\" ||\n    this.type.keyword === \"const\" ||\n    this.type.keyword === \"class\" ||\n    this.type.keyword === \"function\" ||\n    this.isLet() ||\n    this.isAsyncFunction()\n};\n\n// Parses a comma-separated list of module exports.\n\npp$8.parseExportSpecifier = function(exports) {\n  var node = this.startNode();\n  node.local = this.parseModuleExportName();\n\n  node.exported = this.eatContextual(\"as\") ? this.parseModuleExportName() : node.local;\n  this.checkExport(\n    exports,\n    node.exported,\n    node.exported.start\n  );\n\n  return this.finishNode(node, \"ExportSpecifier\")\n};\n\npp$8.parseExportSpecifiers = function(exports) {\n  var nodes = [], first = true;\n  // export { x, y as z } [from '...']\n  this.expect(types$1.braceL);\n  while (!this.eat(types$1.braceR)) {\n    if (!first) {\n      this.expect(types$1.comma);\n      if (this.afterTrailingComma(types$1.braceR)) { break }\n    } else { first = false; }\n\n    nodes.push(this.parseExportSpecifier(exports));\n  }\n  return nodes\n};\n\n// Parses import declaration.\n\npp$8.parseImport = function(node) {\n  this.next();\n\n  // import '...'\n  if (this.type === types$1.string) {\n    node.specifiers = empty$1;\n    node.source = this.parseExprAtom();\n  } else {\n    node.specifiers = this.parseImportSpecifiers();\n    this.expectContextual(\"from\");\n    node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected();\n  }\n  if (this.options.ecmaVersion >= 16)\n    { node.attributes = this.parseWithClause(); }\n  this.semicolon();\n  return this.finishNode(node, \"ImportDeclaration\")\n};\n\n// Parses a comma-separated list of module imports.\n\npp$8.parseImportSpecifier = function() {\n  var node = this.startNode();\n  node.imported = this.parseModuleExportName();\n\n  if (this.eatContextual(\"as\")) {\n    node.local = this.parseIdent();\n  } else {\n    this.checkUnreserved(node.imported);\n    node.local = node.imported;\n  }\n  this.checkLValSimple(node.local, BIND_LEXICAL);\n\n  return this.finishNode(node, \"ImportSpecifier\")\n};\n\npp$8.parseImportDefaultSpecifier = function() {\n  // import defaultObj, { x, y as z } from '...'\n  var node = this.startNode();\n  node.local = this.parseIdent();\n  this.checkLValSimple(node.local, BIND_LEXICAL);\n  return this.finishNode(node, \"ImportDefaultSpecifier\")\n};\n\npp$8.parseImportNamespaceSpecifier = function() {\n  var node = this.startNode();\n  this.next();\n  this.expectContextual(\"as\");\n  node.local = this.parseIdent();\n  this.checkLValSimple(node.local, BIND_LEXICAL);\n  return this.finishNode(node, \"ImportNamespaceSpecifier\")\n};\n\npp$8.parseImportSpecifiers = function() {\n  var nodes = [], first = true;\n  if (this.type === types$1.name) {\n    nodes.push(this.parseImportDefaultSpecifier());\n    if (!this.eat(types$1.comma)) { return nodes }\n  }\n  if (this.type === types$1.star) {\n    nodes.push(this.parseImportNamespaceSpecifier());\n    return nodes\n  }\n  this.expect(types$1.braceL);\n  while (!this.eat(types$1.braceR)) {\n    if (!first) {\n      this.expect(types$1.comma);\n      if (this.afterTrailingComma(types$1.braceR)) { break }\n    } else { first = false; }\n\n    nodes.push(this.parseImportSpecifier());\n  }\n  return nodes\n};\n\npp$8.parseWithClause = function() {\n  var nodes = [];\n  if (!this.eat(types$1._with)) {\n    return nodes\n  }\n  this.expect(types$1.braceL);\n  var attributeKeys = {};\n  var first = true;\n  while (!this.eat(types$1.braceR)) {\n    if (!first) {\n      this.expect(types$1.comma);\n      if (this.afterTrailingComma(types$1.braceR)) { break }\n    } else { first = false; }\n\n    var attr = this.parseImportAttribute();\n    var keyName = attr.key.type === \"Identifier\" ? attr.key.name : attr.key.value;\n    if (hasOwn(attributeKeys, keyName))\n      { this.raiseRecoverable(attr.key.start, \"Duplicate attribute key '\" + keyName + \"'\"); }\n    attributeKeys[keyName] = true;\n    nodes.push(attr);\n  }\n  return nodes\n};\n\npp$8.parseImportAttribute = function() {\n  var node = this.startNode();\n  node.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\");\n  this.expect(types$1.colon);\n  if (this.type !== types$1.string) {\n    this.unexpected();\n  }\n  node.value = this.parseExprAtom();\n  return this.finishNode(node, \"ImportAttribute\")\n};\n\npp$8.parseModuleExportName = function() {\n  if (this.options.ecmaVersion >= 13 && this.type === types$1.string) {\n    var stringLiteral = this.parseLiteral(this.value);\n    if (loneSurrogate.test(stringLiteral.value)) {\n      this.raise(stringLiteral.start, \"An export name cannot include a lone surrogate.\");\n    }\n    return stringLiteral\n  }\n  return this.parseIdent(true)\n};\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp$8.adaptDirectivePrologue = function(statements) {\n  for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n    statements[i].directive = statements[i].expression.raw.slice(1, -1);\n  }\n};\npp$8.isDirectiveCandidate = function(statement) {\n  return (\n    this.options.ecmaVersion >= 5 &&\n    statement.type === \"ExpressionStatement\" &&\n    statement.expression.type === \"Literal\" &&\n    typeof statement.expression.value === \"string\" &&\n    // Reject parenthesized strings.\n    (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n  )\n};\n\nvar pp$7 = Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp$7.toAssignable = function(node, isBinding, refDestructuringErrors) {\n  if (this.options.ecmaVersion >= 6 && node) {\n    switch (node.type) {\n    case \"Identifier\":\n      if (this.inAsync && node.name === \"await\")\n        { this.raise(node.start, \"Cannot use 'await' as identifier inside an async function\"); }\n      break\n\n    case \"ObjectPattern\":\n    case \"ArrayPattern\":\n    case \"AssignmentPattern\":\n    case \"RestElement\":\n      break\n\n    case \"ObjectExpression\":\n      node.type = \"ObjectPattern\";\n      if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n      for (var i = 0, list = node.properties; i < list.length; i += 1) {\n        var prop = list[i];\n\n      this.toAssignable(prop, isBinding);\n        // Early error:\n        //   AssignmentRestProperty[Yield, Await] :\n        //     `...` DestructuringAssignmentTarget[Yield, Await]\n        //\n        //   It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n        if (\n          prop.type === \"RestElement\" &&\n          (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n        ) {\n          this.raise(prop.argument.start, \"Unexpected token\");\n        }\n      }\n      break\n\n    case \"Property\":\n      // AssignmentProperty has type === \"Property\"\n      if (node.kind !== \"init\") { this.raise(node.key.start, \"Object pattern can't contain getter or setter\"); }\n      this.toAssignable(node.value, isBinding);\n      break\n\n    case \"ArrayExpression\":\n      node.type = \"ArrayPattern\";\n      if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n      this.toAssignableList(node.elements, isBinding);\n      break\n\n    case \"SpreadElement\":\n      node.type = \"RestElement\";\n      this.toAssignable(node.argument, isBinding);\n      if (node.argument.type === \"AssignmentPattern\")\n        { this.raise(node.argument.start, \"Rest elements cannot have a default value\"); }\n      break\n\n    case \"AssignmentExpression\":\n      if (node.operator !== \"=\") { this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\"); }\n      node.type = \"AssignmentPattern\";\n      delete node.operator;\n      this.toAssignable(node.left, isBinding);\n      break\n\n    case \"ParenthesizedExpression\":\n      this.toAssignable(node.expression, isBinding, refDestructuringErrors);\n      break\n\n    case \"ChainExpression\":\n      this.raiseRecoverable(node.start, \"Optional chaining cannot appear in left-hand side\");\n      break\n\n    case \"MemberExpression\":\n      if (!isBinding) { break }\n\n    default:\n      this.raise(node.start, \"Assigning to rvalue\");\n    }\n  } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n  return node\n};\n\n// Convert list of expression atoms to binding list.\n\npp$7.toAssignableList = function(exprList, isBinding) {\n  var end = exprList.length;\n  for (var i = 0; i < end; i++) {\n    var elt = exprList[i];\n    if (elt) { this.toAssignable(elt, isBinding); }\n  }\n  if (end) {\n    var last = exprList[end - 1];\n    if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n      { this.unexpected(last.argument.start); }\n  }\n  return exprList\n};\n\n// Parses spread element.\n\npp$7.parseSpread = function(refDestructuringErrors) {\n  var node = this.startNode();\n  this.next();\n  node.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n  return this.finishNode(node, \"SpreadElement\")\n};\n\npp$7.parseRestBinding = function() {\n  var node = this.startNode();\n  this.next();\n\n  // RestElement inside of a function parameter must be an identifier\n  if (this.options.ecmaVersion === 6 && this.type !== types$1.name)\n    { this.unexpected(); }\n\n  node.argument = this.parseBindingAtom();\n\n  return this.finishNode(node, \"RestElement\")\n};\n\n// Parses lvalue (assignable) atom.\n\npp$7.parseBindingAtom = function() {\n  if (this.options.ecmaVersion >= 6) {\n    switch (this.type) {\n    case types$1.bracketL:\n      var node = this.startNode();\n      this.next();\n      node.elements = this.parseBindingList(types$1.bracketR, true, true);\n      return this.finishNode(node, \"ArrayPattern\")\n\n    case types$1.braceL:\n      return this.parseObj(true)\n    }\n  }\n  return this.parseIdent()\n};\n\npp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) {\n  var elts = [], first = true;\n  while (!this.eat(close)) {\n    if (first) { first = false; }\n    else { this.expect(types$1.comma); }\n    if (allowEmpty && this.type === types$1.comma) {\n      elts.push(null);\n    } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n      break\n    } else if (this.type === types$1.ellipsis) {\n      var rest = this.parseRestBinding();\n      this.parseBindingListItem(rest);\n      elts.push(rest);\n      if (this.type === types$1.comma) { this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\"); }\n      this.expect(close);\n      break\n    } else {\n      elts.push(this.parseAssignableListItem(allowModifiers));\n    }\n  }\n  return elts\n};\n\npp$7.parseAssignableListItem = function(allowModifiers) {\n  var elem = this.parseMaybeDefault(this.start, this.startLoc);\n  this.parseBindingListItem(elem);\n  return elem\n};\n\npp$7.parseBindingListItem = function(param) {\n  return param\n};\n\n// Parses assignment pattern around given atom if possible.\n\npp$7.parseMaybeDefault = function(startPos, startLoc, left) {\n  left = left || this.parseBindingAtom();\n  if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left }\n  var node = this.startNodeAt(startPos, startLoc);\n  node.left = left;\n  node.right = this.parseMaybeAssign();\n  return this.finishNode(node, \"AssignmentPattern\")\n};\n\n// The following three functions all verify that a node is an lvalue —\n// something that can be bound, or assigned to. In order to do so, they perform\n// a variety of checks:\n//\n// - Check that none of the bound/assigned-to identifiers are reserved words.\n// - Record name declarations for bindings in the appropriate scope.\n// - Check duplicate argument names, if checkClashes is set.\n//\n// If a complex binding pattern is encountered (e.g., object and array\n// destructuring), the entire pattern is recursively checked.\n//\n// There are three versions of checkLVal*() appropriate for different\n// circumstances:\n//\n// - checkLValSimple() shall be used if the syntactic construct supports\n//   nothing other than identifiers and member expressions. Parenthesized\n//   expressions are also correctly handled. This is generally appropriate for\n//   constructs for which the spec says\n//\n//   > It is a Syntax Error if AssignmentTargetType of [the production] is not\n//   > simple.\n//\n//   It is also appropriate for checking if an identifier is valid and not\n//   defined elsewhere, like import declarations or function/class identifiers.\n//\n//   Examples where this is used include:\n//     a += …;\n//     import a from '…';\n//   where a is the node to be checked.\n//\n// - checkLValPattern() shall be used if the syntactic construct supports\n//   anything checkLValSimple() supports, as well as object and array\n//   destructuring patterns. This is generally appropriate for constructs for\n//   which the spec says\n//\n//   > It is a Syntax Error if [the production] is neither an ObjectLiteral nor\n//   > an ArrayLiteral and AssignmentTargetType of [the production] is not\n//   > simple.\n//\n//   Examples where this is used include:\n//     (a = …);\n//     const a = …;\n//     try { … } catch (a) { … }\n//   where a is the node to be checked.\n//\n// - checkLValInnerPattern() shall be used if the syntactic construct supports\n//   anything checkLValPattern() supports, as well as default assignment\n//   patterns, rest elements, and other constructs that may appear within an\n//   object or array destructuring pattern.\n//\n//   As a special case, function parameters also use checkLValInnerPattern(),\n//   as they also support defaults and rest constructs.\n//\n// These functions deliberately support both assignment and binding constructs,\n// as the logic for both is exceedingly similar. If the node is the target of\n// an assignment, then bindingType should be set to BIND_NONE. Otherwise, it\n// should be set to the appropriate BIND_* constant, like BIND_VAR or\n// BIND_LEXICAL.\n//\n// If the function is called with a non-BIND_NONE bindingType, then\n// additionally a checkClashes object may be specified to allow checking for\n// duplicate argument names. checkClashes is ignored if the provided construct\n// is an assignment (i.e., bindingType is BIND_NONE).\n\npp$7.checkLValSimple = function(expr, bindingType, checkClashes) {\n  if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n  var isBind = bindingType !== BIND_NONE;\n\n  switch (expr.type) {\n  case \"Identifier\":\n    if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n      { this.raiseRecoverable(expr.start, (isBind ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\"); }\n    if (isBind) {\n      if (bindingType === BIND_LEXICAL && expr.name === \"let\")\n        { this.raiseRecoverable(expr.start, \"let is disallowed as a lexically bound name\"); }\n      if (checkClashes) {\n        if (hasOwn(checkClashes, expr.name))\n          { this.raiseRecoverable(expr.start, \"Argument name clash\"); }\n        checkClashes[expr.name] = true;\n      }\n      if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); }\n    }\n    break\n\n  case \"ChainExpression\":\n    this.raiseRecoverable(expr.start, \"Optional chaining cannot appear in left-hand side\");\n    break\n\n  case \"MemberExpression\":\n    if (isBind) { this.raiseRecoverable(expr.start, \"Binding member expression\"); }\n    break\n\n  case \"ParenthesizedExpression\":\n    if (isBind) { this.raiseRecoverable(expr.start, \"Binding parenthesized expression\"); }\n    return this.checkLValSimple(expr.expression, bindingType, checkClashes)\n\n  default:\n    this.raise(expr.start, (isBind ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n  }\n};\n\npp$7.checkLValPattern = function(expr, bindingType, checkClashes) {\n  if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n  switch (expr.type) {\n  case \"ObjectPattern\":\n    for (var i = 0, list = expr.properties; i < list.length; i += 1) {\n      var prop = list[i];\n\n    this.checkLValInnerPattern(prop, bindingType, checkClashes);\n    }\n    break\n\n  case \"ArrayPattern\":\n    for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {\n      var elem = list$1[i$1];\n\n    if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); }\n    }\n    break\n\n  default:\n    this.checkLValSimple(expr, bindingType, checkClashes);\n  }\n};\n\npp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) {\n  if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n  switch (expr.type) {\n  case \"Property\":\n    // AssignmentProperty has type === \"Property\"\n    this.checkLValInnerPattern(expr.value, bindingType, checkClashes);\n    break\n\n  case \"AssignmentPattern\":\n    this.checkLValPattern(expr.left, bindingType, checkClashes);\n    break\n\n  case \"RestElement\":\n    this.checkLValPattern(expr.argument, bindingType, checkClashes);\n    break\n\n  default:\n    this.checkLValPattern(expr, bindingType, checkClashes);\n  }\n};\n\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\n\nvar TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {\n  this.token = token;\n  this.isExpr = !!isExpr;\n  this.preserveSpace = !!preserveSpace;\n  this.override = override;\n  this.generator = !!generator;\n};\n\nvar types = {\n  b_stat: new TokContext(\"{\", false),\n  b_expr: new TokContext(\"{\", true),\n  b_tmpl: new TokContext(\"${\", false),\n  p_stat: new TokContext(\"(\", false),\n  p_expr: new TokContext(\"(\", true),\n  q_tmpl: new TokContext(\"`\", true, true, function (p) { return p.tryReadTemplateToken(); }),\n  f_stat: new TokContext(\"function\", false),\n  f_expr: new TokContext(\"function\", true),\n  f_expr_gen: new TokContext(\"function\", true, false, null, true),\n  f_gen: new TokContext(\"function\", false, false, null, true)\n};\n\nvar pp$6 = Parser.prototype;\n\npp$6.initialContext = function() {\n  return [types.b_stat]\n};\n\npp$6.curContext = function() {\n  return this.context[this.context.length - 1]\n};\n\npp$6.braceIsBlock = function(prevType) {\n  var parent = this.curContext();\n  if (parent === types.f_expr || parent === types.f_stat)\n    { return true }\n  if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr))\n    { return !parent.isExpr }\n\n  // The check for `tt.name && exprAllowed` detects whether we are\n  // after a `yield` or `of` construct. See the `updateContext` for\n  // `tt.name`.\n  if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed)\n    { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }\n  if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow)\n    { return true }\n  if (prevType === types$1.braceL)\n    { return parent === types.b_stat }\n  if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name)\n    { return false }\n  return !this.exprAllowed\n};\n\npp$6.inGeneratorContext = function() {\n  for (var i = this.context.length - 1; i >= 1; i--) {\n    var context = this.context[i];\n    if (context.token === \"function\")\n      { return context.generator }\n  }\n  return false\n};\n\npp$6.updateContext = function(prevType) {\n  var update, type = this.type;\n  if (type.keyword && prevType === types$1.dot)\n    { this.exprAllowed = false; }\n  else if (update = type.updateContext)\n    { update.call(this, prevType); }\n  else\n    { this.exprAllowed = type.beforeExpr; }\n};\n\n// Used to handle edge cases when token context could not be inferred correctly during tokenization phase\n\npp$6.overrideContext = function(tokenCtx) {\n  if (this.curContext() !== tokenCtx) {\n    this.context[this.context.length - 1] = tokenCtx;\n  }\n};\n\n// Token-specific context update code\n\ntypes$1.parenR.updateContext = types$1.braceR.updateContext = function() {\n  if (this.context.length === 1) {\n    this.exprAllowed = true;\n    return\n  }\n  var out = this.context.pop();\n  if (out === types.b_stat && this.curContext().token === \"function\") {\n    out = this.context.pop();\n  }\n  this.exprAllowed = !out.isExpr;\n};\n\ntypes$1.braceL.updateContext = function(prevType) {\n  this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);\n  this.exprAllowed = true;\n};\n\ntypes$1.dollarBraceL.updateContext = function() {\n  this.context.push(types.b_tmpl);\n  this.exprAllowed = true;\n};\n\ntypes$1.parenL.updateContext = function(prevType) {\n  var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while;\n  this.context.push(statementParens ? types.p_stat : types.p_expr);\n  this.exprAllowed = true;\n};\n\ntypes$1.incDec.updateContext = function() {\n  // tokExprAllowed stays unchanged\n};\n\ntypes$1._function.updateContext = types$1._class.updateContext = function(prevType) {\n  if (prevType.beforeExpr && prevType !== types$1._else &&\n      !(prevType === types$1.semi && this.curContext() !== types.p_stat) &&\n      !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n      !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat))\n    { this.context.push(types.f_expr); }\n  else\n    { this.context.push(types.f_stat); }\n  this.exprAllowed = false;\n};\n\ntypes$1.colon.updateContext = function() {\n  if (this.curContext().token === \"function\") { this.context.pop(); }\n  this.exprAllowed = true;\n};\n\ntypes$1.backQuote.updateContext = function() {\n  if (this.curContext() === types.q_tmpl)\n    { this.context.pop(); }\n  else\n    { this.context.push(types.q_tmpl); }\n  this.exprAllowed = false;\n};\n\ntypes$1.star.updateContext = function(prevType) {\n  if (prevType === types$1._function) {\n    var index = this.context.length - 1;\n    if (this.context[index] === types.f_expr)\n      { this.context[index] = types.f_expr_gen; }\n    else\n      { this.context[index] = types.f_gen; }\n  }\n  this.exprAllowed = true;\n};\n\ntypes$1.name.updateContext = function(prevType) {\n  var allowed = false;\n  if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) {\n    if (this.value === \"of\" && !this.exprAllowed ||\n        this.value === \"yield\" && this.inGeneratorContext())\n      { allowed = true; }\n  }\n  this.exprAllowed = allowed;\n};\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n\nvar pp$5 = Parser.prototype;\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n  if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n    { return }\n  if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n    { return }\n  var key = prop.key;\n  var name;\n  switch (key.type) {\n  case \"Identifier\": name = key.name; break\n  case \"Literal\": name = String(key.value); break\n  default: return\n  }\n  var kind = prop.kind;\n  if (this.options.ecmaVersion >= 6) {\n    if (name === \"__proto__\" && kind === \"init\") {\n      if (propHash.proto) {\n        if (refDestructuringErrors) {\n          if (refDestructuringErrors.doubleProto < 0) {\n            refDestructuringErrors.doubleProto = key.start;\n          }\n        } else {\n          this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\");\n        }\n      }\n      propHash.proto = true;\n    }\n    return\n  }\n  name = \"$\" + name;\n  var other = propHash[name];\n  if (other) {\n    var redefinition;\n    if (kind === \"init\") {\n      redefinition = this.strict && other.init || other.get || other.set;\n    } else {\n      redefinition = other.init || other[kind];\n    }\n    if (redefinition)\n      { this.raiseRecoverable(key.start, \"Redefinition of property\"); }\n  } else {\n    other = propHash[name] = {\n      init: false,\n      get: false,\n      set: false\n    };\n  }\n  other[kind] = true;\n};\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp$5.parseExpression = function(forInit, refDestructuringErrors) {\n  var startPos = this.start, startLoc = this.startLoc;\n  var expr = this.parseMaybeAssign(forInit, refDestructuringErrors);\n  if (this.type === types$1.comma) {\n    var node = this.startNodeAt(startPos, startLoc);\n    node.expressions = [expr];\n    while (this.eat(types$1.comma)) { node.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors)); }\n    return this.finishNode(node, \"SequenceExpression\")\n  }\n  return expr\n};\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) {\n  if (this.isContextual(\"yield\")) {\n    if (this.inGenerator) { return this.parseYield(forInit) }\n    // The tokenizer will assume an expression is allowed after\n    // `yield`, but this isn't that kind of yield\n    else { this.exprAllowed = false; }\n  }\n\n  var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1;\n  if (refDestructuringErrors) {\n    oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n    oldTrailingComma = refDestructuringErrors.trailingComma;\n    oldDoubleProto = refDestructuringErrors.doubleProto;\n    refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1;\n  } else {\n    refDestructuringErrors = new DestructuringErrors;\n    ownDestructuringErrors = true;\n  }\n\n  var startPos = this.start, startLoc = this.startLoc;\n  if (this.type === types$1.parenL || this.type === types$1.name) {\n    this.potentialArrowAt = this.start;\n    this.potentialArrowInForAwait = forInit === \"await\";\n  }\n  var left = this.parseMaybeConditional(forInit, refDestructuringErrors);\n  if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }\n  if (this.type.isAssign) {\n    var node = this.startNodeAt(startPos, startLoc);\n    node.operator = this.value;\n    if (this.type === types$1.eq)\n      { left = this.toAssignable(left, false, refDestructuringErrors); }\n    if (!ownDestructuringErrors) {\n      refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1;\n    }\n    if (refDestructuringErrors.shorthandAssign >= left.start)\n      { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly\n    if (this.type === types$1.eq)\n      { this.checkLValPattern(left); }\n    else\n      { this.checkLValSimple(left); }\n    node.left = left;\n    this.next();\n    node.right = this.parseMaybeAssign(forInit);\n    if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; }\n    return this.finishNode(node, \"AssignmentExpression\")\n  } else {\n    if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); }\n  }\n  if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; }\n  if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; }\n  return left\n};\n\n// Parse a ternary conditional (`?:`) operator.\n\npp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) {\n  var startPos = this.start, startLoc = this.startLoc;\n  var expr = this.parseExprOps(forInit, refDestructuringErrors);\n  if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n  if (this.eat(types$1.question)) {\n    var node = this.startNodeAt(startPos, startLoc);\n    node.test = expr;\n    node.consequent = this.parseMaybeAssign();\n    this.expect(types$1.colon);\n    node.alternate = this.parseMaybeAssign(forInit);\n    return this.finishNode(node, \"ConditionalExpression\")\n  }\n  return expr\n};\n\n// Start the precedence parser.\n\npp$5.parseExprOps = function(forInit, refDestructuringErrors) {\n  var startPos = this.start, startLoc = this.startLoc;\n  var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit);\n  if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n  return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit)\n};\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) {\n  var prec = this.type.binop;\n  if (prec != null && (!forInit || this.type !== types$1._in)) {\n    if (prec > minPrec) {\n      var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND;\n      var coalesce = this.type === types$1.coalesce;\n      if (coalesce) {\n        // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n        // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n        prec = types$1.logicalAND.binop;\n      }\n      var op = this.value;\n      this.next();\n      var startPos = this.start, startLoc = this.startLoc;\n      var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit);\n      var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);\n      if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) {\n        this.raiseRecoverable(this.start, \"Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses\");\n      }\n      return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit)\n    }\n  }\n  return left\n};\n\npp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n  if (right.type === \"PrivateIdentifier\") { this.raise(right.start, \"Private identifier can only be left side of binary expression\"); }\n  var node = this.startNodeAt(startPos, startLoc);\n  node.left = left;\n  node.operator = op;\n  node.right = right;\n  return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n};\n\n// Parse unary operators, both prefix and postfix.\n\npp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) {\n  var startPos = this.start, startLoc = this.startLoc, expr;\n  if (this.isContextual(\"await\") && this.canAwait) {\n    expr = this.parseAwait(forInit);\n    sawUnary = true;\n  } else if (this.type.prefix) {\n    var node = this.startNode(), update = this.type === types$1.incDec;\n    node.operator = this.value;\n    node.prefix = true;\n    this.next();\n    node.argument = this.parseMaybeUnary(null, true, update, forInit);\n    this.checkExpressionErrors(refDestructuringErrors, true);\n    if (update) { this.checkLValSimple(node.argument); }\n    else if (this.strict && node.operator === \"delete\" && isLocalVariableAccess(node.argument))\n      { this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\"); }\n    else if (node.operator === \"delete\" && isPrivateFieldAccess(node.argument))\n      { this.raiseRecoverable(node.start, \"Private fields can not be deleted\"); }\n    else { sawUnary = true; }\n    expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n  } else if (!sawUnary && this.type === types$1.privateId) {\n    if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); }\n    expr = this.parsePrivateIdent();\n    // only could be private fields in 'in', such as #x in obj\n    if (this.type !== types$1._in) { this.unexpected(); }\n  } else {\n    expr = this.parseExprSubscripts(refDestructuringErrors, forInit);\n    if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n    while (this.type.postfix && !this.canInsertSemicolon()) {\n      var node$1 = this.startNodeAt(startPos, startLoc);\n      node$1.operator = this.value;\n      node$1.prefix = false;\n      node$1.argument = expr;\n      this.checkLValSimple(expr);\n      this.next();\n      expr = this.finishNode(node$1, \"UpdateExpression\");\n    }\n  }\n\n  if (!incDec && this.eat(types$1.starstar)) {\n    if (sawUnary)\n      { this.unexpected(this.lastTokStart); }\n    else\n      { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), \"**\", false) }\n  } else {\n    return expr\n  }\n};\n\nfunction isLocalVariableAccess(node) {\n  return (\n    node.type === \"Identifier\" ||\n    node.type === \"ParenthesizedExpression\" && isLocalVariableAccess(node.expression)\n  )\n}\n\nfunction isPrivateFieldAccess(node) {\n  return (\n    node.type === \"MemberExpression\" && node.property.type === \"PrivateIdentifier\" ||\n    node.type === \"ChainExpression\" && isPrivateFieldAccess(node.expression) ||\n    node.type === \"ParenthesizedExpression\" && isPrivateFieldAccess(node.expression)\n  )\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) {\n  var startPos = this.start, startLoc = this.startLoc;\n  var expr = this.parseExprAtom(refDestructuringErrors, forInit);\n  if (expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\")\n    { return expr }\n  var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit);\n  if (refDestructuringErrors && result.type === \"MemberExpression\") {\n    if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; }\n    if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; }\n    if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; }\n  }\n  return result\n};\n\npp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) {\n  var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n      this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 &&\n      this.potentialArrowAt === base.start;\n  var optionalChained = false;\n\n  while (true) {\n    var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit);\n\n    if (element.optional) { optionalChained = true; }\n    if (element === base || element.type === \"ArrowFunctionExpression\") {\n      if (optionalChained) {\n        var chainNode = this.startNodeAt(startPos, startLoc);\n        chainNode.expression = element;\n        element = this.finishNode(chainNode, \"ChainExpression\");\n      }\n      return element\n    }\n\n    base = element;\n  }\n};\n\npp$5.shouldParseAsyncArrow = function() {\n  return !this.canInsertSemicolon() && this.eat(types$1.arrow)\n};\n\npp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) {\n  return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit)\n};\n\npp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) {\n  var optionalSupported = this.options.ecmaVersion >= 11;\n  var optional = optionalSupported && this.eat(types$1.questionDot);\n  if (noCalls && optional) { this.raise(this.lastTokStart, \"Optional chaining cannot appear in the callee of new expressions\"); }\n\n  var computed = this.eat(types$1.bracketL);\n  if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) {\n    var node = this.startNodeAt(startPos, startLoc);\n    node.object = base;\n    if (computed) {\n      node.property = this.parseExpression();\n      this.expect(types$1.bracketR);\n    } else if (this.type === types$1.privateId && base.type !== \"Super\") {\n      node.property = this.parsePrivateIdent();\n    } else {\n      node.property = this.parseIdent(this.options.allowReserved !== \"never\");\n    }\n    node.computed = !!computed;\n    if (optionalSupported) {\n      node.optional = optional;\n    }\n    base = this.finishNode(node, \"MemberExpression\");\n  } else if (!noCalls && this.eat(types$1.parenL)) {\n    var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n    this.yieldPos = 0;\n    this.awaitPos = 0;\n    this.awaitIdentPos = 0;\n    var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors);\n    if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) {\n      this.checkPatternErrors(refDestructuringErrors, false);\n      this.checkYieldAwaitInDefaultParams();\n      if (this.awaitIdentPos > 0)\n        { this.raise(this.awaitIdentPos, \"Cannot use 'await' as identifier inside an async function\"); }\n      this.yieldPos = oldYieldPos;\n      this.awaitPos = oldAwaitPos;\n      this.awaitIdentPos = oldAwaitIdentPos;\n      return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit)\n    }\n    this.checkExpressionErrors(refDestructuringErrors, true);\n    this.yieldPos = oldYieldPos || this.yieldPos;\n    this.awaitPos = oldAwaitPos || this.awaitPos;\n    this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;\n    var node$1 = this.startNodeAt(startPos, startLoc);\n    node$1.callee = base;\n    node$1.arguments = exprList;\n    if (optionalSupported) {\n      node$1.optional = optional;\n    }\n    base = this.finishNode(node$1, \"CallExpression\");\n  } else if (this.type === types$1.backQuote) {\n    if (optional || optionalChained) {\n      this.raise(this.start, \"Optional chaining cannot appear in the tag of tagged template expressions\");\n    }\n    var node$2 = this.startNodeAt(startPos, startLoc);\n    node$2.tag = base;\n    node$2.quasi = this.parseTemplate({isTagged: true});\n    base = this.finishNode(node$2, \"TaggedTemplateExpression\");\n  }\n  return base\n};\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) {\n  // If a division operator appears in an expression position, the\n  // tokenizer got confused, and we force it to read a regexp instead.\n  if (this.type === types$1.slash) { this.readRegexp(); }\n\n  var node, canBeArrow = this.potentialArrowAt === this.start;\n  switch (this.type) {\n  case types$1._super:\n    if (!this.allowSuper)\n      { this.raise(this.start, \"'super' keyword outside a method\"); }\n    node = this.startNode();\n    this.next();\n    if (this.type === types$1.parenL && !this.allowDirectSuper)\n      { this.raise(node.start, \"super() call outside constructor of a subclass\"); }\n    // The `super` keyword can appear at below:\n    // SuperProperty:\n    //     super [ Expression ]\n    //     super . IdentifierName\n    // SuperCall:\n    //     super ( Arguments )\n    if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL)\n      { this.unexpected(); }\n    return this.finishNode(node, \"Super\")\n\n  case types$1._this:\n    node = this.startNode();\n    this.next();\n    return this.finishNode(node, \"ThisExpression\")\n\n  case types$1.name:\n    var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;\n    var id = this.parseIdent(false);\n    if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(types$1._function)) {\n      this.overrideContext(types.f_expr);\n      return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit)\n    }\n    if (canBeArrow && !this.canInsertSemicolon()) {\n      if (this.eat(types$1.arrow))\n        { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) }\n      if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === types$1.name && !containsEsc &&\n          (!this.potentialArrowInForAwait || this.value !== \"of\" || this.containsEsc)) {\n        id = this.parseIdent(false);\n        if (this.canInsertSemicolon() || !this.eat(types$1.arrow))\n          { this.unexpected(); }\n        return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit)\n      }\n    }\n    return id\n\n  case types$1.regexp:\n    var value = this.value;\n    node = this.parseLiteral(value.value);\n    node.regex = {pattern: value.pattern, flags: value.flags};\n    return node\n\n  case types$1.num: case types$1.string:\n    return this.parseLiteral(this.value)\n\n  case types$1._null: case types$1._true: case types$1._false:\n    node = this.startNode();\n    node.value = this.type === types$1._null ? null : this.type === types$1._true;\n    node.raw = this.type.keyword;\n    this.next();\n    return this.finishNode(node, \"Literal\")\n\n  case types$1.parenL:\n    var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit);\n    if (refDestructuringErrors) {\n      if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n        { refDestructuringErrors.parenthesizedAssign = start; }\n      if (refDestructuringErrors.parenthesizedBind < 0)\n        { refDestructuringErrors.parenthesizedBind = start; }\n    }\n    return expr\n\n  case types$1.bracketL:\n    node = this.startNode();\n    this.next();\n    node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors);\n    return this.finishNode(node, \"ArrayExpression\")\n\n  case types$1.braceL:\n    this.overrideContext(types.b_expr);\n    return this.parseObj(false, refDestructuringErrors)\n\n  case types$1._function:\n    node = this.startNode();\n    this.next();\n    return this.parseFunction(node, 0)\n\n  case types$1._class:\n    return this.parseClass(this.startNode(), false)\n\n  case types$1._new:\n    return this.parseNew()\n\n  case types$1.backQuote:\n    return this.parseTemplate()\n\n  case types$1._import:\n    if (this.options.ecmaVersion >= 11) {\n      return this.parseExprImport(forNew)\n    } else {\n      return this.unexpected()\n    }\n\n  default:\n    return this.parseExprAtomDefault()\n  }\n};\n\npp$5.parseExprAtomDefault = function() {\n  this.unexpected();\n};\n\npp$5.parseExprImport = function(forNew) {\n  var node = this.startNode();\n\n  // Consume `import` as an identifier for `import.meta`.\n  // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`.\n  if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword import\"); }\n  this.next();\n\n  if (this.type === types$1.parenL && !forNew) {\n    return this.parseDynamicImport(node)\n  } else if (this.type === types$1.dot) {\n    var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n    meta.name = \"import\";\n    node.meta = this.finishNode(meta, \"Identifier\");\n    return this.parseImportMeta(node)\n  } else {\n    this.unexpected();\n  }\n};\n\npp$5.parseDynamicImport = function(node) {\n  this.next(); // skip `(`\n\n  // Parse node.source.\n  node.source = this.parseMaybeAssign();\n\n  if (this.options.ecmaVersion >= 16) {\n    if (!this.eat(types$1.parenR)) {\n      this.expect(types$1.comma);\n      if (!this.afterTrailingComma(types$1.parenR)) {\n        node.options = this.parseMaybeAssign();\n        if (!this.eat(types$1.parenR)) {\n          this.expect(types$1.comma);\n          if (!this.afterTrailingComma(types$1.parenR)) {\n            this.unexpected();\n          }\n        }\n      } else {\n        node.options = null;\n      }\n    } else {\n      node.options = null;\n    }\n  } else {\n    // Verify ending.\n    if (!this.eat(types$1.parenR)) {\n      var errorPos = this.start;\n      if (this.eat(types$1.comma) && this.eat(types$1.parenR)) {\n        this.raiseRecoverable(errorPos, \"Trailing comma is not allowed in import()\");\n      } else {\n        this.unexpected(errorPos);\n      }\n    }\n  }\n\n  return this.finishNode(node, \"ImportExpression\")\n};\n\npp$5.parseImportMeta = function(node) {\n  this.next(); // skip `.`\n\n  var containsEsc = this.containsEsc;\n  node.property = this.parseIdent(true);\n\n  if (node.property.name !== \"meta\")\n    { this.raiseRecoverable(node.property.start, \"The only valid meta property for import is 'import.meta'\"); }\n  if (containsEsc)\n    { this.raiseRecoverable(node.start, \"'import.meta' must not contain escaped characters\"); }\n  if (this.options.sourceType !== \"module\" && !this.options.allowImportExportEverywhere)\n    { this.raiseRecoverable(node.start, \"Cannot use 'import.meta' outside a module\"); }\n\n  return this.finishNode(node, \"MetaProperty\")\n};\n\npp$5.parseLiteral = function(value) {\n  var node = this.startNode();\n  node.value = value;\n  node.raw = this.input.slice(this.start, this.end);\n  if (node.raw.charCodeAt(node.raw.length - 1) === 110) { node.bigint = node.raw.slice(0, -1).replace(/_/g, \"\"); }\n  this.next();\n  return this.finishNode(node, \"Literal\")\n};\n\npp$5.parseParenExpression = function() {\n  this.expect(types$1.parenL);\n  var val = this.parseExpression();\n  this.expect(types$1.parenR);\n  return val\n};\n\npp$5.shouldParseArrow = function(exprList) {\n  return !this.canInsertSemicolon()\n};\n\npp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) {\n  var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;\n  if (this.options.ecmaVersion >= 6) {\n    this.next();\n\n    var innerStartPos = this.start, innerStartLoc = this.startLoc;\n    var exprList = [], first = true, lastIsComma = false;\n    var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;\n    this.yieldPos = 0;\n    this.awaitPos = 0;\n    // Do not save awaitIdentPos to allow checking awaits nested in parameters\n    while (this.type !== types$1.parenR) {\n      first ? first = false : this.expect(types$1.comma);\n      if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) {\n        lastIsComma = true;\n        break\n      } else if (this.type === types$1.ellipsis) {\n        spreadStart = this.start;\n        exprList.push(this.parseParenItem(this.parseRestBinding()));\n        if (this.type === types$1.comma) {\n          this.raiseRecoverable(\n            this.start,\n            \"Comma is not permitted after the rest element\"\n          );\n        }\n        break\n      } else {\n        exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem));\n      }\n    }\n    var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc;\n    this.expect(types$1.parenR);\n\n    if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) {\n      this.checkPatternErrors(refDestructuringErrors, false);\n      this.checkYieldAwaitInDefaultParams();\n      this.yieldPos = oldYieldPos;\n      this.awaitPos = oldAwaitPos;\n      return this.parseParenArrowList(startPos, startLoc, exprList, forInit)\n    }\n\n    if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); }\n    if (spreadStart) { this.unexpected(spreadStart); }\n    this.checkExpressionErrors(refDestructuringErrors, true);\n    this.yieldPos = oldYieldPos || this.yieldPos;\n    this.awaitPos = oldAwaitPos || this.awaitPos;\n\n    if (exprList.length > 1) {\n      val = this.startNodeAt(innerStartPos, innerStartLoc);\n      val.expressions = exprList;\n      this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n    } else {\n      val = exprList[0];\n    }\n  } else {\n    val = this.parseParenExpression();\n  }\n\n  if (this.options.preserveParens) {\n    var par = this.startNodeAt(startPos, startLoc);\n    par.expression = val;\n    return this.finishNode(par, \"ParenthesizedExpression\")\n  } else {\n    return val\n  }\n};\n\npp$5.parseParenItem = function(item) {\n  return item\n};\n\npp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) {\n  return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit)\n};\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nvar empty = [];\n\npp$5.parseNew = function() {\n  if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword new\"); }\n  var node = this.startNode();\n  this.next();\n  if (this.options.ecmaVersion >= 6 && this.type === types$1.dot) {\n    var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n    meta.name = \"new\";\n    node.meta = this.finishNode(meta, \"Identifier\");\n    this.next();\n    var containsEsc = this.containsEsc;\n    node.property = this.parseIdent(true);\n    if (node.property.name !== \"target\")\n      { this.raiseRecoverable(node.property.start, \"The only valid meta property for new is 'new.target'\"); }\n    if (containsEsc)\n      { this.raiseRecoverable(node.start, \"'new.target' must not contain escaped characters\"); }\n    if (!this.allowNewDotTarget)\n      { this.raiseRecoverable(node.start, \"'new.target' can only be used in functions and class static block\"); }\n    return this.finishNode(node, \"MetaProperty\")\n  }\n  var startPos = this.start, startLoc = this.startLoc;\n  node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false);\n  if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); }\n  else { node.arguments = empty; }\n  return this.finishNode(node, \"NewExpression\")\n};\n\n// Parse template expression.\n\npp$5.parseTemplateElement = function(ref) {\n  var isTagged = ref.isTagged;\n\n  var elem = this.startNode();\n  if (this.type === types$1.invalidTemplate) {\n    if (!isTagged) {\n      this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\");\n    }\n    elem.value = {\n      raw: this.value.replace(/\\r\\n?/g, \"\\n\"),\n      cooked: null\n    };\n  } else {\n    elem.value = {\n      raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n      cooked: this.value\n    };\n  }\n  this.next();\n  elem.tail = this.type === types$1.backQuote;\n  return this.finishNode(elem, \"TemplateElement\")\n};\n\npp$5.parseTemplate = function(ref) {\n  if ( ref === void 0 ) ref = {};\n  var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false;\n\n  var node = this.startNode();\n  this.next();\n  node.expressions = [];\n  var curElt = this.parseTemplateElement({isTagged: isTagged});\n  node.quasis = [curElt];\n  while (!curElt.tail) {\n    if (this.type === types$1.eof) { this.raise(this.pos, \"Unterminated template literal\"); }\n    this.expect(types$1.dollarBraceL);\n    node.expressions.push(this.parseExpression());\n    this.expect(types$1.braceR);\n    node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged}));\n  }\n  this.next();\n  return this.finishNode(node, \"TemplateLiteral\")\n};\n\npp$5.isAsyncProp = function(prop) {\n  return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n    (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) &&\n    !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\n// Parse an object literal or binding pattern.\n\npp$5.parseObj = function(isPattern, refDestructuringErrors) {\n  var node = this.startNode(), first = true, propHash = {};\n  node.properties = [];\n  this.next();\n  while (!this.eat(types$1.braceR)) {\n    if (!first) {\n      this.expect(types$1.comma);\n      if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break }\n    } else { first = false; }\n\n    var prop = this.parseProperty(isPattern, refDestructuringErrors);\n    if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); }\n    node.properties.push(prop);\n  }\n  return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n};\n\npp$5.parseProperty = function(isPattern, refDestructuringErrors) {\n  var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;\n  if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) {\n    if (isPattern) {\n      prop.argument = this.parseIdent(false);\n      if (this.type === types$1.comma) {\n        this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\");\n      }\n      return this.finishNode(prop, \"RestElement\")\n    }\n    // Parse argument.\n    prop.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n    // To disallow trailing comma via `this.toAssignable()`.\n    if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n      refDestructuringErrors.trailingComma = this.start;\n    }\n    // Finish\n    return this.finishNode(prop, \"SpreadElement\")\n  }\n  if (this.options.ecmaVersion >= 6) {\n    prop.method = false;\n    prop.shorthand = false;\n    if (isPattern || refDestructuringErrors) {\n      startPos = this.start;\n      startLoc = this.startLoc;\n    }\n    if (!isPattern)\n      { isGenerator = this.eat(types$1.star); }\n  }\n  var containsEsc = this.containsEsc;\n  this.parsePropertyName(prop);\n  if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n    isAsync = true;\n    isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star);\n    this.parsePropertyName(prop);\n  } else {\n    isAsync = false;\n  }\n  this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc);\n  return this.finishNode(prop, \"Property\")\n};\n\npp$5.parseGetterSetter = function(prop) {\n  var kind = prop.key.name;\n  this.parsePropertyName(prop);\n  prop.value = this.parseMethod(false);\n  prop.kind = kind;\n  var paramCount = prop.kind === \"get\" ? 0 : 1;\n  if (prop.value.params.length !== paramCount) {\n    var start = prop.value.start;\n    if (prop.kind === \"get\")\n      { this.raiseRecoverable(start, \"getter should have no params\"); }\n    else\n      { this.raiseRecoverable(start, \"setter should have exactly one param\"); }\n  } else {\n    if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n      { this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\"); }\n  }\n};\n\npp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n  if ((isGenerator || isAsync) && this.type === types$1.colon)\n    { this.unexpected(); }\n\n  if (this.eat(types$1.colon)) {\n    prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n    prop.kind = \"init\";\n  } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) {\n    if (isPattern) { this.unexpected(); }\n    prop.method = true;\n    prop.value = this.parseMethod(isGenerator, isAsync);\n    prop.kind = \"init\";\n  } else if (!isPattern && !containsEsc &&\n             this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n             (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n             (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) {\n    if (isGenerator || isAsync) { this.unexpected(); }\n    this.parseGetterSetter(prop);\n  } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n    if (isGenerator || isAsync) { this.unexpected(); }\n    this.checkUnreserved(prop.key);\n    if (prop.key.name === \"await\" && !this.awaitIdentPos)\n      { this.awaitIdentPos = startPos; }\n    if (isPattern) {\n      prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n    } else if (this.type === types$1.eq && refDestructuringErrors) {\n      if (refDestructuringErrors.shorthandAssign < 0)\n        { refDestructuringErrors.shorthandAssign = this.start; }\n      prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n    } else {\n      prop.value = this.copyNode(prop.key);\n    }\n    prop.kind = \"init\";\n    prop.shorthand = true;\n  } else { this.unexpected(); }\n};\n\npp$5.parsePropertyName = function(prop) {\n  if (this.options.ecmaVersion >= 6) {\n    if (this.eat(types$1.bracketL)) {\n      prop.computed = true;\n      prop.key = this.parseMaybeAssign();\n      this.expect(types$1.bracketR);\n      return prop.key\n    } else {\n      prop.computed = false;\n    }\n  }\n  return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\")\n};\n\n// Initialize empty function node.\n\npp$5.initFunction = function(node) {\n  node.id = null;\n  if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; }\n  if (this.options.ecmaVersion >= 8) { node.async = false; }\n};\n\n// Parse object or class method.\n\npp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n  var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n  this.initFunction(node);\n  if (this.options.ecmaVersion >= 6)\n    { node.generator = isGenerator; }\n  if (this.options.ecmaVersion >= 8)\n    { node.async = !!isAsync; }\n\n  this.yieldPos = 0;\n  this.awaitPos = 0;\n  this.awaitIdentPos = 0;\n  this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n\n  this.expect(types$1.parenL);\n  node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n  this.checkYieldAwaitInDefaultParams();\n  this.parseFunctionBody(node, false, true, false);\n\n  this.yieldPos = oldYieldPos;\n  this.awaitPos = oldAwaitPos;\n  this.awaitIdentPos = oldAwaitIdentPos;\n  return this.finishNode(node, \"FunctionExpression\")\n};\n\n// Parse arrow function expression with given parameters.\n\npp$5.parseArrowExpression = function(node, params, isAsync, forInit) {\n  var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n  this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);\n  this.initFunction(node);\n  if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; }\n\n  this.yieldPos = 0;\n  this.awaitPos = 0;\n  this.awaitIdentPos = 0;\n\n  node.params = this.toAssignableList(params, true);\n  this.parseFunctionBody(node, true, false, forInit);\n\n  this.yieldPos = oldYieldPos;\n  this.awaitPos = oldAwaitPos;\n  this.awaitIdentPos = oldAwaitIdentPos;\n  return this.finishNode(node, \"ArrowFunctionExpression\")\n};\n\n// Parse function body and check parameters.\n\npp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) {\n  var isExpression = isArrowFunction && this.type !== types$1.braceL;\n  var oldStrict = this.strict, useStrict = false;\n\n  if (isExpression) {\n    node.body = this.parseMaybeAssign(forInit);\n    node.expression = true;\n    this.checkParams(node, false);\n  } else {\n    var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params);\n    if (!oldStrict || nonSimple) {\n      useStrict = this.strictDirective(this.end);\n      // If this is a strict mode function, verify that argument names\n      // are not repeated, and it does not try to bind the words `eval`\n      // or `arguments`.\n      if (useStrict && nonSimple)\n        { this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\"); }\n    }\n    // Start a new scope with regard to labels and the `inFunction`\n    // flag (restore them to their old value afterwards).\n    var oldLabels = this.labels;\n    this.labels = [];\n    if (useStrict) { this.strict = true; }\n\n    // Add the params to varDeclaredNames to ensure that an error is thrown\n    // if a let/const declaration in the function clashes with one of the params.\n    this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params));\n    // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n    if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); }\n    node.body = this.parseBlock(false, undefined, useStrict && !oldStrict);\n    node.expression = false;\n    this.adaptDirectivePrologue(node.body.body);\n    this.labels = oldLabels;\n  }\n  this.exitScope();\n};\n\npp$5.isSimpleParamList = function(params) {\n  for (var i = 0, list = params; i < list.length; i += 1)\n    {\n    var param = list[i];\n\n    if (param.type !== \"Identifier\") { return false\n  } }\n  return true\n};\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp$5.checkParams = function(node, allowDuplicates) {\n  var nameHash = Object.create(null);\n  for (var i = 0, list = node.params; i < list.length; i += 1)\n    {\n    var param = list[i];\n\n    this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash);\n  }\n};\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n  var elts = [], first = true;\n  while (!this.eat(close)) {\n    if (!first) {\n      this.expect(types$1.comma);\n      if (allowTrailingComma && this.afterTrailingComma(close)) { break }\n    } else { first = false; }\n\n    var elt = (void 0);\n    if (allowEmpty && this.type === types$1.comma)\n      { elt = null; }\n    else if (this.type === types$1.ellipsis) {\n      elt = this.parseSpread(refDestructuringErrors);\n      if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0)\n        { refDestructuringErrors.trailingComma = this.start; }\n    } else {\n      elt = this.parseMaybeAssign(false, refDestructuringErrors);\n    }\n    elts.push(elt);\n  }\n  return elts\n};\n\npp$5.checkUnreserved = function(ref) {\n  var start = ref.start;\n  var end = ref.end;\n  var name = ref.name;\n\n  if (this.inGenerator && name === \"yield\")\n    { this.raiseRecoverable(start, \"Cannot use 'yield' as identifier inside a generator\"); }\n  if (this.inAsync && name === \"await\")\n    { this.raiseRecoverable(start, \"Cannot use 'await' as identifier inside an async function\"); }\n  if (!(this.currentThisScope().flags & SCOPE_VAR) && name === \"arguments\")\n    { this.raiseRecoverable(start, \"Cannot use 'arguments' in class field initializer\"); }\n  if (this.inClassStaticBlock && (name === \"arguments\" || name === \"await\"))\n    { this.raise(start, (\"Cannot use \" + name + \" in class static initialization block\")); }\n  if (this.keywords.test(name))\n    { this.raise(start, (\"Unexpected keyword '\" + name + \"'\")); }\n  if (this.options.ecmaVersion < 6 &&\n    this.input.slice(start, end).indexOf(\"\\\\\") !== -1) { return }\n  var re = this.strict ? this.reservedWordsStrict : this.reservedWords;\n  if (re.test(name)) {\n    if (!this.inAsync && name === \"await\")\n      { this.raiseRecoverable(start, \"Cannot use keyword 'await' outside an async function\"); }\n    this.raiseRecoverable(start, (\"The keyword '\" + name + \"' is reserved\"));\n  }\n};\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp$5.parseIdent = function(liberal) {\n  var node = this.parseIdentNode();\n  this.next(!!liberal);\n  this.finishNode(node, \"Identifier\");\n  if (!liberal) {\n    this.checkUnreserved(node);\n    if (node.name === \"await\" && !this.awaitIdentPos)\n      { this.awaitIdentPos = node.start; }\n  }\n  return node\n};\n\npp$5.parseIdentNode = function() {\n  var node = this.startNode();\n  if (this.type === types$1.name) {\n    node.name = this.value;\n  } else if (this.type.keyword) {\n    node.name = this.type.keyword;\n\n    // To fix https://github.com/acornjs/acorn/issues/575\n    // `class` and `function` keywords push new context into this.context.\n    // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n    // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n    if ((node.name === \"class\" || node.name === \"function\") &&\n      (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n      this.context.pop();\n    }\n    this.type = types$1.name;\n  } else {\n    this.unexpected();\n  }\n  return node\n};\n\npp$5.parsePrivateIdent = function() {\n  var node = this.startNode();\n  if (this.type === types$1.privateId) {\n    node.name = this.value;\n  } else {\n    this.unexpected();\n  }\n  this.next();\n  this.finishNode(node, \"PrivateIdentifier\");\n\n  // For validating existence\n  if (this.options.checkPrivateFields) {\n    if (this.privateNameStack.length === 0) {\n      this.raise(node.start, (\"Private field '#\" + (node.name) + \"' must be declared in an enclosing class\"));\n    } else {\n      this.privateNameStack[this.privateNameStack.length - 1].used.push(node);\n    }\n  }\n\n  return node\n};\n\n// Parses yield expression inside generator.\n\npp$5.parseYield = function(forInit) {\n  if (!this.yieldPos) { this.yieldPos = this.start; }\n\n  var node = this.startNode();\n  this.next();\n  if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) {\n    node.delegate = false;\n    node.argument = null;\n  } else {\n    node.delegate = this.eat(types$1.star);\n    node.argument = this.parseMaybeAssign(forInit);\n  }\n  return this.finishNode(node, \"YieldExpression\")\n};\n\npp$5.parseAwait = function(forInit) {\n  if (!this.awaitPos) { this.awaitPos = this.start; }\n\n  var node = this.startNode();\n  this.next();\n  node.argument = this.parseMaybeUnary(null, true, false, forInit);\n  return this.finishNode(node, \"AwaitExpression\")\n};\n\nvar pp$4 = Parser.prototype;\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp$4.raise = function(pos, message) {\n  var loc = getLineInfo(this.input, pos);\n  message += \" (\" + loc.line + \":\" + loc.column + \")\";\n  if (this.sourceFile) {\n    message += \" in \" + this.sourceFile;\n  }\n  var err = new SyntaxError(message);\n  err.pos = pos; err.loc = loc; err.raisedAt = this.pos;\n  throw err\n};\n\npp$4.raiseRecoverable = pp$4.raise;\n\npp$4.curPosition = function() {\n  if (this.options.locations) {\n    return new Position(this.curLine, this.pos - this.lineStart)\n  }\n};\n\nvar pp$3 = Parser.prototype;\n\nvar Scope = function Scope(flags) {\n  this.flags = flags;\n  // A list of var-declared names in the current lexical scope\n  this.var = [];\n  // A list of lexically-declared names in the current lexical scope\n  this.lexical = [];\n  // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n  this.functions = [];\n};\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp$3.enterScope = function(flags) {\n  this.scopeStack.push(new Scope(flags));\n};\n\npp$3.exitScope = function() {\n  this.scopeStack.pop();\n};\n\n// The spec says:\n// > At the top level of a function, or script, function declarations are\n// > treated like var declarations rather than like lexical declarations.\npp$3.treatFunctionsAsVarInScope = function(scope) {\n  return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)\n};\n\npp$3.declareName = function(name, bindingType, pos) {\n  var redeclared = false;\n  if (bindingType === BIND_LEXICAL) {\n    var scope = this.currentScope();\n    redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;\n    scope.lexical.push(name);\n    if (this.inModule && (scope.flags & SCOPE_TOP))\n      { delete this.undefinedExports[name]; }\n  } else if (bindingType === BIND_SIMPLE_CATCH) {\n    var scope$1 = this.currentScope();\n    scope$1.lexical.push(name);\n  } else if (bindingType === BIND_FUNCTION) {\n    var scope$2 = this.currentScope();\n    if (this.treatFunctionsAsVar)\n      { redeclared = scope$2.lexical.indexOf(name) > -1; }\n    else\n      { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; }\n    scope$2.functions.push(name);\n  } else {\n    for (var i = this.scopeStack.length - 1; i >= 0; --i) {\n      var scope$3 = this.scopeStack[i];\n      if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) ||\n          !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) {\n        redeclared = true;\n        break\n      }\n      scope$3.var.push(name);\n      if (this.inModule && (scope$3.flags & SCOPE_TOP))\n        { delete this.undefinedExports[name]; }\n      if (scope$3.flags & SCOPE_VAR) { break }\n    }\n  }\n  if (redeclared) { this.raiseRecoverable(pos, (\"Identifier '\" + name + \"' has already been declared\")); }\n};\n\npp$3.checkLocalExport = function(id) {\n  // scope.functions must be empty as Module code is always strict.\n  if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n      this.scopeStack[0].var.indexOf(id.name) === -1) {\n    this.undefinedExports[id.name] = id;\n  }\n};\n\npp$3.currentScope = function() {\n  return this.scopeStack[this.scopeStack.length - 1]\n};\n\npp$3.currentVarScope = function() {\n  for (var i = this.scopeStack.length - 1;; i--) {\n    var scope = this.scopeStack[i];\n    if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK)) { return scope }\n  }\n};\n\n// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\npp$3.currentThisScope = function() {\n  for (var i = this.scopeStack.length - 1;; i--) {\n    var scope = this.scopeStack[i];\n    if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) &&\n        !(scope.flags & SCOPE_ARROW)) { return scope }\n  }\n};\n\nvar Node = function Node(parser, pos, loc) {\n  this.type = \"\";\n  this.start = pos;\n  this.end = 0;\n  if (parser.options.locations)\n    { this.loc = new SourceLocation(parser, loc); }\n  if (parser.options.directSourceFile)\n    { this.sourceFile = parser.options.directSourceFile; }\n  if (parser.options.ranges)\n    { this.range = [pos, 0]; }\n};\n\n// Start an AST node, attaching a start offset.\n\nvar pp$2 = Parser.prototype;\n\npp$2.startNode = function() {\n  return new Node(this, this.start, this.startLoc)\n};\n\npp$2.startNodeAt = function(pos, loc) {\n  return new Node(this, pos, loc)\n};\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n  node.type = type;\n  node.end = pos;\n  if (this.options.locations)\n    { node.loc.end = loc; }\n  if (this.options.ranges)\n    { node.range[1] = pos; }\n  return node\n}\n\npp$2.finishNode = function(node, type) {\n  return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n};\n\n// Finish node at given position\n\npp$2.finishNodeAt = function(node, type, pos, loc) {\n  return finishNodeAt.call(this, node, type, pos, loc)\n};\n\npp$2.copyNode = function(node) {\n  var newNode = new Node(this, node.start, this.startLoc);\n  for (var prop in node) { newNode[prop] = node[prop]; }\n  return newNode\n};\n\n// This file was generated by \"bin/generate-unicode-script-values.js\". Do not modify manually!\nvar scriptValuesAddedInUnicode = \"Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz\";\n\n// This file contains Unicode properties extracted from the ECMAScript specification.\n// The lists are extracted like so:\n// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)\n\n// #table-binary-unicode-properties\nvar ecma9BinaryProperties = \"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\";\nvar ecma10BinaryProperties = ecma9BinaryProperties + \" Extended_Pictographic\";\nvar ecma11BinaryProperties = ecma10BinaryProperties;\nvar ecma12BinaryProperties = ecma11BinaryProperties + \" EBase EComp EMod EPres ExtPict\";\nvar ecma13BinaryProperties = ecma12BinaryProperties;\nvar ecma14BinaryProperties = ecma13BinaryProperties;\n\nvar unicodeBinaryProperties = {\n  9: ecma9BinaryProperties,\n  10: ecma10BinaryProperties,\n  11: ecma11BinaryProperties,\n  12: ecma12BinaryProperties,\n  13: ecma13BinaryProperties,\n  14: ecma14BinaryProperties\n};\n\n// #table-binary-unicode-properties-of-strings\nvar ecma14BinaryPropertiesOfStrings = \"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji\";\n\nvar unicodeBinaryPropertiesOfStrings = {\n  9: \"\",\n  10: \"\",\n  11: \"\",\n  12: \"\",\n  13: \"\",\n  14: ecma14BinaryPropertiesOfStrings\n};\n\n// #table-unicode-general-category-values\nvar unicodeGeneralCategoryValues = \"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\";\n\n// #table-unicode-script-values\nvar ecma9ScriptValues = \"Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\";\nvar ecma10ScriptValues = ecma9ScriptValues + \" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\";\nvar ecma11ScriptValues = ecma10ScriptValues + \" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho\";\nvar ecma12ScriptValues = ecma11ScriptValues + \" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi\";\nvar ecma13ScriptValues = ecma12ScriptValues + \" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith\";\nvar ecma14ScriptValues = ecma13ScriptValues + \" \" + scriptValuesAddedInUnicode;\n\nvar unicodeScriptValues = {\n  9: ecma9ScriptValues,\n  10: ecma10ScriptValues,\n  11: ecma11ScriptValues,\n  12: ecma12ScriptValues,\n  13: ecma13ScriptValues,\n  14: ecma14ScriptValues\n};\n\nvar data = {};\nfunction buildUnicodeData(ecmaVersion) {\n  var d = data[ecmaVersion] = {\n    binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + \" \" + unicodeGeneralCategoryValues),\n    binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]),\n    nonBinary: {\n      General_Category: wordsRegexp(unicodeGeneralCategoryValues),\n      Script: wordsRegexp(unicodeScriptValues[ecmaVersion])\n    }\n  };\n  d.nonBinary.Script_Extensions = d.nonBinary.Script;\n\n  d.nonBinary.gc = d.nonBinary.General_Category;\n  d.nonBinary.sc = d.nonBinary.Script;\n  d.nonBinary.scx = d.nonBinary.Script_Extensions;\n}\n\nfor (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) {\n  var ecmaVersion = list[i];\n\n  buildUnicodeData(ecmaVersion);\n}\n\nvar pp$1 = Parser.prototype;\n\n// Track disjunction structure to determine whether a duplicate\n// capture group name is allowed because it is in a separate branch.\nvar BranchID = function BranchID(parent, base) {\n  // Parent disjunction branch\n  this.parent = parent;\n  // Identifies this set of sibling branches\n  this.base = base || this;\n};\n\nBranchID.prototype.separatedFrom = function separatedFrom (alt) {\n  // A branch is separate from another branch if they or any of\n  // their parents are siblings in a given disjunction\n  for (var self = this; self; self = self.parent) {\n    for (var other = alt; other; other = other.parent) {\n      if (self.base === other.base && self !== other) { return true }\n    }\n  }\n  return false\n};\n\nBranchID.prototype.sibling = function sibling () {\n  return new BranchID(this.parent, this.base)\n};\n\nvar RegExpValidationState = function RegExpValidationState(parser) {\n  this.parser = parser;\n  this.validFlags = \"gim\" + (parser.options.ecmaVersion >= 6 ? \"uy\" : \"\") + (parser.options.ecmaVersion >= 9 ? \"s\" : \"\") + (parser.options.ecmaVersion >= 13 ? \"d\" : \"\") + (parser.options.ecmaVersion >= 15 ? \"v\" : \"\");\n  this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion];\n  this.source = \"\";\n  this.flags = \"\";\n  this.start = 0;\n  this.switchU = false;\n  this.switchV = false;\n  this.switchN = false;\n  this.pos = 0;\n  this.lastIntValue = 0;\n  this.lastStringValue = \"\";\n  this.lastAssertionIsQuantifiable = false;\n  this.numCapturingParens = 0;\n  this.maxBackReference = 0;\n  this.groupNames = Object.create(null);\n  this.backReferenceNames = [];\n  this.branchID = null;\n};\n\nRegExpValidationState.prototype.reset = function reset (start, pattern, flags) {\n  var unicodeSets = flags.indexOf(\"v\") !== -1;\n  var unicode = flags.indexOf(\"u\") !== -1;\n  this.start = start | 0;\n  this.source = pattern + \"\";\n  this.flags = flags;\n  if (unicodeSets && this.parser.options.ecmaVersion >= 15) {\n    this.switchU = true;\n    this.switchV = true;\n    this.switchN = true;\n  } else {\n    this.switchU = unicode && this.parser.options.ecmaVersion >= 6;\n    this.switchV = false;\n    this.switchN = unicode && this.parser.options.ecmaVersion >= 9;\n  }\n};\n\nRegExpValidationState.prototype.raise = function raise (message) {\n  this.parser.raiseRecoverable(this.start, (\"Invalid regular expression: /\" + (this.source) + \"/: \" + message));\n};\n\n// If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\nRegExpValidationState.prototype.at = function at (i, forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  var s = this.source;\n  var l = s.length;\n  if (i >= l) {\n    return -1\n  }\n  var c = s.charCodeAt(i);\n  if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n    return c\n  }\n  var next = s.charCodeAt(i + 1);\n  return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c\n};\n\nRegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  var s = this.source;\n  var l = s.length;\n  if (i >= l) {\n    return l\n  }\n  var c = s.charCodeAt(i), next;\n  if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l ||\n      (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) {\n    return i + 1\n  }\n  return i + 2\n};\n\nRegExpValidationState.prototype.current = function current (forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  return this.at(this.pos, forceU)\n};\n\nRegExpValidationState.prototype.lookahead = function lookahead (forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  return this.at(this.nextIndex(this.pos, forceU), forceU)\n};\n\nRegExpValidationState.prototype.advance = function advance (forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  this.pos = this.nextIndex(this.pos, forceU);\n};\n\nRegExpValidationState.prototype.eat = function eat (ch, forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  if (this.current(forceU) === ch) {\n    this.advance(forceU);\n    return true\n  }\n  return false\n};\n\nRegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  var pos = this.pos;\n  for (var i = 0, list = chs; i < list.length; i += 1) {\n    var ch = list[i];\n\n      var current = this.at(pos, forceU);\n    if (current === -1 || current !== ch) {\n      return false\n    }\n    pos = this.nextIndex(pos, forceU);\n  }\n  this.pos = pos;\n  return true\n};\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpFlags = function(state) {\n  var validFlags = state.validFlags;\n  var flags = state.flags;\n\n  var u = false;\n  var v = false;\n\n  for (var i = 0; i < flags.length; i++) {\n    var flag = flags.charAt(i);\n    if (validFlags.indexOf(flag) === -1) {\n      this.raise(state.start, \"Invalid regular expression flag\");\n    }\n    if (flags.indexOf(flag, i + 1) > -1) {\n      this.raise(state.start, \"Duplicate regular expression flag\");\n    }\n    if (flag === \"u\") { u = true; }\n    if (flag === \"v\") { v = true; }\n  }\n  if (this.options.ecmaVersion >= 15 && u && v) {\n    this.raise(state.start, \"Invalid regular expression flag\");\n  }\n};\n\nfunction hasProp(obj) {\n  for (var _ in obj) { return true }\n  return false\n}\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpPattern = function(state) {\n  this.regexp_pattern(state);\n\n  // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n  // parsing contains a |GroupName|, reparse with the goal symbol\n  // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n  // exception if _P_ did not conform to the grammar, if any elements of _P_\n  // were not matched by the parse, or if any Early Error conditions exist.\n  if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) {\n    state.switchN = true;\n    this.regexp_pattern(state);\n  }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp$1.regexp_pattern = function(state) {\n  state.pos = 0;\n  state.lastIntValue = 0;\n  state.lastStringValue = \"\";\n  state.lastAssertionIsQuantifiable = false;\n  state.numCapturingParens = 0;\n  state.maxBackReference = 0;\n  state.groupNames = Object.create(null);\n  state.backReferenceNames.length = 0;\n  state.branchID = null;\n\n  this.regexp_disjunction(state);\n\n  if (state.pos !== state.source.length) {\n    // Make the same messages as V8.\n    if (state.eat(0x29 /* ) */)) {\n      state.raise(\"Unmatched ')'\");\n    }\n    if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) {\n      state.raise(\"Lone quantifier brackets\");\n    }\n  }\n  if (state.maxBackReference > state.numCapturingParens) {\n    state.raise(\"Invalid escape\");\n  }\n  for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) {\n    var name = list[i];\n\n    if (!state.groupNames[name]) {\n      state.raise(\"Invalid named capture referenced\");\n    }\n  }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp$1.regexp_disjunction = function(state) {\n  var trackDisjunction = this.options.ecmaVersion >= 16;\n  if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); }\n  this.regexp_alternative(state);\n  while (state.eat(0x7C /* | */)) {\n    if (trackDisjunction) { state.branchID = state.branchID.sibling(); }\n    this.regexp_alternative(state);\n  }\n  if (trackDisjunction) { state.branchID = state.branchID.parent; }\n\n  // Make the same message as V8.\n  if (this.regexp_eatQuantifier(state, true)) {\n    state.raise(\"Nothing to repeat\");\n  }\n  if (state.eat(0x7B /* { */)) {\n    state.raise(\"Lone quantifier brackets\");\n  }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp$1.regexp_alternative = function(state) {\n  while (state.pos < state.source.length && this.regexp_eatTerm(state)) {}\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp$1.regexp_eatTerm = function(state) {\n  if (this.regexp_eatAssertion(state)) {\n    // Handle `QuantifiableAssertion Quantifier` alternative.\n    // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n    // is a QuantifiableAssertion.\n    if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n      // Make the same message as V8.\n      if (state.switchU) {\n        state.raise(\"Invalid quantifier\");\n      }\n    }\n    return true\n  }\n\n  if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n    this.regexp_eatQuantifier(state);\n    return true\n  }\n\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp$1.regexp_eatAssertion = function(state) {\n  var start = state.pos;\n  state.lastAssertionIsQuantifiable = false;\n\n  // ^, $\n  if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n    return true\n  }\n\n  // \\b \\B\n  if (state.eat(0x5C /* \\ */)) {\n    if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n      return true\n    }\n    state.pos = start;\n  }\n\n  // Lookahead / Lookbehind\n  if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n    var lookbehind = false;\n    if (this.options.ecmaVersion >= 9) {\n      lookbehind = state.eat(0x3C /* < */);\n    }\n    if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n      this.regexp_disjunction(state);\n      if (!state.eat(0x29 /* ) */)) {\n        state.raise(\"Unterminated group\");\n      }\n      state.lastAssertionIsQuantifiable = !lookbehind;\n      return true\n    }\n  }\n\n  state.pos = start;\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp$1.regexp_eatQuantifier = function(state, noError) {\n  if ( noError === void 0 ) noError = false;\n\n  if (this.regexp_eatQuantifierPrefix(state, noError)) {\n    state.eat(0x3F /* ? */);\n    return true\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp$1.regexp_eatQuantifierPrefix = function(state, noError) {\n  return (\n    state.eat(0x2A /* * */) ||\n    state.eat(0x2B /* + */) ||\n    state.eat(0x3F /* ? */) ||\n    this.regexp_eatBracedQuantifier(state, noError)\n  )\n};\npp$1.regexp_eatBracedQuantifier = function(state, noError) {\n  var start = state.pos;\n  if (state.eat(0x7B /* { */)) {\n    var min = 0, max = -1;\n    if (this.regexp_eatDecimalDigits(state)) {\n      min = state.lastIntValue;\n      if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n        max = state.lastIntValue;\n      }\n      if (state.eat(0x7D /* } */)) {\n        // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n        if (max !== -1 && max < min && !noError) {\n          state.raise(\"numbers out of order in {} quantifier\");\n        }\n        return true\n      }\n    }\n    if (state.switchU && !noError) {\n      state.raise(\"Incomplete quantifier\");\n    }\n    state.pos = start;\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp$1.regexp_eatAtom = function(state) {\n  return (\n    this.regexp_eatPatternCharacters(state) ||\n    state.eat(0x2E /* . */) ||\n    this.regexp_eatReverseSolidusAtomEscape(state) ||\n    this.regexp_eatCharacterClass(state) ||\n    this.regexp_eatUncapturingGroup(state) ||\n    this.regexp_eatCapturingGroup(state)\n  )\n};\npp$1.regexp_eatReverseSolidusAtomEscape = function(state) {\n  var start = state.pos;\n  if (state.eat(0x5C /* \\ */)) {\n    if (this.regexp_eatAtomEscape(state)) {\n      return true\n    }\n    state.pos = start;\n  }\n  return false\n};\npp$1.regexp_eatUncapturingGroup = function(state) {\n  var start = state.pos;\n  if (state.eat(0x28 /* ( */)) {\n    if (state.eat(0x3F /* ? */)) {\n      if (this.options.ecmaVersion >= 16) {\n        var addModifiers = this.regexp_eatModifiers(state);\n        var hasHyphen = state.eat(0x2D /* - */);\n        if (addModifiers || hasHyphen) {\n          for (var i = 0; i < addModifiers.length; i++) {\n            var modifier = addModifiers.charAt(i);\n            if (addModifiers.indexOf(modifier, i + 1) > -1) {\n              state.raise(\"Duplicate regular expression modifiers\");\n            }\n          }\n          if (hasHyphen) {\n            var removeModifiers = this.regexp_eatModifiers(state);\n            if (!addModifiers && !removeModifiers && state.current() === 0x3A /* : */) {\n              state.raise(\"Invalid regular expression modifiers\");\n            }\n            for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) {\n              var modifier$1 = removeModifiers.charAt(i$1);\n              if (\n                removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 ||\n                addModifiers.indexOf(modifier$1) > -1\n              ) {\n                state.raise(\"Duplicate regular expression modifiers\");\n              }\n            }\n          }\n        }\n      }\n      if (state.eat(0x3A /* : */)) {\n        this.regexp_disjunction(state);\n        if (state.eat(0x29 /* ) */)) {\n          return true\n        }\n        state.raise(\"Unterminated group\");\n      }\n    }\n    state.pos = start;\n  }\n  return false\n};\npp$1.regexp_eatCapturingGroup = function(state) {\n  if (state.eat(0x28 /* ( */)) {\n    if (this.options.ecmaVersion >= 9) {\n      this.regexp_groupSpecifier(state);\n    } else if (state.current() === 0x3F /* ? */) {\n      state.raise(\"Invalid group\");\n    }\n    this.regexp_disjunction(state);\n    if (state.eat(0x29 /* ) */)) {\n      state.numCapturingParens += 1;\n      return true\n    }\n    state.raise(\"Unterminated group\");\n  }\n  return false\n};\n// RegularExpressionModifiers ::\n//   [empty]\n//   RegularExpressionModifiers RegularExpressionModifier\npp$1.regexp_eatModifiers = function(state) {\n  var modifiers = \"\";\n  var ch = 0;\n  while ((ch = state.current()) !== -1 && isRegularExpressionModifier(ch)) {\n    modifiers += codePointToString(ch);\n    state.advance();\n  }\n  return modifiers\n};\n// RegularExpressionModifier :: one of\n//   `i` `m` `s`\nfunction isRegularExpressionModifier(ch) {\n  return ch === 0x69 /* i */ || ch === 0x6d /* m */ || ch === 0x73 /* s */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp$1.regexp_eatExtendedAtom = function(state) {\n  return (\n    state.eat(0x2E /* . */) ||\n    this.regexp_eatReverseSolidusAtomEscape(state) ||\n    this.regexp_eatCharacterClass(state) ||\n    this.regexp_eatUncapturingGroup(state) ||\n    this.regexp_eatCapturingGroup(state) ||\n    this.regexp_eatInvalidBracedQuantifier(state) ||\n    this.regexp_eatExtendedPatternCharacter(state)\n  )\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp$1.regexp_eatInvalidBracedQuantifier = function(state) {\n  if (this.regexp_eatBracedQuantifier(state, true)) {\n    state.raise(\"Nothing to repeat\");\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp$1.regexp_eatSyntaxCharacter = function(state) {\n  var ch = state.current();\n  if (isSyntaxCharacter(ch)) {\n    state.lastIntValue = ch;\n    state.advance();\n    return true\n  }\n  return false\n};\nfunction isSyntaxCharacter(ch) {\n  return (\n    ch === 0x24 /* $ */ ||\n    ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n    ch === 0x2E /* . */ ||\n    ch === 0x3F /* ? */ ||\n    ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n    ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n  )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp$1.regexp_eatPatternCharacters = function(state) {\n  var start = state.pos;\n  var ch = 0;\n  while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n    state.advance();\n  }\n  return state.pos !== start\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp$1.regexp_eatExtendedPatternCharacter = function(state) {\n  var ch = state.current();\n  if (\n    ch !== -1 &&\n    ch !== 0x24 /* $ */ &&\n    !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n    ch !== 0x2E /* . */ &&\n    ch !== 0x3F /* ? */ &&\n    ch !== 0x5B /* [ */ &&\n    ch !== 0x5E /* ^ */ &&\n    ch !== 0x7C /* | */\n  ) {\n    state.advance();\n    return true\n  }\n  return false\n};\n\n// GroupSpecifier ::\n//   [empty]\n//   `?` GroupName\npp$1.regexp_groupSpecifier = function(state) {\n  if (state.eat(0x3F /* ? */)) {\n    if (!this.regexp_eatGroupName(state)) { state.raise(\"Invalid group\"); }\n    var trackDisjunction = this.options.ecmaVersion >= 16;\n    var known = state.groupNames[state.lastStringValue];\n    if (known) {\n      if (trackDisjunction) {\n        for (var i = 0, list = known; i < list.length; i += 1) {\n          var altID = list[i];\n\n          if (!altID.separatedFrom(state.branchID))\n            { state.raise(\"Duplicate capture group name\"); }\n        }\n      } else {\n        state.raise(\"Duplicate capture group name\");\n      }\n    }\n    if (trackDisjunction) {\n      (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID);\n    } else {\n      state.groupNames[state.lastStringValue] = true;\n    }\n  }\n};\n\n// GroupName ::\n//   `<` RegExpIdentifierName `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatGroupName = function(state) {\n  state.lastStringValue = \"\";\n  if (state.eat(0x3C /* < */)) {\n    if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n      return true\n    }\n    state.raise(\"Invalid capture group name\");\n  }\n  return false\n};\n\n// RegExpIdentifierName ::\n//   RegExpIdentifierStart\n//   RegExpIdentifierName RegExpIdentifierPart\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatRegExpIdentifierName = function(state) {\n  state.lastStringValue = \"\";\n  if (this.regexp_eatRegExpIdentifierStart(state)) {\n    state.lastStringValue += codePointToString(state.lastIntValue);\n    while (this.regexp_eatRegExpIdentifierPart(state)) {\n      state.lastStringValue += codePointToString(state.lastIntValue);\n    }\n    return true\n  }\n  return false\n};\n\n// RegExpIdentifierStart ::\n//   UnicodeIDStart\n//   `$`\n//   `_`\n//   `\\` RegExpUnicodeEscapeSequence[+U]\npp$1.regexp_eatRegExpIdentifierStart = function(state) {\n  var start = state.pos;\n  var forceU = this.options.ecmaVersion >= 11;\n  var ch = state.current(forceU);\n  state.advance(forceU);\n\n  if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n    ch = state.lastIntValue;\n  }\n  if (isRegExpIdentifierStart(ch)) {\n    state.lastIntValue = ch;\n    return true\n  }\n\n  state.pos = start;\n  return false\n};\nfunction isRegExpIdentifierStart(ch) {\n  return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart ::\n//   UnicodeIDContinue\n//   `$`\n//   `_`\n//   `\\` RegExpUnicodeEscapeSequence[+U]\n//   <ZWNJ>\n//   <ZWJ>\npp$1.regexp_eatRegExpIdentifierPart = function(state) {\n  var start = state.pos;\n  var forceU = this.options.ecmaVersion >= 11;\n  var ch = state.current(forceU);\n  state.advance(forceU);\n\n  if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n    ch = state.lastIntValue;\n  }\n  if (isRegExpIdentifierPart(ch)) {\n    state.lastIntValue = ch;\n    return true\n  }\n\n  state.pos = start;\n  return false\n};\nfunction isRegExpIdentifierPart(ch) {\n  return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp$1.regexp_eatAtomEscape = function(state) {\n  if (\n    this.regexp_eatBackReference(state) ||\n    this.regexp_eatCharacterClassEscape(state) ||\n    this.regexp_eatCharacterEscape(state) ||\n    (state.switchN && this.regexp_eatKGroupName(state))\n  ) {\n    return true\n  }\n  if (state.switchU) {\n    // Make the same message as V8.\n    if (state.current() === 0x63 /* c */) {\n      state.raise(\"Invalid unicode escape\");\n    }\n    state.raise(\"Invalid escape\");\n  }\n  return false\n};\npp$1.regexp_eatBackReference = function(state) {\n  var start = state.pos;\n  if (this.regexp_eatDecimalEscape(state)) {\n    var n = state.lastIntValue;\n    if (state.switchU) {\n      // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n      if (n > state.maxBackReference) {\n        state.maxBackReference = n;\n      }\n      return true\n    }\n    if (n <= state.numCapturingParens) {\n      return true\n    }\n    state.pos = start;\n  }\n  return false\n};\npp$1.regexp_eatKGroupName = function(state) {\n  if (state.eat(0x6B /* k */)) {\n    if (this.regexp_eatGroupName(state)) {\n      state.backReferenceNames.push(state.lastStringValue);\n      return true\n    }\n    state.raise(\"Invalid named reference\");\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp$1.regexp_eatCharacterEscape = function(state) {\n  return (\n    this.regexp_eatControlEscape(state) ||\n    this.regexp_eatCControlLetter(state) ||\n    this.regexp_eatZero(state) ||\n    this.regexp_eatHexEscapeSequence(state) ||\n    this.regexp_eatRegExpUnicodeEscapeSequence(state, false) ||\n    (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n    this.regexp_eatIdentityEscape(state)\n  )\n};\npp$1.regexp_eatCControlLetter = function(state) {\n  var start = state.pos;\n  if (state.eat(0x63 /* c */)) {\n    if (this.regexp_eatControlLetter(state)) {\n      return true\n    }\n    state.pos = start;\n  }\n  return false\n};\npp$1.regexp_eatZero = function(state) {\n  if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n    state.lastIntValue = 0;\n    state.advance();\n    return true\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp$1.regexp_eatControlEscape = function(state) {\n  var ch = state.current();\n  if (ch === 0x74 /* t */) {\n    state.lastIntValue = 0x09; /* \\t */\n    state.advance();\n    return true\n  }\n  if (ch === 0x6E /* n */) {\n    state.lastIntValue = 0x0A; /* \\n */\n    state.advance();\n    return true\n  }\n  if (ch === 0x76 /* v */) {\n    state.lastIntValue = 0x0B; /* \\v */\n    state.advance();\n    return true\n  }\n  if (ch === 0x66 /* f */) {\n    state.lastIntValue = 0x0C; /* \\f */\n    state.advance();\n    return true\n  }\n  if (ch === 0x72 /* r */) {\n    state.lastIntValue = 0x0D; /* \\r */\n    state.advance();\n    return true\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp$1.regexp_eatControlLetter = function(state) {\n  var ch = state.current();\n  if (isControlLetter(ch)) {\n    state.lastIntValue = ch % 0x20;\n    state.advance();\n    return true\n  }\n  return false\n};\nfunction isControlLetter(ch) {\n  return (\n    (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n    (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n  )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {\n  if ( forceU === void 0 ) forceU = false;\n\n  var start = state.pos;\n  var switchU = forceU || state.switchU;\n\n  if (state.eat(0x75 /* u */)) {\n    if (this.regexp_eatFixedHexDigits(state, 4)) {\n      var lead = state.lastIntValue;\n      if (switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n        var leadSurrogateEnd = state.pos;\n        if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n          var trail = state.lastIntValue;\n          if (trail >= 0xDC00 && trail <= 0xDFFF) {\n            state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n            return true\n          }\n        }\n        state.pos = leadSurrogateEnd;\n        state.lastIntValue = lead;\n      }\n      return true\n    }\n    if (\n      switchU &&\n      state.eat(0x7B /* { */) &&\n      this.regexp_eatHexDigits(state) &&\n      state.eat(0x7D /* } */) &&\n      isValidUnicode(state.lastIntValue)\n    ) {\n      return true\n    }\n    if (switchU) {\n      state.raise(\"Invalid unicode escape\");\n    }\n    state.pos = start;\n  }\n\n  return false\n};\nfunction isValidUnicode(ch) {\n  return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp$1.regexp_eatIdentityEscape = function(state) {\n  if (state.switchU) {\n    if (this.regexp_eatSyntaxCharacter(state)) {\n      return true\n    }\n    if (state.eat(0x2F /* / */)) {\n      state.lastIntValue = 0x2F; /* / */\n      return true\n    }\n    return false\n  }\n\n  var ch = state.current();\n  if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n    state.lastIntValue = ch;\n    state.advance();\n    return true\n  }\n\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp$1.regexp_eatDecimalEscape = function(state) {\n  state.lastIntValue = 0;\n  var ch = state.current();\n  if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n    do {\n      state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n      state.advance();\n    } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n    return true\n  }\n  return false\n};\n\n// Return values used by character set parsing methods, needed to\n// forbid negation of sets that can match strings.\nvar CharSetNone = 0; // Nothing parsed\nvar CharSetOk = 1; // Construct parsed, cannot contain strings\nvar CharSetString = 2; // Construct parsed, can contain strings\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp$1.regexp_eatCharacterClassEscape = function(state) {\n  var ch = state.current();\n\n  if (isCharacterClassEscape(ch)) {\n    state.lastIntValue = -1;\n    state.advance();\n    return CharSetOk\n  }\n\n  var negate = false;\n  if (\n    state.switchU &&\n    this.options.ecmaVersion >= 9 &&\n    ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */)\n  ) {\n    state.lastIntValue = -1;\n    state.advance();\n    var result;\n    if (\n      state.eat(0x7B /* { */) &&\n      (result = this.regexp_eatUnicodePropertyValueExpression(state)) &&\n      state.eat(0x7D /* } */)\n    ) {\n      if (negate && result === CharSetString) { state.raise(\"Invalid property name\"); }\n      return result\n    }\n    state.raise(\"Invalid property name\");\n  }\n\n  return CharSetNone\n};\n\nfunction isCharacterClassEscape(ch) {\n  return (\n    ch === 0x64 /* d */ ||\n    ch === 0x44 /* D */ ||\n    ch === 0x73 /* s */ ||\n    ch === 0x53 /* S */ ||\n    ch === 0x77 /* w */ ||\n    ch === 0x57 /* W */\n  )\n}\n\n// UnicodePropertyValueExpression ::\n//   UnicodePropertyName `=` UnicodePropertyValue\n//   LoneUnicodePropertyNameOrValue\npp$1.regexp_eatUnicodePropertyValueExpression = function(state) {\n  var start = state.pos;\n\n  // UnicodePropertyName `=` UnicodePropertyValue\n  if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n    var name = state.lastStringValue;\n    if (this.regexp_eatUnicodePropertyValue(state)) {\n      var value = state.lastStringValue;\n      this.regexp_validateUnicodePropertyNameAndValue(state, name, value);\n      return CharSetOk\n    }\n  }\n  state.pos = start;\n\n  // LoneUnicodePropertyNameOrValue\n  if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n    var nameOrValue = state.lastStringValue;\n    return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n  }\n  return CharSetNone\n};\n\npp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n  if (!hasOwn(state.unicodeProperties.nonBinary, name))\n    { state.raise(\"Invalid property name\"); }\n  if (!state.unicodeProperties.nonBinary[name].test(value))\n    { state.raise(\"Invalid property value\"); }\n};\n\npp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n  if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk }\n  if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString }\n  state.raise(\"Invalid property name\");\n};\n\n// UnicodePropertyName ::\n//   UnicodePropertyNameCharacters\npp$1.regexp_eatUnicodePropertyName = function(state) {\n  var ch = 0;\n  state.lastStringValue = \"\";\n  while (isUnicodePropertyNameCharacter(ch = state.current())) {\n    state.lastStringValue += codePointToString(ch);\n    state.advance();\n  }\n  return state.lastStringValue !== \"\"\n};\n\nfunction isUnicodePropertyNameCharacter(ch) {\n  return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n//   UnicodePropertyValueCharacters\npp$1.regexp_eatUnicodePropertyValue = function(state) {\n  var ch = 0;\n  state.lastStringValue = \"\";\n  while (isUnicodePropertyValueCharacter(ch = state.current())) {\n    state.lastStringValue += codePointToString(ch);\n    state.advance();\n  }\n  return state.lastStringValue !== \"\"\n};\nfunction isUnicodePropertyValueCharacter(ch) {\n  return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n//   UnicodePropertyValueCharacters\npp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n  return this.regexp_eatUnicodePropertyValue(state)\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp$1.regexp_eatCharacterClass = function(state) {\n  if (state.eat(0x5B /* [ */)) {\n    var negate = state.eat(0x5E /* ^ */);\n    var result = this.regexp_classContents(state);\n    if (!state.eat(0x5D /* ] */))\n      { state.raise(\"Unterminated character class\"); }\n    if (negate && result === CharSetString)\n      { state.raise(\"Negated character class may contain strings\"); }\n    return true\n  }\n  return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassContents\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\npp$1.regexp_classContents = function(state) {\n  if (state.current() === 0x5D /* ] */) { return CharSetOk }\n  if (state.switchV) { return this.regexp_classSetExpression(state) }\n  this.regexp_nonEmptyClassRanges(state);\n  return CharSetOk\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp$1.regexp_nonEmptyClassRanges = function(state) {\n  while (this.regexp_eatClassAtom(state)) {\n    var left = state.lastIntValue;\n    if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n      var right = state.lastIntValue;\n      if (state.switchU && (left === -1 || right === -1)) {\n        state.raise(\"Invalid character class\");\n      }\n      if (left !== -1 && right !== -1 && left > right) {\n        state.raise(\"Range out of order in character class\");\n      }\n    }\n  }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp$1.regexp_eatClassAtom = function(state) {\n  var start = state.pos;\n\n  if (state.eat(0x5C /* \\ */)) {\n    if (this.regexp_eatClassEscape(state)) {\n      return true\n    }\n    if (state.switchU) {\n      // Make the same message as V8.\n      var ch$1 = state.current();\n      if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) {\n        state.raise(\"Invalid class escape\");\n      }\n      state.raise(\"Invalid escape\");\n    }\n    state.pos = start;\n  }\n\n  var ch = state.current();\n  if (ch !== 0x5D /* ] */) {\n    state.lastIntValue = ch;\n    state.advance();\n    return true\n  }\n\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp$1.regexp_eatClassEscape = function(state) {\n  var start = state.pos;\n\n  if (state.eat(0x62 /* b */)) {\n    state.lastIntValue = 0x08; /* <BS> */\n    return true\n  }\n\n  if (state.switchU && state.eat(0x2D /* - */)) {\n    state.lastIntValue = 0x2D; /* - */\n    return true\n  }\n\n  if (!state.switchU && state.eat(0x63 /* c */)) {\n    if (this.regexp_eatClassControlLetter(state)) {\n      return true\n    }\n    state.pos = start;\n  }\n\n  return (\n    this.regexp_eatCharacterClassEscape(state) ||\n    this.regexp_eatCharacterEscape(state)\n  )\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetExpression\n// https://tc39.es/ecma262/#prod-ClassUnion\n// https://tc39.es/ecma262/#prod-ClassIntersection\n// https://tc39.es/ecma262/#prod-ClassSubtraction\npp$1.regexp_classSetExpression = function(state) {\n  var result = CharSetOk, subResult;\n  if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) {\n    if (subResult === CharSetString) { result = CharSetString; }\n    // https://tc39.es/ecma262/#prod-ClassIntersection\n    var start = state.pos;\n    while (state.eatChars([0x26, 0x26] /* && */)) {\n      if (\n        state.current() !== 0x26 /* & */ &&\n        (subResult = this.regexp_eatClassSetOperand(state))\n      ) {\n        if (subResult !== CharSetString) { result = CharSetOk; }\n        continue\n      }\n      state.raise(\"Invalid character in character class\");\n    }\n    if (start !== state.pos) { return result }\n    // https://tc39.es/ecma262/#prod-ClassSubtraction\n    while (state.eatChars([0x2D, 0x2D] /* -- */)) {\n      if (this.regexp_eatClassSetOperand(state)) { continue }\n      state.raise(\"Invalid character in character class\");\n    }\n    if (start !== state.pos) { return result }\n  } else {\n    state.raise(\"Invalid character in character class\");\n  }\n  // https://tc39.es/ecma262/#prod-ClassUnion\n  for (;;) {\n    if (this.regexp_eatClassSetRange(state)) { continue }\n    subResult = this.regexp_eatClassSetOperand(state);\n    if (!subResult) { return result }\n    if (subResult === CharSetString) { result = CharSetString; }\n  }\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetRange\npp$1.regexp_eatClassSetRange = function(state) {\n  var start = state.pos;\n  if (this.regexp_eatClassSetCharacter(state)) {\n    var left = state.lastIntValue;\n    if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) {\n      var right = state.lastIntValue;\n      if (left !== -1 && right !== -1 && left > right) {\n        state.raise(\"Range out of order in character class\");\n      }\n      return true\n    }\n    state.pos = start;\n  }\n  return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetOperand\npp$1.regexp_eatClassSetOperand = function(state) {\n  if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk }\n  return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state)\n};\n\n// https://tc39.es/ecma262/#prod-NestedClass\npp$1.regexp_eatNestedClass = function(state) {\n  var start = state.pos;\n  if (state.eat(0x5B /* [ */)) {\n    var negate = state.eat(0x5E /* ^ */);\n    var result = this.regexp_classContents(state);\n    if (state.eat(0x5D /* ] */)) {\n      if (negate && result === CharSetString) {\n        state.raise(\"Negated character class may contain strings\");\n      }\n      return result\n    }\n    state.pos = start;\n  }\n  if (state.eat(0x5C /* \\ */)) {\n    var result$1 = this.regexp_eatCharacterClassEscape(state);\n    if (result$1) {\n      return result$1\n    }\n    state.pos = start;\n  }\n  return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunction\npp$1.regexp_eatClassStringDisjunction = function(state) {\n  var start = state.pos;\n  if (state.eatChars([0x5C, 0x71] /* \\q */)) {\n    if (state.eat(0x7B /* { */)) {\n      var result = this.regexp_classStringDisjunctionContents(state);\n      if (state.eat(0x7D /* } */)) {\n        return result\n      }\n    } else {\n      // Make the same message as V8.\n      state.raise(\"Invalid escape\");\n    }\n    state.pos = start;\n  }\n  return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents\npp$1.regexp_classStringDisjunctionContents = function(state) {\n  var result = this.regexp_classString(state);\n  while (state.eat(0x7C /* | */)) {\n    if (this.regexp_classString(state) === CharSetString) { result = CharSetString; }\n  }\n  return result\n};\n\n// https://tc39.es/ecma262/#prod-ClassString\n// https://tc39.es/ecma262/#prod-NonEmptyClassString\npp$1.regexp_classString = function(state) {\n  var count = 0;\n  while (this.regexp_eatClassSetCharacter(state)) { count++; }\n  return count === 1 ? CharSetOk : CharSetString\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetCharacter\npp$1.regexp_eatClassSetCharacter = function(state) {\n  var start = state.pos;\n  if (state.eat(0x5C /* \\ */)) {\n    if (\n      this.regexp_eatCharacterEscape(state) ||\n      this.regexp_eatClassSetReservedPunctuator(state)\n    ) {\n      return true\n    }\n    if (state.eat(0x62 /* b */)) {\n      state.lastIntValue = 0x08; /* <BS> */\n      return true\n    }\n    state.pos = start;\n    return false\n  }\n  var ch = state.current();\n  if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false }\n  if (isClassSetSyntaxCharacter(ch)) { return false }\n  state.advance();\n  state.lastIntValue = ch;\n  return true\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator\nfunction isClassSetReservedDoublePunctuatorCharacter(ch) {\n  return (\n    ch === 0x21 /* ! */ ||\n    ch >= 0x23 /* # */ && ch <= 0x26 /* & */ ||\n    ch >= 0x2A /* * */ && ch <= 0x2C /* , */ ||\n    ch === 0x2E /* . */ ||\n    ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ ||\n    ch === 0x5E /* ^ */ ||\n    ch === 0x60 /* ` */ ||\n    ch === 0x7E /* ~ */\n  )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter\nfunction isClassSetSyntaxCharacter(ch) {\n  return (\n    ch === 0x28 /* ( */ ||\n    ch === 0x29 /* ) */ ||\n    ch === 0x2D /* - */ ||\n    ch === 0x2F /* / */ ||\n    ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ ||\n    ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n  )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\npp$1.regexp_eatClassSetReservedPunctuator = function(state) {\n  var ch = state.current();\n  if (isClassSetReservedPunctuator(ch)) {\n    state.lastIntValue = ch;\n    state.advance();\n    return true\n  }\n  return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\nfunction isClassSetReservedPunctuator(ch) {\n  return (\n    ch === 0x21 /* ! */ ||\n    ch === 0x23 /* # */ ||\n    ch === 0x25 /* % */ ||\n    ch === 0x26 /* & */ ||\n    ch === 0x2C /* , */ ||\n    ch === 0x2D /* - */ ||\n    ch >= 0x3A /* : */ && ch <= 0x3E /* > */ ||\n    ch === 0x40 /* @ */ ||\n    ch === 0x60 /* ` */ ||\n    ch === 0x7E /* ~ */\n  )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp$1.regexp_eatClassControlLetter = function(state) {\n  var ch = state.current();\n  if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n    state.lastIntValue = ch % 0x20;\n    state.advance();\n    return true\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatHexEscapeSequence = function(state) {\n  var start = state.pos;\n  if (state.eat(0x78 /* x */)) {\n    if (this.regexp_eatFixedHexDigits(state, 2)) {\n      return true\n    }\n    if (state.switchU) {\n      state.raise(\"Invalid escape\");\n    }\n    state.pos = start;\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp$1.regexp_eatDecimalDigits = function(state) {\n  var start = state.pos;\n  var ch = 0;\n  state.lastIntValue = 0;\n  while (isDecimalDigit(ch = state.current())) {\n    state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n    state.advance();\n  }\n  return state.pos !== start\n};\nfunction isDecimalDigit(ch) {\n  return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp$1.regexp_eatHexDigits = function(state) {\n  var start = state.pos;\n  var ch = 0;\n  state.lastIntValue = 0;\n  while (isHexDigit(ch = state.current())) {\n    state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n    state.advance();\n  }\n  return state.pos !== start\n};\nfunction isHexDigit(ch) {\n  return (\n    (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n    (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n    (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n  )\n}\nfunction hexToInt(ch) {\n  if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n    return 10 + (ch - 0x41 /* A */)\n  }\n  if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n    return 10 + (ch - 0x61 /* a */)\n  }\n  return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp$1.regexp_eatLegacyOctalEscapeSequence = function(state) {\n  if (this.regexp_eatOctalDigit(state)) {\n    var n1 = state.lastIntValue;\n    if (this.regexp_eatOctalDigit(state)) {\n      var n2 = state.lastIntValue;\n      if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n        state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue;\n      } else {\n        state.lastIntValue = n1 * 8 + n2;\n      }\n    } else {\n      state.lastIntValue = n1;\n    }\n    return true\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp$1.regexp_eatOctalDigit = function(state) {\n  var ch = state.current();\n  if (isOctalDigit(ch)) {\n    state.lastIntValue = ch - 0x30; /* 0 */\n    state.advance();\n    return true\n  }\n  state.lastIntValue = 0;\n  return false\n};\nfunction isOctalDigit(ch) {\n  return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatFixedHexDigits = function(state, length) {\n  var start = state.pos;\n  state.lastIntValue = 0;\n  for (var i = 0; i < length; ++i) {\n    var ch = state.current();\n    if (!isHexDigit(ch)) {\n      state.pos = start;\n      return false\n    }\n    state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n    state.advance();\n  }\n  return true\n};\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = function Token(p) {\n  this.type = p.type;\n  this.value = p.value;\n  this.start = p.start;\n  this.end = p.end;\n  if (p.options.locations)\n    { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); }\n  if (p.options.ranges)\n    { this.range = [p.start, p.end]; }\n};\n\n// ## Tokenizer\n\nvar pp = Parser.prototype;\n\n// Move to the next token\n\npp.next = function(ignoreEscapeSequenceInKeyword) {\n  if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc)\n    { this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + this.type.keyword); }\n  if (this.options.onToken)\n    { this.options.onToken(new Token(this)); }\n\n  this.lastTokEnd = this.end;\n  this.lastTokStart = this.start;\n  this.lastTokEndLoc = this.endLoc;\n  this.lastTokStartLoc = this.startLoc;\n  this.nextToken();\n};\n\npp.getToken = function() {\n  this.next();\n  return new Token(this)\n};\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n  { pp[Symbol.iterator] = function() {\n    var this$1$1 = this;\n\n    return {\n      next: function () {\n        var token = this$1$1.getToken();\n        return {\n          done: token.type === types$1.eof,\n          value: token\n        }\n      }\n    }\n  }; }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function() {\n  var curContext = this.curContext();\n  if (!curContext || !curContext.preserveSpace) { this.skipSpace(); }\n\n  this.start = this.pos;\n  if (this.options.locations) { this.startLoc = this.curPosition(); }\n  if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) }\n\n  if (curContext.override) { return curContext.override(this) }\n  else { this.readToken(this.fullCharCodeAtPos()); }\n};\n\npp.readToken = function(code) {\n  // Identifier or keyword. '\\uXXXX' sequences are allowed in\n  // identifiers, so '\\' also dispatches to that.\n  if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n    { return this.readWord() }\n\n  return this.getTokenFromCode(code)\n};\n\npp.fullCharCodeAtPos = function() {\n  var code = this.input.charCodeAt(this.pos);\n  if (code <= 0xd7ff || code >= 0xdc00) { return code }\n  var next = this.input.charCodeAt(this.pos + 1);\n  return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00\n};\n\npp.skipBlockComment = function() {\n  var startLoc = this.options.onComment && this.curPosition();\n  var start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2);\n  if (end === -1) { this.raise(this.pos - 2, \"Unterminated comment\"); }\n  this.pos = end + 2;\n  if (this.options.locations) {\n    for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) {\n      ++this.curLine;\n      pos = this.lineStart = nextBreak;\n    }\n  }\n  if (this.options.onComment)\n    { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n                           startLoc, this.curPosition()); }\n};\n\npp.skipLineComment = function(startSkip) {\n  var start = this.pos;\n  var startLoc = this.options.onComment && this.curPosition();\n  var ch = this.input.charCodeAt(this.pos += startSkip);\n  while (this.pos < this.input.length && !isNewLine(ch)) {\n    ch = this.input.charCodeAt(++this.pos);\n  }\n  if (this.options.onComment)\n    { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n                           startLoc, this.curPosition()); }\n};\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function() {\n  loop: while (this.pos < this.input.length) {\n    var ch = this.input.charCodeAt(this.pos);\n    switch (ch) {\n    case 32: case 160: // ' '\n      ++this.pos;\n      break\n    case 13:\n      if (this.input.charCodeAt(this.pos + 1) === 10) {\n        ++this.pos;\n      }\n    case 10: case 8232: case 8233:\n      ++this.pos;\n      if (this.options.locations) {\n        ++this.curLine;\n        this.lineStart = this.pos;\n      }\n      break\n    case 47: // '/'\n      switch (this.input.charCodeAt(this.pos + 1)) {\n      case 42: // '*'\n        this.skipBlockComment();\n        break\n      case 47:\n        this.skipLineComment(2);\n        break\n      default:\n        break loop\n      }\n      break\n    default:\n      if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n        ++this.pos;\n      } else {\n        break loop\n      }\n    }\n  }\n};\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function(type, val) {\n  this.end = this.pos;\n  if (this.options.locations) { this.endLoc = this.curPosition(); }\n  var prevType = this.type;\n  this.type = type;\n  this.value = val;\n\n  this.updateContext(prevType);\n};\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function() {\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (next >= 48 && next <= 57) { return this.readNumber(true) }\n  var next2 = this.input.charCodeAt(this.pos + 2);\n  if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n    this.pos += 3;\n    return this.finishToken(types$1.ellipsis)\n  } else {\n    ++this.pos;\n    return this.finishToken(types$1.dot)\n  }\n};\n\npp.readToken_slash = function() { // '/'\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n  if (next === 61) { return this.finishOp(types$1.assign, 2) }\n  return this.finishOp(types$1.slash, 1)\n};\n\npp.readToken_mult_modulo_exp = function(code) { // '%*'\n  var next = this.input.charCodeAt(this.pos + 1);\n  var size = 1;\n  var tokentype = code === 42 ? types$1.star : types$1.modulo;\n\n  // exponentiation operator ** and **=\n  if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n    ++size;\n    tokentype = types$1.starstar;\n    next = this.input.charCodeAt(this.pos + 2);\n  }\n\n  if (next === 61) { return this.finishOp(types$1.assign, size + 1) }\n  return this.finishOp(tokentype, size)\n};\n\npp.readToken_pipe_amp = function(code) { // '|&'\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (next === code) {\n    if (this.options.ecmaVersion >= 12) {\n      var next2 = this.input.charCodeAt(this.pos + 2);\n      if (next2 === 61) { return this.finishOp(types$1.assign, 3) }\n    }\n    return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2)\n  }\n  if (next === 61) { return this.finishOp(types$1.assign, 2) }\n  return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1)\n};\n\npp.readToken_caret = function() { // '^'\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (next === 61) { return this.finishOp(types$1.assign, 2) }\n  return this.finishOp(types$1.bitwiseXOR, 1)\n};\n\npp.readToken_plus_min = function(code) { // '+-'\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (next === code) {\n    if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n        (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n      // A `-->` line comment\n      this.skipLineComment(3);\n      this.skipSpace();\n      return this.nextToken()\n    }\n    return this.finishOp(types$1.incDec, 2)\n  }\n  if (next === 61) { return this.finishOp(types$1.assign, 2) }\n  return this.finishOp(types$1.plusMin, 1)\n};\n\npp.readToken_lt_gt = function(code) { // '<>'\n  var next = this.input.charCodeAt(this.pos + 1);\n  var size = 1;\n  if (next === code) {\n    size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n    if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) }\n    return this.finishOp(types$1.bitShift, size)\n  }\n  if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n      this.input.charCodeAt(this.pos + 3) === 45) {\n    // `<!--`, an XML-style comment that should be interpreted as a line comment\n    this.skipLineComment(4);\n    this.skipSpace();\n    return this.nextToken()\n  }\n  if (next === 61) { size = 2; }\n  return this.finishOp(types$1.relational, size)\n};\n\npp.readToken_eq_excl = function(code) { // '=!'\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) }\n  if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n    this.pos += 2;\n    return this.finishToken(types$1.arrow)\n  }\n  return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1)\n};\n\npp.readToken_question = function() { // '?'\n  var ecmaVersion = this.options.ecmaVersion;\n  if (ecmaVersion >= 11) {\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next === 46) {\n      var next2 = this.input.charCodeAt(this.pos + 2);\n      if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) }\n    }\n    if (next === 63) {\n      if (ecmaVersion >= 12) {\n        var next2$1 = this.input.charCodeAt(this.pos + 2);\n        if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) }\n      }\n      return this.finishOp(types$1.coalesce, 2)\n    }\n  }\n  return this.finishOp(types$1.question, 1)\n};\n\npp.readToken_numberSign = function() { // '#'\n  var ecmaVersion = this.options.ecmaVersion;\n  var code = 35; // '#'\n  if (ecmaVersion >= 13) {\n    ++this.pos;\n    code = this.fullCharCodeAtPos();\n    if (isIdentifierStart(code, true) || code === 92 /* '\\' */) {\n      return this.finishToken(types$1.privateId, this.readWord1())\n    }\n  }\n\n  this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.getTokenFromCode = function(code) {\n  switch (code) {\n  // The interpretation of a dot depends on whether it is followed\n  // by a digit or another two dots.\n  case 46: // '.'\n    return this.readToken_dot()\n\n  // Punctuation tokens.\n  case 40: ++this.pos; return this.finishToken(types$1.parenL)\n  case 41: ++this.pos; return this.finishToken(types$1.parenR)\n  case 59: ++this.pos; return this.finishToken(types$1.semi)\n  case 44: ++this.pos; return this.finishToken(types$1.comma)\n  case 91: ++this.pos; return this.finishToken(types$1.bracketL)\n  case 93: ++this.pos; return this.finishToken(types$1.bracketR)\n  case 123: ++this.pos; return this.finishToken(types$1.braceL)\n  case 125: ++this.pos; return this.finishToken(types$1.braceR)\n  case 58: ++this.pos; return this.finishToken(types$1.colon)\n\n  case 96: // '`'\n    if (this.options.ecmaVersion < 6) { break }\n    ++this.pos;\n    return this.finishToken(types$1.backQuote)\n\n  case 48: // '0'\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number\n    if (this.options.ecmaVersion >= 6) {\n      if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number\n      if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number\n    }\n\n  // Anything else beginning with a digit is an integer, octal\n  // number, or float.\n  case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n    return this.readNumber(false)\n\n  // Quotes produce strings.\n  case 34: case 39: // '\"', \"'\"\n    return this.readString(code)\n\n  // Operators are parsed inline in tiny state machines. '=' (61) is\n  // often referred to. `finishOp` simply skips the amount of\n  // characters it is given as second argument, and returns a token\n  // of the type given by its first argument.\n  case 47: // '/'\n    return this.readToken_slash()\n\n  case 37: case 42: // '%*'\n    return this.readToken_mult_modulo_exp(code)\n\n  case 124: case 38: // '|&'\n    return this.readToken_pipe_amp(code)\n\n  case 94: // '^'\n    return this.readToken_caret()\n\n  case 43: case 45: // '+-'\n    return this.readToken_plus_min(code)\n\n  case 60: case 62: // '<>'\n    return this.readToken_lt_gt(code)\n\n  case 61: case 33: // '=!'\n    return this.readToken_eq_excl(code)\n\n  case 63: // '?'\n    return this.readToken_question()\n\n  case 126: // '~'\n    return this.finishOp(types$1.prefix, 1)\n\n  case 35: // '#'\n    return this.readToken_numberSign()\n  }\n\n  this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.finishOp = function(type, size) {\n  var str = this.input.slice(this.pos, this.pos + size);\n  this.pos += size;\n  return this.finishToken(type, str)\n};\n\npp.readRegexp = function() {\n  var escaped, inClass, start = this.pos;\n  for (;;) {\n    if (this.pos >= this.input.length) { this.raise(start, \"Unterminated regular expression\"); }\n    var ch = this.input.charAt(this.pos);\n    if (lineBreak.test(ch)) { this.raise(start, \"Unterminated regular expression\"); }\n    if (!escaped) {\n      if (ch === \"[\") { inClass = true; }\n      else if (ch === \"]\" && inClass) { inClass = false; }\n      else if (ch === \"/\" && !inClass) { break }\n      escaped = ch === \"\\\\\";\n    } else { escaped = false; }\n    ++this.pos;\n  }\n  var pattern = this.input.slice(start, this.pos);\n  ++this.pos;\n  var flagsStart = this.pos;\n  var flags = this.readWord1();\n  if (this.containsEsc) { this.unexpected(flagsStart); }\n\n  // Validate pattern\n  var state = this.regexpState || (this.regexpState = new RegExpValidationState(this));\n  state.reset(start, pattern, flags);\n  this.validateRegExpFlags(state);\n  this.validateRegExpPattern(state);\n\n  // Create Literal#value property value.\n  var value = null;\n  try {\n    value = new RegExp(pattern, flags);\n  } catch (e) {\n    // ESTree requires null if it failed to instantiate RegExp object.\n    // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n  }\n\n  return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value})\n};\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {\n  // `len` is used for character escape sequences. In that case, disallow separators.\n  var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined;\n\n  // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b)\n  // and isn't fraction part nor exponent part. In that case, if the first digit\n  // is zero then disallow separators.\n  var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48;\n\n  var start = this.pos, total = 0, lastCode = 0;\n  for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) {\n    var code = this.input.charCodeAt(this.pos), val = (void 0);\n\n    if (allowSeparators && code === 95) {\n      if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed in legacy octal numeric literals\"); }\n      if (lastCode === 95) { this.raiseRecoverable(this.pos, \"Numeric separator must be exactly one underscore\"); }\n      if (i === 0) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed at the first of digits\"); }\n      lastCode = code;\n      continue\n    }\n\n    if (code >= 97) { val = code - 97 + 10; } // a\n    else if (code >= 65) { val = code - 65 + 10; } // A\n    else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9\n    else { val = Infinity; }\n    if (val >= radix) { break }\n    lastCode = code;\n    total = total * radix + val;\n  }\n\n  if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, \"Numeric separator is not allowed at the last of digits\"); }\n  if (this.pos === start || len != null && this.pos - start !== len) { return null }\n\n  return total\n};\n\nfunction stringToNumber(str, isLegacyOctalNumericLiteral) {\n  if (isLegacyOctalNumericLiteral) {\n    return parseInt(str, 8)\n  }\n\n  // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value.\n  return parseFloat(str.replace(/_/g, \"\"))\n}\n\nfunction stringToBigInt(str) {\n  if (typeof BigInt !== \"function\") {\n    return null\n  }\n\n  // `BigInt(value)` throws syntax error if the string contains numeric separators.\n  return BigInt(str.replace(/_/g, \"\"))\n}\n\npp.readRadixNumber = function(radix) {\n  var start = this.pos;\n  this.pos += 2; // 0x\n  var val = this.readInt(radix);\n  if (val == null) { this.raise(this.start + 2, \"Expected number in radix \" + radix); }\n  if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) {\n    val = stringToBigInt(this.input.slice(start, this.pos));\n    ++this.pos;\n  } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n  return this.finishToken(types$1.num, val)\n};\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function(startsWithDot) {\n  var start = this.pos;\n  if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, \"Invalid number\"); }\n  var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n  if (octal && this.strict) { this.raise(start, \"Invalid number\"); }\n  var next = this.input.charCodeAt(this.pos);\n  if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {\n    var val$1 = stringToBigInt(this.input.slice(start, this.pos));\n    ++this.pos;\n    if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n    return this.finishToken(types$1.num, val$1)\n  }\n  if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; }\n  if (next === 46 && !octal) { // '.'\n    ++this.pos;\n    this.readInt(10);\n    next = this.input.charCodeAt(this.pos);\n  }\n  if ((next === 69 || next === 101) && !octal) { // 'eE'\n    next = this.input.charCodeAt(++this.pos);\n    if (next === 43 || next === 45) { ++this.pos; } // '+-'\n    if (this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n  }\n  if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n\n  var val = stringToNumber(this.input.slice(start, this.pos), octal);\n  return this.finishToken(types$1.num, val)\n};\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function() {\n  var ch = this.input.charCodeAt(this.pos), code;\n\n  if (ch === 123) { // '{'\n    if (this.options.ecmaVersion < 6) { this.unexpected(); }\n    var codePos = ++this.pos;\n    code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos);\n    ++this.pos;\n    if (code > 0x10FFFF) { this.invalidStringToken(codePos, \"Code point out of bounds\"); }\n  } else {\n    code = this.readHexChar(4);\n  }\n  return code\n};\n\npp.readString = function(quote) {\n  var out = \"\", chunkStart = ++this.pos;\n  for (;;) {\n    if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated string constant\"); }\n    var ch = this.input.charCodeAt(this.pos);\n    if (ch === quote) { break }\n    if (ch === 92) { // '\\'\n      out += this.input.slice(chunkStart, this.pos);\n      out += this.readEscapedChar(false);\n      chunkStart = this.pos;\n    } else if (ch === 0x2028 || ch === 0x2029) {\n      if (this.options.ecmaVersion < 10) { this.raise(this.start, \"Unterminated string constant\"); }\n      ++this.pos;\n      if (this.options.locations) {\n        this.curLine++;\n        this.lineStart = this.pos;\n      }\n    } else {\n      if (isNewLine(ch)) { this.raise(this.start, \"Unterminated string constant\"); }\n      ++this.pos;\n    }\n  }\n  out += this.input.slice(chunkStart, this.pos++);\n  return this.finishToken(types$1.string, out)\n};\n\n// Reads template string tokens.\n\nvar INVALID_TEMPLATE_ESCAPE_ERROR = {};\n\npp.tryReadTemplateToken = function() {\n  this.inTemplateElement = true;\n  try {\n    this.readTmplToken();\n  } catch (err) {\n    if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n      this.readInvalidTemplateToken();\n    } else {\n      throw err\n    }\n  }\n\n  this.inTemplateElement = false;\n};\n\npp.invalidStringToken = function(position, message) {\n  if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n    throw INVALID_TEMPLATE_ESCAPE_ERROR\n  } else {\n    this.raise(position, message);\n  }\n};\n\npp.readTmplToken = function() {\n  var out = \"\", chunkStart = this.pos;\n  for (;;) {\n    if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated template\"); }\n    var ch = this.input.charCodeAt(this.pos);\n    if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n      if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) {\n        if (ch === 36) {\n          this.pos += 2;\n          return this.finishToken(types$1.dollarBraceL)\n        } else {\n          ++this.pos;\n          return this.finishToken(types$1.backQuote)\n        }\n      }\n      out += this.input.slice(chunkStart, this.pos);\n      return this.finishToken(types$1.template, out)\n    }\n    if (ch === 92) { // '\\'\n      out += this.input.slice(chunkStart, this.pos);\n      out += this.readEscapedChar(true);\n      chunkStart = this.pos;\n    } else if (isNewLine(ch)) {\n      out += this.input.slice(chunkStart, this.pos);\n      ++this.pos;\n      switch (ch) {\n      case 13:\n        if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; }\n      case 10:\n        out += \"\\n\";\n        break\n      default:\n        out += String.fromCharCode(ch);\n        break\n      }\n      if (this.options.locations) {\n        ++this.curLine;\n        this.lineStart = this.pos;\n      }\n      chunkStart = this.pos;\n    } else {\n      ++this.pos;\n    }\n  }\n};\n\n// Reads a template token to search for the end, without validating any escape sequences\npp.readInvalidTemplateToken = function() {\n  for (; this.pos < this.input.length; this.pos++) {\n    switch (this.input[this.pos]) {\n    case \"\\\\\":\n      ++this.pos;\n      break\n\n    case \"$\":\n      if (this.input[this.pos + 1] !== \"{\") { break }\n      // fall through\n    case \"`\":\n      return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos))\n\n    case \"\\r\":\n      if (this.input[this.pos + 1] === \"\\n\") { ++this.pos; }\n      // fall through\n    case \"\\n\": case \"\\u2028\": case \"\\u2029\":\n      ++this.curLine;\n      this.lineStart = this.pos + 1;\n      break\n    }\n  }\n  this.raise(this.start, \"Unterminated template\");\n};\n\n// Used to read escaped characters\n\npp.readEscapedChar = function(inTemplate) {\n  var ch = this.input.charCodeAt(++this.pos);\n  ++this.pos;\n  switch (ch) {\n  case 110: return \"\\n\" // 'n' -> '\\n'\n  case 114: return \"\\r\" // 'r' -> '\\r'\n  case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n  case 117: return codePointToString(this.readCodePoint()) // 'u'\n  case 116: return \"\\t\" // 't' -> '\\t'\n  case 98: return \"\\b\" // 'b' -> '\\b'\n  case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n  case 102: return \"\\f\" // 'f' -> '\\f'\n  case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\\r\\n'\n  case 10: // ' \\n'\n    if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n    return \"\"\n  case 56:\n  case 57:\n    if (this.strict) {\n      this.invalidStringToken(\n        this.pos - 1,\n        \"Invalid escape sequence\"\n      );\n    }\n    if (inTemplate) {\n      var codePos = this.pos - 1;\n\n      this.invalidStringToken(\n        codePos,\n        \"Invalid escape sequence in template string\"\n      );\n    }\n  default:\n    if (ch >= 48 && ch <= 55) {\n      var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0];\n      var octal = parseInt(octalStr, 8);\n      if (octal > 255) {\n        octalStr = octalStr.slice(0, -1);\n        octal = parseInt(octalStr, 8);\n      }\n      this.pos += octalStr.length - 1;\n      ch = this.input.charCodeAt(this.pos);\n      if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n        this.invalidStringToken(\n          this.pos - 1 - octalStr.length,\n          inTemplate\n            ? \"Octal literal in template string\"\n            : \"Octal literal in strict mode\"\n        );\n      }\n      return String.fromCharCode(octal)\n    }\n    if (isNewLine(ch)) {\n      // Unicode new line characters after \\ get removed from output in both\n      // template literals and strings\n      if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n      return \"\"\n    }\n    return String.fromCharCode(ch)\n  }\n};\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function(len) {\n  var codePos = this.pos;\n  var n = this.readInt(16, len);\n  if (n === null) { this.invalidStringToken(codePos, \"Bad character escape sequence\"); }\n  return n\n};\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function() {\n  this.containsEsc = false;\n  var word = \"\", first = true, chunkStart = this.pos;\n  var astral = this.options.ecmaVersion >= 6;\n  while (this.pos < this.input.length) {\n    var ch = this.fullCharCodeAtPos();\n    if (isIdentifierChar(ch, astral)) {\n      this.pos += ch <= 0xffff ? 1 : 2;\n    } else if (ch === 92) { // \"\\\"\n      this.containsEsc = true;\n      word += this.input.slice(chunkStart, this.pos);\n      var escStart = this.pos;\n      if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n        { this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\"); }\n      ++this.pos;\n      var esc = this.readCodePoint();\n      if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n        { this.invalidStringToken(escStart, \"Invalid Unicode escape\"); }\n      word += codePointToString(esc);\n      chunkStart = this.pos;\n    } else {\n      break\n    }\n    first = false;\n  }\n  return word + this.input.slice(chunkStart, this.pos)\n};\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function() {\n  var word = this.readWord1();\n  var type = types$1.name;\n  if (this.keywords.test(word)) {\n    type = keywords[word];\n  }\n  return this.finishToken(type, word)\n};\n\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n//     http://marijnhaverbeke.nl/git/acorn\n//     https://github.com/acornjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/acornjs/acorn/issues\n//\n// [walk]: util/walk.js\n\n\nvar version = \"8.14.1\";\n\nParser.acorn = {\n  Parser: Parser,\n  version: version,\n  defaultOptions: defaultOptions,\n  Position: Position,\n  SourceLocation: SourceLocation,\n  getLineInfo: getLineInfo,\n  Node: Node,\n  TokenType: TokenType,\n  tokTypes: types$1,\n  keywordTypes: keywords,\n  TokContext: TokContext,\n  tokContexts: types,\n  isIdentifierChar: isIdentifierChar,\n  isIdentifierStart: isIdentifierStart,\n  Token: Token,\n  isNewLine: isNewLine,\n  lineBreak: lineBreak,\n  lineBreakG: lineBreakG,\n  nonASCIIwhitespace: nonASCIIwhitespace\n};\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and returns\n// an abstract syntax tree as specified by the [ESTree spec][estree].\n//\n// [estree]: https://github.com/estree/estree\n\nfunction parse(input, options) {\n  return Parser.parse(input, options)\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nfunction parseExpressionAt(input, pos, options) {\n  return Parser.parseExpressionAt(input, pos, options)\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nfunction tokenizer(input, options) {\n  return Parser.tokenizer(input, options)\n}\n\nexport { Node, Parser, Position, SourceLocation, TokContext, Token, TokenType, defaultOptions, getLineInfo, isIdentifierChar, isIdentifierStart, isNewLine, keywords as keywordTypes, lineBreak, lineBreakG, nonASCIIwhitespace, parse, parseExpressionAt, types as tokContexts, types$1 as tokTypes, tokenizer, version };\n","/* (ignored) */","var Transform = require('./transform.js'),\n    Filter = require('./filter.js');\n\nvar log = new Transform(),\n    slice = Array.prototype.slice;\n\nexports = module.exports = function create(name) {\n  var o   = function() { log.write(name, undefined, slice.call(arguments)); return o; };\n  o.debug = function() { log.write(name, 'debug', slice.call(arguments)); return o; };\n  o.info  = function() { log.write(name, 'info',  slice.call(arguments)); return o; };\n  o.warn  = function() { log.write(name, 'warn',  slice.call(arguments)); return o; };\n  o.error = function() { log.write(name, 'error', slice.call(arguments)); return o; };\n  o.log   = o.debug; // for interface compliance with Node and browser consoles\n  o.suggest = exports.suggest;\n  o.format = log.format;\n  return o;\n};\n\n// filled in separately\nexports.defaultBackend = exports.defaultFormatter = null;\n\nexports.pipe = function(dest) {\n  return log.pipe(dest);\n};\n\nexports.end = exports.unpipe = exports.disable = function(from) {\n  return log.unpipe(from);\n};\n\nexports.Transform = Transform;\nexports.Filter = Filter;\n// this is the default filter that's applied when .enable() is called normally\n// you can bypass it completely and set up your own pipes\nexports.suggest = new Filter();\n\nexports.enable = function() {\n  if(exports.defaultFormatter) {\n    return log.pipe(exports.suggest) // filter\n              .pipe(exports.defaultFormatter) // formatter\n              .pipe(exports.defaultBackend); // backend\n  }\n  return log.pipe(exports.suggest) // filter\n            .pipe(exports.defaultBackend); // formatter\n};\n\n","function M() { this._events = {}; }\nM.prototype = {\n  on: function(ev, cb) {\n    this._events || (this._events = {});\n    var e = this._events;\n    (e[ev] || (e[ev] = [])).push(cb);\n    return this;\n  },\n  removeListener: function(ev, cb) {\n    var e = this._events[ev] || [], i;\n    for(i = e.length-1; i >= 0 && e[i]; i--){\n      if(e[i] === cb || e[i].cb === cb) { e.splice(i, 1); }\n    }\n  },\n  removeAllListeners: function(ev) {\n    if(!ev) { this._events = {}; }\n    else { this._events[ev] && (this._events[ev] = []); }\n  },\n  listeners: function(ev) {\n    return (this._events ? this._events[ev] || [] : []);\n  },\n  emit: function(ev) {\n    this._events || (this._events = {});\n    var args = Array.prototype.slice.call(arguments, 1), i, e = this._events[ev] || [];\n    for(i = e.length-1; i >= 0 && e[i]; i--){\n      e[i].apply(this, args);\n    }\n    return this;\n  },\n  when: function(ev, cb) {\n    return this.once(ev, cb, true);\n  },\n  once: function(ev, cb, when) {\n    if(!cb) return this;\n    function c() {\n      if(!when) this.removeListener(ev, c);\n      if(cb.apply(this, arguments) && when) this.removeListener(ev, c);\n    }\n    c.cb = cb;\n    this.on(ev, c);\n    return this;\n  }\n};\nM.mixin = function(dest) {\n  var o = M.prototype, k;\n  for (k in o) {\n    o.hasOwnProperty(k) && (dest.prototype[k] = o[k]);\n  }\n};\nmodule.exports = M;\n","// default filter\nvar Transform = require('./transform.js');\n\nvar levelMap = { debug: 1, info: 2, warn: 3, error: 4 };\n\nfunction Filter() {\n  this.enabled = true;\n  this.defaultResult = true;\n  this.clear();\n}\n\nTransform.mixin(Filter);\n\n// allow all matching, with level >= given level\nFilter.prototype.allow = function(name, level) {\n  this._white.push({ n: name, l: levelMap[level] });\n  return this;\n};\n\n// deny all matching, with level <= given level\nFilter.prototype.deny = function(name, level) {\n  this._black.push({ n: name, l: levelMap[level] });\n  return this;\n};\n\nFilter.prototype.clear = function() {\n  this._white = [];\n  this._black = [];\n  return this;\n};\n\nfunction test(rule, name) {\n  // use .test for RegExps\n  return (rule.n.test ? rule.n.test(name) : rule.n == name);\n};\n\nFilter.prototype.test = function(name, level) {\n  var i, len = Math.max(this._white.length, this._black.length);\n  for(i = 0; i < len; i++) {\n    if(this._white[i] && test(this._white[i], name) && levelMap[level] >= this._white[i].l) {\n      return true;\n    }\n    if(this._black[i] && test(this._black[i], name) && levelMap[level] <= this._black[i].l) {\n      return false;\n    }\n  }\n  return this.defaultResult;\n};\n\nFilter.prototype.write = function(name, level, args) {\n  if(!this.enabled || this.test(name, level)) {\n    return this.emit('item', name, level, args);\n  }\n};\n\nmodule.exports = Filter;\n","var Transform = require('../common/transform.js');\n\nvar newlines = /\\n+$/,\n    logger = new Transform();\n\nlogger.write = function(name, level, args) {\n  var i = args.length-1;\n  if (typeof console === 'undefined' || !console.log) {\n    return;\n  }\n  if(console.log.apply) {\n    return console.log.apply(console, [name, level].concat(args));\n  } else if(JSON && JSON.stringify) {\n    // console.log.apply is undefined in IE8 and IE9\n    // for IE8/9: make console.log at least a bit less awful\n    if(args[i] && typeof args[i] == 'string') {\n      args[i] = args[i].replace(newlines, '');\n    }\n    try {\n      for(i = 0; i < args.length; i++) {\n        args[i] = JSON.stringify(args[i]);\n      }\n    } catch(e) {}\n    console.log(args.join(' '));\n  }\n};\n\nlogger.formatters = ['color', 'minilog'];\nlogger.color = require('./formatters/color.js');\nlogger.minilog = require('./formatters/minilog.js');\n\nmodule.exports = logger;\n","var Transform = require('../../common/transform.js'),\n    color = require('./util.js');\n\nvar colors = { debug: ['cyan'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },\n    logger = new Transform();\n\nlogger.write = function(name, level, args) {\n  var fn = console.log;\n  if(console[level] && console[level].apply) {\n    fn = console[level];\n    fn.apply(console, [ '%c'+name+' %c'+level, color('gray'), color.apply(color, colors[level])].concat(args));\n  }\n};\n\n// NOP, because piping the formatted logs can only cause trouble.\nlogger.pipe = function() { };\n\nmodule.exports = logger;\n","var Transform = require('../../common/transform.js'),\n    color = require('./util.js'),\n    colors = { debug: ['gray'], info: ['purple' ], warn: [ 'yellow', true ], error: [ 'red', true ] },\n    logger = new Transform();\n\nlogger.write = function(name, level, args) {\n  var fn = console.log;\n  if(level != 'debug' && console[level]) {\n    fn = console[level];\n  }\n\n  var subset = [], i = 0;\n  if(level != 'info') {\n    for(; i < args.length; i++) {\n      if(typeof args[i] != 'string') break;\n    }\n    fn.apply(console, [ '%c'+name +' '+ args.slice(0, i).join(' '), color.apply(color, colors[level]) ].concat(args.slice(i)));\n  } else {\n    fn.apply(console, [ '%c'+name, color.apply(color, colors[level]) ].concat(args));\n  }\n};\n\n// NOP, because piping the formatted logs can only cause trouble.\nlogger.pipe = function() { };\n\nmodule.exports = logger;\n","var Transform = require('../common/transform.js'),\n    cache = [ ];\n\nvar logger = new Transform();\n\nlogger.write = function(name, level, args) {\n  cache.push([ name, level, args ]);\n};\n\n// utility functions\nlogger.get = function() { return cache; };\nlogger.empty = function() { cache = []; };\n\nmodule.exports = logger;\n","var Transform = require('../common/transform.js'),\n    cache = false;\n\nvar logger = new Transform();\n\nlogger.write = function(name, level, args) {\n  if(typeof window == 'undefined' || typeof JSON == 'undefined' || !JSON.stringify || !JSON.parse) return;\n  try {\n    if(!cache) { cache = (window.localStorage.minilog ? JSON.parse(window.localStorage.minilog) : []); }\n    cache.push([ new Date().toString(), name, level, args ]);\n    window.localStorage.minilog = JSON.stringify(cache);\n  } catch(e) {}\n};\n\nmodule.exports = logger;","var Transform = require('../common/transform.js');\n\nvar cid = new Date().valueOf().toString(36);\n\nfunction AjaxLogger(options) {\n  this.url = options.url || '';\n  this.cache = [];\n  this.timer = null;\n  this.interval = options.interval || 30*1000;\n  this.enabled = true;\n  this.jQuery = window.jQuery;\n  this.extras = {};\n}\n\nTransform.mixin(AjaxLogger);\n\nAjaxLogger.prototype.write = function(name, level, args) {\n  if(!this.timer) { this.init(); }\n  this.cache.push([name, level].concat(args));\n};\n\nAjaxLogger.prototype.init = function() {\n  if(!this.enabled || !this.jQuery) return;\n  var self = this;\n  this.timer = setTimeout(function() {\n    var i, logs = [], ajaxData, url = self.url;\n    if(self.cache.length == 0) return self.init();\n    // Test each log line and only log the ones that are valid (e.g. don't have circular references).\n    // Slight performance hit but benefit is we log all valid lines.\n    for(i = 0; i < self.cache.length; i++) {\n      try {\n        JSON.stringify(self.cache[i]);\n        logs.push(self.cache[i]);\n      } catch(e) { }\n    }\n    if(self.jQuery.isEmptyObject(self.extras)) {\n        ajaxData = JSON.stringify({ logs: logs });\n        url = self.url + '?client_id=' + cid;\n    } else {\n        ajaxData = JSON.stringify(self.jQuery.extend({logs: logs}, self.extras));\n    }\n\n    self.jQuery.ajax(url, {\n      type: 'POST',\n      cache: false,\n      processData: false,\n      data: ajaxData,\n      contentType: 'application/json',\n      timeout: 10000\n    }).success(function(data, status, jqxhr) {\n      if(data.interval) {\n        self.interval = Math.max(1000, data.interval);\n      }\n    }).error(function() {\n      self.interval = 30000;\n    }).always(function() {\n      self.init();\n    });\n    self.cache = [];\n  }, this.interval);\n};\n\nAjaxLogger.prototype.end = function() {};\n\n// wait until jQuery is defined. Useful if you don't control the load order.\nAjaxLogger.jQueryWait = function(onDone) {\n  if(typeof window !== 'undefined' && (window.jQuery || window.$)) {\n    return onDone(window.jQuery || window.$);\n  } else if (typeof window !== 'undefined') {\n    setTimeout(function() { AjaxLogger.jQueryWait(onDone); }, 200);\n  }\n};\n\nmodule.exports = AjaxLogger;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/* jslint esnext: true */\n\n\"use strict\";\nvar src$core$$ = require(\"./core\"), src$en$$ = require(\"./en\");\n\nsrc$core$$[\"default\"].__addLocaleData(src$en$$[\"default\"]);\nsrc$core$$[\"default\"].defaultLocale = 'en';\n\nexports[\"default\"] = src$core$$[\"default\"];\n\n//# sourceMappingURL=main.js.map","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nvar src$utils$$ = require(\"./utils\"), src$es5$$ = require(\"./es5\"), src$compiler$$ = require(\"./compiler\"), intl$messageformat$parser$$ = require(\"intl-messageformat-parser\");\nexports[\"default\"] = MessageFormat;\n\n// -- MessageFormat --------------------------------------------------------\n\nfunction MessageFormat(message, locales, formats) {\n    // Parse string messages into an AST.\n    var ast = typeof message === 'string' ?\n            MessageFormat.__parse(message) : message;\n\n    if (!(ast && ast.type === 'messageFormatPattern')) {\n        throw new TypeError('A message must be provided as a String or AST.');\n    }\n\n    // Creates a new object with the specified `formats` merged with the default\n    // formats.\n    formats = this._mergeFormats(MessageFormat.formats, formats);\n\n    // Defined first because it's used to build the format pattern.\n    src$es5$$.defineProperty(this, '_locale',  {value: this._resolveLocale(locales)});\n\n    // Compile the `ast` to a pattern that is highly optimized for repeated\n    // `format()` invocations. **Note:** This passes the `locales` set provided\n    // to the constructor instead of just the resolved locale.\n    var pluralFn = this._findPluralRuleFunction(this._locale);\n    var pattern  = this._compilePattern(ast, locales, formats, pluralFn);\n\n    // \"Bind\" `format()` method to `this` so it can be passed by reference like\n    // the other `Intl` APIs.\n    var messageFormat = this;\n    this.format = function (values) {\n      try {\n        return messageFormat._format(pattern, values);\n      } catch (e) {\n        if (e.variableId) {\n          throw new Error(\n            'The intl string context variable \\'' + e.variableId + '\\'' +\n            ' was not provided to the string \\'' + message + '\\''\n          );\n        } else {\n          throw e;\n        }\n      }\n    };\n}\n\n// Default format options used as the prototype of the `formats` provided to the\n// constructor. These are used when constructing the internal Intl.NumberFormat\n// and Intl.DateTimeFormat instances.\nsrc$es5$$.defineProperty(MessageFormat, 'formats', {\n    enumerable: true,\n\n    value: {\n        number: {\n            'currency': {\n                style: 'currency'\n            },\n\n            'percent': {\n                style: 'percent'\n            }\n        },\n\n        date: {\n            'short': {\n                month: 'numeric',\n                day  : 'numeric',\n                year : '2-digit'\n            },\n\n            'medium': {\n                month: 'short',\n                day  : 'numeric',\n                year : 'numeric'\n            },\n\n            'long': {\n                month: 'long',\n                day  : 'numeric',\n                year : 'numeric'\n            },\n\n            'full': {\n                weekday: 'long',\n                month  : 'long',\n                day    : 'numeric',\n                year   : 'numeric'\n            }\n        },\n\n        time: {\n            'short': {\n                hour  : 'numeric',\n                minute: 'numeric'\n            },\n\n            'medium':  {\n                hour  : 'numeric',\n                minute: 'numeric',\n                second: 'numeric'\n            },\n\n            'long': {\n                hour        : 'numeric',\n                minute      : 'numeric',\n                second      : 'numeric',\n                timeZoneName: 'short'\n            },\n\n            'full': {\n                hour        : 'numeric',\n                minute      : 'numeric',\n                second      : 'numeric',\n                timeZoneName: 'short'\n            }\n        }\n    }\n});\n\n// Define internal private properties for dealing with locale data.\nsrc$es5$$.defineProperty(MessageFormat, '__localeData__', {value: src$es5$$.objCreate(null)});\nsrc$es5$$.defineProperty(MessageFormat, '__addLocaleData', {value: function (data) {\n    if (!(data && data.locale)) {\n        throw new Error(\n            'Locale data provided to IntlMessageFormat is missing a ' +\n            '`locale` property'\n        );\n    }\n\n    MessageFormat.__localeData__[data.locale.toLowerCase()] = data;\n}});\n\n// Defines `__parse()` static method as an exposed private.\nsrc$es5$$.defineProperty(MessageFormat, '__parse', {value: intl$messageformat$parser$$[\"default\"].parse});\n\n// Define public `defaultLocale` property which defaults to English, but can be\n// set by the developer.\nsrc$es5$$.defineProperty(MessageFormat, 'defaultLocale', {\n    enumerable: true,\n    writable  : true,\n    value     : undefined\n});\n\nMessageFormat.prototype.resolvedOptions = function () {\n    // TODO: Provide anything else?\n    return {\n        locale: this._locale\n    };\n};\n\nMessageFormat.prototype._compilePattern = function (ast, locales, formats, pluralFn) {\n    var compiler = new src$compiler$$[\"default\"](locales, formats, pluralFn);\n    return compiler.compile(ast);\n};\n\nMessageFormat.prototype._findPluralRuleFunction = function (locale) {\n    var localeData = MessageFormat.__localeData__;\n    var data       = localeData[locale.toLowerCase()];\n\n    // The locale data is de-duplicated, so we have to traverse the locale's\n    // hierarchy until we find a `pluralRuleFunction` to return.\n    while (data) {\n        if (data.pluralRuleFunction) {\n            return data.pluralRuleFunction;\n        }\n\n        data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n    }\n\n    throw new Error(\n        'Locale data added to IntlMessageFormat is missing a ' +\n        '`pluralRuleFunction` for :' + locale\n    );\n};\n\nMessageFormat.prototype._format = function (pattern, values) {\n    var result = '',\n        i, len, part, id, value, err;\n\n    for (i = 0, len = pattern.length; i < len; i += 1) {\n        part = pattern[i];\n\n        // Exist early for string parts.\n        if (typeof part === 'string') {\n            result += part;\n            continue;\n        }\n\n        id = part.id;\n\n        // Enforce that all required values are provided by the caller.\n        if (!(values && src$utils$$.hop.call(values, id))) {\n          err = new Error('A value must be provided for: ' + id);\n          err.variableId = id;\n          throw err;\n        }\n\n        value = values[id];\n\n        // Recursively format plural and select parts' option — which can be a\n        // nested pattern structure. The choosing of the option to use is\n        // abstracted-by and delegated-to the part helper object.\n        if (part.options) {\n            result += this._format(part.getOption(value), values);\n        } else {\n            result += part.format(value);\n        }\n    }\n\n    return result;\n};\n\nMessageFormat.prototype._mergeFormats = function (defaults, formats) {\n    var mergedFormats = {},\n        type, mergedType;\n\n    for (type in defaults) {\n        if (!src$utils$$.hop.call(defaults, type)) { continue; }\n\n        mergedFormats[type] = mergedType = src$es5$$.objCreate(defaults[type]);\n\n        if (formats && src$utils$$.hop.call(formats, type)) {\n            src$utils$$.extend(mergedType, formats[type]);\n        }\n    }\n\n    return mergedFormats;\n};\n\nMessageFormat.prototype._resolveLocale = function (locales) {\n    if (typeof locales === 'string') {\n        locales = [locales];\n    }\n\n    // Create a copy of the array so we can push on the default locale.\n    locales = (locales || []).concat(MessageFormat.defaultLocale);\n\n    var localeData = MessageFormat.__localeData__;\n    var i, len, localeParts, data;\n\n    // Using the set of locales + the default locale, we look for the first one\n    // which that has been registered. When data does not exist for a locale, we\n    // traverse its ancestors to find something that's been registered within\n    // its hierarchy of locales. Since we lack the proper `parentLocale` data\n    // here, we must take a naive approach to traversal.\n    for (i = 0, len = locales.length; i < len; i += 1) {\n        localeParts = locales[i].toLowerCase().split('-');\n\n        while (localeParts.length) {\n            data = localeData[localeParts.join('-')];\n            if (data) {\n                // Return the normalized locale string; e.g., we return \"en-US\",\n                // instead of \"en-us\".\n                return data.locale;\n            }\n\n            localeParts.pop();\n        }\n    }\n\n    var defaultLocale = locales.pop();\n    throw new Error(\n        'No locale data has been added to IntlMessageFormat for: ' +\n        locales.join(', ') + ', or the default locale: ' + defaultLocale\n    );\n};\n\n//# sourceMappingURL=core.js.map","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nvar src$utils$$ = require(\"./utils\");\n\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\n\nvar realDefineProp = (function () {\n    try { return !!Object.defineProperty({}, 'a', {}); }\n    catch (e) { return false; }\n})();\n\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\nvar defineProperty = realDefineProp ? Object.defineProperty :\n        function (obj, name, desc) {\n\n    if ('get' in desc && obj.__defineGetter__) {\n        obj.__defineGetter__(name, desc.get);\n    } else if (!src$utils$$.hop.call(obj, name) || 'value' in desc) {\n        obj[name] = desc.value;\n    }\n};\n\nvar objCreate = Object.create || function (proto, props) {\n    var obj, k;\n\n    function F() {}\n    F.prototype = proto;\n    obj = new F();\n\n    for (k in props) {\n        if (src$utils$$.hop.call(props, k)) {\n            defineProperty(obj, k, props[k]);\n        }\n    }\n\n    return obj;\n};\n\nexports.defineProperty = defineProperty, exports.objCreate = objCreate;\n\n//# sourceMappingURL=es5.js.map","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n\"use strict\";\nexports[\"default\"] = Compiler;\n\nfunction Compiler(locales, formats, pluralFn) {\n    this.locales  = locales;\n    this.formats  = formats;\n    this.pluralFn = pluralFn;\n}\n\nCompiler.prototype.compile = function (ast) {\n    this.pluralStack        = [];\n    this.currentPlural      = null;\n    this.pluralNumberFormat = null;\n\n    return this.compileMessage(ast);\n};\n\nCompiler.prototype.compileMessage = function (ast) {\n    if (!(ast && ast.type === 'messageFormatPattern')) {\n        throw new Error('Message AST is not of type: \"messageFormatPattern\"');\n    }\n\n    var elements = ast.elements,\n        pattern  = [];\n\n    var i, len, element;\n\n    for (i = 0, len = elements.length; i < len; i += 1) {\n        element = elements[i];\n\n        switch (element.type) {\n            case 'messageTextElement':\n                pattern.push(this.compileMessageText(element));\n                break;\n\n            case 'argumentElement':\n                pattern.push(this.compileArgument(element));\n                break;\n\n            default:\n                throw new Error('Message element does not have a valid type');\n        }\n    }\n\n    return pattern;\n};\n\nCompiler.prototype.compileMessageText = function (element) {\n    // When this `element` is part of plural sub-pattern and its value contains\n    // an unescaped '#', use a `PluralOffsetString` helper to properly output\n    // the number with the correct offset in the string.\n    if (this.currentPlural && /(^|[^\\\\])#/g.test(element.value)) {\n        // Create a cache a NumberFormat instance that can be reused for any\n        // PluralOffsetString instance in this message.\n        if (!this.pluralNumberFormat) {\n            this.pluralNumberFormat = new Intl.NumberFormat(this.locales);\n        }\n\n        return new PluralOffsetString(\n                this.currentPlural.id,\n                this.currentPlural.format.offset,\n                this.pluralNumberFormat,\n                element.value);\n    }\n\n    // Unescape the escaped '#'s in the message text.\n    return element.value.replace(/\\\\#/g, '#');\n};\n\nCompiler.prototype.compileArgument = function (element) {\n    var format = element.format;\n\n    if (!format) {\n        return new StringFormat(element.id);\n    }\n\n    var formats  = this.formats,\n        locales  = this.locales,\n        pluralFn = this.pluralFn,\n        options;\n\n    switch (format.type) {\n        case 'numberFormat':\n            options = formats.number[format.style];\n            return {\n                id    : element.id,\n                format: new Intl.NumberFormat(locales, options).format\n            };\n\n        case 'dateFormat':\n            options = formats.date[format.style];\n            return {\n                id    : element.id,\n                format: new Intl.DateTimeFormat(locales, options).format\n            };\n\n        case 'timeFormat':\n            options = formats.time[format.style];\n            return {\n                id    : element.id,\n                format: new Intl.DateTimeFormat(locales, options).format\n            };\n\n        case 'pluralFormat':\n            options = this.compileOptions(element);\n            return new PluralFormat(\n                element.id, format.ordinal, format.offset, options, pluralFn\n            );\n\n        case 'selectFormat':\n            options = this.compileOptions(element);\n            return new SelectFormat(element.id, options);\n\n        default:\n            throw new Error('Message element does not have a valid format type');\n    }\n};\n\nCompiler.prototype.compileOptions = function (element) {\n    var format      = element.format,\n        options     = format.options,\n        optionsHash = {};\n\n    // Save the current plural element, if any, then set it to a new value when\n    // compiling the options sub-patterns. This conforms the spec's algorithm\n    // for handling `\"#\"` syntax in message text.\n    this.pluralStack.push(this.currentPlural);\n    this.currentPlural = format.type === 'pluralFormat' ? element : null;\n\n    var i, len, option;\n\n    for (i = 0, len = options.length; i < len; i += 1) {\n        option = options[i];\n\n        // Compile the sub-pattern and save it under the options's selector.\n        optionsHash[option.selector] = this.compileMessage(option.value);\n    }\n\n    // Pop the plural stack to put back the original current plural value.\n    this.currentPlural = this.pluralStack.pop();\n\n    return optionsHash;\n};\n\n// -- Compiler Helper Classes --------------------------------------------------\n\nfunction StringFormat(id) {\n    this.id = id;\n}\n\nStringFormat.prototype.format = function (value) {\n    if (!value && typeof value !== 'number') {\n        return '';\n    }\n\n    return typeof value === 'string' ? value : String(value);\n};\n\nfunction PluralFormat(id, useOrdinal, offset, options, pluralFn) {\n    this.id         = id;\n    this.useOrdinal = useOrdinal;\n    this.offset     = offset;\n    this.options    = options;\n    this.pluralFn   = pluralFn;\n}\n\nPluralFormat.prototype.getOption = function (value) {\n    var options = this.options;\n\n    var option = options['=' + value] ||\n            options[this.pluralFn(value - this.offset, this.useOrdinal)];\n\n    return option || options.other;\n};\n\nfunction PluralOffsetString(id, offset, numberFormat, string) {\n    this.id           = id;\n    this.offset       = offset;\n    this.numberFormat = numberFormat;\n    this.string       = string;\n}\n\nPluralOffsetString.prototype.format = function (value) {\n    var number = this.numberFormat.format(value - this.offset);\n\n    return this.string\n            .replace(/(^|[^\\\\])#/g, '$1' + number)\n            .replace(/\\\\#/g, '#');\n};\n\nfunction SelectFormat(id, options) {\n    this.id      = id;\n    this.options = options;\n}\n\nSelectFormat.prototype.getOption = function (value) {\n    var options = this.options;\n    return options[value] || options.other;\n};\n\n//# sourceMappingURL=compiler.js.map","'use strict';\n\nexports = module.exports = require('./lib/parser')['default'];\nexports['default'] = exports;\n","\"use strict\";\n\nexports[\"default\"] = (function() {\n  \"use strict\";\n\n  /*\n   * Generated by PEG.js 0.9.0.\n   *\n   * http://pegjs.org/\n   */\n\n  function peg$subclass(child, parent) {\n    function ctor() { this.constructor = child; }\n    ctor.prototype = parent.prototype;\n    child.prototype = new ctor();\n  }\n\n  function peg$SyntaxError(message, expected, found, location) {\n    this.message  = message;\n    this.expected = expected;\n    this.found    = found;\n    this.location = location;\n    this.name     = \"SyntaxError\";\n\n    if (typeof Error.captureStackTrace === \"function\") {\n      Error.captureStackTrace(this, peg$SyntaxError);\n    }\n  }\n\n  peg$subclass(peg$SyntaxError, Error);\n\n  function peg$parse(input) {\n    var options = arguments.length > 1 ? arguments[1] : {},\n        parser  = this,\n\n        peg$FAILED = {},\n\n        peg$startRuleFunctions = { start: peg$parsestart },\n        peg$startRuleFunction  = peg$parsestart,\n\n        peg$c0 = function(elements) {\n                return {\n                    type    : 'messageFormatPattern',\n                    elements: elements,\n                    location: location()\n                };\n            },\n        peg$c1 = function(text) {\n                var string = '',\n                    i, j, outerLen, inner, innerLen;\n\n                for (i = 0, outerLen = text.length; i < outerLen; i += 1) {\n                    inner = text[i];\n\n                    for (j = 0, innerLen = inner.length; j < innerLen; j += 1) {\n                        string += inner[j];\n                    }\n                }\n\n                return string;\n            },\n        peg$c2 = function(messageText) {\n                return {\n                    type : 'messageTextElement',\n                    value: messageText,\n                    location: location()\n                };\n            },\n        peg$c3 = /^[^ \\t\\n\\r,.+={}#]/,\n        peg$c4 = { type: \"class\", value: \"[^ \\\\t\\\\n\\\\r,.+={}#]\", description: \"[^ \\\\t\\\\n\\\\r,.+={}#]\" },\n        peg$c5 = \"{\",\n        peg$c6 = { type: \"literal\", value: \"{\", description: \"\\\"{\\\"\" },\n        peg$c7 = \",\",\n        peg$c8 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n        peg$c9 = \"}\",\n        peg$c10 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n        peg$c11 = function(id, format) {\n                return {\n                    type  : 'argumentElement',\n                    id    : id,\n                    format: format && format[2],\n                    location: location()\n                };\n            },\n        peg$c12 = \"number\",\n        peg$c13 = { type: \"literal\", value: \"number\", description: \"\\\"number\\\"\" },\n        peg$c14 = \"date\",\n        peg$c15 = { type: \"literal\", value: \"date\", description: \"\\\"date\\\"\" },\n        peg$c16 = \"time\",\n        peg$c17 = { type: \"literal\", value: \"time\", description: \"\\\"time\\\"\" },\n        peg$c18 = function(type, style) {\n                return {\n                    type : type + 'Format',\n                    style: style && style[2],\n                    location: location()\n                };\n            },\n        peg$c19 = \"plural\",\n        peg$c20 = { type: \"literal\", value: \"plural\", description: \"\\\"plural\\\"\" },\n        peg$c21 = function(pluralStyle) {\n                return {\n                    type   : pluralStyle.type,\n                    ordinal: false,\n                    offset : pluralStyle.offset || 0,\n                    options: pluralStyle.options,\n                    location: location()\n                };\n            },\n        peg$c22 = \"selectordinal\",\n        peg$c23 = { type: \"literal\", value: \"selectordinal\", description: \"\\\"selectordinal\\\"\" },\n        peg$c24 = function(pluralStyle) {\n                return {\n                    type   : pluralStyle.type,\n                    ordinal: true,\n                    offset : pluralStyle.offset || 0,\n                    options: pluralStyle.options,\n                    location: location()\n                }\n            },\n        peg$c25 = \"select\",\n        peg$c26 = { type: \"literal\", value: \"select\", description: \"\\\"select\\\"\" },\n        peg$c27 = function(options) {\n                return {\n                    type   : 'selectFormat',\n                    options: options,\n                    location: location()\n                };\n            },\n        peg$c28 = \"=\",\n        peg$c29 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n        peg$c30 = function(selector, pattern) {\n                return {\n                    type    : 'optionalFormatPattern',\n                    selector: selector,\n                    value   : pattern,\n                    location: location()\n                };\n            },\n        peg$c31 = \"offset:\",\n        peg$c32 = { type: \"literal\", value: \"offset:\", description: \"\\\"offset:\\\"\" },\n        peg$c33 = function(number) {\n                return number;\n            },\n        peg$c34 = function(offset, options) {\n                return {\n                    type   : 'pluralFormat',\n                    offset : offset,\n                    options: options,\n                    location: location()\n                };\n            },\n        peg$c35 = { type: \"other\", description: \"whitespace\" },\n        peg$c36 = /^[ \\t\\n\\r]/,\n        peg$c37 = { type: \"class\", value: \"[ \\\\t\\\\n\\\\r]\", description: \"[ \\\\t\\\\n\\\\r]\" },\n        peg$c38 = { type: \"other\", description: \"optionalWhitespace\" },\n        peg$c39 = /^[0-9]/,\n        peg$c40 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n        peg$c41 = /^[0-9a-f]/i,\n        peg$c42 = { type: \"class\", value: \"[0-9a-f]i\", description: \"[0-9a-f]i\" },\n        peg$c43 = \"0\",\n        peg$c44 = { type: \"literal\", value: \"0\", description: \"\\\"0\\\"\" },\n        peg$c45 = /^[1-9]/,\n        peg$c46 = { type: \"class\", value: \"[1-9]\", description: \"[1-9]\" },\n        peg$c47 = function(digits) {\n            return parseInt(digits, 10);\n        },\n        peg$c48 = /^[^{}\\\\\\0-\\x1F \\t\\n\\r]/,\n        peg$c49 = { type: \"class\", value: \"[^{}\\\\\\\\\\\\0-\\\\x1F\\\\x7f \\\\t\\\\n\\\\r]\", description: \"[^{}\\\\\\\\\\\\0-\\\\x1F\\\\x7f \\\\t\\\\n\\\\r]\" },\n        peg$c50 = \"\\\\\\\\\",\n        peg$c51 = { type: \"literal\", value: \"\\\\\\\\\", description: \"\\\"\\\\\\\\\\\\\\\\\\\"\" },\n        peg$c52 = function() { return '\\\\'; },\n        peg$c53 = \"\\\\#\",\n        peg$c54 = { type: \"literal\", value: \"\\\\#\", description: \"\\\"\\\\\\\\#\\\"\" },\n        peg$c55 = function() { return '\\\\#'; },\n        peg$c56 = \"\\\\{\",\n        peg$c57 = { type: \"literal\", value: \"\\\\{\", description: \"\\\"\\\\\\\\{\\\"\" },\n        peg$c58 = function() { return '\\u007B'; },\n        peg$c59 = \"\\\\}\",\n        peg$c60 = { type: \"literal\", value: \"\\\\}\", description: \"\\\"\\\\\\\\}\\\"\" },\n        peg$c61 = function() { return '\\u007D'; },\n        peg$c62 = \"\\\\u\",\n        peg$c63 = { type: \"literal\", value: \"\\\\u\", description: \"\\\"\\\\\\\\u\\\"\" },\n        peg$c64 = function(digits) {\n                return String.fromCharCode(parseInt(digits, 16));\n            },\n        peg$c65 = function(chars) { return chars.join(''); },\n\n        peg$currPos          = 0,\n        peg$savedPos         = 0,\n        peg$posDetailsCache  = [{ line: 1, column: 1, seenCR: false }],\n        peg$maxFailPos       = 0,\n        peg$maxFailExpected  = [],\n        peg$silentFails      = 0,\n\n        peg$result;\n\n    if (\"startRule\" in options) {\n      if (!(options.startRule in peg$startRuleFunctions)) {\n        throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n      }\n\n      peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n    }\n\n    function text() {\n      return input.substring(peg$savedPos, peg$currPos);\n    }\n\n    function location() {\n      return peg$computeLocation(peg$savedPos, peg$currPos);\n    }\n\n    function expected(description) {\n      throw peg$buildException(\n        null,\n        [{ type: \"other\", description: description }],\n        input.substring(peg$savedPos, peg$currPos),\n        peg$computeLocation(peg$savedPos, peg$currPos)\n      );\n    }\n\n    function error(message) {\n      throw peg$buildException(\n        message,\n        null,\n        input.substring(peg$savedPos, peg$currPos),\n        peg$computeLocation(peg$savedPos, peg$currPos)\n      );\n    }\n\n    function peg$computePosDetails(pos) {\n      var details = peg$posDetailsCache[pos],\n          p, ch;\n\n      if (details) {\n        return details;\n      } else {\n        p = pos - 1;\n        while (!peg$posDetailsCache[p]) {\n          p--;\n        }\n\n        details = peg$posDetailsCache[p];\n        details = {\n          line:   details.line,\n          column: details.column,\n          seenCR: details.seenCR\n        };\n\n        while (p < pos) {\n          ch = input.charAt(p);\n          if (ch === \"\\n\") {\n            if (!details.seenCR) { details.line++; }\n            details.column = 1;\n            details.seenCR = false;\n          } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n            details.line++;\n            details.column = 1;\n            details.seenCR = true;\n          } else {\n            details.column++;\n            details.seenCR = false;\n          }\n\n          p++;\n        }\n\n        peg$posDetailsCache[pos] = details;\n        return details;\n      }\n    }\n\n    function peg$computeLocation(startPos, endPos) {\n      var startPosDetails = peg$computePosDetails(startPos),\n          endPosDetails   = peg$computePosDetails(endPos);\n\n      return {\n        start: {\n          offset: startPos,\n          line:   startPosDetails.line,\n          column: startPosDetails.column\n        },\n        end: {\n          offset: endPos,\n          line:   endPosDetails.line,\n          column: endPosDetails.column\n        }\n      };\n    }\n\n    function peg$fail(expected) {\n      if (peg$currPos < peg$maxFailPos) { return; }\n\n      if (peg$currPos > peg$maxFailPos) {\n        peg$maxFailPos = peg$currPos;\n        peg$maxFailExpected = [];\n      }\n\n      peg$maxFailExpected.push(expected);\n    }\n\n    function peg$buildException(message, expected, found, location) {\n      function cleanupExpected(expected) {\n        var i = 1;\n\n        expected.sort(function(a, b) {\n          if (a.description < b.description) {\n            return -1;\n          } else if (a.description > b.description) {\n            return 1;\n          } else {\n            return 0;\n          }\n        });\n\n        while (i < expected.length) {\n          if (expected[i - 1] === expected[i]) {\n            expected.splice(i, 1);\n          } else {\n            i++;\n          }\n        }\n      }\n\n      function buildMessage(expected, found) {\n        function stringEscape(s) {\n          function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n          return s\n            .replace(/\\\\/g,   '\\\\\\\\')\n            .replace(/\"/g,    '\\\\\"')\n            .replace(/\\x08/g, '\\\\b')\n            .replace(/\\t/g,   '\\\\t')\n            .replace(/\\n/g,   '\\\\n')\n            .replace(/\\f/g,   '\\\\f')\n            .replace(/\\r/g,   '\\\\r')\n            .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n            .replace(/[\\x10-\\x1F\\x80-\\xFF]/g,    function(ch) { return '\\\\x'  + hex(ch); })\n            .replace(/[\\u0100-\\u0FFF]/g,         function(ch) { return '\\\\u0' + hex(ch); })\n            .replace(/[\\u1000-\\uFFFF]/g,         function(ch) { return '\\\\u'  + hex(ch); });\n        }\n\n        var expectedDescs = new Array(expected.length),\n            expectedDesc, foundDesc, i;\n\n        for (i = 0; i < expected.length; i++) {\n          expectedDescs[i] = expected[i].description;\n        }\n\n        expectedDesc = expected.length > 1\n          ? expectedDescs.slice(0, -1).join(\", \")\n              + \" or \"\n              + expectedDescs[expected.length - 1]\n          : expectedDescs[0];\n\n        foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n        return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n      }\n\n      if (expected !== null) {\n        cleanupExpected(expected);\n      }\n\n      return new peg$SyntaxError(\n        message !== null ? message : buildMessage(expected, found),\n        expected,\n        found,\n        location\n      );\n    }\n\n    function peg$parsestart() {\n      var s0;\n\n      s0 = peg$parsemessageFormatPattern();\n\n      return s0;\n    }\n\n    function peg$parsemessageFormatPattern() {\n      var s0, s1, s2;\n\n      s0 = peg$currPos;\n      s1 = [];\n      s2 = peg$parsemessageFormatElement();\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        s2 = peg$parsemessageFormatElement();\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c0(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parsemessageFormatElement() {\n      var s0;\n\n      s0 = peg$parsemessageTextElement();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseargumentElement();\n      }\n\n      return s0;\n    }\n\n    function peg$parsemessageText() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      s1 = [];\n      s2 = peg$currPos;\n      s3 = peg$parse_();\n      if (s3 !== peg$FAILED) {\n        s4 = peg$parsechars();\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parse_();\n          if (s5 !== peg$FAILED) {\n            s3 = [s3, s4, s5];\n            s2 = s3;\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 !== peg$FAILED) {\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$currPos;\n          s3 = peg$parse_();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parsechars();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parse_();\n              if (s5 !== peg$FAILED) {\n                s3 = [s3, s4, s5];\n                s2 = s3;\n              } else {\n                peg$currPos = s2;\n                s2 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s2;\n              s2 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        }\n      } else {\n        s1 = peg$FAILED;\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c1(s1);\n      }\n      s0 = s1;\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parsews();\n        if (s1 !== peg$FAILED) {\n          s0 = input.substring(s0, peg$currPos);\n        } else {\n          s0 = s1;\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parsemessageTextElement() {\n      var s0, s1;\n\n      s0 = peg$currPos;\n      s1 = peg$parsemessageText();\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c2(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parseargument() {\n      var s0, s1, s2;\n\n      s0 = peg$parsenumber();\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = [];\n        if (peg$c3.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c4); }\n        }\n        if (s2 !== peg$FAILED) {\n          while (s2 !== peg$FAILED) {\n            s1.push(s2);\n            if (peg$c3.test(input.charAt(peg$currPos))) {\n              s2 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s2 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c4); }\n            }\n          }\n        } else {\n          s1 = peg$FAILED;\n        }\n        if (s1 !== peg$FAILED) {\n          s0 = input.substring(s0, peg$currPos);\n        } else {\n          s0 = s1;\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseargumentElement() {\n      var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 123) {\n        s1 = peg$c5;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c6); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseargument();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$currPos;\n              if (input.charCodeAt(peg$currPos) === 44) {\n                s6 = peg$c7;\n                peg$currPos++;\n              } else {\n                s6 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c8); }\n              }\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parse_();\n                if (s7 !== peg$FAILED) {\n                  s8 = peg$parseelementFormat();\n                  if (s8 !== peg$FAILED) {\n                    s6 = [s6, s7, s8];\n                    s5 = s6;\n                  } else {\n                    peg$currPos = s5;\n                    s5 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s5;\n                  s5 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s5;\n                s5 = peg$FAILED;\n              }\n              if (s5 === peg$FAILED) {\n                s5 = null;\n              }\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parse_();\n                if (s6 !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 125) {\n                    s7 = peg$c9;\n                    peg$currPos++;\n                  } else {\n                    s7 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c10); }\n                  }\n                  if (s7 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c11(s3, s5);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parseelementFormat() {\n      var s0;\n\n      s0 = peg$parsesimpleFormat();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parsepluralFormat();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseselectOrdinalFormat();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parseselectFormat();\n          }\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parsesimpleFormat() {\n      var s0, s1, s2, s3, s4, s5, s6;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 6) === peg$c12) {\n        s1 = peg$c12;\n        peg$currPos += 6;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c13); }\n      }\n      if (s1 === peg$FAILED) {\n        if (input.substr(peg$currPos, 4) === peg$c14) {\n          s1 = peg$c14;\n          peg$currPos += 4;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c15); }\n        }\n        if (s1 === peg$FAILED) {\n          if (input.substr(peg$currPos, 4) === peg$c16) {\n            s1 = peg$c16;\n            peg$currPos += 4;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c17); }\n          }\n        }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s4 = peg$c7;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c8); }\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parse_();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parsechars();\n              if (s6 !== peg$FAILED) {\n                s4 = [s4, s5, s6];\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n          if (s3 === peg$FAILED) {\n            s3 = null;\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c18(s1, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parsepluralFormat() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 6) === peg$c19) {\n        s1 = peg$c19;\n        peg$currPos += 6;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c20); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s3 = peg$c7;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c8); }\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parsepluralStyle();\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c21(s5);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parseselectOrdinalFormat() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 13) === peg$c22) {\n        s1 = peg$c22;\n        peg$currPos += 13;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c23); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s3 = peg$c7;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c8); }\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parsepluralStyle();\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c24(s5);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parseselectFormat() {\n      var s0, s1, s2, s3, s4, s5, s6;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 6) === peg$c25) {\n        s1 = peg$c25;\n        peg$currPos += 6;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c26); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s3 = peg$c7;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c8); }\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parse_();\n            if (s4 !== peg$FAILED) {\n              s5 = [];\n              s6 = peg$parseoptionalFormatPattern();\n              if (s6 !== peg$FAILED) {\n                while (s6 !== peg$FAILED) {\n                  s5.push(s6);\n                  s6 = peg$parseoptionalFormatPattern();\n                }\n              } else {\n                s5 = peg$FAILED;\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c27(s5);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parseselector() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      s1 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 61) {\n        s2 = peg$c28;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c29); }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsenumber();\n        if (s3 !== peg$FAILED) {\n          s2 = [s2, s3];\n          s1 = s2;\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n      if (s1 !== peg$FAILED) {\n        s0 = input.substring(s0, peg$currPos);\n      } else {\n        s0 = s1;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$parsechars();\n      }\n\n      return s0;\n    }\n\n    function peg$parseoptionalFormatPattern() {\n      var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n      s0 = peg$currPos;\n      s1 = peg$parse_();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseselector();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parse_();\n          if (s3 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 123) {\n              s4 = peg$c5;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c6); }\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parse_();\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parsemessageFormatPattern();\n                if (s6 !== peg$FAILED) {\n                  s7 = peg$parse_();\n                  if (s7 !== peg$FAILED) {\n                    if (input.charCodeAt(peg$currPos) === 125) {\n                      s8 = peg$c9;\n                      peg$currPos++;\n                    } else {\n                      s8 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c10); }\n                    }\n                    if (s8 !== peg$FAILED) {\n                      peg$savedPos = s0;\n                      s1 = peg$c30(s2, s6);\n                      s0 = s1;\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parseoffset() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 7) === peg$c31) {\n        s1 = peg$c31;\n        peg$currPos += 7;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c32); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parsenumber();\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c33(s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parsepluralStyle() {\n      var s0, s1, s2, s3, s4;\n\n      s0 = peg$currPos;\n      s1 = peg$parseoffset();\n      if (s1 === peg$FAILED) {\n        s1 = null;\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parse_();\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          s4 = peg$parseoptionalFormatPattern();\n          if (s4 !== peg$FAILED) {\n            while (s4 !== peg$FAILED) {\n              s3.push(s4);\n              s4 = peg$parseoptionalFormatPattern();\n            }\n          } else {\n            s3 = peg$FAILED;\n          }\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c34(s1, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n\n      return s0;\n    }\n\n    function peg$parsews() {\n      var s0, s1;\n\n      peg$silentFails++;\n      s0 = [];\n      if (peg$c36.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c37); }\n      }\n      if (s1 !== peg$FAILED) {\n        while (s1 !== peg$FAILED) {\n          s0.push(s1);\n          if (peg$c36.test(input.charAt(peg$currPos))) {\n            s1 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c37); }\n          }\n        }\n      } else {\n        s0 = peg$FAILED;\n      }\n      peg$silentFails--;\n      if (s0 === peg$FAILED) {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c35); }\n      }\n\n      return s0;\n    }\n\n    function peg$parse_() {\n      var s0, s1, s2;\n\n      peg$silentFails++;\n      s0 = peg$currPos;\n      s1 = [];\n      s2 = peg$parsews();\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        s2 = peg$parsews();\n      }\n      if (s1 !== peg$FAILED) {\n        s0 = input.substring(s0, peg$currPos);\n      } else {\n        s0 = s1;\n      }\n      peg$silentFails--;\n      if (s0 === peg$FAILED) {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c38); }\n      }\n\n      return s0;\n    }\n\n    function peg$parsedigit() {\n      var s0;\n\n      if (peg$c39.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c40); }\n      }\n\n      return s0;\n    }\n\n    function peg$parsehexDigit() {\n      var s0;\n\n      if (peg$c41.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c42); }\n      }\n\n      return s0;\n    }\n\n    function peg$parsenumber() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 48) {\n        s1 = peg$c43;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c44); }\n      }\n      if (s1 === peg$FAILED) {\n        s1 = peg$currPos;\n        s2 = peg$currPos;\n        if (peg$c45.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c46); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = [];\n          s5 = peg$parsedigit();\n          while (s5 !== peg$FAILED) {\n            s4.push(s5);\n            s5 = peg$parsedigit();\n          }\n          if (s4 !== peg$FAILED) {\n            s3 = [s3, s4];\n            s2 = s3;\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 !== peg$FAILED) {\n          s1 = input.substring(s1, peg$currPos);\n        } else {\n          s1 = s2;\n        }\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c47(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parsechar() {\n      var s0, s1, s2, s3, s4, s5, s6, s7;\n\n      if (peg$c48.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c49); }\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        if (input.substr(peg$currPos, 2) === peg$c50) {\n          s1 = peg$c50;\n          peg$currPos += 2;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c51); }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c52();\n        }\n        s0 = s1;\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          if (input.substr(peg$currPos, 2) === peg$c53) {\n            s1 = peg$c53;\n            peg$currPos += 2;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c54); }\n          }\n          if (s1 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c55();\n          }\n          s0 = s1;\n          if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            if (input.substr(peg$currPos, 2) === peg$c56) {\n              s1 = peg$c56;\n              peg$currPos += 2;\n            } else {\n              s1 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c57); }\n            }\n            if (s1 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c58();\n            }\n            s0 = s1;\n            if (s0 === peg$FAILED) {\n              s0 = peg$currPos;\n              if (input.substr(peg$currPos, 2) === peg$c59) {\n                s1 = peg$c59;\n                peg$currPos += 2;\n              } else {\n                s1 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c60); }\n              }\n              if (s1 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c61();\n              }\n              s0 = s1;\n              if (s0 === peg$FAILED) {\n                s0 = peg$currPos;\n                if (input.substr(peg$currPos, 2) === peg$c62) {\n                  s1 = peg$c62;\n                  peg$currPos += 2;\n                } else {\n                  s1 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c63); }\n                }\n                if (s1 !== peg$FAILED) {\n                  s2 = peg$currPos;\n                  s3 = peg$currPos;\n                  s4 = peg$parsehexDigit();\n                  if (s4 !== peg$FAILED) {\n                    s5 = peg$parsehexDigit();\n                    if (s5 !== peg$FAILED) {\n                      s6 = peg$parsehexDigit();\n                      if (s6 !== peg$FAILED) {\n                        s7 = peg$parsehexDigit();\n                        if (s7 !== peg$FAILED) {\n                          s4 = [s4, s5, s6, s7];\n                          s3 = s4;\n                        } else {\n                          peg$currPos = s3;\n                          s3 = peg$FAILED;\n                        }\n                      } else {\n                        peg$currPos = s3;\n                        s3 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s3;\n                      s3 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s3;\n                    s3 = peg$FAILED;\n                  }\n                  if (s3 !== peg$FAILED) {\n                    s2 = input.substring(s2, peg$currPos);\n                  } else {\n                    s2 = s3;\n                  }\n                  if (s2 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c64(s2);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              }\n            }\n          }\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parsechars() {\n      var s0, s1, s2;\n\n      s0 = peg$currPos;\n      s1 = [];\n      s2 = peg$parsechar();\n      if (s2 !== peg$FAILED) {\n        while (s2 !== peg$FAILED) {\n          s1.push(s2);\n          s2 = peg$parsechar();\n        }\n      } else {\n        s1 = peg$FAILED;\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c65(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    peg$result = peg$startRuleFunction();\n\n    if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n      return peg$result;\n    } else {\n      if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n        peg$fail({ type: \"end\", description: \"end of input\" });\n      }\n\n      throw peg$buildException(\n        null,\n        peg$maxFailExpected,\n        peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n        peg$maxFailPos < input.length\n          ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n          : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n      );\n    }\n  }\n\n  return {\n    SyntaxError: peg$SyntaxError,\n    parse:       peg$parse\n  };\n})();\n\n//# sourceMappingURL=parser.js.map","// GENERATED FILE\n\"use strict\";\nexports[\"default\"] = {\"locale\":\"en\",\"pluralRuleFunction\":function (n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?\"one\":n10==2&&n100!=12?\"two\":n10==3&&n100!=13?\"few\":\"other\";return n==1&&v0?\"one\":\"other\"}};\n\n//# sourceMappingURL=en.js.map","/* (ignored) */","\"use strict\";\n/* jslint esnext: true */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar core_1 = require(\"./core\");\nvar en_1 = require(\"./en\");\ncore_1.default.__addLocaleData(en_1.default);\ncore_1.default.defaultLocale = 'en';\nexports.default = core_1.default;\n//# sourceMappingURL=main.js.map","\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* jslint esnext: true */\nvar intl_messageformat_1 = require(\"intl-messageformat\");\nvar diff_1 = require(\"./diff\");\nvar es5_1 = require(\"./es5\");\nexports.default = RelativeFormat;\n// -----------------------------------------------------------------------------\nvar FIELDS = [\n    'second', 'second-short',\n    'minute', 'minute-short',\n    'hour', 'hour-short',\n    'day', 'day-short',\n    'month', 'month-short',\n    'year', 'year-short'\n];\nvar STYLES = ['best fit', 'numeric'];\n// -- RelativeFormat -----------------------------------------------------------\nfunction RelativeFormat(locales, options) {\n    options = options || {};\n    // Make a copy of `locales` if it's an array, so that it doesn't change\n    // since it's used lazily.\n    if (es5_1.isArray(locales)) {\n        locales = locales.concat();\n    }\n    es5_1.defineProperty(this, '_locale', { value: this._resolveLocale(locales) });\n    es5_1.defineProperty(this, '_options', { value: {\n            style: this._resolveStyle(options.style),\n            units: this._isValidUnits(options.units) && options.units\n        } });\n    es5_1.defineProperty(this, '_locales', { value: locales });\n    es5_1.defineProperty(this, '_fields', { value: this._findFields(this._locale) });\n    es5_1.defineProperty(this, '_messages', { value: es5_1.objCreate(null) });\n    // \"Bind\" `format()` method to `this` so it can be passed by reference like\n    // the other `Intl` APIs.\n    var relativeFormat = this;\n    this.format = function format(date, options) {\n        return relativeFormat._format(date, options);\n    };\n}\n// Define internal private properties for dealing with locale data.\nes5_1.defineProperty(RelativeFormat, '__localeData__', { value: es5_1.objCreate(null) });\nes5_1.defineProperty(RelativeFormat, '__addLocaleData', { value: function () {\n        for (var i = 0; i < arguments.length; i++) {\n            var datum = arguments[i];\n            if (!(datum && datum.locale)) {\n                throw new Error('Locale data provided to IntlRelativeFormat is missing a ' +\n                    '`locale` property value');\n            }\n            RelativeFormat.__localeData__[datum.locale.toLowerCase()] = datum;\n            // Add data to IntlMessageFormat.\n            intl_messageformat_1.default.__addLocaleData(datum);\n        }\n    } });\n// Define public `defaultLocale` property which can be set by the developer, or\n// it will be set when the first RelativeFormat instance is created by\n// leveraging the resolved locale from `Intl`.\nes5_1.defineProperty(RelativeFormat, 'defaultLocale', {\n    enumerable: true,\n    writable: true,\n    value: undefined\n});\n// Define public `thresholds` property which can be set by the developer, and\n// defaults to relative time thresholds from moment.js.\nes5_1.defineProperty(RelativeFormat, 'thresholds', {\n    enumerable: true,\n    value: {\n        second: 45, 'second-short': 45,\n        minute: 45, 'minute-short': 45,\n        hour: 22, 'hour-short': 22,\n        day: 26, 'day-short': 26,\n        month: 11, 'month-short': 11 // months to year\n    }\n});\nRelativeFormat.prototype.resolvedOptions = function () {\n    return {\n        locale: this._locale,\n        style: this._options.style,\n        units: this._options.units\n    };\n};\nRelativeFormat.prototype._compileMessage = function (units) {\n    // `this._locales` is the original set of locales the user specified to the\n    // constructor, while `this._locale` is the resolved root locale.\n    var locales = this._locales;\n    var resolvedLocale = this._locale;\n    var field = this._fields[units];\n    var relativeTime = field.relativeTime;\n    var future = '';\n    var past = '';\n    var i;\n    for (i in relativeTime.future) {\n        if (relativeTime.future.hasOwnProperty(i)) {\n            future += ' ' + i + ' {' +\n                relativeTime.future[i].replace('{0}', '#') + '}';\n        }\n    }\n    for (i in relativeTime.past) {\n        if (relativeTime.past.hasOwnProperty(i)) {\n            past += ' ' + i + ' {' +\n                relativeTime.past[i].replace('{0}', '#') + '}';\n        }\n    }\n    var message = '{when, select, future {{0, plural, ' + future + '}}' +\n        'past {{0, plural, ' + past + '}}}';\n    // Create the synthetic IntlMessageFormat instance using the original\n    // locales value specified by the user when constructing the the parent\n    // IntlRelativeFormat instance.\n    return new intl_messageformat_1.default(message, locales);\n};\nRelativeFormat.prototype._getMessage = function (units) {\n    var messages = this._messages;\n    // Create a new synthetic message based on the locale data from CLDR.\n    if (!messages[units]) {\n        messages[units] = this._compileMessage(units);\n    }\n    return messages[units];\n};\nRelativeFormat.prototype._getRelativeUnits = function (diff, units) {\n    var field = this._fields[units];\n    if (field.relative) {\n        return field.relative[diff];\n    }\n};\nRelativeFormat.prototype._findFields = function (locale) {\n    var localeData = RelativeFormat.__localeData__;\n    var data = localeData[locale.toLowerCase()];\n    // The locale data is de-duplicated, so we have to traverse the locale's\n    // hierarchy until we find `fields` to return.\n    while (data) {\n        if (data.fields) {\n            return data.fields;\n        }\n        data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n    }\n    throw new Error('Locale data added to IntlRelativeFormat is missing `fields` for :' +\n        locale);\n};\nRelativeFormat.prototype._format = function (date, options) {\n    var now = options && options.now !== undefined ? options.now : es5_1.dateNow();\n    if (date === undefined) {\n        date = now;\n    }\n    // Determine if the `date` and optional `now` values are valid, and throw a\n    // similar error to what `Intl.DateTimeFormat#format()` would throw.\n    if (!isFinite(now)) {\n        throw new RangeError('The `now` option provided to IntlRelativeFormat#format() is not ' +\n            'in valid range.');\n    }\n    if (!isFinite(date)) {\n        throw new RangeError('The date value provided to IntlRelativeFormat#format() is not ' +\n            'in valid range.');\n    }\n    var diffReport = diff_1.default(now, date);\n    var units = this._options.units || this._selectUnits(diffReport);\n    var diffInUnits = diffReport[units];\n    if (this._options.style !== 'numeric') {\n        var relativeUnits = this._getRelativeUnits(diffInUnits, units);\n        if (relativeUnits) {\n            return relativeUnits;\n        }\n    }\n    return this._getMessage(units).format({\n        '0': Math.abs(diffInUnits),\n        when: diffInUnits < 0 ? 'past' : 'future'\n    });\n};\nRelativeFormat.prototype._isValidUnits = function (units) {\n    if (!units || es5_1.arrIndexOf.call(FIELDS, units) >= 0) {\n        return true;\n    }\n    if (typeof units === 'string') {\n        var suggestion = /s$/.test(units) && units.substr(0, units.length - 1);\n        if (suggestion && es5_1.arrIndexOf.call(FIELDS, suggestion) >= 0) {\n            throw new Error('\"' + units + '\" is not a valid IntlRelativeFormat `units` ' +\n                'value, did you mean: ' + suggestion);\n        }\n    }\n    throw new Error('\"' + units + '\" is not a valid IntlRelativeFormat `units` value, it ' +\n        'must be one of: \"' + FIELDS.join('\", \"') + '\"');\n};\nRelativeFormat.prototype._resolveLocale = function (locales) {\n    if (typeof locales === 'string') {\n        locales = [locales];\n    }\n    // Create a copy of the array so we can push on the default locale.\n    locales = (locales || []).concat(RelativeFormat.defaultLocale);\n    var localeData = RelativeFormat.__localeData__;\n    var i, len, localeParts, data;\n    // Using the set of locales + the default locale, we look for the first one\n    // which that has been registered. When data does not exist for a locale, we\n    // traverse its ancestors to find something that's been registered within\n    // its hierarchy of locales. Since we lack the proper `parentLocale` data\n    // here, we must take a naive approach to traversal.\n    for (i = 0, len = locales.length; i < len; i += 1) {\n        localeParts = locales[i].toLowerCase().split('-');\n        while (localeParts.length) {\n            data = localeData[localeParts.join('-')];\n            if (data) {\n                // Return the normalized locale string; e.g., we return \"en-US\",\n                // instead of \"en-us\".\n                return data.locale;\n            }\n            localeParts.pop();\n        }\n    }\n    var defaultLocale = locales.pop();\n    throw new Error('No locale data has been added to IntlRelativeFormat for: ' +\n        locales.join(', ') + ', or the default locale: ' + defaultLocale);\n};\nRelativeFormat.prototype._resolveStyle = function (style) {\n    // Default to \"best fit\" style.\n    if (!style) {\n        return STYLES[0];\n    }\n    if (es5_1.arrIndexOf.call(STYLES, style) >= 0) {\n        return style;\n    }\n    throw new Error('\"' + style + '\" is not a valid IntlRelativeFormat `style` value, it ' +\n        'must be one of: \"' + STYLES.join('\", \"') + '\"');\n};\nRelativeFormat.prototype._selectUnits = function (diffReport) {\n    var i, l, units;\n    var fields = FIELDS.filter(function (field) {\n        return field.indexOf('-short') < 1;\n    });\n    for (i = 0, l = fields.length; i < l; i += 1) {\n        units = fields[i];\n        if (Math.abs(diffReport[units]) < RelativeFormat.thresholds[units]) {\n            break;\n        }\n    }\n    return units;\n};\n//# sourceMappingURL=core.js.map","\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* jslint esnext: true */\nvar round = Math.round;\nfunction daysToYears(days) {\n    // 400 years have 146097 days (taking into account leap year rules)\n    return days * 400 / 146097;\n}\n// Thanks to date-fns\n// https://github.com/date-fns/date-fns\n// MIT © Sasha Koss\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_DAY = 86400000;\nfunction startOfDay(dirtyDate) {\n    var date = new Date(dirtyDate);\n    date.setHours(0, 0, 0, 0);\n    return date;\n}\nfunction differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n    var startOfDayLeft = startOfDay(dirtyDateLeft);\n    var startOfDayRight = startOfDay(dirtyDateRight);\n    var timestampLeft = startOfDayLeft.getTime() -\n        startOfDayLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n    var timestampRight = startOfDayRight.getTime() -\n        startOfDayRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n    // Round the number of days to the nearest integer\n    // because the number of milliseconds in a day is not constant\n    // (e.g. it's different in the day of the daylight saving time clock shift)\n    return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}\nfunction default_1(from, to) {\n    // Convert to ms timestamps.\n    from = +from;\n    to = +to;\n    var millisecond = round(to - from), second = round(millisecond / 1000), minute = round(second / 60), hour = round(minute / 60);\n    // We expect a more precision in rounding when dealing with\n    // days as it feels wrong when something happended 13 hours ago and\n    // is regarded as \"yesterday\" even if the time was this morning.\n    var day = differenceInCalendarDays(to, from);\n    var week = round(day / 7);\n    var rawYears = daysToYears(day), month = round(rawYears * 12), year = round(rawYears);\n    return {\n        millisecond: millisecond,\n        second: second,\n        'second-short': second,\n        minute: minute,\n        'minute-short': minute,\n        hour: hour,\n        'hour-short': hour,\n        day: day,\n        'day-short': day,\n        week: week,\n        'week-short': week,\n        month: month,\n        'month-short': month,\n        year: year,\n        'year-short': year\n    };\n}\nexports.default = default_1;\n//# sourceMappingURL=diff.js.map","\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* jslint esnext: true */\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\nvar hop = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\nvar realDefineProp = (function () {\n    try {\n        return !!Object.defineProperty({}, 'a', {});\n    }\n    catch (e) {\n        return false;\n    }\n})();\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\nvar defineProperty = realDefineProp ? Object.defineProperty :\n    function (obj, name, desc) {\n        if ('get' in desc && obj.__defineGetter__) {\n            obj.__defineGetter__(name, desc.get);\n        }\n        else if (!hop.call(obj, name) || 'value' in desc) {\n            obj[name] = desc.value;\n        }\n    };\nexports.defineProperty = defineProperty;\nvar objCreate = Object.create || function (proto, props) {\n    var obj, k;\n    function F() { }\n    F.prototype = proto;\n    obj = new F();\n    for (k in props) {\n        if (hop.call(props, k)) {\n            defineProperty(obj, k, props[k]);\n        }\n    }\n    return obj;\n};\nexports.objCreate = objCreate;\nvar arrIndexOf = Array.prototype.indexOf || function (search, fromIndex) {\n    /*jshint validthis:true */\n    var arr = this;\n    if (!arr.length) {\n        return -1;\n    }\n    for (var i = fromIndex || 0, max = arr.length; i < max; i++) {\n        if (arr[i] === search) {\n            return i;\n        }\n    }\n    return -1;\n};\nexports.arrIndexOf = arrIndexOf;\nvar isArray = Array.isArray || function (obj) {\n    return toString.call(obj) === '[object Array]';\n};\nexports.isArray = isArray;\nvar dateNow = Date.now || function () {\n    return new Date().getTime();\n};\nexports.dateNow = dateNow;\n//# sourceMappingURL=es5.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* @generated */\nexports.default = { \"locale\": \"en\", \"pluralRuleFunction\": function (n, ord) {\n        var s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n        if (ord)\n            return (n10 == 1 && n100 != 11) ? 'one'\n                : (n10 == 2 && n100 != 12) ? 'two'\n                    : (n10 == 3 && n100 != 13) ? 'few'\n                        : 'other';\n        return (n == 1 && v0) ? 'one' : 'other';\n    }, \"fields\": { \"year\": { \"displayName\": \"year\", \"relative\": { \"0\": \"this year\", \"1\": \"next year\", \"-1\": \"last year\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} year\", \"other\": \"in {0} years\" }, \"past\": { \"one\": \"{0} year ago\", \"other\": \"{0} years ago\" } } }, \"year-short\": { \"displayName\": \"yr.\", \"relative\": { \"0\": \"this yr.\", \"1\": \"next yr.\", \"-1\": \"last yr.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} yr.\", \"other\": \"in {0} yr.\" }, \"past\": { \"one\": \"{0} yr. ago\", \"other\": \"{0} yr. ago\" } } }, \"month\": { \"displayName\": \"month\", \"relative\": { \"0\": \"this month\", \"1\": \"next month\", \"-1\": \"last month\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} month\", \"other\": \"in {0} months\" }, \"past\": { \"one\": \"{0} month ago\", \"other\": \"{0} months ago\" } } }, \"month-short\": { \"displayName\": \"mo.\", \"relative\": { \"0\": \"this mo.\", \"1\": \"next mo.\", \"-1\": \"last mo.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} mo.\", \"other\": \"in {0} mo.\" }, \"past\": { \"one\": \"{0} mo. ago\", \"other\": \"{0} mo. ago\" } } }, \"week\": { \"displayName\": \"week\", \"relativePeriod\": \"the week of {0}\", \"relative\": { \"0\": \"this week\", \"1\": \"next week\", \"-1\": \"last week\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} week\", \"other\": \"in {0} weeks\" }, \"past\": { \"one\": \"{0} week ago\", \"other\": \"{0} weeks ago\" } } }, \"week-short\": { \"displayName\": \"wk.\", \"relativePeriod\": \"the week of {0}\", \"relative\": { \"0\": \"this wk.\", \"1\": \"next wk.\", \"-1\": \"last wk.\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} wk.\", \"other\": \"in {0} wk.\" }, \"past\": { \"one\": \"{0} wk. ago\", \"other\": \"{0} wk. ago\" } } }, \"day\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"day-short\": { \"displayName\": \"day\", \"relative\": { \"0\": \"today\", \"1\": \"tomorrow\", \"-1\": \"yesterday\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} day\", \"other\": \"in {0} days\" }, \"past\": { \"one\": \"{0} day ago\", \"other\": \"{0} days ago\" } } }, \"hour\": { \"displayName\": \"hour\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hour\", \"other\": \"in {0} hours\" }, \"past\": { \"one\": \"{0} hour ago\", \"other\": \"{0} hours ago\" } } }, \"hour-short\": { \"displayName\": \"hr.\", \"relative\": { \"0\": \"this hour\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} hr.\", \"other\": \"in {0} hr.\" }, \"past\": { \"one\": \"{0} hr. ago\", \"other\": \"{0} hr. ago\" } } }, \"minute\": { \"displayName\": \"minute\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} minute\", \"other\": \"in {0} minutes\" }, \"past\": { \"one\": \"{0} minute ago\", \"other\": \"{0} minutes ago\" } } }, \"minute-short\": { \"displayName\": \"min.\", \"relative\": { \"0\": \"this minute\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} min.\", \"other\": \"in {0} min.\" }, \"past\": { \"one\": \"{0} min. ago\", \"other\": \"{0} min. ago\" } } }, \"second\": { \"displayName\": \"second\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} second\", \"other\": \"in {0} seconds\" }, \"past\": { \"one\": \"{0} second ago\", \"other\": \"{0} seconds ago\" } } }, \"second-short\": { \"displayName\": \"sec.\", \"relative\": { \"0\": \"now\" }, \"relativeTime\": { \"future\": { \"one\": \"in {0} sec.\", \"other\": \"in {0} sec.\" }, \"past\": { \"one\": \"{0} sec. ago\", \"other\": \"{0} sec. ago\" } } } } };\n//# sourceMappingURL=en.js.map","/* (ignored) */","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".paper-canvas_paper-canvas_2biXB {\\n    top: 1px; /* leave room for the border */\\n    left: 1px;\\n    width: calc(100% - 2px);\\n    height: calc(100% - 2px);\\n    margin: auto;\\n    position: absolute;\\n    background-color: #D9E3F2;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"paper-canvas\": \"paper-canvas_paper-canvas_2biXB\",\n\t\"paperCanvas\": \"paper-canvas_paper-canvas_2biXB\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".scrollable-canvas_vertical-scrollbar_gyXyM, .scrollable-canvas_horizontal-scrollbar_OBOUt {\\n    background: rgba(190, 190, 190, 0.8);\\n    border-radius: calc(8px / 2);\\n    width: 100%;\\n    height: 100%;\\n}\\n.scrollable-canvas_vertical-scrollbar-wrapper_1cMNm {\\n    position: absolute;\\n    width: calc(8px + 4px);\\n    right: 0;\\n    top: 4px;\\n    height: calc(100% - 8px - 2 * 4px);\\n}\\n.scrollable-canvas_horizontal-scrollbar-wrapper_2BUMa {\\n    position: absolute;\\n    height: calc(8px + 4px);\\n    left: 4px;\\n    bottom: 0;\\n    width: calc(100% - 8px - 2 * 4px);\\n}\\n.scrollable-canvas_vertical-scrollbar-hitbox_2QprH, .scrollable-canvas_horizontal-scrollbar-hitbox_EBg8r {\\n    position: absolute;\\n    cursor: pointer;\\n    -webkit-box-sizing: border-box;\\n            box-sizing: border-box;\\n}\\n.scrollable-canvas_vertical-scrollbar-hitbox_2QprH {\\n    width: calc(8px + 4px);\\n    padding-right: 4px;\\n}\\n.scrollable-canvas_horizontal-scrollbar-hitbox_EBg8r {\\n    height: calc(8px + 4px);\\n    padding-bottom: 4px;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"vertical-scrollbar\": \"scrollable-canvas_vertical-scrollbar_gyXyM\",\n\t\"verticalScrollbar\": \"scrollable-canvas_vertical-scrollbar_gyXyM\",\n\t\"horizontal-scrollbar\": \"scrollable-canvas_horizontal-scrollbar_OBOUt\",\n\t\"horizontalScrollbar\": \"scrollable-canvas_horizontal-scrollbar_OBOUt\",\n\t\"vertical-scrollbar-wrapper\": \"scrollable-canvas_vertical-scrollbar-wrapper_1cMNm\",\n\t\"verticalScrollbarWrapper\": \"scrollable-canvas_vertical-scrollbar-wrapper_1cMNm\",\n\t\"horizontal-scrollbar-wrapper\": \"scrollable-canvas_horizontal-scrollbar-wrapper_2BUMa\",\n\t\"horizontalScrollbarWrapper\": \"scrollable-canvas_horizontal-scrollbar-wrapper_2BUMa\",\n\t\"vertical-scrollbar-hitbox\": \"scrollable-canvas_vertical-scrollbar-hitbox_2QprH\",\n\t\"verticalScrollbarHitbox\": \"scrollable-canvas_vertical-scrollbar-hitbox_2QprH\",\n\t\"horizontal-scrollbar-hitbox\": \"scrollable-canvas_horizontal-scrollbar-hitbox_EBg8r\",\n\t\"horizontalScrollbarHitbox\": \"scrollable-canvas_horizontal-scrollbar-hitbox_EBg8r\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n.button_button_lmpwR {\\n    background: none;\\n    cursor: pointer;\\n    -webkit-user-select: none;\\n       -moz-user-select: none;\\n        -ms-user-select: none;\\n            user-select: none;\\n}\\n\\n.button_button_lmpwR:active {\\n    background-color: hsla(260, 60%, 60%, 0.35);\\n}\\n\\n.button_highlighted_2c0Ir.button_button_lmpwR {\\n    background-color: hsla(260, 60%, 60%, 0.35);\\n}\\n\\n.button_mod-disabled_CFsZ2 {\\n    cursor: auto;\\n    opacity: .5;\\n}\\n\\n.button_mod-disabled_CFsZ2:active {\\n    background: none;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"button\": \"button_button_lmpwR\",\n\t\"highlighted\": \"button_highlighted_2c0Ir\",\n\t\"mod-disabled\": \"button_mod-disabled_CFsZ2\",\n\t\"modDisabled\": \"button_mod-disabled_CFsZ2\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.tool-select-base_mod-tool-select_1RQKn {\\n    display: inline-block;\\n    margin: .25rem;\\n    border: none;\\n    border-radius: .25rem;\\n    outline: none;\\n    background: none;\\n    padding: .25rem;\\n    font-size: 0.85rem;\\n    -webkit-transition: 0.2s;\\n    transition: 0.2s;\\n}\\n\\n.tool-select-base_mod-tool-select_1RQKn.tool-select-base_is-selected_3Le38 {\\n    background-color: #855CD6;\\n}\\n\\n.tool-select-base_mod-tool-select_1RQKn:focus {\\n    outline: none;\\n}\\n\\nimg.tool-select-base_tool-select-icon_2TT3t {\\n    width: 2rem;\\n    height: 2rem;\\n    -webkit-box-flex: 1;\\n    -webkit-flex-grow: 1;\\n        -ms-flex-positive: 1;\\n            flex-grow: 1;\\n    vertical-align: middle;\\n}\\n\\n.tool-select-base_mod-tool-select_1RQKn.tool-select-base_is-selected_3Le38 .tool-select-base_tool-select-icon_2TT3t {\\n    /* Make the tool icons white while selected by making them black and inverting */\\n    -webkit-filter: brightness(0) invert(1);\\n            filter: brightness(0) invert(1);\\n}\\n\\n@media only screen and (max-width: 1256px) {\\n    .tool-select-base_mod-tool-select_1RQKn {\\n        margin: 0;\\n    }\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"mod-tool-select\": \"tool-select-base_mod-tool-select_1RQKn\",\n\t\"modToolSelect\": \"tool-select-base_mod-tool-select_1RQKn\",\n\t\"is-selected\": \"tool-select-base_is-selected_3Le38\",\n\t\"isSelected\": \"tool-select-base_is-selected_3Le38\",\n\t\"tool-select-icon\": \"tool-select-base_tool-select-icon_2TT3t\",\n\t\"toolSelectIcon\": \"tool-select-base_tool-select-icon_2TT3t\"\n};\nmodule.exports = exports;\n","// GENERATED DO NOT EDIT\nmodule.exports = [\n  \"alignContent\",\n  \"MozAlignContent\",\n  \"WebkitAlignContent\",\n  \"MSAlignContent\",\n  \"OAlignContent\",\n  \"alignItems\",\n  \"MozAlignItems\",\n  \"WebkitAlignItems\",\n  \"MSAlignItems\",\n  \"OAlignItems\",\n  \"alignSelf\",\n  \"MozAlignSelf\",\n  \"WebkitAlignSelf\",\n  \"MSAlignSelf\",\n  \"OAlignSelf\",\n  \"all\",\n  \"MozAll\",\n  \"WebkitAll\",\n  \"MSAll\",\n  \"OAll\",\n  \"animation\",\n  \"MozAnimation\",\n  \"WebkitAnimation\",\n  \"MSAnimation\",\n  \"OAnimation\",\n  \"animationDelay\",\n  \"MozAnimationDelay\",\n  \"WebkitAnimationDelay\",\n  \"MSAnimationDelay\",\n  \"OAnimationDelay\",\n  \"animationDirection\",\n  \"MozAnimationDirection\",\n  \"WebkitAnimationDirection\",\n  \"MSAnimationDirection\",\n  \"OAnimationDirection\",\n  \"animationDuration\",\n  \"MozAnimationDuration\",\n  \"WebkitAnimationDuration\",\n  \"MSAnimationDuration\",\n  \"OAnimationDuration\",\n  \"animationFillMode\",\n  \"MozAnimationFillMode\",\n  \"WebkitAnimationFillMode\",\n  \"MSAnimationFillMode\",\n  \"OAnimationFillMode\",\n  \"animationIterationCount\",\n  \"MozAnimationIterationCount\",\n  \"WebkitAnimationIterationCount\",\n  \"MSAnimationIterationCount\",\n  \"OAnimationIterationCount\",\n  \"animationName\",\n  \"MozAnimationName\",\n  \"WebkitAnimationName\",\n  \"MSAnimationName\",\n  \"OAnimationName\",\n  \"animationPlayState\",\n  \"MozAnimationPlayState\",\n  \"WebkitAnimationPlayState\",\n  \"MSAnimationPlayState\",\n  \"OAnimationPlayState\",\n  \"animationTimingFunction\",\n  \"MozAnimationTimingFunction\",\n  \"WebkitAnimationTimingFunction\",\n  \"MSAnimationTimingFunction\",\n  \"OAnimationTimingFunction\",\n  \"backfaceVisibility\",\n  \"MozBackfaceVisibility\",\n  \"WebkitBackfaceVisibility\",\n  \"MSBackfaceVisibility\",\n  \"OBackfaceVisibility\",\n  \"background\",\n  \"MozBackground\",\n  \"WebkitBackground\",\n  \"MSBackground\",\n  \"OBackground\",\n  \"backgroundAttachment\",\n  \"MozBackgroundAttachment\",\n  \"WebkitBackgroundAttachment\",\n  \"MSBackgroundAttachment\",\n  \"OBackgroundAttachment\",\n  \"backgroundBlendMode\",\n  \"MozBackgroundBlendMode\",\n  \"WebkitBackgroundBlendMode\",\n  \"MSBackgroundBlendMode\",\n  \"OBackgroundBlendMode\",\n  \"backgroundClip\",\n  \"MozBackgroundClip\",\n  \"WebkitBackgroundClip\",\n  \"MSBackgroundClip\",\n  \"OBackgroundClip\",\n  \"backgroundColor\",\n  \"MozBackgroundColor\",\n  \"WebkitBackgroundColor\",\n  \"MSBackgroundColor\",\n  \"OBackgroundColor\",\n  \"backgroundImage\",\n  \"MozBackgroundImage\",\n  \"WebkitBackgroundImage\",\n  \"MSBackgroundImage\",\n  \"OBackgroundImage\",\n  \"backgroundOrigin\",\n  \"MozBackgroundOrigin\",\n  \"WebkitBackgroundOrigin\",\n  \"MSBackgroundOrigin\",\n  \"OBackgroundOrigin\",\n  \"backgroundPosition\",\n  \"MozBackgroundPosition\",\n  \"WebkitBackgroundPosition\",\n  \"MSBackgroundPosition\",\n  \"OBackgroundPosition\",\n  \"backgroundRepeat\",\n  \"MozBackgroundRepeat\",\n  \"WebkitBackgroundRepeat\",\n  \"MSBackgroundRepeat\",\n  \"OBackgroundRepeat\",\n  \"backgroundSize\",\n  \"MozBackgroundSize\",\n  \"WebkitBackgroundSize\",\n  \"MSBackgroundSize\",\n  \"OBackgroundSize\",\n  \"blockSize\",\n  \"MozBlockSize\",\n  \"WebkitBlockSize\",\n  \"MSBlockSize\",\n  \"OBlockSize\",\n  \"border\",\n  \"MozBorder\",\n  \"WebkitBorder\",\n  \"MSBorder\",\n  \"OBorder\",\n  \"borderBlockEnd\",\n  \"MozBorderBlockEnd\",\n  \"WebkitBorderBlockEnd\",\n  \"MSBorderBlockEnd\",\n  \"OBorderBlockEnd\",\n  \"borderBlockEndColor\",\n  \"MozBorderBlockEndColor\",\n  \"WebkitBorderBlockEndColor\",\n  \"MSBorderBlockEndColor\",\n  \"OBorderBlockEndColor\",\n  \"borderBlockEndStyle\",\n  \"MozBorderBlockEndStyle\",\n  \"WebkitBorderBlockEndStyle\",\n  \"MSBorderBlockEndStyle\",\n  \"OBorderBlockEndStyle\",\n  \"borderBlockEndWidth\",\n  \"MozBorderBlockEndWidth\",\n  \"WebkitBorderBlockEndWidth\",\n  \"MSBorderBlockEndWidth\",\n  \"OBorderBlockEndWidth\",\n  \"borderBlockStart\",\n  \"MozBorderBlockStart\",\n  \"WebkitBorderBlockStart\",\n  \"MSBorderBlockStart\",\n  \"OBorderBlockStart\",\n  \"borderBlockStartColor\",\n  \"MozBorderBlockStartColor\",\n  \"WebkitBorderBlockStartColor\",\n  \"MSBorderBlockStartColor\",\n  \"OBorderBlockStartColor\",\n  \"borderBlockStartStyle\",\n  \"MozBorderBlockStartStyle\",\n  \"WebkitBorderBlockStartStyle\",\n  \"MSBorderBlockStartStyle\",\n  \"OBorderBlockStartStyle\",\n  \"borderBlockStartWidth\",\n  \"MozBorderBlockStartWidth\",\n  \"WebkitBorderBlockStartWidth\",\n  \"MSBorderBlockStartWidth\",\n  \"OBorderBlockStartWidth\",\n  \"borderBottom\",\n  \"MozBorderBottom\",\n  \"WebkitBorderBottom\",\n  \"MSBorderBottom\",\n  \"OBorderBottom\",\n  \"borderBottomColor\",\n  \"MozBorderBottomColor\",\n  \"WebkitBorderBottomColor\",\n  \"MSBorderBottomColor\",\n  \"OBorderBottomColor\",\n  \"borderBottomLeftRadius\",\n  \"MozBorderBottomLeftRadius\",\n  \"WebkitBorderBottomLeftRadius\",\n  \"MSBorderBottomLeftRadius\",\n  \"OBorderBottomLeftRadius\",\n  \"borderBottomRightRadius\",\n  \"MozBorderBottomRightRadius\",\n  \"WebkitBorderBottomRightRadius\",\n  \"MSBorderBottomRightRadius\",\n  \"OBorderBottomRightRadius\",\n  \"borderBottomStyle\",\n  \"MozBorderBottomStyle\",\n  \"WebkitBorderBottomStyle\",\n  \"MSBorderBottomStyle\",\n  \"OBorderBottomStyle\",\n  \"borderBottomWidth\",\n  \"MozBorderBottomWidth\",\n  \"WebkitBorderBottomWidth\",\n  \"MSBorderBottomWidth\",\n  \"OBorderBottomWidth\",\n  \"borderCollapse\",\n  \"MozBorderCollapse\",\n  \"WebkitBorderCollapse\",\n  \"MSBorderCollapse\",\n  \"OBorderCollapse\",\n  \"borderColor\",\n  \"MozBorderColor\",\n  \"WebkitBorderColor\",\n  \"MSBorderColor\",\n  \"OBorderColor\",\n  \"borderImage\",\n  \"MozBorderImage\",\n  \"WebkitBorderImage\",\n  \"MSBorderImage\",\n  \"OBorderImage\",\n  \"borderImageOutset\",\n  \"MozBorderImageOutset\",\n  \"WebkitBorderImageOutset\",\n  \"MSBorderImageOutset\",\n  \"OBorderImageOutset\",\n  \"borderImageRepeat\",\n  \"MozBorderImageRepeat\",\n  \"WebkitBorderImageRepeat\",\n  \"MSBorderImageRepeat\",\n  \"OBorderImageRepeat\",\n  \"borderImageSlice\",\n  \"MozBorderImageSlice\",\n  \"WebkitBorderImageSlice\",\n  \"MSBorderImageSlice\",\n  \"OBorderImageSlice\",\n  \"borderImageSource\",\n  \"MozBorderImageSource\",\n  \"WebkitBorderImageSource\",\n  \"MSBorderImageSource\",\n  \"OBorderImageSource\",\n  \"borderImageWidth\",\n  \"MozBorderImageWidth\",\n  \"WebkitBorderImageWidth\",\n  \"MSBorderImageWidth\",\n  \"OBorderImageWidth\",\n  \"borderInlineEnd\",\n  \"MozBorderInlineEnd\",\n  \"WebkitBorderInlineEnd\",\n  \"MSBorderInlineEnd\",\n  \"OBorderInlineEnd\",\n  \"borderInlineEndColor\",\n  \"MozBorderInlineEndColor\",\n  \"WebkitBorderInlineEndColor\",\n  \"MSBorderInlineEndColor\",\n  \"OBorderInlineEndColor\",\n  \"borderInlineEndStyle\",\n  \"MozBorderInlineEndStyle\",\n  \"WebkitBorderInlineEndStyle\",\n  \"MSBorderInlineEndStyle\",\n  \"OBorderInlineEndStyle\",\n  \"borderInlineEndWidth\",\n  \"MozBorderInlineEndWidth\",\n  \"WebkitBorderInlineEndWidth\",\n  \"MSBorderInlineEndWidth\",\n  \"OBorderInlineEndWidth\",\n  \"borderInlineStart\",\n  \"MozBorderInlineStart\",\n  \"WebkitBorderInlineStart\",\n  \"MSBorderInlineStart\",\n  \"OBorderInlineStart\",\n  \"borderInlineStartColor\",\n  \"MozBorderInlineStartColor\",\n  \"WebkitBorderInlineStartColor\",\n  \"MSBorderInlineStartColor\",\n  \"OBorderInlineStartColor\",\n  \"borderInlineStartStyle\",\n  \"MozBorderInlineStartStyle\",\n  \"WebkitBorderInlineStartStyle\",\n  \"MSBorderInlineStartStyle\",\n  \"OBorderInlineStartStyle\",\n  \"borderInlineStartWidth\",\n  \"MozBorderInlineStartWidth\",\n  \"WebkitBorderInlineStartWidth\",\n  \"MSBorderInlineStartWidth\",\n  \"OBorderInlineStartWidth\",\n  \"borderLeft\",\n  \"MozBorderLeft\",\n  \"WebkitBorderLeft\",\n  \"MSBorderLeft\",\n  \"OBorderLeft\",\n  \"borderLeftColor\",\n  \"MozBorderLeftColor\",\n  \"WebkitBorderLeftColor\",\n  \"MSBorderLeftColor\",\n  \"OBorderLeftColor\",\n  \"borderLeftStyle\",\n  \"MozBorderLeftStyle\",\n  \"WebkitBorderLeftStyle\",\n  \"MSBorderLeftStyle\",\n  \"OBorderLeftStyle\",\n  \"borderLeftWidth\",\n  \"MozBorderLeftWidth\",\n  \"WebkitBorderLeftWidth\",\n  \"MSBorderLeftWidth\",\n  \"OBorderLeftWidth\",\n  \"borderRadius\",\n  \"MozBorderRadius\",\n  \"WebkitBorderRadius\",\n  \"MSBorderRadius\",\n  \"OBorderRadius\",\n  \"borderRight\",\n  \"MozBorderRight\",\n  \"WebkitBorderRight\",\n  \"MSBorderRight\",\n  \"OBorderRight\",\n  \"borderRightColor\",\n  \"MozBorderRightColor\",\n  \"WebkitBorderRightColor\",\n  \"MSBorderRightColor\",\n  \"OBorderRightColor\",\n  \"borderRightStyle\",\n  \"MozBorderRightStyle\",\n  \"WebkitBorderRightStyle\",\n  \"MSBorderRightStyle\",\n  \"OBorderRightStyle\",\n  \"borderRightWidth\",\n  \"MozBorderRightWidth\",\n  \"WebkitBorderRightWidth\",\n  \"MSBorderRightWidth\",\n  \"OBorderRightWidth\",\n  \"borderSpacing\",\n  \"MozBorderSpacing\",\n  \"WebkitBorderSpacing\",\n  \"MSBorderSpacing\",\n  \"OBorderSpacing\",\n  \"borderStyle\",\n  \"MozBorderStyle\",\n  \"WebkitBorderStyle\",\n  \"MSBorderStyle\",\n  \"OBorderStyle\",\n  \"borderTop\",\n  \"MozBorderTop\",\n  \"WebkitBorderTop\",\n  \"MSBorderTop\",\n  \"OBorderTop\",\n  \"borderTopColor\",\n  \"MozBorderTopColor\",\n  \"WebkitBorderTopColor\",\n  \"MSBorderTopColor\",\n  \"OBorderTopColor\",\n  \"borderTopLeftRadius\",\n  \"MozBorderTopLeftRadius\",\n  \"WebkitBorderTopLeftRadius\",\n  \"MSBorderTopLeftRadius\",\n  \"OBorderTopLeftRadius\",\n  \"borderTopRightRadius\",\n  \"MozBorderTopRightRadius\",\n  \"WebkitBorderTopRightRadius\",\n  \"MSBorderTopRightRadius\",\n  \"OBorderTopRightRadius\",\n  \"borderTopStyle\",\n  \"MozBorderTopStyle\",\n  \"WebkitBorderTopStyle\",\n  \"MSBorderTopStyle\",\n  \"OBorderTopStyle\",\n  \"borderTopWidth\",\n  \"MozBorderTopWidth\",\n  \"WebkitBorderTopWidth\",\n  \"MSBorderTopWidth\",\n  \"OBorderTopWidth\",\n  \"borderWidth\",\n  \"MozBorderWidth\",\n  \"WebkitBorderWidth\",\n  \"MSBorderWidth\",\n  \"OBorderWidth\",\n  \"bottom\",\n  \"MozBottom\",\n  \"WebkitBottom\",\n  \"MSBottom\",\n  \"OBottom\",\n  \"boxDecorationBreak\",\n  \"MozBoxDecorationBreak\",\n  \"WebkitBoxDecorationBreak\",\n  \"MSBoxDecorationBreak\",\n  \"OBoxDecorationBreak\",\n  \"boxShadow\",\n  \"MozBoxShadow\",\n  \"WebkitBoxShadow\",\n  \"MSBoxShadow\",\n  \"OBoxShadow\",\n  \"boxSizing\",\n  \"MozBoxSizing\",\n  \"WebkitBoxSizing\",\n  \"MSBoxSizing\",\n  \"OBoxSizing\",\n  \"breakAfter\",\n  \"MozBreakAfter\",\n  \"WebkitBreakAfter\",\n  \"MSBreakAfter\",\n  \"OBreakAfter\",\n  \"breakBefore\",\n  \"MozBreakBefore\",\n  \"WebkitBreakBefore\",\n  \"MSBreakBefore\",\n  \"OBreakBefore\",\n  \"breakInside\",\n  \"MozBreakInside\",\n  \"WebkitBreakInside\",\n  \"MSBreakInside\",\n  \"OBreakInside\",\n  \"captionSide\",\n  \"MozCaptionSide\",\n  \"WebkitCaptionSide\",\n  \"MSCaptionSide\",\n  \"OCaptionSide\",\n  \"caretColor\",\n  \"MozCaretColor\",\n  \"WebkitCaretColor\",\n  \"MSCaretColor\",\n  \"OCaretColor\",\n  \"ch\",\n  \"MozCh\",\n  \"WebkitCh\",\n  \"MSCh\",\n  \"OCh\",\n  \"clear\",\n  \"MozClear\",\n  \"WebkitClear\",\n  \"MSClear\",\n  \"OClear\",\n  \"clip\",\n  \"MozClip\",\n  \"WebkitClip\",\n  \"MSClip\",\n  \"OClip\",\n  \"clipPath\",\n  \"MozClipPath\",\n  \"WebkitClipPath\",\n  \"MSClipPath\",\n  \"OClipPath\",\n  \"cm\",\n  \"MozCm\",\n  \"WebkitCm\",\n  \"MSCm\",\n  \"OCm\",\n  \"color\",\n  \"MozColor\",\n  \"WebkitColor\",\n  \"MSColor\",\n  \"OColor\",\n  \"columnCount\",\n  \"MozColumnCount\",\n  \"WebkitColumnCount\",\n  \"MSColumnCount\",\n  \"OColumnCount\",\n  \"columnFill\",\n  \"MozColumnFill\",\n  \"WebkitColumnFill\",\n  \"MSColumnFill\",\n  \"OColumnFill\",\n  \"columnGap\",\n  \"MozColumnGap\",\n  \"WebkitColumnGap\",\n  \"MSColumnGap\",\n  \"OColumnGap\",\n  \"columnRule\",\n  \"MozColumnRule\",\n  \"WebkitColumnRule\",\n  \"MSColumnRule\",\n  \"OColumnRule\",\n  \"columnRuleColor\",\n  \"MozColumnRuleColor\",\n  \"WebkitColumnRuleColor\",\n  \"MSColumnRuleColor\",\n  \"OColumnRuleColor\",\n  \"columnRuleStyle\",\n  \"MozColumnRuleStyle\",\n  \"WebkitColumnRuleStyle\",\n  \"MSColumnRuleStyle\",\n  \"OColumnRuleStyle\",\n  \"columnRuleWidth\",\n  \"MozColumnRuleWidth\",\n  \"WebkitColumnRuleWidth\",\n  \"MSColumnRuleWidth\",\n  \"OColumnRuleWidth\",\n  \"columnSpan\",\n  \"MozColumnSpan\",\n  \"WebkitColumnSpan\",\n  \"MSColumnSpan\",\n  \"OColumnSpan\",\n  \"columnWidth\",\n  \"MozColumnWidth\",\n  \"WebkitColumnWidth\",\n  \"MSColumnWidth\",\n  \"OColumnWidth\",\n  \"columns\",\n  \"MozColumns\",\n  \"WebkitColumns\",\n  \"MSColumns\",\n  \"OColumns\",\n  \"content\",\n  \"MozContent\",\n  \"WebkitContent\",\n  \"MSContent\",\n  \"OContent\",\n  \"counterIncrement\",\n  \"MozCounterIncrement\",\n  \"WebkitCounterIncrement\",\n  \"MSCounterIncrement\",\n  \"OCounterIncrement\",\n  \"counterReset\",\n  \"MozCounterReset\",\n  \"WebkitCounterReset\",\n  \"MSCounterReset\",\n  \"OCounterReset\",\n  \"cursor\",\n  \"MozCursor\",\n  \"WebkitCursor\",\n  \"MSCursor\",\n  \"OCursor\",\n  \"deg\",\n  \"MozDeg\",\n  \"WebkitDeg\",\n  \"MSDeg\",\n  \"ODeg\",\n  \"direction\",\n  \"MozDirection\",\n  \"WebkitDirection\",\n  \"MSDirection\",\n  \"ODirection\",\n  \"display\",\n  \"MozDisplay\",\n  \"WebkitDisplay\",\n  \"MSDisplay\",\n  \"ODisplay\",\n  \"dpcm\",\n  \"MozDpcm\",\n  \"WebkitDpcm\",\n  \"MSDpcm\",\n  \"ODpcm\",\n  \"dpi\",\n  \"MozDpi\",\n  \"WebkitDpi\",\n  \"MSDpi\",\n  \"ODpi\",\n  \"dppx\",\n  \"MozDppx\",\n  \"WebkitDppx\",\n  \"MSDppx\",\n  \"ODppx\",\n  \"em\",\n  \"MozEm\",\n  \"WebkitEm\",\n  \"MSEm\",\n  \"OEm\",\n  \"emptyCells\",\n  \"MozEmptyCells\",\n  \"WebkitEmptyCells\",\n  \"MSEmptyCells\",\n  \"OEmptyCells\",\n  \"ex\",\n  \"MozEx\",\n  \"WebkitEx\",\n  \"MSEx\",\n  \"OEx\",\n  \"filter\",\n  \"MozFilter\",\n  \"WebkitFilter\",\n  \"MSFilter\",\n  \"OFilter\",\n  \"flexBasis\",\n  \"MozFlexBasis\",\n  \"WebkitFlexBasis\",\n  \"MSFlexBasis\",\n  \"OFlexBasis\",\n  \"flexDirection\",\n  \"MozFlexDirection\",\n  \"WebkitFlexDirection\",\n  \"MSFlexDirection\",\n  \"OFlexDirection\",\n  \"flexFlow\",\n  \"MozFlexFlow\",\n  \"WebkitFlexFlow\",\n  \"MSFlexFlow\",\n  \"OFlexFlow\",\n  \"flexGrow\",\n  \"MozFlexGrow\",\n  \"WebkitFlexGrow\",\n  \"MSFlexGrow\",\n  \"OFlexGrow\",\n  \"flexShrink\",\n  \"MozFlexShrink\",\n  \"WebkitFlexShrink\",\n  \"MSFlexShrink\",\n  \"OFlexShrink\",\n  \"flexWrap\",\n  \"MozFlexWrap\",\n  \"WebkitFlexWrap\",\n  \"MSFlexWrap\",\n  \"OFlexWrap\",\n  \"float\",\n  \"MozFloat\",\n  \"WebkitFloat\",\n  \"MSFloat\",\n  \"OFloat\",\n  \"font\",\n  \"MozFont\",\n  \"WebkitFont\",\n  \"MSFont\",\n  \"OFont\",\n  \"fontFamily\",\n  \"MozFontFamily\",\n  \"WebkitFontFamily\",\n  \"MSFontFamily\",\n  \"OFontFamily\",\n  \"fontFeatureSettings\",\n  \"MozFontFeatureSettings\",\n  \"WebkitFontFeatureSettings\",\n  \"MSFontFeatureSettings\",\n  \"OFontFeatureSettings\",\n  \"fontKerning\",\n  \"MozFontKerning\",\n  \"WebkitFontKerning\",\n  \"MSFontKerning\",\n  \"OFontKerning\",\n  \"fontLanguageOverride\",\n  \"MozFontLanguageOverride\",\n  \"WebkitFontLanguageOverride\",\n  \"MSFontLanguageOverride\",\n  \"OFontLanguageOverride\",\n  \"fontSize\",\n  \"MozFontSize\",\n  \"WebkitFontSize\",\n  \"MSFontSize\",\n  \"OFontSize\",\n  \"fontSizeAdjust\",\n  \"MozFontSizeAdjust\",\n  \"WebkitFontSizeAdjust\",\n  \"MSFontSizeAdjust\",\n  \"OFontSizeAdjust\",\n  \"fontStretch\",\n  \"MozFontStretch\",\n  \"WebkitFontStretch\",\n  \"MSFontStretch\",\n  \"OFontStretch\",\n  \"fontStyle\",\n  \"MozFontStyle\",\n  \"WebkitFontStyle\",\n  \"MSFontStyle\",\n  \"OFontStyle\",\n  \"fontSynthesis\",\n  \"MozFontSynthesis\",\n  \"WebkitFontSynthesis\",\n  \"MSFontSynthesis\",\n  \"OFontSynthesis\",\n  \"fontVariant\",\n  \"MozFontVariant\",\n  \"WebkitFontVariant\",\n  \"MSFontVariant\",\n  \"OFontVariant\",\n  \"fontVariantAlternates\",\n  \"MozFontVariantAlternates\",\n  \"WebkitFontVariantAlternates\",\n  \"MSFontVariantAlternates\",\n  \"OFontVariantAlternates\",\n  \"fontVariantCaps\",\n  \"MozFontVariantCaps\",\n  \"WebkitFontVariantCaps\",\n  \"MSFontVariantCaps\",\n  \"OFontVariantCaps\",\n  \"fontVariantEastAsian\",\n  \"MozFontVariantEastAsian\",\n  \"WebkitFontVariantEastAsian\",\n  \"MSFontVariantEastAsian\",\n  \"OFontVariantEastAsian\",\n  \"fontVariantLigatures\",\n  \"MozFontVariantLigatures\",\n  \"WebkitFontVariantLigatures\",\n  \"MSFontVariantLigatures\",\n  \"OFontVariantLigatures\",\n  \"fontVariantNumeric\",\n  \"MozFontVariantNumeric\",\n  \"WebkitFontVariantNumeric\",\n  \"MSFontVariantNumeric\",\n  \"OFontVariantNumeric\",\n  \"fontVariantPosition\",\n  \"MozFontVariantPosition\",\n  \"WebkitFontVariantPosition\",\n  \"MSFontVariantPosition\",\n  \"OFontVariantPosition\",\n  \"fontWeight\",\n  \"MozFontWeight\",\n  \"WebkitFontWeight\",\n  \"MSFontWeight\",\n  \"OFontWeight\",\n  \"fr\",\n  \"MozFr\",\n  \"WebkitFr\",\n  \"MSFr\",\n  \"OFr\",\n  \"grad\",\n  \"MozGrad\",\n  \"WebkitGrad\",\n  \"MSGrad\",\n  \"OGrad\",\n  \"grid\",\n  \"MozGrid\",\n  \"WebkitGrid\",\n  \"MSGrid\",\n  \"OGrid\",\n  \"gridArea\",\n  \"MozGridArea\",\n  \"WebkitGridArea\",\n  \"MSGridArea\",\n  \"OGridArea\",\n  \"gridAutoColumns\",\n  \"MozGridAutoColumns\",\n  \"WebkitGridAutoColumns\",\n  \"MSGridAutoColumns\",\n  \"OGridAutoColumns\",\n  \"gridAutoFlow\",\n  \"MozGridAutoFlow\",\n  \"WebkitGridAutoFlow\",\n  \"MSGridAutoFlow\",\n  \"OGridAutoFlow\",\n  \"gridAutoRows\",\n  \"MozGridAutoRows\",\n  \"WebkitGridAutoRows\",\n  \"MSGridAutoRows\",\n  \"OGridAutoRows\",\n  \"gridColumn\",\n  \"MozGridColumn\",\n  \"WebkitGridColumn\",\n  \"MSGridColumn\",\n  \"OGridColumn\",\n  \"gridColumnEnd\",\n  \"MozGridColumnEnd\",\n  \"WebkitGridColumnEnd\",\n  \"MSGridColumnEnd\",\n  \"OGridColumnEnd\",\n  \"gridColumnGap\",\n  \"MozGridColumnGap\",\n  \"WebkitGridColumnGap\",\n  \"MSGridColumnGap\",\n  \"OGridColumnGap\",\n  \"gridColumnStart\",\n  \"MozGridColumnStart\",\n  \"WebkitGridColumnStart\",\n  \"MSGridColumnStart\",\n  \"OGridColumnStart\",\n  \"gridGap\",\n  \"MozGridGap\",\n  \"WebkitGridGap\",\n  \"MSGridGap\",\n  \"OGridGap\",\n  \"gridRow\",\n  \"MozGridRow\",\n  \"WebkitGridRow\",\n  \"MSGridRow\",\n  \"OGridRow\",\n  \"gridRowEnd\",\n  \"MozGridRowEnd\",\n  \"WebkitGridRowEnd\",\n  \"MSGridRowEnd\",\n  \"OGridRowEnd\",\n  \"gridRowGap\",\n  \"MozGridRowGap\",\n  \"WebkitGridRowGap\",\n  \"MSGridRowGap\",\n  \"OGridRowGap\",\n  \"gridRowStart\",\n  \"MozGridRowStart\",\n  \"WebkitGridRowStart\",\n  \"MSGridRowStart\",\n  \"OGridRowStart\",\n  \"gridTemplate\",\n  \"MozGridTemplate\",\n  \"WebkitGridTemplate\",\n  \"MSGridTemplate\",\n  \"OGridTemplate\",\n  \"gridTemplateAreas\",\n  \"MozGridTemplateAreas\",\n  \"WebkitGridTemplateAreas\",\n  \"MSGridTemplateAreas\",\n  \"OGridTemplateAreas\",\n  \"gridTemplateColumns\",\n  \"MozGridTemplateColumns\",\n  \"WebkitGridTemplateColumns\",\n  \"MSGridTemplateColumns\",\n  \"OGridTemplateColumns\",\n  \"gridTemplateRows\",\n  \"MozGridTemplateRows\",\n  \"WebkitGridTemplateRows\",\n  \"MSGridTemplateRows\",\n  \"OGridTemplateRows\",\n  \"height\",\n  \"MozHeight\",\n  \"WebkitHeight\",\n  \"MSHeight\",\n  \"OHeight\",\n  \"hyphens\",\n  \"MozHyphens\",\n  \"WebkitHyphens\",\n  \"MSHyphens\",\n  \"OHyphens\",\n  \"hz\",\n  \"MozHz\",\n  \"WebkitHz\",\n  \"MSHz\",\n  \"OHz\",\n  \"imageOrientation\",\n  \"MozImageOrientation\",\n  \"WebkitImageOrientation\",\n  \"MSImageOrientation\",\n  \"OImageOrientation\",\n  \"imageRendering\",\n  \"MozImageRendering\",\n  \"WebkitImageRendering\",\n  \"MSImageRendering\",\n  \"OImageRendering\",\n  \"imageResolution\",\n  \"MozImageResolution\",\n  \"WebkitImageResolution\",\n  \"MSImageResolution\",\n  \"OImageResolution\",\n  \"imeMode\",\n  \"MozImeMode\",\n  \"WebkitImeMode\",\n  \"MSImeMode\",\n  \"OImeMode\",\n  \"in\",\n  \"MozIn\",\n  \"WebkitIn\",\n  \"MSIn\",\n  \"OIn\",\n  \"inherit\",\n  \"MozInherit\",\n  \"WebkitInherit\",\n  \"MSInherit\",\n  \"OInherit\",\n  \"initial\",\n  \"MozInitial\",\n  \"WebkitInitial\",\n  \"MSInitial\",\n  \"OInitial\",\n  \"inlineSize\",\n  \"MozInlineSize\",\n  \"WebkitInlineSize\",\n  \"MSInlineSize\",\n  \"OInlineSize\",\n  \"isolation\",\n  \"MozIsolation\",\n  \"WebkitIsolation\",\n  \"MSIsolation\",\n  \"OIsolation\",\n  \"justifyContent\",\n  \"MozJustifyContent\",\n  \"WebkitJustifyContent\",\n  \"MSJustifyContent\",\n  \"OJustifyContent\",\n  \"khz\",\n  \"MozKhz\",\n  \"WebkitKhz\",\n  \"MSKhz\",\n  \"OKhz\",\n  \"left\",\n  \"MozLeft\",\n  \"WebkitLeft\",\n  \"MSLeft\",\n  \"OLeft\",\n  \"letterSpacing\",\n  \"MozLetterSpacing\",\n  \"WebkitLetterSpacing\",\n  \"MSLetterSpacing\",\n  \"OLetterSpacing\",\n  \"lineBreak\",\n  \"MozLineBreak\",\n  \"WebkitLineBreak\",\n  \"MSLineBreak\",\n  \"OLineBreak\",\n  \"lineHeight\",\n  \"MozLineHeight\",\n  \"WebkitLineHeight\",\n  \"MSLineHeight\",\n  \"OLineHeight\",\n  \"listStyle\",\n  \"MozListStyle\",\n  \"WebkitListStyle\",\n  \"MSListStyle\",\n  \"OListStyle\",\n  \"listStyleImage\",\n  \"MozListStyleImage\",\n  \"WebkitListStyleImage\",\n  \"MSListStyleImage\",\n  \"OListStyleImage\",\n  \"listStylePosition\",\n  \"MozListStylePosition\",\n  \"WebkitListStylePosition\",\n  \"MSListStylePosition\",\n  \"OListStylePosition\",\n  \"listStyleType\",\n  \"MozListStyleType\",\n  \"WebkitListStyleType\",\n  \"MSListStyleType\",\n  \"OListStyleType\",\n  \"margin\",\n  \"MozMargin\",\n  \"WebkitMargin\",\n  \"MSMargin\",\n  \"OMargin\",\n  \"marginBlockEnd\",\n  \"MozMarginBlockEnd\",\n  \"WebkitMarginBlockEnd\",\n  \"MSMarginBlockEnd\",\n  \"OMarginBlockEnd\",\n  \"marginBlockStart\",\n  \"MozMarginBlockStart\",\n  \"WebkitMarginBlockStart\",\n  \"MSMarginBlockStart\",\n  \"OMarginBlockStart\",\n  \"marginBottom\",\n  \"MozMarginBottom\",\n  \"WebkitMarginBottom\",\n  \"MSMarginBottom\",\n  \"OMarginBottom\",\n  \"marginInlineEnd\",\n  \"MozMarginInlineEnd\",\n  \"WebkitMarginInlineEnd\",\n  \"MSMarginInlineEnd\",\n  \"OMarginInlineEnd\",\n  \"marginInlineStart\",\n  \"MozMarginInlineStart\",\n  \"WebkitMarginInlineStart\",\n  \"MSMarginInlineStart\",\n  \"OMarginInlineStart\",\n  \"marginLeft\",\n  \"MozMarginLeft\",\n  \"WebkitMarginLeft\",\n  \"MSMarginLeft\",\n  \"OMarginLeft\",\n  \"marginRight\",\n  \"MozMarginRight\",\n  \"WebkitMarginRight\",\n  \"MSMarginRight\",\n  \"OMarginRight\",\n  \"marginTop\",\n  \"MozMarginTop\",\n  \"WebkitMarginTop\",\n  \"MSMarginTop\",\n  \"OMarginTop\",\n  \"mask\",\n  \"MozMask\",\n  \"WebkitMask\",\n  \"MSMask\",\n  \"OMask\",\n  \"maskClip\",\n  \"MozMaskClip\",\n  \"WebkitMaskClip\",\n  \"MSMaskClip\",\n  \"OMaskClip\",\n  \"maskComposite\",\n  \"MozMaskComposite\",\n  \"WebkitMaskComposite\",\n  \"MSMaskComposite\",\n  \"OMaskComposite\",\n  \"maskImage\",\n  \"MozMaskImage\",\n  \"WebkitMaskImage\",\n  \"MSMaskImage\",\n  \"OMaskImage\",\n  \"maskMode\",\n  \"MozMaskMode\",\n  \"WebkitMaskMode\",\n  \"MSMaskMode\",\n  \"OMaskMode\",\n  \"maskOrigin\",\n  \"MozMaskOrigin\",\n  \"WebkitMaskOrigin\",\n  \"MSMaskOrigin\",\n  \"OMaskOrigin\",\n  \"maskPosition\",\n  \"MozMaskPosition\",\n  \"WebkitMaskPosition\",\n  \"MSMaskPosition\",\n  \"OMaskPosition\",\n  \"maskRepeat\",\n  \"MozMaskRepeat\",\n  \"WebkitMaskRepeat\",\n  \"MSMaskRepeat\",\n  \"OMaskRepeat\",\n  \"maskSize\",\n  \"MozMaskSize\",\n  \"WebkitMaskSize\",\n  \"MSMaskSize\",\n  \"OMaskSize\",\n  \"maskType\",\n  \"MozMaskType\",\n  \"WebkitMaskType\",\n  \"MSMaskType\",\n  \"OMaskType\",\n  \"maxHeight\",\n  \"MozMaxHeight\",\n  \"WebkitMaxHeight\",\n  \"MSMaxHeight\",\n  \"OMaxHeight\",\n  \"maxWidth\",\n  \"MozMaxWidth\",\n  \"WebkitMaxWidth\",\n  \"MSMaxWidth\",\n  \"OMaxWidth\",\n  \"minBlockSize\",\n  \"MozMinBlockSize\",\n  \"WebkitMinBlockSize\",\n  \"MSMinBlockSize\",\n  \"OMinBlockSize\",\n  \"minHeight\",\n  \"MozMinHeight\",\n  \"WebkitMinHeight\",\n  \"MSMinHeight\",\n  \"OMinHeight\",\n  \"minInlineSize\",\n  \"MozMinInlineSize\",\n  \"WebkitMinInlineSize\",\n  \"MSMinInlineSize\",\n  \"OMinInlineSize\",\n  \"minWidth\",\n  \"MozMinWidth\",\n  \"WebkitMinWidth\",\n  \"MSMinWidth\",\n  \"OMinWidth\",\n  \"mixBlendMode\",\n  \"MozMixBlendMode\",\n  \"WebkitMixBlendMode\",\n  \"MSMixBlendMode\",\n  \"OMixBlendMode\",\n  \"mm\",\n  \"MozMm\",\n  \"WebkitMm\",\n  \"MSMm\",\n  \"OMm\",\n  \"ms\",\n  \"MozMs\",\n  \"WebkitMs\",\n  \"MSMs\",\n  \"OMs\",\n  \"objectFit\",\n  \"MozObjectFit\",\n  \"WebkitObjectFit\",\n  \"MSObjectFit\",\n  \"OObjectFit\",\n  \"objectPosition\",\n  \"MozObjectPosition\",\n  \"WebkitObjectPosition\",\n  \"MSObjectPosition\",\n  \"OObjectPosition\",\n  \"offsetBlockEnd\",\n  \"MozOffsetBlockEnd\",\n  \"WebkitOffsetBlockEnd\",\n  \"MSOffsetBlockEnd\",\n  \"OOffsetBlockEnd\",\n  \"offsetBlockStart\",\n  \"MozOffsetBlockStart\",\n  \"WebkitOffsetBlockStart\",\n  \"MSOffsetBlockStart\",\n  \"OOffsetBlockStart\",\n  \"offsetInlineEnd\",\n  \"MozOffsetInlineEnd\",\n  \"WebkitOffsetInlineEnd\",\n  \"MSOffsetInlineEnd\",\n  \"OOffsetInlineEnd\",\n  \"offsetInlineStart\",\n  \"MozOffsetInlineStart\",\n  \"WebkitOffsetInlineStart\",\n  \"MSOffsetInlineStart\",\n  \"OOffsetInlineStart\",\n  \"opacity\",\n  \"MozOpacity\",\n  \"WebkitOpacity\",\n  \"MSOpacity\",\n  \"OOpacity\",\n  \"order\",\n  \"MozOrder\",\n  \"WebkitOrder\",\n  \"MSOrder\",\n  \"OOrder\",\n  \"orphans\",\n  \"MozOrphans\",\n  \"WebkitOrphans\",\n  \"MSOrphans\",\n  \"OOrphans\",\n  \"outline\",\n  \"MozOutline\",\n  \"WebkitOutline\",\n  \"MSOutline\",\n  \"OOutline\",\n  \"outlineColor\",\n  \"MozOutlineColor\",\n  \"WebkitOutlineColor\",\n  \"MSOutlineColor\",\n  \"OOutlineColor\",\n  \"outlineOffset\",\n  \"MozOutlineOffset\",\n  \"WebkitOutlineOffset\",\n  \"MSOutlineOffset\",\n  \"OOutlineOffset\",\n  \"outlineStyle\",\n  \"MozOutlineStyle\",\n  \"WebkitOutlineStyle\",\n  \"MSOutlineStyle\",\n  \"OOutlineStyle\",\n  \"outlineWidth\",\n  \"MozOutlineWidth\",\n  \"WebkitOutlineWidth\",\n  \"MSOutlineWidth\",\n  \"OOutlineWidth\",\n  \"overflow\",\n  \"MozOverflow\",\n  \"WebkitOverflow\",\n  \"MSOverflow\",\n  \"OOverflow\",\n  \"overflowWrap\",\n  \"MozOverflowWrap\",\n  \"WebkitOverflowWrap\",\n  \"MSOverflowWrap\",\n  \"OOverflowWrap\",\n  \"overflowX\",\n  \"MozOverflowX\",\n  \"WebkitOverflowX\",\n  \"MSOverflowX\",\n  \"OOverflowX\",\n  \"overflowY\",\n  \"MozOverflowY\",\n  \"WebkitOverflowY\",\n  \"MSOverflowY\",\n  \"OOverflowY\",\n  \"padding\",\n  \"MozPadding\",\n  \"WebkitPadding\",\n  \"MSPadding\",\n  \"OPadding\",\n  \"paddingBlockEnd\",\n  \"MozPaddingBlockEnd\",\n  \"WebkitPaddingBlockEnd\",\n  \"MSPaddingBlockEnd\",\n  \"OPaddingBlockEnd\",\n  \"paddingBlockStart\",\n  \"MozPaddingBlockStart\",\n  \"WebkitPaddingBlockStart\",\n  \"MSPaddingBlockStart\",\n  \"OPaddingBlockStart\",\n  \"paddingBottom\",\n  \"MozPaddingBottom\",\n  \"WebkitPaddingBottom\",\n  \"MSPaddingBottom\",\n  \"OPaddingBottom\",\n  \"paddingInlineEnd\",\n  \"MozPaddingInlineEnd\",\n  \"WebkitPaddingInlineEnd\",\n  \"MSPaddingInlineEnd\",\n  \"OPaddingInlineEnd\",\n  \"paddingInlineStart\",\n  \"MozPaddingInlineStart\",\n  \"WebkitPaddingInlineStart\",\n  \"MSPaddingInlineStart\",\n  \"OPaddingInlineStart\",\n  \"paddingLeft\",\n  \"MozPaddingLeft\",\n  \"WebkitPaddingLeft\",\n  \"MSPaddingLeft\",\n  \"OPaddingLeft\",\n  \"paddingRight\",\n  \"MozPaddingRight\",\n  \"WebkitPaddingRight\",\n  \"MSPaddingRight\",\n  \"OPaddingRight\",\n  \"paddingTop\",\n  \"MozPaddingTop\",\n  \"WebkitPaddingTop\",\n  \"MSPaddingTop\",\n  \"OPaddingTop\",\n  \"pageBreakAfter\",\n  \"MozPageBreakAfter\",\n  \"WebkitPageBreakAfter\",\n  \"MSPageBreakAfter\",\n  \"OPageBreakAfter\",\n  \"pageBreakBefore\",\n  \"MozPageBreakBefore\",\n  \"WebkitPageBreakBefore\",\n  \"MSPageBreakBefore\",\n  \"OPageBreakBefore\",\n  \"pageBreakInside\",\n  \"MozPageBreakInside\",\n  \"WebkitPageBreakInside\",\n  \"MSPageBreakInside\",\n  \"OPageBreakInside\",\n  \"pc\",\n  \"MozPc\",\n  \"WebkitPc\",\n  \"MSPc\",\n  \"OPc\",\n  \"perspective\",\n  \"MozPerspective\",\n  \"WebkitPerspective\",\n  \"MSPerspective\",\n  \"OPerspective\",\n  \"perspectiveOrigin\",\n  \"MozPerspectiveOrigin\",\n  \"WebkitPerspectiveOrigin\",\n  \"MSPerspectiveOrigin\",\n  \"OPerspectiveOrigin\",\n  \"pointerEvents\",\n  \"MozPointerEvents\",\n  \"WebkitPointerEvents\",\n  \"MSPointerEvents\",\n  \"OPointerEvents\",\n  \"position\",\n  \"MozPosition\",\n  \"WebkitPosition\",\n  \"MSPosition\",\n  \"OPosition\",\n  \"pt\",\n  \"MozPt\",\n  \"WebkitPt\",\n  \"MSPt\",\n  \"OPt\",\n  \"px\",\n  \"MozPx\",\n  \"WebkitPx\",\n  \"MSPx\",\n  \"OPx\",\n  \"q\",\n  \"MozQ\",\n  \"WebkitQ\",\n  \"MSQ\",\n  \"OQ\",\n  \"quotes\",\n  \"MozQuotes\",\n  \"WebkitQuotes\",\n  \"MSQuotes\",\n  \"OQuotes\",\n  \"rad\",\n  \"MozRad\",\n  \"WebkitRad\",\n  \"MSRad\",\n  \"ORad\",\n  \"rem\",\n  \"MozRem\",\n  \"WebkitRem\",\n  \"MSRem\",\n  \"ORem\",\n  \"resize\",\n  \"MozResize\",\n  \"WebkitResize\",\n  \"MSResize\",\n  \"OResize\",\n  \"revert\",\n  \"MozRevert\",\n  \"WebkitRevert\",\n  \"MSRevert\",\n  \"ORevert\",\n  \"right\",\n  \"MozRight\",\n  \"WebkitRight\",\n  \"MSRight\",\n  \"ORight\",\n  \"rubyAlign\",\n  \"MozRubyAlign\",\n  \"WebkitRubyAlign\",\n  \"MSRubyAlign\",\n  \"ORubyAlign\",\n  \"rubyMerge\",\n  \"MozRubyMerge\",\n  \"WebkitRubyMerge\",\n  \"MSRubyMerge\",\n  \"ORubyMerge\",\n  \"rubyPosition\",\n  \"MozRubyPosition\",\n  \"WebkitRubyPosition\",\n  \"MSRubyPosition\",\n  \"ORubyPosition\",\n  \"s\",\n  \"MozS\",\n  \"WebkitS\",\n  \"MSS\",\n  \"OS\",\n  \"scrollBehavior\",\n  \"MozScrollBehavior\",\n  \"WebkitScrollBehavior\",\n  \"MSScrollBehavior\",\n  \"OScrollBehavior\",\n  \"scrollSnapCoordinate\",\n  \"MozScrollSnapCoordinate\",\n  \"WebkitScrollSnapCoordinate\",\n  \"MSScrollSnapCoordinate\",\n  \"OScrollSnapCoordinate\",\n  \"scrollSnapDestination\",\n  \"MozScrollSnapDestination\",\n  \"WebkitScrollSnapDestination\",\n  \"MSScrollSnapDestination\",\n  \"OScrollSnapDestination\",\n  \"scrollSnapType\",\n  \"MozScrollSnapType\",\n  \"WebkitScrollSnapType\",\n  \"MSScrollSnapType\",\n  \"OScrollSnapType\",\n  \"shapeImageThreshold\",\n  \"MozShapeImageThreshold\",\n  \"WebkitShapeImageThreshold\",\n  \"MSShapeImageThreshold\",\n  \"OShapeImageThreshold\",\n  \"shapeMargin\",\n  \"MozShapeMargin\",\n  \"WebkitShapeMargin\",\n  \"MSShapeMargin\",\n  \"OShapeMargin\",\n  \"shapeOutside\",\n  \"MozShapeOutside\",\n  \"WebkitShapeOutside\",\n  \"MSShapeOutside\",\n  \"OShapeOutside\",\n  \"tabSize\",\n  \"MozTabSize\",\n  \"WebkitTabSize\",\n  \"MSTabSize\",\n  \"OTabSize\",\n  \"tableLayout\",\n  \"MozTableLayout\",\n  \"WebkitTableLayout\",\n  \"MSTableLayout\",\n  \"OTableLayout\",\n  \"textAlign\",\n  \"MozTextAlign\",\n  \"WebkitTextAlign\",\n  \"MSTextAlign\",\n  \"OTextAlign\",\n  \"textAlignLast\",\n  \"MozTextAlignLast\",\n  \"WebkitTextAlignLast\",\n  \"MSTextAlignLast\",\n  \"OTextAlignLast\",\n  \"textCombineUpright\",\n  \"MozTextCombineUpright\",\n  \"WebkitTextCombineUpright\",\n  \"MSTextCombineUpright\",\n  \"OTextCombineUpright\",\n  \"textDecoration\",\n  \"MozTextDecoration\",\n  \"WebkitTextDecoration\",\n  \"MSTextDecoration\",\n  \"OTextDecoration\",\n  \"textDecorationColor\",\n  \"MozTextDecorationColor\",\n  \"WebkitTextDecorationColor\",\n  \"MSTextDecorationColor\",\n  \"OTextDecorationColor\",\n  \"textDecorationLine\",\n  \"MozTextDecorationLine\",\n  \"WebkitTextDecorationLine\",\n  \"MSTextDecorationLine\",\n  \"OTextDecorationLine\",\n  \"textDecorationStyle\",\n  \"MozTextDecorationStyle\",\n  \"WebkitTextDecorationStyle\",\n  \"MSTextDecorationStyle\",\n  \"OTextDecorationStyle\",\n  \"textEmphasis\",\n  \"MozTextEmphasis\",\n  \"WebkitTextEmphasis\",\n  \"MSTextEmphasis\",\n  \"OTextEmphasis\",\n  \"textEmphasisColor\",\n  \"MozTextEmphasisColor\",\n  \"WebkitTextEmphasisColor\",\n  \"MSTextEmphasisColor\",\n  \"OTextEmphasisColor\",\n  \"textEmphasisPosition\",\n  \"MozTextEmphasisPosition\",\n  \"WebkitTextEmphasisPosition\",\n  \"MSTextEmphasisPosition\",\n  \"OTextEmphasisPosition\",\n  \"textEmphasisStyle\",\n  \"MozTextEmphasisStyle\",\n  \"WebkitTextEmphasisStyle\",\n  \"MSTextEmphasisStyle\",\n  \"OTextEmphasisStyle\",\n  \"textIndent\",\n  \"MozTextIndent\",\n  \"WebkitTextIndent\",\n  \"MSTextIndent\",\n  \"OTextIndent\",\n  \"textOrientation\",\n  \"MozTextOrientation\",\n  \"WebkitTextOrientation\",\n  \"MSTextOrientation\",\n  \"OTextOrientation\",\n  \"textOverflow\",\n  \"MozTextOverflow\",\n  \"WebkitTextOverflow\",\n  \"MSTextOverflow\",\n  \"OTextOverflow\",\n  \"textRendering\",\n  \"MozTextRendering\",\n  \"WebkitTextRendering\",\n  \"MSTextRendering\",\n  \"OTextRendering\",\n  \"textShadow\",\n  \"MozTextShadow\",\n  \"WebkitTextShadow\",\n  \"MSTextShadow\",\n  \"OTextShadow\",\n  \"textTransform\",\n  \"MozTextTransform\",\n  \"WebkitTextTransform\",\n  \"MSTextTransform\",\n  \"OTextTransform\",\n  \"textUnderlinePosition\",\n  \"MozTextUnderlinePosition\",\n  \"WebkitTextUnderlinePosition\",\n  \"MSTextUnderlinePosition\",\n  \"OTextUnderlinePosition\",\n  \"top\",\n  \"MozTop\",\n  \"WebkitTop\",\n  \"MSTop\",\n  \"OTop\",\n  \"touchAction\",\n  \"MozTouchAction\",\n  \"WebkitTouchAction\",\n  \"MSTouchAction\",\n  \"OTouchAction\",\n  \"transform\",\n  \"MozTransform\",\n  \"WebkitTransform\",\n  \"msTransform\",\n  \"OTransform\",\n  \"transformBox\",\n  \"MozTransformBox\",\n  \"WebkitTransformBox\",\n  \"MSTransformBox\",\n  \"OTransformBox\",\n  \"transformOrigin\",\n  \"MozTransformOrigin\",\n  \"WebkitTransformOrigin\",\n  \"MSTransformOrigin\",\n  \"OTransformOrigin\",\n  \"transformStyle\",\n  \"MozTransformStyle\",\n  \"WebkitTransformStyle\",\n  \"MSTransformStyle\",\n  \"OTransformStyle\",\n  \"transition\",\n  \"MozTransition\",\n  \"WebkitTransition\",\n  \"MSTransition\",\n  \"OTransition\",\n  \"transitionDelay\",\n  \"MozTransitionDelay\",\n  \"WebkitTransitionDelay\",\n  \"MSTransitionDelay\",\n  \"OTransitionDelay\",\n  \"transitionDuration\",\n  \"MozTransitionDuration\",\n  \"WebkitTransitionDuration\",\n  \"MSTransitionDuration\",\n  \"OTransitionDuration\",\n  \"transitionProperty\",\n  \"MozTransitionProperty\",\n  \"WebkitTransitionProperty\",\n  \"MSTransitionProperty\",\n  \"OTransitionProperty\",\n  \"transitionTimingFunction\",\n  \"MozTransitionTimingFunction\",\n  \"WebkitTransitionTimingFunction\",\n  \"MSTransitionTimingFunction\",\n  \"OTransitionTimingFunction\",\n  \"turn\",\n  \"MozTurn\",\n  \"WebkitTurn\",\n  \"MSTurn\",\n  \"OTurn\",\n  \"unicodeBidi\",\n  \"MozUnicodeBidi\",\n  \"WebkitUnicodeBidi\",\n  \"MSUnicodeBidi\",\n  \"OUnicodeBidi\",\n  \"unset\",\n  \"MozUnset\",\n  \"WebkitUnset\",\n  \"MSUnset\",\n  \"OUnset\",\n  \"verticalAlign\",\n  \"MozVerticalAlign\",\n  \"WebkitVerticalAlign\",\n  \"MSVerticalAlign\",\n  \"OVerticalAlign\",\n  \"vh\",\n  \"MozVh\",\n  \"WebkitVh\",\n  \"MSVh\",\n  \"OVh\",\n  \"visibility\",\n  \"MozVisibility\",\n  \"WebkitVisibility\",\n  \"MSVisibility\",\n  \"OVisibility\",\n  \"vmax\",\n  \"MozVmax\",\n  \"WebkitVmax\",\n  \"MSVmax\",\n  \"OVmax\",\n  \"vmin\",\n  \"MozVmin\",\n  \"WebkitVmin\",\n  \"MSVmin\",\n  \"OVmin\",\n  \"vw\",\n  \"MozVw\",\n  \"WebkitVw\",\n  \"MSVw\",\n  \"OVw\",\n  \"whiteSpace\",\n  \"MozWhiteSpace\",\n  \"WebkitWhiteSpace\",\n  \"MSWhiteSpace\",\n  \"OWhiteSpace\",\n  \"widows\",\n  \"MozWidows\",\n  \"WebkitWidows\",\n  \"MSWidows\",\n  \"OWidows\",\n  \"width\",\n  \"MozWidth\",\n  \"WebkitWidth\",\n  \"MSWidth\",\n  \"OWidth\",\n  \"willChange\",\n  \"MozWillChange\",\n  \"WebkitWillChange\",\n  \"MSWillChange\",\n  \"OWillChange\",\n  \"wordBreak\",\n  \"MozWordBreak\",\n  \"WebkitWordBreak\",\n  \"MSWordBreak\",\n  \"OWordBreak\",\n  \"wordSpacing\",\n  \"MozWordSpacing\",\n  \"WebkitWordSpacing\",\n  \"MSWordSpacing\",\n  \"OWordSpacing\",\n  \"wordWrap\",\n  \"MozWordWrap\",\n  \"WebkitWordWrap\",\n  \"MSWordWrap\",\n  \"OWordWrap\",\n  \"writingMode\",\n  \"MozWritingMode\",\n  \"WebkitWritingMode\",\n  \"MSWritingMode\",\n  \"OWritingMode\",\n  \"zIndex\",\n  \"MozZIndex\",\n  \"WebkitZIndex\",\n  \"MSZIndex\",\n  \"OZIndex\",\n  \"fontSize\",\n  \"MozFontSize\",\n  \"WebkitFontSize\",\n  \"MSFontSize\",\n  \"OFontSize\",\n  \"flex\",\n  \"MozFlex\",\n  \"WebkitFlex\",\n  \"MSFlex\",\n  \"OFlex\",\n  \"fr\",\n  \"MozFr\",\n  \"WebkitFr\",\n  \"MSFr\",\n  \"OFr\",\n  \"overflowScrolling\",\n  \"MozOverflowScrolling\",\n  \"WebkitOverflowScrolling\",\n  \"MSOverflowScrolling\",\n  \"OOverflowScrolling\",\n  \"userSelect\",\n  \"MozUserSelect\",\n  \"WebkitUserSelect\",\n  \"MSUserSelect\",\n  \"OUserSelect\"\n]\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.button-group_button-group_3_c2R {\\n    display: -webkit-inline-box;\\n    display: -webkit-inline-flex;\\n    display: -ms-inline-flexbox;\\n    display: inline-flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    padding: 0 .25rem;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"button-group\": \"button-group_button-group_3_c2R\",\n\t\"buttonGroup\": \"button-group_button-group_3_c2R\"\n};\nmodule.exports = exports;\n","var conversions = require(\"./conversions\");\n\nvar convert = function() {\n   return new Converter();\n}\n\nfor (var func in conversions) {\n  // export Raw versions\n  convert[func + \"Raw\"] =  (function(func) {\n    // accept array or plain args\n    return function(arg) {\n      if (typeof arg == \"number\")\n        arg = Array.prototype.slice.call(arguments);\n      return conversions[func](arg);\n    }\n  })(func);\n\n  var pair = /(\\w+)2(\\w+)/.exec(func),\n      from = pair[1],\n      to = pair[2];\n\n  // export rgb2hsl and [\"rgb\"][\"hsl\"]\n  convert[from] = convert[from] || {};\n\n  convert[from][to] = convert[func] = (function(func) { \n    return function(arg) {\n      if (typeof arg == \"number\")\n        arg = Array.prototype.slice.call(arguments);\n      \n      var val = conversions[func](arg);\n      if (typeof val == \"string\" || val === undefined)\n        return val; // keyword\n\n      for (var i = 0; i < val.length; i++)\n        val[i] = Math.round(val[i]);\n      return val;\n    }\n  })(func);\n}\n\n\n/* Converter does lazy conversion and caching */\nvar Converter = function() {\n   this.convs = {};\n};\n\n/* Either get the values for a space or\n  set the values for a space, depending on args */\nConverter.prototype.routeSpace = function(space, args) {\n   var values = args[0];\n   if (values === undefined) {\n      // color.rgb()\n      return this.getValues(space);\n   }\n   // color.rgb(10, 10, 10)\n   if (typeof values == \"number\") {\n      values = Array.prototype.slice.call(args);        \n   }\n\n   return this.setValues(space, values);\n};\n  \n/* Set the values for a space, invalidating cache */\nConverter.prototype.setValues = function(space, values) {\n   this.space = space;\n   this.convs = {};\n   this.convs[space] = values;\n   return this;\n};\n\n/* Get the values for a space. If there's already\n  a conversion for the space, fetch it, otherwise\n  compute it */\nConverter.prototype.getValues = function(space) {\n   var vals = this.convs[space];\n   if (!vals) {\n      var fspace = this.space,\n          from = this.convs[fspace];\n      vals = convert[fspace][space](from);\n\n      this.convs[space] = vals;\n   }\n  return vals;\n};\n\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\n   Converter.prototype[space] = function(vals) {\n      return this.routeSpace(space, arguments);\n   }\n});\n\nmodule.exports = convert;","/* MIT license */\n\nmodule.exports = {\n  rgb2hsl: rgb2hsl,\n  rgb2hsv: rgb2hsv,\n  rgb2hwb: rgb2hwb,\n  rgb2cmyk: rgb2cmyk,\n  rgb2keyword: rgb2keyword,\n  rgb2xyz: rgb2xyz,\n  rgb2lab: rgb2lab,\n  rgb2lch: rgb2lch,\n\n  hsl2rgb: hsl2rgb,\n  hsl2hsv: hsl2hsv,\n  hsl2hwb: hsl2hwb,\n  hsl2cmyk: hsl2cmyk,\n  hsl2keyword: hsl2keyword,\n\n  hsv2rgb: hsv2rgb,\n  hsv2hsl: hsv2hsl,\n  hsv2hwb: hsv2hwb,\n  hsv2cmyk: hsv2cmyk,\n  hsv2keyword: hsv2keyword,\n\n  hwb2rgb: hwb2rgb,\n  hwb2hsl: hwb2hsl,\n  hwb2hsv: hwb2hsv,\n  hwb2cmyk: hwb2cmyk,\n  hwb2keyword: hwb2keyword,\n\n  cmyk2rgb: cmyk2rgb,\n  cmyk2hsl: cmyk2hsl,\n  cmyk2hsv: cmyk2hsv,\n  cmyk2hwb: cmyk2hwb,\n  cmyk2keyword: cmyk2keyword,\n\n  keyword2rgb: keyword2rgb,\n  keyword2hsl: keyword2hsl,\n  keyword2hsv: keyword2hsv,\n  keyword2hwb: keyword2hwb,\n  keyword2cmyk: keyword2cmyk,\n  keyword2lab: keyword2lab,\n  keyword2xyz: keyword2xyz,\n\n  xyz2rgb: xyz2rgb,\n  xyz2lab: xyz2lab,\n  xyz2lch: xyz2lch,\n\n  lab2xyz: lab2xyz,\n  lab2rgb: lab2rgb,\n  lab2lch: lab2lch,\n\n  lch2lab: lch2lab,\n  lch2xyz: lch2xyz,\n  lch2rgb: lch2rgb\n}\n\n\nfunction rgb2hsl(rgb) {\n  var r = rgb[0]/255,\n      g = rgb[1]/255,\n      b = rgb[2]/255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      delta = max - min,\n      h, s, l;\n\n  if (max == min)\n    h = 0;\n  else if (r == max)\n    h = (g - b) / delta;\n  else if (g == max)\n    h = 2 + (b - r) / delta;\n  else if (b == max)\n    h = 4 + (r - g)/ delta;\n\n  h = Math.min(h * 60, 360);\n\n  if (h < 0)\n    h += 360;\n\n  l = (min + max) / 2;\n\n  if (max == min)\n    s = 0;\n  else if (l <= 0.5)\n    s = delta / (max + min);\n  else\n    s = delta / (2 - max - min);\n\n  return [h, s * 100, l * 100];\n}\n\nfunction rgb2hsv(rgb) {\n  var r = rgb[0],\n      g = rgb[1],\n      b = rgb[2],\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      delta = max - min,\n      h, s, v;\n\n  if (max == 0)\n    s = 0;\n  else\n    s = (delta/max * 1000)/10;\n\n  if (max == min)\n    h = 0;\n  else if (r == max)\n    h = (g - b) / delta;\n  else if (g == max)\n    h = 2 + (b - r) / delta;\n  else if (b == max)\n    h = 4 + (r - g) / delta;\n\n  h = Math.min(h * 60, 360);\n\n  if (h < 0)\n    h += 360;\n\n  v = ((max / 255) * 1000) / 10;\n\n  return [h, s, v];\n}\n\nfunction rgb2hwb(rgb) {\n  var r = rgb[0],\n      g = rgb[1],\n      b = rgb[2],\n      h = rgb2hsl(rgb)[0],\n      w = 1/255 * Math.min(r, Math.min(g, b)),\n      b = 1 - 1/255 * Math.max(r, Math.max(g, b));\n\n  return [h, w * 100, b * 100];\n}\n\nfunction rgb2cmyk(rgb) {\n  var r = rgb[0] / 255,\n      g = rgb[1] / 255,\n      b = rgb[2] / 255,\n      c, m, y, k;\n\n  k = Math.min(1 - r, 1 - g, 1 - b);\n  c = (1 - r - k) / (1 - k) || 0;\n  m = (1 - g - k) / (1 - k) || 0;\n  y = (1 - b - k) / (1 - k) || 0;\n  return [c * 100, m * 100, y * 100, k * 100];\n}\n\nfunction rgb2keyword(rgb) {\n  return reverseKeywords[JSON.stringify(rgb)];\n}\n\nfunction rgb2xyz(rgb) {\n  var r = rgb[0] / 255,\n      g = rgb[1] / 255,\n      b = rgb[2] / 255;\n\n  // assume sRGB\n  r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n  g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n  b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n  var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n  var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n  var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n  return [x * 100, y *100, z * 100];\n}\n\nfunction rgb2lab(rgb) {\n  var xyz = rgb2xyz(rgb),\n        x = xyz[0],\n        y = xyz[1],\n        z = xyz[2],\n        l, a, b;\n\n  x /= 95.047;\n  y /= 100;\n  z /= 108.883;\n\n  x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n  y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n  z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n  l = (116 * y) - 16;\n  a = 500 * (x - y);\n  b = 200 * (y - z);\n\n  return [l, a, b];\n}\n\nfunction rgb2lch(args) {\n  return lab2lch(rgb2lab(args));\n}\n\nfunction hsl2rgb(hsl) {\n  var h = hsl[0] / 360,\n      s = hsl[1] / 100,\n      l = hsl[2] / 100,\n      t1, t2, t3, rgb, val;\n\n  if (s == 0) {\n    val = l * 255;\n    return [val, val, val];\n  }\n\n  if (l < 0.5)\n    t2 = l * (1 + s);\n  else\n    t2 = l + s - l * s;\n  t1 = 2 * l - t2;\n\n  rgb = [0, 0, 0];\n  for (var i = 0; i < 3; i++) {\n    t3 = h + 1 / 3 * - (i - 1);\n    t3 < 0 && t3++;\n    t3 > 1 && t3--;\n\n    if (6 * t3 < 1)\n      val = t1 + (t2 - t1) * 6 * t3;\n    else if (2 * t3 < 1)\n      val = t2;\n    else if (3 * t3 < 2)\n      val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n    else\n      val = t1;\n\n    rgb[i] = val * 255;\n  }\n\n  return rgb;\n}\n\nfunction hsl2hsv(hsl) {\n  var h = hsl[0],\n      s = hsl[1] / 100,\n      l = hsl[2] / 100,\n      sv, v;\n\n  if(l === 0) {\n      // no need to do calc on black\n      // also avoids divide by 0 error\n      return [0, 0, 0];\n  }\n\n  l *= 2;\n  s *= (l <= 1) ? l : 2 - l;\n  v = (l + s) / 2;\n  sv = (2 * s) / (l + s);\n  return [h, sv * 100, v * 100];\n}\n\nfunction hsl2hwb(args) {\n  return rgb2hwb(hsl2rgb(args));\n}\n\nfunction hsl2cmyk(args) {\n  return rgb2cmyk(hsl2rgb(args));\n}\n\nfunction hsl2keyword(args) {\n  return rgb2keyword(hsl2rgb(args));\n}\n\n\nfunction hsv2rgb(hsv) {\n  var h = hsv[0] / 60,\n      s = hsv[1] / 100,\n      v = hsv[2] / 100,\n      hi = Math.floor(h) % 6;\n\n  var f = h - Math.floor(h),\n      p = 255 * v * (1 - s),\n      q = 255 * v * (1 - (s * f)),\n      t = 255 * v * (1 - (s * (1 - f))),\n      v = 255 * v;\n\n  switch(hi) {\n    case 0:\n      return [v, t, p];\n    case 1:\n      return [q, v, p];\n    case 2:\n      return [p, v, t];\n    case 3:\n      return [p, q, v];\n    case 4:\n      return [t, p, v];\n    case 5:\n      return [v, p, q];\n  }\n}\n\nfunction hsv2hsl(hsv) {\n  var h = hsv[0],\n      s = hsv[1] / 100,\n      v = hsv[2] / 100,\n      sl, l;\n\n  l = (2 - s) * v;\n  sl = s * v;\n  sl /= (l <= 1) ? l : 2 - l;\n  sl = sl || 0;\n  l /= 2;\n  return [h, sl * 100, l * 100];\n}\n\nfunction hsv2hwb(args) {\n  return rgb2hwb(hsv2rgb(args))\n}\n\nfunction hsv2cmyk(args) {\n  return rgb2cmyk(hsv2rgb(args));\n}\n\nfunction hsv2keyword(args) {\n  return rgb2keyword(hsv2rgb(args));\n}\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nfunction hwb2rgb(hwb) {\n  var h = hwb[0] / 360,\n      wh = hwb[1] / 100,\n      bl = hwb[2] / 100,\n      ratio = wh + bl,\n      i, v, f, n;\n\n  // wh + bl cant be > 1\n  if (ratio > 1) {\n    wh /= ratio;\n    bl /= ratio;\n  }\n\n  i = Math.floor(6 * h);\n  v = 1 - bl;\n  f = 6 * h - i;\n  if ((i & 0x01) != 0) {\n    f = 1 - f;\n  }\n  n = wh + f * (v - wh);  // linear interpolation\n\n  switch (i) {\n    default:\n    case 6:\n    case 0: r = v; g = n; b = wh; break;\n    case 1: r = n; g = v; b = wh; break;\n    case 2: r = wh; g = v; b = n; break;\n    case 3: r = wh; g = n; b = v; break;\n    case 4: r = n; g = wh; b = v; break;\n    case 5: r = v; g = wh; b = n; break;\n  }\n\n  return [r * 255, g * 255, b * 255];\n}\n\nfunction hwb2hsl(args) {\n  return rgb2hsl(hwb2rgb(args));\n}\n\nfunction hwb2hsv(args) {\n  return rgb2hsv(hwb2rgb(args));\n}\n\nfunction hwb2cmyk(args) {\n  return rgb2cmyk(hwb2rgb(args));\n}\n\nfunction hwb2keyword(args) {\n  return rgb2keyword(hwb2rgb(args));\n}\n\nfunction cmyk2rgb(cmyk) {\n  var c = cmyk[0] / 100,\n      m = cmyk[1] / 100,\n      y = cmyk[2] / 100,\n      k = cmyk[3] / 100,\n      r, g, b;\n\n  r = 1 - Math.min(1, c * (1 - k) + k);\n  g = 1 - Math.min(1, m * (1 - k) + k);\n  b = 1 - Math.min(1, y * (1 - k) + k);\n  return [r * 255, g * 255, b * 255];\n}\n\nfunction cmyk2hsl(args) {\n  return rgb2hsl(cmyk2rgb(args));\n}\n\nfunction cmyk2hsv(args) {\n  return rgb2hsv(cmyk2rgb(args));\n}\n\nfunction cmyk2hwb(args) {\n  return rgb2hwb(cmyk2rgb(args));\n}\n\nfunction cmyk2keyword(args) {\n  return rgb2keyword(cmyk2rgb(args));\n}\n\n\nfunction xyz2rgb(xyz) {\n  var x = xyz[0] / 100,\n      y = xyz[1] / 100,\n      z = xyz[2] / 100,\n      r, g, b;\n\n  r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n  g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n  b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n  // assume sRGB\n  r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n    : r = (r * 12.92);\n\n  g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n    : g = (g * 12.92);\n\n  b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n    : b = (b * 12.92);\n\n  r = Math.min(Math.max(0, r), 1);\n  g = Math.min(Math.max(0, g), 1);\n  b = Math.min(Math.max(0, b), 1);\n\n  return [r * 255, g * 255, b * 255];\n}\n\nfunction xyz2lab(xyz) {\n  var x = xyz[0],\n      y = xyz[1],\n      z = xyz[2],\n      l, a, b;\n\n  x /= 95.047;\n  y /= 100;\n  z /= 108.883;\n\n  x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n  y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n  z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n  l = (116 * y) - 16;\n  a = 500 * (x - y);\n  b = 200 * (y - z);\n\n  return [l, a, b];\n}\n\nfunction xyz2lch(args) {\n  return lab2lch(xyz2lab(args));\n}\n\nfunction lab2xyz(lab) {\n  var l = lab[0],\n      a = lab[1],\n      b = lab[2],\n      x, y, z, y2;\n\n  if (l <= 8) {\n    y = (l * 100) / 903.3;\n    y2 = (7.787 * (y / 100)) + (16 / 116);\n  } else {\n    y = 100 * Math.pow((l + 16) / 116, 3);\n    y2 = Math.pow(y / 100, 1/3);\n  }\n\n  x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);\n\n  z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);\n\n  return [x, y, z];\n}\n\nfunction lab2lch(lab) {\n  var l = lab[0],\n      a = lab[1],\n      b = lab[2],\n      hr, h, c;\n\n  hr = Math.atan2(b, a);\n  h = hr * 360 / 2 / Math.PI;\n  if (h < 0) {\n    h += 360;\n  }\n  c = Math.sqrt(a * a + b * b);\n  return [l, c, h];\n}\n\nfunction lab2rgb(args) {\n  return xyz2rgb(lab2xyz(args));\n}\n\nfunction lch2lab(lch) {\n  var l = lch[0],\n      c = lch[1],\n      h = lch[2],\n      a, b, hr;\n\n  hr = h / 360 * 2 * Math.PI;\n  a = c * Math.cos(hr);\n  b = c * Math.sin(hr);\n  return [l, a, b];\n}\n\nfunction lch2xyz(args) {\n  return lab2xyz(lch2lab(args));\n}\n\nfunction lch2rgb(args) {\n  return lab2rgb(lch2lab(args));\n}\n\nfunction keyword2rgb(keyword) {\n  return cssKeywords[keyword];\n}\n\nfunction keyword2hsl(args) {\n  return rgb2hsl(keyword2rgb(args));\n}\n\nfunction keyword2hsv(args) {\n  return rgb2hsv(keyword2rgb(args));\n}\n\nfunction keyword2hwb(args) {\n  return rgb2hwb(keyword2rgb(args));\n}\n\nfunction keyword2cmyk(args) {\n  return rgb2cmyk(keyword2rgb(args));\n}\n\nfunction keyword2lab(args) {\n  return rgb2lab(keyword2rgb(args));\n}\n\nfunction keyword2xyz(args) {\n  return rgb2xyz(keyword2rgb(args));\n}\n\nvar cssKeywords = {\n  aliceblue:  [240,248,255],\n  antiquewhite: [250,235,215],\n  aqua: [0,255,255],\n  aquamarine: [127,255,212],\n  azure:  [240,255,255],\n  beige:  [245,245,220],\n  bisque: [255,228,196],\n  black:  [0,0,0],\n  blanchedalmond: [255,235,205],\n  blue: [0,0,255],\n  blueviolet: [138,43,226],\n  brown:  [165,42,42],\n  burlywood:  [222,184,135],\n  cadetblue:  [95,158,160],\n  chartreuse: [127,255,0],\n  chocolate:  [210,105,30],\n  coral:  [255,127,80],\n  cornflowerblue: [100,149,237],\n  cornsilk: [255,248,220],\n  crimson:  [220,20,60],\n  cyan: [0,255,255],\n  darkblue: [0,0,139],\n  darkcyan: [0,139,139],\n  darkgoldenrod:  [184,134,11],\n  darkgray: [169,169,169],\n  darkgreen:  [0,100,0],\n  darkgrey: [169,169,169],\n  darkkhaki:  [189,183,107],\n  darkmagenta:  [139,0,139],\n  darkolivegreen: [85,107,47],\n  darkorange: [255,140,0],\n  darkorchid: [153,50,204],\n  darkred:  [139,0,0],\n  darksalmon: [233,150,122],\n  darkseagreen: [143,188,143],\n  darkslateblue:  [72,61,139],\n  darkslategray:  [47,79,79],\n  darkslategrey:  [47,79,79],\n  darkturquoise:  [0,206,209],\n  darkviolet: [148,0,211],\n  deeppink: [255,20,147],\n  deepskyblue:  [0,191,255],\n  dimgray:  [105,105,105],\n  dimgrey:  [105,105,105],\n  dodgerblue: [30,144,255],\n  firebrick:  [178,34,34],\n  floralwhite:  [255,250,240],\n  forestgreen:  [34,139,34],\n  fuchsia:  [255,0,255],\n  gainsboro:  [220,220,220],\n  ghostwhite: [248,248,255],\n  gold: [255,215,0],\n  goldenrod:  [218,165,32],\n  gray: [128,128,128],\n  green:  [0,128,0],\n  greenyellow:  [173,255,47],\n  grey: [128,128,128],\n  honeydew: [240,255,240],\n  hotpink:  [255,105,180],\n  indianred:  [205,92,92],\n  indigo: [75,0,130],\n  ivory:  [255,255,240],\n  khaki:  [240,230,140],\n  lavender: [230,230,250],\n  lavenderblush:  [255,240,245],\n  lawngreen:  [124,252,0],\n  lemonchiffon: [255,250,205],\n  lightblue:  [173,216,230],\n  lightcoral: [240,128,128],\n  lightcyan:  [224,255,255],\n  lightgoldenrodyellow: [250,250,210],\n  lightgray:  [211,211,211],\n  lightgreen: [144,238,144],\n  lightgrey:  [211,211,211],\n  lightpink:  [255,182,193],\n  lightsalmon:  [255,160,122],\n  lightseagreen:  [32,178,170],\n  lightskyblue: [135,206,250],\n  lightslategray: [119,136,153],\n  lightslategrey: [119,136,153],\n  lightsteelblue: [176,196,222],\n  lightyellow:  [255,255,224],\n  lime: [0,255,0],\n  limegreen:  [50,205,50],\n  linen:  [250,240,230],\n  magenta:  [255,0,255],\n  maroon: [128,0,0],\n  mediumaquamarine: [102,205,170],\n  mediumblue: [0,0,205],\n  mediumorchid: [186,85,211],\n  mediumpurple: [147,112,219],\n  mediumseagreen: [60,179,113],\n  mediumslateblue:  [123,104,238],\n  mediumspringgreen:  [0,250,154],\n  mediumturquoise:  [72,209,204],\n  mediumvioletred:  [199,21,133],\n  midnightblue: [25,25,112],\n  mintcream:  [245,255,250],\n  mistyrose:  [255,228,225],\n  moccasin: [255,228,181],\n  navajowhite:  [255,222,173],\n  navy: [0,0,128],\n  oldlace:  [253,245,230],\n  olive:  [128,128,0],\n  olivedrab:  [107,142,35],\n  orange: [255,165,0],\n  orangered:  [255,69,0],\n  orchid: [218,112,214],\n  palegoldenrod:  [238,232,170],\n  palegreen:  [152,251,152],\n  paleturquoise:  [175,238,238],\n  palevioletred:  [219,112,147],\n  papayawhip: [255,239,213],\n  peachpuff:  [255,218,185],\n  peru: [205,133,63],\n  pink: [255,192,203],\n  plum: [221,160,221],\n  powderblue: [176,224,230],\n  purple: [128,0,128],\n  rebeccapurple: [102, 51, 153],\n  red:  [255,0,0],\n  rosybrown:  [188,143,143],\n  royalblue:  [65,105,225],\n  saddlebrown:  [139,69,19],\n  salmon: [250,128,114],\n  sandybrown: [244,164,96],\n  seagreen: [46,139,87],\n  seashell: [255,245,238],\n  sienna: [160,82,45],\n  silver: [192,192,192],\n  skyblue:  [135,206,235],\n  slateblue:  [106,90,205],\n  slategray:  [112,128,144],\n  slategrey:  [112,128,144],\n  snow: [255,250,250],\n  springgreen:  [0,255,127],\n  steelblue:  [70,130,180],\n  tan:  [210,180,140],\n  teal: [0,128,128],\n  thistle:  [216,191,216],\n  tomato: [255,99,71],\n  turquoise:  [64,224,208],\n  violet: [238,130,238],\n  wheat:  [245,222,179],\n  white:  [255,255,255],\n  whitesmoke: [245,245,245],\n  yellow: [255,255,0],\n  yellowgreen:  [154,205,50]\n};\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n  reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _cssVendor = require(\"css-vendor\");\n\nvar cssVendor = _interopRequireWildcard(_cssVendor);\n\nvar _debug = require(\"debug\");\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nvar _lodash = require(\"lodash.throttle\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _layout = require(\"./layout\");\n\nvar _layout2 = _interopRequireDefault(_layout);\n\nvar _onResize = require(\"./on-resize\");\n\nvar _onResize2 = _interopRequireDefault(_onResize);\n\nvar _platform = require(\"./platform\");\n\nvar _platform2 = _interopRequireDefault(_platform);\n\nvar _tip = require(\"./tip\");\n\nvar _tip2 = _interopRequireDefault(_tip);\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar log = (0, _debug2.default)(\"react-popover\");\n\nvar supportedCSSValue = _utils2.default.clientOnly(cssVendor.supportedValue);\n\nvar jsprefix = function jsprefix(x) {\n  return \"\" + cssVendor.prefix.js + x;\n};\n\nvar cssprefix = function cssprefix(x) {\n  return \"\" + cssVendor.prefix.css + x;\n};\n\nvar cssvalue = function cssvalue(prop, value) {\n  return supportedCSSValue(prop, value) || cssprefix(value);\n};\n\nvar coreStyle = {\n  position: \"absolute\",\n  top: 0,\n  left: 0,\n  display: cssvalue(\"display\", \"flex\")\n};\n\nvar faces = {\n  above: \"down\",\n  right: \"left\",\n  below: \"up\",\n  left: \"right\"\n\n  /* Flow mappings. Each map maps the flow domain to another domain. */\n\n};var flowToTipTranslations = {\n  row: \"translateY\",\n  column: \"translateX\"\n};\n\nvar flowToPopoverTranslations = {\n  row: \"translateX\",\n  column: \"translateY\"\n};\n\nvar Popover = function (_React$Component) {\n  _inherits(Popover, _React$Component);\n\n  function Popover(props) {\n    _classCallCheck(this, Popover);\n\n    var _this = _possibleConstructorReturn(this, (Popover.__proto__ || Object.getPrototypeOf(Popover)).call(this, props));\n\n    _this.checkTargetReposition = function () {\n      if (_this.measureTargetBounds()) _this.resolvePopoverLayout();\n    };\n\n    _this.checkForOuterAction = function (event) {\n      var isOuterAction = !_this.containerEl.contains(event.target) && !_this.targetEl.contains(event.target);\n      if (isOuterAction) _this.props.onOuterAction(event);\n    };\n\n    _this.onTargetResize = function () {\n      log(\"Recalculating layout because _target_ resized!\");\n      _this.measureTargetBounds();\n      _this.resolvePopoverLayout();\n    };\n\n    _this.onPopoverResize = function () {\n      log(\"Recalculating layout because _popover_ resized!\");\n      _this.measurePopoverSize();\n      _this.resolvePopoverLayout();\n    };\n\n    _this.onFrameScroll = function () {\n      log(\"Recalculating layout because _frame_ scrolled!\");\n      _this.measureTargetBounds();\n      _this.resolvePopoverLayout();\n    };\n\n    _this.onFrameResize = function () {\n      log(\"Recalculating layout because _frame_ resized!\");\n      _this.measureFrameBounds();\n      _this.resolvePopoverLayout();\n    };\n\n    _this.getContainerNodeRef = function (containerEl) {\n      Object.assign(_this, { containerEl: containerEl });\n    };\n\n    _this.state = {\n      standing: \"above\",\n      exited: !_this.props.isOpen, // for animation-dependent rendering, should popover close/open?\n      exiting: false, // for tracking in-progress animations\n      toggle: _this.props.isOpen || false // for business logic tracking, should popover close/open?\n    };\n    return _this;\n  }\n\n  _createClass(Popover, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      /* Our component needs a DOM Node reference to the child so that it can be\n      measured so that we can correctly layout the popover. We do not have any\n      control over the child so cannot leverage refs. We could wrap our own\n      primitive component around the child but that could lead to breaking the\n      uses layout (e.g. the child is a flex item). Leveraging findDOMNode seems\n      to be the only functional solution, despite all the general warnings not to\n      use it. We have a legitimate use-case. */\n      // eslint-disable-next-line\n      this.targetEl = _reactDom2.default.findDOMNode(this);\n      if (this.props.isOpen) this.enter();\n    }\n  }, {\n    key: \"componentWillReceiveProps\",\n    value: function componentWillReceiveProps(propsNext) {\n      //log(`Component received props!`, propsNext)\n      var willOpen = !this.props.isOpen && propsNext.isOpen;\n      var willClose = this.props.isOpen && !propsNext.isOpen;\n\n      if (willOpen) this.open();else if (willClose) this.close();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(propsPrev, statePrev) {\n      //log(`Component did update!`)\n      var didOpen = !statePrev.toggle && this.state.toggle;\n      var didClose = statePrev.toggle && !this.state.toggle;\n\n      if (didOpen) this.enter();else if (didClose) this.exit();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      /* If the Popover is unmounted while animating,\n      clear the animation so no setState occured */\n      this.animateExitStop();\n      /* If the Popover was never opened then then tracking\n      initialization never took place and so calling untrack\n      would be an error. Also see issue 55. */\n      if (this.hasTracked) this.untrackPopover();\n    }\n  }, {\n    key: \"resolvePopoverLayout\",\n    value: function resolvePopoverLayout() {\n      /* Find the optimal zone to position self. Measure the size of each zone and use the one with\n      the greatest area. */\n\n      var pickerSettings = {\n        preferPlace: this.props.preferPlace,\n        place: this.props.place\n\n        /* This is a kludge that solves a general problem very specifically for Popover.\n        The problem is subtle. When Popover positioning changes such that it resolves at\n        a different orientation, its Size will change because the Tip will toggle between\n        extending Height or Width. The general problem of course is that calculating\n        zone positioning based on current size is non-trivial if the Size can change once\n        resolved to a different zone. Infinite recursion can be triggered as we noted here:\n        https://github.com/littlebits/react-popover/issues/18. As an example of how this\n        could happen in another way: Imagine the user changes the CSS styling of the popover\n        based on whether it was `row` or `column` flow. TODO: Find a solution to generally\n        solve this problem so that the user is free to change the Popover styles in any\n        way at any time for any arbitrary trigger. There may be value in investigating the\n        http://overconstrained.io community for its general layout system via the\n        constraint-solver Cassowary. */\n      };if (this.zone) this.size[this.zone.flow === \"row\" ? \"h\" : \"w\"] += this.props.tipSize;\n      var zone = _layout2.default.pickZone(pickerSettings, this.frameBounds, this.targetBounds, this.size);\n      if (this.zone) this.size[this.zone.flow === \"row\" ? \"h\" : \"w\"] -= this.props.tipSize;\n\n      var tb = this.targetBounds;\n      this.zone = zone;\n      log(\"zone\", zone);\n\n      this.setState({\n        standing: zone.standing\n      });\n\n      var axis = _layout2.default.axes[zone.flow];\n      log(\"axes\", axis);\n\n      var dockingEdgeBufferLength = Math.round(getComputedStyle(this.bodyEl).borderRadius.slice(0, -2)) || 0;\n      var scrollSize = _layout2.default.El.calcScrollSize(this.frameEl);\n      scrollSize.main = scrollSize[axis.main.size];\n      scrollSize.cross = scrollSize[axis.cross.size];\n\n      /* When positioning self on the cross-axis do not exceed frame bounds. The strategy to achieve\n      this is thus: First position cross-axis self to the cross-axis-center of the the target. Then,\n      offset self by the amount that self is past the boundaries of frame. */\n      var pos = _layout2.default.calcRelPos(zone, tb, this.size);\n\n      /* Offset allows users to control the distance betweent the tip and the target. */\n      pos[axis.main.start] += this.props.offset * zone.order;\n\n      /* Constrain containerEl Position within frameEl. Try not to penetrate a visually-pleasing buffer from\n      frameEl. `frameBuffer` length is based on tipSize and its offset. */\n\n      var frameBuffer = this.props.tipSize + this.props.offset;\n      var hangingBufferLength = dockingEdgeBufferLength * 2 + this.props.tipSize * 2 + frameBuffer;\n      var frameCrossStart = this.frameBounds[axis.cross.start];\n      var frameCrossEnd = this.frameBounds[axis.cross.end];\n      var frameCrossLength = this.frameBounds[axis.cross.size];\n      var frameCrossInnerLength = frameCrossLength - frameBuffer * 2;\n      var frameCrossInnerStart = frameCrossStart + frameBuffer;\n      var frameCrossInnerEnd = frameCrossEnd - frameBuffer;\n      var popoverCrossStart = pos[axis.cross.start];\n      var popoverCrossEnd = pos[axis.cross.end];\n\n      /* If the popover dose not fit into frameCrossLength then just position it to the `frameCrossStart`.\n      popoverCrossLength` will now be forced to overflow into the `Frame` */\n      if (pos.crossLength > frameCrossLength) {\n        log(\"popoverCrossLength does not fit frame.\");\n        pos[axis.cross.start] = 0;\n\n        /* If the `popoverCrossStart` is forced beyond some threshold of `targetCrossLength` then bound\n        it (`popoverCrossStart`). */\n      } else if (tb[axis.cross.end] < hangingBufferLength) {\n        log(\"popoverCrossStart cannot hang any further without losing target.\");\n        pos[axis.cross.start] = tb[axis.cross.end] - hangingBufferLength;\n\n        /* checking if the cross start of the target area is within the frame and it makes sense\n        to try fitting popover into the frame. */\n      } else if (tb[axis.cross.start] > frameCrossInnerEnd) {\n        log(\"popoverCrossStart cannot hang any further without losing target.\");\n        pos[axis.cross.start] = tb[axis.cross.start] - this.size[axis.cross.size];\n\n        /* If the `popoverCrossStart` does not fit within the inner frame (honouring buffers) then\n        just center the popover in the remaining `frameCrossLength`. */\n      } else if (pos.crossLength > frameCrossInnerLength) {\n        log(\"popoverCrossLength does not fit within buffered frame.\");\n        pos[axis.cross.start] = (frameCrossLength - pos.crossLength) / 2;\n      } else if (popoverCrossStart < frameCrossInnerStart) {\n        log(\"popoverCrossStart cannot reverse without exceeding frame.\");\n        pos[axis.cross.start] = frameCrossInnerStart;\n      } else if (popoverCrossEnd > frameCrossInnerEnd) {\n        log(\"popoverCrossEnd cannot travel without exceeding frame.\");\n        pos[axis.cross.start] = pos[axis.cross.start] - (pos[axis.cross.end] - frameCrossInnerEnd);\n      }\n\n      /* So far the link position has been calculated relative to the target. To calculate the absolute\n      position we need to factor the `Frame``s scroll position */\n\n      pos[axis.cross.start] += scrollSize.cross;\n      pos[axis.main.start] += scrollSize.main;\n\n      /* Apply `flow` and `order` styles. This can impact subsequent measurements of height and width\n      of the container. When tip changes orientation position due to changes from/to `row`/`column`\n      width`/`height` will be impacted. Our layout monitoring will catch these cases and automatically\n      recalculate layout. */\n      if (this.containerEl) {\n        this.containerEl.style.flexFlow = zone.flow;\n        this.containerEl.style[jsprefix(\"FlexFlow\")] = this.containerEl.style.flexFlow;\n      }\n      this.bodyEl.style.order = zone.order;\n      this.bodyEl.style[jsprefix(\"Order\")] = this.bodyEl.style.order;\n\n      /* Apply Absolute Positioning. */\n\n      log(\"pos\", pos);\n      if (this.containerEl) {\n        this.containerEl.style.top = pos.y + \"px\";\n        this.containerEl.style.left = pos.x + \"px\";\n      }\n\n      /* Calculate Tip Position */\n\n      var tipCrossPos =\n      /* Get the absolute tipCrossCenter. Tip is positioned relative to containerEl\n      but it aims at targetCenter which is positioned relative to frameEl... we\n      need to cancel the containerEl positioning so as to hit our intended position. */\n      _layout2.default.centerOfBoundsFromBounds(zone.flow, \"cross\", tb, pos) +\n      /* centerOfBounds does not account for scroll so we need to manually add that\n      here. */\n      scrollSize.cross -\n      /* Center tip relative to self. We do not have to calcualte half-of-tip-size since tip-size\n      specifies the length from base to tip which is half of total length already. */\n      this.props.tipSize;\n\n      if (tipCrossPos < dockingEdgeBufferLength) tipCrossPos = dockingEdgeBufferLength;else if (tipCrossPos > pos.crossLength - dockingEdgeBufferLength - this.props.tipSize * 2) {\n        tipCrossPos = pos.crossLength - dockingEdgeBufferLength - this.props.tipSize * 2;\n      }\n\n      this.tipEl.style.transform = flowToTipTranslations[zone.flow] + \"(\" + tipCrossPos + \"px)\";\n      this.tipEl.style[jsprefix(\"Transform\")] = this.tipEl.style.transform;\n    }\n  }, {\n    key: \"measurePopoverSize\",\n    value: function measurePopoverSize() {\n      this.size = _layout2.default.El.calcSize(this.containerEl);\n    }\n  }, {\n    key: \"measureTargetBounds\",\n    value: function measureTargetBounds() {\n      var newTargetBounds = _layout2.default.El.calcBounds(this.targetEl);\n\n      if (this.targetBounds && _layout2.default.equalCoords(this.targetBounds, newTargetBounds)) {\n        return false;\n      }\n\n      this.targetBounds = newTargetBounds;\n      return true;\n    }\n  }, {\n    key: \"open\",\n    value: function open() {\n      if (this.state.exiting) this.animateExitStop();\n      this.setState({ toggle: true, exited: false });\n    }\n  }, {\n    key: \"close\",\n    value: function close() {\n      this.setState({ toggle: false });\n    }\n  }, {\n    key: \"enter\",\n    value: function enter() {\n      if (_platform2.default.isServer) return;\n      log(\"enter!\");\n      this.trackPopover();\n      this.animateEnter();\n    }\n  }, {\n    key: \"exit\",\n    value: function exit() {\n      log(\"exit!\");\n      this.animateExit();\n      this.untrackPopover();\n    }\n  }, {\n    key: \"animateExitStop\",\n    value: function animateExitStop() {\n      clearTimeout(this.exitingAnimationTimer1);\n      clearTimeout(this.exitingAnimationTimer2);\n      this.setState({ exiting: false });\n    }\n  }, {\n    key: \"animateExit\",\n    value: function animateExit() {\n      var _this2 = this;\n\n      this.setState({ exiting: true });\n      this.exitingAnimationTimer2 = setTimeout(function () {\n        setTimeout(function () {\n          if (_this2.containerEl) {\n            _this2.containerEl.style.transform = flowToPopoverTranslations[_this2.zone.flow] + \"(\" + _this2.zone.order * 50 + \"px)\";\n            _this2.containerEl.style.opacity = \"0\";\n          }\n        }, 0);\n      }, 0);\n\n      this.exitingAnimationTimer1 = setTimeout(function () {\n        _this2.setState({ exited: true, exiting: false });\n      }, this.props.enterExitTransitionDurationMs);\n    }\n  }, {\n    key: \"animateEnter\",\n    value: function animateEnter() {\n      /* Prepare `entering` style so that we can then animate it toward `entered`. */\n\n      this.containerEl.style.transform = flowToPopoverTranslations[this.zone.flow] + \"(\" + this.zone.order * 50 + \"px)\";\n      this.containerEl.style[jsprefix(\"Transform\")] = this.containerEl.style.transform;\n      this.containerEl.style.opacity = \"0\";\n\n      /* After initial layout apply transition animations. */\n      /* Hack: http://stackoverflow.com/questions/3485365/how-can-i-force-webkit-to-redraw-repaint-to-propagate-style-changes */\n      this.containerEl.offsetHeight;\n\n      /* If enterExitTransitionDurationMs is falsy, tip animation should be also disabled */\n      if (this.props.enterExitTransitionDurationMs) {\n        this.tipEl.style.transition = \"transform 150ms ease-in\";\n        this.tipEl.style[jsprefix(\"Transition\")] = cssprefix(\"transform\") + \" 150ms ease-in\";\n      }\n      this.containerEl.style.transitionProperty = \"top, left, opacity, transform\";\n      this.containerEl.style.transitionDuration = this.props.enterExitTransitionDurationMs + \"ms\";\n      this.containerEl.style.transitionTimingFunction = \"cubic-bezier(0.230, 1.000, 0.320, 1.000)\";\n      this.containerEl.style.opacity = \"1\";\n      this.containerEl.style.transform = \"translateY(0)\";\n      this.containerEl.style[jsprefix(\"Transform\")] = this.containerEl.style.transform;\n    }\n  }, {\n    key: \"trackPopover\",\n    value: function trackPopover() {\n      var minScrollRefreshIntervalMs = 200;\n      var minResizeRefreshIntervalMs = 200;\n\n      /* Get references to DOM elements. */\n\n      this.bodyEl = this.containerEl.querySelector(\".Popover-body\");\n      this.tipEl = this.containerEl.querySelector(\".Popover-tip\");\n\n      /* Note: frame is hardcoded to window now but we think it will\n      be a nice feature in the future to allow other frames to be used\n      such as local elements that further constrain the popover`s world. */\n\n      this.frameEl = _platform2.default.window;\n      this.hasTracked = true;\n\n      /* Set a general interval for checking if target position changed. There is no way\n      to know this information without polling. */\n      if (this.props.refreshIntervalMs) {\n        this.checkLayoutInterval = setInterval(this.checkTargetReposition, this.props.refreshIntervalMs);\n      }\n\n      /* Watch for boundary changes in all deps, and when one of them changes, recalculate layout.\n      This layout monitoring must be bound immediately because a layout recalculation can recursively\n      cause a change in boundaries. So if we did a one-time force-layout before watching boundaries\n      our final position calculations could be wrong. See comments in resolver function for details\n      about which parts can trigger recursive recalculation. */\n\n      this.onFrameScroll = (0, _lodash2.default)(this.onFrameScroll, minScrollRefreshIntervalMs);\n      this.onFrameResize = (0, _lodash2.default)(this.onFrameResize, minResizeRefreshIntervalMs);\n      this.onPopoverResize = (0, _lodash2.default)(this.onPopoverResize, minResizeRefreshIntervalMs);\n      this.onTargetResize = (0, _lodash2.default)(this.onTargetResize, minResizeRefreshIntervalMs);\n\n      this.frameEl.addEventListener(\"scroll\", this.onFrameScroll);\n      _onResize2.default.on(this.frameEl, this.onFrameResize);\n      _onResize2.default.on(this.containerEl, this.onPopoverResize);\n      _onResize2.default.on(this.targetEl, this.onTargetResize);\n\n      /* Track user actions on the page. Anything that occurs _outside_ the Popover boundaries\n      should close the Popover. */\n\n      _platform2.default.document.addEventListener(\"mousedown\", this.checkForOuterAction);\n      _platform2.default.document.addEventListener(\"touchstart\", this.checkForOuterAction);\n\n      /* Kickstart layout at first boot. */\n\n      this.measurePopoverSize();\n      this.measureFrameBounds();\n      this.measureTargetBounds();\n      this.resolvePopoverLayout();\n    }\n  }, {\n    key: \"untrackPopover\",\n    value: function untrackPopover() {\n      clearInterval(this.checkLayoutInterval);\n      this.frameEl.removeEventListener(\"scroll\", this.onFrameScroll);\n      _onResize2.default.off(this.frameEl, this.onFrameResize);\n      _onResize2.default.off(this.containerEl, this.onPopoverResize);\n      _onResize2.default.off(this.targetEl, this.onTargetResize);\n      _platform2.default.document.removeEventListener(\"mousedown\", this.checkForOuterAction);\n      _platform2.default.document.removeEventListener(\"touchstart\", this.checkForOuterAction);\n      this.hasTracked = false;\n    }\n  }, {\n    key: \"measureFrameBounds\",\n    value: function measureFrameBounds() {\n      this.frameBounds = _layout2.default.El.calcBounds(this.frameEl);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _props = this.props,\n          _props$className = _props.className,\n          className = _props$className === undefined ? \"\" : _props$className,\n          _props$style = _props.style,\n          style = _props$style === undefined ? {} : _props$style,\n          tipSize = _props.tipSize;\n      var standing = this.state.standing;\n\n\n      var popoverProps = {\n        className: \"Popover Popover-\" + standing + \" \" + className,\n        style: _extends({}, coreStyle, style)\n      };\n\n      var popover = this.state.exited ? null : _react2.default.createElement(\n        \"div\",\n        _extends({ ref: this.getContainerNodeRef }, popoverProps),\n        _react2.default.createElement(\"div\", { className: \"Popover-body\", children: this.props.body }),\n        _react2.default.createElement(_tip2.default, { direction: faces[standing], size: tipSize })\n      );\n      return [this.props.children, _platform2.default.isClient && _reactDom2.default.createPortal(popover, this.props.appendTarget)];\n    }\n  }]);\n\n  return Popover;\n}(_react2.default.Component);\n\nPopover.propTypes = {\n  body: _propTypes2.default.node.isRequired,\n  children: _propTypes2.default.element.isRequired,\n  appendTarget: _propTypes2.default.object,\n  className: _propTypes2.default.string,\n  enterExitTransitionDurationMs: _propTypes2.default.number,\n  isOpen: _propTypes2.default.bool,\n  offset: _propTypes2.default.number,\n  place: _propTypes2.default.oneOf(_layout2.default.validTypeValues),\n  preferPlace: _propTypes2.default.oneOf(_layout2.default.validTypeValues),\n  refreshIntervalMs: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.bool]),\n  style: _propTypes2.default.object,\n  tipSize: _propTypes2.default.number,\n  onOuterAction: _propTypes2.default.func\n};\nPopover.defaultProps = {\n  tipSize: 7,\n  preferPlace: null,\n  place: null,\n  offset: 4,\n  isOpen: false,\n  onOuterAction: _utils2.default.noop,\n  enterExitTransitionDurationMs: 500,\n  children: null,\n  refreshIntervalMs: 200,\n  appendTarget: _platform2.default.isClient ? _platform2.default.document.body : null\n};\nexports.default = Popover;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.supportedValue = exports.supportedProperty = exports.prefix = undefined;\n\nvar _prefix = require('./prefix');\n\nvar _prefix2 = _interopRequireDefault(_prefix);\n\nvar _supportedProperty = require('./supported-property');\n\nvar _supportedProperty2 = _interopRequireDefault(_supportedProperty);\n\nvar _supportedValue = require('./supported-value');\n\nvar _supportedValue2 = _interopRequireDefault(_supportedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nexports['default'] = {\n  prefix: _prefix2['default'],\n  supportedProperty: _supportedProperty2['default'],\n  supportedValue: _supportedValue2['default']\n}; /**\n    * CSS Vendor prefix detection and property feature testing.\n    *\n    * @copyright Oleg Slobodskoi 2015\n    * @website https://github.com/jsstyles/css-vendor\n    * @license MIT\n    */\n\nexports.prefix = _prefix2['default'];\nexports.supportedProperty = _supportedProperty2['default'];\nexports.supportedValue = _supportedValue2['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports['default'] = supportedProperty;\n\nvar _isInBrowser = require('is-in-browser');\n\nvar _isInBrowser2 = _interopRequireDefault(_isInBrowser);\n\nvar _prefix = require('./prefix');\n\nvar _prefix2 = _interopRequireDefault(_prefix);\n\nvar _camelize = require('./camelize');\n\nvar _camelize2 = _interopRequireDefault(_camelize);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar el = void 0;\nvar cache = {};\n\nif (_isInBrowser2['default']) {\n  el = document.createElement('p');\n\n  /**\n   * We test every property on vendor prefix requirement.\n   * Once tested, result is cached. It gives us up to 70% perf boost.\n   * http://jsperf.com/element-style-object-access-vs-plain-object\n   *\n   * Prefill cache with known css properties to reduce amount of\n   * properties we need to feature test at runtime.\n   * http://davidwalsh.name/vendor-prefix\n   */\n  var computed = window.getComputedStyle(document.documentElement, '');\n  for (var key in computed) {\n    if (!isNaN(key)) cache[computed[key]] = computed[key];\n  }\n}\n\n/**\n * Test if a property is supported, returns supported property with vendor\n * prefix if required. Returns `false` if not supported.\n *\n * @param {String} prop dash separated\n * @return {String|Boolean}\n * @api public\n */\nfunction supportedProperty(prop) {\n  // For server-side rendering.\n  if (!el) return prop;\n\n  // We have not tested this prop yet, lets do the test.\n  if (cache[prop] != null) return cache[prop];\n\n  // Camelization is required because we can't test using\n  // css syntax for e.g. in FF.\n  // Test if property is supported as it is.\n  if ((0, _camelize2['default'])(prop) in el.style) {\n    cache[prop] = prop;\n  }\n  // Test if property is supported with vendor prefix.\n  else if (_prefix2['default'].js + (0, _camelize2['default'])('-' + prop) in el.style) {\n      cache[prop] = _prefix2['default'].css + prop;\n    } else {\n      cache[prop] = false;\n    }\n\n  return cache[prop];\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports['default'] = camelize;\nvar regExp = /[-\\s]+(.)?/g;\n\n/**\n * Convert dash separated strings to camel cased.\n *\n * @param {String} str\n * @return {String}\n */\nfunction camelize(str) {\n  return str.replace(regExp, toUpper);\n}\n\nfunction toUpper(match, c) {\n  return c ? c.toUpperCase() : '';\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports['default'] = supportedValue;\n\nvar _isInBrowser = require('is-in-browser');\n\nvar _isInBrowser2 = _interopRequireDefault(_isInBrowser);\n\nvar _prefix = require('./prefix');\n\nvar _prefix2 = _interopRequireDefault(_prefix);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar cache = {};\nvar el = void 0;\n\nif (_isInBrowser2['default']) el = document.createElement('p');\n\n/**\n * Returns prefixed value if needed. Returns `false` if value is not supported.\n *\n * @param {String} property\n * @param {String} value\n * @return {String|Boolean}\n * @api public\n */\nfunction supportedValue(property, value) {\n  // For server-side rendering.\n  if (!el) return value;\n\n  // It is a string or a number as a string like '1'.\n  // We want only prefixable values here.\n  if (typeof value !== 'string' || !isNaN(parseInt(value, 10))) return value;\n\n  var cacheKey = property + value;\n\n  if (cache[cacheKey] != null) return cache[cacheKey];\n\n  // IE can even throw an error in some cases, for e.g. style.content = 'bar'\n  try {\n    // Test value as it is.\n    el.style[property] = value;\n  } catch (err) {\n    cache[cacheKey] = false;\n    return false;\n  }\n\n  // Value is supported as it is.\n  if (el.style[property] !== '') {\n    cache[cacheKey] = value;\n  } else {\n    // Test value with vendor prefix.\n    value = _prefix2['default'].css + value;\n\n    // Hardcode test to convert \"flex\" to \"-ms-flexbox\" for IE10.\n    if (value === '-ms-flex') value = '-ms-flexbox';\n\n    el.style[property] = value;\n\n    // Value is supported with vendor prefix.\n    if (el.style[property] !== '') cache[cacheKey] = value;\n  }\n\n  if (!cache[cacheKey]) cache[cacheKey] = false;\n\n  // Reset style value.\n  el.style[property] = '';\n\n  return cache[cacheKey];\n}","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n               && 'undefined' != typeof chrome.storage\n                  ? chrome.storage.local\n                  : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n  'lightseagreen',\n  'forestgreen',\n  'goldenrod',\n  'dodgerblue',\n  'darkorchid',\n  'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n  // NB: In an Electron preload script, document will be defined but not fully\n  // initialized. Since we know we're in Chrome, we'll just detect this case\n  // explicitly\n  if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n    return true;\n  }\n\n  // is webkit? http://stackoverflow.com/a/16459606/376773\n  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n  return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n    // is firebug? http://stackoverflow.com/a/398120/376773\n    (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n    // is firefox >= v31?\n    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n    // double check webkit in userAgent just in case we are in a worker\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n  try {\n    return JSON.stringify(v);\n  } catch (err) {\n    return '[UnexpectedJSONParseError]: ' + err.message;\n  }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n  var useColors = this.useColors;\n\n  args[0] = (useColors ? '%c' : '')\n    + this.namespace\n    + (useColors ? ' %c' : ' ')\n    + args[0]\n    + (useColors ? '%c ' : ' ')\n    + '+' + exports.humanize(this.diff);\n\n  if (!useColors) return;\n\n  var c = 'color: ' + this.color;\n  args.splice(1, 0, c, 'color: inherit')\n\n  // the final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-zA-Z%]/g, function(match) {\n    if ('%%' === match) return;\n    index++;\n    if ('%c' === match) {\n      // we only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n\n  args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n  // this hackery is required for IE8/9, where\n  // the `console.log` function doesn't have 'apply'\n  return 'object' === typeof console\n    && console.log\n    && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n  try {\n    if (null == namespaces) {\n      exports.storage.removeItem('debug');\n    } else {\n      exports.storage.debug = namespaces;\n    }\n  } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n  var r;\n  try {\n    r = exports.storage.debug;\n  } catch(e) {}\n\n  // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n  if (!r && typeof process !== 'undefined' && 'env' in process) {\n    r = process.env.DEBUG;\n  }\n\n  return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n  try {\n    return window.localStorage;\n  } catch (e) {}\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n  var hash = 0, i;\n\n  for (i in namespace) {\n    hash  = ((hash << 5) - hash) + namespace.charCodeAt(i);\n    hash |= 0; // Convert to 32bit integer\n  }\n\n  return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n  function debug() {\n    // disabled?\n    if (!debug.enabled) return;\n\n    var self = debug;\n\n    // set `diff` timestamp\n    var curr = +new Date();\n    var ms = curr - (prevTime || curr);\n    self.diff = ms;\n    self.prev = prevTime;\n    self.curr = curr;\n    prevTime = curr;\n\n    // turn the `arguments` into a proper Array\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n\n    args[0] = exports.coerce(args[0]);\n\n    if ('string' !== typeof args[0]) {\n      // anything else let's inspect with %O\n      args.unshift('%O');\n    }\n\n    // apply any `formatters` transformations\n    var index = 0;\n    args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n      // if we encounter an escaped % then don't increase the array index\n      if (match === '%%') return match;\n      index++;\n      var formatter = exports.formatters[format];\n      if ('function' === typeof formatter) {\n        var val = args[index];\n        match = formatter.call(self, val);\n\n        // now we need to remove `args[index]` since it's inlined in the `format`\n        args.splice(index, 1);\n        index--;\n      }\n      return match;\n    });\n\n    // apply env-specific formatting (colors, etc.)\n    exports.formatArgs.call(self, args);\n\n    var logFn = debug.log || exports.log || console.log.bind(console);\n    logFn.apply(self, args);\n  }\n\n  debug.namespace = namespace;\n  debug.enabled = exports.enabled(namespace);\n  debug.useColors = exports.useColors();\n  debug.color = selectColor(namespace);\n\n  // env-specific initialization logic for debug instances\n  if ('function' === typeof exports.init) {\n    exports.init(debug);\n  }\n\n  return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n  exports.save(namespaces);\n\n  exports.names = [];\n  exports.skips = [];\n\n  var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n  var len = split.length;\n\n  for (var i = 0; i < len; i++) {\n    if (!split[i]) continue; // ignore empty strings\n    namespaces = split[i].replace(/\\*/g, '.*?');\n    if (namespaces[0] === '-') {\n      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n    } else {\n      exports.names.push(new RegExp('^' + namespaces + '$'));\n    }\n  }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n  exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n  var i, len;\n  for (i = 0, len = exports.skips.length; i < len; i++) {\n    if (exports.skips[i].test(name)) {\n      return false;\n    }\n  }\n  for (i = 0, len = exports.names.length; i < len; i++) {\n    if (exports.names[i].test(name)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n  if (val instanceof Error) return val.stack || val.message;\n  return val;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isNaN(val) === false) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  if (ms >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (ms >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (ms >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (ms >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  return plural(ms, d, 'day') ||\n    plural(ms, h, 'hour') ||\n    plural(ms, m, 'minute') ||\n    plural(ms, s, 'second') ||\n    ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n  if (ms < n) {\n    return;\n  }\n  if (ms < n * 1.5) {\n    return Math.floor(ms / n) + ' ' + name;\n  }\n  return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","/**\n * lodash 3.0.4 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar debounce = require('lodash.debounce');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed invocations. Provide an options object to indicate\n * that `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. Subsequent calls to the throttled function return the\n * result of the last `func` call.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the throttled function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=true] Specify invoking on the leading\n *  edge of the timeout.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n *  edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // avoid excessively updating the position while scrolling\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n *   'trailing': false\n * }));\n *\n * // cancel a trailing throttled call\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (options === false) {\n    leading = false;\n  } else if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n  // Avoid a V8 JIT bug in Chrome 19-20.\n  // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = throttle;\n","/**\n * lodash 3.1.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\nvar getNative = require('lodash._getnative');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeNow = getNative(Date, 'now');\n\n/**\n * Gets the number of milliseconds that have elapsed since the Unix epoch\n * (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @category Date\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => logs the number of milliseconds it took for the deferred function to be invoked\n */\nvar now = nativeNow || function() {\n  return new Date().getTime();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed invocations. Provide an options object to indicate that `func`\n * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n * Subsequent calls to the debounced function return the result of the last\n * `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify invoking on the leading\n *  edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n *  delayed before it is invoked.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n *  edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // ensure `batchLog` is invoked once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', _.debounce(batchLog, 250, {\n *   'maxWait': 1000\n * }));\n *\n * // cancel a debounced call\n * var todoChanges = _.debounce(batchLog, 1000);\n * Object.observe(models.todo, todoChanges);\n *\n * Object.observe(models, function(changes) {\n *   if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n *     todoChanges.cancel();\n *   }\n * }, ['delete']);\n *\n * // ...at some point `models.todo` is changed\n * models.todo.completed = true;\n *\n * // ...before 1 second has passed `models.todo` is deleted\n * // which cancels the debounced `todoChanges` call\n * delete models.todo;\n */\nfunction debounce(func, wait, options) {\n  var args,\n      maxTimeoutId,\n      result,\n      stamp,\n      thisArg,\n      timeoutId,\n      trailingCall,\n      lastCalled = 0,\n      maxWait = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = wait < 0 ? 0 : (+wait || 0);\n  if (options === true) {\n    var leading = true;\n    trailing = false;\n  } else if (isObject(options)) {\n    leading = !!options.leading;\n    maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function cancel() {\n    if (timeoutId) {\n      clearTimeout(timeoutId);\n    }\n    if (maxTimeoutId) {\n      clearTimeout(maxTimeoutId);\n    }\n    lastCalled = 0;\n    maxTimeoutId = timeoutId = trailingCall = undefined;\n  }\n\n  function complete(isCalled, id) {\n    if (id) {\n      clearTimeout(id);\n    }\n    maxTimeoutId = timeoutId = trailingCall = undefined;\n    if (isCalled) {\n      lastCalled = now();\n      result = func.apply(thisArg, args);\n      if (!timeoutId && !maxTimeoutId) {\n        args = thisArg = undefined;\n      }\n    }\n  }\n\n  function delayed() {\n    var remaining = wait - (now() - stamp);\n    if (remaining <= 0 || remaining > wait) {\n      complete(trailingCall, maxTimeoutId);\n    } else {\n      timeoutId = setTimeout(delayed, remaining);\n    }\n  }\n\n  function maxDelayed() {\n    complete(trailing, timeoutId);\n  }\n\n  function debounced() {\n    args = arguments;\n    stamp = now();\n    thisArg = this;\n    trailingCall = trailing && (timeoutId || !leading);\n\n    if (maxWait === false) {\n      var leadingCall = leading && !timeoutId;\n    } else {\n      if (!maxTimeoutId && !leading) {\n        lastCalled = stamp;\n      }\n      var remaining = maxWait - (stamp - lastCalled),\n          isCalled = remaining <= 0 || remaining > maxWait;\n\n      if (isCalled) {\n        if (maxTimeoutId) {\n          maxTimeoutId = clearTimeout(maxTimeoutId);\n        }\n        lastCalled = stamp;\n        result = func.apply(thisArg, args);\n      }\n      else if (!maxTimeoutId) {\n        maxTimeoutId = setTimeout(maxDelayed, remaining);\n      }\n    }\n    if (isCalled && timeoutId) {\n      timeoutId = clearTimeout(timeoutId);\n    }\n    else if (!timeoutId && wait !== maxWait) {\n      timeoutId = setTimeout(delayed, wait);\n    }\n    if (leadingCall) {\n      isCalled = true;\n      result = func.apply(thisArg, args);\n    }\n    if (isCalled && !timeoutId && !maxTimeoutId) {\n      args = thisArg = undefined;\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n  // Avoid a V8 JIT bug in Chrome 19-20.\n  // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = debounce;\n","/**\n * lodash 3.9.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = object == null ? undefined : object[key];\n  return isNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in older versions of Chrome and Safari which return 'function' for regexes\n  // and Safari 8 equivalents which return 'object' for typed array constructors.\n  return isObject(value) && objToString.call(value) == funcTag;\n}\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n  // Avoid a V8 JIT bug in Chrome 19-20.\n  // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n  if (value == null) {\n    return false;\n  }\n  if (isFunction(value)) {\n    return reIsNative.test(fnToString.call(value));\n  }\n  return isObjectLike(value) && reIsHostCtor.test(value);\n}\n\nmodule.exports = getNative;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.equalCoords = exports.doesFitWithin = exports.centerOfBoundsFromBounds = exports.centerOfBounds = exports.centerOfSize = exports.axes = exports.pickZone = exports.place = exports.calcRelPos = exports.validTypeValues = exports.types = exports.El = undefined;\n\nvar _platform = require(\"./platform\");\n\nvar _utils = require(\"./utils\");\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/* Axes System\n\nThis allows us to at-will work in a different orientation\nwithout having to manually keep track of knowing if we should be using\nx or y positions. */\n\nvar axes = {\n  row: {},\n  column: {}\n};\n\naxes.row.main = {\n  start: \"x\",\n  end: \"x2\",\n  size: \"w\"\n};\naxes.row.cross = {\n  start: \"y\",\n  end: \"y2\",\n  size: \"h\"\n};\naxes.column.main = axes.row.cross;\naxes.column.cross = axes.row.main;\n\nvar types = [{ name: \"side\", values: [\"start\", \"end\"] }, { name: \"standing\", values: [\"above\", \"right\", \"below\", \"left\"] }, { name: \"flow\", values: [\"column\", \"row\"] }];\n\nvar validTypeValues = types.reduce(function (xs, _ref) {\n  var values = _ref.values;\n  return xs.concat(values);\n}, []);\n\nvar centerOfSize = function centerOfSize(flow, axis, size) {\n  return size[axes[flow][axis].size] / 2;\n};\n\nvar centerOfBounds = function centerOfBounds(flow, axis, bounds) {\n  return bounds[axes[flow][axis].start] + bounds[axes[flow][axis].size] / 2;\n};\n\nvar centerOfBoundsFromBounds = function centerOfBoundsFromBounds(flow, axis, boundsTo, boundsFrom) {\n  return centerOfBounds(flow, axis, boundsTo) - boundsFrom[axes[flow][axis].start];\n};\n\nvar place = function place(flow, axis, align, bounds, size) {\n  var axisProps = axes[flow][axis];\n  return align === \"center\" ? centerOfBounds(flow, axis, bounds) - centerOfSize(flow, axis, size) : align === \"end\" ? bounds[axisProps.end] : align === \"start\" ? /* DOM rendering unfolds leftward. Therefore if the slave is positioned before\n                                                                                                                                                                  the master then the slave`s position must in addition be pulled back\n                                                                                                                                                                  by its [the slave`s] own length. */\n  bounds[axisProps.start] - size[axisProps.size] : null;\n};\n\n/* Element Layout Queries */\n\nvar El = {};\n\nEl.calcBounds = function (el) {\n  if (el === _platform.window) {\n    return {\n      x: 0,\n      y: 0,\n      x2: el.innerWidth,\n      y2: el.innerHeight,\n      w: el.innerWidth,\n      h: el.innerHeight\n    };\n  }\n\n  var b = el.getBoundingClientRect();\n\n  return {\n    x: b.left,\n    y: b.top,\n    x2: b.right,\n    y2: b.bottom,\n    w: b.right - b.left,\n    h: b.bottom - b.top\n  };\n};\n\nEl.calcSize = function (el) {\n  return el === _platform.window ? { w: el.innerWidth, h: el.innerHeight } : { w: el.offsetWidth, h: el.offsetHeight };\n};\n\nEl.calcScrollSize = function (el) {\n  return el === _platform.window ? {\n    w: el.scrollX || el.pageXOffset,\n    h: el.scrollY || el.pageYOffset\n  } : { w: el.scrollLeft, h: el.scrollTop\n\n    /* Misc Utilities */\n\n  };\n};var getPreferenceType = function getPreferenceType(preference) {\n  return types.reduce(function (found, type) {\n    return found ? found : type.values.indexOf(preference) !== -1 ? type.name : null;\n  }, null);\n};\n\n/* Dimension Fit Checks */\n\nvar fitWithinChecker = function fitWithinChecker(dimension) {\n  return function (domainSize, itemSize) {\n    return domainSize[dimension] >= itemSize[dimension];\n  };\n};\n\nvar doesWidthFitWithin = fitWithinChecker(\"w\");\nvar doesHeightFitWithin = fitWithinChecker(\"h\");\n\nvar doesFitWithin = function doesFitWithin(domainSize, itemSize) {\n  return doesWidthFitWithin(domainSize, itemSize) && doesHeightFitWithin(domainSize, itemSize);\n};\n\n/* Errors */\n\nvar createPreferenceError = function createPreferenceError(givenValue) {\n  return new Error(\"The given layout placement of \\\"\" + givenValue + \"\\\" is not a valid choice. Valid choices are: \" + validTypeValues.join(\" | \") + \".\");\n};\n\n/* Algorithm for picking the best fitting zone for popover. The current technique will loop through all zones picking the last one that fits.\nIn the case that none fit we should pick the least-not-fitting zone. */\n\nvar pickZone = function pickZone(opts, frameBounds, targetBounds, size) {\n  var t = targetBounds;\n  var f = frameBounds;\n  var zones = [{\n    side: \"start\",\n    standing: \"above\",\n    flow: \"column\",\n    order: -1,\n    w: f.x2,\n    h: t.y\n  }, {\n    side: \"end\",\n    standing: \"right\",\n    flow: \"row\",\n    order: 1,\n    w: f.x2 - t.x2,\n    h: f.y2\n  }, {\n    side: \"end\",\n    standing: \"below\",\n    flow: \"column\",\n    order: 1,\n    w: f.x2,\n    h: f.y2 - t.y2\n  }, {\n    side: \"start\",\n    standing: \"left\",\n    flow: \"row\",\n    order: -1,\n    w: t.x,\n    h: f.y2\n  }];\n\n  /* Order the zones by the amount of popup that would be cut out if that zone is used.\n     The first one in the array is the one that cuts the least amount.\n      const area = size.w * size.h  // Popup area is constant and it does not change the order\n  */\n  zones.forEach(function (z) {\n    // TODO Update to satisfy linter\n    // eslint-disable-next-line no-param-reassign\n    z.cutOff =\n    /* area */-Math.max(0, Math.min(z.w, size.w)) * Math.max(0, Math.min(z.h, size.h));\n  });\n  zones.sort(function (a, b) {\n    return a.cutOff - b.cutOff;\n  });\n\n  var availZones = zones.filter(function (zone) {\n    return doesFitWithin(zone, size);\n  });\n\n  /* If a place is required pick it from the available zones if possible. */\n\n  if (opts.place) {\n    var type = getPreferenceType(opts.place);\n    if (!type) throw createPreferenceError(opts.place);\n    var finder = function finder(z) {\n      return z[type] === opts.place;\n    };\n    return (0, _utils.find)(finder, availZones) || (0, _utils.find)(finder, zones);\n  }\n\n  /* If the preferred side is part of the available zones, use that otherwise\n  pick the largest available zone. If there are no available zones, pick the\n  largest zone. */\n\n  if (opts.preferPlace) {\n    var preferenceType = getPreferenceType(opts.preferPlace);\n    if (!preferenceType) throw createPreferenceError(opts.preferPlace);\n\n    // Try to fit first in zone where the pop up fit completely\n    var preferredAvailZones = availZones.filter(function (zone) {\n      return zone[preferenceType] === opts.preferPlace;\n    });\n    if (preferredAvailZones.length) return preferredAvailZones[0];\n\n    // If there are not areas where the pop up fit completely, it uses the preferred ones\n    // in order from the one the fit better\n    var preferredZones = zones.filter(function (zone) {\n      return zone[preferenceType] === opts.preferPlace;\n    });\n    if (!availZones.length && preferredZones.length) return preferredZones[0];\n  }\n\n  // Return a zone that fit completely or the one that fit the best\n  return availZones.length ? availZones[0] : zones[0];\n};\n\n/* TODO Document this. */\n\nvar calcRelPos = function calcRelPos(zone, masterBounds, slaveSize) {\n  var _ref2;\n\n  var _axes$zone$flow = axes[zone.flow],\n      main = _axes$zone$flow.main,\n      cross = _axes$zone$flow.cross;\n  /* TODO: The slave is hard-coded to align cross-center with master. */\n\n  var crossAlign = \"center\";\n  var mainStart = place(zone.flow, \"main\", zone.side, masterBounds, slaveSize);\n  var mainSize = slaveSize[main.size];\n  var crossStart = place(zone.flow, \"cross\", crossAlign, masterBounds, slaveSize);\n  var crossSize = slaveSize[cross.size];\n\n  return _ref2 = {}, _defineProperty(_ref2, main.start, mainStart), _defineProperty(_ref2, \"mainLength\", mainSize), _defineProperty(_ref2, main.end, mainStart + mainSize), _defineProperty(_ref2, cross.start, crossStart), _defineProperty(_ref2, \"crossLength\", crossSize), _defineProperty(_ref2, cross.end, crossStart + crossSize), _ref2;\n};\n\nexports.default = {\n  El: El,\n  types: types,\n  validTypeValues: validTypeValues,\n  calcRelPos: calcRelPos,\n  place: place,\n  pickZone: pickZone,\n  axes: axes,\n  centerOfSize: centerOfSize,\n  centerOfBounds: centerOfBounds,\n  centerOfBoundsFromBounds: centerOfBoundsFromBounds,\n  doesFitWithin: doesFitWithin,\n  equalCoords: _utils.equalRecords\n};\nexports.El = El;\nexports.types = types;\nexports.validTypeValues = validTypeValues;\nexports.calcRelPos = calcRelPos;\nexports.place = place;\nexports.pickZone = pickZone;\nexports.axes = axes;\nexports.centerOfSize = centerOfSize;\nexports.centerOfBounds = centerOfBounds;\nexports.centerOfBoundsFromBounds = centerOfBoundsFromBounds;\nexports.doesFitWithin = doesFitWithin;\nexports.equalCoords = _utils.equalRecords;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.removeEventListener = exports.addEventListener = exports.off = exports.on = undefined;\n\nvar _platform = require(\"./platform\");\n\nvar _utils = require(\"./utils\");\n\n/* eslint no-param-reassign: 0 */\n\nvar requestAnimationFrame = _platform.isServer ? _utils.noop : _platform.window.requestAnimationFrame || _platform.window.mozRequestAnimationFrame || _platform.window.webkitRequestAnimationFrame || function (fn) {\n  _platform.window.setTimeout(fn, 20);\n};\n\nvar cancelAnimationFrame = _platform.isServer ? _utils.noop : _platform.window.cancelAnimationFrame || _platform.window.mozCancelAnimationFrame || _platform.window.webkitCancelAnimationFrame || _platform.window.clearTimeout;\n\nvar isIE = _platform.isServer ? false : navigator.userAgent.match(/Trident/);\n\nvar namespace = \"__resizeDetector__\";\n\nvar uninitialize = function uninitialize(el) {\n  el[namespace].destroy();\n  el[namespace] = undefined;\n};\n\nvar createElementHack = function createElementHack() {\n  var el = document.createElement(\"object\");\n  el.className = \"resize-sensor\";\n  el.setAttribute(\"style\", \"display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;\");\n  el.setAttribute(\"class\", \"resize-sensor\");\n  el.setAttribute(\"tabindex\", \"-1\");\n  el.type = \"text/html\";\n  el.data = \"about:blank\";\n  return el;\n};\n\nvar initialize = function initialize(el) {\n  var detector = el[namespace] = {};\n  detector.listeners = [];\n\n  var onResize = function onResize(e) {\n    /* Keep in mind e.target could be el OR objEl. In this current implementation we don't seem to need to know this but its important\n    to not forget e.g. in some future refactoring scenario. */\n    if (detector.resizeRAF) cancelAnimationFrame(detector.resizeRAF);\n    detector.resizeRAF = requestAnimationFrame(function () {\n      detector.listeners.forEach(function (fn) {\n        fn(e);\n      });\n    });\n  };\n\n  if (isIE) {\n    /* We do not support ie8 and below (or ie9 in compat mode).\n    Therefore there is no presence of `attachEvent` here. */\n    el.addEventListener(\"onresize\", onResize);\n    detector.destroy = function () {\n      el.removeEventListener(\"onresize\", onResize);\n    };\n  } else {\n    if (getComputedStyle(el).position === \"static\") {\n      detector.elWasStaticPosition = true;\n      el.style.position = \"relative\";\n    }\n    var objEl = createElementHack();\n    objEl.onload = function () /* event */{\n      this.contentDocument.defaultView.addEventListener(\"resize\", onResize);\n    };\n    detector.destroy = function () {\n      if (detector.elWasStaticPosition) el.style.position = \"\";\n      if (el.contains(objEl)) {\n        // Event handlers will be automatically removed.\n        // http://stackoverflow.com/questions/12528049/if-a-dom-element-is-removed-are-its-listeners-also-removed-from-memory\n        el.removeChild(objEl);\n      }\n    };\n\n    el.appendChild(objEl);\n  }\n};\n\nvar on = function on(el, fn) {\n  /* Window object natively publishes resize events. We handle it as a\n  special case here so that users do not have to think about two APIs. */\n\n  if (el === _platform.window) {\n    _platform.window.addEventListener(\"resize\", fn);\n    return;\n  }\n\n  /* Not caching namespace read here beacuse not guaranteed that its available. */\n\n  if (!el[namespace]) initialize(el);\n  el[namespace].listeners.push(fn);\n};\n\nvar off = function off(el, fn) {\n  if (el === _platform.window) {\n    _platform.window.removeEventListener(\"resize\", fn);\n    return;\n  }\n  var detector = el[namespace];\n  if (!detector) return;\n  var i = detector.listeners.indexOf(fn);\n  if (i !== -1) detector.listeners.splice(i, 1);\n  if (!detector.listeners.length) uninitialize(el);\n};\n\nexports.default = {\n  on: on,\n  off: off,\n  addEventListener: on,\n  removeEventListener: off\n};\nexports.on = on;\nexports.off = off;\nexports.addEventListener = on;\nexports.removeEventListener = off;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Tip = function Tip(props) {\n  var direction = props.direction;\n\n  var size = props.size || 24;\n  var isPortrait = direction === \"up\" || direction === \"down\";\n  var mainLength = size;\n  var crossLength = size * 2;\n  var points = direction === \"up\" ? \"0,\" + mainLength + \" \" + mainLength + \",0, \" + crossLength + \",\" + mainLength : direction === \"down\" ? \"0,0 \" + mainLength + \",\" + mainLength + \", \" + crossLength + \",0\" : direction === \"left\" ? mainLength + \",0 0,\" + mainLength + \", \" + mainLength + \",\" + crossLength : \"0,0 \" + mainLength + \",\" + mainLength + \", 0,\" + crossLength;\n  var svgProps = {\n    className: \"Popover-tip\",\n    width: isPortrait ? crossLength : mainLength,\n    height: isPortrait ? mainLength : crossLength\n  };\n\n  return _react2.default.createElement(\n    \"svg\",\n    svgProps,\n    _react2.default.createElement(\"polygon\", { className: \"Popover-tipShape\", points: points })\n  );\n};\n\nexports.default = Tip;","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".color-button_color-button_2-mXT {\\n    height: 2rem;\\n    width: 3rem;\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n}\\n\\n.color-button_color-button-swatch_6Xhs3 {\\n    position: relative;\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    cursor: pointer;\\n    -webkit-flex-basis: 2rem;\\n        -ms-flex-preferred-size: 2rem;\\n            flex-basis: 2rem;\\n    -webkit-flex-shrink: 0;\\n        -ms-flex-negative: 0;\\n            flex-shrink: 0;\\n    height: 100%;\\n    border: 1px solid rgba(0, 0, 0, 0.25);\\n}\\n\\n[dir=\\\"ltr\\\"] .color-button_color-button-swatch_6Xhs3 {\\n    border-top-left-radius: 4px;\\n    border-bottom-left-radius: 4px;\\n}\\n\\n[dir=\\\"rtl\\\"] .color-button_color-button-swatch_6Xhs3 {\\n    border-top-right-radius: 4px;\\n    border-bottom-right-radius: 4px;\\n}\\n\\n.color-button_color-button-arrow_1b654 {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-user-select: none;\\n       -moz-user-select: none;\\n        -ms-user-select: none;\\n            user-select: none;\\n    cursor: pointer;\\n    -webkit-flex-basis: 1rem;\\n        -ms-flex-preferred-size: 1rem;\\n            flex-basis: 1rem;\\n    -webkit-flex-shrink: 0;\\n        -ms-flex-negative: 0;\\n            flex-shrink: 0;\\n    height: 100%;\\n\\n    border: 1px solid rgba(0, 0, 0, 0.25);\\n\\n    -webkit-box-align: center;\\n\\n    -webkit-align-items: center;\\n\\n        -ms-flex-align: center;\\n\\n            align-items: center;\\n    -webkit-box-pack: center;\\n    -webkit-justify-content: center;\\n        -ms-flex-pack: center;\\n            justify-content: center;\\n    color: #575e75;\\n    font-size: 0.75rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .color-button_color-button-arrow_1b654 {\\n    border-top-right-radius: 4px;\\n    border-bottom-right-radius: 4px;\\n    border-left: none;\\n}\\n\\n[dir=\\\"rtl\\\"] .color-button_color-button-arrow_1b654 {\\n    border-top-left-radius: 4px;\\n    border-bottom-left-radius: 4px;\\n    border-right: none;\\n}\\n\\n.color-button_swatch-icon_2gc40 {\\n    width: 1.75rem;\\n    margin: auto;\\n    /* Make sure it appears above the outline box */\\n    z-index: 2;\\n}\\n\\n.color-button_outline-swatch_2ifeG:after {\\n    content: \\\"\\\";\\n    position: absolute;\\n    top: calc(0.5rem);\\n    left: calc(0.5rem);\\n    width: 0.75rem;\\n    height: 0.75rem;\\n    background: white;\\n    border: 1px solid rgba(0, 0, 0, 0.25);\\n    /* Make sure it appears below the transparent icon */\\n    z-index: 1;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"color-button\": \"color-button_color-button_2-mXT\",\n\t\"colorButton\": \"color-button_color-button_2-mXT\",\n\t\"color-button-swatch\": \"color-button_color-button-swatch_6Xhs3\",\n\t\"colorButtonSwatch\": \"color-button_color-button-swatch_6Xhs3\",\n\t\"color-button-arrow\": \"color-button_color-button-arrow_1b654\",\n\t\"colorButtonArrow\": \"color-button_color-button-arrow_1b654\",\n\t\"swatch-icon\": \"color-button_swatch-icon_2gc40\",\n\t\"swatchIcon\": \"color-button_swatch-icon_2gc40\",\n\t\"outline-swatch\": \"color-button_outline-swatch_2ifeG\",\n\t\"outlineSwatch\": \"color-button_outline-swatch_2ifeG\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".slider_container_2U0n6 {\\n    margin: 8px;\\n    height: 22px;\\n    width: 150px;\\n    position: relative;\\n    outline: none;\\n    border-radius: 11px;\\n    margin-bottom: 20px;\\n}\\n\\n.slider_last_3coMi {\\n    margin-bottom: 4px;\\n}\\n\\n.slider_handle_2M_mA {\\n    left: 100px;\\n    width: 26px;\\n    height: 26px;\\n    margin-top: -2px;\\n    position: absolute;\\n    background-color: white;\\n    border-radius: 100%;\\n    -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.15);\\n            box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.15);\\n    -ms-touch-action: none;\\n        touch-action: none;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"container\": \"slider_container_2U0n6\",\n\t\"last\": \"slider_last_3coMi\",\n\t\"handle\": \"slider_handle_2M_mA\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.labeled-icon-button_mod-edit-field_Z3eav {\\n    background: none;\\n    border: none;\\n    display: inline-block;\\n    padding: .25rem .325rem;\\n    outline: none;\\n    border-radius: 0.25rem;\\n    min-width: 3rem;\\n    font-size: 0.85rem;\\n    text-align: center;\\n}\\n\\n.labeled-icon-button_edit-field-icon_1BGdr {\\n    width: 1.5rem;\\n    height: 1.5rem;\\n    -webkit-box-flex: 1;\\n    -webkit-flex-grow: 1;\\n        -ms-flex-positive: 1;\\n            flex-grow: 1;\\n    vertical-align: middle;\\n}\\n\\n.labeled-icon-button_edit-field-title_32vCQ {\\n    display: block;\\n    margin-top: .125rem;\\n    font-size: .625rem;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"mod-edit-field\": \"labeled-icon-button_mod-edit-field_Z3eav\",\n\t\"modEditField\": \"labeled-icon-button_mod-edit-field_Z3eav\",\n\t\"edit-field-icon\": \"labeled-icon-button_edit-field-icon_1BGdr\",\n\t\"editFieldIcon\": \"labeled-icon-button_edit-field-icon_1BGdr\",\n\t\"edit-field-title\": \"labeled-icon-button_edit-field-title_32vCQ\",\n\t\"editFieldTitle\": \"labeled-icon-button_edit-field-title_32vCQ\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n/* Popover styles */\\n\\n.Popover-body {\\n    background: white;\\n    border: 1px solid #ddd;\\n    padding: 4px;\\n    border-radius: 4px;\\n    padding: 4px;\\n    -webkit-box-shadow: 0px 0px 8px 1px rgba(0, 0, 0, .3);\\n            box-shadow: 0px 0px 8px 1px rgba(0, 0, 0, .3);\\n}\\n\\n.Popover-tipShape {\\n    fill: white;\\n    stroke: #ddd;\\n}\\n\\n.color-picker_clickable_1qAhZ {\\n    cursor: pointer;\\n}\\n\\n.color-picker_swatch-row_3ygSb {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    -webkit-box-pack: justify;\\n    -webkit-justify-content: space-between;\\n        -ms-flex-pack: justify;\\n            justify-content: space-between;\\n}\\n\\n.color-picker_row-header_23YDh {\\n    font-family: \\\"Helvetica Neue\\\", Helvetica, sans-serif;\\n    font-size: 0.65rem;\\n    color: #575E75;\\n    margin: 8px;\\n}\\n\\n[dir=\\\"ltr\\\"] .color-picker_label-readout_efqFT {\\n    margin-left: 10px;\\n}\\n\\n[dir=\\\"rtl\\\"] .color-picker_label-readout_efqFT {\\n    margin-right: 10px;\\n}\\n\\n.color-picker_label-name_3kaOv {\\n    font-weight: bold;\\n}\\n\\n.color-picker_divider_3Hq7P {\\n    border-top: 1px solid #ddd;\\n    margin: 8px;\\n}\\n\\n.color-picker_swap-button_knDOR {\\n    margin-left: 8px;\\n    margin-right: 8px;\\n}\\n\\n.color-picker_swatches_3P15b {\\n    margin: 8px;\\n}\\n\\n.color-picker_swatch_3zRbd {\\n    width: 1.5rem;\\n    height: 1.5rem;\\n    border: 1px solid #ddd;\\n    border-radius: 4px;\\n    -webkit-box-sizing: content-box;\\n            box-sizing: content-box;\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\\n.color-picker_large-swatch-icon_2EdzJ {\\n    width: 1.75rem;\\n    margin: auto;\\n}\\n\\n.color-picker_large-swatch_2tprq {\\n    width: 2rem;\\n    height: 2rem;\\n}\\n\\n.color-picker_active-swatch_2U6UP {\\n    border: 1px solid #855CD6;\\n    -webkit-box-shadow: 0px 0px 0px 3px hsla(260, 60%, 60%, 0.35);\\n            box-shadow: 0px 0px 0px 3px hsla(260, 60%, 60%, 0.35);\\n}\\n\\n.color-picker_swatch-icon_1GWhH {\\n    width: 1.5rem;\\n    height: 1.5rem;\\n}\\n\\n.color-picker_inactive-gradient_3LMcb {\\n    -webkit-filter: saturate(0%);\\n            filter: saturate(0%);\\n}\\n\\n.color-picker_gradient-picker-row_2ZOSs {\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    -webkit-box-pack: center;\\n    -webkit-justify-content: center;\\n        -ms-flex-pack: center;\\n            justify-content: center;\\n    margin: 8px;\\n    -webkit-user-select: none;\\n       -moz-user-select: none;\\n        -ms-user-select: none;\\n            user-select: none;\\n}\\n\\n[dir=\\\"ltr\\\"] .color-picker_gradient-picker-row_2ZOSs > img + img {\\n    margin-left: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .color-picker_gradient-picker-row_2ZOSs > img + img {\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .color-picker_gradient-swatches-row_1laEb {\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: reverse;\\n    -webkit-flex-direction: row-reverse;\\n        -ms-flex-direction: row-reverse;\\n            flex-direction: row-reverse;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"clickable\": \"color-picker_clickable_1qAhZ\",\n\t\"swatch-row\": \"color-picker_swatch-row_3ygSb\",\n\t\"swatchRow\": \"color-picker_swatch-row_3ygSb\",\n\t\"row-header\": \"color-picker_row-header_23YDh\",\n\t\"rowHeader\": \"color-picker_row-header_23YDh\",\n\t\"label-readout\": \"color-picker_label-readout_efqFT\",\n\t\"labelReadout\": \"color-picker_label-readout_efqFT\",\n\t\"label-name\": \"color-picker_label-name_3kaOv\",\n\t\"labelName\": \"color-picker_label-name_3kaOv\",\n\t\"divider\": \"color-picker_divider_3Hq7P\",\n\t\"swap-button\": \"color-picker_swap-button_knDOR\",\n\t\"swapButton\": \"color-picker_swap-button_knDOR\",\n\t\"swatches\": \"color-picker_swatches_3P15b\",\n\t\"swatch\": \"color-picker_swatch_3zRbd\",\n\t\"large-swatch-icon\": \"color-picker_large-swatch-icon_2EdzJ\",\n\t\"largeSwatchIcon\": \"color-picker_large-swatch-icon_2EdzJ\",\n\t\"large-swatch\": \"color-picker_large-swatch_2tprq\",\n\t\"largeSwatch\": \"color-picker_large-swatch_2tprq\",\n\t\"active-swatch\": \"color-picker_active-swatch_2U6UP\",\n\t\"activeSwatch\": \"color-picker_active-swatch_2U6UP\",\n\t\"swatch-icon\": \"color-picker_swatch-icon_1GWhH\",\n\t\"swatchIcon\": \"color-picker_swatch-icon_1GWhH\",\n\t\"inactive-gradient\": \"color-picker_inactive-gradient_3LMcb\",\n\t\"inactiveGradient\": \"color-picker_inactive-gradient_3LMcb\",\n\t\"gradient-picker-row\": \"color-picker_gradient-picker-row_2ZOSs\",\n\t\"gradientPickerRow\": \"color-picker_gradient-picker-row_2ZOSs\",\n\t\"gradient-swatches-row\": \"color-picker_gradient-swatches-row_1laEb\",\n\t\"gradientSwatchesRow\": \"color-picker_gradient-swatches-row_1laEb\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.input-group_input-group_3FzNB {\\n    display: -webkit-inline-box;\\n    display: -webkit-inline-flex;\\n    display: -ms-inline-flexbox;\\n    display: inline-flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\\n[dir=\\\"ltr\\\"] .input-group_input-group_3FzNB + .input-group_input-group_3FzNB {\\n    margin-left: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .input-group_input-group_3FzNB + .input-group_input-group_3FzNB {\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n.input-group_disabled_3fp6_ {\\n    opacity: 0.3;\\n    /* Prevent any user actions */\\n    pointer-events: none;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"input-group\": \"input-group_input-group_3FzNB\",\n\t\"inputGroup\": \"input-group_input-group_3FzNB\",\n\t\"disabled\": \"input-group_disabled_3fp6_\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n.label_input-group_2vTky {\\n    display: -webkit-inline-box;\\n    display: -webkit-inline-flex;\\n    display: -ms-inline-flexbox;\\n    display: inline-flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\\n[dir=\\\"ltr\\\"] .label_input-group_2vTky + .label_input-group_2vTky {\\n    margin-left: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .label_input-group_2vTky + .label_input-group_2vTky {\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n.label_disabled_1HlGv {\\n    opacity: 0.3;\\n    /* Prevent any user actions */\\n    pointer-events: none;\\n}\\n\\n.label_input-label_3KjCa, .label_input-label-secondary_3QDNV {\\n    font-size: 0.625rem;\\n    -webkit-user-select: none;\\n       -moz-user-select: none;\\n        -ms-user-select: none;\\n            user-select: none;\\n    cursor: default;\\n}\\n\\n[dir=\\\"ltr\\\"] .label_input-label_3KjCa, [dir=\\\"ltr\\\"] .label_input-label-secondary_3QDNV{\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .label_input-label_3KjCa, [dir=\\\"ltr\\\"] .label_input-label-secondary_3QDNV{\\n    margin-left: calc(2 * .25rem);\\n}\\n\\n.label_input-label_3KjCa {\\n    font-weight: bold;\\n}\\n\\n@media only screen and (max-width: 1256px) {\\n    .label_input-group_2vTky {\\n        display: -webkit-box;\\n        display: -webkit-flex;\\n        display: -ms-flexbox;\\n        display: flex;\\n        -webkit-box-orient: vertical;\\n        -webkit-box-direction: normal;\\n        -webkit-flex-direction: column;\\n            -ms-flex-direction: column;\\n                flex-direction: column;\\n        -webkit-box-align: start;\\n        -webkit-align-items: flex-start;\\n            -ms-flex-align: start;\\n                align-items: flex-start;\\n        margin-top: -1rem; /* To align with the non-labeled inputs */\\n    }\\n\\n    .label_input-label_3KjCa {\\n        font-weight: normal;\\n        margin-bottom: 0.25rem;\\n    }\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"input-group\": \"label_input-group_2vTky\",\n\t\"inputGroup\": \"label_input-group_2vTky\",\n\t\"disabled\": \"label_disabled_1HlGv\",\n\t\"input-label\": \"label_input-label_3KjCa\",\n\t\"inputLabel\": \"label_input-label_3KjCa\",\n\t\"input-label-secondary\": \"label_input-label-secondary_3QDNV\",\n\t\"inputLabelSecondary\": \"label_input-label-secondary_3QDNV\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".loupe_eye-dropper_39EHg {\\n    position: absolute;\\n    border-radius: 100%;\\n    border: 1px solid #222;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"eye-dropper\": \"loupe_eye-dropper_39EHg\",\n\t\"eyeDropper\": \"loupe_eye-dropper_39EHg\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n.dropdown_dropdown_2cQyf {\\n    border: 1px solid #E9EEF2;\\n    border-radius: 5px;\\n    overflow: visible;\\n    min-width: 3.5rem;\\n    color: #855CD6;\\n    padding: .5rem;\\n}\\n\\n.dropdown_mod-open_1QOjG {\\n    background-color: #E9EEF2;\\n}\\n\\n.dropdown_dropdown-icon_13LnP {\\n    width: .5rem;\\n    height: .5rem;\\n    vertical-align: middle;\\n    padding-bottom: .2rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .dropdown_dropdown-icon_13LnP {\\n    margin-left: .5rem;\\n}\\n\\n[dir=\\\"rtl\\\"] .dropdown_dropdown-icon_13LnP {\\n    margin-right: .5rem;\\n}\\n\\n.dropdown_mod-caret-up_1v809 {\\n    -webkit-transform: rotate(180deg);\\n        -ms-transform: rotate(180deg);\\n            transform: rotate(180deg);\\n    padding-bottom: 0;\\n    padding-top: .2rem;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"dropdown\": \"dropdown_dropdown_2cQyf\",\n\t\"mod-open\": \"dropdown_mod-open_1QOjG\",\n\t\"modOpen\": \"dropdown_mod-open_1QOjG\",\n\t\"dropdown-icon\": \"dropdown_dropdown-icon_13LnP\",\n\t\"dropdownIcon\": \"dropdown_dropdown-icon_13LnP\",\n\t\"mod-caret-up\": \"dropdown_mod-caret-up_1v809\",\n\t\"modCaretUp\": \"dropdown_mod-caret-up_1v809\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* NOTE:\\nEdited to add input-range-small\\n*/\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n.input_input-form_l9eYg {\\n    height: 2rem;\\n    padding: 0 0.75rem;\\n\\n    font-family: \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif;\\n    font-size: 0.75rem;\\n    font-weight: bold;\\n    color: #575e75;\\n\\n    border-width: 1px;\\n    border-style: solid;\\n    border-color: #E9EEF2;\\n    border-radius: 2rem;\\n\\n    outline: none;\\n    cursor: text;\\n    -webkit-transition: 0.25s ease-out;\\n    transition: 0.25s ease-out; /* @todo: standardize with var */\\n    -webkit-box-shadow: none;\\n            box-shadow: none;\\n\\n    /*\\n        For truncating overflowing text gracefully\\n        Min-width is for a bug: https://css-tricks.com/flexbox-truncated-text\\n        @todo: move this out into a mixin or a helper component\\n    */\\n    overflow: hidden;\\n    text-overflow: ellipsis;\\n    white-space: nowrap;\\n    min-width: 0;\\n}\\n\\n.input_input-form_l9eYg:focus {\\n    border-color: #855CD6;\\n    -webkit-box-shadow: 0 0 0 .25rem hsla(260, 60%, 60%, 0.35);\\n            box-shadow: 0 0 0 .25rem hsla(260, 60%, 60%, 0.35);\\n}\\n\\n.input_input-small_2qj1C {\\n    width: 3rem;\\n    text-align: center;\\n}\\n\\n.input_input-small-range_2GQzZ {\\n    width: 4rem;\\n    text-align: center;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"input-form\": \"input_input-form_l9eYg\",\n\t\"inputForm\": \"input_input-form_l9eYg\",\n\t\"input-small\": \"input_input-small_2qj1C\",\n\t\"inputSmall\": \"input_input-small_2qj1C\",\n\t\"input-small-range\": \"input_input-small-range_2GQzZ\",\n\t\"inputSmallRange\": \"input_input-small-range_2GQzZ\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.fixed-tools_row_2PVw6 {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\\n.fixed-tools_costume-input_3ax5t {\\n    width: 8rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .fixed-tools_mod-dashed-border_1AyX1 {\\n    border-right: 1px dashed #D9D9D9;\\n    padding-right: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_mod-dashed-border_1AyX1 {\\n    border-left: 1px dashed #D9D9D9;\\n    padding-left: calc(2 * .25rem);\\n}\\n\\n.fixed-tools_mod-unselect_1Xf-j {\\n    -webkit-user-select: none;\\n       -moz-user-select: none;\\n        -ms-user-select: none;\\n            user-select: none;\\n}\\n\\n.fixed-tools_button-group-button_2DTEM {\\n    display: inline-block;\\n    border: 1px solid #D9D9D9;\\n    border-radius: 0;\\n    padding: .35rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .fixed-tools_button-group-button_2DTEM {\\n    border-left: none;\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_button-group-button_2DTEM {\\n    border-right: none;\\n}\\n\\n[dir=\\\"ltr\\\"] .fixed-tools_button-group-button_2DTEM:last-of-type {\\n    border-top-right-radius: 0.25rem;\\n    border-bottom-right-radius: 0.25rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .fixed-tools_button-group-button_2DTEM:first-of-type {\\n    border-left: 1px solid #D9D9D9;\\n    border-top-left-radius: 0.25rem;\\n    border-bottom-left-radius: 0.25rem;\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_button-group-button_2DTEM:last-of-type {\\n    border-top-left-radius: 0.25rem;\\n    border-bottom-left-radius: 0.25rem;\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_button-group-button_2DTEM:first-of-type {\\n    border-right: 1px solid #D9D9D9;\\n    border-top-right-radius: 0.25rem;\\n    border-bottom-right-radius: 0.25rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .fixed-tools_button-group-button_2DTEM.fixed-tools_mod-start-border_1OTDn {\\n    border-left: 1px solid #D9D9D9;\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_button-group-button_2DTEM.fixed-tools_mod-start-border_1OTDn {\\n    border-right: 1px solid #D9D9D9;\\n}\\n\\n[dir=\\\"ltr\\\"] .fixed-tools_button-group-button_2DTEM.fixed-tools_mod-no-end-border_20uuv {\\n    border-right: none;\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_button-group-button_2DTEM.fixed-tools_mod-no-end-border_20uuv {\\n    border-left: none;\\n}\\n\\n.fixed-tools_button-group-button-icon_3shFH {\\n    width: 1.25rem;\\n    height: 1.25rem;\\n    vertical-align: middle;\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_button-group-button-icon_3shFH {\\n    -webkit-transform: scaleX(-1);\\n        -ms-transform: scaleX(-1);\\n            transform: scaleX(-1);\\n}\\n\\n.fixed-tools_mod-context-menu_JvI5y {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: vertical;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: column;\\n        -ms-flex-direction: column;\\n            flex-direction: column;\\n}\\n\\n.fixed-tools_mod-top-divider_oxfsG {\\n    border-top: 1px solid #D9D9D9;\\n}\\n\\n.fixed-tools_mod-menu-item_1eQQZ {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    margin: 0 -.25rem;\\n    min-width: 6.25rem;\\n    padding: calc(3 * .25rem);\\n    white-space: nowrap;\\n    cursor: pointer;\\n    -webkit-transition: 0.1s ease;\\n    transition: 0.1s ease;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n    font-family: \\\"Helvetica Neue\\\", Helvetica, sans-serif;\\n}\\n\\n.fixed-tools_mod-disabled_UJyp0 {\\n    cursor: auto;\\n}\\n\\n.fixed-tools_mod-menu-item_1eQQZ:hover {\\n    background: hsla(260, 60%, 60%, 0.35);\\n}\\n\\n.fixed-tools_mod-disabled_UJyp0:hover {\\n    background-color: transparent;\\n}\\n\\n.fixed-tools_menu-item-icon_2DtJ1 {\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .fixed-tools_menu-item-icon_2DtJ1 {\\n    margin-right: 0;\\n    margin-left: calc(2 * .25rem);\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"row\": \"fixed-tools_row_2PVw6\",\n\t\"costume-input\": \"fixed-tools_costume-input_3ax5t\",\n\t\"costumeInput\": \"fixed-tools_costume-input_3ax5t\",\n\t\"mod-dashed-border\": \"fixed-tools_mod-dashed-border_1AyX1\",\n\t\"modDashedBorder\": \"fixed-tools_mod-dashed-border_1AyX1\",\n\t\"mod-unselect\": \"fixed-tools_mod-unselect_1Xf-j\",\n\t\"modUnselect\": \"fixed-tools_mod-unselect_1Xf-j\",\n\t\"button-group-button\": \"fixed-tools_button-group-button_2DTEM\",\n\t\"buttonGroupButton\": \"fixed-tools_button-group-button_2DTEM\",\n\t\"mod-start-border\": \"fixed-tools_mod-start-border_1OTDn\",\n\t\"modStartBorder\": \"fixed-tools_mod-start-border_1OTDn\",\n\t\"mod-no-end-border\": \"fixed-tools_mod-no-end-border_20uuv\",\n\t\"modNoEndBorder\": \"fixed-tools_mod-no-end-border_20uuv\",\n\t\"button-group-button-icon\": \"fixed-tools_button-group-button-icon_3shFH\",\n\t\"buttonGroupButtonIcon\": \"fixed-tools_button-group-button-icon_3shFH\",\n\t\"mod-context-menu\": \"fixed-tools_mod-context-menu_JvI5y\",\n\t\"modContextMenu\": \"fixed-tools_mod-context-menu_JvI5y\",\n\t\"mod-top-divider\": \"fixed-tools_mod-top-divider_oxfsG\",\n\t\"modTopDivider\": \"fixed-tools_mod-top-divider_oxfsG\",\n\t\"mod-menu-item\": \"fixed-tools_mod-menu-item_1eQQZ\",\n\t\"modMenuItem\": \"fixed-tools_mod-menu-item_1eQQZ\",\n\t\"mod-disabled\": \"fixed-tools_mod-disabled_UJyp0\",\n\t\"modDisabled\": \"fixed-tools_mod-disabled_UJyp0\",\n\t\"menu-item-icon\": \"fixed-tools_menu-item-icon_2DtJ1\",\n\t\"menuItemIcon\": \"fixed-tools_menu-item-icon_2DtJ1\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.font-dropdown_mod-menu-item_hwOca {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    margin: 0 -.25rem;\\n    min-width: 6.25rem;\\n    padding: calc(2 * .25rem);\\n    padding-left: calc(3 * .25rem);\\n    padding-right: calc(3 * .25rem);\\n    white-space: nowrap;\\n    width: 8.5rem;\\n    cursor: pointer;\\n    -webkit-transition: 0.1s ease;\\n    transition: 0.1s ease;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\\n.font-dropdown_mod-menu-item_hwOca:hover {\\n    background: #855CD6;\\n    color: white;\\n}\\n\\n.font-dropdown_mod-context-menu_3llFm {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: vertical;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: column;\\n        -ms-flex-direction: column;\\n            flex-direction: column;\\n}\\n\\n.font-dropdown_mod-unselect_130OF {\\n    -webkit-user-select: none;\\n       -moz-user-select: none;\\n        -ms-user-select: none;\\n            user-select: none;\\n}\\n\\n.font-dropdown_displayed-font-name_3cU-U {\\n    font-size: .8rem;\\n}\\n\\n.font-dropdown_font-dropdown_3vjc6 {\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n    color: #575e75;\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    font-size: 1rem;\\n    -webkit-box-pack: justify;\\n    -webkit-justify-content: space-between;\\n        -ms-flex-pack: justify;\\n            justify-content: space-between;\\n    width: 8.5rem;\\n    height: 2rem;\\n}\\n\\n.font-dropdown_serif_tMSQM {\\n    font-family: 'Serif';\\n}\\n\\n.font-dropdown_sans-serif_24kX9 {\\n    font-family: 'Sans Serif';\\n}\\n\\n.font-dropdown_serif_tMSQM {\\n    font-family: 'Serif';\\n}\\n\\n.font-dropdown_handwriting_Y7s5d {\\n    font-family: 'Handwriting';\\n}\\n\\n.font-dropdown_marker_3AmLD {\\n    font-family: 'Marker';\\n}\\n\\n.font-dropdown_curly_1UQYh {\\n    font-family: 'Curly';\\n}\\n\\n.font-dropdown_pixel_3aRC6 {\\n    font-family: 'Pixel';\\n}\\n\\n.font-dropdown_chinese_zV1Hj {\\n    font-family: \\\"Microsoft YaHei\\\", \\\"微软雅黑\\\", STXihei, \\\"华文细黑\\\";\\n}\\n\\n.font-dropdown_japanese_2SlYs {\\n    font-family: \\\"ヒラギノ角ゴ Pro W3\\\", \\\"Hiragino Kaku Gothic Pro\\\", Osaka, \\\"メイリオ\\\", Meiryo, \\\"MS Pゴシック\\\", \\\"MS PGothic\\\";\\n}\\n\\n.font-dropdown_korean_1Fx37 {\\n    font-family: \\\"Malgun Gothic\\\";\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"mod-menu-item\": \"font-dropdown_mod-menu-item_hwOca\",\n\t\"modMenuItem\": \"font-dropdown_mod-menu-item_hwOca\",\n\t\"mod-context-menu\": \"font-dropdown_mod-context-menu_3llFm\",\n\t\"modContextMenu\": \"font-dropdown_mod-context-menu_3llFm\",\n\t\"mod-unselect\": \"font-dropdown_mod-unselect_130OF\",\n\t\"modUnselect\": \"font-dropdown_mod-unselect_130OF\",\n\t\"displayed-font-name\": \"font-dropdown_displayed-font-name_3cU-U\",\n\t\"displayedFontName\": \"font-dropdown_displayed-font-name_3cU-U\",\n\t\"font-dropdown\": \"font-dropdown_font-dropdown_3vjc6\",\n\t\"fontDropdown\": \"font-dropdown_font-dropdown_3vjc6\",\n\t\"serif\": \"font-dropdown_serif_tMSQM\",\n\t\"sans-serif\": \"font-dropdown_sans-serif_24kX9\",\n\t\"sansSerif\": \"font-dropdown_sans-serif_24kX9\",\n\t\"handwriting\": \"font-dropdown_handwriting_Y7s5d\",\n\t\"marker\": \"font-dropdown_marker_3AmLD\",\n\t\"curly\": \"font-dropdown_curly_1UQYh\",\n\t\"pixel\": \"font-dropdown_pixel_3aRC6\",\n\t\"chinese\": \"font-dropdown_chinese_zV1Hj\",\n\t\"japanese\": \"font-dropdown_japanese_2SlYs\",\n\t\"korean\": \"font-dropdown_korean_1Fx37\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.mode-tools_mode-tools_UREem {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    min-height: 3rem;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\\n.mode-tools_mode-tools-icon_3yoZ2 {\\n    margin-right: calc(2 * .25rem);\\n    width: 2rem;\\n    height: 2rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .mode-tools_mod-dashed-border_3Bmy_ {\\n    border-right: 1px dashed #D9D9D9;\\n    padding-right: calc(3 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .mode-tools_mod-dashed-border_3Bmy_ {\\n    border-left: 1px dashed #D9D9D9;\\n    padding-left: calc(3 * .25rem);\\n}\\n\\n.mode-tools_mod-labeled-icon-height_kRA3W {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    height: 2.85rem; /* for the second row so the dashed borders are equal in size */\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"mode-tools\": \"mode-tools_mode-tools_UREem\",\n\t\"modeTools\": \"mode-tools_mode-tools_UREem\",\n\t\"mode-tools-icon\": \"mode-tools_mode-tools-icon_3yoZ2\",\n\t\"modeToolsIcon\": \"mode-tools_mode-tools-icon_3yoZ2\",\n\t\"mod-dashed-border\": \"mode-tools_mod-dashed-border_3Bmy_\",\n\t\"modDashedBorder\": \"mode-tools_mod-dashed-border_3Bmy_\",\n\t\"mod-labeled-icon-height\": \"mode-tools_mod-labeled-icon-height_kRA3W\",\n\t\"modLabeledIconHeight\": \"mode-tools_mod-labeled-icon-height_kRA3W\"\n};\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* 35% transparent version of looks-secondary */\\n\\n/* DO NOT EDIT\\n@todo This file is copied from GUI and should be pulled out into a shared library.\\nSee https://github.com/LLK/scratch-paint/issues/13 */\\n\\n/* ACTUALLY, THIS IS EDITED ;)\\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD A VARIABLE FOR THE SMALLEST\\nGRID UNITS.\\n\\nALSO EDITED ON 11/13/2017 TO ADD IN CONTANTS FOR LAYOUT FROM `layout-contents.js`*/\\n\\n/* layout contants from `layout-constants.js`, minus 1px */\\n\\n.paint-editor_editor-container_3ajxi {\\n    width: 100%;\\n    height: 100%;\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: vertical;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: column;\\n        -ms-flex-direction: column;\\n            flex-direction: column;\\n    padding: calc(3 * .25rem);\\n}\\n\\n.paint-editor_row_1psvV {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    -webkit-box-align: center;\\n    -webkit-align-items: center;\\n        -ms-flex-align: center;\\n            align-items: center;\\n}\\n\\n.paint-editor_editor-container-top_23HHq {\\n    border-bottom: 1px dashed #D9D9D9;\\n    padding-bottom: calc(2 * .25rem);\\n}\\n\\n.paint-editor_top-align-row_2Ky-F {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    height: 100%;\\n    padding-top: calc(5 * .25rem);\\n    min-width: 524px;\\n}\\n\\n.paint-editor_row_1psvV + .paint-editor_row_1psvV {\\n    margin-top: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"ltr\\\"] .paint-editor_mod-dashed-border_1xeKo {\\n    border-right: 1px dashed #D9D9D9;\\n    padding-right: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .paint-editor_mod-dashed-border_1xeKo {\\n    border-left: 1px dashed #D9D9D9;\\n    padding-left: calc(2 * .25rem);\\n}\\n\\n.paint-editor_mod-labeled-icon-height_3hBCl {\\n    height: 2.85rem; /* for the second row so the dashed borders are equal in size */\\n}\\n\\n.paint-editor_button-group-button_1gq5A {\\n    display: inline-block;\\n    border: 1px solid #D9D9D9;\\n    border-radius: 0;\\n    padding: .35rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .paint-editor_button-group-button_1gq5A {\\n    border-left: none;\\n}\\n\\n[dir=\\\"rtl\\\"] .paint-editor_button-group-button_1gq5A {\\n    border-right: none;\\n}\\n\\n[dir=\\\"ltr\\\"] .paint-editor_button-group-button_1gq5A:last-of-type {\\n    border-top-right-radius: 0.25rem;\\n    border-bottom-right-radius: 0.25rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .paint-editor_button-group-button_1gq5A:first-of-type {\\n    border-left: 1px solid #D9D9D9;\\n    border-top-left-radius: 0.25rem;\\n    border-bottom-left-radius: 0.25rem;\\n}\\n\\n[dir=\\\"rtl\\\"] .paint-editor_button-group-button_1gq5A:last-of-type {\\n    border-top-left-radius: 0.25rem;\\n    border-bottom-left-radius: 0.25rem;\\n}\\n\\n[dir=\\\"rtl\\\"] .paint-editor_button-group-button_1gq5A:first-of-type {\\n    border-right: 1px solid #D9D9D9;\\n    border-top-right-radius: 0.25rem;\\n    border-bottom-right-radius: 0.25rem;\\n}\\n\\n[dir=\\\"ltr\\\"] .paint-editor_button-group-button_1gq5A.paint-editor_mod-start-border_jVIRO {\\n    border-left: 1px solid #D9D9D9;\\n}\\n\\n[dir=\\\"rtl\\\"] .paint-editor_button-group-button_1gq5A.paint-editor_mod-start-border_jVIRO {\\n    border-right: 1px solid #D9D9D9;\\n}\\n\\n[dir=\\\"ltr\\\"].paint-editor_button-group-button_1gq5A.paint-editor_mod-no-end-border_XiRoc {\\n    border-right: none;\\n}\\n\\n[dir=\\\"rtl\\\"].paint-editor_button-group-button_1gq5A.paint-editor_mod-no-end-border_XiRoc {\\n    border-left: none;\\n}\\n\\n.paint-editor_button-group-button-icon_3BPxO {\\n    width: 1.25rem;\\n    height: 1.25rem;\\n    vertical-align: middle;\\n}\\n\\n.paint-editor_mod-mode-tools_1IXSj {\\n    margin-left: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"ltr\\\"] .paint-editor_mod-margin-after_1OgHf {\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .paint-editor_mod-margin-after_1OgHf {\\n    margin-left: calc(2 * .25rem);\\n}\\n\\n.paint-editor_controls-container_3HDxz {\\n    width: 100%;\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: vertical;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-flow: column;\\n        -ms-flex-flow: column;\\n            flex-flow: column;\\n    -webkit-box-flex: 1;\\n    -webkit-flex-grow: 1;\\n        -ms-flex-positive: 1;\\n            flex-grow: 1;\\n    margin-left: calc(2 * .25rem);\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n.paint-editor_canvas-container_2rN98 {\\n    width: 100%;\\n    -webkit-box-flex: 1;\\n    -webkit-flex-grow: 1;\\n        -ms-flex-positive: 1;\\n            flex-grow: 1;\\n    min-width: 402px; /* Leave room for the border */\\n    -webkit-box-sizing: content-box;\\n            box-sizing: content-box;\\n    border: 1px solid #e8edf1;\\n    border-radius: .25rem;\\n    position: relative;\\n    overflow: visible;\\n}\\n\\n.paint-editor_mode-selector_1edhd {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    max-width: 7.5rem;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: normal;\\n    -webkit-flex-direction: row;\\n        -ms-flex-direction: row;\\n            flex-direction: row;\\n    -webkit-flex-wrap: wrap;\\n        -ms-flex-wrap: wrap;\\n            flex-wrap: wrap;\\n    -webkit-box-align: start;\\n    -webkit-align-items: flex-start;\\n        -ms-flex-align: start;\\n            align-items: flex-start;\\n    -webkit-align-content: flex-start;\\n        -ms-flex-line-pack: start;\\n            align-content: flex-start;\\n    -webkit-box-pack: justify;\\n    -webkit-justify-content: space-between;\\n        -ms-flex-pack: justify;\\n            justify-content: space-between;\\n}\\n\\n.paint-editor_zoom-controls_3Qe-- {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    -webkit-box-orient: horizontal;\\n    -webkit-box-direction: reverse;\\n    -webkit-flex-direction: row-reverse;\\n        -ms-flex-direction: row-reverse;\\n            flex-direction: row-reverse;\\n}\\n\\n.paint-editor_color-picker-wrapper_1IC0W {\\n    position: absolute;\\n    top: 0;\\n    left: 0;\\n    width: 100%;\\n    height: 100%;\\n    pointer-events: none;\\n}\\n\\n.paint-editor_canvas-controls_e2K-q {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    height: 36px;\\n    margin-top: .25rem;\\n    -webkit-box-pack: justify;\\n    -webkit-justify-content: space-between;\\n        -ms-flex-pack: justify;\\n            justify-content: space-between;\\n}\\n\\n.paint-editor_bitmap-button_GsX3L {\\n    display: -webkit-box;\\n    display: -webkit-flex;\\n    display: -ms-flexbox;\\n    display: flex;\\n    border-radius: 5px;\\n    background-color: #855CD6;\\n    padding: calc(2 * .25rem);\\n    line-height: 1.5rem;\\n    font-size: calc(3 * .25rem);\\n    font-weight: bold;\\n    color: white;\\n    -webkit-box-pack: center;\\n    -webkit-justify-content: center;\\n        -ms-flex-pack: center;\\n            justify-content: center;\\n}\\n\\n[dir=\\\"ltr\\\"] .paint-editor_bitmap-button-icon_wPoPh {\\n    margin-right: calc(2 * .25rem);\\n}\\n\\n[dir=\\\"rtl\\\"] .paint-editor_bitmap-button-icon_wPoPh {\\n    margin-left: calc(2 * .25rem);\\n}\\n\\n@media only screen and (max-width: 1256px) {\\n    .paint-editor_editor-container_3ajxi {\\n        padding: calc(3 * .25rem) .25rem;\\n    }\\n\\n    .paint-editor_mode-selector_1edhd {\\n        -webkit-box-orient: vertical;\\n        -webkit-box-direction: normal;\\n        -webkit-flex-direction: column;\\n            -ms-flex-direction: column;\\n                flex-direction: column;\\n        -webkit-box-pack: start;\\n        -webkit-justify-content: flex-start;\\n            -ms-flex-pack: start;\\n                justify-content: flex-start;\\n    }\\n\\n    .paint-editor_controls-container_3HDxz {\\n        margin-right: .25rem;\\n        margin-left: .25rem;\\n    }\\n}\\n\\n.paint-editor_text-area_3VRLj {\\n    background: transparent;\\n    border: none;\\n    display: none;\\n    margin: 0px;\\n    opacity: .8;\\n    outline: none;\\n    overflow: hidden;\\n    padding: 0px;\\n    position: absolute;\\n    resize: none;\\n    -webkit-text-fill-color: transparent;\\n    text-fill-color: transparent;\\n}\\n\\n.paint-editor_button-text_2sm18 {\\n    width: 100%; /* Fixes button text wrapping in Edge */\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"editor-container\": \"paint-editor_editor-container_3ajxi\",\n\t\"editorContainer\": \"paint-editor_editor-container_3ajxi\",\n\t\"row\": \"paint-editor_row_1psvV\",\n\t\"editor-container-top\": \"paint-editor_editor-container-top_23HHq\",\n\t\"editorContainerTop\": \"paint-editor_editor-container-top_23HHq\",\n\t\"top-align-row\": \"paint-editor_top-align-row_2Ky-F\",\n\t\"topAlignRow\": \"paint-editor_top-align-row_2Ky-F\",\n\t\"mod-dashed-border\": \"paint-editor_mod-dashed-border_1xeKo\",\n\t\"modDashedBorder\": \"paint-editor_mod-dashed-border_1xeKo\",\n\t\"mod-labeled-icon-height\": \"paint-editor_mod-labeled-icon-height_3hBCl\",\n\t\"modLabeledIconHeight\": \"paint-editor_mod-labeled-icon-height_3hBCl\",\n\t\"button-group-button\": \"paint-editor_button-group-button_1gq5A\",\n\t\"buttonGroupButton\": \"paint-editor_button-group-button_1gq5A\",\n\t\"mod-start-border\": \"paint-editor_mod-start-border_jVIRO\",\n\t\"modStartBorder\": \"paint-editor_mod-start-border_jVIRO\",\n\t\"mod-no-end-border\": \"paint-editor_mod-no-end-border_XiRoc\",\n\t\"modNoEndBorder\": \"paint-editor_mod-no-end-border_XiRoc\",\n\t\"button-group-button-icon\": \"paint-editor_button-group-button-icon_3BPxO\",\n\t\"buttonGroupButtonIcon\": \"paint-editor_button-group-button-icon_3BPxO\",\n\t\"mod-mode-tools\": \"paint-editor_mod-mode-tools_1IXSj\",\n\t\"modModeTools\": \"paint-editor_mod-mode-tools_1IXSj\",\n\t\"mod-margin-after\": \"paint-editor_mod-margin-after_1OgHf\",\n\t\"modMarginAfter\": \"paint-editor_mod-margin-after_1OgHf\",\n\t\"controls-container\": \"paint-editor_controls-container_3HDxz\",\n\t\"controlsContainer\": \"paint-editor_controls-container_3HDxz\",\n\t\"canvas-container\": \"paint-editor_canvas-container_2rN98\",\n\t\"canvasContainer\": \"paint-editor_canvas-container_2rN98\",\n\t\"mode-selector\": \"paint-editor_mode-selector_1edhd\",\n\t\"modeSelector\": \"paint-editor_mode-selector_1edhd\",\n\t\"zoom-controls\": \"paint-editor_zoom-controls_3Qe--\",\n\t\"zoomControls\": \"paint-editor_zoom-controls_3Qe--\",\n\t\"color-picker-wrapper\": \"paint-editor_color-picker-wrapper_1IC0W\",\n\t\"colorPickerWrapper\": \"paint-editor_color-picker-wrapper_1IC0W\",\n\t\"canvas-controls\": \"paint-editor_canvas-controls_e2K-q\",\n\t\"canvasControls\": \"paint-editor_canvas-controls_e2K-q\",\n\t\"bitmap-button\": \"paint-editor_bitmap-button_GsX3L\",\n\t\"bitmapButton\": \"paint-editor_bitmap-button_GsX3L\",\n\t\"bitmap-button-icon\": \"paint-editor_bitmap-button-icon_wPoPh\",\n\t\"bitmapButtonIcon\": \"paint-editor_bitmap-button-icon_wPoPh\",\n\t\"text-area\": \"paint-editor_text-area_3VRLj\",\n\t\"textArea\": \"paint-editor_text-area_3VRLj\",\n\t\"button-text\": \"paint-editor_button-text_2sm18\",\n\t\"buttonText\": \"paint-editor_button-text_2sm18\"\n};\nmodule.exports = exports;\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction 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}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _reactRedux = require(\"react-redux\");\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _IntlProvider = _interopRequireDefault(require(\"./IntlProvider\"));\nvar Provider = function Provider(_ref) {\n  var store = _ref.store,\n    children = _ref.children;\n  return /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {\n    store: store\n  }, /*#__PURE__*/_react.default.createElement(_IntlProvider.default, null, children));\n};\nProvider.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  children: _propTypes.default.element.isRequired\n} : {};\nvar _default = exports.default = Provider;","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\\nbody {\\n    font-family: \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif;\\n    margin: 0px;\\n}\\n\\nbody, html, .playground_wrapper_27Lh0 {\\n\\theight: 100%\\n}\\n\\n.playground_playgroundContainer_3CQoG{\\n\\theight: 90%;\\n\\twidth: 90%;\\n\\tmargin: auto;\\n}\\n\\n#playground_fileInput_fFns4 {\\n\\tdisplay: none;\\n}\\n\\n.playground_playgroundButton_hZeTH {\\n\\tmargin: 4px;\\n}\\n\", \"\"]);\n// Exports\nexports.locals = {\n\t\"wrapper\": \"playground_wrapper_27Lh0\",\n\t\"playgroundContainer\": \"playground_playgroundContainer_3CQoG\",\n\t\"fileInput\": \"playground_fileInput_fFns4\",\n\t\"playgroundButton\": \"playground_playgroundButton_hZeTH\"\n};\nmodule.exports = exports;\n","// Synchronously load TTF fonts.\n// First, have Webpack load their data as Base 64 strings.\nlet FONTS;\n\nconst getFonts = function () {\n    if (FONTS) return FONTS;\n    /* eslint-disable global-require */\n    FONTS = {\n        'Sans Serif': require('base64-loader!./NotoSans-Medium.ttf'),\n        'Serif': require('base64-loader!./SourceSerifPro-Regular.otf'),\n        'Handwriting': require('base64-loader!./handlee-regular.ttf'),\n        'Marker': require('base64-loader!./Knewave.ttf'),\n        'Curly': require('base64-loader!./Griffy-Regular.ttf'),\n        'Pixel': require('base64-loader!./Grand9K-Pixel.ttf'),\n        'Scratch': require('base64-loader!./Scratch.ttf')\n    };\n    /* eslint-enable global-require */\n\n    // For each Base 64 string,\n    // 1. Replace each with a usable @font-face tag that points to a Data URI.\n    // 2. Inject the font into a style on `document.body`, so measurements\n    //    can be accurately taken in SvgRenderer._transformMeasurements.\n    for (const fontName in FONTS) {\n        const fontData = FONTS[fontName];\n        FONTS[fontName] = '@font-face {' +\n            `font-family: \"${fontName}\";src: url(\"data:application/x-font-ttf;charset=utf-8;base64,${fontData}\");}`;\n    }\n\n    if (!document.getElementById('scratch-font-styles')) {\n        const documentStyleTag = document.createElement('style');\n        documentStyleTag.id = 'scratch-font-styles';\n        for (const fontName in FONTS) {\n            documentStyleTag.textContent += FONTS[fontName];\n        }\n        document.body.insertBefore(documentStyleTag, document.body.firstChild);\n    }\n\n    return FONTS;\n};\n\nmodule.exports = getFonts;\n","module.exports = \"AAEAAAASAQAABAAgR0RFRvDX3ecAAAEsAAAFwEdQT1MvEF4NAAAG7AAA6sZHU1VCRDfqagAA8bQAABaAT1MvMmx0h2AAAQg0AAAAYFRURkG4URjDAAbmAAAAAf9jbWFwwp/+5AABCJQAAAouY3Z0IH+0EkYABtYcAAABdGZwZ206KI58AAbXkAAADW1nYXNwAAAAEAAG1hQAAAAIZ2x5Zi0YCicAARLEAATOUGhlYWQQlAHGAAXhFAAAADZoaGVhDLIUJwAF4UwAAAAkaG10eHvlIUEABeFwAAAynGxvY2Ed1/m0AAYUDAAAMrxtYXhwD5AQAwAGRsgAAAAgbmFtZaT1yjEABkboAAAGlHBvc3Sx9QeqAAZNfAAAiJVwcmVwNpqJYAAG5QAAAAD9AAEAAgAOAAADWgAAA6wAAgCMACQAPQABAEQAXQABAIIAmAABAJoAuAABALoBSQABAVUBVQABAVcCAAABAhcCFwABAiACIAABAigCKAABAj0CPQABAkACQAABAkICRQABAkcCSgABAkwCaQABAm4CcQABAnUDVQABA2AEhQABBKIEpgABBMEEwQADBMUExwABBMkEzAABBM4FEQABBRUFFQABBRgFVgABBVwFXAABBWMFZAABBWYFaQABBWsFcAABBXQFdAABBYcFlQABBZcG6wABBu4G7gABBvEHFwABBxoHJgABB0AHRAABB0gHSAABB1wHcQABB4UHiAADB4kHqwABB8QH0wABB9YH2wABB98H3wABB+MH5AABB+kH7AABB+4H9gABB/kH+QABCAUIBQABCAoICwABCA0IDgABCBAIEgABCBUIFgABCBsIPAABCEYIRwABCEwITwABCFEIUgABCFQIVQABCFgIWQABCFwIXAABCF4IXwABCGQIZwABCGkIaQABCHQIewABCH0IhQABCIYIjAACCI0JDgABCRAJEwABCRYJGQABCRwJHAABCSoJMQABCTMJMwABCT0JSwABCU4JTwABCVYJVgABCVwJXwABCWMJYwABCWUJZQABCW8JbwABCXIJcgABCXQJeAABCXoJfgABCYwJjQABCZcJmAABCZwJnAABCawJrQABCa8JrwABCbEJsQABCbMJswABCbcJtwABCboJugABCbwJvAABCcMJxQABCdYJ1gABCd4J5gABCegJ6QABCesJ7AABCsgKyAABCtYK1gABCtgK3wABCuIK4wABCuoK6wABCu8K7wABC4ALgAABC4ELiwADC4wLjAABC40LoAADC6ELogABC6MLswADC7gL3QADC94L3wABC+AL4QADC+IL4gABC+YL6gABC+sL7AADC+0L7QABC+4L7gADC+8MBAABDAYMDwABDBIMKQABDCwMLQABDC8MMQABDDIMMgADDDoMPAABDD4MPwABDEAMQQADDEIMRgABDEcMRwADDEgMSAABDEsMUwADDFUMVQABDFYMVgADDFcMXAABDGAMYAABDGMMYwABDGYMcwADDHQMdAABDHUMhwADDIgMiAABDIoMigABDJAMkQABABIABwAkACwANAA0AEIAQgBKAAEABwDzAPQIhwiICIkIigi/AAEABAABAVMAAQAEAAEBAgACAAYACgABATsAAQJ3AAEABAABAS0AAQAEAAEBIwABAAQAAAAUAAAA2AAAAPoAAAG4AAIAIAIoAigAAAuWC5kAAQucC7IABQu4C7sAHAvCC8QAIAvIC8kAIwvOC9EAJQvUC9UAKQvXC9cAKwvaC9oALAvdC90ALQvhC+EALgvrC+sALwvwC/AAMAv3C/wAMQv/DAQANwwGDA0APQwQDCYARQwoDCkAXAwsDC0AXgwvDDEAYAwzDDkAYww8DDwAagxJDEkAawxODE4AbAxVDFwAbQxgDGAAdQxmDG0AdgxvDHMAfgx1DHcAgwx5DIAAhgyCDIcAjgABAA8Lswu0C7ULtgu3DAYMDAwcDD0MbQxxDHYMegx+DIMAAgAfAVMBVAAABMEEwQACBuwG7AADBu4G8AAEBvsG/QAHBwgHCgAKBxgHGgANByUHJgAQB1YHVgASB4UHiAATCt4K3gAXC4ELlAAYC7wLwQAsC8ULxwAyC8sLzQA1C9IL0gA4C9YL1gA5C9gL2QA6C9sL3AA8C94L4AA+C+IL6gBBC+wL7wBKC/EL9gBOC/0L/gBUDAAMDwBWDBIMMQBmDDoMOwCGDD4MSACIDEsMTQCTDE8MYgCWDGYMhwCqAAEALAuVC5oLmwvTDAEMAgwEDAYMBwwJDAoMCwwMDA0MHAweDB8MIQwnDCgMKQxYDGsMbQxvDHAMcQxyDHUMdgx3DHkMegx8DH0Mfgx/DIAMggyDDIQMhQyGDIcAAQAAAAoANABuAARERkxUABpjeXJsABpncmVrABpsYXRuABoABAAAAAD//wADAAAAAQACAANrZXJuABRtYXJrABpta21rAC4AAAABAAAAAAAIAAEAAgADAAQABQAGAAcACAAAAAQACQAKAAsADAANABxv7pEglsC+1NFS0wLTytWC2Bbd8N6Q6MoAAgAIAAIAChumAAEDVgAEAAABpg/6BqYP+giGEAwP9BAMFpYJfBdmFrIWpAb0B64XZgloFrIJNBayB9wIRhb0D+oP6hdmFtwJcgiGCHQW7hbuFu4IhgiQECoQMAjiFpYWlhaWFpYWlhaWFqQXZhakFqQWpBakFrIWshayFrIWshayFrIW3Ak0Fu4W7haWFpYJQhdmF2YXZhdmFrIJXhayFqQWpBakFqQWpAlYF2YJaAloCWgJXgloCWgWshayFrIWpBb0FvQW9A/qFu4W3BbuFtwJcglyCXIWlhakFrIXFBdGFyIXYBcUCXwKaBcUCZIXRgrYFxQJ5BdGFzQKIgpoFyIKggrYCt4XYBciFw4XDg3gC1gNDg0kDXIN4A3mFMoUlg60FQgUvBSWDr4UyhaMFQgVCBDSFJYUyhS8DwQVCBaMFowUnBScEMwQzBDMEMwUyg/qFu4P6hbuD+oW7hbcFu4P9A/0D/QP+g/6EAwP+g/6EAwQKhAwF2AQRhciFpYWvBbGEMwUlhSWEFwUlhBcEGIUvBS8FJYWjBDMENIU5BDYEXIU9hScFPYVCBUIFQgWjBTkEYwSNhKcFJYUyhLWEtYU9haMFowS8BOaFQgT6BZ2FowWjBaMFJYUlhUIFJwUohS8FLwUvBTKFOQU9hUIFRIVEhaMFRIVEhUYFXoVyBZ2FowWlhaWFpYWlhaWFpYWlhaWFpYWlhaWFpYWpBakFqQWpBakFqQWpBakFrIWshayFrIWshayFrIWvBa8FrwWvBa8FsYWxhbGFsYWxhbcFu4W3BbuFtwW7hb0FyIXIhcOFw4XDhcOFw4XDhcOFw4XFBcUFxQXFBcUFxQXFBcUF0YXRhdGF0YXRhdGFyIXIhciFyIXYBdgF2AXYBdgF2AXYBdgFw4XDhcOFw4XDhcOFw4XDhcOFw4XDhcOFw4XDhcOFw4XDhcUFxQXFBcUFyIXIhciFyIXNBdGF0YXYBdgF2YXZhdmF2YXZhdmF2YXZhdmF2YXZhdwF4YXhheGF4YXhheGGLAYsBiwGLAXjBfWF9YX1hiwGLAYsBiwGLAYsBiwGLAYsBiwGLAX4BguGLAYthleGQwZXhleGV4ZbBm+Gb4Zvhm+Gb4ZyBouGi4aLhouGi4aPBpGGmQaqhq0G1oAAQGmAAUACQAKAAsADwAQABEAJAAlACYAJwAoACkAKgAuAC8AMgAzADQANQA2ADcAOQA6ADsAPAA9AD4ARgBZAFoAXABeAGMAbQB9AIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AkgCUAJUAlgCXAJgAmgCfAKAAvwDBAMIAxADGAMgAygDMAM4A0ADRANIA1ADWANgA2gDcAPAA9wD6APwA/gD/AQABAgENAQ8BEQETASMBJQEnATUBNgE3ATgBOQE6ATwBPgFCAUQBRgFVAVoBWwFcAV4BXwFgAWEBYwFlAWcBaAFrAWwBbgFvAXABcQFyAXMBdAF1AXcBeAF9AX8BggGEAYYBhwGJAZMBnQGeAZ8BpgGnAakBqgGsAa0BrwGzAbkBugG7AbwBvQG+Ab8BwgHLAdAB4wHlAfEB8gH3AfkB+gH7AfwB/QH+Af8CAAIBAgICAwIFAgYCBwIJAgoCCwITAhQCIAI/AkACRAJHAkkCUwJUAlYCVwJYAlkCYAJkAmYCcAJ1AngCeQJ7An0CfgJ/AoICgwKFAocCiQKLAo0CjwKQApECkwKVApcCmQKbAp0CnwKjAqQCqgKsAq0CrgKyArYCuQK7AsUCyALJAtcC2QLbAt8C4wLlAucC6wLtAu8C8QLzAvUC9gL3AvkC+wL9Av8DAQMDAwUDBwMJAwsDDQMPAxEDEwMVAxcDGQMbAx0DHwMhAyMDKQMrAy0DLwMxAzMDNQM3AzkDOwM9Az8DRQNHA0kDSwNNA08DUANRA1IDUwNUA2AEygTLBj4GPwZABkEGQgZDBkQGRQZGBkcGSAZJBkoGSwZMBk0GgAaBBoIGgwaEBoUGjgaPBpAGkQaaBpsGnAadBp4GnwagBqEGogajBrAGsQayBrMGtAa1BrYGtwbgBuEG4gbjBuQG5QbmBucG6AbpBuoHEwcUBxUHFgcXByAHIQciByMIjQiOCI8IkAiRCJIIkwiUCJUIlgiXCJoImwicCJ0IngifCKAIoQiiCKMIpAivCMcIyAjKCNQI1QjWCNcI2AjZCNoI2wjcCN0I3gjgCOEI4gjtCO4I7wjwCPEI8gj+CP8JAAkBCQIJAwkE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/+ICiv/sApX/4gKW/+wCl//sApn/7AKd/+ICnv/sAp//2AKg/+wCof/YAqL/7AK0/9gCtf/sAt3/2ALe/+wC7f/iAu7/4gLv/+IC8P/iAvf/4gL4/+wABgAF/+IACv/iAgb/4gIK/+IC7v/sAvD/7AAqAAX/sAAK/7ABnP/OAaIAMgGl/84Bu/+mAcD/xAHD/84B2//YAeD/7AHj/9gCBv+wAgr/sAJg/8QCZP+6Amb/ugKJ/84Civ/YApX/pgKW/9gCl//OApn/zgKd/84Cnv/YAp//xAKg/+wCof/EAqL/7AKl/+ICpv/sAqf/4gKo/+wCtP/EArX/7ALd/8QC3v/sAu3/pgLu/9gC7/+mAvD/2AL3/84C+P/YABkABf+6AAr/ugHb/84B4P/sAeP/zgIG/7oCCv+6AlH/7AJl/+wCZ//sAm//7AKK/84Clv/OApj/7AKa/+wCnv/OAqD/7AKi/+wCpv/sAqj/7AK1/+wC3v/sAu7/ugLw/7oC+P/OAA4BnP/sAaX/7AG7/+IBw//sAmT/9gJm//YCif/sApX/4gKX//YCmf/2Ap3/7ALt/+wC7//sAvf/7AAGAb3/4gHo/+wB7f/YAlv/7AJh/+wC+f/2ACoABf/iAAr/4gGc/+wBpf/sAbv/xAHA/9gBw//sAdv/7AHc//YB4P/2AeP/7AH1//YCBv/iAgr/4gJg/9gCZP/iAmb/4gKJ/+wCiv/sApX/xAKW/+wCl//OApn/zgKd/+wCnv/sAp//2AKg//YCof/YAqL/9gK0/9gCtf/2Atj/9gLa//YC3P/2At3/2ALe//YC7f/YAu7/7ALv/9gC8P/sAvf/7AL4/+wAEwAF/84ACv/OAdv/7AHc/+wB4//sAfX/7AIG/84CCv/OAor/7AKW/+wCmP/sApr/7AKe/+wC2P/sAtr/7ALc/+wC7v/YAvD/2AL4/+wAKwAF/+IACv/iAaIAMgG7/+wBvf/sAcD/2AHb/+IB4P/sAeP/4gIG/+ICCv/iAlH/9gJg/9gCZP/sAmX/9gJm/+wCZ//2Am//9gKK/+IClf/sApb/4gKX/+wCmP/2Apn/7AKa//YCnv/iAp//2AKg/+wCof/YAqL/7AKl/84Cpv/sAqf/zgKo/+wCtP/YArX/7ALd/9gC3v/sAu3/2ALu/84C7//YAvD/zgL4/+IAAQG9/+wAAQHo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AFkAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8QAAAAAAAAAAAAAAAAAAAAA/9gAAP/i//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ugAAAAAAAAAAAAD/2AAA/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+wAAAAAAAAAAAAA/+z/9v/s//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAA/+z/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAA/+IAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAA/84AAP/OAAAAMgAA/+L/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAA/+IAAP/Y/8QAAAAAAAAAAAAAAAD/xAAAAAD/zgAAAAAAAAAAAAAAAAAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4v+wAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9j/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nAAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAA/+wAAAAA/84AAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/84AAAAA/+z/7P/i/87/xP/EAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/OAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAD/xAAAAAAAAAAAAAAAAAAA/+z/7AAAAAD/9v/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/i/7AAAAAA/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAP/EAAAAAAAAAAAAAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/E/+wAAAAAAAD/ugAAAAAAAAAAAAAAAAAAAAAAAAAAADIAAAAAAAAAAAAA/7oAAP/i/+wAAAAAAAAAAAAA/+z/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAAAAAABQAAAAAAAAAAAAAAAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8QAAAAAAAAAAP/i/9j/9v+6/8T/2AAAAAAAAAA8AAAAAP/sAAAAAP/OAAD/ugAAAAoAAAAAAAD/7P/EABQAAAAAABQAAAAAAAAAAAAAAAAAAP/i/+wAAAAAAAAAAAAA/7oAFP+6AAAAAAAAAAAAAP/iAAAAAAAAAAD/4gAAAAAAAP+6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7AAAP+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAAAAAAAAAUAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/Y/+IAAAAAAAAAAAAAAAAAAAAA/+wAAAAA/8QAAAAAAAAAAAAA/84AAAAAAAD/7AAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/84AAAAAAAAAAAAAAAD/ugAAAAAAAP/sAAAAAAAAAAAAAAAAAAD/7P/EAAAAAAAAAAD/2P+w/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/E/87/2P/sAAD/ugAAAAAAAAAAAAD/7AAAAAAAAP/YAAAAAAAAAAD/zgAA/7oAAP+6/87/2AAAAAAAAAAA/+L/xAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP/E/84AAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAD/7P/sAAD/7AAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAP/i/84AAAAAAAAAAP/s/87/2AAAAAAAAAAAAAD/zgAAAAAAAAAA/+wAAAAAAAD/9v/2/+z/9v/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+IAAAAA/8QAAAAAAAD/7AAAAAAAAP/2AAD/4gAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAARgAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAABGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAABGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAA/+wAAP/E/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAD/xAAA/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zgAAAAAAAAAAAAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAA/+wAAAAA/+wAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAA//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAA/87/zgAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7oAAAAAAAAAAAAA/+L/ugAA//YAAP/OAAD/xP/YAAAAAAAAAAAAAP+6AAAAAAAAAAD/ugAAAAD/7P/s/87/sP/E/7oAAAAAAAAAAAAAAAD/7AAAAAD/4gAA/7oAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAA/+z/4gAAAAAAAAAA/7oAAP/EAAAAAAAAAAAAAAAUAAD/7P/YAAAAAP/s/8QAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/xAAAAAD/pgAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/iAAAAAAAA/+IAAAAA/9j/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP/i/+IAAAAAAAAAAAAAAAAAAAAA/84AAAAAAAAAAAAA/+z/4gAAAAAAAAAAAAD/2P/iAAAAAAAAAAAAAP+6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAP/s/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAD/7AAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAD/zgAAAAD/9gAAAAAAAP/sAAD/zgAAAAAAAAAA//YAAAAAAAAAAAAA/8QAAAAA/84AAAAA/7r/sAAA/8T/xP/Y/+wAAAAAAAAAAAAAAAAAAP/EAAAAAAAAAAD/ugAAAAAAAAAAAAD/zgAAAAAAAAAAAAAAAAAA/87/ugAAAAAAAP/EAAD/xP/EAAAAAAAAAAAAAP+6AAD/2AAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAP/YAAAAAAAA/+wAAAAAAAAAAAAAAAAAAP/s/84AAAAAAAAAAAAAAAD/2AAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/87/zgAA/+wAAP/EAAAAAAAAAAAAAAAAAAAAAAAA/+wAFAAAAAAAAP/sAAD/zgAA/+L/7AAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/87/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAD/ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAD/9v/2AAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAP/OAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAA/84AAAAAAAAAAAAA/9j/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8T/2AAAAAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAP/sAAD/2P/2/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4v/iAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP+6AAAAAAAAAAAAAP/EAAAAAAAA/+wAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAA/+z/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAD/zgAAAAAAAAAAAAD/4v/iAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P+wAAAAAAAAAAAAAP/Y/+wAAP/i/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAA//YAAAAA//b/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAABGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/87/7AAAAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/34AAAAAAAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/fgAAAAAAAAAAAAAAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAD/sAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAP/sAAAAAAAA/+wAAAAAAAD/zgAAAAAAAAAAAAAAAAAAAAD/ugAA/7oAAAAeAAD/zv/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zgAAAAD/2AAA/87/xAAAAAAAAAAAAAAAAP+wAAAAAP/OAAAAAAAAAAD/2AAAAAD/ugAA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AT4APQFCAUIAAwFDAUMAAgFEAUQABQFGAUYABAFVAVUACQFZAVkACgFaAVoAFwFbAVsADgFcAVwAEAFdAV0ADAFeAV4ACQFgAWAAVwFhAWEACQFlAWUAFwFmAWYACgFnAWcAVgFoAWgACQFsAWwAFwFuAW4AVAFwAXAAVwFxAXEADgFzAXMAVgF1AXUAEAF2AXYACgF3AXcADgF4AXgAFQF6AXoAFAF7AXsAAQF9AX0AFQF/AX8ATwGDAYMAFAGFAYUAAQGJAYkATwGLAYsAGAGNAY0AGAGPAY8AWAGSAZIAGAGWAZYADAGYAZgAGAGcAZwAJgGdAZ0AJQGeAZ4AMQGjAaUAJgGmAaYAGQGnAacAHwGpAakAMwGrAasAMgGsAawAJQGtAa0AEgGvAa8AGQGwAbAAMgGzAbMAGQG3AbcADQG5AbkAUwG6AboAMQG7AbsAJQG8AbwAHwG+Ab4AGQG/Ab8AEgHCAcIAEgHDAcMAJgHFAcUAJgHGAccADQHJAckAQgHMAcwAHgHNAc0AEQHOAc4AHQHPAc8AGgHTAdMAGgHXAdcABgHZAdkABgHbAdsAHgHcAdwAHAHdAd0ABgHeAd4AGgHfAd8AEQHiAeIAEQHjAeMAJAHlAeUAJAHmAecABgHpAekAHQHqAeoAUgHrAesAHgHxAfIAJAHzAfMAUgH0AfQAGgH1AfUAHAH3AfcAJQH4AfgAHgH5AfkAJwH6AfoACwH7AfsAJwH8AfwACwH9Af0AJwH+Af4ACwH/Af8AGwIAAgAACwIBAgMAOwIFAgYAIQIHAgcAPAIJAgoAIQILAgsAPAITAhMATgIUAhQATQIgAiAAEAJAAkAADgJDAkMAAgJEAkQAAwJFAkUAAgJHAkcAKQJIAkgAIgJJAkkAKAJKAkoAIAJOAk4AHQJQAlAADQJRAlEAOAJSAlIASwJTAlMAJAJUAlQAMQJWAlYAMwJXAlcASgJYAlgAMwJZAlkASgJaAloASQJcAlwASQJeAl4AMgJhAmEABgJiAmIADQJjAmMABgJkAmQAHwJlAmUAOAJmAmYAHwJnAmcAOAJoAmkAHAJqAmoADQJrAmsABgJsAmwADQJtAm0ABgJuAm4ADQJvAm8AOAJwAnAAMQJ1AnUAEgJ2AnYAEQJ3AncASwJ4AngAJAJ5AnkAUwJ6AnoABgJ7AnsAPgJ8AnwASAJ/An8ANwKAAoAALwKBAoEAMgKDAoMANwKEAoQALwKFAoUAGQKGAoYAGgKHAocAGQKIAogAGgKJAokAGQKKAooAGgKLAosAEgKMAowAEQKNAo0APgKOAo4AHgKSApIABgKTApMAMQKVApUAJQKWApYAHgKXApcARwKYApgARgKZApkARwKaApoARgKbApsANwKcApwALwKdAp0AEgKeAp4AEQKfAp8AEgKgAqAAEQKlAqUARQKmAqYAHQKnAqcARQKoAqgAHQKqAqoAGQKrAqsAGgKuAq4AEgKvAq8AEQKyArIAEgKzArMAEQK2ArYAEgK3ArcAEQK5ArkAMwK6AroAQgK7ArsAMwK8ArwAQgK+Ar4AHQLAAsAAHQLBAsEADQLCAsIABgLDAsMADQLEAsQABgLFAsUAGQLGAsYAGgLHAscAMgLPAs8ADQLQAtAABgLRAtEADQLSAtIABgLTAtMADQLUAtQABgLVAtUADQLWAtYABgLXAtcAHwLYAtgAHALZAtkAHwLaAtoAHALbAtsAHwLcAtwAHALfAt8AJQLgAuAAHgLjAuMAPgLkAuQASALlAuUANwLmAuYALwLnAucAGQLoAugALwLrAusANgLsAuwALgLtAu0ANgLuAu4ALgLvAu8AEgLwAvAAEQLxAvEANgLyAvIALgLzAvMANgL0AvQALgL4AvgALgL7AvsAEgL8AvwAEQL9Av0AAwL+Av4AAgL/Av8AAwMAAwAAAgMBAwEAAwMCAwIAAgMDAwMAAwMEAwQAAgMFAwUAAwMGAwYAAgMHAwcAAwMIAwgAAgMJAwkAAwMKAwoAAgMLAwsAAwMMAwwAAgMNAw0AAwMOAw4AAgMPAw8AAwMQAxAAAgMRAxEAAwMSAxIAAgMTAxMAAwMUAxQAAgMVAxUABQMXAxcABQMZAxkABQMbAxsABQMdAx0ABQMfAx8ABQMhAyEABQMjAyMABQMpAykABAMrAysABAMtAy0ABAMvAy8ABAMxAzEABAMzAzMABAM1AzUABAM3AzcAKQM4AzgAIgM5AzkAKQM6AzoAIgM7AzsAKQM8AzwAIgM9Az0AKQM+Az4AIgM/Az8AKQNAA0AAIgNBA0EADwNDA0MADwNFA0UAKANGA0YAIANHA0cAKANIA0gAIANJA0kAKANKA0oAIANLA0sAKANMA0wAIANNA00AKANOA04AIANPA08AGwNQA1AACwNRA1EAGwNSA1IACwNTA1MAGwNUA1QACwNgA2AANANhA2EAMATKBMsADgY+Bj8AFQZABkUABwZGBk0ACQZaBlsAFAZqBmsAAQZsBnEADAZyBnkACgZ6BnsAGAaABoUAFwaOBpEADgaaBqEAEAaiBqMAFQamBqcAFAaoBqkAAQaqBqsAGAawBrEAFQayBrcABwa4Br8AAQbABsEAFAbIBs8AAQbYBt8AAQbgBuEABwbiBuQAFQblBuYABwbnBuoACQbrBusAAQbxBvMAFAb6BvoAAQb+BwMADAcEBwcACgcPBxAAGAcTBxYADgcXBxcAVAcgByEAFwciByMAEAckByQAAQiGCIYAUAiNCJcAFgibCKAAIwihCKQACAjFCMYATAjHCMgAQAjJCMkAPwjKCMoAQAjLCMwAPwjUCN4ACAjiCOIACAjuCO4AOQjwCPIAOQjzCP0AEwj/CQMALQkFCQkALAkKCQ0ANQqlCqUAQQqnCqcAQQquCq4AQQACAgwABQAFADoACgAKADoADAAMAD8ADwAPACwAEAAQADsAEQARACwAJAAkAAkAJgAmAAUAKgAqAAUAMgAyAAUANAA0AAUANwA3ADIAOAA4AAwAOQA6ACIAPAA8ABkAPQA9AD0AQABAAD8ARABEAAcARQBFABQARgBIAAEASQBJABsASgBKACoASwBLABQATgBPABQAUABRAAYAUgBSAAEAUwBTAAYAVABUAAEAVQBVAAYAVgBWADkAVwBXACgAWABYAAYAWQBcABAAXQBdADUAYABgAD8AbQBtAEwAfQB9AEsAggCHAAkAiACIAFEAiQCJAAUAlACYAAUAmgCaAAUAmwCeAAwAnwCfABkAogCiAAEAowCoAAcAqQCtAAEAtAC4AAEAugC6AAEAuwC+AAYAvwC/ABAAwADAABQAwQDBABAAwgDCAAkAwwDDAAcAxADEAAkAxQDFAAcAxgDGAAkAxwDHAAcAyADIAAUAyQDJAAEAygDKAAUAywDLAAEAzADMAAUAzQDNAAEAzgDOAAUAzwDPAAEA0QDRAAEA0wDTAAEA1QDVAAEA1wDXAAEA2QDZAAEA2wDbAAEA3QDdAAEA3gDeAAUA3wDfACoA4ADgAAUA4QDhACoA4gDiAAUA4wDjACoA5ADkAAUA5QDlACoA5wDnABQA+AD4ABQA+QD5AAYA+wD7ABQA/QD9ABQA/wD/ABQBAQEBABQBBQEFAAYBBwEHAAYBDAEMAAYBDQENAAUBDgEOAAEBDwEPAAUBEAEQAAEBEQERAAUBEgESAAEBEwETAAUBFAEUAAEBFgEWAAYBGAEYAAYBHAEcADkBIAEgADkBIwEjADIBJAEkACgBJQElADIBJgEmACgBJwEnADIBKAEoACgBKQEpAAwBKgEqAAYBKwErAAwBLAEsAAYBLQEtAAwBLgEuAAYBLwEvAAwBMAEwAAYBMQExAAwBMgEyAAYBMwEzAAwBNAE0AAYBNQE1ACIBNgE2ABABNwE3ABkBOAE4ABABOQE5ABkBOgE6AD0BOwE7ADUBPAE8AD0BPQE9ADUBPgE+AD0BPwE/ADUBQgFCAAkBQwFDAAcBRAFEAFEBRQFFAAcBRgFGAAUBRwFHAAEBSQFJADkBXQFdAA8BXgFeADMBYQFhADMBZQFlAFABaAFoADMBbAFsAFABcQFxACMBdwF3ACMBeAF4AAsBeQF5ACsBegF6ABIBewF7ACkBfAF8AAIBfQF9AAsBfwF/AE0BgQGBACsBgwGDABIBhQGFACkBhgGGABIBiAGIABIBiQGJAE0BiwGLAAsBjAGMAEkBjQGNAD4BjgGPAAsBkAGQAEkBkQGRAAIBkgGSAAsBlAGVAAIBlgGWAA8BlwGXAAIBmAGYAAsBmQGaAAIBnAGcAB8BngGeAA4BowGjAB4BpQGlAB8BpwGnADABqQGpADEBrQGtAB4BrwGvABgBsAGwACEBtAG0AB4BtwG3AA4BugG6AA4BuwG7AE4BvAG8ADABvgG+ABgBwAHAACABwwHDAB8BxgHGACEByQHJAB0BywHMAAMBzQHNABcBzgHOAAoBzwHPABYB0AHQAC8B0QHTAAMB1AHUABcB1QHWAAMB1wHXAAoB2AHZAAMB2gHaAAoB2wHbABwB3AHcAC4B3QHdAAoB3gHeABYB3wHfAAMB4AHgAC0B4QHiAAMB4wHjABwB5AHlAAMB5gHmAC8B5wHnAAMB6QHpAAoB6gHqADwB6wHrAAMB7AHsAAoB8QHxABcB8gHyAAMB8wHzADwB9AH0AAMB9QH1AC4B9gH2AAMB+AH4AAMB+QH5ACIB+gH6ABAB+wH7ACIB/AH8ABAB/QH9ACIB/gH+ABAB/wH/ABkCAQIDADsCBgIGADoCBwIHACwCCgIKADoCCwILACwCDwIPACwCEwITAEwCFAIUAEsCQAJAACMCQwJDAAYCRAJEAAkCRQJFAAcCRwJHAAUCSAJIAAECSQJJAAwCSgJKAAYCTgJOAAoCTwJPAAMCUAJQAA4CUQJRADcCUgJSACcCVQJVAAMCVgJWADECVwJXABcCWQJZAAMCXQJdAAMCXgJeACECYAJgACACYgJiAA4CYwJjAAoCZAJkAEgCZQJlADcCZgJmAEgCZwJnADcCaAJoAA4CaQJpAAoCagJqAA4CawJrAAoCbAJsAA4CbQJtAAoCbgJuAA4CbwJvADcCcAJwAA4CcQJxAAoCdgJ2AAMCdwJ3ACcCeAJ4ADwCegJ6AAMCewJ7ACcCfgJ+AAMCfwJ/ABgCgAKAABYCgQKBACECggKCAC8ChAKEAAMChgKGAAMChwKHACcCiAKIADwCiQKJAB8CigKKABwCjAKMAAMCjgKOAAMCkAKQAAMCkQKRAA4CkgKSAAoCkwKTAA4ClAKUAAoClQKVAE4ClgKWABwClwKXAEcCmAKYAEYCmQKZAEcCmgKaAEYCmwKbABgCnAKcABYCnQKdAB8CngKeABwCnwKfACACoAKgAC0CoQKhACACogKiAC0CpAKkAAMCpQKlAEUCpgKmAEQCpwKnAEUCqAKoAEQCqgKqABgCqwKrABYCrQKtAAMCrgKuAB4CrwKvABcCsQKxAAMCswKzAAMCtAK0ACACtQK1AC0CtwK3AAMCuQK5ADECugK6AB0CuwK7ADECvAK8AB0CvQK9ADECvgK+AB0CwALAAAoCwQLBAEMCwgLCAB0CwwLDAEMCxALEAB0CxQLFABgCxgLGABYCxwLHACECyALIAC8CzALMAAMCzgLOAAMCzwLPAA4C0ALQAAoC0QLRAA4C0gLSAAoC0wLTAA4C1ALUAAoC1QLVACEC1gLWAC8C1wLXADAC2ALYAC4C2QLZADAC2gLaAC4C2wLbADAC3ALcAC4C3QLdACAC3gLeAC0C4ALgAAMC4gLiAAMC4wLjACcC5QLlABgC5gLmABYC5wLnABgC6ALoABYC6QLpAEIC6gLqAAoC6wLrAEIC7ALsAAoC7QLtAEEC7gLuAEAC7wLvAEEC8ALwAEAC8QLxAB4C8gLyABcC9AL0AAMC9QL1AA4C9gL2AAoC9wL3AB8C+AL4ABwC+gL6AAoC+wL7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G1wPUBPQG8ga0huwD1YPXBrSG7Aa0huwGtIbsBrwG84PYhNYGvAbzhquGkgZZF/gYARf4GAEX+BgBBm+G7YekhvUD2gPbh6SG9Qa9hziGvYc4g90E44a9hziD3oPgF9AXy5fQF8uHBYbCBwWGwgcFhsIHBYbCBwWGwgPhhv+F+QZpkwoGAhMKBsgGAIbIBgCGyAYAhtKD4wdtBu8GmwUfh0wHKwPkg+YD54PpBfkEiAachl2GZQdhF9SEzobMhrSGwgbIBrqX+AZgh3YHCgdJBrwG8hf4BwWHp5HYF9ATCgSyBysGjAduhmCTCgenhyaGWQdhBo8Hp5IJhvaYAQcmg+2GWQbCB2EG8hfQB02R2YPqmAED7AZjg+2EiAUYBo8D7weDhsaGaYdhBo8YAQaPBmmGwgPwhsyHbQa9hmCGYIdwBmyExwPwhp4QOIPyF9SHhQdchsyHSobCBR+X84duh26GngdHh0kGupf4BwWHp4a6l9AQOISyBysER4RWg/OD9QP2hQMD+AemA/mFHIbvF/OE74P8h2cGyAdMF/yHcwdzBxqHZZIJhPKYAQd6huYHeQazBgIFE4dxg/sEWAdbB1sEwQa2BsgGswdihKGGyAZZA/yHJQc4h6MGzgbXBgUD/gbzhxqGAgP/hAEEy4X5BmmF+QZphfkGaZMKBgIFkYduhtcHSQbthAKEBAdMF/OGuobCBsIHbobIB3MF+QQXhAWHXIQHBAiECgTvhAuEDQQOkDiG4YQQBBGEEwaMBsaHTAcrF9SGipfUhoqEFIQWBfkEF4b8hBkEGoQcB14GyAVyBukHBwTNBB2EHwQghCIEI4QlBCaEKAaeBxqGngbyBFaE8oQphCsHWATyhCyELgRABPKEL4QxBDKENBMKBJETCgSRBDWENwQ4hDoEO4Q9BFaHCgRWh3qEPoRABEGEQwZghR+HTAREhEYER4RJBEqETARNhE8EUIRSBFOEVQZgl9SG7xfUhu8GmwUfhsIGyASPhssEj4bLBR+HTBfzl/yGYgTsh26Hcwduh3MX+BgBB0wHKwdMBysHpgazEDiGAhA4hgIQOIYCBFaEWARZhFsFAwa2BFyEXgRfhGEHKwdxh4UG6oZmhg+GD4RihGQEZYRnBmUEaIRqBGuFHIRtBG6YAQcmhHAEcYRzBHSX1IbvF9SG7xfUhu8X1IbvF9SG7wRzBHSX1IbvF9SG7xfUhu8X1IbvBHMEdISAhf2GwgbIBsIGyAbCBsgGwgbIBsIGyAbCBsgEgIX9hmCGzgR2BHeEeQR6l/gYARf4GAEX+BgBF/gYARf4GAEEeQR6hquGngarhp4Gq4aeBquGngR8BH2EfwSAhwWGwgSCBMEEggTBBIIEwQSCBMEEg4SFBIaGAhMKBgITCgYCBIgHg4SJh4UHWAeFB4UHXIVyBrMGuod5BIsGjAeFB4UEjISOBI+X84SRBrYErAYbhJKGYId6hvIGzhfQF9qElAZZB0wE/QSVhJcG6QSYhJoHOJHYBJuE5oSdBJ6Hg4duhKATCgeDhu8GyYZiBmIE7ITshKGE8Rf8hKMFtwSkh1gEpgSnhLUEtoS4BKkEqoSsBK2ErwSwl9SG7wZghs4X+BgBBwWGwgcFhsIHBYbCBwWGwgcFhsIX1IbvF9SG7wabBR+EsgbpBquG8Id2BvIEs4cxBLOHMQZiBOyEtQS2hLgGq4bwhMcEuYa8BvOX1IbvF9SG7wbCBsgGwgbIBmCGzgZghs4X+BgBF/gYAQekhvUHpIb1BwWGwgcFhsIEuwS8hrqHeoS+BL+EwRfzhMKExBfUhu8FtwW4l/gYARf4GAEX+BgBF/gYARMKBgIExYZcB1mExwTIl9SGuoTKBrSX0ATjhOmEy4TNBM6HBYcKBsIE0ATRhuYE0wbpB6SG9RMKBgIG7weFB4UHhQZ7hwcG6QeFBssGywcmmAEG5gbpBvCE8QTUhz0E1gbzhlkHowdhF64Ge4TXhuYE2QYbhNqE2oZZBlkE3AcrBN2Gq4UTh2EHYQTfBN8E3wTghOIG7wbvBOOG5gbmBuYG5gTlBOaGwgVyBvOHPQZphboE6ATphOsE7ITshPcE9wT3BO4X+ATvmAEE8QTyhuYE9AT1hukE9wT3BPiE+gT7hP0E/oUABQGFAwa8BQSHC4UGBQYFB4WRhtuFDwV/hQkFSwUKhQwFDYUPBZSFEIVXBuMHeQbjBRIFE5IJhmOHhQUVBtEFFoUYBRmHC4UbBRyGY4d5BtcHTAclBrMHp4bpBrqSooUeBmOGnga6hp4GuQbnhfkGaYcHBq6FH4deBzWGyAbIB1aHNwUhBSKGvYcfBSQHeoUlhzWHCgcKBwoG7ZHZj+eG84UqBsyGzIdWh6eHCga2BScHNYcFhgCG4wUohSoFKgUrhS0FLoUuhTAFmoUxhTMFNIU2BTeFOQVShTqFXQVdBTwFPYeqhT8FQIVCBUOFRQVFBXUFRoVIBUmHagVLBUyFTgV8hU+FUQeUBYWFUoVUECCFkYVVhVcFmoV1BViFWgVbhV0FXoWIhWAFYYVjB4mFZIVmBWeFaQVqhWwFbYbzhW8FcJeuB2EG5gVyBuSG6pfZBvCFc4bmBXUFdoV4BYiFeYV7BY0FfIV+BzoFf4WBBYEFjQWNBYKFhAWEBYWFhYWHBYiFigWLhY0FjoWahZAHqoWRhZMFlIWWBZeFmQWah1yG5IWcBZ2FnwWghb6FogWjhuqFpQWmhagFqYWrBayFrgWvhsIGyAbCBsgFsQWyhbQFtYW3BbiFuhfZBquG8Ia6h3qFu4W9BrqHeoW+hsUFwAXBhcMFxIZghs4HdgbyBcYFx4XJBcqFzAXNhcwFzYXPBdCF0gXTh0kG7YXVBdaGvAbzhdgF2YXbBdyF3gXfl/gYARf4GAEX+BgBF/gYAQenhuYHp4bmB6SG9QXhBeKF4QXiheQF5Ya9hziF5wXohr2HOIa9hziF5wXol9AXy4XqBeuF7QXuhfAF8YcFhsIHBYbCBfMF9IcFhsIHBYbCB14HNYX2BfeF+QZphfqF/AcrB3GHKwdxkwoGAgbIBgCF/YX/BsgGAId6l8uGaYYCBu8G0oenh6eHp4enh6eHp4enh6eX1JfUhgOGD4YIBgUGBoYIByaHJocmhyaHJocmkwiTCIYJhgsGDIYOBlkGWQZZBlkGWQZZBlkGWQYPh1sGEQYShhQGFYYXBhiHYQdhB2EHYQdhB2EHYQdhGAEHC4ZmhhoGG4YdEqKSopgBGAEYARgBGAEYAQachh6GIAYhhiMGJIaPBo8GjwaPBo8GjwaPBo8GcQYmBieGKQZphmmGaYZphmmGaYZphmmGZQYqhiwGLYYvBjCGMgYzh6eHp4cmhyaGWQZZB2EHYRgBGAEGjwaPBmmGaYZUhlSGVIZUhlSGVIZUhlSGNQY2hjgGOYY7Bl8GPIY+BlkGWQZZBlkGWQZZBlkGWQY/hkEGQoZEBkWGSIZHBkiGawZrBmsGawZrBmsGawZrBkoGS4ZNBk0GToZQBlGGUwenh6eGVIZUhlSHp4ZUl9SX1IZWF9SGV4ZZBlkGWQZZBlkGWoZcBl2HWwZfB2EHYQdhB2EHYQdhBmCGYIdEhmIGjwaPBo8GjwZjhmOGjwaPEwoTCgZlBmaGaAZrBmsGawZphmsGbIZuBm+GcQZyhnQGdYZ3BniGegbthnuGzIbsBsyHp4dNhn0GfoaABoGGgwaEhoYGh4aJBoqGlQaMBz0HBAdWho2Hp4enh6eHp4enh6eHp4enh2EHYQdhB2EHYQdhB2EHYQaPBo8GjwaPBo8GjwaPBo8HYQdhB2EHYQaPBo8GjwaPBpCGkgaThpUGloaYBpmGmwachp4HGoafhqEGooakBqWGpwaohqoGq4atBq6HbQawB4UGsYazB3YHdgd2BrSX+Bf4B6eGtga3hrkGuQenh50GvAa6h3YGvAa9hr8X85D3BsCX1IbCBsOHBYbFBsaHLIbOBtcYAQbIF/yGyYbLBsyGzgbPhtcG0QbShtKHKwbUBtWG1wbXBtuG1wbYhtoHOgbbht0G3obgBuGG4wbyBvIG8gbsBuSG5gbnhueHNYbpBukG6obsBu2G84bvBvOYAQbwhvIG84b1BziSCZLJhwuG9ob4BvmG+wb8hv4G/4cBBziHBAcEBwQHBAcEBwQHBAcChwQHBAcEBwWHBYcHBwoHCgcKBwiHCgcKBwuHC4cLhwuHDQcNBw0HDQcNBw0HDQcNBw0HDocQBxMHEwcTBxGHEwenmAEHp4cXhxeHF4cXhxeHF4cXhxSHF4cWBxeHGQcZBxqHHAc3BzcHNwcdhzcHHwcgh1yHXIdchyIHI4dch1yHXIdch1yHXIdch1yHXIdch1yHXJIJhyUHJocoBz0HPQc9BymS25LbktuHLhLbhy+HKwcsktuS24cuBy+YARgBGAEYARgBGAEYARgBBzEYARgBBzKHNAc0BzQHNAc0BzWHNwc3BzcHNwc3BziHOIc4hziHOgc7hz0Hp5EBhz6HQAdBh0MHRIdGB0qHR4dJF/gX+AdKh0wHTYdPB1CHUgdTh1UHVodYB1mHWwemB1yHXgdfh2EHYodkB2cHZZIJh2cHaIdqB2uHbQduh3AHfwdxh3MHdJKqF9SX84d2B3eHeQd6l9kYAQenh3wHfYd/B4CHggeCB4OHhQeGh4gHiYeLB4yHjgePh5EHkoeUB5WHlweYh5oHm4edEqEHnoegB6GHowekh6YHp4epB6qHrAetgABAUr/HgABAY7/IwABAXcAAAABAUL/PAABAAL/UAABAU//IwABAS7/IwABAIj/IwABAYT/IwABAVH/IwABAIf/IwABAQT/EAABARr/IwABAN7/IwABAXD/HgABAR7/EAABAQT/IwABAPP/IwABAVAAAAABAYsAAAABAPL/QAABAVYAAAABAPT/QAABAXX/EAABAXwAAAABAXD/PgABAg0AAAABAhQAAAABAV8AAAABAUAAAAABAhEAAAABAT//QwABAN8AAAABAbsAAAABAUD/RAABAREAAAABAUr+6QABAR/+6QABAVIAAAABApAAAAABAhcAAAABAV0AAAABAloAAAABAggAAAABAXgAAAABAiEAAAABASz/JgABAP//NAABAnH/EAABAi//EAABAZkAAAABAPv/EAABAYj/PgABAVP/RAABAVL/BgABARX/CwABAdf/PgABAaT/RAABAS//HgABAP//HgABAVz/PgABASf/QwABAXv/PgABAUP/RAABAiH/BgABAbX/CwABAXP/HgABARz/HgABARr/PgABAPn/RAABAU3/PgABASH/QwABAbn/PgABAXT/RAABAW//PgABAUb/QwABAfsAAAABAYYAAAABAfv/PgABAYb/RAABAWX/BgABASb/CwABAXn/PgABATv/RAABAXP/BgABAT3/CwABAYn/PgABAVf/RAABAWH/PgABATn/QwABAdz/PgABAZP/RAABAWEAAAABATkAAAABAQ7/PgABAN//RAABAQ3/LgABAOL/MQABAUv/LgABASH/MQABAZ4AAAABAUf/PgABAR//RAABAfQAAAABAgAAAAABAdAAAAABAYIAAAABAWwAAAABAVQAAAABAXT/LgABATn/MQABAUr/RgABAR//RgABALH/RgABAIr/RgABAYr/RgABATD/RgABAY7/RgABAT3/RgABAXD/RgABAS3/RgABAZYAAAABAZb/RgABAV7/RgABAST/RgABAToAAAABAN7/EAABAW4AAAABATD/IQABAQoAAAABAX4AAAABAQj/EAABANQAAAABAYT/EAABAbP/EAABAWAAAAABAT3/nAABARMAAAABALz/EAABASYAAAABAMAAAAABAW8AAAABAR0AAAABAO0AAAABAKIAAAABAQL//wABAIkAAAABAhr/PAABAjL/EAABASn/EAABAwn/PAABAyH/EAABAo//EAABAZoAAAABAYr/HgABA/8AAAABA9EAAAABA2AAAAABAU3/EAABASX/jAABAPT/UgABAXb/EAABAbH/lwABAV4AAAABASz/LgABAO7/MQABAMcAAAABAeUAAAABAeX/EAABARz/MAABAOUAAAABAOIAAAABAUgAAAABASz/MAABAJL/PAABAYH/EAABAQf/EQABATv/IwABALcAAAABAVj/EAABAdv/EAABAUkAAAABAbEAAAABANX/EAABALUAAAABALX/EAABAPP/EAABAMD/hwABAMD/EAABAPsAAAABAO7/EAABART/qQABAQX/EAABAPH/EQABASgAAAABASMAAAABAUMAAAABARj/IwABAOAAAAABAN0AAAABAswAAAABAsX/EAABAsz/qQABAiIAAAABAV//EAABApD/9gABAkz/EAABAbQAAAABAQMAAAABAT7/EAABAM4BHwABAIoAjwABAQYBHwABAEIAjwABAKsAkAABAFgBHwABALEBHwABASz/9gABAXj/EAABAPT/MwABAO//EAABAPkAAAABARX/EAABAQL/EAABAUQAAAABAXn/EAABAbgAAAABAI7/MwABAOL/bwABAXIAAAABAT8AAAABATb/hQABAOcAAAABAP4AAAABANcBHwABASUBHwABANEBHwABAN8BHwABAK0BHwABAQMBHwABAPEBHwABAHMBHwABAAEAtQABANoBHwABASYBHwABAQABHwABAOMBHwABANsBHwABALcBHwABAO8BHwABAS4BHwABALsBHwABAR4BHwABANMBHwABAMABHwABALoBHwABAKQBHwABAKEBHwABAF0ApAABALYBHwABAMUBHwABAIEBHwABAFkAjwABAJABHwABATUBHwABAKoBHwABAKUBHwABAPwBHwABAK0AjwABAPIAjwABALcAjwABAFr/oAABAMT/oAABAKr/oAABAPz/oAABAK3/EAABAMb/EAABAPL/EAABALf/EAABAUMDCwABANIBHwABATUAAAABARj/MQABAMoBHwABALkBHwABAK8BHwABAKYBHwABAGgBHwABAMIAjwABAM0AmgABAIoBHwABAGwBHwABAJIBHwABATUAjwABAM0AjwABANYBHwABAMYBHwABAPQAjwABAJ4AjwABAFgAjwABAH0AjwABAMkBHwABAM0BHwABAKsBHwABAJ4BHwABAJoAjwABALMA6wABAKoAjwABAMQBHwABAUL/RgABAUX/RgABAUL/ZQABAUX/ZQABARz/EAABAVcAAAABAVf/RgABASf/RgABAVf/ZQABASf/ZQABAVf/EAABASf/EAABAVf/OAABASf/OAABAS3/OAABASz/OAABAS3/PgABASz/PwABAS3/EAABASz/EAABAQgAAAABAXP/RgABATz/RgABAXP/EAABAXP/PgABATz/PgABALH/QQABAIr/QQABAU//RgABARj/RgABAU//ZAABARj/XwABAS7/RgABAIj/RgABAS7/awABAIj/aQABAS7/OAABAIj/OAABAcX/RgABAd7/RgABAYT/RgABATv/RgABAYT/XAABATv/WgABAYT/OAABATv/OAABAVH/RgABAIf/RgABAVH/YQABAIf/ZwABAQT/RgABAPP/RgABARr/RgABAN7/RgABARr/awABAN7/ZAABARr/OAABAN7/MQABAXD/OAABAS3/MQABATP/RgABAQX/RgABAdEAAAABAdH/RgABAZP/RgABASz/RgABAPT/RgABAPQAAAABAGb/EAABAcIAAAABAawAAAABAacAAAABAaoAAAABAh4AAAABAhkAAAABAg8AAAABAg4AAAABAcYAAAABAlsAAAABAlkAAAABAmQAAAABAlgAAAABAmIAAAABAl4AAAABAboAAAABAdsAAAABAdQAAAABAdIAAAABAm4AAAABAmwAAAABAjsAAAABAjwAAAABAkgAAAABAl8AAAABAncAAAABAckAAAABAmkAAAABAmcAAAABAj8AAAABAkQAAAABAjIAAAABAk8AAAABA1wAAAABA1cAAAABA8wAAAABA9QAAAABA70AAAABA8AAAAABA8MAAAABBBwAAAABBBcAAAABBLYAAAABBLUAAAABBLIAAAABBLEAAAABBKkAAAABBCUAAAABBDIAAAABBMgAAAABBKMAAAABBKsAAAABBJAAAAABBJgAAAABATL/HgABAUwAAAABA2MAAAABATv/EAABAXsAAAABAXkAAAABAcgAAAABA8EAAAABALEAAAABASUAAAABATH/EAABAbkAAAABAccAAAABAYwAAAABAZMAAAABAZP/HgABAd0AAAABAa4AAAABAdcAAAABAbIAAAABA+QAAAABALv/oAABAMP/oAABAMX/oAABALH/oAABALr/oAABAMYAAAABAR//MAABAN7/MAABAYf/PgABATz/QwABAU//PgABARj/QwABAR//PgABAO7/QwABAYEAAAABAQ8AAAABAZ0AAAABAXUAAAABATgAAAABAW//PAABAYT/PAABAWoAAAABAeQAAAABAaAAAAABAZwAAAABAZ//EAABAcMAAAABAbwAAAABAT0AAAABAgn/BgABAaL/CwABAiv/BgABAbz/CwABAXX/PgABATz/RAABAX7/PgABAU7/RAABAY4AAAABAcf/OwABAWsAAAABAXEAAAABAwcAAAABAPoAAAABAS4AAAABAZAAAAABAjgAAAABAYn/VgABAXMAAAABAYQAAAABAQQAAAABAeYAAAABARkCygABAS0AAAABALH/HgABATz/EAABAYj/EAABASwAAAABAO4AAAABAR4AAAABAQwAAAABAIwAAAABAIz/HgABAQ4AAAABAKwAAAABABH/EAABANYAAAABABr/EAABAFv/oAABAIj/MQABABEAjwABAIz/QQABAIz/RgABAnUAAAABAoEAAAABAPUAAAABAUUAAAABAIj/EAABAeT/EAABATf/EAABAScAAAABAIgAAAABAd4AAAABAR8AAAABASr/EAABARgAAAABATsAAAABAIcAAAABAQr/EAABAR//HgABASz/HgABAI//EAABAUf/EAABAIr/HgABAS3/HgABATQAAAABARL/HgABARIAAAABAXAAAAABAQ0AAAABATb/EAABATYAAAABASkAAAABAPgAAAABAPj/HgABANgAAAABAUv/IwABAUsAAAABARf/XQABAJr/HgABAJoAAAABAH3/XQABARYAAAABARb/IwABAPf/IwABAOEAAAABAXoAAAABAUL/IwABAUL/XAABAPwAAAABAP0AAAABAUL/dwABAQf/IwABATEAAAABAOgAAAABAOb/EAABAOb/IwABATD/HgABAQYAAAABAY0AAAABAQUAAAABAPcAAAABAPMAAAABAFoBHwABADIBdAABAQcAAAABAXH/KQABAsb/PgABAWf/OwABAXT/OwABASAAAAABAXj/PgABAWgAAAABAcUAAAABAWX/PgABAYkAAAABAT3/EAABAlf/QwABATX/QwABATr/QwABARsAAAABAS//EAABAOkAAAABAXYAAAABAMsAAAABAcwAAAABAUIAAAABATMAAAABAPIAAAABANUAAAABAagAAAABAUn/QwABASsAAAABAS//QwABAOQBHwABAMMBHwABAOQAAAABAUcAAAABAYgAAAABAAL/PAABARAAAAABAU0AAAABAT//9gABAU8AAAABAZgAAAABARwAAAABATwAAAABAgUAAAABANkAAAABAMwAAAABAd4CIgABAekCHAABARr/EAABATcAAAABAM7/oAABALb/oAABAFj/oAABATf/oAABAM3/oAABAFn/EAABAJ7/oAABAJD/oAABAPMBHwABATcBHwABAI0BHwABAIABHwABAX8CygABAOoAAAABAUUCywABAOoCygABA6gBaQABAucAAAABAnIAAAABAIoAAAABAVEAAAABAUEAAAABATIAAAABAJgCFwABAMcBHwABAYACygABAjMAAAAEAAAAAQAIAAFM3gAMAAFNBAIWAAEBAwAnACsALwAyADcARwBLAE8AUgBXAJQAlQCWAJcAmAC0ALUAtgC3ALgA0ADRAOYA5wD6APsA/AD9AP4A/wEAAQEBDQEOAQ8BEAERARIBIwEkASUBJgEoAVgBWgFkAWUBbAFwAYsBmAG2AbcBuwHXAmkCpALPAtAC6gMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDYANhA6EDogOjA6QDpQOmA64DrwPGA8cDyAPJA8wDzQPOA+ED4gPjA+QD7wPwA/sD/AP9A/4D/wQABAEEAgQNBA4EMgRUBGUEfQSjBP0FHAUgBSQFKAUsBTQFPgVDBW0FjwW0BbUFtgW3BbgFuQW6BbsFvAW9BcwFzQXOBc8F0AXRBdIF0wXUBdUF4AXhBeIF4wXkBeUF5gXnBfQF9QX2BfcF+AX5BfoF+wYSBhMGFAYVBhYGFwYYBhkGOAY5BmIGYwZkBmUGZgZnBmgGaQZ6BnsGfAZ9Bn4GfwaABoEGggaDBoQGhQaqBqsGyAbJBsoGywbMBs0GzgbPBvgG+Qb6ByAHIQdCB2MHZQffB+QH7gfvB/AIBQgRCBYIHwhHCFEIUghkCGUIggiICIoIiwiMCKEIowi1CLcIxwjICMkIygjLCNQI1QjWCNcI2AjZCNoI2wjeCO4I8AjxCPIJLgmtCboJvAnfCeEJ5gnrCtYK2QvKAQMCXALaA3ZANALyAxYexEAWQEZABEA0QDRANEA0QDRARkBGQEZARkBGAlwDFgLaHsQDdkAWA3ZAFgN2QBYDdkAWQDRARkA0QEZANEBGAvJABALyQARABAIIAoYC2kA0QDQC8kBGQEYC2kA0AvJARkBGHsRANEBGAxZANEBGQDRARkA0QEZANEBGQDRARkA0QEZANEBGAvJABAJcAlwDFgN2A3ZAFkA0QEZANEBGQDRARgJcAlwDFkA0QEZANEBGAtoexEA0QEZANEBGQDRARkA0QEYDdgLyHsQCDkA0AhQCGgIgAiYCLAIyAjgCPgJEAkoCUAMWAlYCXAMWAlwDFgJcAxYCXAMWAlwDFgLaHsQC2h7EAtoexALaHsQC2h7EA3ZAFgN2QBYDdkAWA3ZAFkA0QEZANEBGQDRARkA0QEYC8kAEAvJABALyQAQC8kAEHsRABAJiAtQCaAJuAsICdAJ6AoBARkBGQEZARkBGQEYChgKMApICtgKYAp5ARkBGAqQCqgKwArYCvALIAsICyALOAtQC2gLgAuYC7EAEHsQC8gL4A3ZANEA0A3YC/gMEA3YDCkAWAxADFkAWQBYDHAMiAygDLgM0AzQDOgM6A0ADQANAA0ADQANGA0YDRgNGA0YDRgNGA0YDRgNMA0wDTANMQDQexANSA1gDXgNkA2oDcAN2A3YDfAABAdQBZQABAL8BDQABAM0BwQABAFgBwQABASkBDAABAO4B9QABAPMB9QABAK4B9QABAP8B9QABALcB9QABAMoBwQABAMYBwQABAH0BwQABAMwBwQABAW4BZQABAcoBZQABAl4BZQABAlwBZQABAlsBZQABAmUBZQABAmIBZQABAbsBZQABAdEBZQABAm0BZQABAjoBZQABAjsBZQABAdIBZQABAc0BZQABAmwBZQABAmsBZQABAmgBZQABAmcBZQABAl8BZQABAcsBZQABAc8BZQABAXcBZQABAdwBZQABAa0BZQABAMYAQgABARoBZQABAwYBZQABAekBZQABARkBZQABAoIBDQABAUcBDQABATcBDQABA1EBDQABAe0BDQABAgQBDQABAqQBDQABASkBHwABATIBHwABAOIBHwABAUIBHwABAOYBHwABANkBDQABAMwBDQABAM0AQgABAFgAQgABAH0AQgABAI0BwQABAQwBZQABAAABZQAEAAAAAQAIAAFH3gAMAAFJfgJuAAIAZQAkAD0AAABEAF0AGgCCAJgANACaALgASwC6AUkAagFVAVUA+gFXAgAA+wIXAhcBpQIgAiABpgI9Aj0BpwJAAkABqAJCAkUBqQJHAkoBrQJMAmkBsQJuAnEBzwJ1A1UB0wNgBIUCtASiBKYD2gTFBMcD3wTJBMwD4gTOBRED5gUVBRUEKgUYBVYEKwVcBVwEagVjBWQEawVnBWkEbQVrBXAEcAV0BXQEdgWHBZUEdwWXBusEhgbxBvoF2wb+BwcF5QcLBxcF7wcbByQF/AdAB0QGBgdIB0gGCwdcB3EGDAeJB6sGIgfEB9MGRQfWB9sGVQfkB+QGWwfpB+wGXAfuB/AGYAfyB/YGYwf5B/kGaAgFCAUGaQgKCAsGaggNCA4GbAgQCBIGbggVCBYGcQgbCDwGcwhGCEcGlQhMCE8GlwhRCFIGmwhVCFUGnQhYCFkGnghcCFwGoAheCF8GoQhkCGcGowhpCGkGpwh0CHsGqAh9CIUGsAiLCQ4GuQkQCRMHPQkWCRkHQQkcCRwHRQkqCS8HRgkxCTEHTAk+CUsHTQlOCU8HWwlWCVYHXQlcCV8HXgljCWMHYgl0CXgHYwl6CX4HaAmMCY0HbQmXCZgHbwmcCZwHcQmsCa0HcgmvCa8HdAmxCbEHdQmzCbMHdgm3CbcHdwm6CboHeAm8CbwHeQnDCcUHegnWCdYHfQneCeYHfgnoCekHhwnrCewHiQrICsgHiwrWCtYHjArYCt0HjQrfCt8HkwriCuMHlArqCusHlgrvCu8HmAuAC4AHmQyIDIgHmgyKDIoHmwyQDJAHnAedOyAehCB8GtYgmjt8ENobKiCgJH4kriCmI+ggrDuOJXo7jiV6III7Dj0iJYYfPiCaI7IcdCFmIEZKUCE2IWw7OkpoJLoldCV0IUIhciE8IXg7siEkJPAhSCF+OvwheCEqHyARTBciIMoWOBY4FjgPPBLAJKIPQiB8FkoWShZKHFAWVhZWFlYQvBUMD0gWYhZiFmIPThuED1QWjBaMFowb9hGyH3QhThY+Fj4WPg9aEsYPYA9mSlAWUBZQFlARWBdkF2QXZBFkHaYcCBZoFmgWaA9sExo7shaSFpIWkhv8E0QhMBM4Hn4Pch54FkQPeCFmGsQayhrEGsoPfg+EGsQayg+KITYVDBT0D5APlhruGvQcRA+cIJohbBZKFlAWGhYgD6IPqA+uD7QQ2hYgFrAWthsqJLoPug/AHtIPxh7MFlwgoCV0D8wU+g/SD9gXZCSuIUIXrA/eD+QgpiFyIKYhciCmIXIgpiFyFjIWkiCsIXgWMhaSF1IgrCF4FfAV9hZuFnQWYhZoHz4YwBucFnoleiFIG5wWehvGG8wbxhvMIIIhfhvGG8w7Djr8D+ofgDsOOvwcAhwID/AP9haYFp4P/BACFowWkj0iIXgRmhGgEbITRBBcHGgcbhAIEA4caBxuEBQQGhAgECYQLBAyFmIWaCCCIX4QOCBMHRwQPh0uEEQfFBBKOyAehCBeEFAgmhx0Gyo7jiCgJK4lhiPoIKwQVjuOEOwlehVOOw4jshD4IJogcCR4ELwQXBBiEGgQbhB0EHokxiFOIWAguCTqEIAekBCGJDwXrBUwI/QYxhCMO7IQkjuyIUgkxhJ4GNgfsCTqEgwfIBCYEJ4QpBCqELAcUBDIELYkciCCIKAQvCR+EMIWJhDIEM4Q1BDsOyAgXh6EIF4j7iCaHxQ7fBDaEOAQ5iPiI+gbKjuOEOwleiB8Ow4Q8hD4IJoSohD+EQQRChEQERYRHCWAHM4RIiFmESgXmhEuJFohbBE0O6AROhFAGJAkTiRUF6Y7siA6ISRKUBFGFyIYQhFMGLo7siQeJB4U1hFSIL4YciRCSlARWBF2EV4YbCF+JXQRZCV0EWoRcBF2EXwRghGIEY4RlBGaEaARmhGgEaYRrBGyE0QamiR4F2QcdBG4Eb47ICFmO447sj0iIXgWShHEFlARyh00EioSSBHQEdYR3BHiF5oR6BHuI9wX+hH0EfoSABIGIHASDDuOO7ISEhh+EhgSHjUuEiQdNBIqJHIXfBIwEjYcMhI8EkIk8BUSGKISSBJOHz4SVCSoIMQSWhJgIBxKXCAcEmYStBemIHwXpha8F6YcyBJsEnIXpiB8SlA7DhJ4I7IXIiOyFyIWLEpuHxQSfh/yEoQStBjYErQkuhKKEpASihKQIKASlhKcI+4YkBKiIXgSqCP0O44SrhK0E6ofMh8gIKASujteEsASxiAWGIoSzBLSH/Ig0BLYEt4S5BLqEvAS9h7eISoS/BMCEwgTDhuEExo7jjuyExQTGhMgEyYTLBb+EzITOBM+E0QTShNQN24TVhNcE2IVEhiiE2hKbhNuE3QgXiE2IFITejUcE4AkciFmE4YTjBOSE5gTnhhmGtYTpCCaJOoj0BOqOyAhZhOwE7YTvBPCE7wTwhPIE84T1BPaFjgWPhPgE+YT4BPmE+wT8hP4E/4eeBZEIJohbBQEFAoUEBQWFBwUIhQcFCIUKBQuFDQUOhZKFlAUQBRGIKAldDuOO7IUTBRSFFgUXhRYFF4UZBRqFHAUdhZiFmgUfBSCFHwUghSIFI4UlBSaIEwj9D0iIXgUoBSmFKwUshSsFLIUuBS+FMQUyhTQFNYjshciFNwU4hToFO4U9DsOOvwhMBa8IF4hMBT6FQAgahUGFWYVDCBwIF4hMCTAFRIgQCSoHHQVGB0KF0YkfiCgFR4VJBUqFTAVNiCsHpA7jjLQFTwVQhcoIBwVSCF+FU4VVBdwFVoVYDsOJHgf8iOyJOofjCDKHt4e3iEqISoVZhx0IMQVbEp6FXIVeBV+FYQVihWQFZY1+hWcFaI0khWoFa4WOBY+FlYXZBZiFmgWjBaSFbQVuhXAFcYcDhwUFcAVxhXMFdgV0hXYFd4V5BXqJPAWGhYgGzwbQjuOO7IV8BX2FfwWAhYIFg4WFBYaFiAWJhYsFjIWkhY4Fj4eeBZEFkoWUBruGvQWVhdkHswWXBZiFmgWbhZ0G5wWehaAFoYWjBaSFpgWnhakFqoWsBa2FrwWwhbIFs4cdCDKFtQW2iCaIWwW4Bb4FuAW+BbmFuwW8hb4Hw4W/iFCGHgXBBcKITw7ICB8FxAgpjsOIX4gyhcWGKIehD0iJYYgmhccJH4ldB+SJPAleiFII7IXIiFmJPAk8BcoH2gYfiEwF7gg0BesJOokwCEGF7hKaEpWH6QfpCF4Fy4XLiV0JDwaHBc0FzohchdAF0YXRhdGIXgheCRIO7IXTBdSGEIYchdYGHIYchhyF14XXiFmIWYhfhdkF2QhBhdkF2oXcCF4JAAheB+kHyAXdhd8IMoXgiEqISoXvhe+F4gXjheUF5okwBegF6YldBesF7IXuBe+F74XyhfEF8oX0BfWF9wX4hfoF+4X9B0KF/oX+hgAGAYjoBgMGBIYEhgYGB4YJBqgGlgafBgqGDAhGEpQIRgYNhg8HHQYQhhIO7IgXiFIN24YThhUGFodChhgGGY7skpQJXQ7jhhsGHIfdCEwIHwj6Bh4O7IgHCB8IBw7jiTwHz4fIBh+GIQYihiQISogviC+JAwYlhicGKIYqBiuGLQgOhi6ISoY2BjYGNgYwBjGIXgYzBj2INYg1iQMGNIY2BjeGOQhKhjqIMohGBjwGPYY9hj8GQIZCBkIGQ4ZFBkaGSAlJhkmGSwZMhk4GT4ZRBlEGUoZUBlWGVwZYhloGW4ZhhmGGiIZdBl6GYAZhhmMGeYZkhpGGZgZnhmkGpoacBmqGpoZsBm2GbwamhoiGmQZwhnIGc4Z1BnaGeAZ5iDoGewlDhnyGfgZ/h9WGgQaCiF4GhAaFhocJDwhJCQAIEYhNjs6SmghQiEkGiIaKBouGjQaOhpAIQAaRhqaI6AaTBpSGlIjoBpYGl4aZBpkGpoamhpqGnAadhp8GoIaiBqaGo4alBqaGqAaphqmGqwashq4Gr4gRh6EIEYehCBGGsQayhrQITYa1iE2GtYhNhrWITYa1iE2HFAa3BriGuggmiFsIJohbBruGvQa+hsAGwYbDBsSGxgbKiS6Gx4bJBsqJLobKiS6IKAldBswGzYbPBtCJK4hQiSuIUIgpiFyG0gbTiCmIXIgpiFyG1QbWiPoITwbYBtmIKwheCCsIXggrCF4G2wbcht4G34bhBuKG5AblhucG6IbrhuoG64btCV6IUgbuhvAJXohSBveG+QggiF+G8YbzBvSG9gb3hvkG+ob8DsOOvw7Djr8Ow46/Bv2G/wcAhwIPSIheBwOHBQcGhwgHCYcLBwyISocOBw+Hz4fIBxEHEocUBxWHFwcYhxoHG4cdCDKHHQgyiS6HHocgByGHIwckh2yHbIduB24HbgduB2+Hb47IDsgHJgcnhykHKocsBy2HLwcvBzCHMIcwhzCJHgkeBzIPbI2QhzOHegd6B3uHe4d7h3uHfQd9BzUHqIc2hzgNTQc5hzsHPIc+Bz4HP4c/hz+HP4dBB0EIJodCiBSHRAdFh0cHSIdIh72HvYdKB0oHSgdKB0uHTQdOh1AHUYdTB1SHVIdWB1YHVgdWB1eHV4fRB1kHWodcB4kHiQeKh4qHioeKh4wHjAfFB12HXw1NB2CHYgdjh2UHmwebB2aHZoelh6WHaAdoB2mHaYdrB2sHyYfJh2yHbIduB24HbgduB2+Hb4dxB3KNoQd0B3WHdweqB3iHegd6B3uHe4d7h3uHfQd9B36HgAeBh4MHhIeHh4YHh4eJB4kHioeKh4qHioeMB4wHjYePB5CHkIeSB5OHlQeWh5gHmYebCTGHmwech5yHngefh6EOyAeih6WHpAelh6cHpwgQCB8I+geoh6oHq4etB66HroewB7GHswe0h7YHt4e5B7qHvAe8B72HvYe/B8CHwgfDh8UIFIfGh8mHyAfJh8sHywfMh84Hz4fRB9KH1AfUB9WH1wfYiE8H2gfbiFyH24fdCAcH3ofgB+GJLokriFCH4wgyh+SH5gf/h+eH6QfqiQMH7Afth+2H7Yfth+8H7wfvB+8H8Ifwh/CH8IfyB/IH8gfyB/OH84fzh/OH9Qf1B/UH9Qf2h/aH+Af4B/mH+Yf7B/sH/IgrB/4H/4gBCAKIBAgFjaiIBxKXCAiICggLjaiIDQgOiBAIEYgTCBSIFgkciO+IF4gZCBqJK4kriSuIKY7jjuOJXogcCB2O447jiWGJVAgrCB8JK4grCCCIIg7fCCOIJQ7ICCaIKA9IiCmIKwgsiEGIQYguCC+IMQgyiDQINYhBiEGIQYg3CDiIOI7siDoIO4hBiEGIQAhBiD0IQYg+iEAIQYhBiEMIRIhGCFCIUIhQiFyIR4hJCTwJPAhKiEwITAhNiFyITwheCFmIXg7skpoIUIheCFIIX4hTiFUIVohYCFmIWwhciF4JXQheCHqIX4hhCGKIZAhliGcIaIhqCGuIbQhuiHAIcYhzCHSId4h2CHkId4h5CHqSyJLIiHwSyIjiCOOIfYjlCOUIfwjmiICIggjiCIOIhQiGiIgIiYiLCIyIy4iOCJoIj4iRCJKIlAiViJcInoiYiJoIm4ihiJ0InoieiKGIoAihiKGIoYijCKSIuAiyCKYIuAi4CKeIuAiyCKkIrYiqiKwIrYivCLCIsgiziLUNvwi2iLgIvIi5iLsIvI29iL4Iv429iL+NvYjBDb2NvYi/jb2NvYjBCMKIxAjIiMWIxwjIiMoIy4jNCM6I0AjRiNMI1IjWCNeI2QjaiNwI3YjfCOCI4gjjiOUI5ojoCOmI6wjsiO4I74jxCPKI9Aj1iPcI+4j4iPoO447jiPuO44j9CP6JAAkxiQGJFokDCQSJBgkHiQkJCokMCQ2JDwkQiRIJFokTiRUJFokYCRmJGwkciR4JH4khCSKJJAkliScJKIkqCSuJLRKUCS6OzokwCTGJMwk0iTYJN4k5CTkJOok8CT2JPwlAiUIJQ4lFCUaJSAlJiUsJTIlOCU+JUQlSiVQJVYlXCViJWglbjS8JXQleiWAJYYljCWSJZg2tAABAUYDlQABAfECygABAYQDlQABAYkDlQABAYsCygABAR8C5QABAR8DNwABAb8CGwABATEC5QABAR8CrgABAUYCzQABAXsDlwABAR0C6AABAWwDrQABATADXQABASACrgABASAC6AABAZQDnAABAS4C7QABAZQDlwABAS4C6AABALEDlQABAIgC5QABAIgCrgABALEDlwABAZgC6AABAJIDrQABAJMDrQABAIgD2wABARoDrQABAXIDXQABATsCrgABAXID5gABATsDNwABASMDlwABAO4C6AABANsC/QABAW4C1AABAUcDvgABAR8DvgABAcMDrQABAbgC/gABAUwCygABAToCygABAcgCygABAIsDRgABAS4CygABARgCygABASQDkAABAToDIgABARoDIgABAUoDIgABAIsDIgABATYDRgABAPQC+AABAS0C/QABAPIC+AABAVYCGwABAIsC4AABATYC4AABATEDIgABATYDIgABAZMDIgABATcDrQABALEDkAABAd0CygABAXwCygABAT0DrQABAT4DrAABAZQCygABAZEDrAABAVkCygABAXACygABAUoCygABAZoCygABAVQCygABAg0CygABAhQCygABAV8CygABAbYCygABAUACygABAUQCygABAS8C/QABAQACGwABAYcCGwABAVMCGwABAVEC/QABAPoCGwABAQ4CGwABAYwCGwABASAC4AABAN8C/gABAIgC4AABAawCGwABAbsCGwABATsC+AABARYC/gABAQgC/QABAUACGwABAREDXgABAOUCtQABAdcDrQABAZMC/gABAdcDkAABAZMC4AABASQDrQABAcsDrQABAeUC/gABAYgDrQABAU0C/gABAUIChAABApACygABAhcCGwABAV0CygABAloCygABAggCGwABAoECygABAiECGwABASwDWQABAP8CmwABAYgC9wABAT4CygABAUoDrQABAQ8C/gABAi8CGwABAZkCGwABAYgDogABAVMC/QABASwC+AABATUCygABAVICygABARUCGwABAaQCGwABAVwCygABAScCGwABAIcC+AABAbUCGwABAYYCygABAPkCGwABAXQCGwABAUYCGwABAfsCygABAYYCGwABAbgDrAABAYkC/QABAXkCygABAXMCygABAVcCGwABAWECygABAUYDrAABAUYDkAABAR8C4AABATADrAABASAC/QABAX4DkAABAR4C4AABAbgDkAABAYkC4AABAS8DkAABAP8C4AABAYgDXQABAU0CrgABAYgDkAABAU0C4AABAYkDhQABATEC4AABAUEDhQABAPoC4AABAT4DXQABAT4DkAABAQgC4AABAT4DrQABAQgC/gABAWEDkAABATkC4AABAN8CGwABAbQDkAABAZAC4AABAUsCygABATECygABARACGwABAcYC+AABAZ4CGwABAfQCygABAbkCGwABAgACygABAdACGwABAYICygABAVQCGwABATkCGwABAUYD3QABAR8DOAABAUYD0QABAR8DLAABAUYEDAABAR8DZwABAUYEGgABAR8DdQABAUYD8QABAR8DTAABAUYEEwABAR8DbgABAUYEGAABAR8DcwABATAD3QABASADOAABATADlQABASAC5QABATAD0QABASADLAABATAEDAABASADZwABATAEGgABASADdQABALED3QABAIgDOAABAYkD3QABATEDOAABAYkD0QABATEDLAABAYkEDAABATEDZwABAYkEGgABATEDdQABAY4DrQABAT0C/gABAY4D3QABAT0DOAABAY4DlQABAT0C5QABAXID3QABATsDOAABAZYDrQABAV4C/gABAZYD3QABAV4DOAABAZYDlQABAV4C5QABAZYCygABAV4CGwABASQD3QABAQgDOAABASQDlQABAQgC5QABAToC+AABAUICygABATUC+AABAXsDUgABAW4CygABAQ0CygABAbADGwABATwCygABARgC/gABAIwC+AABARoC/gABAgQCygABAbMCGwABAWACygABARMCygABASECygABALwC/gABASYCygABAMAC/QABAR0C/QABAO0ClAABAKIC+AABAXUC+AABAQIC+AABAIkCygABA/YDrQABA8sC/gABA1oC/gABAqAC6AABAZgC+AABA5AC6AABAv4C6AABAXID+QABATsDSgABAXIEGQABATsDagABAUYD+QABAUYD7wABAR8DSgABAcMDXQABAbgCrgABAawCygABAYkDXQABATECrgABASUDrQABAQUC/gABA/YCygABA8sCGwABA1oC+AABAZQDrQABAS4C/gABAeUCygABAU0CygABAYQDrQABAUYDrQABAR8C/gABAR8C7QABATADrQABASAC/gABALEDrQABAIgC7QABAYkDrQABATEC/gABAYkDnAABATEC7QABAPQC/gABAT8DnAABAPQC7QABAXIDrQABATsC/gABAXIDnAABATsC7QABARwCygABAOoCGwABAXcDrQABAIkD2wABAXYCygABAbEC+AABAV4CygABAS8C+AABAUYDlwABAR8C6AABAYkD+QABAYkDlwABATEC6AABAYkD7wABATEDSgABAQgCrgABAMsClAABAeUC+AABAR0C+AABAOUCygABASAC+AABAQgCGwABATcC/QABATsC/QABAMYC+AABALcC+AABAVgC+AABAdsCGwABAbECGwABAY4CGwABANUC+AABALUCGwABAIgC/gABAMACGwABAMAClAABAQgDCwABAPsCGwABARQCGwABAN0C+AABAPECGwABAYkC1QABASgCGwABASMC/QABAUMCGwABARgCGwABAOACGwABATcC/gABAN0C/QABAugC+AABAswC+AABAiIClAABAdQC/QABApMClAABAlYC/QABAakC+AABAYQC+AABAQMCygABAT4CGwABAFkC5wABAM0C6gABAJ8CYgABAIoCYgABALoCYgABAQYCYgABAKwCYgABALACYgABAJAC6gABASwC/QABAa8CygABAXgC+AABAYMCygABAO8CGwABAPkCygABARUC/gABAQIC/QABAUQCGwABAPwCGwABANUCGwABAXkCGwABAQ0CGwABAWsCGwABAbgCGwABASYCGwABAOMCGwABAI4CGwABAOICGwABAQQCGwABAOECGwABAXICGwABAT8CGwABAd4CGwABARkCGwABATsBDQABATICGwABATYCGwABAZACGwABATYCmAABAXACGwABAOcCGwABAP4CGwABANQCywABAUMCywABANUCywABAOwCywABAMUCywABAK8CywABAQYCywABAHMCywABAF8CywABAN8CywABAGACywABASoCywABAPwCywABAP8CywABAOMCywABANACywABAM8CywABALcCywABAPACywABATICywABAR4CYgABANkC5wABAK4C5wABALsCYgABALYCYgABAJQCYgABAF0CYgABAFoC5wABATwCYgABAIECYgABAM0BwAABANkCYgABAG0CqwABAKkCYgABAKUCYgABANUC6gABAK0CYgABAMYC6AABAPICYgABALcCYgABAJ8A4wABAKkA4wABANUBawABAK0A4wABAPIA4wABALcA4wABAT4AAAABANICYgABAKYCGwABAMoCYgABALkCYgABAK8CYgABAMYC6gABAKYCYgABAKcC6gABAMQCYgABAFoCYgABAGwCYgABAFgC5wABAJICYgABATUCYgABANYCYgABAMYCYgABAPQC5wABAJ4CYgABAFgC6gABAH0CqwABAMkCYgABAMcCYgABAM0CYgABAKsCYgABAJoCYgABALMCYgABAKoCYgABAMQC6gABAUgDlwABAXsDrQABAR0C/gABAWwDlwABAWwCygABASAC4QABATADmQABASAC6gABATADnAABASAC7QABASoDlwABAQEDoQABAZQDXQABAS4CrgABAXcDlwABAIkDxQABAXcDkAABAIkDvgABAXcCygABALEEGQABAIgDagABAVcDrQABAIoD2wABAJMDXQABAIgDiwABAcsDlwABAeUC6AABAYQDlwABATsC6AABAYkEIAABATEDcQABAYkEBQABATEDVgABAYkDkAABATEC4QABAYkDmQABATEC6gABAT8DrQABAU4C/gABAU4C6AABAT8DlwABAPQC6AABAT8DXQABAPQCrgABAR0DrQABAPMC/gABAR0EBQABAPMDVgABAR0DlwABAPMC6AABARoDlwABAKcDXAABAXIDkAABATsC4AABAXIDlQABATsC5QABAXIEIAABATsDcQABAXIEBQABATsDVgABATMDlQABAQUC5QABATMCygABAdcDlwABAZMC6AABATADlwABAQ4C6AABATADkAABAQ4C4AABASQDlwABAQgC6AABASMDrQABAO4C/gABASMCygABAKcDWAABAZMDNwABAQgDNwABAR8DGAABANsDoQABAb4CygABAcICygABAaYCygABAagCygABAaMDKgABAaYDKgABARoDDAABARoDBwABAiECygABAhECygABAcoCygABAl4CygABAlwCygABAlsCygABAmUDKgABAmIDKgABAIsDDAABAIsDBwABAIsDXAABASkCygABAboCygABAdsCygABAdQCygABAcsDKgABATEDBwABAbsCygABAdECygABAm0CygABAmsCygABAjoCygABAjsCygABATYDDAABATYDBwABATYDXAABAkgCygABAl8CygABAncDKgABAckCygABAmkCygABAj8CygABAkQCygABAjIDKgABAk8DKgABARoC/QABAIsC/QABATEC/QABATYC/QABAToDDAABAToDBwABAToDXAABAxICGwABAw0CGwABA4sCGwABA3MCGwABA3gCGwABA3oCGwABAUoDDAABAUoDBwABAUoDXAABA9MCGwABA80CGwABBG0CGwABBGwCGwABBGkCGwABBGgCGwABBGACGwABAZMDDAABAZMDBwABAZMDXAABA9wCGwABA+kCGwABBH4CGwABBFoCGwABBGICGwABBEcCGwABBE8CGwABAToC7QABAToCrgABAToC/QABAToC5QABAUYDnAABAUYDXQABAUgCygABAxkCGwABAUoCGwABAUoC/QABAUoC5QABAc8CygABA3cCGwABAIsC7QABAIsCrgABAIsDCgABAIsC5QABAIsDXQABALEDnAABALEDXQABASACygABASUCygABATYC7QABATYCrgABATYDCgABATEDDAABATYC5QABATYDXQABASQDnAABASQDXQABAbkCygABAZkCygABAZMCGwABAZMC/QABAZMC5QABAdwCygABAa0CygABAdcCygABAbICygABA5oCGwABALsA4wABAMYA4wABALAA4wABALYA4wABAMYCGwABAQwCygABATICygABAR8C+AABAKcC+AABAYcCygABAR8CygABAYECygABAQ8CGwABAZ0CGwABAQcCGwABARICygABAXUCGwABAToDawABAToDiQABAIsDawABAIsDiQABATYDawABATYDiQABAIsDuQABAIsDtwABATYDuQABATYDtwABAW8CygABAWoCygABAeQCygABAaACGwABAZwCygABAZ8CGwABAcMCygABAT0CygABAgkCygABAaICGwABAisCygABAXUCygABATwCGwABAX4CygABAU4C+AABAY4CygABAccCygABAWsCygABATcCygABAwYCygABAPoCygABAZ0CygABAkUCygABAXsCygABAR0CygABAekCygABASEAAAABARkAAAABATACygABALECygABAJMCygABAYQCygABAOgCGwABATAC+QABASwCGwABAP8CGwABAO4CGwABAR4CGwABAQwCGwABAQ4C+AABAKwC/QABAFgBXgABANYC/QABAFgA4wABAFgCYwABAFgCYgABAIgCGwABAnUCGwABAoICGwABAPUCGwABAUcCGwABAU4CGwABAQUCGwABATcC+AABAQsC+AABAeUCGwABAIoC+AABAPQCGwABAUgC/QABAYMAAAABASkC/QABAQoCGwABAR8CGwABASACGwABAIgC+AABATsCGwABAPMCGwABARMCPwABARIDFAABARIDEQABARIDIgABARIC9AABARIDFwABARIC0gABARICPwABARIDWwABARIDqgABARIDCQABAX4CPwABAXADFAABAQ0CPwABATkDFAABATkCPwABATkDIgABATkC/QABASkDIgABAPMDEQABAPMC9AABAPMDFwABAPMC0gABAO8CPwABAUYCPwABAUYDEQABAUYDIgABAUYCRwABAUYC/QABATICPwABATIDIgABAJoDFAABAJoDEQABAJoDIgABAJoC9AABAJoDDAABAJoDFwABAJoC0gABAJoCPwABAJoDCQABAH0DIgABARcCPwABAH0DFAABAH0CPwABAOECPwABAXoCPwABAUIDIgABAUIDCQABAUIDFQABAUIC9AABAUIDFwABAUIDJgABAUIC1gABAUQCQAABAUIDFAABAUIDDQABAYMCPwABAP0CPwABAUICPwABAQcDFAABAQcDJgABAQcCPwABAOYDFAABAOYDIgABATECPwABATADFAABATADEQABATAC9AABATADFwABATADIgABATAC0gABATACPwABATADWwABATADCQABAQYCPwABAY0CPwABAY0DFAABAY0DIgABAY0C9AABAY0DFwABAQUCPwABAPcCPwABAPcDFAABAPcDIgABAPcC9AABAPcDFwABAPMCPwABAPMDFAABAPMDIgABAPMDDAABAFgC3QABAvwBdAABAOYCygABASQCygABAcsAAAABAXECygABAsYCygABAWcCygABAXQCygABAQcCygABAXgCygABAWgCygABAcsCygABAWUCygABAT0CGwABAlcCGwABATUCGwABARsDAAABAOkCGwABAXgCGwABAMsCygABAcwCGwABAFYC+AABALEC+AABATMC+AABAPICGwABAIsCGwABAagCGwABAUkCGwABASsCGwABAYMCGwABAS8CGwABAOQCYgABAMMCYgABAOQCygABAUcCygABAYgCygABAJICygABAMwCGwABARAC+gABAU0CGwABAT8C/QABAOYAAAABAUYDbwABAS8CygABAVcCygABAZ4CygABAIkC+AABATACGwABAToCGwABAfkCGwABANkC+AABAMwC+AABAd4ABwABAekAAQABARoCGwABATcCGwABAFkBaAABAFoBaAABAFgBaAABATwA4wABAM0A4wABANkA4wABAJ4A4wABAG0BLAABAPMCywABATcCYgABAI0C5wABAIAC5wABAX8AAAABAYUCygABAUAAAQABAYUAAAABASQAAAABADQBaQABAj4BUwABAiMBWQABAu8CygABAIgC6AABAT8CygABAPcCygABATYCygABAOL//AABAMkCywABAYAAAAAEAAAAAQAIAAEqBAAMAAEqZAUyAAIA2wAkAD0AAABEAF0AGgCCAIcANACJAJEAOgCTAJgAQwCbAJ8ASQCiAKcATgCpAK0AVACzALgAWQC7AL8AXwDBANEAZADUAOcAdQDqAOoAiQDsAOwAigDuAO4AiwDwAPIAjAD1APUAjwD3APgAkAD6AQEAkgEEAQoAmgENARIAoQEVASYApwEoAT8AuQFIAUkA0QFVAVUA0wFXAVsA1AFeAV8A2QFiAWcA2wFpAWoA4QFsAWwA4wFuAW4A5AFwAXEA5QFzAXMA5wF2AXcA6AF+AX8A6gGEAYQA7AGLAYsA7QGTAZMA7gGYAZgA7wGbAZsA8AGfAaIA8QGpAakA9QGrAasA9gGuAa4A9wG1AbcA+AG5AbsA+wG+Ab4A/gHJAckA/wHOAc4BAAHXAdcBAQHZAdoBAgHcAdwBBAHeAd4BBQHpAekBBgHtAe4BBwHwAfABCQH1AfUBCgH5AgABCwIXAhcBEwJCAkUBFAJMAkwBGAJOAk4BGQKTApQBGgKXApcBHAKkAqQBHQKpAqkBHgK4ArwBHwK/AsABJALPAtABJgLYAtgBKALaAtoBKQLcAtwBKgLqAuoBKwL9AyUBLAMnAzYBVQNBA0QBZQNPA1QBaQNgA2EBbwNwA3ABcQOPA48BcgOqA6wBcwOuA70BdgPCA8kBhgPPA9ABjgPTA90BkAPfA98BmwPhA+wBnAPvA/ABqAP1A/UBqgP3BAQBqwQKBA4BuQQUBBQBvgQWBBcBvwQcBCABwQQoBCgBxgQuBC4BxwQyBDIByAQ1BDUByQQ8BDwBygRGBEYBywRUBFQBzARWBFYBzQRZBFsBzgRlBGUB0QRrBGsB0gR9BH0B0wR/BIEB1ASEBIUB1wSjBKUB2QTGBMYB3ATMBMwB3QTaBNsB3gThBOEB4ATmBOYB4QToBOsB4gT9BP4B5gUJBQwB6AUOBQ4B7AUYBRgB7QUaBSgB7gUqBTAB/QUzBTUCBAU5BTkCBwU7BTwCCAU+BT4CCgVCBUcCCwVJBUoCEQVNBVMCEwVWBVYCGgVcBVwCGwVjBWMCHAVpBWkCHQVsBXACHgV0BXQCIwWIBYgCJAWMBYwCJQWOBZACJgWiBaICKQWmBacCKgWrBdgCLAXaBjwCWgZGBk0CvQZUBlkCxQZiBmkCywZyBoUC0waOBpEC5waqBqsC6wa4Br8C7QbIBs8C9QbnBusC/Qb2BvoDAgcEBwcDBwcTBxcDCwcgByEDEAdAB0MDEgdIB0gDFgdiB2MDFwdlB2cDGQfZB9kDHAffB98DHQfkB+QDHgfqB+wDHwfuB/ADIgfyB/YDJQf5B/kDKggFCAUDKwgKCAsDLAgNCA4DLggQCBEDMAgVCBYDMggbCCADNAgxCDEDOgg5CDkDOwhGCEcDPAhNCE8DPghRCFIDQQhVCFUDQwhYCFkDRAhcCFwDRghkCGcDRwh0CHsDSwiACIUDUwiLCJcDWQiaCKEDZgijCKMDbgilCLUDbwi3CL4DgAjACMsDiAjNCNEDlAjTCNsDmQjeCN4DogjgCOADowjiCOwDpAjuCO4DrwjwCQ4DsAkQCRMDzwkcCRwD0wktCS4D1AlOCU4D1gl6CXoD1wmMCY0D2AmYCZgD2gmcCZwD2wmsCa0D3AmvCa8D3gm3CbcD3wm6CboD4Am8CbwD4QnWCdYD4gnfCeYD4wnrCesD6wrWCtYD7ArYCtsD7QrfCt8D8QriCuMD8grqCuoD9ArvCu8D9QyIDIgD9gyQDJAD9wP4EtoJ/A0sEqQLdgmuCbQLBBIUDJYMnBJKDIoSdBNcC1gTXA0sC2oLTAt8DTIJugnACxYJzAvWCagMqBK2C9wTMgu4DK4SJhImC74S7AusEoYTbgugC7gLxAvKEsgL4gumCdgJxgneCdIS2hLaEtoS2hLaEtoNLAt2C3YLdgt2EhQSFBIUEhQSdBNcE1wTXBNcE1wLfAt8C3wLfAsWC9YL1gvWC9YL1gvWDKgL3AvcC9wL3BKGE24TbhNuE24TbgviC+IL4gviCd4J3hLaC9YS2gvWEtoL1g0sDKgNLAyoDSwMqA0sDKgSpBK2C3YL3At2C9wLdgvcC3YL3At2C9wJtAu4CbQLuAm0C7gJtAu4CwQMrhIUEhQSFBIUEiYSFAyWDJwLvhJKEuwSShLsEkoS7BJKEuwSdBKGEnQShhJ0EoYH8hNcE24TXBNuE1wTbg0sC8QNLAvEDSwLxAtqC8oLagvKC2oLygtqC8oLTBLIC0wSyBLIC3wL4gt8C+ILfAviC3wL4gt8C+ILfAviCboJ2AsWCd4LFgnMCdIJzAnSCcwJ0gtqC8oH+ApQB/4IBAr+CwQS2gn8C3YJzAsEE1wSFAycDIoSdBNcC1gLTAsWCcASFAsWC9AJxggKE24MxhNuC3YLahIUEhQMlhLaCfwLdgyKCwQTXAtYDSwLTAnAC9YL3BNuC6AMqAneCcYL3AvKEiYSJgneCboJ2Am6CdgJugnYCxYJ3ggQDIoLrBLaC9YLdgvcDSwMqAsWDK4SFBIUEtoL1hLaC9YLdgvcE1wTbgneCd4J3hK2EtoL1hLaC9YS2gvWEtoL1hLaC9YS2gvWEtoL1hLaC9YS2gvWEtoL1hLaC9YS2gvWC3YL3At2C9wLdgvcC3YL3At2C9wLdgvcC3YL3At2C9wSFBIUEiYTXBNuE1wTbhNcE24TXBNuE1wTbhNcE24TXBNuC3wL4gt8C+ILFgneCxYJ3gsWCd4LTBLICBYLfBLaC9YSFBNcE24LfAviC3wL4gt8C+ILfAviC3wL4hLaC9YS2gvWCbQLuAycC74TXBNuE1wTbgm0C7gSdBKGEtoL1hLaC9YLdgvcC3YL3BIUEhQTXBNuE1wTbg0sC8QNLAvEC3wL4gt8C+ILBAyuCcwS2gvWC3YL3BNcE24TXBNuE1wTbhNcE24LFgneEtoNLAyoEkoLTAt8C3YL3A0sC8QLFgneCCgIHAu4CCISJggoDRQILgviDRQNFA0UE1wINAg6DHIIQAmWCEYITAhSCFgJSAyoCF4MqBImDSwNLBNcC7gJugnYCGQIaghwCHYIfAiCCdIIiAiOCI4IlAiaCKAIpgisCLIIuAi+CMQIygjQCNYI3AjiCOgI7gj0CPoJSAk2CQAJBgkMCYQJEgkYCR4JJAkqCZAJMAk2CTwJQglICU4LgglUCVoJYAlmC0AJbBKGCXILoAmoErYTMgu4C74LoAl4CX4JhAmKDHIJkAmWCZwJogn8CagJ/AmoCfwJqA0sDKgSpBK2EqQSthKkErYSpBK2EqQStgt2C9wLdgvcC3YL3At2C9wLdgvcCa4TMgm0C7gLBAyuCwQMrgsEDK4LBAyuCwQMrhIUEiYSFAycC74MnAu+DJwLvhJKEuwSShLsEkoS7BJKEuwMigusDIoLrBJ0EoYSdBKGEnQShhJ0EoYTXBNuE1wTbhNcE24TXBNuC1gLoAtYC6ANLAvEDSwLxA0sC8QNLAvEC2oLygtqC8oLagvKC2oLygtqC8oLTBLIC0wSyAtMEsgLTBLIC3wL4gt8C+ILfAviC3wL4gt8C+INMgumDTILpgm6CdgJugnYCcAJxgnACcYLFgneCcwJ0gnMCdIJzAnSDK4SyAnYCd4L1hLaEtoJ5AnqCfwJ8An2CfwKVgpWCgIKCAoOChQKGgogCuYKJgrgCiwKMgo4Cj4KRAycCkoKUApWClwKXBNuE24TbhNuE24TbgpiCmgKbgp0CnoKegqACoYKjAqSE24TbgqYEtoKngqkCqoKsAq2CrwKwgrICs4KzgrUCtoK4ArmEtoS2grsEtoS2gryDSwK+Ar+CwQSFBIUCwoLEAsWCxYSpAscCyILKAsuC0ALNAs6C0ALrAvWEsgMrgycC74LRgtMC1IMnAycDJwSShNcE1wLWAteC2QTXBNcDTINDhJ0DSwMnBJ0C2oLcA0UDRQS2gt2EhQLfBJKEnQLgguIC44LlAu+C74LvhLsC5oLoAu4C7gLphK2EuwLrBKGEoYLsgu4C74ShgvEC8oL0AvWC9wS7BKGEiYL4gvoC+4L9Av0C/QL9Av0C/QL9Av0C/QL9Av0C/oMYAxgDGAMYAxgDGAMAAwADAYMBgwGDAYMBgwGDAYMBgwGDAYMDAwSDBIMEgwSDBIMGAwYIFwgXCBcIFwgXCBcIFwgXCBcIFwMHgweDFQMVAwkDCQMJAwkDCQMKgw2DDYMNgw2DDYMNgw2DDYMNgw2DDYMNgw2DDYMMAw2DDwMPAw8DDwMQgxCDEIMQgxCDEIMSAxIDEgMSAxODE4MTgxODE4MTgxODE4MTgxODE4MVAxaDFoMWgxaDFoMYAxmDGYMZgxmDGYMbAxsDGwMbAxyDHgMfgx+DRQMhAyKE1wMkAyWDRQS2gycDKIMqAyuEzIMtAy6DMAMxgzMDNIM2AzeDOQM6gzwDPYM/A0CDQgNDg0UDRoNIA0mEiYNLA0yDTgNPgABApICGwABAiICygABAzYCygABAdYCygABAgoC/QABAXYCYgABAfYCygABABQCGwABAFb/IwABADIAAAABAB7/hwABAAT/IwABAWEC5wABAQcCYgABAf8CYgABAUoCYgABAIwC5wABASECYgABAtsC+AABAjf/9wABAkQAPAABAkEADgABANkCFAABAkP/aAABAdQCGwABAV8CywABAZ4CywABAc8CywABAV0CywABAUYCywABAcsCywABAdkCywABANkCywABALACywABAY4CywABAPECywABAkcCywABAesCywABAfUCywABAfICywABAYECywABAY8CywABAWECywABAdMCywABAlcCywABAVQC5wABAW0C5wABAWcCYgABAWkC5wABAkgCYgABAXoCYgABAYICYgABAOUCqwABAXcBJwABACABHwABAUkCYgABAW8C6gABAVQCYgABAWECYgABAQcA4wABAXUA4wABAUkA4wABAW8BawABAWEA4wABADoAAAABATACYgABAP4C6gABAW4CYgABADgAmgABAXUCYgABAA0BHwABAR0CYgABAVMC6gABAgsC+AABAfwCygABAsMCygABA5kCygABAk4CygABAgsCGwABAioCygABAbYCGwABAxMCGwABAfsCGwABApQCygABApgCygABAn4CygABAnkCygABAnwCygABAwoCygABAwUCygABAvsCygABAvoCygABAysCygABAzECygABA74CygABA70CygABA8cCygABA8MCygABAcwCygABAcYCygABAlYCygABAncCygABAnECygABAmcCygABAy8CygABA0UCygABA+ECygABA98CygABA68CygABAsICygABA1gCygABA28CygABA4cCygABAiACygABApMCygABApsCygABAoQCygABAogCygABAoUCygABAoMCygABAzQCygABAy4CygABA80CygABA8kCygABA8ECygABA8gCygABA8ACygABAh4CygABAmgCygABAy0CygABAzACygABAtgCygABAbwCygABAcECygABAjMCygABAtYCygABAqoCygABA1ACygABAyECygABAWcA4wABAXoA4wABAVQA4wABAHIAAAABAh8CygABBHoCygABAlACygABAq0CygABA1YCygABAhICygABA0sCygABAhkCygABAs4CygABAKQBXgABAKQCYwABA2ICGwABA5cCGwABAlwCGwABAlECGwABAfoCGwABA4MCGwABAegCGwABAjICGwABAisC+AABAZUCGwABAbwCGwABAjUC/QABAgwCGwABAigCGwABAj4CGwABAqUClAABA0EClAABAg8CPwABAgUCPwABAj0CPwABAbECPwABAZsCPwABAkICPwABAlACPwABAOYCPwABAPwCPwABAuACPwABAeMCPwABAm8CPwABAfkCPwABAbcCPwABAbkCPwABAkwCPwABAfgCPwABAwUCPwABAfYCPwABAdkCPwABAdECPwABAKQC3QABAvwA1wABABQCygABABMCygABA4ICygABACgCGwABAQ4CygABAmQCygABAtMCygABAdMCGwABAh8C+AABAwECGwABASkC+AABARwC+AABAh8CGwABAWEBaAABAWkBaAABAIwBaAABAkgA4wABAXYA4wABAYIA4wABASEA4wABAOUBLAABAMEC5wABAKYCygABABAAAQABAKYAAAABABQAAAABADQC3QABA9kCygABA2YCygABAmUCygABAlMCygABAYMCywABAzACGwAFAAAAAQAIAAEG0gKEAAEIEgAMABIAJgA4AEoA2AD8AFwAbgB8AJYAqAC6AMYA2ADqAPwBDgFIAYoAAgAGAAwAAQDeAAAAAQK7AAAAAgAGAAwAAQEaAAAAAQIt/xkAAgAGAAwAAQFKAAAAAQNoAAAAAgAGAAwAAQCgAAAAAQIEAAAAAwAWABwACAABA1MAAAADAAgADgAUAAEAkAAAAAEB9QAAAAEDUQAAAAIABgAMAAEAngAAAAEB7QAAAAIABgAMAAEAnQAAAAEB7AAAAAIABgAkAAEDrgAAAAIABgAMAAEBLwAAAAEDhQAAAAIABgAMAAEBigAAAAEDswAAAAIABgAMAAEA/wAAAAEDAQAAAAIABgAMAAEBMAAAAAECvgAAAAcAEAAWABwAIgAoAC4ANAABAqwAjgABAMAAjgABAjEBkgABAbYAjgAB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ADYANwA4ADkAOgA7ADwAPQA+AEAAXgBgAGMAcQCBAIIAgwCEAIUAhgCHAIgAiQCKAIsAjACNAI4AjwCQAJEAkgCTAJQAlQCWAJcAmACaAJsAnACdAJ4AnwCgAMIAxADGAMgAygDOANAA0gDUANYA2ADaANwA3gDgAOQA5gDoAOoA7ADuAPAA8gDzAPUA9wD6APwA/gEAAQIBBAEGAQgBCwENAQ8BEQETARUBFwEZARsBHQEfASEBIwElAScBKQErAS0BLwExATMBNQE3ATkBOgE8AT4BQgFEAUYBSAH5AfsB/QH/AhMCFAIVA2AH2AuBC4ILgwuEC4ULhguHC4gLiQuKC4sLpwABAAAAAQAIAAIBPACbCqkLfwquCq8KsAqnCqgIjQiaCJsIoQilCK8IsAi1CLgIwwjFCMcIzQjOCNQI4AjiCOMI5wjuCPMI/gj/CQQJBQkKCqUKpgqrDEoKsQjtCJIIjgiQCJcIkQiVCJgIngisCKYIqQiqCL4IuQi7CLwIogjTCNkI1QjXCN4I2AjcCPgI9Aj2CPcJBgjhCQgIkwiPCJQInAifCKAInQijCKQIrQinCKsIrgioCLIIsQi0CLMItwi2CMIIwAi6CMEIvwjECMYIyAjKCMkIywjMCM8I0QjQCNII2wjWCNoI3wjkCOYI5QjoCOsI6gjpCPII8AjvCP0I+gj1CPwI+Qj7CQEJBwkLCQ0JDAiWCJkI3QjsCQMJAAkCCQkKrAqtCqoI8Qw+DD8MQAxBDEIMQwxEDEUMRgxHDEgMSQABAJsABAAJAAsADAAiAD4AQABEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBgAGMAcQCBAKEAogCjAKQApQCmAKcAqACpAKoAqwCsAK0ArgCvALAAsQCyALMAtAC1ALYAtwC4ALoAuwC8AL0AvgC/AMAAwQDDAMUAxwDJAMsAzQDPANEA0wDVANcA2QDbAN0A3wDhAOMA5QDnAOkA6wDtAO8A8QD0APYA+AD7AP0A/wEBAQMBBQEHAQkBDAEOARABEgEUARYBGAEaARwBHgEgASIBJAEmASgBKgEsAS4BMAEyATQBNgE4ATsBPQE/AUMBRQFHAUkB+gH8Af4CAAITAhQCFQNhC4ELgguDC4QLhQuGC4cLiAuJC4oLiwun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CksKdgqiCk4KSgqCCk0KQgp8BzYKtAq/CrcKugq5CrgKuwq8Cr0Kvgc3BzgHOQc6BzsHPAc9CQ4CKgIrBz4CLAItBz8K1QrSCs8KmAqZAhcK1ArRCs4KjgqPB0UHRgdHAhgCGQdIB0kCGgdKB0sKwwNVAhsKwArECsUHVQfVCsYKwQrCCscMlArcCt0JjgrfCuACHAreCZcK6wriCasJhwmACY8JpwmoCYgJgQmJAh0K5QmQAh4HVwrwCZEJkgmLCYIJkwroCuoK7AruAh8K7wmUCuYCIArICYMLgAmYCY0Jhgl/AiEJqQmZCZoJjAmbCaoKyQrLCtAKzQrjCtsK4QmmCaUJlgmKCtcK2ArZCtYK2gmVCaEJogmjCaQK6QrKCucHWAdZCu0KKgorCiwHWgdbCiQKJQomCicKKAopAiICIwIkAiUKIgfXB9kMigdrB2wHbQduB28HcAdxCCUIMggwCCEIMQyIDIsMjApsCmsKVwpwClQKbQpkCmMKRQpYCnEKZQpWCm8KRwpeCkwKZwpRCkMKRgqMCkQHcgpSCl0Kmgp5ClUKbgp3CngKWQpyCpIKkwqQCpEKlgqXCpQKlQqDClwKdApJCmkJ7gpzCo0KfQpiCmEKfwpACkEKfgp7Cp4KnQqGCocKiAqJCp8KigqkDJUMlgkaCUwJGwlNCRwJTgkdCU8JHglQCR8JUQkgCVIJIQlTCSIJVAkjCVUJJAlWCSUJVwkmCVgJJwlZCSgJWgkpCVsJKglcCSsJXQksCV4JLQlfCS4JYAkvCWEJMAliCXIMVAxjDGQMZQqLCrMJcwkxCWMJMglkCTMJZQk0CWYJNQlnCTYJaAk3CWkJOAlqCTkJawk6CWwJOwltCTwJbgk9CW8JPglwCXQJdQxfDGAH3Ag9B90IPgfeCD8H3whAB+AIQQfhCEIH4ghDCEQIRQfjCEYH5AhHB+UISAfmCEkH5whKB+gISwfpCEwH6ghNB+sITgfsCE8H7QhQB+4IUQfvCFIH8AhTB/EIVAfyCFUH8whWB/QIVwf1CFgH9ghZB/cIWgf4CFsH+QhcB/oIXQmECYUH+wheB/wIXwf9CGAH/ghhB/8IYggACGMJ5whkCGUIZghnCGgIaQhqCGsIAQhsCAIIbQgDCAQIbggFCG8IBghwCAcIcQgICHIHfgd/B4AHgQeCCAkIcwkPCAoIdAgL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ACYBTVUAAAcLowI9AAAAAP//AF//RgHxAsoCJgAoAAAABwujAlsAAP//ADT/RgILAiUCJgBIAAAABwujAloAAP//AF8AAAHxA90CJgAoAAABBwJLAlgApQAIsQEBsKWwMysAAP//ADT/9gILAzgCJgBIAAAABwJLAlkAAP//AF8AAAHxA5QCJgAoAAABBwFRAEoArwAIsQEBsK+wMysAAP//ADT/9gILAuUCJgBIAAAABgFROwAAAP//AF8AAAJCA9ECJgAoAAABBwNWAlEApQAIsQECsKWwMysAAP//ADT/9gI/AywCJgBIAAAABwNWAk4AAP//ABMAAAHxA9ECJgAoAAABBwNXAlIApQAIsQECsKWwMysAAP//ABH/9gILAywCJgBIAAAABwNXAlAAAP//AF8AAAIhBAwCJgAoAAABBwNYAlAApQAIsQECsKWwMysAAP//ADT/9gIbA2cCJgBIAAAABwNYAkoAAP//AF8AAAHxBBoCJgAoAAABBwNZAk8ApQAIsQECsKWwMysAAP//ADT/9gILA3UCJgBIAAAABwNZAkoAAP//AF//RgHxA60CJgAoAAAAJwujAlsAAAEHAUoAVACvAAixAgGwr7AzKwAA//8ANP9GAgsC/gImAEgAAAAmAUpEAAAHC6MCWgAAAAD//wAmAAABOwPdAiYALAAAAQcCSwHfAKUACLEBAbClsDMrAAD//wA7AAAA/AM4AiYIKgAAAAcCSwG2AAD//wAm/0YBOwLKAiYALAAAAAcLowHfAAD//wBM/0YAxQLoAiYATAAAAAcLowG4AAD//wA8/0YC1QLVAiYAMgAAAAcLowK4AAD//wA0/0YCLgIlAiYAUgAAAAcLowJeAAD//wA8//YC1QPdAiYAMgAAAQcCSwK3AKUACLECAbClsDMrAAD//wA0//YCLgM4AiYAUgAAAAcCSwJeAAD//wA8//YC1QPRAiYAMgAAAQcDVgKvAKUACLECArClsDMrAAD//wA0//YCRwMsAiYAUgAAAAcDVgJWAAD//wA8//YC1QPRAiYAMgAAAQcDVwKvAKUACLECArClsDMrAAD//wAY//YCLgMsAiYAUgAAAAcDVwJXAAD//wA8//YC1QQMAiYAMgAAAQcDWAKuAKUACLECArClsDMrAAD//wA0//YCLgNnAiYAUgAAAAcDWAJWAAD//wA8//YC1QQaAiYAMgAAAQcDWQKuAKUACLECArClsDMrAAD//wA0//YCLgN1AiYAUgAAAAcDWQJWAAD//wA8/0YC1QOtAiYAMgAAACcLowK4AAABBwFKAK0ArwAIsQMBsK+wMysAAP//ADT/RgIuAv4CJgBSAAAAJwujAl4AAAAGAUpVAAAA//8APP/2AzQDrQImAkcAAAEHAHYBHACvAAixAgGwr7AzKwAA//8ANP/2Ap0C/gImAkgAAAAHAHYAxAAA//8APP/2AzQDrQImAkcAAAEHAEMAzACvAAixAgGwr7AzKwAA//8ANP/2Ap0C/gImAkgAAAAGAEN0AAAA//8APP/2AzQD3QImAkcAAAEHAksCuwClAAixAgGwpbAzKwAA//8ANP/2Ap0DOAImAkgAAAAHAksCYAAA//8APP/2AzQDlAImAkcAAAEHAVEAowCvAAixAgGwr7AzKwAA//8ANP/2Ap0C5QImAkgAAAAGAVFLAAAA//8APP9GAzQC+AImAkcAAAAHC6MCtgAA//8ANP9GAp0CbQImAkgAAAAHC6MCXwAA//8AWf9GAokCygImADgAAAAHC6MCngAA//8ATv9GAiMCGwImAFgAAAAHC6MCWwAA//8AWf/2AokD3QImADgAAAEHAksCmwClAAixAQGwpbAzKwAA//8ATv/2AiMDOAImAFgAAAAHAksCYgAA//8AWf/2A0kDrQImAkkAAAEHAHYBBQCvAAixAQGwr7AzKwAA//8ATv/2AuEC/gImAkoAAAAHAHYAzgAA//8AWf/2A0kDrQImAkkAAAEHAEMAtQCvAAixAQGwr7AzKwAA//8ATv/2AuEC/gImAkoAAAAGAEN+AAAA//8AWf/2A0kD3QImAkkAAAEHAksCoQClAAixAQGwpbAzKwAA//8ATv/2AuEDOAImAkoAAAAHAksCZQAA//8AWf/2A0kDlAImAkkAAAEHAVEAjACvAAixAQGwr7AzKwAA//8ATv/2AuEC5QImAkoAAAAGAVFVAAAA//8AWf9GA0kC+AImAkkAAAAHC6MCogAA//8ATv9GAuECbgImAkoAAAAHC6MCWwAA//8AAP9GAkcCygImADwAAAAHC6MCUQAA//8AAf8QAg8CGwImAFwAAAEHC6MCxf/4AAmxAQG4//iwMysA//8AAAAAAkcD3QImADwAAAEHAksCTwClAAixAQGwpbAzKwAA//8AAf8QAg8DOAImAFwAAAAHAksCMQAA//8AAAAAAkcDlAImADwAAAEHAVEAPgCvAAixAQGwr7AzKwAA//8AAf8QAg8C5QImAFwAAAAGAVEiAAAA//8ANP9lAmUC+AImANMAAAAGAEJ1AAAAAAL+NwJe//EDLAAJABoAM0AwBQEEAAABAQQaEw4DAgEDSgAABACDAAEEAgQBAn4DAQICggAEBIQETBQWERQTBQ0ZKwM2NjczFQYGByMXIyYmJwYGByM1NjY3MxYWF68THBBhFjYbOSg6GTQaGjQZOhk6F24XOhkCyRgrIAodMxVfECoXFyoQDBxFIiJFHAAAAAL9wQJe/3sDLAAJABoAQUA+AwECAAgBAQIXEgsDAwEDSgAAAgCDBQEBAgMCAQN+BgQCAwOCAAIChAJMCgoAAAoaChoUEw8OAAkACRQHDRUrASYmJzUzFhYXFQc1NjY3MxYWFxUjJiYnBgYH/ikcNhZhEBwTKBk6F28XORk6GTQaGjQZAr0VMx0KICwXDF8MHEQiIkQcDBAqFxcqEAAAAAAC/jcCXv/RA2cAEgAjAHBAEBEBAgAJAQUCIBsWAwMBA0pLsApQWEAcAAEFAwIBcAQBAwOCBgEAAAIFAAJnBwEFBYQFTBtAHQABBQMFAQN+BAEDA4IGAQAAAgUAAmcHAQUFhAVMWUAXExMBABMjEyMfHhgXDgwIBwASARIIDRQrAzIWFRQGBwcjJzY1NCMiBgc1NgcWFhcVIyYmJwYGByM1NjY3kC4zJBoDLwU7LQoUBQtDFzoZOhk0Gho0GToZOhcDZyIkHR8GJD0HHRwCAS8DeiJFHAwQKhcXKhAMHEUiAAL+OAJe/34DdQAVACUAQ0BAIh0ZAwYIAUoAAQADAVcABAIBAAgEAGcJBQIDBwEGAwZhCgEICIQITBYWAAAWJRYlISAbGgAVABUiIhIiIgsNGSsDBgYjIiYmIyIGByM2NjMyFhYzMjY3BxYWFxUjJicGBgcjNTY2N4IEMSwZLioTFBUGMgUxKxsvKhITFQZAFzwbNjc0GjcaNhk+FwN1Lz8WFxcXLz8XFhcXjCJBHAwgLhcnEAwcQSIAAAAAAv46Al7/cgNMAAgAFgBAQD0BAQMBBQEAAwJKBgEBAwGDAAADBAMABH4ABAACBAJkBwUCAwOEA0wJCQAACRYJFhQSEA8NCwAIAAgTCA0VKwMVBgcjNTY2NxcGBiMiJiczFhYzMjY3ti04NREeDoUFT0pLSwQ7BDErJzYFA0wKOisMFy8dYUBNTEEpHR8nAAAAAv46Al7/cgNMAAkAFwBAQD0IAQMBAwEAAwJKBgEBAwGDAAADBAMABH4ABAACBAJkBwUCAwOEA0wKCgAAChcKFxUTERAODAAJAAkUCA0VKwEWFhcVIyYmJzUFBgYjIiYnMxYWMzI2N/67Dh0RNRk2FQEUBU9KS0sEOwQxKyg1BQNMHS8XDBQ2GwphQE1MQSkdHigAAAL+OgJe/3IDbgAVACMAckAKEwECAAkBBAICSkuwDFBYQB8AAQQFAgFwBwEAAAIEAAJnAAUAAwUDYwgGAgQEhARMG0AgAAEEBQQBBX4HAQAAAgQAAmcABQADBQNjCAYCBASEBExZQBkWFgEAFiMWIyEfHRwaGBAOCAcAFQEVCQ0UKwEyFhUUBgcHIyc2NjU0JiMiBgc1NjYXBgYjIiYnMxYWMzI2N/7BLDEjFwMsBRsbFxMMFAUGFr8FT0pLSwQ7BDErKDUFA24iIhweBhQwBA8PDwwCASoCAoNATUxBKR0eKAAAAAL+OAJe/34DcwAVACMAd0uwKVBYQCIKBQIDAAEAAwFnAAQCAQAHBABnAAgABggGYwsJAgcHhAdMG0AtCwkCBwAIAAcIfgoFAgMAAQADAWcABAIBAAcEAGcACAYGCFcACAgGXwAGCAZPWUAaFhYAABYjFiMhHx0cGhgAFQAVIiISIiIMDRkrAwYGIyImJiMiBgcjNjYzMhYWMzI2NxcGBiMiJiczFhYzMjY3ggQxLBkvKxIUFAcxBDErGzAqEhMVBSYETUtLTQQ7BTIqKDQFA3MvPRYXFxcvPhcWFhePPkhIPicYGSYAAAABABH/HgC7AAAAEwBEQAoOAQIADQEBAgJKS7AkUFhAEAAAAgCDAAICAWAAAQEqAUwbQBUAAAIAgwACAQECVwACAgFgAAECAVBZtSUlEwMHFysXNCYnMxYWFRQGIyImJzUWFjMyNmokIkYdNDgzESENCBkOEhhzGzggFjwrLjcFBEECBBYAAAAAAQAL/y4A1QBdABEAL0AsBAEBAgMBAAECSgABBAEAAQBjAAMDAl0AAgInAkwBAA4NDAsIBgARAREFBxQrFyImJzUWFjMyNjU1IzUzFRQGUBQmCwoaEBcdCmxA0ggEVgQFGyI8XZxDUP//AA3/EAIlAsoCJgA3AAAABwB6ALEAAP//ABL/EAFmApQCJgBXAAAABgB6dgAAAAACAAf/9gI4AvgAHQApAJ5LsBlQWEAKFAEJBwMBAAgCShtAChQBCQcDAQEIAkpZS7AZUFhAJwUBAwYBAgcDAmUABASESwAJCQdfAAcHjUsLAQgIAF8BCgIAAIsATBtAKwUBAwYBAgcDAmUABASESwAJCQdfAAcHjUsAAQGDSwsBCAgAXwoBAACLAExZQB8fHgEAJCIeKR8pGRcQDw4NDAsKCQgHBgUAHQEdDA0UKwUiJicjByMRIzUzNTMVMxUjFRQGBzM2NjMyFhUUBicyNjU0IyIGBxUUFgFfPk0XCBROTExqxMQDAgUXTj5hd3h3QUGESz4BOwotH0ICV0tWVksZIDoTIi6HjIuNV2RevFteBV1jAAADAAkAAAK3AsoAHgAnADAAdrUWAQcEAUpLsAxQWEAmAAEABAABcAAEAAcGBAdlBQEAAAJdAAICgksABgYDXQgBAwODA0wbQCcAAQAEAAEEfgAEAAcGBAdlBQEAAAJdAAICgksABgYDXQgBAwODA0xZQBQAADAuKignJSEfAB4AHTUVIQkNFyszESMiBhUUFhcjJiY1NDYzMzIWFRQGBxUeAhUUBiMDMzI2NTQmIyMRMzI2NTQmIyO8GiAdBwNbBAdJUeqIjEM9KkQoh3WUd1RATVNrg1dERlt9Am8dFxEcBwogDkJJUGI+VAsFCCVFOGJqAaA2NTUv/etEODM/AAD//wBfAAACPQLKAgYBqgAAAAIAU//2AjgC+AAXACMAjkuwGVBYQAoOAQYEAwEABQJKG0AKDgEGBAMBAQUCSllLsBlQWEAiAAMDAl0AAgKESwAGBgRfAAQEjUsIAQUFAF8BBwIAAIsATBtAJgADAwJdAAIChEsABgYEXwAEBI1LAAEBg0sIAQUFAF8HAQAAiwBMWUAZGRgBAB4cGCMZIxMRCgkIBwYFABcBFwkNFCsFIiYnIwcjESEVIRUUBgczNjYzMhYVFAYnMjY1NCMiBgcVFBYBXz5NFwgUTgGv/rsDAgUXTj5hd3h3QUGESz4BOwotH0IC+FVlIT8NIi6HjIuNV2RevFteBV1jAAAAAAIAWf/2AlECygANABcAMkAvAAIABAMCBGUAAQGCSwYBAwMAXwUBAACLAEwPDgEAFBIOFw8XCAYFBAANAQ0HDRQrBSImNREzETMyFhYVFAYnMjU0JiMjFRQWAVeIdmx4ZHk3fICOXVdqRQp0aAH4/to4YDtieVuAQzV1Rj0AAAAAAgBQ//YCNgL4ABIAHQA6QDcJAQQCAUoAAQGESwAEBAJfAAICjUsGAQMDAF8FAQAAiwBMFBMBABgWEx0UHQ4MBQQAEgESBw0UKwUiJjURMxUUBgczNjYzMhYVFAYnMjU0IyIGFRUUFgFGcoRqBAEFFlA+YnaDbYOETT5JCoyJAe23IDwRIi6Mi4uMV8HAW14MXGAAAAEAIP/2Aj0C1AAbADdANBEBAgMQBAIBAgMBAAEDSgACAgNfAAMDiksAAQEAXwQBAACLAEwBABUTDgwIBgAbARsFDRQrFyImJzUWFjMyNjU0JiMiBgcnNjYzMhYWFRQGBvQ6VyksUi5teXRwLlAiKCpsQW2QSUyTCg8QXQ4RkoB/kxkQWhUXW6VvbaVdAAAAAAEAPP/2ArsDYAAoAExASQMBAQAEAQUBJgoCAgUXCwIDAhgBBAMFSgYBAAABBQABZwACAgVfAAUFiksAAwMEXwAEBIsETAEAJCIcGhUTDw0IBgAoASgHDRQrATIWFxUmJiMiFRUHJiYjIgYVFBYzMjY3FQYGIyImJjU0NjYzMhYXNTQCfBQhCgceEDAnI04uanlwci5VLCpYOm6RR0+Ybhw3GQNgCAVVAwcyMFgQGZOAf5IRDl0QD1ulb2ylXgcGDYwAAAABADT/9gIuAv0AJgB5QBgQAQMCEQEBAxcKAgQBIxgCBQQkAQAFBUpLsCZQWEAgAAMDAl8AAgKESwAEBAFfAAEBjUsABQUAXwYBAACLAEwbQB4AAgADAQIDZwAEBAFfAAEBjUsABQUAXwYBAACLAExZQBMBACEfHBoVEw4MCAYAJgEmBw0UKwUiJjU0NjYzMhYXNTQzMhYXFSYmIyIVFQcmJiMiFRQWMzI2NxUGBgEscIhCdEoQHg9+FCEKBx0RLyAcPh2SSEYsRh0dRAqFj2R8OwMCTJEJBVUDBzJuVAoRwFxgFBBcERD//wAcAAACoQLKAgYAkgAAAAIACQAAAv0CygAXAB8AW0uwDFBYQB4AAQAEAAFwBQEAAAJdAAICgksABAQDXQYBAwODA0wbQB8AAQAEAAEEfgUBAAACXQACAoJLAAQEA10GAQMDgwNMWUAQAAAfHRoYABcAFjUVIQcNFyszESMiBhUUFhcjJiY1NDYzMzIWFhUUBiMnMyARNCYjI7saHx4HA1oEB0hS9m2fWMezXFgBDYJ4awJvHRcRHAcKIA5CSVCccrW3WwEOh38AAAAAAgAxAAACDwLKAA0AFgA5QDYAAQAFBAEFZwACAgNdAAMDgksHAQQEAF0GAQAAgwBMDw4BABIQDhYPFgwLCgkIBgANAQ0IDRQrISImNTQ2NjMzNSE1IREnMzUjIgYVFBYBQo+COH9qUf68AbDCVkVeYFZrYTpjO8ld/TZb7jVEPTgAAAAAAgA0//YCGQL4ABgAJQCOS7AZUFhACgkBBgEVAQAFAkobQAoJAQYBFQEEBQJKWUuwGVBYQCIAAgIDXQADA4RLAAYGAV8AAQGNSwgBBQUAXwQHAgAAiwBMG0AmAAICA10AAwOESwAGBgFfAAEBjUsABASDSwgBBQUAXwcBAACLAExZQBkaGQEAIR8ZJRolFBMSERAPBwUAGAEYCQ0UKwUiJjU0NjMyFhczLgI1NSE1IREjJyMGBicyNjc1NCYjIgYVFBYBDGJ2eGI9ThgGAQQD/rsBr1MSBRdOJU4/AT1SQUJCCoyKiI4uIQYgJQ14Vf0ISCIwV1ZYEFxkZ1pbYgAA//8AM/8iAi0CJQEPAYACYAIbwAAACbEAArgCG7AzKwAAAQA8AAABzgLKAAsAL0AsAAIAAQACAWUAAwMEXQAEBIJLAAAABV0GAQUFgwVMAAAACwALEREREREHDRkrMzUhNSE1ITUhNSERPAEm/uwBFP7aAZJd6lvMXP02AP//AEH/9gK9AtUCBgLBAAAAAQAz//YCNALUACoASkBHAwEBAAQBAgEkAQMCGQEEAxoBBQQFSgACAAMEAgNlAAEBAF8GAQAAiksABAQFXwAFBYsFTAEAHhwXFREPDgwIBgAqASoHDRQrATIWFwcmJiMiBhUUFjMzFSMiBhUUFjMyNjcVBgYjIiYmNTQ2NzUmJjU0NgE/TnktMihXPj5JX2pWXGp1Xlw1di4uckZkfTphXEdYfALUKyBJGyE1MThAWDo+PkMdFl8VFjVdPUtaCwQLUkpQZAAAAAAB//P/EAHxAsoAFAA+QDsEAQEFAwEAAQJKAAQABQEEBWUAAwMCXQACAoJLAAEBAF8GAQAAhwBMAQAREA8ODQwLCgcFABQBFAcNFCsXIiYnNRYzMjY1ESEVIRUhFSERFAYyFCALFBwdHwGS/tkBFP7sUPAIBlcKISoDFFzpXP6KVU4AAAABADz/9gLoA2AALABbQFgDAQEABAEHASoKAgIHCwEFAhkBAwQeAQYDBkoIAQAAAQcAAWcABQAEAwUEZQACAgdfAAcHiksAAwMGXwAGBosGTAEAKSciIB0cGxoXFQ8NCAYALAEsCQ0UKwEyFhcVJiYjIhUVByYmIyIGBhUUFhYzMjY3NSM1IREGBiMiJjU0NjYzMhc1NAKqFCAKBx0QMCclXDFPcz0ybFcrOxmXAQI5d0ykr1emdkM5A2AIBVUDBzIvWBEXQ3xUUHxGCQbCXf6cExPCrXClWg8PjAAAAgAA/xACUgLKABYAIQAyQC8cEgwGBAMBAUoCAQEBgksFAQMDAF8EAQAAhwBMGBcBABchGCEREAgHABYBFgYNFCsFIiY1NDY3AzMTFhYXNjY3EzMDFhUUBicyNTQmJwYGFRQWASc7QCYc7nCHDhsHBxsPiXHzREE7IhASEhAT8E07LnE5Alr+nSVQIiJPJwFi/aaFUzpOUTgXRiMkRBYeHAAAAAABAFP/9gNmAvgAIgCkS7AbUFi1EAEBBAFKG7UQAQEGAUpZS7AZUFhAHQADA4RLAAEBBF8GAQQEjUsABQUAXwIHAgAAiwBMG0uwG1BYQCEAAwOESwABAQRfBgEEBI1LAAICg0sABQUAXwcBAACLAEwbQCUAAwOESwAGBoVLAAEBBF8ABASNSwACAoNLAAUFAF8HAQAAiwBMWVlAFQEAHx4bGRUTDQwLCgcFACIBIggNFCsFIiY1NTQjIgYVESMRMxUUBzM2NjMyFhUVFDMyNjURMxEUBgKHb3BlTTlqagYHGVIxWGB1PThqcApgbY1+ZFv+8QL4yzEqKSleaJCBRE8BO/6/emoAAAABAFn/9gFiAsoADwArQCgMAQIBDQEAAgJKAAEBgksAAgIAXwMBAACLAEwBAAoIBgUADwEPBA0UKxciJiY1ETMRFDMyNjcVBgb5LkgqbUkXLQ8QOgofS0MCJ/3iWQgFVwgLAAAAAQAgAAABQQLKABMAN0A0EhECAQQABQwLCAcEAgECSgQBAAMBAQIAAWYGAQUFgksAAgKDAkwAAAATABMRExMREwcNGSsBFQcVMxUjFRcVITU3NSM1MzUnNQE7VFpaVP7rVVtbVQLKPhrZW+cZPj4Z51vZGj4AAAAAAQBfAAACeALRABoAcEuwIlBYQA4DAQEAFA8OCwQFAgECShtADgMBAQQUDw4LBAUCAQJKWUuwIlBYQBMAAQEAXwQFAgAAiksDAQICgwJMG0AXAAQEgksAAQEAXwUBAACKSwMBAgKDAkxZQBEBABMSERANDAgGABoBGgYNFCsBMhYXFSYmIyIGBwcBIwMHESMRMxE2Njc3NjYCMRMcCggaCw8gF5cBGH3lS2xsGDcZbyg+AtEFBVQCAxIbuP5tAUpE/voCyv6hH0IgizMnAAAAAAEAUwAAAikC/gAeAF5AEQMBAQAEAQIBGRgVDgQDAgNKS7AkUFhAFwABAQBfBQEAAIRLAAIChUsEAQMDgwNMG0AVBQEAAAECAAFnAAIChUsEAQMDgwNMWUARAQAbGhcWFBMIBgAeAR4GDRQrEzIWFxUmJiMiBhUVFAYHMzY2NzczBxMjJwcVIxE0NtwVJQsHHhAWGgMCAwooD6V72ed9sj5pRgL+CgRVAwcbH+8UOBYPMRCx5/7M8TS9AmhMSgAAAAEADgAAAQoC+AALACdAJAMBAQQBAAUBAGUAAgKESwYBBQWDBUwAAAALAAsREREREQcNGSszESM1MxEzETMVIxFWSEhqSkoBVFABVP6sUP6sAAAAAAH//f/2AjIC/gArALNLsBlQWEAYEwwCAAEmGxUUEgsFBAMCCgIAHAEDAgNKG0AYEwwCAAEmGxUUEgsFBAMCCgIAHAEEAgNKWUuwGVBYQBoAAgADAAIDfgAAAAFfAAEBhEsFBAIDA4sDTBtLsCRQWEAeAAIABAACBH4AAAABXwABAYRLBQEEBINLAAMDiwNMG0AcAAIABAACBH4AAQAAAgEAZwUBBASDSwADA4sDTFlZQA0AAAArACskKCUnBg0YKyMTJwcnNyYmIyIGBzU2NjMyFhc3FwcTFhYzMjcVBgYjIiYnJyYmJyMGBgcDA+cUaBVfDyIaERoLDSgSPUcZaBVhpg0cExINCyURLDERQQ0cBQQIGw9zAgs1H0UcFBAEAlYDBS4vIEUe/jMmHQVQBQgsLrgiVRshSyL+9AABAFn/9gOoAsoAJAB0S7AZUFhACiEBAgEaAQACAkobQAohAQIBGgEGAgJKWUuwGVBYQBYFAwIBAYJLBAECAgBgBwYIAwAAiwBMG0AaBQMCAQGCSwAGBoNLBAECAgBgBwgCAACLAExZQBcBAB8dGRgXFhMRDg0KCAUEACQBJAkNFCsFIiY1ETMRFBYzMjY1ETMRFBYzMjY1ETMRIycjBgYjIiYnIwYGAR9hZWw1OVJFbDY6VUFsVBEGG2E1QlQXBR1jCmZwAf7+D0NEYFoBvv4PQ0RqYwGr/TZQLS0xMDEwAAH/8/8QAqkCygAeADVAMgQBAQQDAQABAkoDAQICgksABASDSwABAQBfBQEAAIcATAEAFRQTEgsKBwUAHgEeBg0UKxciJic1FjMyNjURMwEzNCYmNREzESMBIx4CFREUBjAUHgsUHB0fggFoAwQDZIP+lwQBBANL8AgGVwohKgMU/cILQlEgAYD9NgJBEUFPJP43VU4AAAD//wBT/xACJgIlAgYBgwAA//8APP/2AtUC1QIGAmIAAAACADz/9gPrAtUAHgAqAFhACg8BBAEdAQUEAkpLsBlQWEAYBgEEBAFfAgEBAYpLAAUFAF8DAQAAiwBMG0AcBgEEBAFfAgEBAYpLAAMDg0sABQUAXwAAAIsATFlACiQmIhMkJiMHDRsrARQGBiMiJiY1NDY2MzIWFzY2MzIWFREjETQjIgYHFgUUFjMyNjU0JiMiBgK5R45pbI1GRo5sSnMnIGY7Y2dsdDE/EjD99WNqa2FhampkAWZvpVxcpm9upVsvLCwvanX+CgHyhx0bWYKAlJSAgJKSAAACADT/EAMXAiUAGgAmADNAMAwBBAEZAQUEAkoGAQQEAV8CAQEBjUsABQUAXwAAAItLAAMDhwNMJCUiEyMlIgcNGysBFAYjIiYmNTQ2MzIXNjYzMhYVESMRNCMiBxYFFBYzMjY1NCYjIgYCFoNvRmw+gnBtQRxPLlJYals9Hh/+iz9FREBAREU/AQ6GkkF9WoaRSiYkXmj9sQJBfSo+WFtmZltcY2MAAAACAAkAAAKPAsoAGQAiAGJLsAxQWEAhAAEABQABcAAFAAMEBQNlBgEAAAJdAAICgksHAQQEgwRMG0AiAAEABQABBX4ABQADBAUDZQYBAAACXQACAoJLBwEEBIMETFlAEQAAIiAcGgAZABklNRUhCA0YKzMRIyIGFRQWFyMmJjU0NjMzMhYVFAYGIyMRETMyNjU0JiMjuxofHgcDWgQHSFLhjH81fGpNQltcT1VVAm8dFxEcBwogDkJJcWU8aEH+8QFqPUlAPwAAAAIAU/8QAjgC/QAkADEAhUASAwEBAAQBAgEOAQUCGwEDBgRKS7AmUFhAJgABAQBfBwEAAIRLCAEFBQJfAAICjUsABgYDXwADA4tLAAQEhwRMG0AkBwEAAAECAAFnCAEFBQJfAAICjUsABgYDXwADA4tLAAQEhwRMWUAZJiUBAC0rJTEmMSEgGRcTEQgGACQBJAkNFCsTMhYXFSYmIyIGFRUUBgczNjYzMhYVFAYjIiYnIxYWFRUjETQ2EyIGBxUUFjMyNjU0Jt0UJQsHHBEXGQUBBhdNP2F3dmI+ThcGAgRqR61LPgE8UEJAQQL9CQVVAwcaH0ETMRMiMIyLiY8sHxIxE9sDWExJ/tFWWRBeZGxXWGYAAAIAX/+cAm8CygAQABkAO0A4DwEABQFKBwEEAQSEAAMABgUDBmUABQAAAQUAZQACAoJLAAEBgwFMAAAZFxMRABAAECEREREIDRgrBQMjFSMRMxUzMhYVFAYGBxMBMzI2NTQmIyMB86x8bGxciYMoQSPI/lxaU0xQVFVkASG9AspkZmg3SzAN/sMBez8+QDYAAAEALv/2AfYC1AAoADdANCYBAwAlEAIBAxEBAgEDSgADAwBfBAEAAIpLAAEBAl8AAgKLAkwBACMhFRMODAAoASgFDRQrATIWFRQGBgcGBhUUFjMyNjcVBgYjIiY1NDY2Nz4CNTQmIyIGByc2NgESZn4sUjlWUElHOGsoJWk9d4QvVz03RB4+PCpPJiEqYALUYlg6UDcVIDgyMTceEWISF2tfOEs3FxUlLSIqMxYRWRMYAAAAAAEAK//2AbUCJQAnADdANCUBAwAkEQIBAxIBAgEDSgADAwBfBAEAAI1LAAEBAl8AAgKLAkwBACIgFhQPDQAnAScFDRQrEzIWFRQGBgcOAhUUFjMyNjcVBgYjIjU0Njc+AjU0JiMiBgcnNjbrXmwmSTQ0OBQ4PCxcIyJTONlUSzI6GDQwIUQjISlVAiVJRy05KhQVHh0SISYZEloREp9DRRwTHBwUGx8VD1ESFP//ACUAAAImAsoCBgFvAAAAAv/4/xABqQL+ABgAIwBtQAoIAQEDCQECAQJKS7AkUFhAHwAFAAMBBQNnBwEEBABfBgEAAIRLAAEBAl8AAgKHAkwbQB0GAQAHAQQFAARnAAUAAwEFA2cAAQECXwACAocCTFlAFxoZAQAgHhkjGiMTEQ0LBgQAGAEYCA0UKxMyFREUMzI2NxUGBiMiJiY1ESMiJjU0NjYXIgYVFBYzMzU0JnuPSRcuERE5Hi9IKidEPRo5JhQSHBciFQL+mP1WVggFUAgLHkpDAl9CMhw0IEoYDxQVEhwiAAAAAQAS/xABZgKUACAAUkBPEgEDBR4BBwMEAQECAwEAAQRKAAQFBIMGAQMDBV0ABQWFSwAHBwJfAAICi0sAAQEAXwgBAACHAEwBAB0bGRgXFhUUERAMCggGACABIAkNFCsXIiYnNRYWMzI1NSMiJiY1ESM1NzczFTMVIxEUMzI3FRTpFCIMCRoPMBIpRitLTyVBmppOLSTwCARSAwY2Wx5KQgEqMChyeVH+2FYNuo8AAAABAAkAAAI/AsoAEwBOS7AMUFhAGQABAAQAAXADAQAAAl0AAgKCSwUBBASDBEwbQBoAAQAEAAEEfgMBAAACXQACAoJLBQEEBIMETFlADQAAABMAExElFSEGDRgrMxEjIgYVFBYXIyYmNTQ2MyEVIxH9XB8eBwNaBAdIUgGc1gJtGxcRHAcKIA5CSV39kwAAAAABABL/9gFmAv0AIwB8QBcDAQEAIAQCAgEfAQMCFAEEAxUBBQQFSkuwJlBYQCEAAQEAXwcBAACESwYBAwMCXQACAoVLAAQEBV8ABQWLBUwbQB8HAQAAAQIAAWcGAQMDAl0AAgKFSwAEBAVfAAUFiwVMWUAVAQAeHRkXExEODQwLCAYAIwEjCA0UKxMyFhcVJiYjIgYVFTMVIxEUFjMyNxUGBiMiJiY1ESM1NzU0Nv0YLA0KLBYgG5qaKyMtJBE6HSxJLEtLUgL9CQVVAwcgIElR/tgsKg1QCAseSkIBKjAmPlBPAAABAA3/EAIlAsoAEQA1QDIPAQQBEAEABAJKAwEBAQJdAAICgksABAQAXwUBAACHAEwBAA4MCQgHBgUEABEBEQYNFCsFIiY1ESM1IRUjERQWMzI3FQYBdkdM1gIY1h8dHBQZ8E1WArpdXf1JKiEKVw4AAQAi//UC7ALKACEANUAyHAYCAgEBSgQBAgIBXQUBAQGCSwYBAAADXwADA4sDTAEAGxoZGBIQCgkIBwAhASEHDRQrJTI2NTQmJzUhFSMWFhUUBgYjIiYmNTQ2NyM1IRUGBhUUFgGIbmtEWAEnskFXTpRoapROV0KzAShYRm1Se25gmTtbXS+ibGCOTU2NYG2iL11bOptfbnsAAAAAAQBZ//YCiQLUABsAXUAKEgEDAREBAgMCSkuwGVBYQBcAAwMBXwQBAQGCSwACAgBfBQEAAIsATBtAGwABAYJLAAMDBF8ABASKSwACAgBfBQEAAIsATFlAEQEAFhQQDgkHBQQAGwEbBg0UKwUiJjURMxEUMzI2NRE0JiMiBzU2NjMyFREUBgYBboiNbK5aUSAcKSEQNh2OPX4KkXcBzP45sWBSAS8mHhNYCg6U/rxKd0UAAAAAAQAAAAACRwLVABMAakuwFVBYQA0RAQMAEAoHBAQCAwJKG0ANEQEDARAKBwQEAgMCSllLsBVQWEASAAMDAF8BBAIAAIpLAAICgwJMG0AWAAEBgksAAwMAXwQBAACKSwACAoMCTFlADwEADw0JCAYFABMBEwUNFCsTMhYXExMzAxEjEQMmJiMiBzU2NkEpNBZ0q3TqbJIQGRAUEgoiAtUoMP7/AU7+S/7rAREBNCAVCFYECQAAAQAE/xACMgIlACUAfkuwGVBYQBEDAQEAHhgRBAQDARABAgMDShtAEQMBAQQeGBEEBAMBEAECAwNKWUuwGVBYQBcAAQEAXwQFAgAAjUsAAwMCYAACAocCTBtAGwAEBIVLAAEBAF8FAQAAjUsAAwMCYAACAocCTFlAEQEAGhkVEw4MBwUAJQElBg0UKwEyFhcVJiMiBgcDBgYjIiYnNRYWMzI2NzcDMxMWFhczNjY3NzY2AfISIgwNEhMbDqscYVIWJQ0KIBAtOhEV2HJrDRYGBAUZDkUTNAIlCAVQBR0m/i9OWwUDVAIENCs7Ahv+3iRHIRhMJ8U1MwABACIAAAIbAsoAEQA3QDQGAQECDwEGBQJKAwEABwEEBQAEZQABAQJdAAICgksABQUGXQAGBoMGTBIRERESEREQCA0cKxMzNyE1IRUHMxUjByEVITU3I0q4jv6dAeWacqyaAXf+B6V9AZnUXU3kVuZdTfYAAAEAIwAAAbcCGwARAD1AOgEBBgcKAQMCAkoFAQAEAQECAAFlAAYGB10IAQcHhUsAAgIDXQADA4MDTAAAABEAEREREhERERIJDRsrARUHMxUjByEVITU3IzUzNyE1Aa9oXZZvARj+bHtmnmP++wIbS5NOnVJDrE6MUgAAAP//ACH/9gIYAsoCBgLJAAAAAQAy//YCKQLKABwARkBDCQEDAg4BBAEZAQUEGgEABQRKAAEABAUBBGUAAwMCXQACAoJLAAUFAF8GAQAAiwBMAQAXFREPDQwLCggHABwBHAcNFCsFIiYmNTQ2NjcnNSEVIRcVIyIGFRQWMzI2NxUGBgFNYn08QG1D0QHD/srESFZjWl4xcC8uawo7Yz1JYTMDyk9dwU1DRkBIGBdgFRIAAAEAI/8QAfUCGwAbAEVAQggBAgENBwIDAhgBBAMZAQAEBEoAAwIEAgMEfgACAgFdAAEBhUsABAQAXwUBAACHAEwBABYUEA4MCwoJABsBGwYNFCsFIiYmNTQ2Nyc1IRUhFxUjIgYVFBYzMjY3FQYGASpUdT6HbdkBrP7T1DtiZlhPN2QlJGPwPWlCb3kK50pW4ktMUEJTGRJdERQAAAEAIv8QAdcCGwAnAFJATxQBAwQPAQIFJAEHBiUBAAcESgAFAAIBBQJnAAEABgcBBmcAAwMEXQAEBIVLAAcHAF8IAQAAhwBMAQAiIB0bFhUTEhEQDgwIBgAnAScJDRQrFyImNTQ2Njc2NjU0JiMjNTchNSEVBxYWFRQGBgcGBhUUMzI2NxUGBuNUbSFRSU9AWFg9rf75AZi4YnAtal44KGc3Vx8eXfA+RCQ7JQEBMTc3K0maVkmfBVhWNFY0AwEXFS4YDVkOEgAAAQAqAAACCgL9AB8AdEAPHAEBBw8BBAMCSh0BBwFJS7AmUFhAIAYBAQUBAgMBAmUABwcAXwgBAACESwADAwRdAAQEgwRMG0AeCAEAAAcBAAdnBgEBBQECAwECZQADAwRdAAQEgwRMWUAXAQAaGBMSERAODQwKCQgHBgAfAR8JDRQrATIWFRQGBzMVIwcVIRUhNRMjNTM2NjU0JiMiBgcnNjYBBmJvFRdbjtUBZ/4g1bv2HBU7MC5HJDYlaAL9Z1UpTClO/QVTVAEBTilJKDE2JSBFIjcAAAAAAQAh//YCFALKABwAQUA+BAEBAgMBAAECSgAGAAIBBgJlBQEDAwRdAAQEgksAAQEAXwcBAACLAEwBABcVFBMSERAPDgwIBgAcARwIDRQrFyImJzUWFjMyNjU0JiMjESM1IRUhFTMyFhYVFAbuOmgrK3AxWV9fSX1dAdb+8iZLdUORChIVYBYZSUdFQQEIXl6vNGNGaIIAAAABACL/9gHSAhsAHABBQD4EAQECAwEAAQJKAAYAAgEGAmUFAQMDBF0ABASFSwABAQBfBwEAAIsATAEAFxUUExIREA8ODAgGABwBHAgNFCsXIiYnNRYWMzI2NTQmIyM1IzUhFSMVMzIWFRQGBt04YyAiYjU9Uk1LW0wBit0Zd2o0bQoSEVwRGSw0LyvBVVVvWU4zVTIAAQAk//YBrgKUACMAQEA9EgECBAMBAQICAQABA0oAAwQDgwUBAgIEXQAEBIVLAAEBAGAGAQAAiwBMAQAZGBcWFRQREAcFACMBIwcNFCsXIic1FhYzMjY1NCYnJiY1NSM1NzczFTMVIxUUFhceAhUUBtJtQSBeLj84LjgrL11eJUGWlhQaLEElcQoiXREcJiIcJBkUP0NLMChyeVFLIR4KEik5K0xVAAAAAgBT/xACKQIlAA8AGQBsS7AZUFhACwwBAwAUBwIBAwJKG0ALDAEDAhQHAgEDAkpZS7AZUFhAEwUBAwMAXwIEAgAAjUsAAQGHAUwbQBcAAgKFSwUBAwMAXwQBAACNSwABAYcBTFlAExEQAQAQGREZCwoJCAAPAQ8GDRQrATIWFRQGBgcVIxEzFzM2NhciBhUVNjY1NCYBWlt0V6RxalYPBRdJIkc7d4hBAiV4cFqOWQnjAwtIIjBXV1jTD39jQVAAAQB2AAAAzQL4AAMAGUAWAAAAhEsCAQEBgwFMAAAAAwADEQMNFSszETMRdlcC+P0IAAAA//8AdgAAAbQC+AAmA50AAAAHA50A5wAAAAEAPQAAAccC+AATADVAMggBAAcBAQIAAWUGAQIFAQMEAgNlCgEJCYRLAAQEgwRMAAAAEwATERERERERERERCw0dKwEVMxUjFTMVIxEjESM1MzUjNTM1AS2ampqaVpqampoC+PZPXVD++gEGUF1P9v//AET/8gDNAsoCBgAEAAD//wBfAAAE7gOtACYAJwAAACcAPQLTAAABBwFLAxkArwAIsQMBsK+wMysAAP//AF8AAASUAv4AJgAnAAAAJwBdAt0AAAAHAUsC7gAA//8ANP/2BCMC/gAmAEcAAAAnAF0CbAAAAAcBSwJ9AAD//wBf/zwC3wLKACYALwAAAAcALQIYAAD//wBf/xAC3QLoACYALwAAAAcATQIYAAD//wBT/xAB1QL4ACYATwAAAAcATQEQAAD//wBf/zwDzwLKACYAMQAAAAcALQMIAAD//wBf/xADzQLoACYAMQAAAAcATQMIAAD//wBT/xADOwLoACYAUQAAAAcATQJ2AAD//wAAAAACjQOtAiYAJAAAAQcBSwBpAK8ACLECAbCvsDMrAAD//wAt//YB7gL+AiYARAAAAAYBS0IAAAD////8AAABZwOtAiYALAAAAQcBS//UAK8ACLEBAbCvsDMrAAD////TAAABPgL+AiYIKgAAAAYBS6sAAAD//wA8//YC1QOtAiYAMgAAAQcBSwCsAK8ACLECAbCvsDMrAAD//wA0//YCLgL+AiYAUgAAAAYBS1QAAAD//wBZ//YCiQOtAiYAOAAAAQcBSwCUAK8ACLEBAbCvsDMrAAD//wBO//YCIwL+AiYAWAAAAAYBS14AAAD//wBZ//YCiQP5AiYAOAAAAQcHuAFyAK8ACLEBA7CvsDMrAAD//wBO//YCIwNKAiYAWAAAAAcHuAE7AAD//wBZ//YCiQQZAiYAOAAAAQcHgwFyAK8ACLEBA7CvsDMrAAD//wBO//YCIwNqAiYAWAAAAAcHgwE7AAD//wBZ//YCiQQgAiYAOAAAAQcHtwFyAK8ACLEBA7CvsDMrAAD//wBO//YCIwNxAiYAWAAAAAcHtwE7AAD//wBZ//YCiQQZAiYAOAAAAQcHhAFyAK8ACLEBA7CvsDMrAAD//wBO//YCIwNqAiYAWAAAAAcHhAE7AAD//wAAAAACjQP5AiYAJAAAAQcHuAFGAK8ACLECA7CvsDMrAAD//wAt//YB7gNKAiYARAAAAAcHuAEfAAD//wAAAAACjQPvAiYAJAAAAAcHuwFGAAD//wAt//YB7gNKAiYARAAAAAcHugEfAAD/////AAADSgNdAiYAiAAAAQcBTAEvAK8ACLECAbCvsDMrAAD//wAt//YDPwKuAiYAqAAAAAcBTAD9AAAAAQA8//YCywLUACYAWEBVCgECAQsBBwIXAQMEJAEAAwRKAAcABgUHBmUIAQUJAQQDBQRlAAICAV8AAQGKSwADAwBfCgEAAIsATAEAIyIhIB8eHRwbGhkYFRMPDQgGACYBJgsNFCsFIiY1NDY2MzIWFwcmJiMiBhUUFjMyNjc1IzUzNSM1IRUzFSMVBgYBlq+rV6Z2O2wuJyVeMXeGdIIpPBmNjZcBAkBANXIKxKlvplwYE1oRF5GCgpMIB0FORVugToERFwAAAAACADT/EAJSAiUAJQAxAOtLsBlQWEASAwEJABwBCAoRAQUDEAEEBQRKG0ASAwEJARwBCAoRAQUDEAEEBQRKWUuwF1BYQCwHAQIGAQMFAgNmDAEJCQBfAQsCAACNSwAKCghfAAgIg0sABQUEXwAEBIcETBtLsBlQWEAqAAoACAIKCGcHAQIGAQMFAgNmDAEJCQBfAQsCAACNSwAFBQRfAAQEhwRMG0AuAAoACAIKCGcHAQIGAQMFAgNmAAEBhUsMAQkJAF8LAQAAjUsABQUEXwAEBIcETFlZQCEnJgEALComMScxIR8YFxYVFBIODAoJCAcGBQAlASUNDRQrATIWFzM3MxEzFSMGBiMiJic1FjMyNyM1MzU0NjcjBgYjIiY1NDYXIgYVFDMyNjU1NCYBDTRUHQUMVjlCEHdpOmIpV3RlF6GvAgEEHFE1ZnNzfD9DhEpFRgIlKClH/cpIQUwQEVsqO0g9ECcNKieJfXuPWFtYskpWDmFWAAD//wA8//YCiwOtAiYAKgAAAQcBSwC2AK8ACLEBAbCvsDMrAAD//wA0/xACGQL+AiYASgAAAAYBS1EAAAD//wBfAAACeAOtAiYALgAAAQcBSwB6AK8ACLEBAbCvsDMrAAD////VAAACKQPbAiYATgAAAQcBS/+tAN0ACLEBAbDdsDMrAAD//wA8/x4C1QLVAiYAMgAAAAcBUAEQAAD//wA0/x4CLgIlAiYAUgAAAAcBUAC2AAD//wA8/x4C1QNdAiYAMgAAACcBTADHAK8BBwFQARgAAAAIsQIBsK+wMysAAP//ADT/HgIuAq4CJgBSAAAAJgFMbwAABwFQALYAAAAA//8AIf/2AhgDrQImA5QAAAEHAUsAOgCvAAixAQGwr7AzKwAA//8AEv8QAecC/gImAsoAAAAGAUsdAAAA//8AXwAABO4CygAmACcAAAAHAD0C0wAA//8AXwAABJQCygAmACcAAAAHAF0C3QAA//8ANP/2BCMC+AAmAEcAAAAHAF0CbAAA//8APP/2AosDrQImACoAAAEHAHYBJwCvAAixAQGwr7AzKwAA//8ANP8QAhkC/gImAEoAAAAHAHYAwQAAAAEAX//3A3ICygAYAGJLsBtQWEAgAAEABgMBBmUCAQAAgksABASFSwADAwVgCAcCBQWLBUwbQCQAAQAGAwEGZQIBAACCSwAEBIVLCAEHB4NLAAMDBWAABQWLBUxZQBAAAAAYABgTIxMiERERCQ0bKzMRMxEhETMRFDMyNjURMxEUBiMiJjU1IRFfbAEWbF0wLGxjZ2Rj/uoCyv7YASj972c3NAFe/qFZbGNckP66AAAAAgBf/xACZALVABAAGgBUtxUNCAMBAwFKS7AZUFhAEwUBAwMAXwIEAgAAiksAAQGHAUwbQBcAAgKCSwUBAwMAXwQBAACKSwABAYcBTFlAExIRAQARGhIaDAsKCQAQARAGDRQrATIWFhUUBgYHFSMRMxczNjYXIgYVETY2NTQmAY4+YTdOtJdsVBIEHV8xXU6Vl0QC1TduVFuxnDrqA7tgKz9ceWb+xT3Id09P//8AXwAAAqkDrQImADEAAAEHAEMAxwCvAAixAQGwr7AzKwAA//8AUwAAAiYC/gImAFEAAAAGAEN+AAAA//8AAAAAAo0DrQImACQAAAEHC48CbwCvAAixAgKwr7AzKwAA//8ALf/2Ae4C/gImAEQAAAAHC48CSAAA//8AAAAAAo0DnAImACQAAAEHC5EBRgCvAAixAgGwr7AzKwAA//8ALf/2Ae4C7QImAEQAAAAHC5EBHwAA//8AQwAAAfEDrQImACgAAAEHC48CWQCvAAixAQKwr7AzKwAA//8AM//2AgsC/gImAEgAAAAHC48CSQAA//8AXwAAAfEDnAImACgAAAEHC5EBMACvAAixAQGwr7AzKwAA//8ANP/2AgsC7QImAEgAAAAHC5EBIAAA////xQAAAUADrQImACwAAAEHC48B2wCvAAixAQKwr7AzKwAA////mwAAARYC/gImCCoAAAAHC48BsQAA//8ACgAAAVcDnAImACwAAAEHC5EAsQCvAAixAQGwr7AzKwAA////4QAAAS4C7QImCCoAAAAHC5EAiAAA//8APP/2AtUDrQImADIAAAEHC48CsgCvAAixAgKwr7AzKwAA//8ANP/2Ai4C/gImAFIAAAAHC48CWgAA//8APP/2AtUDnAImADIAAAEHC5EBiQCvAAixAgGwr7AzKwAA//8ANP/2Ai4C7QImAFIAAAAHC5EBMQAA//8AUgAAAm8DrQImADUAAAEHC48CaACvAAixAgKwr7AzKwAA//8ABwAAAZgC/gImAFUAAAAHC48CHQAA//8AXwAAAm8DnAImADUAAAEHC5EBPwCvAAixAgGwr7AzKwAA//8ATQAAAZoC7QImAFUAAAAHC5EA9AAA//8AWf/2AokDrQImADgAAAEHC48CmwCvAAixAQKwr7AzKwAA//8ATv/2AiMC/gImAFgAAAAHC48CZAAA//8AWf/2AokDnAImADgAAAEHC5EBcgCvAAixAQGwr7AzKwAA//8ATv/2AiMC7QImAFgAAAAHC5EBOwAAAAEAJv9MAhwC1AApACVAIhgBAAEBSiIXDQwJAQAHAEcAAAABXwABAYoATBwaFRMCDRQrFzU+AzU0JicGBgcnPgI1NCYjIgYHJzY2MzIWFhUUBgceAhUUBgYrcpZXJDkwJVAqE1t2OkM8OmEsMjmART5qPzsyIjkjZ9u0Yhw7QUkqOUMYDRYKUhcrOSswNB8dSSgjJVFDN1AdETJIM12FYwABABv/EAHFAiUAJgAlQCIWAQABAUogFQsKBwEABwBHAAAAAV8AAQGNAEwaGBMRAg0UKxc1NjY1NCYnBgYHJz4CNTQmIyIGByc2NjMyFhYVFAYHFhYVFAYGG6GfKCUdQyUUVV0kNy4rTCQiLGAyOV03LiksPGzA8FsiZVEvORQMFAlOFiwzICsrFBJNGRYjSjwvSRsWTkJadUoAAP//AF8AAAKMA60CJgArAAABBwFLAJkArwAIsQEBsK+wMysAAP///9QAAAImA9sCJgBLAAABBwFL/6wA3QAIsQEBsN2wMysAAAABAF//EAKSAtUAFABYtREBAwIBSkuwGVBYQBcAAgIAXwQFAgAAiksAAwODSwABAYcBTBtAGwAEBIJLAAICAF8FAQAAiksAAwODSwABAYcBTFlAEQEAEA8ODQoIBQQAFAEUBg0UKwEyFhURIxE0JiMiBhURIxEzFzM2NgGgb4NsSlJoV2xUEgQidgLVeob9OwK6V1h3aP5mAstcLzcAAAAAAwA0/5cDWQL4ACsAOABDALZLsBlQWEAREwEHAkIdBgMGCSkDAgEGA0obQBETAQcCQh0GAwYJKQMCBQYDSllLsBlQWEArAAQACQYECWcABwcCXwACAo1LCwgKAwYGAV8FAQEBi0sAAAADXQADA4QATBtANwAEAAkGBAlnAAcHAl8AAgKNSwsICgMGBgVfAAUFg0sLCAoDBgYBXwABAYtLAAAAA10AAwOEAExZQBk6OS0sQD45QzpDNDIsOC04JSUYJCgQDA0aKwUnNjcmJicjBgYjIiY1NDYzMhYXMy4CNTUzERQXNjYXFhYVFAYGIyInBgYlMjY3NTQmIyIGFRQWJTI2NTQmIyIGBxYCP1sHERISBAUZVE9meXhiPU4YBgEEA2oNIl4xP0MmV0koHgUH/uROPwE9UkFCQgG5NCwZFyIyERdpBU47DRwLLzSLi4uOLiEGICQOyv3cMB05LQEBPC0jOyQGGDiXVlgQX2RoXFtiARkVDBQmIgYAAAACADn/9gKDAsoAHgAqADxAORkHAgUCAUoAAgAFBAIFZwMBAQGCSwcBBAQAXwYBAACLAEwgHwEAJiQfKiAqFRQRDwwLAB4BHggNFCsFIiYmNTQ2NyYmNTUzFRQWMzI2NTUzFRQGBxYWFRQGJzI2NTQmIyIGFRQWAVxYg0hLRzs0bEhNT0dsNTtFT5uLXlZWXl5VVgo7b01OZRgaYkRSUkNTU0NSUkViGhdlTnOEXFJJSVBQSUlSAAAAAgAx//YCLQL4AB4AKgA8QDkZBwIFAgFKAAIABQQCBWcDAQEBhEsHAQQEAF8GAQAAiwBMIB8BACYkHyogKhUUEQ8MCwAeAR4IDRQrBSImJjU0NjcmJjU1MxUUFjMyNjU1MxUUBgcWFhUUBicyNjU0JiMiBhUUFgEtSXFCQ0A0L2o3PT02ajA0PkeLc0pHR0tLRUYKOnFRUWgYE1tPeHZNR0dNdnhQWhQYZlJ5g1dXT05WVk5PVwAA//8AIv8uAhwCygImAD0AAAAHA18BRwAA//8AI/8xAbcCGwIGBXoAAP//AAAAAAKNA5cCJgAkAAABBwFOAOQArwAIsQIBsK+wMysAAP//AC3/9gHuAugCJgBEAAAABwFOAL0AAP//AF//EAHxAsoCJgAoAAAABwB6AMUAAP//ADT/EAILAiUCJgBIAAAABwB6AMMAAP//ADz/9gLVA/kCJgAyAAABBwe4AYkArwAIsQIDsK+wMysAAP//ADT/9gIuA0oCJgBSAAAABwe4ATEAAP//ADz/9gLVA/kCJgAyAAABBwe5AYkArwAIsQICsK+wMysAAP//ADT/9gIuA0oCJgBSAAAABwe5ATEAAP//ADz/9gLVA5cCJgAyAAABBwFOAScArwAIsQIBsK+wMysAAP//ADT/9gIuAugCJgBSAAAABwFOAM8AAP//ADz/9gLVA+8CJgAyAAAABwe7AYkAAP//ADT/9gIuA0oCJgBSAAAABwe6ATEAAP//AAAAAAJHA10CJgA8AAABBwFMAGIArwAIsQEBsK+wMysAAP//AAH/EAIPAq4CJgBcAAAABgFMRgAAAAACABD/4AGGAvgAFgAhADlANgkBBAEfAQMEFAECAgMDSgABAAQDAQRnAAAAhEsFAQMDAl8AAgKLAkwYFx4cFyEYISQiFwYNFysXJzY3JiY1ETMRNjMyFhUUBiMiJicGBjcyNjU0JiMiBxYWVEQiJAIBah8nQUJIRS5BEwkRnxoaHRkgHQIdICBUMBAnFgIn/eUOQTY3Rx4aEChKHBUYGBghKAAAAAIAU//gAukCJQAnADEAn0uwGVBYQBYSAQACGgEHBC8BBgclAQEGBEoBAQFHG0AXEgEAAhoBBwQvAQYHJQEBBgRKAQEBAUlZS7AZUFhAIAAEAAcGBAdnAAAAAl8DAQIChUsIAQYGAV8FAQEBgwFMG0AoAAQABwYEB2cAAgKFSwAAAANfAAMDjUsAAQGDSwgBBgYFXwAFBYsFTFlAESkoLiwoMSkxJCQkERMpCQ0aKwUnNjY3JiY1NTQjIgYVESMRMxczNjYzMhYVFTYzMhYVFAYjIiYnBgY3MjY1NCMiBxYWAbhEECQTAwFsUT1qVA8GGloyXGIfKEBCSEUsQhQJEJ8bGDYhHAIeICApQhkPIxOHfmJc/vACG0gqKF5ogg5FNTlCHRoRJkocFTAYISgAAAACABL/4AGQApQAHAAnAEtASAkBAAIRAQcEJQEGBxsBAgUGBEoAAQIBgwAEAAcGBAdnAwEAAAJdAAIChUsIAQYGBWAABQWLBUweHSQiHSceJyQiERETFwkNGisXJzY3JiY1NSM1NzczFTMVIxU2MzIWFRQGIyInBjcyNjU0JiMiBxYWXkQiJAIBS08lQZqaHydAQ0lEWikSmBsZHRkgHQEeICBUMBEoFvcwKHJ5Ue0ORTU5QjcgMxwVGBgYISgAAAADADT/9gOVAvgAIQAtADcAUEBNEwkCBgEfAQUGAkoAAgKESwgBBgYBXwMBAQGNSwsHCgMFBQBfBAkCAACLAEwvLiMiAQAzMS43LzcpJyItIy0eHBgWDw4HBQAhASEMDRQrBSImNTQ2MzIWFzMmJjU1MxUUBgczNjYzMhYVFAYjIicGBicyNjU0JiMiBhUUFiEyNTQjIgYVFBYBJXGAeGE9ThcGAQVqAwIFF04+YneEcIU5HWI7Q0Q9UEBCQwG9h4VNPUIKjIuKji4iEDgiubchOhIiLoyLi4xzOzhXZV5fX2hbXWHBwFxiYmEAAAMANP8QA5UCJQAhACsANwBQQE0fAQYFEwkCAQYCSgsHCgMFBQBfBAkCAACNSwgBBgYBXwMBAQGLSwACAocCTC0sIyIBADMxLDctNyclIisjKx4cGBYPDgcFACEBIQwNFCsBMhYVFAYjIiYnIxYWFRUjNTQ2NyMGBiMiJjU0NjMyFzY2BSIVFDMyNjU0JiEiBhUUFjMyNjU0JgKkcIF3Yj5NGAYCBGoEAgYWTz1heIRvhTocYv7Eh4ROPEEBMkRDPVBAQkMCJYuMio4uIhA4IszKIToSIi6MiouNczo5V8HAXWFhYmVeX19nXF1hAAAAAAMAAP+1Ao0C+AAPABgAGwBGQEMaFRIOCwUHBAFKAAEDAYQKCAIHAgEAAwcAZgAFBYRLAAQEgksJBgIDA4MDTBkZAAAZGxkbERAADwAPEhERERERCw0aKyEnIwMjEyMHIwEzFzczBxMBMzcmJicGBgcXJwcCHEyQYkxiOExwAQ9wFCFMRtP+TzhOBxEECBQGjioozv7nARnOAs01YMn90QEs4RY3ER9GEcl0dAACADz/tQJZAvgAIAApAExASR8DAQMFAycNCAQEAAUWEw4DAQADSgACAQKEBgEEBIRLBwEFBQNfAAMDiksAAAABXwABAYsBTCIhAAAhKSIpACAAICcSJSkIDRgrAQcWFwcmJicDFjMyNjcVBgYjIicHIzcmJjU0NjYzMhc3ByIGFRQWFxMmAjIUIBsoDBkOtCAlLlUsKlg6LykaTCJWVE+YbiQjDlZqeS0usBQC+DkKDVoFCwX9+AgRDl0QDwlKYSiueWylXgUpgZOAUXciAfoDAAAAAAIANP8wAewC+AAgACYASUBGExECBQIjHRgUBAQFHgUCAAQDSgABAAGEAAMDhEsABQUCXwACAo1LAAQEAF8GAQAAiwBMAQAmJBsZEA8OCwQDACABIAcNFCsFIicHIzcmJjU0NjYzMhc3MwcWFwcmJicDFjMyNjcVBgYDFBcTIyIBLCskSkxUMDdCdEoREExLUBoUIAsXDIAXHCxGHR1EvCB0ApIKCc/sH3ZZZHw7AdThBwpWBAgD/pgIFBBcERABFVcvAUYAAAAAAQAOAAAB/ALKAA0ALUAqAwEBBAEABQEAZQACAoJLAAUFBl4HAQYGgwZMAAAADQANERERERERCA0aKzMRIzUzETMRMxUjFSEVX1FRbJqaATEBQFcBM/7NV+NdAAACAA3/tQIlAvgAEAATADpANxIQBQIEAAIBSgABAAGEAAQEhEsIBwYDAgIDXQUBAwOCSwAAAIMATBERERMRExERERESEhAJDRsrISM1ByMTESM1ITczBzMVIwMRFTcBT2xbSaTWAa8WSRYgTYlAcr0BVAFkXS4uXf7kARyEhAAAAAEAMf8QAbkCJQA6AE1ASh4BAwIfCgIBAwkBBAE3AQUEOAEABQVKAAMDAl8AAgKNSwABAQRfAAQEi0sABQUAXwYBAACHAEwBADUzLy4jIRwaDgwAOgE6Bw0UKwUiJiYnJiYnJic1FhYzMjY1NCYmJy4CNTQ2MzIWFwcmJiMiFRQWFhceAhUUBgcWFxYWMzI2NxUGBgFjN0YrDwokIBgUI18tPDUUNzU0RyZxXTFXKSMjSiZiFzkzMUcmaWASCw4xJhEnDQ0v8CNFNCUqCwcLXBEbJiASHR8UFCo6LEZLFBJRDxU5ExwcFBMpOixMUgMcJCslBwVVBggAAQAj/xAB1AIbABsAQkA/DgECAw8JAgECGAEEARkBAAQESgACAgNdAAMDhUsAAQGDSwAEBABfBQEAAIcATAEAFhQNDAsKCAYAGwEbBg0UKwUiJiYnJiYjIzUBITUhFQEWFhcWFjMyNjcVBgYBhT1NLA4NMDcqARb++wF7/uw6PRAPNC0UHw8OKPAlRjErKUMBhlJL/n4LTDgvKQUFVQUHAAEAAgAAAakC1AAVAC1AKhMBAgASCQYDAQICSgACAgBfAwEAAIpLAAEBgwFMAQAQDggHABUBFQQNFCsTMhYVFAYHESMRNjY1NCYjIgYHJzY2yGl4XWVrX148PCZWHCcoZgLUa1lOhi/+8wFDH2w+MTwdFFMZIAAAAAEACQAAAaACJQAVAC1AKhMBAgASCQYDAQICSgACAgBfAwEAAI1LAAEBgwFMAQAQDggHABUBFQQNFCsTMhYVFAYHFSM1NjY1NCYjIgYHJzY2yGlvVmRqX1k7OSZOHCcoXwIla1lJhzBhlB9rPzY7HRROGiAAAwAOAAACWwLKABQAHQAqAElARgwBBwQBSgAEAAcBBAdlCAEBCQEABgEAZQAFBQJdAAICgksABgYDXQoBAwODA0wAACopKCcmJCAeHRsXFQAUABMhERELDRcrMzUjNTMRMzIWFRQGBxUeAhUUBiMDMzI2NTQmIyMRMzI2NTQmIyMVMxUjX1FR0YiNQz4qRSiIdJR3VD9NUmuDVkVHW3yKiqtTAcxQYj5UCwUIJUU4YmoBoDY1NS/960Q4Mz9KUwAAAgAH//YC2wLKABUAHQA1QDIEAgIACQoHAwUIAAVlAwEBAYJLAAgIBl8ABgaLBkwAAB0cGRcAFQAVJBEREREREQsNGysTNTMRMxEhETMRMxUjFRQGBiMiJjU1FxQzMjY1NSEHUmwBWWtSUj1+YIiNbK5aUf6nAVtcARP+7QET/u1cX0p3RZF3XVixYFJXAAD//wAAAAACbALKAgYBaAAAAAMAX/+1AfEC+AATABcAGwBGQEMKAQcNAQgJBwhlAAEJAVEABASESwsBBgYDXQUBAwOCSwwBCQkAXQIBAACDAEwbGhkYFxYVFBMSEREREREREREQDg0dKyEjByM3IxEhNzMHMxUjBzMVIwczATM3IxEzNyMB8eATShNoAR0MSgwrQjRkezvI/tpmNJoUO09LSwLKLi5czFvqAUXM/e/qAAAEADT/MAILAvgAHwAmACsALwBtQGoFAQYAKgEHBi4QCwMDAhkWEQMEAwRKAAUEBYQMCAIHDQkCAgMHAmYAAQGESwsBBgYAXwoBAACNSwADAwRfAAQEiwRMLCwnJyEgAQAsLywvJysnKyQjICYhJRgXFRMODAoJBAMAHwEfDg0UKwEyFzczBxYWFRUjBxYzMjY3FQYGIyInByM3JiY1NDY2FyIGBzM3Jhc0JicHBxYXNwEnFxVKTFI3PdQ3HSQ0USspUjkxKUlMUzM6PW1JOUUGYzEHcRQUJ7ECICgCJQPW7BxxTjqhChMTWBMRDNLvIXZTW35DUkpEjQGOJDoTcU5JK3QAAAH/s/88ARsCygAYADpANwQBAQIDAQABAkoFAQMGAQIBAwJlAAEHAQABAGMABASCBEwBABUUExIREA8ODQwIBgAYARgIDRQrFyImJzUWFjMyNjY1ESM1MxEzETMVIxEUBgIaJw4QJBQZLBtUVGxUVG3EBwZaBAYUMzABJFwBOv7GXP7hcWgAAAAC/8b/EAEJAugACwAjAElARhABAwQPAQIDAkoHAQUIAQQDBQRlAAEBAF8AAACESwAGBoVLAAMDAmAJAQIChwJMDQwgHx4dHBsaGRgXFBIMIw0jJCIKDRYrEzQ2MzIWFRQGIyImAyImJzUWFjMyNjURIzUzNTMVMxUjERQGTCQZGCQkGBkkMhorDxAgFCApTExqTExNAqshHBwhIB0d/IUHBVUFBSMxAThO2tpO/sNLWwAAAAACADz/EAMOAtQAIwAyAIBADxgDAgYFDQECBA4BAwIDSkuwGVBYQCIIAQUFAF8BBwIAAIpLAAYGBF8ABASLSwACAgNfAAMDhwNMG0AmAAEBgksIAQUFAF8HAQAAiksABgYEXwAEBItLAAICA18AAwOHA0xZQBklJAEAKykkMiUyHRsSEAsJBgUAIwEjCQ0UKwEyFhczNzMRFBYzMjY3FQYGIyImNTU0NjcjBgYjIiYmNTQ2NhciBhUUFjMyNjY1NTQmJgFiSW0cBA9bIBwOGAoLIhRHUAIBBh1qTlqCRkaEZ1pmZltOVyMjVwLUNitX/OwqIQUFVwYITVZSFygWLTdZpXJypFhckoKDjzZiRHZAXzUAAAACADT/EAJ/AiUAIAAtAJ5LsBlQWEASAwEFABcBBAYNAQIEDgEDAgRKG0ASAwEFARcBBAYNAQIEDgEDAgRKWUuwGVBYQCIIAQUFAF8BBwIAAI1LAAYGBF8ABASLSwACAgNgAAMDhwNMG0AmAAEBhUsIAQUFAF8HAQAAjUsABgYEXwAEBItLAAICA2AAAwOHA0xZQBkiIQEAKCYhLSItHBoRDwsJBgUAIAEgCQ0UKwEyFhczNzMRFBYzMjY3FQYjIiY1NTQ2NyMGBiMiJjU0NhciBhUUFjMyNjc1NCYBDj5OGAQNVhoZEBoJGDQ9RwMDBhdPPmB3eXdCQUFETEABPgIlLyNI/aAxJAYFURBNXTYUMRMiMIyKi45XaFxbY1VYEmBjAAAAAgAKAAACbwLKABIAGwBBQD4HAQIFAUoHAQUEAQIBBQJlCQEGBgBdCAEAAIJLAwEBAYMBTBQTAQAXFRMbFBsREA8ODQwLCgkIABIBEgoNFCsBMhYVFAYGBxMjAyMRIxEjNTMRFyMVMzI2NTQmASeJgyhBI8h8rHxsVVXBVVpTTFACymZoN0swDf7DASH+3wEhWgFPXPM/PkA2AAAAAQAHAAABmAIlABcAe0uwGVBYQAsSCwIDBgFKEQEESBtACxEBBAUSCwIDBgJKWUuwGVBYQBwIBwIDAgEAAQMAZQAGBgRfBQEEBIVLAAEBgwFMG0AgCAcCAwIBAAEDAGUABASFSwAGBgVfAAUFjUsAAQGDAUxZQBAAAAAXABcjJBERERERCQ0bKwEVIxUjNSM1MzUzFzM2NjMyFwcmIyIGBwE2eWpMTFQOBBlUNyAbCxocNlYLAT9P8PBP3GArPwVjB0Y/AAIAAAAAAkcCygARABQANUAyBgMCAQABSgkHBQMDCAICAAEDAGYGAQQEgksAAQGDAUwAABQTABEAERERERESEhEKDRsrARUjBxEjEScjNTMnMxczNzMHBzcjAkBngGuBZjlAdT7iPnRA40WKAlRU6/7rARHvVHZ2dnbYhAACAAH/EAIPAhsAHAAmADlANhgRAgYEEAEFBgJKCAMCAQkHAgQGAQRmAgEAAIVLAAYGBV8ABQWHBUwjIhEUJSMREREREAoNHSsTMxczNzMHMxUjAwYGIyImJzUWFjMyNjc3AyM1MxMzNjY3NyMXFhYBcj+vPHJBN1WIHWFOGSQNCiARLjgQFnNcPMIEBRUNE3cUDRQCG6ysrE/+l05ZBQNUAgQ1KzoBIE/+9xpGJDY3I0AAAP//AFD/9gIRAiUBDwBEAj4CG8AAAAmxAAK4AhuwMysAAAIANP/2AhkCJQASAB8AfkuwGVBYQAoJAQUBDwEABAJKG0AKCQEFAg8BAwQCSllLsBlQWEAZAAUFAV8CAQEBjUsHAQQEAF8DBgIAAIsATBtAIQACAoVLAAUFAV8AAQGNSwADA4NLBwEEBABfBgEAAIsATFlAFxQTAQAbGRMfFB8ODQwLBwUAEgESCA0UKwUiJjU0NjMyFhczNzMRIycjBgYnMjY1NTQmIyIGFRQWAQxidnhiPU4YBA5WUxIFF04lTkA9UkFCQgqMiouOLiFF/eVIIjBWV1gQX2RoXFxiAAD//wBT//YCOAIlAQ8EIQJsAhvAAAAJsQACuAIbsDMrAAACAFP/9gI4Av0AIQAsAMtLsBlQWEASAwEBAAQBAgEOAQUCGwEDBgRKG0ASAwEBAAQBAgEOAQUCGwEEBgRKWUuwGVBYQCIAAQEAXwcBAACESwgBBQUCXwACAo1LAAYGA18EAQMDiwNMG0uwJlBYQCYAAQEAXwcBAACESwgBBQUCXwACAo1LAAQEg0sABgYDXwADA4sDTBtAJAcBAAABAgABZwgBBQUCXwACAo1LAAQEg0sABgYDXwADA4sDTFlZQBkjIgEAKSciLCMsHh0ZFxMRCAYAIQEhCQ0UKxMyFhcVJiYjIgYHFRQGBzM2NjMyFhUUBiMiJicjByMRNDYTIgYHFBYzMjY1NNwVJQsHHBEXGAEDAgUXTj5hd3hhPk0XCBRORq5NPAE7UUFBAv0JBVUDBxofKh86FCIujIqLjS0fQgJoTEn+0VxgYWRkXr8AAAABACD/9gG2AiUAGgA3QDQYAQMAFwwCAgMLAQECA0oAAwMAXwQBAACNSwACAgFfAAEBiwFMAQAVExAOCQcAGgEaBQ0UKxMyFhYVFAYGIyImJzUWFjMyNjU0IyIGByc2NsJKbT1Cc0ovQx0eRCtJS5McQBogG1YCJTh5X2J/PhARXBAUZV66Dw1WDRIAAAIAMP/OAfECJQAkAC4AVUBSAwEBAAQBAgEMAQQCJx8CBQQYAQMFBUocGwIDRwACBwEEBQIEZwABAQBfBgEAAI1LAAUFA18AAwOLA0wmJQEAKiglLiYuFxUQDggGACQBJAgNFCsBMhYXByYmIyIVFBYXNjYzMhYVFAYGIyInBgYHJzY2NyY1NDY2EyIHFjMyNjU0JgE9Lk0aIRo/HZUEBCNWL0lSNlMuZD0KEghFChoPKkN1Xkg3JUgnMyECJRMMVgoRwBQmESIlRjk0QB4tEykZHx84GUNqZHw7/pVDLSIcFB4AAAIANP8QAooC+AAkADEAVEBRFAEGAgcBAQUiAQQBIwEABARKAAMDhEsABgYCXwACAo1LCAEFBQFfAAEBi0sABAQAXwcBAACHAEwmJQEALSslMSYxIB4bGhIQDAoAJAEkCQ0UKwUiJjU1NDY3IwYGIyImNTQ2MzIWFzMuAjU1MxEUFjMyNjcVBgEyNjc1NCYjIgYVFBYCOT9LBQEGF049YXh4Yj1OGAYBBANqHRsSHQoa/rVOPwE9UkFCQvBNXTcTMhAiLoyKi44uIQYgJA7K/MMxJAYFURABPVZYEF9kaFxbYgAAAAIANP/2An8C/gAhAC4Ay0uwGVBYQBIUAQMCFQEBAwkBBgEeAQAFBEobQBIUAQMCFQEBAwkBBgEeAQQFBEpZS7AZUFhAIgADAwJfAAIChEsABgYBXwABAY1LCAEFBQBfBAcCAACLAEwbS7AkUFhAJgADAwJfAAIChEsABgYBXwABAY1LAAQEg0sIAQUFAF8HAQAAiwBMG0AkAAIAAwECA2cABgYBXwABAY1LAAQEg0sIAQUFAF8HAQAAiwBMWVlAGSMiAQAqKCIuIy4dHBkXEhAHBQAhASEJDRQrBSImNTQ2MzIWFzMuAjU1NDMyFhcVJiYjIgYVESMnIwYGJzI2NzU0JiMiBhUUFgEMYnZ4Yj1OGAYBBAOJFiYLBx0RFhtTEgUXTiVOPwE9UkFCQgqMiouOLiEGHyUOOpYKBFUDBxsg/ZZIIjBXVlgQX2RoXFti//8AMf/2AggCJQBHAEgCPAAAwABAAAAAAAIAMf/2AggCJQAWAB0APkA7FAEDABMBAgMCSgACAAQFAgRlAAMDAF8GAQAAjUsABQUBXwABAYsBTAEAHBoYFxEPDQwJBwAWARYHDRQrEzIWFhUUBgYjIiY1NSEmJiMiBgc1NjYTIxYWMzI2/093Qz1tSWp6AWoCU0s0USspUtP+ATs+OUUCJT57W1p/QoRwOlJZExNYExH+sT9PSgAAAP//ACr/9gHVAiUCBgGBAAAAAgA0//YCNgIlABMAJwA/QDwGAQQFAUoABQAEAwUEZwcBAgIAXwYBAACNSwADAwFfAAEBiwFMFRQBACMhIB4aGBQnFScPDQATARMIDRQrATIWFRQGBxUeAhUUBiMiJjU0NhciFRQWMzI2NTQmIyM1MzI2NTQmAU9nbzgwHzcjfHaCjpaDrFlSOUlISyQZRkw4AiVPRTM2DQQFGzMnR2CShYSUVcNnWyssKCJRHywgKAAB/8b/EAEJAhsAFwA9QDoEAQECAwEAAQJKBQEDBgECAQMCZQAEBIVLAAEBAGAHAQAAhwBMAQAUExIREA8ODQwLCAYAFwEXCA0UKxciJic1FhYzMjY1ESM1MzUzFTMVIxEUBhoaKw8QIBQgKUxMakxMTfAHBVUFBSMxAThO2tpO/sNLWwACADP/EAJ/Av4ALwA8AJVAFgMBAQAEAQUBKQEGBRIBAwQRAQIDBUpLsCRQWEArAAEBAF8IAQAAhEsJAQYGBV8ABQWNSwAHBwRfAAQEi0sAAwMCXwACAocCTBtAKQgBAAABBQABZwkBBgYFXwAFBY1LAAcHBF8ABASLSwADAwJfAAIChwJMWUAbMTABADc1MDwxPCgmIiAWFA8NCAYALwEvCg0UKwEyFhcVJiYjIgYVERQGIyImJzUWFjMyNjU1NDY2NSMGBiMiJjU0NjMyFzMmJjU1NAMiBhUUFjMyNjU1NCYCOBYmCwcdERYbe387YCkpaDlCSAECAxxSNWZzc2ZsOQYCBow/RENCSUVGAv4KBFUDBxsg/Y9zdhARXRUVS0QSCRwZBConk4OCl1EUNBY2lv7PY19eYlFcFGhZAAAA//8ANP8QAhkCJQIGAEoAAAABADT/9gIBAiUAHgBGQEMDAQEABAEEARABAgMVAQUCBEoABAADAgQDZQABAQBfBgEAAI1LAAICBV8ABQWLBUwBABkXFBMSEQ4MCAYAHgEeBw0UKwEyFhcHJiYjIgYVFBYzMjY3NSM1MxEGBiMiJjU0NjYBSDVXJSQfRiJSW0lLHywZcNgvZTx1iEZ9AiUSFFcQE19gWmMGBoNP/vASFYuLXX0/AAIAAP8RAg4CGwAYACQAMkAvHxMMBgQDAQFKAgEBAYVLBQEDAwBfBAEAAIcATBoZAQAZJBokEhEIBwAYARgGDRQrBSImNTQ2NwMzFxYWFzM2Njc3MwMWFhUUBicyNjU0JicGBhUUFgEFOUIlG8pwZQwdBgQHHQ1lcM4eIkM4DxUSEhMRFe9KODFfNQHD7h1PHh1PHu7+OjtdKjdLThkcFUEgIEAUHRoAAAL//v/2Ag8CJQAvADsAPEA5HgICAQAoFgoDBAUBAkoDAQEBAF8EBgIAAI1LAAUFAl8AAgKLAkwBADc1IiAaGREPBwUALwEvBw0UKwEyFxUmJiMiBgcHFhYVFAYjIiY1NDY3JyYmJyYGBzU2NjMyFhcXFhYXMzY2Nzc2NgMGBhUUFjMyNjU0JgHcHRYGEQcRHBZtISBDOThCHx9vExwRCA8GChsPIjAbNg0ZCgQKGg02FzCwERMUEBAUFgIlClECAxQfky1EKzVCQjYsRCqXGRYBAQQCUAQHISVKEicSECoRSyEk/qQXKhYWGBgWGCwA//8AUP8jAiMCGwEPAEsCdgIbwAAACbEAAbgCG7AzKwAAAQBTAAACJgL9ACIAYkAOBwEBAAgBAgESAQQCA0pLsCZQWEAcAAEBAF8AAACESwAEBAJfAAICjUsGBQIDA4MDTBtAGgAAAAECAAFnAAQEAl8AAgKNSwYFAgMDgwNMWUAOAAAAIgAiIhMpJSMHDRkrMxE0NjMyFhcVJiYjIgYVFRQGBzM2NjMyFhURIxE0IyIGFRFTR0MUJQsHHBEXGQQCBxpXM19laW9TPgJoTEkJBVUDBxofSBgvDSkpXWj+pAFNfmNc/vQAAAABAFP/EAImAv0ALgCDQBYDAQEABAECAQ4BBQIdAQQGHAEDBAVKS7AmUFhAJQABAQBfBwEAAIRLAAUFAl8AAgKNSwAGBoNLAAQEA18AAwOHA0wbQCMHAQAAAQIAAWcABQUCXwACAo1LAAYGg0sABAQDXwADA4cDTFlAFQEAKyonJSEfGhgTEQgGAC4BLggNFCsTMhYXFSYmIyIGFRUUBgczNjYzMhYVERQGIyImJzUWFjMyNjURNCMiBhURIxE0Nt0UJQsHHBEXGQQCBxpWNV9kQkcUKA0KHBAXHG9TPmpHAv0JBVUDBxofRRktDikpXmf+SUZSCAVWBAYcJQGpe2Rb/vECaExJAAACAAcAAAEJAugACwAXAD9APAkHAgUEAQIDBQJlAAEBAF8IAQAAhEsABgaFSwADA4MDTAwMAQAMFwwXFhUUExIREA8ODQcFAAsBCwoNFCsTMhYVFAYjIiY1NDYTFSMVIzUjNTM1MxWJGCQkGBkkJJlMakxMagLoHCEgHR0gIRz+WU7z807a2gD//wBR//YBWQIbAgYBhQAAAAEAHwAAAS0CGwALACZAIwoJCAcEAwIBCAABAUoCAQEBhUsAAACDAEwAAAALAAsVAw0VKwEVBxEXFSE1NxEnNQEtUlL+8lJSAhs6Gf6KGDo6GAF2GToAAAABAAQAAAGHAvgAHwA7QDgRAQQCAQEBAAJKBQECAAABAgBnAAQGAQEHBAFnAAMDhEsIAQcHgwdMAAAAHwAfEhIjFBISIwkNGyszESYmIyIGByM2NjMyFhcRMxEWFjMyNjczBgYjIiYnEZAIEAcXFwY5BD0xBw0GaggQCBYYBzgFOzEHDgcBawMEHBxARwMBATv+mQMFHRw/SAMB/sEAAAAAAv/2AAABZwL4ABEAHAA+QDsKAQcBAUoAAQAHAwEHZwkGAgMEAQAFAwBnAAIChEsIAQUFgwVMExIAABgWEhwTHAARABERERIkIQoNGSszESMiJjU0NjMyFxEzETMVIxEDMzU0JiMiBhUUFpcoQDkzOh8VamZmjCIUFxMQGQEoOy4rPxIBD/55Sf7YAXEMGB0TDRIPAAEAU/8QAUIC+AANACtAKAsBAgEMAQACAkoAAQGESwACAgBfAwEAAIcATAEACQcFBAANAQ0EDRQrFyImNREzERQzMjY3FQbvSVNpRhEiDSDwTV0DPvzDVQYFURAAAQBT/xACjAL4AB8AU0BQGAEDBhkPAgIDBAEBBAMBAAEESgACAwQDAgR+AAUFhEsAAwMGXQAGBoVLAAQEg0sAAQEAXwcBAACHAEwBABcWFRQTEhEQDgwIBgAfAR8IDRQrBSImJzUWFjMyNjU0JiMjNTchESMRMxUhFQcWFhUUBgYBeTtiJSVmN1FXZmI61P7KamoBtdp2fkF78BMRXhIZVUZLS0vi/jsC+N1K5wp3aEdsPgD//wBP//YDYgIbAQ8AUAO1AhvAAAAJsQABuAIbsDMrAAABAE//EANiAhsAJAA4QDUEAQADAUoKAQMBSQYEAgIChUsFAQMDAGABAQAAi0sIAQcHhwdMAAAAJAAkEyITIhMkJwkNGysFNTQ2NyMGBiMiJyMGBiMiJjURMxEUMzI2NREzERQzMjY1ETMRAvgEAgcZUzB8KQcaXDNcW2plSD5pZkw5avDpEDEOKihXLCteaAFf/q99WVMBIv6vfWNbARD89QAAAAEAU/8QA2YCJQAtAJpLsBlQWEATJAEDAAsBAgQKAQECA0oqAQMBSRtAEyQBAwcLAQIECgEBAgNKKgEDAUlZS7AZUFhAHwUBAwMAXwgHCQMAAI1LBgEEBINLAAICAV8AAQGHAUwbQCMABweFSwUBAwMAXwgJAgAAjUsGAQQEg0sAAgIBXwABAYcBTFlAGQEAKScjIiEgHRsZGBUTDw0IBgAtAS0KDRQrATIWFREUBiMiJic1FhYzMjY1ETQjIgYVESMRNCMiBhURIxEzFzM2NjMyFzM2NgKvW1xCSBQoDAkdEBYcZUg+aWZMOWpUDwYZVTB8KAgaXAIlXmj+SUZSCAVWBAYcJQGnfVlT/t4BUX1iXP7wAhtIKihXLCsAAf/j/xACJgIlAB8AhEuwGVBYQA4cAQIAEwEEARIBAwQDShtADhwBAgUTAQQBEgEDBANKWUuwGVBYQBwAAgIAXwUGAgAAjUsAAQGDSwAEBANgAAMDhwNMG0AgAAUFhUsAAgIAXwYBAACNSwABAYNLAAQEA2AAAwOHA0xZQBMBABsaFxUQDgkHBQQAHwEfBw0UKwEyFhURIxE0IyIGFREUBiMiJic1FhYzMjY1ETMXMzY2AWReZGlvUj9OQhYoDAocDxwfVA8GGlsCJV5o/qEBUH5iXP6rW1AICFEFBiQxAmBIKigAAQBT/xAClwIlAB8AYUAOGAECBAYBAAMHAQEAA0pLsBlQWEAbAAICBF8FAQQEhUsAAwODSwAAAAFfAAEBhwFMG0AfAAQEhUsAAgIFXwAFBY1LAAMDg0sAAAABXwABAYcBTFlACSQREyQlIgYNGisFFBYzMjY3FQYGIyImNRE0IyIGFREjETMXMzY2MzIWFQImHh0OHQsNKhZATW9SP2pUDwYaWzNeZEUxJAYFUQgITV0Bln5iXP7wAhtIKiheaAAAAQBTAAACPwIbABEAI0AgDAECAAFKAQEAAIVLBAMCAgKDAkwAAAARABERFhEFDRcrMxEzAS4CNREzESMBHgIVEVOBAQ4CAwNlgv71AQMCAhv+Xg83NQ0BGv3lAaEPNjgR/u0A//8ANP/2Ai4CJQIGAmMAAAACADT/9gMsAiUAFwAjAUhLsBlQWEAKAgECAA8BBgUCShtLsB5QWEAKAgECAQ8BBgUCShtLsCJQWEAKAgECAQ8BBgkCShtACgIBCAEPAQYJAkpZWVlLsBlQWEAjAAMABAUDBGULCAICAgBfAQoCAACNSwkBBQUGXwcBBgaDBkwbS7AeUFhAOAADAAQFAwRlCwgCAgIAXwoBAACNSwsIAgICAV0AAQGFSwkBBQUGXQAGBoNLCQEFBQdfAAcHiwdMG0uwIlBYQDYAAwAEBQMEZQsIAgICAF8KAQAAjUsLCAICAgFdAAEBhUsABQUGXQAGBoNLAAkJB18ABweLB0wbQDMAAwAEBQMEZQsBCAgAXwoBAACNSwACAgFdAAEBhUsABQUGXQAGBoNLAAkJB18ABweLB0xZWVlAHxkYAQAfHRgjGSMSEA4NDAsKCQgHBgUEAwAXARcMDRQrATIXNSEVIRUzFSMVIRUhNQYjIiYmNTQ2FyIGFRQWMzI2NTQmATFVOwFr/vv19QEF/pU7WEhxQYd1Qk1FS0tFRQIlNixVhFSZVSw2QX1ahpFYY1xbZmZbXGMAAAAAAgA1//YC5wIlABQAKQBDQEAKAQQFAUoABQMEAwUEfggBAwMAXwcBAACNSwYBBAQBXwIBAQGLAUwWFQEAJSMgHxwaFSkWKQ8NCAYAFAEUCQ0UKwEyFhYVFAYjIiYnIwYGIyImNTQ2NhciBhUUFjMyNjU1MxUUFjMyNjU0JgGQbppPZl86RxEFEUY6YGVPmnF6eTYvMSpkLS0wNncCJU+QYWyDMS0tMYNsYY9QV35pTE9GOXl5PUJPS2l/AP//ADP/EAK7AvgCBgHdAAD//wAR//YBVgIbAQ8AVQGpAhvAAAAJsQABuAIbsDMrAAABABH/9gFWAvgAEQBmS7AZUFhACw4DAgECAgEAAQJKG0ALDgMCAQICAQADAkpZS7AZUFhAEgACAoRLAAEBAF8DBAIAAIsATBtAFgACAoRLAAMDg0sAAQEAXwQBAACLAExZQA8BAA0MCwoGBAARAREFDRQrFyInNxYzMjY2NREzESMnIwYGTCAbCxocKEcralQNBRpSCgVjByhLNQH5/QhgLD4AAAEAEf8QAcUCGwAgAEJAPw4HAgIDDQEBAh0BBAEeAQAEBEoAAwOFSwACAgFfAAEBi0sABAQAYAUBAACHAEwBABsZFhURDwwKACABIAYNFCsFIiY1NTQ2NyMGBiMiJzcWMzI2NjURMxEUFjMyNjcVBgYBdD5KBAIEGlA4IBsLGhwoRytqHBsSHQkLLPBNXUkXNBArPQVjByhLNQEc/aAxJAYFUQgIAAAAAAEAU/8QAZgCJQARAGZLsBlQWEALAgEBAA4DAgIBAkobQAsCAQMADgMCAgECSllLsBlQWEASAAEBAF8DBAIAAI1LAAIChwJMG0AWAAMDhUsAAQEAXwQBAACNSwACAocCTFlADwEADQwLCgYEABEBEQUNFCsBMhcHJiMiBgYVESMRMxczNjYBXSAbCxocKUYralQOBBlUAiUFYwcoSzX99AMLYCs/AAAAAAEAU/8QAZgCJQAcAHxLsBlQWEAQAgEBABkPAwMCARABAwIDShtAEAIBBAAZDwMDAgEQAQMCA0pZS7AZUFhAFwABAQBfBAUCAACNSwACAgNfAAMDhwNMG0AbAAQEhUsAAQEAXwUBAACNSwACAgNfAAMDhwNMWUARAQAYFxQSDQsGBAAcARwGDRQrATIXByYjIgYGFREUMzI2NxUGBiMiJjURMxczNjYBXSAbCxocKUYrRREdDQ8lGklTVA4EGVQCJQVjByhLNf6fVQYFUQgITV0CYWArPwAAAAEAUAAAAVYCJgAOACtAKAMBAQAEAQIBAkoAAQEAXwMBAACNSwACAoMCTAEACwoIBgAOAQ4EDRQrEzIWFwcmJiMiFREjETQ2+BkxFAwOIxlHaVoCJgoGWQQJWP6OAXVkTQAAAAABABP/EAEZAiYADwArQCgNAQIADAEBAgJKAAICAF8DAQAAjUsAAQGHAUwBAAoIBQQADwEPBA0UKxMyFhURIxE0JiMiBgcnNjZyTVppIiUZIw0NFDICJk1k/ZsCYiwsCQRZBgoAAgBVAAACMQIbAA4AFwAzQDAJAQIEAUoABAACAQQCZQAFBQBdAAAAhUsGAwIBAYMBTAAAFxURDwAOAA4RFyEHDRcrMxEzMhYVFAYGBxcjJyMVETMyNjU0JiMjVfVabCI4IJt4iHJyOEAxN4ICG1JOLj0lCeLS0gEjKysiLgAAAP//AFUAAAIxAhsBRwRNAAACG0AAwAAACbEAArgCG7AzKwAAAAABADH/EAG5AiUANQBCQD8oAQUEKRQCAwUFAQADDAEBAA0BAgEFSgAFBQRfAAQEjUsAAwMAXwAAAItLAAEBAl8AAgKHAkwlLCUlJCIGDRorJRQGIyInFRQWMzI2NxUGBiMiJjU1FhYzMjY1NCYmJy4CNTQ2MzIWFwcmJiMiFRQWFhceAgG5c2crHyIiEBwNDiQZRVAjXy08NRQ3NTRHJnFdMVcpIyNKJmIXOTMxRyaYUFIGRS0nBQVOBwhKXL4RGyYgEh0fFBQqOixGSxQSUQ8VORMcHBQTKToAAAAAAf/j/xABLQL+ABwAWEAPAwEBABIEAgMBEQECAwNKS7AkUFhAFgABAQBfBAEAAIRLAAMDAl8AAgKHAkwbQBQEAQAAAQMAAWcAAwMCXwACAocCTFlADwEAFhQPDQgGABwBHAUNFCsTMhYXFSYmIyIGFREUBiMiJic1FhYzMjY1ETQ2NuMYJwsIHg4dH05CFigMChwPHB8lQQL+CgZRBAcjM/1pW1AICFEFBiQxAppASh8AAAAAAf/j/xABLQL+ACQAd0ASFgEFBBcBAwUEAQECAwEAAQRKS7AkUFhAIAYBAwcBAgEDAmUABQUEXwAEBIRLAAEBAF8IAQAAhwBMG0AeAAQABQMEBWcGAQMHAQIBAwJlAAEBAF8IAQAAhwBMWUAXAQAhIB8eGxkUEg4NDAsIBgAkASQJDRQrFyImJzUWFjMyNjURIzUzETQ2NjMyFhcVJiYjIgYVETMVIxEUBi0WKAwKHA8cH0xMJUEqGCcLCB4OHR9MTE7wCAhRBQYkMQE9UwEKQEofCgZRBAcjM/75U/7DW1AAAAAAAf/t/xABLQIlABsAN0A0CwEBAhgKAgMBGQEAAwNKAAEBAl8AAgKNSwADAwBfBAEAAIcATAEAFhQPDQgGABsBGwUNFCsXIiY1ETQmIyIGBzU2NjMyFhURFBYzMjY3FQYG4kFOHBoNGwgLJhY8TR8cDh0KDCnwTlwBxSslBwRRBgpHW/44MSQGBVEICAAC/5j/EAEtAv4AHAAnAHVACg8BAwIQAQEDAkpLsCRQWEAhBAEBBwEFBgEFZwADAwJfAAIChEsJAQYGAF8IAQAAhwBMG0AfAAIAAwECA2cEAQEHAQUGAQVnCQEGBgBfCAEAAIcATFlAGx4dAQAjIR0nHicaGRgXFBINCwcFABwBHAoNFCsXIiY1NDYzMxE0NjYzMhYXFSYmIyIGFREzFSMGBicyNjU1IyIGFRQWJ0NMREwrJUEqGCcLCB4OHR9JSQRRSxkdJhwkFfBDMzZEAlVASh8KBlEEByMz/a5JW0xLIScUFxkSGgD//wAZ/4cBbQIlAQ8AVwF/AhvAAAAJsQABuAIbsDMrAAABABL/EAFmApQAFwBAQD0NAQIEAgEAAgMBAQADSgADBAODBQECAgRdAAQEhUsGAQAAAV8AAQGHAUwBABQTEhEQDwwLBwUAFwEXBw0UKwUyNxUGBiMiJiY1ESM1NzczFTMVIxEUFgEVLSQROh0sSSxLTyVBmpormg1QCAseSkICEDAocnlR/fIsKgAAAAIAB//2Am4CGwAXAB8AbLUPAQYJAUpLsBlQWEAfBAICAAoLCAMFCQAFZQMBAQGFSwAJCQZgBwEGBoMGTBtAIwQCAgAKCwgDBQkABWUDAQEBhUsABgaDSwAJCQdgAAcHiwdMWUAVAAAfHhwaABcAFyQRERERERERDA0cKzc1MzUzFSE1MxUzFSMVIycjBgYjIiY1NRcUFjMyNjchB0drAQBqS0tVDwUaXDNfZGs1OE9BA/8A+U/T09PTT/lHKiddZz8vPz5YVAAAAQAd//YCTQIbACAANUAyFwsCAQIBSgUBAQECXQQBAgKFSwADAwBfBgEAAIsATAEAGxoZGBIQCgkIBwAgASAHDRQrBSImJjU0NjcjNTMVBgYVFBYzMjY1NCYnNTMVIxYWFRQGATRMc0E4MH/zMkFLTU1MRDH0fjE2iwo8cExMaSNVURltT05bW09IdBhRVSZqRnSGAAEAT//2AikCJQAcAHBLsBlQWEAKGgEEABkBAwQCShtAChoBBAIZAQMEAkpZS7AZUFhAFwAEBABfAgUCAACNSwADAwFfAAEBiwFMG0AbAAIChUsABAQAXwUBAACNSwADAwFfAAEBiwFMWUARAQAYFhEPDAsIBgAcARwGDRQrATIWFRUUBiMiJjURMxEUFjMyNjU1NCYjIgc1NjYBj0xOcH2AbWpARUI/HiIdGw8qAiVNW5B1gn94AS7+01lISViLLyQJVgYGAAD//wAAAAACDgIbAQ8AWQIOAhvAAAAJsQABuAIbsDMrAP//AAv//wMcAhoBDwBaAycCG8AAAAmxAAG4AhuwMysA//8AAAAAAg4DCwEPAFwCDwIbwAAACbEAAbgCG7AzKwAAAQAAAAAB9gIbAAgAI0AgBwQBAwABAUoDAgIBAYVLAAAAgwBMAAAACAAIEhIEDRYrAQMVIzUDMxc3AfbFasd4hIMCG/692NgBQ+joAAEAI/8QAiQCGwAXAEhARQwBAgMHAQEEFQEFARYBAAUESgACAgNdAAMDhUsABAQBXQABAYNLAAUFAF8GAQAAhwBMAQATEQ4NCwoJCAYFABcBFwcNFCsFIiYmNTUhNQEhNSEVASEVFBYzMjY3FQYB2iY6Iv7LARb++wF7/vABGB0dDR0JG/AeSD5MQwGGUkv+gpszIQYETg8AAgAj/6kCIQIbABkAIwA7QDgLAQECBgEAAwJKAQEARwAEAAcDBAdnAAEBAl0AAgKFSwYBAwMAXQUBAACDAEwkIyQiEhESFAgNHCsXJzY2NyM1ASE1IRUBMzY2MzIWFRQGIyMGBjczMjY1NCYjIgbzRgYMBqIBFv77AX3+7UwqWD41QlRbWwkSRDkrIhQTGi1XHBAdDkMBhlJJ/oBRTj8vQEMUKpAbFQ4WKQAA//8AEv8QAecCGwIGAsoAAAAC//L/EAIGAhsAJwAyAF1AWhYBAwQXEQICAyseCgMFBiUhAgAFBEoiAQBHAAIDAQMCAX4AAQAGBQEGZwADAwRdAAQEhUsIAQUFAF8HAQAAhwBMKSgBAC4sKDIpMhUUExIQDggGACcBJwkNFCsXIiYmNTQ2MzIWFzY1NCYjIzU3ITUhFQceAhUUBgcWFhcHJiYnBgYnMjY3JiMiBhUUFrwyXTtaTT1sMwdpYTjV/tMBq9pJbT4TDw8iED0OIA4laEoqSxlWVCklPPAeQDU5RSkmFhtNTkjfVkrjBjpkRSU8GA4jEjkRIQ4eIlQXFUQeFBwiAAAAAQAJAAABoAL9ABUASUAMEwECABIJBgMBAgJKS7AmUFhAEQACAgBfAwEAAIRLAAEBgwFMG0APAwEAAAIBAAJnAAEBgwFMWUANAQAQDggHABUBFQQNFCsTMhYVFAYHESMRNjY1NCYjIgYHJzY2yGlvVmRqX1o7OSZPHCcoXwL9a1lJhzD+xwFsH2s/NjsdFE8aHwAA//8AGgAAAbEC/QBHBGEBugAAwABAAAAAAAEACf/2AaAC+AAVAC1AKhANBAMBAgMBAAECSgACAoRLAAEBAGADAQAAiwBMAQAPDggGABUBFQQNFCsXIiYnNxYWMzI2NTQmJxEzERYWFRQGxTdfJiccTyY5O1pfamRWcQogGU8UHTs2P2sfAXH+wi+GSVpsAAAAAAEANP8RAcoCJQAaADdANAoBAgEYCwIDAhkBAAMDSgACAgFfAAEBjUsAAwMAXwQBAACHAEwBABYUDw0IBgAaARoFDRQrBSImNTQ2NjMyFhcHJiYjIgYVFBYWMzI2NxUGASx8fER0SC1PGiAaPB1ITiJBMCpDHTnvvMmUr0wSDVYKEY+kboU7FBBdIAD//wA8//YC1QLVAiYAMgAAAAcAeQEBAAD//wBTAAACIwIbAgYBywAAAAIAK//2Ai0CJQASACYAP0A8DAEEAwFKAAMABAUDBGcHAQICAF8GAQAAjUsABQUBXwABAYsBTBQTAQAjIR0bGhgTJhQmBwUAEgESCA0UKwEyFhUUBiMiJjU0Njc1JiY1NDYXIgYVFBYzMxUjIgYVFBYzMjY1NAEYhZCUgXh1SDAvOHhlOz9NRRgjS0hNOVNUAiWShYeRWkc7PAwEDDgxR0tVIiMqIVEnKi4lXmXCAAAAAQA0//YCXQL9ACsAkEAbAwEBAAQBBwEpCgICBwsBBQIXAQMEHAEGAwZKS7AmUFhAKAAFAAQDBQRlAAEBAF8IAQAAhEsAAgIHXwAHB41LAAMDBl8ABgaLBkwbQCYIAQAAAQcAAWcABQAEAwUEZQACAgdfAAcHjUsAAwMGXwAGBosGTFlAFwEAJyUgHhsaGRgVEw8NCAYAKwErCQ0UKwEyFhcVJiYjIhUVByYmIyIGFRQWMzI2NzUjNTMRBgYjIiY1NDY2MzIWFzU0Ah4UIQoHHREvJB9GIlJbSUsfLBlw2C9lPHWIRn1RGCwUAv0JBVUDBzJ2VBATX2BaYwYGg0/+8BIVi4tdfT8EBE+R//8AUwAAAjECGwIGAdYAAAAD/6L/EAEGAugACwAbACYAS0BIBQEDCAEGBwMGZwkBAAABXwABAYRLAAQEhUsLAQcHAmAKAQIChwJMHRwNDAEAIiAcJh0mGRgXFhUUExEMGw0bBwUACwELDA0UKxMiJjU0NjMyFhUUBgMiJjU0NjMzETMRMxUjBgYnMjY1NSMiBhUUFokZJCQZGCQkdUBKQkkmaklJBE5JFhsiGSETAm4dICEcHCEgHfyiQzM2RAIb/eVJW0xLICYWFxkSGgAAAP//AAb/IwHcAhsBDwBOAi8CG8AAAAmxAAG4AhuwMysAAAEAUwAAAawCGwAFAB9AHAAAAIVLAAEBAl4DAQICgwJMAAAABQAFEREEDRYrMxEzETMVU2rvAhv+OlUAAAIANP8QAooC/gAlADIAgUASHQEDAh4BAQMRAQYBBAEABQRKS7AkUFhAJgADAwJfAAIChEsABgYBXwABAY1LCAEFBQBfAAAAi0sHAQQEhwRMG0AkAAIAAwECA2cABgYBXwABAY1LCAEFBQBfAAAAi0sHAQQEhwRMWUAVJyYAAC4sJjInMgAlACUlKiQnCQ0YKwU1NDY3IwYGIyImNTQ2MzIWFzMmJjU1NDY2MzIWFxUmJiMiBhURAzI2NzU0JiMiBhUUFgGvBQEGF049YXh4Yj5NGAYCBiQ/KRwpCggeExsd9E4/AT1SQkFB8OYQMg4iLoyKi44uIQ80FSdASh8KBlEEByMz/L4BPFdYEF9kaFxcYgAAAAEACQAAAaAC/QAdAGVADBsBBgAaEQYDAQYCSkuwJlBYQBsFAQEEAQIDAQJlAAYGAF8HAQAAhEsAAwODA0wbQBkHAQAABgEABmcFAQEEAQIDAQJlAAMDgwNMWUAVAQAYFhAPDg0MCwoJCAcAHQEdCA0UKxMyFhUUBgcVMxUjFSM1IzUzNTY2NTQmIyIGByc2Nshpb1RfbGxqW1taWDs5Jk8cJyhfAv1rWUmHMExQnZ1Qfx9rPzY7HRRPGh8AAQAZAAABsAL9AB0AZUAMAwEBABgNBAMCAQJKS7AmUFhAGwYBAgUBAwQCA2UAAQEAXwcBAACESwAEBIMETBtAGQcBAAABAgABZwYBAgUBAwQCA2UABASDBExZQBUBABcWFRQTEhEQDw4IBgAdAR0IDRQrEzIWFwcmJiMiBhUUFhcVMxUjFSM1IzUzNSYmNTQ28jhfJycbUCU5O1haW1tqbGxfVXAC/R8aTxQdOzY/ax9/UJ2dUEwvhklabAADADT/9gOpAvgAGwAoACsA8UuwGVBYQAwTCQIHASkYAgAEAkobS7AtUFhADBMJAgcDKRgCBQQCShtADBMJAgcDKRgCBQYCSllZS7AZUFhAIAACAoRLCAEHBwFfAwEBAY1LCgYCBAQAYAUJAgAAiwBMG0uwLVBYQDUAAgKESwgBBwcBXwABAY1LCAEHBwNdAAMDhUsKBgIEBAVeAAUFg0sKBgIEBABgCQEAAIsATBtAMAACAoRLAAcHAV8AAQGNSwAICANdAAMDhUsABAQFXgAFBYNLCgEGBgBfCQEAAIsATFlZQB0dHAEAKyokIhwoHSgXFhUUEhEQDwcFABsBGwsNFCsFIiY1NDYzMhYXMy4CNTUzFSEVASEVIScjBgYnMjY3NTQmIyIGFRQWBQEhAQxidnhiPU4YBgEEA2oBif7vARj+HRIFF04lTj8BPVJBQkIBNgES/u4KjIqLji4hBiAkDsrdS/6CUkgiMFdWWBBfZGhcW2IGAYIAAgA0/xADywL4ADIAPwFBS7AZUFhAGCshAgMGLA8CAgMUAQQJBAEBBAMBAAEFShtLsBtQWEAYKyECAwgsDwICAxQBBAkEAQEFAwEAAQVKG0AYKyECCggsDwICAxQBBAkEAQEFAwEAAQVKWVlLsBlQWEAxAAIDCQMCCX4ABweESwoBAwMGXwgBBgaNSwwBCQkEXwUBBASDSwABAQBfCwEAAIcATBtLsBtQWEA/AAIDCQMCCX4ABweESwoBAwMGXwAGBo1LCgEDAwhdAAgIhUsABASDSwwBCQkFXwAFBYtLAAEBAF8LAQAAhwBMG0A9AAIDCQMCCX4ABweESwAKCgZfAAYGjUsAAwMIXQAICIVLAAQEg0sMAQkJBV8ABQWLSwABAQBfCwEAAIcATFlZQCE0MwEAOzkzPzQ/KikoJx8dGRcTEhEQDgwIBgAyATINDRQrBSImJzUWFjMyNjU0JiMjNTchESMnIwYGIyImNTQ2MzIWFzMuAjU1MxUhFQcWFhUUBgYBMjY3NTQmIyIGFRQWArg7YiUmZTdRV2ZiOtT+51MSBRdOPmJ2eGI9ThgGAQQDagGY2m+FQXv+Fk4/AT1SQUJC8BMRXhIZVUZLS0vi/jtIIjCMiouOLiEGICQOyt1K5wp3aEdsPgE9VlgQX2RoXFtiAAAEADT/qQQTAvgAKgA3ADoARAEVS7AZUFhAEBwTAgkCOAYCAAUCSgEBAEcbS7AtUFhAEBwTAgkEOAYCAAUCSgEBAUcbQBAcEwIJBDgGAgAIAkoBAQFHWVlLsBlQWEApAAYADAUGDGcAAwOESwoBCQkCXwQBAgKNSwsNCAMFBQBeBwECAACDAEwbS7AtUFhAPwAGAAwFBgxnAAMDhEsKAQkJAl8AAgKNSwoBCQkEXQAEBIVLCw0IAwUFAF4HAQAAg0sLDQgDBQUBYAABAYsBTBtAOQAGAAwFBgxnAAMDhEsACQkCXwACAo1LAAoKBF0ABASFSwsBBQUAXgcBAACDSw0BCAgBXwABAYsBTFlZQBksK0NBPTs6OTMxKzcsNyQiEhEXJCQUDg0cKwUnNjY3IycjBgYjIiY1NDYzMhYXMyYmNTUzFSEVATM2NjMyFhUUBiMjBgYlMjY3NTQmIyIGFRQWBQEhATMyNjU0JiMiBgLmRwYMBvESBRdOPmJ2eGI9ThgGAgZqAYr+7UwqWD41QlNbXAkR/jZOPwE9UkFCQgE2ARL+7gEZOisiFRMaLVccEB0OSCIwjIqLji4hEDUTyt1J/oBRTj8vQEMUKotWWBBfZGhcW2IGAYL+iRsVDhYpAAACABIAAALdApQAIwA3AMNLsB5QWEALEgcCAQMTAQYBAkobQAsSBwIFAxMBBgECSllLsBlQWEAfAAIDAoMHBQIBAQNfBAEDA4VLCQEGBgBdCAEAAIMATBtLsB5QWEAqAAIEAoMHBQIBAQRfAAQEjUsHBQIBAQNdAAMDhUsJAQYGAF0IAQAAgwBMG0AnAAIEAoMABQUEXwAEBI1LBwEBAQNdAAMDhUsJAQYGAF0IAQAAgwBMWVlAGyYkAQA0MyQ3JjcXFRAODAsKCQYFACMBIgoNFCszIiYmNREjNTc3MxUhNjYzMhYXByYmIyIVFBYWFx4CFRQGIyczMjY1NCYmJy4CNTQ2NyMRFBb+LUkrS08lQQEHEyoXMlYpIiRKJmEXOTMxRyZ3aOnvOzcUODQ0SCUHBZorHkpCASAwKHJ5BQUUElEPFTkTHBsTEyk6LE9LVB4fEh0eFBQpOSwPGwz+4SwrAAAAAAIAEv8QAj4C/QArADQApUAeJAEHBiUBBAcXAQMFLwEIAw0BAggGAQECBQEAAQdKS7AmUFhAMwAEBwUHBAV+AAcHBl8ABgaESwkBAwMFXQAFBYVLCgEICAJfAAICi0sAAQEAXwAAAIcATBtAMQAEBwUHBAV+AAYABwQGB2cJAQMDBV0ABQWFSwoBCAgCXwACAotLAAEBAF8AAACHAExZQBMtLDEwLDQtNCUkERMUJSQiCw0cKwUUBiMiJzUWFjMyNjU1BgYjIiYmNREjNTc3MxUzNTQ2NjMyFhcVJiYjIgYVAzI2NxEjERQWAc1NQjAbCxwOHR4ROBwsSSxLTyVBnCVCKhcpCggeDx0fuBQqEJwrRVtQEFEFBiQxTAcKHkpCASowKHJ5OUBKHwoGUQQHIzL9+gcFAXL+2CwqAAACABL/9gNIApQANwBDAKhAGB8HAgEDIAEIASgBCwhBFQIFCzUBAAUFSkuwGVBYQCkAAgMCgwAIAAsFCAtnBwQCAQEDXwYBAwOFSw0KAgUFAF8JDAIAAIsATBtANAACBgKDAAgACwUIC2cHBAIBAQZfAAYGjUsHBAIBAQNdAAMDhUsNCgIFBQBfCQwCAACLAExZQCM5OAEAPz04QzlDMzEsKiQiHRsTEQ4NDAsKCQYFADcBNw4NFCsXIiYmNREjNTc3MxUzFSMRFBYzMjY3JiY1NDY2MzIWFwcmJiMiFRQWFzY2MzIWFRQGBiMiJicGBiUyNjU0JiMiBgcWFv4tSStLTyVBl5cqHipKIgsLQ3ZLLk0aIBs/HJYEAyNSNElTNlQuP2QiLGYBWyYzICcmQx4SOwoeSkIBKjAocnlR/tktKiQZGUImZHw7EwxWChHAER8PGCNGOTRAHigoIi5UIhwUHiIWGh4AAAABABD/EAMsAv0ANAEBS7AZUFhAGCEBCAciGgIJCCoZAgIJBAEBAwMBAAEFShtAGyEBCAciAQoIGgEJCioZAgIJBAEBAwMBAAEGSllLsBlQWEApAAgIB18ABweESwYEAgICCV8KAQkJhUsFAQMDg0sAAQEAXwsBAACHAEwbS7AmUFhANAAICAdfAAcHhEsGBAICAgpfAAoKjUsGBAICAgldAAkJhUsFAQMDg0sAAQEAXwsBAACHAEwbQDIABwAICgcIZwYEAgICCl8ACgqNSwYEAgICCV0ACQmFSwUBAwODSwABAQBfCwEAAIcATFlZQB0BAC8tKSgmJB8dGBcWFRQTEhEODAgGADQBNAwNFCsFIiYnNRYWMzI2NRE0IyIGFREjESMRIxEjNTc1NDYzMhYXByYmIyIVFTMXMzY2MzIWFREUBgKTGCcODhwRHCVuUj9qhGpbW19VIzoUGxEqFk/YDwcaWDRfZEnwBwVVBQUjMQGZemJb/u8Byv42AcoyISJnVwwHUQUJaSNIKihdaP5WS1sAAAEAU//2AnwC+AAsAIZLsBlQWEAPGwEFBBwIAgMFAwEAAwNKG0APGwEFBBwIAgMFAwEBAwNKWUuwGVBYQBwAAgKESwAFBQRfAAQEjUsAAwMAXwEGAgAAiwBMG0AgAAIChEsABQUEXwAEBI1LAAEBg0sAAwMAXwYBAACLAExZQBMBACAeGRcLCQcGBQQALAEsBw0UKwUiJicVIxEzERYzMjY1NCYmJy4CNTQ2MzIWFwcmJiMiBhUUFhYXHgIVFAYBhjxiK2pqZGhNPxQ1NDNHJG5cMVYoIyJIJi4xFzgxMUUlfQoVFSAC+P2GNiYfEx0fFBQqOixGSxQSUQ8VHxoUHB0TEyg5K1JSAAIAUwAAAk0C+AAIAAsANkAzBQEEAQkBAwICSgAAAIRLAAQEAV0AAQGFSwACAgNeBQEDA4MDTAAACwoACAAIEhERBg0XKzMRMxUhFQEhFSUBIVNqAYj+7wEZ/nABEv7uAvjdS/6CUkcBggAAAAIAAAAAAgUCygAMABkATkBLCwgDAwACGBUQAwUHAkoBAQACBwIAB34LCQgDBwUCBwV8CgQDAwICgksGAQUFgwVMDQ0AAA0ZDRkXFhQTEhEPDgAMAAwSERIRDA0YKwEDIycHIwMzFzczFzcTAyMnByMDMxc3Mxc3AgVkVEtNUmNNQU1QSUVMZFRLTVJjTUFNUElFAsr+sPj4AVD39/j4/ob+sPn5AVD39/j4AAACAFMAAAIAAsoABwAPADBALQMBAQIEAgEEfgAEAAYFBAZlAAICAF0AAACCSwcBBQWDBUwREREREREREAgNHCsTIRUjNSMVIxUhFSM1IxUjUwGtYethAa1h62ECyu+UlOzvlJQAAf/s/xACKQIlACEAhEuwGVBYQA4fAQUAHgEBBRABBAEDShtADh8BBQIeAQEFEAEEAQNKWUuwGVBYQBwABQUAXwIGAgAAjUsAAQEEXwAEBItLAAMDhwNMG0AgAAIChUsABQUAXwYBAACNSwABAQRfAAQEi0sAAwOHA0xZQBMBABwaFRMNDAsKBwUAIQEhBw0UKxMyFhUVFDMyNjURMxEjNTQ3IwYGIyImNTU0JiMiBgc1NjY1PkxuVD5qagUGGlY1X2QbGw4eCAooAiVDUMd+Y1wBD/z17CojKSldaNQiHQYDUgUIAAAAAAH/7P8QAo0CJQAtAKBLsBlQWEAWKwEGACoBAQYcAQUBEgEDBRMBBAMFShtAFisBBgIqAQEGHAEFARIBAwUTAQQDBUpZS7AZUFhAIQAGBgBfAgcCAACNSwABAQVfAAUFi0sAAwMEYAAEBIcETBtAJQACAoVLAAYGAF8HAQAAjUsAAQEFXwAFBYtLAAMDBGAABASHBExZQBUBACgmIR8WFBAOCwoHBQAtAS0IDRQrEzIWFRUUMzI2NREzERQWMzI2NxUGIyImNTU0NjcjBgYjIiY1NTQmIyIGBzU2NjU+TG5UPmoYGRAaCRg0PEYDAgYaVjVfZBsbDh4ICigCJUNQx35jXAEP/aAxJAYFURBNXTcaLBIpKV1o1CIdBgNSBQgA//8ANgEfAWYC5wFHAEsAAAEfKZomZgAJsQABuAEfsDMrAAAA//8ANgEfAWYC6gFHBDMAAAEfKZomZgAJsQABuAEfsDMrAAAA////2gCPAIAC3QFHAE0AAAEfKZomZgAJsQACuAEfsDMrAAAA//8ANgEfAQkCaAFHAFUAAAEfKZomZgAJsQABuAEfsDMrAAAA//8ACwEZAN4CYgFHBEYAAAEfKZomZgAJsQABuAEfsDMrAAAA//8ACwCPASYCYgFHBEgAAAEfKZomZgAJsQABuAEfsDMrAAAA//8ANwEfAW0CYgFHBE4AAAEfKZomZgAJsQACuAEfsDMrAAAA//8ABwEgAgUCYwFHAFoAAAEfKZomZgAJsQABuAEfsDMrAAAA//8AAQCPAVcCYgFHAFwAAAEfKZomZgAJsQABuAEfsDMrAAAA//8ADAHVAK8CygIGAgYAAP//AAwB1QF0AsoCBgIKAAD//wAMAdUArwLKAgYCBQAA//8ADAHVALACygIGAggAAAABAB4CPwCPAxgADQAqsQZkREAfAAAAAwIAA2cAAgEBAlcAAgIBXwABAgFPFBEUEAQNGCuxBgBEEzIWFRQGIzUyNjU0JiMeMj8/MhceHBkDGDkzNDk4GxkZHAAAAAEAHgI/AI8DGAANACqxBmREQB8AAQACAwECZwADAAADVwADAwBfAAADAE8UERQQBA0YK7EGAEQTIiY1NDYzFSIGFRQWM48xQEAxFx4cGQI/OTQzOTccGRkcAAAAAQAIAc0BFQL+ABQAOLEGZERALQoBAAETCQEDAgACSgMBAgAChAABAAABVwABAQBfAAABAE8AAAAUABQlJQQNFiuxBgBEEzU2NTQmIyIGByc2NjMyFhUUBgcVT3QjIhgxFBkXPiZJSTlBAc1ZGkMZJBAOPA4SRjQsRBM0//8AEwHNASAC/gBHBIwBKAAAwABAAAAA//8AGAIaAQYDFAEPAB8AAAHiIAAACbEAAbgB4rAzKwD//wAYAhoBBgMUAQ8AIQAAAeIgAAAJsQABuAHisDMrAAABABECIQEMAw4ABgAnsQZkREAcBQEBAAFKAAABAIMDAgIBAXQAAAAGAAYREQQNFiuxBgBEEzczFyMnBxFtIG4tUVECIe3ttrYAAAD//wAKAiEBBQMOAQ8EkAEWBS/AAAAJsQABuAUvsDMrAP//ACgCVAB+AvsABguNUwD//wAoAl4BCQL+AgYAdgAA//8AKAJeAQkC/gIGAEMAAP//ACj/MQB+/9gBBwuNAFP83QAJsQABuPzdsDMrAAAA//8AKP9kAVv/tAMHAUwAAP0GAAmxAAG4/QawMysAAAD//wAo/zQBCf/UAAcLlgCkAAAAAP//ACj/NAEJ/9QABwuXAIwAAAAAAAIARAAAAPYCGAACAAUALLEGZERAIQQBAQABSgAAAQEAVQAAAAFdAgEBAAFNAwMDBQMFEQMNFSuxBgBEEyczAzcXnVmysllZAY2L/eiLiwAAAQBEAY0A9gIYAAIAErEGZES3AAAAdBEBDRUrsQYARBMnM51ZsgGNiwAAAP//ACgAwACZAZkBBwSKAAr+gQAJsQABuP6BsDMrAAAA//8AKADAAJkBmQEHBIsACv6BAAmxAAG4/oGwMysAAAD//wAeAN4A8AF+AQcLnQCHAa4ACbEAAbgBrrAzKwAAAP//AB4A3gDwAX4BBwueAIcBrgAJsQABuAGusDMrAAAA//8AHgDKAPABkgEHC58AhwGuAAmxAAG4Aa6wMysAAAAAAQAeAQ8A/AFMAAMAILEGZERAFQABAAABVQABAQBdAAABAE0REAINFiuxBgBEEyM1M/ze3gEPPf//ACgCOwD0AwcABwu8AI4AAAAA//8AAACQAVYCYgFHBDAAAAEfKZomZgAJsQACuAEfsDMrAAAA//8ANgEfAHsC5wFHAE8AAAEfKZomZgAJsQABuAEfsDMrAAAA//8AIAEZAR8CaAFHAFYAAAEfKZomZgAJsQABuAEfsDMrAAAA//8ACQEfAVgCYgFHAFsAAAEfKZomZgAJsQABuAEfsDMrAAAA//8AEQEfARkC6gFHBGIAAAEfKZomZgAJsQABuAEfsDMrAAAAAAEATgAAAVQCsAAFACyxBmREQCEDAQIAAoQAAQAAAVUAAQEAXQAAAQBNAAAABQAFEREEDRYrsQYARCERIzUhEQESxAEGAm5C/VAAAAABAE4AAAFUArAABwAwsQZkREAlAAIBAwJVAAEAAAMBAGUAAgIDXQQBAwIDTQAAAAcABxEREQUNFyuxBgBEIREjNTM1MxEBEsTEQgHJQqX9UAAAAAABAE4AAAFUArAABwAwsQZkREAlAAIBAwJVAAEAAAMBAGUAAgIDXQQBAwIDTQAAAAcABxEREQUNFyuxBgBEIREjNTMRMxEBEsTEQgFGQgEo/VAAAAABAE4AAAFUArAABwAwsQZkREAlAAIBAwJVAAEAAAMBAGUAAgIDXQQBAwIDTQAAAAcABxEREQUNFyuxBgBEITUjNTMRMxEBEsTEQqdCAcf9UAAAAAABAE4AAAFUArAABQAmsQZkREAbAAIBAoMAAQAAAVUAAQEAXgAAAQBOEREQAw0XK7EGAEQhITUzETMBVP76xEJCAm4AAAEATgCmAVQCEAAFACaxBmREQBsAAAEAgwABAgIBVQABAQJeAAIBAk4RERADDRcrsQYARBMzETMVIU5CxP76AhD+2EIAAQBOAKYBVAIQAAcAKrEGZERAHwAAAQMAVQABAAIDAQJlAAAAA10AAwADTRERERAEDRgrsQYARBMzFTMVIxUjTkLExEICEJRClAAA//8AKP85AZP/2QMHAUsAAPzbAAmxAAG4/NuwMysAAAD//wAoAlYBxwMcAQcCBAAqAzUACbEAArgDNbAzKwAAAP//AAwB1QF0AsoCBgIKAAAAAQAo/xABdv/uAAYAJ7EGZERAHAMBAgABSgEBAAIAgwMBAgJ0AAAABgAGEhEEDRYrsQYARBcnMxc3Mwe3j09YWU6O8N6Ght4AAQAo/xABdv/sAAYAJ7EGZERAHAUBAQABSgAAAQCDAwICAQF0AAAABgAGEREEDRYrsQYARBc3MxcjJwcojjGPT1hZ8NzchIQAAQAo/xABIwAXAAYABrMDAAEwKwUnNTcVBxcBI/v7o6PwazFrRT4/AAEAKP8QASMAFwAGAAazBAABMCsXNTcnNRcVKKOj+/BFPj9FazEAAP//ACgBGQEJAbkDBwBDAAD+uwAJsQABuP67sDMrAAAA//8AKAEZAaYBuQFHAVIBzv67wABAAAAJsQACuP67sDMrAAAA//8AKAEZAaYBuQMHAVIAAP67AAmxAAK4/ruwMysAAAD//wAo/z4Bov/FAwcBUQAA/OAACbEAAbj84LAzKwAAAP//AEQAwgDNAvgDBwAdAAAA0AAIsQACsNCwMysAAQAoAZ8AzgKpAAUAJrEGZERAGwACAQKEAAABAQBVAAAAAV0AAQABTREREAMNFyuxBgBEEzMVIxUjKKZxNQKpNdUAAAABACgBnwDOAqkABQAtsQZkREAiAAABAIQDAQIBAQJVAwECAgFdAAECAU0AAAAFAAUREQQNFiuxBgBEExEjNSM1zjVxAqn+9tU1AAAAAQAoAAAAzgEKAAUALLEGZERAIQAAAQCDAAECAgFVAAEBAl4DAQIBAk4AAAAFAAUREQQNFiuxBgBEMxEzFTMVKDVxAQrVNQAAAQAoAAAAzgEKAAUAJrEGZERAGwACAQKDAAEAAAFVAAEBAF4AAAEAThEREAMNFyuxBgBEMyM1MzUzzqZxNTXVAAEAKP8wAeb/1QAHAEmxBmRES7AMUFhAFwMBAQICAW4AAgAAAlUAAgIAXgAAAgBOG0AWAwEBAgGDAAIAAAJVAAICAF4AAAIATlm2EREREAQNGCuxBgBEBSE1MxUhNTMB5v5COAFNOdClY2MAAAEAKP8wAeb/1QAFAEaxBmRES7AMUFhAFgABAgIBbgACAAACVQACAgBeAAACAE4bQBUAAQIBgwACAAACVQACAgBeAAACAE5ZtREREAMNFyuxBgBEBSE1MxUhAeb+QjgBhtClYwABACj/EAHuAEsACQAxsQZkREAmAgECAQABSgQDAgBICQACAUcAAAEBAFUAAAABXQABAAFNERUCDRYrsQYARAUnNTcVByEVIRcBI/v7hAFP/rGE8IUxhTtEPEUA///+hQJP/0YDOAIGAksAAAABABQCKgDSAsoACQAaQBcFAAIBAAFKAAEAAYQAAAA4AEwUEwIIFisTNjY3MxUGBgcjFBQoDHYWQiNDAjYhUSIKJVUcAAEAFP8kANL/xAAJAC62BQACAAEBSkuwGVBYQAsAAQABgwAAAD0ATBtACQABAAGDAAAAdFm0FBMCCBYrFwYGByM1NjY3M9IUJw12FkMjQkghUSIKJVUcAP//APL/HgGJ/8UCBgbtAAD//wAg//YBtgIlAgYEJAAA//8ANP/2AcoCJQImAEYAAAEHAU4A3P5sAAmxAQG4/mywMysA//8AIP/2AbYCJQImBCQAAAEHAU4ARv5rAAmxAQG4/muwMysA//8AH/9/AMwCKAAGAB4AAAADADD/9gIkAv0AHgApADQAT0BMIQEFBAMBBwAzAQYHA0oABQADAAUDZwAAAAcGAAdnCAEEBAJfAAICQksJAQYGAV8AAQE5AUwrKiAfMS8qNCs0JSMfKSApJSYmJQoIGCsTBgYVNjYzMhYWFRQGBiMiJiY1NDY2MzIWFRQGBiMiNyIHFhYzMjY1NCYDMjY1NCYjIgYHFrQMDBhZPDxjPERyRFpuMkZ+U1VZNVArVFVLKxVAHywqKEdFR0U6NU8WCgIlIlkzIi4yX0NVcTdap3J/tGFHOi48HLpIEBQeFhgg/Z1USz5HKR/cAAAA////6AAAAtUC7wAnAkAAjAAAAQcBU/7w/80ACbEBAbj/zbAzKwAAAP//AAAAAAJJA48CJgJAAAABBwBq//wArwAIsQECsK+wMysAAP//ADP/EAK7AvgCBgHdAAAAAf/6/xACgAIiADMA2UuwIlBYQBYdAQMEMSUcEAQGAwoEAgECAwEAAQRKG0AWHQEDBTElHBAEBgMKBAIBAgMBAAEESllLsCJQWEAkAAYDAgMGAn4AAwMEXwUBBARDSwACAjlLAAEBAGAHAQAAPQBMG0uwMlBYQCgABgMCAwYCfgAFBTtLAAMDBF8ABARDSwACAjlLAAEBAGAHAQAAPQBMG0AqAAYDAgMGAn4AAgEDAgF8AAUFO0sAAwMEXwAEBENLAAEBAGAHAQAAPQBMWVlAFQEALy0nJiAeGhgSEQgGADMBMwgIFCsFIiYnNRYWMzI1NSYmNTQ2NwEjPgI1NCYjIgYHJzYzMhYVFAYHATMOAhUUFjMyNjcVFAIEFCMLCRkPMUBKCAn++2YSIhcvIw0TBxgdMU5YBwgBC2UTJRkuKAwYCPAIBFIDBjZdCGhrHj0d/rUlZXc/TUIFA04NaXYfOhwBTSVneD9SPAUDs48AAAACADwAAALJAtQAEgAeAFS2CwgCAQMBSkuwMlBYQBcFAQICAF8EAQAAQEsAAwMBXQABATkBTBtAFAADAAEDAWEFAQICAF8EAQAAQAJMWUATFBMBABoYEx4UHgoJABIBEgYIFCsBMhYWFRQGBgcVIzUuAjU0NjYXIgYVFBYzMjY1NCYBhGyQST55WmxceTtHkXBuaGhtbWdmAtRMhlhQf08KgoIKUH9QV4ZMXXBdXXFxXV1wAAACADT/EAIuAiUADwAbADRAMQoHAgEDAUoFAQICAF8EAQAAQ0sAAwMBXQABAT0BTBEQAQAXFRAbERsJCAAPAQ8GCBQrATIWFhUUBgcVIzUmJjU0NhciBhUUFjMyNjU0JgEySnFBa11qWHCIdEtERUtLRUUCJUB7WXaMD/DwD4x2hY9YYVtbZGRbW2EAAAEAPAAAAlkC1AAXAFZADgMBAQAEAQIBEQEDAgNKS7AyUFhAFgABAQBfBAEAAEBLAAICA10AAwM5A0wbQBMAAgADAgNhAAEBAF8EAQAAQAFMWUAPAQAQDw4MCAYAFwEXBQgUKwEyFhcHJiYjIgYVFBYzMxUjNSYmNTQ2NgGJPGctJSZSMm5vcnQkbIaJTJQC1BgUXBIZa1xca+mSDpV8V4NJAAAAAQA0/zMB3AIlACgANEAxGAEDAhkEAgEDAwEAAQNKAAEEAQABAGMAAwMCXwACAkMDTAEAHRsWFAgGACgBKAUIFCsFIiYnNRYWMzI2NTQmJy4CNTQ2NjMyFhcHJiYjIgYVFBYWFxYWFRQGASEfPxwcMxoyLC5COls1RHdNLVMgIR5AIlFJHUc/UEBhzQYHUQcJISAgGg0LNWJOZ4VAEg5VDA9pZzc9IQ4SSjRHTgAAAAABAF8AAAHrAsoACwCGS7AKUFhAIAADBAUEA3AAAgAEAwIEZQABAQBdAAAAOEsGAQUFOQVMG0uwMlBYQCEAAwQFBAMFfgACAAQDAgRlAAEBAF0AAAA4SwYBBQU5BUwbQCAAAwQFBAMFfgYBBQWCAAIABAMCBGUAAQEAXQAAADgBTFlZQA4AAAALAAsREREREQcIGSszESEVIRUhFSM1IxFfAYz+3wELYqkCylzp2X3+1wAAAAABAFT/EAG8AhsACwBWS7AKUFhAHwAEBQAFBHAAAwAFBAMFZQACAgFdAAEBO0sAAAA9AEwbQCAABAUABQQAfgADAAUEAwVlAAICAV0AAQE7SwAAAD0ATFlACREREREREAYIGisXIxEhFSMVMxUjNSO+agFo/t9gf/ADC1XG3IgAAAH/+//2Ad0C1AArAEZAQxMBAgMSAQQCKAEFASkBAAUESgAEAAEFBAFlAAICA18AAwNASwAFBQBfBgEAADkATAEAJiQeHRcVDw4IBwArASsHCBQrBSImNTQ2NzchNzY2NTQmIyIGByc2NjMyFhUUBgcHIQcGBhUUFjMyNjcVBgYBmjpKBwok/tM8BAoZEwgYCRgTJxVBRAcKGgEtRQUJGRQQGggLIwo8OREyIHjKECQRFRUGBVAJB0A3ETAgWukQIxEVFQYDUgQIAAAAAAEAL/8QAfsC/gArAD1AOhMBAQIoHh0cEgkIBwgDASkBAAMDSgABAQJfAAICQksAAwMAXwQBAAA9AEwBACYkFxURDwArASsFCBQrBSImNTQ2NxMFNRM2NjU0JiMiByc2NjMyFhUUBwclFQMGBhUUFjMyNjcVBgYBlktGDQxl/qxnCw8WExYYGRArG0A/H0oBT3UOCx0iEBoIDSTwRDsZNSIBFkhDAQwdNRUTFAtPBgo+MjNTw0ZB/rkpKBUcHgYDUAQIAAAB//MAAAIQAtUAHgBPQBIUAQABEw4NDAsJCAcGCQIAAkpLsDJQWEARAAAAAV8AAQFASwMBAgI5AkwbQBEDAQIAAoQAAAABXwABAUAATFlACwAAAB4AHiUvBAgWKyE2NjU0JicHJzcmJwcnNyYjIgYHJzY2MzIWFhUUBgcBYR0iAQGxKM8MGeIp1C9GNVMYMCZkSWyTSyAdR5FJDx0NaEZ5PyqFRn0gIBRTHSFnwIZMlUcAAAAB/7X/EAHLAv0AGgAfQBwTDw4NDAkIBwYJAEgBAQAAPQBMAAAAGgAaAggUKwU2NjU0JicHJzcmJicHJzcmJicnFhYSFRQGBwEPJSwEA9wY5QobEdkZxTaNTSKl74IqJfBOtmUZMhlIR0oiQBxHSUFDWxRkH7D+8qpivEgAAf/6//YCgAIiACoA7EuwGVBYQBELAQABKR8TCgQDACABBAMDShtLsCJQWEARCwEAASkfEwoEAwAgAQUDA0obQBELAQACKR8TCgQDACABBQMDSllZS7AZUFhAGAAAAAFfAgEBAUNLAAMDBGAGBQIEBDkETBtLsCJQWEAcAAAAAV8CAQEBQ0sGAQUFOUsAAwMEYAAEBDkETBtLsDJQWEAgAAICO0sAAAABXwABAUNLBgEFBTlLAAMDBGAABAQ5BEwbQCMGAQUDBAMFBH4AAgI7SwAAAAFfAAEBQ0sAAwMEYAAEBDkETFlZWUAOAAAAKgAqJSYWJCYHCBkrMz4CNTQmIyIGByc2MzIWFRQGBwEzDgIVFBYzMjY3FQYGIyImNTQ2NwFAEiIXLyMNEwcYHTFOWAcIAQtlEyUZLigMGAgOIBRLWQgJ/vslZXc/TUIFA04NaXYfOhwBTSVneD9SPAUDUAUHaHUePR3+tQAAAAIANP8QAi0CJQAkADQARkBDCgEBBgFKAAIABAMCBGcIAQUFAF8HAQAAQ0sABgYBXwABATlLAAMDPQNMJiUBADAuJTQmNB8dFxYQDggGACQBJAkIFCsBMhYWFRQGIyImJyMeAhceAhUUBgcjNjY1NCYmJy4CNTQ2FyIGBgcUFhcWFjMyNjU0JgE/RWw9fmw2RCAGBx03Lz9JHwYEYAIDDCUoTmQwiH8vRicBAQEiSi1IPz4CJUF9WoiPGxw7QBoCAg0jIQ8WDgYKBwkLBAECQZ2Nu71XOHxnDRULHhtfYWJfAAAA//8ANP/2AcoCJQIGAEYAAP///8b/EADFAugCBgBNAAD//wA8//YC1QLVAgYCYgAA//8ANP/2AdYCJQIGAewAAP//AB//9gG/AiUCBgHmAAD//wBfAAACMwLKAgYAoAAA//8AU/8QAjgC+AIGAMAAAP//ADz/9gJZAtQCBgAmAAAAAQBfAAADNwLKABcAULcRDQMDAwABSkuwMlBYQBYAAwACAAMCfgEBAAA4SwUEAgICOQJMG0AWAAMAAgADAn4FBAICAgBdAQEAADgCTFlADQAAABcAFxcRExEGCBgrMxEzEzMTMxEjETQ2NjcjAyMDIx4CFRFfjdoE345pAgMCBN9a2gQCAwICyv6NAXP9NgGTIk5HF/6PAXIYRlAj/m8AAAEAU/8QAp8CGwASAFi3DgsDAwMAAUpLsDJQWEAaAAMAAgADAn4BAQAAO0sAAgI5SwUBBAQ9BEwbQBoAAwACAAMCfgACAgBdAQEAADtLBQEEBD0ETFlADQAAABIAEhUREhEGCBgrFxEzFzczESMRNDY3ByMnFBYVEVOGoKWBZAEBnVGZAfADC/z8/eUBTxYzFO7tFjUY/cgAAgAD/xACLQIlABoAJwBKQEclAQcIEgEDBwJKBAEBBQEABgEAZQAICAJfAAICQ0sKAQcHA18AAwM5SwkBBgY9BkwcGwAAIiAbJxwnABoAGhEWJSMREQsIGisXNSM1MxE0NjMyFhYVFAYjIiYnIxYWFzMVIxUTMjY1NCYjIgYVFRYWSUZGhHFGbD1+bChLHAYCAwG6uoVIPz5HREMaRvBMTgFpiIpBfVqIjxcUC0MpTkwBPV9hYl5bXpgYF///ACD/9gI9AtQCBgNoAAD//wA8//YCWQLUAiYAJgAAAAcAeQEGAAD//wAg//YCPQLUAiYDaAAAAAYAeWIAAAD//wA8/1YC1QLVAgYANAAA//8ANP8QAhkCJQIGAFQAAP//AAgAAAOkAsoCBgA6AAD//wALAAEDHAIcAgYAWgAAAAIACgAAAg4CHAAHABAALEApDQEEAAFKAAQAAgEEAmYAAACFSwUDAgEBgwFMAAAJCAAHAAcREREGDRcrMxMzEyMnIwc3MycmJicGBgcK0mHRZjrGOFWPNAUMAwMLBQIc/eSYmOiODiYRESYOAAIACAAAApsCGwAPABMAOEA1AAUABggFBmUACAABBwgBZQkBBAQDXQADA4VLAAcHAF0CAQAAgwBMExIRERERERERERAKDR0rISE1IwcjASEVIxUzFSMVMyUzNSMCm/7Kr0llAQIBkdXHx9X+QIogmJgCG06OTaSa4wAAAAADADH/9gNDAiUALAA3AD4AgUAUIAEFBiYfAgQFCgEBABELAgIBBEpLsBtQWEAjCQEECgEAAQQAZQgBBQUGXwcBBgaNSwsBAQECXwMBAgKLAkwbQCgABAkABFUACQoBAAEJAGUIAQUFBl8HAQYGjUsLAQEBAl8DAQICiwJMWUASPTs5ODY0JSQlIRQkJSMhDA0dKwEUBwcVFBYzMjY3FwYGIyImJwYGIyImJjU1ISYjIgYHNTY2MzIWFzY2MzIWFgc0JiMiBhUVNzY2BSMUFjMyNgND8ls4LyhLIyEmZDQ8UhcdVDdCYTUBWgSSMVApKFA3RGofJVxQME4tbTAmOk5FVkP+suw3ODdCAYKjCQMkNy8XEUsVGiYpJio8bUo7rBQTWBMRNjc0OSNINyomRUcvAwM2fj9PSAADAAoAAAJGAhsAFQAdACYAO0A4BwoFAwMIAgIACQMAZQAGBgRdAAQEhUsACQkBXQABAYMBTAAAJSMiIB0bGhgAFQAVIRERJRELDRkrARUjFhYVFAYjIzUjNTM1MzIWFhUUByc0JiMjFTMyFzQmIyMVMzI2AkZFEBJpeO9JSe87XjckSDI4f296D0E+eXs7QgE+Sw8qG0Va80vdGjs0NR9IIiGIoColoCUAAAAAAQA7//kB5wIjABkAN0A0FgEAAxcJAgEACgECAQNKBAEAAANfAAMDjUsAAQECXwACAosCTAEAFRMODAcFABkBGQUNFCsBIgYVFBYzMjY3FQYGIyImNTQ2NjMyFwcmJgFFTVdQVCJEJSJGLoB/PndVV0sjHUEB1GpdXGoPC08OC5Z/Un1GJEwNFAAAAAACAFYAAAIcAhsACAAQAB9AHAACAgFdAAEBhUsAAwMAXQAAAIMATCEkISIEDRgrARQGIyMRMzIWBzQmIyMRMzICHJyLn7CAlmVfV0k6xQESiIoCG4eEYlv+gQAAAAIAIwAAAhwCGwAMABgAP0A8BQEDBgECBwMCZQkBBAQAXQgBAACFSwAHBwFdAAEBgwFMDg0BABUTEhEQDw0YDhgLCgkIBwUADAEMCg0UKwEyFhUUBiMjNSM1MzUXIxUzFSMVMzI1NCYBBn+XnIubNzemRXl5N8VfAhuHgoiK5E7pTptOlsJiWwABAFYAAAGXAhsACwApQCYAAwAEBQMEZQACAgFdAAEBhUsABQUAXQAAAIMATBEREREREAYNGishIREhFSMVMxUjFTMBl/6/AUHf0dHfAhtOjU6kAAABACL/9gHSAiUAKQBKQEcYAQQFFwEDBCMBAgMEAQECAwEAAQVKAAMAAgEDAmcABAQFXwAFBY1LAAEBAF8GAQAAiwBMAQAcGhUTEA4NCwgGACkBKQcNFCsXIiYnNxYWMzI1NCYjIzUzMjU0JiMiBgc1NjYzMhYWFRQGBgcVFhYVFAbxOmMsIyhKK3dTRjlEmVM8N2AiIWI8U2szITcgLzh1ChMTUBASRSkiUVMuJBoQXBATK0osKDUfCAUNOTFGSAACAFL/MwDKAhsAAwAPAClAJgUBAgADAgNjBAEBAYVLAAAAgwBMBQQAAAsJBA8FDwADAAMRBg0VKxMRIxETMhYVFAYjIiY1NDbDajQZJCQZGCMjAhv95QIb/ZIdICEcHCEgHQAAAQAy//YBEwIbAA8AK0AoBAEBAgMBAAECSgACAoVLAAEBAGADAQAAiwBMAQAMCwgGAA8BDwQNFCsXIiYnNRYWMzI2NREzERQGdRQhDhAgDhooYVcKBwVOBQUgMgGD/oFXTwAAAAEAVgAAAgMCGwAOACZAIw0MCQMEAgABSgEBAACFSwQDAgICgwJMAAAADgAOEhURBQ0XKzMRMxU2Njc3MwcTIycHFVZiER0Jn2/U2nGtLQIb9RYiCrPs/tHyJM4AAQAVAAABoQIbAA0ALEApCgkIBwQDAgEIAQABSgAAAIVLAAEBAl4DAQICgwJMAAAADQANFRUEDRYrMzUHJzcRMxU3FwcVMxVXHSVCYlQmeuiuED4nARjgMD9FmE8AAAAAAQBWAAACjgIbABUAJ0AkEAwDAwIAAUoBAQAAhUsFBAMDAgKDAkwAAAAVABUWERMRBg0YKzMRMxMzEzMRIxE0NDcjAyMDIxYUFRFWg5YCmoNeAgWWU5IEAgIb/mMBnf3lATUYMBf+bAGUGDIa/tAAAAEAVgAAAiICGwARAB5AGw4FAgIAAUoBAQAAhUsDAQICgwJMFhEWEAQNGCsTMxEUBgczATMRIxE0NjcjASNWWgIBAwEDb1oEAgP++3ACG/7dHEQWAZn95QEgIEEX/mgAAAIAO//5AkQCIwAOABoAH0AcAAMDAV8AAQGNSwACAgBfAAAAiwBMJCQmIwQNGCsBFAYGIyImJjU0NjYzMhYFFBYzMjY1NCYjIgYCRDt0VlhzOTl0WICE/l1MUlNMTFJSTQEOU31FRX5TU3xFl35ca2tcXWlpAAAAAAEAI//5Ac4CIgAaADdANBEBAgMQBAIBAgMBAAEDSgACAgNfAAMDjUsAAQEAXwQBAACLAEwBABUTDgwIBgAaARoFDRQrFyImJzUWFjMyNjU0JiMiBgcnNjYzMhYVFAYGzS5FIiZCIk9ZVVEiQBwjI1YygIA8cgcLDk8LD2pdXGkTDUsRE5d9Un1GAAD//wASAA8CQQIJAYcAUgAcAj0AAMAAQAAAAAAJsQACuAI9sDMrAAAA//8AHwBFAk4B2wGHAEYAKQIPAADAAEAAAAAACbEAAbgCD7AzKwAAAP//AAgADwJhAgkBhwC6ACoCPQAAwABAAAAAAAmxAAO4Aj2wMysAAAD//wAx//cDiAIlAQ8BFAO7AhvAAAAJsQADuAIbsDMrAAACADn/+QH3AhsAHAAoADlANg8EAgQCAUoAAgcBBAUCBGcGAwIBAYVLAAUFAGAAAACLAEweHQAAJCIdKB4oABwAHCMYKQgNFysBFRQGBxYWFRQGIyImNTQ3JiY1NTMVFBYzMjY1NQciBhUUFjMyNjU0JgHeIykwNXZqZXlkJyNhMDQ0MWU/Ozs/Pzs7AhtGMUYVE0s3WGNjWGwqFEgvRkYvOjovRvw4MzQ5OTQzOAAAAAEANwENAj8CJAANACRAIQMBAQIBhAACAgBfBAEAAI0CTAEACwoIBgQDAA0BDQUNFCsBMhYVIzQmIyIGFSM0NgE8eolvR05NSW6EAiSWgVxkZFyAlwAAAAABADf/+AI/AQ0ADQAhQB4EAwIBAgGDAAICAF8AAACLAEwAAAANAA0iEiIFDRcrAQYGIyImNTMWFjMyNjUCPwGHfX2GbgFITU1IAQ1/lpZ/W2RkWwACAFYAAAHIAhsACwAUADJALwAEAAECBAFnBgEDAwBdBQEAAIVLAAICgwJMDQwBABAODBQNFAoJCAYACwELBw0UKxMyFhUUBgYjIxUjERcjFTMyNjU0JvdtZClhUzNimjgqQUI4AhtXTC5QMckCG063LDItLAAAAAACABUAAAHBAhsADgAXADhANQEBAgQBSgcBBAACAQQCZQAFBQBdAAAAhUsGAwIBAYMBTBAPAAATEQ8XEBcADgAOEREnCA0XKzM3LgI1NDYzMxEjNSMHEzM1IyIGFRQWFZsbMB5raKdhVIicQEM3OznrCiQ7LUpQ/eXX1wEjqiUrKy8AAAACABUAAAHBAhsADgAXADtAOAcBBQIBSgACAAUEAgVnAwEBAYVLBwEEBABeBgEAAIMATBAPAQATEQ8XEBcNDAsKCQgADgEOCA0UKyEiJjU0NjY3JzMXMzUzESczNSMiBhUUFgEaaGseMBubb4hUYaRDQDw5O1BKLjsjC+rW1v3lTasvKysmAAAAAQAVAAABuwIbAAcAG0AYAwEBAQJdAAIChUsAAACDAEwREREQBA0YKyEjESM1IRUjARlhowGmogHMT08AAQBP//gCFQIbABEAIUAeBAMCAQGFSwACAgBfAAAAiwBMAAAAEQARIhMkBQ0XKwERFAYGIyImNREzERQzMjY1EQIVL2RRd2trej45Ahv+tT1iOXlhAUn+tIFEPQFMAAD//wAmACcCSwH6AYcAUQAmAk0AAMAAQAAAAAAJsQABuAJNsDMrAAAA//8AFAAkAv4B+QGHAL4C9P/WAABAAMAAAAAACbEAA7j/1rAzKwAAAP//ACj/hQJNApgBhwBQACgC6wAAwABAAAAAAAmxAAG4AuuwMysAAAD//wAAAAAB5wIbAEYAWQAAO0VAAAABAAoAAALWAhsAKAAnQCQiEgYDAwABSgIBAgAAhUsFBAIDA4MDTAAAACgAKBEbGhEGDRgrMwMzExYWFzM+AjcTMxMeAhczPgI3EzMDIwMuAycjDgMHA5KIYkAKEgMEAwoMBE9qTQUMCwEEAgoNB0Jhim5HBQwMCAEEAQgMDAVKAhv+7ypgHBI4OBMBIv7eFTY2ExE3QB0BEf3lAQ0TNTYpBwcpNjUU/vQAAAD//wAjAAABtwIbAgYAXQAAAAEAIf/2Ab0CGwAZAEFAPgEBBAUWAQAECwECAwoBAQIESgAAAAMCAANnAAQEBV0GAQUFhUsAAgIBXwABAYsBTAAAABkAGRIkJCQSBw0ZKwEVBxYWFRQGIyInNRYWMzI2NTQmIyM1NyM1AaeoZVlxd3BEI1wyQEtLUEGg8wIbRJQHWUZHYCJUEBgsMi0sRY9MAAEALf/4AZ0CIgAmADtAOBEBAQIjGxoQBwYGAwEkAQADA0oAAQECXwACAo1LAAMDAF8EAQAAiwBMAQAhHxUTDgwAJgEmBQ0UKxciJjU0Njc1NjY1NCYjIgYHJzY2MzIWFRQGBxUGBhUUMzI2NxUGBvReaUtMQjYqLCE/IBokUStVXEZFSjpmKVciHlQIR0U4RBM6CiIhGh8SDk0QEkk8NkMVPQgmID4YDlMOEwABABD/9gHsAiMAKAArQCgbFQ4GBAAEFAcCAQACSgAEBI1LAwEAAAFfAgEBAYsBTCglJSUiBQ0ZKyUWFjMyNjcVBgYjIiYmJwYGIyImJzUWFjMyNjcmJjU0NjYzMhYWFRQGAT8lOxITHQsLJRQYMjolNFEmEyUMByEPGDkmMkAsUDc3UCxGnzIoBgRLBwcRMC9ELAcHSwIIJzM1bTowTCwsTDA7cAAAAAABAFYAAAGjAhsABQAfQBwAAAACXQMBAgKFSwABAYMBTAAAAAUABRERBA0WKwEVIxEjEQGj62ICG0/+NAIbAAAAAQAKAAAB8QIbAAwAIUAeCAEBAAFKAAAAhUsDAgIBAYMBTAAAAAwADBERBA0WKzMTMxMjAyYmJwYGBwMKw2HDZXUGDwUEDgd1Ahv95QFSEjUWFjYT/rAAAAEAVgAAAgMCGwAHABtAGAABAQNdAAMDhUsCAQAAgwBMEREREAQNGCshIxEjESMRIQIDYepiAa0BzP40AhsAAP//AFYAAAHIAhsCBgUEAAAAAQA1AAACZwIbABkAK0AoBgEEAgEAAQQAZwgHBQMDA4VLAAEBgwFMAAAAGQAZERETFBERFAkNGysBFRQGBiMVIzUiJiY1NTMVFBYzETMRMjY1NQJnK2ZaXVlmK19FRl1FRgIbtTdaNp+fNlk3trRBOgEv/tE6P7YAAQAO//gB9gIbABgAUUAKDQEDAQwBAAMCSkuwHlBYQBYAAQEEXQAEBIVLAAMDAF8CAQAAgwBMG0AaAAEBBF0ABASFSwAAAINLAAMDAl8AAgKLAkxZtxYkJhEQBQ0ZKyEjESMOAgcGBiMiJzUWFjMyNjc+AjchAfZikwcOEAgRPjwfHA4YCxYZDgYQFAoBRgHMM3VsJVJJC04GBy1BHHCQTQAAAP//AAABHwGoAs0BRwAkAAABHymaJmYACbEAArgBH7AzKwAAAP////8BHwIjAssBRwCIAAABHymaJmYACbEAArgBH7AzKwAAAP//AD4BHwGIAssBRwAlAAABHymaJmYACbEAA7gBH7AzKwAAAAADAA0BHwGjAssAFAAdACYAckuwIlBYQCQGAgIADAkKBQQDCAADZQsBBwcBXQABAapLAAgIBF0ABASuBEwbQCIAAQsBBwABB2cGAgIADAkKBQQDCAADZQAICARdAAQErgRMWUAeHh4VFQAAHiYeJSEfFR0VHBgWABQAFCURFCERDQ8ZKxM1MzUzMhYVFAczFSMWFhUUBiMjNTcVMzY2NTQmIwcVMzI2NTQmIw0xiFhcIEk6DxBYTKZGXS0jMjVGVTgtLjsB5DWyLzsuGjUMJRo6QMWxfAIhHSAcsY8pIR8m//8APgEfAbUCywFHACcAAAEfKZomZgAJsQACuAEfsDMrAAAA//8APgEfAUMCywFHACgAAAEfKZomZgAJsQABuAEfsDMrAAAA//8AJwEfASwCywFHA3AAAAEfKZomZgAJsQABuAEfsDMrAAAA//8AJwEZAacC0QFHACoAAAEfKZomZgAJsQABuAEfsDMrAAAA//8APgEfAagCywFHACsAAAEfKZomZgAJsQABuAEfsDMrAAAA//8AGQEfAM0CywFHACwAAAEfKZomZgAJsQABuAEfsDMrAAAA////zgCpAIECywFHAC0AAAEfKZomZgAJsQABuAEfsDMrAAAA//8APgEfAZsCywFHAC4AAAEfKZomZgAJsQABuAEfsDMrAAAA//8APgEfAUoCywFHAC8AAAEfKZomZgAJsQABuAEfsDMrAAAA//8APgEfAhcCywFHADAAAAEfKZomZgAJsQABuAEfsDMrAAAA//8APgEfAbsCywFHADEAAAEfKZomZgAJsQABuAEfsDMrAAAAAAEAPgEfAboCywARAD62DwYCAgABSkuwIlBYQA4BAQAAqksEAwICAq4CTBtADgEBAAACXQQDAgICrgJMWUAMAAAAEQARERYRBQ8XKxMRMxUUBgczEzMRIzU2NjcjAz5AAwEC6lRAAQMCA+oBHwGs5h1CEwFY/lTkID4Y/qYAAAD//wAnARkB1wLSAUcAMgAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wAlARkBogLLAUcD8wAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wA+AR8BbgLLAUcAMwAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wA+AR8BlQLLAUcANQAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wAIAR8BZQLLAUcANwAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wA6ARkBpgLLAUcAOAAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wAFAR8CXgLLAUcAOgAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wAdARkBQQJoAUcARAAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wA0ARkBWAJoAUcEIAAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wAiARkBXQJoAUcEIQAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wAgARkCHwJoAUcE7gAAAR8pmiZmAAmxAAO4AR+wMysAAAD//wA2ARkBcQLnAUcARQAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wAiARkBXQLnAUcARwAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wAiARkBVAJoAUcASAAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wAgARkBUgJoAUcEKQAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wAbARkBMQJoAUcEKgAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wAWARkBLwJoAUcE9AAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wAiAI8BXQJoAUcASgAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wA1AKQAgwJiAUcE9QAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wA2AR8BZwLnAUcATgAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wA2AR8CNgJoAUcAUAAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wA2AI8BZgJoAUcBDAAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wAiARkBawJoAUcAUgAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wAVARkBHQJoAUcEJAAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wAkAcABdgJoAUcFAgAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wAkARoBdgHAAUcFAwAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wA2AI8BcQJoAUcAUwAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wAMARkA6QKrAUcAVwAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wAzARkBZAJiAUcAWAAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wAZATYBfgJPAUcFCQAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wAzARkCMwJiAUcEPAAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wAAAR8BVgJiAUcAWQAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wAKARkBQAJnAUcFEQAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wA2AI8BhQLqAUcBfgAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wADAI8BWAJiAUcBfwAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wAhARkBagLoAUcBgAAAAR8pmiZmAAmxAAK4AR+wMysAAAD//wAiAI8BwgJoAUcBkgAAAR8pmiZmAAmxAAK4AR+wMysAAAD////2AI8BbQJlAUcBkwAAAR8pmiZmAAmxAAG4AR+wMysAAAD//wAx/6AAgAFeAUYATACgKZomZgAJsQACuP+gsDMrAP//ADb/oAEJAOkBRgBVAKApmiZmAAmxAAG4/6CwMysA//8AM/+aAWQA4wFGAFgAoCmaJmYACbEAAbj/oLAzKwD//wAA/6ABVgDjAUYAWQCgKZomZgAJsQABuP+gsDMrAP//ADb/EAGFAWsBRgF+AKApmiZmAAmxAAK4/6CwMysA//8AA/8QAVgA4wFGAX8AoCmaJmYACbEAAbj/oLAzKwD//wAv/xABagDpAUYBjQCgKZomZgAJsQACuP+gsDMrAP//ACL/EAHCAOkBRgGSAKApmiZmAAmxAAK4/6CwMysA////9v8QAW0A5gFGAZMAoCmaJmYACbEAAbj/oLAzKwAAAgBP//YDfQIlACcALgB5QA8gAQgEDgcCAQAIAQIBA0pLsBlQWEAiCgEJAAABCQBmAAgIBF0HBgIEBIVLBQEBAQJfAwECAosCTBtAJgoBCQAAAQkAZgYBBASFSwAICAdfAAcHjUsFAQEBAl8DAQICiwJMWUASKCgoLiguJiMTIhQkJSIQCw0dKyUhFhYzMjY3FQYGIyImJwYGIyImJjURMxEUMzI2NREzFTY2MzIWFhUnJiYjIgYHA33+lQJUSzRRKylTOUJkIhZZR09jL2p6PjpqGEUrRWQ3agE7PzhFBvdTWBMTWBMRLjIoNjdjQAFJ/rSBRD0BTDAZITxtSxQ/T0pEAAAC/9f/9gI4AvgAMAA8ALlLsBlQWEAWGgEGBAoBAwInAQkDKgEKCQYBAAsFShtAFhoBBgQKAQMCJwEJAyoBCgkGAQELBUpZS7AZUFhALwAGCAEDCQYDZwAFBYRLAAICBF8HAQQEgksACgoJXwAJCY1LAAsLAF8BAQAAiwBMG0AzAAYIAQMJBgNnAAUFhEsAAgIEXwcBBASCSwAKCglfAAkJjUsAAQGDSwALCwBfAAAAiwBMWUASOzk0Mi8tEhIiEjISIxQiDA0dKwEUBiMiJicjByMRJiYjIgYHIzY2MzIWFzUzFRYzMjY3MwYGIyImJxUUBgczNjYzMhYHNCMiBgcVFBYzMjYCOHhhPk0XCBROBgkFFBYFOQQ3LAULBWoNDBQVBjkEOCwGDQYDAgUXTj5hd22ESz4BO1FBQQEOi40tH0ICdwEDHRxARgEBMmIFGx0/RwMBCSA7EiIuh4u8W14FXWNkAAIANP/2ApUC+AAvADwAykuwGVBYQBQeGwIGBCkPAgMCCQELASwBAAoEShtAFB4bAgYEKQ8CAwIJAQsBLAEJCgRKWUuwGVBYQDEABggBAwEGA2cABQWESwACAgRfBwEEBIJLAAsLAV8AAQGNSw0BCgoAXwkMAgAAiwBMG0A1AAYIAQMBBgNnAAUFhEsAAgIEXwcBBASCSwALCwFfAAEBjUsACQmDSw0BCgoAXwwBAACLAExZQCMxMAEAODYwPDE8KyooJiQjIR8dHBoYFhUTEQcFAC8BLw4NFCsFIiY1NDYzMhYXMy4CNTUmJiMiBgcjNjYzMhc1MxUWMzI2NzMGBiMiJxEjJyMGBicyNjc1NCYjIgYVFBYBDGJ2eGI9ThgGAQQDBgwHFBUGOQQ4LA4LagsKFBUFOQU2LQkLUxIFF04lTj8BPVJBQkIKjIqIji4hBiAlDUoCBB0cQEYENGQDHBw/RwP9ukgiMFdWWBBcZGdaW2IAAAH/8AAAAZAC/QAwAJlAGRcBBQQYEAIGBQ8BAwYiDAIIAi8BAgEABUpLsCZQWEAuCQECAAABAgBnAAgKAQELCAFnAAUFBF8ABASESwcBAwMGXQAGBoVLDAELC4MLTBtALAAEAAUGBAVnCQECAAABAgBnAAgKAQELCAFnBwEDAwZdAAYGhUsMAQsLgwtMWUAWAAAAMAAwLCspKCMREiUlEiISIg0NHSszNSYjIgYHIzY2MzIXNSM1NzU0NjMyFhcHJiYjIhUVMxUjFRYWMzI2NzMGBiMiJicVawsIFBYEOgQ4LAoJW1tfVSM6FBsRKhZPhYUGDQcTFgY5BDctBg4G/QMcHD9HA38yISJnVwwHUQUJaSNRrgIEHB0/RwIDzgAAAAP/7AAAA88CJQArADQAPgCdQBkKAQoBOywYBwQNBCckHgEEAAgDShABCgFJS7AZUFhAKQsBBAAIAAQIZw8BDQYBAAUNAGcMAQoKAV8DAgIBAYVLDgkHAwUFgwVMG0AtCwEEAAgABAhnDwENBgEABQ0AZwABAYVLDAEKCgJfAwECAo1LDgkHAwUFgwVMWUAeNTUAADU+NT45NzMyMC4AKwArExMRExYkJBMUEA0dKzM1BgYHIzY3NTMXMzY2MzIXMzY2MzIWFRU2NjczBgcVIzUmJicVIzUmJicVEzU0IyIGBxYWBTU0IyIGFRUWFlMYEwM5C1xUDwYZVTB8KAgaXDNbXBYWBDkJYGo1dkBpPnU462ZAPAc3dAGSZUg+Onb2Bh4TaBjcSCooVywrXmhTBhwXahjDuwELCdDfCg0D+QEsJX1HQwINL0t9WFQGCAwAAAL/7AAAAo0CJQAhACoAnkuwGVBYQBEeAQYAKCUbFBEOCwQIBAECShtAER4BBgUoJRsUEQ4LBAgEAQJKWUuwGVBYQCMAAQYEBgEEfgAEAgYEAnwIAQYGAF8FBwIAAI1LAwECAoMCTBtAJwABBgQGAQR+AAQCBgQCfAAFBYVLCAEGBgBfBwEAAI1LAwECAoMCTFlAGSMiAQAiKiMqHRwYFxMSDQwIBwAhASEJDRQrATIWFRU2NjczBgYHFSM1JiYnFSM1BgYHIzY2NzUzFzM2NhciBgcWFhc1NAFkXmQXFAM5AzUvaUGEO2oZEwI5BDYtVA8GGlsdRkEIPIM/AiVeaFQFHhc6QAnCwggjCfb4Bh0WOkAK2EgqKFdIQwgjCkJ+AAL/1f8QAjgCJQAuADsAoEAUEAELAx0BBQoiDQIGAi0BAgEABEpLsBlQWEAvBwECAAABAgBnAAYIAQEJBgFnAAsLA18EAQMDhUsNAQoKBV8ABQWLSwwBCQmHCUwbQDMHAQIAAAECAGcABggBAQkGAWcAAwOFSwALCwRfAAQEjUsNAQoKBV8ABQWLSwwBCQmHCUxZQBowLwAANjQvOzA7AC4ALiISKCQkEiISIw4NHSsXNSYmIyIGByM2NjMyFxEzFzM2NjMyFhUUBiMiJicjFhYVFRYzMjY3MwYGIyInFRMyNjU0JiMiBgcVFBZTBgsFFBYFOQQ3LAwLVg8FF00/YnZ4YT5NFgcBBQsMFBUGOQQ4LAwLjEJAQUNLPgE88HICAhwcP0cDAkpIIjCMi4mPLR4RMBRKBhwdP0cDQgE9bFdYZlZZEF5kAAAB/9UAAAGYAiUAKwCfS7AZUFhAFBgRAgIFHwEGAioBAgEAA0oXAQNIG0AUFwEDBBgRAgIFHwEGAioBAgEABEpZS7AZUFhAJAcBAgAAAQIAZwAGCAEBCQYBZwAFBQNfBAEDA4VLCgEJCYMJTBtAKAcBAgAAAQIAZwAGCAEBCQYBZwADA4VLAAUFBF8ABASNSwoBCQmDCUxZQBIAAAArACsiEiUjJBQSEiMLDR0rMzUmJiMiBgcjNjYzMhYXNTMXMzY2MzIXByYjIgYGFRUWMzI2NzMGBiMiJxVTBgoGExYFOgU3LAUMBVQOBBlUNyAbCxocKUYrDAwTFgY4BDctDAveAgIcHD9HAgHuYCs/BWMHKEs1HgYcHT9HA64AAAH/1AAAAVYCJgApAEtASBQBBAMVAQIEGw0CBQIoAQIBAARKBgECAAABAgBnAAUHAQEIBQFnAAQEA18AAwONSwkBCAiDCEwAAAApACkSEiQlJCISIwoNHCszNSYmIyIGByM2NjMyFzU0NjMyFhcHJiYjIhUVFhYzMjY3MwYGIyImJxVQBQoFFBUFOgQ4LAsJWk4ZMRQMDiMZRwcNBxQVBjkEOCwHDgbeAgIcHD9HA0hkTQoGWQQJWHQCBBwdP0cCA7AAAAAB//v/9gHpAiUANwBnQGQfAQUEIAEHBRcBBgczAQMCBAEBAwMBAAEGSgAHBQYFBwZ+AAYCBQYCfAACAwUCA3wAAwEFAwF8AAUFBF8ABASNSwABAQBfCAEAAIsATAEAMTAuLSQiHRsUExEPCAYANwE3CQ0UKxciJic1FhYzMjY1NCYnJiYjIgYHIzY2NyY1NDYzMhYXByYmIyIGFRQWFhcWFhc2NjczBgcWFRQG3jlRIiNfLTw1MkYQPhwdGgU5AyQiE3FdMVcpIyNKJjAyFzkzFTASFyEHOAg3D3MKEBFdERsmIBssHAcPHRwxQAwdLEZLFBJRDxUfGhMdGxMIEwsBFSRfGxkkUFIAAAAAAf/k//YBZgKUADMAZ0BkFQEEBh0BCAMFAQIBMCsCCwIxAQALBUoABQYFgwkBAwABAgMBZwAICgECCwgCZwcBBAQGXQAGBoVLAAsLAGAMAQAAiwBMAQAvLScmJCMhHxwbGhkYFxQTDw4MCwkHADMBMw0NFCsXIiYmNTUmJiMiBgcjNjYzMhYXNSM1NzczFTMVIxUWFjMyNjczBgYjIiYnFRQWMzI3FQYG/ixJLAUIBBQWBTkENy0ECAVLTyVBmpoHDgcTFgY5BTYtBw8GKyMtJBE6Ch5KQmEBAR0cQEcBAXswKHJ5UakDBR0cP0gEAi8sKg1QCAsAAAABABkAAAG8AhsAJACxS7AtUFhAFAEBCAkhAgIAARUPAgIFFAEEAwRKG0AUAQEICSECAgABFQ8CBgUUAQQDBEpZS7AtUFhAKAcBAQAFAgEFZwAABgECAwACZwAICAldCgEJCYVLAAMDBF4ABASDBEwbQDYAAQcABwEAfgAGBQIFBgJ+AAcABQYHBWcAAAACAwACZwAICAldCgEJCYVLAAMDBF4ABASDBExZQBIAAAAkACQTIhEkERMiEiQLDR0rARUHFhYzMjY3MwYGIyImJwchFSE1NyYmIyIHIzY2MzIWFzchNQGvgAkSChQVBjkEOC4UKRRiARj+bIcKFAomCjkENywWLBVi/vsCG0u1AgMcHT9HCwiKUkO9AwQ5QEYNCIpSAAD//wBT//YCOAMLAQ8ASgJsAhvAAAAJsQACuAIbsDMrAP//ADYBHwFtAmIBRwHWAAABHymaJmYACbEAAbgBH7AzKwAAAAACACD/EAIaAhsAFQAhAEJAPwEBAQISERACBAMBAkoGAQMBBAEDBH4AAQECXQUBAgKFSwAEBABfAAAAhwBMFxYAAB0bFiEXIQAVABUZKAcNFisBFQcXFhYVFAYjIiYmNTQ2Nyc1NyE1EyIGFRQWMzI2NTQmAfjibU5JinVJcUF2Z1+6/unbSUZFS0pGRgIbS5RCL3FWdIA4bE5odgo/JHhW/oNSSUlWVklJUgAAAQAS/7UDpQL4ADkBBUuwG1BYQBcVAQIBGhIHAwACMSwCCgA4MgEDBwoEShtAFxUBBgEaEgcDAAIxLAIKADgyAQMHCgRKWUuwGVBYQC4AAQQCBAECfg0BDAcMhAUBBASESwgDAgAAAl8GAQIChUsACgoHXQsJAgcHgwdMG0uwG1BYQDIAAQQCBAECfg0BDAsMhAUBBASESwgDAgAAAl8GAQIChUsJAQcHg0sACgoLXwALC4sLTBtAPQABBAYEAQZ+DQEMCwyEBQEEBIRLCAMCAAAGXwAGBo1LCAMCAAACXQACAoVLCQEHB4NLAAoKC18ACwuLC0xZWUAYAAAAOQA5NjQwLisqIhMmEhURERMVDg0dKxc3JiY1ESM1NzczFTMVIxEUFwERMxU3MwMGBzM2NjMyFhURIxE0IyIGFREjEQMWMzI3FQYGIyImJwckWxASS08lQZqaAwEIan1W1gIBBxlYM19laW9TPmrcDhEtJBE6HRMlEDxLcxM8KQEqMChyeVH+2A8NAU4BJJ6e/vENCikpXmf+oQFQfmRb/vEBaP7pBQ1QCAsFBkwAAAABAB8AAAEtAhsAEwA3QDQSEQ4NBAMECAcEAwQBAAJKBgUCAwIBAAEDAGYABASFSwABAYMBTAAAABMAExMRExMRBw0ZKwEVIxUXFSE1NzUjNTM1JzUhFQcVASdMUv7yUkxMUgEOUgFBTqEYOjoYoU6HGTo6GYcAAAABAAT/9gFZAhsAFwA3QDQIAQEACQECAQJKBwYCBAMBAAEEAGUABQWFSwABAQJfAAICiwJMAAAAFwAXEREUJSIRCA0aKwEVIxUUMzI2NxUGBiMiJiY1NSM1MzUzFQEnbUoWLxAROR4uSCpNTWkBQU5RVggFUAgLHkpDUk7a2gAAAAMAB/8QAmwCJQAcACMAKgCsS7AZUFhAChkBCAAMAQMKAkobQAoZAQgHDAEDCgJKWUuwGVBYQCoJBgIBCwUCAgoBAmUNAQgIAF8HDAIAAI1LDgEKCgNfAAMDi0sABASHBEwbQC4JBgIBCwUCAgoBAmUABweFSw0BCAgAXwwBAACNSw4BCgoDXwADA4tLAAQEhwRMWUAnJSQeHQEAKCckKiUqISAdIx4jGBcWFRQTEhEKCAYFBAMAHAEcDw0UKwEyFhczFSMGBiMiJicjFhYVFSMRIzUzNTMXMzY2FyIGByEmJgMyNjchFhYBYFhzCzY1BnVdPU4XBwIFakxMVg8FF00mQz8GAQkIQDc8QAX+9AM+AiVzcU58gS0fEjET3AHjTtpIIjBXRkdCS/5/W0tQVgACAAf/+AJfAhsAFgAfAEFAPgYEAgIJBwIBCAIBZQUBAwOFSwsBCAgAXwoBAACLAEwYFwEAHBsXHxgfEhEQDw4NDAsKCQgHBgUAFgEWDA0UKwUiJiY1NSM1MzUzFTM1MxUzFSMVFAYGJzI2NTUjFRQWATFOYzBJSWvxaklJMGVMPTrxPAg2XjszTtPT09NONDheOFZCNjQ0OT8AAAACAAf/9gJjAhsAJAArAFhAVRcQAgIDBAEJCAJKBwEIAUkHBAIBCgEICQEIZQYBAgIDXQUBAwOFSwwBCQkAXwsBAACLAEwmJQEAKSglKyYrISAfHhsaGRgUEw8ODQwJCAAkASQNDRQrBSImJjU0NSM1MzY2NyM1MxUGBgchJiYnNTMVIxYWFzMVIxUUBicyNjUhFhYBNExzQS04CzEhf/MlOA0BHQ05JPR+IS8MOC2Ldk1M/s8BSwo8cEwDAk4rQRlVURJGMS9JEVFVGkIpTgN0hlZaTU1aAAACAFP/MQI4AvgAJQAxAKZLsBlQWEAUBAEGACEcDgMDBxUBAgMUAQECBEobQBcEAQYAIQ4CBAccAQMEFQECAxQBAQIFSllLsBlQWEAkAAIAAQIBYwgBBQWESwkBBgYAXwAAAI1LAAcHA18EAQMDiwNMG0AoAAIAAQIBYwgBBQWESwkBBgYAXwAAAI1LAAQEg0sABwcDXwADA4sDTFlAFicmAAAuLCYxJzEAJQAlFCQlJycKDRkrExUUBgczNjYzMhYVFAYHFRQjIiYnNRYWMzI2NTUGIyImJyMHIxETIgYHFRQWMzI2NTS9AwIFF04+YXckIHwUIgwJGg4XGhsePk0XCBRO9E08ATtRQUEC+LcgPRAiLoyKSm0jdY4HBVIDBhkdQQctH0IC+P7WW14IXWNkXr8AAAIANP8xAkcC+AAkADEA/EuwGVBYQBIJAQgBIQEAAxgBBQAXAQQFBEobS7AiUFhAEgkBCAEhAQYDGAEFABcBBAUEShtAEgkBCAEhAQYHGAEFABcBBAUESllZS7AZUFhAJQAFAAQFBGQAAgKESwAICAFfAAEBjUsKBwIDAwBfBgkCAACLAEwbS7AiUFhAKQAFAAQFBGQAAgKESwAICAFfAAEBjUsABgaDSwoHAgMDAF8JAQAAiwBMG0AwAAMIBwgDB34ABQAEBQRkAAIChEsACAgBXwABAY1LAAYGg0sKAQcHAF8JAQAAiwBMWVlAHSYlAQAtKyUxJjEgHxwaFRMREA8OBwUAJAEkCw0UKwUiJjU0NjMyFhczJiY1NTMRMxUUIyImJzUWFjMyNjU1IycjBgYnMjY3NTQmIyIGFRQWAQxidnhiPU4YBgIGai58FCIMCRkPFxolEgUXTiVOPwE9UkFCQgqMiouOLiEONhTK/VyVjgcFUgMGGR1ESCIwV1ZYEF9kaFxbYgAAAQAQ/zEBkAL9ACUAlEAXFwEFBBgQAgYFDwEDBgQBAQIDAQABBUpLsCZQWEArAAgDAgMIAn4AAQkBAAEAZAAFBQRfAAQEhEsHAQMDBl0ABgaFSwACAoMCTBtAKQAIAwIDCAJ+AAQABQYEBWcAAQkBAAEAZAcBAwMGXQAGBoVLAAICgwJMWUAZAQAjIiEgHx4cGhUTDg0MCwgGACUBJQoNFCsXIiYnNRYWMzI2NTUjESM1NzU0NjMyFhcHJiYjIhUVMxUjETMVFIYUIgwJGg8XGTtbW19VIzoUGxEqFk+FhS7PBwVSAwYZHUQByjIhImdXDAdRBQlpI1H+ipWOAAAAAAIANP8QAwYCJQAxAD4A1kuwGVBYQBoDAQkAKAEFCg8BBAgeAQcEDgEDBx0BBgMGShtAGgMBCQEoAQUKDwEECB4BBwQOAQMHHQEGAwZKWUuwGVBYQDIAAgAFCAIFZQAEAAMGBANnDAEJCQBfAQsCAACNSwAKCghfAAgIi0sABwcGYAAGBocGTBtANgACAAUIAgVlAAQAAwYEA2cAAQGFSwwBCQkAXwsBAACNSwAKCghfAAgIi0sABwcGYAAGBocGTFlAITMyAQA5NzI+Mz4tKyIgGxkXFhMRDAoIBwYFADEBMQ0NFCsBMhYXMzczETMVFCMiJic1FhYzMjY1NSMVFCMiJic1FhYzMjY1NTQ2NyMGBiMiJjU0NhciBhUUFjMyNjU1NCYBDTRUHQUMVu18FCMLCRkPFxqR+TpiKSpnOkFJAgEEHFE1ZnNzfD9DQ0FKRUYCJSgpR/5gso8IBVIDBhkdZjPpEBFdFRVLRBINKgsqJ5ODgpdYY19eYlFcFGhZAAEAU/8xAiwC+AAhAERAQR4dCwQEAQAUAQMEEwECAwNKAAEABAABBH4AAwACAwJkBwEGBoRLAAAAhUsFAQQEgwRMAAAAIQAhExMlIhIZCA0aKxMRFAYHMzY2NzczBxczFRQjIiYnNRYWMzI2NTUjJwcVIxG8BAEDCycPpXvZqUF8FCIMCRoPFhoksj5pAvj+hBQ4Fg8xELHn4ZSOBwVSAwYZHUTxNL0C+AAAAAABACz/MQDrAvgAEgA1QDIJAQIDCAEBAgJKAAAEAwQAA34AAgABAgFkBQEEBIRLAAMDgwNMAAAAEgASEyUiEQYNGCsTETMVFCMiJic1FhYzMjY1NSMRvS59FCIMCRoPFxk7Avj9W5SOBwVSAwYZHUQC+AAAAAEAU/8xA5MCJQAwAI5AEx8BAwcEAQECAwEAAQNKJQEDAUlLsBlQWEAlAAoDAgMKAn4AAQsBAAEAZAUBAwMHXwkIAgcHhUsGBAICAoMCTBtAKQAKAwIDCgJ+AAELAQABAGQABweFSwUBAwMIXwkBCAiNSwYEAgICgwJMWUAdAQAuLSooJCIeHRwbGBYUExAODAsIBgAwATAMDRQrBSImJzUWFjMyNjU1IxE0IyIGFREjETQjIgYVESMRMxczNjYzMhczNjYzMhYVETMVFAMXFCIMCRoPFxk7ZUg+aWZMOWpUDwYZVTB8KAgaXDNbXC3PBwVSAwYZHUQBUX1ZU/7eAVF9Ylz+8AIbSCooVywrXmj+9JSOAAEAU/8xAlQCJQAiAH1ADhcBAwUEAQECAwEAAQNKS7AZUFhAIgAHAwIDBwJ+AAEIAQABAGQAAwMFXwYBBQWFSwQBAgKDAkwbQCYABwMCAwcCfgABCAEAAQBkAAUFhUsAAwMGXwAGBo1LBAECAoMCTFlAFwEAIB8cGhYVFBMQDgwLCAYAIgEiCQ0UKwUiJic1FhYzMjY1NSMRNCMiBhURIxEzFzM2NjMyFhURMxUUAdgUIwsJGQ8XGjtvUj9qVA8GGlszXmQuzwcFUgMGGR1EAVB+Ylz+8AIbSCooXmj+9JSOAAAAAAIAU/8QAjgCJQAlADIAqkuwGVBYQBQiAQYAGRQGAwMHDQECAwwBAQIEShtAFCIBBgUZFAYDAwcNAQIDDAEBAgRKWUuwGVBYQCUAAgABBAIBZwkBBgYAXwUIAgAAjUsABwcDXwADA4tLAAQEhwRMG0ApAAIAAQQCAWcABQWFSwkBBgYAXwgBAACNSwAHBwNfAAMDi0sABASHBExZQBsnJgEALiwmMicyISAfHhcVEQ8KCAAlASUKDRQrATIWFRQGBxUUIyImJzUWFjMyNjU1BiMiJicjFhYVFSMRMxczNjYXIgYHFRQWMzI2NTQmAWBidiQgfBQiDAkaDhcaGx49ThcHAgVqVg8FF00mSz4BPFBCQEECJYyLSW4jdY4HBVIDBhkdQQctHxIxE9wDC0giMFdWWRBeZGxXWGYAAAABACz/MQGYAiUAIACaS7AZUFhAEwIBAQAdAwICARIBBAURAQMEBEobQBMCAQYAHQMCAgESAQQFEQEDBARKWUuwGVBYQCEAAgEFAQIFfgAEAAMEA2QAAQEAXwYHAgAAjUsABQWDBUwbQCUAAgEFAQIFfgAEAAMEA2QABgaFSwABAQBfBwEAAI1LAAUFgwVMWUAVAQAcGxoZFhQPDQsKBgQAIAEgCA0UKwEyFwcmIyIGBhUVMxUUIyImJzUWFjMyNjU1IxEzFzM2NgFdIBsLGhwpRisufRQiDAkaDxcZO1QOBBlUAiUFYwcoSzXJlI4HBVIDBhkdRAIbYCs/AAABADH/MQG5AiUAOQBMQEkDAQEAKQQCBQEoIhQDBAUbAQMEGgECAwVKAAMAAgMCYwABAQBfBgEAAI1LAAUFBF8ABASLBEwBAC0rJiQfHRgWCAYAOQE5Bw0UKxMyFhcHJiYjIhUUFhYXHgIVFAYHFRQjIiYnNRYWMzI2NTUGBiMiJic1FhYzMjY1NCYmJy4CNTQ2/zFXKSMjSiZiFzkzMUcmGhh9FCIMCRoPFxkRJxQ5USIjXy08NRQ3NTRHJnECJRQSUQ8VORMcHBQTKTosJjkUZo4HBVIDBhkdQQMEEBFdERsmIBIdHxQUKjosRksAAAAB/+P/EAGqAv4ALQCLQBoDAQEABAECARMBBAUjAQcEEgEDByIBBgMGSkuwJFBYQCYAAgAFBAIFZQAEAAMGBANnAAEBAF8IAQAAhEsABwcGXwAGBocGTBtAJAgBAAABAgABZwACAAUEAgVlAAQAAwYEA2cABwcGXwAGBocGTFlAFwEAJyUgHhsaFxUQDgwLCAYALQEtCQ0UKxMyFhcVJiYjIgYVETMVFCMiJic1FhYzMjY1NSMVFAYjIiYnNRYWMzI2NRE0NjbjGCcLCB4OHR/tfBQiDAkaDhcakU5CFigMChwPHB8lQQL+CgZRBAcjM/4pvI4HBVIDBhkdcHFbUAgIUQUGJDECmkBKHwAAAQAA/zECDgIbABwAPUA6EgEFAwQBAQIDAQABA0oAAQYBAAEAZAQBAwOFSwAFBQJdAAICgwJMAQAaGRgXDg0MCwgGABwBHAcNFCsFIiYnNRYWMzI2NTUjAzMTFhYXMzY2NxMzAzMVFAFnFCIMCRoOFxq7zHBwChcDBAQYCnBwr4TPBwVSAwYZHUQCG/7FIEwZGU0fATv+N5OOAAAAAQAO/zECCAIbABoAQEA9GRYTAQQABQoBAgMJAQECA0oAAAUDBQADfgACAAECAWQHBgIFBYVLBAEDA4MDTAAAABoAGhISEyUiEggNGisBAxczFRQjIiYnNRYWMzI2NTUjJwcjEwMzFzcCCLeGMHwUIgwJGg4XGhKJinjAt3mAgAIb/vi/lY4HBVIDBhkdRM7OARMBCMLCAAABACP/MQG3AhsAFgBAQD0BAQQFEwEDAAoBAgMJAQECBEoAAgABAgFjAAQEBV0GAQUFhUsAAAADXQADA4MDTAAAABYAFhITJSISBw0ZKwEVASEVFCMiJic1FhYzMjY1NSE1ASE1Aa/+8AEYfBQjCwkZDxca/sgBFv77AhtL/oKTjgcFUgMGGR1EQwGGUgAAAAACAC3/MQJ+AiUAKwA2ARZLsBNQWEAWGQEEBRgBAwQGAQEGKAEHASkBAAcFShtLsBlQWEAWGQEEBRgBAwQGAQgGKAEHASkBAAcFShtAFhkBBAUYAQMEBgEIBigBBwIpAQAHBUpZWUuwE1BYQCgAAwAJBgMJZQAHCgEABwBkAAQEBV8ABQWNSwsIAgYGAV8CAQEBgwFMG0uwGVBYQC8ABgkICQYIfgADAAkGAwllAAcKAQAHAGQABAQFXwAFBY1LCwEICAFfAgEBAYMBTBtAMwAGCQgJBgh+AAMACQYDCWUABwoBAAcAZAAEBAVfAAUFjUsAAQGDSwsBCAgCXwACAosCTFlZQB8tLAEAMjAsNi02JiQhIB0bFhQRDwsJBQQAKwErDA0UKwUiJjU1IycjBgYjIiY1NDY3NzU0JiMiBgcnNjYzMhYVETMVFBYzMjY3FQYGATI2NTUHBgYVFBYCODVDHRUEI01ESWB9gFw2MSlMIyImYzZlZS4aGgwaCAsn/qg+U0hcRzLPQUxCSywpT1RTVQQDHjsxGBFNFBtZX/7nkyIcBgNPBgYBF0ZGLwIENi8qJgAAAgA0/zECqQIlACIALwD4S7AZUFhAEgMBBwAZAQUCDwEDBRABBAMEShtLsB5QWEASAwEHARkBBQIPAQMGEAEEAwRKG0ASAwEHARkBBQgPAQMGEAEEAwRKWVlLsBlQWEAhAAMABAMEZAoBBwcAXwEJAgAAjUsIAQICBV8GAQUFgwVMG0uwHlBYQCkAAwAEAwRkAAEBhUsKAQcHAF8JAQAAjUsABQWDSwgBAgIGXwAGBosGTBtAMAACBwgHAgh+AAMABAMEZAABAYVLCgEHBwBfCQEAAI1LAAUFg0sACAgGXwAGBosGTFlZQB0kIwEAKigjLyQvHhwYFxQSDQsIBwYFACIBIgsNFCsBMhYXMzczETMVFBYzMjY3FQYGIyImNTUjJyMGBiMiJjU0NhciBhUUFjMyNjU1NCYBDj1OGAQOVi4bGQwaCAwmFDVDJRIFF04+YnZ4eEFCQkJOQD0CJS4hRf45kyIcBgNPBgZBTEJIIjCMiouOV2hcXGJXWBBfZAAAAgA0/xACfwL+AC8APACZQBofAQQDIAECBBQBBwIHAQEGLQEFAS4BAAUGSkuwJFBYQCsABAQDXwADA4RLAAcHAl8AAgKNSwkBBgYBXwABAYtLAAUFAF8IAQAAhwBMG0ApAAMABAIDBGcABwcCXwACAo1LCQEGBgFfAAEBi0sABQUAXwgBAACHAExZQBsxMAEAODYwPDE8KykkIh0bEhAMCgAvAS8KDRQrBSImNTU0NjcjBgYjIiY1NDYzMhYXMy4CNTU0MzIWFxUmJiMiBhURFBYzMjY3FQYBMjY3NTQmIyIGFRQWAjM9RwUBBhdOPWF4eGI9ThgGAQQDiRYmCwcdERYbGhkQGgkY/r5OPwE9UkFCQvBNXTcTMhAiLoyKi44uIQYfJQ46lgoEVQMHGyD9UTEkBgVREAE9VlgQX2RoXFtiAAAAAgA0/zECUwIlACQAKwBWQFMTAQMCIgEAAxoBBAAbAQUEBEoABwACAwcCZQAEAAUEBWMJAQYGAV8AAQGNSwADAwBfCAEAAIsATCYlAQApKCUrJisfHRgWEQ8NDAkHACQBJAoNFCsFIiYmNTQ2NjMyFhUVIRYWMzI2NxUUFjMyNjcVBgYjIiY1NQYGAyIGBzMmJgE9TnhDPW1Janr+lgJTSzRRKxsZDBoICycUNUMUKy85RQb+ATsKPnpbW35Dg3E6U1gTE7EiHAYDTwYGQUxABAQB3UpEP08AAQAq/zECNgIlADcAXUBaGAEDAhkBBAMNAQUELQEGBQQBAQY0AQcBNQEABwdKAAQABQYEBWUABwgBAAcAYwADAwJfAAICjUsABgYBXwABAYsBTAEAMjArKSUjIiAdGxYUCAYANwE3CQ0UKwUiJjU1BgYjIiY1NDY3NSYmNTQ2NjMyFhcHJiYjIhUUFjMzFSMiBhUUFjMyNjcVFBYzMjY3FQYGAe81QxUvHHpzRzQvNzhiPjpbKSQjRzB1TkY9S01IS0A5WyIaGQwaCQwnz0FMQAQEWUQ8Og0FDT4xLz8gFRJRDxVFKCNRKyorJRoQtCIcBgNPBgYAAAABACL/MQHSAiUANwBdQFoYAQQFFwEDBCEBAgMEAQECLQEGATQBBwY1AQAHB0oAAwACAQMCZwAHCAEABwBjAAQEBV8ABQWNSwABAQZfAAYGiwZMAQAyMCspHBoVExAODQsIBgA3ATcJDRQrFyImNTUWFjMyNjU0IyM1MzI2NTQjIgYHJzY2MzIWFRQGBxUeAhUUBgYjIiYnFRQWMzI2NxUGBps1RCJgNzxTmUQ5RlN3K0ooIyxjOlt1OC8gNyEza1MaMhYZGgwbCAwnz0FMtxAaJC5TUSIpRRERUBIUSEYxOg0ECR8zKS1JKwQEPSIcBgNPBgYAAgAx/zECwgIlACUALABeQFsTAQMEEgECAyIBBgEjAQAGBEoEAQgBSQUBAgAIBwIIZQAGCQEABgBkAAMDBF8ABASNSwoBBwcBXwABAYsBTCcmAQAqKSYsJywgHhsaFxUQDgwLCAYAJQElCw0UKwUiJjURBgYjIiY1NSEmJiMiBgc1NjYzMhYWFzMRFBYzMjY3FQYGATI2NyMWFgJ8NUMOgWBqegFqAlNLNFErKVI5S3VFA1kaGgwaCAsn/oU5RQb+ATvPQUwBGGt1hHA6UlkTE1gTETpzVP6dIhwGA08GBgEXSkQ/TwAAAAIATP8xAU0C6AALAB8ATEBJFQEDBRYBBAMCSgACBgUGAgV+AAMABAMEZAABAQBfBwEAAIRLCAEGBoVLAAUFgwVMDAwBAAwfDB8eHRoYExEODQcFAAsBCwkNFCsTMhYVFAYjIiY1NDYXETMVFBYzMjY3FQYGIyImNTUjEYkYJCQYGSQkTS4ZGgwbCAwnEzZDOwLoHCEgHR0gIRzN/jmTIhwGA08GBkFMQgIbAAABACD/MQG2AiUAJgBKQEckAQUAIxkCBAUKAQEEEQECARIBAwIFSgACAAMCA2MABQUAXwYBAACNSwAEBAFfAAEBiwFMAQAhHx0bFhQPDQkHACYBJgcNFCsTMhYWFRQGBiMiJxUUFjMyNjcVBgYjIiY1NRYWMzI1NCMiBgcnNja9SnA/QXFKHBcZGgwaCQwnFDVDHkQrkpQdPhogG1ECJTt6YGJ8PAM4IhwGA08GBkFMtRAUwL0PDVYNEgAAAAH/4/8xAS0C/gAnAHFAFAMBAQAdBAIEARUOAgIEFgEDAgRKS7AkUFhAGwAEAQIBBAJ+AAIAAwIDZAABAQBfBQEAAIQBTBtAIQAEAQIBBAJ+BQEAAAEEAAFnAAIDAwJXAAICA2AAAwIDUFlAEQEAIR8aGBMRCAYAJwEnBg0UKxMyFhcVJiYjIgYVERQGBxUUFjMyNjcVBgYjIiY1NRYWMzI2NRE0NjbjGCcLCB4OHR9GOBoZDRoIDCYUNUMKHA8cHyVBAv4KBlEEByMz/k9VTwU3IhwGA08GBkFMmQUGJDEBtEBKHwAAAAABAE7/MQKyAhsAJADFS7AZUFhADhMBAwAJAQEDCgECAQNKG0uwIlBYQA4TAQMACQEBBAoBAgEDShtADhMBAwYJAQEECgECAQNKWVlLsBlQWEAbAAEAAgECZAgHAgUFhUsGAQAAA2AEAQMDgwNMG0uwIlBYQB8AAQACAQJkCAcCBQWFSwADA4NLBgEAAARgAAQEiwRMG0AmAAAFBgUABn4AAQACAQJkCAcCBQWFSwADA4NLAAYGBGAABASLBExZWUAQAAAAJAAkIxMkEyUjEQkNGysBETMVFBYzMjY3FQYGIyImNTUjJyMGBiMiJjURMxEUFjMyNjURAiMtGhoMGggLJxQ1QyYPBRpcM19kazU4U0ACG/45kyIcBgNPBgZBTEJHKiddZwFh/q8/PmFcAREAAQAi/zEB0gIbACkAWUBWFAEDBA8BAgUEAQECHwEGASYBBwYnAQAHBkoABQACAQUCZwAHCAEABwBjAAMDBF0ABASFSwABAQZfAAYGiwZMAQAkIh0bFhUTEhEQDgwIBgApASkJDRQrFyImNTUWFjMyNjU0JiMjNTchNSEVBxYWFRQGBiMiJicVFBYzMjY3FQYGmzVEImA3PFNKTkSg/v4BjKRmWDNrUxoyFhkaDBsIDCfPQUy6EBooLy0lRolVT4YHU0QyTy8EBD8iHAYDTwYG//8ANgEZAXECaAFHBCIAAAEfKZomZgAJsQACuAEfsDMrAAAA//8AIgEZASoCaAFHAEYAAAEfKZomZgAJsQABuAEfsDMrAAAA//8AHwEBAUMCaAFHBCUAAAEfKZomZgAJsQACuAEfsDMrAAAA//8AIgEZAWsC6gFHALIAAAEfKZomZgAJsQACuAEfsDMrAAAA//8AFgEZAS8CaAFHCCYAAAEfKZomZgAJsQABuAEfsDMrAAAA//8ACgEfAQQC6gFHAEkAAAEfKZomZgAJsQABuAEfsDMrAAAA////2gCPAKwCYgFHBCwAAAEfKZomZgAJsQABuAEfsDMrAAAA//8AIgCPAV0CaAFHBC4AAAEfKZomZgAJsQACuAEfsDMrAAAA//8ANACaAWQCYgFHBDIAAAEfKZomZgAJsQABuAEfsDMrAAAA//8ABQEfAKwC3QFHBDUAAAEfKZomZgAJsQACuAEfsDMrAAAA//8ANQEZAOACYgFHBDYAAAEfKZomZgAJsQABuAEfsDMrAAAA//8AFAEfAMQCYgFHBDcAAAEfKZomZgAJsQABuAEfsDMrAAAA//8AFAEfAMQCYgFHBWcAAAEfKZomZgAJsQABuAEfsDMrAAAA////wwCPAKoC3QFHBGoAAAEfKZomZgAJsQADuAEfsDMrAAAA//8ANgCPANEC5wFHBDoAAAEfKZomZgAJsQABuAEfsDMrAAAA//8AHQCjAJkC5wFHBXEAAAEfKZomZgAJsQABuAEfsDMrAAAA//8ANgEfARYCYgFHBGwAAAEfKZomZgAJsQABuAEfsDMrAAAA//8ANgCPAjYCaAFHBD4AAAEfKZomZgAJsQABuAEfsDMrAAAA//8AMwCPAjMCYgFHBD0AAAEfKZomZgAJsQABuAEfsDMrAAAA////7QCPAWYCaAFHBD8AAAEfKZomZgAJsQABuAEfsDMrAAAA//8ANgCPAa8CaAFHBEAAAAEfKZomZgAJsQABuAEfsDMrAAAA//8ANgEfAXYCYgFHBEEAAAEfKZomZgAJsQABuAEfsDMrAAAA//8AIgEZAWsCaAFHBEIAAAEfKZomZgAJsQADuAEfsDMrAAAA//8AIQCPAcYC5wFHBEUAAAEfKZomZgAJsQADuAEfsDMrAAAA//8AIACPAR8CaAFHBE8AAAEfKZomZgAJsQABuAEfsDMrAAAA////7QCPAMQC6wFHBFAAAAEfKZomZgAJsQABuAEfsDMrAAAA//8ADACPAOkCqwFHA4oAAAEfKZomZgAJsQABuAEfsDMrAAAA//8ABQEZAZQCYgFHBFYAAAEfKZomZgAJsQACuAEfsDMrAAAA//8AEwEZAX8CYgFHBFcAAAEfKZomZgAJsQABuAEfsDMrAAAA//8AMwEaAVoCYgFHBQgAAAEfKZomZgAJsQABuAEfsDMrAAAA//8AMwEZAWcCaAFHBFgAAAEfKZomZgAJsQABuAEfsDMrAAAA//8AAAEfAVYCYgFHBFkAAAEfKZomZgAJsQABuAEfsDMrAAAA//8AFwEfAR0CYgFHAF0AAAEfKZomZgAJsQABuAEfsDMrAAAA//8AFwCPAWQCYgFHBF0AAAEfKZomZgAJsQABuAEfsDMrAAAA//8AFwDrAWICYgFHBF4AAAEfKZomZgAJsQACuAEfsDMrAAAA//8ADACPAT0CYgFHBF8AAAEfKZomZgAJsQABuAEfsDMrAAAA//8AIgEZAWYC6gFHAYQAAAEfKZomZgAJsQADuAEfsDMrAAAA//8AXwAAAlsDlwImACUAAAEHAU4A5gCvAAixAwGwr7AzKwAA//8AU//2AjgC+AImAEUAAAAHAU4A/gAA//8AX/9GAlsCygImACUAAAAHC6MCcAAA//8AU/9GAjgC+AImAEUAAAAHC6MCcwAA//8AX/9lAlsCygImACUAAAEHAUwAhv0HAAmxAwG4/QewMysA//8AU/9lAjgC+AImAEUAAAEHAUwAhf0HAAmxAgG4/QewMysA//8APP8QAlkDrQImACYAAAAnAHoBCwAAAQcAdgEOAK8ACLECAbCvsDMrAAD//wA0/xABygL+AiYARgAAACcAegC0AAAABwB2ALAAAP//AF8AAAKhA5cCJgAnAAABBwFOAQoArwAIsQIBsK+wMysAAP//ADT/9gIZAvgCJgBHAAAABwFOAKQAAP//AF//RgKhAsoCJgAnAAAABwujAoUAAP//ADT/RgIZAvgCJgBHAAAABwujAlUAAP//AF//ZQKhAsoCJgAnAAABBwFMAKb9BwAJsQIBuP0HsDMrAP//ADT/ZQIZAvgCJgBHAAABBwFMAHL9BwAJsQIBuP0HsDMrAAACAF//EAKhAsoAIAAoADdANB4QBwMBAgYBAAECSgAEBANdAAMDgksABQUCXQACAoNLAAEBAF8AAACHAEwhLCE2JSIGDRorBRQGIyImJzUWFjMyNjU0Jic3IiMjETMyFhYVFAYHBxYWEzQmIyMRMyABvkhMER0LCyEOHiEwKCgJCsjdbaBYlokYIjJygnlqVwEOhjI4BAI/AgQRFxgZBVMCylCccpy0FTUJKQHJh3/97AAAAAACADT/EAIZAvgAKwA4AK5LsBlQWEAUCQEHARIBAAYqIRcDBQAgAQQFBEobQBQJAQcBEgEDBiohFwMFACABBAUESllLsBlQWEAnAAIChEsABwcBXwABAY1LCQEGBgBfAwgCAACLSwAFBQRfAAQEhwRMG0ArAAIChEsABwcBXwABAY1LAAMDg0sJAQYGAF8IAQAAi0sABQUEXwAEBIcETFlAGy0sAQA0Miw4LTglIx4cERAPDgcFACsBKwoNFCsFIiY1NDYzMhYXMyYmNTUzESMnIwYGBwcWFhUUBiMiJic1FhYzMjY1NCYnNzcyNjc1NCYjIgYVFBYBDGJ2eGI9ThgGAgZqUxIFDigbGCIzSUwRHQoKIQ8dITAoJBNOPwE9UkFCQgqMiouOLiEONhTK/QhIFSMLMwkpJjI4BAI/AgQRFxgZBUlXVlgQX2RoXFtiAP//AF//OAKhAsoCJgAnAAAABwusAVcAAP//ADT/OAIZAvgCJgBHAAAABwusAScAAP//AF8AAAHxBCsCJgAoAAABBwe1ATUAugAIsQECsLqwMysAAP//ADT/9gILA3ECJgBIAAAABwe1AR8AAP//AF8AAAHxBCsCJgAoAAABBwe2ATIAugAIsQECsLqwMysAAP//ADT/9gILA3ECJgBIAAAABwe2AR8AAP//AF//OAHxAsoCJgAoAAAABwusAS0AAP//ADT/OAILAiUCJgBIAAAABwusASwAAP//AF//PgHxAsoCJgAoAAAABgS4SAAAAP//ADT/QAILAiUCJgBIAAABBwFRADv84gAJsQIBuPzisDMrAP//AF//EAHxA5wCJgAoAAAAJwB6AMUAAAEHAU0AZgCvAAixAgGwr7AzKwAA//8ANP8QAgsC7QImAEgAAAAmAU1WAAAHAHoAwwAAAAD//wBfAAAB8QOXAiYAKQAAAQcBTgDIAK8ACLEBAbCvsDMrAAD//wAQAAABkAOhAiYASQAAAQcBTgCoALkACLEBAbC5sDMrAAD//wA8//YCiwNdAiYAKgAAAQcBTADSAK8ACLEBAbCvsDMrAAD//wA0/xACGQKuAiYASgAAAAYBTGwAAAD//wBfAAACjAOXAiYAKwAAAQcBTgEVAK8ACLEBAbCvsDMrAAD//wBQAAACJgPFAiYASwAAAQcBTgAoAN0ACLEBAbDdsDMrAAD//wBf/0YCjALKAiYAKwAAAAcLowKhAAD//wBT/0YCJgL4AiYASwAAAAcLowJqAAD//wBfAAACjAOPAiYAKwAAAQcAagBQAK8ACLEBArCvsDMrAAD////0AAACJgO9AiYASwAAAQcAav9jAN0ACLEBArDdsDMrAAD//wAt/xACjALKAiYAKwAAAAYAeigAAAD//wAf/xACJgL4AiYASwAAAAYAehoAAAD//wBf/z4CjALKAiYAKwAAAAcLrQF3AAD//wBT/z4CJgL4AiYASwAAAAcLrQE7AAD////0/0IBbgLKAiYALAAAAAcLrwCxAAD////L/0IBRQLoAiYATAAAAQcBUf+j/OQACbECAbj85LAzKwD//wAeAAABUAQZAiYALAAAAQcHgwCxAK8ACLEBA7CvsDMrAAD////1AAABJwNqAiYIKgAAAAcHgwCIAAD//wBfAAACeAOtAiYALgAAAQcAdgDqAK8ACLEBAbCvsDMrAAD//wBFAAACKQPbAiYATgAAAQcAdgAdAN0ACLEBAbDdsDMrAAD//wBf/0YCeALKAiYALgAAAAcLowJ9AAD//wBT/0YCKQL4AiYATgAAAAcLowJGAAD//wBf/2QCeALKAiYALgAAAAcLsAFPAAD//wBT/18CKQL4AiYATgAAAQcBTABw/QEACbEBAbj9AbAzKwD//wBf/0YB/ALKAiYALwAAAAcLowJcAAD//wBK/0YAwwL4AiYATwAAAAcLowG2AAD////5/0YB/ANdAiYALwAAACcLowJcAAABBwFM/9EArwAIsQIBsK+wMysAAP///+7/RgEhA4sCJgBPAAAAJwujAbYAAAEHAUz/xgDdAAixAgGw3bAzKwAA//8AX/9rAfwCygImAC8AAAEHAUwAbP0NAAmxAQG4/Q2wMysA////7f9pASAC+AImAE8AAAEHAUz/xf0LAAmxAQG4/QuwMysA//8AX/84AfwCygImAC8AAAAHC6wBLgAA////1P84AT8C+AImAE8AAAEHAUr/rPzaAAmxAQG4/NqwMysA//8AXwAAAzcDlwImADAAAAEHAU4BaQCvAAixAQGwr7AzKwAA//8AUwAAA2YC6AImAFAAAAAHAU4BhAAA//8AX/9GAzcCygImADAAAAAHC6MC8wAA//8AU/9GA2YCJQImAFAAAAAHC6MDDAAA//8AXwAAAqkDlwImADEAAAEHAU4BIgCvAAixAQGwr7AzKwAA//8AUwAAAiYC6AImAFEAAAAHAU4A2QAA//8AX/9GAqkCygIm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/82wMysAAAD////nAAADewMqACcAKwDvAAABBwb9/3H/zgAJsQECuP/OsDMrAAAA////5wAAA3cDKgAnACsA6wAAAQcHCv9x/84ACbEBArj/zrAzKwAAAP//AFH/9gFZAwwCJgGFAAAABgbsCwAAAP//AE//9gFZAwwCJgGFAAAABgcmAgAAAP//AAP/9gFZAwcCJgGFAAAABwb7/24AAP//AAP/9gFZAwcCJgGFAAAABwcI/3UAAP//ABT/9gFZAwcCJgGFAAAABwb8/2gAAP//ABL/9gFZAwcCJgGFAAAABwcJ/28AAP///97/9gFZA1wCJgGFAAAABwb9/2gAAP///9P/9gFZA1wCJgGFAAAABwcK/10AAP//AAAAAAG5AtQAJgAsfgABBgbsucgACbEBAbj/yLAzKwAAAP//AAAAAAGzAtQAJgAseAABBgcms8gACbEBAbj/yLAzKwAAAP//AAAAAAJRAtQAJwAsARYAAAEHBvv/a//NAAmxAQK4/82wMysAAAD//wAAAAACQwLUACcALAEIAAABBwcI/3L/zQAJsQECuP/NsDMrAAAA//8ACQAAAmQC1AAnACwBKQAAAQcG/P9d/80ACbEBArj/zbAzKwAAAP//AAAAAAJeAtQAJwAsASMAAAEHBwn/Xf/NAAmxAQK4/82wMysAAAD////nAAACVQMqACcALAEaAAABBwb9/3H/zgAJsQECuP/OsDMrAAAA////5wAAAlQDKgAnACwBGQAAAQcHCv9x/84ACbEBArj/zrAzKwAAAP//ADT/9gIuAwwCJgBSAAAABwbsALEAAP//ADT/9gIuAwwCJgBSAAAABwcmAKgAAP//ADT/9gIuAwcCJgBSAAAABgb7FAAAAP//ADT/9gIuAwcCJgBSAAAABgcIGwAAAP//ADT/9gIuAwcCJgBSAAAABgb8DgAAAP//ADT/9gIuAwcCJgBSAAAABgcJFQAAAP//AAD/9gMHAtUAJgAyMgABBgbsucgACbECAbj/yLAzKwAAAP//AAD/9gMdAtUAJgAySAABBgcms8gACbECAbj/yLAzKwAAAP//AAD/9gO5AtUAJwAyAOQAAAEHBvv/a//NAAmxAgK4/82wMysAAAD//wAA//YDtwLVACcAMgDiAAABBwcI/3L/zQAJsQICuP/NsDMrAAAA//8AA//2A4YC1QAn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ARD/8wJhADQCdgBTAmEANAJhADQCYQA0AmEANAJhADQCPAAwAmEANAJ2AE4CdgBOAnYATgJ2AE4CDwABAmwAUwIPAAECjgAAAj4ALQKOAAACPgAtAo4AAAI+AC0CeQA8AeoANAJ5ADwB6gA0AnkAPAHqADQCeQA8AeoANALdAF8CbAA0At0AHAJyADQCLQBfAjwANAItAF8CPAA0Ai0AXwI8ADQCLQBfAjwANAItAF8CPAA0AtcAPAJsADQC1wA8AmwANALXADwCbAA0AtcAPAJsADQC7ABfAnb/1QLsAAACdgAHAWL/9AEQ/8oBYgAYARD/7gFiAA8BEP/mAWIAJgEQACABYgAmAoQAJgIgAEwBIv+zARD/xgJ4AF8CLwBTAi8AUwIYAE4BEABDAhgAXwEQAEMCGABfARAAUwIYAF8BKABTAhgACQEQ//YDCABfAnYAUwMIAF8CdgBTAwgAXwJ2AFMCyAABAwgAXwJ2AFMDEQA8AmEANAMRADwCYQA0AxEAPAJhADQDrQA8A7sAMwJ5AF8BqQBTAnkAXwGpAEECeQBfAakAPwImADIB5AAxAiYAMgHkADECJgAyAeQAMQImADIB5AAxAjMADQF/ABICMwANAX8AEgIzAA0BfwASAuIAWQJ2AE4C4gBZAnYATgLiAFkCdgBOAuIAWQJ2AE4C4gBZAnYATgLiAFkCdgBOA60ACAMnAAsCRwAAAg8AAQJHAAACPgAiAdsAIwI+ACIB2wAjAj4AIgHbACMBVwBTAjwAXgKPAAACPgAtA4b//wNwAC0DEQA8AmEANAImADIB5AAxAbsAKAG7ACgBgwAoAZ0AKADIACgBMwAoAP8AKAHKACgBzgAoAkEA+AJBAH4ClAAGAREARAKLAAADSgAAAeoAAANEAAAC7AAAA0H/+wFs/+gCjgAAApAAXwIXAF8CXAAWAi0AXwI+ACIC7ABfAxEAPAFiACYCeABfAmwAAAOWAF8DCABfAjAAJAMRADwC3wBfAmQAXwJBACUCMwANAkcAAAM1ADECYgADAzkANQMPACMBYgAcAkcAAAJwADQB+AAqAnYAUwFsAFECbgBMAnAANAKAAFMCFQAEAmAAMwH4ACoB6AA0AnYAUwJaADQBbABRAi8AUwI0//0CegBTAjEAAQHjADMCYQA0AqsADAJhAEkB6AA0AnQANAHwAA0CbgBM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ARAABwFsAFEBTAAfAYsABAFu//YBDwBTAq8AUwO1AE8DtQBPA7UAUwJ2/+MCdgBTApIAUwJhADQDYgA0AxwANQLvADMBqQARAakAEQGpABEBqQBTAakAUwFpAFABaQATAj0AVQI9AFUB5AAxARD/4wEQ/+MBEP/tARD/mAF/ABkBfwASAnYABwJqAB0CdgBPAg4AAAMnAAsCDwAAAfYAAAHbACMCKAAjAgoAEgIK//IBugAJAboAGgG6AAkB4gA0AxEAPAJQAFMCYQArAkUANAKEAFMBEP+iAi8ABgHAAFMCbAA0AboACQG6ABkDzgA0A+4ANAQaADQDCAASAiAAEgNvABIDfAAQAqcAUwJxAFMCBQAAAlMAUwJ8/+wCfP/sAZkANgGZADYAsf/aARQANgEUAAsBFAALAXQANwIMAAcBVwABALsADAGAAAwAuwAMALsADACtAB4ArQAeASkACAEpABMBHQAYAR0AGAEdABEBHQAKAKYAKAExACgBMQAoAKYAKAGDACgBMQAoATEAKAE5AEQBOQBEAMEAKADBACgBDgAeAQ4AHgEOAB4BGgAeARwAKAFWAAAAsQA2ATsAIAFhAAkBHwARAaIATgGiAE4BogBOAaIATgGiAE4BogBOAaIATgG7ACgB7wAoAYAADAGeACgBngAoAUsAKAFLACgBMQAoAc4AKAHOACgBygAoAREARAD2ACgA9gAoAPYAKAD2ACgCDgAoAg4AKAIWACgAAP6FAOYAFADmABQCQQDyAeoAIAHqADQB6gAgARIAHwJXADAC2f/oAk0AAALvADMCif/6AwUAPAJhADQCbAA8AegANAIcAF8B3QBUAfH/+wIrAC8CUf/zAgT/tQKJ//oCYQA0AeoANAEQ/8YDEgA8AfgANAHzAB8CZABfAmwAUwJ5ADwDlgBfAvIAUwJhAAMCeQAgAnkAPAJ5ACADEQA8AmwANAOtAAgDJwALAhkACgLVAAgDcAAxAlAACgIJADsCWABWAlgAIwHRAFYB/QAiARwAUgFkADICCQBWAcEAFQLkAFYCeABWAn8AOwIJACMCbQASAm0AHwJtAAgDuwAxAjAAOQJ2ADcCdgA3AfwAVgIXABUCFwAVAdEAFQJlAE8CbQAmAx8AFAJtACgB5wAAAt8ACgHbACMB6gAhAc4ALQH8ABABwgBWAfsACgJaAFYB/ABWApwANQJMAA4BqQAAAkv//wGrAD4BqwANAd0APgFqAD4BagAnAdgAJwHmAD4A5gAZALz/zgGbAD4BXQA+AlUAPgH4AD4B+AA+Af8AJwHGACUBjQA+AZsAPgFtAAgB4AA6AmQABQF1AB0BdQA0AZMAIgI8ACABkwA2AZMAIgF0ACIBdAAgAUgAGwFGABYBkwAiALkANQFsADYCaQA2AZkANgGMACIBPgAVAZkAJAGZACQBkwA2APkADAGZADMBlAAZAmkAMwFWAAABSgAKAaAANgFaAAMBjAAhAeQAIgFu//YAsQAxARQANgGZADMBVgAAAaAANgFaAAMBjAAvAeQAIgFu//YDrgBPAmz/1wJsADQBZf/wA7X/7AJ5/+wCbP/VAan/1QFp/9QB5P/7AX//5AHbABkCbABTAaMANgJEACAD9AASAUwAHwFsAAQCbAAHAmYABwJqAAcCbABTAmwANAFlABADHQA0Ai8AUwEQACwDtQBTAnYAUwJsAFMBqQAsAeQAMQHB/+MCDgAAAh8ADgHbACMCPgAtAmwANAJsADQCPAA0Af8AKgH9ACICpAAxARAATAHqACABEP/jAnYATgH9ACIBkwA2AT4AIgFdAB8BjAAiAUsAFgDoAAoAsf/aAZMAIgGZADQAsQAFAO0ANQDYABQA2AAUALH/wwCwADYAsQAdASMANgJpADYCaQAzAZn/7QGZADYBrAA2AYwAIgHoACEBOwAgALH/7QD5AAwBmQAFAZEAEwGOADMBmQAzAVYAAAE1ABcBNQAXAWYAFwFUAAwBhwAiApAAXwJsAFMCkABfAmwAUwKQAF8CbABTAnkAPAHqADQC3QBfAmwANALdAF8CbAA0At0AXwJsADQC3QBfAmwANALdAF8CbAA0Ai0AXwI8ADQCLQBfAjwANAItAF8CPAA0Ai0AXwI8ADQCLQBfAjwANAIQAF8BZQAQAtcAPAJsADQC7ABfAnYAUALsAF8CdgBTAuwAXwJ2//QC7AAtAnYAHwLsAF8CdgBTAWL/9AEQ/8sBYgAeARD/9QJ4AF8CLwBFAngAXwIvAFMCeABfAi8AUwIYAF8BEABKAhj/+QEQ/+4CGABfARD/7QIYAF8BEP/UA5YAXwO1AFMDlgBfA7UAUwMIAF8CdgBTAwgAXwJ2AFMDCABfAnYAUwMIAF8CdgBTAxEAPAJhADQDEQA8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AhkASQIKAC4CCgAuAgoALgIKAC4CCgAuAgoALgJRAEkCUQAMAlEASQJRAAwBxQBJAcUASQHFAEkBxQA+AcUAPwHFAEkBxQBJAcUAPAHFAEkBxQBJAa8ASQJWAC8CVgAvAlYALwJWAC8CVgAvAmQASQJgAAcCZABJATQAIgE0ACIBNP/5ATT/5wE0AAQBNAAiATT/4wIuACIBNAABATQAIgE0/90A+v+8APr/vAIMAEkCDABJAcMASQHDAEkBwwBJAcMASQHDAEkBwv/uAvQASQKDAEkCgwBJAoMASQKDAEkCgwBJAoMASQKDADACgwAwAoMAMAKDADACgwAwAoMAMAKDADACgwAwAoMAMAKDADACgwAwAwYAMAH3AEkB+QBJAoMAMAINAEkCDQBJAg0ASQINAEkBywAoAcsAKAHLACgBywAoAcsAKAHLACgCYABDAc0ADQHNAA0BzQANAc0ADQHNAA0CYABEAmAARAJgAEQCYABEAmAARAJgAEQCYABEAmAARAJgAEQCYABEAmAARAIMAAADGQAOAxkADgMZAA4DGQAOAxkADgIKAAEB7QAAAe0AAAHtAAAB7QAAAe0AAAHlABsB5QAbAeUAGwHlABsAsQAxAUcAQQMuADICEAAfAmQAMQOWAF8BYgAmBHIACwLi/+oFlwAGAsoABgLhAAMCQgAfAkIAHwIkACsBmAAoAuQAWQMPADwEFAA8Ao//4gOuAAIDXgBfBBwAPAPsAF8CogAAAvUAEAPsAF8CrwAMAvEAFQOVAAYDrAADBFsAXwMRADwDDwA8BTIAPALJAAYCJAAyBL4AKgQ/AEUDfgAGAvYADgIsAA4C3ABfAiwADgNmAA4CvwBfBBgAXwU6ADwDEgA8Ann/1wS4ABICaQARAmkABQI3ADMCXQASAdIANAJpADQBlf+4A5cAUwKC/9ICggAGAmcALwHdACEB3QAhAeQAKwFsAFECeQBPAdkAHAOQADoCrgACA3sACQM7AFMDUAA0A2kAUwIzAAACaAAIA2gAUgIwAAICiQARAvoAEgMFAAUDsQBTAmEANAKLADMD9QA0Al0AEgHkACwEEgAiA8UARAL/ABEC8gAWAfsAFgKCAFMB+wAWAwwAFgJ1AFMDlwBTA/AANAJhADQCYAAzA2oALAJCAKYBxwAIAYYANgHHAF8CjgAbAxAAYAJ1AF8BIv+zAZcAUwIfABUCmgBTAn0AUgKgAD0C3gABAi8AIANRABgCSgALAjQAEwIYABsDRgACBCL//ALn//wDQQALAwkAYQNo//wCEAAfAo4AAAJ4ADIDCQBhAwoAYQKPAGEDDQA9AsoAYQJ2ACYC2gAkAigAYQJeADMCeABfAlsAHAM4//wEg//8AucACQIR/+4C7AAvAt8ALwLsAEoCQwAJAfMACQFXACABV/9vAh8ABQMJADECdgAfAnMAHgHOABgB4AAYAkT/qwHsADQCdgBTA04ANAFcABACWwAqAmEAKwJbADsCbwADA4gALQGfADoCPQADAxYAEQFeAAgCaQAzAbL//wGLAAABlwAdA6wAUwJ1AFMCdQBTAcsALAHLACwCTwAxA7sAMwPGAD0DxgA9A7wAMwO8ADMCeQBPAjYAVgFNAFMCZQBTAe4AAAKpAAABwwAWAoYADwFlABMCdQBPAnUABAOsAE8DrABTAqwAEwIz//ECYf/xAjn/6QKEAA4CIP+FAoT/hQIg/3oCdQBPAmwANAGZADYBbAA2ALEANgJpADYBmQA2AZMANgE7ACAA+QAMAYQAIQHmAAACbQAhAZkANgEa//8BAQADAb0ADAJBANsCTgA2Ac8AFQIsACUCPAArAj8AFAI8ADsCRQA2AgYACQJPADcCRQAxAlIANAGlABECKQArAh8AHQI/ABcCNAA5AkEANAIXABcCPAAtAkEAKwI8AC0CLAAhAiwAPgIsAC4CLAAkAiwACAIsADECLAApAiwAIQIsACUCLAAgAWcAEwFnACcBZwAZAWcAFQFnAAkBZwAhAWcAFQFnABwBZwAYAWcAEgFnABMBZwAnAWcAGQFnABUBZwAJAWcAIQFnABUBZwAcAWcAGAFnABIBvwAnA3QAEwM9ACcDcgAZA2UAFQNoAAkDJQAnA1AAIQNQACcDNgAnBC4AJwFnABMBZwAnAWcAGQFnABUBZwAJAWcAIQFnABUBZwAcAWcAGAFnABIEXgAMAoQANgKEAFgBRgBMAUYAGAGPABQBhQASAmEAFgJcABYBvAA8AcAAkQMtACYCrwBKAjsANAH0ADAC7gCEBBIADwLCAEQDRAA1A0oANgI4AB0D6AAAApoANgNFADUBEQBEAUIAJQE1AGQBxgAdAlwAFgH0AHoB9AA9AfQAPQH0AIEB9AAwAicApgIlACYB9AC2A0QANgLuAKYD6AAAA3MACQLAAAkBEQAmAREARAH0ACMB9AAjAfQAPANJADID6AAAAo8AWAHFACAA+wAwAfQAeAH0AHgB9ACHAfQAPQH0AD0B9ACBAfQAMAInALICPABmA0oANgPoAEMCFwA2AjsAMAI8ADACPAAwAksAJgH4AEABEQBEAREASAHjAC4BEQBFAiUAJgIiAEQA8AA2A0QANgJhABYBcgBAAAD/oQEJAEABUwBEAsIANgD+ADUCIwBDAu4AegERAEQA5wAmAOcAHQFMAFABTAAZAUwAUAFMABkCFwAoAhcAGgPoANMD6ADUAOcAJgDnAB0BQgAJAUIAJQFCACULGAAoB4AAKAE+ACUB9P/9ASD//QNZACkCp//9AcQAPQFEABgBRQAbAQoAOQEKABcA2gAxAa0AMQDaADIBEgAfARIAHQEFAB8BBQAXAX0ACgF9ABYB7QAVAkIAcQG3AAACWAAAAlgAAAJYAAACWAAAAlgAAAJYAAAAAAAAAAAAAAAAAAAAAAAAAlgAAAKDABYDPQA5AksACgNCAFUC1wAVAiwAEgMWAA0CcQA3Av4AGgJeACUC4QABAhUAIQGCAAUB0wACAVgAIwFYACMBfwAHAVgAIwFYACMGKwApAVgAIwFYACMCGAAcAmwAGgLTAEgCGAAcAkcAAAOoACkC5QAdAsQAHQNoACkD6AAyAkUAIAV1AF8DegAyARAATAHGAA8DbAAEAikAGwKPACwCegBfArUAYgJVAF8CggAfAyAAMwQH//IDHgARAmsAAANEACwA+P+DAh4ATgIeAE4CHgBOAh4ATgF/ABQCHgAOAh4AFwIeAAsCHgAaAh4AGgF/ACICHgAmAh4AIgIeACgCHgAmAh4AJgF/ABICHgASAh4AFwIeABICHgATAh4AEgF/ABYCHgAaAh4AIwIeABoCHgAWAh4AJwF/ABQCHgAXAh4ADgIeABoCHgALAh4AGgIeAE4CHgBOAh4ATgIeAE4BfwASAh4AFwIeABICHgATAh4AEgIeABIBfwAiAh4AIgIeACYCHgAmAh4AKAIeACYBfwAWAh4AIwIeABoCHgAWAh4AGgIeACcBfwAlAh4AJwIeAC4CHgAlAh4AJQIeACUBfwAaAh4AGgIeABoCHgAaAh4AGgIeABoCHgBOAh4ATgIeAE4CHgBOAX8AHwIeABcCHgAf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AACwhAAAsewAALLUAACz4AAAtKAAALWQAAC2NAAAtkQAALb8AAC4VAAAukwAALwEAAC9WAAAvbgAAL4EAAC+GAAAvoQAAL8AAAC/oAAAv/AAAMC8AADAvAAAwLwAAMC8AADAvAAAwLwAAMC8AADAvAAAwLwAAMC8AADAvAAAwLwAAMC8AADAvAAAxXQAAMZEAADGXAAAxmwAAMd0AADIZAAAyTAAAMlUAADJbAAAyYQAAMmcAADKIAAAysAAAMtcAADL5AAAzKAAAM0MAADNMAAAzVQAAM1sAADNhAAAzigAAM7EAADPUAAAz+AAAND4AADSCAAA0ogAANMAAADTmAAA1CgAANTUAADVfAAA1kAAANb8AADYwAAA2oAAANqQAADaoAAA20AAANvYAADchAAA3UgAAN1sAADdhAAA3nQAAN6MAADfWAAA4AwAAOGIAADi+AAA4xwAAOM8AADjyAAA5FgAAOSsAADm0AAA6CAAAOjsAADpsAAA6kAAAOrQAADraAAA7GgAAOzIAADtJAAA7ggAAO6wAADvRAAA79AAAO/oAADwAAAA8HAAAPDYAADxTAAA8cQAAPI8AADyvAAA8yQAAPOIAADz9AAA9FwAAPS8AAD1GAAA9gAAAPawAAD4RAAA+ZAAAPmoAAD5wAAA+hgAAPpwAAD6gAAA+twAAPtIAAD7xAAA/DQAAPygAAD9DAAA/XQAAP38AAD+fAAA/wwAAP+cAAEACAABABgAAQGAAAECgAABBAgAAQUQAAEFIAABBUQAAQVcAAEGOAABBtQAAQfQAAEIuAABCXAAAQn8AAEKYAABCsgAAQtEAAELxAABDFAAAQzYAAEM6AABDQwAAQ0kAAENSAABDWAAAQ1wAAENgAABDaQAAQ28AAEOZAABDnQAAQ6YAAEOsAABDtQAAQ7sAAEPEAABDygAAQ+8AAEQVAABEHgAARCQAAEQtAABEMwAARDwAAERCAABERgAAREoAAERTAABEWQAARGIAAERoAABEcQAARHcAAESAAABEhgAARI8AAESVAABEngAARKQAAES5AABEzQAARNYAAETcAABE4gAARQsAAEU0AABFWwAARXgAAEWTAABFsQAARbUAAEXqAABGHgAARmEAAEaTAABGvwAARuoAAEcrAABHTwAAR3sAAEeoAABHzwAAR/MAAEgRAABILgAASGAAAEhkAABIvgAASPwAAEkCAABJCAAASREAAEkXAABJIAAASSYAAEkvAABJNQAAST4AAElEAABJTQAASVMAAEleAABJZgAASW8AAEl1AABJfgAASYQAAEmNAABJkwAASZwAAEmiAABJrQAASbUAAEm7AABJwQAAScoAAEnQAABJ2QAASd8AAEnoAABJ7gAASfcAAEn9AABKBgAASgwAAEoVAABKGwAASiYAAEouAABKNwAASj0AAEpDAABKSQAASk8AAEpVAABKXgAASmQAAEptAABKcwAASnwAAEqCAABKiwAASpEAAEqaAABKoAAASqsAAEqzAABKvAAASsIAAErLAABK0QAAStoAAErgAABK6QAASu8AAEr1AABK+wAASwEAAEsHAABLEAAASxYAAEsfAABLJQAASy4AAEs0AABLPQAAS0MAAEtMAABLUgAAS1gAAEteAABLZAAAS20AAEt2AABLfAAAS4UAAEuLAABLkQAAS7UAAEvdAABMFQAATEQAAExoAABMjQAATMYAAE0AAABNIgAATTwAAE1CAABNSAAATY0AAE3NAABN0QAAThAAAE4wAABOVQAATnkAAE6qAABO5AAATugAAE8XAABPOAAAT3gAAE+AAABPlwAAT5sAAE/NAABP7gAAUCUAAFBOAABQkAAAUKkAAFDHAABQ+wAAUSsAAFFAAABRjwAAUccAAFHtAABR8QAAUfUAAFIrAABSVQAAUocAAFLMAABS8AAAUx0AAFNIAABTTAAAU4IAAFOuAABT0gAAVAsAAFQnAABUTgAAVHsAAFSoAABU5gAAVQMAAFUiAABVJgAAVU4AAFV1AABVpwAAVd0AAFYDAABWKAAAVlIAAFaCAABWjwAAVpUAAFaxAABWtQAAVsAAAFbIAABW0AAAVtYAAFbcAABW4gAAVugAAFbuAABW9AAAVv0AAFcDAABXDAAAVxIAAFcbAABXIQAAVyoAAFcwAABXOQAAVz8AAFdIAABXTgAAV1cAAFddAABXZgAAV2wAAFd1AABXewAAV4EAAFeHAABXkAAAV5YAAFfIAABYJgAAWC8AAFg1AABYPgAAWEcAAFhNAABYUwAAWF4AAFhmAABYbwAAWHUAAFh7AABYgQAAWIcAAFiQAABYlgAAWMIAAFjtAABY9gAAWPwAAFkFAABZCwAAWRQAAFkaAABZIwAAWSkAAFkyAABZOAAAWUEAAFlHAABZUAAAWVYAAFlfAABZZQAAWW4AAFl0AABZfQAAWYMAAFmMAABZkgAAWZsAAFmhAABZqgAAWbAAAFnYAABZ/wAAWggAAFoRAABaOQAAWpgAAFrGAABa9AAAWvoAAFr+AABbBwAAWw0AAFsTAABbGQAAWyIAAFsoAABbMQAAWzcAAFtAAABbRgAAW0wAAFtSAABbWwAAW2EAAFuKAABb1gAAXAYAAFxBAABcfQAAXKgAAFzdAABdDwAAXSYAAF1GAABdhAAAXawAAF3KAABd5wAAXhcAAF47AABePwAAXmcAAF6oAABeygAAXvcAAF88AABfhQAAX6wAAF/dAABf/AAAYCkAAGAxAABgaQAAYHEAAGDFAABg6AAAYSEAAGFaAABhrgAAYbQAAGHcAABh4AAAYgwAAGItAABifQAAYoEAAGKqAABi1AAAYxAAAGMYAABjSgAAY4wAAGOuAABjsgAAY8gAAGPwAABkFQAAZCwAAGRZAABkYQAAZIoAAGTRAABlCgAAZToAAGVTAABlVwAAZcQAAGXzAABl9wAAZf8AAGYoAABmUgAAZnwAAGayAABmywAAZuQAAGcEAABnDQAAZ0QAAGdxAABnqgAAZ80AAGgHAABoDwAAaDIAAGhkAABoiQAAaLsAAGjDAABoywAAaNMAAGjmAABpDAAAaTcAAGk7AABpeAAAaZ0AAGmjAABpwQAAaeQAAGnqAABp7gAAahoAAGpdAABqYQAAapEAAGqZAABqqAAAau0AAGscAABrSwAAa6kAAGwmAABsngAAbPcAAG1GAABtoAAAbgUAAG5HAABuYgAAbo0AAG6mAABu4AAAbygAAG8xAABvOgAAb0MAAG9MAABvVQAAb14AAG9nAABvcAAAb3kAAG99AABvgQAAb4UAAG+JAABvoAAAb7cAAG/WAABv3AAAb+QAAG/sAABv/wAAcAcAAHALAABwDwAAcBMAAHAbAABwIwAAcCgAAHAtAABwQQAAcEwAAHBUAABwXAAAcGQAAHBsAABwdAAAcIIAAHCHAABwkAAAcJkAAHCiAABwqwAAcLQAAHDHAABw3AAAcPEAAHEGAABxFwAAcSgAAHE7AABxQwAAcUsAAHFPAABxYQAAcXMAAHF9AABxhwAAcY8AAHGYAABxoAAAcagAAHGvAABxwAAAcdMAAHHlAABx9QAAchAAAHIpAAByQAAAckQAAHJVAAByawAAcm8AAHJzAAByfAAAcoUAAHKJAAByxAAAcs4AAHLXAABy2wAAczcAAHNkAABzhwAAc7AAAHPcAAB0CQAAdCkAAHRcAAB0jQAAdLoAAHTZAAB1NAAAdW0AAHVxAAB1dQAAdXkAAHV9AAB1gQAAdYUAAHWJAAB1jQAAdbUAAHXbAAB2CgAAdg4AAHYUAAB2GgAAdh4AAHYiAAB2JgAAdioAAHZFAAB2ZAAAdrIAAHbdAAB3AAAAdxcAAHc5AAB3TgAAd34AAHeXAAB3sAAAd8cAAHffAAB3+wAAeBMAAHgxAAB4VAAAeF4AAHhoAAB4cgAAeHoAAHimAAB4vAAAeNEAAHjvAAB5EAAAeTIAAHlBAAB5WQAAeWMAAHltAAB5dwAAeXwAAHmnAAB5qwAAec8AAHn6AAB6JAAAejQAAHpKAAB6WgAAel4AAHp8AAB6pQAAeq4AAHq3AAB6wAAAevgAAHsBAAB7CgAAexMAAHscAAB7JQAAey4AAHs3AAB7QAAAe0kAAHtSAAB7WwAAe3sAAHuEAAB7jQAAe5YAAHufAAB7qAAAe7EAAHu6AAB7wwAAe8wAAHvVAAB73gAAe+cAAHvwAAB7+QAAfAIAAHwLAAB8FAAAfB0AAHwmAAB8LwAAfDgAAHxBAAB8SgAAfFMAAHxcAAB8ZQAAfG4AAHx3AAB8gAAAfIkAAHySAAB8mwAAfKQAAHytAAB8tgAAfL8AAHzIAAB80QAAfNkAAHzhAAB86QAAfPEAAHz5AAB9AQAAfQkAAH0RAAB9GQAAfVoAAH2zAAB+EAAAflgAAH6sAAB+9AAAf0YAAH+NAAB/vgAAgAEAAIA/AACAiAAAgJAAAICZAACAxAAAgS8AAIFNAACBbQAAgbkAAIHgAACCFgAAgmMAAILFAACDBQAAg2UAAIOQAACDrQAAg/IAAIQrAACEegAAhLkAAIT1AACFOAAAhV8AAIWFAACFqQAAhhYAAIZ2AACGxwAAhv0AAIc7AACHeAAAh7IAAIfdAACIDAAAiEYAAIiSAACIxgAAiM8AAIjYAACI4QAAiOoAAIjzAACI/AAAiQUAAIkOAACJFwAAiSAAAIkpAACJMgAAiTsAAIlEAACJTQAAiVYAAIlfAACJaAAAiXEAAIl6AACJgwAAiYwAAImVAACJngAAiacAAImwAACJuQAAicIAAInLAACJ1AAAid0AAInmAACJ7wAAifgAAIoBAACKCgAAihMAAIocAACKIgAAiigAAIouAACKNwAAikAAAIpLAACKUwAAilwAAIpiAACKaAAAim4AAIp3AACKgAAAiq0AAIsBAACLBwAAiw0AAIsWAACLHAAAiyUAAIsrAACLMQAAizcAAIs9AACLRgAAi1EAAItZAACLYgAAi2sAAIt0AACLegAAi4MAAIuMAACLkgAAi5gAAIuhAACLqgAAi7AAAIu2AACLvAAAi8IAAIvIAACL0QAAi9oAAIvgAACL6QAAi/IAAIv4AACL/gAAjAQAAIwNAACMEwAAjBkAAIwkAACMLwAAjDgAAIxBAACMRwAAjFAAAIxZAACMXwAAjGUAAIxrAACMdAAAjHoAAIyAAACMhgAAjI8AAIyYAACMngAAjKQAAIytAACMswAAjLwAAIzCAACMywAAjNEAAIzaAACM4AAAjOkAAIzvAACM+AAAjP4AAI0HAACNDQAAjRMAAI0ZAACNJAAAjSwAAI01AACNPgAAjUcAAI1NAACNUwAAjVkAAI1iAACNaAAAjXEAAI13AACNggAAjYoAAI2TAACNmwAAjaEAAI2nAACNsAAAjbYAAI28AACNxQAAjc4AAI3UAACN3QAAjeMAAI3pAACN8gAAjfsAAI4BAACOCgAAjhAAAI4ZAACOHwAAjiUAAI4rAACONAAAjjoAAI5AAACORgAAjk8AAI5VAACOXgAAjmQAAI5tAACOcwAAjnwAAI6CAACOiAAAjo4AAI6UAACOmgAAjqAAAI6oAACOrgAAjrQAAI66AACOwwAAjskAAI7PAACO1QAAjtsAAI7hAACO5wAAju0AAI7zAACO/AAAjwUAAI8OAACPFwAAjyAAAI8pAACPMgAAjzsAAI9BAACPRwAAj00AAI9TAACPWQAAj18AAI9oAACPcQAAj3sAAI+FAACPjwAAj5kAAI+fAACPpQAAj6sAAI+xAACPtwAAj70AAI/DAACPyQAAj9IAAI/bAACP5QAAj+8AAI/5AACQAwAAkA0AAJAXAACQHQAAkCMAAJApAACQLwAAkDUAAJA7AACQQQAAkEcAAJBQAACQWQAAkGMAAJBtAACQdwAAkIEAAJCLAACQlQAAkJsAAJChAACQpwAAkK0AAJCzAACQuQAAkMIAAJDLAACQ1QAAkN8AAJDpAACQ8wAAkPkAAJD/AACRBQAAkQsAAJERAACRFwAAkR0AAJEjAACRLAAAkTYAAJFAAACRSQAAkU8AAJFVAACRWwAAkWEAAJFnAACRbQAAkXMAAJF5AACRggAAkYsAAJGVAACRnwAAkakAAJGzAACRvQAAkcYAAJHMAACR0gAAkdgAAJHeAACR5AAAkeoAAJHwAACR9gAAkfwAAJICAACSCAAAkg4AAJIUAACSGgAAkiIAAJIqAACSMQAAkjgAAJI/AACSRgAAkk0AAJJUAACSXwAAkmoAAJJ1AACSgAAAkosAAJKWAACSoQAAkqwAAJK0AACSvAAAksQAAJLMAACS1AAAktwAAJLkAACS7AAAkvcAAJMCAACTDgAAkxoAAJMmAACTMgAAkz4AAJNKAACTUgAAk1oAAJNhAACTaAAAk28AAJN2AACTfQAAk4QAAJOPAACTmgAAk6YAAJOyAACTvgAAk8oAAJPWAACT4gAAk+gAAJPuAACT9QAAk/sAAJQCAACUCAAAlA8AAJQYAACUIQAAlCoAAJQzAACUOQAAlFMAAJR1AACUeQAAlH0AAJSzAACUuwAAlMEAAJTJAACUzwAAlNcAAJTgAACU6QAAlPIAAJT7AACVAQAAlUcAAJWNAACVvAAAlcIAAJXIAACVzgAAldQAAJXaAACV4AAAlekAAJXyAACV+wAAlgQAAJZIAACWjAAAlrsAAJbBAACWxwAAls0AAJbTAACW2QAAlt8AAJblAACW6wAAlvQAAJb9AACXBwAAlxEAAJcaAACXTQAAl4UAAJeaAACXoQAAl6cAAJevAACXtQAAl70AAJfGAACXzwAAl9gAAJfhAACX5wAAl/0AAJgWAACYJAAAmDsAAJhUAACYbQAAmHsAAJiBAACYnAAAmK0AAJi+AACY0AAAmQMAAJk2AACZNgAAmVEAAJlVAACZmQAAmdEAAJoFAACaFgAAmiYAAJo6AACabwAAmo0AAJq+AACa7wAAmvcAAJr/AACbBwAAmw8AAJsXAACbQQAAm38AAJvLAACcFwAAnE0AAJylAACc6AAAnQcAAJ0oAACdggAAnbkAAJ31AACeKQAAnlYAAJ6XAACezQAAnvIAAJ75AACfOAAAn58AAJ+0AACgCAAAoIMAAKCHAACgpgAAoMIAAKDtAAChHAAAoUsAAKGcAAChygAAoc4AAKHwAACiDgAAoi4AAKJIAACiYgAAopcAAKKbAACi3AAAoxkAAKNXAACjaQAAo3oAAKOhAACjrgAAo8gAAKPgAACj9wAApBAAAKQdAACkKgAApEIAAKRaAACkYgAApG4AAKR6AACkggAApJwAAKSxAACkvAAApMoAAKT0AAClHgAApTIAAKVGAAClXQAApXQAAKV6AAClgAAApYYAAKWMAAClkgAApZgAAKWeAAClpAAApaoAAKWwAACltgAApbwAAKXCAAClyAAApc4AAKXUAACl2gAApeAAAKXmAACl7AAApfIAAKX4AACl/gAApgQAAKYKAACmEAAAphYAAKYcAACmIgAApigAAKYuAACmNAAApmgAAKZsAACmpAAApu4AAKdGAACnoAAAp/YAAKggAACoUQAAqH8AAKizAACo3gAAqQMAAKkoAACpWAAAqXsAAKmqAACpwwAAqd0AAKonAACqcgAAqrEAAKrvAACrRQAAq5sAAKvzAACsSwAArIkAAKy/AACs4wAArSEAAK1MAACtoAAArbsAAK3XAACuOwAArokAAK7HAACvHgAArzUAAK9LAACvbQAAr48AAK+yAACv2wAAr/EAALAZAACwWwAAsGMAALCKAACwsQAAsNwAALD0AACxFwAAsSAAALFMAACxdQAAscUAALHLAACyFQAAskoAALJwAACymwAAss4AALLWAACy9wAAsxYAALM8AACzUQAAs2gAALOXAACznQAAs6MAALPIAACz9QAAtEkAALR2AAC0rQAAtMgAALTvAAC1GQAAtUwAALV1AAC1mQAAtbYAALXkAAC2EQAAtjoAALZmAAC2lwAAtsMAALbLAAC20wAAtwUAALcvAAC3UAAAt2IAALd/AAC3qQAAt9gAALf2AAC4HwAAuEkAALh6AAC4mwAAuJ8AALjiAAC5FwAAuR8AALknAAC5VgAAuZcAALnAAAC5xAAAucoAALnQAAC51gAAudwAALniAAC56AAAuf4AALoCAAC6BgAAugoAALpgAAC6ZAAAuqQAALqoAAC63wAAuuoAALrwAAC7CQAAuyIAALtHAAC7bwAAu5wAALukAAC73wAAvAAAALwjAAC8LAAAvDAAALw4AAC8VgAAvGsAALx0AAC8fQAAvIMAALysAAC8zQAAvPcAAL0yAAC9WwAAvYIAAL3PAAC94QAAvgkAAL5jAAC+xAAAvzUAAL+IAAC/5AAAwDkAAMA9AADAYAAAwIEAAMCpAADAuwAAwM0AAMD5AADBQQAAwUcAAMGGAADB5gAAwjAAAMJ0AADCvwAAwtkAAMMBAADDIQAAw1gAAMOJAADDvAAAw9AAAMP+AADEKgAAxFEAAMSzAADEywAAxRQAAMVPAADFmgAAxcYAAMYPAADGPAAAxmIAAMaUAADGnAAAxqcAAMbXAADHAQAAxyEAAMdPAADHdwAAx58AAMf0AADIFQAAyEUAAMh0AADIogAAyKYAAMiqAADIsgAAyNgAAMj9AADJAwAAyQkAAMkPAADJFQAAyRsAAMkhAADJJwAAyS8AAMk3AADJPQAAyUMAAMmTAADKHQAAyjoAAMpAAADKSAAAylAAAMpWAADKXAAAymQAAMpqAADKcgAAyn8AAMqHAADKpgAAyqwAAMrWAADK+QAAyv8AAMsHAADLDQAAyxUAAMsbAADLMgAAy1IAAMtaAADLXgAAy3MAAMt5AADLgQAAy4kAAMuRAADLlwAAy6AAAMumAADLrgAAy7QAAMvGAADL6wAAy/MAAMv7AADMAQAAzAcAAMwdAADMPgAAzEYAAMxbAADMYQAAzGkAAMxxAADMdwAAzH8AAMyFAADMiwAAzJMAAMyZAADMoQAAzLgAAMzAAADM1wAAzN0AAMztAADM8wAAzPwAAM0CAADNCwAAzSMAAM1BAADNWwAAzWEAAM1pAADNbwAAzZQAAM2cAADNugAAzcAAAM3IAADN0AAAzdYAAM3cAADN5QAAze4AAM4hAADOKQAAzjEAAM6PAADOqgAAzsYAAM7pAADPCAAAzw4AAM8WAADPHAAAz0cAAM9NAADPVQAAz1sAAM9jAADPaQAAz6UAAM+2AADPzgAAz9YAAM/cAADP4gAAz/gAAM/+AADQBgAA0A4AANAUAADQGgAA0CMAANArAADQUgAA0FsAANBjAADQeQAA0J8AANClAADQrgAA0LQAANC6AADQzwAA0OMAANDpAADQ8QAA0PcAAND9AADRFAAA0RoAANEiAADRKwAA0TQAANFFAADRTwAA0VUAANFbAADRYwAA0XcAANGnAADRxwAA0foAANIuAADScAAA0qwAANLyAADS+AAA0xIAANM0AADTWgAA05c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AAQ4QAAEOQQABDn8AAQ6uAAEPSgABD3QAAQ+bAAEP0wABD9cAARAaAAEQggABEKsAARDLAAERHAABETkAARFNAAERYQABEXYAARGLAAERnQABEa8AARHCAAER1AABEeYAARH4AAESCgABEh0AARIxAAESTgABEmIAARJ1AAESiAABEp0AARKwAAESxgABEtwAARLxAAETBAABExkAARMsAAETQQABE1YAARNsAAETewABE4sAAROdAAETsAABE8YAARPZAAET7gABFAQAARQaAAEUMAABFEAAARRRAAEUYwABFH4AARSQAAEUogABFLIAARTDAAEU1gABFOcAART8AAEVDwABFR8AARUuAAEVQAABFVEAARVjAAEVdgABFYcAARWZAAEVrQABFcIAARXXAAEV7AABFf0AARYPAAEWIgABFjQAARZGAAEWWAABFnQAARaRAAEWrwABFswAARbeAAEW8gABFwUAARcaAAEXLwABF0QAARdWAAEXagABF30AAReRAAEXpAABF7kAARfKAAEX3QABF/IAARgHAAEYHQABGDMAARhEAAEYVQABGGgAARh6AAEYjAABGJ4AARiwAAEYwwABGNcAARj1AAEZCgABGR8AARkzAAEZRwABGVwAARlxAAEZgwABGZYAARmqAAEZvQABGdEAARnmAAEZ9wABGgoAARofAAEaNAABGkkAARpfAAEacAABGoEAARqUAAEapgABGrgAARrLAAEa3QABGu8AARsDAAEbIAABGzQAARtIAAEbWgABG24AARuAAAEblAABG6kAARu9AAEb0QABG+UAARv6AAEcDwABHBkAARxnAAEcbwABHHQAARx4AAEcfQABHIIAARyHAAEcjAABHJEAARyWAAEcmwABHKAAARylAAEctAABHMQAARzaAAEc/AABHSIAAR08AAEdQAABHUQAAR1IAAEdTAABHVQAAR1cAAEdbwABHYIAAR2TAAEdpAABHboAAR3XAAEd8wABHgoAAR4SAAEeLQABHkcAAR5cAAEeZAABHmwAAR5wAAEedAABHnwAAR6XAAEetwABHr8AAR7HAAEezwABHtcAAR7fAAEe5wABHvYAAR77AAEfAwABHwsAAR8bAAEfJAABHzQAAR9LAAEfZgABH3sAAR+bAAEfqgABH8YAAR/OAAEf0wABH9cAAR/yAAEf9wABH/8AASAYAAEgRAABIH0AASC1AAEgywABINwAASJPAAEibAABInMAASKZAAEipwABIsQAASLhAAEjHgABIyUAASMpAAEjQQABI3MAASOTAAEjrAABI7QAASPDAAEjywABI+wAASQGAAEkGgABJCYAASQ5AAEkVgABJJQAASSfAAEkrAABJLMAASS6AAElAwABJU0AASVpAAEldQABJYgAASW6AAElzQABJegAASX7AAEmFgABJkAAASZcAAEmYgABJpoAASbTAAEm8AABJxcAAScwAAEnbgABJ4EAASecAAEnqQABJ70AASfbAAEoDgABKBYAASgfAAEoKAABKDEAASg6AAEoQwABKEwAAShaAAEoYwABKGwAASh6AAEogwABKIwAASiVAAEongABKKYAASirAAEoxQABKQEAASkKAAEpEwABKRwAASklAAEpLgABKTcAASlAAAEpSQABKVIAASlbAAEpZAABKW0AASl2AAEpfwABKYgAASmRAAEpmgABKaMAASmsAAEptQABKb4AASnxAAEp+gABKgMAASoMAAEqFQABKh4AASonAAEqMAABKjkAASpCAAEqSwABKksAASpUAAEqXAABKmQAASpsAAEqdAABKnwAASqEAAEquAABKt4AASrmAAErBAABKx4AASsxAAErRQABK1kAASt5AAErkQABK6oAASvBAAEr3QABK/sAASwIAAEsIgABLCYAASwrAAEsMwABLDgAASw9AAEsYwABLIAAASyWAAEsqwABLMcAASzoAAEs8QABLPoAAS0DAAEtDAABLRUAAS0eAAEtJwABLTAAAS1IAAEtZwABLY0AAS2WAAEtsQABLcwAAS31AAEuBQABLlMAAS5cAAEuZQABLm4AAS53AAEugAABLokAAS6SAAEumwABLqQAAS6tAAEutgABLr8AAS7IAAEu0QABLtcAAS7gAAEu6QABLvIAAS77AAEvBAABLw0AAS8WAAEvHwABLygAAS8xAAEvOgABL0MAAS9MAAEvVQABL14AAS9nAAEvcAABL3kAAS+CAAEviwABL6YAAS+uAAEv+QABMCoAATBQAAEwYwABMIQAATDmAAEw8AABMS0AATFUAAExngABMbYAATHDAAEx2wABMfsAATIDAAEyCwABMiMAATJCAAEySgABMlIAATJsAAEyhwABMqIAATK9AAEy1gABMvAAATMLAAEzJgABM0AAATNZAAEzYQABM2kAATN8AAEzhAABM5QAAEAAAyuAMoAGAEYABUAAgCYAKoAiwAAAYkNbQAIAAgAAAARANIAAwABBAkAAABeAAAAAwABBAkAAQAaAF4AAwABBAkAAgAOAHgAAwABBAkAAwA0AIYAAwABBAkABAAgALoAAwABBAkABQCQANoAAwABBAkABgAeAWoAAwABBAkABwBEAYgAAwABBAkACAAqAcwAAwABBAkACQAoAfYAAwABBAkACgBCAh4AAwABBAkACwA+AmAAAwABBAkADAA8Ap4AAwABBAkADQKWAtoAAwABBAkADgA0BXAAAwABBAkAEAASBaQAAwABBAkAEQAMBbYAQwBvAHAAeQByAGkAZwBoAHQAIAAyADAAMQA1ACAARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAQQBsAGwAIABSAGkAZwBoAHQAcwAgAFIAZQBzAGUAcgB2AGUAZAAuAE4AbwB0AG8AIABTAGEAbgBzACAATQBlAGQAUgBlAGcAdQBsAGEAcgAyAC4AMAAwADAAOwBHAE8ATwBHADsATgBvAHQAbwBTAGEAbgBzAC0ATQBlAGQAaQB1AG0ATgBvAHQAbwAgAFMAYQBuAHMAIABNAGUAZABpAHUAbQBWAGUAcgBzAGkAbwBuACAAMgAuADAAMAAwADsARwBPAE8ARwA7AG4AbwB0AG8ALQBzAG8AdQByAGMAZQA6ADIAMAAxADcAMAA5ADEANQA6ADkAMABlAGYAOQA5ADMAMwA4ADcAYwAwADsAIAB0AHQAZgBhAHUAdABvAGgAaQBuAHQAIAAoAHYAMQAuADcAKQBOAG8AdABvAFMAYQBuAHMALQBNAGUAZABpAHUAbQBOAG8AdABvACAAaQBzACAAYQAgAHQAcgBhAGQAZQBtAGEAcgBrACAAbwBmACAARwBvAG8AZwBsAGUAIABJAG4AYwAuAE0AbwBuAG8AdAB5AHAAZQAgAEkAbQBhAGcAaQBuAGcAIABJAG4AYwAuAE0AbwBuAG8AdAB5AHAAZQAgAEQAZQBzAGkAZwBuACAAVABlAGEAbQBEAGUAcwBpAGcAbgBlAGQAIABiAHkAIABNAG8AbgBvAHQAeQBwAGUAIABkAGUAcwBpAGcAbgAgAHQAZQBhAG0ALgBoAHQAdABwADoALwAvAHcAdwB3AC4AZwBvAG8AZwBsAGUALgBjAG8AbQAvAGcAZQB0AC8AbgBvAHQAbwAvAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBtAG8AbgBvAHQAeQBwAGUALgBjAG8AbQAvAHMAdAB1AGQAaQBvAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADEALgAxAC4AIABUAGgAaQBzACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAGkAcwAgAGQAaQBzAHQAcgBpAGIAdQB0AGUAZAAgAG8AbgAgAGEAbgAgACIAQQBTACAASQBTACIAIABCAEEAUwBJAFMALAAgAFcASQBUAEgATwBVAFQAIABXAEEAUgBSAEEATgBUAEkARQBTACAATwBSACAAQwBPAE4ARABJAFQASQBPAE4AUwAgAE8ARgAgAEEATgBZACAASwBJAE4ARAAsACAAZQBpAHQAaABlAHIAIABlAHgAcAByAGUAcwBzACAAbwByACAAaQBtAHAAbABpAGUAZAAuACAAUwBlAGUAIAB0AGgAZQAgAFMASQBMACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACAAZgBvAHIAIAB0AGgAZQAgAHMAcABlAGMAaQBmAGkAYwAgAGwAYQBuAGcAdQBhAGcAZQAsACAAcABlAHIAbQBpAHMAcwBpAG8AbgBzACAAYQBuAGQAIABsAGkAbQBpAHQAYQB0AGkAbwBuAHMAIABnAG8AdgBlAHIAbgBpAG4AZwAgAHkAbwB1AHIAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlAC4AaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAE4AbwB0AG8AIABTAGEAbgBzAE0AZQBkAGkAdQBtAAIAAAAAAAD/nAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAMrgAAAQIBAwADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEBBACjAIQAhQC9AJYA6ACGAI4AiwCdAKkApAEFAIoBBgCDAJMBBwEIAI0BCQCIAMMA3gEKAJ4AqgD1APQA9gCiAK0AyQDHAK4AYgBjAJAAZADLAGUAyADKAM8AzADNAM4A6QBmANMA0ADRAK8AZwDwAJEA1gDUANUAaADrAO0AiQBqAGkAawBtAGwAbgCgAG8AcQBwAHIAcwB1AHQAdgB3AOoAeAB6AHkAewB9AHwAuAChAH8AfgCAAIEA7ADuALoBCwEMAQ0BDgEPARAA/QD+AREBEgETARQA/wEAARUBFgEXAQEBGAEZARoBGwEcAR0BHgEfASABIQEiASMA+AD5ASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMA+gE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgDiAOMBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEAsACxAVIBUwFUAVUBVgFXAVgBWQFaAVsA+wD8AOQA5QFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxALsBcgFzAXQBdQDmAOcBdgCmAXcBeAF5AXoBewF8AX0BfgDYAOEA2gDbANwA3QDgANkA3wF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwCbAbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AgACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwCyALMCLAItALYAtwDEAi4AtAC1AMUAggDCAIcAqwDGAi8CMAC+AL8CMQC8AjIA9wIzAjQCNQI2AjcCOACMAjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA9QD1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5APlA+YD5wPoA+kD6gPrA+wD7QPuA+8D8APxA/ID8wP0A/UD9gP3A/gD+QP6A/sD/AP9A/4D/wQABAEEAgQDBAQEBQQGBAcECAQJBAoECwQMBA0EDgQPBBAEEQQSBBMEFAQVBBYEFwQYBBkEGgQbBBwEHQQeBB8EIAQhBCIEIwQkBCUEJgQnBCgEKQQqBCsELAQtBC4ELwQwBDEEMgQzBDQENQQ2BDcEOAQ5BDoEOwQ8BD0EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwETQROBE8EUARRBFIEUwRUBFUEVgRXBFgEWQRaBFsEXARdBF4EXwRgBGEEYgRjBGQEZQRmBGcEaARpBGoEawRsBG0EbgRvBHAEcQRyBHMEdAR1BHYEdwR4BHkEegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSHBIgEiQSKBIsEjASNBI4EjwSQBJEEkgSTBJQElQSWBJcEmASZBJoEmwScBJ0EngSfBKAEoQSiBKMEpASlBKYEpwSoBKkEqgSrBKwErQSuBK8EsASxBLIEswS0BLUEtgS3BLgEuQS6BLsEvAS9BL4EvwTABMEEwgTDBMQExQTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNYE1wTYBNkE2gTbBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFKAUpBSoFKwUsBS0FLgUvBTAFMQUyBTMFNAU1BTYFNwU4BTkFOgU7BTwFPQU+BT8FQAVBBUIFQwVEBUUFRgVHBUgFSQVKBUsFTAVNBU4FTwVQBVEFUgVTBVQFVQVWBVcFWAVZBVoFWwVcBV0FXgVfBWAFYQViBWMFZAVlBWYFZwVoBWkFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWbBZwFnQWeBZ8FoAWhBaIFowWkBaUFpgWnBagFqQWqBasFrAWtBa4FrwWwBbEFsgWzBbQFtQW2BbcFuAW5BboFuwW8Bb0FvgW/BcAFwQXCBcMFxAXFBcYFxwXIBckFygXLBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBdsF3AXdBd4F3wXgBeEF4gXjBeQF5QXmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfkF+gX7BfwF/QX+Bf8GAAYBBgIGAwYEBgUGBgYHBggGCQYKBgsGDAYNBg4GDwYQBhEGEgYTBhQGFQYWBhcGGAYZBhoGGwYcBh0GHgYfBiAGIQYiBiMGJAYlBiYGJwYoBikGKgYrBiwGLQYuBi8GMAYxBjIGMwY0BjUGNgY3BjgGOQY6BjsGPAY9Bj4GPwZABkEGQgZDBkQGRQZGBkcGSAZJBkoGSwZMBk0GTgZPBlAGUQZSBlMGVAZVBlYGVwZYBlkGWgZbBlwGXQZeBl8GYAZhBmIGYwZkBmUGZgZnBmgGaQZqBmsGbAZtBm4GbwZwBnEGcgZzBnQGdQZ2BncGeAZ5BnoGewZ8Bn0GfgZ/BoAGgQaCBoMGhAaFBoYGhwaIBokGigaLBowGjQaOBo8GkAaRBpIGkwaUBpUGlgaXBpgGmQaaBpsGnAadBp4GnwagBqEGogajBqQGpQamBqcGqAapBqoGqwasBq0GrgavBrAGsQayBrMGtAa1BrYGtwa4BrkGuga7BrwGvQa+Br8GwAbBBsIGwwbEBsUGxgbHBsgGyQbKBssGzAbNBs4GzwbQBtEG0gbTBtQG1QbWBtcG2AbZBtoG2wbcBt0G3gbfBuAG4QbiBuMG5AblBuYG5wboBukG6gbrBuwG7QbuBu8G8AbxBvIG8wb0BvUG9gb3BvgG+Qb6BvsG/Ab9Bv4G/wcABwEHAgcDBwQHBQcGBwcHCAcJBwoHCwcMBw0HDgcPBxAHEQcSBxMHFAcVBxYHFwcYBxkHGgcbBxwHHQceBx8HIAchByIHIwckByUHJgcnBygHKQcqBysHLActBy4HLwcwBzEHMgczBzQHNQc2BzcHOAc5BzoHOwc8Bz0HPgc/B0AHQQdCB0MHRAdFB0YHRwdIB0kHSgdLB0wHTQdOB08HUAdRB1IHUwdUB1UHVgdXB1gHWQdaB1sHXAddB14HXwdgB2EHYgdjB2QHZQdmB2cHaAdpB2oHawdsB20HbgdvB3AHcQdyB3MHdAd1B3YHdwd4B3kHegd7B3wHfQd+B38HgAeBB4IHgweEB4UHhgeHB4gHiQeKB4sHjAeNB44HjweQB5EHkgeTB5QHlQeWB5cHmAeZB5oHmwecB50HngefB6AHoQeiB6MHpAelB6YHpweoB6kHqgerB6wHrQeuB68HsAexB7IHswe0B7UHtge3B7gHuQe6B7sHvAe9B74HvwfAB8EHwgfDB8QHxQfGB8cHyAfJB8oHywfMB80HzgfPB9AH0QfSB9MH1AfVB9YH1wfYB9kH2gfbB9wH3QfeB98H4AfhB+IH4wfkB+UH5gfnB+gH6QfqB+sH7AftB+4H7wfwB/EH8gfzB/QH9Qf2B/cH+Af5B/oH+wf8B/0H/gf/CAAIAQgCCAMIBAgFCAYIBwgICAkICggLCAwIDQgOCA8IEAgRCBIIEwgUCBUIFggXCBgIGQgaCBsIHAgdCB4IHwggCCEIIggjCCQIJQgmCCcIKAgpCCoIKwgsCC0ILggvCDAIMQgyCDMINAg1CDYINwg4CDkIOgg7CDwIPQg+CD8IQAhBCEIA1whDCEQIRQhGCEcISAhJCEoISwhMCE0ITghPCFAIUQhSCFMIVAhVCFYIVwhYCFkIWghbCFwIXQheCF8IYAhhCGIIYwhkCGUIZghnCGgIaQhqCGsIbAhtCG4IbwhwCHEIcghzCHQIdQh2CHcIeAh5CHoIewh8CH0Ifgh/CIAIgQiCCIMIhAiFCIYIhwiICIkIigiLCIwIjQiOCI8IkAiRCJIIkwiUCJUIlgiXCJgImQiaCJsInAidCJ4InwigCKEIogijCKQIpQimCKcIqAipCKoIqwisCK0IrgivCLAIsQiyCLMItAi1CLYItwi4CLkIugi7CLwIvQi+CL8IwAjBCMIIwwjECMUIxgjHCMgIyQjKCMsIzAjNCM4IzwjQCNEI0gjTCNQI1QjWCNcI2AjZCNoI2wjcCN0I3gjfCOAI4QjiCOMI5AjlCOYI5wjoCOkI6gjrCOwI7QjuCO8I8AjxCPII8wj0CPUI9gj3CPgI+Qj6CPsI/Aj9CP4I/wkACQEJAgkDCQQJBQkGCQcJCAkJCQoJCwkMCQ0JDgkPCRAJEQkSCRMJFAkVCRYJFwkYCRkJGgkbCRwJHQkeCR8JIAkhCSIJIwkkCSUJJgknCSgJKQkqCSsJLAktCS4JLwkwCTEJMgkzCTQJNQk2CTcJOAk5CToJOwk8CT0JPgk/CUAJQQlCCUMJRAlFCUYJRwlICUkJSglLCUwJTQlOCU8JUAlRCVIJUwlUCVUJVglXCVgJWQlaCVsJXAldCV4JXwlgCWEJYgljCWQJZQlmCWcJaAlpCWoJawlsCW0JbglvCXAJcQlyCXMJdAl1CXYJdwl4CXkJegl7CXwJfQl+CX8JgAmBCYIJgwmECYUJhgmHCYgJiQmKCYsJjAmNCY4JjwmQCZEJkgmTCZQJlQmWCZcJmAmZCZoJmwmcCZ0JngmfCaAJoQmiCaMJpAmlCaYJpwmoCakJqgmrCawJrQmuCa8JsAmxCbIJswm0CbUJtgm3CbgJuQm6CbsJvAm9Cb4JvwnACcEJwgnDCcQJxQnGCccJyAnJCcoJywnMCc0JzgnPCdAJ0QnSCdMJ1AnVCdYJ1wnYCdkJ2gnbCdwJ3QneCd8J4AnhCeIJ4wnkCeUJ5gnnCegJ6QnqCesJ7AntCe4J7wnwCfEJ8gnzCfQJ9Qn2CfcJ+An5CfoJ+wn8Cf0J/gn/CgAKAQoCCgMKBAoFCgYKBwoICgkKCgoLCgwKDQoOCg8KEAoRChIKEwoUChUKFgoXChgKGQoaChsKHAodCh4KHwogCiEKIgojCiQKJQomCicKKAopCioKKwosCi0KLgovCjAKMQoyCjMKNAo1CjYKNwo4CjkKOgo7CjwKPQo+Cj8KQApBCkIKQwpECkUKRgpHCkgKSQpKCksKTApNCk4KTwpQClEKUgpTClQKVQpWClcKWApZCloKWwpcCl0KXgpfCmAKYQpiCmMKZAplCmYKZwpoCmkKagprCmwKbQpuCm8KcApxCnIKcwp0CnUKdgp3CngKeQp6CnsKfAp9Cn4KfwqACoEKggqDCoQKhQqGCocKiAqJCooKiwqMCo0KjgqPCpAKkQqSCpMKlAqVCpYKlwqYCpkKmgqbCpwKnQqeCp8KoAqhCqIKowqkCqUKpgqnCqgKqQqqCqsKrAqtCq4KrwqwCrEKsgqzCrQKtQq2CrcKuAq5CroKuwq8Cr0Kvgq/CsAKwQrCCsMKxArFCsYKxwrICskKygrLCswKzQrOCs8K0ArRCtIK0wrUCtUK1grXCtgK2QraCtsK3ArdCt4K3wrgCuEK4grjCuQK5QrmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+Cv8LAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwscCx0LHgsfCyALIQsiCyMLJAslCyYLJwsoCykLKgsrCywLLQsuCy8LMAsxCzILMws0CzULNgs3CzgLOQs6CzsLPAs9Cz4LPwtAC0ELQgtDC0QLRQtGC0cLSAtJC0oLSwtMC00LTgtPC1ALUQtSC1MLVAtVC1YLVwtYC1kLWgtbC1wLXQteC18LYAthC2ILYwtkC2ULZgtnC2gLaQtqC2sLbAttC24LbwtwC3ELcgtzC3QLdQt2C3cLeAt5C3oLewt8C30Lfgt/C4ALgQuCC4MLhAuFC4YLhwuIC4kLiguLC4wLjQuOC48LkAuRC5ILkwuUC5ULlguXC5gLmQuaC5sLnAudC54LnwugC6ELogujC6QLpQumC6cLqAupC6oLqwusC60LrguvC7ALsQuyC7MLtAu1C7YLtwu4C7kLugu7C7wLvQu+C78LwAvBC8ILwwvEC8ULxgvHC8gLyQvKC8sLzAvNC84LzwvQC9EL0gvTC9QL1QvWC9cL2AvZC9oL2wvcC90L3gvfC+AL4QviC+ML5AvlC+YL5wvoC+kL6gvrC+wL7QvuC+8L8AvxC/IL8wv0C/UL9gv3C/gL+Qv6C/sL/Av9C/4L/wwADAEMAgwDDAQMBQwGDAcMCAwJDAoMCwwMDA0MDgwPDBAMEQwSDBMMFAwVDBYMFwwYDBkMGgwbDBwMHQweDB8MIAwhDCIMIwwkDCUMJgwnDCgMKQwqDCsMLAwtDC4MLwwwDDEMMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/DEAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4DHkMegx7DHwMfQx+DH8MgAyBDIIMgwyEDIUMhgyHDIgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoMmwycDJ0MngyfDKAMoQyiDKMMpAylDKYMpwyoDKkMqgyrDKwMrQyuDK8MsAyxDLIMswy0DLUMtgy3DLgMuQy6DLsMvAy9DL4MvwzADMEMwgzDDMQMxQROVUxMAkNSB3VuaTAwQTAHdW5pMDBBRAlvdmVyc2NvcmUHdW5pMDBCMgd1bmkwMEIzB3VuaTAwQjUHdW5pMDBCOQdBbWFjcm9uB2FtYWNyb24GQWJyZXZlBmFicmV2ZQdBb2dvbmVrB2FvZ29uZWsLQ2NpcmN1bWZsZXgLY2NpcmN1bWZsZXgEQ2RvdARjZG90BkRjYXJvbgZkY2Fyb24GRGNyb2F0B0VtYWNyb24HZW1hY3JvbgZFYnJldmUGZWJyZXZlCkVkb3RhY2NlbnQKZWRvdGFjY2VudAdFb2dvbmVrB2VvZ29uZWsGRWNhcm9uBmVjYXJvbgtHY2lyY3VtZmxleAtnY2lyY3VtZmxleARHZG90BGdkb3QHdW5pMDEyMgd1bmkwMTIzC0hjaXJjdW1mbGV4C2hjaXJjdW1mbGV4BEhiYXIEaGJhcgZJdGlsZGUGaXRpbGRlB0ltYWNyb24HaW1hY3JvbgZJYnJldmUGaWJyZXZlB0lvZ29uZWsHaW9nb25lawJJSgJpagtKY2lyY3VtZmxleAtqY2lyY3VtZmxleAd1bmkwMTM2B3VuaTAxMzcMa2dyZWVubGFuZGljBkxhY3V0ZQZsYWN1dGUHdW5pMDEzQgd1bmkwMTNDBkxjYXJvbgZsY2Fyb24ETGRvdARsZG90Bk5hY3V0ZQZuYWN1dGUHdW5pMDE0NQd1bmkwMTQ2Bk5jYXJvbgZuY2Fyb24LbmFwb3N0cm9waGUDRW5nA2VuZwdPbWFjcm9uB29tYWNyb24GT2JyZXZlBm9icmV2ZQ1PaHVuZ2FydW1sYXV0DW9odW5nYXJ1bWxhdXQGUmFjdXRlBnJhY3V0ZQd1bmkwMTU2B3VuaTAxNTcGUmNhcm9uBnJjYXJvbgZTYWN1dGUGc2FjdXRlC1NjaXJjdW1mbGV4C3NjaXJjdW1mbGV4B3VuaTAyMUEHdW5pMDIxQgZUY2Fyb24GdGNhcm9uBFRiYXIEdGJhcgZVdGlsZGUGdXRpbGRlB1VtYWNyb24HdW1hY3JvbgZVYnJldmUGdWJyZXZlBVVyaW5nBXVyaW5nDVVodW5nYXJ1bWxhdXQNdWh1bmdhcnVtbGF1dAdVb2dvbmVrB3VvZ29uZWsLV2NpcmN1bWZsZXgLd2NpcmN1bWZsZXgLWWNpcmN1bWZsZXgLeWNpcmN1bWZsZXgGWmFjdXRlBnphY3V0ZQpaZG90YWNjZW50Cnpkb3RhY2NlbnQFbG9uZ3MKQXJpbmdhY3V0ZQphcmluZ2FjdXRlB0FFYWN1dGUHYWVhY3V0ZQtPc2xhc2hhY3V0ZQtvc2xhc2hhY3V0ZQd1bmkwMjE4B3VuaTAyMTkFdG9ub3MNZGllcmVzaXN0b25vcwpBbHBoYXRvbm9zCWFub3RlbGVpYQxFcHNpbG9udG9ub3MIRXRhdG9ub3MJSW90YXRvbm9zDE9taWNyb250b25vcwxVcHNpbG9udG9ub3MKT21lZ2F0b25vcxFpb3RhZGllcmVzaXN0b25vcwVBbHBoYQRCZXRhBUdhbW1hB3VuaTAzOTQHRXBzaWxvbgRaZXRhA0V0YQVUaGV0YQRJb3RhBUthcHBhBkxhbWJkYQJNdQJOdQJYaQdPbWljcm9uAlBpA1JobwVTaWdtYQNUYXUHVXBzaWxvbgNQaGkDQ2hpA1BzaQd1bmkwM0E5DElvdGFkaWVyZXNpcw9VcHNpbG9uZGllcmVzaXMKYWxwaGF0b25vcwxlcHNpbG9udG9ub3MIZXRhdG9ub3MJaW90YXRvbm9zFHVwc2lsb25kaWVyZXNpc3Rvbm9zBWFscGhhBGJldGEFZ2FtbWEFZGVsdGEHZXBzaWxvbgR6ZXRhA2V0YQV0aGV0YQRpb3RhBWthcHBhBmxhbWJkYQd1bmkwM0JDAm51AnhpB29taWNyb24DcmhvBnNpZ21hMQVzaWdtYQN0YXUHdXBzaWxvbgNwaGkDY2hpA3BzaQVvbWVnYQxpb3RhZGllcmVzaXMPdXBzaWxvbmRpZXJlc2lzDG9taWNyb250b25vcwx1cHNpbG9udG9ub3MKb21lZ2F0b25vcwlhZmlpMTAwMjMJYWZpaTEwMDUxCWFmaWkxMDA1MglhZmlpMTAwNTMJYWZpaTEwMDU0CWFmaWkxMDA1NQlhZmlpMTAwNTYJYWZpaTEwMDU3CWFmaWkxMDA1OAlhZmlpMTAwNTkJYWZpaTEwMDYwCWFmaWkxMDA2MQlhZmlpMTAwNjIJYWZpaTEwMTQ1CWFmaWkxMDAxNwlhZmlpMTAwMTgJYWZpaTEwMDE5CWFmaWkxMDAyMAlhZmlpMTAwMjEJYWZpaTEwMDIyCWFmaWkxMDAyNAlhZmlpMTAwMjUJYWZpaTEwMDI2CWFmaWkxMDAyNwlhZmlpMTAwMjgJYWZpaTEwMDI5CWFmaWkxMDAzMAlhZmlpMTAwMzEJYWZpaTEwMDMyCWFmaWkxMDAzMwlhZmlpMTAwMzQJYWZpaTEwMDM1CWFmaWkxMDAzNglhZmlpMTAwMzcJYWZpaTEwMDM4CWFmaWkxMDAzOQlhZmlpMTAwNDAJYWZpaTEwMDQxCWFmaWkxMDA0MglhZmlpMTAwNDMJYWZpaTEwMDQ0CWFmaWkxMDA0NQlhZmlpMTAwNDYJYWZpaTEwMDQ3CWFmaWkxMDA0OAlhZmlpMTAwNDkJYWZpaTEwMDY1CWFmaWkxMDA2NglhZmlpMTAwNjcJYWZpaTEwMDY4CWFmaWkxMDA2OQlhZmlpMTAwNzAJYWZpaTEwMDcyCWFmaWkxMDA3MwlhZmlpMTAwNzQJYWZpaTEwMDc1CWFmaWkxMDA3NglhZmlpMTAwNzcJYWZpaTEwMDc4CWFmaWkxMDA3OQlhZmlpMTAwODAJYWZpaTEwMDgxCWFmaWkxMDA4MglhZmlpMTAwODMJYWZpaTEwMDg0CWFmaWkxMDA4NQlhZmlpMTAwODYJYWZpaTEwMDg3CWFmaWkxMDA4OAlhZmlpMTAwODkJYWZpaTEwMDkwCWFmaWkxMDA5MQlhZmlpMTAwOTIJYWZpaTEwMDkzCWFmaWkxMDA5NAlhZmlpMTAwOTUJYWZpaTEwMDk2CWFmaWkxMDA5NwlhZmlpMTAwNzEJYWZpaTEwMDk5CWFmaWkxMDEwMAlhZmlpMTAxMDEJYWZpaTEwMTAyCWFmaWkxMDEwMwlhZmlpMTAxMDQJYWZpaTEwMTA1CWFmaWkxMDEwNglhZmlpMTAxMDcJYWZpaTEwMTA4CWFmaWkxMDEwOQlhZmlpMTAxMTAJYWZpaTEwMTkzCWFmaWkxMDA1MAlhZmlpMTAwOTgGV2dyYXZlBndncmF2ZQZXYWN1dGUGd2FjdXRlCVdkaWVyZXNpcwl3ZGllcmVzaXMGWWdyYXZlBnlncmF2ZQlhZmlpMDAyMDgNdW5kZXJzY29yZWRibA1xdW90ZXJldmVyc2VkBm1pbnV0ZQZzZWNvbmQJZXhjbGFtZGJsCW5zdXBlcmlvcglhZmlpMDg5NDEGcGVzZXRhBEV1cm8JYWZpaTYxMjQ4CWFmaWk2MTI4OQlhZmlpNjEzNTIHdW5pMjEyNgllc3RpbWF0ZWQJb25lZWlnaHRoDHRocmVlZWlnaHRocwtmaXZlZWlnaHRocwxzZXZlbmVpZ2h0aHMNY3lyaWxsaWNicmV2ZRBjYXJvbmNvbW1hYWNjZW50C2NvbW1hYWNjZW50EWNvbW1hYWNjZW50cm90YXRlB3VuaTIwNzQHdW5pMjA3NQd1bmkyMDc3B3VuaTIwNzgHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMEIHdW5pRkVGRgd1bmlGRkZDB3VuaUZGRkQHdW5pMDFGMAd1bmkwMkJDB3VuaTAzRDEHdW5pMDNEMgd1bmkwM0Q2B3VuaTFFM0UHdW5pMUUzRgd1bmkxRTAwB3VuaTFFMDEHdW5pMDJGMwVPaG9ybgVvaG9ybgVVaG9ybgV1aG9ybgRob29rB3VuaTA0MDAHdW5pMDQwRAd1bmkwNDUwB3VuaTA0NUQHdW5pMDQ2MAd1bmkwNDYxB3VuaTA0NjIHdW5pMDQ2Mwd1bmkwNDY0B3VuaTA0NjUHdW5pMDQ2Ngd1bmkwNDY3B3VuaTA0NjgHdW5pMDQ2OQd1bmkwNDZBB3VuaTA0NkIHdW5pMDQ2Qwd1bmkwNDZEB3VuaTA0NkUHdW5pMDQ2Rgd1bmkwNDcwB3VuaTA0NzEHdW5pMDQ3Mgd1bmkwNDczB3VuaTA0NzQHdW5pMDQ3NQd1bmkwNDc2B3VuaTA0NzcHdW5pMDQ3OAd1bmkwNDc5B3VuaTA0N0EHdW5pMDQ3Qgd1bmkwNDdDB3VuaTA0N0QHdW5pMDQ3RQd1bmkwNDdGB3VuaTA0ODAHdW5pMDQ4MQd1bmkwNDgyB3VuaTA0ODgHdW5pMDQ4OQd1bmkwNDhBB3VuaTA0OEIHdW5pMDQ4Qwd1bmkwNDhEB3VuaTA0OEUHdW5pMDQ4Rgd1bmkwNDkyB3VuaTA0OTMHdW5pMDQ5NAd1bmkwNDk1B3VuaTA0OTYHdW5pMDQ5Nwd1bmkwNDk4B3VuaTA0OTkHdW5pMDQ5QQd1bmkwNDlCB3VuaTA0OUMHdW5pMDQ5RAd1bmkwNDlFB3VuaTA0OUYHdW5pMDRBMAd1bmkwNEExB3VuaTA0QTIHdW5pMDRBMwd1bmkwNEE0B3VuaTA0QTUHdW5pMDRBNgd1bmkwNEE3B3VuaTA0QTgHdW5pMDRBOQd1bmkwNEFBB3VuaTA0QUIHdW5pMDRBQwd1bmkwNEFEB3VuaTA0QUUHdW5pMDRBRgd1bmkwNEIwB3VuaTA0QjEHdW5pMDRCMgd1bmkwNEIzB3VuaTA0QjQHdW5pMDRCNQd1bmkwNEI2B3VuaTA0QjcHdW5pMDRCOAd1bmkwNEI5B3VuaTA0QkEHdW5pMDRCQgd1bmkwNEJDB3VuaTA0QkQHdW5pMDRCRQd1bmkwNEJGB3VuaTA0QzAHdW5pMDRDMQd1bmkwNEMyB3VuaTA0QzMHdW5pMDRDNAd1bmkwNEM1B3VuaTA0QzYHdW5pMDRDNwd1bmkwNEM4B3VuaTA0QzkHdW5pMDRDQQd1bmkwNENCB3VuaTA0Q0MHdW5pMDRDRAd1bmkwNENFB3VuaTA0Q0YHdW5pMDREMAd1bmkwNEQxB3VuaTA0RDIHdW5pMDREMwd1bmkwNEQ0B3VuaTA0RDUHdW5pMDRENgd1bmkwNEQ3B3VuaTA0RDgHdW5pMDREOQd1bmkwNERBB3VuaTA0REIHdW5pMDREQwd1bmkwNEREB3VuaTA0REUHdW5pMDRERgd1bmkwNEUwB3VuaTA0RTEHdW5pMDRFMgd1bmkwNEUzB3VuaTA0RTQHdW5pMDRFNQd1bmkwNEU2B3VuaTA0RTcHdW5pMDRFOAd1bmkwNEU5B3VuaTA0RUEHdW5pMDRFQgd1bmkwNEVDB3VuaTA0RUQHdW5pMDRFRQd1bmkwNEVGB3VuaTA0RjAHdW5pMDRGMQd1bmkwNEYyB3VuaTA0RjMHdW5pMDRGNAd1bmkwNEY1B3VuaTA0RjYHdW5pMDRGNwd1bmkwNEY4B3VuaTA0RjkHdW5pMDRGQQd1bmkwNEZCB3VuaTA0RkMHdW5pMDRGRAd1bmkwNEZFB3VuaTA0RkYHdW5pMDUwMAd1bmkwNTAxB3VuaTA1MDIHdW5pMDUwMwd1bmkwNTA0B3VuaTA1MDUHdW5pMDUwNgd1bmkwNTA3B3VuaTA1MDgHdW5pMDUwOQd1bmkwNTBBB3VuaTA1MEIHdW5pMDUwQwd1bmkwNTBEB3VuaTA1MEUHdW5pMDUwRgd1bmkwNTEwB3VuaTA1MTEHdW5pMDUxMgd1bmkwNTEzB3VuaTFFQTAHdW5pMUVBMQd1bmkxRUEyB3VuaTFFQTMHdW5pMUVBNAd1bmkxRUE1B3VuaTFFQTYHdW5pMUVBNwd1bmkxRUE4B3VuaTFFQTkHdW5pMUVBQQd1bmkxRUFCB3VuaTFFQUMHdW5pMUVBRAd1bmkxRUFFB3VuaTFFQUYHdW5pMUVCMAd1bmkxRUIxB3VuaTFFQjIHdW5pMUVCMwd1bmkxRUI0B3VuaTFFQjUHdW5pMUVCNgd1bmkxRUI3B3VuaTFFQjgHdW5pMUVCOQd1bmkxRUJBB3VuaTFFQkIHdW5pMUVCQwd1bmkxRUJEB3VuaTFFQkUHdW5pMUVCRgd1bmkxRUMwB3VuaTFFQzEHdW5pMUVDMgd1bmkxRUMzB3VuaTFFQzQHdW5pMUVDNQd1bmkxRUM2B3VuaTFFQzcHdW5pMUVDOAd1bmkxRUM5B3VuaTFFQ0EHdW5pMUVDQgd1bmkxRUNDB3VuaTFFQ0QHdW5pMUVDRQd1bmkxRUNGB3VuaTFFRDAHdW5pMUVEMQd1bmkxRUQyB3VuaTFFRDMHdW5pMUVENAd1bmkxRUQ1B3VuaTFFRDYHdW5pMUVENwd1bmkxRUQ4B3VuaTFFRDkHdW5pMUVEQQd1bmkxRURCB3VuaTFFREMHdW5pMUVERAd1bmkxRURFB3VuaTFFREYHdW5pMUVFMAd1bmkxRUUxB3VuaTFFRTIHdW5pMUVFMwd1bmkxRUU0B3VuaTFFRTUHdW5pMUVFNgd1bmkxRUU3B3VuaTFFRTgHdW5pMUVFOQd1bmkxRUVBB3VuaTFFRUIHdW5pMUVFQwd1bmkxRUVEB3VuaTFFRUUHdW5pMUVFRgd1bmkxRUYwB3VuaTFFRjEHdW5pMUVGNAd1bmkxRUY1B3VuaTFFRjYHdW5pMUVGNwd1bmkxRUY4B3VuaTFFRjkHdW5pMjBBQhNjaXJjdW1mbGV4YWN1dGVjb21iE2NpcmN1bWZsZXhncmF2ZWNvbWISY2lyY3VtZmxleGhvb2tjb21iE2NpcmN1bWZsZXh0aWxkZWNvbWIOYnJldmVhY3V0ZWNvbWIOYnJldmVncmF2ZWNvbWINYnJldmVob29rY29tYg5icmV2ZXRpbGRlY29tYhBjeXJpbGxpY2hvb2tsZWZ0EWN5cmlsbGljYmlnaG9va1VDB3VuaTAxNjIHdW5pMDE2Mwd1bmkwMTgwB3VuaTAxODEHdW5pMDE4Mgd1bmkwMTgzB3VuaTAxODQHdW5pMDE4NQd1bmkwMTg2B3VuaTAxODcHdW5pMDE4OAd1bmkwMTg5B3VuaTAxOEEHdW5pMDE4Qgd1bmkwMThDB3VuaTAxOEQHdW5pMDE4RQd1bmkwMThGB3VuaTAxOTAHdW5pMDE5MQd1bmkwMTkzB3VuaTAxOTQHdW5pMDE5NQd1bmkwMTk2B3VuaTAxOTcHdW5pMDE5OAd1bmkwMTk5B3VuaTAxOUEHdW5pMDE5Qgd1bmkwMTlDB3VuaTAxOUQHdW5pMDE5RQd1bmkwMTlGB3VuaTAxQTIHdW5pMDFBMwd1bmkwMUE0B3VuaTAxQTUHdW5pMDFBNgd1bmkwMUE3B3VuaTAxQTgHdW5pMDFBOQd1bmkwMUFBB3VuaTAxQUIHdW5pMDFBQwd1bmkwMUFEB3VuaTAxQUUHdW5pMDFCMQd1bmkwMUIyB3VuaTAxQjMHdW5pMDFCNAd1bmkwMUI1B3VuaTAxQjYHdW5pMDFCNwd1bmkwMUI4B3VuaTAxQjkHdW5pMDFCQQd1bmkwMUJCB3VuaTAxQkMHdW5pMDFCRAd1bmkwMUJFB3VuaTAxQkYHdW5pMDFDMAd1bmkwMUMxB3VuaTAxQzIHdW5pMDFDMwd1bmkwMUM0B3VuaTAxQzUHdW5pMDFDNgd1bmkwMUM3B3VuaTAxQzgHdW5pMDFDOQd1bmkwMUNBB3VuaTAxQ0IHdW5pMDFDQwd1bmkwMUNEB3VuaTAxQ0UHdW5pMDFDRgd1bmkwMUQwB3VuaTAxRDEHdW5pMDFEMgd1bmkwMUQzB3VuaTAxRDQHdW5pMDFENQd1bmkwMUQ2B3VuaTAxRDcHdW5pMDFEOAd1bmkwMUQ5B3VuaTAxREEHdW5pMDFEQgd1bmkwMURDB3VuaTAxREUHdW5pMDFERgd1bmkwMUUwB3VuaTAxRTEHdW5pMDFFMgd1bmkwMUUzB3VuaTAxRTQHdW5pMDFFNQd1bmkwMUU2B3VuaTAxRTcHdW5pMDFFOAd1bmkwMUU5B3VuaTAxRUEHdW5pMDFFQgd1bmkwMUVDB3VuaTAxRUQHdW5pMDFFRQd1bmkwMUVGB3VuaTAxRjEHdW5pMDFGMgd1bmkwMUYzB3VuaTAxRjQHdW5pMDFGNQd1bmkwMUY2B3VuaTAxRjcHdW5pMDFGOAd1bmkwMUY5B3VuaTAyMDAHdW5pMDIwMQd1bmkwMjAyB3VuaTAyMDMHdW5pMDIwNAd1bmkwMjA1B3VuaTAyMDYHdW5pMDIwNwd1bmkwMjA4B3VuaTAyMDkHdW5pMDIwQQd1bmkwMjBCB3VuaTAyMEMHdW5pMDIwRAd1bmkwMjBFB3VuaTAyMEYHdW5pMDIxMAd1bmkwMjExB3VuaTAyMTIHdW5pMDIxMwd1bmkwMjE0B3VuaTAyMTUHdW5pMDIxNgd1bmkwMjE3B3VuaTAyMUMHdW5pMDIxRAd1bmkwMjFFB3VuaTAyMUYHdW5pMDIyMAd1bmkwMjIxB3VuaTAyMjIHdW5pMDIyMwd1bmkwMjI0B3VuaTAyMjUHdW5pMDIyNgd1bmkwMjI3B3VuaTAyMjgHdW5pMDIyOQd1bmkwMjJBB3VuaTAyMkIHdW5pMDIyQwd1bmkwMjJEB3VuaTAyMkUHdW5pMDIyRgd1bmkwMjMwB3VuaTAyMzEHdW5pMDIzMgd1bmkwMjMzB3VuaTAyMzQHdW5pMDIzNQd1bmkwMjM2B3VuaTAyMzgHdW5pMDIzOQd1bmkwMjNBB3VuaTAyM0IHdW5pMDIzQwd1bmkwMjNEB3VuaTAyM0UHdW5pMDIzRgd1bmkwMjQwB3VuaTAyNDEHdW5pMDI0Mgd1bmkwMjQzB3VuaTAyNDQHdW5pMDI0NQd1bmkwMjQ2B3VuaTAyNDcHdW5pMDI0OAd1bmkwMjQ5B3VuaTAyNEEHdW5pMDI0Qgd1bmkwMjRDB3VuaTAyNEQHdW5pMDI0RQd1bmkwMjRGB3VuaTAyNTAHdW5pMDI1MQd1bmkwMjUyB3VuaTAyNTMHdW5pMDI1NAd1bmkwMjU1B3VuaTAyNTYHdW5pMDI1Nwd1bmkwMjU4B3VuaTAyNTkHdW5pMDI1Qgd1bmkwMjVFB3VuaTAyNUYHdW5pMDI2MAd1bmkwMjYxB3VuaTAyNjIHdW5pMDI2Mwd1bmkwMjY0B3VuaTAyNjUHdW5pMDI2Ngd1bmkwMjY3B3VuaTAyNjgJaW90YUxhdGluB3VuaTAyNkEHdW5pMDI2Qgd1bmkwMjZDB3VuaTAyNkQHdW5pMDI2RQd1bmkwMjZGB3VuaTAyNzAHdW5pMDI3MQd1bmkwMjcyB3VuaTAyNzMHdW5pMDI3NAd1bmkwMjc1B3VuaTAyNzYLb21lZ2FjbG9zZWQHdW5pMDI3OAd1bmkwMjc5B3VuaTAyN0EHdW5pMDI3Qgd1bmkwMjdDB3VuaTAyN0QHdW5pMDI3RQd1bmkwMjdGB3VuaTAyODAHdW5pMDI4MQd1bmkwMjgyB3VuaTAyODMHdW5pMDI4NAd1bmkwMjg1B3VuaTAyODYHdW5pMDI4Nwd1bmkwMjg4B3VuaTAyODkHdW5pMDI4QQd1bmkwMjhCB3VuaTAyOEMHdW5pMDI4RAd1bmkwMjhFB3VuaTAyOEYHdW5pMDI5MAd1bmkwMjkxB3VuaTAyOTIHdW5pMDI5Mwd1bmkwMjk0B3VuaTAyOTUNZ2xvdHRhbHR1cm5lZAd1bmkwMjk3B3VuaTAyOTgHdW5pMDI5OQd1bmkwMjlBB3VuaTAyOUIHdW5pMDI5Qwd1bmkwMjlEB3VuaTAyOUUHdW5pMDI5Rgd1bmkwMkEwB3VuaTAyQTEHdW5pMDJBMgVkemxpZwd1bmkwMkE0CWR6bGlnY3VybAV0c2xpZwd1bmkwMkE3CXRjbGlnY3VybAd1bmkwMkE5B3VuaTAyQUEHdW5pMDJBQgd1bmkwMkFDB3VuaTAyQUQHdW5pMDJBRQd1bmkwMkFGB3VuaTAyQjAHdW5pMDJCMQd1bmkwMkIyB3VuaTAyQjMHdW5pMDJCNAd1bmkwMkI1B3VuaTAyQjYHdW5pMDJCNwd1bmkwMkI4B3VuaTAyQjkHdW5pMDJCQQd1bmkwMkJCB3VuaTAyQkQHdW5pMDJCRQd1bmkwMkJGB3VuaTAyQzAHdW5pMDJDMQd1bmkwMkMyB3VuaTAyQzMHdW5pMDJDNAd1bmkwMkM1B3VuaTAyQzgHdW5pMDJDQQd1bmkwMkNCB3VuaTAyQ0MHdW5pMDJDRAd1bmkwMkNFB3VuaTAyQ0YHdW5pMDJEMAd1bmkwMkQxB3VuaTAyRDIHdW5pMDJEMwd1bmkwMkQ0B3VuaTAyRDUHdW5pMDJENgd1bmkwMkQ3B3VuaTAyREYHdW5pMDJFMAd1bmkwMkUxB3VuaTAyRTIHdW5pMDJFMwd1bmkwMkU0B3VuaTAyRTUHdW5pMDJFNgd1bmkwMkU3B3VuaTAyRTgHdW5pMDJFOQd1bmkwMkVBB3VuaTAyRUIHdW5pMDJFQwd1bmkwMkVEB3VuaTAyRUUHdW5pMDJFRgd1bmkwMkYwB3VuaTAyRjEHdW5pMDJGMgd1bmkwMkY0B3VuaTAyRjUHdW5pMDJGNgd1bmkwMkY3B3VuaTAyRjgHdW5pMDJGOQd1bmkwMkZBB3VuaTAyRkIHdW5pMDJGQwd1bmkwMkZEB3VuaTAyRkUHdW5pMDJGRg1ob29rYWJvdmVjb21iB3VuaTAzNzQHdW5pMDM3NQd1bmkwMzdBB3VuaTAzN0IHdW5pMDM3Qwd1bmkwMzdEB3VuaTAzN0UHdW5pMDNEMAd1bmkwM0QzB3VuaTAzRDQEcGhpMQd1bmkwM0Q3B3VuaTAzRDgHdW5pMDNEOQd1bmkwM0RBB3VuaTAzREIHdW5pMDNEQwd1bmkwM0REB3VuaTAzREUHdW5pMDNERgd1bmkwM0UwB3VuaTAzRTEHdW5pMDNGMAd1bmkwM0YxB3VuaTAzRjIHdW5pMDNGMwd1bmkwM0Y0B3VuaTAzRjUHdW5pMDNGNgd1bmkwM0Y3B3VuaTAzRjgHdW5pMDNGOQd1bmkwM0ZBB3VuaTAzRkIHdW5pMDNGQwd1bmkwM0ZEB3VuaTAzRkUHdW5pMDNGRgd1bmkwNTFBB3VuaTA1MUIHdW5pMDUxQwd1bmkwNTFEB3VuaTFEMDAHdW5pMUQwMQd1bmkxRDAyB3VuaTFEMDMHdW5pMUQwNAd1bmkxRDA1B3VuaTFEMDYHdW5pMUQwNwd1bmkxRDA4B3VuaTFEMDkHdW5pMUQwQQd1bmkxRDBCB3VuaTFEMEMHdW5pMUQwRAd1bmkxRDBFB3VuaTFEMEYHdW5pMUQxMAd1bmkxRDExB3VuaTFEMTIHdW5pMUQxMwd1bmkxRDE0B3VuaTFEMTUHdW5pMUQxNgd1bmkxRDE3B3VuaTFEMTgHdW5pMUQxOQd1bmkxRDFBB3VuaTFEMUIHdW5pMUQxQwd1bmkxRDFEB3VuaTFEMUUHdW5pMUQxRgd1bmkxRDIwB3VuaTFEMjEHdW5pMUQyMgd1bmkxRDIzB3VuaTFEMjQHdW5pMUQyNQd1bmkxRDI2B3VuaTFEMjcHdW5pMUQyOAd1bmkxRDI5B3VuaTFEMkEHdW5pMUQyQgd1bmkxRDJDB3VuaTFEMkQHdW5pMUQyRQd1bmkxRDJGB3VuaTFEMzAHdW5pMUQzMQd1bmkxRDMyB3VuaTFEMzMHdW5pMUQzNAd1bmkxRDM1B3VuaTFEMzYHdW5pMUQzNwd1bmkxRDM4B3VuaTFEMzkHdW5pMUQzQQd1bmkxRDNCB3VuaTFEM0MHdW5pMUQzRAd1bmkxRDNFB3VuaTFEM0YHdW5pMUQ0MAd1bmkxRDQxB3VuaTFENDIHdW5pMUQ0Mwd1bmkxRDQ0B3VuaTFENDUHdW5pMUQ0Ngd1bmkxRDQ3B3VuaTFENDgHdW5pMUQ0OQd1bmkxRDRBB3VuaTFENEIHdW5pMUQ0Qwd1bmkxRDREB3VuaTFENEUHdW5pMUQ0Rgd1bmkxRDUwB3VuaTFENTEHdW5pMUQ1Mgd1bmkxRDUzB3VuaTFENTQHdW5pMUQ1NQd1bmkxRDU2B3VuaTFENTcHdW5pMUQ1OAd1bmkxRDU5B3VuaTFENUEHdW5pMUQ1Qgd1bmkxRDVDB3VuaTFENUQHdW5pMUQ1RQd1bmkxRDVGB3VuaTFENjAHdW5pMUQ2MQd1bmkxRDYyB3VuaTFENjMHdW5pMUQ2NAd1bmkxRDY1B3VuaTFENjYHdW5pMUQ2Nwd1bmkxRDY4B3VuaTFENjkHdW5pMUQ2QQd1bmkxRDZCB3VuaTFENkMHdW5pMUQ2RAd1bmkxRDZFB3VuaTFENkYHdW5pMUQ3MAd1bmkxRDcxB3VuaTFENzIHdW5pMUQ3Mwd1bmkxRDc0B3VuaTFENzUHdW5pMUQ3Ngd1bmkxRDc3B3VuaTFENzgHdW5pMUQ3OQd1bmkxRDdBB3VuaTFEN0IHdW5pMUQ3Qwd1bmkxRDdEB3VuaTFEN0UHdW5pMUQ3Rgd1bmkxRDgwB3VuaTFEODEHdW5pMUQ4Mgd1bmkxRDgzB3VuaTFEODQHdW5pMUQ4NQd1bmkxRDg2B3VuaTFEODcHdW5pMUQ4OAd1bmkxRDg5B3VuaTFEOEEHdW5pMUQ4Qgd1bmkxRDhDB3VuaTFEOEQHdW5pMUQ4RQd1bmkxRDhGB3VuaTFEOTAHdW5pMUQ5MQd1bmkxRDkyB3VuaTFEOTMHdW5pMUQ5NAd1bmkxRDk1B3VuaTFEOTYHdW5pMUQ5Nwd1bmkxRDk4B3VuaTFEOTkHdW5pMUQ5QQd1bmkxRDlCB3VuaTFEOUMHdW5pMUQ5RAd1bmkxRDlFB3VuaTFEOUYHdW5pMURBMAd1bmkxREExB3VuaTFEQTIHdW5pMURBMwd1bmkxREE0B3VuaTFEQTUHdW5pMURBNgd1bmkxREE3B3VuaTFEQTgHdW5pMURBOQd1bmkxREFBB3VuaTFEQUIHdW5pMURBQwd1bmkxREFEB3VuaTFEQUUHdW5pMURBRgd1bmkxREIwB3VuaTFEQjEHdW5pMURCMgd1bmkxREIzB3VuaTFEQjQHdW5pMURCNQd1bmkxREI2B3VuaTFEQjcHdW5pMURCOAd1bmkxREI5B3VuaTFEQkEHdW5pMURCQgd1bmkxREJDB3VuaTFEQkQHdW5pMURCRQd1bmkxREJGB3VuaTFFMDIHdW5pMUUwMwd1bmkxRTA0B3VuaTFFMDUHdW5pMUUwNgd1bmkxRTA3B3VuaTFFMDgHdW5pMUUwOQd1bmkxRTBBB3VuaTFFMEIHdW5pMUUwQwd1bmkxRTBEB3VuaTFFMEUHdW5pMUUwRgd1bmkxRTEwB3VuaTFFMTEHdW5pMUUxMgd1bmkxRTEzB3VuaTFFMTQHdW5pMUUxNQd1bmkxRTE2B3VuaTFFMTcHdW5pMUUxOAd1bmkxRTE5B3VuaTFFMUEHdW5pMUUxQgd1bmkxRTFDB3VuaTFFMUQHdW5pMUUxRQd1bmkxRTFGB3VuaTFFMjAHdW5pMUUyMQd1bmkxRTIyB3VuaTFFMjMHdW5pMUUyNAd1bmkxRTI1B3VuaTFFMjYHdW5pMUUyNwd1bmkxRTI4B3VuaTFFMjkHdW5pMUUyQQd1bmkxRTJCB3VuaTFFMkMHdW5pMUUyRAd1bmkxRTJFB3VuaTFFMkYHdW5pMUUzMAd1bmkxRTMxB3VuaTFFMzIHdW5pMUUzMwd1bmkxRTM0B3VuaTFFMzUHdW5pMUUzNgd1bmkxRTM3B3VuaTFFMzgHdW5pMUUzOQd1bmkxRTNBB3VuaTFFM0IHdW5pMUUzQwd1bmkxRTNEB3VuaTFFNDAHdW5pMUU0MQd1bmkxRTQyB3VuaTFFNDMHdW5pMUU0NAd1bmkxRTQ1B3VuaTFFNDYHdW5pMUU0Nwd1bmkxRTQ4B3VuaTFFNDkHdW5pMUU0QQd1bmkxRTRCB3VuaTFFNEMHdW5pMUU0RAd1bmkxRTRFB3VuaTFFNEYHdW5pMUU1MAd1bmkxRTUxB3VuaTFFNTIHdW5pMUU1Mwd1bmkxRTU0B3VuaTFFNTUHdW5pMUU1Ngd1bmkxRTU3B3VuaTFFNTgHdW5pMUU1OQd1bmkxRTVBB3VuaTFFNUIHdW5pMUU1Qwd1bmkxRTVEB3VuaTFFNUUHdW5pMUU1Rgd1bmkxRTYwB3VuaTFFNjEHdW5pMUU2Mgd1bmkxRTYzB3VuaTFFNjQHdW5pMUU2NQd1bmkxRTY2B3VuaTFFNjcHdW5pMUU2OAd1bmkxRTY5B3VuaTFFNkEHdW5pMUU2Qgd1bmkxRTZDB3VuaTFFNkQHdW5pMUU2RQd1bmkxRTZGB3VuaTFFNzAHdW5pMUU3MQd1bmkxRTcyB3VuaTFFNzMHdW5pMUU3NAd1bmkxRTc1B3VuaTFFNzYHdW5pMUU3Nwd1bmkxRTc4B3VuaTFFNzkHdW5pMUU3QQd1bmkxRTdCB3VuaTFFN0MHdW5pMUU3RAd1bmkxRTdFB3VuaTFFN0YHdW5pMUU4Ngd1bmkxRTg3B3VuaTFFODgHdW5pMUU4OQd1bmkxRThBB3VuaTFFOEIHdW5pMUU4Qwd1bmkxRThEB3VuaTFFOEUHdW5pMUU4Rgd1bmkxRTkwB3VuaTFFOTEHdW5pMUU5Mgd1bmkxRTkzB3VuaTFFOTQHdW5pMUU5NQd1bmkxRTk2B3VuaTFFOTcHdW5pMUU5OAd1bmkxRTk5B3VuaTFFOUEHdW5pMUU5Qgd1bmkxRjAwB3VuaTFGMDEHdW5pMUYwMgd1bmkxRjAzB3VuaTFGMDQHdW5pMUYwNQd1bmkxRjA2B3VuaTFGMDcHdW5pMUYwOAd1bmkxRjA5B3VuaTFGMEEHdW5pMUYwQgd1bmkxRjBDB3VuaTFGMEQHdW5pMUYwRQd1bmkxRjBGB3VuaTFGMTAHdW5pMUYxMQd1bmkxRjEyB3VuaTFGMTMHdW5pMUYxNAd1bmkxRjE1B3VuaTFGMTgHdW5pMUYxOQd1bmkxRjFBB3VuaTFGMUIHdW5pMUYxQwd1bmkxRjFEB3VuaTFGMjAHdW5pMUYyMQd1bmkxRjIyB3VuaTFGMjMHdW5pMUYyNAd1bmkxRjI1B3VuaTFGMjYHdW5pMUYyNwd1bmkxRjI4B3VuaTFGMjkHdW5pMUYyQQd1bmkxRjJCB3VuaTFGMkMHdW5pMUYyRAd1bmkxRjJFB3VuaTFGMkYHdW5pMUYzMAd1bmkxRjMxB3VuaTFGMzIHdW5pMUYzMwd1bmkxRjM0B3VuaTFGMzUHdW5pMUYzNgd1bmkxRjM3B3VuaTFGMzgHdW5pMUYzOQd1bmkxRjNBB3VuaTFGM0IHdW5pMUYzQwd1bmkxRjNEB3VuaTFGM0UHdW5pMUYzRgd1bmkxRjQwB3VuaTFGNDEHdW5pMUY0Mgd1bmkxRjQzB3VuaTFGNDQHdW5pMUY0NQd1bmkxRjQ4B3VuaTFGNDkHdW5pMUY0QQd1bmkxRjRCB3VuaTFGNEMHdW5pMUY0RAd1bmkxRjUwB3VuaTFGNTEHdW5pMUY1Mgd1bmkxRjUzB3VuaTFGNTQHdW5pMUY1NQd1bmkxRjU2B3VuaTFGNTcHdW5pMUY1OQd1bmkxRjVCB3VuaTFGNUQHdW5pMUY1Rgd1bmkxRjYwB3VuaTFGNjEHdW5pMUY2Mgd1bmkxRjYzB3VuaTFGNjQHdW5pMUY2NQd1bmkxRjY2B3VuaTFGNjcHdW5pMUY2OAd1bmkxRjY5B3VuaTFGNkEHdW5pMUY2Qgd1bmkxRjZDB3VuaTFGNkQHdW5pMUY2RQd1bmkxRjZGB3VuaTFGNzAHdW5pMUY3MQd1bmkxRjcyB3VuaTFGNzMHdW5pMUY3NAd1bmkxRjc1B3VuaTFGNzYHdW5pMUY3Nwd1bmkxRjc4B3VuaTFGNzkHdW5pMUY3QQd1bmkxRjdCB3VuaTFGN0MHdW5pMUY3RAd1bmkxRjgwB3VuaTFGODEHdW5pMUY4Mgd1bmkxRjgzB3VuaTFGODQHdW5pMUY4NQd1bmkxRjg2B3VuaTFGODcHdW5pMUY4OAd1bmkxRjg5B3VuaTFGOEEHdW5pMUY4Qgd1bmkxRjhDB3VuaTFGOEQHdW5pMUY4RQd1bmkxRjhGB3VuaTFGOTAHdW5pMUY5MQd1bmkxRjkyB3VuaTFGOTMHdW5pMUY5NAd1bmkxRjk1B3VuaTFGOTYHdW5pMUY5Nwd1bmkxRjk4B3VuaTFGOTkHdW5pMUY5QQd1bmkxRjlCB3VuaTFGOUMHdW5pMUY5RAd1bmkxRjlFB3VuaTFGOUYHdW5pMUZBMAd1bmkxRkExB3VuaTFGQTIHdW5pMUZBMwd1bmkxRkE0B3VuaTFGQTUHdW5pMUZBNgd1bmkxRkE3B3VuaTFGQTgHdW5pMUZBOQd1bmkxRkFBB3VuaTFGQUIHdW5pMUZBQwd1bmkxRkFEB3VuaTFGQUUHdW5pMUZBRgd1bmkxRkIwB3VuaTFGQjEHdW5pMUZCMgd1bmkxRkIzB3VuaTFGQjQHdW5pMUZCNgd1bmkxRkI3B3VuaTFGQjgHdW5pMUZCOQd1bmkxRkJBB3VuaTFGQkIHdW5pMUZCQwd1bmkxRkJEB3VuaTFGQkUHdW5pMUZCRgd1bmkxRkMwB3VuaTFGQzEHdW5pMUZDMgd1bmkxRkMzB3VuaTFGQzQHdW5pMUZDNgd1bmkxRkM3B3VuaTFGQzgHdW5pMUZDOQd1bmkxRkNBB3VuaTFGQ0IHdW5pMUZDQwd1bmkxRkNEB3VuaTFGQ0UHdW5pMUZDRgd1bmkxRkQwB3VuaTFGRDEHdW5pMUZEMgd1bmkxRkQzB3VuaTFGRDYHdW5pMUZENwd1bmkxRkQ4B3VuaTFGRDkHdW5pMUZEQQd1bmkxRkRCB3VuaTFGREQHdW5pMUZERQd1bmkxRkRGB3VuaTFGRTAHdW5pMUZFMQd1bmkxRkUyB3VuaTFGRTMHdW5pMUZFNAd1bmkxRkU1B3VuaTFGRTYHdW5pMUZFNwd1bmkxRkU4B3VuaTFGRTkHdW5pMUZFQQd1bmkxRkVCB3VuaTFGRUMHdW5pMUZFRAd1bmkxRkVFB3VuaTFGRUYHdW5pMUZGMgd1bmkxRkYzB3VuaTFGRjQHdW5pMUZGNgd1bmkxRkY3B3VuaTFGRjgHdW5pMUZGOQd1bmkxRkZBB3VuaTFGRkIHdW5pMUZGQwd1bmkxRkZEB3VuaTFGRkUHdW5pMjAwQwd1bmkyMDBEB3VuaTIwMEUHdW5pMjAwRgd1bmkyMDEyB3VuaTIwMTYHdW5pMjAxRgd1bmkyMDJBB3VuaTIwMkIHdW5pMjAyQwd1bmkyMDJEB3VuaTIwMkUHdW5pMjAyRgd1bmkyMDM0B3VuaTIwM0UHdW5pMjA1RQd1bmkyMDZBB3VuaTIwNkIHdW5pMjA2Qwd1bmkyMDZEB3VuaTIwNkUHdW5pMjA2Rgd1bmkyMDcwB3VuaTIwNzYHdW5pMjA3OQd1bmkyMDkwB3VuaTIwOTEHdW5pMjA5Mgd1bmkyMDkzB3VuaTIwOTQHdW5pMjBBMAd1bmkyMEExB3VuaTIwQTIHdW5pMjBBNQd1bmkyMEE2B3VuaTIwQTgHdW5pMjBBOQd1bmkyMEFEB3VuaTIwQUUHdW5pMjBBRgd1bmkyMEIwB3VuaTIwQjEHdW5pMjBCMgd1bmkyMEIzB3VuaTIwQjQHdW5pMjBCNQd1bmkyMEI5B3VuaTIwRjAHdW5pMjExNwd1bmkyMTREB3VuaTIxNEUHdW5pMjE1Mwd1bmkyMTU0B3VuaTIxODQHdW5pMkM2MAd1bmkyQzYxB3VuaTJDNjIHdW5pMkM2Mwd1bmkyQzY0B3VuaTJDNjUHdW5pMkM2Ngd1bmkyQzY3B3VuaTJDNjgHdW5pMkM2OQd1bmkyQzZBB3VuaTJDNkIHdW5pMkM2Qwd1bmkyQzZEB3VuaTJDNzEHdW5pMkM3Mgd1bmkyQzczB3VuaTJDNzQHdW5pMkM3NQd1bmkyQzc2B3VuaTJDNzcHdW5pMkUxNwd1bmlBNzE3B3VuaUE3MTgHdW5pQTcxOQd1bmlBNzFBB3VuaUE3MUIHdW5pQTcxQwd1bmlBNzFEB3VuaUE3MUUHdW5pQTcxRgd1bmlBNzIwB3VuaUE3MjEHdW5pQTc4OAd1bmlBNzg5B3VuaUE3OEEHdW5pQTc4Qgd1bmlBNzhDDWRpZXJlc2lzYWN1dGUNZGllcmVzaXNncmF2ZQd1bmlGRTIwB3VuaUZFMjEHdW5pRkUyMgd1bmlGRTIzE3VuaTAzQjEwMzA0MDMxMzAzMDATdW5pMDNCMTAzMDQwMzEzMDMwMRN1bmkwM0IxMDMwNDAzMTQwMzAwE3VuaTAzQjEwMzA0MDMxNDAzMDETdW5pMDNCMTAzMDYwMzEzMDMwMBN1bmkwM0IxMDMwNjAzMTMwMzAxE3VuaTAzQjEwMzA2MDMxNDAzMDATdW5pMDNCMTAzMDYwMzE0MDMwMRN1bmkwM0I5MDMwNDAzMTMwMzAwE3VuaTAzQjkwMzA0MDMxMzAzMDETdW5pMDNCOTAzMDQwMzE0MDMwMBN1bmkwM0I5MDMwNDAzMTQwMzAxE3VuaTAzQjkwMzA2MDMxMzAzMDATdW5pMDNCOTAzMDYwMzEzMDMwMRN1bmkwM0I5MDMwNjAzMTQwMzAwE3VuaTAzQjkwMzA2MDMxNDAzMDETdW5pMDNDNTAzMDQwMzEzMDMwMBN1bmkwM0M1MDMwNDAzMTMwMzAxE3VuaTAzQzUwMzA0MDMxNDAzMDATdW5pMDNDNTAzMDQwMzE0MDMwMRN1bmkwM0M1MDMwNjAzMTMwMzAwE3VuaTAzQzUwMzA2MDMxMzAzMDETdW5pMDNDNTAzMDYwMzE0MDMwMBN1bmkwM0M1MDMwNjAzMTQwMzAxE3VuaTAzQjkwMzA4MDMwNDAzMDATdW5pMDNCOTAzMDgwMzA0MDMwMRN1bmkwM0I5MDMwODAzMDYwMzAwE3VuaTAzQjkwMzA4MDMwNjAzMDETdW5pMDNDNTAzMDgwMzA0MDMwMBN1bmkwM0M1MDMwODAzMDQwMzAxE3VuaTAzQzUwMzA4MDMwNjAzMDATdW5pMDNDNTAzMDgwMzA2MDMwMQhFbmcuYWx0MQhFbmcuYWx0MghFbmcuYWx0Mwt1bmkxRkNEMDJDOQt1bmkxRkNFMDJDOQt1bmkxRkREMDJDOQt1bmkxRkRFMDJDOQhkb3RhY3V0ZQhjYXJvbmRvdA5tYWNyb25kaWVyZXNpcw10aWxkZWRpZXJlc2lzCnRpbGRlYWN1dGULbWFjcm9uZ3JhdmULbWFjcm9uYWN1dGUNZGllcmVzaXNjYXJvbg5kaWVyZXNpc21hY3Jvbgt0aWxkZW1hY3Jvbglkb3RtYWNyb24NZG90bWFjcm9uLmNhcA91bmkwMzAxMDMwNjAzMDgPdW5pMDMwMDAzMDYwMzA4D3VuaTAzMDEwMzA0MDMwOA91bmkwMzAwMDMwNDAzMDgLdW5pMUZERTAzMDYLdW5pMUZERDAzMDYLdW5pMUZDRTAzMDYLdW5pMUZDRDAzMDYHdW5pMDUxNAd1bmkwNTE1B3VuaTA1MTYHdW5pMDUxNwd1bmkwNTE4B3VuaTA1MTkHdW5pMDUxRQd1bmkwNTFGB3VuaTA1MjAHdW5pMDUyMQd1bmkwNTIyB3VuaTA1MjMHdW5pMDUyNAd1bmkwNTI1B3VuaTA1MjYHdW5pMDUyNw9jeXJpbGxpY19vdG1hcmsHdW5pMjBCQQd1bmkxRUZBB3VuaTJDNkUHdW5pMUU5RQdUdXJuZWRhB3VuaTFFRkMHdW5pMUVGRQd1bmlBNzIyB3VuaUE3MjQHdW5pQTcyNgd1bmlBNzI4B3VuaUE3MkEHdW5pQTcyQwd1bmlBNzJFB3VuaUE3MzIHdW5pQTczNAd1bmlBNzM2B3VuaUE3MzgHdW5pQTczQQd1bmlBNzNDB3VuaUE3M0UHdW5pQTc0MAd1bmlBNzQyB3VuaUE3NDQHdW5pQTc0Ngd1bmlBNzQ4B3VuaUE3NEEHdW5pQTc0Qwd1bmlBNzRFB3VuaUE3NTAHdW5pQTc1Mgd1bmlBNzU0B3VuaUE3NTYHdW5pQTc1OAd1bmlBNzVBB3VuaUE3NUMHdW5pQTc1RQd1bmlBNzYwB3VuaUE3NjQHdW5pQTc2Ngd1bmlBNzY4B3VuaUE3NkEHdW5pQTc2Qwd1bmlBNzZFB3VuaUE3NzkHdW5pQTc3Qgd1bmlBNzdEB3VuaUE3N0UHdW5pQTc4MAd1bmlBNzgyB3VuaUE3ODQHdW5pQTc4Ngd1bmlBNzhEB3VuaUE3OTAHdW5pQTc5Mgd1bmlBN0EwB3VuaUE3QTIHdW5pQTdBNAd1bmlBN0E2B3VuaUE3QTgHdW5pQTdBQQd1bmlBN0FCB3VuaUE3QUMHdW5pQTdBRAd1bmlBN0IwB3VuaUE3QjEHdW5pQTdCMgd1bmlBN0IzB3VuaUE3QjQHdW5pQTdCNg9Bb2dvbmVrLmxvY2xOQVYPRW9nb25lay5sb2NsTkFWD0lvZ29uZWsubG9jbE5BVg9Vb2dvbmVrLmxvY2xOQVYUTGNvbW1hYWNjZW50LmxvY2xNQUgUTmNvbW1hYWNjZW50LmxvY2xNQUgHVHVybmVkZRBhZmlpMTAxMDNkb3RsZXNzEGFmaWkxMDEwNWRvdGxlc3MKZGVsdGFsYXRpbgd1bmkyQzc4B3VuaTAyNUMHdW5pMDI1RAd1bmkwMUREB3VuaTAyNUEOaW9nb25la2RvdGxlc3MHdW5pMDIzNwd1bmkxRUZCB3VuaTFFOUMHdW5pMUU5RAd1bmkyQzdBCnN1YnNjcmlwdGoHdW5pMkM3OQ51bmkwMjQ5ZG90bGVzcw51bmkwMjlEZG90bGVzcw51bmkwMkIyZG90bGVzcw51bmkwM0YzZG90bGVzcw51bmkxRDYyZG90bGVzcw51bmkxRDk2ZG90bGVzcw51bmkxREE0ZG90bGVzcw51bmkxREE4ZG90bGVzcw51bmkxRTJEZG90bGVzcw51bmkxRUNCZG90bGVzcwd1bmlBNzIzB3VuaUE3MjUHdW5pQTcyNwd1bmlBNzI5B3VuaUE3MkIHdW5pQTcyRAd1bmlBNzJGB3VuaUE3MzAHdW5pQTczMQd1bmlBNzMzB3VuaUE3MzUHdW5pQTczNwd1bmlBNzM5B3VuaUE3M0IHdW5pQTczRAd1bmlBNzNGB3VuaUE3NDEHdW5pQTc0Mwd1bmlBNzQ1B3VuaUE3NDcHdW5pQTc0OQd1bmlBNzRCB3VuaUE3NEQHdW5pQTc0Rgd1bmlBNzUxB3VuaUE3NTMHdW5pQTc1NQd1bmlBNzU3B3VuaUE3NTkHdW5pQTc1Qgd1bmlBNzVEB3VuaUE3NUYHdW5pQTc2MQd1bmlBNzY1B3VuaUE3NjcHdW5pQTc2OQd1bmlBNzZCB3VuaUE3NkQHdW5pQTc2Rgd1bmlBNzcxB3VuaUE3NzIHdW5pQTc3Mwd1bmlBNzc0B3VuaUE3NzUHdW5pQTc3Ngd1bmlBNzc3B3VuaUE3NzgHdW5pQTc3QQd1bmlBNzdDB3VuaUE3N0YHdW5pQTc4MQd1bmlBNzgzB3VuaUE3ODUHdW5pQTc4Nwd1bmlBNzhFB3VuaUE3OTEHdW5pQTc5Mwd1bmlBN0ExB3VuaUE3QTMHdW5pQTdBNQd1bmlBN0E3B3VuaUE3QTkHdW5pQTdCNQd1bmlBN0I3B3VuaUE3RkEHdW5pMUVGRAd1bmkxRUZGD2FvZ29uZWsubG9jbE5BVg9lb2dvbmVrLmxvY2xOQVYUbGNvbW1hYWNjZW50LmxvY2xNQUgUbmNvbW1hYWNjZW50LmxvY2xNQUgPaW9nb25lay5sb2NsTkFWD3VvZ29uZWsubG9jbE5BVgNmX2YFZl9mX2kFZl9mX2wDZl9pA2ZfbAdsb25nc190A3NfdARhLnNjCWFhY3V0ZS5zYwlhYnJldmUuc2MOYWNpcmN1bWZsZXguc2MMYWRpZXJlc2lzLnNjCWFncmF2ZS5zYwphbWFjcm9uLnNjCmFvZ29uZWsuc2MIYXJpbmcuc2MNYXJpbmdhY3V0ZS5zYwlhdGlsZGUuc2MFYWUuc2MKYWVhY3V0ZS5zYwRiLnNjBGMuc2MJY2FjdXRlLnNjCWNjYXJvbi5zYwtjY2VkaWxsYS5zYw5jY2lyY3VtZmxleC5zYwdjZG90LnNjBGQuc2MGZXRoLnNjCWRjYXJvbi5zYwlkY3JvYXQuc2MEZS5zYwllYWN1dGUuc2MJZWJyZXZlLnNjCWVjYXJvbi5zYw5lY2lyY3VtZmxleC5zYwxlZGllcmVzaXMuc2MNZWRvdGFjY2VudC5zYwllZ3JhdmUuc2MKZW1hY3Jvbi5zYwplb2dvbmVrLnNjBGYuc2MEZy5zYwlnYnJldmUuc2MOZ2NpcmN1bWZsZXguc2MPZ2NvbW1hYWNjZW50LnNjB2dkb3Quc2MEaC5zYwdoYmFyLnNjDmhjaXJjdW1mbGV4LnNjBGkuc2MJaWFjdXRlLnNjCWlicmV2ZS5zYw5pY2lyY3VtZmxleC5zYwxpZGllcmVzaXMuc2MNaWRvdGFjY2VudC5zYwlpZ3JhdmUuc2MFaWouc2MKaW1hY3Jvbi5zYwppb2dvbmVrLnNjCWl0aWxkZS5zYwRqLnNjDmpjaXJjdW1mbGV4LnNjBGsuc2MPa2NvbW1hYWNjZW50LnNjBGwuc2MJbGFjdXRlLnNjCWxjYXJvbi5zYw9sY29tbWFhY2NlbnQuc2MHbGRvdC5zYwlsc2xhc2guc2MEbS5zYwRuLnNjCW5hY3V0ZS5zYwluY2Fyb24uc2MPbmNvbW1hYWNjZW50LnNjBmVuZy5zYwludGlsZGUuc2MEby5zYwlvYWN1dGUuc2MJb2JyZXZlLnNjDm9jaXJjdW1mbGV4LnNjDG9kaWVyZXNpcy5zYwlvZ3JhdmUuc2MQb2h1bmdhcnVtbGF1dC5zYwpvbWFjcm9uLnNjCW9zbGFzaC5zYw5vc2xhc2hhY3V0ZS5zYwlvdGlsZGUuc2MFb2Uuc2MEcC5zYwh0aG9ybi5zYwRxLnNjBHIuc2MJcmFjdXRlLnNjCXJjYXJvbi5zYw9yY29tbWFhY2NlbnQuc2MEcy5zYwlzYWN1dGUuc2MJc2Nhcm9uLnNjC3NjZWRpbGxhLnNjDnNjaXJjdW1mbGV4LnNjD3Njb21tYWFjY2VudC5zYw1nZXJtYW5kYmxzLnNjBHQuc2MHdGJhci5zYwl0Y2Fyb24uc2MLdGNlZGlsbGEuc2MPdGNvbW1hYWNjZW50LnNjBHUuc2MJdWFjdXRlLnNjCXVicmV2ZS5zYw51Y2lyY3VtZmxleC5zYwx1ZGllcmVzaXMuc2MJdWdyYXZlLnNjEHVodW5nYXJ1bWxhdXQuc2MKdW1hY3Jvbi5zYwp1b2dvbmVrLnNjCHVyaW5nLnNjCXV0aWxkZS5zYwR2LnNjBHcuc2MJd2FjdXRlLnNjDndjaXJjdW1mbGV4LnNjDHdkaWVyZXNpcy5zYwl3Z3JhdmUuc2MEeC5zYwR5LnNjCXlhY3V0ZS5zYw55Y2lyY3VtZmxleC5zYwx5ZGllcmVzaXMuc2MJeWdyYXZlLnNjBHouc2MJemFjdXRlLnNjCXpjYXJvbi5zYw16ZG90YWNjZW50LnNjB3VuaTIwNzEHdW5pQTc4Rgd1bmlBN0Y3B3VuaUE3RkIHdW5pQTdGQwd1bmlBN0ZEB3VuaUE3RkUHdW5pQTdGRgd1bmkwNTI4B3VuaTA1MkEHdW5pMDUyQwd1bmkwNTJFB3VuaUE2NDAHdW5pQTY0Mgd1bmlBNjQ0B3VuaUE2NDYHdW5pQTY0OAd1bmlBNjRBB3VuaUE2NEMHdW5pQTY0RQd1bmlBNjUwB3VuaUE2NTIHdW5pQTY1NAd1bmlBNjU2B3VuaUE2NTgHdW5pQTY1QQd1bmlBNjVDB3VuaUE2NUUHdW5pQTY2MAd1bmlBNjYyB3VuaUE2NjQHdW5pQTY2Ngd1bmlBNjY4B3VuaUE2NkEHdW5pQTY2Qwd1bmlBNjgwB3VuaUE2ODIHdW5pQTY4NAd1bmlBNjg2B3VuaUE2ODgHdW5pQTY4QQd1bmlBNjhDB3VuaUE2OEUHdW5pQTY5MAd1bmlBNjkyB3VuaUE2OTQHdW5pQTY5Ngd1bmlBNjk4B3VuaUE2OUEHdW5pMDUyOQd1bmkwNTJCB3VuaTA1MkQHdW5pMDUyRgd1bmkxQzgwB3VuaTFDODEHdW5pMUM4Mgd1bmkxQzgzB3VuaTFDODQHdW5pMUM4NQd1bmkxQzg2B3VuaTFDODcHdW5pMUM4OAd1bmlBNjQxB3VuaUE2NDMHdW5pQTY0NQd1bmlBNjQ3B3VuaUE2NDkHdW5pQTY0Qgd1bmlBNjREB3VuaUE2NEYHdW5pQTY1MQd1bmlBNjUzB3VuaUE2NTUHdW5pQTY1Nwd1bmlBNjU5B3VuaUE2NUIHdW5pQTY1RAd1bmlBNjVGB3VuaUE2NjEHdW5pQTY2Mwd1bmlBNjY1B3VuaUE2NjcHdW5pQTY2OQd1bmlBNjZCB3VuaUE2NkQHdW5pQTY4MQd1bmlBNjgzB3VuaUE2ODUHdW5pQTY4Nwd1bmlBNjg5B3VuaUE2OEIHdW5pQTY4RAd1bmlBNjhGB3VuaUE2OTEHdW5pQTY5Mwd1bmlBNjk1B3VuaUE2OTcHdW5pQTY5OQd1bmlBNjlCEWFmaWkxMDA2Ni5sb2NsU1JCB3VuaUE2NkUHdW5pQTY3Rgd1bmlBNjlDB3VuaUE2OUQHdW5pMDM3MAd1bmkwMzcyB3VuaTAzNzYHdW5pMDNDRgd1bmkwMzdGB3VuaTAzNzEHdW5pMDM3Mwd1bmkwMzc3C3VuaTAzRDAuYWx0CENmcmFrdHVyCEhmcmFrdHVyCElmcmFrdHVyCFJmcmFrdHVyCFpmcmFrdHVyB3VuaUE3NjIHdW5pQTc2Mwd1bmkyMTJDB3VuaTIxMEIHdW5pMjExMAd1bmkyMTEyDlBpRG91YmxlU3RydWNrB3VuaTIxMUIHVHVybmVkRgd1bmkyMTJCDUNEb3VibGVTdHJ1Y2sNSERvdWJsZVN0cnVjaw1ORG91YmxlU3RydWNrDVBEb3VibGVTdHJ1Y2sNUURvdWJsZVN0cnVjaw1SRG91YmxlU3RydWNrDVpEb3VibGVTdHJ1Y2sTSXRhbGljRERvdWJsZVN0cnVjaxFHYW1tYURvdWJsZVN0cnVjawd1bmkyMTA3B3VuaTIxMkEHdW5pMjEzMAd1bmkyMTMxB3VuaTIxMzMHdW5pQTc5Ngd1bmlBNzk4B3VuaUE3OUEHdW5pQTc5Qwd1bmlBNzlFE0l0YWxpY2REb3VibGVTdHJ1Y2sTSXRhbGljZURvdWJsZVN0cnVjaxNJdGFsaWNpRG91YmxlU3RydWNrE0l0YWxpY2pEb3VibGVTdHJ1Y2sRZ2FtbWFEb3VibGVTdHJ1Y2sOcGlEb3VibGVTdHJ1Y2sHdW5pMjEwRQd1bmkyMTBGB3NjcmlwdGUHc2NyaXB0bwdzY3JpcHRnB3VuaUE3OTQHdW5pQTc5NQd1bmlBNzk3B3VuaUE3OTkHdW5pQTc5Qgd1bmlBNzlEB3VuaUE3OUYHdW5pQUIzMAd1bmlBQjMxB3VuaUFCMzIHdW5pQUIzMwd1bmlBQjM0B3VuaUFCMzUHdW5pQUIzNgd1bmlBQjM3B3VuaUFCMzgHdW5pQUIzOQd1bmlBQjNBB3VuaUFCM0IHdW5pQUIzQwd1bmlBQjNEB3VuaUFCM0UHdW5pQUIzRgd1bmlBQjQwB3VuaUFCNDEHdW5pQUI0Mgd1bmlBQjQzB3VuaUFCNDQHdW5pQUI0NQd1bmlBQjQ2B3VuaUFCNDcHdW5pQUI0OAd1bmlBQjQ5B3VuaUFCNEEHdW5pQUI0Qgd1bmlBQjRDB3VuaUFCNEQHdW5pQUI0RQd1bmlBQjRGB3VuaUFCNTAHdW5pQUI1MQd1bmlBQjUyB3VuaUFCNTMHdW5pQUI1NAd1bmlBQjU1B3VuaUFCNTYHdW5pQUI1Nwd1bmlBQjU4B3VuaUFCNTkHdW5pQUI1QQd1bmlBQjY0B3VuaTIwOTUHdW5pMjA5Ngd1bmkyMDk3B3VuaTIwOTgHdW5pMjA5OQd1bmkyMDlBB3VuaTIwOUIHdW5pMjA5Qwd1bmlBNzcwB3VuaUE3RjgHdW5pQTdGOQd1bmlBQjVDB3VuaUFCNUQHdW5pQUI1RQd1bmlBQjVGB3VuaTJFMkYHemVyby5sZgZvbmUubGYGdHdvLmxmCHRocmVlLmxmB2ZvdXIubGYHZml2ZS5sZgZzaXgubGYIc2V2ZW4ubGYIZWlnaHQubGYHbmluZS5sZgh6ZXJvLm9zZgdvbmUub3NmB3R3by5vc2YJdGhyZWUub3NmCGZvdXIub3NmCGZpdmUub3NmB3NpeC5vc2YJc2V2ZW4ub3NmCWVpZ2h0Lm9zZghuaW5lLm9zZgp6ZXJvLnNsYXNoCXplcm8udG9zZghvbmUudG9zZgh0d28udG9zZgp0aHJlZS50b3NmCWZvdXIudG9zZglmaXZlLnRvc2YIc2l4LnRvc2YKc2V2ZW4udG9zZgplaWdodC50b3NmCW5pbmUudG9zZgl6ZXJvLmRub20Ib25lLmRub20IdHdvLmRub20KdGhyZWUuZG5vbQlmb3VyLmRub20JZml2ZS5kbm9tCHNpeC5kbm9tCnNldmVuLmRub20KZWlnaHQuZG5vbQluaW5lLmRub20JemVyby5udW1yCG9uZS5udW1yCHR3by5udW1yCnRocmVlLm51bXIJZm91ci5udW1yCWZpdmUubnVtcghzaXgubnVtcgpzZXZlbi5udW1yCmVpZ2h0Lm51bXIJbmluZS5udW1yB3VuaTIxNUYHdW5pMjE4OQd1bmkyMTU1B3VuaTIxNTYHdW5pMjE1Nwd1bmkyMTU4B3VuaTIxNTkHdW5pMjE1QQd1bmkyMTUwB3VuaTIxNTEHdW5pMjE1Mgd1bmkyMDgwB3VuaTIwODEHdW5pMjA4Mgd1bmkyMDgzB3VuaTIwODQHdW5pMjA4NQd1bmkyMDg2B3VuaTIwODcHdW5pMjA4OAd1bmkyMDg5B3VuaTIwNDIHdW5pMjA0Qwd1bmkyMDREB3VuaTIwNDUHdW5pMjA0NgVjYXJldAd1bmkyMDQxB3VuaTIwNDAHdW5pMjA1MAd1bmkyRTM2B3VuaTJFMzcHdW5pMjA1Qwd1bmkyRTEzB3VuaTJFMTYHdW5pMkUwOA9kb3dud2FyZHNhbmNvcmEHdW5pMkUwRQd1bmkyMDQ5B3VuaTJFMkQHdW5pMjA1OQd1bmkyMDU1B3VuaTJFMTAHdW5pMjA1Qgd1bmkyMDU4B3VuaTIwMjcHdW5pMjA0Mwd1bmkyRTEyB3VuaTJFMTgHdW5pMjA1NAd1bmkyRTA0B3VuaTJFMUMHdW5pMkUwQwd1bmkyRTAyB3VuaTJFMDkHdW5pMkUyMAd1bmkyMDRFDm9uZWRvdGVubGVhZGVyHG9uZWRvdG92ZXJ0d29kb3RzcHVuY3R1YXRpb24HdW5pMkUxOQd1bmkyRTBGB3VuaTIwNDcHdW5pMjA0OAd1bmkyRTM0B3VuaTJFMzMHdW5pMkUwNwd1bmkyRTA2B3VuaTJFMEIHdW5pMjAzQgd1bmkyRTExEXJldmVyc2VkcGFyYWdyYXBoFHJldmVyc2VkcXVlc3Rpb25tYXJrB3VuaTIwNEYHdW5pMkUwMQd1bmkyRTAwB3VuaTJFMDUHdW5pMkUxRAd1bmkyRTBEB3VuaTJFMDMHdW5pMkUwQQd1bmkyRTIxB3VuaTJFMzAZc3F1YXJlZGZvdXJkb3RwdW5jdHVhdGlvbgd1bmkyMDUzB3VuaTIwNTYHdW5pMkUxRQd1bmkyRTFGB3VuaTJFMUIHdW5pMjA0QQd1bmkyRTM5B3VuaTIwNUQHdW5pMkUzMgd1bmkyRTM4B3VuaTJFMzUHdW5pMjA1MQ50d29kb3RlbmxlYWRlcgd1bmkyMDVBHHR3b2RvdHNvdmVyb25lZG90cHVuY3R1YXRpb24HdW5pMjAzRgd1bmkyMDIzB3VuaTJFM0MHdW5pMkUzRAd1bmkyRTNFB3VuaTJFM0YHdW5pMkU0MQd1bmlBNjczDXVwd2FyZHNhbmNvcmEHdW5pMkUzMQd1bmkyMDhEB3VuaTIwOEUTYnJhY2toYWxmYm90dG9tbGVmdBRicmFja2hhbGZib3R0b21yaWdodBBicmFja2hhbGZ0b3BsZWZ0EWJyYWNraGFsZnRvcHJpZ2h0FWxlZnRkb3VibGVwYXJlbnRoZXNpcxZyaWdodGRvdWJsZXBhcmVudGhlc2lzB3VuaTJFMjYHdW5pMkUyNwd1bmkyMDdEB3VuaTIwN0UHdW5pMkUxQQd1bmkyMDEwB3VuaTIwMTEHdW5pMkUzQgd1bmkyRTNBB3VuaTJFNDAHdW5pMjAzNgd1bmkyMDM1B3VuaTIwNTcHdW5pMjAzNwd1bmkyRTQyDGJyYWNlbGVmdC5zYw1icmFjZXJpZ2h0LnNjDmJyYWNrZXRsZWZ0LnNjD2JyYWNrZXRyaWdodC5zYwlleGNsYW0uc2MMZXhjbGFtZGJsLnNjDWV4Y2xhbWRvd24uc2MQZ3VpbHNpbmdsbGVmdC5zYxFndWlsc2luZ2xyaWdodC5zYwxwYXJlbmxlZnQuc2MNcGFyZW5yaWdodC5zYwtxdWVzdGlvbi5zYw9xdWVzdGlvbmRvd24uc2MHdW5pQTkyRQd1bmlBNjdFB3VuaTIwNUYHdW5pMjAyOAd1bmkyMDI5B3VuaTIwNjEHdW5pMjA2NAd1bmkyMDYzB3VuaTIwNjIHdW5pMjA2Ngd1bmkyMDY3B3VuaTIwNjgHdW5pMjA2OQd1bmkyMDYwB3VuaTIwQjYHdW5pMjBCQwd1bmkyMEJEB3VuaTIwQUEHdW5pMjBCNwd1bmkyMEI4B3VuaTIwQkIHdW5pMjBCRQd1bmkyMTI3B3VuaTIxMzUHdW5pMjE0Qgd1bmkyMTM2B3VuaTIwNTIHdW5pMjEzOAd1bmkyMDhDB3VuaTIwN0MHdW5pMjEzNwd1bmkyMDhCB3VuaTIwN0IHdW5pMjAzMQd1bmkyMDhBB3VuaTIwN0EScmV2ZXJzZWRTYW5zU2VyaWZMFXN1bW1hdGlvbkRvdWJsZVN0cnVjaxB0dXJuZWRTYW5zU2VyaWZHEHR1cm5lZFNhbnNTZXJpZkwQdHVybmVkU2Fuc1NlcmlmWQhSb3RhdGVkUQd1bmkyMTAwB3VuaTIxMDEHdW5pMjEwNgd1bmkyMTAzB3VuaTIxMDQHdW5pMjEzQgd1bmkyMTA5B3VuaTIxMzkHdW5pMjAzRAd1bmkyMTE0B3VuaTIxMjUHdW5pMjE0QwxwcmVzY3JpcHRpb24HdW5pMjE0QQd1bmkyMTFGB3VuaTIxMDgHdW5pMjEyMBhzeW1ib2xmb3JzYW1hcml0YW5zb3VyY2UHdW5pMjEyMQd1bmkyMTIzC3dlaWVyc3RyYXNzB3VuaTAyREUXdW5pMDJFNV91bmkwMkU1X3VuaTAyRTkXdW5pMDJFNV91bmkwMkU1X3VuaTAyRTYXdW5pMDJFNV91bmkwMkU1X3VuaTAyRTgXdW5pMDJFNV91bmkwMkU1X3VuaTAyRTcPdW5pMDJFNV91bmkwMkU5F3VuaTAyRTVfdW5pMDJFOV91bmkwMkU1F3VuaTAyRTVfdW5pMDJFOV91bmkwMkU5F3VuaTAyRTVfdW5pMDJFOV91bmkwMkU2F3VuaTAyRTVfdW5pMDJFOV91bmkwMkU4F3VuaTAyRTVfdW5pMDJFOV91bmkwMkU3D3VuaTAyRTVfdW5pMDJFNhd1bmkwMkU1X3VuaTAyRTZfdW5pMDJFNRd1bmkwMkU1X3VuaTAyRTZfdW5pMDJFORd1bmkwMkU1X3VuaTAyRTZfdW5pMDJFNhd1bmkwMkU1X3VuaTAyRTZfdW5pMDJFOBd1bmkwMkU1X3VuaTAyRTZfdW5pMDJFNw91bmkwMkU1X3VuaTAyRTgXdW5pMDJFNV91bmkwMkU4X3VuaTAyRTUXdW5pMDJFNV91bmkwMkU4X3VuaTAyRTkXdW5pMDJFNV91bmkwMkU4X3VuaTAyRTYXdW5pMDJFNV91bmkwMkU4X3VuaTAyRTgXdW5pMDJFNV91bmkwMkU4X3VuaTAyRTcPdW5pMDJFNV91bmkwMkU3F3VuaTAyRTVfdW5pMDJFN191bmkwMkU1F3VuaTAyRTVfdW5pMDJFN191bmkwMkU5F3VuaTAyRTVfdW5pMDJFN191bmkwMkU2F3VuaTAyRTVfdW5pMDJFN191bmkwMkU4F3VuaTAyRTVfdW5pMDJFN191bmkwMkU3D3VuaTAyRTlfdW5pMDJFNRd1bmkwMkU5X3VuaTAyRTVfdW5pMDJFNRd1bmkwMkU5X3VuaTAyRTVfdW5pMDJFORd1bmkwMkU5X3VuaTAyRTVfdW5pMDJFNhd1bmkwMkU5X3VuaTAyRTVfdW5pMDJFOBd1bmkwMkU5X3VuaTAyRTVfdW5pMDJFNxd1bmkwMkU5X3VuaTAyRTlfdW5pMDJFNRd1bmkwMkU5X3VuaTAyRTlfdW5pMDJFNhd1bmkwMkU5X3VuaTAyRTlfdW5pMDJFOBd1bmkwMkU5X3VuaTAyRTlfdW5pMDJFNw91bmkwMkU5X3VuaTAyRTYXdW5pMDJFOV91bmkwMkU2X3VuaTAyRTUXdW5pMDJFOV91bmkwMkU2X3VuaTAyRTkXdW5pMDJFOV91bmkwMkU2X3VuaTAyRTYXdW5pMDJFOV91bmkwMkU2X3VuaTAyRTgXdW5pMDJFOV91bmkwMkU2X3VuaTAyRTcPdW5pMDJFOV91bmkwMkU4F3VuaTAyRTlfdW5pMDJFOF91bmkwMkU1F3VuaTAyRTlfdW5pMDJFOF91bmkwMkU5F3VuaTAyRTlfdW5pMDJFOF91bmkwMkU2F3VuaTAyRTlfdW5pMDJFOF91bmkwMkU4F3VuaTAyRTlfdW5pMDJFOF91bmkwMkU3D3VuaTAyRTlfdW5pMDJFNxd1bmkwMkU5X3VuaTAyRTdfdW5pMDJFNRd1bmkwMkU5X3VuaTAyRTdfdW5pMDJFORd1bmkwMkU5X3VuaTAyRTdfdW5pMDJFNhd1bmkwMkU5X3VuaTAyRTdfdW5pMDJFOBd1bmkwMkU5X3VuaTAyRTdfdW5pMDJFNw91bmkwMkU2X3VuaTAyRTUXdW5pMDJFNl91bmkwMkU1X3VuaTAyRTUXdW5pMDJFNl91bmkwMkU1X3VuaTAyRTkXdW5pMDJFNl91bmkwMkU1X3VuaTAyRTYXdW5pMDJFNl91bmkwMkU1X3VuaTAyRTgXdW5pMDJFNl91bmkwMkU1X3VuaTAyRTcPdW5pMDJFNl91bmkwMkU5F3VuaTAyRTZfdW5pMDJFOV91bmkwMkU1F3VuaTAyRTZfdW5pMDJFOV91bmkwMkU5F3VuaTAyRTZfdW5pMDJFOV91bmkwMkU2F3VuaTAyRTZfdW5pMDJFOV91bmkwMkU4F3VuaTAyRTZfdW5pMDJFOV91bmkwMkU3F3VuaTAyRTZfdW5pMDJFNl91bmkwMkU1F3VuaTAyRTZfdW5pMDJFNl91bmkwMkU5F3VuaTAyRTZfdW5pMDJFNl91bmkwMkU4F3VuaTAyRTZfdW5pMDJFNl91bmkwMkU3D3VuaTAyRTZfdW5pMDJFOBd1bmkwMkU2X3VuaTAyRThfdW5pMDJFNRd1bmkwMkU2X3VuaTAyRThfdW5pMDJFORd1bmkwMkU2X3VuaTAyRThfdW5pMDJFNhd1bmkwMkU2X3VuaTAyRThfdW5pMDJFOBd1bmkwMkU2X3VuaTAyRThfdW5pMDJFNw91bmkwMkU2X3VuaTAyRTcXdW5pMDJFNl91bmkwMkU3X3VuaTAyRTUXdW5pMDJFNl91bmkwMkU3X3VuaTAyRTkXdW5pMDJFNl91bmkwMkU3X3VuaTAyRTYXdW5pMDJFNl91bmkwMkU3X3VuaTAyRTgXdW5pMDJFNl91bmkwMkU3X3VuaTAyRTcPdW5pMDJFOF91bmkwMkU1F3VuaTAyRThfdW5pMDJFNV91bmkwMkU1F3VuaTAyRThfdW5pMDJFNV91bmkwMkU5F3VuaTAyRThfdW5pMDJFNV91bmkwMkU2F3VuaTAyRThfdW5pMDJFNV91bmkwMkU4F3VuaTAyRThfdW5pMDJFNV91bmkwMkU3D3VuaTAyRThfdW5pMDJFORd1bmkwMkU4X3VuaTAyRTlfdW5pMDJFNRd1bmkwMkU4X3VuaTAyRTlfdW5pMDJFORd1bmkwMkU4X3VuaTAyRTlfdW5pMDJFNhd1bmkwMkU4X3VuaTAyRTlfdW5pMDJFOBd1bmkwMkU4X3VuaTAyRTlfdW5pMDJFNw91bmkwMkU4X3VuaTAyRTYXdW5pMDJFOF91bmkwMkU2X3VuaTAyRTUXdW5pMDJFOF91bmkwMkU2X3VuaTAyRTkXdW5pMDJFOF91bmkwMkU2X3VuaTAyRTYXdW5pMDJFOF91bmkwMkU2X3VuaTAyRTgXdW5pMDJFOF91bmkwMkU2X3VuaTAyRTcXdW5pMDJFOF91bmkwMkU4X3VuaTAyRTUXdW5pMDJFOF91bmkwMkU4X3VuaTAyRTkXdW5pMDJFOF91bmkwMkU4X3VuaTAyRTYXdW5pMDJFOF91bmkwMkU4X3VuaTAyRTcPdW5pMDJFOF91bmkwMkU3F3VuaTAyRThfdW5pMDJFN191bmkwMkU1F3VuaTAyRThfdW5pMDJFN191bmkwMkU5F3VuaTAyRThfdW5pMDJFN191bmkwMkU2F3VuaTAyRThfdW5pMDJFN191bmkwMkU4F3VuaTAyRThfdW5pMDJFN191bmkwMkU3D3VuaTAyRTdfdW5pMDJFNRd1bmkwMkU3X3VuaTAyRTVfdW5pMDJFNRd1bmkwMkU3X3VuaTAyRTVfdW5pMDJFORd1bmkwMkU3X3VuaTAyRTVfdW5pMDJFNhd1bmkwMkU3X3VuaTAyRTVfdW5pMDJFOBd1bmkwMkU3X3VuaTAyRTVfdW5pMDJFNw91bmkwMkU3X3VuaTAyRTkXdW5pMDJFN191bmkwMkU5X3VuaTAyRTUXdW5pMDJFN191bmkwMkU5X3VuaTAyRTkXdW5pMDJFN191bmkwMkU5X3VuaTAyRTYXdW5pMDJFN191bmkwMkU5X3VuaTAyRTgXdW5pMDJFN191bmkwMkU5X3VuaTAyRTcPdW5pMDJFN191bmkwMkU2F3VuaTAyRTdfdW5pMDJFNl91bmkwMkU1F3VuaTAyRTdfdW5pMDJFNl91bmkwMkU5F3VuaTAyRTdfdW5pMDJFNl91bmkwMkU2F3VuaTAyRTdfdW5pMDJFNl91bmkwMkU4F3VuaTAyRTdfdW5pMDJFNl91bmkwMkU3D3VuaTAyRTdfdW5pMDJFOBd1bmkwMkU3X3VuaTAyRThfdW5pMDJFNRd1bmkwMkU3X3VuaTAyRThfdW5pMDJFORd1bmkwMkU3X3VuaTAyRThfdW5pMDJFNhd1bmkwMkU3X3VuaTAyRThfdW5pMDJFOBd1bmkwMkU3X3VuaTAyRThfdW5pMDJFNxd1bmkwMkU3X3VuaTAyRTdfdW5pMDJFNRd1bmkwMkU3X3VuaTAyRTdfdW5pMDJFORd1bmkwMkU3X3VuaTAyRTdfdW5pMDJFNhd1bmkwMkU3X3VuaTAyRTdfdW5pMDJFOAd1bmlBQjVCDGFtcGVyc2FuZC5zYwd1bmkyMTI5B3VuaTAzMDgHdW5pMDMwNwlncmF2ZWNvbWIJYWN1dGVjb21iB3VuaTAzMEIHdW5pMDMwMgd1bmkwMzBDB3VuaTAzMDYHdW5pMDMwQQl0aWxkZWNvbWIHdW5pMDMwNAtvdmVybGluZWNtYgd1bmkwMzBEB3VuaTAzMEUHdW5pMDMwRgd1bmkwMzEwB3VuaTAzMTEHdW5pMDMxMgd1bmkwMzEzB3VuaTAzMTQHdW5pMDMxNQd1bmkwMzE2B3VuaTAzMTcHdW5pMDMxOAd1bmkwMzE5B3VuaTAzMUEHdW5pMDMxQgd1bmkwMzFDB3VuaTAzMUQHdW5pMDMxRQd1bmkwMzFGB3VuaTAzMjAYaG9va3BhbGF0YWxpemVkYmVsb3djb21iFmhvb2tyZXRyb2ZsZXhiZWxvd2NvbWIMZG90YmVsb3djb21iB3VuaTAzMjQHdW5pMDMyNQd1bmkwMzI3B3VuaTAzMjgHdW5pMDMyOQd1bmkwMzJBB3VuaTAzMkIHdW5pMDMyQwd1bmkwMzJEB3VuaTAzMkUHdW5pMDMyRgd1bmkwMzMwB3VuaTAzMzEHdW5pMDMzMgd1bmkwMzMzB3VuaTAzMzQWc3Ryb2tlc2hvcnRvdmVybGF5Y29tYhVzdHJva2Vsb25nb3ZlcmxheWNvbWIVc2xhc2hzaG9ydG92ZXJsYXljb21iFHNsYXNobG9uZ292ZXJsYXljb21iB3VuaTAzMzkHdW5pMDMzQQd1bmkwMzNCB3VuaTAzM0MHdW5pMDMzRAd1bmkwMzNFB3VuaTAzM0YHdW5pMDM0MAd1bmkwMzQxB3VuaTAzNDYHdW5pMDM0Nwd1bmkwMzQ4B3VuaTAzNDkHdW5pMDM0QQd1bmkwMzRCB3VuaTAzNEMHdW5pMDM0RAd1bmkwMzRFB3VuaTAzNEYHdW5pMDM1MAd1bmkwMzUxB3VuaTAzNTIHdW5pMDM1Mwd1bmkwMzU0B3VuaTAzNTUHdW5pMDM1Ngd1bmkwMzU3B3VuaTAzNTgHdW5pMDM1OQd1bmkwMzVBB3VuaTAzNUIHdW5pMDM1Qwd1bmkwMzVEB3VuaTAzNUUHdW5pMDM1Rgd1bmkwMzYwB3VuaTAzNjEHdW5pMDM2Mg9hY3V0ZWdyYXZlYWN1dGULYWN1dGVtYWNyb24HdW5pMURGRQd1bmkxREZGC2JyZXZlbWFjcm9uGWNvbWJpbmluZ2NvbmpvaW5pbmdtYWNyb24XY29tYmluaW5nbWFjcm9ubGVmdGhhbGYYY29tYmluaW5nbWFjcm9ucmlnaHRoYWxmC2RvdHRlZGFjdXRlC2RvdHRlZGdyYXZlFWRvdWJsZWNpcmN1bWZsZXhhYm92ZQ9ncmF2ZWFjdXRlZ3JhdmULZ3JhdmVtYWNyb24HdW5pMUREMAd1bmkxREM0C21hY3JvbmJyZXZlB3VuaTFEQzYLb2dvbmVrYWJvdmUKc25ha2ViZWxvdw5zdXNwZW5zaW9ubWFyawd1bmkxQUIwB3VuaTFBQjEHdW5pMUFCMgd1bmkxQUIzB3VuaTFBQjQHdW5pMUFCNQd1bmkxQUI2B3VuaTFBQjcHdW5pMUFCOAd1bmkxQUI5B3VuaTFBQkEHdW5pMUFCQgd1bmkxQUJDB3VuaTFBQkQHdW5pMURFNwd1bmkxREU4B3VuaTFERTkHdW5pMURFQQd1bmkxREVCB3VuaTFERUMHdW5pMURFRAd1bmkxREVFB3VuaTFERUYHdW5pMURGMAd1bmkxREYxB3VuaTFERjIHdW5pMURGMwd1bmkxREY0B3VuaTFERjUHdW5pMURGQgd1bmkxREZDB3VuaTFERkQHdW5pMkRFMAd1bmkyREUxB3VuaTJERTIHdW5pMkRFMwd1bmkyREU0B3VuaTJERTUHdW5pMkRFNgd1bmkyREU3B3VuaTJERTgHdW5pMkRFOQd1bmkyREVBB3VuaTJERUIHdW5pMkRFQwd1bmkyREVEB3VuaTJERUUHdW5pMkRFRgd1bmkyREYwB3VuaTJERjEHdW5pMkRGMgd1bmkyREYzB3VuaTJERjQHdW5pMkRGNQd1bmkyREY2B3VuaTJERjcHdW5pMkRGOAd1bmkyREY5B3VuaTJERkEHdW5pMkRGQgd1bmkyREZDB3VuaTJERkQHdW5pMkRGRQd1bmkyREZGB3VuaUZFMDAHdW5pRkUyNwd1bmlGRTI4B3VuaUZFMjkHdW5pRkUyQQd1bmlGRTJCB3VuaUZFMkMHdW5pRkUyRAd1cmFib3ZlB3VzYWJvdmULemlnemFnYmVsb3cHdW5pMUFCRQ9kaWVyZXNpc2NvbWIuc2MQZG90YWNjZW50Y29tYi5zYwxncmF2ZWNvbWIuc2MMYWN1dGVjb21iLnNjE2h1bmdhcnVtbGF1dGNvbWIuc2MRY2lyY3VtZmxleGNvbWIuc2MMY2Fyb25jb21iLnNjDGJyZXZlY29tYi5zYwtyaW5nY29tYi5zYwx0aWxkZWNvbWIuc2MNbWFjcm9uY29tYi5zYw1vZ29uZWtjb21iLnNjDG92ZXJzY29yZS5zYwd1bmkwMzQyB3VuaTAzNDMHdW5pMDM0NAd1bmkwMzQ1B3VuaTA0ODMHdW5pMDQ4NAd1bmkwNDg1B3VuaTA0ODYHdW5pMDQ4Nwd1bmlBNjZGB3VuaUE2NzQHdW5pQTY3NQd1bmlBNjc2B3VuaUE2NzcHdW5pQTY3OAd1bmlBNjc5B3VuaUE2N0EHdW5pQTY3Qgd1bmlBNjdDB3VuaUE2N0QHdW5pQTY5RQd1bmlBNjlGB3VuaUZFMkUHdW5pRkUyRgd1bmlBNjcwB3VuaUE2NzEHdW5pQTY3Mgd1bmkxRERCB3VuaTFEREUHdW5pMURERgd1bmkxREUxB3VuaTFERTIHdW5pMDM2Mwd1bmkxREQ0B3VuaTFERDUHdW5pMURENgd1bmkxREQ3B3VuaTAzNjgHdW5pMDM2OQd1bmkwMzY0B3VuaTFERDkTZmxhdHRlbmVkb3BlbmFhYm92ZQd1bmkxRERBB3VuaTAzNkEHdW5pMDM2NQd1bmkxREQ4B3VuaTFEREMHdW5pMURERAd1bmkxREU1B3VuaTAzNkIHdW5pMURFMAd1bmkwMzY2B3VuaTFEQ0EHdW5pMDM2Qwd1bmkxREUzB3VuaTFERTQHdW5pMDM2RAd1bmkwMzY3B3VuaTAzNkUHdW5pMDM2Rgd1bmkxREU2B3VuaTJDN0QMY29tbWFhY2NlbnQyB3VuaTJDNzAHdW5pMkM3RQd1bmkyQzdGB3VuaUFCNjUHdW5pQTdBRQd1bmlBQjYwB3VuaUFCNjEHdW5pQUI2Mgd1bmlBQjYzGXN1bW1hdGlvbkRvdWJsZVN0cnVjay5taXIHdW5pMjBCRgd1bmkyRTQzB3VuaTJFNDQHdW5pQTcwMAd1bmlBNzAxB3VuaUE3MDIHdW5pQTcwMwd1bmlBNzA0B3VuaUE3MDUHdW5pQTcwNgd1bmlBNzA3B3VuaUE3MDgHdW5pQTcwOQd1bmlBNzBBB3VuaUE3MEIHdW5pQTcwQwd1bmlBNzBEB3VuaUE3MEUHdW5pQTcwRgd1bmlBNzEwB3VuaUE3MTEHdW5pQTcxMgd1bmlBNzEzB3VuaUE3MTQHdW5pQTcxNQd1bmlBNzE2AAAAAAEAAf//AA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtAG0AVwBXAsoAAAIbAAD/EAQt/tsC1P/2AiX/9v8QBC3+2wBtAG0AVwBXAsr/9gL4Ahv/9v8QBC3+2wLV//YC/QIl//b/EAQt/tsAbQBtAFcAVwI/AAAELf7bAkj/+AQt/tsAbQBt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QCstsIksswkEAgNFWCEbIyFZQiuwCGWwAyRQeLEFARVFWDBZLQAAAABLuADIUlixAQGOWbABuQgACABjcLEAB0JAC7WhjQBvXwBDLwkAKrEAB0JAFKgIlAiACHYDZgZWBkoENggkBwkIKrEAB0JAFLIGngaKBnsBbgReBFACQAYtBQkIKrEAEEJBCypAJUAgQB3AGcAVwBLADcAJQAAJAAkqsQAZQkELAEAAQABAAEAAQABAAEAAQABAAAkACSqxAwBEsSQBiFFYsECIWLEDZESxKAGIUVi4CACIWLEDAERZG7EnAYhRWLoIgAABBECIY1RYsQMARFlZWVlZQBSqCJYIggh4A2gGWAZMBDgIJgcJDCq4Af+FsASNsQIARLMFZAYAREQAAAAKdHRmYXV0b2hpbnQgdmVyc2lvbiA9IDEuNwoKYWRqdXN0LXN1YmdseXBocyA9IDAKZGVmYXVsdC1zY3JpcHQgPSBsYXRuCmR3LWNsZWFydHlwZS1zdHJvbmctc3RlbS13aWR0aCA9IDAKZmFsbGJhY2stc2NhbGluZyA9IDAKZmFsbGJhY2stc2NyaXB0ID0gbm9uZQpmYWxsYmFjay1zdGVtLXdpZHRoID0gMApnZGktY2xlYXJ0eXBlLXN0cm9uZy1zdGVtLXdpZHRoID0gMQpncmF5LXN0cm9uZy1zdGVtLXdpZHRoID0gMApoaW50aW5nLWxpbWl0ID0gMjAwCmhpbnRpbmctcmFuZ2UtbWF4ID0gNTAKaGludGluZy1yYW5nZS1taW4gPSA4CmhpbnQtY29tcG9zaXRlcyA9IDAKaWdub3JlLXJlc3RyaWN0aW9ucyA9IDAKaW5jcmVhc2UteC1oZWlnaHQgPSAxNApyZWZlcmVuY2UgPSAKcmVmZXJlbmNlLWluZGV4ID0gMApzeW1ib2wgPSAwClRURkEtaW5mbyA9IDEKd2luZG93cy1jb21wYXRpYmlsaXR5ID0gMQp4LWhlaWdodC1zbmFwcGluZy1leGNlcHRpb25zID0gCmNvbnRyb2wtaW5zdHJ1Y3Rpb25zID0gCgoKAA==\"","module.exports = \"T1RUTwAOAIAAAwBgQkFTRYselLEAA0f4AAAAOkNGRiCkrsYlAAA1cAABsWFEU0lH3DVp8QADSDQAABx4R0RFRmHWY74AAf0wAAACtEdQT1PojzgVAAIeMAABKchHU1VCbjuk3AAB/+QAAB5MT1MvMl+WmtkAAAFQAAAAYGNtYXB2jTkgAAAMDAAAKURoZWFkEAhqGQAAAOwAAAA2aGhlYQvaDEUAAAEkAAAAJGhtdHiQIqJwAAHm1AAAFlptYXhwBZdQAAAAAUgAAAAGbmFtZdba4s8AAAGwAAAKWXBvc3T/uAAyAAA1UAAAACAAAQAAAAIAAERZq0ZfDzz1AAMD6AAAAADUkpNPAAAAANSSk0//EP6xCLsD6gAAAAMAAgAAAAAAAAABAAAEDP6xAAAI4/8Q/xoIuwABAAAAAAAAAAAAAAAAAAAFlgAAUAAFlwAAAAMCKgGQAAUAAAKKAlgAAABLAooCWAAAAV4AMgEdAAACBAYDBQQFAgIEIAAChwIAAAMAAAAAAAAAAEFEQk8AQAAg//8C2v7yAAAEDAFPIAABnwAAAAAB2wKeAAAAIAADAAAAGgE+AAEAAAAAAAAAcAAAAAEAAAAAAAEAEABwAAEAAAAAAAIABwCAAAEAAAAAAAMAJwCHAAEAAAAAAAQAEABwAAEAAAAAAAUAOQCuAAEAAAAAAAYAFgDnAAEAAAAAAAcAYAD9AAEAAAAAAAgAGgFdAAEAAAAAAAkAEQF3AAEAAAAAAAsAGQGIAAEAAAAAAA0BTgGhAAEAAAAAAA4AGgLvAAMAAQQJAAAA4AMJAAMAAQQJAAEAIAPpAAMAAQQJAAIADgQJAAMAAQQJAAMATgQXAAMAAQQJAAQAIAPpAAMAAQQJAAUAcgRlAAMAAQQJAAYALATXAAMAAQQJAAcAwAUDAAMAAQQJAAgANAXDAAMAAQQJAAkAIgX3AAMAAQQJAAsAMgYZAAMAAQQJAA0CnAZLAAMAAQQJAA4ANAjnQ29weXJpZ2h0IDIwMTQsIDIwMTUsIDIwMTYgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgKGh0dHA6Ly93d3cuYWRvYmUuY29tLyksIHdpdGggUmVzZXJ2ZWQgRm9udCBOYW1lICdTb3VyY2UnLlNvdXJjZSBTZXJpZiBQcm9SZWd1bGFyMi4wMDA7QURCTztTb3VyY2VTZXJpZlByby1SZWd1bGFyO0FET0JFVmVyc2lvbiAyLjAwMDtQUyAxLjA7aG90Y29udiAxNi42LjUxO21ha2VvdGYubGliMi41LjY1MjIwU291cmNlU2VyaWZQcm8tUmVndWxhclNvdXJjZSBpcyBhIHRyYWRlbWFyayBvZiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZCBpbiB0aGUgVW5pdGVkIFN0YXRlcyBhbmQvb3Igb3RoZXIgY291bnRyaWVzLkFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkRnJhbmsgR3JpZadoYW1tZXJodHRwOi8vd3d3LmFkb2JlLmNvbS90eXBlVGhpcyBGb250IFNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBTSUwgT3BlbiBGb250IExpY2Vuc2UsIFZlcnNpb24gMS4xLg0KDQpUaGlzIEZvbnQgU29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgU0lMIE9wZW4gRm9udCBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UsIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyBnb3Zlcm5pbmcgeW91ciB1c2Ugb2YgdGhpcyBGb250IFNvZnR3YXJlLmh0dHA6Ly9zY3JpcHRzLnNpbC5vcmcvT0ZMAEMAbwBwAHkAcgBpAGcAaAB0ACAAMgAwADEANAAsACAAMgAwADEANQAsACAAMgAwADEANgAgAEEAZABvAGIAZQAgAFMAeQBzAHQAZQBtAHMAIABJAG4AYwBvAHIAcABvAHIAYQB0AGUAZAAgACgAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAZABvAGIAZQAuAGMAbwBtAC8AKQAsACAAdwBpAHQAaAAgAFIAZQBzAGUAcgB2AGUAZAAgAEYAbwBuAHQAIABOAGEAbQBlACAAJwBTAG8AdQByAGMAZQAnAC4AUwBvAHUAcgBjAGUAIABTAGUAcgBpAGYAIABQAHIAbwBSAGUAZwB1AGwAYQByADIALgAwADAAMAA7AEEARABCAE8AOwBTAG8AdQByAGMAZQBTAGUAcgBpAGYAUAByAG8ALQBSAGUAZwB1AGwAYQByADsAQQBEAE8AQgBFAFYAZQByAHMAaQBvAG4AIAAyAC4AMAAwADAAOwBQAFMAIAAxAC4AMAA7AGgAbwB0AGMAbwBuAHYAIAAxADYALgA2AC4ANQAxADsAbQBhAGsAZQBvAHQAZgAuAGwAaQBiADIALgA1AC4ANgA1ADIAMgAwAFMAbwB1AHIAYwBlAFMAZQByAGkAZgBQAHIAbwAtAFIAZQBnAHUAbABhAHIAUwBvAHUAcgBjAGUAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABBAGQAbwBiAGUAIABTAHkAcwB0AGUAbQBzACAASQBuAGMAbwByAHAAbwByAGEAdABlAGQAIABpAG4AIAB0AGgAZQAgAFUAbgBpAHQAZQBkACAAUwB0AGEAdABlAHMAIABhAG4AZAAvAG8AcgAgAG8AdABoAGUAcgAgAGMAbwB1AG4AdAByAGkAZQBzAC4AQQBkAG8AYgBlACAAUwB5AHMAdABlAG0AcwAgAEkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkAEYAcgBhAG4AawAgAEcAcgBpAGUA3wBoAGEAbQBtAGUAcgBoAHQAdABwADoALwAvAHcAdwB3AC4AYQBkAG8AYgBlAC4AYwBvAG0ALwB0AHkAcABlAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADEALgAxAC4ADQAKAA0ACgBUAGgAaQBzACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAGkAcwAgAGQAaQBzAHQAcgBpAGIAdQB0AGUAZAAgAG8AbgAgAGEAbgAgACcAQQBTACAASQBTACcAIABCAEEAUwBJAFMALAAgAFcASQBUAEgATwBVAFQAIABXAEEAUgBSAEEATgBUAEkARQBTACAATwBSACAAQwBPAE4ARABJAFQASQBPAE4AUwAgAE8A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AQ4AXAEMAF0BDQBZAQkAawEbAGcBFwBoARgAaQEZAHABIABuAR4AfAEsAHYBJgB4AScAdwEtAH0BLwB+ATABMQB/ATIAgQE0AIABMwCCATUAhgE5AIkBPACNAUAAigE9AUIAlwFLAJMBRwCYAUwAqAFcAKkBXQCrAV4AqgFfAK8BYwCzAWcAsQFlALABZAC4AW0AtwFsANIBiADAAXYAxAF6AMEBdwDCAXgAwwF5ANQBigDZAY8A2ADfAZUA4QGXAOABlgFqAKEBVQDMAYIAQgDyAHkBKQCZAU0AxQF7AMkBfwDGAXwAxwF9AMgBfgBqARoAiwE+ALIBZgC5AW4CiQKRApYCmAL/Av4DDAMPAw0DEwMJAw4CiwKSApcDFAMWAxgDGgMcAx4DIAMiAzEDJAMmAygDMAMvA5wDngNlA5gDZgNnA2gDawNtA5ADXgNfA2ADYQNiA2MDZANpA2wDhwOIA4kDigORA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgOGA38DgAOBA4IDgwOEA4UDiwOOA4wDjQOPA9EEHAPSBB0D0wQeA9QEHwPVBCAD1gQhA9cEIgPYBCMD2QQkA9oEJQPbBCYD3AQnA90EKAPeBCkD3wQqA+AEKwPhA+IELAQtA+MELgPkBC8D5QQwA+YEMQPnBDID6AQzA+kENAPqBDUD6wQ2AoECgwKEAooCjAKPApMClABUAQQAVQEFAGwBHABxASEAbwEfAIMBNgCEATcAhQE4AIcBOgCIATsAjgFBAI8BQwCQAUQArAFgAK0BYQCuAWIAtAFoALUBaQC6AXAAuwFxANYBjADTAYkA1QGLANoBkADiAZgASAD4AEkA+QBDAPMARQD1AEYA9gBHAPcARAD0AD0A7QA/AO8AQADwAEEA8QA+AO4AZAEUAGUBFQBmARYAXwEPAGEBEQBiARIAYwETAGABEAB7ASsAegEqAJ8BUwCgAVQAmgFOAJwBUACdAVEAngFSAJsBTwCiAVYApAFYAKUBWQCmAVoAowFXAMoBgADLAYEAzQGDAM8BhQDQAYYA0QGHAM4BhADcAZIA2wGRAN0BkwDeAZQB9QHzAfQB9gHmAecB6gHoAekB6wIUAhUB+ARBAd0CIAKIAioCKwKNArECrwKwBDgCGQLhAuMC5QLnAuIC5ALmAugC3QLHAsoC2gLrAvkBoQGeAZ8BogGjAAwAAAAAHKgAAAAAAAACYgAAACAAAAAgAAAAAQAAACEAAAAhAAAB3gAAACIAAAAiAAAB5QAAACMAAAAjAAACHwAAACQAAAAkAAACngAAACUAAAAlAAACuwAAACYAAAAmAAABpAAAACcAAAAnAAAB5AAAACgAAAApAAAB+gAAACoAAAAqAAACEwAAACsAAAArAAACxgAAACwAAAAsAAAB2gAAAC0AAAAtAAAB8AAAAC4AAAAuAAAB2QAAAC8AAAAvAAACDwAAADAAAAA5AAABpQAAADoAAAA7AAAB2wAAADwAAAA8AAACzAAAAD0AAAA9AAACywAAAD4AAAA+AAACzQAAAD8AAAA/AAAB4QAAAEAAAABAAAACHQAAAEEAAABaAAAAAgAAAFsAAABbAAAB/AAAAFwAAABcAAACEQAAAF0AAABdAAAB/QAAAF4AAABeAAAC0QAAAF8AAABfAAAB+QAAAGAAAABgAAADBQAAAGEAAAB6AAAAHAAAAHsAAAB7AAAB/gAAAHwAAAB8AAACEAAAAH0AAAB9AAAB/wAAAH4AAAB+AAAC0wAAAKAAAACgAAACtwAAAKEAAAChAAAB3wAAAKIAAACjAAACnwAAAKQAAACkAAACnQAAAKUAAAClAAACoQAAAKYAAACmAAACEgAAAKcAAACnAAACFgAAAKgAAACoAAADCgAAAKkAAACpAAACGAAAAKoAAACqAAACZAAAAKsAAACrAAAB7gAAAKwAAACsAAAC1QAAAK0AAACtAAAB8QAAAK4AAACuAAACGgAAAK8AAACvAAADCwAAALAAAACwAAACnAAAALEAAACxAAAC0AAAALIAAACzAAACIgAAALQAAAC0AAADBgAAALUAAAC1AAAC1wAAALYAAAC2AAACFwAAALcAAAC3AAAB9wAAALgAAAC4AAADEAAAALkAAAC5AAACIQAAALoAAAC6AAACZQAAALsAAAC7AAAB7wAAALwAAAC+AAACvQAAAL8AAAC/AAAB4gAAAMAAAADEAAAANgAAAMUAAADFAAAASgAAAMYAAADHAAAATAAAAMgAAADKAAAAVgAAAMsAAADLAAAAWgAAAMwAAADPAAAAcgAAANAAAADQAAAA4wAAANEAAADRAAAAjAAAANIAAADTAAAAkQAAANQAAADWAAAAlAAAANcAAADX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AAADaQAAA6sAAAOrAAADbAAAA6wAAAOvAAADhwAAA7AAAAOwAAADkQAAA7EAAAPBAAADbgAAA8IAAAPCAAADhgAAA8MAAAPJAAADfwAAA8oAAAPKAAADiwAAA8sAAAPLAAADjgAAA8wAAAPNAAADjAAAA84AAAPOAAADjwAAA9cAAAPXAAADkgAAA9kAAAPZAAADkwAAA9sAAAPbAAADlAAAA90AAAPdAAADlQAAA+EAAAPhAAADlgAABAAAAAQPAAADwQAABBAAAAQvAAADoQAABDAAAARfAAAD7AAABGIAAARiAAAD0QAABGMAAARjAAAEHAAABHIAAARyAAAD0gAABHMAAARzAAAEHQAABHQAAAR0AAAD0wAABHUAAAR1AAAEHgAABJAAAASQAAAD1AAABJEAAASRAAAEHwAABJIAAASSAAAD1QAABJMAAASTAAAEIAAABJYAAASWAAAD1gAABJcAAASXAAAEIQAABJgAAASYAAAD1wAABJkAAASZAAAEIgAABJoAAASaAAAD2AAABJsAAASbAAAEIwAABKAAAASgAAAD2QAABKEAAAShAAAEJAAABKIAAASiAAAD2gAABKMAAASjAAAEJQAABKoAAASqAAAD2wAABKsAAASrAAAEJgAABK4AAASuAAAD3AAABK8AAASvAAAEJwAABLAAAASwAAAD3QAABLEAAASxAAAEKAAABLIAAASyAAAD3gAABLMAAASzAAAEKQAABLYAAAS2AAAD3wAABLcAAAS3AAAEKgAABLoAAAS6AAAD4AAABLsAAAS7AAAEKwAABMAAAATBAAAD4QAABMIAAATCAAAELAAABM8AAATPAAAELQAABNAAAATQAAAD4wAABNEAAATRAAAELgAABNQAAATUAAAD5AAABNUAAATVAAAELwAABNYAAATWAAAD5QAABNcAAATXAAAEMAAABNgAAATYAAAD5gAABNkAAATZAAAEMQAABOIAAATiAAAD5wAABOMAAATjAAAEMgAABOYAAATmAAAD6AAABOcAAATnAAAEMwAABOgAAAToAAAD6QAABOkAAATpAAAENAAABO4AAATuAAAD6gAABO8AAATvAAAENQAABPIAAATyAAAD6wAABPMAAATzAAAENgAAHUMAAB1DAAACgAAAHUcAAB1HAAACgQAAHUgAAB1JAAACgwAAHU0AAB1N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AAAA3gAAHvkAAB75AAABlAAAIAcAACAHAAACuAAAIBAAACAQAAAB8gAAIBIAACASAAAB9QAAIBMAACAUAAAB8wAAIBUAACAVAAAB9gAAIBgAACAZAAAB5gAAIBoAACAaAAAB6gAAIBwAACAdAAAB6AAAIB4AACAeAAAB6wAAICAAACAhAAACFAAAICIAACAiAAAB+AAAICUAACAlAAAEQQAAICYAACAmAAAB3QAAIDAAACAwAAACvAAAIDIAACAzAAAC+gAAIDkAACA6AAAB7AAAIDwAACA8AAAEQgAAIEQAACBEAAACtAAAIEcAACBJAAAEQwAAIHAAACBwAAACIAAAIHEAACBxAAACiAAAIHQAACB5AAACJAAAIH0AACB+AAACKgAAIH8AACB/AAACjQAAIIAAACCJAAACNAAAII0AACCOAAACPgAAIKEAACChAAACowAAIKQAACCkAAACpAAAIKYAACCnAAACpQAAIKkAACCpAAACpwAAIKsAACCsAAACqAAAIK4AACCuAAACqgAAILEAACCyAAACqwAAILQAACC1AAACrQAAILgAACC4AAACsQAAILkAACC6AAACrwAAIL0AACC9AAACsgAAIL8AACC/AAACswAAIRMAACETAAAC3wAAIRYAACEWAAAEOAAAIRcAACEXAAACGQAAISAAACEgAAACHAAAISIAACEiAAACGwAAISYAACEmAAAC3AAAIS4AACEuAAAC4AAAIVMAACFUAAACwAAAIVsAACFeAAACwgAAIZAAACGQAAAC4QAAIZEAACGRAAAC4wAAIZIAACGSAAAC5QAAIZMAACGTAAAC5wAAIZYAACGWAAAC4gAAIZcAACGXAAAC5AAAIZgAACGYAAAC5gAAIZkAACGZAAAC6AAAIgIAACICAAAC2AAAIgYAACIGAAAC2wAAIg8AACIPAAAC3gAAIhEAACIRAAAC3QAAIhIAACISAAACxwAAIhUAACIVAAACtQAAIhkAACIZAAACygAAIhoAACIaAAAC2gAAIh4AACIeAAAC1gAAIisAACIrAAAC2QAAIkgAACJIAAAC1AAAImAAACJgAAAC0gAAImQAACJlAAACzgAAJaAAACWgAAAC6QAAJbIAACWzAAAC7QAAJbYAACW3AAAC7wAAJbwAACW9AAAC8QAAJcAAACXBAAAC8wAAJcYAACXG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qxeyF7kXwBfHF84X1RfcF+MX6hfxF/gX/xgGGA0YFBgbGCIYKRgwGDcYPhhFGEwYUxhaGGEYaBhvGHYYfRiEGIsYkhiZGKAYpxiuGLUYvBjDGMoY0RjYGN8Y5hjtGPQY+xkCGQkZEBkXGR4ZJRksGTMZOhlBGUgZTxlWGV0ZZBlrGXIZeRmAGYcZjhmVGZwZoxmqGbEZuBm/GcYZzRnUGdsZ5hntGfkaCBoUGhsaIhooGi4aNBo9GkQaSxpSGlYaWhpeGmIaZhpqGm4achp2GnoafhqCGoYaihqOGpIalhqaGp4aohqmGqoarhqyGrYauhrDGswa2hrjGu8a+RsCGwwbFhsgGyobNBs+G0gbUhtcG2YbcBt6G4QbjBuWG5sbphuvG7gbxhvTG9wb5RvvG/kcAhwLHBkcIhwuHDgcRRxPHFgcYhxsHHYcgByKHJQcnhyoHLEcvhzIHNEc3xzpHPMdAR0IHRIdIB0qHTMdPB1KHVYdYB1tHXcdgR2LHZUdnh2sHbYdvx3IHdId2R3jHe0d9x4AHgoeFB4dHiceMB45HkMeTR5XHmEeah5zHn0eix6UHqAeqh66HsQezh7YHuIe7B72HwAfCh8SHxwfJh8wHzofRB9NH1IfWx9kH24feB+CH4wflR+eH6gfsh/AH8of1B/dH+cf8R/7IAUgDyAYICEgLyA7IEUgTSBdIGcgcCB6IIQgjiCYIKIgrCC2IL4gyCDSINwg5iDwIPkhAiEQIRwhJSEuITohSCFSIVwhZSFvIXkhgiGLIZghoiGoIbAhuiHCIckh0SHZIeMh6iHwIfgh/yIHIhAiFSIaIh8iKSIuIjQiPCJCIkwiUiJYIl4iZiJ1IocilCKaIqAirCKzIrkivyLHIs4i1SLbIuMi6yLyIvsjCCMTIyIjMCM7I0cjVCNjI3MjfCOFI44jmiOnI7UjxCPQI90j5yPxI/skBSQPJBkkIyQtJDckQSRLJFUkXyRpJHMkfSSHJJEkmySlJK8kuSTDJM0k1yThJOsk9ST/JQklEyUdJSclMSU7JUUlTyVZJWMlbSV3JYEliyWVJZ8lqSWzJb0lxyXRJdsl5SXvJfkmAyYNJhcmISYrJjUmPyZJJlMmXSZnJnEmeyaFJo8mmSajJq0mtybBJssmzicuJ20nfUFtYWNyb25BYnJldmV1bmkxRUFFdW5pMUVCNnVuaTFFQjB1bmkxRUIydW5pMUVCNHVuaTAxQ0R1bmkxRUE0dW5pMUVBQ3VuaTFFQTZ1bmkxRUE4dW5pMUVBQXVuaTFFQTB1bmkxRUEyQW9nb25la0NhY3V0ZUNjYXJvbkNjaXJjdW1mbGV4Q2RvdGFjY2VudERjYXJvbkRjcm9hdHVuaTFFMEN1bmkxRTBFRWNhcm9uRW1hY3JvbkVkb3RhY2NlbnRFb2dvbmVrRWJyZXZldW5pMUVCRXVuaTFFQzZ1bmkxRUMwdW5pMUVDMnVuaTFFQzR1bmkxRUI4dW5pMUVCQXVuaTFFQkNHYnJldmVHZG90YWNjZW50dW5pMDEyMkdjYXJvbkdjaXJjdW1mbGV4dW5pMUUyMHVuaTAwNDcwMzAzSGJhcnVuaTFFMkFIY2lyY3VtZmxleHVuaTFFMjRJbWFjcm9uSWRvdGFjY2VudElvZ29uZWt1bmkwMUNGdW5pMUVDQXVuaTFFQzhJdGlsZGVKY2lyY3VtZmxleHVuaTAxMzZMYWN1dGVMY2Fyb251bmkwMTNCTGRvdHVuaTFFMzZ1bmkxRTM4dW5pMUUzQXVuaTFFM0V1bmkxRTQyTmFjdXRlTmNhcm9udW5pMDFGOHVuaTAxNDV1bmkxRTQ0dW5pMUU0NnVuaTFFNDh1bmkwMTRFT21hY3Jvbk9odW5nYXJ1bWxhdXR1bmkwMUQxdW5pMUVEMHVuaTFFRDh1bmkxRUQydW5pMUVENHVuaTFFRDZ1bmkxRUNDdW5pMUVDRU9ob3JudW5pMUVEQXVuaTFFRTJ1bmkxRURDdW5pMUVERXVuaTFFRTBSYWN1dGVSY2Fyb251bmkwMTU2dW5pMUU1QXVuaTFFNUN1bmkxRTVFU2FjdXRldW5pMDE1RXVuaTAyMThTY2lyY3VtZmxleHVuaTFFNjB1bmkxRTYydW5pMUU5RVRjYXJvbnVuaTAxNjJ1bmkwMjFBdW5pMUU2Q3VuaTFFNkVVbWFjcm9uVXJpbmdVaHVuZ2FydW1sYXV0VW9nb25la1VicmV2ZXVuaTAxRDN1bmkwMUQ3dW5pMDFEOXVuaTAxREJ1bmkwMUQ1dW5pMUVFNHVuaTFFRTZVaG9ybnVuaTFFRTh1bmkxRUYwdW5pMUVFQXVuaTFFRUN1bmkxRUVFVXRpbGRlV2FjdXRlV2NpcmN1bWZsZXhXZGllcmVzaXNXZ3JhdmVZY2lyY3VtZmxleHVuaTFFOEV1bmkxRUY0WWdyYXZldW5pMUVGNnVuaTFFRjhaYWN1dGVaZG90YWNjZW50dW5pMUU5MnVuaTAxOEZhbWFjcm9uYWJyZXZldW5pMUVBRnVuaTFFQjd1bmkxRUIxdW5pMUVCM3VuaTFFQjV1bmkwMUNFdW5pMUVBNXVuaTFFQUR1bmkxRUE3dW5pMUVBOXVuaTFFQUJ1bmkxRUExdW5pMUVBM2FvZ29uZWtjYWN1dGVjY2Fyb25jY2lyY3VtZmxleGNkb3RhY2NlbnRkY2Fyb25kY3JvYXR1bmkxRTBEdW5pMUUwRmVjYXJvbmVtYWNyb25lZG90YWNjZW50ZW9nb25la2VicmV2ZXVuaTFFQkZ1bmkxRUM3dW5pMUVDMXVuaTFFQzN1bmkxRUM1dW5pMUVCOXVuaTFFQkJ1bmkxRUJEZ2JyZXZlZ2RvdGFjY2VudHVuaTAxMjNnY2Fyb25nY2lyY3VtZmxleHVuaTFFMjF1bmkwMDY3MDMwM2hiYXJ1bmkxRTJCaGNpcmN1bWZsZXh1bmkxRTI1aW1hY3JvbmlvZ29uZWtpLnRya3VuaTAxRDB1bmkxRUNCdW5pMUVDOWl0aWxkZXVuaTAyMzdqY2lyY3VtZmxleHVuaTAxMzdrZ3JlZW5sYW5kaWNsYWN1dGVsY2Fyb251bmkwMTNDbGRvdHVuaTFFMzd1bmkxRTM5dW5pMUUzQnVuaTFFM0Z1bmkxRTQzbmFjdXRlbmNhcm9udW5pMDFGOXVuaTAxNDZ1bmkxRTQ1bmFwb3N0cm9waGV1bmkxRTQ3dW5pMUU0OXVuaTAxNEZvbWFjcm9ub2h1bmdhcnVtbGF1dHVuaTAxRDJ1bmkxRUQxdW5pMUVEOXVuaTFFRDN1bmkxRUQ1dW5pMUVEN3VuaTFFQ0R1bmkxRUNGb2hvcm51bmkxRURCdW5pMUVFM3VuaTFFRER1bmkxRURGdW5pMUVFMXJhY3V0ZXVuaTAxNTdyY2Fyb251bmkxRTVCdW5pMUU1RHVuaTFFNUZzYWN1dGV1bmkwMTVGdW5pMDIxOXNjaXJjdW1mbGV4dW5pMUU2MXVuaTFFNjNsb25nc3RjYXJvbnVuaTAxNjN1bmkwMjFCdW5pMUU5N3VuaTFFNkR1bmkxRTZGdW1hY3JvbnVyaW5ndWh1bmdhcnVtbGF1dHVvZ29uZWt1YnJldmV1bmkwMUQ0dW5pMDFEOHVuaTAxREF1bmkwMURDdW5pMDFENnVuaTFFRTV1bmkxRUU3dWhvcm51bmkxRUU5dW5pMUVGMXVuaTFFRUJ1bmkxRUVEdW5pMUVFRnV0aWxkZXdhY3V0ZXdjaXJjdW1mbGV4d2RpZXJlc2lzd2dyYXZleWNpcmN1bWZsZXh1bmkxRThGdW5pMUVGNXlncmF2ZXVuaTFFRjd1bmkxRUY5emFjdXRlemRvdGFjY2VudHVuaTFFOTN1bmkwMjU5dW5pMDI1MXVuaTAyNjFmX2lmX2xmX3RmX2ZmX2ZfaWZfZl9semVyby5zbGFzaHplcm8ubGZvbmUubGZ0d28ubGZ0aHJlZS5sZmZvdXIubGZmaXZlLmxmc2l4Lmxmc2V2ZW4ubGZlaWdodC5sZm5pbmUubGZ6ZXJvLmxmc2xhc2h6ZXJvLnRvc2ZvbmUudG9zZnR3by50b3NmdGhyZWUudG9zZmZvdXIudG9zZmZpdmUudG9zZnNpeC50b3Nmc2V2ZW4udG9zZmVpZ2h0LnRvc2ZuaW5lLnRvc2Z6ZXJvLm9zZm9uZS5vc2Z0d28ub3NmdGhyZWUub3NmZm91ci5vc2ZmaXZlLm9zZnNpeC5vc2ZzZXZlbi5vc2ZlaWdodC5vc2ZuaW5lLm9zZnplcm8uY2Fwb25lLmNhcHR3by5jYXB0aHJlZS5jYXBmb3VyLmNhcGZpdmUuY2Fwc2l4LmNhcHNldmVuLmNhcGVpZ2h0LmNhcG5pbmUuY2FwZXhjbGFtZG93bi5jYXBxdWVzdGlvbmRvd24uY2FwdW5pMDBBRHVuaTIwMTB1bmkyMDE1Z3VpbHNpbmdsbGVmdC5jYXBndWlsc2luZ2xyaWdodC5jYXBndWlsbGVtb3RsZWZ0LmNhcGd1aWxsZW1vdHJpZ2h0LmNhcGh5cGhlbi5jYXBzZnRoeXBoZW4uY2FwZW5kYXNoLmNhcGVtZGFzaC5jYXBob3Jpem9udGFsYmFyLmNhcHBhcmVubGVmdC5jYXBwYXJlbnJpZ2h0LmNhcGJyYWNrZXRsZWZ0LmNhcGJyYWNrZXRyaWdodC5jYXBicmFjZWxlZnQuY2FwYnJhY2VyaWdodC5jYXB1bmkyMTE3dW5pMjEyMGF0LmNhcHplcm8uc3Vwc29uZS5zdXBzdHdvLnN1cHN0aHJlZS5zdXBzZm91ci5zdXBzZml2ZS5zdXBzc2l4LnN1cHNzZXZlbi5zdXBzZWlnaHQuc3Vwc25pbmUuc3Vwc3BhcmVubGVmdC5zdXBzcGFyZW5yaWdodC5zdXBzYnJhY2tldGxlZnQuc3Vwc2JyYWNrZXRyaWdodC5zdXBzcGVyaW9kLnN1cHNjb21tYS5zdXBzY29sb24uc3Vwc2h5cGhlbi5zdXBzZW5kYXNoLnN1cHNlbWRhc2guc3Vwc3plcm8uc3Vic29uZS5zdWJzdHdvLnN1YnN0aHJlZS5zdWJzZm91ci5zdWJzZml2ZS5zdWJzc2l4LnN1YnNzZXZlbi5zdWJzZWlnaHQuc3Vic25pbmUuc3Vic3BhcmVubGVmdC5zdWJzcGFyZW5yaWdodC5zdWJzYnJhY2tldGxlZnQuc3Vic2JyYWNrZXRyaWdodC5zdWJzcGVyaW9kLnN1YnNjb21tYS5zdWJzemVyby5kbm9tb25lLmRub210d28uZG5vbXRocmVlLmRub21mb3VyLmRub21maXZlLmRub21zaXguZG5vbXNldmVuLmRub21laWdodC5kbm9tbmluZS5kbm9tcGFyZW5sZWZ0LmRub21wYXJlbnJpZ2h0LmRub21icmFja2V0bGVmdC5kbm9tYnJhY2tldHJpZ2h0LmRub21wZXJpb2QuZG5vbWNvbW1hLmRub216ZXJvLm51bXJvbmUubnVtcnR3by5udW1ydGhyZWUubnVtcmZvdXIubnVtcmZpdmUubnVtcnNpeC5udW1yc2V2ZW4ubnVtcmVpZ2h0Lm51bXJuaW5lLm51bXJwYXJlbmxlZnQubnVtcnBhcmVucmlnaHQubnVtcmJyYWNrZXRsZWZ0Lm51bXJicmFja2V0cmlnaHQubnVtcnBlcmlvZC5udW1yY29tbWEubnVtckEuc3Vwc0Iuc3Vwc0Muc3Vwc0Quc3Vwc0Uuc3Vwc0Yuc3Vwc0cuc3Vwc0guc3Vwc0kuc3Vwc0ouc3Vwc0suc3Vwc0wuc3Vwc00uc3Vwc04uc3Vwc08uc3Vwc1Auc3Vwc1Euc3Vwc1Iuc3Vwc1Muc3Vwc1Quc3Vwc1Uuc3Vwc1Yuc3Vwc1cuc3Vwc1guc3Vwc1kuc3Vwc1ouc3Vwc2Euc3Vwc2Iuc3Vwc2Muc3Vwc2Quc3Vwc2Uuc3Vwc2Yuc3Vwc2cuc3Vwc2guc3Vwc2kuc3Vwc2ouc3Vwc2suc3Vwc2wuc3Vwc20uc3Vwc24uc3Vwc28uc3Vwc3Auc3Vwc3Euc3Vwc3Iuc3Vwc3Muc3Vwc3Quc3Vwc3Uuc3Vwc3Yuc3Vwc3cuc3Vwc3guc3Vwc3kuc3Vwc3ouc3Vwc2VncmF2ZS5zdXBzZWFjdXRlLnN1cHN1bmkwMTkybGlyYXVuaTIwQTZwZXNldGF1bmkyMEE5ZG9uZ0V1cm91bmkyMEFFdW5pMjBCMXVuaTIwQjJ1bmkyMEI0dW5pMjBCNXVuaTIwQjl1bmkyMEJBdW5pMjBCOHVuaTIwQkR1bmkyMEJGdW5pMjIxNXNsYXNoLmZyYWN1bmkwMEEwdW5pMjAwN3NwYWNlLmZyYWN1bmkwMEEwLmZyYWN1bmkyMjE5bGVzc2VxdWFsZ3JlYXRlcmVxdWFsbm90ZXF1YWxhcHByb3hlcXVhbGluZmluaXR5dW5pMDBCNXBhcnRpYWxkaWZmaW50ZWdyYWxyYWRpY2FsdW5pMjIwNnVuaTIxMjZzdW1tYXRpb25wcm9kdWN0dW5pMjExM2VzdGltYXRlZHVuaTIxOTB1bmkyMTk2YXJyb3d1cHVuaTIxOTd1bmkyMTkydW5pMjE5OGFycm93ZG93bnVuaTIxOTl1bmkyNUEwdW5pMjVDNnVuaTI1Qzl1bmkyNzUydHJpYWd1cHVuaTI1QjN1bmkyNUI2dW5pMjVCN3RyaWFnZG51bmkyNUJEdW5pMjVDMHVuaTI1QzF1bmkyNjEwdW5pMjYxMXVuaTI3MTNtdXNpY2Fsbm90ZWxvemVuZ2V1bmkyMDMydW5pMjAzM3VuaTAyQkJ1bmkwMkJDdW5pMDJCRnVuaTAyQkV1bmkwMkM4dW5pMDJDOXVuaTAyQ0F1bmkwMkNCdW5pMDJDQ2Nhcm9uLmFsdGNvbW1hYmVsb3djbWIuYWx0dW5pMDMwMGdyYXZlY21iLmNhcHVuaTAzMDFhY3V0ZWNtYi5jYXB1bmkwMzAyY2lyY3VtZmxleGNtYi5jYXB1bmkwMzAzdGlsZGVjbWIuY2FwdW5pMDMwNG1hY3JvbmNtYi5jYXB1bmkwMzA2YnJldmVjbWIuY2FwdW5pMDMwN2RvdGFjY2VudGNtYi5jYXB1bmkwMzA4ZGllcmVzaXNjbWIuY2FwdW5pMDMwQXJpbmdjbWIuY2FwdW5pMDMwQmh1bmdhcnVtbGF1dGNtYi5jYXB1bmkwMzBDY2Fyb25jbWIuY2FwdW5pMDMyNnVuaTAzMjd1bmkwMzI4dW5pMDMyOXVuaTAzMkV1bmkwMzI0dW5pMDMyM3VuaTAzMDl1bmkwMzA5LmNhcHVuaTAzMUJ1bmkwMzMxdW5pMDMwODAzMDF1bmkwMzA4MDMwMS5jYXB1bmkwMzA4MDMwMHVuaTAzMDgwMzAwLmNhcHVuaTAzMDgwMzA0dW5pMDMwODAzMDQuY2FwdW5pMDMwODAzMEN1bmkwMzA4MDMwQy5jYXB1bmkwMzAyMDMwMXVuaTAzMDIwMzAxLmNhcHVuaTAzMDIwMzAwdW5pMDMwMjAzMDAuY2FwdW5pMDMwMjAzMDl1bmkwMzAyMDMwOS5jYXB1bmkwMzAyMDMwM3VuaTAzMDIwMzAzLmNhcHVuaTAzMDYwMzAxdW5pMDMwNjAzMDEuY2FwdW5pMDMwNjAzMDB1bmkwMzA2MDMwMC5jYXB1bmkwMzA2MDMwOXVuaTAzMDYwMzA5LmNhcHVuaTAzMDYwMzAzdW5pMDMwNjAzMDMuY2FwQWxwaGFCZXRhR2FtbWF1bmkwMzk0RXBzaWxvblpldGFFdGFUaGV0YUlvdGFLYXBwYUxhbWJkYU11TnVYaU9taWNyb25QaVJob1NpZ21hVGF1VXBzaWxvblBoaUNoaVBzaXVuaTAzQTlBbHBoYXRvbm9zRXBzaWxvbnRvbm9zRXRhdG9ub3NJb3RhdG9ub3NJb3RhZGllcmVzaXNPbWljcm9udG9ub3NVcHNpbG9udG9ub3NVcHNpbG9uZGllcmVzaXNPbWVnYXRvbm9zYWxwaGFiZXRhZ2FtbWFkZWx0YWVwc2lsb256ZXRhZXRhdGhldGFpb3Rha2FwcGFsYW1iZGF1bmkwM0JDbnV4aW9taWNyb25waXJob3NpZ21hdGF1dXBzaWxvbnBoaWNoaXBzaW9tZWdhdW5pMDNDMmFscGhhdG9ub3NlcHNpbG9udG9ub3NldGF0b25vc2lvdGF0b25vc2lvdGFkaWVyZXNpc29taWNyb250b25vc3Vwc2lsb250b25vc3Vwc2lsb25kaWVyZXNpc29tZWdhdG9ub3Npb3RhZGllcmVzaXN0b25vc3Vwc2lsb25kaWVyZXNpc3Rvbm9zdW5pMDNEN3VuaTAzRDl1bmkwM0RCdW5pMDNERHVuaTAzRTF1bmkwMzdFYW5vdGVsZWlhYW5vdGVsZWlhLmNhcHVuaTAzNzR1bmkwMzc1dG9ub3N0b25vcy5jYXBkaWVyZXNpc3Rvbm9zdW5pMDMwMS5ndW5pMDMwODAzMDEuZ3VuaTA0MTB1bmkwNDExdW5pMDQxMnVuaTA0MTN1bmkwNDE0dW5pMDQxNXVuaTA0MTZ1bmkwNDE3dW5pMDQxOHVuaTA0MTl1bmkwNDFBdW5pMDQxQnVuaTA0MUN1bmkwNDFEdW5pMDQxRXVuaTA0MUZ1bmkwNDIwdW5pMDQyMXVuaTA0MjJ1bmkwNDIzdW5pMDQyNHVuaTA0MjV1bmkwNDI2dW5pMDQyN3VuaTA0Mjh1bmkwNDI5dW5pMDQyQXVuaTA0MkJ1bmkwNDJDdW5pMDQyRHVuaTA0MkV1bmkwNDJGdW5pMDQwMHVuaTA0MDF1bmkwNDAydW5pMDQwM3VuaTA0MDR1bmkwNDA1dW5pMDQwNnVuaTA0MDd1bmkwNDA4dW5pMDQwOXVuaTA0MEF1bmkwNDBCdW5pMDQwQ3VuaTA0MER1bmkwNDBFdW5pMDQwRnVuaTA0NjJ1bmkwNDcydW5pMDQ3NHVuaTA0OTB1bmkwNDkydW5pMDQ5NnVuaTA0OTh1bmkwNDlBdW5pMDRBMHVuaTA0QTJ1bmkwNEFBdW5pMDRBRXVuaTA0QjB1bmkwNEIydW5pMDRCNnVuaTA0QkF1bmkwNEMwdW5pMDRDMXVuaTA0RDB1bmkwNEQ0dW5pMDRENnVuaTA0RDh1bmkwNEUydW5pMDRFNnVuaTA0RTh1bmkwNEVFdW5pMDRGMnVuaTA0MzB1bmkwNDMxdW5pMDQzMnVuaTA0MzN1bmkwNDM0dW5pMDQzNXVuaTA0MzZ1bmkwNDM3dW5pMDQzOHVuaTA0Mzl1bmkwNDNBdW5pMDQzQnVuaTA0M0N1bmkwNDNEdW5pMDQzRXVuaTA0M0Z1bmkwNDQwdW5pMDQ0MXVuaTA0NDJ1bmkwNDQzdW5pMDQ0NHVuaTA0NDV1bmkwNDQ2dW5pMDQ0N3VuaTA0NDh1bmkwNDQ5dW5pMDQ0QXVuaTA0NEJ1bmkwNDRDdW5pMDQ0RHVuaTA0NEV1bmkwNDRGdW5pMDQ1MHVuaTA0NTF1bmkwNDUydW5pMDQ1M3VuaTA0NTR1bmkwNDU1dW5pMDQ1NnVuaTA0NTd1bmkwNDU4dW5pMDQ1OXVuaTA0NUF1bmkwNDVCdW5pMDQ1Q3VuaTA0NUR1bmkwNDVFdW5pMDQ1RnVuaTA0NjN1bmkwNDczdW5pMDQ3NXVuaTA0OTF1bmkwNDkzdW5pMDQ5N3VuaTA0OTl1bmkwNDlCdW5pMDRBMXVuaTA0QTN1bmkwNEFCdW5pMDRBRnVuaTA0QjF1bmkwNEIzdW5pMDRCN3VuaTA0QkJ1bmkwNEMydW5pMDRDRnVuaTA0RDF1bmkwNEQ1dW5pMDREN3VuaTA0RDl1bmkwNEUzdW5pMDRFN3VuaTA0RTl1bmkwNEVGdW5pMDRGM3VuaTA0MzEuc3JidW5pMjExNmJyZXZlY21iLmN5cmJyZXZlY21iLmN5cmNhcHR1cmtpY2RzY2NtYnVuaTJFM0F1bmkyRTNCdTFGMTJGdTFGMTZBdTFGMTZCZXhjbGFtZGJsdW5pMjA0N3VuaTIwNDh1bmkyMDQ5QS5zY0Iuc2NDLnNjRC5zY0Uuc2NGLnNjRy5zY0guc2NJLnNjSi5zY0suc2NMLnNjTS5zY04uc2NPLnNjUC5zY1Euc2NSLnNjUy5zY1Quc2NVLnNjVi5zY1cuc2NYLnNjWS5zY1ouc2NBZ3JhdmUuc2NBYWN1dGUuc2NBY2lyY3VtZmxleC5zY0F0aWxkZS5zY0FkaWVyZXNpcy5zY0FtYWNyb24uc2NBYnJldmUuc2N1bmkxRUFFLnNjdW5pMUVCNi5zY3VuaTFFQjAuc2N1bmkxRUIyLnNjdW5pMUVCNC5zY3VuaTAxQ0Quc2N1bmkxRUE0LnNjdW5pMUVBQy5zY3VuaTFFQTYuc2N1bmkxRUE4LnNjdW5pMUVBQS5zY3VuaTFFQTAuc2N1bmkxRUEyLnNjQXJpbmcuc2NBb2dvbmVrLnNjQUUuc2NDY2VkaWxsYS5zY0NhY3V0ZS5zY0NjYXJvbi5zY0NjaXJjdW1mbGV4LnNjQ2RvdGFjY2VudC5zY0RjYXJvbi5zY0Rjcm9hdC5zY3VuaTFFMEMuc2N1bmkxRTBFLnNjRWdyYXZlLnNjRWFjdXRlLnNjRWNpcmN1bWZsZXguc2NFY2Fyb24uc2NFZGllcmVzaXMuc2NFbWFjcm9uLnNjRWRvdGFjY2VudC5zY0VvZ29uZWsuc2NFYnJldmUuc2N1bmkxRUJFLnNjdW5pMUVDNi5zY3VuaTFFQzAuc2N1bmkxRUMyLnNjdW5pMUVDNC5zY3VuaTFFQjguc2N1bmkxRUJBLnNjdW5pMUVCQy5zY0dicmV2ZS5zY0dkb3RhY2NlbnQuc2N1bmkwMTIyLnNjR2Nhcm9uLnNjR2NpcmN1bWZsZXguc2N1bmkxRTlFLnNjdW5pMUUyMC5zY3VuaTAwNDcwMzAzLnNjSGJhci5zY3VuaTFFMkEuc2NIY2lyY3VtZmxleC5zY3VuaTFFMjQuc2NJZ3JhdmUuc2NJYWN1dGUuc2NJY2lyY3VtZmxleC5zY0lkaWVyZXNpcy5zY0ltYWNyb24uc2NJZG90YWNjZW50LnNjSW9nb25lay5zY3VuaTAxQ0Yuc2N1bmkxRUNBLnNjdW5pMUVDOC5zY0l0aWxkZS5zY0pjaXJjdW1mbGV4LnNjdW5pMDEzNi5zY0xhY3V0ZS5zY0xjYXJvbi5zY3VuaTAxM0Iuc2NMZG90LnNjdW5pMUUzNi5zY3VuaTFFMzguc2N1bmkxRTNBLnNjTHNsYXNoLnNjdW5pMUUzRS5zY3VuaTFFNDIuc2NOYWN1dGUuc2N1bmkwMUY4LnNjTmNhcm9uLnNjTnRpbGRlLnNjdW5pMDE0NS5zY3VuaTFFNDQuc2N1bmkxRTQ2LnNjdW5pMUU0OC5zY09ncmF2ZS5zY09hY3V0ZS5zY3VuaTAxNEUuc2NPY2lyY3VtZmxleC5zY090aWxkZS5zY09kaWVyZXNpcy5zY09tYWNyb24uc2NPaHVuZ2FydW1sYXV0LnNjdW5pMDFEMS5zY3VuaTFFRDAuc2N1bmkxRUQ4LnNjdW5pMUVEMi5zY3VuaTFFRDQuc2N1bmkxRUQ2LnNjdW5pMUVDQy5zY3VuaTFFQ0Uuc2NPaG9ybi5zY3VuaTFFREEuc2N1bmkxRUUyLnNjdW5pMUVEQy5zY3VuaTFFREUuc2N1bmkxRUUwLnNjT3NsYXNoLnNjT0Uuc2NSYWN1dGUuc2NSY2Fyb24uc2N1bmkwMTU2LnNjdW5pMUU1QS5zY3VuaTFFNUMuc2N1bmkxRTVFLnNjU2FjdXRlLnNjU2Nhcm9uLnNjdW5pMDE1RS5zY3VuaTAyMTguc2NTY2lyY3VtZmxleC5zY3VuaTFFNjAuc2N1bmkxRTYyLnNjVGNhcm9uLnNjdW5pMDE2Mi5zY3VuaTAyMUEuc2N1bmkxRTk3LnNjdW5pMUU2Qy5zY3VuaTFFNkUuc2NVZ3JhdmUuc2NVYWN1dGUuc2NVY2lyY3VtZmxleC5zY1VkaWVyZXNpcy5zY1VtYWNyb24uc2NVcmluZy5zY1VodW5nYXJ1bWxhdXQuc2NVb2dvbmVrLnNjVWJyZXZlLnNjdW5pMDFEMy5zY3VuaTAxRDcuc2N1bmkwMUQ5LnNjdW5pMDFEQi5zY3VuaTAxRDUuc2N1bmkxRUU0LnNjdW5pMUVFNi5zY1Vob3JuLnNjdW5pMUVFOC5zY3VuaTFFRjAuc2N1bmkxRUVBLnNjdW5pMUVFQy5zY3VuaTFFRUUuc2NVdGlsZGUuc2NXYWN1dGUuc2NXY2lyY3VtZmxleC5zY1dkaWVyZXNpcy5zY1dncmF2ZS5zY1lhY3V0ZS5zY1lkaWVyZXNpcy5zY1ljaXJjdW1mbGV4LnNjdW5pMUU4RS5zY3VuaTFFRjQuc2NZZ3JhdmUuc2N1bmkxRUY2LnNjdW5pMUVGOC5zY1phY3V0ZS5zY1pjYXJvbi5zY1pkb3RhY2NlbnQuc2N1bmkxRTkyLnNjRXRoLnNjVGhvcm4uc2N1bmkwMThGLnNjQWxwaGEuc2NCZXRhLnNjR2FtbWEuc2NEZWx0YS5zY0Vwc2lsb24uc2NaZXRhLnNjRXRhLnNjVGhldGEuc2NJb3RhLnNjS2FwcGEuc2NMYW1iZGEuc2NNdS5zY051LnNjWGkuc2NPbWljcm9uLnNjUGkuc2NSaG8uc2NTaWdtYS5zY1RhdS5zY1Vwc2lsb24uc2NQaGkuc2NDaGkuc2NQc2kuc2NPbWVnYS5zY0lvdGFkaWVyZXNpcy5zY1Vwc2lsb25kaWVyZXNpcy5zY2dlcm1hbmRibHMuc2NmX2kuc2NmX2wuc2NhbXBlcnNhbmQuc2N6ZXJvLnNjb25lLnNjdHdvLnNjdGhyZWUuc2Nmb3VyLnNjZml2ZS5zY3NpeC5zY3NldmVuLnNjZWlnaHQuc2NuaW5lLnNjZXhjbGFtLnNjZXhjbGFtZG93bi5zY3F1ZXN0aW9uLnNjcXVlc3Rpb25kb3duLnNjcXVvdGVzaW5nbGUuc2NxdW90ZWRibC5zY3F1b3RlbGVmdC5zY3F1b3RlcmlnaHQuc2NxdW90ZWRibGxlZnQuc2NxdW90ZWRibHJpZ2h0LnNjaHlwaGVuLnNjZW5kYXNoLnNjZW1kYXNoLnNjcGFyZW5sZWZ0LnNjcGFyZW5yaWdodC5zY2JyYWNrZXRsZWZ0LnNjYnJhY2tldHJpZ2h0LnNjYnJhY2VsZWZ0LnNjYnJhY2VyaWdodC5zY3VuaTA0MTAuc2N1bmkwNDExLnNjdW5pMDQxMi5zY3VuaTA0MTMuc2N1bmkwNDE0LnNjdW5pMDQxNS5zY3VuaTA0MTYuc2N1bmkwNDE3LnNjdW5pMDQxOC5zY3VuaTA0MTkuc2N1bmkwNDFBLnNjdW5pMDQxQi5zY3VuaTA0MUMuc2N1bmkwNDFELnNjdW5pMDQxRS5zY3VuaTA0MUYuc2N1bmkwNDIwLnNjdW5pMDQyMS5zY3VuaTA0MjIuc2N1bmkwNDIzLnNjdW5pMDQyNC5zY3VuaTA0MjUuc2N1bmkwNDI2LnNjdW5pMDQyNy5zY3VuaTA0Mjguc2N1bmkwNDI5LnNjdW5pMDQyQS5zY3VuaTA0MkIuc2N1bmkwNDJDLnNjdW5pMDQyRC5zY3VuaTA0MkUuc2N1bmkwNDJGLnNjdW5pMDQwMC5zY3VuaTA0MDEuc2N1bmkwNDAyLnNjdW5pMDQwMy5zY3VuaTA0MDQuc2N1bmkwNDA1LnNjdW5pMDQwNi5zY3VuaTA0MDcuc2N1bmkwNDA4LnNjdW5pMDQwOS5zY3VuaTA0MEEuc2N1bmkwNDBCLnNjdW5pMDQwQy5zY3VuaTA0MEQuc2N1bmkwNDBFLnNjdW5pMDQwRi5zY3VuaTA0NjIuc2N1bmkwNDcyLnNjdW5pMDQ3NC5zY3VuaTA0OTAuc2N1bmkwNDkyLnNjdW5pMDQ5Ni5zY3VuaTA0OTguc2N1bmkwNDlBLnNjdW5pMDRBMC5zY3VuaTA0QTIuc2N1bmkwNEFBLnNjdW5pMDRBRS5zY3VuaTA0QjAuc2N1bmkwNEIyLnNjdW5pMDRCNi5zY3VuaTA0QkEuc2N1bmkwNEMwLnNjdW5pMDRDMS5zY3VuaTA0RDAuc2N1bmkwNEQ0LnNjdW5pMDRENi5zY3VuaTA0RDguc2N1bmkwNEUyLnNjdW5pMDRFNi5zY3VuaTA0RTguc2N1bmkwNEVFLnNjdW5pMDRGMi5z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pnqYC3MabFN1JYEeDgEAAQAAIhkAQhkArgAAqwEAsAAArQABhw4ArwABlgAAigAAsQABlwcAtQAAsgEBnwAAtAABoBYAuQAAtgIBtw8AjAABxwQAugABzAMAvgAAuwAB0AAAvAAAvwAAvQAB0Q8AjQEB4QYAwAAB6AoAxAAAwQIB8xYAxQECCgYAxwACEQEAmgAAnQACEwAAywAAyAEAzQAAygACFA4AzAACIwAAkAAAzgACJAcA0gAAzwECLAAA0QACLRYA1gAA0wICRAYAkQACSwoAkgACVgQA1wACWwQA2wAA2AACYAAA2QAA3AAA2gACYQ8AkwECcQYA3QACeAUAlQACfgUA4QAA3gIChBYA4gECmwYA5AACogEApwAAogACpAgABwAAEQkCrSkADwAADQAAGwEAeQAAAgAAYAAC1wAAIAAAewAC2AAAaAAAAwAAQQAACAAAaQAAdwAAdQEAawEAagAAeAAADgAC2QEAbwAAiQABOgAC2wAAcgAAdAAAQAAACQEAPAAAPgAAXAAAXgAC3A4AEAAAXQAAPQAAoAAACwAAcAEAZgAAcwAAqgAC6wAApQAAmQAC7AAAIQAC7QAABAAC7kMAiwAAjwADMjUAoQAAZwAABQAAYQEAZAADaAABLAADaQ8AYwADeQUABgAAegAAngAAmwAAowABRAEBQAMADAAApgAAqAAAnwADfwAAHgAAHQAAHwADgAEAnAAAPwADggAAXwADgwAAlwADhC4AfAIAiAAAfwAAgwAAgAEAhAAAhgAAggAAhQADswEAhwADtf8EtSwA7QAE4v8F4lQFlwMAAAEAAE0AAFAAAFgAAFoAAGQAAJgAAJsAAP4AARMAAUUAAVEAAVQAAaQAAcQAAdEAAdQAAecAAekAAmgAAoQAApAAArQAArcAAwYAAwkAA20AA3AAA3MAA4oAA/0ABAYABDMABD4ABHgABK8ABLIABLQABN0ABPwABRUABTAABUcABVQABYMABfcABhMABiIABkQABkcABoMABokABosABpYABpoABqcABrUABsIABwgABzcAB1MAB2oAB6oAB+AACCQACE4ACJQACKsACLgACO0ACPsACRkACVQACYMACaEACdkAChUACmwACuIACvEACwQACxMACykAC3EAC3MAC7MAC/EAC/oADAMADAwADFoADLIADL4ADRQA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ufjAFfctvfstBg77e/jAvQG5960DufjAFfetvfutBg5k+MC9Abn4bQO5+MAV+G29/G0GDvt++3H3cQp9WwoO+377aPgsCvcztx33rR0O+377aPdvCvto+DoKE9BtHRPgLjIFDvt++3H3SQqbSwoT8E8KDvt++wPEAfdezAOr+wP3Fgr7fvtx9wIK+3FqHft++3H3cR37cYEK+373Bvf1Hfti9y8d+377cfdKHfsPUh37flL3hR37cYMK+/T71ffYHWPUCvv0+9X3wQpj1B378PvL98AK+8v3MB378PvL96wd+8v3Lh38CPtx8ff4HftxFfcPCvwU++P32gr7UbcK+36C93EK91pbCg77fov4LAr4B7cd960dDvt+i/dvChb3cgoT0G0dE+AuMgUO+36C90kK93hLChPwTwoO+36L9zJSxBL3XswTYKvwFfc+BhOgJswHE2Dwy8RL94lcB/c5Cvt+gvcCCoJqHft+gvdxHYKBCvt+oHb32vf1HZH3Lx37foL3Sh3kUh37fpd29zj3hR2Cgwr79PsB99gd90DUCvv0+wH3wQr3QNQd+/Ao98AKKPcwHfvwKPesHSj3Lh38CILx9/gdghX3Dwr8FPsP99oKorcK+373iPdxCvhXWwoO+373kaj4BHeldxL3MNITsNr5BLcdE9D3rR0O+373kfdvCveR+DoKE9BtHRPgLjIFDvt+94j3SQr3MAoT8E8KDvt+9/bE94l3AfdezAOr9/b3Fgr7fveI9wIK94hqHft+94j3cR33iIEK+3741/f1HfeX9y8d+373iPdKHffqUh37fvgs94Ud94iDCvv09yT32B34PdQK+/T3JPfBCvg91B378Pcu98AK9y73MB378Pcu96wd9y73Lh38CPeI8ff4HfeIFfcPCvwU9xb32gr3qLcKmR33Hgr7Nvg9rWn/ACKAAP//3YAAr2f3uB3/AFiAAK4Sk/co6PdKEy6T+D0V9yirBlKTqOAF9ygGE06qNFGEBWz3SgcTjqoHW5H7IPgRBV8GEx77GvwNUoIF95P3FBX7DgbH90EFDvtL95cd/wClgACgdqz/AJSAAPdgHRLk0/ce0FjVE5aAq/g9FfdIBvcYusrBHxOmgMNmsjGVHhOnANeZp7K3GsRatS0e+1UGE1qA9x0KE5cA9z/38xXLq3VaV2txQB9s9ykGrPtKFROWgOGw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AXMAIwFzACwBcwAsAXMALAFzACwBcwAsAXMABQF2/9UCmwAsAlQALAJUACwCVAAsAlQALAJUACwCVAAlAlQALAJUACwDhgAnA4YAJwLfACcC3wAnAt8AJwLfACcC3wAnAt8AJwLfACcC3wAnAsMALwLDAC8CwwAvAsMALwLDAC8CwwAvAsMALwLDAC8CwwAvAsMALwLDAC8CwwAvAsMALwLDAC8CwwAvAsMALwLDAC8CwwAvAsMALwLDAC8CwwAvAsMALwLDAC8DqgAvAosALAKLACwCiwAsAosALAKLACwCiwAsAgAAKAIAACgCAAAoAgAAKAIAACgCAAAoAgAAKAKyACwCXAAUAlwAFAJcABQCXAAUAlwAFALXACcC1wAnAtcAJwLXACcC1wAnAtcAJwLXACcC1wAnAtcAJwLXACcC1wAnAtcAJwLXACcC1wAnAtcAJwLXACcC1wAnAtcAJwLXACcC1wAnAtcAJwLXACcC1wAnA8IADwPCAA8DwgAPA8IADwJ5AA8CeQAPAnkADwJ5AA8CeQAPAnkADwJ5AA8CeQAPAicAFAInABQCJwAUAicAFALGACwCYwAsApEALwH9AC0B/QAtAf0ALQH9AC0B/QAtAf0ALQH9AC0B/QAtAf0ALQH9AC0B/QAtAf0ALQH9AC0B/QAtAf0ALQH9ACUB/QAtAf0ALQH9AC0B/QAtAf0ALQH9AC0DDgAtAegAKgHoACoB6AAqAegAKgHoACoCWQAtAjcALQI3AC0CNwAtAf4ALQH+AC0B/gAtAf4ALQH+AC0B/gAtAf4ALQH+AC0B/gAtAf4ALQH+AC0B/gAtAf4ALQH+AC0B/gAtAf4ALQH+AC0CBgAkAgYAJAIGACQCBgAkAgYAJAIGACQCBgAkAlkAGQJZABkCWQAZAlkAGQEqABABKgAdASoAAwEq/+wBKgALASoAHQEqAB0BKgAKASoAHQEqAB0BKv/yASoAHQEV/60BFf+tAiMAGQItACIBKgAZAUIAGQEqABkBawAZASoAGQEqAAUBKgASASoAGQOFACIDhQAiAl4AIgJeACICXgAiAl4AIgJeACICXgAiAwQAEgJeACICXgAiAiUALQIlAC0CJQAtAiUALQIlAC0CJQAtAiUALQIlAC0CJQAtAiUALQIlAC0CJQAtAiUALQIlAC0CJQAtAiUALQIlAC0CJQAtAiUALQIlAC0CJQAtAiUALQIlAC0DZAAtAacAIgGnACIBpwAiAacAIgGnACIBpwAgAbIALwGyAC8BsgAvAbIALwGyAC8BsgAvAbIALwFYABkCUAAZAUUACQFFAAkBRQAJAUX/9AFFAAkBRQAJAkcAGQJHABkCRwAZAkcAGQJHABkCRwAZAkcAGQJHABkCRwAZAkcAGQJHABkCRwAZAkcAGQJHABkCRwAZAkcAGQJHABkCRwAZAkcAGQJHABkCRwAZAkcAGQJHABkC/AAAAvwAAAL8AAAC/AAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAByAAdAcgAHQHIAB0ByAAdAiIALQIqAAYCBwAvAi0ALQIwAC0CaQAiAmQAIgKEACICkgAiA5gAIgOTACIC0AAbAfQAKQH0AEoB9AAsAfQALAH0ABgB9AAmAfQAKAH0ADMB9AAsAfQAHQH0ACQB9gAnAaoAPwH8ADMB9wAkAfEAHQH7ACkB/QAzAd8AHAH9ADECCAAuAfYAJAH0ACEB9ABJAfQAKwH0ACsB9AAYAfQAJgH0ACgB9AAuAfQALQH0ACMCJgAjAbQAPwH8ADQB9wAkAfEAHQH7ACkB/QAzAd8AHAH9ADECCAAuAfQAKAH0AEoB9AAsAfQALAH0ABgB9AAmAfQAJwH0ADIB9AAsAfQAHQEsAE8BLAAGASwATwEsAAYDhABPASEAUAEhAFABIQBQAaAAQgGgAEIBoABCALcAKAFjACgA1AAlANQAEgGfACUBnwASANQAEgGfABIBHQAeAR0AGgHnAB4B5wAaATgAKAE4ACgBOAAoAgAAKAMsACgB9AAoAywAKAEsAE8BMQAqAgAAKAFTAFABUwAZAUAAZAFAAB0BWAAoAVgAHgEdAB4BHQAaAecAHgHnABoBOAAoATgAKAIAACgDLAAoAywAKAFTAFABUwAZAUAAZAFAAB0BWAAoAVgAHgFKAAIA+wBgAUoAAgD7AGABtwAUAf8AKAH/ACgB6wAtAlYAGQLzAB4C8wAeAcsAHgLSAAwCrQAeA0MAIwNDACMCDgAZAXIALQFyAEIBcgAwAXIALQFyACABcgAvAXIAMQFyADgBcgAxAXIAKQD8ADUA/AAlAQAAVgEAACgA6ABDANwAIwDoAEMA9QAuAXUALgI1AC4BcgAtAXIAQgFyADABcgAtAXIAIAFyAC8BcgAxAXIAOAFyADEBcgApAPwANQD8ACUBAABWAQAAKADoAEMA3AAjAXIALQFyAEIBcgAwAXIALQFyACABcgAvAXIAMQFyADgBcgAxAXIAKQD8ADUA/AAlAQAAVgEAACgA6ABDANwAIwFyAC0BcgBCAXIAMAFyAC0BcgAgAXIALwFyADEBcgA4AXIAMQFyACkA/AA1APwAJQEAAFYBAAAoAOgAQwDcACMBXwAcAXkAHAG6AAgBpQAgAaIAIgHWACABkAAgAYEAIAHDACICBwAgAPsAIAD//+EBvgAgAYsAIAJTABoB5gAdAdQAIgGLACAB1AAiAbQAIAFZAB0BlQARAeMAHQG+AA0CfQANAbAACwGjAA0BcQARAV8AHAGNABABTAAeAYYAHQFfAB4A5wAWAWUAEwGcABAAzQAVAMH/wQF2ABAAzAAQAmkAFwGgABcBeQAcAZEAFwGAAB4BJQAXAS0AIQDiAAcBkQASAV0AAAIPAAABXgAHAVz//QE1ABEBXwAeAV8AHgFIACUB9gAdAfQAMwH0ACsB9AAjAfT/9QH0/+gB9AAUAfQAIwH0AAAB9AAKAfT/9AH0ACUB9AALAfQABwH0AAoB9AAhAfQAFwH0ADIB9AAwAfQAGgH0AAcB9AAUAfQAGwCM/04AjP9OAIz/TgDpAAAB9AAAAIUAAACFAAADXQBFBKwARQNdAEMDXQA7A10ATgNdAEEDXQA9A10AQANdADwDXQA/A10AVQITAB0CEwAdAhMAKwITAB0BLABPAhMAHQITADkCEwA5AhMAHQITAB0CEwAdAhMAWAITAB0CEwAxAhMAMQITABgDEQAoAjkATwISACgBZ/+wAi4AKwJ+ABkC1wAmAjEAFAMGACgB0wAfAyAALgKUABQClABnApQAJQKUAFUClAAUApQAVQKUACUClABnAtAANwLsABQBvgAYA3UANwJGABoCRgAaAkYAUgJGAFICRgAaAkYAGgJGACoCRgAqAyAANwMgADcCXAA7AfkAIgJGAFIA+QBBAbAAQQDUACUA1AASAKcAGgCnABoAdAAWAZAARQGQAI0BkABMAHQAFgGQAEsBkACMAZAAMwGQAD0BkAAnAZAAJAGQAEUBkAAxAZAAXwGQAEUBkACFAZAAaQAZ/+8AAP/CAZAAYgAA/4IAAP+BAAD/xQAA/70AAP9rAAD/bAAA/10AAP9MAAD/fQAA/2kAAP9pAAD/cAAA/70AAP+9AAD/XAAA/1YAAP+XAAD/oAAA/5AAAP+QAAD/dQAA/3UAAP+tAAD/vQAA/58AAP/cAAD/aQAA/1wAAP+9AAD/xgAA/8YAAP/2AAD/fQAA/2IAAP9WAAD/YgAA/1YAAP9cAAD/VgAA/1wAAP9WAAD/bAAA/2wAAP8kAAD/EAAA/2wAAP9sAAD/XQAA/10AAP9wAAD/cAAA/3AAAP9wAAD/cAAA/3AAAP9dAAD/XQKYAAUCdQAsAjAALAJ+ABkCWwAsAicAFAMVACwCwwAvAXMALAKbACwClwAFA4YAJwLfACcCSQAjAsMALwMBACwCTQAsAh0AFAJcABQCeQAPAs0AJAKIAAoDAgAJAtcAJgKuABsCxv/3A37/9wHd//cBcwAQAwf/9wMB//cCeQAPAxL/8wIuACcCNwBPAesAAAIHACcBogAoAaQALQImABcB/wAxAR8AYgISABcCFQAUAjkATwHrAAABtgAoAggAJwJRABMCHwBFAlMAJwHsABMCHgAXArwAJwHoAAUC1AAXAt0AJwHJACwCLgAnAaIAKAImABcBHwBiAR//6wIIACcCHgAXAh4AFwLdACcBH//zAh4AFwKCAA8CBAAnAbsAJgGdAE8CQwAqATsACwEsAE8BLABPAPkAQQD5AEYBkAClAEP/4wGQABUAAP/dAAD/TQKYAAUCagAsAnUALAIwACwCswAFAlsALAOWAAICJgAeAx0ALAMdACwCjQAsArMACQOGACcDFQAsAsMALwMHACwCTQAsAncALwJcABQCeAAOAtEAHQKIAAoDAgAsAr0AGAQTACoEFAAqAtcAFAOSACwCYQAsAmQAKQPjACwCggAAAlsALAJbACwCxgAUAjAALAJnAC8CAAAoAXMALAFzABABdv/VA34ACQPMACwDBwAUAo0ALAMdACwCeAAOAwEALALCABQCwwAvAqoADwIwACwCMAAsA7QAAgImAB4CsQAsAwsAFAMZACwCdwAvAnkADwJ5AA8CowAKAsEAGALCACwBcwAsA5YAAgKYAAUDmAAFAlsALAKbAC8DHQAsAsMALwLDAC8CeAAOAngADgH9AC0CHwA3AgUALAG/ACwCNwATAf4ALQL2AA8BrgAjAoUALAKFACwCGgAsAkAAEALmACwCeQAsAiUALQJyACwCRwAjAegAKgIQABkCAAAAAt8AJwIOAAoCbQAsAioACgNYACwDWQAsAmIAHgLuACwB+AAsAeAAKQMfACwCFAAKAf4ALQH+AC0CFwAeAb8ALAHoAC8BsgAvASoAHQEq/+wBFf+tAvEAEAMgACwCWQAZAhoALAKFACwCAAAAAnoALAJdABkCJQAtAhQAAAHEACwByAAsAwwADwGuACMCMQAsAokAHgJ6ACwB6AAqAgMAAAIDAAACJwAKAisACgJZABkC9gAPASoAGQH9AC0DDgAtAf4ALQIHAC8ChQAsAiUALQIlAC0CAAAAAgAAAAIfADQD8QAKAAD/WQAA/1UAAP+kBgcAKAjjACgC8wAeAtIADgLSAAoCWABPAi4AUAMXAEICrQBCAqwAUAJNAAUCUQA3AkkAOgKTADcCMQA3AhoANwJuADoC1gA3AWsANwFo/+kCXQA3AjUANwM4ADICpQAyApIAOgIfADcCkgA6AlIANwHfADACIwAaApgAMQJeABYDVAAUAkAACwIzABEB8QAYAk0ABQJNAAUCTQAFAk0ABQJNAAUCTQAFAk0ABQJNAAUCTQAFAk0ABQJNAAUCTQAFAk0ABQJNAAUCTQAFAk0ABQJNAAUCTQAFAk0ABQJNAAUCTQAFAk0ABQM4AAUCSQA6AkkAOgJJADoCSQA6AkkAOgKTADcCkwA3ApMANwKTADcCMQA3AjEANwIxADcCMQA3AjEANwIxADcCMQA3AjEANwIxADcCMQA3AjEANwIxADcCMQA3AjEANwIxADcCMQA3AjEANwJuADoCbgA6Am4AOgJuADoCbgA6AncANwJuADoCbgA6AsoAJgLWADcC1gA3AtYANwFrADcBawA3AWsAIgFrAAwBawAfAWsANwFrADcBawArAWsANwFrADcBawACAWj/6QJdADcCNQA3AjUANwI1ADcCNQA3AjUANwI1ACACNQA3AjUANwM4ADIDOAAyAqUAMgKlADICpQAyAqUAMgKlADICpQAyAqUAMgKlADICkgA6ApIAOgKSADoCkgA6ApIAOgKSADoCkgA6ApIAOgKSADoCkgA6ApIAOgKSADoCkgA6ApIAOgKSADoCkgA6ApIAOgKSADoCkgA6ApIAOgKSADoCkgA6ApIAOgNaADoCUgA3AlIANwJSADcCUgA3AlIANwJSADcB3wAwAd8AMAHfADAB3wAwAd8AMAHfADAB3wAwAiMAGgIjABoCIwAaAiMAGgIjABoCIwAaApgAMQKYADECmAAxApgAMQKYADECmAAxApgAMQKYADECmAAxApgAMQKYADECmAAxApgAMQKYADECmAAxApgAMQKBADECgQAxAoEAMQKBADECgQAxAoEAMQKYADEDVAAUA1QAFANUABQDVAAUAjMAEQIzABECMwARAjMAEQIzABECMwARAjMAEQIzABEB8QAYAfEAGAHxABgB8QAYApMANwI1ADcCZgA6Ak0ABQJRADcCCAA3AkUAHAIxADcB8QAYAtYANwKSADoBawA3Al0ANwJMAAgDOAAyAqUAMgIdACsCkgA6AsIANwIfADcB6wAZAiMAGgIzABECkwArAkAACwK2ABMClQAvAWsADAIzABEDtQAwA3sANwRFADcClQAeAdYAMgHtAF8B2QA5AdcAOQHGAB0B1wAyAdYAMQHZAEIB2wA4AdUAIQFGAGYBRgBlAa4AVAGuAFwAtwAoAWMAKADUACUA1AASAZ8AJQGfABIBNAA1AeQANQLpADUBWgBmAVoAIgFRAIMBUQAgAUoANQFKACcCTQAFAkIANwJRADcCCAA3AmkAAwIxADcDIwADAgEAJgLdADcC3QA3AksANwJxAAwDOAAyAtYANwKSADoCyQA3Ah8ANwJJADoCIwAaAkIAFAKUACYCQAALAsAANwKAABwDsAA0A60ANAKQABoDSAA3AjEANwI4ADIDjwA3Ajz/+wIxADcCMQA3An4AGgIIADcCOgA6Ad8AMAFrADcBawAMAWj/6QMZAAwDbQA3ArcAGgJLADcC3QA3AkIAFALEADcCfgAVApIAOgJcABYCCAA3AggALwM+AAMCAQAmAmwANwKvABoC1gA3AkkAOgIzABECMwARAlgACwKAABwChgA3AWsANwMjAAMCTQAFAzgABQIxADcCcAA6At0ANwKSADoCkgA6AkIAFAAUAAAAAQAAAAwAAAAAAg4AAgBVAAIADQABAA8ANQABAEsATAABAF0AXQABAG0AbQACAHgAeAABAKEAoQABAKcAqAABAMMAwwABAMwAzAABAOUA5QABAPsA/AABAQIBAgACAQ0BDQABARkBGQACAR0BHQACAScBJwACAS0BLgABATMBMwACAVUBVQABAVsBXAABAWwBbAACAXkBeQABAYIBggABAZoBnQABAZ4BowACAwcDBwABAwwDDAABAxIDEgADAxQDTAADA24DbgABA3IDcgABA3QDdAABA3YDdgABA3wDfAABA34DfgABA4EDgQABA4UDhQABA5MDkwABA5UDlQABA58DoAADA6EDoQABA6QDpAABA6YDpwABA6kDqQABA6sDqwABA68DrwABA7QDtAABA7cDuAABA7wDvAABA74DwAABA9ID0gABA9wD3QABA+kD6QABA+wD7AABA+8D7wABA/ED8gABA/QD9AABA/YD9gABA/oD+gABA/8D/wABBAIEAwABBAcEBwABBAkECwABBBAEEAABBB0EHQABBCcEKAABBDQENAABBDkEOgADBEYEUQABBFMEXwABBHYEdgABBNIE0wABBO4E7gABBPcE9wABBRAFEAABBVIFUgABBVQFVAABBVYFVgABBV8FXwABBWIFYwABBWcFZwABBWkFawABBX0FfQABBYgFiAABAAIAGwMSAxIAAQMUAxQAAQMWAxYAAQMYAxgAAQMaAxoAAQMcAxwAAQMeAx4AAQMgAyAAAQMiAyIAAQMkAyQAAQMmAyYAAQMoAygAAQMxAzEAAQM1AzUAAQM3AzcAAQM5AzkAAQM7AzsAAQM9Az0AAQM/Az8AAQNBA0EAAQNDA0MAAQNFA0UAAQNHA0cAAQNJA0kAAQNLA0sAAQOfA6AAAQQ5BDkAAQABAAAACgG0CWIABERGTFQAGmN5cmwASGdyZWsAuGxhdG4A5gAEAAAAAP//ABIAAAAIABAAGAAgACgAMAA4AEYATgBWAF4AZgBuAHYAfgCGAI4AEAACTUtEIAA8U1JCIABEAAD//wATAAEACQARABkAIQApADEAOQBAAEcATwBXAF8AZwBvAHcAfwCHAI8AAP//AAEAQQAA//8AEwACAAoAEgAaACIAKgAyADoAQgBIAFAAWABgAGgAcAB4AIAAiACQAAQAAAAA//8AEgADAAsAEwAbACMAKwAzADsASQBRAFkAYQBpAHEAeQCBAIkAkQAWAANBWkUgAEBDUlQgAGxUUksgAJgAAP//ABIABAAMABQAHAAkACwANAA8AEoAUgBaAGIAagByAHoAggCKAJIAAP//ABMABQANABUAHQAlAC0ANQA9AEMASwBTAFsAYwBrAHMAewCDAIsAkwAA//8AEwAGAA4AFgAeACYALgA2AD4ARABMAFQAXABkAGwAdAB8AIQAjACUAAD//wATAAcADwAXAB8AJwAvADcAPwBFAE0AVQBdAGUAbQB1AH0AhQCNAJUAlmFhbHQDhmFhbHQDjmFhbHQDlmFhbHQDnmFhbHQDpmFhbHQDrmFhbHQDtmFhbHQDvmMyc2MDxmMyc2MD0GMyc2MD2mMyc2MD5GMyc2MD7mMyc2MD+GMyc2MEAmMyc2MEDGNhc2UEFmNhc2UEHGNhc2UEImNhc2UEKGNhc2UELmNhc2UENGNhc2UEOmNhc2UEQGNjbXAERmNjbXAETmNjbXAEVmNjbXAEXmNjbXAEZmNjbXAEbmNjbXAEdmNjbXAEfmRub20EhmRub20EjGRub20EkmRub20EmGRub20EnmRub20EpGRub20EqmRub20EsGZyYWMEtmZyYWMEwGZyYWMEymZyYWME1GZyYWME3mZyYWME6GZyYWME8mZyYWME/GxpZ2EFBmxpZ2EFDGxpZ2EFEmxpZ2EFGGxpZ2EFHmxpZ2EFJGxpZ2EFKmxpZ2EFMGxudW0FNmxudW0FPGxudW0FQmxudW0FSGxudW0FTmxudW0FVGxudW0FWmxudW0FYGxvY2wFZmxvY2wFbGxvY2wFdGxvY2wFfGxvY2wFgmxvY2wFiG51bXIFjm51bXIFlG51bXIFmm51bXIFoG51bXIFpm51bXIFrG51bXIFsm51bXIFuG9udW0Fvm9udW0FxG9udW0Fym9udW0F0G9udW0F1m9udW0F3G9udW0F4m9udW0F6G9yZG4F7m9yZG4F9G9yZG4F+m9yZG4GAG9yZG4GBm9yZG4GDG9yZG4GEm9yZG4GGHBudW0GHnBudW0GJHBudW0GKnBudW0GMHBudW0GNnBudW0GPHBudW0GQnBudW0GSHNpbmYGTnNpbmYGVHNpbmYGWnNpbmYGYHNpbmYGZnNpbmYGbHNpbmYGcnNpbmYGeHNtY3AGfnNtY3AGhnNtY3AGjnNtY3AGlnNtY3AGnnNtY3AGpnNtY3AGrnNtY3AGtnN1YnMGvnN1YnMGxHN1YnMGynN1YnMG0HN1YnMG1nN1YnMG3HN1YnMG4nN1YnMG6HN1cHMG7nN1cHMG+nN1cHMHBnN1cHMHEnN1cHMHHnN1cHMHKnN1cHMHNnN1cHMHQnRudW0HTnRudW0HVHRudW0HWnRudW0HYHRudW0HZnRudW0HbHRudW0HcnRudW0HeHplcm8Hfnplcm8HhHplcm8Hinplcm8HkHplcm8Hlnplcm8HnHplcm8Honplcm8HqAAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAADAAgACQAKAAAAAwAIAAkACgAAAAMACAAJAAoAAAADAAgACQAKAAAAAwAIAAkACgAAAAMACAAJAAoAAAADAAgACQAKAAAAAwAIAAkACgAAAAEABwAAAAEABwAAAAEABwAAAAEABwAAAAEABwAAAAEABwAAAAEABwAAAAEABwAAAAIABQAGAAAAAgAFAAYAAAACAAUABgAAAAIABQAGAAAAAgAFAAYAAAACAAUABgAAAAIABQAGAAAAAgAFAAYAAAABAA0AAAABAA0AAAABAA0AAAABAA0AAAABAA0AAAABAA0AAAABAA0AAAABAA0AAAADAAwADgAPAAAAAwAMAA4ADwAAAAMADAAOAA8AAAADAAwADgAPAAAAAwAMAA4ADwAAAAMADAAOAA8AAAADAAwADgAPAAAAAwAMAA4ADwAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGgAAAAEAGAAAAAEAGAAAAAEAGAAAAAEAGAAAAAEAGAAAAAEAGAAAAAEAGAAAAAEAGAAAAAEAAwAAAAIAAwAEAAAAAgADAAQAAAABAAIAAAABAAIAAAABAAIAAAABAAwAAAABAAwAAAABAAwAAAABAAwAAAABAAwAAAABAAwAAAABAAwAAAABAAwAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABYAAAABABAAAAABABAAAAABABAAAAABABAAAAABABAAAAABABAAAAABABAAAAABABAAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABcAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAABABQAAAACAAkACwAAAAIACQALAAAAAgAJAAsAAAACAAkACwAAAAIACQALAAAAAgAJAAsAAAACAAkACwAAAAIACQALAAAAAQAUAAAAAQAUAAAAAQAUAAAAAQAUAAAAAQAUAAAAAQAUAAAAAQAUAAAAAQAUAAAABAAQABEAEgATAAAABAAQABEAEgATAAAABAAQABEAEgATAAAABAAQABEAEgATAAAABAAQABEAEgATAAAABAAQABEAEgATAAAABAAQABEAEgATAAAABAAQABEAEgATAAAAAQAVAAAAAQAVAAAAAQAVAAAAAQAVAAAAAQAVAAAAAQAVAAAAAQAVAAAAAQAVAAAAAQAZAAAAAQAZAAAAAQAZAAAAAQAZAAAAAQAZAAAAAQAZAAAAAQAZAAAAAQAZABwAOgBCAEoAUgBaAGIAagB0AHwAhACMAJQAnACkAKwAtADAAMgA0ADYAOAA6ADwAPgBAAEIARABGAABAAAAAQlYAAMAAAABDiQAAQAAAAEA1gABAAAAAQDUAAEAAAABANIABAAAAAEA0AAGAAAAAgFyAYQAAQAAAAEBjAABAAAAAQHEAAEAAAABBC4AAQAAAAEELAABAAAAAQRSAAEAAAABBtIAAQAAAAEG8AABAAAAAQcOAAYAAAADBwwHHgcwAAEAAAABBzgAAQAAAAEHbgABAAAAAQdsAAEAAAABB4oAAQAAAAEHkAABAAAAAQeuAAEAAAABB9QAAQAAAAEH+gABAAAAAQggAAEAAAABCEYABAAAAAEIRAABAAAAARB2AAEQrgEEAAEQrgEbAAEQsABKAAEQsAANACAAKgA0AD4ASABSAFwAZgBwAIIAjACWAKAAAQAEAEsAAgMsAAEABABdAAIDLAABAAQAbQACAxoAAQAEAHgAAgMsAAEABADDAAIDLAABAAQA+wACAywAAQAEAQIAAgMoAAEABAENAAIDLAACAAYADAEdAAIDGgEZAAIDKwABAAQBJwACAywAAQAEATMAAgMoAAEABAFsAAIDKAABAAQBeQACAywAAwABECQAARBeAAAAAQAAABsAAwABEGYAARBMAAAAAQAAABsAAhBuAB0BzwHQAdEB0gHTAdQB1QHWAdcB2AHgAeMCAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CHgOZAAIQaAE2BEYERwRIBEkESgRLBEwETQROBE8EUARRBFIEUwRUBFUEVgRXBFgEWQRaBFsEXARdBF4EXwRgBGEEYgRjBGQEZQRmBGcEaARpBGoEawRsBG0EbgRvBHAEcQRyBHMEdAR1BHYEdwR4BHkEegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSHBIgEiQSKBIsEjASNBI4EjwSQBJEEkgSTBJQElQSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS2BLUEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAElgThBOIE4wTlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wUABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRkFGgUbBRwFHQUeBR8FIAUhBSIFIwUkBSUFJgUnBSgFEQUVBRcFGQUpBR8FJAUqBSgFTAVNBU4FTwVQBVEFUgVTBVQFVQVWBVcFWAVZBVoFWwVcBV0FXgVfBWAFYQViBWMFZAVlBWYFZwVoBWkFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYAAQ4SA4oAAg4WABQFLgU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLAAIOFAFBBEYERwRIBEkESgRLBEwETQROBE8EUARRBFIEUwRUBFUEVgRXBFgEWQRaBFsEXARdBF4EXwRgBGEEYgRjBGQEZQRmBGcEaARpBGoEawRsBG0EbgRvBHAEcQRyBHMEdAR1BHYEdwR4BHkEegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSHBIgEiQSKBIsEjASNBI4EjwSQBJEEkgSTBJQElQSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEowSiBKQEpQSmBKcETgRPBKgEqQRQBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS2BLUEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1gTVBNcE2ATZBNoE2wTcBN0E3gTfBOAEWAUrBOEE4gTjBOQE5QTmBOcE6ATpBOoE6wTsBO0E7gTvBPAE8QTyBPME9AT1BPYE9wT4BPkE+gT7BPwE/QT+BP8FAAUBBQIFAwUEBQUFBgUHBQgFCQUKBQsFDAUNBQ4FDwUQBSwFLQURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFKAUiBREFFQUXBRkFKQUfBSQFKgUoBSkFKgVMBU0FTgVPBVAFUQVSBVMFVAVVBVYFVwVYBVkFWgVbBVwFXQVeBV8FYAVhBWIFYwVkBWUFZgVnBWgFaQVqBWsFbAVtBW4FbwVwBXEFcgVzBXQFdQV2BXcFeAV5BXoFewV8BX0FfgV/BYAFgQWCBYMFhAWFBYYFhwWIBYkFigWLBY0FjAWOBY8FkAWRBZIFkwWUBZUFlgVNAAILtAAQAlQCVQJWAlcCWAJZAloCWwJcAl0CYgJjAl4CXwJgAmEAAguOABACRAJFAkYCRwJIAkkCSgJLAkwCTQJSAlMCTgJPAlACUQABC34ApwADAAELfgABC4gAAAABAAAAGwADAAELfgABC44AAAABAAAAGwADAAILkAuGAAELfAAAAAEAAAAbAAILhAAcAoACgQKCAoMChAKFAoYChwKIAokCigKLAowCjQKOAo8CkAKRApICkwKUApUClgKXApgCmQKaApsAAQtWAmQAAgrmABACIAIhAiICIwIkAiUCJgInAigCKQIuAi8CKgIrAiwCLQACCzQABAIwAjECMgIzAAIKsgAQAjQCNQI2AjcCOAI5AjoCOwI8Aj0CQgJDAj4CPwJAAkEAAgsMABQBpQGmAacBqAGpAaoBqwGsAa0BrgG7AbwBvQG+Ab8BwAHBAcIBwwHEAAIK7gAUAbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgACCtAAFAGwAbEBsgGzAbQBtQG2AbcBuAG5AcUBxgHHAcgByQHKAcsBzAHNAc4AAgqyABQBpQGmAacBqAGpAaoBqwGsAa0BrgGwAbEBsgGzAbQBtQG2AbcBuAG5AAEKjgAKAAEKkAABAAgABgAOABYAHgAkACoAMAGiAAMAIQAkAaMAAwAhACcBoQACACEBngACACQBnwACACcBoAACAC8AAgpYAmcEYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElwSYBJkEmgSbBJwEnQSeBJ8EoAShBKIEowSkBKUEpgSnBKgEqQSqBKsErAStBK4ErwSwBLEEsgSzBLQEtgS1BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYExwTIBMkEygTLBMwEzQTOBM8E0ATRBNIE0wTUBNUE1gTXBNgE2QTaBNsE3ATdBN4E3wTgBJYE4QTiBOME5QTmBOcE6ATpBOoE6wTsBO0E7gTvBPAE8QTyBPME9AT1BPYE9wT4BPkE+gT7BPwE/QT+BP8FAAUBBQIFAwUEBQUFBgUHBQgFCQUKBQsFDAUNBQ4FDwUQBGAEYQRiBGMEZARlBGYEZwRoBGkEagRrBGwEbQRuBG8EcARxBHIEcwR0BHUEdgR3BHgEeQR6BHsEfAR9BH4EfwSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElwSYBJkEmgSbBJwEnQSeBJ8EoAShBKMEogSkBKUEpgSnBE4ETwSoBKkEUASqBKsErAStBK4ErwSwBLEEsgSzBLQEtgS1BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYExwTIBMkEygTLBMwEzQTOBM8E0ATRBNIE0wTUBNYE1QTXBNgE2QTaBNsE3ATdBN4E3wTgBFgFKwThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BQAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAUsBS0FLgHGAccByAHJAcoBywHMAc0BzgHFAcYBxwHIAckBygHLAcwBzQHOAjAFOQU7BT0FPgU/BUAFQQVCAgACAQICAgMCBQIIAh4EOQQ6BREFEgUTBRQFFQUWBRcFGAUZBRoFGwUcBR0FHgUfBSAFIQUiBSMFJAUlBSYFJwUoBREFFQUXBRkFKQUfBSQFKgUoBREFEgUTBRQFFQUWBRcFGAUZBRoFGwUcBR0FHgUfBSAFIQUiBSMFJAUl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AAEI2AAGAQAAAQlqAAIAAAAMCgAg4i8CPuJPZl7kcVCC7pMQopSyGMCwAGQAAAAAAAAAAAABx6bH4gABAAwAfgAcAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgBHAJYAnACiAKgArgC0ALoAwADGAMwA0gDYAN4A5ACiAOoA8AD2APwBAgEIAQ4BFAEaASABJgCWASwBMgE4AT4AogCiAUQBCAEIAUoBUAFWAQgBXAFiAWgBbgF0AXoBdAGAAYYBjACiAZIAlgGYAK4BngGkAQgAogEgAaoBsAG2AbwBwgEIARoAogEOAQ4AogABAAAB+wABAPUB+wABAIQC4gABARIB+wABAY4C4gABARQB+wABASYC7gABAQMB+wABAIoC4gABAJkCwwABAJgCwwABAJYC4gABAJAC4gABAcQB+wABATYB+wABATAB+wABAS0B+wABAPIB+wABAOIB+wABAKICfgABARsB+wABAQgB+wABAYgB+wABAQ0B+wABAQ8B+wABAO8B+wABAZEB+wABAQkB+wABAJQB+wABAJoB9wABAccB+wABAQ8C4gABAP0B9wABASAB+wABAMgC3gABAMgCyQABAR8B+wABAOUB+wABARUB+wABAJEB+wABASkB+wABARgB8QABAW4B+wABAPwB+wABAP4B+wABAXsB+wABAUIB+wABATgB+wABAQAB+wABAXgB8QABAOQB+wABAYMB+wABxi7GZAABAAwAcgAZAAABKAAAASgAAAEoAAABKAAAASgAAAEoAAABKAAAASgAAAEoAAABKAAAASgAAAEoAAABKAAAASgAAAEoAAABKAAAASgAAAEoAAABKAAAASgAAAEoAAABKAAAASgAAAEoAAABKABgAMgAzgDUANoA4ADmAOwA8gD4AP4BBAEKARABFgEcARYBIgEoAS4BNAE6AUABRgFMAVIAyAFYAOAA+AFeARYBZAE0AWoA4ADIAOYA4AFwAXYBfAEWAYIBiAGOAZQBmgGgAQQBFgGmAaYBFgGsAawBsgG4Ab4BuAHEAcoB0AHWAdwB1gHiAegB7gH0AfoCAAIGAgwCEgIY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/9AAu//QANP/xwDU/8cA1f/HANb/xwDX/8cA2P/HANn/xwDa/8cA2//HANz/xwDd/8cA3v/HAeT/vAHl/7wB5gAAAecAAQHoAAAB6QABAhP/xgIa/8YCG///Ahz//wIg/70CIf+9AiL/vQIj/70CJP+9AiX/vQIm/70CJ/+9Aij/vQIp/70CZP/HAmX/xwJm/8YCZ//GAmj/xwJp/8YCav/GAmv/xgJs/8cCbf/GAm7/xgJw/8YCcf/GAnL/xgJz/8YCdP/HAnX/xgJ2/8cCd//GAnj/xwJ5/9ECev/HAnv/0QJ8/9ECff/GAn7/0QJ//8YCgP/HAoH/xgKC/8cCg//HAoT/xwKF/8YChv/HAof/xgKI/8YCiv/GAov/xgKM/8YCjf/GAo7/xwKP/8cCkP/HApH/xgKS/8cCk//HApT/xwKV/9EClv/RApf/xgKY/8cCmf/GApr/xwKb/8cEP///BED//wABASQAAAABASQAAAABAST//wABAST//wABAST//wABAST//wABAST//wABAST//wABAST//wABAST//wABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAABASQAAAAFAOn/0ADq//4BJAAAASUAKAEmAAEABQDp/9AA6v/+ASQAAAElACgBJgABAAUA6f/QAOr//gEkAAABJQAoASYAAQAFAOn/0ADq//4BJAAAASUAKAEmAAEABADp/8YA6v/+ASL/7QEk/+0ABADp/8YA6v/+ASL/7QEk/+0ABADp/8YA6v/+ASL/7QEk/+0ABADp/8YA6v/+ASL/7QEk/+0ABADp/8YA6v/+ASL/7QEk/+0ABADp/8YA6v/+ASL/7QEk/+0ABADp/8YA6v/+ASL/7QEk/+0ABADp/8YA6v/+ASL/7QEk/+0ADAAX/8QAGf/EAEz/sAGa/+wBsf/tAbL/9QGz/+wBt//hAfn/cwIP/+ECEf/rAh4AEwAGADEAAQAyAAEBiQABAYoAAQGLAAEBjAABAAYA6gAC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AbT/7QIP/9oABAGx//YBt//1Abn/9gHG//YABQGx/+MBs//2Abf/7QG5/+0Byv/tAAUBs//2AbT/4wG3//YBuf/2Ac7/7AACAbcAEwHK//YACQG0/80BtwATAcX/7AHG/+MBx//ZAcj/2QHJ/6YByv/XAc7/7AABAcwAEwALAbL/9gGz/+wBtP/OAbX/6wG5/+wBxf/rAcf/7AHI/+wByf/sAcr/7AHO/+IACAGx/+wBsv/tAbf/4QG5/+wBx//sAcj/7AHK/+0BzP/ZAAIBtP/tAc7/7QACAbf/4gHM/+MAAwG3/+IBuf/2Acz/7QACAbT/2AHJ/7sAEgGx/+wBsv/sAbP/9gG3//UBuf/2Afn/6gIP/+sCEf/sA1L/9gNe//YDX//sA2L/4gNj/84Db//2A3j/9gOA/+IDg//1A5n/7AAJAbn/9gH4/+wCHgAKA1//9gNh/+IDY//sA4D/2AOD/+EDmP/sAAoBuf/rAfj/zgIe/+wDUgAKA2H/zANk//YDcf/2A4D/xAOD/80DmP/DAF8BsP//AbH/4gGy/+sBs//rAbT/4QG1/+sBtv/rAbj/9QG5/+wBuv//Acv/6wHN//UB2f/hAdr/4QHb//YB3P/2Ad3/4QHt//UB7//1AfD//wHy//8B8///AfT//wH1//8B9v//Aff/9gH5/8QB+v//Afz//wH+//8CAf/1AgP/9QIE//8CBv//Agf//wII//8CCf//Agv//wIN//8CD//gAh7/9gI0/9YCNf/WAjb/1gI3/9YCOP/WAjn/1gI6/9YCO//WAjz/1gI9/9YCbwAeAokAHgLK//YDTf/XA07/9gNP//YDUP/XA1H/9gNT//YDVP/sA1X/9gNW//YDV//XA1v/7ANc//YDXf/2A2L/9gNp//YDbv/0A3D/6wN0//UDd//1A3r/6wN8//QDf//0A4H/6wOC//QDg//rA4T/6wOF//QDhv/0A4f/9AOJ//UDjP/0A43/6wOO/+sDj//0A5H/6wOT//QDlP/0A5f/9gOY//YEPP//BD3//wARAbT/6wH5/3ICD//NAhEACgIeAAkDUgAJA17/9gNfAAoDYv/sA2P/9gNk//YDcf/sA3P/7AN4/+wDfv/YA4MAFAOXAAoADwGx/+wBsv/1AbP/7AG3/+EB+f9zAg//4QIR/+sCHgATA1L/9QNe/+ADX//0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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/y//b/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7EAAAAA//YAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAD/uv/s//b/xAAAAAAAAAAA/+IACv/2/+v/9v/Y/+z/6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/r//X/2P/2//UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s//YAAAAA//YAAP/2/+v/7AAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+L/4v/rAAAAAP/s//b/9v/2//b/9v/2/+z/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAA//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/uv/iAAAAAAAAAAD/zP+6/+wARgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAKAAAAAAAA//b/1//OAAAAAAAAAAD/zP/Y/+v/7P/O//YAAAAAAAAAAAAAAAr/4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAP/W/+EAAAAA/+L/9f/2ABT/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5v/9gAAAAoAHgAU/4j/9QAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAKAAAAAAAAAAAAAAAAAAD/7AAAABQAAAAA/8L/sAAK//b/7AAAAAAACgAAAAAAAAAA/8MAAAAAAAAAAAAA/+IACv/2ABQAFAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAD/zAAAAAAAAP+6ABQAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+4//YAAAAA//YACgAAAAAAAAAA/+IAAP/r/+v/6/+mAAD/4gAKABQACv+IAAAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/9f/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAHf/X/8T/9QAU/+v/1//T/+L/4f/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAA/+wAAAAAAAD/zgAAAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP/2AAD/7AAAAAAAAAAA/+H/4gAAAAD/1//1AAAAAAAAAAD/4f/i/+sAAAAA//b/4QAAAAAAAAAAAAD/4v/6/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+v/7P/m/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACnWQABAAAqhqqnAAWAFwAAAAK/+L/9v/s/83/7AAU/+z/4f/q//b/4v+w/+wAEgAS//UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAP/1ABMAAAAAAAD/wv/2//YACgAK/+z/9v/sAAn/7AAK//b/7AATAAoAFAAK/5v/9gAKABQAFAAU/4gAHwAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/XABMAE//2//YAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1gAK/7oAAAAAAAAAAAAAAAAACgAAAAoAAAAA/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/sP/iAAAAAAAAAAD/zABGAAAAAAAAAAAAAAAAAAD/4f/q/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+v/9P/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+S/+wAAP/NAAD/xAAe/9j/uwAA/+wAAAAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v+vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/X/+L/6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5z/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/r//b/2P+x/+sAAAAAAAAAAAAAAAAAAAAAAAD/9v/2AAAAAAAKAAAAAAAA/+L/4v+6/87/9gAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAP/t//b/2AAA/8//7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+r/4QAK/+z/4f/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/0/+sAFP/2/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKNtAAEAACiBKKkABsATgAA//b/9v/i//b/6//2ACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wwAAAAAAAAAAAAD/xP/D//b/9v/2/8T/4v/D/8P/9v/2/+v/4v/r/+0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4P/2//3//f/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr/4gAAAAAAAAAAAAAACv/iAAAAAP/2AAr/9v/s/+IAAAAAAAAAAAAAAAD//AAA//z//AAAAAD/9gAK//X/9v/2AAoACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/sf/rAAD/2P+wAAD/w/+xAAAAAABH/8P/zf+m/7EAAAAT/+H/6wAA/+0AAAAAAAAAAAAAAAAAAP/iAAAAAAAA/+IAAAAd/+sAXP/1/+sAHf+w/7AAE//sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAD/7P/YAAAAAP/t/+wAAP/h/9gAAAAAAAAAAP/XAAD/4AAA/+D/4AAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAUAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAP/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2ACj/4v+nAAAAAAAAAAAAAAAAAAAAAP/sAAAAAP/1AAD/9v/2AAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/rAAAAAAAAAAAAAAAAAAD/9v/2/7n/4v/s/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAP/1/+L/4v/h/+EAAP/iAAAACv/2AAAAAAAAAAD/4f/3AAAAAAAAAAAAAP/sAAAAAAAAAAAACQAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/7AAAAAAACf/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW//X/7P/X/8T/9gAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAIAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9v/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/1AAD/9gAAADwAAP/2AAAAAAAAAAD/9v/2//YAAP/aAAAAAAAA//b/7AAA/+z/7AAAAAAAAAAAAAAAAAAAAAAAAP/2//YAAAAA//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAP/2AAD/9gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/0AAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAA//b/9v/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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/+wAAP/2/+z/9gAAAAAAAAAA//b/9v/s/+wAAP/2AAD/2f/j//b/4/+y/+P/xP/O/9j/z//s/7z/z/+n/7L/vP/O//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA/7sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zv/Y/7H/9gAAAAAAAAATAAAAAAAAAAAAAP/2AAAAAAAA/+z/7AAA/+wAAAAAAAD/w//iAAD/7AAhABIAAAAA/+wAIP/s//YACgAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/iQAAAAAAAAAAAAAAAP/XAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/X//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/2P/F/+z/7P/s//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAAAAAAAAABYAAP/2AAAAAAAA//X/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+4//b/uP/2/7j/9gAA/9gAAAAAAAD/4f/Y//b/9gAA/9f/9v/1AAD/9gAA/+H/2P/r//b/9v/s/+cAAP/2AAD/zv/E/8//6wAAAAAAFAAA/9gAAAAAAAAAAAAAAAAAAP+RAAAAAAAAAAAAAAAAAAAAKf/s//b/4f/s/9b/zQAU/+L/7P/iABP/4v+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAKAAAAAP/1//YAAAAAAAD/9gAAAAAAAAAAAAD/9f/2AAAAAAAAAAAAAAAAAAD/7P/s/+z/4//2AAAAFQATABP/9QAAAAD/2gAAAAAAEwAA/68AAAAAAAAAAAAA//YAAAAzAAAAAAAAAAAAAP/rAAAAAAAAAAAAAAAA/7D/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+5AAD/uQAA/7kAAAAK/+EAAAAAAAD/4f/iAAAAAAAA/+IAAP/1AAAAAAAA/+H/4v/1AAAAAAAA//YAAAAAAAD/1v/E/+EAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAP91AAAAAAAAAAAAAAAAAAAAAP/9AAD/6//rAAAAAAAe/+z/9f/sAB7/7AAAAAD//f+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAA/+3/4gAAAAAAAAAA/+IAAAAAAAD/7QAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//f/7f/t/+P/4wAA/+L/4v/s/+MAAP/t//f/sf/P/+z/4gAA/+0AAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6wAAAAAAAP/iAAD/9gAAAAD/4v/2AAD/9gAA/+v/4gAA//YAAAAAAAAAAAAAAAD/9gAA/+z/2f/ZAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+0AAP/t/+P/7f/sAAAAAP/tAAD/7f/t/7H/z//tAAAAAAAAAAAAAAAAAAAAAAAA//YAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zQAA/80AAP/N/3MAAP/N/67/kv/1/87/xv+5/5L/zv+5/9j/rv+c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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//IAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAP/sAAD/1wAA/9cAAP/sAAAAAAAAAAAAAP/sABQACwAUAAAAAAAAAAAAAAAAAAoAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/uAAAAAoAAP/2AAAAAP/W/8T/uv/E/9f/2AAA/87/1v/sAAD/2AAdABUAHgAU/+oACgAUAB0AEwAUABwAAP/2AAAAAAAUAAD/7P/Y/80AAAAAAAoAAP/gAAAAAAAAAAAAAAAAAAAAAAAA/80AAP/EAAAAAAAnAAAAAAAA/67/uf+v/+D/zf+c//b/r/91/+v//f/h/7D/1v/t/6YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wgAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/D/3//9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//EAAP/sAAD/7P/s/+sAAAAAAAAAAAAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//X/7AAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAA/+IAAP/2//b/uf/s/9f/zv/D/+r/4f/iAAAAAP+wAAAAAAAAAAD/7AAAAAAAEgAAAAAAEv/1/9gAAP/iAAD/4v/O/+IAAAAA/+sAAAAA/9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAP/sAAAAAP/iAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAA//b/6AAK/+H/2AAAAAAAAAAAAAAAAAAKAAoACgAA/+wAAP/jAAAAAP/2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AAAAAAAAAAAAAAAA//L/9gAAAAAAAAAAAAAAAAAAAAAAAAAKAAD/zgAA//YAAP+wAAD/4gAA/+z/9v/sAAAAAP/2AAAAAAAA/8T/zv/i/9j/9v/Y/+P/kv/E/9j/zgAAAAAAAAAA/9gAAP/2AAD/7AAA/+L/6wAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYAAP/tAAAAAAAAAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/6wACXCwABAAAhx6I/AAVAGsAAP/2/+z/7P/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAD/9//2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAA//YAAP/1/9j/9f/E/+z/7P/2/8T/6wAz//b/9f/s/+z/9P/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+H/zv/iAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAK//UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAP/YAAAAAAAAAAAAAP/s/8QAAAAAAAAAAAAAAAAAAP/YAAD/2AAA/9f/xP/2/+z/4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/7P/s/+wAAP/Y/8T/7P+w/+v/7P/O/6b/zgA9AAD/9gAA/+P/1//O//YAAAAA/9cAAP/2AAD/7AAK//X/7P/r/+L/7f/j/+L/9v/r//b/9v/s/+z/9v/1//X/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAA//YAAAAeAAAAAAAKAAAACgAoABUAKQAAAAD/7AAAABQAAAAAAAD/9gAAAAAAAP/sAAAAAAAUAAwAFQAAABUAFQAUAAAAFQAAAAAAAAAAAAAAAAAAAAAAEwAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAP/sAAD/xAAA/7oAAAAA/7r/kv+6ABYAAAAA/+MAAP/YAAD/4gAA/+L/uv/2//b/7AAAAAD/9f/Y/7sAAP/P/8X/zgAA/84AAAAA/+wAAP/2//b/9gAAAAD/4//2//b/9v/i/+z/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr/zf+l/80AAP+5//3/6//O/87/7AAU/+IAAAAn//b/6//0//b/4v+4AAr/6wAKAAAAAAAAAAAAAP/1/9wAFAAA/64ACgATAAAAAAAA//X/1gAK/9f/9f/1AAAAAAAAAAr/6wAKAAAACgAAAAD/8P/rAAj/9P/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9f/xP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK//QACgAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2ABT/1wAA/7oACgAAAAD/1wAAABz/9gAA//UAAP/rAAAAAAAAAAAAAAAAAAAAAAAF/+v/9QAJAAAAAAAAABMAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAP/iAAAAAAAA//UAAP/x/+wAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+I/2r/dAAAAAAAAP/ZAAD/4QAAAAAAAAAA/4gAAAAAAAAAAP/i/+L/kv+SAAD/nP+S/6QAAP/EAAAAAAAAAAD/9gAAAAAAAAAA/6YAAP/1/+H/6wAAAAAAAAAA/+wAAAAAAAAACv/2//b/2f+m/+z/w//s/+z/7P/X//X/7v/E/+D/nP/D/7v/kv/2/83/9v/D/+z/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFP/j/7D/4f+m/80AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAD/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//EAAP/1AAAAAAAA//YAAAAA/+v/5//2AAAAAAAAAAD/6wAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+//xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAAD/2P/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAA//YAAP/2AAAAAAAAAAD/9gAA/+wAAAAAAAAAAP/sAAAAAAAAAAAAAAAA/+gAAP/s/9j/7AAA/+z/4gAAAAAAAP/hAAAAAAAAAAAAAP/i//b/zv/2AAAAAAAAAAAAAAAAAAD/7P/2//b/9v/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+P/8gAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+vAAAAAAAAAAAAAAAAAAAAAAAUAB0AEwAnAAAAAP/NAAAACv+uAAAAAAAAAB0AAAAAAAAAAP/WAAAAHgAU/68ACgAUABwAAAAUAAAAAAAA/9YAAAAAAAAAAAAAABQAAAAA/+wAAAAAAAAAAAAA/+r//f/rAAD/sAAAAAD/9gAA/8T/6//OAAv/zv/hAAD/7P/Y/9cAAAAKAAAAAP/2/+v/9f/OAAAAAAAAAAAAAAAAAAAAAP/gAAD/4v/Y/6b/4gAJ/+3/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ugAAAAD/4QAAABQAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAA/8QAAAAAAAAAAAAAAAAAAAAAAAAAAP/Y/+wAAP/OAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAA/87/9QA0AAAAAAAA//YAAP/OAAAAAAAA/+MAAAAAAAAAAAAK/+wAAP/2/9gAAAAKAAAAAP/2AAAAAAAA/+3/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAD/2P/o/+wACv/ZAAAAAAAAAAAAAAAAAAoAAAAAAAD/7P/2AAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+L/7AAU//UAAksoAAQAAH1WfnQAEQB5AAD/4v/y//YAFP/j/+z/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/pv/O/6v/uf+6/8T/ugAe/7r/sP/F/53/2f/Y/8T/sf/P/6j/uv+cABQACv/h/7r/zP/W/8T/zf/FAAv/2P/O/7D/4v/Y/6//2f/j/8T/xf+m/6b/4/+m/+L/4v/i/5L/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7AAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoABQAAAAAAAAAAP/sAAAAAAAV//sAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAUABQACgAKABUAFQAVABUAKQAVAAoAHgAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2AAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/i//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8wAAAAAAAAAAAAFAAAAAAAAAAAAAP/EAAAAAAAJ//YAAAAAAAD/rv/iAAAACgAAAAD/9AAA//YAAAAAAAAAAAAJAAD/9f/1AAr/7AAAAAD/9v/XAAAAAAAA//X/9v+4AAAAAP/r/9wAFAAUAAAACgAKAAAAJwAT/87//QAAAAD/6//r/87/9f/h//QAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAD/9gAA/+wAAAAAAAAACgAAAAAAAP/i/6b/4gAAAAAAAAAA//YAAAAA/+sAAAAA//YAAP/2AAAAAP/jAAAAAAAA/+wAAP/sAAD/9v/2/84AAAAA//X/9f/O/+z/6//tAAD/zgA9/+P/6//EAAD/1//2/+z/sP/2//b/1//s//X/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9QAAAAD/4v/u/8T/7AAA/2r/pP/1AAAAAAAAAAAAAAAA/8QAAP/hAAAAAAAA/9n/6wAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAD/4v+I/5L/kv+c/6b/dAAA/5IAAAAAAAD/hwAAAAAAAAAAAAD/4QAAAAAAAAAK//b/8f/2/9n/w/+7/53/pv/7//b/7P/s/+v/xP/O/+L/f//i/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT//v/4//N/8X/p/+w/4kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAACwAUAAAAAAAAAAAAKAAKAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/2/+0AAAAAAAAAAP/2AAAAAAAA//b/9gAAAAAAAAAAAAAAAAAAAAAAAP/tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAKAAAAAAAAAAAAAAAA/87/2AAAAAAAAAAAAAAAAAATABP/7AAAAAAAAAAAAAD/9gAA//YAAAAAAAD/4gAAAAAAAP/2/+z/uQAAAAAAAP/s/+0AAAAAAAAAAP/sADQAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAA/8T/4v/2/+wACv/s/+z/z//FAAAAAAAAAAAAAAAAAAAAAP/P//YAAAAAAAAAAAAAAAAAAAAAAAD/sAAA//b/9v/2//b/2P/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/84AAAAU//b/9v/Z/8//2QAA/7sAAAAAAAAAAAAAAAD/7P/2/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/x//H/8QAAAAAAAAAA//b/6//sAAD/8f/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAACO6wABAAAdQp2agAXAFYAAP/7//v/+//7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1//YACv/1//D/2P/P//X/9gAUABMACf/2/+z/4v/iAFD/2P/Y/+wACgAK//b/9v/s//b/7P/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//r/4v/s/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU/+L/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/oAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAFQAAAAAAAAAAAAD/7f/iAAD/9v/2AAAAAAAAAAD/7P/t/+wACv/s/+z/9v/r/9j/4v/2/+z/9v/1/9j/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1wAA//YAAAAAAAAAAAAA/83/6//2AAAAAP/OAAAAAAAe/80AAAAA//UAAP/s/9j/4P/s//X/uQAAAAAAAP/m/9j/4gAN/+z/4v/s/+L/4v/iAAD/7AAA//X/2P/s//b/9v/2/+L/6//s/+z/7P/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAD/4gAA//X/9v/2AAoAAP/h/+IAAAAAAAAAEgAAAAAAAP/2AAAAAP/sAAD/4gAAAAAAAAAAAAAAAAAA//YAAP/2ABP/7AAA/+v/6//E/87/9v/s//UAAAAA/+sAAAAAAAAAAAAAAAAAAP+wAAAAAP/s/+oAEv/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7f/s/7D/zv+c/5T/7QAAAAAAAAAA/+MAAP92/2v/2//2/4n/7QAAAAD/7f/sAAAAAP/sAAAAAAAAAAAAAP/2AAAAAAAAAAD/9v/o/9f/4QAAAAAAAAAA/+3/4f/tAAAAAAAAAAAAAAAA/8YAAAAA/+wAAP/C/+MAAP/2/37/rv+5/5z/nP+U/4r/xf/h/+IAAAAAAAAAAAAAAAAAAAAAAAD/2v+y/7L/sgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//cAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9v/2/9gAAAAAAAAAAAAAAAAAAAAAAAD/1//2/+wAAP/2AAAAAAAA/+H/6wAAAAAAAP/WAAAAAAAe/7oAAP/2AAD/9v/i/+r/4P/r/+v/xAAAAAAAAP/0/+z/6wAK//T/9P/1/+v/6//r//X/6wAA/+v/4f/s//YAAAAA//X/6//2//X/9v/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/Y/+gACv/2/+z/4v/ZAAD/2AAKAAoAAP/s/9j/zv/1ADT/u//Y/+IAFAAU//YAAP/t//YAAP/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAoAAAAAAAD/7P/jAAAAAP/2AAAAAAAK//YAAP/2AAAAAAAAAAAAAAAAAAAAAAAA//b/7P/j/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU/8X/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/yAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAoAAP/s/+H/4f/O/84ACgAA/+z/9gAAAAAAAP+5/9cAAAAK/8QACgAAAAD/9//2AAAAAAAAABQAAAAAAAAAAAAAAAAAAP/2AAD/9v/1/+z/7AAA//X/9gAA/+L/7AAAAAAAAAAAAAAAAP/2/9gAAAAA//b/9v/q/+IAAAAA/9j/4v/0//X/4f/i/+v/6//r//YAAAAAAAAAAAAAAAAAAAAAAAD/7P/Y/9j/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAFAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+sAAAAAAAAAAAAAAAAAAAAAAAD/7P/2AAD/9v/i/+L/4gAA/+wAAAAAAAD/9v/2/+v/7AAz/9j/4v/2AAAAAP/s//b/7AAA/+z/1wAAAAAAAAAA/+3/9gAAAAAAAP/2//b/7P/sAAAAAAAAAAAAAP/2//YAAAAAAAAAAAAAAAAAAP/2AAD/9gAAAAAAAAAA//YAAP/2AAAAAAAAAAAAAAAA//X/9gAAAAAAAAAAAAD/9gAAAAAAAP/s/+z/7P/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+6AAD/9gAK//YAAAAAAAn/r//O/9b/7AAA/68AHQATACf/sAAAAAD/6wAAAAD/u//WAAAAAP+uAAAAAAAA/9f/9f/XAB7/uv/OAAD/6v/Y/9gAAP/qAAAAAP/NAAAAAAAAAAD/4v/EAAAAAP/Y/+AAAAAAAAAAHP/sAAAAAAAdABUAHgAUAAoAFAAUABQACgAAAAAAAAAAAAAAAAAA//3/7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8QAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAA/7D/7P/i//b/7P/2AAD/9v+w/9j/9v/s//b/pQAA//YAFP+v/+3/9gAA/+z/7P/Y/8L/4v/i/68AAAAAAAD/1//r/9cACv/h/9j/6//h/+v/4f/i/9j/9f/i/9f/7P/s/+v/9f/i/+H/9f/r/+z/4QAA//EAAAAA//YAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9AAAAAD/9gAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/uQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/+//2AAAAAAAAAAAAAAACLIwABAAAbGZt/AAXAFYAAP+S//b/2P/s//b/9v+5/9j/r//r/+z/zv+5/7r/5//O/9j/2P/E/9j/h//i/+L/uv/O/8T/2P/EABT/zf90ABQAHgAd/9j/fv/f/8z/2AAK/9f/4f+5/+L/7P+7/6b/2f/r/9j/fP/NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+c/+L/9v+JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/6YAAP/O/9kAAAAA/7D/xf+i/9j/7P+7/6b/sP/E/7H/u/+7/7D/xf+d/9n/2P+x/7v/sf/P/6gAAP+6/5wAFAAAAAr/4f+m/9b/zf/FAAv/zv/Y/6//2f/j/6f/pv/j/+L/4v+S/8MAAAAAAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8P/2P/2/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/i/+IAAAAAAAAAAAAAAAAAAAAAAAD/6wAAAAAAAAAAACgAAAAAAAAAAAAAAAoAAP/sAAAAAP/2AAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAABP/9v/2//b/9v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAD/9gAA/88AAAAAAAD/9gAAAAD/+wAAAAAAAAAA/+z/9gAAAAAAAAAAAAAAAAAA//YAAAAA/+L/9gAA/5IAFv/OAAAAAAAAAAAAAP/Y//YAAP/t/+L/7f/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/O/6f/sP/O/50AAP/s/8T/2P/Y/+P/xP/Y/+z/6//r/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2P/1AAD/9v/YAAAAAAAAAAAAAAAAAAAAAAAA//b/9gAA//YAAAAA/+wAAAAAAAAAAAAKAAAAAP/sAAD/4v+mAD3/4gAA/+sAAAAAAAD/6wAA//YAAAAA/+P/9v/sAAD/9v/1/87/7AAAAAAAAAAAAAD/xP+6/7D/zv+wAAD/4v/X/+v/7QAA/87/4wAA/9f/7P/2/+z/9v/1/+v/9v/2//X/9gAAAAAAAAAA//UAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAzAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/s//YAAAAAAAAAAP/rAAAAAAAAAAAAAAAA/9j/xP/E//b/ugAA/+sAAAAAAAAAAP/rAAAAAP/0AAAAAP/1//UAAP/s//UAAAAAAAAAAAAAAAAAAP/2ACoAAAAVACAAPQAAAAD/7QAMAAwAAP/s//YAAP/s//b/9gAA//f/7AAAAAz/7P/2/+wAAAAAAEgAAAAAAFIAUgBHAAAAAAAAAAAAAABR/+wAAP/sABYADf/sAAAAAAALABUAAAAAAAAAAAAAAAAAPQA+AD4APgA0AEgAAAAgAD4AKgA+AD4ANAA+/+wAPQAVAAAAFwA0AD4APv/2AAAAAP/2ABUAFQAAAAD/7AAAAAAAAP/iAAD/9v/2AAAAAAAAAAAAAAAAAAAAAP/2//YAAAAA/+MAAAAAAAoAAAAAAAAAAAAAAAAAAP+mADT/6wAA/+wAAAAAAAD/6wAAAAAAAAAA/+z/9v/2AAAAAP/2/9gAAAAAAAAAAAAAAAD/zv/E/7r/4v+6AAD/7P/r/+z/7QAA/9f/7AAA/+L/9v/2//b/9v/s/+z/7AAAAAD/9gAAAAD/9gAAAAAANAAAAB4ANAA0AAAAAAAAAB8AHwAA//EAAAAA//YACgAKAAAAAP/iAAAAFf/iAAAAAAAAAAAAWwAA/+wAZgBvAFAAHgAAAAAAAAAAAGUAAAAUAAAAHwAWAAD/7QAAAB4AFf/tAAAAAAAAAAAAAAA5AD4ASABIAEgASAAAACEAUgA0AFsAUgBIAFEAAABHABP/9gAX//YAWgA+AAAAAAAAAAAAKQApAAAAAAAAAAAAAAAA/+IAAP/sAAD/9gAAABcAAP/2AAAAAAAAAAUACgAAAAAAAAAAAAD/9QAAAAAAAAAAAAoAAAAA/9cAHgAAAAoAAP/sAAAAAP/1AAD/9f/rAAD/7QAAAAsAAP/2AAAAAAAAAAAAAAAAAAAAAP/s/9j/uwAA/9gAAAA0AAAAAAAAAAAAAAAAAAD/2QAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/iAAAAAAAAAAAAAAAAAAAAAAAA//v/+//i/+IAAAAAAAAAAAAA//YAAAAAAAAAAP/YAAAAAP+SABb/zv/2AAAAAAAAAAD/zv/2AAD/4//iAAD/8QAAAAD/9v/2AAAAAAAAAAAAAAAAAAD/xP+w/7r/uv+mAAD/7P/O/7v/z//j/7r/xf/s/9j/7P/1AAAAAP/1AAAAAAAA//YAAAAAAAD/9gAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8f/xAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAApAAAAAAAAAAAAAAAAAAAAAAAA/+0AAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/7P/sAAD/6wAAAAAAAAAAAAAAAP/jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAACgAKQAUAAAAAAAAAAAAAAAVAAAAAP/tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAeAAAAAAALAAAAAAAAAB4AFQAVABUAFQAVAAAAFAAAAAAAAAAAABQACgAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAP/sAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAP/2//UAAAAA/+wAAAAAAAAAAAAAAAD/9gAAACkAAAAA//YAAAAAAAAAAAAAAAD/9gAAAAAAAP/2AAAAAAAA/+EAAAAAAAAAAAAAAAAAAP/1//YAAP/1AAAAAAAAAAAAAAAAAAAAAP/2AAAACQAAAAAAAAAA//b/9v/2//YAAAAAAAAAAAAAABQAAAAAAAD/2AAKAAAAAAAAAAAAAAAA/+z/9gAAAAAAAAAAAAAAAAAAAAAAAP/iAAD/6wAAAAAAAAAAAAD/1wAAAAAAAAAKAAAAAAAAAAAAAAAA/+IAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9f/zv+6AAD/ugAA/+sAAAAAAAAAAAAAAAD/9f/sAAD/9QAAAAD/9QAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/2AAD/9gAAAAAAAAAAAAAAAP/2//b/9gAAAAAAAAAAAAD/7AAAAAAAAAAA/+wAAAAA/+wAHwAAAAAAAP/2AAAAAAAA//UAAP/2//YAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+L/2P/i/9kAAAAA/+z/7AAAAAD/7AAA//b/9f/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/w//sAAAAAP/iAAD/9QAA//YAAAAAAAD/9v/2ABMAAAAKAAoAAP/2/6UAAP/2/+wAAP/iAAAAAAAUAAD/uP/YAB8AAAAA/6//9P/xAAAAAAAA//X/6gAK//YAAP/OAAD/7AAA/8IAAAAAAAAAAAAAAAAAAP/Y/84ACv/OAAD/4gAAABMAFAAUAAAAHQAA/+IAAP/1/+z/9f/r/8T/9f/WAAAAAAAAAAAAAAAA//b/9gAAAAD/7AAAAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/uQAo/+wAAAAAAAAAAAAA/+sAAAAAAAD/9v/2//YAAAAA//b/9v/YAAAAAAAAAAAAAAAA/+L/xP+n//X/ugAA/+L/6//2AAAAAP/i/+wAAP/i//b/9f/s//b/9QAA//YAAP/1//YAAAAA//YAAAATAAAAAAAA//UACgAAAAAAAAAAAAAAAAAAAAAACQAAAAoAAAAAAAAAAAAAABT/7AAAAAAAAAAAABMACgAA/+IAJwAAAAoAAAAAAAAAAAAAAAAAAP/2AAoAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAA/+L/2AAK/9gAAP/2AAkAAAATAAAAAAAdAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAP/ZAAAAAAAA//cAAP/3AAD/9gAAAAAAAP/s/+wAAP/2AAAAAAAA/+0AAAAAAAAAAP/2AAAAAP+xABYAAAAAAAAAAAAAAAD/7AAAAAD/9v/2AAD/9gAAAAD/9gAAAAAAAAAAAAAAAAAAAAD/4f+7/7v/4v+xAAD/4v/i/+L/7P/t/9j/7P/2/+z/7P/2AAAAAP/tAAAAAAAA//YAAAAAAAAAAAACHWYABAAAY5hksAAPAHwAAP+5/+v/2P/r//3/6//Y/87/8P/s/+z/7P/2AAoACgAJ/6X/6//1/9wAFAAUAAj/rgAKAAr/4gAnABP/pv/O/87/9P/1//X/6//0/9YACv/t/+IACv/X//X/9f+4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/87/zQAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAoAAAAAAAAAAP/OABUAAAAA/8QAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAD/9v/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/4v/PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4v/2AAAAAAAAAAAAAAAAAAD/4//sAAAAAAAAAAAAAAAAAAD/z//2/8//9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/6//xP+I/4n/7P/tAAD/4v/t/9j/pv/YAAD/xv/Z/8//nP+c/8YAAP91/3X/dP+L/3UAAP90AAAAAAAA/+MAAP+y/+P/sv/Q/8X/ugAA/+P/4wAA/+L/7P+JAAD/iQAA/6//xf/s/+L/2P+m/8X/4v+m/9j/xQAM/9j/7f/j/8//sP9//9r/sP+v/6//f//Y/+z/7QAM/7z/2v/E/+P/7P/jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+sAAAAAAAAAAAAA/+z/2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8/+z/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9n/7P/Z/+wAAAAKAAAAAAAAAAAACgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6//rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/+z/9v/s/9j/zv/YAAD/9gAAAAAAAAAA//b/9v/jAAAAAP/s//b/9gAAAAD/9v/3/8YAKv/2/+L/zv/sAAAAAP/s//YAAAAAAAAAAP/i//b/4gAA//X/4v/sAAD/2P/s/9j/7P/sAAAAAAAA//b/9gAAAAD/9v/2AAAAAAAAAAD/9gAAAAD/9gAAAAD/7P/s/+3/9gAAAAAAAP/2//b/7AAA//YAAAAAAAD/9v/2//b/7P/2/+P/7f/j/+P/7f/2//b/4//t//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK//YAAP/j/+IAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/tAAAAAP/s/87/xQAA//YAAAAAAAAAAAAJAAD/7f/W/9b/2AAAAAAAAAAAAAAAAAAAAAAAAAAA/7sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2/8UAAP/EAAD/7AAAAAAAAAAAAAoAAAAAAAkAAAAAAAoAAAAKAAAAAAAAAAAAAAAA/+sAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/hAAr/uv/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6//s/+L/6//O/+L/u/+xAAAAAP/sAAD/9v/2/+z/9f/PAAAAAP/W/9gAAAAAAAAAAAAAAAAAAAAA/9f/qP/PAAAAAAAA//YAAAAA/+3/2f/O/+L/4//j/9oAAP/s/+z/sf/PAAAAAP/OAAoAAAAA//X/7AAAAAAAAAAAAAr/9//2AAAAAAAA/88AAAAAAAAAAAAA/+EAAAAA//b/9wAA/+MAAP/PAAAAAP/rAAD/7AAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/s//b/9f/W//b/6//E/+wAAAAAAAAAAAAAAAAAAP/iAAD/7P/2/9b/9v+8/7sAAAAAAAAACgAAAAD/9v/2/9AAAAAA/9j/2//uAAAAAAAAAAAAAAAAAAD/4f+y/9gAAAAA/+P/7QAJ/+3/7P/P/7H/xf/i/+P/xgAAAAD/9v+7/9j/u//Y/9YACgAAAAr/9v/2AAoACv/2AAAACgAAAAAAAAAAAAAAAAAAAAAAAAAA/9b/2f/2AAAAAAAAAAD/4wAA/9D/4wAA/+L/4gAAAAD/9gAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAP/2/9YAAAAA/8b/7P/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9v/jAAAAAP/t/+0AAP/sAAD/9v/tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4//jAAD/7P/tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAACEAAAAA//YAAAAAAAAAAAAA/+L/7P/2/+wACgAA/9b/2AAA/+0AAP/sAAAAAAAAAAAAAAAA/9gAAAAA/+sAAP/sAAD/4f/1//YAAAAAAAAAAP/sAAAAAAAAABMAAAAAAAAAAAAA/+wAAP/iAAr/7P/s/+L/7P/s/+wAZv/s//b/7P/NAAAAAP/sAAAAAAAAAAAACgAA/+wAZgAAAAAAAP/s/+z/7P/i/+IAAAAAAAD/7AAAAAAAAP/EAAAAAP/XAAAAAAAAAAAAAAAAAAAAHQAAAAAAAP/2//YAAP/X//YAAP/q//YAAP/sAB3/7P/Z/+0AAP/kAAAAAAAA/+z/7P/Z/9kAAAAAAAAAAAAAAAAAAAAA/9gAAAAA/80AAAAAAAAAAAAAAAAAAAAAAAD/6//Q/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/Z/+z/2f/s/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAl/+T/5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9cAAAAAAAAAAAAAAAAAAAAA/80AAAAA//v/2P/2/87/sgAA//b/9gAAAAAAAAAAAAAAAAAAAAD/xAAAAAD/7QAAAAAAAAAAAAAAAAAA/8X/uwAAAAD/2f/P/+3/xf/t/7P/nv/Q/+H/xv/jAAD/9gAA/7L/u/+y/7v/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MAAAAAAAAAAAAAAAD/2P/aAAAAAAAAAAD/7f/QAAD/vP/tAAD/zf/NAAAAAP/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9QAA/+wAAAAAAAD/nP/1/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/+wAAP/Z//b/2f/E/+IAAP/h/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAP/Z//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg8sAAQAAF4OXlQABwCBAAD/ff+vAB3/4//h/7j/2P/2/33/4//h/+z/9v99//b/4//2AB3/+//h/84AMP/2/9j/4f/2/5r/z//j/1b/Vv/2AB3/4f/s/7n/4f/s/+z/4v/E/4D/4v/2/+z/iP/N/7AAE//s/+z/zv/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/kQAAAB7/7P/YAAD/xQAA/5H/7P/FAAAAAP+RAAD/7AAAAB4AAP/Y/8QAFAAA/8X/2AAA/7L/1//j/3MAAAAAAB4AAAAAAAD/2AAA/+L/4v/N/7j/7f/t/+z/fgAA/7AAFP/r/+wAAP/s//YAFAAUABUACv/2ABX/9gAUAAoAFQAU//b/7f/Y/9r/9gAU/+L/4v/sABT/7P/i/+P/7AAUABP/9v/EAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/hwAAABT/2P+6AAD/p//Y/4f/2P+nAAD/2P+HAAD/2AAAABQAAP+6/7oAFP/Y/6f/sP/Y/57/sf/O/0wAAAAAABQAAAAAAAD/sAAA/+H/uv+b/5D/xf/Z/9f/iAAA/5wAE//E/9cAAP/NAAAAFP/tAAD/7AAAAAAAAAAA/+IAAP/t/+P/2P/E/88AAAAA/9j/nP/Y/+0AAAAAAAD/7AATAAD/7P+7/+z/2AAK/9j/9v/Y/7L//f/s//b/7P/2/+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAU/8P/4gAAAAD/9gAAABT/6//2AAAAAAAUACD/6wAA/8P/1wAAAAAAAAAA//YAAAAAAAAAAAAAABQAAAAA/8MACgAAAAAAAP/sAAAAAP/sABT/9gAA/+wAAAAAAAD/7AAUAAAAAAAAAAAAAP/i/7kAAAAA/8IAAAAU/+z/uf/iAAAAAAAAAAD/zgAUAAAAAAAA/+IAAAAAAAAAAAAA/+wACgAAAAD/6/+SAAAAFv/rAAAAAAAAABb/4gAAAAD/dP/O/6YAFP+w/87/pv+mABT/4v+SAAT/kgAU/6b/7P+6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/hwAAABT/9v/YAAD/6//2/4f/9v/rAAD/9v+H/+z/9gAAABQAAP/Y/9gAE//2/+v/7P/2/5wAAAAA/1YAAAAAABQAAAAAAAD/7AAAAAAAAAAA//sAAAAA//YAAAAAAAAAAAAAAAAAAP/tAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAA//YAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAP/2//UAAAAAAAD/9QAAAAAAAAAAAAAAAAAA/+0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAD/9//2//YAAAAA/+3/9gAAAAAAAAAAAAAAAP/1//UAAAAAAAAAAAAAAAD/9f/1AAAAAAAAAAD/7QAAAAAAAAAA//UAAAAAAAAAAP/r/+sAAP/jAAAAAP/1AAAAAAAA/+0AAAAAAAD/7P/2//YAAAAA//UAAAAAAAD/9f/1AAAAAAAAAAD/9QAAAAAAAAAA/+3/9v/2/+z/2ABH//b/7f/2/+z/9gAAAAAAAAAAAAD/7AAAAAAAAAAAAAAACgAU/+wAAAAKAAAAFP/sAAAAAAAAAAD/7AAAAAAAEwATAAoAAAAA/9AAAAAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAFAAKAAoAAP/2AAr/9gAAAAoACgAKAAAAAAAAABwAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAP/YAAAAAP/sAAAAEwAAAAAAAAAAABQAAAAAAAAAAAAA/+L/9QAAAAD/4v/i//UAAP/sAAD/7P/1AAAAAAAAAAAAAAAA/+wAAAA+AAAAAAAAAAAAAAAT/+wAEwAKAAEAHAMSAxQDFgMYAxoDHAMeAyADIgMkAyYDKAMxAzUDNwM5AzsDPQM/A0EDQwNFA0cDSQNLA58DoAQ5AAEARwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUA+wD8AQ0BLQEuAVUBWwFcAXkBggGaAZsBnAGdAwcDDANuA3IDdAN2A3wDfgOBA4UDkwOVA+wD7wPxA/ID9AP2A/oD/wQCBAMEBwQJBAoECwQQBB0EJwQoBDQAAQAZAxUDFwMZAxsDHQMfAyEDIwMlAycDKQMyAzYDOAM6AzwDPgNAA0IDRANGA0gDSgNMBDoAAQBgAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsASwBMAF0AeAChAKcAqADDAMwA5QOhA6QDpgOnA6kDqwOvA7QDtwO4A7wDvgO/A8AD0gPcA90D6QRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRTBFQEVQRWBFcEWARZBFoEWwRcBF0EXgRfBHYE0gTTBO4E9wUQBVIFVAVWBV8FYgVjBWcFaQVqBWsFfQWIAAEAAQMrAAEACQAEABQAFQAeAC4ALwRIBFgEWQABAAYDKgMtAy4DLwMwAzQAAgAUAAIADQAAAA8AEQAMABMANQAPAKEAoQAyAMwAzAAzAOUA5QA0APwA/AA1AS0BLQA2AVUBVQA3AYIBggA4AZoBnQA5A24DbgA9A3IDcgA+A3QDdAA/A4UDhQBABEYEUQBBBFMEVQBNBFcEXwBQBPcE9wBZBRAFEABaAAEAAQMzAAEABgAQABYAKgAwBFQEWgABAAEDLAABABAAAgAGAAoAEAAWABwAIAAkACoAMAEtBEYESgROBFQEWgABAAMDGAMgAyIAAQDZAAEAAwAHAAkACgAOAA8AEQAVABYAFwAYABkAGgAhACwAMwBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfACAAIcAiACJAIoAiwCMAI0AjgCPAJAAtwC4ALkAugC7ALwAvQC+AL8AwADBAMIAwwDEAMUAxgDHAMgAyQDKAMsAzADNAM4AzwDQANEA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDkATkBagFrAWwBmQGhAaQBsQGyAbQBtQG3AbkBxQHGAccByAHJAcwBzgHfAeEB4gHkAeUB+AH5Ag8CEQIdAh4CHwKeAp8CoAKhAqICqQKvArACzgLPAtAC2gNOA1IDVgNZA10DYQNiA2MDbwNxA3MDdQN3A3gDewN/A4MDpAOnA6kDqgOrA6wDrQOuA7ADsQOzA7QDtQO2A7gDuQO8A8ADwwPEA8YDxwPIA8kDzAPNA84DzwPQA9ED0wPUA9UD1gPYA9kD3APdA94D4APhA+ID5wPqA+sEDgQRBBMEFAQcBB4ERwRLBFUEWwUPBRIFFgUaBSEFJQUmBScFLAVcBWAFbgVxBXQFdwV8BYsAAQASAAMABwNOA2IDsQO1A8MDxgPJBEcESwUSBSYFXAVgBW4FcQV0AAEAFgARABcAGQDkA1YDXQNhA2MDzAPRA+AEVQRbBF0FDwUaBSEFJQUnBXcFfAWLAAEAGwFrAZkBpAG0AbUBuQHJAcoBzgHfAeAB+AIRAh0CHgKfAqIDUgNvA3EDdwN4A4MEDgQRBBQEHgABABkAAQAsADMBsQGyAbcBxQHGAccByAHMAeEB4gHjAfkCDwIfAqACrwNzA3UDewN/BBwELQACABMDoQOwAAADsgO0ABADtgPCABMDxAPFACADxwPIACIDygPLACQDzQPQACYD0gPfACoD4QPsADgELgQuAEQFTAVbAEUFXQVfAFUFYQVtAFgFbwVwAGUFcgVzAGcFdQV2AGkFeAV7AGsFfQWKAG8FjAWWAH0AAgAZA00DTQAAA08DUQABA1MDVQAEA1cDXAAHA14DXwANA2QDagAPA20DbQAWA+0D7QAXA+8D8gAYA/QEDQAcBA8EEAA2BBIEEwA4BBUEGwA6BB0EHQBBBB8EIQBCBCMELABFBC8ENwBPBREFEQBYBRMFFQBZBRcFFwBcBRkFGQBdBRsFHgBeBSAFIABiBSIFIwBjBSkFKQBlAAIAGwACAAIAAAAEAAYAAQA2AGYABACoAKgANQDjAOMANgNgA2AANwNrA2wAOANuA24AOgNwA3AAOwNyA3IAPAN0A3QAPQN2A3YAPgN5A3oAPwN8A34AQQOAA4IARAOEA4UARwOHA5EASQOTA5MAVARGBEYAVQRIBEkAVgRgBHUAWAR3BH8AbgUOBQ4AdwUYBRgAeAUfBR8AeQUkBSQAegUqBSoAewACABAACAAQAAAAEgAWAAkAZwCBAA4AgwCnACkAqQC1AE4AtwDSAFsA5QDlAHcESgRKAHgETARUAHkEVgRaAIIEdgR2AIcEgASVAIgElwSsAJ4ErgT9ALQFEAUQAQQFKwUtAQUAAgAPABgAGAAAABoAKwABAC0AMAATANMA4gAXAOYBNAAnATYBQQB2AUMBVACCAVsBagCUAWwBgQCkAYgBiAC6AZoBmwC7AZ4BowC9BFwEXADDBF4EXwDEBP4FDQDGAAIADwAxADIAAAA0ADUAAgGJAZgABAGzAbMAFAG4AbgAFQHNAc0AFgHZAd0AFwHsAfAAHAHyAfcAIQH6AgQAJwIGAg4AMgIYAhkAOwLGAs0APQLSAtUARQQ8BD4ASQABAA4BsAG2AboBywHkAeUB5gHnAegB6QHqAesCEwIaAAIAEQAHAAcADgNOA04AAgNiA2IABAOxA7EADAO1A7UACgPDA8MABgPGA8YACAPJA8kAEARHBEcAAQRLBEsADwUSBRIAAwUmBSYABQVcBVwADQVgBWAACwVuBW4ABwVxBXEACQV0BXQAEQACAXMAAgACAAEAAwADAAIABAAEAAUABQAHAAIACAAIAAUACQAKAAIACwALAAMADAANAAIADgAPAAQAEAAQAAUAEQARAAIAEgASAAUAEwATAAIAFQAVAAYAFgAWAAcAGAAYAAgAGgAaAAkAGwAbAAoAHAAcAFgAHQAdAAwAHgAgAF0AIQAhAAsAIgAiAFkAIwAjAAwAJAAkAFoAJgAnAAwAKAApAFwAKgAqAF0ALAAsAF0ALQAtAFwALgAuAF4AMAAwAA0AMQAyAA4ANAA0AA8ANQA1AF8ANgBLAAEATQBRAAUAUgBmAAIAZwBtAAUAbgB8AAIAfQB9AAMAfgCGAAIAhwCQAAQAkQCoAAUAqQCuAAIAtwC7AAYAvADSAAcA0wDWAAgA1wDeAAkA3wDiAAoA4wDkAAIA5QDlAAUA5gD8AFgA/QEWAF0BFwEdAFkBHgEhAAwBIgEjAFoBJAEmAFsBJwEoAFoBKQEpAFsBKgErAFoBLAEsAFsBLQEtAFwBMAEwAAwBMQExAFwBMgE5AAwBOgFBAFwBQwFEAFwBRQFcAF0BXQFiAFwBYwFpAF4BagFrAAsBcgGIAA0BiQGMAA4BjQGUAA8BlQGYAF8BmQGZAF0BmwGbAF0BngGjAAsBtgG2ADcBuAG4ADQBywHLADcBzQHNADQB2QHaABAB2wHcADIB3QHdABAB5AHlABMB5gHmABQB5wHnAFUB6AHoABQB6QHpAFUB7AHsAGAB7QHtAGEB7gHuAGAB7wHvAGEB8AHwADUB8gH2ADUB9wH3ABIB+gH6ADYB+wH7ABEB/AH8ADYB/QH9ABEB/gH+ADYB/wH/ABECAAIAAGACAQIBAGECAgICAGACAwIDAGECBAIEADUCBgIIADUCCQIJADYCCgIKABECCwILADYCDAIMABECDQINADYCDgIOABECEwITABUCGAIZADMCGgIaABUCGwIcAFcCIAIpABgCNAI9ABYCZAJlAFYCaAJoAFYCbAJsAFYCbwJvABkCdAJ0AFYCdgJ2AFYCeAJ4AFYCeQJ5ABcCegJ6AFYCewJ8ABcCfgJ+ABcCgAKAAFYCggKEAFYCiQKJABkCjgKOAFYCkAKQAFYCkgKUAFYClQKWABcCmgKbAFYCygLKABIDTQNNACIDTgNPACMDUANQACIDUQNRACMDUwNTACMDVANUACUDVQNWACMDVwNXACIDWANZACQDWwNbACUDXANdACMDYANgACYDaQNpACMDbANsACYDbgNuADADcANwACgDcgNyACcDdgN2ACkDeQN5ACoDegN6ACgDfAN8ADADfwN/ADADgQOBACsDggOCADADhAOEACsDhQOHADADiAOIACcDigOKACkDiwOLADEDjAOMADADjQOOACsDjwOPADADkAOQADEDkQORACsDkwOUADADlQOVACoDoQOhAEADogOkAEMDpQOlAEEDpgOmAEMDpwOnAEQDqQOrAEMDrAOsAEEDrQOuAEMDrwOvAEsDsAOxAEMDsgOyAEsDswOzAEIDtAO0ADoDtgO2AEQDtwO3AEMDuAO4ADkDuQO6AEMDuwO7AEIDvAO9AEMDvwO/AEMDwQPCAEMDwwPDAEIDxAPEAEMDxQPFAEsDxwPIAEMDygPKAEEDywPLAEMDzAPMAEIDzQPOAEMDzwPPADoD0APQAEMD0gPSAEsD1APVAEMD1gPWAEQD2APYAEMD2QPZAEID2gPaAEMD2wPbAEsD3APdADsD3gPeAEQD3wPfADkD4APhAEMD4gPiAEQD4wPjAEAD5QPlAEMD5gPmAEsD5wPnAEMD6APpAEsD6gPrADoD7APsAGID7gPvAFQD8QPxAFID8gPyAEgD8wPzAGMD9AP2AFQD9wP3AEwD+AP5AFQD+gP6AFID+wP7AFQD/QP9AFID/gP+AEYD/wP/AD0EAAQAAFIEAQQBAEgEAgQCAFQEAwQDADwEBAQFAFQEBgQGAEYEBwQIAFQECQQJAGMECgQKAFQEDAQNAFIEDgQOAEUEDwQPAFQEEAQQAFIEEgQTAFMEFQQVAEwEFgQWAFQEFwQXAEUEGAQZAFQEGgQaAD0EGwQbAFQEHQQdAFIEHgQeAEcEHwQgAFQEIQQhAEgEIgQiAGMEIwQjAFQEJAQkAEYEJQQlAFQEJgQmAFIEJwQoAEcEKQQpAEgEKgQqADwEKwQrAEUELAQsAEgELQQtAEUELgQvAGIEMAQxAFIEMgQyAFQEMwQ0AFIENQQ2AD0EPAQ9ADUEPgQ+ADMEPwRAAFcERgRGABoERwRHABsESQRLABsETQROABsETwRPABwEUARRABsEUgRTAB0EVQRVABsEVwRXABsEWQRZAB4EWgRaAB8EXARcACAEXgReACEEYAR1ABoEfASQABsEmQSnABsEqASoABwEqQSxABsEsgS7AB0E1ATZABsE4QTmAB4E5wT9AB8E/gUBACAFAgUJACEFDgUPABsFEQURACwFEgUTAC0FFAUUACwFFQUVAC0FFwUXAC0FGAUYADgFGQUaAC0FGwUbACwFHAUdAC4FHwUfADgFIAUhAC0FJAUkAC8FKQUpAC0FKgUqAC8FTAVMAEkFTQVPAE8FUAVQAE0FUQVRAE8FUgVSAFEFVAVWAE8FVwVXAE0FWAVZAE8FWgVaAFAFWwVcAE8FXQVdAFAFXgVeAE4FXwVfAEoFYQVhAFEFYgViAE8FYwVjAD4FZAVlAE8FZgVmAE4FZwVoAE8FagVqAE8FbAVtAE8FbgVuAE4FbwVvAE8FcAVwAFAFcgVzAE8FdQV1AE0FdgV2AE8FdwV3AE4FeAV5AE8FegV6AEoFewV7AE8FfQV9AFAFfwWAAE8FgQWBAFEFgwWDAE8FhAWEAE4FhQWFAE8FhgWGAFAFhwWIAD8FiQWJAFEFigWKAD4FiwWMAE8FjQWNAFEFjgWOAEkFkAWQAE8FkQWRAFAFkgWSAE8FkwWUAFAFlQWWAEoAAgAVABEAEQACABcAFwAQABkAGQASAOQA5AAMA10DXQAIA2EDYQAEA2MDYwAGA8wDzAAOA9ED0QAUA+AD4AAKBFUEVQADBFsEWwARBF0EXQATBQ8FDwANBRoFGgABBSEFIQAJBSUFJQAFBScFJwAHBXcFdwAPBXwFfAAVBYsFiwALAAIBNgACAAIAFAADAAMAFQAEAAQATAAFAAcAFQAIAAgATAAJAAoAFQALAAsAFgAMAA0AFQAOAA8ASwAQABAATAARABEAFQASABIATAATABMAFQAUABQAFwAVABUAGAAWABYAGQAYABgAGgAaABoAGwAbABsAHAAcABwAUgAdAB0ATQAeACAAIAAhACEAUwAiACIAHQAjACMATQAkACQAVAAlACUAVQAmACcATQAoACkAHwAqACoAIAAsACwAIAAtAC0AHwAuAC4AVgAvAC8AIQAwADAAVwAxADIAIgA0ADQAIwA1ADUAWAA2AEsAFABNAFEATABSAGYAFQBnAG0ATABuAHwAFQB9AH0AFgB+AIYAFQCHAJAASwCRAKgATACpAK4AFQCvALUAFwC3ALsAGAC8ANIAGQDTANYAGgDXAN4AGwDfAOIAHADjAOQAFQDlAOUATADmAPwAUgD9ARYAIAEXAR0AHQEeASEATQEiASMAVAEkASYAHgEnASgAVAEpASkAHgEqASsAVAEsASwAHgEtAS0AHwEuAS8AVQEwATAATQExATEAHwEyATkATQE6AUEAHwFDAUQAHwFFAVwAIAFdAWIAHwFjAWkAVgFqAWsAUwFsAXEAIQFyAYgAVwGJAYwAIgGNAZQAIwGVAZgAWAGZAZkAIAGbAZsAIAGeAaMAUwGwAbAAEQG2AbYADgG4AbgACwG6AboAEQHLAcsADgHNAc0ACwHZAdoAJQHbAdwAJAHdAd0AJQHkAeUAJwHmAeYAKAHnAecAKQHoAegAKAHpAekAKQHsAewAWQHtAe0APAHuAe4AWQHvAe8APAHwAfAADAHyAfYADAH3AfcADQH6AfoAWgH7AfsAJgH8AfwAWgH9Af0AJgH+Af4AWgH/Af8AJgIAAgAAWQIBAgEAPAICAgIAWQIDAgMAPAIEAgQADAIGAggADAIJAgkAWgIKAgoAJgILAgsAWgIMAgwAJgINAg0AWgIOAg4AJgITAhMAKgIYAhkACgIaAhoAKgIbAhwAEAIgAikANgI0Aj0AKwJkAmUALQJoAmgALQJsAmwALQJvAm8ALAJ0AnQALQJ2AnYALQJ4AngALQJ5AnkADwJ6AnoALQJ7AnwADwJ+An4ADwKAAoAALQKCAoQALQKJAokALAKOAo4ALQKQApAALQKSApQALQKVApYADwKaApsALQLKAsoADQNNA00AAQNOA08ANANQA1AAAQNRA1EANANTA1MANANUA1QAAgNVA1YANANXA1cAAQNYA1kANQNbA1sAAgNcA10ANANgA2AAAwNpA2kANANsA2wAAwNuA24ABANwA3AABQNyA3IAOgN0A3QAOwN2A3YABgN3A3cAOwN5A3kACAN6A3oABQN8A3wABAN/A38ABAOBA4EACQOCA4IABAOEA4QACQOFA4cABAOIA4gAOgOJA4kAOwOKA4oABgOLA4sABwOMA4wABAONA44ACQOPA48ABAOQA5AABwORA5EACQOTA5QABAOVA5UACAOiA6QAWwOmA6YAWwOpA6sAWwOtA64AWwOvA68APwOwA7EAWwOyA7IAPwOzA7MAPgO0A7QAQAO3A7cAWwO4A7gAPQO5A7oAWwO7A7sAPgO8A70AWwO/A78AWwPBA8IAWwPDA8MAPgPEA8QAWwPFA8UAPwPHA8gAWwPLA8sAWwPMA8wAPgPNA84AWwPPA88AQAPQA9AAWwPSA9IAPwPUA9UAWwPYA9gAWwPZA9kAPgPaA9oAWwPbA9sAPwPcA90AQQPfA98APQPgA+EAWwPlA+UAWwPmA+YAPwPnA+cAWwPoA+kAPwPqA+sAQAP+A/4AQwP/A/8ARAQDBAMAQgQGBAYAQwQaBBoARAQeBB4ARQQkBCQAQwQnBCgARQQqBCoAQgQ1BDYARAQ8BD0ADAQ+BD4ACgQ/BEAAEARGBEYALgRHBEcATgRIBEgAUARJBEsATgRMBEwAUARNBE4ATgRQBFEATgRSBFMATwRUBFQAUARVBFUATgRWBFYAUARXBFcATgRYBFgALwRZBFkAMARaBFoAMQRcBFwAUQReBF4AMgRfBF8AMwRgBHUALgR3BHsAUAR8BJAATgSRBJUAUASXBJgAUASZBKcATgSpBLEATgSyBLsATwS8BNMAUATUBNkATgTaBOAALwThBOYAMATnBP0AMQT+BQEAUQUCBQkAMgUKBQ0AMwUOBQ8ATgUQBRAAUAURBREAEgUSBRMANwUUBRQAEgUVBRUANwUXBRcANwUYBRgAEwUZBRoANwUbBRsAEgUcBR0AOAUfBR8AEwUgBSEANwUkBSQAOQUpBSkANwUqBSoAOQUrBSsALwVaBVoASAVdBV0ASAVeBV4ARwVfBV8ASQVjBWMARgVmBWYARwVuBW4ARwVwBXAASAV3BXcARwV6BXoASQV9BX0ASAWEBYQARwWGBYYASAWHBYgASgWKBYoARgWRBZEASAWTBZQASAWVBZYASQACABoBawFrABQBmQGZAAwBpAGkAAEBtAG0ABIBtQG1AA8BuQG5ABkByQHJABMBygHKABABzgHOABoB3wHfAA0B4AHgAA4B+AH4AAYCEQIRAAQCHQIdAAICHgIeAAMCnwKfAAcCogKiABEDbwNvAAUDcQNxAAkDdwN3ABcDeAN4ABgDgwODAAgEDgQOAAoEEQQRAAsEFAQUABYEHgQeABUAAgElAAIAAgAaAAMAAwAhAAQABAAiAAUABwAhAAgACAAiAAkACgAhAAsACwAMAAwADQAhAA4ADwBMABAAEAAiABEAEQAhABIAEgAiABMAEwAhABUAFQANABYAFgAOABgAGAAPABoAGgAQABsAGwAjABwAHAA6AB0AHQAcAB4AIAARACEAIQA7ACIAIgAbACMAIwAcACQAJAA4ACUAJQAmACYAJwAcACgAKQBNACoAKgARACwALAARAC0ALQBNAC8ALwAnADAAMAA8ADEAMgAoADQANAApADYASwAaAE0AUQAiAFIAZgAhAGcAbQAiAG4AfAAhAH0AfQAMAH4AhgAhAIcAkABMAJEAqAAiAKkArgAhALcAuwANALwA0gAOANMA1gAPANcA3gAQAN8A4gAjAOMA5AAhAOUA5QAiAOYA/AA6AP0BFgARARcBHQAbAR4BIQAcASIBIwA4AScBKAA4ASoBKwA4AS0BLQBNAS4BLwAmATABMAAcATEBMQBNATIBOQAcAToBQQBNAUMBRABNAUUBXAARAV0BYgBNAWoBawA7AWwBcQAnAXIBiAA8AYkBjAAoAY0BlAApAZkBmQARAZsBmwARAZ4BowA7AbABsAAtAbYBtgAWAbgBuAAuAboBugAtAcsBywAWAc0BzQAuAdkB2gASAdsB3ABHAd0B3QASAeQB5QAqAeYB5gAGAecB5wArAegB6AAGAekB6QArAeoB6wAsAewB7AATAe4B7gATAfAB8AAUAfIB9gAUAfcB9wAFAfoB+gBBAfsB+wAVAfwB/ABBAf0B/QAVAf4B/gBBAf8B/wAVAgACAAATAgICAgATAgQCBAAUAgYCCAAUAgkCCQBBAgoCCgAVAgsCCwBBAgwCDAAVAg0CDQBBAg4CDgAVAhMCEwAzAhoCGgAzAhsCHAA3AiACKQA1AjQCPQA5AmQCZQA2AmYCZwBCAmgCaAA2AmkCawBCAmwCbAA2Am0CbgBCAm8CbwAHAnACcwBC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ADgCAAIAACECAQIBADoCAgICACECAwIDADoCBAIEACICBgIIACICCQIJAEgCCgIKADgCCwILAEgCDAIMADgCDQINAEgCDgIOADgCEwITACgCGgIaACgCGwIcAC8CIAIpAC0CNAI9AEYCZAJlAC4CZgJnACoCaAJoAC4CaQJrACoCbAJsAC4CbQJuACoCbwJvADkCcAJzACoCdAJ0AC4CdQJ1ACoCdgJ2AC4CdwJ3ACoCeAJ4AC4CeQJ5ACwCegJ6AC4CewJ8ACwCfQJ9ACoCfgJ+ACwCfwJ/ACoCgAKAAC4CgQKBACoCggKEAC4ChQKFACoChgKGACsChwKIACoCiQKJADkCigKNACoCjgKOAC4CjwKPACsCkAKQAC4CkQKRACoCkgKUAC4ClQKWACwClwKXACoCmAKYACsCmQKZACoCmgKbAC4CuwLFAB8CxgLHACQCyALIACACyQLJACQCygLKACMCywLLAB4CzALMACQCzQLNACAC0gLSAB4C0wLTACQC1ALUAB4C1QLVACQDTQNNAAMDUANQAAMDVANUAAQDVwNXAAMDWwNbAAQDYANgABADbANsABADbgNuABEDcANwABIDcgNyAE0DdAN0AEMDdgN2AE4DdwN3AEMDegN6ABIDfAN8ABEDfwN/ABEDgQOBABMDggOCABEDhAOEABMDhQOHABEDiAOIAE0DiQOJAEMDigOKAE4DiwOLAEwDjAOMABEDjQOOABMDjwOPABEDkAOQAEwDkQORABMDkwOUABEDoQOhAAEDpQOlAD4DrAOsAD4DrwOvAAIDsgOyAAIDswOzAAoDuwO7AAoDwwPDAAoDxQPFAAIDygPKAD4DzAPMAAoD0gPSAAID2QPZAAoD2wPbAAID3APdAAsD4wPjAAED5gPmAAID6APpAAID7APsAAwD7gPvAEED8QPxAA0D8gPyAEID9AP2AEED9wP3AD8D+AP5AEED+gP6AA0D+wP7AEED/QP9AA0D/gP+ADMD/wP/AA4EAAQAAA0EAQQBAEIEAgQCAEEEAwQDADIEBAQFAEEEBgQGADMEBwQIAEEECgQKAEEEDAQNAA0EDgQOAEcEDwQPAEEEEAQQAA0EEgQTAEAEFQQVAD8EFgQWAEEEFwQXAEcEGAQZAEEEGgQaAA4EGwQbAEEEHQQdAA0EHgQeAA8EHwQgAEEEIQQhAEIEIwQj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AGICAwIDABcCBAIEABgCBgIIABgCCQIJABkCCgIKADwCCwILABkCDAIMADwCDQINABkCDgIOADwCDwIPADICEQIRACYCEwITAD8CGAIZABUCGgIaAD8CGwIcAB4CHQIdACQCHgIeACUCIAIpAEICNAI9ABwCZAJlAEQCZgJnAEACaAJoAEQCaQJrAEACbAJsAEQCbQJuAEACbwJvAEMCcAJzAEACdAJ0AEQCdQJ1AEACdgJ2AEQCdwJ3AEACeAJ4AEQCeQJ5AB0CegJ6AEQCewJ8AB0CfQJ9AEACfgJ+AB0CfwJ/AEACgAKAAEQCgQKBAEACggKEAEQChQKFAEAChgKGAEEChwKIAEACiQKJAEMCigKNAEACjgKOAEQCjwKPAEECkAKQAEQCkQKRAEACkgKUAEQClQKWAB0ClwKXAEACmAKYAEECmQKZAEACmgKbAEQCygLKABoDTQNNAAkDTgNPAEoDUANQAAkDUQNRAEoDUgNSAEcDUwNTAEoDVANUAAoDVQNWAEoDVwNXAAkDWANZADsDWwNbAAoDXANdAEoDXwNfAEYDYANgAEsDYQNhACEDYgNiAEUDZANkACADaQNpAEoDbANsAEsDbgNuAAsDbwNvACcDcANwAA4DcQNxACoDcgNyAAwDcwNzADkDdAN0AA0DdQN1ADUDdgN2AA8DdwN3AA0DeAN4AEkDeQN5ABEDegN6AA4DfAN8AAsDfQN9AC8DfgN+ADEDfwN/AAsDgAOAADQDgQOBABIDggOCAAsDgwODACkDhAOEABIDhQOHAAsDiAOIAAwDiQOJAA0DigOKAA8DiwOLABADjAOMAAsDjQOOABIDjwOPAAsDkAOQABADkQORABIDkwOUAAsDlQOVABEDlwOXADADmAOYACMEPAQ9ABgEPgQ+ABUEPwRAAB4ERgRGAGYERwRHAHYESARIAGgESQRLAHYETARMAGgETQROAHYETwRPAGcEUARRAHYEUgRTAHcEVARUAGgEVQRVAHYEVgRWAGgEVwRXAHYEWQRZAGkEWgRaAGoEWwRbAG0EXARcAGsEXQRdAHgEXgReAGwEYAR1AGYEdgR2AG8EdwR7AGgEfASQAHYEkQSVAGgElwSYAGgEmQSnAHYEqASoAGcEqQSxAHYEsgS7AHcEvATTAGgE1ATZAHYE4QTmAGkE5wT9AGoE/gUBAGsFAgUJAGwFDgUPAHYFEAUQAGgFEQURAAEFEgUTAAIFFAUUAAEFFQUVAAIFFwUXAAIFGAUYAAQFGQUaAAIFGwUbAAEFHAUdAAMFHwUfAAQFIAUhAAIFIgUiAAgFJAUkAAUFJQUlADoFJgUmAAYFJwUnAAcFKQUpAAIFKgUqAAUAAgA6AAgACAABAAkACgADAAsACwAFAAwADAAHAA0ADQAJAA4ADgADAA8ADwALABAAEAANABIAEgANABMAEwAPABQAFAARABUAFQATABYAFgAVAGcAbQABAG4AfAADAH0AfQAFAH4AfgAHAH8AgQAJAIMAhgAJAIcAiAADAIkAkAALAJEApwANAKkArgAPAK8AtQARALcAuwATALwA0gAVAOUA5QANBEwETAACBE0ETgAEBE8ETwAGBFAEUAAIBFEEUQAKBFIEUgAEBFMEUwAMBFQEVAAOBFYEVgAOBFcEVwAQBFgEWAASBFkEWQAUBFoEWgAWBJEElQACBJcEmAACBJkEpwAEBKgEqAAGBKkEqQAIBKoErAAKBK4EsQAKBLIEswAEBLQEuwAMBLwE0gAOBNQE2QAQBNoE4AASBOEE5gAUBOcE/QAWBRAFEAAOBSsFKwASBSwFLAADBS0FLQAKAAIA6gABAAEAVQACAAIABQADAAMABgAEAAQABwAFAAcABgAIAAgABwAJAAoABgALAAsAPgAMAA0ABgAOAA8AQwAQABAABwARABEABgASABIABwATABMABgAUABQANAAVABUACAAWABYACQAXABcAFwAYABgACgAZABkAGAAaABoACwAbABsADAAcABwAJAAdAB0AUwAeACAAKAAhACEAJQAiACIAJgAjACMAUwAkACQANQAlACUANgAmACcAUwAoACkANwAqACoAKAArACsAHAAsACwAKAAtAC0ANwAuAC4AKQAvAC8AKgAwADAAKwAxADIALAAzADMAPAA0ADQALQA1ADUAOAA2AEsABQBMAEwAFgBNAFEABwBSAGYABgBnAG0ABwBuAHwABgB9AH0APgB+AIYABgCHAJAAQwCRAKgABwCpAK4ABgCvALUANAC3ALsACAC8ANIACQDTANYACgDXAN4ACwDfAOIADADjAOQABgDlAOUABwDmAPwAJAD9ARYAKAEXAR0AJgEeASEAUwEiASMANQEkASYAJwEnASgANQEpASkAJwEqASsANQEsASwAJwEtAS0ANwEuAS8ANgEwATAAUwExATEANwEyATkAUwE6AUEANwFDAUQANwFFAVwAKAFdAWIANwFjAWkAKQFqAWsAJQFsAXEAKgFyAYgAKwGJAYwALAGNAZQALQGVAZgAOAGZAZkAKAGaAZoATQGbAZsAKAGeAaMAJQGkAaQAVAGwAbAAMAGxAbEAGwGyAbIAHwGzAbMAHgG0AbQAMgG1AbUAMQG2AbYALwG3AbcATAG4AbgALgG5AbkAMwG6AboAMAHLAcsALwHNAc0ALgHZAdoADQHbAdwAOQHdAd0ADQHkAeUARAHmAeYARQHnAecARgHoAegARQHpAekARgHsAewADgHtAe0AOgHuAe4ADgHvAe8AOgHwAfAADwHyAfYADwH3AfcAOwH4AfgAQQH5AfkAIAH6AfoAEAH7AfsAEQH8AfwAEAH9Af0AEQH+Af4AEAH/Af8AEQIAAgAADgIBAgEAOgICAgIADgIDAgMAOgIEAgQADwIGAggADwIJAgkAEAIKAgoAEQILAgsAEAIMAgwAEQINAg0AEAIOAg4AEQIPAg8AHQIRAhEASwITAhMARwIYAhkAPwIaAhoARwIbAhwAQAIdAh0AGQIeAh4AGgIgAikAFAI0Aj0AEgJkAmUASgJmAmcASAJoAmgASgJpAmsASAJsAmwASgJtAm4ASAJvAm8AFQJwAnMASAJ0AnQASgJ1AnUASAJ2AnYASgJ3AncASAJ4AngASgJ5AnkAEwJ6AnoASgJ7AnwAEwJ9An0ASAJ+An4AEwJ/An8ASAKAAoAASgKBAoEASAKCAoQASgKFAoUASAKGAoYASQKHAogASAKJAokAFQKKAo0ASAKOAo4ASgKPAo8ASQKQApAASgKRApEASAKSApQASgKVApYAEwKXApcASAKYApgASQKZApkASAKaApsASgLKAsoAOwQ8BD0ADwQ+BD4APwQ/BEAAQARGBEYAPQRHBEcATgRIBEgAIQRJBEsATgRMBEwAIQRNBE4ATgRPBE8ATwRQBFEATgRSBFMAUgRUBFQAIQRVBFUATgRWBFYAIQRXBFcATgRYBFgAUARZBFkAUQRaBFoAAQRbBFsABARcBFwAAgRdBF0AIwReBF4AAwRfBF8AQgRgBHUAPQR2BHYAIgR3BHsAIQR8BJAATgSRBJUAIQSXBJgAIQSZBKcATgSoBKgATwSpBLEATgSyBLsAUgS8BNMAIQTUBNkATgTaBOAAUAThBOYAUQTnBP0AAQT+BQEAAgUCBQkAAwUKBQ0AQgUOBQ8ATgUQBRAAIQUrBSsAUAACAEMAGgAaAAIAGwAbAAQAHAAcAAYAHQAdAAcAHgAeAAgAHwAfABIAIAAgAAoAIQAhAAsAIgAiAAwAIwAjAA0AJAAkAA4AJQAlABAAJgAmABEAJwAnABIAKAApAA0AKgArAAcALQAtABMALgAuABQALwAvABUAMAAwABYA1wDeAAIA3wDiAAQA5gD7AAYA/AD8AAoA/QEBAAgBAgECAAkBAwEFABIBBgEWAAoBFwEdAAwBHgEhAA0BIgEjAA4BJAEmAA8BJwEoAA4BKQEpAA8BKgErAA4BLAEsAA8BLQEtAA4BLgEvABABMAExABEBMgEyABIBMwEzAAkBNAE0ABIBNgE5ABIBOgFBAA0BQwFEAA0BRQFUAAcBWwFbAAcBXAFcAAoBXQFiABMBYwFpABQBagFqAAsBbAFxABUBcgGBABYBiAGIABYBmgGbAAcBngGeAA4BnwGfABIBoAGgABUBoQGhAAsBogGiAA4BowGjABIEXARcAAEEXgReAAMEXwRfAAUE/gUBAAEFAgUJAAMFCgUNAAUAAgDaAAEAAQAwAAIAAgABAAMAAwBLAAQABAADAAUABwBLAAgACAADAAkACgBLAAsACwBAAAwADQBLAA4ADwACABAAEAADABEAEQBLABIAEgADABMAEwBLABQAFAAEABUAFQA6ABYAFgAFABcAFwA+ABgAGAA7ABkAGQBOABoAGgA8ABsAGwAGABwAHAAHAB0AHQBMAB4AIAANACEAIQAIACIAIgAJACMAIwBMACQAJAAKACUAJQALACYAJwBMACgAKQAMACoAKgANACsAKwAuACwALAANAC0ALQAMAC4ALgAOAC8ALwAPADAAMAAQADEAMgARADMAMwA0ADQANAASADUANQATADYASwABAEwATAAkAE0AUQADAFIAZgBLAGcAbQADAG4AfABLAH0AfQBAAH4AhgBLAIcAkAACAJEAqAADAKkArgBLAK8AtQAEALcAuwA6ALwA0gAFANMA1gA7ANcA3gA8AN8A4gAGAOMA5ABLAOUA5QADAOYA/AAHAP0BFgANARcBHQAJAR4BIQBMASIBIwAKASQBJgA5AScBKAAKASkBKQA5ASoBKwAKASwBLAA5AS0BLQAMAS4BLwALATABMABMATEBMQAMATIBOQBMAToBQQAMAUMBRAAMAUUBXAANAV0BYgAMAWMBaQAOAWoBawAIAWwBcQAPAXIBiAAQAYkBjAARAY0BlAASAZUBmAATAZkBmQANAZoBmgBKAZsBmwANAZ4BowAIAaQBpAAlAbABsAAjAbEBsQAtAbIBsgAyAbMBswAxAbQBtAArAbUBtQAqAbYBtgAeAbcBtwBIAbgBuAAXAbkBuQAsAboBugAjAcYBxgBVAccBxwBSAcgByABRAckByQBQAcoBygBPAcsBywAeAcwBzABJAc0BzQAXAc4BzgBHAdkB2gAVAdsB3AAUAd0B3QAVAd4B3gBTAeEB4QBUAeQB5QBBAeYB5gA9AecB5wAdAegB6AA9AekB6QAdAewB7AAYAe0B7QAZAe4B7gAYAe8B7wAZAfAB8AAaAfIB9gAaAfcB9wAcAfgB+AApAfkB+QAzAfoB+gAbAfsB+wBNAfwB/AAbAf0B/QBNAf4B/gAbAf8B/wBNAgACAAAYAgECAQAZAgICAgAYAgMCAwAZAgQCBAAaAgYCCAAaAgkCCQAbAgoCCgBNAgsCCwAbAgwCDABNAg0CDQAbAg4CDgBNAg8CDwAvAhECEQAoAhMCEwBCAhgCGQAWAhoCGgBCAhsCHAAiAh0CHQAmAh4CHgAnAiACKQBFAjQCPQAfAmQCZQBGAmYCZwBDAmgCaABGAmkCawBDAmwCbABGAm0CbgBDAm8CbwAhAnACcwBDAnQCdABGAnUCdQBDAnYCdgBGAncCdwBDAngCeABGAnkCeQAgAnoCegBGAnsCfAAgAn0CfQBDAn4CfgAgAn8CfwBDAoACgABGAoECgQBDAoIChABGAoUChQBDAoYChgBEAocCiABDAokCiQAhAooCjQBDAo4CjgBGAo8CjwBEApACkABGApECkQBDApIClABGApUClgAgApcClwBDApgCmABEApkCmQBDApoCmwBGAsoCygAcBDwEPQAaBD4EPgAWBD8EQAAiBEYERgA1BEgESAA2BEwETAA2BFQEVAA2BFYEVgA2BFgEWAA3BFoEWgA/BGAEdQA1BHYEdgA4BHcEewA2BJEElQA2BJcEmAA2BLwE0wA2BNoE4AA3BOcE/QA/BRAFEAA2BSsFKwA3AAIALgA1ADUAAQGVAZgAAQGzAbMABQG4AbgABQHNAc0ABQHZAdoAAwHbAdwAAgHdAd0AAwHsAewABwHtAe0ACAHuAe4ABwHvAe8ACAHwAfAACQHyAfYACQH3AfcADQH6AfoACwH7AfsADAH8AfwACwH9Af0ADAH+Af4ACwH/Af8ADAIAAgAABwIBAgEACAICAgIABwIDAgMACAIEAgQACQIGAggACQIJAgkACwIKAgoADAILAgsACwIMAgwADAINAg0ACwIOAg4ADAIYAhkABALGAscADgLIAsgACgLJAskADgLKAsoADQLLAssABgLMAswACgLNAs0ADgLSAtIABgLTAtMADgLUAtUABgQ8BD0ACQQ+BD4ABAACAVMAAgACAAEAAwADAAIABAAEAD8ABQAHAAIACAAIAD8ACQAKAAIACwALAAMADAANAAIADgAPAAQAEAAQAD8AEQARAAIAEgASAD8AEwATAAIAFAAUAG8AFQAVAAUAFgAWAAYAFwAXAB8AGAAYAAcAGQAZACAAGgAaAAgAGwAbAHAAHAAcAAkAHQAdAAsAHgAgAAwAIQAhAFwAIgAiAAoAIwAjAAsAJQAlAEAAJgAnAAsAKAApAHkAKgAqAAwAKwArAC8ALAAsAAwALQAtAHkALgAuAA0ALwAvAA4AMAAwAEEAMQAyAA8AMwAzAHUANAA0ABAANQA1AEIANgBLAAEATABMAB4ATQBRAD8AUgBmAAIAZwBtAD8AbgB8AAIAfQB9AAMAfgCGAAIAhwCQAAQAkQCoAD8AqQCuAAIArwC1AG8AtwC7AAUAvADSAAYA0wDWAAcA1wDeAAgA3wDiAHAA4wDkAAIA5QDlAD8A5gD8AAkA/QEWAAwBFwEdAAoBHgEhAAsBJAEmAHgBKQEpAHgBLAEsAHgBLQEtAHkBLgEvAEABMAEwAAsBMQExAHkBMgE5AAsBOgFBAHkBQwFEAHkBRQFcAAwBXQFiAHkBYwFpAA0BagFrAFwBbAFxAA4BcgGIAEEBiQGMAA8BjQGUABABlQGYAEIBmQGZAAwBmgGaADABmwGbAAwBngGjAFwBpAGkACEBsAGwAEcBsQGxACgBsgGyAFMBswGzACwBtAG0ACUBtQG1ACMBtgG2ABcBtwG3ACkBuAG4AEMBuQG5ACcBugG6AEcBxQHFAFUBxgHGAFEBxwHHAFQByAHIAC0ByQHJACYBygHKACQBywHLABcBzAHMACoBzQHNAEMBzgHOAFAB2QHaABEB2wHcAHoB3QHdABEB3gHeAHMB4gHiAHQB5AHlAEUB5gHmABUB5wHnABYB6AHoABUB6QHpABYB7AHsABIB7QHtAHEB7gHuABIB7wHvAHEB8AHwABMB8gH2ABMB9wH3AF8B+AH4AGIB+QH5AC4B+gH6AEQB+wH7ABQB/AH8AEQB/QH9ABQB/gH+AEQB/wH/ABQCAAIAABICAQIBAHECAgICABICAwIDAHECBAIEABMCBgIIABMCCQIJAEQCCgIKABQCCwILAEQCDAIMABQCDQINAEQCDgIOABQCDwIPACsCEQIRAEsCEwITAEYCGgIaAEYCHQIdACICHwIfAHsCIAIpAGECNAI9ABgCZAJlAB0CZgJnABkCaAJoAB0CaQJrABkCbAJsAB0CbQJuABkCbwJvABwCcAJzABkCdAJ0AB0CdQJ1ABkCdgJ2AB0CdwJ3ABkCeAJ4AB0CeQJ5ABsCegJ6AB0CewJ8ABsCfQJ9ABkCfgJ+ABsCfwJ/ABkCgAKAAB0CgQKBABkCggKEAB0ChQKFABkChgKGABoChwKIABkCiQKJABwCigKNABkCjgKOAB0CjwKPABoCkAKQAB0CkQKRABkCkgKUAB0ClQKWABsClwKXABkCmAKYABoCmQKZABkCmgKbAB0CnAKcAGQCngKeAGUCnwKfAGMCrwKvAGcCuwLFAF0CxgLHAGACyALIAF4CyQLJAGACygLKAF8CzALMAGACzQLNAF4C0wLTAGAC1QLVAGADTQNNAFcDTgNPAFkDUANQAFcDUQNRAFkDUgNSAHYDUwNTAFkDVANUADsDVQNWAFkDVwNXAFcDWANZAFoDWwNbADsDXANdAFkDXwNfAEoDYANgADMDYQNhAEgDYgNiADQDYwNjAEkDaQNpAFkDbANsADMDbgNuADwDcANwAD0DcQNxAE0DdAN0AFsDdwN3AFsDeAN4AGYDegN6AD0DfAN8ADwDfwN/ADwDgAOAAFIDgQOBAD4DggOCADwDgwODAEwDhAOEAD4DhQOHADwDiQOJAFsDjAOMADwDjQOOAD4DjwOPADwDkQORAD4DkwOUADwDoQOhAFYDogOkAFgDpgOmAFgDpwOnADIDqQOrAFgDrQOuAFgDrwOvADYDsAOxAFgDsgOyADYDswOzADUDtAO0AGkDtgO2ADIDtwO3AFgDuAO4AGgDuQO6AFgDuwO7ADUDvAO9AFgDvwO/AFgDwQPCAFgDwwPDADUDxAPEAFgDxQPFADYDxgPGAHIDxwPIAFgDywPLAFgDzAPMADUDzQPOAFgDzwPPAGkD0APQAFgD0gPSADYD0wPTAGsD1APVAFgD1gPWADID2APYAFgD2QPZADUD2gPaAFgD2wPbADYD3APdADED3gPeADID3wPfAGgD4APhAFgD4gPiADID4wPjAFYD5QPlAFgD5gPmADYD5wPnAFgD6APpADYD6gPrAGkD7APsADcD7gPvAHcD8APwAGwD8QPxADgD8gPyAG4D9AP2AHcD+AP5AHcD+gP6ADgD+wP7AHcD/QP9ADgD/wP/ADkEAAQAADgEAQQBAG4EAgQCAHcEBAQFAHcEBwQIAHcECgQKAHcEDAQNADgEDgQOAG0EDwQPAHcEEAQQADgEEQQRAE4EEgQTAGoEFAQUAE8EFgQWAHcEFwQXAG0EGAQZAHcEGgQaADkEGwQbAHcEHQQdADgEHgQeADoEHwQgAHcEIQQhAG4EIwQjAHcEJQQlAHcEJgQmADgEJwQoADoEKQQpAG4EKwQrAG0ELAQsAG4ELQQtAG0ELgQvADcEMAQxADgEMgQyAHcEMwQ0ADgENQQ2ADkEPAQ9ABMAAgALAbABsAAGAbYBtgAFAboBugAGAcsBywAFAeYB5gABAecB5wACAegB6AABAekB6QACAeoB6wADAhMCEwAEAhoCGgAEAAIBVAACAAIADgADAAMAPQAEAAQAEAAFAAcAPQAIAAgAEAAJAAoAPQALAAsADwAMAA0APQAQABAAEAARABEAPQASABIAEAATABMAPQAUABQAEQAVABUAEgAWABYAEwAXABcAbQAYABgAVgAZABkAbgAaABoAaAAbABsAPgAcABwAFAAeACAAGAAhACEAVwAiACIAFQAkACQAfQAlACUAWAAoACkAFwAqACoAGAArACsALQAsACwAGAAtAC0AFwAuAC4AGQAvAC8APwAwADAAWQAxADIAQAAzADMAVAA0ADQAQQA1ADUAGgA2AEsADgBMAEwAHgBNAFEAEABSAGYAPQBnAG0AEABuAHwAPQB9AH0ADwB+AIYAPQCRAKgAEACpAK4APQCvALUAEQC3ALsAEgC8ANIAEwDTANYAVgDXAN4AaADfAOIAPgDjAOQAPQDlAOUAEADmAPwAFAD9ARYAGAEXAR0AFQEiASMAfQEkASYAFgEnASgAfQEpASkAFgEqASsAfQEsASwAFgEtAS0AFwEuAS8AWAExATEAFwE6AUEAFwFDAUQAFwFFAVwAGAFdAWIAFwFjAWkAGQFqAWsAVwFsAXEAPwFyAYgAWQGJAYwAQAGNAZQAQQGVAZgAGgGZAZkAGAGaAZoAMQGbAZsAGAGeAaMAVwGkAaQASAGwAbAAXAGxAbEAXwGyAbIAYAGzAbMAUgG0AbQAKQG1AbUAJwG2AbYAHQG3AbcAUAG4AbgAQgG5AbkAXgG6AboAXAHFAcUANQHGAcYALAHHAccAMwHIAcgAMgHJAckAKgHKAcoAKAHLAcsAHQHMAcwAUQHNAc0AQgHOAc4AKwHZAdoAGwHdAd0AGwHeAd4ATAHfAd8ATQHhAeEATwHiAeIALgHmAeYARgHnAecAfwHoAegARgHpAekAfwHqAesAWwHsAewAHAHtAe0AQwHuAe4AHAHvAe8AQwHwAfAARAHyAfYARAH3AfcAWgH4AfgASgH5AfkAUwH6AfoARQH7AfsAfgH8AfwARQH9Af0AfgH+Af4ARQH/Af8AfgIAAgAAHAIBAgEAQwICAgIAHAIDAgMAQwIEAgQARAIGAggARAIJAgkARQIKAgoAfgILAgsARQIMAgwAfgINAg0ARQIOAg4AfgIPAg8AMAIdAh0ASQIfAh8ATgIgAikAdgI0Aj0AcwJkAmUAeAJmAmcAdAJoAmgAeAJpAmsAdAJsAmwAeAJtAm4AdAJvAm8AdwJwAnMAdAJ0AnQAeAJ1AnUAdAJ2AnYAeAJ3AncAdAJ4AngAeAJ5AnkAdQJ6AnoAeAJ7AnwAdQJ9An0AdAJ+An4AdQJ/An8AdAKAAoAAeAKBAoEAdAKCAoQAeAKFAoUAdAKGAoYAgAKHAogAdAKJAokAdwKKAo0AdAKOAo4AeAKPAo8AgAKQApAAeAKRApEAdAKSApQAeAKVApYAdQKXApcAdAKYApgAgAKZApkAdAKaApsAeAKcApwAeQKeAp4AegKiAqIAewKvAq8AfALIAsgAcgLKAsoAWgLNAs0AcgNNA00ACQNOA08AOwNQA1AACQNRA1EAOwNSA1IARwNTA1MAOwNUA1QACgNVA1YAOwNXA1cACQNb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\"","module.exports = \"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AEj/5gBK//AAUv/yAFP/7wBU//AAVwAXAFsABgB8/7IAngAjAJ8AFACgACEAoQAfAAQAFP/nABX/6AAW/+0AGv/YAAEATQAIABUAFP/bABX/2QAW/+AAGP/yABr/ywAb/+0ALf+7ADD/+AA2/+4AN/+yADn/5AA7/8wAPP+6AD3/4wBJ/+YATv/4AFb/9QBZ//UAW//3AF3/0QB8/98AFAAF/48ACv+jABT/4QAX/+oAGv/pABz/zgAm//MAKv/yADL/7gA0/+sAN/+4ADj/7AA5/8gAPP/QAEn/8QBZ/98Auf+iALr/oQC8/48Avf+PACMAEv8lABP/7gAV//QAF//wABj/8QAZ/+IAG//yACT/4QAm/+cAJ//0ACr/6QAt/8gAMv/qADT/7AA6//UARP/TAEb/1QBH/9kASP/SAEr/1wBQ/90AUf/lAFL/2ABT/9YAVP/VAFX/6gBW/90AWP/gAFn/8gBa/9sAW//tAFz/5ABd/+oAfP/EAJH/7AANAAz/7wAR/+kAEv/jABX/7gAa//UAN//tADv/8wA8//AAPf/wAD//7QBA/+YAYP/uAHz/8gABABL/7wARAAr/8wAO//UAEP/hABUACAAX/+wAHP/xACD/6wAy//YANP/1ADf/7wA4//UAOf/vADz/7gA//+UAbP/1AHH/4QB8AAsABAAM//UAEv/rAD//9QBA//IAEgAK//QADP/wABH/8AAS/+gAFP/1ABX/9AAW//UAGv/xAC3/9QA3//QAOf/1ADz/7gA9//UAP//rAED/7gBg//AAbP/0AHz/9gACABL/7QBA//YADAAK/+QADP/1ABL/8QAU/+oAGv/hADf/4wA5/+4APP/kAD//4ABA/+YAYP/tAGz/4QALAAb/7gAO/+4AEP/jABH/xwAS/84AIP/1ACT/9AAt/9gAY//wAHH/9AB8/9UABAAQ/+cAEv/uACD/9gBx/+cABgAM//YAEv/zADf/8QA8//MAP//uAED/9QADADf/twA5/+4APP/ZAAQAFP/jABX/5QAW/+oAGv/VAAUACv/wADf/twA5/+cAPP/UALr/5QAjAAr/9AAN//EAFP/xABr/8AAi//YAN//aADj/+QA5/+wAPP/cAD//4gBF//kARv/7AEj/+wBJ//MASv/7AEv/+gBM//oATf/6AE7/+wBP//kAUP/7AFH/+gBS//sAVP/7AFX/+QBX//cAWP/5AFn/8QBa//kAW//7AFz/+QCR//sAuf/sALr/8ADF/+sAGAAS/+0ALf/7ADf/4gA7/+kAPP/4AD3/+QA///UAQP/tAEn/+ABN//sATv/7AFH/+wBV//sAVv/5AFf/+ABZ//kAW//4AFz/+wBd//MAYP/2AHz/+wCR//sAoAAXAKEAFQASAA3/8wAm//sAKv/6ADL/+QA0//kANv/5ADf/3AA4//sAOf/7ADr/+gA7/94APP/6AD//8wBJ//cAV//4AFn/9gBb//gAoAATACUADP/uABH/2wAS/94AFf/qACL/9QAk//sALf/gADf/2QA5//oAO//fADz/8AA9/+YAP//vAED/5QBE//YARf/6AEb/+ABH//kASP/3AEr/+QBL//oATP/5AE3/+gBO//gAT//6AFD/+gBR//sAUv/6AFP/9wBU//kAVv/6AFr/+gBg/+4AfP/dAJH/+ACgAAkAoQAGAB8AEP/rABf/9QAc//IAJv/pACr/6QAy/+YANP/mADb/+gA4//YAOv/0AEX/+QBG//kAR//6AEj/+QBJ//AASv/4AE//+ABQ//gAUf/1AFL/9wBT//sAVP/6AFX/8gBX/+0AWP/yAFn/4gBa//QAW//2AFz/7gCR//sAr//4ADcACf/1AA0AFwAQ/+MAEf/EABL/xAAV//EAFv/yABj/9gAZ//EAG//wAB3/5wAj/+IAJP/dACb/3wAn//gAKv/gAC3/eQAy/+EANP/lADX/+wA2/+YAOP/3ADr/7wBE/70ARf/4AEb/xABH/8cASP+/AEn/8QBK/8cAS//6AE7/9wBP//YAUP/IAFH/0ABS/8sAU/+8AFT/xQBV/9kAVv/PAFf/7wBY/9UAWf/nAFr/xgBb/98AXP/RAF3/2wBr//YAfP+GAJH/3wCeABMAr//IAML/8wDD//EAxQALAAoAEf/xABL/6wA3//YAO//qADz/+QA9//UAQP/1AEn/+QB8//sAoAAJABwAEv/zAET/9QBF//cARv/0AEf/9gBI//MASv/2AEv/+QBM//kATf/5AE7/+QBP//gAUP/5AFH/+QBS//YAU//2AFT/9gBV//gAVv/3AFj/9wBZ//oAWv/3AFv/+QBc//cAXf/5AJH/+QCgAAoAoQANAB4AEP/4ABL/9QBE//QARf/3AEb/9ABH//YASP/yAEn/+wBK//UAS//5AEz/+ABN//gATv/5AE//+ABQ//gAUf/4AFL/9QBT//YAVP/2AFX/+ABW//cAWP/2AFn/+QBa//cAW//4AFz/9wBd//gAkf/5AKAACwChAA0AHwAR//cAEv/rADv/+wBE//gARf/4AEb/+ABH//kASP/4AEr/+QBL//kATP/5AE3/+QBO//kAT//4AFD/+ABR//kAUv/5AFP/9gBU//kAVf/4AFb/+ABY//oAWf/7AFr/+ABb//oAXP/3AF3/+QB8//sAkf/5AKAABgChAAcAIwAQ/9sAFQASABf/8AAc//AAJv/dACr/3QAy/94ANP/gADb/+wA4//MAOv/0AEAACABE//oARf/0AEb/7gBH//QASP/tAEn/6gBK/+4AS//6AE//8ABQ//oAUf/1AFL/7ABU//EAVf/xAFf/2wBY/+EAWf/XAFr/6gBc/+EAYAALAGv/8gChABEAwv/lACwACf/wAAr/owAN/6IAEP+rABT/5QAVAAsAF//HABr/6gAc/7YAIv/yACb/4gAq/+AAMv/XADT/0QA3/4YAOP/YADn/qwA6//YAPP/DAD//uABF//EARv/1AEf/+gBI//UASf/iAEr/9gBL//kAT//wAFH/+ABS//IAVP/4AFX/9ABX/6UAWP/mAFn/rgBa//UAXP/lAGv/4gBx/5YAuf+kALr/pADC/8UAw//sAMX/oQAdABL/8gBE//UARf/4AEb/9QBH//cASP/0AEn/+wBK//YAS//5AEz/+QBN//kATv/5AE//+ABQ//kAUf/5AFL/9gBT//cAVP/2AFX/+QBW//cAWP/3AFn/+gBa//gAW//5AFz/9wBd//gAkf/5AKAACgChAAwAHQAS//YARP/1AEX/+ABG//QAR//3AEj/8wBJ//sASv/2AEv/+QBM//kATf/5AE7/+QBP//gAUP/5AFH/+QBS//YAU//3AFT/9gBV//kAVv/3AFj/9wBZ//oAWv/4AFv/+QBc//cAXf/5AJH/+QCgAAwAoQAOACYADP/uABH/6AAS/+IAFf/tABr/8gAi//IALf/wADf/0AA5//gAO//gADz/6QA9/+gAP//sAED/4wBE//gARf/7AEb/+gBH//oASP/5AEr/+gBL//oATP/6AE3/+gBO//kAT//7AFD/+wBR//sAUv/7AFP/+ABU//oAVf/7AFb/+wBa//oAXP/7AGD/7QB8/+wAkf/4AKAAAwAbABD/8wAR/9MAEv/SABX/8wAj//YAJP/5AC3/qgA7/+sAPf/1AET/7wBG//IAR//0AEj/7wBK//QATP/7AE7/+wBQ//kAUv/1AFP/8QBU//IAVv/6AFr/9wB8/7IAkf/5AJ8AGACgADgAoQA0AB0ALf/2ADf/2QA5//kAO//3ADz/8AA//+4ARP/5AEX/+gBG//kAR//6AEj/9wBK//kAS//6AEz/+gBN//sATv/6AE//+gBQ//sAUf/7AFL/+gBT//kAVP/5AFX/+wBW//sAWv/5AFz/+gCR//oAoAAIAKEACQAHABUAIAA3/94AQAANAGAAFQCfAAoAoAAhAKEAHgAWABL/9AA7//cASf/3AEv/+wBM//sATv/7AE//+gBQ//oAUf/5AFP/+wBV//kAV//2AFj/+wBZ//UAWv/7AFv/9wBc//gAXf/4AJH/+gCfABEAoAAeAKEAJwBMAAn/7QANABsAEP+3ABH/vAAS/8EAE//wABf/9gAZ/9MAG//vABz/9AAd/7sAIgAPACP/ugAk/8sAJv/HACf/9wAq/8oAK//7AC3/ngAy/8gAM//6ADT/2QA1//sANv/5ADr/+AA/AAkAQAAgAET/cwBF/+UARv9zAEf/dABI/3EASf/OAEr/dABL/+QATP/tAE7/3wBP//gAUP9zAFH/dQBS/3QAU/9wAFT/cwBV/4cAVv96AFf/zwBY/3YAWf+hAFr/cABb/40AXP9yAF3/gABgABEAa//kAHz/qgCR/88Akv+VAJP/ggCU/4YAlf+BAJf/lgCa/48AnP9+AJ4AMACg//UAof/iAKL/nwCj/68Apf+FAKb/hQCq/8wArP+GAK//nADC/70Aw//AAMUAHQAiAAz/9gAR/+MAEv/gABX/9gAk//sALf/qADv/6gA9//gARP/1AEX/+QBG//YAR//3AEj/9QBK//cAS//6AEz/9wBN//oATv/4AE//+QBQ//kAUf/6AFL/+ABT//QAVP/2AFX/+wBW//kAWP/7AFr/+ABc//oAfP/mAJH/9wCf//0AoAAcAKEAHwAuAAn/9gANABQAEP/hABH/ywAS/8sAGf/uAB3/6QAj/+AAJP/sACb/7gAn//sAKv/wAC3/yQAy//MANP/0ADr/+wBAABUARP/RAEb/0gBH/9UASP/OAEn/+gBK/9QATv/7AFD/1wBR/9kAUv/TAFP/1ABU/9UAVf/jAFb/1QBX//gAWP/WAFn/8wBa/9YAW//sAFz/2QBd/+gAfP+8AJH/4gCeABUAnwAJAKAAHAChACkAr//ZAML/6wAgABH/5wAS/+EAJP/6AC3/7gA7//MAPf/6AET/8wBF//gARv/0AEf/9QBI//MASv/1AEv/+ABM//gATf/6AE7/9gBP//cAUP/2AFH/+ABS//YAU//yAFT/9QBV//kAVv/2AFj/+QBa//UAXP/4AF3/+wB8/+kAkf/0AKAAGwChABsAIAAK//YAEP/cABUAGQAX/+wAHP/pACb/4wAq/+IAMv/iADT/5AA4/+0AOv/0AEAAEABF//MARv/2AEf/+gBI//YASf/oAEr/9wBL//sAT//wAFH/+wBS//QAVP/4AFX/9wBX/9gAWP/qAFn/0gBa//MAXP/qAGAADgBr//UAwv/kAEAACf/sAA0AIQAQ/8QAEf+zABL/vgAT//AAF//zABj/9QAZ/+EAG//zAB3/1QAj/80AJP/bACb/2gAn//UAKP/6ACr/2gAr//kALf+yADL/3gAz//kANP/kADX/+QA2//oAOv/3AEAAEwBE/6oARf/7AEb/rgBH/7UASP+mAEn/9ABK/7QAS//7AE7/+QBP//oAUP+2AFH/vQBS/7YAU/+vAFT/sQBV/88AVv+pAFf/8ABY/7YAWf/hAFr/uABb/9YAXP+6AF3/zgBgAAsAa//rAHz/oQCR/9kAkv+wAJr/sACeABwAoAARAKEAIQCj/8IAqv/JAK//uwDC/9kAw//uACEACf/2ABD/6QAX/+4AHP/tACb/7wAq/+8AMv/sADT/7AA4//cAOv/7AEX/+QBG//kAR//7AEj/+gBJ/+4ASv/5AEv/+gBO//sAT//4AFD/+QBR//YAUv/4AFT/+gBV//MAV//rAFj/8wBZ/+EAWv/2AFv/+QBc//AAa//wAJH/+wChABIAIgAT/+sAFv/1ABf/5QAY//QAGf/iABv/7QAc/+QAJv/fACr/4AAt/+8AMv/gADT/4gA3ABoAOv/2AET/8wBG/+YAR//rAEj/5QBJ//UASv/nAFD/8wBR/+8AUv/mAFT/6ABV/+8AVv/wAFf/7wBY/+MAWf/nAFr/5QBc/+UAXv/tAJ4ADgChAA4AGwAK/8IAE//yABT/3wAX/+QAGf/0ABr/5AAc/9kAJf/2ACb/7wAq/+4AMv/sADT/6wA3/8IAOP/pADn/zwA6//MAPP/YAEX/9QBJ/+wAT//0AFX/9gBX/+IAWP/wAFn/3wBa//UAXP/wALr/vAAIACMACAA3/4IAOf/hADz/xAA//+kAQAALAGAAEgDF//gAJAAK//gADP/tAA3/9AAR//YAEv/oACL/7AAk//oAJf/2ACf/9wAo//gAKf/2ACv/+AAs//YALf/4AC7/9gAv//YAMP/0ADH/9QAz//UANf/4ADb/9wA3/3EAOP/4ADn/1gA6//oAO//SADz/tAA9/+kAP//fAED/5gBJ//wAYP/sAHz/8gC5/+cAuv/tAMX/6QAfAAz/9gAQ/+UAEv/0ACL/7wAl//oAJv/5ACr/+QAs//oALv/7AC//+wAw//gAMf/6ADL/+QAz//sANP/5ADb/+QA3/2kAOP/0ADn/2AA6//gAO//eADz/sQA9//gAP//dAED/8ABW//wAWP/8AFv/+gBg//QAuf/2AMX/7gAWABD/9wAl//oAJv/6ACf/+gAo//oAKf/5ACr/+gAr//oALP/5AC7/+QAv//kAMP/5ADH/+QAy//kAM//5ADT/+QA1//oAOP/4ADr/+gA9//sAoAAVAKEAGQAeAAz/9QAQ/+sAEv/0ACL/7gAl//gAJ//6ACj/+gAp//oAK//7ACz/+QAu//gAL//4ADD/9wAx//gAMv/7ADP/+AA0//sANf/6ADf/aAA4//QAOf/VADr/+gA7/+sAPP+zAD3/+gA//9wAQP/wAEn//ABg//UAxf/tADEABQAhAAoAFwAMABUADQA6ABD/3wAR/+4AEv/lAB3/8gAiAC4AI//vACT/9QAlAAYAJv/6ACr/+wAt/+EAMAAHADMACgA3AGMAOQBCADsAMwA8AEEAPQAwAD8AGABAAEEARP/tAEb/7QBH//EASP/oAEr/8ABMAAwAUP/wAFL/8ABT/+4AVP/tAFb/9wBY//sAWv/1AF8AFwBgADsAfP/hAJ4AUwCfAAMAoAAUAKEAQgCv//sAuQArALoADgDC/+8AxQA2ACAADf/1ACL/7gAl//YAJv/7ACf/+AAo//gAKf/4ACr/+wAr//gALP/4AC7/9wAv//cAMP/2ADH/9wAy//oAM//3ADT/+QA1//gANv/7ADf/XQA4//EAOf/SADr/+AA8/7cAPf/6AD//1ABJ//UAV//8AFn/+QC5/+wAuv/yAMX/5wASAAQADgAK//YADf/yAA8ABwARABIAHQAKAB4AAQAjABQAN/+CADn/3QA8/8QAP//iAFn/+wC5/+YAuv/tALsABwC+AAcAxf/lABoAEv/0ACT/+wAl//kAJv/7ACf/+gAo//oAKf/6ACr/+wAr//oALP/6AC7/+QAv//kAMP/4ADH/+QAy//oAM//5ADT/+wA1//oANv/7ADf/4wA4//YAOv/7ADv/+wA8//sAPf/2AKEABwAXACX/+QAm//sAJ//6ACj/+gAp//oAKv/7ACv/+wAs//oALv/5AC//+gAw//gAMf/5ADL/+gAz//kANP/6ADX/+gA2//sAN//3ADj/9AA5//kAOv/6ADz/9wA9//sAGQAQ/9oAJf/6ACb/6QAq/+oAMv/qADT/6gA3/5AAOP/wADn/6gA6//QAPP/cAD//7ABE//wARv/wAEf/9gBI/+8ASv/xAE///ABS/+8AVP/zAFb/+gBY//MAWv/wAML/6QDF/+8AAwBAAAUAYAAJAHH/4wAOAAQADgAPAAgAEQAaACMAEwA3/4kAOP/6ADn/3gA8/8gAP//jAEAADwBgABMAuwAIAL4ACADF//IACgAQ//gAJf/7ADT/+wA3/2wAOP/3ADn/1wA8/7gAP//bALn/+ADF/+wAIwAM/+0ADf/3ABL/6gAi/+wAJP/7ACX/9QAn//cAKP/3ACn/9gAr//gALP/2AC7/9gAv//YAMP/zADH/9AAz//UANf/3ADb/+AA3/10AOP/1ADn/0wA6//oAO//WADz/sAA9/+8AP//WAED/5wBJ//QAWf/8AF3/+ABg/+wAfP/4ALn/7QC6//MAxf/qACEADP/uABL/6wAi/+0AJP/7ACX/9QAn//cAKP/3ACn/9gAr//kALP/2AC7/9QAv//UAMP/0ADH/9AAz//UANf/4ADb/+QA3/14AOP/1ADn/1AA6//oAO//WADz/swA9/+8AP//XAED/5wBJ//cAXf/6AGD/7AB8//gAuf/wALr/9wDF/+sAIwAN//YADwAJACL/7QAl//YAJv/6ACf/+AAo//gAKf/4ACr/+gAr//gALP/4AC7/9wAv//cAMP/2ADH/9wAy//kAM//3ADT/+QA1//gANv/6ADf/WQA4//EAOf/RADr/9wA8/7QAPf/4AD//1ABJ//MAV//8AFn/+QC5/+4Auv/0ALsACQC+AAkAxf/pACcADP/uAA0ABQAQ/8sAEf/HABL/1AAi/+wAI//yACT/8gAl//oAJ//4ACj/+QAp//YAK//4ACz/+AAt/6AALv/4AC//+AAw//YAMf/3ADP/+AA1//kANv/6ADf/kgA5//QAO/+1ADz/2wA9/9QAP//uAED/4wBE//QARv/3AEf/+wBI/+8ASv/6AFL//ABT//kAVP/5AGD/7QB8/7sAHgAM//UAEP/yABL/9AAi/+8AJf/4ACf/+gAo//kAKf/5ACv/+wAs//kALv/4AC//+AAw//cAMf/3ADL/+wAz//gANP/7ADX/+QA3/2UAOP/1ADn/1gA6//oAO//tADz/sQA9//oAP//cAED/8QBJ//sAYP/2AMX/7gAIABD/4AA3/5cAOP/6ADn/7gA8/+AAP//tAML/7gDF//UAHwAM/+4AEf/3ABL/6AAi/+4AJP/6ACX/9wAn//gAKP/4ACn/9wAr//gALP/3AC3/+QAu//cAL//3ADD/9gAx//YAM//3ADX/+AA2//kAN/9qADj/+AA5/90AOv/6ADv/1QA8/78APf/rAD//4gBA/+cAYP/tAHz/8wDF//MAJwAM//EADQAPABD/6QAR/+EAEv/ZAB3/+AAi//MAI//vACT/8gAn//sAKf/5ACv/+wAs//sALf/PAC7/+wAv//sAMP/5ADH/+wA1//sAN/+XADn/+wA7/9UAPP/uAD3/5gA///UAQP/sAET/8ABG//MAR//2AEj/7ABK//YAUP/7AFL/9wBT//MAVP/zAFb//ABa//oAYP/yAHz/zgAhAAz/8QAN//YAEv/wACL/7QAl//YAJ//4ACj/+AAp//gAK//5ACz/9wAu//YAL//2ADD/9QAx//YAM//2ADX/+AA2//sAN/9gADj/9AA5/9YAOv/6ADv/4AA8/7YAPf/0AD//1gBA/+0ASf/3AFn/+wBd//sAYP/wALn/7QC6//QAxf/oABQABAAUAAwACAAPAA8AEP/pABEAGAAdABIAHgABACMAGwAm//gAKv/2ADL/8gA0//IAN/+eADn/4wA8/98AP//wAEAADQBgAA0AuwAPAL4ADwAaABD/+AAi//AAJf/4ACb/+gAn//oAKP/6ACn/+gAq//oAK//6ACz/+gAu//kAL//5ADD/+AAx//kAMv/5ADP/+QA0//kANf/6ADf/cQA4//QAOf/YADr/+QA8/8IAPf/7AD//4ADF/+8AGgAQ/+UAIv/yACX/9wAm//kAJ//6ACj/+QAp//oAKv/5ACv/+gAs//kALv/4AC//+AAw//cAMf/4ADL/+AAz//gANP/4ADX/+QA3/2wAOP/yADn/1gA6//gAO//7ADz/xAA//98Axf/vABIAC//2ABP/9AAX/+cAGf/xABz/5gAm/+0AKv/tADL/6wA0/+sAOP/0ADsAFgBJ//YAV//vAFj/8wBZ/+oAXP/zAF7/7wB8AA0AAgCgABEAoQATAAEADP/2AAMAN/++ADz/7gBNACUAAgAX//EAGv/xAAYALf/uADf/4AA7/+sAPP/sAD3/6gB8/+sAAQAZ//IABQAU/+IAFf/RABb/4AAa/9sAT//jADIAJP/pACX/6wAm/+wAJ//rACj/6wAp/+wAKv/tACv/6wAs/+wALf/dAC7/6wAv/+sAMP/rADH/7gAy/+0AM//tADT/7QA1/+0ANv/uADf/sAA4/+wAOf/jADr/7AA7/+wAPP/dAD3/5ABE/+gARf/rAEb/6ABH/+gASP/nAEn/9ABKAAYAS//rAEz/6QBO/+sAT//qAFD/6QBR/+wAUv/pAFT/5wBV/+0AVv/mAFf/8QBY/+sAWf/xAFr/6QBb//AAXf/sAHz/4AABAAwACAACAAwAOAA/ADIAAgAMAB4APwANACIACv/2AAz/9gAN//IAEv/yACX/9QAn//gAKP/3ACn/+AAr//kALP/2AC7/9gAv//UAMP/0ADH/9QAy//oAM//1ADT/+gA1//gAN//aADj/8QA5/+gAOv/5ADv/5gA8/+IAPf/3AD//7ABJ//cAV//5AFn/+ABb//sAXf/5ALn/9gC6//gAxf/1AAIADQAZAMUABwABAMUAFgAGAA0AIgAiAAkAQAArAGAAHAC5AA4AxQAQAA8ABAATAAUAMgAKADAADQAUACIADgBFABkASwAZAE4AFQBPAAcAXwAqAGAABwBrAAcAuQAnALoAOADFACAAEwAEABQABQAyAAoALAAMAA8ADQAsACIAPAA/ABsAQAAkAEUAGgBLABkATAAUAE0AGQBOABUATwAHAF8ALABgAC4AuQA1ALoALwDFAFIADwAR/6IAJP/uAC3/swBE/+kARv/sAEf/3wBI/+YASv/wAFL/8gBT//AAVP/wAHz/sACfAA4AoAAtAKEALgATABH/oQAS/7oAI//VACT/6wAm//UAKv/3AC3/swBE/+UARv/pAEf/2wBI/+IASv/sAFL/7gBT/+wAVP/tAHz/rQCgAB0AoQAmAML/9AAEABH/jwCfAAsAoAAqAKEAKAADABH/jwCgABoAoQAkAAIABf+CAE0ACAADADf/uwA5//AAPP/nAAkALf/wADf/twA5/+sAO//cADz/zgA9//YASf/0AF3/7wB8/+4AAwAX//YAGv/2ABz/8AAIACT/9wAt/68ANwAKAEf/9gB8/8QAnwAVAKAANAChADQAAgASAAUABgAAAAkACwACAA0AHQAFACAAIAAWACMAPwAXAEQAYAA0AGIAYgBRAGQAZABSAGsAbABTAHEAcQBVAHUAdQBWAIIAggBXAIQAhQBYAJEAkQBaAJUAlQBbAJ4AoQBcALkAvgBgAMIAxQBmAAAAAAABAAAAAMmJbzEAAAAAywVUGwAAAADLBcTm\"","module.exports = \"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\"","module.exports = \"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AgYGAgQBAgQJBgIDAQIEAQEBAgICBwQHAwYCAgQEBwMEBgMFAgUCAQkIAwUDBwIBBgQKCAUJAQoIBAMGBAQGBAcHAwcEAgoBBQkFCREJBgwMCQQJFQsLFQ0ECAsKAwgEBQ4GCw0IBAUJAw8FCAUFCgYGDAULDRENCgYCCgcKCwkFIAkFBwMMAVsBAQEEAQQCAgEBAQIBAQIBCgIHFAoNFAgPDwcLAwIMBgQMDQUIAQwCCAMIDQYJBwIFAwUEAgYNAgMCBQcJAgQFAwcBAgIEAQEDBQYBAgQCAgYCAgQCAwcCAgMCAwUCAgMCBwICCgQLCAUGBwwIDAoFCAQIGQYRHw8FBwUFCgQJBgIKBQICBQIFAQICCAEBAQEFAQEBAgEBAQECAw0dDwUIBQUJBQICBQEBBg4bDAUIBQYNBgIGKwUIBAYJBQMGAwUKBQggEAkRCggSCQgPCA4lEQECAQEBAgIEAQwECA8LAwECAQIBBBIlEBISCwgOCwMGAgQFAgQGAwMHBQkWCwULBQsGAgYIBQIEAgcFBQMFAwIGBgMCAgMFBgEBAQEBAQEBAgEDAQICAQIDAQQBAwEBAQEBAQIDAgICAgIBAQICAgIDBAUBAgoCBQMDBQIDAggJBwoDAgsEAw0NBAkIBQMFBQkIBAkRCAQKBQ0OBgEHAgoFFDISAwcCAwkDCAMCAgUDBQ8GDAMIBAQGCAcFCgkDBgIIAQILDAMEAwkBBgMIBwMIAQkGAgIEAgICAgcDAgcBAgYCAwUDBAcDAwEBAwECAgICAwEBAgMDAQEBAgEBAwEBAgIBAQQFBgYIBQICAQIBAQIDAQMD2QcPCAwICwIXIQ8JBAcMBwYLBQQIAQIFAgMEAgQHAwMDAQYEAggJBAQCAQcBBgoKBQIEAQUCBAMCBQkFERYFDRAJCxkNHBgECAQFBwQNBgMQEA4MBQgJAg0EBQgEBQwFAwYCBAYDBAgFCQUCBAYEDwcFBAQJBAUDAQICAgEBAgIBAQEBCAEBBQEBAggCBgcECBgHBgYBCREIAwcDCwMGAw4SCw4cDg4cDQIGAgEBAwINBwEEBgIJAQQDAgECAQEBAxUpAAACAB4AAwHNAyQBHAH9AAABFgYVFBYVBhQHBgYHBjEGBwYGBwYGBwYGBwYGBwYGBwYGBwYUBwYGBwYHBgYHBgYHBgYjBiYHIgYnIicmJicm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AQsFAQQCAQEDAQEGAgQBBgECAgIBAgEBAQMBAQIBAQEBAQECAwIBAgEGBwUFBQMIAgcGAgQGBA0LBQQGBAQHBRAhDgQGAwwIBAQHAwoMBgwGBAIGAwUJBQIGAgIDBQUCAwUDAgMCBgEBAQEBAgECAgoCCAQCEQwHDAgCBgMJDggKEQgGDAMDCQIICAICAgEEBAUEBgcIEQgFCQUFCQUCBgIBAQEEAQcBDQMDCAUCBgIDAgMFCAUGDAUCBAECAQMBAgECBAkECRILEQMLBAIGBgsGBAMCAwICBQIBBQIHAQIDCQUEBwQIEQYDCAMQFQsOBwcOBwUHBQUJBQgPAi8OCAoFCgEHBwQBBwICBQMGAgEFAQECBAIDAQICAgEDAQEDAQEBAwEBAQICAgICAgIEAggDBAcCAgkBBwUCAgQCCQYFCggFDAgFBQwFBg8HCwcFBw0HDAUDBAkFDiURBQkFCBEKEQYEBgQLBgMDBQMGBAUKBQMHAwUIBQYGBAgIBQgBAQgIBAUFBAICAQECBgICAwICBQMIAgQDAQIFBQMFAwQHAwMLBAQaHhoDGhoMBQIIAgIHAgEBAQECBwYEBQQIBgQMCAQFDAcDBgMDBgIFDAUDBwMIBAoUCwwHCAILBQUIBQgQCg4gDgUHBQUQBggNCgQGBAcPCQYSBQQGAgUNBgsDBA4QAgcDBAgFAwkFBQsGBQ8HCAEBBQIBAwcCBgQCBgICAgIGAQUBAQMGAwIDBgQEAQECAwIBAgQBAwEBAQECAQIBAwEBAgIJCAUEBgQPEwIGAxEEBgoGCAMEEAgGBQL+SQoSBQYHBAIEAgQHAgkBBgQBEw8ECAgOCA8FCAQJAwMFBAUKBAwbDQMHAwMGAxALBQcNBQMGAwQHBQUIBAMFAwMGBQIIAgMCAgUBAgEBAgYCAwMCAgIBAQEDAgICAQIEAQICBgMBCQMDBAICAgIFDQUDBQMDBwEDBAIFBgUDBwQOAwIHBAQHBBQkFAULBxANBQIIAwwLBwcKAgILBAQGAgEBBAEBAQECAQgCCw8LCgwICwURCwUFAgICBQEBAQIEAgMECwIRAggFAQkCAwkEBgkFDAQCCwsEAQIBAwYGBQ0IBAgDBAcEBAgEAwQCAgEDAQYBBAIGCwoCAQQIBAcTBwUJBAcHAgcGAgMEAwEGAgEBAgUCAgEEAgMCAgICAgECAwkA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CwoEBAYEEA0HBw8JDgIGBgIDBQICAQUBBAkBAwIBAgMHAwMCBAIDAwEBAQUCBQECCQ4NCREKChQCBQgFCwYFAwoFBQYGDwsFAgkFAwUEBgYEAgYCCgMKCgEBCQMCAwYFAgYEBwEBBgMCEwoLEgoDCgUDAgAABAAo/+QCVAL2AOMB/QKYAsIAAAEGBgcGBgcGBwYGBwYHBwYGBwYGBwYGBwYGBwYGBwYGBwYUBwYGBwcGBgcGBgcGBgcGBwcGBgcGBgcGBwYGBwYGBwYGBwYHBgYHBgYHBgYHBgYHBgYHBgYHBjEGBgciJicmFSInJiYjNjY3NjY3NjY3JjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NiY3NjQ3NjY3NjY3NjY3NjM2Mjc2Njc2Njc2Njc2Njc2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2Nzc2Njc2Njc2Njc2Jjc2Njc2MhcWNhcWFhcWMhcWMgUWNhcyFhcWMhcWFhcWFgcGBgcGFAcGBgcGBgcGBgcGBgcGBgcGIgcGBgcGJgcGBiciJicmBicmJjcGJicmJicmJyYmJzY2NzY2NzY2NzYGFxYWFxYXFhYXMhYXFjIXFhY3MjY3Njc2Njc2NzYxJiYnJiYnJiYjBiYjBgYHBiIHBgYnJjYnJiY3NjY3NjY3NjI3NjY3NjY3NzY3NjQ3JiYnJiYHBgYHBhQHBgcGBwYGBwYGBwYGBwYGBwYGJyY2NTQmJyYnJiYnJjQ1NCY3NhYjFgYXFhYXFhYXFhYXFjY3NjY3NjY3NjY3NjY3NjI3NjY3NjM2NjMyFhc2MhcWFhcWFhcWFhcWFhUWFAcGBgcGBgcGFAcGBgcGBgUWBgcGFhUUBhUUFhUUBhUUBhYWFxY2NzY2MxYGFRQWFQYGByImIyYGIwYGFxQGFxYWFxYXFhYXFgYVBgYHBgYHBiIHBgYnNjY3NzY0NzY2NzYmNyYGIyYjIgYHBgYHBiIHBgYjJiYnJjYnJjQnJjU2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Jjc2FhY2BwYGBwYGBwYGBwYHBgYHBgYHBgYHFjYXFzYXMjYXMzQ2JzQmJyY0JwYGAi0BAwIDBwUHBgICAgQDBwgGBAIHBAQIBQcKBQgLBwIDAgYBAgQCEwUIBQYBAgQFAwMFCQQCAgYBAgYBBgYGAgcEBAUDBAYFAgECBgMFBAIGDgYCAwIFAgEFAgEECgwHCwkCCQECAQkDAgIBBQcGAgUCAgICCAEEAwkEBAcGBAECBgICAwcDBAEBCAECBAIGBgMHCAQDAwMCAggHAwICAgIEAgYGAgYBAgQCAgcEAgMCAgQCAgICAgYCBgEEAggFAgMCBgQFAgcIBQUHBQcBAgQCAQUHAggDAQwHBQgCAQUE/rYECgUDBQQFCQMGBwUEAwIBAQIFAgYFAQQEAgMGAwIFAwUSCAoHAwcOBwcJBAIFBQMHAwcEAQkFAQMFAgcGAgYCBwcBAggDAwYEBAkFDAECAgcECAMNAgQGCAQDBgQFBwgGDgUFBgUHAwQCAgIFAgIIAgYHCAoCAggKBAkDAgUGBQMCAQQDAgIGBQIFAwUHAgUFBQUEBQYLAwQDAgECBh0PBQgFBwELBQYCBAQCAwECCQMBBgwHAwcGBQYFAQECAwIBAQICCQUBAQIBAQIBAgQCAwIEAgcEBwMBBQUCAwEBBAYCCQYCAwUCCAoKBAIDCQMJCQMNBgQOBwkBAQIBAgECBAECBQoFCAECBwIGBgE1AgUBAQIBAwIBAQECCBYKBQcEBQMCAQIBBg0FCRIKAwEBAQEBCAMJAw4UBwEGESQSCRIJBwcDBAgEAggFCAICAgkBAgQDCxYMDQoLCAUEBwUIEQgEBwQEAQMDAQIEAgQECQQECQQKAgIKCAgCBQIEBgQDBAUCBQMDBgICAgIBAgICAwEBAgMJFBQUOwIEAgUCAQUCAQQFBwICBQMEBBEFAwYEEAcIDw0HFgQDAwEBAQUGAssFCQMFBwUJBgIGAwYDCwkLAgcMBggPCA4TCQsaCwMHAgcDAgMGAiYIDQgJBwMICwUHBQ8IBQIIBQIKAQcMBQgMBwUQCAkECQsCBQoFCQkEDxwNBAgFCwkECwQKAwwEBQEBBQMGBQUJAQEGDgUFBQMFBwMMBwILEggKEQcNBQUHBgMFCQUHAwEKAgICCAMKCwULDQcKCAIQDgYDBwMFBwQJCAQLAQUGBAULBQYEAwYDAgMHBAUIBgkGAgkRCAMGBAoIBQMQEQkQEQoLBQQGBgIMAgoCAgkEBQgBA5cBAgEDAgIBAwkCCxANBg0FCgcDCwMCBwYDAgYDAgQCBQgEBgECAgIEAQEBAgECAQUBAQkDAwEFAgUFAg0G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AwUGBgIFCAIFBAQCBQIKAQIJCAMIEgUKBQQIBAQHBAMGBAQHBAMGBAoEBAQCCgQCCgYDBgQCAwMDBAMEAwECAgIEAQYNBAgFBAYDBQoFBwICBgAAAAQACv/lAmYC9AHUAjECvQMSAAABBhYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYVBgcGBgcGBgcGBgcGBgcGBwYHBiIHBgYHBgYHBgYHBgYHBgYHBhQHBgYHBgYHBgYHBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYHBgYHBgYHBhQHBgYHBgYHBhYHBiYnJiYjJgYjIgYnJjY3NjI1NjM2NDc2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzQ3NiY3NjY3Njc2Njc2Njc2Njc2Njc2Njc2NDc2Njc2Njc2NzYyNzY3NjY3NjY3NjY3NjY3NjYnNjY3NDY3NiY3Njc2Njc2NTY2NzY2NzY2NzY2NSYGBwYGBwYGBwYiBwYGBwYGBwYmJwYWFRQUBwYGBwYGBwYGBwYVBgcGBgcGMgcGBgcGBgcGBgcGIgcGBgcGBgciJiciJicmJyYmJyYnJiYnJic0JicmNSYmJyYnJjQnNCY1NDY3NDY3NDY3NjY3NiY3NjY3NjY3NjY3NjY3NjY3NjY3FjY3NjY3NjYzNhYXFhYXFhYXFjIXFhYXFhcWFzIWFxYWFxYyFxYWMzYyNzY2NzYyNzYWNzY2FzY2NzY2NzY2NzY2NzYmNzYWFxYWFxYWFxYWBSYGBwYHBgYHBgYHBgcGBgcGBgcGFAcGBgcUBhcWFhcWFhcXFhYXFgYzFhY3Njc2Njc2Njc2Njc3NjY3NjY3Njc2Njc2Njc2Njc2NjU0JicmJicmNCcmJyYmJyYmAQYGBwYHBgYjBiIHJiYnJiYnJiYnJgYnJiYHNCYnJiYnJicmJicmJicmJicmJicmNjc0Jjc0Njc2Njc2Jjc2NzY2NzYzNjY3NjY3NjY3Njc2Njc2NzY2NzY2NzY2MzYyNxYWFxYWFxYWFxYUFxYWFxYWFRQWBxQGFQYUBwYGBwYGBwYHBhYHBgYHBgYDBiIHBgYHBgYHBgcGFAcGFgcGBhUUFhUWFCMWFhUWFhcWFhcWFhcWFjc2Njc2NDc2Njc2Njc2NDc2NjUmNjU2JicmNjUmJicmNCcmJicmJiMiJgcGAjwCAQECBgIFAgEGAgIHCAIFAwICBAIGAQIFBAUBAgICCwUFBggDBggDBgEICAQCAQcCAQIDAgIDAQUDAgICAgYBBAICBAMCBAcDCQIFAwUHBQcBAQIEBAMIBQUKBQQBAgUEBwgGAQcCAgICCAMCBgIDAgUKEwsDBgMFBwUDCAQCBgQGAgcBBwIFAwIIAwUCAQIDBAIFAwUJBQIEAgIGAgUCAgICAwQEBAIFAQEKBQMKAQIDBQIHAwMGAwQGAwMFAwICBwQCBAUCAQQHAQEEAgYEAQUBAgQDAgkFAgUEAgMCBAMBBQEBBwEEBgIGBQQCAgMCAwYCAwIFAwMDBQILGAsDBgIEBwQEDgQJHQ0CAQEEAgICBAIDBgMHCwYDBgUJAgIFCwUHBwUDBgIIBQMECAUFBwUFCwYEBgUIBAQCAwUFBAwGAgQFAgQFAQEEAQEBAgQCAgEDAQMGAgMBAgUCAgIGAggBAQcFAwYJCwINBAUIAwkBAggFAggaCAQFBAUEBAYCAgIEAxIOAwIDBQMHBQQKBQIECAULBQMDCwUHBwMIAwICBwUNBQMEBwIEBQMFAgUBCwQKDAYDBgQECAMIDP6ICBUGCQYFBAQGBQIHAgcCBQEFAgIBAQIBAgEBBgMBAQEIAwICBwEBBw0ECQEJBwIEAwIEAwILAwICBwcBAgEFAQIHAgIGBAIBAQMCAgECAQEEAQIEAggQAVkDBQQHBgQRAwQGAg4LBQYLBQMGBAoCAgQDAwYCAgECBgICAQICCAICAgICBgEBAwEBAgMCAQEBBQEBAgIHAgIEAwQCAQIGAgUIBQoEAwUDBAkEBwQFBwUJAgIFCgUKDgUIEgcFBgMFAQIGAgECAQECAQIBBQICBQIFCAYBAQYLBQIERwcDAQQIBAMDAQcDAgEBAQEBBAMBAQMDAwQCAgUFAgcCBRQEBwsEAwEFAQIDCAICAgECAQIBAQEBAQEEAQcBAgICCAMDAw4FBwLQAwYCBQcEBwcCBAcDDQYECwICBAgECgQCBwEBBwMDBQIODAcMDQUMCgUMAQoIBwIKAQECBwQHAQIJAQIDCQMJBAIDBwMGBAIQDAYPAwcEBw4ICwMCAwcCCBAHCAwHAwcCCQYJDwYGCgYCBwQHEAgFDAUJCAQCBwMBAgECAwQFCAMJAQoKAgIIAwUEBQgBAgIHAgQHBQcPCAQIBAQGBAsCAgIIAwUJ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BgQDCAICBwUEBwUGAgUFAwoFBwIBAgQCCgMKBwUIBQoLBQUJBQUHBAQDBQIFAgMFAgQEAgUGAgIDAQEDAgIHAgkEAgICBQYFCQgFBQYCAgsFAwcEBAYFDAYDCAQIFwYSFAkIBQgJAwQHBQsHBAwECg8KCwIHAQQDAwgGBwQEAtYFBgIFCgUJAQIGAgMFAwYLBQMGBQoFCQMCCgQJBAIGAgYCAgIEAwwFAgUDBQYFAwcECAQECxYKAgIDBwQLBAgQCREHAQcDBwICAgIBAwEBAgQCBgQDBwYDBw4ICAMFBwQDCA0FAw8OBQsOBggICgUCCwEEBwEBAggDAgEBAQECAgEBAQQCChYNCgMCBQsFBAMFBAEBAgMBAgMBAgMCBQYDBAQEAwEFAwEGAwEIBgUJAQICBAMJCgQHBwMDBgIFCQUDCAMICQgOCwYCDw4GCAsIDAYDAwcDAwgDBAUCAgIFBQMBAgMCBAIGEAsIAQgDAggCAgUGDgcIDwMMCQMGDQgIAQEGAgMEAgcEAgMJAwQIAgEKCwgDCwYCCQQEBwMEBgMGAwQEBQEDAgMEAQEBAgECBgQCBQIGBAgBAQoECQMHBgMHBwMDBQQFBAIFBwIIBgQEBAMHAgICAwMBCREIBQgFDAoFDQUCAgUEDAUCCQULEAcJCwIBAgIBAQMEBgcCAwQCAwQKBgQEAgQEAgMCBAICBAQJAQIBBQIEBQkBCAMFBgQKBQQHBAwVCw0FAQYDCAINBwMCBwYIAgIHAQYCAgQCAgIBAQEBAQEBAQIBAgIBAQEEAQEFAgIGAwkDCAYDDw0GAwcEAwYEAwYDCgUKCQMGCwUJBwMDBgMFCgUFCwUFCAQKBAIKBgMHBgIHCAUHBQQEBwQDBgQGAQECBQIHAgMBCQEBAgQBAgMCAgICAQQEAgMCBQwFCgYDFycRBAoCCwYCAgUEBQkFDgQDBQMCCAMHCAQFBAICBgICAgICAwIHBAIEAQICAQYEAgEFAgICBAIFAwQKCAIIAQQCCAEDAgYEBAQCAAABAA4BqgBrAuAATQAAExYWFAYHBhYVFAYUFBUUBhUUFhQWFRwDBwYGBwYjJgYjJiYnJiY3NCYnNDY1JjY1JiY1NDYnJiY1NDYnJiYnJjY1JjY1NjYzOgIWaAIBAwIDAwECAQEBAQEDAg8ICQIIBQUCAwEDAQEDAQEBAQEBAgEBAgECBQIFAg4QCwQPDwwC2AMPEhMHCxULBgUFBgYEBgMCDxITBQoKCQwMChIJBwICAQEFAxAFBhUIBAcDBgMCCBAIDw8QBQsFCxEICxMNCgQCCwMDBQMEAAABAB7/yQD3AxAA3gAAExQWFQYGBwYHBgYHBgYHBgYHBgYHBgYHBgYHBgcGBgcGBgcGFAcGBgcGBhUUFBcUFhUWFBcWFhcWFhcWFhcWFxYWFxYWFxYWFxYUFxYWFxYWFxYWFxYWFxYWFxYXFhYHBiYnJgYnJiYnJiYnJiYnJiYnJiYnJiYnJiYnJiYnJjUmJicmJicmJicmNCcmNSYnJiYnJjYnJyYnNTQmNSY1JiY3NjY3NDY1NjY3NDY3NjY3NjY3NjU2Jjc2Njc2JjM2Njc2NDU2Njc2Njc2Njc2NzY2NzY2NzY2NzY2NzY2N/QDAhMGBAQEBQUDAwMCAgUCAwIMBwcDBgEEAgECAQICAgIBAgIBAgkBAwICAQMCAwMCAgcCAgECAgICBgMCAwIFAQYCAgIDAgIBAgQIBQMGAgQDBAkCCAsFBRMFCAUCBAECAgICCAcFBAYDAwIEAQUDAgUCBQQBAQIBAgIGAgICBAIBAggCBAIBAgICAwEBAgEBAgEBAQMCAwEBAQIEAQIDBQICBgMBBAQCAggEAwYCAQUFAwoQBggBAwgEBQICAwoEAwgECAUFAvoFCgUHDQcGCAUIBQMDBAMHAwUEAhIYDAUMCAMKAwYEBw8HCA8ICA4HEy0ODxcIBAgFCRIJCAsGChwJCBEKCQIFDAUIEAkEBwQHBAIKBgICBAMDCAQJEQgFCAQJAwULCQICAQEBAQcEBAQFAwMEAwkRCAgMBQUKBQUIBQQIBAYEBAcDAwYCBQgFBAoFCAcIAwkTCwkIBQ4OChEMBwQFCQgSCQcNCAQHBAgSCgMIAwYKBQwGBAoHBwQCCwMCCQQIDwgGBAILAQEJCAUSDgkIAQUJBQUDAwQJBQMFBAoEAgAB//X/yQDOAxAA4QAAExYWFxYWFxYWFxYWFxYWFxcWFhcWFxYGFxYUFxYWFxYGFxYGFxYGFxYVFhYXFhQXFhYHFhYXFBcWFhUWBgcUBwYGBxQWBxQHBhYVBhYHBgYHFAYVBhYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBiYHBgYnJjY3Njc2Njc2NzY3NjY3NjY3NjQ3NjY3Njc2Njc2NTY2NzY2NzY2NzY0NzY2NzY0NTQmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyY2NwUFBAMLBwQECQIIAQIECAMIBhAEDAYGAQEEAQcHAgMBAQYBAQUBAQMEAgIEAgEEAgMDAgEBAgEBAQEBAgEBAQICAQMCAgUJAgIBAQEEAQECBgICAQICAQIEAgECBgICBAEFAQMDBwIHBwQFAgICAQIEBgMKEgUGCwcCCAQFAgMGAgsGAgMBBAICAgEHAQYDAgUFAgICAgIIAgIEAwIDAQEBAQIBAQgCAQICAQEBAgMCAQIBAgEDAQYDBggGCAMBBgICAgQCBQUEAgQCBxICAQMBAxACBAMLBQMFCQQJAQEFCQUJCQ4KEAoJAwIFBAENDwgHBAIJAQIGBAIIBwsGBA0KBgMIAQwSCAoFCA0HCRIICQUEBwMOBwUGCAwDAgwIBBATCQIGAwIGAwkKBAUIBQIGAwMHAwgBAgQIBAUIBQUKBQUMBQsRBwUEAwMFAgYEAgYBAQECAgkLBQgEBAgCEhMIBwMEAgIGAgoEAgkHBBARBQwFBwQKEQgJHAoGCwgJEgkFCAQIFwcWLRMHDggIDwgHDwcEBgMEBwIIDAUMGAoKBAIGBwMEAwMFCAUDBgIKDQcFCgUAAQAfASYB/QLqAU4AAAEGBgcGBgcGBgcGBgcGBgcGBhcWNjc2NDc2Mjc3NjY3NDY3NjY3NjY3NjY3Njc2NjcyFhcWFhcWFhcWFBcWFBcWFhcWFBcWFAcGJiMmBgcGBgcGBgcGBgcGBgcGFxYWFxYWFxYXFhUWFxYWFzYWFxYUFxY2FxYWFxYWFxYGJwYGBwYGBwYGBwYGBwYiBwYmBwYGJyYmJyYmJyYnJiYnJiYnJjQnJicGBgcGBgcGBgcGBgcGBgcGFAcGBgcGBgcGBhUGBicmJicmJicmJicmIicmIicmJjc0Njc2NDc2Njc2Njc2Njc2Njc2Njc2NzY2NzYnJgYHBiIHBiYjBgYHBgYHBiIHBgYHBgYnJjYnJiYnNiY1NjY3NCY3NjY1NjY3NhYXFhYXFhYXFhYXFhYXFhYXFhY3Njc0JicmNCcmJicmJyYmJzY2NzY2NzYyNxYWAWABCQUCBQIDBAIEAQUFBQEHBQkFBQIHAgUFBAwCBAUGAgkFAgwKBQIFAwoMAwEFBAUEBQMDAQgDBAEFAwIDAgICBAIEDAcJGAsFCwUIDgcDCQUMFQoSCgUBAgIJAgYCCgYFBQoEBAQCCQIIAwEEBAINCQQDAwUCBQMDBQIECAUEBgIFAQEFBAMKBgUFBAMDBgIJCgQKAgMEAgkBBw4FBQICAwIEAQEBAwEEAwIGAQECAQEDAQIDCgwFCwYFCQsGAwUDBAgFBQYCDAQBDAUHAQkHBAQHBQYFAwYEAgkEAgQIDAQDDgYFDAYEBgMNBgQECQUGDAcNCAMIDwgHDQgBBAEBAgEBAQEDAQEBAQQDAwUECQYMBwULBAIFDwYLDAUHFAcGEwUFAg8DAQECBwQEBAIGAgYTCwcNCAsnDg0RAuMJEgkECAUIBgQKEwoKDwsREwcCBgIFAgIEBQkCBgEDAwIHAgILCgUCBAESDAQEAQoFBggCBwsHCAQCCgcDAgMFAwYECAQEAwMBAwICAgECAgICAQIFBwgOEAYBAQIHAgUEBwEFAwQGBQEFAgMCAQQBAQMCAgMFAgUMAQMCAgIHAgQHBQQDAgcCCQEDBwYBBQ0HBgsGHBYGCgYCBQILBgMMBQIIBQQHBAQQBAIFAwcHBAsIBQQKBAULBQcEBggDAwcDBQIKAwIDAQICAwIKAgMGBQMHAwEGBwIEBwIFAgIGAgIIAwIEBggEAxEJAgEBAQIEAQEBAQEBAQQBAgYCAgcCBxILBQoFBwICCBAIAwYCBgkFAgkCAQUCBwQCAwECAwQDBQQCAgQCAgMCAwoUGQ4FBwQMFQsMBgUQCAYBAgIFAgMBAQEAAAAAAQAJAFIBywIMAMAAABMWNjc2Njc2Njc2MzYyNzY2FxYGFQYWFRQGFwYmJwYmIyIGIyImJyIGIyImIwYmIyIGIwYmBwYUFxYUFRYWFxYUFxYWFxYWFwYmBwYGJzY2NzU0Njc2NDU2NicmBiMiIgcGBgcGIgcGBgcmNicmJicmJjc2FhcWNhcWFhcyFhcyFhcWNhcyMhcWNjM2Jic0Nic0JjU0NjUmNicmJicmJzY2NzY2MzYWNxYUBxQGBxYGFRQGBwYGBxQHBgYHBhQHFAb/BhMHEyQUBgkFCgsHCwUIDwgCBAECAQEQEwsMDAYFCggFCgUCCwEKAgIJBgUCBwQFCwUCAQEBAgEBAQECAQMJAwcPCAsfCwEGAQEBAQEEAhY0FwkRCAMGAwQHAwgPCAQBAQUBAQECAwUIBQULBw0OBwUMBQoGAwULBwUNBQcUCAIBAQEBAgEBAQEEAQICAQkeCwkCAgMGAgcCBAEBAQEBAgIBAQEBAQMBAQFMAgMBAwEEAgIBAwEBAgYCBg0HBQgGBBMEBAIBAQIBAQEBAQMBAgECAhIjFAULBQMGAwMHAwcHBw0XDAQBAQEHBRUTCQ8IEAgIDggQIRICCAIBAgECAQIHAgUKBQ8aBwsHAgIEAQEBAQECAgEBAgEBAQEBAQMIDwcCBgUEBgMDBQMJFQgSEQkPEgQDAgECAQECCA8EBQgFBAQDCAwIBQsFCAQFCwYPDAUFCwABABP/twCSAF8AOAAAFzY2NzY0NzYmNyYGIiYnJiYnJiYnJiY3NjY3NjY3NjYXFhcWFhcWFgcGFAcUBgcGBgcGBgcGBiMGQgQOCAYBBAIBBxEQDwQFBAMCAQICBQEFBQQIBAIFEgsOEgkLBQQDAQEBAwECAwIEFgwCBwIOMwYFAgcCAQcLBwECAwYCBAUCAwUEEAkLDAIDBAIDAwEBCgUMCwgSDwULBAIIBAcIBQkPBQECAQABAAkBGAGlAWQAXQAAARYUFRQWBwYjBiYnIgYjJiYnJgYjIiYjIgYjJiMmBiMjBgYnJgYjJgYHBgYHIiYjIgYjBicmJicmJjc2NjMWNhcWFjMyNjMyFjMyNjMyFjc2NjcyNjcyNjM2FjM2NgGcCAECBQgHCwUFCwYMFw0FCAUDBwICCAILAQcIAw0NDAgNDAcQFAoGDAYECAQEBwUXFQIBAQEDAgMEBQsXDQwWDQUJBQsTCgUKBhIoFAoRCAcPBggSBggBAgoOAWQNGwgFCQMEAQQBAgEEAQECAQEBAQMBAQEBBAECAQECAQECAgIGDQcFGAUBBQQDAQEEAQIBAwIBAgEBAQICAgMCAAAAAQAR//kAeQBhACwAADc2FhcWFhcWFhcWBhUUBwYGBwYGBwYGBwYnJiYnJiYnJiY3NjY3NjYzNjY3NkcCEwQFBgUDBAEBAQMCAQICBwMJBwQJDAIGAwUHBAYJCAEEAgkBAQIIAwdfAgUBAgYGBgYDAg4DBwUDBwICBwIFBgICAgEFAgQCBQocDwMFAwcEAQEBAwAAAAEAAf/3ASEC8ADAAAAXBiciBgcGIgciBic2Njc2NDc2NzY2NzY0NzY0NzY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NiY3NiY3NjU2Njc2NDc2Njc2NzY2NzY2NzY0NzY1NjY1NjQ3NjQ3MjU2MjM2NhcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGFAcGBgcGFAcGBgcGBgcGFQYGBwYGBwYGRQgFBAUDAhUDBQgEAgUBAgIBBAIEAgICAwIGAQICAQUMBwcPBQMCAQICAgMDAQIBAggHBAMIAwIDAgEBAQMBAQUCBQIBAQEDAQECAQICAgECBAEEAwECAQQCCwYWBAUPBAECAQMIBAQBAgIDAgMCAQMGAgIGAgQDAgIFAgIFAgIEAgIDAgIBAgEDAgIDAgIEAgIDAQMCAgUDBAIDAgQBAQMCAwEEAwICAwIEAgMCAgQCAgQCBAMCAQEBAQQMBwUFCQUICQUHBAULBQYFAw8HCAcEFCYSEyMUDAUCBQoFCgwGBgoFGBsODhQJCAgEAwYDBgQCCwcIEwgEBwMCBgMNBAUIBQQJBQcFAgkECAICCwQCCQkEAQMBAQYKBQMKEwgIBwQFCQUNBAILEwoHDwgPCAUIDggHDwgIDgkGDAUFCwcECgUHDwcGDQcFCwMKBwMODwcFDgULBgMFCwUKBwQLDAYGDQcMAgcPBwYNCAoVAAAAAAIAKP/lAkcC+QD8AiUAAAEWFhcXFjIXFhYXFjMWFhcWFhcWFxYWFxYWFxYWFxYWFxYWFxYWFxYWFxYUFxYXFhYVFBQHBhQHBgYHBwYGBwYGBwcGBgcGBgcGBgcGBwYWBwYGBwYHBhUGBgcGBgciBgcGBwYHBgYHBiIHBiYnJiYnJiYnJiYnJiYnJiYnJicmJicmJyY2JyYmJyYnJjYnJjQnJiY1JzQ0JyY0JyYmJzQnJicnJiYnJjY3NDQ3NzY2NzY2NzY2NzY0NyY2NzY0NzY2NzY3NjY3NjY3NjY3NjY3Njc2Njc2Njc2Mjc2NzY3NjY3NjY3NjY3NjY3NjY3NjY3NjYXFjYXFhYXFhYHBgYHBgcGBgcGIwYGBwYUBwYHBjEGBgcGFgcGBgcGBgcGBgcGBgcGBgcGBgcUFAcGBhcUFhUWBhcWFhcWFBcWFBcXFhYXFgYXFhQXFhYXFhYXFxYWFxYWFxYWNzYWNzY2NzYyNzYyNzY2NzY2NzY2NzYzNjY3NjY3NjY3NjQ3NjU2Njc2Njc2Jjc2NjcmNyY2NTQmNzY2NyYmJyYmJzQ2NTYnJiYnNCYnJicmJicmNCcmJyY0JycmJicGBgcGBgcGBgcGBgcGFgcGFxYWFxYWFxYWFxYyNzY2NzYiNzY2NzYmJyY2JyYGBwYGIzYnNjY3NhY3NjM2FhcWFxYWBwYGBwYWBwYGBwYHIiYHBiYnJjQjJjYnJiYnJjUmJicmNjU0JjU0Jjc2JjcBgQoHBQ4JBQIJBAIJAQYGAgURBQMEBAcEAgQBBQEBAwYDBAICAgICAgICAgEFAQECAwIBBQEBBgIBAQIBAggFAgIDBAIKCgUEAgYBAQMHAgQEBgoKBQQHAgMGAgIIDwYLHA4PCwYPDwYMDgcHBgIJAwIIAwIJBgMPDQUMBQoKBgEBBwQDAQIFAgEDAQECAwIEAQECAgIDAgEBAgEBAwEBAwIBAgIBAgIDAgEEAgUBAQICAwIEAgMFBAUHBQMHBQIGAgQDAgYDAgUCBgMCBwgMBAMGAwMFBAkBAgMGAwMFAwYLBgYZCgkHAgQHBAQHXQwIAwgCBgUCBgQECwIEAgQCBgUGAgUBAQUJAwICAgIFAgIDAgICAgECAQECAwICAQECAQIBAQIFAQYECAMFAQEHAgkGBAIFAwgGBwMIBwMNDwQIBgINCAIJAwIHAwIHBAIKBAIIEAgGAwQCAQIFAgYFAgYBCAQEAgYJAQEBAQECAQEBAQMDAQIDAQECAQQIAQECAgIBAQEBBhACAgIGAQQDBgIWCxQMCQIDCQUDBwQBBQMBAQEBAgMGBAIIAwMJBQYNCgQEBQUJAQEDAQICAwICAQINGAgCCAUDAwMFBgIJAwwFBgsGCgUDBQECBgIHAQELFAcIBgMGAggFBAkBCAEBBwUCBQcDAQECAgEBBAICAuMHBQIKBwIFAwEGBAMCBAkFBAgFCQUDBQILBAIHDggMBQMGEggIEwkKEwoUEQsTChQjEwcIBA8JBAsDBwMDBgMQCgQDBwsFEBQKCAUHAgECBQQGBgcEDQQECAUEAwICBAcDBQcEBgECBQICBwMFAgIHAgEHBAEHBwMNCAgMBwsPBQMCCA4IAwgMBgMKBQMJAgEMAgcCCAUCBQ4IBgoJBhQLDAYLFQoGCgUSBQkFAwYDBA0GBAgDBQcDBQUEAwUFCAQHCwQEDQUFDQUCBQIGAwIHBAIGAgYBBwYKAwIEAgIDAgQCAQICAgIEAgMGAwIFAwMBAQIFAwICQwcIAwcDCgQDCAkJBQMFAgkCDAYMBQoDAQkSCwUHBQQIBQcPCAgRCAQGBAUIBRU2GgcPCAkSCAMFAwIGAwoCARAHEgUIAQIGBAINBgQEBQMIBQcCBwEBBgIBBAICBwECBAEHAQYEAggBAgcNCAcJAQEDBwIOBwUGBgIMAQ4MAg4VCwUKBQcLBgoBEBYKAgUEBQgFCAkBDAkGAgYDEhIQDAYHDQctIQQFAwgEAggDBQMCEwQNAgEBAgQEAgkEAQwEAgQIBRIKDgsDCQECCAICAwIBBwMJAQMCBQYFBQMGAgcMCgUBCg0ECwMCAQIIAQYBDQ0JFg0MCAIHAgEHBwIGAgEBAQEEBQIGAQIHBgINAQ4HBQQGBQMHAwwPBQwKBQAB//f/7AFoAvQBDAAAEwYWBwYVBhQHFAYVFhYVFAYHFAYVBhQVFBYVFAYVFBYVBgYVFBYHBhUGFhUUFhUUBhcGBjMGBgcGFxQWFRYUFxYGFxYWFxYWFxYWFxYWFxY2FxYWFxYWFxYWFwYmBwYGIyImByIGIyImByIGJyImIyYGJyYmJzQ2NzYzNjY3Njc2NjM2Njc2Njc2NjcmNjU2JjU2Jjc2Jjc2JjU0NjU2JjU0NjUmJjUmNDUmJicmJjc0Ni8CJjY1NCYnJiYnJjYnJyYmNzQiJzU1NiY1BgYHBgcGBgcGBgcGBiMiBiciJicmJyY2JzY0NxY3MjY3NjY3NjY3NjY3NjY3NjY3NiY3NhY3MjYzNjcWNjc2Fu4CAwEHAgEBAQICAQECAQEBAQQCAgIBAgEDBQEDAgEFAQICAgECBQECBwgGBwcCAgcCCAcEAwUBCRAHBAcEAwkBCQkFBAwIBg0GDBUPFCcTDhoMCBMLAgkFBQcDBwMLBgMIBAwCCQIBBQQCCAQCBgYCAQYBAQQBAgMBAQIBAgEBAgEDAQEBAQEDAQEBAgIEAwMBAgECAQIBAgECAQEBAgMIAQEKBAgUCwYMBgoIBQMHAgkCAgQBAgECAQMRDQgRCA0GBAkGBAIDAQMEAwIJAgICAwcPCQQIBAYJCREFAgYC8wQGBAwIChgMEQsFBQoFCREICBIIFSANCA0HBAUFAwYECBEJCA4ICAQECwYFCwULEwoJAg4gDAsMDAQCBwwFDg0FFBMJCQYCAgECBgQCBAEEAQcDAgMCAgEFBwEBAQMCAQICAQMBAwECAQECBAUFAgYDAwIKAQQDAwIBBwQDCQUDAgYCAwUDERAHCgQECwYDBQgFBQgFCREJBQgFBQkFBQoFBgwKAgQFCxILBAIGEAgOGwsIAgIRBQoICQUlDA0fDgUCAQoGBwsDAgMBAQQBAgcDBgQCCgQDCgIDAQUCBAQCBgcFAQcCAwYCCRAKBgoFAQIBAQMBAgUCAQEAAAAAAQAJ/+QCGQMEAoQAADcWNhcWFjMyNjMyFjM2NzIWMzY2FzYyMzI2MzY3NhYzNjY3NjY3Njc2Njc2Njc2NDc2Njc2Njc2NjU2Jjc0NjcWBhUWFhcWFhcWBhUWBhcWFhUGFhUUFhUUBhcWFhUWFgcmJicmJyYnJiYnJiInIiYnIgYnJiYHBiIHBgYHBgYHBgYHBgYHBgYnNiY1JjY3NjY3NjY3NjY3NjI1NjY3NjY3NjQ3NjY3NjY3NjQ3NjY3Njc2Njc2MTY2NzY2NzY2NzY2NzY2NzY3NjY3NjY3NjY3NjY3NjY3NiY3Njc2Njc2Njc2NTY2NzY2JyYmJyYmJyYmJyYmJyYmJyYGBwYGBwYmBwYGBwYiBwYjBiYHBwYiBwYGBwYGBwYHBwYGBwYGBwYGBwYUBwYGFxYUFxYWFxYWFxYWFzIWNzI2NxY3MjY3NjY3NjM2Njc2NzY2NzYnNCYnJiYnJgYnJiYjBgcGBgcGFhcWNjM2NhcUBgcGBwYGBwYmNzY2NzY3NjY3NjY3NjM3FjYzFhYXFhYXFhYXBhYVFhYXFhcWFgcUBgcGBgcGBwYHBgYHBgYHBgcGBgcGIgcGBicmJicmJyYmJyYmJyYmJyY2JyY0JyYmJyYmNzc2NDc2JjU2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2NzY2NzY2NzY3NjM2Njc2Mjc2NjM2Fjc2Fjc2NhcWFjMWFhcWNhcWFhcWFhcWFhcWIhcWFhcWFxYWFxYWFxYWFxQWBwYWBwYWBwYUBwYGFQYWBwYGBwYHBgYHBiYVBiMGMgcGBgcGBwYGBwYxBgYHBgYHBgYHBgYHBiMGBgcGBgcGBgcUBgcGBgcWBgcUFhcWBhcGFsIFDAYDBgQFDAYIDwgIBQMHBAQIBQMTBQUKBgcECQQCCwcDBAYCBgYDBQMJBwIBAQEBAQIDAwMEAQIBAgELAgECAgICAgIBBQICAgIBAQEBAQEDAgECCQ0HDQ8HCQUYCBg1GAUJBQUIBAgLBw8NCAQFBQobDAkVCQMGBAUMBgIFAQEBAQQEAgICAgMDBAICBAICAgIEAQIEAgMEAggBBwQFCAICCQQJBgICDgwGAgYCCRUJAwYDBwECCQMDBQIDBwICAQIECAMIAQEEAwIBAgUCAgMEBAICAQICCwYFCgUGCwcGDAYLBAIJDwgJEQgFBgIEBgQDCAMJBQUFAgsLAwEFCQULAwIGBAoEAwIHAwICAwIFAQIBAgEBAgcEBQQCDhQNBgwGBQoFDQMIFAoFCgUHAwYGAwYDAwcCAgICAwIFBAMOCAULBw0FBQICAgICDA0IBAoFCAQHBggOCBMPAgEFAgEEAQEDAgMCCAgRAQcDBAgEBQcFCA0IAQIEBgMDAgMCAQMBAQEBDAEHBgUKBQoEAgYIBQgJBw8IFzkVAwgEBwIFDgYDBQIBAQIHAQEEAgIBAQMGAQEDAQQBAgQCAwECAgMBAwMCAQUCAgICAgYCBgMDAgcDBgMJAwULDQgFBQ8CCQQCBQkFBQcEBgsGEiAOBhMIAwUEDgkEBQwFDAMCCgICCBAFBQECAwgCBQIEBAIBAgEBAQEDAgIDAgMBAQUBAgQEAQICBQIHAgQDAgcCCQEIAQECBwQJAwMIAwsFDQYDBQMJAQIOEAgJAxIcDgYMBgUKBgEBAQMBAQEBAwICAQMDBjcCAgEBAgIBAgEBAQMCAQEBAQMBBQIBAgECBAcDBQQPDAcCBgMCBwIIEwgLCgMDCAMIDgsCCAUECAUIEQkKAgEQDwgKBwMRHggFCQUGCwUDBwMNEwkBBAMGAgUFAwMBAwMDAQEBAQECAwIBAQEDCQICAwIBAgECAgILFwwLGgsRIwsDBAMGDAYLAQYJBAMFBQgGAwUGBAQHAgsBAgkGBAQDAgMDCQQDAgkKBQMDAwkQCAIGAwgBAwcDAwcDAwUEAgYDBQcFCgQCBwQECQULCQUIAxEgFQoWCQcJBQUIBQIIAwMIAgIBAQECAgIEAgQBAQEDAQICBAQCAggGAQIFAggCAgQHCgYCAg0HCQUKBQ0IAwgKCgQIAwYNCAwLBREYCQEBAgEBAQMDAgUCBQYEAwcDAwsGCAoJEwoECgICAQECAwIDAwgFEhMJDQkDBQIFBQIEBAUJAQIiFQcOBwsCBQIEAgUECgUCAgEGAgIFAgUMAwQFAwQKBQgCBQUICQUDAwYCCwIGBwQIBQcBAQQGBAIBAgICBAYFBwUKBAcNCAQFAgIHAgYCAgUHAwMGAgsRDAsRDAUHAgIECwUIAwQDBwIIBgQDAwICBgICAwIGBQICBgIGAgQBAQUBAgUBAwIBAQEBAQMCAgEFAQEBAQEBAgEDAQIBAQUDAggCAgcKBggCAw8FBAcGCwgFCgUFDwkIDAoGAwMFBQIMBQIFCgUCBgIEBQMLCgEIAwkBAQ0IAQIKBAUDAgUCBwcHBgIFAgUCAQkKBggOFAoGDQcIDggFCQUFBwQHBwUMFQsMCAMKDwAAAAABABT/2wIGAycCiAAAExYWFxYWFxYWFxYWFxY2NzY3NjY3NjY3NjY3NjU2Mjc2Njc2NjMyNjMyFjcWMhcWMxYWFxYWFxYWFxY2FxYWFxYWFxYWFxYWFxYWFxYWFRQWFRYHFAYVFBYVBhYHBgYHBwYGBwYGBwYGBwYGBxYWFxYXFhcWFhcWFhcWFxYWFxYUFxYUFxYXFhQXFgYVFgYHBhUGBgcGBgcGBwYGBwYGBwYGBwYUBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYiBwYGBwYGBwYnBiYnJiMmIyYmJyYmJyYmNSYmIyYmJycmJicmJicmNjUmJjU0NjU0JjUmNDc0Jjc0NDc2Fjc2NhcWBhUUFhUWFBcWBhcWFhcWFhcWMhcWFhcWMhcWFhcWFhcWFhcWFhc2Njc2Njc2Njc2Njc2Njc2Njc2Jjc2Njc2MzY2NzY2NzYmNzY2NzY2NzQ2NTY0NSYmJyY0JyYmJyYnJiYnJicmIicmJiciJicmJicmJgcGBgcGBhcWFhcyFhcWFjc2Njc2NjU2JicmJjc2FxYWFxYXFhYXFgYHBgYjIiYnJiInJiInJiYnJiY3NjY3NjY3NjY3NjY3JiYnJjYnJjY1NjY3NiY3NDY3NjY3NjY3NjYzFhYXFhYXFhYXBgYHBhYHBgYnJiInJjU2Fhc2Njc2JicmBgcGBgcGBhUUFxY3MxY3MjY3NjY3NjY3Njc2Njc2Njc2NjU0NDc1NDYnJiYnJiYnJiYnJiYnJiYnJiInJgYHBiIHBgYnBgYHBgYHBgYHBgYHBgYHBgYHFAYHBwYGBwYGBwYGBwYGBwYnNiY3JjYnNCY1JjYnJicmNicmNCcmNCcmJjUmNCcmJjY2NTQ2NTY2NzQ0Ny4HAgIBAwECAgMHCQYICQgJBgoGBQMEBQYEAwoNBwMDBwIGCAgEBgMJFAoECAUGBgwGAwUJBQQMBQgFAgUHAwsUCwgFBAMIAgEGAQEBAQIBAgEBAQUBBAIGAwoEBQgFCw4GBQgDAgcDBwYHCAsEAwgFBAQHAggCAQEEAgMBBQEDAgIBAgICAQICAgIDBQIEAgMGAgcEAgoBBwICAwgDCgICAgcDCxkNBQwFAwUDAgcDBgsGChAJDRQKEQMKAwgFBQgCCwQCCQYKCQoFEQUKAQYCAgMCAwEBBAECAgICAgILBQIFCAMBAgIBAgQBAQEDAgMFAwcEAgoNBQcEAgUKBAMEAwwGBQUMBgUMBwYPBQoMBQoOBgkJBAIFAwsBAQkEAgkCAwgEAwUBAgECAQECAgUCAgIBBAEBAgIHBAoCBwECDwkEBQQDBgUIBgUDBwMMGQ8HCQgIDQIBBQMCBgMFEwgEBwMJAQIJBQYLAgsEBQcCBgMDCQIDAQgQFgsGEAgCBwICCwMICAUCBwEBBAICBQIDBwIDBQIBCQICAQIEAgIBAQQBBAQBBAsDCAwICA4ICAYFBAkCAwcCAQUCAgEDBRYKCgQBCAoQBgMKAQIGAggYCwkPAwUEExAUHAYHBQwFAgcDBAgFDAMIAwIIBAQBAQEFBAIFAwICBAoFAgoMBRAJBQsHAwoGBQQGAwULBgIHBQkRCwQHBAoEAgoLBgUKCAIBBgQEAgICAgIDAgIFAgsCAQEBAQIBAgICAQECAQECAwEBAQMBAgIDAgECAQECAQEDJwIRCAQGBAcMBw0IAgQEBQYCBwUDAwMCAgECBAEDAgECAQIBAQICAwIDAwIBAgECAgUCBQECAgcDAw8GBQgEAwUDBQUCBhQJDAgEDQUFBwUDBgMYHQsDBQIWCAwIAgcECQ8GBAcFAwQBBAECBAYDAwgGAgoLBAkFAgYDCQYFCQQOCAQJAwISEw0IBgcKBQQHBgsCBgICBgYDCgICBgIBAgICAgQCBQQBAQEBBQwFAgICAQMBAQICAgECBQIDAgECBQIHBQECCAICCQEDAQwGBwcMBgYCBRAHCwYDCA4LBQgEAwcDBgsFAwYCBgsGBQEBAQMDDxwPBw0IBQwFCQcEAgYDAgQCBgEJBgUGAgUEAgIFAgQDAgIEAgMBAQIDAwQCAgUEAgQBAgECAgQBAQQDAgcFCggEBgMDBgMECAUFDgkLAwIIEQcIEAgGCgUFCgQIAQcEAQYFAgIBAQICAQEBAQIEBAIGAgcZDgUIBQMCAQECAgQCBgEBBQsCBQEHBwIBCQIFAwIHBQgcBgEFAwIBAQICBA4HDRIMBQgEAwYDAwYEAwcCBQgFBgIDCA8FCAMCEQwFAgkBBQYFAgcCAgYBBQMCBAIEBwMICQQECAUGCAEFAQQECQICAgQFBQYGBQEEBgcECBkFFwkKAQICBAIBBQIDCAMLAwsEAgwSDgUDBgULBwwOKREIEAgHBwQHAgIHBgQGBAMHAQUCAQEBAQIBAgEBBAkDBAQCBgECBwsFDBcKBQgDDAQGBAUJBQUJBQUSBQkJCgIFCwICAwgCCxkLBAoGDQQFBQIFCgYFBgIKBwMFEhMTBgQHBQUGAggBAgAAAAL/6v/0AgwC+wF2AewAAAEWBgcGBgcGBgcUFhUUBgcGFhUGBgcUFAcGFhUGFRYWFRQGBxQUBwYWBzY2NzI3NjY3NzY2NzY2NzY2NzY2NzY3NjY3JhcWBgcGFBUGFAcWBhUGBgcUBwYGBwYGBwYWFRQGFwYGByYmJyYmJyYmJyYmJyY0JyYnJiYnJgYnBhYVFBYHFRQGFRQGFxYWFxYVFhYXFjIXFjYXFhYXFhYXMhcWIhciBgciIgciBiMGJiMGBiMiJgciBiMGJiMGBgcmBiMmBgcGIgcGJyY+Aic2NzY2NzY2NzY0NzY2NzYmNzY2NTYmNTY2NSY2JyYiJyYjIiYjIgYnIiIHBgYjBgYHIjEiBiMGBgciIgcGBgcmJicmJicmIjc0NzY2NzY2NzY2NzY2NTY3NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzYxNjE2NzY2NzY3NjY3NjYnNjY3NjY3NjY3NjY3Njc3NjY3NjY3NjQ3FhYXFjIXFhYXFjIXFjYzFjM2AzYmNTY2NSY2NTY3NjY3JjQ3NjY3NicmJicmJic0Jic0JyYmJyY2JwYiBwYiBwcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGFAcGBgcHBhYHBhQHBhYHBgYHBgcGBgcGBgcWMhc2MjM2FhcyNjMyNjMyFjcmNgGXAwMBAwECAQIBAQIBAQEBAQEBAQEEAQICAQECAgIPCwUIAwgHAggEBAICCAIDAQIFBAIDAgEBAgEKBAUBAQECAQICAgEBAQQBAgECAQEHBQEFAgUDAgYBAgIDAgIBAQMCAwcDBwkGCwYCAQECAQICAgcEBwQHBAkCAQcBAgwKAw8WCwcDAQgBHjUXBgsFAwYCBAcFAgYDBQkFBQoFBQsFAwUDDAQCDgsGAwcDCwoBAgMDAQQIChgMBg4FBgEHBQIBAQEBAQEBAgEBAgELFgsKAQsZCAwZDAgTCQgLAgoBAgwDBQMDBwMDBwILFQsEAwICBAIDBgIGCAUCBwcEBQECAgQGBgkGCwUFCAQGAwICAwIDAgICBgIFBQIGBwIEAgECBQMEBgUBAgEGBgQCBQMDBgMCBAMKAQgGAgECAgQBAgsHBQsFAgUJBAcPCgoBAgkCDFYBAQEEAgIBBQEBAgEBAQMBAgIBAgEBAgEDAgEFAgECAQUIAQEFAQEHCQUDAwUCBwICBQUECQQCAwgDAwUCCAYDAwEHBgIEBwEBBAEGAQEEBgIIBgUDAQQFAgwSCwMGAwoOBg0lERAMBgsVCgECAuYGDQYPHQ4HDQcFCgUJEgsFBwUGDgcIDwgHAQMSBQMHAwgRCAgTCBUpFAECAQEEBAIJAgYEBQsGBwcDCgwFCgQDBgILAREOCAUJBQcRBgwCAhEOCAoEAwcEBxcLCAYFChMLBAIEAQkFBgYCAwYCCQECBQQCCAMIBgIBAgIIDwgFDAgUDQ8HCA8FBgUECQMDBQMJAQUBAQcBBAILBAUFBQQCAQIBAQECAQECAQEBAQEBAgECAQEBAwMEAwMDBAEGCA4IBQwIBgMCCggLCA0JCxMJBQwFCwEBDhQJAwECAgIBAgEBAgEBAgEBAQECCgIGDwgEBgQJAwYGCgQCCggFBgICAgcFAgUJEQwIBw4FCgICAgYCBQYCBAcFDQYECgoEBgMFAgoHBQ0FBQEFBQwGAwkFBQoFBAcEDAwIDAECAwcCBQkDAQYCAgECBAECAQMCAQT+YwQJBAUKBQgCARwXAwwBBwgFCBAIFhYDBwMDBgMNGwkKBA0FAwoUCAgBCQIKCwgEBAYDDAQCCQkFDQsFCA0IBQkFCgwGBgMCDQkFCwsDAgQIAgkBAQQGBA8GCwICBg0GAgICAgEBAwEDAgUIAAEAMv/MAhsDAQJSAAABFgYVBgYVFAcWBgcGFgcGBgcGFAcGBgcGFAcGFAcGBgcGFgcGBgcmNic0JyYmJyY2JzQmJyYmJyYmJyYmJyYmJyYmJyYmJyYmIwYGBwYmByIGIyImIwYGBwYGBwYGBwYUFxQGFRQWFRQGFQYXFBYVBhYVFAYHBhQHBhYVFBYVFgYXNjY3NjY3Njc2Njc2Njc2NzY2NzYyNzY2NzYWNzI3NhYzFjIXFhYXFhYXFhYXFhQXFhYXFhQXFhYXFhYXFhQXFgYXFhYHFBQVFhYVBhYVBhQHBhQHBgYHBgYHBjEGBgcGBgcGBgcGBgcGBgcGBwYGBwYGBwYGBwYGBwYHBgYHBgYHBgYHBgYHBgYjIiYjJiYnJiYnJiYnJicmJicmJicGBgcGBgcGFhUGBgcGByY2NSYmJzQ3NDY3NjQ3NDY1NiY1NjY3NiY3NDY3NDY3NjQ3FgYVFBcWFhcWFhcWFBcWFhcWFhcWMhcWFhcWFhcWFhcWMhcWNjMyFjM2Njc2Njc2NzYzNjY/AjY2NzY2NzY3NjY3NjY3NjY1NjQ3NDQnJjYnJjQnJiYnJiYnJiYnJiYnJiYnJiYjIgYHBgYHBgYHBgYHBgYHBgYHBiIHBgYHBgYHBgYHBgYHJiYnJiciBwYGBwYGJyY2NzYmNzY2NzY2NzY0NzQ2NSY2NTQmNzQ2NTQmNTU0NCcmJjc1NDY1NjQ3NhYzFhcWFjM2FjMyNhcWMzI2MzIWMzYUMzI2MzYWMzc2NjMWNjM3FjYzFjYzNjY3NhY3NjY3NjI3MjYzNjI3NhYCBQUDBAMCAQIBAQEBAQMBAQEBAwECAQIBAQIBAQEBAQMHBAEBAgEBAgUCAgQCAgECBgICAgICBAcIBwsJBQoICBYJBQoFDRYLBAYECQMBBQcFBw0JBg0IBAEBAQEBAQEBBAMBAQEEAwEBAQMEAwIJBgIHAwUKAgIFAw0DCgsFAwYDAwcCBhEGDAIMCQUMEggDBgUFCQUIEQwKAgkBAQoCBQMEAQQCAwEFAQICBgEBBAEEAQEGAgQCAgQDAQYIBgMFAgEGAgIDBgMCBwQIBgkEBAYHBQULBgYNBgYGAwUCCwYFCAwGDw4IBg8FAwcDCwgHBAUCAwUFAQYDBAMDCAkFBQQCAgIDAQUEAgYDBAEBAQECAQECAgMBAQECAQEBAQIBAQEBBggEAgMGAgECAQIEAQICAgUCBQIBBQYCCQwIBQoFBAgCAwgGBQkFBw8ICBEJCgEGBQQLBQoNAwUCBgoFBgEBAwIECwQEAwEBAgMCAQQBAgYDAwcFBQkFCAEBCAcFBQcHBQwGBg0FBQgFBAkEAgcCCgIBBQQCCwgEAwQCAgQCCQUECA8ICBESCwkHAwQPAwYFAQEBAQEBAQEBAQIBAgEBAgECBgEBAQEBAQMEBQMHCwsFAgUGAwUJCA4QBAgEBAYDCwIDBwQDBgMLCQUCCQcDDQIHAgoKCAoGBQQHBBYZCwUJBAQGBAgQBwcFAwEDBgIRGg4ECAwGAwMHBAYLBgcOBwUKBQgNBwcNBwIFBAMGAwQNAQULBgQIBQsHDwsFBgoFBQsFDwgGBQcGBgMFBAUCAQICAgIBAQEBAQEBAQEDAgIBAgIDAhEXDAcMBQUKBQQHAwwNBQsGDAcEBQoFAgYDDQwFBQcFCxMKAQYDBwUDBQMCAwEBAgIFAQQEAgEBAQIBAQEBAQEDAQQCAwEBAQEFCgIHAgEGAgEGAwIDBwIFDAYIBAIKCQQHCQoECQUIDgkPCwYHEgUNCgYKBAIHBgIKCwMCBgEBAwMCAgQDAgUCBQMHAgIEAwICBwIDBQIDAgIDAQICAQMCAgYBAgECAQEBAwQBAQIIAQMGBQgHBgoCAwkFBQcFBgMCDhEJBgEDCQUFCQUWDAgNBhMSCgUJBQgNCAUNCAUIBgIKBQMFAwUMAgURCAcIBQwIAwcEBwoEAQcCBAYECgEHBQQEDQMCAQEBAQICAgEEAQIBAgMBAgIDAgUGAgICBQ4IDQICBgQIDwkOBwUECgUJEggNBgQMCAQLEwoECAQDBwMDAgEFBAICBAMCAgECAgQCAgIDAgIBBwEBBQIIBwMCAwICBQIFBwICAwICAgMDAgEBAwINEAgKFgsDCQMLFAwGDQYFDAUDBwMKEgkGDQYJEAsnDQsHCxINDAMIAgkCAgIEAwEDAgEBAQIEAQIBAQIBAQICAQEBBAIDAQIBAQEBAQEFAgIBAQMCAgQBAAAAAgAf/98CNgMkAeQCTgAAARYUFQYUBxQGFQYWBwYGBxQGFRQGBwYGBxQWBwYWBxYGByYmNSY2NSYnJicmJicmJicmJicmJicmJicmJicmJyYmJyYmJyYmBwYHBgYnBgYHBgYHBgYHBgYHBgYHBgcGBgcGFQYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYHBgcGBgcUFgcGFAcGBgcGBhcWFhcWFhcWFxYWFzY2NzY2NzY0NzY3NjY3Njc2NTY2Nzc2Njc2Nic2Njc2Njc2Njc2Mjc2Njc2FjcyNjM2FjMWMhcWFhcWFhcWFhcWFhcWFhcWFhcWFhcXFgYXFhcGFhUVFBQHBhQHBhUGBgcGBgcGBgcGBwcGBwYGBwYGBwYGBwYGBwYmBwYGBwYiBwYGBwYGBwYGBwYGIyYGJyYmJyYmJyYmJyYiIyYmJyY0JyYmJyYmJyYmJyYmJyYmJyYnJiYnJjInJjUmJic2JicmJicmJicmJycmNicmNCcmJjUmNSY2JyY0NzQ2NTQmNzc2NzY2NzQ3NjY3NiY3NjY3NjY3NjY3NjY3NjQXNjc2Njc2Njc2NzI2NzY2NzY0NzY3NjY3NjY3NjY3NjY3NjY3NjI3NjMWFhcWNhcWFhcWFhcWFhcWNzY3NjY3NjU2NDc2NDc2Njc2NjcDNjY3NjY3NjY3NjY3NiY1NjY1JiYnNDYnJiYnJiYnJiYHBgYHBgYHBgYHBgYHBgYHBgcGBgcGBwYGBwYGBwYGBwYGBwYGFwYWFxYWFxYzFhYXFhYXFxY2MzY2NzY2NzY2NzY2NzY2NzY3AgcFAQEEAQECAQQCAgMBAQIBAgIBAgUBCAQEAQEBAgMCAgEFAgICAgUGAgIGAgIBAgQKBQsCBgsFAwUECBILBggDBgQCBwQCBQUFDgYIAQIEBgMJAgQHAgUDBQICAQICAwIBAQIEBQICAgICBgICAgIEAgIBAQIBAQEDAQECAQEBAQQBAgEDAgIEBgwFBQQDAwQDBAIEBQIFAwMIBgIGAgcDAgEEAwIHCAgDCQUKAgIDCAQJEQkJCQQEBwMIEQgIDwYDBwQFCAMDBAMDBwIFCAYDDQUCAQIGAgEBAwcBAgEBAgQFAwEEAQICAgEHCQYEAgIEAgICAgQGAggRCAcCAQIHBAcCAgMGBAUHBQkPCgMHAgUVBAQKBQsHAgYIBQIHAgsRCQoBCgQCCAUCAgYDAgYDCQECBgUFCQQHAQEHBQUGAgQCAgMCAgQCBQEDAQEBAQECAgEBAQEBAgIBAQMBBQIBAgICAwIEAQEBBQICAwEBAwECBQUFAwMGBAQBCAoICgIFBAIFCAQJAQ8FAwUFCQQDBQoFBAYFDgwGCwcFBw0DBQQKBwIJBAIJBAIDBQQMDQkCBQYDBAcBBQEEBAIDBAJiAwMBCAQCBwgDBggBAQEBAQEBAQEBCAkHDQcFCBAIBQ8DCQkFBQgEDAcEAwQCBwQHCQUFDAQKAgYBAQMDAgIBAQECAgUDAwYHBwUEBQkCDQUFEQkCAgsKAwcNBgYLBAMHAQgBAQYKAyQHDgcIDQcIDAUKEwkIDwgNCAYHDAUFCAUFDAQFEAcGAgECBwMIAgIGBwoFAwcEAwUDDQwEAwUDAgYCBgwFBwcDCAUCAgIEAwMDAgIFAQUEAgIGAgUGBQYDAQMEAggCAwUFBwQDBQMCBwMFBwYCBgQKDAYFCQUIDgkHDQYLEAgFAwYDAwcCDAgFBQcEBQoFDg4FBAYEBAoOHA8EDQcHDAcEBQQLBgQIBBMMBwQDCQQJCAEBCAECBQ4FAgQCBgIBAgICBQIDAQECAQIBAgEDAgICAgEEAgICAgQJAgoNCAMHBA8ICQULCgcOByEHDwcFCwUMAwkEAgoHAgkDAhAQCwYEAgQCAgYCBQYEDA4HBgEBAgUDBgECAwIDBQMEAQIBAwEBAQEGAgUBAQIJAgECCwQEAwEGAgIGAQIDBQMCBgIGAgEEBQQGBQoCBwMGDQUEBgQFDAYGEAgMBA0EBwUFDAgIAgIFCwgMCQgbDQQHBAIHBQwMDAYLBgYIBQkFBwMCAwkFAgUDBgMCBQsDCQQBCgkIBgYGEgcJAgUCBQUCBgEBBwUCAgIEAgICBgICBAIFAgMFAgMBAQECAQEJAQEIAQIDBwMKAQMBAgoFCgMIAwIIBAIDCAMFCQT9RwUCAgwIBBAQBhMfDwYMBQYMBQQGBAUJBBAPBQwGAwQGAgEBAgMDAgIGAgQIAgIFAgMEBQkECw4GDQYJAwIGCAgGDggKEwgPHAkTCAcHBgQBCgECAwECAwIBAwYCAwUCAgMBBQIBCQUAAAAAAQAzAAACTAMQAagAAAEWBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBhUGBgcGMgcGBgcGBgcGBgcGBgcGBgcGBgcGFAcGBgcGFQYUBwYGBwYUBwYGBwYGBwYGBwYGBwYUBwYHBgYHBgYHBgYHBgYVFgYXFBYHFhYXFhYXFhYXFjIXFhcWFhcWFhcWMRYWFwYGFwYmIyIGIyImIyIGIyYmIyIGBwYiIyMmIiMmBiMjIiYjIgYjBgYnJjY3NjYzNjI3NjY3NjY3Njc2Njc2NDc2NTY2NzY0NzYmNzYmNzYmNzY2JzY2NzY2NzY2Nzc2NzY2NzY2NzY2NzY2NzY3NjY3NjY3NjY1NjY3NjQ3NjY3NDY3NjY3NjY3NjY3NjY3NjYnJiYnJgYnJiYnBgYHBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYxBgYHBgYHBgYHBiYnJjYnJiY1JjY1NCYnJjYnJiYnJjY1NDY1NiY3NjYzFhYXFjIXFhYXFhYXFhYXFhYXFhYzFjc2FjM2NzY2NzYzMjIzMjYzMhYzNhYzNjY3MhY3NjY3NjI3NhY3NjY3NjY3AkoCBAIECQQCAgICBQIDBgUIAQEHAgICAwEECQMEAwMDAwkIBAYBAQcCAgcEAgIEAgMBAgQEAgIBAgUBAwUDBQUBAwYCAwEGAQICAwECAgICAwEEAQMCAQECBgMCAgICAQMBAQIHAQQDAgIFAQQCAgIGAwUFBQoFBQMCCwUGBQIFAgMFAwQGBQMIAwMGAwMGAwYNBg0gCwsHHwgHCwULAwgGDAkFBQoFAQQCCQEBCgIBBgYCBAoFDggIAQIFAgMCBAIBAQMBAQMBAQUBAQIGAQYMBAIEBQIHBQYDAgIFAwYFAgIBAgcBAgQCAwkEAwYFBAICAQIFAQYDAggEBAIBAwYDBAYCAgQDAgYCCAoEDR8OCAsGChMLGA4ZDAwWCwUJBAUGBQULBQUCAgIEAggDAQIDBwICAgIKAQEFAQIBAgECAgECAgIBAQECAQEBAgQDAwEHCQUJAwIFBwUKCgQCBQQIBAUFDggYEAoCAgUIChYLEBEIFwgKFAoCBwIIAwIDBQMECQQHDggEBwQIAwIFCQYHEQgC8QUIBAcNBwMHAgMMBQgQCAoDAgsFAwcCAgoNBwMIBAgBARANCAoBCQgDDAkEAgcCBAcDCwUCBAYCBwICBQsGCAQHAgIFCQgGAwINCAUFBwUGCwYFBwUIBgMFBgIHAw4HBAQOBQQIBA4MBQQBBQEEAgIDAwIFAgICAgMCBAIBAwEEAgkCAwMFAQIBAwIBAgIBAQEBAwEDAQIEBAQCAgIJAQUCAQMFAwoLBwICBAcCBwQGCwUDBgMHAgIEBgIOCAQGCQUFCQcFCgIJEQgMBQcGCgYLCgUDBwQJBwUIBAcRCAkSCgoBAQUFBQcDAgkGAgoNBggBAgUNBQgJBQQIBQkUDAUEAQIGAgIGAgECAgMCAgICCAUCBQIDBwMIEgkIBQICCwMLAwYCBw4IBQoFCggCCR4PBgwFBwwFBQcEFigUBgwFDAMCDQUCBQsFCAECDwQHAgIJAwcIAQICAgQBAQEBAgMCAQECAQIBAwEBAwEBAQEBAQEDAgEBAwEBAQUBAgMCAAMAKf/tAi4C7QEzAaoCFQAAARYWFxYXFhYXFhYXFhcWFBcWFhcWFhcWFhcWBhUUFgcUBgcGBgcGBgcGFAcGBgcGBgcGBgcGBgcGBgcGBgcHBiIHBgYHBgYHBgcGBgcGIgcGJiMiBiciJiMiIicmJicmJicmJicmIicmJgc2JicnJiYnJjQnJjUmJyYnJjQnJjYnJjUmNDU2NDc2NzYmNzY2NzY2NzY0NzY2NzY3NjY3NjY3NjY3NjY3NjY3JicmJicmJicmJyYmJyYxJiYnJjUmNSYmJyYmJyYmJyYmJyY2NzY2NzY0NTY2JzY2NzY2Nzc2Njc2NzY2NzY2MxY2MzYyNzY2NzYXMhYzFjYXMhcWNhcWFhcWFhcWFhcWFhcWFhcWFhcWFhcWFBcWFhcWBhcWFgcWBgcGFAcGBgcGBg8CBgcGBhMmJicmJicmBiMmJyIGJyImIwYGBwcGBgcHBgcGIgcGBgcGBgcGBhUGFhUHFBYXFgYXFhcWFhcWMhcWFhcWFhcWFxYWNzY2NzY2NzY2NzY2NzY2NzYyNzY2NzY2FzY2NzY3NjY3NDc2JjU0NjU2NDc2NCcmJyYmAyYmJyYmByYGBwYGBwYHBgYHBiMHBgYHBgYHBwYVBgYHBgYHBwYWFxYUFxYUFxYUFxYXFhYXFhYXFhYXFhYXFjc2Njc2Mjc2Fjc2Njc2Mjc2Njc2Njc2Njc2Njc2NjUmNCcmJicmJyYnIiYBkwIJAwgDCAsEBAcECwgJAQwNBwcEAQgGAgIBAgICAQICAgUDAggCBgEBAgcDAwUCAgcDBwUECgICDQUEAggEAgkDAg0DBAkFBQsGCwECAwsHBwoFCRMIBw4IBw0ICxYIAgUEAwoFAggCCQsIAgUCCgYDAgMCAgUBAQYCAQICAwQBAgcHAgIBAgUBBwMBCgcFAwIKCAUJBgUFCwUIDwcIAgUMBgUMBwYGBQ0FCwUDAwoIBAUDAgQBAgMCAgIBAgUCAQEBBQYGAgYKBgUHBAoFCQQPBgIIAwgIBQQFAgUMBgYMBhYVBQsFER8RBQYHAgIEBQMIDwYNCQgCCAQJDAUCBAECBAIFAQEFAQEBAgICBAUEAgEBAggBCA0IDQoJBQ4fEQcMBwgMBQsIBQUIBAcEBAkEBgoEEQ0aCxIIAgYCAgQFBQIIBAMGAQMBBAEBAgIHAgsKBQQFAwkHAgsKBQ0JEgoIAwYEBgwFAwQCCwUCBwgDCAIBBQgECAQDAQYDBwQCAQIBAwICAQECBQIDAwwyEA0IBg4FBQwFBgsFCg0FCAMIAxQHDwYEBgIPCQQCAgECAQQDAgEBAQUBCAEFAQkEAwQPBwcOBwgSCQ0KBQoGBAkFCQYCBQkGBwICEhAGCgQCCAUBAgECAgMBAwUJBQkIBQYEBQF1AwMCBwMGBQICAwIHBwUBAQcOCAgBAg0LBQUVCAUPCAQHBAcLBw0HAwgGAggEAQMFAwMHAgIFAgUGAgUEAQYEAgkBAgUDAgcBAgICAgIDAgEBAQEBAwICAgECAQUBAQEEBAUDAgcHBwMHAgIPCAsCCQMGCwUHAwIMBgYJBgQFAwgGCwYCDAwGBAgFCQYCCQICDAQCAwIHBAIHAgICBgIDBAUGAQMFAgIEAgMCAgQDCAQCAgUCBwEJCwUDBQIFDAYECAUIFgkFCgUFBAEOBgUKFQoIDgULBQsHCgMCBQIFBAECAgEBAgIEAQICAwUCAwEBAQEBAgUCBQYBAwMCBw4HAgYCBA4FCAUCBg8GBw8IBQsGDBULBQoFCAwIBw4HCQgEBQkOATQFBgIGAQIDAQECAQEBAQQBBAUNBw4EAggBBQwECBAICBUIBQoHFgcNBwoRBhEDCAQCBAIDAQIEAwIHAwYBAgECAQIDAgIEAQgBAQYFAgcBAwsCBgUBBQcEBwsFDQkHBQ4FAgMGAggOBhQdCQUFCAv+jgkIAwIGBQEFAgIDAgQEAgMCBAoECgMDAwIKBwMEAwUFDQULEQ4JBg0GCwYCCwQCCgEMCQMGCQUFCQMCBAEBAQEDAgECAwEBAgYCAwEICAQIBQIKCQUFEAkTJA4KHgcMDQUKBQIFBgAAAAACABT/8gImAuMBdAKbAAA3NjY3FhYXFjMWFhcWNxYyNjYzNjIzNjY3Njc2Njc2Njc2Njc2Njc2Njc2NzY2NzY2NzY2NzY2NTY2NzY2NzY2NzY3NjY3NjU2NzYmNzY0NTQ2JwYGBwcGBgcGBgcGBgcGBgcGBwYGBwYjBiYHBgYHBgYnIiYjJgYjJiYnJiInJiYnJiInJiYnJiYnJiYnJiYnJiI1JiYnJicmJicmJjU0Njc0Jjc3NjY3NiY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3Njc2Njc2Njc2Njc2Fjc2Njc2FjMyNhcWMhcWFhcWFhcWNhcWFBcWMhcWFhcWMxYXFhYXFhYXFhYXFhYXFhYXFhQXFhcWBhcWFgcWBgcGFgcGFhUGBgcGFAcGFBUGBgcGBgcGBgcGFgcGBgcGFgcGBwYGBwYGBwYHBgcGBwYGBwYHBgYHBgcGBgcGBgcGIgcGBgcGBgcGBgcGIgcGBiMiJicmJicmJicmMSYmJyYmJyY2JzY2ASYmJyYmJyYmJyY1JiYnJiYnJicmJicmJicmBiMGJiMGBwYGIwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYVBgcGFgcWBhUWBhcUFhcWFhcWFhcWFBcWFgcWFhcWFhcyFhcWFhcWNhc2Njc2Mjc2Fjc2Fjc2Njc2NzY2NzY2NzY2NzY2NzY0NzY2NzY2NSY2NTQmNTQ2JyYmJyY1JiYnJiYnJiYnJgYHBgcGBgcGBgcGBwYHBgYHBgYXFhUWFhcWNjc2Njc2JyYiJwYmBwYmJzQ2NzYyFxYyFxYWFxYWFxYWBxQGFQYGBwYGBwYGBwYGJyInJjEmJicmJicmJyYmJyYmNzY3NjY3Njc2Njc2Njc2Njc2NzY3NhYzMhQzMhYXFhcWFjM2JksIEgsEBAUIAQYJAwUGAgsMCgIDBwMIDQgGCQsGAgsFAgoBAQMHAwYFAw8IAwcDCQIDCAYCBQMDAwECBAIEBwMGAwMFAgEDAQQBAQMBAggCAgUCCAULAQIKDQYDBQMGBhYkEQsBBAcEBw0HCRILAwUDAwcCBAYEBQoFBAkDBgIBCAEBAwcDBQgCBgYEBwILAgQHAQICAQIEAgEBAgMBAQIDAgEEAQIDCQEDAgIEBQMFBAQCDAUIBgMFBgQHBQwGBwkVCwkHAwUIBBIgEgwUCgkHAgQIBQUJBAgCAgkBCwMCCwgCBgEDAwQCAgIHAgYDAQIDAgIGAgECAgEFAQECBAMFAQEBAQECAQEBAQEBBAcCAgIDAgICAQUBAQcDBAYBAQYEBQkFBQcECgsDCAcHAwcECgYCAwMUEAIHAgULBgIHAwMFAgUMBgULBQMIBQgKCwgJBAkMBwgKBQwKBQICBgEBAgIDAQFbAwMCCAYDAgYDCwUHAwgBAgsCAwgFBQgDBQYEBAgEDAMEBgUCCAMKFAgFBQIHAwIDCAIIDAcDCwMBAgEEAgIDAgIBAQICAQIBAgICAgYCAQEBBQIKBwMFDQYFBwUNBwMLCwUMGgwDBgIGBQIHBQIFBgQFCAgSCAQJAgYHAgMFAgICAQQBAQICAwECAQIEAQEDCAIFCAUNGA8ICQUIAwQCAgQHAgcCCAICAwECAwIFBAcFCBYGEgYDBgsDBwIFEAUCCAEKAwcHBwUIAg0GAgIFAgECAQMIAgMICwgEBgUIDQcBCg0CBwMEBwIDBQIEAgIDAQMBAgUCBwMDCAMDBwMIDAgDCAwDBgsGCQIKBwUUCwcCAgQCVQQCAQkRCAkDAwEDAgEBAgECAwMBBQcBAQgBAgcCAQIDAgYBAgwMAwgDCwcDCQUDCgECBwMCBQgFCBEJCwwFCAUEBwwFCg0FDgkFCAsFDgkFCwUGAwcBAQcIBAIGAgQDDQsFBQEBAQECAgIBAgIBAQEDAQICAQECBgEGAgEDBgMFBwUCCgUIAQwNBQoBAhAFBQoEAwYECBQJFwcOCAYEAgkKBQsSCgEIAwQIBQUHAggHBgYFAgMEAwYCBQMCAgQDAwEBAQICAwECBAQBAgYCAgMCBwEBBwIBBwEKBAIKBwQDBAICDAULAwIGDwcHDAUFCgUIAw4NCAgSCgsYDgcOBgcDAgMFBAUJBQwEAg8LBQUMBQQHBQsDAQ8LBgsCAQcICBAICAcEDQcCCAUEAgQDCgQCBAIPBgIBAQIGAgEBAQMBAgMCAgUCAQECAgIBAgQDBAQCAwYKBQUJAwUKBgIKAhMGBAILBgICBgIHAQMGAgUCAQgBAgICAgIBAQIBAQMBAQMCAwIFCggCBQIFBgIDBwMNDQcKFAsCBgMJAwcKCQMCBQUCCAICAwcEBw8HBgwGBQcDBAUECQYEBQYFBgIDAgEGAgUBBQMBAQUBAQUBAQIBAgIEBAgEAgQCAwsCAwoEAwQEBAgDBAcECQYDAgcEBwwFBQQFAwgGCgcDCgUFCwIBAwMCAwYBAQUFAgYHCAYFCAUKFwsIAwUFBAEFAgMDBw8RAQIEBAICAQMFBAIFAQECCAQCBwQFDQQCAwkCDQECCAECAQEBAQIB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BwEJCAMDAQgTCQULBQ4iDwEDAQQCAgMBAgIFAwECAQEBAQEBAQEBAQIBBQECAgUGBgMDBgMFEgQKCwYKBAsaChIHDAUKBAICBgUCAggKAwICAQIBAgEEBAQCAQEBBAMBBAEICAIGAwQMBgMIBQ0IBwMCAwwFAwcDAwcDBAUDCBQJBAcECREUEgUIBAMHBwQCAQICAwIFAgIEAgEDAQMCAwQCBAkICAQGCAMRHg0KAgUFAgcCAQICAgUEAwQBAQQCCQUDAwUEBQkFCQkIDwMDCQgLAwcDCQQJBQUIBgsEAgoEBQkBAQECAwQIBgUFCAUHDAcIDwYEBQQGBgcCAgECAgMBAQICAwICBgQFBgMGAQEDCAUDBwQIDwkFCAUFCgULCwcMBQoLBQIGAwQHAgcBCQcCAgEBBQEBAQMBAgIECAYECQMCCwcFCQIFCwcGCggGDggGDQYhEB8PBQgEBAcECwECCAMCAwYDBggFBQwDBQQCDQUCBAIHAwQCAwIGAQICBAIGAwIBAwEBAQIBAQEBAwIDAgQEBgUDBQICBAgFBwkIAwoFBAgEAwcDDxMMBwQFBgQECAMDBgMEBwUIEAwDAgIEAQECAgIICQYFCQUIDQYNDggMCAMIBQQIBQYCAwQEBREMDBcBKRY3FQUCBQ4MBgUHAwwFAgEBAQUKCwMJBQIHAwMHBA0OAwYDAwYEBgkIBQkFCRIGBQcFBQsDAgcCAgcCAwQBAwEBAwEBAQQIBwgFCAMCAwcCAgcCCw0GAwgCBQcEAwgOBgMECwUODAYHEQYTIgsDCQICBgQCBAMGAgIBAgEBAwEBAQECAQECAQIBAwUDBAIDBgcCBQMLBg4IBQcFBhgFAwQDBgMCBgUFAwICAQIKBgECAwIKAQEDBwQICwgJBwUKBQwGAgMFAQECAgEEAggIEw4BBAsCCAkFBAgCBAEBBQMDCQgJEAgQBAgCAQEBAgIHAQIFAwMEBQgICQQDBgMEDgYIDgUKAgEFCwMKCAYCAQICAgIEAQICAQEDBAIGAgQBAgEEAgMDAwoCAgsLBQgPCAwYEQMIAwMGBAQGAwgIBwMFBAIHBgIEAQICAgIDAgECAQEBAQICAQIBAwEBAgECAgMEAwIFAgIKBQMIAwgBBQQDCAQMCAQDBwUeJhMKEwsLAQEDBgMIAgIGDgUFBwQIEQgGBQgHBAYBBQcEBQoDAgQBAgEBAgICAgEBAQICAQPZAwMEAgMEAgsDBg4GDgsEAgQCBAUBAQYHCAkEEAgGCAIDBAMDBQUFBAICAQAAAAACAB7/7wMGAv0C4wNgAAABBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBwYmIyYmJyYmJyYnJiYnJiYnJiYnJicmJjUmJic2JicmNzYmNTQ2NSY0NzY2NzQ3NiY3Njc0Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2NDc2Njc2Njc2Njc2Njc2Njc2NhcWFxYWFxYWFxYWFxYWFxYXFgYHBhQHBgYHBhQHBgYHFAYVBhQHBgYVBhYVBgYHFBYHBhYVBgYVFBYXFhYXFhY3NjY3NjY3NjY3Njc2Njc2Njc2NjU2Njc2NjU2Njc2NjU0NjU2JyY0JyY2JyY2JyYmJyYmJyYmJyYmJyY0JyYmJycmJicmJiciJicmJicmJicmIicmJicmBicmIyIHBiYHBgYHIgcGBgcGIgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBwYGBwYGBwYUBwYHFgYVBhYHFAYHBgYHBhYXFgYXFBYVFhQXFBYVFhQXFhcWFhcWFhcWFhcWFhcWFhcWFhcWFxYXFhYXFhYXFhcWFhcWMxYWFxYWFxYWFxY3Njc2NzYzNjI3NjY3NjY3Njc2NzYXFhYXFhYXBgYHBgYHBgYHBgYHBgYHBgYHBgYjBiYjBiYnJiYnJiYnJicmJicmJicmJyYnJiYnJiYnJicmJicmJicmBicmJyYmJyYmJyYnJiYnJiYnJiYnJjYnJiYnJiY1JjYnJjYnJjY1NiY1NjcmNjU2NDc2NjU2Njc2Njc2Njc2Njc2Njc2NzY2NzY3NjY3NjY3NjY3Njc2NzY2NzY2NzY2NzY2NzY2NzY2NzYWMzY2FzIWFxYWFxYWFxYWFxYXFhYXFhYXFhcWFhcWFxYWFxYWFxYWFxYWFRYWFxYWFxYWBwYGBwYGBxYGFQYWFQYWFQYUFQYGBwYGBwYGBwYGBwYUBwYGBwYGBwYHBgYHBgYHBgcGBgcGBgciIicGJicmJicmJicmJicmNjc2Njc2Jgc2Njc2NzY2NzY2NzY2NzY2NTY2NyY2NzY2NzY2NzYmNTYmNSY0JyY1JiYnJiInJiYnJiYjBgYHBgYHBiIHBgYHBiMHBgYHBgcGBgcGBgcHBgYHBgYHBhQHBgYHBgYVFBYXFhYXFhYXFhYXFhYXFxYWFxYyFxYWFxYWFzY2AhYJAgIHBgMGAQICBwMDBAIHAwICBAMDBgUPFg4MDAsFCxAICQQCCAELBgMCBAIHAgIEAQICAwMDAQEBAQEEAwMCAgEDAgIBAQMCAgYCAgICAgQCBgYCAgQBAQQCBwICAgYECwoFCQIHBwMLAwIMAwIFBwQNCQkKFg0QDQYCAgUBAQIGAgsRBQkFAgcCAQECAwEBAQECAQEDAQECAgICAgEBAQMBAQQEAQYMCAYNBwQFAwIFAgMFAgcDAgIBBAMCAQICAQIBAgMEAgIGAgICBAEDAQEGAQECBgIEBgUFAgIGCgYLAgsIAhAEBgUHDQcFBgUECgQDBQUNCAUDCAMFCQUKBgQKBQgDBQkCBwQDBQIIAgIFDwYIBQMKBwMDCQMDBAIFBQICCQQGBwMMCAQIAwIDAgICAgQCBQIBAQEBAQICBQEDAQMCAgEBAgEBAQMBAgIFAwECAQIECQUGAgIJBgIFCAQGBQYECwYCBgYLCQcKAQUJBAMJBg0GAhocDgIICQYFBwMBAwUCBAcDBQYHCw0BAwIBAQICBwYDBAcCAwwGCgIBCQgFBAYEDioUCRMFBAoEAgsFBAcFDAoIBgMGCgUVERQRAgQCAgMCBgMCBAICAwIDBAETDwECAQkEAwIDAgQCAgUCAgMBAgECAwQCAgMCAQECAQECAgECAgQBAgEBAQMGBAIIBQQCAwIHBAIEBwcECAYKBQYEDgwGAwoFBQUDCAYPBAUKBQIEBAYFAgoXCwcYBQUSBwwBAQseDAYNCA8LBwcJBQIHAwwKCxULAwgEBwkDBQEJCAIDAgoIBQQGBQUDAgUDBQoFAwMBAQQCAQIBAQMBAgMCAQEFAgEBAQQEAwIDAQYBAgQCAwgFBgICAwMCCAIDBgUFBQgPDgYKBQoMBwkHAwIGBAIEAgICAQIEAQIBZwYLBgQDBgEBBgQBCgYEBQIIAQoCBwEFAQECAQEBAgEBAQEFBQICBAMBBgQBBw8HDA4MCgICCQMCAgYCBwMHCQUDDAoKBwIFAQEGBgIBAgMBAQECBQEDAgEBAgMCAwYCAgECAgMCCAQDAQgFAgcQCAkUCwUFAQYIAQIKBQUIAwIDBQQFBgIJAQICBAIDBgIIDwQDAgEBAgQGAQIIAQsIBQMKBgwFBAkBCQICExgKBgcEDhEKBgIFCwUFBgUECQQMBAMIAgsEBgoFAwcFAgYECwQDBQIEAwQCCQECAgYCBgkCAwEBAwMCAgIBAwIBAgMCBAMBAQMBAgcEAQIEBAIEBgQNCAYBBwsVCQUNBwcNBwgQCAUKBQQGAg0KBQUKBQYNBwUJBQIGAwUIBQUOBwcOBwEBAgEBAgIIBQUJAwUIBAwEAQgECggECgECBgwGAwYEChELDyIOBQkFEAwKBgMHAwELAgIFCwYHBwUDBAIGCgQFAgEIBgIGAgQCAwYFBQIDAgEBAgIFAgEDAQEBAQICAQEBAQIBAQIBAgMBAgYDBgICBgUCAwQDAgUCAgUCAwcDCQYDFggJEQoFCAUFCgUFBgQGAwYNBwYMBQgRChUbDAYOCAIGBAIHAgQFAwgMBgoHAgUDCwQCAwUCBgsHCAMCCAYCBgQDCAEGAwYEAgQDBQcDBAIBAgIBAgMCAQUFAwECAwMGAQIEAQIBAgQCBQYBAgcBAwIGAwcGAwgFAwUHAwgBAQcFAwIFAgcDAQEBAgEBAQIBAQEDBAYBAgIIBA8PDxECBAICBgIGAwIEAgIHAgwBARcWAgcCCwoFAgkFCQUFCQUFBQYEBgUIEgkGBAIJBwIDCwUMBgIFCwYPDQUGBQMHAwoBAg0IBQsLBQIFAwoIAwUKBQQGBgoFBgILCwUDBQMDBQIGAgkCAwYDAQICBAEBAwoEAgQCAgEBAgIBAQIDAQMCAQIDAgIBAQUDBQoEBAYFBQgCBAMFCgIFAg0HBAQHBAkCAQQKBQwXDQgaDggRCQQJBAUHBAMFAwsBAQIMBQYMBQQFAwgUCAYLBwkEAgUIBQgRCAoEBAkFBAoEAwQEAwMFBwEBAQcDBQMCAgQCAwYFBRQICA0HBgskBg0GCAMFAwIGAwIMDAUIAQERGwsICQUOBgIGDggKFAoLBQMFCgQMAwsCAgkBBwIBBgUBCgcFAgEGAgIGAgcJBwYCCgwICQMDBgIKCAEBCAQCAwYDBgkFChgIBg4FCAYGBgsFBQYCAgUCCAcDAQkBBAkCAgICAwgAAv/L//MDQQL2AlACwwAAAQYiBwYGBwcGBgcGBgcWBhUUFxQWFxYWFxYWFxcUFhcWFhcWFhcWFhcWFhcWFxYWFxcWFhcWFhcWFhcWFhcWFxYUFxYWFxYWFxYXFxYUFxYUFxYWFxYWFxYXFhYXFhcWFxYyFxYWFxYWFxY2FwYUIyImIyYGBwYiByIGIyIGBwYmByIGIwYGByImBwYGJyImIyIGIyYGJyInNjY3NjY3Njc2NzY2NzYyNzYWNzY2NzI2NzY3NjYnJjYnJjQnJjQnJiYnJiYnJiYnJiIjJiYjIgYjBgYjIyYHBiYnJgcHBiIjIiYHBgYHBgYHFBYVFAYXFhcGFhUGBhcWFhcWFhcWFhcWFhcWFgcGJiMGIgciBiMmBgciJicmBiciJiMiBiMiNCMGBiMiJiMiBiMGBiMmNjc2NzY3NjY3NjY3NjY3NjY3NjY3NiY3NjYnNjY3NjY3NjY3NjY3NjY3NiY3NzY2NzY2NzY2NzY2JzY2NzY2NTYmJzY2NzY2NzY3NjY3NjQ3NjY3NjY3NjY3NiY3NDY3NjY3NjYnJiYnBiYnJiInIiYHBgYHBgcGFAcGBgcGFBcUBhcUFhcWFxYWFxYWFxY2NzY2NzY2NzY2NzYmJyYGBwYGBwcmBzY3NjM2Njc2Njc2NhcWFhcWFhUGBwYGBwYGBwYzBgYHBiIHBiIHBgYnJiYnJiYnJiYnJiYnJiYnJiY3NjY3NiY3NjY3NjY3NjY3NjY3NjY3NhYzMjY3NhYzMjYzMhYzNhYzMhYzMjYXFjYzMzY2NzYWNzY2NzY2NzYXNhYHJyYmJyYmJyYmJyYnJicmMSYnBgYVBgYHBgYHBgYHBwYHBgYHBgYVBgYHBhQHBgYHBgYHBgYHBgYHBhQHBgYHBgYHFjYXFhYXFjYXMhYzMjYzMhYzMjY3NjY3NiYnNDQnJiYnJiY1NiYnJiYnJyYmJzQmAjwCBgIDCAQKBwsIAgUDAQMCAwECAQIGAgIEAgECBQUCBQQBAwICAwMDBQIEAQUCBAIGAQICBgMDBgQEAwICBAUCBAICAwIFBQIFAQIEAgYGAgkGCAgFCAINBAcEAgUNBQUHBQQJBAkCAwgFCRULBw8IDw0IBAUCCxYKBgwGDhoNBgwGChIJBQcFAwYDDhMIDwoFBgQHDwgFCgwIBQkFAwYCCwMCBwMCBQUCCAMBBAEGAQEEAQMBAgUCAwMCBw0HDAoGBw0HAggEER0UCwYHCwYDERAMCA8HCAwHCBAGAgcBAQMCAQQDAQEBBAIIBQUQBgcFAwcSBwMIAQoHBAUJBQQHBRgkEQoUCgsUCgQHBQQHBAsBBQkFCA0GBQoFAwsFDAkCDAELAQkPBQsGBAMHAwYIBwIIBAUBAQIFAQkIAgICAQQGBQIDAgMEAQICAgcCAwICAgIHAgICBAEFBQQCAwECAgIDAQQDAgMFAgMCBgEECAQCAgICBAECAQICAQsJBgIFAQINBAsVCgseEQgSCAoSCBERCgIJBAMEAQEBBgICBwQGAwUDBg4GBQgKBwIHAgIBAgUNBgsHAwQFAg0JBAEFBwEIBwMDBAUEBgQLDwgEDAMCAgcFBAcECwEJBAIJBQIFBgUEBAUHCgUFCQMGDQUDBwICAgEBAQIBAwEBAQEDDQUCAgMHCwUFBwUPDwYFCwUDBwQPIg0IDwgJEgwEBgMIEQgNHw4DCwQUDQgEBQoFDBYLBAgFBgkDDH0JAwYDAQIBAgICAQQEBAUHBwkDAgUCAgECBAgCCgcBBwQDAQMCAQEBAQcDAwIDAQgMBwIGAgICAQQCAwIBCxgMCA4HBxEJBw4HBwsHBQoFDBgNDh8IAgwFAQYBAQEDAQMBAgEDCQMFAwcC8w4CBQUFCAYOBQUGAwwHAgQKBw0IBg0FDgkFDQgFAggQBgkSCA0MBQYKBQsKBwUDDwYLBgkIAwcKCAkSCQgHAwcCCwsGCQsEBQUKCAcEBwYDBAYEDAgEDgUECQMFAwcCBwECBQICAgEBAQQFAgIBBAEBAQICAQEBAQIBAQEBAQEDAQIBAQMBBgwCAgMGBAEEBwICBgICAgcBAQQFAgUCBgMGDQgKAgIHCQUMBQIFCwUMCQUHAgIDAQMBAQEBAQECAQICAwECAQEDAQkVDAMGBAUHBQkJDQoFCBEHBAsEBAYEBgECAwoFAgEFBgIBAgMBAwECAQEDAQICAQECAwEBAgkBAggBBwEJBgIGAwICAgIECgQICgUIAQECCgUNDwgMAgIKGQsFCggMBQQEBwQMAwUDBQgFDAgFBQwIBRIIAwMFBQgFBQgFBwYDBwkECQUKBQIIEAgFCAQFBwUEBwQCBgMUEQwGDQQFAwMCBQMDAQEBAgcCBQcHAgEIBwILEg0ECAQEDgUDBQkGBAUGBAQCAgIEBgIEAgIGAhAOBQcDAgEDAgYCAgkLCQYCAgIBAgECAQERBQgOChEDAwUFAwgDCQUDAgcBBAEBAgIBCAIFBAMHDggHDgcIEwsLEQkECAUECAMFCwUCBQIGAwICBQICBAEBAQIBAQEBAwEBAQECAQEBAgEBAQECBQQBAQEBAQQC+xUIEAgDBgIHDAUEBg0IDQkCBAQBAgUCAwcFAwoECxMDDQ8HCAIBAwcDAwcDCw8EAwgCFycQBQoFBQgEBAcFCBMJBAMCAQUBAQIBAgIBAQECBQUVIhICBwIMCgUCCwIICAUIEAUJBAcDBgkAAAAAA/+3//ECugMCAbcCSALSAAADJiYnJiYnJjYnJjY3Njc2Njc2Njc2Jjc2NzYWNzY2NzYWNzY3NjI3NjY3FjI3MhcyFjMWFhcyNhcyFhcyFxYWMxYzNhYXMjYzMhY3FjYzMhYXMhYzMjYzMhYzFjYzFhYXFjIXFjIXFhYHFhYXFhYXFxYUFxYWFxYUFxYUFxYWFxYWFxYWBwYWFQYGBwYGBwYHBgcGJgcGBgcGBgcGBgcGIgcGBgcWFhcWFhcWFhcWFxYWFxYWFwYWFxYGFRYGBwYGBwYUFQYUBwYGBwYGBwYGBwYHBgYHBgYHBgYHBgYHJgYHBiIHBgYHBiIHBgYjIgcGJicmJicmJgcGJgciBiMiJgcGBicmNjc2Njc2NzY2NzY2NzY2NTY0NzYmNzQ2NTQmNTQ2JzQmNyYmJyYmJzYyNzYWNzYyNzY2NTQmNTQ2NTYmNTQ2NzYmNSYGJyYiJyYmJyImBwYGBwYGBwYGIwYGBwYGBwYGBwYGFxYWFxYVFjcyNjc2Njc2NicmJiMGBgcGBgcmNCcmNjc2Njc2Njc2FhcWNhcWMhcWFhcUFhUUBhcWBgcGBgcGBgcGJgcGBiMiJiciBicmJhcWBjMWFxYWNxY2MxYXMhYzMjYzMhYzNhYzMjYzFjYzFjY3Fjc2NzYWNzY2NzY2NzY2NzYyNTY2NzY2NzY1Njc2Njc2NzYmNzY2JyYmJyYmJyYmJyYmJyYnJiYnBiYnBiYnJiIjJgYjJgYjJiMmIiMiBicGBgcGBgcGBgcGBgcGBgcUBhUGFAcUBgcHFgYVFhYTFhYXMjYXMhYzNhYzMjYzNhQ3NhY3FhY3FxY3NjM2Nhc2Njc2Njc2Njc2Mjc2Njc2Njc2Njc2Njc3Njc2Njc2JicmNCcmJicmJyYmJyYmJyImJyYmJyYmIyYiJyYGJyYmJyYiJyYmIyIGIyImIyImByImIyIGJwYHBgYHBgYXFBQXFhQVFhYXFjIqAwgEAgUDAwIBBAICAgUCAgICBAIGAQIJAgoCAgkGAwoFAgsIBAgEBAUFBg0IDA4ECAQIDggGDQUNDQcIBAUKBg4EDiQSDRIIDR0LCQoFBAkFCQQDAwYDAwoDCwUCBgwGCBEGCAoCAgcCBQcDAgICBQYBCAICCAEDAQIEAgIDAQIDAQMCBQYEBAQCBAIGBgYCAQMHAgMEAwQIBQgDAQcNBAUPBQ0IBgQIAgwCAgcCAgICAgUBAQEBBAMCAwEBBAICBQICBAQFDggIAgQGAgIEAwYIBQsPBAQFBAMHAwUKBQMJBgUICBMFBRUICxYLHDMcCREICA4HEiMSBw0IBQoDDQkFCQMEAgEBAQECBAEBAgIBBAMCAQQBDBEIDA8IAw0ICQMBCQ8GAQEBAQEBAgEBAQIFBAcIBQMHAw4JBQQIBAUIAwUGBQMFBAEGAgIEAwcKAgEEAwcOEggPCAUEAwIGAQgMBQYJAgQDBQUEAQUCAgYDBAMECBAFBQcEBQMCBQEBAwEBAQUEAgQDBQYIDQgEBQYEAwgFBgsFCAj7CwEBBAoFCQILBwIFBg4ZCgQHAgMGBAoDAggMBQwGAg4JBQkEDAEFBAIHDwUICwMCAQIGAgQDAgIBAgIDAgEBAQMCAQEBAQIDAgQBBgsCAwUDAgUDDwMOEQcEBwILFQsLFwsQFAsHAQMKAQcLBAoTCgMFAgMEAgECAQICAgECAQEDAQEBAwIDBAYUBQcFBAgEAgYEBwICAwYDDAMICwgDBQMUCQcKCAYKBQQIBAgNBgoUCgcDAQMJAgYGAgIEAgIDAgUCAgMDAgIDBAYBBwICDgQDBQMHDwUEBQIIBAILBAIKBwINCgMIDggGDQcGDQYDBwQIDQYEBgELAwIFDQQRDAUHBAEBAgEBAgYFBAgCGgUIBAYGBQcJBRUZCg8NBAkCBQECCwICDAMGAQIHAgIHAQEEBAEBAQMBAgEDAQECAQECAgIBAQICAQEBAQEBAQMBAQIBAwICAQIBAgMFAgYCBQIKBwQHBQoIBgIKBgILBAIHAwEEAwQDCQIFDAkKAgIRDggLBwQIAggIBwEBBwUDAgYDAwUDBwEIAwUFAwIGBQICBQUFAwIGAwEHAgkHBwMHBRI1EwcMBwMHAwoIBQUKBQUIBQcNBgcCAwUCAgQCBAYDCQcGAQQCAgICAwICAgEBAQIBAQEDAQIEAQIBAQIDAgEEAwMHAwsMBg0L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AQEDAQgEAQMCAgUDAQIEAQEBAgUEAgQGBQsBAQQOBgUKBiwUFQwBAwEBAQMCAQENAwcCAgUICgYCEAsDBgMDBgUEBwUEBwQFDQcSJhMIDQcLFQgFDgUIBAMBAgEFAwIBBAECAgQBAgIDAgEDAQUCAgIHAQEDBAMDAQ0CAgQCAgIEAgEBAgEBAQECAgECAgEDAQEDAwICAQIBBAIFCwgQEwgNGwkEBgUFCwUWIg8FBgQDBgMFCwcNBwUDCwQVIQ4FCQUJEQYHCQgHBgMHDAYGCwcIDwkLBgINBwQCAQcGAgYIBAIDAgIGAgQDBgIBAwIDAQICAQEBAgEDAgEBAQQCAgECAQYBAQEBAQECAQEBAQICBgMCBQIECAIJBwIKBgINCQUQBAUKAgUSCA8gDg4MBw8RCQQEBQoBAgMGAgoKAwQLBAkCDQQFKgoEAgQIBQkFBQkFBgoFAwYCFQ4LBQQFAwoBAQQHBQYLBQMGAwUJBgQLBQMHBBAHBQYFBAkCDAcDBAsC+wUHBQwHBAULBgYOBw4bDQkUCAQIBAsZDggNBhEFDQISFgsICQkHAwQHBAMGAwMJBAYGBQsCAwYDAggDAwUEAwUEAgIGAQEBAgECAgEBAQEBAQMHBAICAgMBAgUGBQMCAgsUCxEhEAMFAwMHAwgMBgwFAhITDBgNBQICAgUCAwIKBQgEAwkGAw8LBQoJAg0BAwoDBwMHAgIGDgUDBQIIAQgOCAgQCQgPCA0XDAsDAgQIBQsTDAkGAwgNBwcICR4ODx4PBggEAgYDCg4DBwMLDAUGDAULBQMFBQQHAgIGAgEBAQEBFCYTBg0HBQwFBAgFFSQUCAIFAgYBAgkEAgICAQIBAQIBAwEBAQEBAgEFAgIFCggCAwgDCAsGAgYDBQkFCAMCAwYECwMIBwQDBQQKAwIFCQoFAgcFAgUGAwcECgEGDgcGDAYGDAUEDAUREQgEBgMHAwIKCQUHDAcGDQYFAwECAQECAgEBAQEBAQEBAQICAQEBAgEHAgIBAQICAQICAgEBAQECAgIBBAQBAgICDwMJBQQJBwUCBgQCBQMGBgkEAhABCxQKCAUEDhsQCwQCCAwHDh0LBQsECBILCRMICRIJCxULCiMOBgwGBQwFBQ0FBw0FBQgFBQoDBQYFBgMCCQECBwYCBAICAwYHAwEBAwIBAgEBAQICAgQCAQQBBAIBAQIBAQEDAQEBAgMCAQEBAgEBAQIBAQEBAgECAgICBQMDBAMBBQICAAAB/+L/7AJ8AuwCIAAAARYWFxYWBwYGBxQUFRQWBxQGFQYWFQYGBwYGBwYGFRQWFRQUBxQUByYmJyYmJyY0NSYmJyYmJyYmJyYmJyYmJyYmJyYiJyYmIyYGIyYmIyYGJyYmJyIHIgYHBiMiJgcGBgcGBgcGFAcUBhUGFhUGBgcGBhUGFAcUFhcGFhUUBhUUBhcWFhUGFhUWFBUWNjMWNzY2MzY2MzYWNzY2NzYyNzY2NzY2Nzc2Njc2Njc2Njc2NTY2NxYUFxYGBwYGBwYUBxQGBwYUBwYWFRQGFxYWFxYWFxYUFRYUFRYHFAYVFBYXFAYXFBYVFhQXFhYHBjQnJiYnJiYnJiY1JjUmJicmJicmJicmJicmJicmBiciJiMmBgciBiMGBgciBwYGBxQGFxYUFRYWFxYGFxYGFRYWFxYUFxYWFxYXFhYXFhYXFhYXFhYXFxYXFjIXFhYXFhYXFhYXBgYHBiYjBiYHBiIHBgYjIgYjJiYnJiInBgYHBiInJjYnNjY3NjE2Njc3Njc2NzY2NzY2NzY0JzQmNTQmJyY2JyYmJzQ2NzUmJjU0NjU2JjU0NCc2JjU0NjU2JjU2NjU2NDc2JicmNic0JjU0Nic0Jic2Jic0NCcmJicmJyYmJyYjJiYnJgYnJicmJicmJicmFhcWNhcWFhcWMhcWFhcXFhYXFhYXMzY2OwIyFjM2Fjc2NjcWNjcWNjMWNjM2Mjc2Njc2Njc2Njc2MjcyNgJ2AgEBAQECAggBAgECAQEBAQICAQEBAgEBAQwDAgEEAQECBwMDAwICAQQFEQgJEggEBQMDBwQGDgkIAgIJEwgMHRAGCwYPDwUHBAkCBAYECA4IBw8FAgIDAQEBAQEBAwEBAQEBAwEBAQEFAQIBBxAJDQgFBgMGDQYIDggECAQGCQMHCwUCBQIHAgYCBAMCBAkDAgQBBgUBAgEBAQEBAQEBAQICAQEBAQEBAQEEAQEBAQEBBAEBAQIBAQECBwUBAgYDAgUDAQIBAgMCAgIDBwUEAgoDBQsFAwcDBAUCBAgFBAgFCBAJERAIEQgBAQEBAgEBAQECAgEEAQEDAQYCAgIBAQICBgQCBAICAwQIBwgCBgMNDQYDCQUGCAINEQgKBQMJBQMOEgkPIA8RIREIEAkHDQYFCwcGDAMGAQEIBgMLCgMCEwUGBwIDCAQDBgQGAQECAQEBAQEDAQIBAQIBAQIBAQECAQEBAwEFBgcBBAIBAQQCAwEBAgEBAQICAwQEBwcKAQMGAwYBAgEKBQ8FBAwEAxUHCREFBQgECRMKAwcEEg4cDhw4GykJEQgQDwgPBgwIBwsDAggLBQEKAQUEAgUNCAsVCwMFAwQHBQUGAgIGAuoHDQcMFgkMHA4HDAMIDgkCBgMCBwMFDQYSJA8KAQELAwIDCQUCBwILEgoFEAYFBwUMGQ0PDAYLEggJDAgDCgYCBAECAQEDAgIBBAEEAgECAQMBAQMBAQIDAgICAgIHAwIGAwMIAwQFBQcHBAUKBQwTCAQLAgQKBgULBQgPCAwHAwkQCAQDAQIBAQIDAQIBAQMBAgICDgYCAwISCA4IDwkFCRILCAMOCgICDQUMFgsIEggFBwUCBQQIFAgDCQQCEAYDCwUHCwcFCwUIEQsQDwIHAgULBwQKBQMHAwMGAgUPAgEJAwgSCAcKBggBAgMIBQcEBgsFDBIIBgwGAQQBAQIBAgEBAQEBAgEDAgMDCAwHBw4HBQsFCBMFCQUDBgsGCBAIBQkFAwgCBwIDBwUEBQQCAwIIBAIBAgcGBAIEAgQCBAsDAwQBAwEBBAEBAgIBAQEBAwIBAQECBwMBBwECCQYBAg4GBQYCAgkEBAcEBg8QBAUDCwgEBAgECA8IBQoFFQUHAwMGAwkUCwsUCQcDAgMHAwQHBAUIBQsZCQsCAgsPBgUIBAsVCwgOCAUHAgQIBQMGBAoLCg4FBwICAgcBAQIEAgkCAgMDDAQBAQIBAQECAgIBAgEBAgQCBAYBAQMBAQEBAQEBAQEBAgMBAgECAgUCAQEBAQICAwIEAAAAAAEAAP6wAt0DGAQUAAABFgYXFgYVFBYHFAYVBhYHBhYVFAYVFBYXFhcUBgcUBhUGFBUGFRQWFQYGBxQGFQcGFgcGBgcWFgcmJicmJicmJyYmJyYmJyY0JyYmJyYnJiYnJiYnJiYvAiYnJiYnJiYnJicmJicmJicmJicmBicmJicmIiMGJiMGBgcGBwYGBwYGBwYGBwYGBwYGBwYGBwYHBwYWBxQGBwYGBxQGFQYGFxYUFxQVBgYVFhYXFhQXFhYXFhYXFhYXFhYXFhYVFhYXFhcWMhcWFhcWMhcWFhcWFhcWNjc2Njc2Njc2Njc2Njc2NzY3NjY3Njc2Mjc2NzY3NiY3NjY3NicmJicmJiMiBiMGJiMHBgYHBgYHBgcGBgcGFQYGBwYGBwYGBwYGJyI2NTY0NzQ2NTU0Nic0JjU2Jjc2FhcWNhcyFjMWMhc2Fjc2FxYWFxYyMxY2MzIWNzY3NhY3MjYzMhYXFhUUBhUVFAYVBhYVBhQXBhYXFhUWBhUWFhUGFgcWBhUWBgcVFAYHBgYVBgYHBgYHBgYXBgYHBgcGBgcGJgcGBiMGIgcGIgcGBgcGBgcGBgcGBgcGIgcGBicmIiMmJicmJicmJyYmByYmJyYmJyYmJyYmJyYmJyYnJiYnJiYnJiYnJiYnJicmJicmJicmJicmJjU2JjU0NjU2NDc2Njc2Njc2Njc2Njc2Fjc2MjM2FzIXFhYXFhYXFhYXFhYXFhUWBhUWFgcGBgcGBwYGBwYGBwYiJyIGJyYmJyYmJyYmJyYnNiY1NDY3NjY3NjY3NhYXFhYXFhYXFAYHIicmNCcmJicGBgcWFDcWFhcWFhcWNzY3NjY3NjYnJiYnJiYnJicmJiMmJyYHBgYHBjUGBgcGFxYWFxYWFxYWFxYXFxYVFhYXFhYXFhcWFhcWFhcWFhcWMhcWFhcyNjcyNjMWFhcWMjMWMjc2Njc2Njc2NjcWNjc2Fjc2Njc2Mjc2Njc2Njc2NTY2NzY2NzY0NzY2NzYVNjY3NCY3NyY2NSYmJzU0Jjc3NiY1NjY3NjQnJiY3NDYnBgYHBgcGBgcGBgcGBgcGBwYGBwYGBwYHBgYHBiIHBiMGBgcGJyYmJyYiJyYnJgYnJiYnJiYnJgYnJiInJicmJicnJiYnJiYnJiYnJiYnJiYnJiYnJjYnJiYnJiYnJiYnJiYnJjYnNCYnJjc2NDc2Njc2Njc2NDc2Njc2Njc2NzY0NzYmNzY2NzYmNzY2NzY2NzY3NjY3NjY3NjY3NjY3Njc2Njc2Fjc2Njc2NzY2NzY2NzY2NzY3NhYzNjY3NjYzMhYXMjYXFjIXFhcWFhcWFhcWFhcWFjMWFhcWMxYWFxcWFhcWFhcWFhc2Njc2Njc2Njc3NjY3NjY3NjY3NjY3NjQ3NjY1NjQ3NjYC0wUBAQIBBAICAQECAwEDAQEBAgEBAgEBAQECAQEBAQMBAQICAQMFCgMCBAICCAcDAgECAQIGAQIGAwQEAwkECAICAwYECggGBQMGAwMHAhgPBw0HAwcEBAYFAwkFBAgFCxgMCgICBQwFDAoFCgULFgoEAwIGCQYIAQIDAQIEAwUDBQIEAgIBAgIFBQEBAQEBAQMBAgICAwICBAMDBQICAgICBQMFBAUICAMCAwUDAgYDCA8IBQsGHz0eBwsFBQwGBQoFBQkFBgUJCAgQBwYDAgQBBgIKAQIBAgIGAQMGCxYLCBMKBgwIBQgFEg4cDwkRCQ0DDQsGCQgDAgMKBQMGBAIGBQUDAQIBAgECAQECCRILBQoFBQsFCRAIDx8KFBIGCwYHFAoFCAcDBAQNFgwEAgUJBQgOCAUBAgECAQEBAQECAQIBAgEBAgICAgEBAQEBAQEBAwIFAwIEAQUKBQoGCRAJCAICCQQDAwYDBgMCBgwHBQoGBxMJBw8ICBAJESEVCBQIBgwGBg0GCw0FDAYHDwgFCwMBCAIFCwYKAgIJAQkCAgoDAgIFAgcGAQUFBwkFAgICAgECBAEBAQIBAQQCBQIHAwICAwYJBAILAgUSBwoECQwHBQMLBwMFCwICAgIFAwIBAwEBCgYDCAMFAwMLBQUDBQUKBQQHAwQGBAUEAwwDAQQFAwUIAwMGBQIIAwUHBQwIAQEGCQEDBAUNBgMHAgUEAQUDAgEFDwwHCAUGBQILBQIHAgUHBgMIBQIFCAQKCA4aCAgBAQEFBgECAgIEAgICAgQIBwUDCQQODAgHCQsLBQsIBgkBAgQIBQgGAwMJBQQHBAkTCwUMBgoRCg0QBgwDAgULBQYJBQYLBQUHBAQHAwYJCAwJBAkJAwICBQIEAQUEAgUFBgECAQEBAQECAQEBAwQBAgUCAgEBAgEFAgkGBAUGBAQCAgUCAgQCCwcHAwIHAQILDQMFBQIHAwoGDyESFBIFDAYGCwYIDQMGAgwCAgcKBQgDAgUFAgoBAwUDDAUJBQkWCQMFAwcFAwQJBAgBAggBAQMFAwMJAgQEAgIBAwQBAQEBBQIBAQEDAgEDAgEBAQEBAwIBAgEEAgUBAQIGAgUBAgIEAgIDAQQEAQMCAgICBQUCBQMDCgMCBAIJAQEEBAIGCAUDAggUCw0LBgwBDAICBQwFCxYMCxgIAgYDBAgECgQDCAMCBgIGDQcCBQQCCwUIAwcFAgwEBQMGDQcCAwQGCQUCAwIGBQMLCAICAgMCAQIBAgMCAgIDAwICAQMDGAcGAw4HBAsZDQMGAwgNCQsFAwgRCAUKBgkKAwYECwICBgwGBAgCBgMFCAUECgMLAQgDCAICBQgDAwYDBAgECg0JAQIDBwIGAgIFCwUJCAYJBgkDAgQJBQgKAwUDBwMDBAQLDgEJAwIBAgEEAQEBAQECAQEBAQEBAgIDAgUBCRMLBAQDCRYKCwcEBAUDCAQNDBkNBgwIBgwGCwECGTkdAwYCDAMEBgQFCwcGDAUFCgUIDgcGDQcECAUEBwUCBQIEAwYCAgQCAgIDCAMCAwEHBAkCAwICAwQCBQICBAMBBAYGBg4HBgQMAQkEDgMECgULGQ0fGgMDAgECAgEBAwEEAwIFAwUBBgkEBQMEAwIFCgYDCQMCBgMIAwkRCwMFAwwFCwYIEAgOCgUDBgMBAQECAQIDAwICAgEBAgIBAQICBAIBAgECAQENCgMFAy8QEgkDBgMHBAUECQUKBQgRCQ4eDg0RBAsBAQ4iDw8PHQ4IDwgNEwsFCwYDBAMFCAUMCgMLBAUBAQYCAgEDAQIIAwIEAgMHBAIEAgIBAQICAQEDAQIBAQEFAQIBBAYFAwQDAQIBBAkEBQMCBAEGAwIHBgICBQIKBQQBBwoVCwUHBQMIBA4JBAcDAgMGBQQIAw4MBQMFAwIGAgYGBQMCAwQCAgcDAgEFCQQFBgQCCAQIBQoDAgQHBgcQCAQIBAYCAgUCAgEBAQEDAgICAgMBBREMAggDBQkFCQYCAwYBAQEBAQMCBQwHBAkDBgIIAQIDAgMFBAwHAQYIAwMIAQMEAgMCCAIKDwwFCgYECwMKBgMBAQIBAQMPCwoBBAQFFxMFCAUFCAQIDggLCwoLAQQGBQ0LBAQEBAUCAwICAgEBAQIBAgEBAQEBAwEBAQIEAQMCAgECBAQCAwEBAQEBAwECAgIFAwUIAwgBCQQCAgcCBQMCCAcFDQEPDAkHCwcXBwICBQoFDgYJBwsMAgEDBwQDBQUMBQMMGA0MCgUGAwQEAgIDAgIFAgkEBAQCAgIBBwYCAwIBAgQFCAICAgECAQEBAQQBAQEDAgEDAQIGAQEEAQMBAQMCBgIEAgUMBgIEAgUFAgMKBQoGAggBAQMPBQUJBQoTCAgQCAcHBAMGBSYtBAYEDRIIBQwFBAYEAwcCCAECCAUFBQIHAgIGDQUHBgIDCwUEBQIIAwIGAgIGAwkHBAgEAgUFAgQCCAEBBQICAwYBAwEGBAIEAQEDAQMBAQEBAQICBAICAwICAQEBAgEDAgMFAwEEBQQECAcHAgYCAwEHCgcCBQEDBgYFAwIHCAQWDAUDAwUDAgcCAgYCBAcFCgICBAcFBAkAAAAB/3r/ygLZAuQC3wAAAQYGBwYGBwYGBwYGBwYGBwYGBwYWBwYUFxQUFxYWFxYGFxY2FzY2MzIWFxY2MxYWFzI2NzIWNzYWMzI2FzIWMzI2MzYWMzI2MzYWMzY2NzY3Njc2Fjc0NCcmNDUmJic2JjUmJyYmJyY0JyY1JjQnJiYnJicmJicmJicmJjU2JicmJicmJyYmIyYmJzYXMjc2Njc2Fjc2FjMyNzI2MzMyNhcyNjM2MhcGBwYGBwYGBwYUIwYGBwYGFQYWFQYGBwYHBhUGFhUUBhcUFhUUFAcUBhUGFhUVBhYVFhQXFBYVBhYHFAYHBgYHBhcWFhUUBhcUFhUWFBcWFBcWFhcWNhUWFhcWFxYWFxYXFgYjBiYHBgYHBiYjIgYHBgYnJiInNjc2Njc2Njc2Njc2Njc2NzY2NzY2NzY0NTYmJyYmNTY0JzQmJyY0NTQ2NSYmJyYiIwYmIyYGBwYmIwYmIyIGIwYiByIGIyImIyMmJicmBiMiJgcUBhcWBhcUBhcUFhUUBhUWFhcWFhcWBhUWFhcWFBcWIhUWFhcWFxYWFxYWFxYXFhYXFhYVBiIjIiYjJiYHIgYjBgYHBgYHBgYjIiIHBgYjBiYjBgYnNjY3NjM2Njc2Njc2Njc2Fjc2Njc2Jjc2JjU0NjU0Jjc2Jic0JjU0Nic0JjU2NCciBgciJicmBicmJicmIicmJicmJicmJicmJjc2Jjc2JjcmNic2Njc2Njc2Njc2Njc2MjcyNjMWFhcWFhcWFhcWFhcWFgcGBgcGBgcGJicmNjc2NzIGFRYWFxY2NzY2NzY2JyYmJyYmJyIiBwYHBgYHBgYHBgYHBgcGFRQWFRYXFBQXFhYXFhYXFhYXFhYXFhYzMjcWFjMyNjcyNjc2NjcmNjc0JjU0NjUmJjU0JjUmJjU2IjU2JicmNicnJicmNicmJicmJyYmJyYmJyYnJiYnJiYnJiY3FhYXFhcWNhcWFhcWNjMWNjMyFjc2MgEFCgoCCAcFAgYCAgQDAwwDAwMBBgECBAEBAQEBAgEBAxIEBg0IBAkFCRIIBQYEBQwFAwYCDwgFBAoECBAIBgwGCA4IAgYDAwcDBAYEDQIQBQwIBQEBAQIBAQIBAgEEAQEBBwIBAwECAwQCAwICAQIDAgEDAQMFBQQEAgUDAgEBBQYLBQsWDQkOBwsNCwsPBQkFFwUIBAgCAggPCAQDCA8IBQgFBwIIAQIBAwEBAQMBBgQCAQICAQQBAwECAQQBAQIBAwEEAQEFAQEFAgUBAQEEAQICAQQCBAMEBgUKBQoGAgcMAgoGDiERChULCBMKDhoOCRQJAwYCAQoBBgIIAQEHAQIFCgUQBgMBAgEBAgMBAwEBAQEBAQEBAQQJBQsTCQoKBQkRCQoUCw0IBQUNCAYOBgQHBAUIBBQIEAkIDggHDwgBAgIBAQEBAgEBBAMEBAIEAgEDAQECBQIFBAMGBQUJBAUFAhIKAwYDBQsFDAUFCwUTLhwDBgIJEggIEQkLBAEECQUEBAMDBgMHEAkBCgUHAwcJBgULBQMFAgYCAgIJBAUBAQMCAgICAQIBAQICAgECEiUTEScTCAwHBQ4GBQcDBAYFAggCAgEBAgMBAwUBBAEEAQIBBQIEBQEDAgMCCQQDDBEDAQsCBQcDCQ0FBQcFCAQBAQECAQQCCQ0ICCAFCgEFAQcFAQEDBgsVBgIFAgIBAwgRBQkTCwEMAwUEAgMCBAEBBQICAQMBAQECAQEGAwMGAgMHBQQHAwkCAQMIDA0FBw4IBw4HDxoNAgQBAgIBAwECAwEBAQQBAQIBAgICAwEBAQIBBQoDCwUIBAIIAQQEAgIJAwMGAw8ZDQkHBw4HBQcFCxgMECEOBQsFBgMCzw4HBQINBQIFAgMGAQkNCgsCAQ0EBQwQCg4eERAeEA4hEQIFBQIDAwEBAgIDAQIBAQEDAgIBAwIBAgIBAQEEAQMBAwIDAQEIEAgDCAMCBgMDBwIFCAcMBgYKBRABBAkEDQsFDgkEBwYFCAUKAQEGAwIKDgcHAwIFAgcEBAMBAgMBAQEBAgICAgIBAQECDAIECQMDCQQGAgsJBQUJBQQJBQYNBiEiCAQDBQMHDwoOGw4HDAYFDAYFCgYPCg0GBAYECQ8FCgwFBQgEDAcEDQ0FDgkFCQYEBgIKCQQJDQIEAwMIAQMDBgQHBAgBAgQECwEBAQEBAgEBAQMCAgQCAQMFAgMCAgQCAQMCAQIEAwgIBQkIBgwHDAcDCRMLBgQEBREICBAIEygSBwwHAwIBAgECAQIB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AgYCBQICAgQCAgYCBQgFCgcEBgIDCAUKAwIEEAIHDwgEBwQFCwQEAwQECAQUJBIMBgIDCAUEBAIGAgQFAgQDCAUDAgYCAgMCBAUEAQIBAQECAwECAgECAQEDAQEDAgUGAgIGAgIFAwUMBAkRBwUECAcEBgsLDQoPCQUKBwIFAwICBAMLBAIJBQYEAgECAQEBAgIGAQcCBgUCBwIBCQEIBwIGDAgHBgQKAgIGCgUHAgIFBAICBwcJAgIKBgUNBQUKAggFBQEKAgcBAgMCBAIBAgMICBQIBwgFAgYCDxMFBwYDBAkEAgUDCgQCBAoECRMLAwYEBwcFBAQGAgIDAgICAQMCBAMCBAIBAQIBAgICAQEEAgIBAwIIBgwCBQIFBgQDCAMKEwoEBwUHCwgTBgQJBQgIBQQGCA8IAgUCAgECAwUBAQYGAgIBAQEEAQQBAgMDAgECAQUBAQEBAQIBAQEBAQEBBAIBAQEBAQQHAgECAgMCBAMOBgYHBAgEAgYDDgsFBhUKBAkEAwgIAwUMCQgVCwYNBQULBggPCgcCAhMOCQUMGg0ECAUFCAUECAURAt8MCQYBCQIDAgkGBQgCAgMKBQYNCAgDDBoOGkIeECQTBQwFBgsHCxcMBQcFBgsFBQ4GCA8JDRgNDQwGBAcCBwMDBQIDBgIEBQMKAgIDBgMDBQQCBwIFBgMDAQIBAQYBAQQBAgECAQECAQIBAQECAwUBAQEEAgMDAgUCBwUCBQQMBwUECAUFCAULFAoCBgMCBgMFCQUJGQsECAIDBgMEBgMLAwIDCAQKDAcFCAUFCAQKDwoLCwUDAgIBAQICAgICBQICBgEBBQEBAgcCCAYCCgMFBQ0GCgsFCgUFCwULBQILAgoJCQEBCAEBBgIBAgQCBAEEAQEGCAYDCRAQDBAICgQCBwIEAgQFCQgCCQEBAggCBQMFCAoLCgcGBAICBwUCBAIaIBQJBQMECAUDCAIHAwECBAQBAwMBBAIFBwgHBgYEAgMGAwQIBQQFBAsJBgUVCAUGBAsZCgMFAwcKAwQHBRMYBgUIBQEGAgIDBAUBAQECAQICAwECAQQDBgUDBAMCBgMIBAUDAggNBQYNBwQJBQsICxYMESISBgoFBQoFBQoFFAsTCgcOCAULBQYJBg4OCAUMBQYIAwUDBgYKAQEJAQEHDgcIEggHBwQJAgEBAQcFAgIBAQEBAQEFBQEBAgMBAQEBAQMBAQECAQEBAgMBAQEBAQECAQAAAf/s/wwDJQLsAuwAAAEGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcHBiIHBgYHBgYHBgcGBgcGBgcGBgcGBgcGBgcGBgcGFRY2MxYWFxY2MzIWFxYXFhYXFhYXFhQXFhQXFhYXFhcWFhcWFhUWBgcGFgcGBgcHBhQHBgYHBgYHBgcGBgcGBgcGBgcGBwYWBwYGBwYGFRQWFxYWFxYWFxYGFxYWFxYWFxYWFxYWFxYWFxcWMhcWMhcWFjc2NzY0NzY2JyYmJyY1JiYnJiYnJgYnBgYHFAYVFBYXFhYXNjc2Njc2JjcyFBUUBhUGFAcGBgcGJicmJyY0JyY2NzY2NzY2NzY2NzY3NjY3NhYXFhYXFhYXFhYXFhcUBgcGFAcGBgcGBgcGBgcGBwYiBwYjIiYnJiIjJiYnJiInJiMmJicmJicmIicmJicmNSY0JyYmJyYmJyYmJyY0JyYmJyY0JyYmJyY0JyYmNTQ2NTQmJyY3NjY3NjY3NiY3NjY3NjY3NjY3NjY3NiYnJiYnJiI1JiYnJiYnJiYnIiYnBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgcGBgcGBgcGFhUUFhcWBhUUFhUWFhUUBhcUFhUWFhcWFxYWFxYXFxYWFxYWFxYiIwYjBgYHBgYHIiYHIgYHBgYHBgYHBgYHBiIHBgYnNDY3Njc2Njc2Njc2Njc2Njc2Njc2Njc2NDc2Njc2NDU2Jjc0NDc0NjU2JjU2Njc2NjU2Jic0Nj0CNCY1NjY1NiYnNDQnJiYnNDQnJiYnJjQnJicmJyYmJyYmJyYmNzYWNzMWNhcWFjcyMzY2FxY2FwYGBwYHBgYHBgYHBgYHBgcGBwYGBwYWBwYGBwYWBwYGBxUHBgYHFBYXFBYVBhYXFgYXNjc2Njc2NzI2MzY2NzY2NzY2NzY2NzY2NzY3NjU2NDc2Njc2Njc2Njc2Njc2NDc2Njc2Njc2NjUmMSYnJiYnJgYnNhYzFjYXMjYzFjc3MjYzMhYC4AQRCAUMBQYOCAQHBQcEBAMGAwIGAwoIBQQFAgMEAwIGAgkHBAEMEgkHAgIFBAoIBQwMCAQNBQMHAwMFAwMGAg4IDwgEBgQIEAgLEwsKAQMPBggKAwMBBQIHAgQFAwIDAgECAQIBAQEBAQMBAwEBAQEDAQMCBAMBAgECAgIDBwQEAQIBAgEEAgIECAQCAgIEAgECAQEFBQMGBgEIDgYECAUDBgMTCQcECQ0ICikNDQkGAQcHAgIBAggCAgIFBAMDCAMOEgkFAwIEDAYHAwECAgUCBgUBAQICBwgLCwUHAwoBBgECAgYCAwEFCgQCBggHCAcNDQgCBAIGBAIGBgMEAQMCBAECBAICAwIKBwMMBgULBhkWBQgFBQkEBQgEBgkFCQQODAcKAwIDBgICBgIICQEGAgIFBAIGBAIGAQIGAwcCBgICAgICBgECAQEBAgUEAwEBBAEBAgMCAgIDAgECAQIBAQICAggIBQIDAQIJBQIDBgMOFg0LFgsJDgYIBgMEBAIIBQUCBgIHBQMECAUJBAUIAgIBAQQEAgEBAgEBAgECAQEEAgMHAwgWBAUFAwcDAwcDBAoFCgUECQUFBwUGDAYHDAYNGQ0OGAwHDQYFCwUEBQcBCQUDCAQCAgUCAgUDAg4FAgQCAgEBAwEBAQQBAQIBAQEBAQICAQcBAgIBAgEDAgEBAgEBAQICAQIDBwkDBQYCBQgFAggCAg0GFBEjDggNCAgKEB4ODxoLAgIDCQMLBQIMCAQKBgQJAwcBBQIBAgECAQIBAQEBAQMBAQEBAQEBAQEDAgUGAw8MAgcDEwkFBAYCBQQJEQoFCQUODAYJCwUGBAoCAwIFBAMIBAYEAgYCAgUBAgIDBgECAwgEBgEIAgMKFgUDEAUVKhQIFQkJDhoMDgYdMgLoCQMDAgUCAgUCAgICBQEBAQIBAQECBAYDAgECAgYEAgUDCQcCERIICAMDBQcLBwUODAYGCQUCBQICBwICBQIJBAMHAQMBAgMIAgkDBQ0FCA8HBgMCBQYCBwkEBgoECAUDBgIECQUFCAQDBwIPAwgDAwYCChEIDQ4DBwMFCgcLGAwIBAUJBAUHBAUMBwwYCwUKBQcEAgIGAw0MBQwGBAUJBgECAgIGAgUDAgQCAgUFCQkIBQILFBILBQQHAgIKBAEEAgIBAwMQCAYLBQINAwYDBAEHAgUDCwwBCgUFCgQFCgQGBAICBgIDAggFAw8XBgULBQUCBAcGAQQCAwQBAQkJAgYCCAUDCREICgMDCgUKBQIEBwQFCAIJDAIFBQIBBQEBAQEBAQEBBggIBQYDAgIBAgcCCAEFAgEDAwEDBQIKBwQIAwIF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BgcCBQsECAMKBgMCCAgDBAYEBgIBBQUEBwYCBgQCCAICBgMMDQkIBQMFEAUMCgUIAwEICAMIAQ0CBAUDBgMBCQYDBgICBwYBBAEBAgQCBgEBBgIDAgEBAQEBAQEBAQIBAQEBBAEBAgIGAgMBBQIIBgUGAQEGAgEHAQICBQIJCwUIBwcCDhITDQ4hDwQHBAMGBAUIAwUKBQMGAwUDAgEBAgEFAgYCBQgFAwcEEwgHBAgECwIFBwMDAgIBAgIBBgIHBwgLBgMGAgQCBAIMBAIJCQcBBQIBBQEEAgICCQICBQsHBQkFDAYCCAIEBQIIAgQFDAYFBQQQDAcGDggKEwUHBwUFAQYDAgcCAQIBAwICAwYBBQMBERwQBxAIChIKAgkC8gECAgIBAgQBAQQBAgIEAgICAgICBQEBBQEBCAgFAgYCBQMCBgICBQIBBQgEBgsHCAkFBQQCCQQCBAsFBQkFBhAIDwYIBQ4iEBctFgwDBwMICwcDBgQCBgQDBgMIEQkWEwUJBQsIBQYCAQQBAgMGAgQGBgIJBwQCBAIDAwEHBgUCAgICBQEBAQEFAgEBAQEBAgUCAQIEAQMBAQIBAgQJBgMHBAMEBgIEAwIFAgQGAgMDAgQIBAgDAgMJBAYIBAUHCAoECgUDBQQFCQUHBwMNDAURIhIDBwMYGgsEBgILAQkCAQQHBAIGAwgFBwQCBgQPAgMGAwsLAwYGAwIHAwkBAgcNBgcBBwsFAgQHAgQDAgYCAgMFBwICAjYDBgICBQEDAgUIBAYBAQkBAQIFAgcGAQEGCwUTDQoTCSksBQ4CCAwFDRgNDRkNDBwICAQCBQgFBAcCAwcCCAEIBgMFCAMGAQIDCAMGCgYBAggFAgIFAQkBAQMGAgUEAgQCAgEBAgEBBQEBAQIFAgMEAgYCAgMFAgUDBgICBgIFAgEKBAILBAMKAwYDAgUIBQcMBQgFAg0KBQsFAgMJBAMHAwgQCAUHBA0MAgoMBwgPCA8KBQYEAgsHAhELBwoCAgkBAQoEAgIIAQkMBgkBBgEFBQYCAgIBAgECAgEBAQIHAwIBAgUICAoNCAsdCAkDAgMLAwIGAQMEAwIEAwcBAgQCBQsGBw4GBAgEDAICBQICAgoKBQUMBQoBAQQBBwIBCA4JBQoDCwMCBQUCAgQCBgECBgYCAgsmDRQWBgEFAggEAgMGCgQFBQYFAwIG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BwQCCgcCAgICBAIEBQMCBAICBAIDCAMBAwYCAwEDAQECAgUCAwIFAQYCBAEFAwEFBwQCBgEHBQMEAwgCAgQIBQMKBQQHBQoEAggRCgkHBQYEAgcECAICEgoDAgEIBwcBAwEEBQIDCwUGBQIEAgEDAQICAgMBAQEEAgECAQIBAwECAQEBAgECAgMCBQQDAgcEBAIBCQoCBwICCAIJAgUFDAYIBQcKCAUJAgcKBQgUBgQJBQ4EAwcFAw4CBQUCBQYFBAgFCgwHBAMIAQcBBQIGAgEDAgYCAggCAgQBAQEBAQECAQEBAQMBAwICAgICAgYEAgIEAQMDAgcFAgMEAwMGAwICAQYIBAEGCwUIBgMREwUQDwMEAgkHAwQFAgoNAwcHAwWWCBIFAgECAQQBAQECAgIIEg0KDggECAUKEAcCCwQBAgUDBwsPBAQIBQkLBAYEBg4HBwwHBwsGChMKBgMBBQsFDAkDBQQDCAICAQIBBAICAQICBwQGBQUTCAcHCxIJCggCAQIFAQEEAgwFCgIJCAgBCgMJAhcIBAYCBQEBAQIBAwQHCA8MBQoFBwwGBwMBAgEBAgECAQEBAQMGAQEKBQQDBgMEBwQFEAcLEQcKAggEAgYCBAcEBQQCAwMBAQICAQEDAgQCBQEIAwgFCwgFBQUCDwMHAwwNBgoEAwkFDAsDDBUKBQsFBAECAQIBAgQIBAECAgICAwEEAQICAQUKCAcLBgYMBQwOCAcDAQ4IBw4HDAoFCA4GBwICFhoMHBoNGAwIDAcHDggZKxQODQkGAwkGAgoHAwYHBAgJAQ4DAgIIAQQEAgECBAMIAgEEAgQCAgQCAwEBAgMBAQEBAgIBAgECAQEFAwECAQcDAQQDAQQCAgQCBgQCBQIHCAMLBwQEAg4NAwUDAwsFBQwFBQkHBw0ICBULCQsTGQwKEQoDCgMCCQUJDwgIEAgIAQEMBAILAgcCAQsBAgkLBQMFBQkGBAUFCAQDBgoFBAgFBAcDCQQCBw4GBgICBAEBATwHARILCAEBDQwJBwECBQ4FBgQFCgMCBgwHAwYDBQoHEAgKEAgHBQIHDQcFCgIMBwQQBQcFBwsGDx8PCw8HDw8FBQYFBgICDQgDCAUCBAMBBQQCAgcCAgECBAEBAwMCAQECAQQCBwECAQEGAgQCAwkDAgICCAEKBQMDCAIJAQkBCgICBAUECggECxAJCxgLBAkCCQkFBQkFDhoLDRwKEBQJEgkNBQYLBQ8HBQMIAwgEAg0JBQEHAgUPBQcBAgsLAwIBBQIEAQUBAgQNAgQCCAYFBQcEFxUFCwMCBkoFBwoCCQQEBgQMAgEGDAUIBQIBAQEBAQEECxULCAECChEHAggAAAL/x/8lAtcC3QIpAqwAACUGFhcWFhcWFhcWBhcWFhcWFhcWFhcWFhcWFhcWFBcWFhcWFBUWBwYWBxQGFQcGFAcGBhUGBhUWFhcUBhcWFBcWFhcWFhcyFjM2FjMyNjc2NzY3NjY3NiYnJicmJyYnJiYnJgYHBgYXFhY3NjY3FgcGBgcGBgciJyYmJyYmJyYmNTY2NzY3NjY3NhYXFhYXFgYXFhcWFBcWFhUWFBcGFhUGBgcGBgcGBgcGBwYGIyIGIyYGJyYmJyYmJyYiJyYmJyYmJyYnJiYnJiYnJiY3NzY2NzY2NTY0NzY2NzQ2NTQmNTQmJyY1JicmJicmJicmJicmBiciJiMmJicmIicmJgcGFhcWBhcUFhcWFhcWFhcWFhcWFhcWFhUGIgcGBgcGJgciBgcGIgciBiMmBiMGBgcGBicmNjc2Njc2Njc2Nzc2Njc2Nic0JicmNzQ2NTYmNTQmJyY0JzQmJzQ0JyY0NTQ2NTQmNzQ2NzY2NTQnJiYnJjYnJiYnJjYnJjQnJjY1JiYnJjQnJiYnJiYnJiYnJiYnJiInJiYnJyY3NhYXMhYzMjYzMjYXMjYzMhYXFjYXFjc2Fjc2NjcWNjMWFjM2NjMyFhcyNhcyFhcWFhcWFhcWFBcWFxYXFhYXFhYXFhYHFhYVFhYXFhYXFhYXBhYHFhcWFBcWFhUWBhUGFgcGBgcUBgcGFgcGBgcGFAcGBgcGBgcGBgcGBhUGBgcGBwYGBwYGBwYiBwYGBwYmJxYWFxYWFxYWMzMyNjc2Njc2Njc2Nhc2Njc2Njc2Njc2MjU2Njc2NDc2Njc2Njc2JjU0NCcnJiYnNicmNCcmJicmIjUmJicmJicmJicmBicmIicmIicmJgcGJgcGIwYGBwYGBwYGBwYUBwYHBgYVFAYHBhYVBhYVFRQUFxYGFxYWFxYBlwEIBAQIBAIHBAoBAQIIAwgBAQgCAgUGBQMDAgICAQMBAQEBAQIBAgMCAgEDAQEBAQEBAQMDAw4ICBIOCQEBBgcDCBEECgsMAwMMAgIBAQEDAQMEBAYGBA8cCwMFCQQGBAwFAgsBBgMCCgMDBQYEDAYDBAQCBgEFAggMAw0GBg8IDhAICgEBCQUFAgEDAQEBAQEJAwUWDAUNBQQIBQcICgYDBg0FBAcDCRMLCgUCBgkFBQoHBQUDCAMDBgIDBQEBAQMEAQICAQEDAgIBAQMEBAcFCAcIDgkFDQUOHA4CBgMOEggFDAULFgwBAgIGAQMEAgMCAgQMBQQFBQcJBQkECAYCCxwNEhIJBAkFCx0OBAcECAQCCxUKCwcDAgwFCQ4ICQEBCwgPDQMCAQIBBAIGAwMBAwECAQICAQEBAQMBAgECAgICAwICAQEBAwECAQECAgMBAQICAQECBQICBgIFBwUFBwQEDAYNAwILDwEECggDBwUECAUFDQYGDQYMGg0YNRsWGA0aDQgSCAcKBQgNCQcRCAUKBQsGAgIHBAUHAwgHAggBCQYEBAMEAgIDAgIEAgMGAgUCAgQCAgIEAQQCCQMEAQECAQMBAgEBAgECAQMBAQQFAgUDBwICAggDAgICAgQICAUGDwIEBAgEAwcGBAQJBAgR3Q4TCA8NBwgKCA0RIxAFCQUQCQUHEQYCCAMCAQICAwEDAgICAgICBAEBAgMBAgECAgICAgECAQEBAwIDAgMFAwMQBAcHBw8QCAsbCAsLBwkQCQ4ZDQgDCwsIAwEBAQMBAQEIAQEBBAECAgEBAQUCAgYCAgf3BAUCAwUBBAQDBQIBAwYDBgMBAwIBAwgFAwQCAwgEAwUDAggDDw8JGw0EBwQQCBAJCAsLCQ8GBQsGAgYDEBMHBgcDAgQBAQEBBQIIBQgCAwgFBRQFBwUHBggCAwUCBgkGCRsGAQIBBQIBBQIGAwIJBAECAQIDBwwHBQ4HBAYEDAkCCAEBAgICBAcHAgEKBwYGAgMHBQQMBQYLBAUMBQgPBgIFAgICAgIBAQEBAQIBAgECBwEFCAMECwQEBgMIBQcEAwUJCRQTJBEDBQMGEAgTIxIDBwMCBgMHCwcJBgoIBQgFBQsEBwsHAgEBAQICAgIBAQQCCBQKHkMZAgsCBAUCBAQDAwUDBQICBgEDCQEEBAQEAQIBAQICAgEBAQIDAwMDCAYFCA4FBQIBBgMJDSoRBQwDBAgFFg4EBQQFEAUJDQcLEgsCBwMFCQUIEAkCBgMFDAUEBwQKAwIHCAMEAwwMCAUMBQoTCg8bDgsDAgUJBQUKBAMFAgIDAwEDAgIEAQICBQEBBQcGAgEBAgEBAQEFAQIGAQEBAQIBAQMBAgIBAQEBAgECAQIBAQIBBQECBgIBCAYIAgYBAQIGAgIFBAECBAMDAwcFAgUHAwUFBQwKBwkFBAcDBQgFBgwFBwYFCQQCCQMBCwwIDQgECwsFCAwGAwcDAwcEBQwGCAsCAgIEAwICAQECAQEBPwMGAgMEAgIBAwQCAwEFAgICBwIFAwICBwMDBQMMAQkCAgQHAwoHAwsGBAgWCwUWAhAHEQUHBgYOBQIGAwsBBgwFBQsFCAICBQEBAQQCAQIFAgIBAQICBAIDCgQCBQMECQQaEQkVCggRBQsDAgwgDxIFCwUNBgETGA4HAAAAAQAJ/+MCAQMRAn0AAAEWBgcGFgcGBgcGBgcGFAcGBgcGBgcGBgcGBgcGBgciNicmJjUmNCc0NCcmJicmJicmJicmJicmNCcmNCcmJyYmJyYmJyYGJyYmJyYiJyYmJyYmJwYmIyYmJyImBwYGBwYGBwYGBwYWBwYGBwYWFxYGFRYGFQYXFhQXFhYXFhQXFhcWFxYWFxYWFxYWFxYyFxYWFxY2FxY2FxYWFxYXFjYXFhYXFjMWFhcWMhcWFhcWNhcWMhcWFhcWFhcWFxYWFRYWFxYWFQYWFQYGBwYGBwYGBwYGBwYWBwYGBwYGBwYGBwYGBwYGBwcGBwYGBwYGBwYGBwYGBwYGJwYiJiYnJiYnJiYnJiYnJiInJiYnJiYnJicmIicmJicmJyYnJiYnJiYnJjYnJiY1JjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NjYzNhYzNjIXFhcWFhcWFhcWFhcWFhUWBwYUFQYGBwYGBwYGBwYmJyYiJyYUJyY0JzQ2NzY2NzYWMwYGBwYGFxY2NzY2NzYmJyYmNSYmJyYmIyIHBwYGBwYGBwYGBwYGBwYGBxQWBxQUFxYVFhQXFhYXFhYXFhY3NjI3NjY3NjI3NjYzNjY3NjY3NzY3NjY3Njc2Njc0JjU0NjU1NDYnJiYnJiY1JiInJicmJiMmJicmJicmIicmJiMmMSYmJyYjJicmBicmJyYmJyY0JyYmJyYmJycmJicmJicmJyYmJyYmJyYiNSYmJyY0NSYmNzY2NzY3NjY3NjU2NzY3NjY3NjY3NjY3NjY3NjY3NhY3NjYzNhYzMjYXMhcWNhcWFxYWFxYWFxYWFxYWFxYWFxYXFjY3NjY3NjY3NjY3NjY3AfsGBQECAQEBAQMBBAIBAgICAgEBAQECAgIEAgQBAgUCAQEBAQEBAQQCAgQCAgUCAwIBAgIDAgwGCQUEBA4FBAYCBQoFBQgEBgwFAwcCBAUCBQ0FDQ4ICA4GBgwEBwUCBQEBAgMBAwECAQEBAgQBBAIBAgICAgIGBgECBQMCBQEIDAcJBwIFCAQGBAICCAUECwYLCwcCAgMHAg4IAwcCBQUBBQkEBQMCBQYCChIIDQ0FBwEEAwIBAQEBAQEBAwIDAwIFCAUFAwIGAQEIAgIJAgECBAMIAwEFBAIJDgYODAYFCQYGDggFEwgMGw0DCQsLAgcIBQQIBQgFAgcFAgIFAwMFAgQGBQIBCAECBAIDAgIEAwUCAQYCAgMDAgQDAgMCAwgCBAgEBAcFAwkDAwYEBwcIDwkDAgcDBhAFDQIJBgIGAgIHAQIBAgICAwcDBQMGBAEGAwQYAwoCAggBCQEBAgIGBQ0LCQIHBQULAhIMCgUJBAUEBAQFAwkEAwkFBQcKCAECDQcEBAcEBwQCAQQBAQEDAwYCBAgFCQsHCREOCBYIBQsHBAkGBw8JBg4GAwcDDBILAgQCBgICBgEDAQQBAQUDBAMHAwEKAQsCAgwLBg4GBQUIAgoDAgwJDQcKBgoFBQgEDAgEBwQMAgMFBQQIAgkLAwUDBwIDAgIBAgICAgMBBQUCAQEBAgIEAgUDAgQCBQIDBgsGAwIGBQIIAgMFCQQLCwcKDAYEBwUFCQUFBwQGCAQIAw4FBQ0FCwoCBwwHBQQEBgYEAwsPGQYJCgYDCwUCBAMHAgMDEQIMBQcPBw0cDQYLBgUMBQoUCwUMBgUKBQoUCwsFAQkFBAYEBAcEAwcDBAcFBQsFAwYECgICBQgEBAUCDAQIAgICBQIEAQECBQECAQIDAgIDAQECAQIBAwIBCAUHBwQKCgYIBAIEBgIPCAUFCAUIAgIMDxALBAMEAwMGAgUIBgMDCQQCBQUCCAUIAgQBAQQCAgEBAQECAgEDAwEBAQECBAEBAQMBAQECBQEBBQEFBwYKEQgMAgoCAgQLBQgQCwgCAgUNBgwGBQsWCAcDAgoEAgoGAgoBAQIJAwcBAQYCAgcHBQcFAgIFAgQFAwIFAQIEAgECAgEEAQICAwIFAQEIAgIGAgIBAwEI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BgcGJhUHBgYHBgYHBgYHBgYHBjEGBgcGBgcGJicmJjcmJicmJjcmJic0JicmJicmJicmNCcmJjU2JjUmJicmJicmJicmJyYmJyYmJyYmJyYmJyYmJyY2JyYmJyYmJyY0JyY0JyYmJyYmJyYmJyYmJyYmJyYiJyYiJyY0JyYmJyYmNzYWNzc2NzYWMxYWFzI3NjYzFjYzNjY3MhY3NhYzNjYzMhY3MjYzMjYzMjYXFhYzMjYXFgYHBgYHBgYHBgYHBgYHBgYHBgcWFhcWBhUWFxYWFxYXFhYXFhYXFhcWFxYWFxYXFhQXFhQXFhYXFhQXFhYXFhYXFhcWFBcWFRYWFzY2NzY2NzY2NzY2NzY2NzY3NjY3NjY3NjY3NiY3NjY3NhU2Njc2Njc2Njc2NzY2NzY2NyY2NyY2Nzc2Jjc2Jjc2NzY2NzY2NzY2NzY2NzY2NyY2NzY2NzY2FxYGBxYHFhYXFhcWFxYWFxYWFxcWFhcWFBcWFhcWFxYGFxYWFxYWFxYWFxYWFxYUFxYWFxYWFxYWFxY2NzY2NzY2NTY3Njc2Njc2Nzc2Njc2Jjc2NjcmNjc2Jjc2Njc2NDc2Jjc2NDc2Njc2NDc2Njc2Njc2Njc2NicmJicmJyYiJyYnJiYnJiYnJiI3NhY3FjY3FjYzMhYzNhY3NhYzMhYzFjcyNhc2NhcWNjMyFjM2NhYWFxY2FzYWA+4TBwsIAgMGBAQGBQoXCwgOBwgNCAMFAwMJBgMCBAECBAEBBgsDBQIEBAQFAQUCAgIBAQEFAQIDAQEFAQECBwIDCAUBAQEBAwECAgUDBgMCAQMFBwICAQICAgIBAgIEBAMCAQIGFgQGAwIEAQICAgIFAwECAwECAQEBAgICBAICBQsIAgQCAgQDBAIBAQEEAgICAgQCAQEBAgICBQUCBAYNBgIBAgMEAgEFAgMCAgUBAgECBAIHBAECAQQCAgECAQQCAwUDAgICAwIBAgUEAgQCAgEEAgECAQMCBgECAgICAgEHAgICAwQCAgECAQQJFwgCBQECAwIFBAIFAQICAQEBAQIHBAEBAgIBAwIEAwECAgIDAgMBAQMCAgICAQICAQEBAQIBAwIBAQIBAgECBAIHAQwHBgUDBQkBAQYDAgUKBQYCAg0IBAkBCAgEBwQBBAoHHwsIBAoGAwcDBgoLEwoKDQcIDQcECAMKBAIECAQFCAUFCAUFDAQGBAUOCAQFCAUCCAMIEgkMEggMCgUMDQYFBwUFBgMBAgMBAQQCAgIDAQIDAgIDAgQCAwICAQIEAQEFBgECAwEBAQEFAgIBAgQCAgEFBwECBQQCBAMEAQIBAgUDAgMCAgUCAwIDCQMDBAMFAgEFAwUEAgECAgQCAgECBAQFAQIDAgIBBQIBBAIDBQEBBQEBAQQDBwIDAQICAwICAQIBAQQCBgIEBwUHAgMEAQIHAQYCAgIDAQUCBgMCAgIDAQEBAQEBAwECAgEBAQEEAgMGBAIEAgIBAQICAgMCAgUCBAIDCQUCAgMCAQQCAgICBwECBQEGBQUDBAECBQQEAQIBAgIBAQIBAQEEAQEBAQIDAgECBQQCBgQCAQECAQEBAgYDCQEDCAMECAcNBwYOCAsKAQIGBAMIAgkCAQQHAwUOBggPCwoIBQgECQ8HFxsQDAUCCA8GDhYXFQgFBwQCCQL6CgcDBQMDAQECAgIFCAUFBgQEBgIGCwcFEQoFDgcFBQIKAgENGhAEDQYHEggFBgUDBQMDBAQKCQQHAgIFAwIFDwcLFgsDBQMCBQMIBwsVCw4NBQkGFBsOCA8ICAUIBQYLBhMWCgcBAwUKBQQGCgQDBg0HDAgFCRMKDhYNBwoHAwYDCwMCBwwHEBAIFCUTBQcFCBQJCRIFCAQKEQgJEwkLBwICBgQGBQgQBwIIDRwPAgYDBgwKBQgECAUFCAUFCAUICAMLCAMCCQQDBQQECAUECAMIDwgFBgQLAgIGDgYEBgkDAg0GAgMGAwkBAgwGBQQCBwIIDQcHDAYLCgcDBw8HAgECAgcCCBEIDA0GCxgMBQoHBwkEER4QBAgFBAUGAwYEDCEQBw8JCBQLCgkGDwgJEwsFCAUFCQYFCwULBgMCBQQIGgkKBQIJAgEJAQEECgQEAgEDAwIDBAMEAgcCBAIBBAUCCgIFAwEBBgECAQEBAQECAQIBAQECAQEBAwEBAgIBAgIDAgECBQIFAgIFBwUJCQUGCAQHCQYDCAIMBRAcFA0GAwgLChILDwIFBgUHDgcLBAcNBg8ICQkIDgUHBgIEBwUCBgMDBgQFDgYLAQcIBAkFCwkEAgsFCxkMBAYCCAsHBAgDBQYDCwUIDggGCwcHAgMDDgIMAQkFAgMEAwIGBAkIBQYDBAMCBgUCBAYDDAgDAgcDAQYHCBIKAgcEAwgEAwgDAwYBBQoFDhEKCgQCAgcECQ4NCAUJCwoOCBEIBg0HDAcDAgUKBQIGAwgEBAcDBQsFCxYLBQsFBw4IBwoGCBoLBw0JDhkLAQ8GBw4HBgYCCgQIBRIQBwsKHg8OBwoJBAsJBAUGBQgCAwQGBAMIBAUHBAUHBQoIBAQHAwoLBxIPCAMEBAsGBQMCAgQBBAIBBAIDAgIDAgQGBAEBAQEBAQICAgEBAQEBAgEDAgIBAQECAQEBAQEBAQECAgIAAf97/9sC4gLuApcAABMGBgcGBgcGBgcGBgcGFhcWFBcWFhcWFhcWFhcWFhcWFhcWFxYWFxYWFxYWFxYWFxYWFxYWFzY2Nzc2NDc2Njc2Njc2Njc2Njc2Njc2Nzc2Njc2NzY2NzY2NzY2NzY2NzYnNCcmJicmJicmJyYiJzY2NzI2MzI2MzYWNzY2NzYWFzYWNzY2NzYyMzYWNzYzFgYHBgYHBgYHBgYHBgcGBgcGBgcGBgcGIwYGBwYGBwYUIwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYWFxYWFxcWFhcWFhcWFBcWFhcWFhcWFhcWFxYXFhYXFhYXFhYXFhYXFhcWFhcWMhcWFhcWFhcWFhcWFhcWFhcWFhcWFhcWFhcUJgciBiMjIgYjIiYjIgYnJgYHBiYHIgcGBgcGJgciBgcGJic2NjU2Njc2NzY2NzY2NyY0JyYmJyYmJyYmJyYmJyYnJicmJyYmJyYmJyYmJyYmJyYnJiYnJicmJicmJwYGBwYGBwYGBwYGBwYHBhQHBgcGBgcGBgcGFQYGBwYGBwYHBgYXFhYXFhcWFhcWFhcGJgcGBiMiJiMiBgcHBiYjBiYjIgYHBgYHIiYHIgYHBiIjBiYjBiIHBgYnNDY3NjI3NjI3NjY3NjY3NjY3NjY3NjY3NjY3NzY2NzY2NzY2NzY3NjY1NjY3NjY3NjY3NjY3NjY3Njc2Njc2Njc2Njc2Njc2Nz4DNzY2NyYmJyY0JyYmJyYmJyY0JyYmJyYnJiYnJyY0IyYmJyY1JiYnJjQnJiYnJiYnJiYnJiYnJiYnJiYnJiInJicmJjU2Njc2FjcyNjMyFjMyNjMyFjMWNjMWNjMzMjYzMzYyFzYWzwEMCAUIBwsGBAMFAgYGAgYCAgcCAgMCBAgEAgYCBAQCCgcDBwQDCQUDBQQDCAMFBgQHAwQDBAIHBQICBgIEAQIGAQIIBwQDBgMFAg4FAwEGAQkGAgUCAgIDAgQDAgQEBAQNCgcXCQ0GDwsDBRYMBQwHBQsFChMLBQkGEC4UCxULBQkFChQMChgOCgUCBwMDBwQNCwUDBwQDCAUMBgoEAwUHAg0BBgQCBg0FCQEECQMLBgQCBQIFBgMCBQMCAwICBwIECAMDBQMGCwQHAgUCAgQBBgQCBQIFAgIBAwIBBAIFBgQIBQYFCAsFBwECBgICAQIHAwIGAQQCBwYCBAcCAwECCAYDCAUHDAQKAwINDQUFBgQLBwUHAwILBgMHBwIHAgEGBgINBAULBRIEBgMCBgMJEwsJAwUFGgYUFQoVCgQKBAIHAg0KBQcDCxQJBAMIAQECBgIEAgcFAwMJAgQCAQYBAQgIAgYDAgMIBQcFAgIHAgUBAQMGAgQCCAEIAQICBgsDAgQFAggOBgUDAQ0IBAIFAgQIBQMGAgYEBAMCAwIGCAQDCQIKBA4DAwYECBACBgQEDAkEAwcDBQsGCwYOBwcNCAgTCQ8aEQsDAgMGAwQIBAoDAgoLBQgOCAUCCAQCCQICAwUDCgICBgsFBAUEBAUDAwUDCwgHAwQFAgMFAwcCBwIHBQEGCAUHCgYHAQIGCwUFAwQHAwgDAgICAgQEAQgBAQoNDQYGDgkEDQUGAQQGAgUHAwcBCAICCAQEAwIIBwEJDQUGBQMCCAIICwQCAQIJBgEKGQsLEwoOCgUDBgUODwUHAQoCCBEIBhAGAgsFBw4HBQwFCxYLBwkFCwULBicECgUHBgLpCAYBAwYCBAYCAwYEDAYECAgCBAYDCQYEBgsFBQkFCQQCDQoFCgUFCwUFCwUFBgUECgUGCAICBAIJAgUCAwQFBwUCBgMCCggEAwYEBQYQBgEBCQELCgQIBQICBwIEBgIPBwgIBwYDAwMCAwQEBAgBAQECAQIBAQEBAgECBQMBAQIBAQEBAQIEBAICAgIFBQICAgIDAwIHAgUEAgMBAgcEAgICBAMEAgIKBQ4MBgQHBgIIBAIIAgIFAgIHAwUJBQQHBAcLBQgJAgIJAQcLBQMLBQcDAQIFAwwIBQQIBQoGCgYJCgUHAgICBgQCBgILAgIHAgMICwYFCAcFBAYCCQkFDAUPCQgFAggFAgIBAgMFAgICAgcDAgUCAQcBAQMDAQoCAQIBAQMBAQIBAQIBAwICAgIBAQMBBAICCQICBQoIBAYIBAECBgQHBgMKCAUFCwgHBgMGAwIJDwQIBwMFEQYIBwQDCAQIAwEEBgYDAwoBBQMCAwYHBwMDBwMMEwoMAgIRDAgDAgUGBg4ICAcECQEKBwMCCQMICggQBQEGAQQBAgMCAwIGBQQCAQIBAgICAgEBAQMBAgEBAQEDAQECAgQBAgUDBQQCBQEFAQIEAQICAQIFAgICAgICAwICAgUFAgIEAgICBgMGAggBAQsEAgoIBQoJBggDAgcMCAUEBgkECwUCAgcCAwICDQELDwsLBg8bDQkPCAsCAQQHBAUJBQkCAQkEAgYJAwYCDAgCCA4HBwQEBwMIAgEICQUCBgILCAULDgkCCQUEBAICAgUJBAMDBQIBAgIBAwIDAwEDAgIBAQQCAwAAAAH/Zv/kAo8C+wH5AAATFgYHBgYHBgYHBiIHBiIHBjEGBgcGBgcGBgcWFhcWFhcWFhcWFhcWFhcWFhcWFxYWFxYXFhYXFhQXFhYXFhYXFjc2Njc2Njc2Njc2Njc2NjU2Njc2Njc2Njc3NjY3NjY3NjY3NjQnJicmJicmJicmJjc2FjcWNjcyFjc2FjM2FjMWNjcyNjMyFjMWNhc2MjMWNjMyNjMWNjM2NhcGBgcGBgcGIgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcHBgYHBgYHBgYHBgcGBgcGBgcGBgcGBwYGBwYiBwYGFQYGBwYGBxYGFRQWFxYGFxYWFxQGFxQWFRYGFRQWFxYGFRQGFxYWFxYXFhYXFjIXFhYXFhYXFhYXFjYXFiYHIgcGBgcGJiciJiMiBiMiJiMGBiMmBiciJiMmBicmJicmIicmJiMGJiMiBic2Njc2Njc2NzY2NzY3NjY3NjQ1NCY1JjY3NjY3NjQ3NiY3NSY2NTQmNzYmNTYmNTQ2JzQmNSY0JyYmJyYnJiYnJiYnJiYnJicmNCcmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYnJiYnJiYnJjQnJiYnJiYnJicmJicmJicmJicmIicmIjU0NjIWMzIyMzI2MzI2MxY2Nzc2Njc2Mjc2Njc2FjcyNjMyNjM2Njc2FrYDAQICBgICBQIDBgIIAwEJDAcECggCBwIBAQcEBgMCAgMCBwEBAgUCBAQCBAICBAIBBgICAgcBCAUEBAcEDgkDCQMECQUCBAIECAIDBAUGBAYLBgcKBg0EBAUBBgMCAgIFCAkCBQUFBA0DCAUCAgsFAxMGAgYDDQsFAgsCBQgFBQcECA8IChAGBQsFBAwFBQcEBgUECxsPAgcFBAgFCgQCCgICBAgECA8IBAgFCA4IAwYDBw0HBwMEBwMCEQYDAgoIBAIDAggCAgQCCBAIAgMCCAYGBQIDAgEEBAMCAgIGAgIDAgEEAQEBAgEBAQMCAwQBAQEBAQECBAEEAgIEBgMCCwYEDR4PCQQDCQECAwYCBwQFBwULGAsKBgIDBwQGAwIIDwgNGw4DBwMFBwQGCgYFDQYGCwULAQECCAELBgUHBgMLBAQJBQQGBgwCAgIBAQQCAwEBAQICAQEBAgIEAgICAQECAQICBQMEAgYBAgIGAwIEAgkCCgIJAgUCAgMHAgQGBQcEAgYHAgIFAgUEAgIHAwUCBgEBAgYCCAEDCgYEBwUIBggEAwsJBgQIBAcFAg4NCAoJAwIYAwsHBQwIBA0hChMJEQgFCAQFBwQHDgcDBwMDBwIFBwQFCgL7BgYCAgIBAgMCAQIGAggGBAIIBQIJAQILEggLBwIBBwIJAwIECgUIAwIIAgQGBQEIAgQECgIBCQ4FBQYFBQkDCAUFCgUCBgIFBAMHAgIIBgQHDggGDgcNAwcCAwkDAQoECA0CCAIFBgMEBQIGBQUIBAEBBQEBAQMCAQIBAQEBAgEEAwIBAQIBAQEDBQQDAgIBAgUBBQIBAgICAwcDAgICAwsEAgECBAsHBQMCBQQCDwgEAgwKBQMEAwkEAgQCCRAIAgUCBg0IBwQIAgoJBQIEAwMGBAoRCQgQCg8OBgUIBQQHBQYMBgUNBQUKBgUNBgUJBRQmFggLBwoFBwEHBQIGBwUDAgEDAQINAwECAQMBAQQBAQMBAQIBAQICAQEBAgYCAgEBAgEBAwUIBAMFAQIIAwIDAgIEBAYEAgkDBg8ICA4IBAUEAgsFDQwIIQUIBA0aDgwCAgUNAwMKBQMGBAQIAgUHBAYFCAYCAwYDAgQCCQIHAwILBAUFAwcFAwUOBwgDAwwFAwMHAwoEAgQJBQoBBwMCAgUDCAEBAwQCAgYCAgQCAwEDBwICAQMEAQUFBAMBAQIBAQICAgMCAQIBBAEBAQEBAQEDAQIBAAH/7P/zAmgDKwILAAABBgcGBgcGBgcG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ogIGAgIBAgIEAQECAQYBAgECAQMBAQIBBgICAgQDBwMFAwIKCwcBCgMFBAMJAg4JBQwJBQgCAgkSDAsSCAgBBgMHAgIFAgkGAgIIBAUCAgICAgICBAEDAgEDAQIBAgEBAQECAQEBAQMCAQEFBQMEAgICBgMBAgMCBwQCBQcEBQkGCBMKCxAHAwYECBEIBQ0HBgcFCwcLAQMIBAgFCAIFAwYBBgkGGiYXCRUNBAcBBgMFBQkDBgQDCAoJBQMHAgICAQEBAgECAQEBAQECAQICAgYBAQECAQQBAgQBAQEEBQEHAgIFCgoIAwweDgQJAwIIAgEHBQMLCA4MBgsXDAQHBQoEBQcEESJSAQMBCQgNCgIFBwIFAwEGCwMECQMDCQILCgQHEwUFAwIBAgkCAwUECgMFAwoDDQ8HAwUCDgoEAwcCBAUCBAYCCAECCAECBQcFBQgDBQECAgQCAQECAQEEAQQBAQEDAQQBAQICAwEGCAIFAgsEAgUMBQcDDwMFBgQHAwsGBAQHAgsCBQICCggCCwkFAwcEBgEBBQEBAQIFAgICCgIEBgoGAgYIBQgBAQUOCAIGBAMIAgUKAwIBAgUFAgMCAQwGBxYMBQ0FBQsCAQIBAQYDAgMCBQMCjBAOCAgOCAMIDiAQBg4JAxUFCxUKCBAIDQkFAgYDBQMCAgcEBgUJAgwKBgIBCQECCQIFAQkHAgMCAgQBAQICAwIKBQcGAQgCAgYBAgoGBQUMBQQFAwoFBgUIBAINBAgGAhILBwcNCAULBgUKBQkDAgcQCAQIBBESDAcDBwMIAgEDBwIFBQMFAwMGAgIHAwQDAQIBAgIHAgIEAwQIBQMEBwUICQkGAhMhFAoIAgMCAgQBAgUFAgEFAQgDBAQDBAMIBQMGAwMLBQUKBQQIAwsCCxsMGBYuFwMFAwQHAgcFAw8JCAwHBAcDAwYEDQYLBgUGBAoWDAoSCgsVCA0NBQQCBQEDAQQGAwECAgIFBQQBAQEBBAIBAQEBAQEDAQIF/iMFBgcLBwIBBQIDCAMMAg0JAgoHAgUDAQQBAwUCBAwHCwgFBQUFBxgGCgQECwQDAwYDCAoDBAECBQQBAQEBAQQCBAICBAIBBAQEBwoHDAkFAwYDAgcECBkIDBoJCw8GBRQCDgwGAggPBgkGAgwGBAgCBwECAwICAQMBAwkFAwMKBQMDBAIIAgMDAQgG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NCcmJicmNicmJicmJicmJicnJiYnJiYnJiYnJiYnIiYCNgkFEgsBAQoIBQIFBAgIAgYDBgoCAQEBAQEBAgEBAQECAgsEAQECAgEDAgEDAQEBAQMDAQEBAgIBAQgDBgYCAgQCBAgFAgQCBQsFDQkFCAkJBQsFCgsEBwUFDQYECAUGEAcZCBIJCA8IDgYHBAIHAQICBQIDAgEEBgICAgUEAQEBAQgCBgoIDAcFDQoFBgwHBxMGBQ8FDA4HBgYCAgIEBAIBAQMCCQICBgIFAwkJBAgRBQUQAgICAQEEAwQDAwIJBQUIBQUEBgEBBAUDAQUEBgcCAgIBAQcEChAKBAUCCwEBAgIJCgMJBQcIBgULBwQMBQYKBwcEAQECAgEBBAEBAQECBAMEAgIGAwgDAgUHBQsJBAgQCAUGAwUNBQcMBQUIBAgGAwkJBAUOBg4EBQIHAwMCAwMCBQECAgECAgEBAgEBAQEBAQICAQMEAggEAgQCAwcIAgQCAwYCBQMJAQIJCAQQEw0JDQgPDwUCCAIKBAIJAQkGAwQGBAcLCAIGAwYDAwYDAgIBAQECAQMBBAEEAgEBAQEGAgMEAQIGAQINEgsHBAIDBgIIAgIGCgUDBgQCBQQIBAMGAwQIBAULCAIFBAQNBAsECAQCAwUCBgMCBQMCCgYDBQUCAwEBAQIBAQEBAQEBBQgMGgwIDwgGDAYIDQcGDAcHDv7RBwoCBgwFAwcDBAkDCgIHBAEHAgUJBAICAgIEAQIBAQEBAQEBAgEBAQMCAQEBAgEBAQUCAgYCAggDBgoFCgMIDwUKBwgGDAQGCwUMDAYDBAMGBAYFAgUJAwcCAgECAgEBAQECAgEFAgIGAggJBgwEBwMGAQECBQIFCgQHCwIACQYCCQYCAQMEAgIEAgUEAgMCBRQHAwgDBAUCBgwIBQkFDyEQCREIFisRDgkFChMOHxEFCgUFCQUFCwUFCAUTKhUFCgULFAsFBwUFDQUJBAICBQIECAQCBAIEBgUJBAMFCAICBAMEBwIEAgIEAwIBAQICAgEEAgIFBAkFBQYDBgECAgMCCQICBgwIBQoRDg0bDgUIBQsSCwUUBgYEAgUCAQECAQIBAQYDBxEKCQkFBA0EBAgHCAIDBQILBAIFAggDBwYCAgQDAw0FAg4EDBQICgIDAgEBAgIHFQgECgECCAUFCQMCCQUEEAUFCQMKCwkHBgUNBQQNDQ0GAgMDBAoCAgIBAQEBAggBCgoEBgQGCwgLDwQEBwUHDAgOCgYGBAIDCQQHAQEGAwIFAQIBAgEDAQEBAQQCAwQCBAgEBAkFDAMCAgcGBg4HBQYIFwsIEAsIAwUIBQcLCAcHAwsWCwsUChYpFAEHAwsJBAYEAw0KAgQCCAYCAQIGAQEFBgIGBQEFAgMEAgIBAgYCAgYFBwMDBQMGDQQEBwQGCwUKBAILAgIHEQYQEwoFBwUDBwMaEQIHAg4HBQMGAwwHBAYDAggCAgsUCAQDAgIBAgUBAQIHAgICAQIBBAEBAgEBAQMCAgEKAgQCAgMFAgcEAwgDAgkIBQkDBQwGAgoFBAUDAwcDAwcDBgsFCAMBAgIBAQEBAwEBAScBAgECAQMCAgICBwgBAQoCDQ4HAwgEBAYEBQsFChIKEA4ICA4IBwwFBAYFBAkFBAcFBAkFCgkFDAoDCwIGBQQHAQMBBAUDBwMFCQMIDQcDCAQJAggIBAcPBwkJBAoFDBwLBAYFBw8HBQgFBQkFBQ8HDAQIAwcDAQQIBAUFBQQAAAH/xv9gAigClwHkAAADFjYXMhYzFjYXFjYXMhY3MjYzFjYzFjYXFgYHBhYHBhQHFAYVBhYVFAYHFBYVFBYVFAYVBhYVNjY3NjY3NjY3NjY3NjY3Fjc2NjMyNjcWNjMyFjMyFhcWFhcWFhcWMxYWFxYWFxYUFxYWFxYWFxYWBwYGBwYGBxQGFRYGFQYUFQYGBxQGFRYGFRQxFgYXFAYHBhQHBhYXFhYXFhQXFhYXFhcWFhcWFjM2Njc2NicmNicmJicmJgcGBhUGFhcyNhcWBwYGBwYmJyYmJyYmJyYmJzY3FhYXFhYXFhQXFhYXFBYVFAYXBiIVBgYHBgYHBgYHIiYnJgYnJiYHJiInJiYnJiYnJiYnJicmJic0JicmJyY0NSYmJyY2NTYmNTQ3NjY1NSY2NzQmNSY3NCY1NDY3JjU0NicmJicmJicmJicmJicmIicmJiMmBgcGBgcGBgcGBgcGBgcGFgcUBgcGBhcWFhcWFhcWFhcUFxYXFhYXFhYXFhYHFCYjIgYnIiYjIgYHBgYjBiYjBjQjBgYnNjY3Njc2Njc2Njc2Njc2Njc2Njc2JjU0Nic0JjU0NjcmNzQmNzY2NyYmJyY0JyYnJjYnJiYnNiYnNDQnJiYnJiY1JiYnJgYnJiYnJiYnJicmJiMmBicmJjYGCwUEBgUIDQgGBwYIFgkKBgMKBwUNDQUBBQICAQEDAQIBAQIBAgICAQEFBQMDBwIICwUFCgUFCQMHCgYIBwoIBQYOAwIHBQYOBwYNCAsHBQcDBQMCAgQCAgICAwIBAQECAwEBAgECAQICAQEBAgEBAgEDAgEBAQEBAQEBAgECAQEBBgICCwsCBgMCCwUHDQUKDAIEAQEGBQIGDwcDAwILCAcJBgMGAgICBxIGBQUCAgECAgMBBRQIDgcPEAUCAgICAQICAQQDBAkEAgQDBQgKBAYFBAcEBAYDBwQBAwYDBgQCAwUCDAQCBQQJAgEGAgEBAQEBAQIDAQEBBQEBAwMDAQIDAQIBBQIDBAICBgQDBwQFDAcQBwUPIQsEBwQDBQQDDQUECAQGAQECAQUBAgEDAQIDAgEBAQEBBQEBAQMGAgUKAwsEBAYFCBYLBw8HCBMMCA8ICwEIDggJDwYEBwgBAgoRCAgDAgMDAQMCAQgEAgEBAwEBAgEBAQMBAQIBAgIBAgIDAgIDAgEBAQEBBAMCAwULBQcCAgUGBgIGBAUOAwcCBQgFAgQClwICAQQCAgIBAQEDAgIBAwECBQsUCwkFBQYGAwQFAgQGAwMGAgMHBQgWCwoUCwsXDAEJAwMGBQQLBQIGAgIDBQEDAgQEAQEDAQEBAgYCBwMBCAYCAgIEAwMOCAcMBQcMCAoTDAUMBgkUCwsCAgwGBQYNBxQaDgMFAwkJAwsCDwUIDwkLFgwLGAwDBgMDBwIJBAINBQEDAgIEAQcEBw4SDQYCBwcDBQYFBQMCCxIEBwIGBgMFAgUDAgIEBAMGBAIHAyAOAQEBBgUGAgYEBgsJAwYDBQ0ICgEIBgMCBQIFBgECAQEBAQECAQIBAQUCAwECAgYCBgYDCAIHCAcIDQUGBgYRCAsUCwYLBRoeBxIHCw4LBwUNBxESBAcEBQsFFQ4JDwgIDwgOCwcCBAICBAECAgQCAQIFAgYDAwcCCw8JBxAHDQkFAgcEFC8ZCA4IDiEPBAgDCwQIBwQIAwgNBQgHBQUCAQEDAgICBgECAQEBAgMOBAQBBQMCAQUFBwcCAgYBAggCAhAyEwsVCQMGAwMIBQcGAwYCBQkFBwYFCA8KExwaMxkNGAsGBgMFBwUGEAcDBQQEBgMHAQEDBQIBAgICBAECAgECAgsA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AgIHBAcCBQMHDQYFCAoHAgcCAgECBQ0FDAcDBAUCDQoDAQYGAQgHAwMEBQQGBQoPCAQMAwICBwUEBwQLAQkEAgoGBQYFBAQFBwoFBQkDBg0FAwcCAgIBAQECAQMBAQEBAw0FAgIDBwsFBQcFDw8GBQsFAwcEDyINCA8ICRIMBAYDCBEIDwsGBQUEAwYBAgECAQMDAQIBAgMWCAMHAgIFBQ0DBAsFBQoFBgkFBQsFCQgkBwYDAwsFBQkDCBUEAwIBBAEECQcGDQUEDwYKDAUBBAIB+RUhEQwGCwYCAwgNCQIEBAECBQIDBwUDCgQLEwMNDwcIAgEDBwMDBwMLDwQDCAIXJxAFCgUFCAQEBwUIEwkEAwIBBQEBAgECAgEBAQIFBRUiEgIHAgwKBQILAggIBQgQBQkEBwMGCQFiCRAIBBkGBAkFCAEHCQIEAQEBAgEBAQECBQQBAQEBAQQCAQ4CBQUFCAYOBAUHAwwGAgUKBw0IBg0FDgkFDQgFAggQBgkSCA0MBQYKBQsKBwUDDwYLBQoIAwcKCAkSCAUGBQMGAwsLBgkLBAMFAgoIBwQHBgMEBgQMCAQOBQQJAwUDBgECBwECBQICAgEBAQQFAgIBBAEBAQICAQEBAQIBAQEBAQECAgEBAwEGDAICAwYEAQQHAQECBgIFAwIDAgUCBQIGAwYNCAsBAgcKBQsFAgULBQwJBQYDAgMBAwEBAQEBAQECAgMBAgEBAwEJFQwDBgQFBwUJCQ0KBQgRBwQLBAQGBAYBAgMKBQIBBQYCAQIDAQMBAgEBAwECAgEBAgMBAQIJAQIIAQgJBQMGAwICAgIECgQICgUJAQIKBQ0PCAwCAgoZCwUKCAwFBQMHBAwDBQMFCAUMCAYEDAgFEggDAwUFCAUFCAUHBgMHCQQJBQoFAggQCAUIBAUHBQQHBAMIFRAMBg0EBQMDAgUDAwEBAQIHAgUHBwIBCAcCCxINBAgEBA4FAwUJBgMGBgQEAgICBAYCBAICBgIQDgUHAwECAwIGAgIKCgkBBQICAgECAQIBAREFCA4KEQMDBgQDCAMJBQMCBgIEAQECAgEIAgUEAwcOCAcOBwgTDAsQCQQIBQQIAwULBQIFAwUDAgIFAgIEAQEBAgEBAQECAwEBAQQEBAcDAwUCAwkEBQcEBQYFBQcFCBEGAgYBAQIDAQEDAgEBAQIIAwUFGQQGAQIBAQIBAg4FCAECBwkGBQoCAgcEAgQKBgkPCQABAB7+8wKEAwgC7AAABRY2FxYWFxYWFxcWFhcUFgcGBgcGBgcGIgcGBgcGBgcGIicmJicmIicmJicmJicmNjMyFhcWFhcWFx4CMjc2Njc2Njc2JjU2JicmJicmJicmJicmBgciByIHBgYnNDY3NjY1NjY3NjY3NDY1JiYnJiInJiYnJiYnJiYnJiYnJiYnJiYnJiYnJiYnJiYnJiYnJiYnJjQnJjQ1JiYnJiYnJjQnJjQ1JiY3NDQ3NDY1NiY1NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY2NzY3NjY1Njc2NDc2Njc2Njc2NzYWNzY2NzY2NzY2NzY2NzI2FzY2NzY2NzI2MzIWFxY2MzIXFhY3FhcWNhcWMhcWNhcWFhcWFxYWFxYWFxYWMzI2NzY2NzY3NjY3NjY3NjQ3NjQ3NhQHBgYHFBYHFAYHBgYHBgYHBhYHBgYVBgcGFhUGBgcGFgcGBgcGFgcGMQYHBgYHBgYHBgYjBhQjBgYHBgYjBiciJicmJicmMSYmJyYmJyYmJyYmJyYmJyY3NDY3NjQ3NjY3NjY3Njc2Njc2NhcWFhcWBgcGBgcGIgcGBicmJyYmNzYWFxYWFxYWFxYWNzY2NzY2NTY0JyYmJyYnJgYHBgYHBgcGBhUWIhcUFhcWFxYWFxYWNzc2Njc2Njc2Njc2Njc2NzY2NzY2NzYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmJyYmIwYmIyYGBwYHBgYHBgYHBgYHBgYjBgYHBgYHBgYHBgYHBgYHBhYHBgYVFBYVFAYHBgYXFBQXFgYVFhYXFhQXFBYHBhQVFAYVFhYHBgYVFgYVFBcWFhcWFhcWFxYWFxYWFxYUFxYWFxYWFxYyFxYWFxYXFhYXFxYWFxYWNzY2NzY2NxY2NzYyNzY2NzY2NzYWNzY3NjY3NjY3NzY2NzYWNzY2NzY2Nzc2Njc2FhcWFxYGBwYGBwYGBwYGBwcGBgcGBgcGBgcGIgcGBgcGIgcGBgcGBgFODBgLCQ8HBgICBgICBAIEAQQBAgYCAwgFBA4GDAgFBiAIChoFDAYCBwgFBQICCQsGAwwECgUCBwgEERIRBAMGBAMWAgIBAwICBQICBwsFBgIICQcECgQICgQEBAUBBAEBBQEBAwEGBAcEBQgFBAYECA4HCgoIDg8ICA0FCwEBCAICDAYDBQUCAgMBAgMCAgEDBAIBAwIBAQEBAgECAQIBAQECAgEDBQMCBwIDAgEBAgICAwIDAwECAQEFAQUCAwMFAQMIAwkUCAgHBwECCg4IBQoEAwYCAwUDBwkFCRQKBAsHBQcFBg4HDQcEBwoMBQEHBAMHAwcCAggDAQIDAgYDCQUCBAcDCgkEBQYFAwoFBQQCAgICBQICAgUDBwEBBAEBAQIBAgIBAgIBAQEBBgEGAwMBAQIBBQEBAQICAQEBCAUFAwUFBAkEBwYCCgEKBwQFEQYKCwMFBAIHAwoOBAUCBQECAQIEAQICAgEFAgMCBQEFCAQHBwMGCQYOCAsfDgQDAQEBAwIFBAIIBBAXDQQCAQEDBQQCAgUDAgMCBAUIBAQCAgIBAgMGAgUHDR0GBAQEBQQBAgECAQMCBQgDAwUJEg8RBAcFCQMCBAYDBQoFBQMCAgECAgIDBAMBAwIDCwYFCwUCBQICBgMPDQYFCQUNCQQRHA4DBwMKCAUFCAUGCBIRCgUJBAMHAwMFBQIHBAIFAgIDAgQHBAQHBAEDAQMBAQEBAQIBAgMBAgMBAQECAQECAQMBAwEBAgUCAQECBAIBBAIBAgEDAgICCAIBCwECBgMBAgUCBQUEBgUKAwkFBwYHCAsHCw0DCQYFBAgEBAgFEA8JCAICDQcFBgQECQQSAgMDBwIBAwYCBQUCBgIBAwQFAwoDAgkEAwYEBw0GBgYEFQcLBQcOCAoKBQsIBAUFAwQHBAUNBwgQaAEDAwMEBQcBBAwECQMKGA4DCQMDCQQJBQQEAwUBAQEBAQgCBgEFCAUGAQIKDwMCBAQCBQICAwMBAgMBBAkFBwMCDgkFCwYCAQIBAQECAgIBAQIBAQIHBQgLAQICBgIFCgMDBgQCBAEBAQICAgMGAgQFBQoQBwcLBwQCAQIDAggHBAcOBQIFAwULBQQFAw4HAgsDAgsCAgQIBAUHBBAZEQgPBgMFAwgMBA4JBgQKFAsIFAsJBgQDCwUFBwUIBQIDCAMMAwoBAgkDBwICBQ0ICAwJAQYFAQEIBwQCBQMCBQICBgIFAwYFBQIBAQIBAQEDAgICBAcCAgEBBQEFAQECBgIEAwoCAgUEAgcJBwILEwsKBAcFBAsGBAUHAwQFAQINBQ4PDAYNBQULBQscCw0GAwQHBAwFAhIW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BwYGBwYGBwYjDgMBBg0XCwoPBgYCAgYCAgUCBQEEAQIGAgMIBAQPBg8JBx8ICxkFCAMLAQIFBwUGAgIJCwcDCwQKBQIICAQQEhEEAwYFAxUCAgEDAgIFAgIGCwYGAggIBwQLBAMLAwQEBAUBBAEBBAEBAwEGFhMLCwMCBgICBgMKBgYJAQICAwICAgIEAQUEAgMCAQIBAwEBAQMBAQMBAQIBBQUBAwYHAgICBgQKFgkDBgQMBwQFCAUEBwQKEwgFDAcNHgoKDgkCCQQCDA0FCgQCDRAFAgUDBwIBBQQBAwECAgIIAwIFAwQCAQMDAgUMBwUBAwIBAQYEAgUDAgIFBAICAgIDAQEBAQIDAgIFBgIVFw0OCBUICwgGAwIFAwULBQIGAgcBBgQCAQIIBgQDBgICAgIFAgICAgMFAQEGAwMDBgICAgIFAwQCAgkDCAgNBQ4IBwwHCAwHBg4GCgYEBAUEBAcEBwoHAggEBQIFBgIFBQICBgIGAgIDBAECBQoGBwMBAwUDFA4LAwIECAUECAQECgMKCQUhAQMDAgQFBwEEDQQIAwoYDgMJAwQJAwkFBAQDBwEBAQEJAgQEAQECCAQGAQILDwMCBAQCBQICBAMBAgMBBQkFBwICDwkFCwUCAQIBAQECAwMBAQEBAQECCAUICwEBAgYCBQsDBAYDAwMECAMCAQICBgMMBwsMBwQCBgQDBwMJAQwIBQkDAwYDAwYDBAYECAICAwUDAgcDFRkMEB0LDgsFAwoFFhYPAgQDCAUCAgICAgMBAwECAgYBAgYDBAYDBAUDAgQGAwcBAQISBwQJBAkEAg0CAQgCAwcCCgMNGw4PDQYKEQgVJxQLCgcEAgoDCAUJCwUIEAkFBQYJBQMDBwMDBgMDCAQIBwULBgQBAgIEBgUDAgIEAgYLBwMHAw0CDAgEBwUQFgwJEgsXFwYNBwcOBwgFBwMCCgwFBQcCBgIDBQMLBQcDBQIEAQEBAQEBAQEBBAECAgICAgMDBhAFBwwFCgIIBQsCCAMIBQQLBAYGBwUCBw0ICQEBAgYCCgMCAgEBAQECAQEBBQsMDAAA//8AJAAEAa4C2QImAFsAAAAGAKBc9wAA//8AJAAEAa4C2QImAFsAAAAGAFZS9wAA//8AJAAEAbEC0gImAFsAAAAGAOJS9wAA//8AJAAEAa4CsAImAFsAAAAGAKFc7QAA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AwIDBQQCBwIBAQEDBgIJHhAaDwkEAgcDAgMCBAEDAgIBAQQCAgIFAQICBAEGCAQEBgMHDggKEQsIAgcBBwIHAgMDAQMDAQEBAQEBAQQBAQkKAgIFBQUDBQcCCgUCBwEBBAoEBQIEAgEEAwMBBAIEAgEBAQMBAQIBBgIDBQIEAgoHAgIKAQMLBAUIBAYLBgkPCQkRBQUIBAkHBAQIBQUEAwQLBAkGAQkIAgQBAgIEAwQBBwcCBQEBAQMCAgECAQFrAgwDDAICCAUDCAEBBwUBAQEDAQIGAgUBCAcGAgYCAwMDDBcLDQECAQIFAgINAQICAQIDBAQCBwIHBQQFCwIFBQI6BgQCCwQCBwMFCgUGDggODQgKBgIEBwIFCAIBAgIFBgECAgQCBQsIBQ4IAwkECBENBw4ECQQJAgICAwIDAgEIAgIEAgIIAgYBAQUCAQMGAgkCBg0GBAYECAIJBAcFBQkGAwUDBhEIBAgGBgsPBw0CAwUCCAEIAQIDAgICBQQEAgIGAgQGDAcDAwUDBQQCCAgJBgMFCgQJDgUFDAUHAwIJCQUDBQIDBAQFAwIBAwMCAwQBBAECAQIDAQMEAgkIAggDAgYHAQ4KBQUFAgMJBQUIBQUIBQcRBgwDAwYDBQcECAMCBw4MAgcCAgoDCBEJCA8JBQgECBEICw0GBQkHBwILBwoHDAwGAwYEBgsFCQMGCQUEBwUKBgQEBgQHDAcKGAsIAgEJBAkCAwkFAwYGCwcFAwkDBQYFCgQCDggHAgMFAgYCAgQFCAQDBgMBBQcGCQEHAQIKCQQGCAUIBwsEBAkHBQsBAQMJAwQFBAwHBAIFAggHAgcBAQMFAwMBAgICAQEFBQIFCAUDBwICCQUECAQJCAEGCAUPDwgFDQYLBAIMEggMDAcFCAQECAUDBv7QAggFAQIHBgIJAQwGBAIHBAsLBQYIBQgGBQ0GBAgCAwQCCxULBQQDBwIGBAsKCgIKBgsFCg4IBQwECgkDBwoHAggAAQASAPgAvwGhAD8AABMWFhcWFBcWBhUUBgcGFAcGFAcGBgcGBicmJicmIicmJicmJicmJjc2Njc2MzY2NzYzNjY3NjY3NhcWMhcXFhanAw8DAQEBAQEFBQEIAQkGBgoeEgoEAwYFAQMGBAYHBAQJBAEGAwcBAwQEBwMKBQMECgYGDgkHBAwJBAGLCwoIAgcDBgwI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JyYmJyYnJicnJiYnJicmJicmNCcmJyYnJjQnJjY1NjY3NjY3NjY3NjY3NjY3NjY3NjY3NzY2NzY0NzY0NzY2NzY2NzY3NjI3NjY3Njc2Njc2Njc2NzYzNjYzNhY3Njc2MjM2MjMyFzI2FzIWFxYWFxYWByYjJiYjJiYjIgYHBiYHBgcGBwYiBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYGBwYHBhUGBgcGBgcGBgcGFAcGFgcGBwYGFxYWFxYUFxQWFRYWFxYWFRYXFhUWNRYWFxYWFxYWFxYWMxYWFxYWFxcWFxYXFhYXFhYXFjYXMhYzNjYjNhY3NjY3NjY3NjYzNjc2Njc2Fjc2Njc2NzY2NzY2NzY3NzY2NzY1NjY3NjY3NTY2NTQ2NTY2NTQmNTQ2NSY0JyYmNyYmJyYxJjQnJiYnJiYnJiYnJiY1JiYnJjUmJycmJicmJicmJhcXFAYHBgYHBhQHBgYHBhQHBjEGFAcGJicmJicmJicmJicmIicmJyYmJyYmJyYmJwYmBwYHBjEGBgcGBgcGBgcGBwYUBwYUBwcGBgcGBxYGFRYWBxUWFhcWFhcWFhcWFhcWFhcWFjMWNjcWNzI2NzY2NzY3Njc2Njc2Njc2JjM2Njc2NjU2NjU2FhcWFgcGBgcGBwYGBwYGBwYGBwYiBwYxBgYHBgYHBgYHBiIHBgYnJiYnJiMmJyYmJycmJyYmJyYnJiYnJiYnJjc2NTY2NSY2NTY2NzY1Njc2MTY2NzY0NzY2NzYxNjYzJjY3Njc2Jj8CNjY3NzYzFhcWFhcWFhcWNjc2Njc2NjcB2AMIBAkJBgkLBgkFAgIFAgcFBAMCAgICAgIDAgUBAQMDAgQDAgIFBgIDAgMFBAICBAIGAQEEAwIHAQIDAwYBAQYBAgIHAgYBAgcCCQgGBQoECBAIDQcFBQgFCgwCBQoFBAgEBAkFCgUOEAoGBAUGAwwMBgQHBQMHAwIEAgQIBwIBCgQCCQYDBgECBQYHAggIBgMEAQUEAgECAgEDAQEBAwIBBAIBAwIEAQICAwIDCQEHAgICAwIICAICBgEHAgQDAgYKCAcBCgIBCgMCBggDBQMJEwsKBAoCBAcDBgwGCA0MCwYFCgMGCQgOBwQIBQkDAgMFJgoHAgUEBQwGBQoHChMIEAYLBwcHAwUHBA4GAwUHBQIHAgUFAgUCAgIHAgcDAgcEAgYBBwcCAgIEAwICAgUBBQEBAwIDAgMBBAICAQIEAQIBAwcDBQgGAgIFBQQFBAIHAgICCQIFBQQJDQYGBAYNBQcFAw4IBQUJBQsBAQYEAwUHBQUJBQwBAQsFAwYCCQQBBQsECAEMCQUFBwQGBAcEAgIEAgECAgMBAQEBAQECAQICAQIBBQICBwECBgQEBQECAgQCBAEDBAIGBwIJAwMCBwIBAwcaAwICAgICAQECAgIBAQQCBAYBAgEEAgQBAgIFAgcCAgcBAwQCCQQCCgkDAggEBwQHAgQCAgUCAQEBAgMGAQUBBAQCAgECAQEBAQEBAQICBQQIAwICBgIJAgQFBwIEBgMLAQQGAwYIBQkBAwUKBQIHAgIHAQEEAwIFAgYDCAcCAgECCQoGBQMDBQQDBAMIBQMGAgEJBAgEAwUDAggECQMDCBMHBQgGCQMGBQQGAg4GBAYCAQYFAQMBAgMBAgIBAQIBAgEBAQQCAQMEAQIHAQQCAQYEAQQBAgEHAgcBARAQBQMDDgkIEAUHDAYGAgIFGgQGBwIEBQUC2AUGBQgMCw0OBwwJBAMEAwwJBQYEAgUHBQUHBAsBCQgFCwQCDAIXKRQFCwYKAgsOAwMNBAoBAQQFAggEAwUCBwEIBAQDBQQEAgYBBwcDAwUFAgcCBQECAQIBAwEBAQIBAgEBAgECAwMFAgIDAgcFBAIEAgICAgQCAgIGBQEJAgIHCAMDAgIHBgsGCQsLBQgCBwoFAwYDBwUGBQIHAwwJBhIdDggPBgkGBAcNBQgNCAgEAgIEAwkLBAIIAgEFAgEBBQIGCgUHAQYBBwQBAgICAgIEBwICAQIBAgEBAgEEAgEDAwEEAQMEAgICFQQBAgEBAgEBAQICAQIBBAIBAgEFAgEDBwEEBAIDBgIEBAIDBQMJBAIKCQQKAQkDCAgFBAYEBAkECQUCCQIBCQINIQwFCQUHDAYECAIOBgMDCAIMBgoCCQEGBQIGBwIEBQEIAwQFAwQGAgcHAgMCAgUDAwIBBQEBAgEBAQECAgICAgUCBAIDBAIBAggBAgQFBAcBCggFBAsFCAkJDAcECwIEBwUFCgURAwUDBwoFBgsFBQkFBQsFAwcDAwcEBQ8HDAMIBA0LBQkEAgMIAgcCAQQEAgoBCAMJAgUCBQECAgI9EAUKBQYOCAIHAwUMBQUIBQsDBwEDBwQD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BAEBAQUEBAsFAAAAAAL/rf/VA4cDCwNXA6YAAAEWBgcGBwYHBgYVBhUHBgYHBhUWBhUGFhUGFAcGFgcUBwYHBgYHBjEGJicmJicmJjU0NjU0NCcmJicmJicmJyYmJyYmByYmJwYiJyYGIwYGBwYiByIGIyYGBwYmBwYGBwYHBgYHBhYXFQYGFRQGFRYGFRYGFRUGBhUUFhcUBhcWFhc2Njc2MjcyNjc2NjM2Fjc2Njc2MTY2JyYmJyYmJyYiJyYmBwYGBwYGBwYUFxY2NzY0NxYGBwYGBwYHBiYHBicmJicmNSY2NzY3NjY3NjY3NjY3NjI3NjYzNhYzNhYXFhYXFhYXFhQXFxYWFxYGBwYGBwYGBwYGBwYGIxY2MxYWMxYXFjIXFhcWFwYWFRQHFBQHFgcGBgcGBgcGBgcGIgciBiMiJicmJicmIyYmJyYmNTQ3NjY3NjIzNhcWFwYmJyImBwYHFhYXFhYXFhY3NjY3NjY3NjY1JicmJicmBicmJicmJicGIicmJiMmJiMmIgciBiMGBgcGFhUGFhUWBhUWFBcWFgcWFxYWFxY2FxYWFxYyFxYyMzI2MzI2NxY2MzY2NzY2NzY2NzY2NzY2Nzc2Njc2NjU2NDc2NzY2MzIWFQYGFRQGBwYGFRQWFRQXBhYXFgYXFhYVFgYXFhYVBiYjJiYnJiYnJicmJiciIiciBgciJiMGBiMmJgcGBgciIyImIwYGIyImIyIGByMiBwYiIwYGJzY2NzY2MzY2NzY2NzY1JiY1NDYnJjQnNCYnJjY1JiYnNCY1JjYnJgYHJhQjIiYjBiYjBgcmIgcGBwYGBwYUBwYGBwYiBwcGFAcGBgcGBgcGBwYXFhYXFhYXFhYXFhYXFhYHBiYHIgYHBgYjIiYjIgYnIiYjIgYjBiYnIgciJiMiBgciJgcGBicmNjc2Njc2Njc2Njc2NzY2NzY2Nzc2Mjc2NzYxNjc2Njc2Njc3Njc2Njc2Njc2NzY2NzY0NzY2NzYmNzY2NzY3Njc2NzY2NzY0MzY3NjY3NjY3NjY3NjY3NjY3NjY3Njc2NzY2NzY3NiYnJiYnJiYjJhYXFhYXFjIXFhYzNhYXFjYzFjYzMjYXMhYXMjYXMhYzNxY2MxYWNzYWMzY2NzMyNjM2FjM2NjcWNjM2Njc2Mjc2Njc2Mjc2NjcFBhQHBgYHBgYHBhYHBgYHBgYHBgYHBgYHBgYHBgYHBgcGBgcGBgcGBgcGBgcWNjcWNjcyNzYWNzY0JzQ0JyY0NTQ0NzY2NzQ2JzY0NQYGA38IAgECAQEFAQIBBwMDAQIBAgEBAQIEAQICBAEDAQIEDQEBBAIBAQMBAQIFAwQNCAcFBQYFBQ4FCB0ODAsFCAIBCQcFBQkHBQYGCQcCAgYEChAIBgICAgEDAgEBAgEBAgEBAQICAQEBAQQBECgVCA4HBgwFDQQDCRAFCAECBQoEAQEIBgMGBAMJBQgPCwoGBwQGAgICChYGAwYHAQEBAgIEDgUPCAYGCAYEBwEFAwUCBgICBAsGBAcCCAMCAgYEBAcECA0IAwUDBQYCBwIHCAkCAgQFAgICAwwCCQICDwsICgIBCAEBCwgHAgEGAgsFAwMEAQECAgQEBQcFDgcFBAgFBAcEBQsHAgYDBwUIBAIIBAUCAwMPCQcSCggBCQkFBQkDCQQBCAQECAQLFQwFDgMCAQICAwMBAgQEBwcEDgcEBQYEBAkECgMCCAcBBRIKBAgFCRQKAQQBAgEDAQEBAgECEAoJBAQIBQcMBwMHAgwUDAYMBQkGBA8MBw4WCgQEAwcEAwYDAQIBAgYCAgIFAgECCAECAQYFAQEDAgQCBAECAQUCAQEBAQICAgIBAg0CBAcMBQUHBAsBAwoGBxMHCBEICxQLChMKDhkNBQkECwUCBgQEBwQFBwQJEQgMDQgCBwMFCgUDBAIFAwIBBAIEBQIDAQQCAgIBAgECAgECAQIBAQEPIBEIAwQHBAgCAgUICQwFGhgFBgQFAQYCAgQBAQwEAgsLBQQCAgUBAQICBQIDCAMJEwsKDwUGCwEHDQYJFAoFCQUDBwUDBgIDBgIDBwMLEgoGCAwWCwgSCAwTCgsGBAEGAwwHBQMHAwYLBgoNAgUDAgQDDAYCAgoIBQYECQYDBAMCCQQGBQIBAgQDBgECAgMHAQUDAQQBAgIKAwcDBQENDwECAgMDAQkFAQICAwEFBQUGBQICBgMFBgIFBQMEBgEDAgUCBgUGAgQLCAsGEgUOGwsFDAYEBwMMBgILGAsJBgIFCAUFCwcDBQQEBQUUCgUDExYKBwkFBQkFDQkGAwMFAwUJBQcJBAUKBQUIBQoTCQQGBAgJBf4nBAEIAQEFBAIHAQICBAIEBgcCCgIEBQIEAwEIAgIDAwUCAQcBAQYGBAQHAggTBwkVCiYSCQ8HAgEBAgEBAgEBAQIDBQMLBgsGBQcOEQIGAwQHEAoEAgoGBwcDBQsFBQkFDA0GBQgPAQ0IBQ0EBQQIGg4IDgcDBwMECAQOHA4FBAMCAwIDAgEBAQMBAQEBAQICAQICAQEBAgECAgEFBAUGBwURCwwJBRcHDAgLCAQEDgULCwgQCgcDAwYDBQgECBAIBAECAQEDAgECAgEFCwMCCw8UCwYIBQQIAwEBAQMCAQUJBgwJCAoHAgIFBA4BAQ0EBgsDBgcCAQICBAYCAw8BCA8HCAQJAwIECQMDAgIHAQECAQEBAQMCAgICAwMEAgIJDxILCxELBQkEBwsJBgIBBQUHAQMCBQYHAQYCCQIFDAUGCgQIBQUICgsIAwgECAUBAQECBQIBAQIDCAMDDAYFCQ0GCgIEAgkEBAkBAQEBBA0FAgICAQIDCAUCDQYDCAMFCQIRAgUFBAUBAgYBAQECAQEBAQICAQEBAQEBAwsTCw0GBAUKBREmDAkXDBIFAgQBAQEBAgMCAQEBAQQBAQEBBwMECQUREAcLBQIFCQUSBwwGCQEBBgcEDgMFDw0FBw0JDSQOBhUKBQcECQgJDQcJBgMJCwYLFwoGCQUGBgMKBQQFAggBAgcBAQIBAgEBAQMBAQEBAgEDAQQBAgECBAMJBgIDBQUHBAYLCAoLEg8IBw8GBRAGBQwGCgMCDQwIAgYEBw4HAgMCAgMDAgIBAgEBAgQKEgoJBQILBQIJARgJBQIPEQkHBAMIDQYHBQwFBQgFAgoEBAECAgUIBQEBAQEBAwMCAQICAQYBAgMCAQECAQMEBQYDCAUCAgMCBAgFCgUCBAMCBAIHBwIHDAsHBg4JBQcDAw8KCgwBAgMGBAkBBAcFCgECCQMCCQkEBAcFBwYIAxwdAgYEBAYPDgYGAwMFAggNCAsMBQULBgkIBAkNDQYIBgILBxAYDAgGAwgHDwIBAgMCAQIBAgECAQIBAQEBAQMBAQECAQECAQEBAQEBAQEDAQEBAwEBAgEDAQEBAgYCAgIEAQKeBwIBCgMBBgUEBwMCAwUDBg0FCgsJAwgDCAICCgUECgQKAQILAgIMDQcHDggBAQEBAgEFAgQCDhsOBQsFEiQTCBEICA0IBBcBBw4HAgcAAAAABAAe/6oC1QM7AKcBEAGnAxcAAAEGBwYGBwYGBwYGBwYGBwYGBwYGBwcGBgcGBgcHBgYHBgYHBgYHBwYUBwYGBwYGBwYGBxYXFhYXFhYXFhcWFhcWFhcWNjcWNjc2Njc2Njc2Fjc2Njc2NDM2NzY2NzY3NjY3NjY3NjQ3NjQ3NjY3NjY3NiY3NjQ3NjY3NjQ1NjY3NiY3NjY3NiY1NiYnJjYnJjQnJjY1JjQnJiYnJjYnJiYnJicmJicmJwc2Njc2Njc0NicmJicmJyYGBwYUBwYGFxYWFwYGJiYnJiYnJjY3NjY3NjY3NjY3FhYXFjIXFjMWFhc2NjcmIyYGBwcGBgcGBgcGBgcGBgcGBgcGFhcWFhcWFhUWFhcWFhc2Njc2Njc2NwM2Njc2Njc2Njc2Njc2Njc2Njc2Njc2Njc2NjcGBiMiJicmJicmNCcmJicmJicmJjU0NjU0JjUmNzY2NzY2NzY2NzY2NzYyNyYmJyYmBwYiBwYHBgYHBiMGJgcGBgcHBhYHBgYHBgYHBgYHBgcGBhUUBgcGBgcGBhcUFhcWFBcWFhcWFhcWFhcWMhUWFhcWFhcWFhcWFhcHBiciBgcGIgciBic2Njc2Njc2Njc2Njc2Njc2NyYmJyYnJicmJyYnJiYnJiYnJiYnJiYnJiYnJiYnJiYnJicmNCcmJicmNicmJjUmJicmJjc0NDc2Jjc2NDc2Njc0NjU2NDc2Njc2NTYmNzY3Njc2Njc3NjE2NzY0NzY1NjY3NjY3NjU2Njc2NzI2NzY2NzY0MzY3NjY3NjY3FjYzMhYzMjYzNjIXFjYXFhYXFhYXFhcWFhcWNhcWNhcWFzY2NzY2NzYzNjY3NjY3NjY3NjY3NhY3NjIzNjYXFgYHBgcGBgcGBgcGBgcGBgcGBgcGBgcWFxYWFxYWFxYWFxQWFxYWFxYWFxYWFxYWFxYXFhcWBgcUFAcHFBQHBgYHBhYHBgYHBhYHBgYHBgcGBwYGBwYUBwYGBwYGBwYHBgYjBgYHBgYHBgYHBwYGBwYGBwYiBwYGIyYmJyYmJyYiJyYmJyY2IycmJicmJiMGBgcGBgcGBgIfBwEEBwMFCAQFCAUECAQDBwMDBAQMBAYFBAcFCwUFAgkHBwMHAwYCAgMGAwcCAgcDAg0BCQUEBwYCBgQCCAICBgMMDQkIBAQFEAUMCgUIAwEICAMIAQ0CBAUDCAIJBgMGAgIHAQUBBAEBAgQCBgEBBgIDAgEBAQEBAQEBAQIBAQEBBAEBAgIGAgMBBQIIBgUGAQEGAgEGBAIFAg8KdgIDAgQFAgEBAQYCBwcICwYMAQICBAIMBAIJCQcBBQIBBQEEAgICCQICBQsHBQkFDAYCCAIEAwIGCQUQDQ4hDw8DBgQFCAMFCgUDBgMFAwIBAQIBBQIGAgUIBQQGBBMIBwQIBAsCsQcOCA0aCwIBAgICAgMFAgUIAgIGAwIDAgUMBgkOCAoTBQcHBQUBBgMCBQMBAQICAgIDBgEBBAMBERwQCA8IChIKAgkFCA4KECEOBgcLFgwGBAcCAQMFAwkIAQEFCgQKCAMFBgURBwEBAgECAQEBAwEEAgMBAgMCAgECAwsDBQIIBwMGCAUGBwIFCwUXCQcFBgUCGQIFDAQFCAMCBAICBQMCBwIDBAUFAgUKBQQIDAMEBgYFBQUDAgUCBAYFCAECAgMCBAICAgUCAgMCAgICAQIBAgMDAwEBAgMCAQYCAwMBAQIBAgEBAQIBAgMBAQUBAgMCAwIFBQIGBgEHCAEBBQkHCQkJBQcDBQYEBgQCCgIJBQkSCwkPBwUHBQQHBAMHAwUOBQoHBAsLBQUKBQgEBAYEBgICCgQCDgcCBQMHAQIEAQQCAQMCAQUDAQIBBAMGBQcbBgYRAwECAQIEBwwHBgQCAwcDAgECAgICAgYCDgMKBwQGDQcJCgUJAgcCAgIGAwIEAgMJAwMDAgECAQECAwEBAwIBAQEBAgEBAQECBwMICgYHCggEBgEFAgIDBgMECAcBAQ4LBQMGBAoCAQoKCwYDCAULCgUIGQ8PDQYEBwUDBwMIDQgKAQIMBgICCQEBBwQDAwgEBwkCYxEDBgwFCREKCBEJChEKCA4IBgwHGAkSCAgPCBYNCQQPEwkFEAYLAwcEBg0HDAgEDAsFCwIEBgIFBAIEAgIBAQIBAQUBAQIBAQEFAgMEAgYCAgMFAgUDBgICBgIGAgoEAgsEAwoCAQYDAgUIBQYNBQgFAg0KBQsFAgMJBAMHAwgQCAUHBA0MAgoMBwgPCA8KBgUEAgsHAxALBwoCAgkBAQoGAggBDQ5rBAYECAgFBQkFBAkDDAICBQIFAwIECgUFDAUKAQEEAQcCAQgOCQUKAwsDAgUFAgIEAgYBBgUCAhIXCgkCAgIDAQICAQEBAgcDAgECBQgICg0ICx0ICQMCAwsDAgYBAwQDAgQDBwH+lQ8cDhYrFwMH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AQEBAQIBAgMBAQEEAgIEAQQDAgQFAwIFAgQDAQUHBQUIBQQGAwUCAQgICQQFCAUFBgQCBwMWEAgHDQYEBwMLESEMCQYCBAYGCwUOAgQIAQcIAQEBAQICAQEBAwICAQIDBgMCBAUCBQUCBwICDwQGBAkFAgYGAgUDAg0DDgQEBwMHDQcECAQbBAcEAgkECQEBCQYFCxEBCAIDAQUDAgkNBg0HBAkHBwoGBwMCCwgLBgMIAwkBBAMEAQEBAQEFAwIEAwYCAwcEDAgFAgoGDQcFBgQHCgUFAgIEAgEBAQUGAgwCBAMCCAYFBwUECQIHAgUOBQIIAwsEAgUJDRUIBQcEAwICAwEBAwMDAQMDAgIGAwkFAgUICQ4YDgUJBQIJBAICBQICAgEBAgIDAQECAQUDAwIFAgUIBAYRCAMIBAYDCgIDCgELChkLBQoGDgcMCQUGDAYDCAMGBQICAgIHAgMEAwEDAQEBAQEBAQMBAwkCBQoEBgcIAgECBAQGEwkPBgQLAQIEBwQEBQUFCAQECAMIAQcECQYECgECAwcDAwYCAgMCAgMCAkYCCgIFCQUFCgUFCwIJAgIGCQIHBwQCBAIDAQIBAgEBAQQCAQIBAQMGBQMBCAICAQICAgMDBAIGAwYGAgsNBwsBDAEFCgYJAQINBwQFCQUVDh0MAwIMDQcNGQoJFAkHDAgLBgIFCwUGDQYIEAcNBQUOAgIGAgQHAgkDAgcECgIEAgIIAwEEBAIDBQMEBwQCAQIKBAIFBwEBAgEDAQEBAQEDAgIFAQEFCQMHAQcCBgYEEw8KBQoFBQQCIAMGAxEUCAMGAwQLBgUQAgcEAwUOBQIEAwcDAQYMAwUJBgQIAwcBCQYFAgIDAgIEAgIBCgIBAQECAQECBQQCAQIEAgYCBgICBQMcAQoFCQgFDQ0FEAYGAgUHBAUHBQwNCAoHDAEJAwIJBgISBAcDBQEFAQEEAgEGAQMCAQEBAgIFAQICBQIIAQEMEgoCAv5LAxAFAwQCBQkDBgYCAgICAgIBBQIECAYKBgUGCAQCBwMQEwgDBAMIBAQIBQwFAQEFAgEBAQECBQMKBwMCBgMPBQYMAgUCAQICAgQCBAEFBAIBAQkFBAICEg0HAgIEBAcFBgMECxYJCQcKAQIHAQECAwIJAQECAwURCAYMBQgLBgYGBQQGBQsGBQcDAwUDCQcDBAcEDQgC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CAcGCAYCBQICBAYDBAEFAwIEAgMBAQEC/vUCAwIEAQEBAgEEAgIIAgIPAg4PBwsHCAECBwIMEAUECgMDBwMGBQIOAwgCAgcBAQIEAgQBAQIBAQICAgUCBAkEAgYDCgcIBAcEDxEOFw0LBwMBCgUHCgMDaQUHBQgOBgQBAQIBAgICAQMCAgIBAgcQCAULBAECAQEBAgEBAQECAQMBAQEBAQECAgAAAwAj/+QC4wIIAg8CaALIAAAlBiYnBiYjBiMiJiciBiMiJgcGBiMiJiMiBiMiJgcGBgcGJgcGFBcWFhcWFhcWFhcWFhcWFxYWFxYyFxYWFxYWMzYWNzYyNzY2NzY2NzY2NzY1NjI1NjU0JjU0JjU2FxYWFxYWMxYWFxYGBwYHBgYHBgYHBgYHBgYHBiIHBgYHBiYjJiYnJiYnJiYjJiYnJiYnJiYnBwYGBwYGBwYHBgcGBgcGBiMGIgciBiMGJyImJyYjJiYnJiInJiYnJiYnJiYnJiYnJiYnJiYnJiY1JjY3NiY3NjY3NjY3NjY3NjI3NjY3NjI3NjY3NjYzNhY3NjY3MjI3NjI3NjY3NjY3NiY1NDYnNCYnJiYnJiYnIiYnJiYnJiYHIgYHBiIHBgcGBgcGBwYGBwYGBwYGBwYGFxYWFxYWFxYXFhYXFjIXFjY3NiI3NjY3NjY1JicmJgcGIgcGBgcWFhcGJicmNjc2Njc2FhcWFhcWFhcUBgcGBgcGBgcGBgcGBgciJiMjJiYnJicmJicmNicmJjc2Jjc2NDc2NDc2Njc2Njc2NzY0MzY2NzY2NzY2NzY2NzYWNzY3MhYXMhYXFhYzFxYWFxYWFxYWFxYXFhYXFhYXNjY3Njc2Njc2Njc2NzY3Njc2NzY2NzY2NzYyNzY2NzI3NjY3NjIzNhYzFhYXFhYXFhYXFhYXFhYXFhYXFhQXFhYXFBYVFAYnNCYnJiY1JicmJyYmIwYjBgYHBgYHBgYHBgYHBgYHBgYHBiIHBgcGFBUGBgcGBgcGFAcGFgcGBhcWNhcyFjcyNjMyFjM2FjMWNjMyNjc2MjcyNjM2Fjc0NgUGBgcGBwYiBwYGBwYGBwYHBiIHBgYnBgYHBgYHBgYHBhQHBgYVFhYVBhYVFhQXFhcWFBcWFxYWMzI2FzY2NzY2NzY2NzY2NzYWNzY2NzY2NzY2NyY0JyY0NSYmNSY2NwLeBQsGCxIHCAYFCAQIDggTNRgFCQUFCQQFBwUFDAUFCwUFDAYDAQECAgIEAgIBAgMJAwkFBQsFBQQEAwcFER8LCwgECwUCBAcDBgoFCAQFBgECBAEBCgIEBgQJAwIFCgYCBgICAgIHAgIBAgsOBAgLBwYDAgQPBwsVDRg4FwgGBQcJBQoSBgIEAgMHAggIAwIJFQsDCAUHAwoFDAQCBAcDAwYCCw0GCgUECAIGAgQHBQsWCQIEAgUBAgcDAgQCAgYBAgEDAgICAgEFAgcECAYCCQkEBgQCAgUDBgQCBQ4ICAIBBQgECBEJBQkFDAICDA8HCxgLAgECAQMFBgYCBAYDBgkFBQcFBA4IBQkFBQoFCAMODAYKAgsFAgYCAgMGBAQOAQEIBQIFAwYDAgoEAwUHCgkFBgEBBQcCAgMDBwUICAgHAgYCBQMPBQcPBxENBAYNCAgQCAUIAwQDAwECAgMCAwUIAgcEBw4HAwcEDggSCQgJDQIDBwEBBAYCAwIBBQEFAQgEBAoLAwoFCwEJCwUDBgQLDwYCBwIECAUECgcOBgQJBQsCAg8MCAULBwMFCAUDAwQFAwIDAQQBAQMBBQQCBAECCAECBgYDBQMFBgMKBAIFAwILCAQFCAQFAwYPBwgHBAgOCAsPCgIGAgwJAggDBQgKAwEBBQICAgNgBwQEAwYBCwIJDwULBgYKCAUJBQQFAwwGAwIHAwUDAgQCAQcBBgIDAQMFAwQBBQEBAwgCDRoMBQgEBQkFAwcDCwECBQQCCg8IBg8HAwcECBIIBf7NBAgGBAgIBQMFBwQDBwILAQgIAgsTCQULBAsKBQIGAQIBAQMBBAEBAQIHCAYCDAMFBwQIDAcHFAcECAMFCwUIAQIIAgECAwMGAwIFCwECAQQCAgEBAeYCBAEBAQICAQEDAgEDAQEBAQEDAQEBAgwZDgwZCw0HAwQIAwcLBwcIAQUCBAEBAQIBAgIBAQUBAgUCAwYECAgBCgEJAg0FBQwGAgYDCQUCBAIFAwIBAgcJBgoFBQgFAgUDEg8JBAoFBQECBQICAgECBQEBAwQGCxINAQYCBQ0FCAcFAwsYCwMGBgQCBgIFAwIBAwICAQEBAQMBAQIDEQcBBQIDAwIHBAIGCQUOBgYLCQMLGAsIDAYLDwgIBQILBQIFAQIEAgQBAgUDAgIBAQECBQIBBAEEAwQFDQcLHA4HDAYKFAcEAgICAwQGAgICAgIDAQQBAQECAQYFAgMCBwQCBgECAwYFBh4JBQwDAgICBgIBBAICAgIFBwkBBQ0DBA4CBgICBgMFAgQMBAUDBQ8BBhEZCwIJAQEGAgIBAgIHAgoQCAcIBQgHBQIDAgMIAQEBBgICBAUBAwgCAQYJCAYHAgkEAgoFAgwIBQ0HBwUGAwIFAwMCBgIDBAIBAgEBAQEBAgEBAgEDAwYGBgMGBQIEBwYDCAgYCwcQCQEIAgsBBAgEBwYCCgEEBggDBQYCBwMIAQIFAQgEAwMBAwEBAQMCAQIDCAYCBQIGDAUPEQUbKBQHDwcQEwwFBgQFCJAOHwwKAwEKAQUBBQECAgMBBQcDBAYCCAYDAwUDCgICCQEJAgkEAQMGAgYLBQYEAgcDAggPCgICAQMBAgEBAQECAQEBAQICAwQYNkADAwMCBgMCAgMCAgECBwEJAQcCBAMHAgYHBQMHBQMEBQUSBggNBwoFAwUNAhQMBwICBwECAgYBBQUDAgMCAgoEBAICBwEBAgQCBAMCBQsECgYDCAgECxcLFyQTAAAAAAQAHv/HAcoCRwBsALsBAgH5AAABBgYHBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGBgcGFAcGBgcGBwYGBxYzFhYXFjIXFjMWFjc2Nhc2Njc2Njc2Njc2Njc2Njc2NzY2NzY2NTY2NzY0NzYmJyYnJiY1JiYnJiYnJiYnBzY2NzY2NzY3JicmJiMmBgcGFhYGByYmJyYmNzY3NhYXNjY3NjQ3JjQjJicmJicmJicmBiMiBgcGBgcGBwYUBwYWBxQGFRYWFxYWFxY2Nwc2NzY2NzY3NjY3NjY3Njc2NwYmJyYGJyYmJyYiJyYmJyYmJyYmJyYmJwYGBwYGBwYGBwYUFQYGFxQWFRYWFxYXFhQXFhYXFQYiIyYGByIGIiIjBgYnNjY3NjY3NjY3NjY3NjY3NjQ3NicmBicmJicmJyYmJyYmJyYmJyYmJyY2JycmJicmNCcmJicmNjc2Njc2NDc2Njc2Njc2Njc2Njc2Njc2NzY2NzY2NzY2FxY2MxYWFxYWMxY2MxYWFxYWFzc2NzY2NTY2NTY2NzY0NzcyNjIyMzY2FwYGBwYGBwYGBwYHBgYHBhYXFhYXFhYXFhYXFhYXFhYXFhYXFhYHFhQHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBgYHBhQHBgYHBgcGBgcGBgcGBiMGJgciBiciJyYmJyYmJwYGBwcGBgFeAwUCBwQDBgMCBAICAwICBAIDBAMCBwICBAIDAgIGBQQCBQMFAgIDAgYBBAIBCQEDCQIEBgIGBQUNBQgMBwIKAgcDAQQIBAYEAgMFAgIEBAMBBAMEBQICAQUEAgcIAwIDBAMCBQIDBAJdAwcEAwUBAwMCAwMOBQYNAgECAgMGAwUDBQYBAQkTLAoCBwMBAgoBCwMECAMIDwUFBAQLBAMKAwEKBAcBBAEBAQIPBAYJBQ4TCV4DBAgRCAUDAgICBAQCAwQKBA0IBQQJAgIFAggCAQQCAgcLBAIBAgMFAwIFAgUGAwIDAQIBAwIFBQECBQEKAgkHAgQGAgMFAwEMDgwBAwgDBAUCAgECAgMCAgMCAwMCBAIBBQgCAQIDAgYDAwQDAgUCAgEBAwICBAEBBgIEAgEBAQMCAwUDAgEDBQEHBgQIAwMFBgICBAICBgIHAwkXCAcRCQ8KCQEKAQgFAgQKBQQGAwUJBQUMBggDAgMCAgIDAgECBAsBDQ8NAgQMAgICAQUHBQQCAgYDBQIBAQICAwgDAwICBQMCAgMCBAEBBQgDAgMDAQICAwMFBQICAgECBQICAgIGCAQCAgICBAIFAQQKBQMGAgoFCwwGBAcDAwwFBQcDAgoJEQgFCgYFAgILAwYBjQULBQ0MBwsHBwkFBQgFBAgFBgwGBQwFBQgCCQYECg4FBAsFCQYCBQgFCwYIBQIJAwUBBQEFAgMBAQcBBAUCBAUCBggFCgYEBgcCBAYIAgILAgIOCwUGDAYSDAkWEgsBAQsSCgUNBQoHBTcGDwgHBwMLAwcDAwQBAwcFDAwJAgIIBAcICxEHBAMLBg8HAwYCBQIDAQEDAgMGAQEBAgIEAwIGBggIAgYHBQUHBBEbCwQKBAkEBdIHBxAeEA0EBAcFCQoECQkTCgQCAQEBAQEEAgUBCAQCDRILCgMCCxcLBAcEChMKBQoFBg4IEy4UBxAEFRcIDAEIAwIFBQKzAQECAQEBAQMLBgQEBwUEBwQDBgMFCQQGBAIMBQYBAQIFAgQDAgYCAwUCAgYDBAUFBwYCFQoVDQMHAgcSCBkmEAgLBgoFAg4OCAsGAwgFBAMIAgIBAgYCCQ0IBAQCBQYBAQMBAgEBAgEBAQICAgMCDgkECAIC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NyYmJyYmJyYmByIGIyImBwYGByIHIgcGIgcWBhcWFhcWFBcWFhUWBhcWFxYWFxYWFxYWMxY2NzY2NzY2MzY2NzYmNzY2NzY2NzY2NzY2NzY2NTY2NzY2NzY3NjQ3FgYVFhYVFRYWFxYUFxYWFxYWFxYGFxYWFxYVFgcGJicmBicmMSYmJyYmIyYGJyYmJyYGByImByYGByIGIwYmIwYiBwYGBwYGBwYiIwYGBzQ2JwYUBwYGBwYGBwYGBwYGBwYGBwYGJyImIyIGIyImJyYmJyYnJgYnJiYnJiYnJiYnJiYnJiYnJicmJicmJyYmJyY0IyYmJyYmNSY0JyYmNSY0JyYmJyY1JjY1NCY1JjQnJiYnNiYnJjQ1NiY1NiY3NjQ3NTQ2NzQ3JjY3NjY3NjY3NjY3NjY3NjQ3NjY3NjY3NjY3NjY3NjY3NjY3NjY3NjY3Njc2Mjc2Njc2Njc2Mjc2NhcyMhcyFhcWFhcWFhcWFhcWFhc2JjUmNTYyMxYWFxY2FxY2FxY3FhYzFxYzFjYXMhYXMhYzMjYzMhYXFjIzMzI2NzIWNzI2MzYWNzY2NzY3NjY3NjY3BSYmJyYmJyYmJyYmJyYjJiYjBiYHBgYHBgYHBgYHBgcGBgcGBgcGIgcGBgcGFAcGIwYGBwYUBwYGBwYGBwYHBgcGBwYGBwYGBwYGBwYGBwYUBxQGFRQWFxYUFxYWFxYWFxYWFxYXFhYXFhQXFhQXFhYXFhYXFhYXFhYXFhcWFhcWFxYWFxYWFxY2MzY2NzY2NzYyNzY2NzY3Njc2NzY0NzYyNzY2NzY2NyY2NyY2NTQmNTQ2NSY2JzUmNjU0JjU1JiYnNCY1NDYnJiYnJiYnJiYnBAkIBwICBAQCAgIFAQICAwICAgICAwEFAQECBgIBAwMCBgEEBQEBAwICAwEDBAMCAwECAQMEAwUBAQIEAQkKBAoGAwYDBQgFAwgCAg0FBxAGCg8KAwgDBgYCFQkUJhEFAQIBAQEBAgEBAQECAQECBQcFAwkFCxgOESEQBQsFBQgECwICBwEBAQUCAQQCBgIFDAcJBwQVBQwFCQUCBwUBAgQCAwgNEQkEBQQMAwIJBAQDBwMEBQIKEAgGDgIEAgIEBQoHBAkCAQUFAw0LBgkOBwYNBggPCAECAQIEAQIBAwECAQECAwECAQICCgIIBwQECQUEBAoEBgQFCgICBAIKAwMDAgIEAgYBAgoCAgcCBg8ICA8FBQwDAgYBAQEBAQIBAgILCwsFCwkGAwgHBQEKAgsCAwUEBgUFEQYLBAEEBwQGAwECCAUEBgcLDA4FDAUFDAUFCwcHBAcEEhEGAgIBAQIBAQIBAgIBAgIHDx0OChMLCBULCRIIDRYLDAQCCxcLBwECBQICBAMEAQYCBAIBAQMCAgICBwIDAwEFCgQBAwECAQECAwEBAgECBAIDAQQCAgMBCQEGBQsFDBEdDgYMBRAlCwQHBQoVCwsSBwkTCQoBAQUMBQUIBQYMBwwHBAUMBQ4dDwEBCAIHEQkDBgQEBgQFCAUJDwYLGxMDBgQDBgIDBQMJCQUMCgcCAgIIBAYIBQgFAwMHAgwJBQYDBQcFCAUGBAIFAQQFBAUCAgIFAwQBAgMCBQECAgEBAQEDAgIBAQEBAwECAQEDAQUCAwECAQIEBAEEAgIFAQIFAQYEAgYEAgUKBQYKBQUGBQgXDgUJBQQGBAkGAgkFBQcFCBAJAgYFCBQLBw8IBAkFBgwFDAoFBAMCCgoGAwEGAgYDAwUDCwkFCwsFDQsHBAIQDAIGDgcLFwsDBgMDBgQCBwQKGQsjDQcDBQgEBAgECBAGChELBwQLEwkECAT9zAkIBQIFAwIIBAQHBAUKBQYECwwGAwgEBAYFCBMFBQcDBgQDBgIIAQEFCQQIAQUBBwICBwECAgIEAgEDAgEEAgECAwECAgEFAwIBAQEBAQIBAQECAgMBAwUBAgMCAgECAwECAgICAgcEAwQCBgMCAwQCEg0FBQQGCQMFAwMFAwkUCwsXDgIIAgcCAQYEAgMEBgMHBAYBBAMBAwMCDg4HAgIBAQIBAgIBAQECAQEDAQEBAgEFAgIEAgQIAgMSBA8FAwgGBAUIBAcFAwMMBQQFAwUKBQ0PCA4aDgULBRUYCQIJAQEIAgQHBAgEAg0RBQQJAgcEBgwHCwYCBQoFDAgFAgIBAwEBAQEDAQEBAQEDAgEDAQEBAgMECQgOIBAECAULFw0HDQcGDQYWLRcCAgMCAQEBAQECAgEEAgECAQkCAggCAgYEDQcDBwYIBwcFAgcCBQsCAQMBAQYCBQECBwUEBgoEBwUCBgIBAQECBQMJAwIBAQICAQQCChgOBAYFBgkECAQBBwEBBAEDAgEBAQMCAwMECwICBgMFCQkFDgUICQUECAMEBwQF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CQUFCQUKGQsQCQQCCAICBQICBwcFCwIGBgMHAgICAQEBAQEBBAECAgMBAgIEDQUSFQcLDQEBDwgFBQMPBwgIBQQHAgQCAQECAgEBAQEBBAIBAgIGAQIEAgQCAgcDBAQCBwkDAgsLBgcTBwcDBQkFAgUDBAgEBAYCBwwFCBgKCwEKBQICAwIHAwICBQEBAgIBAgIBAQYGAwYEAgEHAQIGCAQJBQsUEQgPCAQGAgcBAQIJAgMGAgIDAQUCBwIJBAcMBQMEBQgHAwoFBQkBAQIBAQIFBwIMCwYFAgULCggEBAIFAQQBAQIBBwoFAgkKBwQQCwQGBgEBAQEEAwEBAQECAQECBwEIBQQIBAUIBQkECQcFEQoFCQoECQEDBQQDBQMBBQICAwICBQMCAQIBBAICAQMGAgQFAgIJAwUIDh8QCwEBFhEHBwUMEQUJBgoEAgoMBQwaDgEDAwECAgECAQQBAgEBAgICAQIBAgIHAwUCAQICAwIFAgMKBRcHAgIBAQIBAgMCAQECBQEBCwMGBgMDBgIDCwQJCwYFCwYFCQUGDAUDBwMOBAoGCgYCBQkFDQYEBAgFAgUDCwQEAwcEAgMCAgQBAQEBAgEBAQECBQUKBgUGBRMTCwUIBAoVCRAMDQgEAgQJBQgQCA4NBQ0HCwQCAgQBAgIBAwEFAQUDAgINAwUCDAoFCQUNCwgRJw4QDggFCgUFCQUIEAgHDgcHCwcFAQEDAgIGCAQCAQICAQQBAQIBAQEPFwwJDwoIAwoBBBAGCw0GCwgIDwkCCAQGBAMGBAYDAwYDCQEICAUFCAYCAwIDAgICAwEBBAEEAQMCAgcGCAIKBgMCBQIODAUFDAUSAhIEBQsGBQ0FEBAIDAcBAgwDCAUCBgIGCgUCBgQDAQIHAQEDBwUECgQEDwgEDAcMAwwGBAYEAgECAgEDBgUECQQEBgQDBwIFAwMCCAwHDwcCCgMJBgQHBAURBgkCAgcIAgEEAgIIBAoNBAMHAw4HBQgOCAUJBQUJBQQIAwkOCAYCAgECBgEBAwIBBwoEBwcFDAYFBggIAQEMCAIHCgkSCwUHBQIPAwoDCA4JDhUMAwEBAgECAgECAgEBAgIBAgEBAgQFBAUKBQUKDiMRCBAICA0IBQsGCBUJCRMIBQoFCQECBQICBAIDBQMAAf////EB8gLJAbcAAAEWFhcWFxYGFRUUFgcU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ADIAMAAxADIAIABiAHkAIABGAG8AbgB0ACAARABpAG4AZQByACwAIABJAG4AYwAgAEQAQgBBACAATgBlAGEAcABvAGwAaQB0AGEAbgAgACgAZABpAG4AZQByAEAAZgBvAG4AdABkAGkAbgBlAHIALgBjAG8AbQApACAAdwBpAHQAaAAgAFIAZQBzAGUAdgBlAGQAIABGAG8AbgB0ACAATgBhAG0AZQAgACIARwByAGkAZgBmAHkAIgBHAHIAaQBmAGYAeQBSAGUAZwB1AGwAYQByAEYAbwBuAHQARABpAG4AZQByACwASQBuAGMARABCAEEATgBlAGEAcABvAGwAaQB0AGEAbgA6ACAARwByAGkAZgBmAHkAOgAgADIAMAAxADIAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMABHAHIAaQBmAGYAeQAtAFIAZQBnAHUAbABhAHIARwByAGkAZgBmAHkAIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABGAG8AbgB0ACAARABpAG4AZQByACwAIABJAG4AYwAgAEQAQgBBACAATgBlAGEAcABvAGwAaQB0AGEAbgAuAEYAbwBuAHQAIABEAGkAbgBlAHIALAAgAEkAbgBjACAARABCAEEAIABOAGUAYQBwAG8AbABpAHQAYQBuAFMAcQB1AGkAZABoAHQAdABwADoALwAvAHcAdwB3AC4AZgBvAG4AdABiAHIAbwBzAC4AYwBvAG0ALwBmAG8AdQBuAGQAcgBpAGUAcwAvAG4AZQBhAHAAbwBsAGkAdABhAG4AaAB0AHQAcAA6AC8ALwB3AHcAdwAuAHMAcQB1AGkAZABhAHIAdAAuAGMAbwBtAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsAA0AVgBlAHIAcwBpAG8AbgAgADEALgAxAC4AIABUAGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGkAcwAgAGEAdgBhAGkAbABhAGIAbABlACAAdwBpAHQAaAAgAGEAIABGAEEAUQAgAGEAdAA6AA0AaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATAACAAAAAAAA/7MAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAAADpAOoA4gDjAOQA5QDrAOwA7QDuAOYA5wD0APUA8QD2APMA8gDoAO8A8AADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAIIAgwCEAIUAhgCHAIgAiQCKAIsAjACNAI4AjwCQAJEAkwCUAJUAlgCXAJgAnQCeAKAAoQCiAKMApACmAKcAqQCqAKsBAgCtAK4ArwCwALEAsgCzALQAtQC2ALcAuAC5ALoAuwC8AQMAvgC/AMAAwQDCAQQAxADFAMYAxwDIAMkAygDLAMwAzQDOAM8A0ADRANMA1ADVANYA1wDYANkBBQDbANwA3QDeAN8A4ADhAL0BBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoHdW5pMDBBMARFdXJvDnBlcmlvZGNlbnRlcmVkBm1hY3JvbglzZnRoeXBoZW4IZG90bGVzc2oCSUoCaWoEaGJhcgZJdGlsZGUGaXRpbGRlC0pjaXJjdW1mbGV4C2pjaXJjdW1mbGV4C2NvbW1hYWNjZW50DGtjb21tYWFjY2VudAxrZ3JlZW5sYW5kaWMMUmNvbW1hYWNjZW50DHJjb21tYWFjY2VudARMZG90Cmxkb3RhY2NlbnQGTmFjdXRlBm5hY3V0ZQZSYWN1dGUGUmNhcm9uBnJjYXJvbgABAAH//wAP\"","module.exports = \"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GgIaPhqAGrQa0hr+GyYbTBt6G6Ab0hv0HCYcWhyOHMIc6B0YHVQdYB2gHc4d9B4wHm4eoB7gHyAfSh90H7Af5iAYIF4gnCDCINAg3iDsIPohDiEiITYhUCFeIXghpCHOIgIiNAACAAAAAAUABwAAAwAHAAABESERAREhEQUA+wABAAMABwD5AAcA/v/7AQUAAAIAAAAAAQAHAAADAAcAADERIREBESERAQD/AAEAAQD/AAIABQD7AAACAAAFAAMABwAAAwAHAAAZASERIREhEQEAAQABAAUAAgD+AAIA/gAAAgAAAAAGAAcAAAMAHwAAAREhEQERIREhESERIREhESERIREhESERIREhESERIREEAP4A/wD/AAEA/wABAAEAAgABAAEA/wABAP8A/wD+AAIAAwD9AP4AAQABAAMAAQABAP8AAQD/AP8A/QD/AP8AAQD/AAADAAAAAAUABwAAAwAHACMAAAERIREBESERAREhESERIREhESERIREhESERIREhESERIREhEQQAAQD7AAEAAQD+AAIA/wABAP8AAQABAAIA/gABAP8AAQD/AAIAAQD/AAIAAQD/APwAAQABAAEAAQABAAEAAQD/AP8A/wD/AP8A/wD/AAAPAAAAAAcABwAAAwAHAAsADwATABcAGwAfACMAJwArAC8AMwA3ADsAADERIREhESERAREhGQIhEQERIREhESERAREhESERIREhESERAREhESERIREhESERAREhEQERIREhESERAQAEAAEA+wABAAEAAQABAAEAAQD6AAEAAQABAAEAAQD+AAEA+wABAAEAAQACAAEA+wABAAQAAQABAP8AAQD/AAEAAQD/AAEAAQD/AP8AAgD+AAIA/gACAAEA/wABAP8AAQD/AAEAAQD/AAIA/gACAP4AAQABAP8AAQABAP8AAQD/AAAABQAAAAAFAAcAAAMABwAPABMAFwAAIREhEQERIREhESERIREhEQERIRkCIREBAAMA/AABAAMA/QADAAEA+wABAAMAAQD/AAEAAgD+AAIAAQABAPwAAwACAP4AAgABAP8AAAAAAAEAAAUAAQAHAAADAAAZASERAQAFAAIA/gAAAAADAAAAAAMABwAAAwAHAAsAACERIREBESEZAiERAQACAP0AAQACAAEA/wABAAUA+wAFAAEA/wAAAAMAAAAAAwAHAAADAAcACwAAMREhGQIhEQERIRECAAEA/QACAAEA/wABAAUA+wAFAAEA/wAAAAAABQAAAgAFAAcAAAMABwALAA8AGwAAGQEhESERIREBESERIREhEQERIREhESERIREhEQEAAwABAPsAAQADAAEA/QD/AAEAAQABAP8AAwABAP8AAQD/AAIAAQD/AAEA/wD9AAIAAQACAP4A/wD+AAAAAAEAAAEABQAGAAALAAABESERIREhESERIRECAP4AAgABAAIA/gABAAIAAQACAP4A/wD+AAABAAD/AAEAAQAAAwAAGQEhEQEA/wACAP4AAAAAAQAAAwAEAAQAAAMAABkBIREEAAMAAQD/AAAAAAEAAAAAAQABAAADAAAxESERAQABAP8AAAMAAAAAAwAHAAADAAcACwAAMREhGQIhGQIhEQEAAQABAAIA/gACAAMA/QADAAIA/gAAAAAFAAAAAAUABwAAAwAHAA8AFwAbAAAhESERAREhEQERIREhESERIREhESERIREBESERAQADAP4AAQD9AAEAAQD/AAMA/wABAAEA/AADAAEA/wADAAEA/wD+AAUA/QD/AP8AAwABAAEA+wAFAAEA/wAAAQAAAAACAAcAAAUAACERIREhEQEA/wACAAYAAQD5AAAEAAAAAAUABwAABQAJAA0AEQAAMREhESERAREhGQIhEQERIREBAAQA/AADAAEA+wAEAAMA/gD/AAMAAQD/AAEAAgD+AAIAAQD/AAAABQAAAAAEAAcAAAMABwALAA8AEwAAMREhGQIhEQERIRkCIREBESERAwABAPwAAwABAPwAAwABAP8AAQACAP4AAgABAP8AAQACAP4AAgABAP8AAAAAAwAAAAAFAAcAAAMABwATAAABESEZAiERAREhESERIREhESERAQABAAEAAQD8AAEAAwD/AAIABAABAP8AAQABAP8A+wACAAIA/wADAAEA+QAAAAAAAwAAAAAFAAcAAAMABwAPAAAxESEZAiERAREhESERIREEAAEA+wAFAPwAAwABAP8AAQACAP4AAgAEAP8A/gD/AAAAAAAEAAAAAAUABwAAAwAHAA8AEwAAIREhGQIhESERIREhESEZAiERAQADAAEA+wABAAMA/QADAAEA/wABAAIA/gAFAP4A/wD+AAUAAQD/AAAAAAMAAAAABQAHAAADAAcADQAAIREhGQIhGQIhESERAgABAAEA/AAFAAMA/QADAAIA/gACAAEAAQD+AAAAAAcAAAAABQAHAAADAAcACwAPABMAFwAbAAAhESERAREhESERIREBESERAREhESERIREBESERAQADAPwAAQADAAEA/AADAPwAAQADAAEA/AADAAEA/wABAAIA/gACAP4AAgABAP8AAQACAP4AAgD+AAIAAQD/AAAAAAQAAAAABQAHAAADAAcADwATAAAhESERAREhEQERIREhESERAREhEQEAAwD8AAEAAwD9AAMAAQD8AAMAAQD/AAQAAgD+AP0AAgABAAIA+wAFAAEA/wAAAAACAAAAAAEABQAAAwAHAAAxESERAREhEQEA/wABAAEA/wAEAAEA/wAAAgAA/wABAAUAAAMABwAAGQEhEQERIREBAP8AAQD/AAIA/gAFAAEA/wAAAAAHAAAAAAQABwAAAwAHAAsADwATABcAGwAAIREhEQERIREBESERAREhGQIhGQIhGQIhEQMAAQD+AAEA/gABAP4AAQABAAEAAQABAP8AAQABAP8AAQABAP8AAQABAP8AAQABAP8AAQABAP8AAQABAP8AAAAAAAIAAAIABAAFAAADAAcAABkBIREBESERBAD8AAQAAgABAP8AAgABAP8AAAAABwAAAAAEAAcAAAMABwALAA8AEwAXABsAADERIRkCIRkCIRkCIREBESERAREhEQERIREBAAEAAQABAP4AAQD+AAEA/gABAAEA/wABAAEA/wABAAEA/wABAAEA/wABAAEA/wABAAEA/wABAAEA/wAAAAUAAAAABAAHAAADAAcACwAPABMAACERIREBESEZAiEZAiERAREhEQEAAQD/AAEAAQABAPwAAwABAP8AAgABAP8AAQABAP8AAQACAP4AAgABAP8AAAYAAP8ABwAHAAADAAcAEQAVABkAHQAAAREhEQERIRkCIREhESERIREBESERAREhEQERIREBAAUA/AABAAEA/wACAAEA+gABAAUAAQD6AAUA/wABAP8AAwACAP4A/wABAAIAAQD9AP8A/wAGAPoAAgAEAPwABAABAP8AAAACAAAAAAUABwAACwAPAAAxESERIREhESERIRkCIREBAAMAAQD/AP0AAwAGAP0AAwD6AAIA/gAGAAEA/wAAAAAAAwAAAAAFAAcAAAMABwATAAABESERAREhEQERIREhESERIREhEQQAAQD/AAEA+wAEAP0AAwD9AAMAAQACAP4AAwACAP4A/AAHAP8A/gD/AP4A/wAAAwAAAAAEAAcAAAMABwALAAAhESERAREhGQIhEQEAAwD8AAEAAwABAP8AAQAFAPsABQABAP8AAAACAAAAAAUABwAAAwALAAABESERAREhESERIREEAAEA+wAEAP0AAwABAAUA+wD/AAcA/wD7AP8AAAEAAAAABAAHAAALAAAxESERIREhESERIREEAP0AAwD9AAMABwD/AP4A/wD+AP8AAAEAAAAABAAHAAAJAAAxESERIREhESERBAD9AAMA/QAHAP8A/gD/AP0AAAAAAwAAAAAFAAcAAAcACwAPAAAhESERIREhEQERIRkCIREBAAMA/wACAPsAAQAEAAEAAgABAPwAAQAFAPsABQABAP8AAAABAAAAAAUABwAACwAAMREhESERIREhESERAQADAAEA/wD9AAcA/QADAPkAAwD9AAABAAAAAAEABwAAAwAAMREhEQEABwD5AAACAAAAAAUABwAAAwAHAAAxESEZAiERBAABAAEA/wABAAYA+gAAAAAABwAAAAAFAAcAAAMABwALAA8AEwAbAB8AACERIREBESERAREhEQERIRkCIREBESERIREhEQERIREEAAEA/gABAP4AAQD/AAEAAQD8AAEAAQD/AAMAAQABAP8AAQABAP8AAQABAP8AAgABAP8AAQABAP8A+wAHAP0A/wD9AAYAAQD/AAAAAQAAAAAFAAcAAAUAADERIREhEQEABAAHAPoA/wAAAAADAAAAAAUABwAAAwALABMAAAERIREBESERIREhESERIREhESERAgABAP0AAQABAP8AAwD/AAEAAQAEAAEA/wD8AAcA/wD/APsABQABAAEA+QAAAAADAAAAAAUABwAAAwALABMAAAERIREBESERIREhESERIREhESERAgABAP0AAQABAP8AAwD/AAEAAQAEAAEA/wD8AAcA/wD/APsAAwABAAMA+QAAAAAEAAAAAAUABwAAAwAHAAsADwAAIREhEQERIREhESERAREhEQEAAwD8AAEAAwABAPwAAwABAP8AAQAFAPsABQD7AAUAAQD/AAACAAAAAAUABwAAAwANAAABESERAREhESERIREhEQQAAQD7AAQA/QADAP0AAwADAP0A/QAHAP8A/QD/AP4AAAAABQAA/wAGAAcAAAMABwALAA8AEwAAAREhEQERIREBESERIREhEQERIREEAAIA+wADAPwAAQADAAEA/AADAP8AAQD/AAEAAQD/AAEABQD7AAUA+wAFAAEA/wAAAAADAAAAAAUABwAAAwAHABEAACERIREBESERAREhESERIREhEQQAAQD/AAEA+wAEAP0AAwD9AAIA/gADAAMA/QD9AAcA/wD9AP8A/gAABQAAAAAFAAcAAAMABwALAA8AEwAAMREhGQIhEQERIREBESEZAiERBAABAPwAAwD8AAEABAABAP8AAQACAP4AAgABAP8AAQACAP4AAgABAP8AAAAAAQAAAAAFAAcAAAcAACERIREhESERAgD+AAUA/gAGAAEA/wD6AAAAAAMAAAAABQAHAAADAAcACwAAIREhEQERIREhESERAQADAPwAAQADAAEAAQD/AAEABgD6AAYA+gAABQAAAAAFAAcAAAMABwALAA8AEwAAIREhEQERIREhESERAREhESERIRECAAEA/gABAAEAAQD8AAEAAwABAAEA/wABAAEA/wABAP8AAQAFAPsABQD7AAAAAAMAAAAABQAHAAADAAsAEwAAAREhEQERIREhESERIREhESERIRECAAEA/QABAAEA/wADAP8AAQABAAIAAQD/AP4ABwD7AP8A/wABAAEABQD5AAAAAAkAAAAABQAHAAADAAcACwAPABMAFwAbAB8AIwAAMREhESERIREBESERIREhEQERIREBESERIREhEQERIREhESERAQADAAEA/AABAAEAAQD+AAEA/gABAAEAAQD8AAEAAwABAAIA/gACAP4AAgABAP8AAQD/AAEAAQD/AAEAAQD/AAEA/wABAAIA/gACAP4AAAMAAAAABQAHAAAHAAsADwAAIREhESERIREBESERIREhEQIA/wADAP8A/QABAAMAAQADAAEA/wD9AAQAAwD9AAMA/QAABQAAAAAFAAcAAAUACQANABEAFwAAMREhESERAREhGQIhGQIhGQIhESERAQAEAPwAAQABAAEA/AAFAAIA/wD/AAIAAQD/AAEAAQD/AAEAAQD/AAEAAQABAP4AAAABAAAAAAMABwAABwAAMREhESERIREDAP4AAgAHAP8A+wD/AAADAAAAAAMABwAAAwAHAAsAACERIREBESERAREhEQIAAQD+AAEA/gABAAIA/gACAAMA/QADAAIA/gAAAAABAAAAAAMABwAABwAAMREhESERIRECAP4AAwABAAUAAQD5AAAFAAAEAAUABwAAAwAHAAsADwATAAAZASERIREhEQERIREhESERAREhEQEAAwABAPwAAQABAAEA/gABAAQAAQD/AAEA/wABAAEA/wABAP8AAQABAP8AAAAAAQAA/wAEAAAAAAMAABkBIREEAP8AAQD/AAAAAAIAAAUAAgAHAAADAAcAAAERIREBESERAQABAP4AAQAFAAEA/wABAAEA/wAAAwAAAAAEAAUAAAMADQARAAAZASEZAiERIREhESERAREhEQEAAgD+AAIAAQD9AAIAAQABAP8A/wABAAEAAQABAPwABAABAP8AAAAAAAIAAAAABAAHAAADAA0AAAERIREBESERIREhESERAwABAPwAAQACAP4AAgABAAMA/QD/AAcA/gD/AP0A/wAAAAADAAAAAAMABQAAAwAHAAsAACERIREBESEZAiERAQACAP0AAQACAAEA/wABAAMA/QADAAEA/wAAAAIAAAAABAAHAAADAA0AABkBIRkCIREhESERIREBAAIA/gACAAEAAQADAP0A/wABAAMAAQACAPkAAAAAAAMAAAAABAAFAAADAA0AEQAAIREhEQERIREhESERIRkCIREBAAMA/AABAAIAAQD9AAIAAQD/AAEAAwD/AAEA/gD/AAMAAQD/AAAAAAACAAAAAAQABwAACwAPAAAhESERIREhESERIRkCIREBAP8AAQABAAIA/gACAAQAAQABAP8A/wD8AAYAAQD/AAAAAwAA/wAEAAUAAAMABwARAAAZASERAREhEQERIREhESERIREDAP0AAQACAP4AAgD+AAMA/wABAP8AAwACAP4A/gABAAEAAgABAPsAAAIAAAAABAAHAAADAAsAACERIREhESERIREhEQMAAQD8AAEAAgD+AAQA/AAHAP4A/wD8AAACAAAAAAEABwAAAwAHAAAxESERAREhEQEA/wABAAUA+wAGAAEA/wAAAwAA/wADAAcAAAMABwALAAAZASEZAiERAREhEQIAAQD/AAEA/wABAP8AAQAFAPsABgABAP8AAAAFAAAAAAQABwAAAwAHAAsADwAXAAAhESERAREhEQERIRkCIREBESERIREhEQMAAQD+AAEA/wABAAEA/AABAAEA/wABAP8AAQABAP8AAgABAP8AAQABAP8A/AAHAPwA/wD+AAAAAQAAAAABAAcAAAMAADERIREBAAcA+QAABAAAAAAFAAUAAAMABwANABEAAAERIREBESERIREhESERAREhEQIAAQABAAEA+wACAP8AAgABAAEAAwD9AP8ABAD8AAUA/wD8AAQAAQD/AAACAAAAAAQABQAAAwAJAAAhESERIREhESERAwABAPwAAwD+AAQA/AAFAP8A/AAAAAAEAAAAAAQABQAAAwAHAAsADwAAIREhEQERIREhESERAREhEQEAAgD9AAEAAgABAP0AAgABAP8AAQADAP0AAwD9AAMAAQD/AAACAAD/AAQABQAAAwANAAABESERAREhESERIREhEQMAAQD8AAMA/gACAP4AAQADAP0A/gAGAP8A/QD/AP8AAAAAAgAA/wAEAAUAAAMADQAAGQEhEQERIREhESERIREBAAIA/gACAP4AAwABAAMA/QD+AAEAAQADAAEA+gAAAgAAAAAEAAUAAAcACwAAMREhESERIREBESERAQABAP8AAQACAAUA/wD/AP0ABAABAP8AAAUAAAAABAAFAAADAAcACwAPABMAADERIRkCIREBESERAREhGQIhEQMAAQD9AAIA/QABAAMAAQD/AAEAAQD/AAEAAQD/AAEAAQD/AAEAAQD/AAAAAAIAAAAABAAHAAADAA8AACERIREBESERIREhESERIRECAAIA/QD/AAEAAQACAP4AAQD/AAEAAwABAAIA/gD/AP0AAAAAAgAAAAAEAAUAAAMACQAAGQEhGQIhESERAQACAAEAAQAEAPwA/wABAAQA+wAAAAAABQAAAAAFAAUAAAMABwALAA8AEwAAIREhEQERIREhESERAREhESERIRECAAEA/gABAAEAAQD8AAEAAwABAAEA/wABAAEA/wABAP8AAQADAP0AAwD9AAAAAAUAAAAABQAFAAADAAcACwAPABMAACERIREhESERAREhESERIREhESERAQABAAEAAQD+AAEA/QABAAMAAQABAP8AAQD/AAEAAwD9AAQA/AAEAPwAAAkAAAAABQAFAAADAAcACwAPABMAFwAbAB8AIwAAMREhESERIREBESERIREhEQERIREBESERIREhEQERIREhESERAQADAAEA/AABAAEAAQD+AAEA/gABAAEAAQD8AAEAAwABAAEA/wABAP8AAQABAP8AAQD/AAEAAQD/AAEAAQD/AAEA/wABAAEA/wABAP8AAAMAAP8ABAAFAAADAAcADwAAGQEhEQERIREBESERIREhEQMA/QABAAIA/gACAAEA/wABAP8AAwADAP0A/gABAAEAAwD7AAAAAAMAAAAABQAFAAAHAAsAEwAAMREhESERIREBESEZAiERIREhEQEAAQADAP0AAQD9AAUA/wABAAEA/wD/AAIAAQD/AAEAAQABAP8A/wAAAAAABQAAAAAEAAcAAAMABwALAA8AEwAAIREhEQERIREBESEZAiEZAiERAgACAP0AAQD+AAEAAQACAAEA/wABAAIA/gACAAEA/wABAAIA/gACAAEA/wAAAQAAAAABAAcAAAMAADERIREBAAcA+QAABQAAAAAEAAcAAAMABwALAA8AEwAAMREhGQIhGQIhEQERIREBESERAgABAAEA/gABAP0AAgABAP8AAQACAP4AAgABAP8AAQACAP4AAgABAP8AAAAABAAABQAGAAcAAAMABwALAA8AABkBIREhESERAREhESERIREBAAIAAgD8AAIAAgABAAUAAQD/AAEA/wABAAEA/wABAP8AAAAAAgAAAAABAAcAAAMABwAAMREhEQERIREBAP8AAQAFAPsABgABAP8AAAIAAAAABAAHAAADABcAABkBIREBESERIREhESERIREhESERIREhEQEAAQD/AAEA/wABAAEAAQD/AAEA/wACAAMA/QD+AAEAAQADAAEAAQD/AP8A/QD/AP8AAAAAAgAAAAAFAAcAAA8AEwAAMREhESERIREhESERIREhEQERIREBAP8AAQABAAIA/gADAP0AAwABAAIAAQACAP4A/wD+AP8ABgABAP8AAAMAAP8ABQAHAAAXABsAHwAAAREhESERIREhESERIREhESERIREhESERAREhESERIRECAP4AAgD+AAIA/wADAP8AAgD+AAIA/gD9AAEAAwABAP8AAQABAAEAAQABAAEA/wD/AP8A/wD/AP8ABgACAP4AAgD+AAAAAAIAAAAAAQAHAAADAAcAADERIREBESERAQD/AAEAAwD9AAQAAwD9AAACAAAGAAMABwAAAwAHAAAZASERIREhEQEAAQABAAYAAQD/AAEA/wAACwAA/wAIAAcAAAMABwALAA8AEwAXABsAHwAjACcAKwAAAREhEQERIREhESERAREhEQERIREBESERAREhEQERIREBESERIREhEQERIRECAAQA+wABAAQAAQD8AAIA/QABAP0AAQACAAIAAgABAPkAAQAEAAEA+wAEAP8AAQD/AAEAAQD/AAEA/wABAAEA/wABAAIA/gD/AAQA/AADAAEA/wD9AAQA/AAEAAEA/wABAP8AAQABAP8AAAoAAAEABgAGAAADAAcACwAPABMAFwAbAB8AIwAnAAABESERIREhEQERIREhESERAREhESERIREBESERIREhEQERIREhESERAgABAAIAAQD7AAEAAgABAPsAAQACAAEA/QABAAIAAQD9AAEAAgABAAEAAQD/AAEA/wABAAEA/wABAP8AAQABAP8AAQD/AAEAAQD/AAEA/wABAAEA/wABAP8AAAAAAQAAAQAEAAQAAAUAAAERIREhEQMA/QAEAAEAAgABAP0AAAAACwAA/wAIAAcAAAMABwALAA8AEwAXACEAJQApAC0AMQAAAREhEQERIREhESERAREhEQERIREBESERIREhESERIREhESERIREBESERIREhEQERIRECAAQA+wABAAQAAQD+AAEA/wABAPoAAQABAAMA/gACAP4ABAABAPkAAQAEAAEA+wAEAP8AAQD/AAEAAQD/AAEA/wABAAEA/wACAAEA/wD+AAQA/AAEAP8A/wD/AP8ABAD8AAQAAQD/AAEA/wABAAEA/wAAAAAEAAAEAAMABwAAAwAHAAsADwAAAREhEQERIREhESERAREhEQEAAQD+AAEAAQABAP4AAQAEAAEA/wABAAEA/wABAP8AAQABAP8AAAAAAgAAAAAFAAcAAAMADwAAMREhEQERIREhESERIREhEQUA/QD+AAIAAQACAP4AAQD/AAIAAgABAAIA/gD/AP4AAAIAAAUAAgAHAAADAAcAABkBIRkCIREBAAEABQABAP8AAQABAP8AAAACAAD/AAQABQAABwALAAAZASERIREhEQERIREBAAIA/gACAAEA/wAGAPwA/wD/AAIABAD8AAAAAAEAAP8ABQAHAAANAAABESERIREhESERIREhEQIA/wD/AAEABAD/AP8A/wAEAAEAAgABAPgABwD5AAAAAAEAAAMAAQAEAAADAAAZASERAQADAAEA/wAAAAACAAD+AAIAAAAAAwAHAAAZASEZAiERAQABAP4AAQD/AAEAAQD/AAAACgAAAQAGAAYAAAMABwALAA8AEwAXABsAHwAjACcAABkBIREhESERAREhESERIREBESERIREhEQERIREhESERAREhESERIREBAAIAAQD9AAEAAgABAP0AAQACAAEA+wABAAIAAQD7AAEAAgABAAEAAQD/AAEA/wABAAEA/wABAP8AAQABAP8AAQD/AAEAAQD/AAEA/wABAAEA/wABAP8AAAUAAAAABAAHAAADAAcACwAPABMAACERIREBESEZAiEZAiERAREhEQEAAwD8AAEAAQABAP8AAQABAP8AAQACAP4AAgABAP8AAQABAP8AAgABAP8AAAQAAAAABQAKAAALAA8AEwAXAAAxESERIREhESERIRkCIREBESERAREhEQEAAwABAP8A/QADAP4AAQD+AAEABgD9AAMA+gACAP4ABgABAP8AAgABAP8AAQABAP8AAAAAAAQAAAAABQAKAAALAA8AEwAXAAAxESERIREhESERIRkCIREBESEZAiERAQADAAEA/wD9AAMA/gABAAEABgD9AAMA+gACAP4ABgABAP8AAgABAP8AAQABAP8AAAAABQAAAAAFAAoAAAsADwATABcAGwAAMREhESERIREhESEZAiERAREhESERIREBESERAQADAAEA/wD9AAMA/QABAAEAAQD+AAEABgD9AAMA+gACAP4ABgABAP8AAgABAP8AAQD/AAEAAQD/AAAABgAAAAAGAAoAAAsADwATABcAGwAfAAAxESERIREhESERIRkCIREBESERIREhEQERIREhESERAQADAAEA/wD9AAMA/AABAAIAAgD8AAIAAgABAAYA/QADAPoAAgD+AAYAAQD/AAIAAQD/AAEA/wABAAEA/wABAP8AAAAAAAQAAAAABQAJAAALAA8AEwAXAAAxESERIREhESERIRkCIREBESERIREhEQEAAwABAP8A/QADAPwAAQADAAEABgD9AAMA+gACAP4ABgABAP8AAgABAP8AAQD/AAAABQAAAAAFAAoAAAsAEwAXABsAHwAAMREhESERIREhESEZAiERIREhEQERIREhESERAREhEQEAAwABAP8A/QABAAEAAQD9AAEAAQABAP4AAQAGAP0AAwD6AAIA/gAGAAEAAQD/AP8AAgABAP8AAQD/AAEAAQD/AAAAAQAAAAAGAAcAABUAADERIREhESERIREhESERIREhESERIREBAAIA/gAFAP4AAgD+AAIA/QD+AAYA/QADAAEA/wD+AP8A/gD/AAIA/gAAAAAEAAD+AAQABwAAAwALAA8AEwAAAREhGQIhESERIREBESEZAiERAQABAP8AAwD/AP0AAQADAP4AAQD/AAEAAQABAP8A/wACAAUA+wAFAAEA/wAAAAADAAAAAAQACgAACwAPABMAADERIREhESERIREhEQERIREBESERBAD9AAMA/QADAP4AAQD+AAEABwD/AP4A/wD+AP8ACAABAP8AAQABAP8AAAMAAAAABAAKAAALAA8AEwAAMREhESERIREhESERAREhGQIhEQQA/QADAP0AAwD9AAEAAQAHAP8A/gD/AP4A/wAIAAEA/wABAAEA/wAAAAAABAAAAAAEAAoAAAsADwATABcAADERIREhESERIREhEQERIREhESERAREhEQQA/QADAP0AAwD9AAEAAQABAP4AAQAHAP8A/gD/AP4A/wAIAAEA/wABAP8AAQABAP8AAAAAAwAAAAAEAAkAAAsADwATAAAxESERIREhESERIREBESERIREhEQQA/QADAP0AAwD8AAEAAgABAAcA/wD+AP8A/gD/AAgAAQD/AAEA/wAAAAADAQAAAAMACgAAAwAHAAsAACERIREBESEZAiERAQABAP8AAQABAAcA+QAIAAEA/wABAAEA/wAAAAMAAAAAAgAKAAADAAcACwAAIREhEQERIREBESERAQABAP8AAQD+AAEABwD5AAgAAQD/AAEAAQD/AAAAAAQAAAAAAwAKAAADAAcACwAPAAAhESERAREhESERIREBESERAQABAP4AAQABAAEA/gABAAcA+QAIAAEA/wABAP8AAQABAP8AAAMAAAAAAwAJAAADAAcACwAAIREhEQERIREhESERAQABAP4AAQABAAEABwD5AAgAAQD/AAEA/wAAAgAAAAAGAAcAAAMAEwAAAREhEQERIREhESERIREhESERIREFAAEA+wD/AAEABAD9AAEA/wADAAEABQD7AP8AAwABAAMA/wD+AP8A/gD/AAAHAAAAAAYACgAAAwALABMAFwAbAB8AIwAAAREhEQERIREhESERIREhESERIREBESERIREhEQERIREhESERAgABAP0AAQABAP8AAwD/AAEAAQD7AAEAAgACAPwAAgACAAEABAABAP8A/AAHAP8A/wD7AAMAAQADAPkACAABAP8AAQD/AAEAAQD/AAEA/wAAAAAGAAAAAAUACgAAAwAHAAsADwATABcAACERIREBESERIREhEQERIREBESERAREhEQEAAwD8AAEAAwABAPwAAwD+AAEA/gABAAEA/wABAAUA+wAFAPsABQABAP8AAgABAP8AAQABAP8AAAYAAAAABQAKAAADAAcACwAPABMAFwAAIREhEQERIREhESERAREhEQERIRkCIREBAAMA/AABAAMAAQD8AAMA/gABAAEAAQD/AAEABQD7AAUA+wAFAAEA/wACAAEA/wABAAEA/wAAAAAABwAAAAAFAAoAAAMABwALAA8AEwAXABsAACERIREBESERIREhEQERIREBESERIREhEQERIREBAAMA/AABAAMAAQD8AAMA/QABAAEAAQD+AAEAAQD/AAEABQD7AAUA+wAFAAEA/wACAAEA/wABAP8AAQABAP8AAAAACAAAAAAGAAoAAAMABwALAA8AEwAXABsAHwAAIREhEQERIREhESERAREhEQERIREhESERAREhESERIREBAAMA/AABAAMAAQD8AAMA/AABAAIAAgD8AAIAAgABAAEA/wABAAUA+wAFAPsABQABAP8AAgABAP8AAQD/AAEAAQD/AAEA/wAABgAAAAAFAAkAAAMABwALAA8AEwAXAAAhESERAREhESERIREBESERAREhESERIREBAAMA/AABAAMAAQD8AAMA/AABAAMAAQABAP8AAQAFAPsABQD7AAUAAQD/AAIAAQD/AAEA/wAAAAAJAAABAAUABgAAAwAHAAsADwATABcAGwAfACMAABkBIREhESERAREhESERIREBESERAREhESERIREBESERIREhEQEAAwABAPwAAQABAAEA/gABAP4AAQABAAEA/AABAAMAAQABAAEA/wABAP8AAQABAP8AAQD/AAEAAQD/AAEAAQD/AAEA/wABAAEA/wABAP8AAAAABQAAAAAFAAcAAAMABwAPABcAGwAAIREhEQERIREBESERIREhESERIREhESERAREhEQEAAwD+AAEA/QABAAEA/wADAP8AAQABAPwAAwABAP8AAwABAP8A/gAFAP0A/wD/AAMAAQABAPsABQABAP8AAAUAAAAABQAKAAADAAcACwAPABMAACERIREBESERIREhEQERIREBESERAQADAPwAAQADAAEA/QABAP4AAQABAP8AAQAGAPoABgD6AAcAAQD/AAEAAQD/AAAFAAAAAAUACgAAAwAHAAsADwATAAAhESERAREhESERIREBESEZAiERAQADAPwAAQADAAEA/QABAAEAAQD/AAEABgD6AAYA+gAHAAEA/wABAAEA/wAAAAAABgAAAAAFAAoAAAMABwALAA8AEwAXAAAhESERAREhESERIREBESERIREhEQERIREBAAMA/AABAAMAAQD8AAEAAQABAP4AAQABAP8AAQAGAPoABgD6AAcAAQD/AAEA/wABAAEA/wAAAAAFAAAAAAUACQAAAwAHAAsADwATAAAhESERAREhESERIREBESERIREhEQEAAwD8AAEAAwABAPsAAQADAAEAAQD/AAEABgD6AAYA+gAHAAEA/wABAP8AAAAABQAAAAAFAAoAAAcACwAPABMAFwAAIREhESERIREBESERIREhEQERIRkCIRECAP8AAwD/AP0AAQADAAEA/QABAAEAAwABAP8A/QAEAAMA/QADAP0ABAABAP8AAQABAP8AAAAAAAIAAAAABQAHAAADAA8AAAERIREBESERIREhESERIREEAAEA+wABAAMA/QADAP0AAgADAP0A/gAHAP8A/wD9AP8A/wAABgAAAAAFAAcAAAMABwALAA8AEwAXAAAhESEZAiERAREhEQERIREBESERAREhEQIAAgABAP0AAgD8AAEAAwABAPwAAwABAP8AAQACAP4AAgABAP8A/QAGAPoABAACAP4AAgABAP8AAAAFAAAAAAQACAAAAwANABEAFQAZAAAZASEZAiERIREhESERAREhEQERIREBESERAQACAP4AAgABAP0AAgD/AAEA/gABAAEAAQD/AP8AAQABAAEAAQD8AAQAAQD/AAIAAQD/AAEAAQD/AAAAAAAFAAAAAAQACAAAAwANABEAFQAZAAAZASEZAiERIREhESERAREhEQERIRkCIREBAAIA/gACAAEA/QACAP4AAQABAAEAAQD/AP8AAQABAAEAAQD8AAQAAQD/AAIAAQD/AAEAAQD/AAAAAAYAAAAABAAIAAADAA0AEQAVABkAHQAAGQEhGQIhESERIREhEQERIREBESERIREhEQERIREBAAIA/gACAAEA/QACAP4AAQABAAEA/gABAAEAAQD/AP8AAQABAAEAAQD8AAQAAQD/AAIAAQD/AAEA/wABAAEA/wAAAAcAAAAABAAIAAADAA0AEQAVABkAHQAhAAAZASEZAiERIREhESERAREhEQERIREhESERAREhESERIREBAAIA/gACAAEA/QACAP0AAQABAAEA/gABAAEAAQABAAEA/wD/AAEAAQABAAEA/AAEAAEA/wACAAEA/wABAP8AAQABAP8AAQD/AAAAAAAFAAAAAAQABwAAAwANABEAFQAZAAAZASEZAiERIREhESERAREhEQERIREhESERAQACAP4AAgABAP0AAgD9AAEAAgABAAEAAQD/AP8AAQABAAEAAQD8AAQAAQD/AAIAAQD/AAEA/wAAAAcAAAAABAAJAAADAA0AEQAVABkAHQAhAAAZASEZAiERIREhESERAREhEQERIREBESERIREhEQERIREBAAIA/gACAAEA/QACAP8AAQD+AAEAAQABAP4AAQABAAEA/wD/AAEAAQABAAEA/AAEAAEA/wACAAEA/wABAAEA/wABAP8AAQABAP8AAAAEAAAAAAUABQAAAwAVABkAHQAAGQEhGQIhESERIREhESERIREhESERAREhESERIREBAAEA/wABAAEAAQABAP4AAgD8AAEAAQABAAEAAQD/AP8AAQABAAEAAQD/AAEA/gD/AP8ABAABAP8AAQD/AAAABAAA/gADAAUAAAMACQANABEAABkBIRkCIREhEQERIRkCIREBAAIA/wD+AAEAAgD+AAEA/wABAAIA/wD/AAIAAwD9AAMAAQD/AAAAAAUAAAAABAAIAAADAA0AEQAVABkAACERIREBESERIREhESEZAiERAREhEQERIREBAAMA/AABAAIAAQD9AAIA/wABAP4AAQABAP8AAQADAP8AAQD+AP8AAwABAP8AAgABAP8AAQABAP8AAAAAAAUAAAAABAAIAAADAA0AEQAVABkAACERIREBESERIREhESEZAiERAREhGQIhEQEAAwD8AAEAAgABAP0AAgD+AAEAAQABAP8AAQADAP8AAQD+AP8AAwABAP8AAgABAP8AAQABAP8AAAAABgAAAAAEAAgAAAMADQARABUAGQAdAAAhESERAREhESERIREhGQIhEQERIREhESERAREhEQEAAwD8AAEAAgABAP0AAgD+AAEAAQABAP4AAQABAP8AAQADAP8AAQD+AP8AAwABAP8AAgABAP8AAQD/AAEAAQD/AAAABQAAAAAEAAcAAAMADQARABUAGQAAIREhEQERIREhESERIRkCIREBESERIREhEQEAAwD8AAEAAgABAP0AAgD9AAEAAgABAAEA/wABAAMA/wABAP4A/wADAAEA/wACAAEA/wABAP8AAAADAAAAAAIACAAAAwAHAAsAACERIREBESERAREhEQEAAQD/AAEA/gABAAUA+wAGAAEA/wABAAEA/wAAAAADAQAAAAMACAAAAwAHAAsAACERIREBESEZAiERAQABAP8AAQABAAUA+wAGAAEA/wABAAEA/wAAAAQAAAAAAwAIAAADAAcACwAPAAAhESERAREhESERIREBESERAQABAP4AAQABAAEA/gABAAUA+wAGAAEA/wABAP8AAQABAP8AAAMAAAAAAwAHAAADAAcACwAAIREhEQERIREhESERAQABAP4AAQABAAEABQD7AAYAAQD/AAEA/wAAAgAAAAAFAAgAAAMAFQAAGQEhGQIhESERIREhESERIREhESERAQACAP4AAgD/AAEAAQABAP8AAQADAP0A/wABAAMAAQABAAEAAQD/AP8A+gAAAAAABgAAAAAEAAgAAAMACQANABEAFQAZAAAhESERIREhESERAREhESERIREBESERIREhEQMAAQD8AAMA/gD/AAEAAQABAP4AAQABAAEABAD8AAUA/wD8AAYAAQD/AAEA/wABAAEA/wABAP8AAAAABgAAAAAEAAgAAAMABwALAA8AEwAXAAAhESERAREhESERIREBESERAREhEQERIREBAAIA/QABAAIAAQD9AAIA/wABAP4AAQABAP8AAQADAP0AAwD9AAMAAQD/AAIAAQD/AAEAAQD/AAAGAAAAAAQACAAAAwAHAAsADwATABcAACERIREBESERIREhEQERIREBESEZAiERAQACAP0AAQACAAEA/QACAP4AAQABAAEA/wABAAMA/QADAP0AAwABAP8AAgABAP8AAQABAP8AAAAAAAcAAAAABAAIAAADAAcACwAPABMAFwAbAAAhESERAREhESERIREBESERAREhESERIREBESERAQACAP0AAQACAAEA/QACAP4AAQABAAEA/gABAAEA/wABAAMA/QADAP0AAwABAP8AAgABAP8AAQD/AAEAAQD/AAAAAAgAAAAABAAIAAADAAcACwAPABMAFwAbAB8AACERIREBESERIREhEQERIREBESERIREhEQERIREhESERAQACAP0AAQACAAEA/QACAP0AAQABAAEA/gABAAEAAQABAP8AAQADAP0AAwD9AAMAAQD/AAIAAQD/AAEA/wABAAEA/wABAP8AAAYAAAAABAAHAAADAAcACwAPABMAFwAAIREhEQERIREhESERAREhEQERIREhESERAQACAP0AAQACAAEA/QACAP0AAQACAAEAAQD/AAEAAwD9AAMA/QADAAEA/wACAAEA/wABAP8AAAAAAwAAAQAFAAYAAAMABwALAAABESERAREhEQERIRECAAEA/QAFAP0AAQABAAEA/wACAAEA/wACAAEA/wAAAwAAAAAEAAUAAAMACwAVAAAhESERAREhESERIREhESERIREhESERAQACAP0AAQABAP8AAgD/AP8AAgABAAEA/wABAAMA/wD/AP8AAgABAAEA/wD9AAAAAAQAAAAABAAIAAADAAkADQARAAAZASEZAiERIREBESERAREhEQEAAgABAP4AAQD+AAEAAQAEAPwA/wABAAQA+wAGAAEA/wABAAEA/wAAAAAABAAAAAAEAAgAAAMACQANABEAABkBIRkCIREhEQERIRkCIREBAAIAAQD9AAEAAQABAAQA/AD/AAEABAD7AAYAAQD/AAEAAQD/AAAAAAUAAAAABAAIAAADAAkADQARABUAABkBIRkCIREhEQERIREhESERAREhEQEAAgABAP0AAQABAAEA/gABAAEABAD8AP8AAQAEAPsABgABAP8AAQD/AAEAAQD/AAAABAAAAAAEAAcAAAMACQANABEAABkBIRkCIREhEQERIREhESERAQACAAEA/AABAAIAAQABAAQA/AD/AAEABAD7AAYAAQD/AAEA/wAAAAUAAP8ABAAIAAADAAcADwATABcAABkBIREBESERAREhESERIREBESEZAiERAwD9AAEAAgD+AAIAAQD9AAEAAQD/AAEA/wADAAMA/QD+AAEAAQADAPsABgABAP8AAQABAP8AAAACAAD/AAQABwAAAwAPAAABESERAREhESERIREhESERAwABAPwAAQACAP4AAgD+AAEAAwD9AP4ACAD+AP8A/QD/AP8AAAUAAP8ABAAHAAADAAcADwATABcAABkBIREBESERAREhESERIREBESERIREhEQMA/QABAAIA/gACAAEA/AABAAIAAQD/AAEA/wADAAMA/QD+AAEAAQADAPsABgABAP8AAQD/AAAGAAAAAAQACgAAAwAHAAsADwATABcAACERIREBESEZAiERAREhEQERIREhESERAQADAPwAAQADAP4AAQD+AAEAAQABAAEA/wABAAUA+wAFAAEA/wACAAEA/wABAAEA/wABAP8AAAAAAAYAAAAAAwAIAAADAAcACwAPABMAFwAAIREhEQERIRkCIREBESERAREhESERIREBAAIA/QABAAIA/gABAP4AAQABAAEAAQD/AAEAAwD9AAMAAQD/AAIAAQD/AAEAAQD/AAEA/wAAAAAABQAAAAAFAAoAAAMACwAPABMAFwAAAREhEQERIREhESERAREhEQERIREhESERBAABAPsABAD9AAMA/gABAP4AAQABAAEAAQAFAPsA/wAHAP8A+wD/AAgAAQD/AAEAAQD/AAEA/wAAAAADAAAAAAYABwAAAwANABEAABkBIRkCIREhESERIREBESERAQACAP4AAgABAAEAAQABAAMA/QD/AAEAAwABAAIA+QAFAAIA/gAAAAAABAAAAAAEAAoAAAsADwATABcAADERIREhESERIREhEQERIREBESERIREhEQQA/QADAP0AAwD+AAEA/gABAAEAAQAHAP8A/gD/AP4A/wAIAAEA/wABAAEA/wABAP8AAAAABgAAAAAEAAgAAAMADQARABUAGQAdAAAhESERAREhESERIREhGQIhEQERIREBESERIREhEQEAAwD8AAEAAgABAP0AAgD/AAEA/gABAAEAAQABAP8AAQADAP8AAQD+AP8AAwABAP8AAgABAP8AAQABAP8AAQD/AAAAAQAAAAABAAUAAAMAADERIREBAAUA+wAABgAAAAAFAAoAAAMACwATABcAGwAfAAABESERAREhESERIREhESERIREhEQERIREBESERIREhEQIAAQD9AAEAAQD/AAMA/wABAAEA/QABAP4AAQABAAEABAABAP8A/AAHAP8A/wD7AAMAAQADAPkACAABAP8AAQABAP8AAQD/AAAFAAAAAAQACAAAAwAJAA0AEQAVAAAhESERIREhESERAREhEQERIREhESERAwABAPwAAwD+AAEAAQD+AAEAAQABAAQA/AAFAP8A/AAGAAEA/wABAAEA/wABAP8AAAIAAAAABgAHAAADABMAABkBIRkCIREhESERIREhESERIREBAAIA/gAFAP4AAgD+AAIAAQAFAPsA/wABAAUAAQD/AP4A/wD+AP8AAAAGAAAAAAUABQAAAwAHAAsAFQAZAB0AACERIREhESERAREhESERIREhESERIREBESERIREhEQEAAQABAAIA+wABAAEAAQABAAEA/gD+AAEAAQABAAEA/wABAP8AAQADAP0AAwD/AAEA/gD/AAMAAQD/AAEA/wAAAAAGAAAAAAUACgAAAwAHABEAFQAZAB0AACERIREBESERAREhESERIREhEQERIREBESERIREhEQQAAQD/AAEA+wAEAP0AAwD9AAEAAQD+AAEAAQABAAIA/gADAAMA/QD9AAcA/wD9AP8A/gAIAAEA/wABAAEA/wABAP8AAAAABQAAAAAEAAgAAAcACwAPABMAFwAAMREhESERIREBESERAREhEQERIREhESERAQABAP8AAQACAP4AAQD+AAEAAQABAAUA/wD/AP0ABAABAP8AAgABAP8AAQABAP8AAQD/AAAAAAgAAAAABQAKAAADAAcACwAPABMAFwAbAB8AADERIRkCIREBESERAREhGQIhEQERIREBESERIREhEQQAAQD8AAMA/AABAAQA/QABAP4AAQABAAEAAQD/AAEAAgD+AAIAAQD/AAEAAgD+AAIAAQD/AAIAAQD/AAEAAQD/AAEA/wAACAAAAAAEAAgAAAMABwALAA8AEwAXABsAHwAAMREhGQIhEQERIREBESEZAiERAREhEQERIREhESERAwABAP0AAgD9AAEAAwD+AAEA/gABAAEAAQABAP8AAQABAP8AAQABAP8AAQABAP8AAQABAP8AAgABAP8AAQABAP8AAQD/AAAEAAAAAAUACgAABwALAA8AEwAAIREhESERIREBESERAREhESERIRECAP4ABQD+AP8AAQD+AAEAAQABAAYAAQD/APoACAABAP8AAQABAP8AAQD/AAADAAAAAAYABwAAAwAPABMAACERIREBESERIREhESERIREBESERAgACAP0A/wABAAEAAgD+AAMAAQABAP8AAQADAAEAAgD+AP8A/QAEAAIA/gAAAAAHAAAAAAUACwAAAwAHAAsADwATABcAGwAAIREhEQERIREhESERAREhEQERIREhESERAREhEQEAAwD8AAEAAwABAP0AAQD+AAEAAQABAP4AAQABAP8AAQAGAPoABgD6AAcAAQD/AAEAAQD/AAEA/wABAAEA/wAAAAAGAAAAAAQACQAAAwAJAA0AEQAVABkAABkBIRkCIREhEQERIREBESERIREhEQERIREBAAIAAQD+AAEA/gABAAEAAQD+AAEAAQAEAPwA/wABAAQA+wAGAAEA/wABAAEA/wABAP8AAQABAP8AAAAFAAAAAAUACQAABwALAA8AEwAXAAAhESERIREhEQERIREhESERAREhESERIRECAP8AAwD/AP0AAQADAAEA+wABAAMAAQADAAEA/wD9AAQAAwD9AAMA/QAEAAEA/wABAP8AAAAACAAAAAAFAAoAAAUACQANABEAFwAbAB8AIwAAMREhESERAREhGQIhGQIhGQIhESERAREhEQERIREhESERAQAEAPwAAQABAAEA/AAFAP0AAQD+AAEAAQABAAIA/wD/AAIAAQD/AAEAAQD/AAEAAQD/AAEAAQABAP4AAwABAP8AAQABAP8AAQD/AAAAAAAGAAAAAAUACAAABwALABMAFwAbAB8AADERIREhESERAREhGQIhESERIREBESERAREhESERIREBAAEAAwD9AAEA/QAFAP8A/gABAP4AAQABAAEAAQABAP8A/wACAAEA/wABAAEAAQD/AP8AAwABAP8AAQABAP8AAQD/AAAAAwAA/wAFAAcAAAMADwATAAAZASEZAiERIREhESERIRkCIRECAP8AAQABAAEA/wACAP8AAQD/AAEAAwABAAIA/gD/AP0ABgABAP8AAAEAAAMABQAEAAADAAAZASERBQADAAEA/wAAAAABAAAFAAEABwAAAwAAGQEhEQEABQACAP4AAAAAAQAABQABAAcAAAMAABkBIREBAAUAAgD+AAAAAAEAAP8AAQABAAADAAAZASERAQD/AAIA/gAAAAACAAAFAAMABwAAAwAHAAAZASERIREhEQEAAQABAAUAAgD+AAIA/gAAAgAABQADAAcAAAMABwAAGQEhESERIREBAAEAAQAFAAIA/gACAP4AAAIAAP8AAwABAAADAAcAABkBIREhESERAQABAAEA/wACAP4AAgD+AAABAAAAAAUABwAACwAAIREhESERIREhESERAgD+AAIAAQACAP4ABQABAAEA/wD/APsAAAAAAQAAAwABAAQAAAMAABkBIREBAAMAAQD/AAAAAAMAAAAABQABAAADAAcACwAAMREhESERIREhESERAQABAAEAAQABAAEA/wABAP8AAQD/AAAFAAABAAMABgAAAwAHAAsADwATAAABESERAREhEQERIRkCIRkCIRECAAEA/gABAP4AAQABAAEAAQABAP8AAQABAP8AAQABAP8AAQABAP8AAQABAP8AAAAABQAAAQADAAYAAAMABwALAA8AEwAAGQEhGQIhGQIhEQERIREBESERAQABAAEA/gABAP4AAQABAAEA/wABAAEA/wABAAEA/wABAAEA/wABAAEA/wAAAwAAAAAFAAcAAAMAFwAbAAAhESERAREhESERIREhESERIREhESERIRkCIRECAAMA/AD/AAEA/wABAAEAAgD+AAIA/gADAAEA/wABAAEAAQABAAEAAQD/AP8A/wD/AP8ABQABAP8AAAADAAADAAgABwAAAwARABkAAAERIREBESERIREhESERIREhESERIREhESERBQABAPsA/wAEAAEA/wD/AP8ABQD/AAEAAQAEAAEA/wD/AAMAAQD/AP8A/gADAP0AAgABAAEA/AAAAAAWAQ4AAQAAAAAAAABNAAAAAQAAAAAAAQANAE0AAQAAAAAAAgAHAFsAAQAAAAAAAwAVAE0AAQAAAAAABAAVAE0AAQAAAAAABQAXAGIAAQAAAAAABgATAHkAAQAAAAAACQAfAIwAAQAAAAAACgA/AKsAAQAAAAAADAAlAOoAAQAAAAAADgAuAQ8AAwABBAkAAACaAT0AAwABBAkAAQAaAdcAAwABBAkAAgAOAfMAAwABBAkAAwAqAdcAAwABBAkABAAqAdcAAwABBAkABQAuAgEAAwABBAkABgAmAi8AAwABBAkACQA+AlUAAwABBAkACgB+ApMAAwABBAkADABKAxEAAwABBAkADgBcA1upIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgR3JhbmQgQ2hhb3MgUHJvZHVjdGlvbnMuIFNvbWUgUmlnaHRzIFJlc2VydmVkLkdyYW5kOUsgUGl4ZWwgUmVndWxhclZlcnNpb24gMS4wIC0gNS8xMy8yMDEzR3JhbmQ5S1BpeGVsUmVndWxhckpheXZlZSBELiBFbmFndWFzIChHcmFuZCBDaGFvcylUaGlzIGZvbnQgd2FzIGNyZWF0ZWQgdXNpbmcgRm9udENyZWF0b3IgNS42IGZyb20gSGlnaC1Mb2dpYy5jb21odHRwOi8vZ3JhbmRjaGFvczkwMDAuZGV2aWFudGFydC5jb20vaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMy4wLwCpACAAMgAwADAAOQAsACAAMgAwADEAMAAsACAAMgAwADEAMQAsACAAMgAwADEAMgAsACAAMgAwADEAMwAgAEcAcgBhAG4AZAAgAEMAaABhAG8AcwAgAFAAcgBvAGQAdQBjAHQAaQBvAG4AcwAuACAAUwBvAG0AZQAgAFIAaQBnAGgAdABzACAAUgBlAHMAZQByAHYAZQBkAC4ARwByAGEAbgBkADkASwAgAFAAaQB4AGUAbAAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwACAALQAgADUALwAxADMALwAyADAAMQAzAEcAcgBhAG4AZAA5AEsAUABpAHgAZQBsAFIAZQBnAHUAbABhAHIASgBhAHkAdgBlAGUAIABEAC4AIABFAG4AYQBnAHUAYQBzACAAKABHAHIAYQBuAGQAIABDAGgAYQBvAHMAKQBUAGgAaQBzACAAZgBvAG4AdAAgAHcAYQBzACAAYwByAGUAYQB0AGUAZAAgAHUAcwBpAG4AZwAgAEYAbwBuAHQAQwByAGUAYQB0AG8AcgAgADUALgA2ACAAZgByAG8AbQAgAEgAaQBnAGgALQBMAG8AZwBpAGMALgBjAG8AbQBoAHQAdABwADoALwAvAGcAcgBhAG4AZABjAGgAYQBvAHMAOQAwADAAMAAuAGQAZQB2AGkAYQBuAHQAYQByAHQALgBjAG8AbQAvAGgAdAB0AHAAOgAvAC8AYwByAGUAYQB0AGkAdgBlAGMAbwBtAG0AbwBuAHMALgBvAHIAZwAvAGwAaQBjAGUAbgBzAGUAcwAvAGIAeQAtAHMAYQAvADMALgAwAC8AAAAAAgAAAAAAAP8nAJYAAAAAAAAAAAAAAAAAAAAAAAAAAADZAAAAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAQIAowCEAIUAlgDoAI4AiwCpAKQAigCDAJMAjQCXAIgAwwDeAKoAogCtAMkAxwCuAGIAYwCQAGQAywBlAMgAygDPAMwAzQDOAOkAZgDTANAA0QCvAGcA8ACRANYA1ADVAGgA6wDtAIkAagBpAGsAbQBsAG4AoABvAHEAcAByAHMAdQB0AHYAdwDqAHgAegB5AHsAfQB8ALgAoQB/AH4AgACBAOwA7gC6AP8BAAEDAQQBBQEGANcBBwEIALAAsQEJAQoA5ADlAQsBDAENAQ4AuwDmAOcApgCzALYAtwDEALQAtQDFAIIAhwCrAL4AvwEPAIwHdW5pMDBBMAZEY2Fyb24GZGNhcm9uBkVjYXJvbgZlY2Fyb24GTmNhcm9uBm5jYXJvbgZSY2Fyb24GcmNhcm9uBlRjYXJvbgZ0Y2Fyb24FVXJpbmcFdXJpbmcERXVybwAAAAAB//8AAg==\"","module.exports = \"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BgYCAgQDAwYBAwMEBAIEAgMFBAUFBQUFBQUFAgIDBAMEBQYFBAYGBgUGAwUHBQgGBQUFBgQGBgYIBwcFAgMCBAQDBQQEBQYDAwYDCQUEBQQEBAQGBQcGBQQAAAAMCgYABgYCAwUDBAYBAwMEBQMEAgMFBAUGBQUFBgUFAgIDBAQEBQcGBQYGBgYGAwUHBgkHBgYGBwUGBwcJCAcFAgMDBAUEBQQEBgcDBAYDCgYEBQQFBQQGBQgGBgQAAAANCwcABwcCAwUDBAcBAwMFBQMEAgQGBAUGBgYGBgYFAgIDBAQEBQcGBQcHBwYHAwYIBgkIBgYGBwUHBwcKCAgGAwMDBAUEBQQEBgcEBAcDCwYFBQQFBQQHBggHBgUAAAAOCwcABwcCAwUEBAcCBAQFBQMFAwQGBQYHBgYGBgYGAgIEBQQEBggHBQgHBwcHAwYJBwoIBwYHCAUHCAgKCQgGAwQDBQYEBgUFBwgEBAcDCwcFBgUGBQUHBgkHBwUAAAAPDAgACAgCAwYEBAgCBAQFBgMFAwQGBQYHBwcGBwcGAgIEBQUFBgkHBggICAcIBAYJBwsJBwcHCAYICAgLCgkHAwQDBQYEBgUFBwgEBQgEDAcFBgUGBgUIBwoIBwUAAAAQDQgACAgCBAYEBQgCBAQGBgMFAwQHBQcIBwcHBwcHAgMEBgUFBwkIBgkICAgIBAcKCAwJCAcICQYICQkMCgoHAwQEBQYFBwUFBwkEBQgEDQgGBwYGBgUIBwoICAYAAAARDgkACQkDBAYFBQkCBAQGBgQGAwUHBgcICAcHCAgHAwMEBgUFBwoIBgkJCQgJBAcKCAwKCAgICQYJCgkNCwoIBAQEBgcFBwYGCAkFBQkEDggGBwYHBwYJCAsJCAYAAAASDwkACQkDBAcFBQkCBQUGBwQGAwUIBgcJCAgICAgHAwMFBgUGBwoJBwoKCQkKBAgLCQ0LCQgJCgcJCgoNDAsIBAUEBgcFCAYGCAoFBQkEDwkHCAYHBwYJCAwJCAYAAAATEAoACgoDBAcFBgoCBQUHBwQGAwUIBggJCQgICQgIAwMFBwYGCAsJBwoKCgkKBQgMCQ4LCQkJCgcKCwoODAsIBAUEBggGCAYGCQoFBgoFEAkHCAcIBwYKCQwKCQcAAAAUEAoACgoDBAgFBgoCBQUHCAQHBAYJBggKCQkICQkIAwMFBwYGCAsKCAsLCgkLBQkMCg4MCgkKCwgKCwsPDQwJBAUEBwgGCAcHCQsGBgoFEAoHCAcICAcKCQ0KCQcAAAAVEQsACwsDBQgGBgsCBQUHCAQHBAYJBwkKCgkJCgkJAwMFBwYHCQwKCAsLCwoLBQkNCg8MCgoKCwgLDAwQDgwJBAUFBwgGCQcHCgsGBgsFEQoICQcICAcLCQ4LCgcAAAAWEgsACwsDBQgGBwsCBgYICAUHBAYKBwkLCgoJCgoJAwMGCAcHCQ0LCAwMDAoMBQkNCxANCwoLDAgLDAwQDg0KBQYFBwkHCQcHCgwGBwsFEgsICQgJCAcLCg4LCggAAAAXEwwADAwDBQkGBwwCBgYICQUIBAYKBwkLCgoKCwoJAwQGCAcHCQ0LCQwMDAsMBgoOCxENCwsLDQkMDQ0RDw4KBQYFCAkHCggICwwGBwwFEwsICggJCQgMCg8MCwgAAAAYFAwADAwEBQkGBwwDBgYICQUIBAcKCAoMCwoKCwsKBAQGCAcICg4MCQ0NDQsNBgoPDBEODAsMDQkMDg0SEA4LBQYFCAoHCggICw0HBwwGFAwJCggKCQgMCxAMCwgAAAAAAQAAAZAABQACArwCigAAAI8CvAKKAAABxQAyAQMAAAAABAAAAAAAAAAAAAADAAAAAAAAAAAAAAAATUFDUgBAACAAegKz/zsAAAKzAMUAAAABAAAAAAAAAAEAAIAAAAAB9AGKAABgAAKzAnVCbGFjayBib3lzIG8gICAg/////zf///5CTEFSMDAAAAAAAAAAAQAAAAEAABIO2bBfDzz1AAAD6AAAAAC0STWnAAAAALRJNaf/mf87A2oDIAAAAAMAAgABAAAAAAABAAADIP84AAADMP+Z/7gDagABAAAAAAAAAAAAAAAAAAAAWwABAAAAWwChAAMAAAAAAAIACABAAAoAAABeALsAAQABAAAAEADGAAEAAAAAAAAAMgAAAAEAAAAAAAEACwAyAAEAAAAAAAIABwA9AAEAAAAAAAMACwBEAAEAAAAAAAQACwBPAAEAAAAAAAUAIABaAAEAAAAAAAYACwB6AAEAAAAAAAcAGgCFAAMAAQQJAAAAZACfAAMAAQQJAAEAFgEDAAMAAQQJAAIADgEZAAMAAQQJAAMAFgEnAAMAAQQJAAQAFgE9AAMAAQQJAAUAQAFTAAMAAQQJAAYAFgGTAAMAAQQJAAcANAGpQnkgSmFrb2IgRmlzY2hlciBha2EgUGl6emFEdWRlICpEaXN0cmlidXRlIGZyZWVseSpTY3JhdGNoRm9udFJlZ3VsYXJTY3JhdGNoRm9udFNjcmF0Y2hGb250aHR0cDovL2hqZW0uZ2V0Mm5ldC5kay9qZmlzY2hlci9TY3JhdGNoRm9udCoqKiBObyBUcmFkZU1hcmsgRm91bmQgKioqAEIAeQAgAEoAYQBrAG8AYgAgAEYAaQBzAGMAaABlAHIAIABhAGsAYQAgAFAAaQB6AHoAYQBEAHUAZABlACAAKgBEAGkAcwB0AHIAaQBiAHUAdABlACAAZgByAGUAZQBsAHkAKgBTAGMAcgBhAHQAYwBoAEYAbwBuAHQAUgBlAGcAdQBsAGEAcgBTAGMAcgBhAHQAYwBoAEYAbwBuAHQAUwBjAHIAYQB0AGMAaABGAG8AbgB0AGgAdAB0AHAAOgAvAC8AaABqAGUAbQAuAGcAZQB0ADIAbgBlAHQALgBkAGsALwBqAGYAaQBzAGMAaABlAHIALwBTAGMAcgBhAHQAYwBoAEYAbwBuAHQAKgAqACoAIABOAG8AIABUAHIAYQBkAGUATQBhAHIAawAgAEYAbwB1AG4AZAAgACoAKgAqAAAAAABUAGgAaQBzACAARgBvAG4AdAAgAFIAZQBuAGEAbQBlAGQAAAAAAAAA/AAAAxg=\"","import minilog from 'minilog';\nminilog.enable();\n\nexport default minilog('scratch-paint');\n","import keyMirror from 'keymirror';\n\nconst Formats = keyMirror({\n    BITMAP: null,\n    VECTOR: null,\n    // Format changes which should not trigger conversions, for instance undo\n    BITMAP_SKIP_CONVERT: null,\n    VECTOR_SKIP_CONVERT: null\n});\n\nconst isVector = function (format) {\n    return format === Formats.VECTOR || format === Formats.VECTOR_SKIP_CONVERT;\n};\n\nconst isBitmap = function (format) {\n    return format === Formats.BITMAP || format === Formats.BITMAP_SKIP_CONVERT;\n};\n\nexport {\n    Formats as default,\n    isVector,\n    isBitmap\n};\n","import keyMirror from 'keymirror';\n\nconst vectorModesObj = {\n    BRUSH: null,\n    ERASER: null,\n    LINE: null,\n    FILL: null,\n    SELECT: null,\n    RESHAPE: null,\n    OVAL: null,\n    RECT: null,\n    ROUNDED_RECT: null,\n    TEXT: null\n};\nconst bitmapModesObj = {\n    BIT_BRUSH: null,\n    BIT_LINE: null,\n    BIT_OVAL: null,\n    BIT_RECT: null,\n    BIT_TEXT: null,\n    BIT_FILL: null,\n    BIT_ERASER: null,\n    BIT_SELECT: null\n};\nconst VectorModes = keyMirror(vectorModesObj);\nconst BitmapModes = keyMirror(bitmapModesObj);\nconst Modes = keyMirror({...vectorModesObj, ...bitmapModesObj});\n\nconst GradientToolsModes = keyMirror({\n    FILL: null,\n    SELECT: null,\n    RESHAPE: null,\n    OVAL: null,\n    RECT: null,\n    LINE: null,\n\n    BIT_OVAL: null,\n    BIT_RECT: null,\n    BIT_SELECT: null,\n    BIT_FILL: null\n});\n\nexport {\n    Modes as default,\n    VectorModes,\n    BitmapModes,\n    GradientToolsModes\n};\n","import paper from '@scratch/paper';\n\nconst getRootItem = function (item) {\n    if (item.parent.className === 'Layer') {\n        return item;\n    }\n    return getRootItem(item.parent);\n};\n\nconst isBoundsItem = function (item) {\n    if (item.className === 'PointText' ||\n        item.className === 'Shape' ||\n        item.className === 'PlacedSymbol' ||\n        item.className === 'Raster') {\n        return true;\n    }\n    return false;\n};\n\n\nconst isPathItem = function (item) {\n    return item.className === 'Path';\n};\n\n\nconst isCompoundPathItem = function (item) {\n    return item.className === 'CompoundPath';\n};\n\n\nconst isGroupItem = function (item) {\n    return item && item.className && item.className === 'Group';\n};\n\n\nconst isPointTextItem = function (item) {\n    return item.className === 'PointText';\n};\n\n\nconst isPGTextItem = function (item) {\n    return getRootItem(item).data.isPGTextItem;\n};\n\nconst setPivot = function (item, point) {\n    if (isBoundsItem(item)) {\n        item.pivot = item.globalToLocal(point);\n    } else {\n        item.pivot = point;\n    }\n};\n\n\nconst getPositionInView = function (item) {\n    const itemPos = new paper.Point();\n    itemPos.x = item.position.x - paper.view.bounds.x;\n    itemPos.y = item.position.y - paper.view.bounds.y;\n    return itemPos;\n};\n\n\nconst setPositionInView = function (item, pos) {\n    item.position.x = paper.view.bounds.x + pos.x;\n    item.position.y = paper.view.bounds.y + pos.y;\n};\n\nexport {\n    isBoundsItem,\n    isPathItem,\n    isCompoundPathItem,\n    isGroupItem,\n    isPointTextItem,\n    isPGTextItem,\n    setPivot,\n    getPositionInView,\n    setPositionInView,\n    getRootItem\n};\n","import paper from '@scratch/paper';\nimport {getRootItem, isGroupItem} from './item';\nimport {clearSelection, getSelectedRootItems, setItemSelection} from './selection';\n\nconst isGroup = function (item) {\n    return isGroupItem(item);\n};\n\n/**\n * Groups the given items. Other things are then deselected and the new group is selected.\n * @param {!Array<paper.Item>} items Root level items to group\n * @param {!function} clearSelectedItems Function to clear Redux state's selected items\n * @param {!function} setSelectedItems Function to set Redux state with new list of selected items\n * @param {!function} onUpdateImage Function to let listeners know that SVG has changed.\n * @return {paper.Group} the group if one is created, otherwise false.\n */\nconst groupItems = function (items, clearSelectedItems, setSelectedItems, onUpdateImage) {\n    if (items.length > 0) {\n        const group = new paper.Group(items);\n        clearSelection(clearSelectedItems);\n        setItemSelection(group, true);\n        for (let i = 0; i < group.children.length; i++) {\n            group.children[i].selected = true;\n        }\n        setSelectedItems();\n        onUpdateImage();\n        return group;\n    }\n    return false;\n};\n\n/**\n * Groups the selected items. Other things are then deselected and the new group is selected.\n * @param {!function} clearSelectedItems Function to clear Redux state's selected items\n * @param {!function} setSelectedItems Function to set Redux state with new list of selected items\n * @param {!function} onUpdateImage Function to let listeners know that SVG has changed.\n * @return {paper.Group} the group if one is created, otherwise false.\n */\nconst groupSelection = function (clearSelectedItems, setSelectedItems, onUpdateImage) {\n    const items = getSelectedRootItems();\n    return groupItems(items, clearSelectedItems, setSelectedItems, onUpdateImage);\n};\n\nconst _ungroupLoop = function (group, recursive, setSelectedItems) {\n    // Can't ungroup items that are not groups\n    if (!group || !group.children || !isGroup(group)) return;\n            \n    group.applyMatrix = true;\n    // iterate over group children recursively\n    for (let i = 0; i < group.children.length; i++) {\n        let groupChild = group.children[i];\n        if (groupChild instanceof paper.Group && groupChild.hasChildren()) {\n            // recursion (groups can contain groups, ie. from SVG import)\n            if (recursive) {\n                _ungroupLoop(groupChild, recursive, setSelectedItems);\n                continue;\n            }\n            if (groupChild.children.length === 1) {\n                groupChild = groupChild.reduce();\n            }\n        }\n        groupChild.applyMatrix = true;\n        // move items from the group to the activeLayer (ungrouping)\n        groupChild.insertBelow(group);\n        if (setSelectedItems) {\n            groupChild.selected = true;\n        }\n        i--;\n    }\n};\n\n/**\n * Ungroups the given items. The new group is selected only if setSelectedItems is passed in.\n * onUpdateImage is called to notify listeners of a change on the SVG only if onUpdateImage is passed in.\n * The reason these arguments are optional on ungroupItems is because ungroupItems is used for parts of\n * SVG import, which shouldn't change the selection or undo state.\n *\n * @param {!Array<paper.Item>} items Items to ungroup if they are groups\n * @param {?function} setSelectedItems Function to set Redux state with new list of selected items\n * @param {?function} onUpdateImage Function to let listeners know that SVG has changed.\n */\nconst ungroupItems = function (items, setSelectedItems, onUpdateImage) {\n    if (items.length === 0) {\n        return;\n    }\n    const emptyGroups = [];\n    for (let i = 0; i < items.length; i++) {\n        const item = items[i];\n        if (isGroup(item) && !item.data.isPGTextItem) {\n            _ungroupLoop(item, false /* recursive */, setSelectedItems);\n\n            if (!item.hasChildren()) {\n                emptyGroups.push(item);\n            }\n        } else if (setSelectedItems) {\n            item.selected = true;\n        }\n    }\n    if (setSelectedItems) {\n        setSelectedItems();\n    }\n    // remove all empty groups after ungrouping\n    for (let j = 0; j < emptyGroups.length; j++) {\n        emptyGroups[j].remove();\n    }\n    // @todo: enable/disable grouping icons\n    if (onUpdateImage) {\n        onUpdateImage();\n    }\n};\n\n/**\n * Ungroups the selected items. Other items are deselected and the ungrouped items are selected.\n *\n * @param {!function} clearSelectedItems Function to clear Redux state's selected items\n * @param {!function} setSelectedItems Function to set Redux state with new list of selected items\n * @param {!function} onUpdateImage Function to let listeners know that SVG has changed.\n */\nconst ungroupSelection = function (clearSelectedItems, setSelectedItems, onUpdateImage) {\n    const items = getSelectedRootItems();\n    clearSelection(clearSelectedItems);\n    ungroupItems(items, setSelectedItems, onUpdateImage);\n};\n\nconst getItemsGroup = function (item) {\n    const itemParent = item.parent;\n\n    if (isGroup(itemParent)) {\n        return itemParent;\n    }\n    return null;\n};\n\nconst isGroupChild = function (item) {\n    const rootItem = getRootItem(item);\n    return isGroup(rootItem);\n};\n\nconst shouldShowGroup = function () {\n    const items = getSelectedRootItems();\n    return items.length > 1;\n};\n\nconst shouldShowUngroup = function () {\n    const items = getSelectedRootItems();\n    for (let i = 0; i < items.length; i++) {\n        const item = items[i];\n        if (isGroup(item) && !item.data.isPGTextItem && item.children && item.children.length > 0) {\n            return true;\n        }\n    }\n    return false;\n};\n\nexport {\n    groupSelection,\n    ungroupSelection,\n    groupItems,\n    ungroupItems,\n    getItemsGroup,\n    isGroup,\n    isGroupChild,\n    shouldShowGroup,\n    shouldShowUngroup\n};\n","const isCompoundPath = function (item) {\n    return item && item.className === 'CompoundPath';\n};\n\nconst isCompoundPathChild = function (item) {\n    if (item.parent) {\n        return item.parent.className === 'CompoundPath';\n    }\n    return false;\n};\n\n\nconst getItemsCompoundPath = function (item) {\n    const itemParent = item.parent;\n\n    if (isCompoundPath(itemParent)) {\n        return itemParent;\n    }\n    return null;\n    \n};\n\nexport {\n    isCompoundPath,\n    isCompoundPathChild,\n    getItemsCompoundPath\n};\n","import paper from '@scratch/paper';\n\n/** The ratio of the curve length to use for the handle length to convert squares into approximately circles. */\nconst HANDLE_RATIO = 0.3902628565;\n\nconst checkPointsClose = function (startPos, eventPoint, threshold) {\n    const xOff = Math.abs(startPos.x - eventPoint.x);\n    const yOff = Math.abs(startPos.y - eventPoint.y);\n    if (xOff < threshold && yOff < threshold) {\n        return true;\n    }\n    return false;\n};\n\nconst getRandomInt = function (min, max) {\n    return Math.floor(Math.random() * (max - min)) + min;\n};\n\nconst getRandomBoolean = function () {\n    return getRandomInt(0, 2) === 1;\n};\n\n// Thanks Mikko Mononen! https://github.com/memononen/stylii\nconst snapDeltaToAngle = function (delta, snapAngle) {\n    let angle = Math.atan2(delta.y, delta.x);\n    angle = Math.round(angle / snapAngle) * snapAngle;\n    const dirx = Math.cos(angle);\n    const diry = Math.sin(angle);\n    const d = (dirx * delta.x) + (diry * delta.y);\n    return new paper.Point(dirx * d, diry * d);\n};\n\nconst _getDepth = function (item) {\n    let temp = item;\n    let depth = 0;\n    while (!(temp instanceof paper.Layer)) {\n        depth++;\n        if (temp.parent === null) {\n            // This item isn't attached to a layer, so it's not on the canvas and can't be compared.\n            return null;\n        }\n        temp = temp.parent;\n    }\n    return depth;\n};\n\nconst sortItemsByZIndex = function (a, b) {\n    if (a === null || b === null) {\n        return null;\n    }\n\n    // Get to the same depth in the project tree\n    let tempA = a;\n    let tempB = b;\n    let aDepth = _getDepth(a);\n    let bDepth = _getDepth(b);\n    while (bDepth > aDepth) {\n        tempB = tempB.parent;\n        bDepth--;\n    }\n    while (aDepth > bDepth) {\n        tempA = tempA.parent;\n        aDepth--;\n    }\n\n    // Step up until they share parents. When they share parents, compare indices.\n    while (tempA && tempB) {\n        if (tempB === tempA) {\n            return 0;\n        } else if (tempB.parent === tempA.parent) {\n            if (tempB.parent instanceof paper.CompoundPath) {\n                // Neither is on top of the other in a compound path. Return in order of decreasing size.\n                return Math.abs(tempB.area) - Math.abs(tempA.area);\n            }\n            return parseFloat(tempA.index) - parseFloat(tempB.index);\n        }\n        tempB = tempB.parent;\n        tempA = tempA.parent;\n    }\n\n    // No shared hierarchy\n    return null;\n};\n\n// Expand the size of the path by amount all around\nconst expandBy = function (path, amount) {\n    const center = path.position;\n    let pathArea = path.area;\n    for (const seg of path.segments) {\n        const delta = seg.point.subtract(center)\n            .normalize()\n            .multiply(amount);\n        seg.point = seg.point.add(delta);\n        // If that made the path area smaller, go the other way.\n        if (path.area < pathArea) seg.point = seg.point.subtract(delta.multiply(2));\n        pathArea = path.area;\n    }\n};\n\n// Do for all nested items in groups\nconst _doRecursively = function (item, func) {\n    if (item instanceof paper.Group) {\n        for (const child of item.children) {\n            _doRecursively(child, func);\n        }\n    } else {\n        func(item);\n    }\n};\n\n// Make item clockwise. Drill down into groups.\nconst ensureClockwise = function (root) {\n    _doRecursively(root, item => {\n        if (item instanceof paper.PathItem) {\n            item.clockwise = true;\n        }\n    });\n};\n\n// Scale item and its strokes by factor\nconst scaleWithStrokes = function (root, factor, pivot) {\n    _doRecursively(root, item => {\n        if (item instanceof paper.PointText) {\n            // Text outline size is controlled by text transform matrix, thus it's already scaled.\n            return;\n        }\n        if (item.strokeWidth) {\n            item.strokeWidth = item.strokeWidth * factor;\n        }\n    });\n    root.scale(factor, pivot);\n};\n\n/**\n * Get the size and position of a square, as in if the user were holding the shift key down while drawing the shape,\n * from the point where the drag started and the point where the mouse is currently positioned. (Note: This also works\n * for shapes like circles (\"square ovals\"), which fill the same dimensions.)\n * @param {!paper.Point} startPos The point where the user started dragging\n * @param {!paper.Point} eventPoint The point where the user has currently dragged to\n * @return {object} Information about the size and position of how the square should be drawn\n */\nconst getSquareDimensions = function (startPos, eventPoint) {\n    // These variables are used for determining the relative quadrant that the shape will appear in.\n    // So if you drag up and right, it'll show up above and to the right of where you started dragging, etc.\n    let offsetX = eventPoint.x - startPos.x;\n    let offsetY = eventPoint.y - startPos.y;\n\n    // If the offset variables are zero, the shape ends up having zero width or height, which is bad.\n    // Deal with this by forcing them to be non-zero (we arbitrarily choose 1; any non-zero value would work).\n    offsetX = offsetX ? offsetX : 1;\n    offsetY = offsetY ? offsetY : 1;\n\n    // The length of the shape is the greater of the X and Y offsets.\n    const offsetDistance = eventPoint.subtract(startPos).abs();\n    const length = Math.max(offsetDistance.x, offsetDistance.y);\n\n    const size = new paper.Point(\n        length * offsetX / Math.abs(offsetX),\n        length * offsetY / Math.abs(offsetY)\n    );\n\n    const position = startPos.add(size.multiply(0.5));\n\n    return {size, position};\n};\n\nexport {\n    HANDLE_RATIO,\n    checkPointsClose,\n    ensureClockwise,\n    expandBy,\n    getRandomInt,\n    getRandomBoolean,\n    getSquareDimensions,\n    scaleWithStrokes,\n    snapDeltaToAngle,\n    sortItemsByZIndex\n};\n","import paper from '@scratch/paper';\nimport Modes from '../lib/modes';\n\nimport {getItemsGroup, isGroup} from './group';\nimport {getRootItem, isCompoundPathItem, isBoundsItem, isPathItem, isPGTextItem} from './item';\nimport {getItemsCompoundPath, isCompoundPath, isCompoundPathChild} from './compound-path';\nimport {sortItemsByZIndex} from './math';\n\n/**\n * Wrapper for paper.project.getItems that excludes our helper items\n * @param {?object} options See paper.js docs for paper.Item.getItems\n * @return {Array<paper.Item>} items that match options\n */\nconst getItems = function (options) {\n    const newMatcher = function (item) {\n        return !(item instanceof paper.Layer) &&\n            item.layer.data && item.layer.data.isPaintingLayer &&\n            !item.locked &&\n            !item.isClipMask() &&\n            !(item.data && item.data.isHelperItem) &&\n            (!options.match || options.match(item));\n    };\n    const newOptions = {...options, match: newMatcher};\n    return paper.project.getItems(newOptions);\n};\n\n/**\n * @param {boolean} includeGuides True if guide layer items like the bounding box should\n *     be included in the returned items.\n * @return {Array<paper.item>} all top-level (direct descendants of a paper.Layer) items\n */\nconst getAllRootItems = function (includeGuides) {\n    includeGuides = includeGuides || false;\n    const allItems = [];\n    for (const layer of paper.project.layers) {\n        for (const child of layer.children) {\n            // don't give guides back\n            if (!includeGuides && child.guide) {\n                continue;\n            }\n            allItems.push(child);\n        }\n    }\n    return allItems;\n};\n\n/**\n * @return {Array<paper.item>} all top-level (direct descendants of a paper.Layer) items\n *     that aren't guide items or helper items.\n */\nconst getAllSelectableRootItems = function () {\n    const allItems = getAllRootItems();\n    const selectables = [];\n    for (let i = 0; i < allItems.length; i++) {\n        if (allItems[i].data && !allItems[i].data.isHelperItem) {\n            selectables.push(allItems[i]);\n        }\n    }\n    return selectables;\n};\n\nconst selectItemSegments = function (item, state) {\n    if (item.children) {\n        for (let i = 0; i < item.children.length; i++) {\n            const child = item.children[i];\n            if (child.children && child.children.length > 0) {\n                selectItemSegments(child, state);\n            } else {\n                child.fullySelected = state;\n            }\n        }\n    } else {\n        for (let i = 0; i < item.segments.length; i++) {\n            item.segments[i].selected = state;\n        }\n    }\n};\n\nconst _setGroupSelection = function (root, selected, fullySelected) {\n    root.fullySelected = fullySelected;\n    root.selected = selected;\n    // select children of compound-path or group\n    if (isCompoundPath(root) || isGroup(root)) {\n        const children = root.children;\n        if (children) {\n            for (const child of children) {\n                if (isGroup(child)) {\n                    _setGroupSelection(child, selected, fullySelected);\n                } else {\n                    child.fullySelected = fullySelected;\n                    child.selected = selected;\n                }\n            }\n        }\n    }\n};\n\nconst setItemSelection = function (item, state, fullySelected) {\n    const parentGroup = getItemsGroup(item);\n    const itemsCompoundPath = getItemsCompoundPath(item);\n    \n    // if selection is in a group, select group\n    if (parentGroup) {\n        // do it recursive\n        setItemSelection(parentGroup, state, fullySelected);\n    } else if (itemsCompoundPath) {\n        _setGroupSelection(itemsCompoundPath, state, fullySelected);\n    } else {\n        if (item.data && item.data.noSelect) {\n            return;\n        }\n        _setGroupSelection(item, state, fullySelected);\n    }\n    \n};\n\n/** @return {boolean} true if anything was selected */\nconst selectAllItems = function () {\n    const items = getAllSelectableRootItems();\n    if (items.length === 0) return false;\n    \n    for (let i = 0; i < items.length; i++) {\n        setItemSelection(items[i], true);\n    }\n    return true;\n};\n\n/** @return {boolean} true if anything was selected */\nconst selectAllSegments = function () {\n    const items = getAllSelectableRootItems();\n    if (items.length === 0) return false;\n    \n    for (let i = 0; i < items.length; i++) {\n        selectItemSegments(items[i], true);\n    }\n    return true;\n};\n\n/** @param {!function} dispatchClearSelect Function to update the Redux select state */\nconst clearSelection = function (dispatchClearSelect) {\n    paper.project.deselectAll();\n    dispatchClearSelect();\n};\n\n/**\n * This gets all selected non-grouped items and groups\n * (alternative to paper.project.selectedItems, which includes\n * group children in addition to the group)\n * @return {Array<paper.Item>} in increasing Z order.\n */\nconst getSelectedRootItems = function () {\n    const allItems = getAllSelectableRootItems();\n    const items = [];\n\n    for (const item of allItems) {\n        if (item.selected) {\n            items.push(item);\n        } else if (item instanceof paper.CompoundPath) {\n            // Consider a compound path selected if any of its paths are selected\n            for (const child of item.children) {\n                if (child.selected) {\n                    items.push(item);\n                    break;\n                }\n            }\n        }\n    }\n\n    // sort items by index (0 at bottom)\n    items.sort((a, b) => parseFloat(a.index) - parseFloat(b.index));\n    return items;\n};\n\n/**\n * This gets all selected items that are as deeply nested as possible. Does not\n * return the parent groups.\n * @return {Array<paper.Item>} in increasing Z order.\n */\nconst getSelectedLeafItems = function () {\n    const allItems = paper.project.selectedItems;\n    const items = [];\n\n    for (let i = 0; i < allItems.length; i++) {\n        const item = allItems[i];\n        if (!(item instanceof paper.Layer) && !isGroup(item) && item.data && !item.data.isSelectionBound) {\n            items.push(item);\n        }\n    }\n    items.sort(sortItemsByZIndex);\n    return items;\n};\n\n/**\n * This gets all selected path segments.\n * @return {Array<paper.Segment>} selected segments\n */\nconst getSelectedSegments = function () {\n    const selected = getSelectedLeafItems();\n    const segments = [];\n    for (const item of selected) {\n        if (!item.segments) {\n            continue;\n        }\n        for (const seg of item.segments) {\n            if (seg.selected) {\n                segments.push(seg);\n            }\n        }\n    }\n    return segments;\n};\n\nconst _deleteItemSelection = function (items, onUpdateImage) {\n    // @todo: Update toolbar state on change\n    if (items.length === 0) {\n        return false;\n    }\n    for (let i = 0; i < items.length; i++) {\n        items[i].remove();\n    }\n    onUpdateImage();\n    return true;\n};\n\n// Return true if anything was removed\nconst _removeSelectedSegments = function (items, onUpdateImage) {\n    const segmentsToRemove = [];\n    \n    for (let i = 0; i < items.length; i++) {\n        if (!items[i].segments) continue;\n        const segments = items[i].segments;\n        for (let j = 0; j < segments.length; j++) {\n            const seg = segments[j];\n            if (seg.selected) {\n                segmentsToRemove.push(seg);\n            }\n        }\n    }\n    \n    let removedSegments = false;\n    for (let i = 0; i < segmentsToRemove.length; i++) {\n        const seg = segmentsToRemove[i];\n        seg.remove();\n        removedSegments = true;\n    }\n    if (removedSegments) {\n        onUpdateImage();\n    }\n    return removedSegments;\n};\n\n// Return whether anything was deleted\nconst deleteSelection = function (mode, onUpdateImage) {\n    if (mode === Modes.RESHAPE) {\n        const selectedItems = getSelectedLeafItems();\n        // If there are points selected remove them. If not delete the item selected.\n        if (_removeSelectedSegments(selectedItems, onUpdateImage)) {\n            return true;\n        }\n        return _deleteItemSelection(selectedItems, onUpdateImage);\n    }\n    const selectedItems = getSelectedRootItems();\n    return _deleteItemSelection(selectedItems, onUpdateImage);\n};\n\nconst cloneSelection = function (recursive, onUpdateImage) {\n    const selectedItems = recursive ? getSelectedLeafItems() : getSelectedRootItems();\n    for (let i = 0; i < selectedItems.length; i++) {\n        const item = selectedItems[i];\n        item.clone();\n        item.selected = false;\n    }\n    onUpdateImage();\n};\n\nconst _checkBoundsItem = function (selectionRect, item, event) {\n    const itemBounds = new paper.Path([\n        item.localToGlobal(item.internalBounds.topLeft),\n        item.localToGlobal(item.internalBounds.topRight),\n        item.localToGlobal(item.internalBounds.bottomRight),\n        item.localToGlobal(item.internalBounds.bottomLeft)\n    ]);\n    itemBounds.closed = true;\n    itemBounds.guide = true;\n\n    for (let i = 0; i < itemBounds.segments.length; i++) {\n        const seg = itemBounds.segments[i];\n        if (selectionRect.contains(seg.point) ||\n            (i === 0 && selectionRect.getIntersections(itemBounds).length > 0)) {\n            if (event.modifiers.shift && item.selected) {\n                setItemSelection(item, false);\n\n            } else {\n                setItemSelection(item, true);\n            }\n            itemBounds.remove();\n            return true;\n            \n        }\n    }\n\n    itemBounds.remove();\n};\n\nconst _handleRectangularSelectionItems = function (item, event, rect, mode, root) {\n    if (isPathItem(item)) {\n        let segmentMode = false;\n        \n        // first round checks for segments inside the selectionRect\n        for (let j = 0; j < item.segments.length; j++) {\n            const seg = item.segments[j];\n            if (rect.contains(seg.point)) {\n                if (mode === Modes.RESHAPE) {\n                    if (event.modifiers.shift && seg.selected) {\n                        seg.selected = false;\n                    } else {\n                        seg.selected = true;\n                    }\n                    segmentMode = true;\n                } else {\n                    if (event.modifiers.shift && item.selected) {\n                        setItemSelection(root, false);\n                    } else {\n                        setItemSelection(root, true, true /* fullySelected */);\n                    }\n                    return false;\n                }\n            }\n        }\n\n        // second round checks for path intersections\n        const intersections = item.getIntersections(rect);\n        if (intersections.length > 0 && !segmentMode) {\n            // if in reshape mode, select the curves that intersect\n            // with the selectionRect\n            if (mode === Modes.RESHAPE) {\n                for (let k = 0; k < intersections.length; k++) {\n                    const curve = intersections[k].curve;\n                    // intersections contains every curve twice because\n                    // the selectionRect intersects a circle always at\n                    // two points. so we skip every other curve\n                    if (k % 2 === 1) {\n                        continue;\n                    }\n\n                    if (event.modifiers.shift) {\n                        curve.selected = !curve.selected;\n                    } else {\n                        curve.selected = true;\n                    }\n                }\n            } else {\n                if (event.modifiers.shift && item.selected) {\n                    setItemSelection(item, false);\n\n                } else {\n                    setItemSelection(item, true);\n                }\n                return false;\n            }\n        }\n        // @todo: Update toolbar state on change\n\n    } else if (isBoundsItem(item)) {\n        if (_checkBoundsItem(rect, item, event)) {\n            return false;\n        }\n    }\n    return true;\n};\n\n// if the rectangular selection found a group, drill into it recursively\nconst _rectangularSelectionGroupLoop = function (group, rect, root, event, mode) {\n    for (let i = 0; i < group.children.length; i++) {\n        const child = group.children[i];\n        \n        if (isGroup(child) || isCompoundPathItem(child)) {\n            _rectangularSelectionGroupLoop(child, rect, root, event, mode);\n        } else {\n            _handleRectangularSelectionItems(child, event, rect, mode, root);\n        }\n    }\n    return true;\n};\n\n/**\n * Called after drawing a selection rectangle in a select mode. In reshape mode, this\n * selects all control points and curves within the rectangle. In select mode, this\n * selects all items and groups that intersect the rectangle\n * @param {!MouseEvent} event The mouse event to draw the rectangle\n * @param {!paper.Rect} rect The selection rectangle\n * @param {Modes} mode The mode of the paint editor when drawing the rectangle\n */\nconst processRectangularSelection = function (event, rect, mode) {\n    const allItems = getAllSelectableRootItems();\n    \n    for (let i = 0; i < allItems.length; i++) {\n        const item = allItems[i];\n        if (mode === Modes.RESHAPE && isPGTextItem(getRootItem(item))) {\n            continue;\n        }\n        if (isGroup(item) || isCompoundPathItem(item)) {\n            // check for item segment points inside\n            _rectangularSelectionGroupLoop(item, rect, item, event, mode);\n        } else {\n            _handleRectangularSelectionItems(item, event, rect, mode, item);\n        }\n    }\n};\n\n/**\n * When switching to the select tool while having a child object of a\n * compound path selected, deselect the child and select the compound path\n * instead. (otherwise the compound path breaks because of scale-grouping)\n */\nconst selectRootItem = function () {\n    const items = getSelectedLeafItems();\n    for (const item of items) {\n        if (isCompoundPathChild(item)) {\n            const cp = getItemsCompoundPath(item);\n            setItemSelection(cp, true, true /* fullySelected */);\n        }\n        const rootItem = getRootItem(item);\n        if (item !== rootItem) {\n            setItemSelection(rootItem, true, true /* fullySelected */);\n        }\n    }\n};\n\nexport {\n    getItems,\n    getAllRootItems,\n    getAllSelectableRootItems,\n    selectAllItems,\n    selectAllSegments,\n    clearSelection,\n    deleteSelection,\n    cloneSelection,\n    setItemSelection,\n    getSelectedLeafItems,\n    getSelectedRootItems,\n    getSelectedSegments,\n    processRectangularSelection,\n    selectRootItem\n};\n","import paper from '@scratch/paper';\nimport {getGuideLayer} from './layer';\nimport {getAllRootItems} from './selection';\n\nconst GUIDE_BLUE = '#009dec';\nconst GUIDE_GREY = '#aaaaaa';\n\nconst setDefaultGuideStyle = function (item) {\n    item.strokeWidth = 1 / paper.view.zoom;\n    item.opacity = 1;\n    item.blendMode = 'normal';\n    item.guide = true;\n};\n\nconst hoverItem = function (item) {\n    const segments = item.segments;\n    const clone = new paper.Path(segments);\n    setDefaultGuideStyle(clone);\n    if (item.closed) {\n        clone.closed = true;\n    }\n    clone.parent = getGuideLayer();\n    clone.position = item.position;\n    clone.strokeColor = GUIDE_BLUE;\n    clone.fillColor = null;\n    clone.data.isHelperItem = true;\n    clone.data.origItem = item;\n    clone.bringToFront();\n\n    return clone;\n};\n\nconst hoverBounds = function (item, expandBy) {\n    let bounds = item.internalBounds;\n    if (expandBy) {\n        bounds = bounds.expand(expandBy);\n    }\n    const rect = new paper.Path.Rectangle(bounds);\n    rect.matrix = item.matrix;\n    setDefaultGuideStyle(rect);\n    rect.parent = getGuideLayer();\n    rect.strokeColor = GUIDE_BLUE;\n    rect.fillColor = null;\n    rect.data.isHelperItem = true;\n    rect.data.origItem = item;\n    rect.bringToFront();\n\n    return rect;\n};\n\nconst rectSelect = function (event, color) {\n    const half = new paper.Point(0.5 / paper.view.zoom, 0.5 / paper.view.zoom);\n    const start = event.downPoint.add(half);\n    const end = event.point.add(half);\n    const rect = new paper.Path.Rectangle(start, end);\n    const zoom = 1.0 / paper.view.zoom;\n    setDefaultGuideStyle(rect);\n    if (!color) color = GUIDE_GREY;\n    rect.parent = getGuideLayer();\n    rect.strokeColor = color;\n    rect.data.isRectSelect = true;\n    rect.data.isHelperItem = true;\n    rect.dashArray = [3.0 * zoom, 3.0 * zoom];\n    return rect;\n};\n\nconst getGuideColor = function () {\n    return GUIDE_BLUE;\n};\n\nconst _removePaperItemsByDataTags = function (tags) {\n    const allItems = getAllRootItems(true);\n    for (const item of allItems) {\n        for (const tag of tags) {\n            if (item.data && item.data[tag]) {\n                item.remove();\n            }\n        }\n    }\n};\n\nconst _removePaperItemsByTags = function (tags) {\n    const allItems = getAllRootItems(true);\n    for (const item of allItems) {\n        for (const tag of tags) {\n            if (item[tag]) {\n                item.remove();\n            }\n        }\n    }\n};\n\nconst removeBoundsPath = function () {\n    _removePaperItemsByDataTags(['isSelectionBound', 'isRotHandle', 'isScaleHandle']);\n};\n\nconst removeBoundsHandles = function () {\n    _removePaperItemsByDataTags(['isRotHandle', 'isScaleHandle']);\n};\n\nconst removeAllGuides = function () {\n    _removePaperItemsByTags(['guide']);\n};\n\nconst removeHitPoint = function () {\n    _removePaperItemsByDataTags(['isHitPoint']);\n};\n\nconst drawHitPoint = function (point) {\n    removeHitPoint();\n    if (point) {\n        const hitPoint = paper.Path.Circle(point, 4 / paper.view.zoom /* radius */);\n        hitPoint.strokeWidth = 1 / paper.view.zoom;\n        hitPoint.strokeColor = GUIDE_BLUE;\n        hitPoint.fillColor = new paper.Color(1, 1, 1, 0.5);\n        hitPoint.parent = getGuideLayer();\n        hitPoint.data.isHitPoint = true;\n        hitPoint.data.isHelperItem = true;\n    }\n};\n\nexport {\n    hoverItem,\n    hoverBounds,\n    rectSelect,\n    removeAllGuides,\n    removeBoundsHandles,\n    removeBoundsPath,\n    drawHitPoint,\n    removeHitPoint,\n    getGuideColor,\n    setDefaultGuideStyle\n};\n","import paper from '@scratch/paper';\nimport {createCanvas, clearRaster, getRaster, hideGuideLayers, showGuideLayers} from './layer';\nimport {getGuideColor} from './guides';\nimport {clearSelection} from './selection';\nimport {ART_BOARD_WIDTH, ART_BOARD_HEIGHT, CENTER, MAX_WORKSPACE_BOUNDS} from './view';\nimport Formats from '../lib/format';\nimport log from '../log/log';\n\nconst forEachLinePoint = function (point1, point2, callback) {\n    // Bresenham line algorithm\n    let x1 = ~~point1.x;\n    const x2 = ~~point2.x;\n    let y1 = ~~point1.y;\n    const y2 = ~~point2.y;\n\n    const dx = Math.abs(x2 - x1);\n    const dy = Math.abs(y2 - y1);\n    const sx = (x1 < x2) ? 1 : -1;\n    const sy = (y1 < y2) ? 1 : -1;\n    let err = dx - dy;\n\n    callback(x1, y1);\n    while (x1 !== x2 || y1 !== y2) {\n        const e2 = err * 2;\n        if (e2 > -dy) {\n            err -= dy;\n            x1 += sx;\n        }\n        if (e2 < dx) {\n            err += dx;\n            y1 += sy;\n        }\n        callback(x1, y1);\n    }\n};\n\n/**\n * @param {!number} a Coefficient in ax^2 + bx + c = 0\n * @param {!number} b Coefficient in ax^2 + bx + c = 0\n * @param {!number} c Coefficient in ax^2 + bx + c = 0\n * @return {Array<number>} Array of 2 solutions, with the larger solution first\n */\nconst solveQuadratic_ = function (a, b, c) {\n    const soln1 = (-b + Math.sqrt((b * b) - (4 * a * c))) / 2 / a;\n    const soln2 = (-b - Math.sqrt((b * b) - (4 * a * c))) / 2 / a;\n    return soln1 > soln2 ? [soln1, soln2] : [soln2, soln1];\n};\n\n/**\n * @param {!object} options drawing options\n * @param {!number} options.centerX center of ellipse, x\n * @param {!number} options.centerY center of ellipse, y\n * @param {!number} options.radiusX major radius of ellipse\n * @param {!number} options.radiusY minor radius of ellipse\n * @param {!number} options.shearSlope slope of the sheared x axis\n * @param {?boolean} options.isFilled true if isFilled\n * @param {?function} options.drawFn The function called on each point in the outline, used only\n *     if isFilled is false.\n * @param {!CanvasRenderingContext2D} context for drawing\n * @return {boolean} true if anything was drawn, false if not\n */\nconst drawShearedEllipse_ = function (options, context) {\n    const centerX = ~~options.centerX;\n    const centerY = ~~options.centerY;\n    const radiusX = ~~Math.abs(options.radiusX) - .5;\n    const radiusY = ~~Math.abs(options.radiusY) - .5;\n    const shearSlope = options.shearSlope;\n    const isFilled = options.isFilled;\n    const drawFn = options.drawFn;\n    if (shearSlope === Infinity || radiusX < 1 || radiusY < 1) {\n        return false;\n    }\n    // A, B, and C represent Ax^2 + Bxy + Cy^2 = 1 coefficients in a skewed ellipse formula\n    const A = (1 / radiusX / radiusX) + (shearSlope * shearSlope / radiusY / radiusY);\n    const B = -2 * shearSlope / radiusY / radiusY;\n    const C = 1 / radiusY / radiusY;\n    // Line with slope1 intersects the ellipse where its derivative is 1\n    const slope1 = ((-2 * A) - B) / ((2 * C) + B);\n    // Line with slope2 intersects the ellipse where its derivative is -1\n    const slope2 = (-(2 * A) + B) / (-(2 * C) + B);\n    const verticalStepsFirst = slope1 > slope2;\n\n    /**\n     * Vertical stepping portion of ellipse drawing algorithm\n     * @param {!number} startY y to start drawing from\n     * @param {!function} conditionFn function which should become true when we should stop stepping\n     * @return {object} last point drawn to the canvas, or null if no points drawn\n     */\n    const drawEllipseStepVertical_ = function (startY, conditionFn) {\n        // Points on the ellipse\n        let y = startY;\n        let x = solveQuadratic_(A, B * y, (C * y * y) - 1);\n        // last pixel position at which a draw was performed\n        let pY;\n        let pX1;\n        let pX2;\n        while (conditionFn(x[0], y)) {\n            pY = Math.floor(y);\n            pX1 = Math.floor(x[0]);\n            pX2 = Math.floor(x[1]);\n            if (isFilled) {\n                context.fillRect(centerX - pX1 - 1, centerY + pY, pX1 - pX2 + 1, 1);\n                context.fillRect(centerX + pX2, centerY - pY - 1, pX1 - pX2 + 1, 1);\n            } else {\n                drawFn(centerX - pX1 - 1, centerY + pY);\n                drawFn(centerX + pX1, centerY - pY - 1);\n            }\n            y--;\n            x = solveQuadratic_(A, B * y, (C * y * y) - 1);\n        }\n        return pX1 || pY ? {x: pX1, y: pY} : null;\n    };\n\n    /**\n     * Horizontal stepping portion of ellipse drawing algorithm\n     * @param {!number} startX x to start drawing from\n     * @param {!function} conditionFn function which should become false when we should stop stepping\n     * @return {object} last point drawn to the canvas, or null if no points drawn\n     */\n    const drawEllipseStepHorizontal_ = function (startX, conditionFn) {\n        // Points on the ellipse\n        let x = startX;\n        let y = solveQuadratic_(C, B * x, (A * x * x) - 1);\n        // last pixel position at which a draw was performed\n        let pX;\n        let pY1;\n        let pY2;\n        while (conditionFn(x, y[0])) {\n            pX = Math.floor(x);\n            pY1 = Math.floor(y[0]);\n            pY2 = Math.floor(y[1]);\n            if (isFilled) {\n                context.fillRect(centerX - pX - 1, centerY + pY2, 1, pY1 - pY2 + 1);\n                context.fillRect(centerX + pX, centerY - pY1 - 1, 1, pY1 - pY2 + 1);\n            } else {\n                drawFn(centerX - pX - 1, centerY + pY1);\n                drawFn(centerX + pX, centerY - pY1 - 1);\n            }\n            x++;\n            y = solveQuadratic_(C, B * x, (A * x * x) - 1);\n        }\n        return pX || pY1 ? {x: pX, y: pY1} : null;\n    };\n\n    // Last point drawn\n    let lastPoint;\n    if (verticalStepsFirst) {\n        let forwardLeaning = false;\n        if (slope1 > 0) forwardLeaning = true;\n\n        // step vertically\n        lastPoint = drawEllipseStepVertical_(\n            forwardLeaning ? -radiusY : radiusY,\n            (x, y) => {\n                if (x === 0 && y > 0) return true;\n                if (x === 0 && y < 0) return false;\n                return y / x > slope1;\n            }\n        );\n        // step horizontally while slope is flat\n        lastPoint = drawEllipseStepHorizontal_(\n            lastPoint ? -lastPoint.x + .5 : .5,\n            (x, y) => y / x > slope2\n        ) || {x: -lastPoint.x - .5, y: -lastPoint.y - .5};\n        // step vertically until back to start\n        drawEllipseStepVertical_(\n            lastPoint.y - .5,\n            (x, y) => {\n                if (forwardLeaning) return y > -radiusY;\n                return y > radiusY;\n            }\n        );\n    } else {\n        // step horizontally forward\n        lastPoint = drawEllipseStepHorizontal_(\n            .5,\n            (x, y) => y / x > slope2\n        );\n        // step vertically while slope is steep\n        lastPoint = drawEllipseStepVertical_(\n            lastPoint ? lastPoint.y - .5 : radiusY,\n            (x, y) => {\n                if (x === 0 && y > 0) return true;\n                if (x === 0 && y < 0) return false;\n                return y / x > slope1;\n            }\n        ) || lastPoint;\n        // step horizontally until back to start\n        drawEllipseStepHorizontal_(\n            -lastPoint.x + .5,\n            x => x < 0\n        );\n    }\n    return true;\n};\n\n/**\n * @param {!number} size The diameter of the brush\n * @param {!string} color The css color of the brush\n * @param {?boolean} isEraser True if we want the brush mark for the eraser\n * @return {HTMLCanvasElement} a canvas with the brush mark printed on it\n */\nconst getBrushMark = function (size, color, isEraser) {\n    size = ~~size;\n    const canvas = document.createElement('canvas');\n    const roundedUpRadius = Math.ceil(size / 2);\n    canvas.width = roundedUpRadius * 2;\n    canvas.height = roundedUpRadius * 2;\n    const context = canvas.getContext('2d');\n    context.imageSmoothingEnabled = false;\n    context.fillStyle = isEraser ? 'white' : color;\n    // Small squares for pixel artists\n    if (size <= 5) {\n        let offset = 0;\n        if (size % 2) offset = 1;\n        if (isEraser) {\n            context.fillStyle = getGuideColor();\n            context.fillRect(offset, offset, size, size);\n            context.fillStyle = 'white';\n            context.fillRect(offset + 1, offset + 1, size - 2, size - 2);\n        } else {\n            context.fillRect(offset, offset, size, size);\n        }\n    } else {\n        drawShearedEllipse_({\n            centerX: size / 2,\n            centerY: size / 2,\n            radiusX: size / 2,\n            radiusY: size / 2,\n            shearSlope: 0,\n            isFilled: true\n        }, context);\n        if (isEraser) {\n            // Add outline\n            context.fillStyle = getGuideColor();\n            drawShearedEllipse_({\n                centerX: size / 2,\n                centerY: size / 2,\n                radiusX: size / 2,\n                radiusY: size / 2,\n                shearSlope: 0,\n                isFilled: false,\n                drawFn: (x, y) => context.fillRect(x, y, 1, 1)\n            }, context);\n        }\n    }\n    return canvas;\n};\n\n/**\n * Draw an ellipse, given the original axis-aligned radii and\n * an affine transformation. Returns false if the ellipse could\n * not be drawn; for instance, the matrix is non-invertible.\n *\n * @param {!options} options Parameters for the ellipse\n * @param {!paper.Point} options.position Center of ellipse\n * @param {!number} options.radiusX x-aligned radius of ellipse\n * @param {!number} options.radiusY y-aligned radius of ellipse\n * @param {!paper.Matrix} options.matrix affine transformation matrix\n * @param {?boolean} options.isFilled true if isFilled\n * @param {?number} options.thickness Thickness of outline, used only if isFilled is false.\n * @param {!CanvasRenderingContext2D} context for drawing\n * @return {boolean} true if anything was drawn, false if not\n */\nconst drawEllipse = function (options, context) {\n    const positionX = options.position.x;\n    const positionY = options.position.y;\n    const radiusX = options.radiusX;\n    const radiusY = options.radiusY;\n    const matrix = options.matrix;\n    const isFilled = options.isFilled;\n    const thickness = options.thickness;\n    let drawFn = null;\n\n    if (!matrix.isInvertible()) return false;\n    const inverse = matrix.clone().invert();\n\n    const isGradient = context.fillStyle instanceof CanvasGradient;\n\n    // If drawing a gradient, we need to draw the shape onto a temporary canvas, then draw the gradient atop that canvas\n    // only where the shape appears. drawShearedEllipse draws some pixels twice, which would be a problem if the\n    // gradient fades to transparent as those pixels would end up looking more opaque. Instead, mask in the gradient.\n    // https://github.com/LLK/scratch-paint/issues/1152\n    // Outlines are drawn as a series of brush mark images and as such can't be drawn as gradients in the first place.\n    let origContext;\n    let tmpCanvas;\n    const {width: canvasWidth, height: canvasHeight} = context.canvas;\n    if (isGradient) {\n        tmpCanvas = createCanvas(canvasWidth, canvasHeight);\n        origContext = context;\n        context = tmpCanvas.getContext('2d');\n    }\n\n    if (!isFilled) {\n        const brushMark = getBrushMark(thickness, isGradient ? 'black' : context.fillStyle);\n        const roundedUpRadius = Math.ceil(thickness / 2);\n        drawFn = (x, y) => {\n            context.drawImage(brushMark, ~~x - roundedUpRadius, ~~y - roundedUpRadius);\n        };\n    }\n\n    // Calculate the ellipse formula\n    // A, B, and C represent Ax^2 + Bxy + Cy^2 = 1 coefficients in a transformed ellipse formula\n    const A = (inverse.a * inverse.a / radiusX / radiusX) + (inverse.b * inverse.b / radiusY / radiusY);\n    const B = (2 * inverse.a * inverse.c / radiusX / radiusX) + (2 * inverse.b * inverse.d / radiusY / radiusY);\n    const C = (inverse.c * inverse.c / radiusX / radiusX) + (inverse.d * inverse.d / radiusY / radiusY);\n\n    // Convert to a sheared ellipse formula. All ellipses are equivalent to some sheared axis-aligned ellipse.\n    // radiusA, radiusB, and slope are parameters of a skewed ellipse with the above formula\n    const radiusB = 1 / Math.sqrt(C);\n    const radiusA = Math.sqrt(-4 * C / ((B * B) - (4 * A * C)));\n    const slope = B / 2 / C;\n\n    const wasDrawn = drawShearedEllipse_({\n        centerX: positionX,\n        centerY: positionY,\n        radiusX: radiusA,\n        radiusY: radiusB,\n        shearSlope: slope,\n        isFilled: isFilled,\n        drawFn: drawFn\n    }, context);\n\n    // Mask in the gradient only where the shape was drawn, and draw it. Then draw the gradientified shape onto the\n    // original canvas normally.\n    if (isGradient && wasDrawn) {\n        context.globalCompositeOperation = 'source-in';\n        context.fillStyle = origContext.fillStyle;\n        context.fillRect(0, 0, canvasWidth, canvasHeight);\n        origContext.drawImage(tmpCanvas, 0, 0);\n    }\n\n    return wasDrawn;\n};\n\nconst rowBlank_ = function (imageData, width, y) {\n    for (let x = 0; x < width; ++x) {\n        if (imageData.data[(y * width << 2) + (x << 2) + 3] !== 0) return false;\n    }\n    return true;\n};\n\nconst columnBlank_ = function (imageData, width, x, top, bottom) {\n    for (let y = top; y < bottom; ++y) {\n        if (imageData.data[(y * width << 2) + (x << 2) + 3] !== 0) return false;\n    }\n    return true;\n};\n\n/**\n * Get bounds around the contents of a raster, trimming transparent pixels from edges.\n * Adapted from Tim Down's https://gist.github.com/timdown/021d9c8f2aabc7092df564996f5afbbf\n * @param {paper.Raster} raster The raster to get the bounds around\n * @param {paper.Rectangle} [rect] Optionally, an alternative bounding rectangle to limit the check to.\n * @returns {paper.Rectangle} The bounds around the opaque area of the passed raster\n * (or opaque within the passed rectangle)\n */\nconst getHitBounds = function (raster, rect) {\n    const bounds = rect || raster.bounds;\n    const width = bounds.width;\n    const imageData = raster.getImageData(bounds);\n    let top = 0;\n    let bottom = imageData.height;\n    let left = 0;\n    let right = imageData.width;\n\n    while (top < bottom && rowBlank_(imageData, width, top)) ++top;\n    while (bottom - 1 > top && rowBlank_(imageData, width, bottom - 1)) --bottom;\n    while (left < right && columnBlank_(imageData, width, left, top, bottom)) ++left;\n    while (right - 1 > left && columnBlank_(imageData, width, right - 1, top, bottom)) --right;\n\n    // Center an empty bitmap\n    if (top === bottom) {\n        top = bottom = imageData.height / 2;\n    }\n    if (left === right) {\n        left = right = imageData.width / 2;\n    }\n\n    return new paper.Rectangle(left + bounds.left, top + bounds.top, right - left, bottom - top);\n};\n\nconst trim_ = function (raster) {\n    const hitBounds = getHitBounds(raster);\n    if (hitBounds.width && hitBounds.height) {\n        return raster.getSubRaster(getHitBounds(raster));\n    }\n    return null;\n};\n\n/**\n * @param {boolean} shouldInsert True if the trimmed raster should be added to the active layer.\n * @returns {paper.Raster} raster layer with whitespace trimmed from ends, or null if there is\n * nothing on the raster layer.\n */\nconst getTrimmedRaster = function (shouldInsert) {\n    const trimmedRaster = trim_(getRaster());\n    if (!trimmedRaster) return null;\n    if (shouldInsert) {\n        paper.project.activeLayer.addChild(trimmedRaster);\n    } else {\n        trimmedRaster.remove();\n    }\n    return trimmedRaster;\n};\n\nconst convertToBitmap = function (clearSelectedItems, onUpdateImage, optFontInlineFn) {\n    // @todo if the active layer contains only rasters, drawing them directly to the raster layer\n    // would be more efficient.\n\n    clearSelection(clearSelectedItems);\n\n    // Export svg\n    const guideLayers = hideGuideLayers(true /* includeRaster */);\n    const bounds = paper.project.activeLayer.drawnBounds;\n    const svg = paper.project.exportSVG({\n        bounds: 'content',\n        matrix: new paper.Matrix().translate(-bounds.x, -bounds.y)\n    });\n    showGuideLayers(guideLayers);\n\n    // Get rid of anti-aliasing\n    // @todo get crisp text https://github.com/LLK/scratch-paint/issues/508\n    svg.setAttribute('shape-rendering', 'crispEdges');\n\n    let svgString = (new XMLSerializer()).serializeToString(svg);\n    if (optFontInlineFn) {\n        svgString = optFontInlineFn(svgString);\n    } else {\n        log.error('Fonts may be converted to bitmap incorrectly if fontInlineFn prop is not set on PaintEditor.');\n    }\n\n    // Put anti-aliased SVG into image, and dump image back into canvas\n    const img = new Image();\n    img.onload = () => {\n        if (img.width && img.height) {\n            getRaster().drawImage(\n                img,\n                new paper.Point(Math.floor(bounds.topLeft.x), Math.floor(bounds.topLeft.y)));\n        }\n        for (let i = paper.project.activeLayer.children.length - 1; i >= 0; i--) {\n            const item = paper.project.activeLayer.children[i];\n            if (item.clipMask === false) {\n                item.remove();\n            } else {\n                // Resize mask for bitmap bounds\n                item.size.height = ART_BOARD_HEIGHT;\n                item.size.width = ART_BOARD_WIDTH;\n                item.setPosition(CENTER);\n            }\n        }\n        onUpdateImage(false /* skipSnapshot */, Formats.BITMAP /* formatOverride */);\n    };\n    img.onerror = () => {\n        // Fallback if browser does not support SVG data URIs in images.\n        // The problem with rasterize is that it will anti-alias.\n        const raster = paper.project.activeLayer.rasterize(72, false /* insert */);\n        raster.onLoad = () => {\n            if (raster.canvas.width && raster.canvas.height) {\n                getRaster().drawImage(raster.canvas, raster.bounds.topLeft);\n            }\n            paper.project.activeLayer.removeChildren();\n            onUpdateImage(false /* skipSnapshot */, Formats.BITMAP /* formatOverride */);\n        };\n    };\n    // Hash tags will break image loading without being encoded first\n    img.src = `data:image/svg+xml;utf8,${encodeURIComponent(svgString)}`;\n};\n\nconst convertToVector = function (clearSelectedItems, onUpdateImage) {\n    clearSelection(clearSelectedItems);\n    for (const item of paper.project.activeLayer.children) {\n        if (item.clipMask === true) {\n            // Resize mask for vector bounds\n            item.size.height = MAX_WORKSPACE_BOUNDS.height;\n            item.size.width = MAX_WORKSPACE_BOUNDS.width;\n            item.setPosition(CENTER);\n        }\n    }\n    getTrimmedRaster(true /* shouldInsert */);\n\n    clearRaster();\n    onUpdateImage(false /* skipSnapshot */, Formats.VECTOR /* formatOverride */);\n};\n\nconst getColor_ = function (x, y, context) {\n    return context.getImageData(x, y, 1, 1).data;\n};\n\nconst matchesColor_ = function (x, y, imageData, oldColor) {\n    const index = ((y * imageData.width) + x) * 4;\n    return (\n        imageData.data[index + 0] === oldColor[0] &&\n        imageData.data[index + 1] === oldColor[1] &&\n        imageData.data[index + 2] === oldColor[2] &&\n        imageData.data[index + 3 ] === oldColor[3]\n    );\n};\n\nconst colorPixel_ = function (x, y, imageData, newColor) {\n    const index = ((y * imageData.width) + x) * 4;\n    imageData.data[index + 0] = newColor[0];\n    imageData.data[index + 1] = newColor[1];\n    imageData.data[index + 2] = newColor[2];\n    imageData.data[index + 3] = newColor[3];\n};\n\n/**\n * Flood fill beginning at the given point.\n * Based on http://www.williammalone.com/articles/html5-canvas-javascript-paint-bucket-tool/\n *\n * @param {!int} x The x coordinate on the context at which to begin\n * @param {!int} y The y coordinate on the context at which to begin\n * @param {!ImageData} sourceImageData The image data to sample from. This is edited by the function.\n * @param {!ImageData} destImageData The image data to edit. May match sourceImageData. Should match\n *     size of sourceImageData.\n * @param {!Array<number>} newColor The color to replace with. A length 4 array [r, g, b, a].\n * @param {!Array<number>} oldColor The color to replace. A length 4 array [r, g, b, a].\n *     This must be different from newColor.\n * @param {!Array<Array<int>>} stack The stack of pixels we need to look at\n */\nconst floodFillInternal_ = function (x, y, sourceImageData, destImageData, newColor, oldColor, stack) {\n    while (y > 0 && matchesColor_(x, y - 1, sourceImageData, oldColor)) {\n        y--;\n    }\n    let lastLeftMatchedColor = false;\n    let lastRightMatchedColor = false;\n    for (; y < sourceImageData.height; y++) {\n        if (!matchesColor_(x, y, sourceImageData, oldColor)) break;\n        colorPixel_(x, y, sourceImageData, newColor);\n        colorPixel_(x, y, destImageData, newColor);\n        if (x > 0) {\n            if (matchesColor_(x - 1, y, sourceImageData, oldColor)) {\n                if (!lastLeftMatchedColor) {\n                    stack.push([x - 1, y]);\n                    lastLeftMatchedColor = true;\n                }\n            } else {\n                lastLeftMatchedColor = false;\n            }\n        }\n        if (x < sourceImageData.width - 1) {\n            if (matchesColor_(x + 1, y, sourceImageData, oldColor)) {\n                if (!lastRightMatchedColor) {\n                    stack.push([x + 1, y]);\n                    lastRightMatchedColor = true;\n                }\n            } else {\n                lastRightMatchedColor = false;\n            }\n        }\n    }\n};\n\n/**\n * Given a fill style string, get the color\n * @param {string} fillStyleString the fill style\n * @return {Array<int>} Color, a length 4 array\n */\nconst fillStyleToColor_ = function (fillStyleString) {\n    const tmpCanvas = document.createElement('canvas');\n    tmpCanvas.width = 1;\n    tmpCanvas.height = 1;\n    const context = tmpCanvas.getContext('2d');\n    context.fillStyle = fillStyleString;\n    context.fillRect(0, 0, 1, 1);\n    return context.getImageData(0, 0, 1, 1).data;\n};\n\n/**\n * Flood fill beginning at the given point\n * @param {!number} x The x coordinate on the context at which to begin\n * @param {!number} y The y coordinate on the context at which to begin\n * @param {!string} color A color string, which would go into context.fillStyle\n * @param {!HTMLCanvas2DContext} sourceContext The context from which to sample to determine where to flood fill\n * @param {!HTMLCanvas2DContext} destContext The context to which to draw. May match sourceContext. Should match\n *     the size of sourceContext.\n * @return {boolean} True if image changed, false otherwise\n */\nconst floodFill = function (x, y, color, sourceContext, destContext) {\n    x = ~~x;\n    y = ~~y;\n    const newColor = fillStyleToColor_(color);\n    const oldColor = getColor_(x, y, sourceContext);\n    const sourceImageData = sourceContext.getImageData(0, 0, sourceContext.canvas.width, sourceContext.canvas.height);\n    let destImageData = sourceImageData;\n    if (destContext !== sourceContext) {\n        destImageData = new ImageData(sourceContext.canvas.width, sourceContext.canvas.height);\n    }\n    if (oldColor[0] === newColor[0] &&\n            oldColor[1] === newColor[1] &&\n            oldColor[2] === newColor[2] &&\n            oldColor[3] === newColor[3]) { // no-op\n        return false;\n    }\n    const stack = [[x, y]];\n    while (stack.length) {\n        const pop = stack.pop();\n        floodFillInternal_(pop[0], pop[1], sourceImageData, destImageData, newColor, oldColor, stack);\n    }\n    destContext.putImageData(destImageData, 0, 0);\n    return true;\n};\n\n/**\n * Replace all instances of the color at the given point\n * @param {!number} x The x coordinate on the context of the start color\n * @param {!number} y The y coordinate on the context of the start color\n * @param {!string} color A color string, which would go into context.fillStyle\n * @param {!HTMLCanvas2DContext} sourceContext The context from which to sample to determine where to flood fill\n * @param {!HTMLCanvas2DContext} destContext The context to which to draw. May match sourceContext. Should match\n * @return {boolean} True if image changed, false otherwise\n */\nconst floodFillAll = function (x, y, color, sourceContext, destContext) {\n    x = ~~x;\n    y = ~~y;\n    const newColor = fillStyleToColor_(color);\n    const oldColor = getColor_(x, y, sourceContext);\n    const sourceImageData = sourceContext.getImageData(0, 0, sourceContext.canvas.width, sourceContext.canvas.height);\n    let destImageData = sourceImageData;\n    if (destContext !== sourceContext) {\n        destImageData = new ImageData(sourceContext.canvas.width, sourceContext.canvas.height);\n    }\n    if (oldColor[0] === newColor[0] &&\n            oldColor[1] === newColor[1] &&\n            oldColor[2] === newColor[2] &&\n            oldColor[3] === newColor[3]) { // no-op\n        return false;\n    }\n    for (let i = 0; i < sourceImageData.width; i++) {\n        for (let j = 0; j < sourceImageData.height; j++) {\n            if (matchesColor_(i, j, sourceImageData, oldColor)) {\n                colorPixel_(i, j, destImageData, newColor);\n            }\n        }\n    }\n    destContext.putImageData(destImageData, 0, 0);\n    return true;\n};\n\n/**\n * @param {!paper.Shape.Rectangle} rect The rectangle to draw to the canvas\n * @param {!HTMLCanvas2DContext} context The context in which to draw\n */\nconst fillRect = function (rect, context) {\n    // No rotation component to matrix\n    if (rect.matrix.b === 0 && rect.matrix.c === 0) {\n        const width = rect.size.width * rect.matrix.a;\n        const height = rect.size.height * rect.matrix.d;\n        context.fillRect(\n            Math.round(rect.matrix.tx - (width / 2)),\n            Math.round(rect.matrix.ty - (height / 2)),\n            Math.round(width),\n            Math.round(height)\n        );\n        return;\n    }\n    const startPoint = rect.matrix.transform(new paper.Point(-rect.size.width / 2, -rect.size.height / 2));\n    const widthPoint = rect.matrix.transform(new paper.Point(rect.size.width / 2, -rect.size.height / 2));\n    const heightPoint = rect.matrix.transform(new paper.Point(-rect.size.width / 2, rect.size.height / 2));\n    const endPoint = rect.matrix.transform(new paper.Point(rect.size.width / 2, rect.size.height / 2));\n    const center = rect.matrix.transform(new paper.Point());\n    const points = [startPoint, widthPoint, heightPoint, endPoint].sort((a, b) => a.x - b.x);\n\n    const solveY = (point1, point2, x) => {\n        if (point2.x === point1.x) return center.x > point1.x ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY;\n        return ((point2.y - point1.y) / (point2.x - point1.x) * (x - point1.x)) + point1.y;\n    };\n    for (let x = Math.round(points[0].x); x < Math.round(points[3].x); x++) {\n        const ys = [\n            solveY(startPoint, widthPoint, x + .5),\n            solveY(startPoint, heightPoint, x + .5),\n            solveY(endPoint, widthPoint, x + .5),\n            solveY(endPoint, heightPoint, x + .5)\n        ].sort((a, b) => a - b);\n        context.fillRect(x, Math.round(ys[1]), 1, Math.max(1, Math.round(ys[2]) - Math.round(ys[1])));\n    }\n};\n\n/**\n * @param {!paper.Shape.Rectangle} rect The rectangle to draw to the canvas\n * @param {!number} thickness The thickness of the outline\n * @param {!HTMLCanvas2DContext} context The context in which to draw\n */\nconst outlineRect = function (rect, thickness, context) {\n    const brushMark = getBrushMark(thickness, context.fillStyle);\n    const roundedUpRadius = Math.ceil(thickness / 2);\n    const drawFn = (x, y) => {\n        context.drawImage(brushMark, ~~x - roundedUpRadius, ~~y - roundedUpRadius);\n    };\n\n    const isGradient = context.fillStyle instanceof CanvasGradient;\n\n    // If drawing a gradient, we need to draw the shape onto a temporary canvas, then draw the gradient atop that canvas\n    // only where the shape appears. Outlines are drawn as a series of brush mark images and as such can't be drawn as\n    // gradients.\n    let origContext;\n    let tmpCanvas;\n    const {width: canvasWidth, height: canvasHeight} = context.canvas;\n    if (isGradient) {\n        tmpCanvas = createCanvas(canvasWidth, canvasHeight);\n        origContext = context;\n        context = tmpCanvas.getContext('2d');\n    }\n\n    const startPoint = rect.matrix.transform(new paper.Point(-rect.size.width / 2, -rect.size.height / 2));\n    const widthPoint = rect.matrix.transform(new paper.Point(rect.size.width / 2, -rect.size.height / 2));\n    const heightPoint = rect.matrix.transform(new paper.Point(-rect.size.width / 2, rect.size.height / 2));\n    const endPoint = rect.matrix.transform(new paper.Point(rect.size.width / 2, rect.size.height / 2));\n\n    forEachLinePoint(startPoint, widthPoint, drawFn);\n    forEachLinePoint(startPoint, heightPoint, drawFn);\n    forEachLinePoint(endPoint, widthPoint, drawFn);\n    forEachLinePoint(endPoint, heightPoint, drawFn);\n\n    // Mask in the gradient only where the shape was drawn, and draw it. Then draw the gradientified shape onto the\n    // original canvas normally.\n    if (isGradient) {\n        context.globalCompositeOperation = 'source-in';\n        context.fillStyle = origContext.fillStyle;\n        context.fillRect(0, 0, canvasWidth, canvasHeight);\n        origContext.drawImage(tmpCanvas, 0, 0);\n    }\n\n};\n\nconst flipBitmapHorizontal = function (canvas) {\n    const tmpCanvas = createCanvas(canvas.width, canvas.height);\n    const context = tmpCanvas.getContext('2d');\n    context.save();\n    context.scale(-1, 1);\n    context.drawImage(canvas, 0, 0, -tmpCanvas.width, tmpCanvas.height);\n    context.restore();\n    return tmpCanvas;\n};\n\nconst flipBitmapVertical = function (canvas) {\n    const tmpCanvas = createCanvas(canvas.width, canvas.height);\n    const context = tmpCanvas.getContext('2d');\n    context.save();\n    context.scale(1, -1);\n    context.drawImage(canvas, 0, 0, tmpCanvas.width, -tmpCanvas.height);\n    context.restore();\n    return tmpCanvas;\n};\n\nconst scaleBitmap = function (canvas, scale) {\n    let tmpCanvas = createCanvas(Math.round(canvas.width * Math.abs(scale.x)), canvas.height);\n    if (scale.x < 0) {\n        canvas = flipBitmapHorizontal(canvas);\n    }\n    tmpCanvas.getContext('2d').drawImage(canvas, 0, 0, tmpCanvas.width, tmpCanvas.height);\n    canvas = tmpCanvas;\n    tmpCanvas = createCanvas(canvas.width, Math.round(canvas.height * Math.abs(scale.y)));\n    if (scale.y < 0) {\n        canvas = flipBitmapVertical(canvas);\n    }\n    tmpCanvas.getContext('2d').drawImage(canvas, 0, 0, tmpCanvas.width, tmpCanvas.height);\n    return tmpCanvas;\n};\n\n/**\n * Given a raster, take the scale on the transform and apply it to the raster's canvas, then remove\n * the scale from the item's transform matrix. Do this only if scale.x or scale.y is less than 1.\n * @param {paper.Raster} item raster to change\n */\nconst maybeApplyScaleToCanvas_ = function (item) {\n    // context.drawImage will anti-alias the image if both width and height are reduced.\n    // However, it will preserve pixel colors if only one or the other is reduced, and\n    // imageSmoothingEnabled is set to false. Therefore, we can avoid aliasing by scaling\n    // down images in a 2 step process.\n    const decomposed = item.matrix.decompose(); // Decomposition order: translate, rotate, scale, skew\n    if (Math.abs(decomposed.scaling.x) < 1 && Math.abs(decomposed.scaling.y) < 1 &&\n            decomposed.scaling.x !== 0 && decomposed.scaling.y !== 0) {\n        item.canvas = scaleBitmap(item.canvas, decomposed.scaling);\n        if (item.data && item.data.expanded) {\n            item.data.expanded.canvas = scaleBitmap(item.data.expanded.canvas, decomposed.scaling);\n        }\n        // Remove the scale from the item's matrix\n        item.matrix.append(\n            new paper.Matrix().scale(new paper.Point(1 / decomposed.scaling.x, 1 / decomposed.scaling.y)));\n    }\n};\n\n/**\n * Given a raster, apply its transformation matrix to its canvas. Call maybeApplyScaleToCanvas_ first\n * to avoid introducing anti-aliasing to scaled-down rasters.\n * @param {paper.Raster} item raster to resolve transform of\n * @param {paper.Raster} destination raster to draw selection to\n */\nconst commitArbitraryTransformation_ = function (item, destination) {\n    // Create a canvas to perform masking\n    const tmpCanvas = createCanvas();\n    const context = tmpCanvas.getContext('2d');\n    // Draw mask\n    const rect = new paper.Shape.Rectangle(new paper.Point(), item.size);\n    rect.matrix = item.matrix;\n    fillRect(rect, context);\n    rect.remove();\n    context.globalCompositeOperation = 'source-in';\n\n    // Draw image onto mask\n    const m = item.matrix;\n    context.transform(m.a, m.b, m.c, m.d, m.tx, m.ty);\n    let canvas = item.canvas;\n    if (item.data && item.data.expanded) {\n        canvas = item.data.expanded.canvas;\n    }\n    context.transform(1, 0, 0, 1, -canvas.width / 2, -canvas.height / 2);\n    context.drawImage(canvas, 0, 0);\n\n    // Draw temp canvas onto raster layer\n    destination.drawImage(tmpCanvas, new paper.Point());\n};\n\n/**\n * Given a raster item, take its transform matrix and apply it to its canvas. Try to avoid\n * introducing anti-aliasing.\n * @param {paper.Raster} selection raster to resolve transform of\n * @param {paper.Raster} bitmap raster to draw selection to\n */\nconst commitSelectionToBitmap = function (selection, bitmap) {\n    if (!selection.matrix.isInvertible()) {\n        return;\n    }\n\n    maybeApplyScaleToCanvas_(selection);\n    commitArbitraryTransformation_(selection, bitmap);\n};\n\n/**\n * Converts a Paper.js color style (an item's fillColor or strokeColor) into a canvas-applicable color style.\n * Note that a \"color style\" as applied to an item is different from a plain paper.Color or paper.Gradient.\n * For instance, a gradient \"color style\" has origin and destination points whereas an unattached paper.Gradient\n * does not.\n * @param {paper.Color} color The color to convert to a canvas color/gradient\n * @param {CanvasRenderingContext2D} context The rendering context on which the style will be used\n * @returns {string|CanvasGradient} The canvas fill/stroke style.\n */\nconst _paperColorToCanvasStyle = function (color, context) {\n    if (!color) return null;\n    if (color.type === 'gradient') {\n        let canvasGradient;\n        const {origin, destination} = color;\n        if (color.gradient.radial) {\n            // Adapted from:\n            // https://github.com/paperjs/paper.js/blob/b081fd72c72cd61331313c3961edb48f3dfaffbd/src/style/Color.js#L926-L935\n            let {highlight} = color;\n            const start = highlight || origin;\n            const radius = destination.getDistance(origin);\n            if (highlight) {\n                const vector = highlight.subtract(origin);\n                if (vector.getLength() > radius) {\n                    // Paper ¯\\_(ツ)_/¯\n                    highlight = origin.add(vector.normalize(radius - 0.1));\n                }\n            }\n            canvasGradient = context.createRadialGradient(\n                start.x, start.y,\n                0,\n                origin.x, origin.y,\n                radius\n            );\n        } else {\n            canvasGradient = context.createLinearGradient(\n                origin.x, origin.y,\n                destination.x, destination.y\n            );\n        }\n\n        const {stops} = color.gradient;\n        // Adapted from:\n        // https://github.com/paperjs/paper.js/blob/b081fd72c72cd61331313c3961edb48f3dfaffbd/src/style/Color.js#L940-L950\n        for (let i = 0, len = stops.length; i < len; i++) {\n            const stop = stops[i];\n            const offset = stop.offset;\n            canvasGradient.addColorStop(\n                offset || i / (len - 1),\n                stop.color.toCSS()\n            );\n        }\n        return canvasGradient;\n    }\n    return color.toCSS();\n};\n\n/**\n * @param {paper.Shape.Ellipse} oval Vector oval to convert\n * @param {paper.Raster} bitmap raster to draw selection\n * @return {bool} true if the oval was drawn\n */\nconst commitOvalToBitmap = function (oval, bitmap) {\n    const radiusX = Math.abs(oval.size.width / 2);\n    const radiusY = Math.abs(oval.size.height / 2);\n    const context = bitmap.getContext('2d');\n    const filled = oval.strokeWidth === 0;\n\n    const canvasColor = _paperColorToCanvasStyle(filled ? oval.fillColor : oval.strokeColor, context);\n    // If the color is null (e.g. fully transparent/\"no fill\"), don't bother drawing anything\n    if (!canvasColor) return;\n\n    context.fillStyle = canvasColor;\n\n    const drew = drawEllipse({\n        position: oval.position,\n        radiusX,\n        radiusY,\n        matrix: oval.matrix,\n        isFilled: filled,\n        thickness: oval.strokeWidth / paper.view.zoom\n    }, context);\n\n    return drew;\n};\n\n/**\n * @param {paper.Rectangle} rect Vector rectangle to convert\n * @param {paper.Raster} bitmap raster to draw selection to\n */\nconst commitRectToBitmap = function (rect, bitmap) {\n    const tmpCanvas = createCanvas();\n    const context = tmpCanvas.getContext('2d');\n    const filled = rect.strokeWidth === 0;\n\n    const canvasColor = _paperColorToCanvasStyle(filled ? rect.fillColor : rect.strokeColor, context);\n    // If the color is null (e.g. fully transparent/\"no fill\"), don't bother drawing anything\n    if (!canvasColor) return;\n\n    context.fillStyle = canvasColor;\n\n    if (filled) {\n        fillRect(rect, context);\n    } else {\n        outlineRect(rect, rect.strokeWidth / paper.view.zoom, context);\n    }\n    bitmap.drawImage(tmpCanvas, new paper.Point());\n};\n\nconst selectAllBitmap = function (clearSelectedItems) {\n    clearSelection(clearSelectedItems);\n\n    // Copy trimmed raster to active layer. If the raster layer was empty, nothing is selected.\n    const trimmedRaster = getTrimmedRaster(true /* shouldInsert */);\n    if (trimmedRaster) {\n        trimmedRaster.selected = true;\n    }\n\n    // Clear raster layer\n    clearRaster();\n};\n\nexport {\n    commitSelectionToBitmap,\n    commitOvalToBitmap,\n    commitRectToBitmap,\n    convertToBitmap,\n    convertToVector,\n    fillRect,\n    outlineRect,\n    floodFill,\n    floodFillAll,\n    getBrushMark,\n    getHitBounds,\n    getTrimmedRaster,\n    drawEllipse,\n    forEachLinePoint,\n    flipBitmapHorizontal,\n    flipBitmapVertical,\n    scaleBitmap,\n    selectAllBitmap\n};\n","import paper from '@scratch/paper';\nimport {CROSSHAIR_SIZE, getBackgroundGuideLayer, getDragCrosshairLayer, getRaster} from './layer';\nimport {getAllRootItems, getSelectedRootItems} from './selection';\nimport {getHitBounds} from './bitmap';\nimport log from '../log/log';\n\n// Vectors are imported and exported at SVG_ART_BOARD size.\n// Once they are imported however, both SVGs and bitmaps are on\n// canvases of ART_BOARD size.\n// (This is for backwards compatibility, to handle both assets\n// designed for 480 x 360, and bitmap resolution 2 bitmaps)\nconst SVG_ART_BOARD_WIDTH = 480;\nconst SVG_ART_BOARD_HEIGHT = 360;\nconst ART_BOARD_WIDTH = SVG_ART_BOARD_WIDTH * 2;\nconst ART_BOARD_HEIGHT = SVG_ART_BOARD_HEIGHT * 2;\nconst CENTER = new paper.Point(ART_BOARD_WIDTH / 2, ART_BOARD_HEIGHT / 2);\nconst PADDING_PERCENT = 25; // Padding as a percent of the max of width/height of the sprite\nconst BUFFER = 50; // Number of pixels of allowance around objects at the edges of the workspace\nconst MIN_RATIO = .125; // Zoom in to at least 1/8 of the screen. This way you don't end up incredibly\n//                         zoomed in for tiny costumes.\nconst OUTERMOST_ZOOM_LEVEL = 0.333;\nconst ART_BOARD_BOUNDS = new paper.Rectangle(0, 0, ART_BOARD_WIDTH, ART_BOARD_HEIGHT);\nconst MAX_WORKSPACE_BOUNDS = new paper.Rectangle(\n    -ART_BOARD_WIDTH / 4,\n    -ART_BOARD_HEIGHT / 4,\n    ART_BOARD_WIDTH * 1.5,\n    ART_BOARD_HEIGHT * 1.5);\n\nlet _workspaceBounds = ART_BOARD_BOUNDS;\n\nconst getWorkspaceBounds = () => _workspaceBounds;\n\n/**\n* The workspace bounds define the areas that the scroll bars can access.\n* They include at minimum the artboard, and extend to a bit beyond the\n* farthest item off tne edge in any given direction (so items can't be\n* \"lost\" off the edge)\n*\n* @param {boolean} clipEmpty Clip empty space from bounds, even if it\n* means discontinuously jumping the viewport. This should probably be\n* false unless the viewport is going to move discontinuously anyway\n* (such as in a zoom button click)\n*/\nconst setWorkspaceBounds = clipEmpty => {\n    const items = getAllRootItems();\n    // Include the artboard and what's visible in the viewport\n    let bounds = ART_BOARD_BOUNDS;\n    if (!clipEmpty) {\n        bounds = bounds.unite(paper.view.bounds);\n    }\n    // Include everything the user has drawn and a buffer around it\n    for (const item of items) {\n        bounds = bounds.unite(item.bounds.expand(BUFFER));\n    }\n    // Limit to max workspace bounds\n    bounds = bounds.intersect(MAX_WORKSPACE_BOUNDS.expand(BUFFER));\n    let top = bounds.top;\n    let left = bounds.left;\n    let bottom = bounds.bottom;\n    let right = bounds.right;\n\n    // Center in view if viewport is larger than workspace\n    let hDiff = 0;\n    let vDiff = 0;\n    if (bounds.width < paper.view.bounds.width) {\n        hDiff = (paper.view.bounds.width - bounds.width) / 2;\n        left -= hDiff;\n        right += hDiff;\n    }\n    if (bounds.height < paper.view.bounds.height) {\n        vDiff = (paper.view.bounds.height - bounds.height) / 2;\n        top -= vDiff;\n        bottom += vDiff;\n    }\n\n    _workspaceBounds = new paper.Rectangle(left, top, right - left, bottom - top);\n};\n\nconst clampViewBounds = () => {\n    const {left, right, top, bottom} = paper.project.view.bounds;\n    if (left < _workspaceBounds.left) {\n        paper.project.view.scrollBy(new paper.Point(_workspaceBounds.left - left, 0));\n    }\n    if (top < _workspaceBounds.top) {\n        paper.project.view.scrollBy(new paper.Point(0, _workspaceBounds.top - top));\n    }\n    if (bottom > _workspaceBounds.bottom) {\n        paper.project.view.scrollBy(new paper.Point(0, _workspaceBounds.bottom - bottom));\n    }\n    if (right > _workspaceBounds.right) {\n        paper.project.view.scrollBy(new paper.Point(_workspaceBounds.right - right, 0));\n    }\n    setWorkspaceBounds();\n};\n\nconst resizeCrosshair = () => {\n    if (getDragCrosshairLayer() && getDragCrosshairLayer().dragCrosshair) {\n        getDragCrosshairLayer().dragCrosshair.scale(\n            CROSSHAIR_SIZE / getDragCrosshairLayer().dragCrosshair.bounds.width / paper.view.zoom);\n    }\n    if (getBackgroundGuideLayer() && getBackgroundGuideLayer().dragCrosshair) {\n        getBackgroundGuideLayer().dragCrosshair.scale(\n            CROSSHAIR_SIZE / getBackgroundGuideLayer().dragCrosshair.bounds.width / paper.view.zoom);\n    }\n};\n\n// Zoom keeping a project-space point fixed.\n// This article was helpful http://matthiasberth.com/tech/stable-zoom-and-pan-in-paperjs\nconst zoomOnFixedPoint = (deltaZoom, fixedPoint) => {\n    const view = paper.view;\n    const preZoomCenter = view.center;\n    const newZoom = Math.max(OUTERMOST_ZOOM_LEVEL, view.zoom + deltaZoom);\n    const scaling = view.zoom / newZoom;\n    const preZoomOffset = fixedPoint.subtract(preZoomCenter);\n    const postZoomOffset = fixedPoint.subtract(preZoomOffset.multiply(scaling))\n        .subtract(preZoomCenter);\n    view.zoom = newZoom;\n    view.translate(postZoomOffset.multiply(-1));\n\n    setWorkspaceBounds(true /* clipEmpty */);\n    clampViewBounds();\n    resizeCrosshair();\n};\n\n// Zoom keeping the selection center (if any) fixed.\nconst zoomOnSelection = deltaZoom => {\n    let fixedPoint;\n    const items = getSelectedRootItems();\n    if (items.length > 0) {\n        let rect = null;\n        for (const item of items) {\n            if (rect) {\n                rect = rect.unite(item.bounds);\n            } else {\n                rect = item.bounds;\n            }\n        }\n        fixedPoint = rect.center;\n    } else {\n        fixedPoint = paper.project.view.center;\n    }\n    zoomOnFixedPoint(deltaZoom, fixedPoint);\n};\n\nconst resetZoom = () => {\n    paper.project.view.zoom = .5;\n    setWorkspaceBounds(true /* clipEmpty */);\n    resizeCrosshair();\n    clampViewBounds();\n};\n\nconst pan = (dx, dy) => {\n    paper.project.view.scrollBy(new paper.Point(dx, dy));\n    clampViewBounds();\n};\n\n/**\n * Mouse actions are clamped to action bounds\n * @param {boolean} isBitmap True if the editor is in bitmap mode, false if it is in vector mode\n * @returns {paper.Rectangle} the bounds within which mouse events should work in the paint editor\n */\nconst getActionBounds = isBitmap => {\n    if (isBitmap) {\n        return ART_BOARD_BOUNDS;\n    }\n    return paper.view.bounds.unite(ART_BOARD_BOUNDS).intersect(MAX_WORKSPACE_BOUNDS);\n};\n\nconst zoomToFit = isBitmap => {\n    resetZoom();\n    let bounds;\n    if (isBitmap) {\n        bounds = getHitBounds(getRaster()).expand(BUFFER);\n    } else {\n        const items = getAllRootItems();\n        for (const item of items) {\n            if (bounds) {\n                bounds = bounds.unite(item.bounds);\n            } else {\n                bounds = item.bounds;\n            }\n        }\n    }\n    if (bounds && bounds.width && bounds.height) {\n        const canvas = paper.view.element;\n        // Ratio of (sprite length plus padding on all sides) to viewport length.\n        let ratio = paper.view.zoom *\n            Math.max(\n                bounds.width * (1 + (2 * PADDING_PERCENT / 100)) / canvas.clientWidth,\n                bounds.height * (1 + (2 * PADDING_PERCENT / 100)) / canvas.clientHeight);\n        // Clamp ratio\n        ratio = Math.max(Math.min(1, ratio), MIN_RATIO);\n        if (ratio < 1) {\n            paper.view.center = bounds.center;\n            paper.view.zoom = paper.view.zoom / ratio;\n            resizeCrosshair();\n            clampViewBounds();\n        }\n    } else {\n        log.warn('No bounds!');\n    }\n};\n\nexport {\n    ART_BOARD_BOUNDS,\n    ART_BOARD_HEIGHT,\n    ART_BOARD_WIDTH,\n    CENTER,\n    OUTERMOST_ZOOM_LEVEL,\n    SVG_ART_BOARD_WIDTH,\n    SVG_ART_BOARD_HEIGHT,\n    MAX_WORKSPACE_BOUNDS,\n    clampViewBounds,\n    getActionBounds,\n    pan,\n    resetZoom,\n    setWorkspaceBounds,\n    getWorkspaceBounds,\n    resizeCrosshair,\n    zoomOnSelection,\n    zoomOnFixedPoint,\n    zoomToFit\n};\n","import paper from '@scratch/paper';\nimport log from '../log/log';\nimport {ART_BOARD_BOUNDS, ART_BOARD_WIDTH, ART_BOARD_HEIGHT, CENTER, MAX_WORKSPACE_BOUNDS} from './view';\nimport {isGroupItem} from './item';\nimport {isBitmap, isVector} from '../lib/format';\n\nconst CHECKERBOARD_SIZE = 8;\nconst CROSSHAIR_SIZE = 16;\nconst CROSSHAIR_FULL_OPACITY = 0.75;\n\nconst _getLayer = function (layerString) {\n    for (const layer of paper.project.layers) {\n        if (layer.data && layer.data[layerString]) {\n            return layer;\n        }\n    }\n};\n\nconst _getPaintingLayer = function () {\n    return _getLayer('isPaintingLayer');\n};\n\n/**\n * Creates a canvas with width and height matching the art board size.\n * @param {?number} width Width of the canvas. Defaults to ART_BOARD_WIDTH.\n * @param {?number} height Height of the canvas. Defaults to ART_BOARD_HEIGHT.\n * @return {HTMLCanvasElement} the canvas\n */\nconst createCanvas = function (width, height) {\n    const canvas = document.createElement('canvas');\n    canvas.width = width ? width : ART_BOARD_WIDTH;\n    canvas.height = height ? height : ART_BOARD_HEIGHT;\n    canvas.getContext('2d').imageSmoothingEnabled = false;\n    return canvas;\n};\n\nconst clearRaster = function () {\n    const layer = _getLayer('isRasterLayer');\n    layer.removeChildren();\n    \n    // Generate blank raster\n    const raster = new paper.Raster(createCanvas());\n    raster.canvas.getContext('2d').imageSmoothingEnabled = false;\n    raster.parent = layer;\n    raster.guide = true;\n    raster.locked = true;\n    raster.position = CENTER;\n};\n\nconst getRaster = function () {\n    const layer = _getLayer('isRasterLayer');\n    // Generate blank raster\n    if (layer.children.length === 0) {\n        clearRaster();\n    }\n    return _getLayer('isRasterLayer').children[0];\n};\n\nconst getDragCrosshairLayer = function () {\n    return _getLayer('isDragCrosshairLayer');\n};\n\nconst getBackgroundGuideLayer = function () {\n    return _getLayer('isBackgroundGuideLayer');\n};\n\nconst _convertLayer = function (layer, format) {\n    layer.bitmapBackground.visible = isBitmap(format);\n    layer.vectorBackground.visible = isVector(format);\n};\n\nconst convertBackgroundGuideLayer = function (format) {\n    _convertLayer(getBackgroundGuideLayer(), format);\n};\n\nconst _makeGuideLayer = function () {\n    const guideLayer = new paper.Layer();\n    guideLayer.data.isGuideLayer = true;\n    return guideLayer;\n};\n\nconst getGuideLayer = function () {\n    let layer = _getLayer('isGuideLayer');\n    if (!layer) {\n        layer = _makeGuideLayer();\n        _getPaintingLayer().activate();\n    }\n    return layer;\n};\n\nconst setGuideItem = function (item) {\n    item.locked = true;\n    item.guide = true;\n    if (isGroupItem(item)) {\n        for (let i = 0; i < item.children.length; i++) {\n            setGuideItem(item.children[i]);\n        }\n    }\n};\n\n/**\n * Removes the guide layers, e.g. for purposes of exporting the image. Must call showGuideLayers to re-add them.\n * @param {boolean} includeRaster true if the raster layer should also be hidden\n * @return {object} an object of the removed layers, which should be passed to showGuideLayers to re-add them.\n */\nconst hideGuideLayers = function (includeRaster) {\n    const backgroundGuideLayer = getBackgroundGuideLayer();\n    const dragCrosshairLayer = getDragCrosshairLayer();\n    const outlineLayer = _getLayer('isOutlineLayer');\n    const guideLayer = getGuideLayer();\n    dragCrosshairLayer.remove();\n    outlineLayer.remove();\n    guideLayer.remove();\n    backgroundGuideLayer.remove();\n    let rasterLayer;\n    if (includeRaster) {\n        rasterLayer = _getLayer('isRasterLayer');\n        rasterLayer.remove();\n    }\n    return {\n        dragCrosshairLayer: dragCrosshairLayer,\n        outlineLayer: outlineLayer,\n        guideLayer: guideLayer,\n        backgroundGuideLayer: backgroundGuideLayer,\n        rasterLayer: rasterLayer\n    };\n};\n\n/**\n * Add back the guide layers removed by calling hideGuideLayers. This must be done before any editing operations are\n * taken in the paint editor.\n * @param {!object} guideLayers object of the removed layers, which was returned by hideGuideLayers\n */\nconst showGuideLayers = function (guideLayers) {\n    const backgroundGuideLayer = guideLayers.backgroundGuideLayer;\n    const dragCrosshairLayer = guideLayers.dragCrosshairLayer;\n    const outlineLayer = guideLayers.outlineLayer;\n    const guideLayer = guideLayers.guideLayer;\n    const rasterLayer = guideLayers.rasterLayer;\n    if (rasterLayer && !rasterLayer.index) {\n        paper.project.addLayer(rasterLayer);\n        rasterLayer.sendToBack();\n    }\n    if (!backgroundGuideLayer.index) {\n        paper.project.addLayer(backgroundGuideLayer);\n        backgroundGuideLayer.sendToBack();\n    }\n    if (!dragCrosshairLayer.index) {\n        paper.project.addLayer(dragCrosshairLayer);\n        dragCrosshairLayer.bringToFront();\n    }\n    if (!outlineLayer.index) {\n        paper.project.addLayer(outlineLayer);\n        outlineLayer.bringToFront();\n    }\n    if (!guideLayer.index) {\n        paper.project.addLayer(guideLayer);\n        guideLayer.bringToFront();\n    }\n    if (paper.project.activeLayer !== _getPaintingLayer()) {\n        log.error(`Wrong active layer`);\n        log.error(paper.project.activeLayer.data);\n    }\n};\n\nconst _makePaintingLayer = function () {\n    const paintingLayer = new paper.Layer();\n    paintingLayer.data.isPaintingLayer = true;\n    return paintingLayer;\n};\n\nconst _makeRasterLayer = function () {\n    const rasterLayer = new paper.Layer();\n    rasterLayer.data.isRasterLayer = true;\n    clearRaster();\n    return rasterLayer;\n};\n\nconst _makeBackgroundPaper = function (width, height, color, opacity) {\n    // creates a checkerboard path of width * height squares in color on white\n    let x = 0;\n    let y = 0;\n    const pathPoints = [];\n    while (x < width) {\n        pathPoints.push(new paper.Point(x, y));\n        x++;\n        pathPoints.push(new paper.Point(x, y));\n        y = y === 0 ? height : 0;\n    }\n    y = height - 1;\n    x = width;\n    while (y > 0) {\n        pathPoints.push(new paper.Point(x, y));\n        x = (x === 0 ? width : 0);\n        pathPoints.push(new paper.Point(x, y));\n        y--;\n    }\n    const vRect = new paper.Shape.Rectangle(\n        new paper.Point(0, 0),\n        new paper.Point(ART_BOARD_WIDTH / CHECKERBOARD_SIZE, ART_BOARD_HEIGHT / CHECKERBOARD_SIZE));\n    vRect.fillColor = '#fff';\n    vRect.guide = true;\n    vRect.locked = true;\n    vRect.position = CENTER;\n    const vPath = new paper.Path(pathPoints);\n    vPath.fillRule = 'evenodd';\n    vPath.fillColor = color;\n    vPath.opacity = opacity;\n    vPath.guide = true;\n    vPath.locked = true;\n    vPath.position = CENTER;\n    const mask = new paper.Shape.Rectangle(MAX_WORKSPACE_BOUNDS);\n    mask.position = CENTER;\n    mask.guide = true;\n    mask.locked = true;\n    mask.scale(1 / CHECKERBOARD_SIZE);\n    const vGroup = new paper.Group([vRect, vPath, mask]);\n    mask.clipMask = true;\n    return vGroup;\n};\n\n// Helper function for drawing a crosshair\nconst _makeCrosshair = function (opacity, parent) {\n    const crosshair = new paper.Group();\n\n    const vLine2 = new paper.Path.Line(new paper.Point(0, -7), new paper.Point(0, 7));\n    vLine2.strokeWidth = 6;\n    vLine2.strokeColor = 'white';\n    vLine2.strokeCap = 'round';\n    crosshair.addChild(vLine2);\n    const hLine2 = new paper.Path.Line(new paper.Point(-7, 0), new paper.Point(7, 0));\n    hLine2.strokeWidth = 6;\n    hLine2.strokeColor = 'white';\n    hLine2.strokeCap = 'round';\n    crosshair.addChild(hLine2);\n    const circle2 = new paper.Shape.Circle(new paper.Point(0, 0), 5.5);\n    circle2.strokeWidth = 6;\n    circle2.strokeColor = 'white';\n    crosshair.addChild(circle2);\n\n    const vLine = new paper.Path.Line(new paper.Point(0, -7), new paper.Point(0, 7));\n    vLine.strokeWidth = 2;\n    vLine.strokeColor = 'black';\n    vLine.strokeCap = 'round';\n    crosshair.addChild(vLine);\n    const hLine = new paper.Path.Line(new paper.Point(-7, 0), new paper.Point(7, 0));\n    hLine.strokeWidth = 2;\n    hLine.strokeColor = 'black';\n    hLine.strokeCap = 'round';\n    crosshair.addChild(hLine);\n    const circle = new paper.Shape.Circle(new paper.Point(0, 0), 5.5);\n    circle.strokeWidth = 2;\n    circle.strokeColor = 'black';\n    crosshair.addChild(circle);\n\n    setGuideItem(crosshair);\n    crosshair.position = CENTER;\n    crosshair.opacity = opacity;\n    crosshair.parent = parent;\n    crosshair.applyMatrix = false;\n    parent.dragCrosshair = crosshair;\n    crosshair.scale(CROSSHAIR_SIZE / crosshair.bounds.width / paper.view.zoom);\n};\n\nconst _makeDragCrosshairLayer = function () {\n    const dragCrosshairLayer = new paper.Layer();\n    _makeCrosshair(CROSSHAIR_FULL_OPACITY, dragCrosshairLayer);\n    dragCrosshairLayer.data.isDragCrosshairLayer = true;\n    dragCrosshairLayer.visible = false;\n    return dragCrosshairLayer;\n};\n\nconst _makeOutlineLayer = function () {\n    const outlineLayer = new paper.Layer();\n    const whiteRect = new paper.Shape.Rectangle(ART_BOARD_BOUNDS.expand(1));\n    whiteRect.strokeWidth = 2;\n    whiteRect.strokeColor = 'white';\n    setGuideItem(whiteRect);\n    const blueRect = new paper.Shape.Rectangle(ART_BOARD_BOUNDS.expand(5));\n    blueRect.strokeWidth = 2;\n    blueRect.strokeColor = '#4280D7';\n    blueRect.opacity = 0.25;\n    setGuideItem(blueRect);\n    outlineLayer.data.isOutlineLayer = true;\n    return outlineLayer;\n};\n\nconst _makeBackgroundGuideLayer = function (format) {\n    const guideLayer = new paper.Layer();\n    guideLayer.locked = true;\n    \n    const vWorkspaceBounds = new paper.Shape.Rectangle(MAX_WORKSPACE_BOUNDS);\n    vWorkspaceBounds.fillColor = '#ECF1F9';\n    vWorkspaceBounds.position = CENTER;\n\n    // Add 1 to the height because it's an odd number otherwise, and we want it to be even\n    // so the corner of the checkerboard to line up with the center crosshair\n    const vBackground = _makeBackgroundPaper(\n        MAX_WORKSPACE_BOUNDS.width / CHECKERBOARD_SIZE,\n        (MAX_WORKSPACE_BOUNDS.height / CHECKERBOARD_SIZE) + 1,\n        '#D9E3F2', 0.55);\n    vBackground.position = CENTER;\n    vBackground.scaling = new paper.Point(CHECKERBOARD_SIZE, CHECKERBOARD_SIZE);\n\n    const vectorBackground = new paper.Group();\n    vectorBackground.addChild(vWorkspaceBounds);\n    vectorBackground.addChild(vBackground);\n    setGuideItem(vectorBackground);\n    guideLayer.vectorBackground = vectorBackground;\n\n    const bitmapBackground = _makeBackgroundPaper(\n        ART_BOARD_WIDTH / CHECKERBOARD_SIZE,\n        ART_BOARD_HEIGHT / CHECKERBOARD_SIZE,\n        '#D9E3F2', 0.55);\n    bitmapBackground.position = CENTER;\n    bitmapBackground.scaling = new paper.Point(CHECKERBOARD_SIZE, CHECKERBOARD_SIZE);\n    bitmapBackground.guide = true;\n    bitmapBackground.locked = true;\n    guideLayer.bitmapBackground = bitmapBackground;\n\n    _convertLayer(guideLayer, format);\n    \n    _makeCrosshair(0.16, guideLayer);\n\n    guideLayer.data.isBackgroundGuideLayer = true;\n    return guideLayer;\n};\n\nconst setupLayers = function (format) {\n    const backgroundGuideLayer = _makeBackgroundGuideLayer(format);\n    _makeRasterLayer();\n    const paintLayer = _makePaintingLayer();\n    const dragCrosshairLayer = _makeDragCrosshairLayer();\n    const outlineLayer = _makeOutlineLayer();\n    const guideLayer = _makeGuideLayer();\n    backgroundGuideLayer.sendToBack();\n    dragCrosshairLayer.bringToFront();\n    outlineLayer.bringToFront();\n    guideLayer.bringToFront();\n    paintLayer.activate();\n};\n\nexport {\n    CROSSHAIR_SIZE,\n    CROSSHAIR_FULL_OPACITY,\n    createCanvas,\n    hideGuideLayers,\n    showGuideLayers,\n    getDragCrosshairLayer,\n    getGuideLayer,\n    getBackgroundGuideLayer,\n    convertBackgroundGuideLayer,\n    clearRaster,\n    getRaster,\n    setGuideItem,\n    setupLayers\n};\n","// undo functionality\n// modifed from https://github.com/memononen/stylii\nimport paper from '@scratch/paper';\nimport {hideGuideLayers, showGuideLayers, getRaster} from '../helper/layer';\nimport {getSelectedLeafItems} from '../helper/selection';\nimport Formats, {isVector, isBitmap} from '../lib/format';\nimport log from '../log/log';\n\n/**\n * Take an undo snapshot\n * @param {function} dispatchPerformSnapshot Callback to dispatch a state update\n * @param {Formats} format Either Formats.BITMAP or Formats.VECTOR\n */\nconst performSnapshot = function (dispatchPerformSnapshot, format) {\n    if (!format) {\n        log.error('Format must be specified.');\n    }\n    const guideLayers = hideGuideLayers();\n    dispatchPerformSnapshot({\n        json: paper.project.exportJSON({asString: false}),\n        paintEditorFormat: format\n    });\n    showGuideLayers(guideLayers);\n};\n\nconst _restore = function (entry, setSelectedItems, onUpdateImage, isBitmapMode) {\n    for (let i = paper.project.layers.length - 1; i >= 0; i--) {\n        const layer = paper.project.layers[i];\n        if (!layer.data.isBackgroundGuideLayer &&\n            !layer.data.isDragCrosshairLayer &&\n            !layer.data.isOutlineLayer) {\n            layer.removeChildren();\n            layer.remove();\n        }\n    }\n    paper.project.importJSON(entry.json);\n    setSelectedItems();\n\n    // Ensure that all rasters are loaded before updating storage with new image data.\n    const rastersThatNeedToLoad = [];\n    const onLoad = () => {\n        if (!getRaster().loaded) return;\n        for (const raster of rastersThatNeedToLoad) {\n            if (!raster.loaded) return;\n        }\n        onUpdateImage(true /* skipSnapshot */);\n    };\n\n    // Bitmap mode should have at most 1 selected item\n    if (isBitmapMode) {\n        const selectedItems = getSelectedLeafItems();\n        if (selectedItems.length === 1 && selectedItems[0] instanceof paper.Raster) {\n            rastersThatNeedToLoad.push(selectedItems[0]);\n            if (selectedItems[0].data && selectedItems[0].data.expanded instanceof paper.Raster) {\n                rastersThatNeedToLoad.push(selectedItems[0].data.expanded);\n            }\n        }\n    }\n\n    getRaster().onLoad = onLoad;\n    for (const raster of rastersThatNeedToLoad) {\n        raster.onLoad = onLoad;\n        if (raster.loaded) raster.onLoad();\n    }\n};\n\nconst performUndo = function (undoState, dispatchPerformUndo, setSelectedItems, onUpdateImage) {\n    if (undoState.pointer > 0) {\n        const state = undoState.stack[undoState.pointer - 1];\n        _restore(state, setSelectedItems, onUpdateImage, isBitmap(state.paintEditorFormat));\n        const format = isVector(state.paintEditorFormat) ? Formats.VECTOR_SKIP_CONVERT :\n            isBitmap(state.paintEditorFormat) ? Formats.BITMAP_SKIP_CONVERT : null;\n        dispatchPerformUndo(format);\n    }\n};\n\n\nconst performRedo = function (undoState, dispatchPerformRedo, setSelectedItems, onUpdateImage) {\n    if (undoState.pointer >= 0 && undoState.pointer < undoState.stack.length - 1) {\n        const state = undoState.stack[undoState.pointer + 1];\n        _restore(state, setSelectedItems, onUpdateImage, isBitmap(state.paintEditorFormat));\n        const format = isVector(state.paintEditorFormat) ? Formats.VECTOR_SKIP_CONVERT :\n            isBitmap(state.paintEditorFormat) ? Formats.BITMAP_SKIP_CONVERT : null;\n        dispatchPerformRedo(format);\n    }\n};\n\nconst shouldShowUndo = function (undoState) {\n    return undoState.pointer > 0;\n};\n\nconst shouldShowRedo = function (undoState) {\n    return (undoState.pointer > -1 && undoState.pointer !== (undoState.stack.length - 1));\n};\n\nexport {\n    performSnapshot,\n    performUndo,\n    performRedo,\n    shouldShowUndo,\n    shouldShowRedo\n};\n","import log from '../log/log';\n\nconst UNDO = 'scratch-paint/undo/UNDO';\nconst REDO = 'scratch-paint/undo/REDO';\nconst SNAPSHOT = 'scratch-paint/undo/SNAPSHOT';\nconst CLEAR = 'scratch-paint/undo/CLEAR';\nconst MAX_STACK_SIZE = 100;\nconst initialState = {\n    stack: [],\n    pointer: -1\n};\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case UNDO:\n        if (state.pointer <= 0) {\n            log.warn(`Can't undo, undo stack is empty`);\n            return state;\n        }\n        return {\n            stack: state.stack,\n            pointer: state.pointer - 1\n        };\n    case REDO:\n        if (state.pointer <= -1 || state.pointer === state.stack.length - 1) {\n            log.warn(`Can't redo, redo stack is empty`);\n            return state;\n        }\n        return {\n            stack: state.stack,\n            pointer: state.pointer + 1\n        };\n    case SNAPSHOT:\n        if (!action.snapshot) {\n            log.warn(`Couldn't create undo snapshot, no data provided`);\n            return state;\n        }\n        // Overflowed or about to overflow\n        if (state.pointer >= MAX_STACK_SIZE - 1) {\n            return {\n                // Make a stack of size MAX_STACK_SIZE, cutting off the oldest snapshots.\n                stack: state.stack.slice(state.pointer - MAX_STACK_SIZE + 2, state.pointer + 1).concat(action.snapshot),\n                pointer: MAX_STACK_SIZE - 1\n            };\n        }\n        return {\n            // Performing an action clears the redo stack\n            stack: state.stack.slice(0, state.pointer + 1).concat(action.snapshot),\n            pointer: state.pointer + 1\n        };\n    case CLEAR:\n        return initialState;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst undoSnapshot = function (snapshot) {\n    return {\n        type: SNAPSHOT,\n        snapshot: snapshot\n    };\n};\n/**\n * @param {Format} format Either VECTOR_SKIP_CONVERT or BITMAP_SKIP_CONVERT\n * @return {Action} undo action\n */\nconst undo = function (format) {\n    return {\n        type: UNDO,\n        format: format\n    };\n};\n/**\n * @param {Format} format Either VECTOR_SKIP_CONVERT or BITMAP_SKIP_CONVERT\n * @return {Action} undo action\n */\nconst redo = function (format) {\n    return {\n        type: REDO,\n        format: format\n    };\n};\nconst clearUndoState = function () {\n    return {\n        type: CLEAR\n    };\n};\n\nexport {\n    reducer as default,\n    undo,\n    redo,\n    undoSnapshot,\n    clearUndoState,\n    MAX_STACK_SIZE,\n    UNDO,\n    REDO\n};\n","import log from '../log/log';\nconst CHANGE_SELECTED_ITEMS = 'scratch-paint/select/CHANGE_SELECTED_ITEMS';\nconst REDRAW_SELECTION_BOX = 'scratch-paint/select/REDRAW_SELECTION_BOX';\nconst initialState = [];\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case REDRAW_SELECTION_BOX:\n        if (state.length > 0) return state.slice(0); // Sends an update even though the items haven't changed\n        return state;\n    case CHANGE_SELECTED_ITEMS:\n        if (!action.selectedItems || !(action.selectedItems instanceof Array)) {\n            log.warn(`No selected items or wrong format provided: ${action.selectedItems}`);\n            return state;\n        }\n        if (action.selectedItems.length > 1 && action.bitmapMode) {\n            log.warn(`Multiselect should not be possible in bitmap mode: ${action.selectedItems}`);\n            return state;\n        }\n        // If they are both empty, no change\n        if (action.selectedItems.length === 0 && state.length === 0) {\n            return state;\n        }\n        return action.selectedItems;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\n/**\n * Set the selected item state to the given array of items\n * @param {Array<paper.Item>} selectedItems from paper.project.selectedItems\n * @param {?boolean} bitmapMode True if the items are being selected in bitmap mode\n * @return {object} Redux action to change the selected items.\n */\nconst setSelectedItems = function (selectedItems, bitmapMode) {\n    return {\n        type: CHANGE_SELECTED_ITEMS,\n        selectedItems: selectedItems,\n        bitmapMode: bitmapMode\n    };\n};\nconst clearSelectedItems = function () {\n    return {\n        type: CHANGE_SELECTED_ITEMS,\n        selectedItems: []\n    };\n};\nconst redrawSelectionBox = function () {\n    return {\n        type: REDRAW_SELECTION_BOX\n    };\n};\n\nexport {\n    reducer as default,\n    redrawSelectionBox,\n    setSelectedItems,\n    clearSelectedItems,\n    CHANGE_SELECTED_ITEMS\n};\n","import log from '../log/log';\n\nconst CHANGE_HOVERED = 'scratch-paint/hover/CHANGE_HOVERED';\nconst initialState = null;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_HOVERED:\n        if (typeof action.hoveredItemId === 'undefined') {\n            log.warn(`Hovered item should not be set to undefined. Use null.`);\n            return state;\n        } else if (typeof action.hoveredItemId === 'undefined' || isNaN(action.hoveredItemId)) {\n            log.warn(`Hovered item should be an item ID number. Got: ${action.hoveredItemId}`);\n            return state;\n        }\n        return action.hoveredItemId;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\n/**\n * Set the hovered item state to the given item ID\n * @param {number} hoveredItemId The paper.Item ID of the hover indicator item.\n * @return {object} Redux action to change the hovered item.\n */\nconst setHoveredItem = function (hoveredItemId) {\n    return {\n        type: CHANGE_HOVERED,\n        hoveredItemId: hoveredItemId\n    };\n};\n\nconst clearHoveredItem = function () {\n    return {\n        type: CHANGE_HOVERED,\n        hoveredItemId: null\n    };\n};\n\nexport {\n    reducer as default,\n    setHoveredItem,\n    clearHoveredItem\n};\n","import log from '../log/log';\n\nconst SET = 'scratch-paint/clipboard/SET';\nconst INCREMENT_PASTE_OFFSET = 'scratch-paint/clipboard/INCREMENT_PASTE_OFFSET';\nconst CLEAR_PASTE_OFFSET = 'scratch-paint/clipboard/CLEAR_PASTE_OFFSET';\nconst initialState = {\n    items: [],\n    pasteOffset: 0\n};\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case SET:\n        if (!action.clipboardItems || !(action.clipboardItems instanceof Array) || action.clipboardItems.length === 0) {\n            log.warn(`Invalid clipboard item format`);\n            return state;\n        }\n        return {\n            items: action.clipboardItems,\n            pasteOffset: 1\n        };\n    case INCREMENT_PASTE_OFFSET:\n        return {\n            items: state.items,\n            pasteOffset: state.pasteOffset + 1\n        };\n    case CLEAR_PASTE_OFFSET:\n        return {\n            items: state.items,\n            pasteOffset: 0\n        };\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst setClipboardItems = function (clipboardItems) {\n    return {\n        type: SET,\n        clipboardItems: clipboardItems\n    };\n};\n\nconst incrementPasteOffset = function () {\n    return {\n        type: INCREMENT_PASTE_OFFSET\n    };\n};\n\nconst clearPasteOffset = function () {\n    return {\n        type: CLEAR_PASTE_OFFSET\n    };\n};\n\nexport {\n    reducer as default,\n    setClipboardItems,\n    incrementPasteOffset,\n    clearPasteOffset\n};\n","import Formats from '../lib/format';\nimport log from '../log/log';\nimport {UNDO, REDO} from './undo';\n\nconst CHANGE_FORMAT = 'scratch-paint/formats/CHANGE_FORMAT';\nconst initialState = null;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case UNDO:\n        /* falls through */\n    case REDO:\n        /* falls through */\n    case CHANGE_FORMAT:\n        if (!action.format) return state;\n        if (action.format in Formats) {\n            return action.format;\n        }\n        log.warn(`Format does not exist: ${action.format}`);\n        /* falls through */\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeFormat = function (format) {\n    return {\n        type: CHANGE_FORMAT,\n        format: format\n    };\n};\n\nexport {\n    reducer as default,\n    changeFormat\n};\n","import paper from '@scratch/paper';\nimport log from '../log/log';\n\nconst UPDATE_VIEW_BOUNDS = 'scratch-paint/view/UPDATE_VIEW_BOUNDS';\nconst initialState = new paper.Matrix(); // Identity\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case UPDATE_VIEW_BOUNDS:\n        if (!(action.viewBounds instanceof paper.Matrix)) {\n            log.warn(`View bounds should be a paper.Matrix.`);\n            return state;\n        }\n        return action.viewBounds;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\n/**\n * Set the view bounds, which defines the zoom and scroll of the paper canvas.\n * @param {paper.Matrix} matrix The matrix applied to the view\n * @return {object} Redux action to set the view bounds\n */\nconst updateViewBounds = function (matrix) {\n    return {\n        type: UPDATE_VIEW_BOUNDS,\n        viewBounds: matrix.clone()\n    };\n};\n\nexport {\n    reducer as default,\n    updateViewBounds\n};\n","import paper from '@scratch/paper';\nimport log from '../log/log';\n\nconst SAVE_ZOOM_LEVEL = 'scratch-paint/zoom-levels/SAVE_ZOOM_LEVEL';\nconst SET_ZOOM_LEVEL_ID = 'scratch-paint/zoom-levels/SET_ZOOM_LEVEL_ID';\nconst initialState = {};\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case SET_ZOOM_LEVEL_ID:\n        if (action.zoomLevelId === 'currentZoomLevelId') {\n            log.warn(`currentZoomLevelId is an invalid string for zoomLevel`);\n            return state;\n        }\n        return Object.assign({}, state, {\n            currentZoomLevelId: action.zoomLevelId\n        });\n    case SAVE_ZOOM_LEVEL:\n        return Object.assign({}, state, {\n            [state.currentZoomLevelId]: action.zoomLevel\n        });\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst saveZoomLevel = function (zoomLevel) {\n    if (!(zoomLevel instanceof paper.Matrix)) {\n        log.warn(`Not a matrix: ${zoomLevel}`);\n    }\n    return {\n        type: SAVE_ZOOM_LEVEL,\n        zoomLevel: new paper.Matrix(zoomLevel)\n    };\n};\nconst setZoomLevelId = function (zoomLevelId) {\n    return {\n        type: SET_ZOOM_LEVEL_ID,\n        zoomLevelId: zoomLevelId\n    };\n};\n\nexport {\n    reducer as default,\n    saveZoomLevel,\n    setZoomLevelId\n};\n","import bindAll from 'lodash.bindall';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport paper from '@scratch/paper';\nimport Formats from '../lib/format';\nimport log from '../log/log';\n\nimport {performSnapshot} from '../helper/undo';\nimport {undoSnapshot, clearUndoState} from '../reducers/undo';\nimport {isGroup, ungroupItems} from '../helper/group';\nimport {clearRaster, convertBackgroundGuideLayer, getRaster, setupLayers} from '../helper/layer';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {\n    ART_BOARD_WIDTH, ART_BOARD_HEIGHT, CENTER, MAX_WORKSPACE_BOUNDS,\n    clampViewBounds, resetZoom, setWorkspaceBounds, zoomToFit, resizeCrosshair\n} from '../helper/view';\nimport {ensureClockwise, scaleWithStrokes} from '../helper/math';\nimport {clearHoveredItem} from '../reducers/hover';\nimport {clearPasteOffset} from '../reducers/clipboard';\nimport {changeFormat} from '../reducers/format';\nimport {updateViewBounds} from '../reducers/view-bounds';\nimport {saveZoomLevel, setZoomLevelId} from '../reducers/zoom-levels';\n\nimport styles from './paper-canvas.css';\n\nclass PaperCanvas extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'clearQueuedImport',\n            'setCanvas',\n            'importSvg',\n            'initializeSvg',\n            'maybeZoomToFit',\n            'switchCostume',\n            'onViewResize',\n            'recalibrateSize'\n        ]);\n    }\n    componentDidMount () {\n        paper.setup(this.canvas);\n        paper.view.on('resize', this.onViewResize);\n        resetZoom();\n        if (this.props.zoomLevelId) {\n            this.props.setZoomLevelId(this.props.zoomLevelId);\n            if (this.props.zoomLevels[this.props.zoomLevelId]) {\n                // This is the matrix that the view should be zoomed to after image import\n                this.shouldZoomToFit = this.props.zoomLevels[this.props.zoomLevelId];\n            } else {\n                // Zoom to fit true means find a comfortable zoom level for viewing the costume\n                this.shouldZoomToFit = true;\n            }\n        } else {\n            this.props.updateViewBounds(paper.view.matrix);\n        }\n\n        const context = this.canvas.getContext('2d');\n        context.webkitImageSmoothingEnabled = false;\n        context.imageSmoothingEnabled = false;\n\n        // Don't show handles by default\n        paper.settings.handleSize = 0;\n        // Make layers.\n        setupLayers(this.props.format);\n        this.importImage(\n            this.props.imageFormat, this.props.image, this.props.rotationCenterX, this.props.rotationCenterY);\n    }\n    componentWillReceiveProps (newProps) {\n        if (this.props.imageId !== newProps.imageId) {\n            this.switchCostume(newProps.imageFormat, newProps.image,\n                newProps.rotationCenterX, newProps.rotationCenterY,\n                this.props.zoomLevelId, newProps.zoomLevelId);\n        }\n        if (this.props.format !== newProps.format) {\n            this.recalibrateSize();\n            convertBackgroundGuideLayer(newProps.format);\n        }\n    }\n    componentWillUnmount () {\n        this.clearQueuedImport();\n        // shouldZoomToFit means the zoom level hasn't been initialized yet\n        if (!this.shouldZoomToFit) {\n            this.props.saveZoomLevel();\n        }\n        paper.remove();\n    }\n    clearQueuedImport () {\n        if (this.queuedImport) {\n            window.clearTimeout(this.queuedImport);\n            this.queuedImport = null;\n        }\n        if (this.queuedImageToLoad) {\n            this.queuedImageToLoad.src = '';\n            this.queuedImageToLoad.onload = null;\n            this.queuedImageToLoad = null;\n        }\n    }\n    switchCostume (format, image, rotationCenterX, rotationCenterY, oldZoomLevelId, newZoomLevelId) {\n        if (oldZoomLevelId && oldZoomLevelId !== newZoomLevelId) {\n            this.props.saveZoomLevel();\n        }\n        if (newZoomLevelId && oldZoomLevelId !== newZoomLevelId) {\n            if (this.props.zoomLevels[newZoomLevelId]) {\n                this.shouldZoomToFit = this.props.zoomLevels[newZoomLevelId];\n            } else {\n                this.shouldZoomToFit = true;\n            }\n            this.props.setZoomLevelId(newZoomLevelId);\n        }\n        for (const layer of paper.project.layers) {\n            if (layer.data.isRasterLayer) {\n                clearRaster();\n            } else if (!layer.data.isBackgroundGuideLayer &&\n                !layer.data.isDragCrosshairLayer &&\n                !layer.data.isOutlineLayer) {\n                layer.removeChildren();\n            }\n        }\n        this.props.clearUndo();\n        this.props.clearSelectedItems();\n        this.props.clearHoveredItem();\n        this.props.clearPasteOffset();\n        this.importImage(format, image, rotationCenterX, rotationCenterY);\n    }\n    importImage (format, image, rotationCenterX, rotationCenterY) {\n        // Stop any in-progress imports\n        this.clearQueuedImport();\n\n        if (!image) {\n            this.props.changeFormat(Formats.VECTOR_SKIP_CONVERT);\n            performSnapshot(this.props.undoSnapshot, Formats.VECTOR_SKIP_CONVERT);\n            this.recalibrateSize();\n            return;\n        }\n\n        if (format === 'jpg' || format === 'png') {\n            // import bitmap\n            this.props.changeFormat(Formats.BITMAP_SKIP_CONVERT);\n\n            const mask = new paper.Shape.Rectangle(getRaster().getBounds());\n            mask.guide = true;\n            mask.locked = true;\n            mask.setPosition(CENTER);\n            mask.clipMask = true;\n\n            const imgElement = new Image();\n            this.queuedImageToLoad = imgElement;\n            imgElement.onload = () => {\n                if (!this.queuedImageToLoad) return;\n                this.queuedImageToLoad = null;\n\n                if (typeof rotationCenterX === 'undefined') {\n                    rotationCenterX = imgElement.width / 2;\n                }\n                if (typeof rotationCenterY === 'undefined') {\n                    rotationCenterY = imgElement.height / 2;\n                }\n\n                getRaster().drawImage(\n                    imgElement,\n                    (ART_BOARD_WIDTH / 2) - rotationCenterX,\n                    (ART_BOARD_HEIGHT / 2) - rotationCenterY);\n                getRaster().drawImage(\n                    imgElement,\n                    (ART_BOARD_WIDTH / 2) - rotationCenterX,\n                    (ART_BOARD_HEIGHT / 2) - rotationCenterY);\n\n                this.maybeZoomToFit(true /* isBitmap */);\n                performSnapshot(this.props.undoSnapshot, Formats.BITMAP_SKIP_CONVERT);\n                this.recalibrateSize();\n            };\n            imgElement.src = image;\n        } else if (format === 'svg') {\n            this.props.changeFormat(Formats.VECTOR_SKIP_CONVERT);\n            this.importSvg(image, rotationCenterX, rotationCenterY);\n        } else {\n            log.error(`Didn't recognize format: ${format}. Use 'jpg', 'png' or 'svg'.`);\n            this.props.changeFormat(Formats.VECTOR_SKIP_CONVERT);\n            performSnapshot(this.props.undoSnapshot, Formats.VECTOR_SKIP_CONVERT);\n            this.recalibrateSize();\n        }\n    }\n    maybeZoomToFit (isBitmapMode) {\n        if (this.shouldZoomToFit instanceof paper.Matrix) {\n            paper.view.matrix = this.shouldZoomToFit;\n            this.props.updateViewBounds(paper.view.matrix);\n            resizeCrosshair();\n        } else if (this.shouldZoomToFit === true) {\n            zoomToFit(isBitmapMode);\n        }\n        this.shouldZoomToFit = false;\n        setWorkspaceBounds();\n        this.props.updateViewBounds(paper.view.matrix);\n    }\n    importSvg (svg, rotationCenterX, rotationCenterY) {\n        const paperCanvas = this;\n        // Pre-process SVG to prevent parsing errors (discussion from #213)\n        // 1. Remove svg: namespace on elements.\n        // TODO: remove\n        svg = svg.split(/<\\s*svg:/).join('<');\n        svg = svg.split(/<\\/\\s*svg:/).join('</');\n        // 2. Add root svg namespace if it does not exist.\n        const svgAttrs = svg.match(/<svg [^>]*>/);\n        if (svgAttrs && svgAttrs[0].indexOf('xmlns=') === -1) {\n            svg = svg.replace(\n                '<svg ', '<svg xmlns=\"http://www.w3.org/2000/svg\" ');\n        }\n\n        // Get the origin which the viewBox is defined relative to. During import, Paper will translate\n        // the viewBox to start at (0, 0), and we need to translate it back for some costumes to render\n        // correctly.\n        const parser = new DOMParser();\n        const svgDom = parser.parseFromString(svg, 'text/xml');\n        const viewBox = svgDom.documentElement.attributes.viewBox ?\n            svgDom.documentElement.attributes.viewBox.value.match(/\\S+/g) : null;\n        if (viewBox) {\n            for (let i = 0; i < viewBox.length; i++) {\n                viewBox[i] = parseFloat(viewBox[i]);\n            }\n        }\n\n        paper.project.importSVG(svg, {\n            expandShapes: true,\n            onLoad: function (item) {\n                if (!item) {\n                    log.error('SVG import failed:');\n                    log.info(svg);\n                    this.props.changeFormat(Formats.VECTOR_SKIP_CONVERT);\n                    performSnapshot(paperCanvas.props.undoSnapshot, Formats.VECTOR_SKIP_CONVERT);\n                    return;\n                }\n                item.remove();\n\n                // Without the callback, rasters' load function has not been called yet, and they are\n                // positioned incorrectly\n                paperCanvas.queuedImport = paperCanvas.recalibrateSize(() => {\n                    paperCanvas.props.updateViewBounds(paper.view.matrix);\n                    paperCanvas.initializeSvg(item, rotationCenterX, rotationCenterY, viewBox);\n                });\n            }\n        });\n    }\n    initializeSvg (item, rotationCenterX, rotationCenterY, viewBox) {\n        if (this.queuedImport) this.queuedImport = null;\n        const itemWidth = item.bounds.width;\n        const itemHeight = item.bounds.height;\n\n        // Get reference to viewbox\n        let mask;\n        if (item.clipped) {\n            for (const child of item.children) {\n                if (child.isClipMask()) {\n                    mask = child;\n                    break;\n                }\n            }\n            mask.clipMask = false;\n        } else {\n            mask = new paper.Shape.Rectangle(item.bounds);\n        }\n        mask.guide = true;\n        mask.locked = true;\n        mask.matrix = new paper.Matrix(); // Identity\n        // Set the artwork to get clipped at the max costume size\n        mask.size.height = MAX_WORKSPACE_BOUNDS.height;\n        mask.size.width = MAX_WORKSPACE_BOUNDS.width;\n        mask.setPosition(CENTER);\n        paper.project.activeLayer.addChild(mask);\n        mask.clipMask = true;\n\n        // Reduce single item nested in groups\n        if (item instanceof paper.Group && item.children.length === 1) {\n            item = item.reduce();\n        }\n\n        ensureClockwise(item);\n        scaleWithStrokes(item, 2, new paper.Point()); // Import at 2x\n\n        // Apply rotation center\n        if (typeof rotationCenterX !== 'undefined' && typeof rotationCenterY !== 'undefined') {\n            let rotationPoint = new paper.Point(rotationCenterX, rotationCenterY);\n            if (viewBox && viewBox.length >= 2 && !isNaN(viewBox[0]) && !isNaN(viewBox[1])) {\n                rotationPoint = rotationPoint.subtract(viewBox[0], viewBox[1]);\n            }\n            item.translate(CENTER.subtract(rotationPoint.multiply(2)));\n        } else {\n            // Center\n            item.translate(CENTER.subtract(itemWidth, itemHeight));\n        }\n\n        paper.project.activeLayer.insertChild(0, item);\n        if (isGroup(item)) {\n            // Fixes an issue where we may export empty groups\n            for (const child of item.children) {\n                if (isGroup(child) && child.children.length === 0) {\n                    child.remove();\n                }\n            }\n            ungroupItems([item]);\n        }\n\n        performSnapshot(this.props.undoSnapshot, Formats.VECTOR_SKIP_CONVERT);\n        this.maybeZoomToFit();\n    }\n    onViewResize () {\n        setWorkspaceBounds(true /* clipEmpty */);\n        clampViewBounds();\n        // Fix incorrect paper canvas scale on browser zoom reset\n        this.recalibrateSize();\n        this.props.updateViewBounds(paper.view.matrix);\n    }\n    recalibrateSize (callback) {\n        // Sets the size that Paper thinks the canvas is to the size the canvas element actually is.\n        // When these are out of sync, the mouse events in the paint editor don't line up correctly.\n        return window.setTimeout(() => {\n            // If the component unmounts, the canvas will be removed from the page, detaching paper.view.\n            // This could also be called before paper.view exists.\n            // In either case, return early if so without running the callback.\n            if (!paper.view) return;\n            // Prevent blurriness caused if the \"CSS size\" of the element is a float--\n            // setting canvas dimensions to floats floors them, but we need to round instead\n            const elemSize = paper.DomElement.getSize(paper.view.element);\n            elemSize.width = Math.round(elemSize.width);\n            elemSize.height = Math.round(elemSize.height);\n            paper.view.setViewSize(elemSize);\n\n            if (callback) callback();\n        }, 0);\n    }\n    setCanvas (canvas) {\n        this.canvas = canvas;\n        if (this.props.canvasRef) {\n            this.props.canvasRef(canvas);\n        }\n    }\n    render () {\n        return (\n            <canvas\n                className={styles.paperCanvas}\n                ref={this.setCanvas}\n                style={{cursor: this.props.cursor}}\n                resize=\"true\"\n            />\n        );\n    }\n}\n\nPaperCanvas.propTypes = {\n    canvasRef: PropTypes.func,\n    changeFormat: PropTypes.func.isRequired,\n    clearHoveredItem: PropTypes.func.isRequired,\n    clearPasteOffset: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    clearUndo: PropTypes.func.isRequired,\n    cursor: PropTypes.string,\n    format: PropTypes.oneOf(Object.keys(Formats)),\n    image: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.instanceOf(HTMLImageElement)\n    ]),\n    imageFormat: PropTypes.string, // The incoming image's data format, used during import. The user could switch this.\n    imageId: PropTypes.string,\n    rotationCenterX: PropTypes.number,\n    rotationCenterY: PropTypes.number,\n    saveZoomLevel: PropTypes.func.isRequired,\n    setZoomLevelId: PropTypes.func.isRequired,\n    undoSnapshot: PropTypes.func.isRequired,\n    updateViewBounds: PropTypes.func.isRequired,\n    zoomLevelId: PropTypes.string,\n    zoomLevels: PropTypes.shape({\n        currentZoomLevelId: PropTypes.string\n    })\n};\nconst mapStateToProps = state => ({\n    mode: state.scratchPaint.mode,\n    cursor: state.scratchPaint.cursor,\n    format: state.scratchPaint.format,\n    zoomLevels: state.scratchPaint.zoomLevels\n});\nconst mapDispatchToProps = dispatch => ({\n    undoSnapshot: snapshot => {\n        dispatch(undoSnapshot(snapshot));\n    },\n    clearUndo: () => {\n        dispatch(clearUndoState());\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearHoveredItem: () => {\n        dispatch(clearHoveredItem());\n    },\n    clearPasteOffset: () => {\n        dispatch(clearPasteOffset());\n    },\n    changeFormat: format => {\n        dispatch(changeFormat(format));\n    },\n    saveZoomLevel: () => {\n        dispatch(saveZoomLevel(paper.view.matrix));\n    },\n    setZoomLevelId: zoomLevelId => {\n        dispatch(setZoomLevelId(zoomLevelId));\n    },\n    updateViewBounds: matrix => {\n        dispatch(updateViewBounds(matrix));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(PaperCanvas);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './scrollable-canvas.css';\n\nconst ScrollableCanvasComponent = props => (\n    <div\n        className={props.style}\n    >\n        {props.children}\n        <div\n            className={styles.horizontalScrollbarWrapper}\n            style={{pointerEvents: 'none'}}\n        >\n            <div\n                className={styles.horizontalScrollbarHitbox}\n                style={{\n                    width: `${props.horizontalScrollLengthPercent}%`,\n                    left: `${props.horizontalScrollStartPercent}%`,\n                    pointerEvents: 'auto',\n                    display: `${props.hideScrollbars ||\n                        Math.abs(props.horizontalScrollLengthPercent - 100) < 1e-8 ? 'none' : 'block'}`\n                }}\n                onMouseDown={props.onHorizontalScrollbarMouseDown}\n                onTouchStart={props.onHorizontalScrollbarMouseDown}\n            >\n                <div\n                    className={styles.horizontalScrollbar}\n                />\n            </div>\n        </div>\n        <div\n            className={styles.verticalScrollbarWrapper}\n            style={{pointerEvents: 'none'}}\n        >\n            <div\n                className={styles.verticalScrollbarHitbox}\n                style={{\n                    height: `${props.verticalScrollLengthPercent}%`,\n                    top: `${props.verticalScrollStartPercent}%`,\n                    pointerEvents: 'auto',\n                    display: `${props.hideScrollbars ||\n                        Math.abs(props.verticalScrollLengthPercent - 100) < 1e-8 ? 'none' : 'block'}`\n                }}\n                onMouseDown={props.onVerticalScrollbarMouseDown}\n                onTouchStart={props.onVerticalScrollbarMouseDown}\n            >\n                <div\n                    className={styles.verticalScrollbar}\n                />\n            </div>\n        </div>\n    </div>\n);\n\nScrollableCanvasComponent.propTypes = {\n    children: PropTypes.node.isRequired,\n    hideScrollbars: PropTypes.bool,\n    horizontalScrollLengthPercent: PropTypes.number,\n    horizontalScrollStartPercent: PropTypes.number,\n    onHorizontalScrollbarMouseDown: PropTypes.func.isRequired,\n    onVerticalScrollbarMouseDown: PropTypes.func.isRequired,\n    style: PropTypes.string,\n    verticalScrollLengthPercent: PropTypes.number,\n    verticalScrollStartPercent: PropTypes.number\n};\n\nexport default ScrollableCanvasComponent;\n","/* DO NOT EDIT\n@todo This file is copied from GUI and should be pulled out into a shared library.\nSee https://github.com/LLK/scratch-paint/issues/13 */\n\nconst getEventXY = e => {\n    if (e.touches && e.touches[0]) {\n        return {x: e.touches[0].clientX, y: e.touches[0].clientY};\n    } else if (e.changedTouches && e.changedTouches[0]) {\n        return {x: e.changedTouches[0].clientX, y: e.changedTouches[0].clientY};\n    }\n    return {x: e.clientX, y: e.clientY};\n};\n\nexport {\n    getEventXY\n};\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\n\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport ScrollableCanvasComponent from '../components/scrollable-canvas/scrollable-canvas.jsx';\n\nimport {clampViewBounds, pan, zoomOnFixedPoint, getWorkspaceBounds} from '../helper/view';\nimport {updateViewBounds} from '../reducers/view-bounds';\nimport {redrawSelectionBox} from '../reducers/selected-items';\n\nimport {getEventXY} from '../lib/touch-utils';\nimport bindAll from 'lodash.bindall';\n\nclass ScrollableCanvas extends React.Component {\n    static get ZOOM_INCREMENT () {\n        return 0.5;\n    }\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'handleHorizontalScrollbarMouseDown',\n            'handleHorizontalScrollbarMouseMove',\n            'handleHorizontalScrollbarMouseUp',\n            'handleVerticalScrollbarMouseDown',\n            'handleVerticalScrollbarMouseMove',\n            'handleVerticalScrollbarMouseUp',\n            'handleWheel'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.canvas) {\n            this.props.canvas.addEventListener('wheel', this.handleWheel);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (nextProps.canvas) {\n            if (this.props.canvas) {\n                this.props.canvas.removeEventListener('wheel', this.handleWheel);\n            }\n            nextProps.canvas.addEventListener('wheel', this.handleWheel);\n        }\n    }\n    handleHorizontalScrollbarMouseDown (event) {\n        this.initialMouseX = getEventXY(event).x;\n        this.initialScreenX = paper.view.matrix.tx;\n        window.addEventListener('mousemove', this.handleHorizontalScrollbarMouseMove);\n        window.addEventListener('touchmove', this.handleHorizontalScrollbarMouseMove, {passive: false});\n        window.addEventListener('mouseup', this.handleHorizontalScrollbarMouseUp);\n        window.addEventListener('touchend', this.handleHorizontalScrollbarMouseUp);\n        event.preventDefault();\n    }\n    handleHorizontalScrollbarMouseMove (event) {\n        const dx = this.initialMouseX - getEventXY(event).x;\n        paper.view.matrix.tx = this.initialScreenX + (dx * paper.view.zoom * 2);\n        clampViewBounds();\n        this.props.updateViewBounds(paper.view.matrix);\n        event.preventDefault();\n    }\n    handleHorizontalScrollbarMouseUp () {\n        window.removeEventListener('mousemove', this.handleHorizontalScrollbarMouseMove);\n        window.removeEventListener('touchmove', this.handleHorizontalScrollbarMouseMove, {passive: false});\n        window.removeEventListener('mouseup', this.handleHorizontalScrollbarMouseUp);\n        window.removeEventListener('touchend', this.handleHorizontalScrollbarMouseUp);\n        this.initialMouseX = null;\n        this.initialScreenX = null;\n        event.preventDefault();\n    }\n    handleVerticalScrollbarMouseDown (event) {\n        this.initialMouseY = getEventXY(event).y;\n        this.initialScreenY = paper.view.matrix.ty;\n        window.addEventListener('mousemove', this.handleVerticalScrollbarMouseMove);\n        window.addEventListener('touchmove', this.handleVerticalScrollbarMouseMove, {passive: false});\n        window.addEventListener('mouseup', this.handleVerticalScrollbarMouseUp);\n        window.addEventListener('touchend', this.handleVerticalScrollbarMouseUp);\n        event.preventDefault();\n    }\n    handleVerticalScrollbarMouseMove (event) {\n        const dy = this.initialMouseY - getEventXY(event).y;\n        paper.view.matrix.ty = this.initialScreenY + (dy * paper.view.zoom * 2);\n        clampViewBounds();\n        this.props.updateViewBounds(paper.view.matrix);\n        event.preventDefault();\n    }\n    handleVerticalScrollbarMouseUp (event) {\n        window.removeEventListener('mousemove', this.handleVerticalScrollbarMouseMove);\n        window.removeEventListener('touchmove', this.handleVerticalScrollbarMouseMove, {passive: false});\n        window.removeEventListener('mouseup', this.handleVerticalScrollbarMouseUp);\n        window.removeEventListener('touchend', this.handleVerticalScrollbarMouseUp);\n        this.initialMouseY = null;\n        this.initialScreenY = null;\n        event.preventDefault();\n    }\n    handleWheel (event) {\n        // Multiplier variable, so that non-pixel-deltaModes are supported. Needed for Firefox.\n        // See #529 (or LLK/scratch-blocks#1190).\n        const multiplier = event.deltaMode === 0x1 ? 15 : 1;\n        const deltaX = event.deltaX * multiplier;\n        const deltaY = event.deltaY * multiplier;\n        const canvasRect = this.props.canvas.getBoundingClientRect();\n        const offsetX = event.clientX - canvasRect.left;\n        const offsetY = event.clientY - canvasRect.top;\n        const fixedPoint = paper.view.viewToProject(\n            new paper.Point(offsetX, offsetY)\n        );\n        if (event.metaKey || event.ctrlKey) {\n            // Zoom keeping mouse location fixed\n            zoomOnFixedPoint(-deltaY / 1000, fixedPoint);\n            this.props.updateViewBounds(paper.view.matrix);\n            this.props.redrawSelectionBox(); // Selection handles need to be resized after zoom\n        } else if (event.shiftKey && event.deltaX === 0) {\n            // Scroll horizontally (based on vertical scroll delta)\n            // This is needed as for some browser/system combinations which do not set deltaX.\n            // See #156.\n            const dx = deltaY / paper.view.zoom;\n            pan(dx, 0);\n            this.props.updateViewBounds(paper.view.matrix);\n        } else {\n            const dx = deltaX / paper.view.zoom;\n            const dy = deltaY / paper.view.zoom;\n            pan(dx, dy);\n            this.props.updateViewBounds(paper.view.matrix);\n            if (paper.tool) {\n                paper.tool.view._handleMouseEvent('mousemove', event, fixedPoint);\n            }\n        }\n        event.preventDefault();\n    }\n    render () {\n        let widthPercent = 0;\n        let heightPercent = 0;\n        let topPercent = 0;\n        let leftPercent = 0;\n        if (paper.project) {\n            const bounds = getWorkspaceBounds();\n            const {x, y, width, height} = paper.view.bounds;\n            widthPercent = Math.min(100, 100 * width / bounds.width);\n            heightPercent = Math.min(100, 100 * height / bounds.height);\n            const centerX = (x + (width / 2) - bounds.x) / bounds.width;\n            const centerY = (y + (height / 2) - bounds.y) / bounds.height;\n            topPercent = Math.max(0, (100 * centerY) - (heightPercent / 2));\n            leftPercent = Math.max(0, (100 * centerX) - (widthPercent / 2));\n        }\n        return (\n            <ScrollableCanvasComponent\n                hideScrollbars={this.props.hideScrollbars}\n                horizontalScrollLengthPercent={widthPercent}\n                horizontalScrollStartPercent={leftPercent}\n                style={this.props.style}\n                verticalScrollLengthPercent={heightPercent}\n                verticalScrollStartPercent={topPercent}\n                onHorizontalScrollbarMouseDown={this.handleHorizontalScrollbarMouseDown}\n                onVerticalScrollbarMouseDown={this.handleVerticalScrollbarMouseDown}\n            >\n                {this.props.children}\n            </ScrollableCanvasComponent>\n        );\n    }\n}\n\nScrollableCanvas.propTypes = {\n    canvas: PropTypes.instanceOf(Element),\n    children: PropTypes.node.isRequired,\n    hideScrollbars: PropTypes.bool,\n    redrawSelectionBox: PropTypes.func.isRequired,\n    style: PropTypes.string,\n    updateViewBounds: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    viewBounds: state.scratchPaint.viewBounds\n});\nconst mapDispatchToProps = dispatch => ({\n    redrawSelectionBox: () => {\n        dispatch(redrawSelectionBox());\n    },\n    updateViewBounds: matrix => {\n        dispatch(updateViewBounds(matrix));\n    }\n});\n\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ScrollableCanvas);\n","import keyMirror from 'keymirror';\n\nconst GradientTypes = keyMirror({\n    SOLID: null,\n    HORIZONTAL: null,\n    VERTICAL: null,\n    RADIAL: null\n});\nexport default GradientTypes;\n","import log from '../log/log';\nimport {CHANGE_SELECTED_ITEMS} from '../reducers/selected-items';\nimport {getColorsFromSelection, MIXED} from '../helper/style-path';\nimport GradientTypes from './gradient-types';\n\n// Matches hex colors\nconst hexRegex = /^#([0-9a-f]{3}){1,2}$/i;\n\nconst isValidHexColor = color => {\n    if (!hexRegex.test(color) && color !== null && color !== MIXED) {\n        log.warn(`Invalid hex color code: ${color}`);\n        return false;\n    }\n    return true;\n};\n\nconst makeColorStyleReducer = ({\n    // Action name for changing the primary color\n    changePrimaryColorAction,\n    // Action name for changing the secondary color\n    changeSecondaryColorAction,\n    // Action name for changing the gradient type\n    changeGradientTypeAction,\n    // Action name for clearing the gradient\n    clearGradientAction,\n    // Initial color when not set\n    defaultColor,\n    // The name of the property read from getColorsFromSelection to get the primary color.\n    // e.g. `fillColor` or `strokeColor`.\n    selectionPrimaryColorKey,\n    // The name of the property read from getColorsFromSelection to get the secondary color.\n    // e.g. `fillColor2` or `strokeColor2`.\n    selectionSecondaryColorKey,\n    // The name of the property read from getColorsFromSelection to get the gradient type.\n    // e.g. `fillGradientType` or `strokeGradientType`.\n    selectionGradientTypeKey\n}) => function colorReducer (state, action) {\n    if (typeof state === 'undefined') {\n        state = {\n            primary: defaultColor,\n            secondary: null,\n            gradientType: GradientTypes.SOLID\n        };\n    }\n    switch (action.type) {\n    case changePrimaryColorAction:\n        if (!isValidHexColor(action.color)) return state;\n        return {...state, primary: action.color};\n    case changeSecondaryColorAction:\n        if (!isValidHexColor(action.color)) return state;\n        return {...state, secondary: action.color};\n    case CHANGE_SELECTED_ITEMS: {\n        // Don't change state if no selection\n        if (!action.selectedItems || !action.selectedItems.length) {\n            return state;\n        }\n        const colors = getColorsFromSelection(action.selectedItems, action.bitmapMode);\n\n        // Only set the primary color + gradient type if they exist in what getColorsFromSelection gave us.\n        // E.g. in bitmap mode, getColorsFromSelection will not return stroke color/gradient type. This allows us to\n        // preserve stroke swatch state across bitmap mode-- if getColorsFromSelection set them to null, then selecting\n        // anything in bitmap mode would overwrite the stroke state.\n        const newState = {...state};\n        if (selectionPrimaryColorKey in colors) {\n            newState.primary = colors[selectionPrimaryColorKey];\n        }\n        if (selectionGradientTypeKey in colors) {\n            newState.gradientType = colors[selectionGradientTypeKey];\n        }\n\n        // Gradient type may be solid when multiple gradient types are selected.\n        // In this case, changing the first color should not change the second color.\n        if (\n            selectionSecondaryColorKey in colors &&\n            (colors[selectionGradientTypeKey] !== GradientTypes.SOLID ||\n            colors[selectionSecondaryColorKey] === MIXED)\n        ) {\n            newState.secondary = colors[selectionSecondaryColorKey];\n        }\n        return newState;\n    }\n    case changeGradientTypeAction:\n        if (action.gradientType in GradientTypes) {\n            return {...state, gradientType: action.gradientType};\n        }\n        log.warn(`Gradient type does not exist: ${action.gradientType}`);\n        return state;\n    case clearGradientAction:\n        return {...state, secondary: null, gradientType: GradientTypes.SOLID};\n    default:\n        return state;\n    }\n};\n\nexport default makeColorStyleReducer;\n","import makeColorStyleReducer from '../lib/make-color-style-reducer';\n\nconst CHANGE_FILL_COLOR = 'scratch-paint/fill-style/CHANGE_FILL_COLOR';\nconst CHANGE_FILL_COLOR_2 = 'scratch-paint/fill-style/CHANGE_FILL_COLOR_2';\nconst CHANGE_FILL_GRADIENT_TYPE = 'scratch-paint/fill-style/CHANGE_FILL_GRADIENT_TYPE';\nconst CLEAR_FILL_GRADIENT = 'scratch-paint/fill-style/CLEAR_FILL_GRADIENT';\nconst DEFAULT_COLOR = '#9966FF';\n\nconst reducer = makeColorStyleReducer({\n    changePrimaryColorAction: CHANGE_FILL_COLOR,\n    changeSecondaryColorAction: CHANGE_FILL_COLOR_2,\n    changeGradientTypeAction: CHANGE_FILL_GRADIENT_TYPE,\n    clearGradientAction: CLEAR_FILL_GRADIENT,\n    defaultColor: DEFAULT_COLOR,\n    selectionPrimaryColorKey: 'fillColor',\n    selectionSecondaryColorKey: 'fillColor2',\n    selectionGradientTypeKey: 'fillGradientType'\n});\n\n// Action creators ==================================\nconst changeFillColor = function (fillColor) {\n    return {\n        type: CHANGE_FILL_COLOR,\n        color: fillColor\n    };\n};\n\nconst changeFillColor2 = function (fillColor) {\n    return {\n        type: CHANGE_FILL_COLOR_2,\n        color: fillColor\n    };\n};\n\nconst changeFillGradientType = function (gradientType) {\n    return {\n        type: CHANGE_FILL_GRADIENT_TYPE,\n        gradientType\n    };\n};\n\nconst clearFillGradient = function () {\n    return {\n        type: CLEAR_FILL_GRADIENT\n    };\n};\n\nexport {\n    reducer as default,\n    changeFillColor,\n    changeFillColor2,\n    changeFillGradientType,\n    clearFillGradient,\n    DEFAULT_COLOR,\n    CHANGE_FILL_GRADIENT_TYPE\n};\n","import paper from '@scratch/paper';\nimport {getSelectedLeafItems, getItems} from './selection';\nimport {isPointTextItem} from './item';\nimport {isGroup} from './group';\nimport GradientTypes from '../lib/gradient-types';\nimport {DEFAULT_COLOR} from '../reducers/fill-style';\nimport {isCompoundPathChild} from '../helper/compound-path';\nimport log from '../log/log';\n\nconst MIXED = 'scratch-paint/style-path/mixed';\n\n// Check if the item color matches the incoming color. If the item color is a gradient, we assume\n// that the incoming color never matches, since we don't support gradients yet.\nconst _colorMatch = function (itemColor, incomingColor) {\n    if (itemColor && itemColor.type === 'gradient') return false;\n    // Either both are null or both are the same color when converted to CSS.\n    return (!itemColor && !incomingColor) ||\n            (itemColor && incomingColor && itemColor.toCSS() === new paper.Color(incomingColor).toCSS());\n};\n\n// Selected items and currently active text edit items respond to color changes.\nconst _getColorStateListeners = function (textEditTargetId) {\n    const items = getSelectedLeafItems();\n    if (textEditTargetId) {\n        const matches = getItems({\n            match: item => item.id === textEditTargetId\n        });\n        if (matches.length) {\n            items.push(matches[0]);\n        }\n    }\n    return items;\n};\n\n/**\n * Transparent R, G, B values need to match the other color of the gradient\n * in order to form a smooth gradient, otherwise it fades through black. This\n * function gets the transparent color for a given color string.\n * @param {?string} colorToMatch CSS string of other color of gradient, or null for transparent\n * @return {string} CSS string for matching color of transparent\n */\nconst getColorStringForTransparent = function (colorToMatch) {\n    const color = new paper.Color(colorToMatch);\n    color.alpha = 0;\n    return color.toCSS();\n};\n\n/**\n * Generate a color that contrasts well with the passed-in color.\n * @param {string} firstColor The \"primary\" color\n * @return {string} CSS string for generated color\n */\nconst generateSecondaryColor = function (firstColor) {\n    if (firstColor === MIXED) return null;\n    const color = new paper.Color(firstColor);\n    if (!firstColor || color.alpha === 0) return DEFAULT_COLOR;\n\n    color.type = 'hsb';\n    const desaturated = color.saturation <= 0.15;\n    // If the color is desaturated or dark enough that a hue shift would be hard to see, do a brightness shift.\n    if (desaturated || color.brightness <= 0.4) {\n        // Choose the shade that contrasts the most with the given color.\n        // Use a brightness of 0.1 instead of 0 because if the brightness is 0, it's black and we lose the hue.\n        color.brightness = (color.brightness < 0.55 ? 1 : 0.1);\n    }\n    // If the color was desaturated, don't do a hue shift, as it would be hard to see anyway.\n    if (!desaturated) {\n        color.hue -= 72;\n    }\n    // The returned color will be one of three things:\n    // 1. If the color was bright and saturated (e.g. colorful), it will be that color, hue-shifted.\n    // 2. If the color was dark and saturated, it will be that color, brightened and hue-shifted.\n    // 3. If the color was not saturated, it will be that color, brightened or darkened as needed to contrast most.\n    return color.toCSS(true /* hex */);\n};\n\n/**\n * Convert params to a paper.Color gradient object\n * @param {?string} color1 CSS string, or null for transparent\n * @param {?string} color2 CSS string, or null for transparent\n * @param {GradientType} gradientType gradient type\n * @param {paper.Rectangle} bounds Bounds of the object\n * @param {?paper.Point} [radialCenter] Where the center of a radial gradient should be, if the gradient is radial.\n * Defaults to center of bounds.\n * @param {number} [minSize] The minimum width/height of the gradient object.\n * @return {paper.Color} Color object with gradient, may be null or color string if the gradient type is solid\n */\nconst createGradientObject = function (color1, color2, gradientType, bounds, radialCenter, minSize) {\n    if (gradientType === GradientTypes.SOLID) return color1;\n    if (color1 === null) {\n        color1 = getColorStringForTransparent(color2);\n    }\n    if (color2 === null) {\n        color2 = getColorStringForTransparent(color1);\n    }\n\n    // Force gradients to have a minimum length. If the gradient start and end points are the same or very close\n    // (e.g. applying a vertical gradient to a perfectly horizontal line or vice versa), the gradient will not appear.\n    if (!minSize) minSize = 1e-2;\n\n    let start;\n    let end;\n    switch (gradientType) {\n    case GradientTypes.HORIZONTAL: {\n        // clone these points so that adding/subtracting doesn't affect actual bounds\n        start = bounds.leftCenter.clone();\n        end = bounds.rightCenter.clone();\n\n        const gradientSize = Math.abs(end.x - start.x);\n        if (gradientSize < minSize) {\n            const sizeDiff = (minSize - gradientSize) / 2;\n            end.x += sizeDiff;\n            start.x -= sizeDiff;\n        }\n        break;\n    }\n    case GradientTypes.VERTICAL: {\n        // clone these points so that adding/subtracting doesn't affect actual bounds\n        start = bounds.topCenter.clone();\n        end = bounds.bottomCenter.clone();\n\n        const gradientSize = Math.abs(end.y - start.y);\n        if (gradientSize < minSize) {\n            const sizeDiff = (minSize - gradientSize) / 2;\n            end.y += sizeDiff;\n            start.y -= sizeDiff;\n        }\n        break;\n    }\n\n    case GradientTypes.RADIAL: {\n        const halfLongestDimension = Math.max(bounds.width, bounds.height) / 2;\n        start = radialCenter || bounds.center;\n        end = start.add(new paper.Point(\n            Math.max(halfLongestDimension, minSize / 2),\n            0));\n        break;\n    }\n    }\n    return {\n        gradient: {\n            stops: [color1, color2],\n            radial: gradientType === GradientTypes.RADIAL\n        },\n        origin: start,\n        destination: end\n    };\n};\n\n/**\n * Called when setting an item's color\n * @param {string} colorString color, css format, or null if completely transparent\n * @param {number} colorIndex index of color being changed\n * @param {boolean} isSolidGradient True if is solid gradient. Sometimes the item has a gradient but the color\n *     picker is set to a solid gradient. This happens when a mix of colors and gradient types is selected.\n *     When changing the color in this case, the solid gradient should override the existing gradient on the item.\n * @param {?boolean} applyToStroke True if changing the selection's stroke, false if changing its fill.\n * @param {?string} textEditTargetId paper.Item.id of text editing target, if any\n * @return {boolean} Whether the color application actually changed visibly.\n */\nconst applyColorToSelection = function (\n    colorString,\n    colorIndex,\n    isSolidGradient,\n    applyToStroke,\n    textEditTargetId\n) {\n    const items = _getColorStateListeners(textEditTargetId);\n    let changed = false;\n    for (let item of items) {\n        if (item.parent instanceof paper.CompoundPath) {\n            item = item.parent;\n        }\n\n        const itemColorProp = applyToStroke ? 'strokeColor' : 'fillColor';\n        const itemColor = item[itemColorProp];\n\n        if (isSolidGradient || !itemColor || !itemColor.gradient ||\n                !itemColor.gradient.stops.length === 2) {\n            // Applying a solid color\n            if (!_colorMatch(itemColor, colorString)) {\n                changed = true;\n                if (isPointTextItem(item) && !colorString) {\n                    // Allows transparent text to be hit\n                    item[itemColorProp] = 'rgba(0,0,0,0)';\n                } else {\n                    item[itemColorProp] = colorString;\n                }\n            }\n        } else if (!_colorMatch(itemColor.gradient.stops[colorIndex].color, colorString)) {\n            // Changing one color of an existing gradient\n            changed = true;\n            const otherIndex = colorIndex === 0 ? 1 : 0;\n            if (colorString === null) {\n                colorString = getColorStringForTransparent(itemColor.gradient.stops[otherIndex].color.toCSS());\n            }\n            const colors = [0, 0];\n            colors[colorIndex] = colorString;\n            // If the other color is transparent, its RGB values need to be adjusted for the gradient to be smooth\n            if (itemColor.gradient.stops[otherIndex].color.alpha === 0) {\n                colors[otherIndex] = getColorStringForTransparent(colorString);\n            } else {\n                colors[otherIndex] = itemColor.gradient.stops[otherIndex].color.toCSS();\n            }\n            // There seems to be a bug where setting colors on stops doesn't always update the view, so set gradient.\n            itemColor.gradient = {stops: colors, radial: itemColor.gradient.radial};\n        }\n    }\n    return changed;\n};\n\n/**\n * Called to swap gradient colors\n * @param {?boolean} applyToStroke True if changing the selection's stroke, false if changing its fill.\n * @param {?string} textEditTargetId paper.Item.id of text editing target, if any\n * @return {boolean} Whether the color application actually changed visibly.\n */\nconst swapColorsInSelection = function (applyToStroke, textEditTargetId) {\n    const items = _getColorStateListeners(textEditTargetId);\n    let changed = false;\n    for (const item of items) {\n        // If an item is a child path, do not swap colors.\n        // At some point, we'll iterate over its parent path, and we don't want to swap colors twice--\n        // that would leave us right where we started.\n        if (isCompoundPathChild(item)) continue;\n\n        const itemColor = applyToStroke ? item.strokeColor : item.fillColor;\n        if (!itemColor || !itemColor.gradient || !itemColor.gradient.stops.length === 2) {\n            // Only one color; nothing to swap\n            continue;\n        } else if (!itemColor.gradient.stops[0].color.equals(itemColor.gradient.stops[1].color)) {\n            // Changing one color of an existing gradient\n            changed = true;\n            const colors = [\n                itemColor.gradient.stops[1].color.toCSS(),\n                itemColor.gradient.stops[0].color.toCSS()\n            ];\n            // There seems to be a bug where setting colors on stops doesn't always update the view, so set gradient.\n            itemColor.gradient = {stops: colors, radial: itemColor.gradient.radial};\n        }\n    }\n    return changed;\n};\n\n/**\n * Called when setting gradient type\n * @param {GradientType} gradientType gradient type\n * @param {?boolean} applyToStroke True if changing the selection's stroke, false if changing its fill.\n * @param {?string} textEditTargetId paper.Item.id of text editing target, if any\n * @return {boolean} Whether the color application actually changed visibly.\n */\nconst applyGradientTypeToSelection = function (gradientType, applyToStroke, textEditTargetId) {\n    const items = _getColorStateListeners(textEditTargetId);\n    let changed = false;\n    for (let item of items) {\n        if (item.parent instanceof paper.CompoundPath) {\n            item = item.parent;\n        }\n\n        const itemColorProp = applyToStroke ? 'strokeColor' : 'fillColor';\n        const itemColor = item[itemColorProp];\n\n        const hasGradient = itemColor && itemColor.gradient;\n\n        let itemColor1;\n        if (itemColor === null || itemColor.alpha === 0) {\n            // Transparent\n            itemColor1 = null;\n        } else if (!hasGradient) {\n            // Solid color\n            itemColor1 = itemColor.toCSS();\n        } else if (!itemColor.gradient.stops[0] || itemColor.gradient.stops[0].color.alpha === 0) {\n            // Gradient where first color is transparent\n            itemColor1 = null;\n        } else {\n            // Gradient where first color is not transparent\n            itemColor1 = itemColor.gradient.stops[0].color.toCSS();\n        }\n\n        let itemColor2;\n        if (!hasGradient || !itemColor.gradient.stops[1]) {\n            // If item color is solid or a gradient that has no 2nd color, set the 2nd color based on the first color\n            itemColor2 = generateSecondaryColor(itemColor1);\n        } else if (itemColor.gradient.stops[1].color.alpha === 0) {\n            // Gradient has 2nd color which is transparent\n            itemColor2 = null;\n        } else {\n            // Gradient has 2nd color which is not transparent\n            itemColor2 = itemColor.gradient.stops[1].color.toCSS();\n        }\n\n        if (gradientType === GradientTypes.SOLID) {\n            if (itemColor && itemColor.gradient) {\n                changed = true;\n                item[itemColorProp] = itemColor1;\n            }\n            continue;\n        }\n\n        // If this is a stroke, we don't display it as having a gradient in the color picker\n        // if there's no stroke width. Then treat it as if it doesn't have a gradient.\n        let hasDisplayGradient = hasGradient;\n        if (applyToStroke) hasDisplayGradient = hasGradient && item.strokeWidth > 0;\n        if (!hasDisplayGradient) {\n            const noColorOriginally = !itemColor ||\n                (itemColor.gradient &&\n                itemColor.gradient.stops &&\n                itemColor.gradient.stops[0].color.alpha === 0);\n            const addingStroke = applyToStroke && item.strokeWidth === 0;\n            const hasGradientNow = itemColor1 || itemColor2;\n            if ((noColorOriginally || addingStroke) && hasGradientNow) {\n                if (applyToStroke) {\n                    // Make outline visible\n                    item.strokeWidth = 1;\n                }\n                // Make the gradient black to white\n                itemColor1 = 'black';\n                itemColor2 = 'white';\n            }\n        }\n\n        if (itemColor1 === null) {\n            itemColor1 = getColorStringForTransparent(itemColor2);\n        }\n        if (itemColor2 === null) {\n            itemColor2 = getColorStringForTransparent(itemColor1);\n        }\n\n        let gradientTypeDiffers = false;\n        // If the item's gradient type differs from the gradient type we want to apply, then we change it\n        switch (gradientType) {\n        case GradientTypes.RADIAL: {\n            const hasRadialGradient = hasDisplayGradient && itemColor.gradient.radial;\n            gradientTypeDiffers = !hasRadialGradient;\n            break;\n        }\n        case GradientTypes.HORIZONTAL: {\n            const hasHorizontalGradient = hasDisplayGradient && !itemColor.gradient.radial &&\n                Math.abs(itemColor.origin.y - itemColor.destination.y) < 1e-8;\n            gradientTypeDiffers = !hasHorizontalGradient;\n            break;\n        }\n        case GradientTypes.VERTICAL: {\n            const hasVerticalGradient = hasDisplayGradient && !itemColor.gradient.radial &&\n                Math.abs(itemColor.origin.x - itemColor.destination.x) < 1e-8;\n            gradientTypeDiffers = !hasVerticalGradient;\n            break;\n        }\n        }\n\n        if (gradientTypeDiffers) {\n            changed = true;\n            item[itemColorProp] = createGradientObject(\n                itemColor1,\n                itemColor2,\n                gradientType,\n                item.bounds,\n                null, // radialCenter\n                item.strokeWidth\n            );\n        }\n    }\n    return changed;\n};\n\n/**\n * Called when setting stroke width\n * @param {number} value New stroke width\n * @param {?string} textEditTargetId paper.Item.id of text editing target, if any\n * @return {boolean} Whether the color application actually changed visibly.\n */\nconst applyStrokeWidthToSelection = function (value, textEditTargetId) {\n    let changed = false;\n    const items = _getColorStateListeners(textEditTargetId);\n    for (let item of items) {\n        if (item.parent instanceof paper.CompoundPath) {\n            item = item.parent;\n        }\n        if (isGroup(item)) {\n            continue;\n        } else if (item.strokeWidth !== value) {\n            item.strokeWidth = value;\n            changed = true;\n        }\n    }\n    return changed;\n};\n\nconst _colorStateFromGradient = gradient => {\n    const colorState = {};\n    // Scratch only recognizes 2 color gradients\n    if (gradient.stops.length === 2) {\n        if (gradient.radial) {\n            colorState.gradientType = GradientTypes.RADIAL;\n        } else {\n            // Always use horizontal for linear gradients, since horizontal and vertical gradients\n            // are the same with rotation. We don't want to show MIXED just because anything is rotated.\n            colorState.gradientType = GradientTypes.HORIZONTAL;\n        }\n        colorState.primary = gradient.stops[0].color.alpha === 0 ?\n            null :\n            gradient.stops[0].color.toCSS();\n        colorState.secondary = gradient.stops[1].color.alpha === 0 ?\n            null :\n            gradient.stops[1].color.toCSS();\n    } else {\n        if (gradient.stops.length < 2) log.warn(`Gradient has ${gradient.stops.length} stop(s)`);\n\n        colorState.primary = MIXED;\n        colorState.secondary = MIXED;\n    }\n\n    return colorState;\n};\n\n/**\n * Get state of colors and stroke width for selection\n * @param {!Array<paper.Item>} selectedItems Selected paper items\n * @param {?boolean} bitmapMode True if the item is being selected in bitmap mode\n * @return {?object} Object of strokeColor, strokeWidth, fillColor, thickness of the selection.\n *     Gives MIXED when there are mixed values for a color, and null for transparent.\n *     Gives null when there are mixed values for stroke width.\n *     Thickness is line thickness, used in the bitmap editor\n */\nconst getColorsFromSelection = function (selectedItems, bitmapMode) {\n    // TODO: DRY out this code\n    let selectionFillColorString;\n    let selectionFillColor2String;\n    let selectionStrokeColorString;\n    let selectionStrokeColor2String;\n    let selectionStrokeWidth;\n    let selectionThickness;\n    let selectionFillGradientType;\n    let selectionStrokeGradientType;\n    let firstChild = true;\n\n    for (let item of selectedItems) {\n        if (item.parent instanceof paper.CompoundPath) {\n            // Compound path children inherit fill and stroke color from their parent.\n            item = item.parent;\n        }\n        let itemFillColorString;\n        let itemFillColor2String;\n        let itemStrokeColorString;\n        let itemStrokeColor2String;\n        let itemFillGradientType = GradientTypes.SOLID;\n        let itemStrokeGradientType = GradientTypes.SOLID;\n\n        if (!isGroup(item)) {\n            if (item.fillColor) {\n                // hack bc text items with null fill can't be detected by fill-hitTest anymore\n                if (isPointTextItem(item) && item.fillColor.alpha === 0) {\n                    itemFillColorString = null;\n                } else if (item.fillColor.type === 'gradient') {\n                    const {primary, secondary, gradientType} = _colorStateFromGradient(item.fillColor.gradient);\n                    itemFillColorString = primary;\n                    itemFillColor2String = secondary;\n                    itemFillGradientType = gradientType;\n                } else {\n                    itemFillColorString = item.fillColor.alpha === 0 ?\n                        null :\n                        item.fillColor.toCSS();\n                    itemFillColor2String = null;\n                }\n            }\n            if (item.strokeColor) {\n                if (item.strokeColor.type === 'gradient') {\n                    const {primary, secondary, gradientType} = _colorStateFromGradient(item.strokeColor.gradient);\n\n                    let strokeColorString = primary;\n                    const strokeColor2String = secondary;\n                    let strokeGradientType = gradientType;\n\n                    // If the item's stroke width is 0, pretend the stroke color is null\n                    if (!item.strokeWidth) {\n                        strokeColorString = null;\n                        // Hide the second color. This way if you choose a second color, remove\n                        // the gradient, and re-add it, your second color selection is preserved.\n                        strokeGradientType = GradientTypes.SOLID;\n                    }\n\n                    // Stroke color is fill color in bitmap\n                    if (bitmapMode) {\n                        itemFillColorString = strokeColorString;\n                        itemFillColor2String = strokeColor2String;\n                        itemFillGradientType = strokeGradientType;\n                    } else {\n                        itemStrokeColorString = strokeColorString;\n                        itemStrokeColor2String = strokeColor2String;\n                        itemStrokeGradientType = strokeGradientType;\n                    }\n                } else {\n                    const strokeColorString = item.strokeColor.alpha === 0 || !item.strokeWidth ?\n                        null :\n                        item.strokeColor.toCSS();\n\n                    // Stroke color is fill color in bitmap\n                    if (bitmapMode) {\n                        itemFillColorString = strokeColorString;\n                    } else {\n                        itemStrokeColorString = strokeColorString;\n                    }\n                }\n            } else {\n                itemStrokeColorString = null;\n                itemStrokeColor2String = null;\n            }\n            // check every style against the first of the items\n            if (firstChild) {\n                firstChild = false;\n                selectionFillColorString = itemFillColorString;\n                selectionFillColor2String = itemFillColor2String;\n                selectionStrokeColorString = itemStrokeColorString;\n                selectionStrokeColor2String = itemStrokeColor2String;\n                selectionFillGradientType = itemFillGradientType;\n                selectionStrokeGradientType = itemStrokeGradientType;\n                selectionStrokeWidth = itemStrokeColorString || itemStrokeColor2String ? item.strokeWidth : 0;\n                if (item.strokeWidth && item.data && item.data.zoomLevel) {\n                    selectionThickness = item.strokeWidth / item.data.zoomLevel;\n                }\n            }\n            if (itemFillColorString !== selectionFillColorString) {\n                selectionFillColorString = MIXED;\n            }\n            if (itemFillColor2String !== selectionFillColor2String) {\n                selectionFillColor2String = MIXED;\n            }\n            if (itemFillGradientType !== selectionFillGradientType) {\n                selectionFillGradientType = GradientTypes.SOLID;\n                selectionFillColorString = MIXED;\n                selectionFillColor2String = MIXED;\n            }\n            if (itemStrokeGradientType !== selectionStrokeGradientType) {\n                selectionStrokeGradientType = GradientTypes.SOLID;\n                selectionStrokeColorString = MIXED;\n                selectionStrokeColor2String = MIXED;\n            }\n            if (itemStrokeColorString !== selectionStrokeColorString) {\n                selectionStrokeColorString = MIXED;\n            }\n            if (itemStrokeColor2String !== selectionStrokeColor2String) {\n                selectionStrokeColor2String = MIXED;\n            }\n            const itemStrokeWidth = itemStrokeColorString || itemStrokeColor2String ? item.strokeWidth : 0;\n            if (selectionStrokeWidth !== itemStrokeWidth) {\n                selectionStrokeWidth = null;\n            }\n        }\n    }\n    // Convert selection gradient type from horizontal to vertical if first item is exactly vertical\n    // This is because up to this point, we assume all non-radial gradients are horizontal\n    // Otherwise, if there were a mix of horizontal/vertical gradient types in the selection, they would show as MIXED\n    // whereas we want them to show as horizontal (or vertical if the first item is vertical)\n    if (selectedItems && selectedItems.length) {\n        let firstItem = selectedItems[0];\n        if (firstItem.parent instanceof paper.CompoundPath) firstItem = firstItem.parent;\n\n        if (selectionFillGradientType !== GradientTypes.SOLID) {\n            // Stroke color is fill color in bitmap if fill color is missing\n            // TODO: this whole \"treat horizontal/vertical gradients specially\" logic is janky; refactor at some point\n            const firstItemColor = (bitmapMode && firstItem.strokeColor) ? firstItem.strokeColor : firstItem.fillColor;\n            const direction = firstItemColor.destination.subtract(firstItemColor.origin);\n            if (Math.abs(direction.angle) === 90) {\n                selectionFillGradientType = GradientTypes.VERTICAL;\n            }\n        }\n\n        if (selectionStrokeGradientType !== GradientTypes.SOLID) {\n            const direction = firstItem.strokeColor.destination.subtract(firstItem.strokeColor.origin);\n            if (Math.abs(direction.angle) === 90) {\n                selectionStrokeGradientType = GradientTypes.VERTICAL;\n            }\n        }\n    }\n    if (bitmapMode) {\n        return {\n            fillColor: selectionFillColorString ? selectionFillColorString : null,\n            fillColor2: selectionFillColor2String ? selectionFillColor2String : null,\n            fillGradientType: selectionFillGradientType,\n            thickness: selectionThickness\n        };\n    }\n    return {\n        fillColor: selectionFillColorString ? selectionFillColorString : null,\n        fillColor2: selectionFillColor2String ? selectionFillColor2String : null,\n        fillGradientType: selectionFillGradientType,\n        strokeColor: selectionStrokeColorString ? selectionStrokeColorString : null,\n        strokeColor2: selectionStrokeColor2String ? selectionStrokeColor2String : null,\n        strokeGradientType: selectionStrokeGradientType,\n        strokeWidth: selectionStrokeWidth || (selectionStrokeWidth === null) ? selectionStrokeWidth : 0\n    };\n};\n\nconst styleBlob = function (path, options) {\n    if (options.isEraser) {\n        path.fillColor = 'white';\n    } else if (options.fillColor) {\n        path.fillColor = options.fillColor;\n    } else {\n        // Make sure something visible is drawn\n        path.fillColor = 'black';\n    }\n};\n\nconst styleCursorPreview = function (path, options) {\n    if (options.isEraser) {\n        path.fillColor = 'white';\n        path.strokeColor = 'cornflowerblue';\n        path.strokeWidth = 1;\n    } else if (options.fillColor) {\n        path.fillColor = options.fillColor;\n    } else {\n        // Make sure something visible is drawn\n        path.fillColor = 'black';\n    }\n};\n\nconst styleShape = function (path, options) {\n    for (const colorKey of ['fillColor', 'strokeColor']) {\n        if (options[colorKey] === null) {\n            path[colorKey] = null;\n        } else if (options[colorKey].gradientType === GradientTypes.SOLID) {\n            path[colorKey] = options[colorKey].primary;\n        } else {\n            const {primary, secondary, gradientType} = options[colorKey];\n            path[colorKey] = createGradientObject(\n                primary,\n                secondary,\n                gradientType,\n                path.bounds,\n                null, // radialCenter\n                options.strokeWidth // minimum gradient size is stroke width\n            );\n        }\n    }\n    if (Object.prototype.hasOwnProperty.call(options, 'strokeWidth')) path.strokeWidth = options.strokeWidth;\n};\n\nexport {\n    applyColorToSelection,\n    applyGradientTypeToSelection,\n    applyStrokeWidthToSelection,\n    createGradientObject,\n    getColorsFromSelection,\n    generateSecondaryColor,\n    MIXED,\n    styleBlob,\n    styleShape,\n    styleCursorPreview,\n    swapColorsInSelection\n};\n","import Modes from '../lib/modes';\nimport log from '../log/log';\n\nconst CHANGE_MODE = 'scratch-paint/modes/CHANGE_MODE';\nconst initialState = Modes.SELECT;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_MODE:\n        if (action.mode in Modes) {\n            return action.mode;\n        }\n        log.warn(`Mode does not exist: ${action.mode}`);\n        /* falls through */\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeMode = function (mode) {\n    return {\n        type: CHANGE_MODE,\n        mode: mode\n    };\n};\n\nexport {\n    reducer as default,\n    changeMode\n};\n","/* DO NOT EDIT\n@todo This file is copied from GUI and should be pulled out into a shared library.\nSee #13 */\n\n/* ACTUALLY, THIS IS EDITED ;)\nTHIS WAS CHANGED ON 10/25/2017 BY @mewtaylor TO ADD HANDLING FOR DISABLED STATES.*/\n\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport styles from './button.css';\n\nconst ButtonComponent = ({\n    className,\n    highlighted,\n    onClick,\n    children,\n    ...props\n}) => {\n    const disabled = props.disabled || false;\n    if (disabled === false) {\n        // if not disabled, add `onClick()` to be applied\n        // in props. If disabled, don't add `onClick()`\n        props.onClick = onClick;\n    }\n    return (\n        <span\n            className={classNames(\n                styles.button,\n                className,\n                {\n                    [styles.modDisabled]: disabled,\n                    [styles.highlighted]: highlighted\n                }\n            )}\n            role=\"button\"\n            {...props}\n        >\n            {children}\n        </span>\n    );\n};\n\nButtonComponent.propTypes = {\n    children: PropTypes.node,\n    className: PropTypes.string,\n    disabled: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.bool\n    ]),\n    highlighted: PropTypes.bool,\n    onClick: PropTypes.func.isRequired\n};\nexport default ButtonComponent;\n","import classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {injectIntl, intlShape} from 'react-intl';\n\nimport Button from '../button/button.jsx';\n\nimport styles from './tool-select-base.css';\n\nconst ToolSelectComponent = props => (\n    <Button\n        className={\n            classNames(props.className, styles.modToolSelect, {\n                [styles.isSelected]: props.isSelected\n            })\n        }\n        disabled={props.disabled}\n        title={props.intl.formatMessage(props.imgDescriptor)}\n        onClick={props.onMouseDown}\n    >\n        <img\n            alt={props.intl.formatMessage(props.imgDescriptor)}\n            className={styles.toolSelectIcon}\n            draggable={false}\n            src={props.imgSrc}\n        />\n    </Button>\n);\n\nToolSelectComponent.propTypes = {\n    className: PropTypes.string,\n    disabled: PropTypes.bool,\n    imgDescriptor: PropTypes.shape({\n        defaultMessage: PropTypes.string,\n        description: PropTypes.string,\n        id: PropTypes.string\n    }).isRequired,\n    imgSrc: PropTypes.string.isRequired,\n    intl: intlShape.isRequired,\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default injectIntl(ToolSelectComponent);\n","import {defineMessages} from 'react-intl';\n\nconst messages = defineMessages({\n    brush: {\n        defaultMessage: 'Brush',\n        description: 'Label for the brush tool',\n        id: 'paint.brushMode.brush'\n    },\n    eraser: {\n        defaultMessage: 'Eraser',\n        description: 'Label for the eraser tool',\n        id: 'paint.eraserMode.eraser'\n    },\n    fill: {\n        defaultMessage: 'Fill',\n        description: 'Label for the fill tool',\n        id: 'paint.fillMode.fill'\n    },\n    line: {\n        defaultMessage: 'Line',\n        description: 'Label for the line tool',\n        id: 'paint.lineMode.line'\n    },\n    oval: {\n        defaultMessage: 'Circle',\n        description: 'Label for the oval-drawing tool',\n        id: 'paint.ovalMode.oval'\n    },\n    rect: {\n        defaultMessage: 'Rectangle',\n        description: 'Label for the rectangle tool',\n        id: 'paint.rectMode.rect'\n    },\n    reshape: {\n        defaultMessage: 'Reshape',\n        description: 'Label for the reshape tool, which allows changing the points in the lines of the vectors',\n        id: 'paint.reshapeMode.reshape'\n    },\n    roundedRect: {\n        defaultMessage: 'Rounded Rectangle',\n        description: 'Label for the rounded rectangle tool',\n        id: 'paint.roundedRectMode.roundedRect'\n    },\n    select: {\n        defaultMessage: 'Select',\n        description: 'Label for the select tool, which allows selecting, moving, and resizing shapes',\n        id: 'paint.selectMode.select'\n    },\n    text: {\n        defaultMessage: 'Text',\n        description: 'Label for the text tool',\n        id: 'paint.textMode.text'\n    }\n});\n\nexport default messages;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\n\nimport brushIcon from './brush.svg';\n\nconst BitBrushModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.brush}\n        imgSrc={brushIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitBrushModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitBrushModeComponent;\n","import paper from '@scratch/paper';\nimport {getRaster, getGuideLayer} from '../layer';\nimport {forEachLinePoint, getBrushMark} from '../bitmap';\n\n/**\n * Tool for drawing with the bitmap brush and eraser\n */\nclass BrushTool extends paper.Tool {\n    /**\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     * @param {boolean} isEraser True if brush should erase\n     */\n    constructor (onUpdateImage, isEraser) {\n        super();\n        this.onUpdateImage = onUpdateImage;\n        this.isEraser = isEraser;\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseUp = this.handleMouseUp;\n\n        this.colorState = null;\n        this.active = false;\n        this.lastPoint = null;\n        this.cursorPreview = null;\n    }\n    setColor (color) {\n        this.color = color;\n        this.tmpCanvas = getBrushMark(this.size, this.color, this.isEraser || !this.color);\n    }\n    setBrushSize (size) {\n        // For performance, make sure this is an integer\n        this.size = Math.max(1, ~~size);\n        this.tmpCanvas = getBrushMark(this.size, this.color, this.isEraser || !this.color);\n    }\n    // Draw a brush mark at the given point\n    draw (x, y) {\n        const roundedUpRadius = Math.ceil(this.size / 2);\n        const context = getRaster().getContext('2d');\n        if (this.isEraser || !this.color) {\n            context.globalCompositeOperation = 'destination-out';\n        }\n        getRaster().drawImage(this.tmpCanvas, new paper.Point(~~x - roundedUpRadius, ~~y - roundedUpRadius));\n        if (this.isEraser || !this.color) {\n            context.globalCompositeOperation = 'source-over';\n        }\n    }\n    updateCursorIfNeeded () {\n        if (!this.size) {\n            return;\n        }\n\n        // The cursor preview was unattached from the view by an outside process,\n        // such as changing costumes or undo.\n        if (this.cursorPreview && !this.cursorPreview.parent) {\n            this.cursorPreview = null;\n        }\n\n        if (!this.cursorPreview || !(this.lastSize === this.size && this.lastColor === this.color)) {\n            if (this.cursorPreview) {\n                this.cursorPreview.remove();\n            }\n\n            this.tmpCanvas = getBrushMark(this.size, this.color, this.isEraser || !this.color);\n            this.cursorPreview = new paper.Raster(this.tmpCanvas);\n            this.cursorPreview.guide = true;\n            this.cursorPreview.parent = getGuideLayer();\n            this.cursorPreview.data.isHelperItem = true;\n        }\n\n        this.lastSize = this.size;\n        this.lastColor = this.color;\n    }\n    handleMouseMove (event) {\n        this.updateCursorIfNeeded();\n        this.cursorPreview.position = new paper.Point(~~event.point.x, ~~event.point.y);\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        if (this.cursorPreview) {\n            this.cursorPreview.remove();\n        }\n\n        this.draw(event.point.x, event.point.y);\n        this.lastPoint = event.point;\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        forEachLinePoint(this.lastPoint, event.point, this.draw.bind(this));\n        this.lastPoint = event.point;\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        forEachLinePoint(this.lastPoint, event.point, this.draw.bind(this));\n        this.onUpdateImage();\n\n        this.lastPoint = null;\n        this.active = false;\n\n        this.updateCursorIfNeeded();\n        this.cursorPreview.position = new paper.Point(~~event.point.x, ~~event.point.y);\n    }\n    deactivateTool () {\n        this.active = false;\n        this.tmpCanvas = null;\n        if (this.cursorPreview) {\n            this.cursorPreview.remove();\n            this.cursorPreview = null;\n        }\n    }\n}\n\nexport default BrushTool;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport {MIXED} from '../helper/style-path';\n\nimport {changeFillColor, clearFillGradient, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {clearSelection} from '../helper/selection';\n\nimport BitBrushModeComponent from '../components/bit-brush-mode/bit-brush-mode.jsx';\nimport BitBrushTool from '../helper/bit-tools/brush-tool';\n\nclass BitBrushMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isBitBrushModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.color !== this.props.color) {\n            this.tool.setColor(nextProps.color);\n        }\n        if (this.tool && nextProps.bitBrushSize !== this.props.bitBrushSize) {\n            this.tool.setBrushSize(nextProps.bitBrushSize);\n        }\n\n        if (nextProps.isBitBrushModeActive && !this.props.isBitBrushModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isBitBrushModeActive && this.props.isBitBrushModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isBitBrushModeActive !== this.props.isBitBrushModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        this.props.clearGradient();\n        // Force the default brush color if fill is MIXED or transparent\n        let color = this.props.color;\n        if (!color || color === MIXED) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n            color = DEFAULT_COLOR;\n        }\n        this.tool = new BitBrushTool(\n            this.props.onUpdateImage\n        );\n        this.tool.setColor(color);\n        this.tool.setBrushSize(this.props.bitBrushSize);\n\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <BitBrushModeComponent\n                isSelected={this.props.isBitBrushModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBitBrushMode.propTypes = {\n    bitBrushSize: PropTypes.number.isRequired,\n    clearGradient: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    color: PropTypes.string,\n    handleMouseDown: PropTypes.func.isRequired,\n    isBitBrushModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    bitBrushSize: state.scratchPaint.bitBrushSize,\n    color: state.scratchPaint.color.fillColor.primary,\n    isBitBrushModeActive: state.scratchPaint.mode === Modes.BIT_BRUSH\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearGradient: () => {\n        dispatch(clearFillGradient());\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BIT_BRUSH));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BitBrushMode);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport lineIcon from './line.svg';\n\nconst BitLineComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.line}\n        imgSrc={lineIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitLineComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitLineComponent;\n","import paper from '@scratch/paper';\nimport {getRaster, createCanvas, getGuideLayer} from '../layer';\nimport {forEachLinePoint, getBrushMark} from '../bitmap';\nimport {ART_BOARD_WIDTH, ART_BOARD_HEIGHT} from '../view';\n\n/**\n * Tool for drawing lines with the bitmap brush.\n */\nclass LineTool extends paper.Tool {\n    /**\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (onUpdateImage) {\n        super();\n        this.onUpdateImage = onUpdateImage;\n        \n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseUp = this.handleMouseUp;\n\n        this.colorState = null;\n        this.active = false;\n        this.startPoint = null;\n        this.cursorPreview = null;\n        // Raster to which to draw\n        this.drawTarget = null;\n    }\n    setColor (color) {\n        this.color = color;\n        this.tmpCanvas = getBrushMark(this.size, this.color);\n    }\n    setLineSize (size) {\n        // For performance, make sure this is an integer\n        this.size = Math.max(1, ~~size);\n        this.tmpCanvas = getBrushMark(this.size, this.color);\n    }\n    // Draw a brush mark at the given point\n    draw (x, y) {\n        const roundedUpRadius = Math.ceil(this.size / 2);\n        this.drawTarget.drawImage(this.tmpCanvas, new paper.Point(~~x - roundedUpRadius, ~~y - roundedUpRadius));\n    }\n    updateCursorIfNeeded () {\n        if (!this.size) {\n            return;\n        }\n        // The cursor preview was unattached from the view by an outside process,\n        // such as changing costumes or undo.\n        if (this.cursorPreview && !this.cursorPreview.parent) {\n            this.cursorPreview = null;\n        }\n\n        if (!this.cursorPreview || !(this.lastSize === this.size && this.lastColor === this.color)) {\n            if (this.cursorPreview) {\n                this.cursorPreview.remove();\n            }\n\n            this.tmpCanvas = getBrushMark(this.size, this.color);\n            this.cursorPreview = new paper.Raster(this.tmpCanvas);\n            this.cursorPreview.guide = true;\n            this.cursorPreview.parent = getGuideLayer();\n            this.cursorPreview.data.isHelperItem = true;\n        }\n        this.lastSize = this.size;\n        this.lastColor = this.color;\n    }\n    handleMouseMove (event) {\n        this.updateCursorIfNeeded();\n        this.cursorPreview.position = new paper.Point(~~event.point.x, ~~event.point.y);\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        if (this.cursorPreview) this.cursorPreview.remove();\n\n        const tmpCanvas = createCanvas();\n        this.drawTarget = new paper.Raster(tmpCanvas);\n        this.drawTarget.parent = getGuideLayer();\n        this.drawTarget.guide = true;\n        this.drawTarget.locked = true;\n        this.drawTarget.position = getRaster().position;\n\n        this.draw(event.point.x, event.point.y);\n        this.startPoint = event.point;\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        // Clear\n        const context = this.drawTarget.canvas.getContext('2d');\n        context.clearRect(0, 0, ART_BOARD_WIDTH, ART_BOARD_HEIGHT);\n\n        forEachLinePoint(this.startPoint, event.point, this.draw.bind(this));\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n        \n        this.drawTarget.remove();\n        this.drawTarget = getRaster();\n        forEachLinePoint(this.startPoint, event.point, this.draw.bind(this));\n        this.drawTarget = null;\n        this.onUpdateImage();\n\n        this.lastPoint = null;\n        this.active = false;\n\n        this.updateCursorIfNeeded();\n        this.cursorPreview.position = new paper.Point(~~event.point.x, ~~event.point.y);\n    }\n    deactivateTool () {\n        this.active = false;\n        this.tmpCanvas = null;\n        if (this.cursorPreview) {\n            this.cursorPreview.remove();\n            this.cursorPreview = null;\n        }\n    }\n}\n\nexport default LineTool;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport {MIXED} from '../helper/style-path';\n\nimport {changeFillColor, clearFillGradient, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {clearSelection} from '../helper/selection';\n\nimport BitLineModeComponent from '../components/bit-line-mode/bit-line-mode.jsx';\nimport BitLineTool from '../helper/bit-tools/line-tool';\n\nclass BitLineMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isBitLineModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.color !== this.props.color) {\n            this.tool.setColor(nextProps.color);\n        }\n        if (this.tool && nextProps.bitBrushSize !== this.props.bitBrushSize) {\n            this.tool.setLineSize(nextProps.bitBrushSize);\n        }\n\n        if (nextProps.isBitLineModeActive && !this.props.isBitLineModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isBitLineModeActive && this.props.isBitLineModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isBitLineModeActive !== this.props.isBitLineModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        this.props.clearGradient();\n        // Force the default line color if fill is MIXED or transparent\n        let color = this.props.color;\n        if (!color || color === MIXED) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n            color = DEFAULT_COLOR;\n        }\n        this.tool = new BitLineTool(\n            this.props.onUpdateImage\n        );\n        this.tool.setColor(color);\n        this.tool.setLineSize(this.props.bitBrushSize);\n\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <BitLineModeComponent\n                isSelected={this.props.isBitLineModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBitLineMode.propTypes = {\n    bitBrushSize: PropTypes.number.isRequired,\n    clearGradient: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    color: PropTypes.string,\n    handleMouseDown: PropTypes.func.isRequired,\n    isBitLineModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    bitBrushSize: state.scratchPaint.bitBrushSize,\n    color: state.scratchPaint.color.fillColor.primary,\n    isBitLineModeActive: state.scratchPaint.mode === Modes.BIT_LINE\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearGradient: () => {\n        dispatch(clearFillGradient());\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BIT_LINE));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BitLineMode);\n","import {PropTypes} from 'prop-types';\n\nimport GradientTypes from './gradient-types';\n\nexport default PropTypes.shape({\n    primary: PropTypes.string,\n    secondary: PropTypes.string,\n    gradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired\n});\n","const Cursors = {\n    DEFAULT: 'default',\n    GRAB: 'grab',\n    GRABBING: 'grabbing',\n    NONE: 'none',\n    RESIZE_EW: 'ew-resize',\n    RESIZE_NS: 'ns-resize',\n    RESIZE_NESW: 'nesw-resize',\n    RESIZE_NWSE: 'nwse-resize'\n};\n\nexport default Cursors;\n","const ACTIVATE_EYE_DROPPER = 'scratch-paint/eye-dropper/ACTIVATE_COLOR_PICKER';\nconst DEACTIVATE_EYE_DROPPER = 'scratch-paint/eye-dropper/DEACTIVATE_COLOR_PICKER';\n\nconst initialState = {\n    active: false,\n    callback: () => {}, // this will either be `onChangeFillColor` or `onChangeOutlineColor`\n    previousTool: null // the tool that was previously active before eye dropper\n};\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case ACTIVATE_EYE_DROPPER:\n        return Object.assign(\n            {},\n            state,\n            {\n                active: true,\n                callback: action.callback,\n                previousTool: action.previousMode\n            }\n        );\n    case DEACTIVATE_EYE_DROPPER:\n        return Object.assign(\n            {},\n            state,\n            {\n                active: false,\n                callback: () => {},\n                previousTool: null\n            }\n        );\n    default:\n        return state;\n    }\n};\n\nconst activateEyeDropper = function (currentMode, callback) {\n    return {\n        type: ACTIVATE_EYE_DROPPER,\n        callback: callback,\n        previousMode: currentMode\n    };\n};\nconst deactivateEyeDropper = function () {\n    return {\n        type: DEACTIVATE_EYE_DROPPER\n    };\n};\n\nexport {\n    reducer as default,\n    activateEyeDropper,\n    deactivateEyeDropper,\n    ACTIVATE_EYE_DROPPER,\n    DEACTIVATE_EYE_DROPPER\n};\n","import log from '../log/log';\n\nimport Cursors from '../lib/cursors';\nimport {ACTIVATE_EYE_DROPPER, DEACTIVATE_EYE_DROPPER} from './eye-dropper';\n\nconst CHANGE_CURSOR = 'scratch-paint/cursor/CHANGE_CURSOR';\nconst initialState = Cursors.DEFAULT;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_CURSOR:\n        if (typeof action.cursorString === 'undefined') {\n            log.warn(`Cursor should not be set to undefined. Use 'default'.`);\n            return state;\n        } else if (!Object.values(Cursors).includes(action.cursorString)) {\n            log.warn(`Cursor should be a valid cursor string. Got: ${action.cursorString}`);\n        }\n        return action.cursorString;\n    case ACTIVATE_EYE_DROPPER:\n        return Cursors.NONE;\n    case DEACTIVATE_EYE_DROPPER:\n        return Cursors.DEFAULT;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\n/**\n * Set the mouse cursor state to the given string\n * @param {string} cursorString The CSS cursor string.\n * @return {object} Redux action to change the cursor.\n */\nconst setCursor = function (cursorString) {\n    return {\n        type: CHANGE_CURSOR,\n        cursorString: cursorString\n    };\n};\n\nexport {\n    reducer as default,\n    setCursor\n};\n","import paper from '@scratch/paper';\nimport {getItems} from '../selection';\nimport {getActionBounds} from '../view';\nimport {BitmapModes} from '../../lib/modes';\n\nconst MIN_SCALE_FACTOR = 0.0001;\n\n/**\n * Tool to handle scaling items by pulling on the handles around the edges of the bounding\n * box when in the bounding box tool.\n */\nclass ScaleTool {\n    /**\n     * @param {Mode} mode Paint editor mode\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (mode, onUpdateImage) {\n        this.isBitmap = mode in BitmapModes;\n        this.active = false;\n        this.boundsPath = null;\n        this.pivot = null;\n        this.origPivot = null;\n        this.corner = null;\n        this.origSize = null;\n        this.origCenter = null;\n        this.itemGroup = null;\n        // Lowest item above all scale items in z index\n        this.itemToInsertBelow = null;\n        this.lastPoint = null;\n        this.onUpdateImage = onUpdateImage;\n    }\n\n    /**\n     * @param {!paper.HitResult} hitResult Data about the location of the mouse click\n     * @param {!object} boundsPath Where the boundaries of the hit item are\n     * @param {!Array.<paper.Item>} selectedItems Set of selected paper.Items\n     */\n    onMouseDown (hitResult, boundsPath, selectedItems) {\n        if (this.active) return;\n        this.active = true;\n\n        const index = hitResult.item.data.index;\n        this.pivot = boundsPath.bounds[this._getOpposingRectCornerNameByIndex(index)].clone();\n        this.origPivot = boundsPath.bounds[this._getOpposingRectCornerNameByIndex(index)].clone();\n        this.corner = boundsPath.bounds[this._getRectCornerNameByIndex(index)].clone();\n        this.selectionAnchor = boundsPath.selectionAnchor;\n        this.origSize = this.corner.subtract(this.pivot);\n        this.origCenter = boundsPath.bounds.center;\n        this.isCorner = this._isCorner(index);\n        this.centered = false;\n        this.lastSx = 1;\n        this.lastSy = 1;\n        this.boundsPath = boundsPath;\n\n        // Set itemGroup\n        // get item to insert below so that scaled items stay in same z position\n        const items = getItems({\n            match: function (item) {\n                for (const scaleItem of selectedItems) {\n                    if (!scaleItem.isBelow(item)) {\n                        return false;\n                    }\n                }\n                return true;\n            }\n        });\n        if (items.length > 0) {\n            this.itemToInsertBelow = items[0];\n        }\n\n        this.itemGroup = new paper.Group(selectedItems);\n        this.itemGroup.addChild(boundsPath);\n        this.itemGroup.insertBelow(this.itemToInsertBelow);\n        this.itemGroup.data.isHelperItem = true;\n    }\n    onMouseDrag (event) {\n        if (!this.active) return;\n        const point = event.point;\n        const bounds = getActionBounds(this.isBitmap);\n        point.x = Math.max(bounds.left, Math.min(point.x, bounds.right));\n        point.y = Math.max(bounds.top, Math.min(point.y, bounds.bottom));\n\n        if (!this.lastPoint) this.lastPoint = event.lastPoint;\n        const delta = point.subtract(this.lastPoint);\n        this.lastPoint = point;\n\n        if (event.modifiers.alt) {\n            this.centered = true;\n            this.itemGroup.position = this.origCenter;\n            this.pivot = this.origCenter;\n        } else {\n            if (this.centered) {\n                // Reset position if we were just in alt\n                this.centered = false;\n                this.itemGroup.scale(1 / this.lastSx, 1 / this.lastSy, this.pivot);\n                if (this.selectionAnchor) {\n                    this.selectionAnchor.scale(this.lastSx, this.lastSy);\n                }\n                this.lastSx = 1;\n                this.lastSy = 1;\n            }\n            this.pivot = this.origPivot;\n        }\n\n        this.corner = this.corner.add(delta);\n        let size = this.corner.subtract(this.pivot);\n        if (event.modifiers.alt) {\n            size = size.multiply(2);\n        }\n        let sx = 1.0;\n        let sy = 1.0;\n        if (Math.abs(this.origSize.x) > 0.0000001) {\n            sx = size.x / this.origSize.x;\n        }\n        if (Math.abs(this.origSize.y) > 0.0000001) {\n            sy = size.y / this.origSize.y;\n        }\n\n        const signx = sx > 0 ? 1 : -1;\n        const signy = sy > 0 ? 1 : -1;\n        if (this.isCorner && !event.modifiers.shift) {\n            sx = sy = Math.max(Math.abs(sx), Math.abs(sy));\n            sx *= signx;\n            sy *= signy;\n        }\n        sx = signx * Math.max(Math.abs(sx), MIN_SCALE_FACTOR);\n        sy = signy * Math.max(Math.abs(sy), MIN_SCALE_FACTOR);\n        this.itemGroup.scale(sx / this.lastSx, sy / this.lastSy, this.pivot);\n        if (this.selectionAnchor) {\n            this.selectionAnchor.scale(this.lastSx / sx, this.lastSy / sy);\n        }\n        this.lastSx = sx;\n        this.lastSy = sy;\n    }\n    onMouseUp () {\n        if (!this.active) return;\n        this.lastPoint = null;\n\n        this.pivot = null;\n        this.origPivot = null;\n        this.corner = null;\n        this.origSize = null;\n        this.origCenter = null;\n        this.lastSx = 1;\n        this.lastSy = 1;\n        this.centered = false;\n\n        if (!this.itemGroup) {\n            return;\n        }\n        this.boundsPath.remove();\n        this.boundsPath = null;\n        \n        // mark text items as scaled (for later use on font size calc)\n        for (let i = 0; i < this.itemGroup.children.length; i++) {\n            const child = this.itemGroup.children[i];\n            if (child.data.isPGTextItem) {\n                child.data.wasScaled = true;\n            }\n        }\n\n        if (this.itemToInsertBelow) {\n            // No increment step because itemGroup.children is getting depleted\n            for (const i = 0; i < this.itemGroup.children.length;) {\n                this.itemGroup.children[i].insertBelow(this.itemToInsertBelow);\n            }\n            this.itemToInsertBelow = null;\n        } else if (this.itemGroup.layer) {\n            this.itemGroup.layer.addChildren(this.itemGroup.children);\n        }\n        this.itemGroup.remove();\n        \n        this.onUpdateImage();\n        this.active = false;\n    }\n    _getRectCornerNameByIndex (index) {\n        switch (index) {\n        case 0:\n            return 'bottomLeft';\n        case 1:\n            return 'leftCenter';\n        case 2:\n            return 'topLeft';\n        case 3:\n            return 'topCenter';\n        case 4:\n            return 'topRight';\n        case 5:\n            return 'rightCenter';\n        case 6:\n            return 'bottomRight';\n        case 7:\n            return 'bottomCenter';\n        }\n    }\n    _getOpposingRectCornerNameByIndex (index) {\n        switch (index) {\n        case 0:\n            return 'topRight';\n        case 1:\n            return 'rightCenter';\n        case 2:\n            return 'bottomRight';\n        case 3:\n            return 'bottomCenter';\n        case 4:\n            return 'bottomLeft';\n        case 5:\n            return 'leftCenter';\n        case 6:\n            return 'topLeft';\n        case 7:\n            return 'topCenter';\n        }\n    }\n    _isCorner (index) {\n        switch (index) {\n        case 0:\n        case 2:\n        case 4:\n        case 6:\n            return true;\n        default:\n            return false;\n        }\n    }\n}\n\nexport default ScaleTool;\n","import paper from '@scratch/paper';\n\n/**\n * Tool to handle rotation when dragging the rotation handle in the bounding box tool.\n */\nclass RotateTool {\n    /**\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (onUpdateImage) {\n        this.rotItems = [];\n        this.rotGroupPivot = null;\n        this.prevRot = 90;\n        this.onUpdateImage = onUpdateImage;\n    }\n\n    /**\n     * @param {!paper.HitResult} hitResult Data about the location of the mouse click\n     * @param {!object} boundsPath Where the boundaries of the hit item are\n     * @param {!Array.<paper.Item>} selectedItems Set of selected paper.Items\n     */\n    onMouseDown (hitResult, boundsPath, selectedItems) {\n        this.rotGroupPivot = boundsPath.bounds.center;\n        for (const item of selectedItems) {\n            // Rotate only root items\n            if (item.parent instanceof paper.Layer) {\n                this.rotItems.push(item);\n            }\n        }\n        this.prevRot = 90;\n    }\n    onMouseDrag (event) {\n        let rotAngle = (event.point.subtract(this.rotGroupPivot)).angle;\n        if (event.modifiers.shift) {\n            rotAngle = Math.round(rotAngle / 45) * 45;\n        }\n\n        for (let i = 0; i < this.rotItems.length; i++) {\n            const item = this.rotItems[i];\n\n            item.rotate(rotAngle - this.prevRot, this.rotGroupPivot);\n        }\n\n        this.prevRot = rotAngle;\n    }\n    onMouseUp (event) {\n        if (event.event.button > 0) return; // only first mouse button\n\n        this.rotItems.length = 0;\n        this.rotGroupPivot = null;\n        this.prevRot = 90;\n\n        this.onUpdateImage();\n    }\n}\n\nexport default RotateTool;\n","import paper from '@scratch/paper';\nimport Modes, {BitmapModes} from '../../lib/modes';\nimport {isGroup} from '../group';\nimport {isCompoundPathItem, getRootItem} from '../item';\nimport {checkPointsClose, snapDeltaToAngle} from '../math';\nimport {getActionBounds, CENTER} from '../view';\nimport {\n    clearSelection, cloneSelection, getSelectedLeafItems, getSelectedRootItems, setItemSelection\n} from '../selection';\nimport {getDragCrosshairLayer, CROSSHAIR_FULL_OPACITY} from '../layer';\n\n/** Snap to align selection center to rotation center within this distance */\nconst SNAPPING_THRESHOLD = 4;\nconst FADE_DISTANCE = 10;\n\n/**\n * Tool to handle dragging an item to reposition it in a selection mode.\n */\nclass MoveTool {\n    /**\n     * @param {Modes} mode Paint editor mode\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     * @param {?function} switchToTextTool A callback to call to switch to the text tool\n     */\n    constructor (mode, setSelectedItems, clearSelectedItems, onUpdateImage, switchToTextTool) {\n        this.mode = mode;\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.selectedItems = null;\n        this.selectionCenter = null;\n        this.onUpdateImage = onUpdateImage;\n        this.switchToTextTool = switchToTextTool;\n        this.boundsPath = null;\n        this.firstDrag = false;\n    }\n\n    /**\n     * @param {!object} hitProperties Describes the mouse event\n     * @param {!paper.HitResult} hitProperties.hitResult Data about the location of the mouse click\n     * @param {?boolean} hitProperties.clone Whether to clone on mouse down (e.g. alt key held)\n     * @param {?boolean} hitProperties.multiselect Whether to multiselect on mouse down (e.g. shift key held)\n     * @param {?boolean} hitProperties.doubleClicked True if this is the second click in a short amout of time\n     * @param {?boolean} hitProperties.subselect True if we allow selection of subgroups, false if we should\n     *     select the whole group.\n     */\n    onMouseDown (hitProperties) {\n        let item = hitProperties.hitResult.item;\n        if (!hitProperties.subselect) {\n            const root = getRootItem(hitProperties.hitResult.item);\n            item = isCompoundPathItem(root) || isGroup(root) ? root : hitProperties.hitResult.item;\n        }\n        if (item.selected) {\n            // Double click causes all points to be selected in subselect mode. If the target is text, it\n            // enters text edit.\n            if (hitProperties.doubleClicked) {\n                if (!hitProperties.multiselect) {\n                    if (this.switchToTextTool && item instanceof paper.PointText) {\n                        this.switchToTextTool();\n                        return;\n                    }\n                    clearSelection(this.clearSelectedItems);\n                }\n                this._select(item, true /* state */, hitProperties.subselect, true /* fullySelect */);\n            } else if (hitProperties.multiselect) {\n                this._select(item, false /* state */, hitProperties.subselect);\n            }\n        } else {\n            // deselect all by default if multiselect isn't on\n            if (!hitProperties.multiselect) {\n                clearSelection(this.clearSelectedItems);\n            }\n            this._select(item, true, hitProperties.subselect);\n        }\n        if (hitProperties.clone) cloneSelection(hitProperties.subselect, this.onUpdateImage);\n\n        this.selectedItems = this.mode === Modes.RESHAPE ? getSelectedLeafItems() : getSelectedRootItems();\n        if (this.selectedItems.length === 0) {\n            return;\n        }\n\n        let selectionBounds;\n        for (const selectedItem of this.selectedItems) {\n            if (selectionBounds) {\n                selectionBounds = selectionBounds.unite(selectedItem.bounds);\n            } else {\n                selectionBounds = selectedItem.bounds;\n            }\n        }\n        this.selectionCenter = selectionBounds.center;\n\n        if (this.boundsPath) {\n            this.selectedItems.push(this.boundsPath);\n        }\n\n        this.firstDrag = true;\n    }\n    setBoundsPath (boundsPath) {\n        this.boundsPath = boundsPath;\n    }\n    /**\n     * Sets the selection state of an item.\n     * @param {!paper.Item} item Item to select or deselect\n     * @param {?boolean} state True if item should be selected, false if deselected\n     * @param {?boolean} subselect True if a subset of all points in an item are allowed to be\n     *     selected, false if items must be selected all or nothing.\n     * @param {?boolean} fullySelect True if in addition to the item being selected, all of its\n     *     control points should be selected. False if the item should be selected but not its\n     *     points. Only relevant when subselect is true.\n     */\n    _select (item, state, subselect, fullySelect) {\n        if (subselect) {\n            item.selected = false;\n            if (fullySelect) {\n                item.fullySelected = state;\n            } else {\n                item.selected = state;\n            }\n        } else {\n            setItemSelection(item, state);\n        }\n        this.setSelectedItems();\n    }\n    onMouseDrag (event) {\n        const point = event.point;\n        const actionBounds = getActionBounds(this.mode in BitmapModes);\n\n        point.x = Math.max(actionBounds.left, Math.min(point.x, actionBounds.right));\n        point.y = Math.max(actionBounds.top, Math.min(point.y, actionBounds.bottom));\n\n        const dragVector = point.subtract(event.downPoint);\n        let snapVector;\n\n        // Snapping to align center. Not in reshape mode, because reshape doesn't show center crosshair\n        if (!event.modifiers.shift && this.mode !== Modes.RESHAPE) {\n            if (checkPointsClose(\n                this.selectionCenter.add(dragVector),\n                CENTER,\n                SNAPPING_THRESHOLD / paper.view.zoom /* threshold */)) {\n\n                snapVector = CENTER.subtract(this.selectionCenter);\n            }\n        }\n        if (this.selectedItems.length === 0) {\n            return;\n        }\n\n        let bounds;\n        for (const item of this.selectedItems) {\n            // add the position of the item before the drag started\n            // for later use in the snap calculation\n            if (!item.data.origPos) {\n                item.data.origPos = item.position;\n            }\n\n            if (snapVector) {\n                item.position = item.data.origPos.add(snapVector);\n            } else if (event.modifiers.shift) {\n                item.position = item.data.origPos.add(snapDeltaToAngle(dragVector, Math.PI / 4));\n            } else {\n                item.position = item.data.origPos.add(dragVector);\n            }\n\n            if (bounds) {\n                bounds = bounds.unite(item.bounds);\n            } else {\n                bounds = item.bounds;\n            }\n        }\n\n        if (this.firstDrag) {\n            // Show the center crosshair above the selected item while dragging.\n            getDragCrosshairLayer().visible = true;\n            this.firstDrag = false;\n        }\n\n        // The rotation center crosshair should be opaque over the entire selection bounding box, and fade out to\n        // totally transparent outside the selection bounding box.\n        let opacityMultiplier = 1;\n        const newCenter = this.selectionCenter.add(dragVector);\n        if ((CENTER.y < bounds.top && CENTER.x < bounds.left) ||\n            (CENTER.y > bounds.bottom && CENTER.x < bounds.left) ||\n            (CENTER.y < bounds.top && CENTER.x > bounds.right) ||\n            (CENTER.y > bounds.bottom && CENTER.x > bounds.right)) {\n\n            // rotation center is to one of the 4 corners of the selection bounding box\n            const distX = Math.max(CENTER.x - bounds.right, bounds.left - CENTER.x);\n            const distY = Math.max(CENTER.y - bounds.bottom, bounds.top - CENTER.y);\n            const dist = Math.sqrt((distX * distX) + (distY * distY));\n            opacityMultiplier =\n                Math.max(0, (1 - (dist / (FADE_DISTANCE / paper.view.zoom))));\n        } else if (CENTER.y < bounds.top || CENTER.y > bounds.bottom) {\n            // rotation center is above or below the selection bounding box\n            opacityMultiplier = Math.max(0,\n                (1 - ((Math.abs(CENTER.y - newCenter.y) - (bounds.height / 2)) / (FADE_DISTANCE / paper.view.zoom))));\n        } else if (CENTER.x < bounds.left || CENTER.x > bounds.right) {\n            // rotation center is left or right of the selection bounding box\n            opacityMultiplier = Math.max(0,\n                (1 - ((Math.abs(CENTER.x - newCenter.x) - (bounds.width / 2)) / (FADE_DISTANCE / paper.view.zoom))));\n        } // else the rotation center is within selection bounds, always show drag crosshair at full opacity\n        getDragCrosshairLayer().opacity = CROSSHAIR_FULL_OPACITY * opacityMultiplier;\n    }\n    onMouseUp () {\n        this.firstDrag = false;\n        let moved = false;\n        // resetting the items origin point for the next usage\n        for (const item of this.selectedItems) {\n            if (item.data.origPos) {\n                if (!item.position.equals(item.data.origPos)) moved = true;\n                delete item.data.origPos;\n            }\n        }\n        this.selectedItems = null;\n        this.selectionCenter = null;\n\n        if (moved) {\n            this.onUpdateImage();\n        }\n\n        // Hide the crosshair we showed earlier.\n        getDragCrosshairLayer().visible = false;\n    }\n}\n\nexport default MoveTool;\n","import paper from '@scratch/paper';\nimport keyMirror from 'keymirror';\n\nimport {getSelectedRootItems} from '../selection';\nimport {getGuideColor, removeBoundsPath, removeBoundsHandles} from '../guides';\nimport {getGuideLayer, setGuideItem} from '../layer';\n\nimport Cursors from '../../lib/cursors';\nimport ScaleTool from './scale-tool';\nimport RotateTool from './rotate-tool';\nimport MoveTool from './move-tool';\n\nconst SELECTION_ANCHOR_SIZE = 12;\n/** SVG for the rotation icon on the bounding box */\nconst ARROW_PATH = 'M19.28,1.09C19.28.28,19,0,18.2,0c-1.67,0-3.34,0-5,0-.34,0-.88.24-1,.47a1.4,1.4,' +\n    '0,0,0,.36,1.08,15.27,15.27,0,0,0,1.46,1.36A6.4,6.4,0,0,1,6.52,4,5.85,5.85,0,0,1,5.24,3,15.27,15.27,' +\n    '0,0,0,6.7,1.61,1.4,1.4,0,0,0,7.06.54C7,.3,6.44.07,6.1.06c-1.67,0-3.34,0-5,0C.28,0,0,.31,0,1.12c0,1.67,' +\n    '0,3.34,0,5a1.23,1.23,0,0,0,.49,1,1.22,1.22,0,0,0,1-.31A14.38,14.38,0,0,0,2.84,5.26l.73.62a9.45,9.45,' +\n    '0,0,0,7.34,2,9.45,9.45,0,0,0,4.82-2.05l.73-.62a14.38,14.38,0,0,0,1.29,1.51,1.22,1.22,' +\n    '0,0,0,1,.31,1.23,1.23,0,0,0,.49-1C19.31,4.43,19.29,2.76,19.28,1.09Z';\n/** Modes of the bounding box tool, which can do many things depending on how it's used. */\nconst BoundingBoxModes = keyMirror({\n    SCALE: null,\n    ROTATE: null,\n    MOVE: null\n});\n\n/**\n * Tool that handles transforming the selection and drawing a bounding box with handles.\n * On mouse down, the type of function (move, scale, rotate) is determined based on what is clicked\n * (scale handle, rotate handle, the object itself). This determines the mode of the tool, which then\n * delegates actions to the MoveTool, RotateTool or ScaleTool accordingly.\n * @param {!function} onUpdateImage A callback to call when the image visibly changes\n */\nclass BoundingBoxTool {\n    /**\n     * @param {Modes} mode Paint editor mode\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     * @param {?function} switchToTextTool A callback to call to switch to the text tool\n     */\n    constructor (mode, setSelectedItems, clearSelectedItems, setCursor, onUpdateImage, switchToTextTool) {\n        this.dispatchSetCursor = setCursor;\n        this.onUpdateImage = onUpdateImage;\n        this.mode = null;\n        this.boundsPath = null;\n        this.boundsScaleHandles = [];\n        this.boundsRotHandles = [];\n        this._modeMap = {};\n        this._modeMap[BoundingBoxModes.SCALE] = new ScaleTool(mode, onUpdateImage);\n        this._modeMap[BoundingBoxModes.ROTATE] = new RotateTool(onUpdateImage);\n        this._modeMap[BoundingBoxModes.MOVE] =\n            new MoveTool(mode, setSelectedItems, clearSelectedItems, onUpdateImage, switchToTextTool);\n        this._currentCursor = null;\n    }\n\n    /**\n     * Should be called if the selection changes to update the bounds of the bounding box.\n     * @param {?Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        if (selectedItems && selectedItems.length) {\n            this.setSelectionBounds();\n        } else {\n            this.removeBoundsPath();\n        }\n    }\n\n    /**\n     * @param {!MouseEvent} event The mouse event\n     * @param {boolean} clone Whether to clone on mouse down (e.g. alt key held)\n     * @param {boolean} multiselect Whether to multiselect on mouse down (e.g. shift key held)\n     * @param {?boolean} doubleClicked True if this is the second click in a short amout of time\n     * @param {paper.hitOptions} hitOptions The options with which to detect whether mouse down has hit\n     *     anything editable\n     * @return {boolean} True if there was a hit, false otherwise\n     */\n    onMouseDown (event, clone, multiselect, doubleClicked, hitOptions) {\n        if (event.event.button > 0) return; // only first mouse button\n        const {hitResult, mode} = this._determineMode(event, multiselect, hitOptions);\n        if (!hitResult) {\n            if (!multiselect) {\n                this.removeBoundsPath();\n            }\n            return false;\n        }\n        this.mode = mode;\n\n        const hitProperties = {\n            hitResult: hitResult,\n            clone: clone,\n            multiselect: multiselect,\n            doubleClicked: doubleClicked\n        };\n        if (this.mode === BoundingBoxModes.MOVE) {\n            this._modeMap[this.mode].onMouseDown(hitProperties);\n            this.removeBoundsHandles();\n        } else if (this.mode === BoundingBoxModes.SCALE) {\n            this._modeMap[this.mode].onMouseDown(hitResult, this.boundsPath, getSelectedRootItems());\n            this.removeBoundsHandles();\n        } else if (this.mode === BoundingBoxModes.ROTATE) {\n            this.setCursor(Cursors.GRABBING);\n            this._modeMap[this.mode].onMouseDown(hitResult, this.boundsPath, getSelectedRootItems());\n            // While transforming, don't show bounds\n            this.removeBoundsPath();\n        }\n\n        return true;\n    }\n    onMouseMove (event, hitOptions) {\n        this._updateCursor(event, hitOptions);\n    }\n    _updateCursor (event, hitOptions) {\n        const {mode, hitResult} = this._determineMode(event, false, hitOptions);\n        if (hitResult) {\n            if (mode === BoundingBoxModes.MOVE) {\n                this.setCursor(Cursors.DEFAULT);\n            } else if (mode === BoundingBoxModes.ROTATE) {\n                this.setCursor(Cursors.GRAB);\n            } else if (mode === BoundingBoxModes.SCALE) {\n                this.setSelectionBounds();\n                if (this._impreciseEqual(hitResult.item.position.x, this.boundsPath.position.x)) {\n                    this.setCursor(Cursors.RESIZE_NS);\n                } else if (this._impreciseEqual(hitResult.item.position.y, this.boundsPath.position.y)) {\n                    this.setCursor(Cursors.RESIZE_EW);\n                } else if (\n                    hitResult.item.position.equals(this.boundsPath.bounds.bottomLeft) ||\n                    hitResult.item.position.equals(this.boundsPath.bounds.topRight)\n                ) {\n                    this.setCursor(Cursors.RESIZE_NESW);\n                } else {\n                    this.setCursor(Cursors.RESIZE_NWSE);\n                }\n            }\n        } else {\n            this.setCursor(Cursors.DEFAULT);\n        }\n    }\n    _impreciseEqual (a, b) {\n        // This is the same math paper.js uses to check if two numbers are \"equal\".\n        return Math.abs(a - b) < 1e-8;\n    }\n    _determineMode (event, multiselect, hitOptions) {\n        const hitResults = paper.project.hitTestAll(event.point, hitOptions);\n\n        let mode;\n\n        // Prefer scale to trigger over rotate, and scale and rotate to trigger over other hits\n        let hitResult = hitResults[0];\n        for (let i = 0; i < hitResults.length; i++) {\n            if (hitResults[i].item.data && hitResults[i].item.data.isScaleHandle) {\n                hitResult = hitResults[i];\n                mode = BoundingBoxModes.SCALE;\n                break;\n            } else if (hitResults[i].item.data && hitResults[i].item.data.isRotHandle) {\n                hitResult = hitResults[i];\n                mode = BoundingBoxModes.ROTATE;\n            }\n        }\n        if (!mode) {\n            mode = BoundingBoxModes.MOVE;\n        }\n\n        return {mode, hitResult};\n    }\n    onMouseDrag (event) {\n        if (event.event.button > 0 || !this.mode) return; // only first mouse button\n        this._modeMap[this.mode].onMouseDrag(event);\n\n        // Set the cursor for moving a sprite once the drag has actually started (i.e. the mouse has been moved while\n        // pressed), so that the mouse doesn't \"flash\" to the grabbing cursor every time a sprite is clicked.\n        if (this.mode === BoundingBoxModes.MOVE) {\n            this.setCursor(Cursors.GRABBING);\n        }\n    }\n    onMouseUp (event, hitOptions) {\n        if (event.event.button > 0 || !this.mode) return; // only first mouse button\n        this._modeMap[this.mode].onMouseUp(event);\n\n        // After transforming, show bounds again\n        this.setSelectionBounds();\n        this.mode = null;\n        this._updateCursor(event, hitOptions);\n    }\n    setSelectionBounds () {\n        this.removeBoundsPath();\n\n        const items = getSelectedRootItems();\n        if (items.length <= 0) return;\n\n        let rect = null;\n        for (const item of items) {\n            if (item instanceof paper.Raster && item.loaded === false) {\n                item.onLoad = this.setSelectionBounds.bind(this);\n                return;\n            }\n\n            if (rect) {\n                rect = rect.unite(item.bounds);\n            } else {\n                rect = item.bounds;\n            }\n        }\n\n        if (!this.boundsPath) {\n            this.boundsPath = new paper.Group();\n            this.boundsRect = paper.Path.Rectangle(rect);\n            this.boundsRect.curves[0].divideAtTime(0.5);\n            this.boundsRect.curves[2].divideAtTime(0.5);\n            this.boundsRect.curves[4].divideAtTime(0.5);\n            this.boundsRect.curves[6].divideAtTime(0.5);\n            this.boundsPath.addChild(this.boundsRect);\n\n            const vRect = new paper.Path.Rectangle({\n                point: [-1, -6],\n                size: [2, 12],\n                radius: 1,\n                insert: false\n            });\n            const hRect = new paper.Path.Rectangle({\n                point: [-6, -1],\n                size: [12, 2],\n                radius: 1,\n                insert: false\n            });\n            const anchorIcon = vRect.unite(hRect);\n\n            this.boundsPath.addChild(anchorIcon);\n            this.boundsPath.selectionAnchor = anchorIcon;\n            this._modeMap[BoundingBoxModes.MOVE].setBoundsPath(this.boundsPath);\n        }\n        setGuideItem(this.boundsPath);\n        this.boundsPath.data.isSelectionBound = true;\n        this.boundsPath.data.isHelperItem = true;\n        this.boundsPath.fillColor = null;\n        this.boundsPath.parent = getGuideLayer();\n        this.boundsPath.strokeWidth = 1 / paper.view.zoom;\n        this.boundsPath.strokeColor = getGuideColor();\n        this.boundsPath.selectionAnchor.scale(\n            SELECTION_ANCHOR_SIZE / paper.view.zoom / this.boundsPath.selectionAnchor.bounds.width);\n        this.boundsPath.selectionAnchor.position = rect.center;\n\n        // Make a template to copy\n        const boundsScaleCircleShadow =\n            new paper.Path.Circle({\n                center: new paper.Point(0, 0),\n                radius: 5.5 / paper.view.zoom,\n                fillColor: 'black',\n                opacity: .12,\n                data: {\n                    isHelperItem: true,\n                    noSelect: true,\n                    noHover: true\n                }\n            });\n        const boundsScaleCircle =\n            new paper.Path.Circle({\n                center: new paper.Point(0, 0),\n                radius: 4 / paper.view.zoom,\n                fillColor: getGuideColor(),\n                data: {\n                    isScaleHandle: true,\n                    isHelperItem: true,\n                    noSelect: true,\n                    noHover: true\n                }\n            });\n        const boundsScaleHandle = new paper.Group([boundsScaleCircleShadow, boundsScaleCircle]);\n        boundsScaleHandle.parent = getGuideLayer();\n\n        for (let index = 0; index < this.boundsRect.segments.length; index++) {\n            const segment = this.boundsRect.segments[index];\n\n            if (index === 7) {\n                const offset = new paper.Point(0, 20);\n\n                const arrows = new paper.Path(ARROW_PATH);\n                arrows.translate(segment.point.add(offset).add(-10.5, -5));\n\n                const line = new paper.Path.Rectangle(\n                    segment.point.add(offset).subtract(1, 0),\n                    segment.point);\n\n                const rotHandle = arrows.unite(line);\n                line.remove();\n                arrows.remove();\n                rotHandle.scale(1 / paper.view.zoom, segment.point);\n                rotHandle.data = {\n                    offset: offset,\n                    isRotHandle: true,\n                    isHelperItem: true,\n                    noSelect: true,\n                    noHover: true\n                };\n                rotHandle.fillColor = getGuideColor();\n                rotHandle.parent = getGuideLayer();\n                this.boundsRotHandles[index] = rotHandle;\n            }\n\n            this.boundsScaleHandles[index] = boundsScaleHandle.clone();\n            this.boundsScaleHandles[index].position = segment.point;\n            for (const child of this.boundsScaleHandles[index].children) {\n                child.data.index = index;\n            }\n            this.boundsScaleHandles[index].data = {\n                index: index,\n                isScaleHandle: true,\n                isHelperItem: true,\n                noSelect: true,\n                noHover: true\n            };\n        }\n        // Remove the template\n        boundsScaleHandle.remove();\n    }\n    removeBoundsPath () {\n        removeBoundsPath();\n        this.boundsPath = null;\n        this.boundsRect = null;\n        this.boundsScaleHandles.length = 0;\n        this.boundsRotHandles.length = 0;\n    }\n    removeBoundsHandles () {\n        removeBoundsHandles();\n        this.boundsScaleHandles.length = 0;\n        this.boundsRotHandles.length = 0;\n    }\n    deactivateTool () {\n        this.removeBoundsPath();\n        this.setCursor(Cursors.DEFAULT);\n    }\n\n    setCursor (cursorString) {\n        if (this._currentCursor !== cursorString) {\n            this.dispatchSetCursor(cursorString);\n            this._currentCursor = cursorString;\n        }\n    }\n}\n\nexport default BoundingBoxTool;\n","import paper from '@scratch/paper';\nimport {getSelectedRootItems} from '../selection';\nimport {getActionBounds} from '../view';\nimport {BitmapModes} from '../../lib/modes';\n\nconst NUDGE_MORE_MULTIPLIER = 15;\n\n/**\n * Tool containing handlers for arrow key events for nudging the selection.\n * Note that this tool is built for selection mode, not reshape mode.\n */\nclass NudgeTool {\n    /**\n     * @param {Mode} mode Paint editor mode\n     * @param {function} boundingBoxTool to control the bounding box\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (mode, boundingBoxTool, onUpdateImage) {\n        this.boundingBoxTool = boundingBoxTool;\n        this.onUpdateImage = onUpdateImage;\n        this.boundingBoxTool.isBitmap = mode in BitmapModes;\n    }\n    onKeyDown (event) {\n        if (event.event.target instanceof HTMLInputElement) {\n            // Ignore nudge if a text input field is focused\n            return;\n        }\n\n        let nudgeAmount = 1 / paper.view.zoom;\n        if (event.modifiers.shift) nudgeAmount *= NUDGE_MORE_MULTIPLIER;\n\n        const selected = getSelectedRootItems();\n        if (selected.length === 0) return;\n        \n        // Get bounds. Don't let item bounds go out of bounds.\n        let rect;\n        for (const item of selected) {\n            if (rect) {\n                rect = rect.unite(item.bounds);\n            } else {\n                rect = item.bounds;\n            }\n        }\n        const bounds = getActionBounds(this.boundingBoxTool.isBitmap);\n        const bottom = bounds.bottom - rect.top - 1;\n        const top = bounds.top - rect.bottom + 1;\n        const left = bounds.left - rect.right + 1;\n        const right = bounds.right - rect.left - 1;\n\n        let translation;\n        if (event.key === 'up') {\n            translation = new paper.Point(0, Math.min(bottom, Math.max(-nudgeAmount, top)));\n        } else if (event.key === 'down') {\n            translation = new paper.Point(0, Math.max(top, Math.min(nudgeAmount, bottom)));\n        } else if (event.key === 'left') {\n            translation = new paper.Point(Math.min(right, Math.max(-nudgeAmount, left)), 0);\n        } else if (event.key === 'right') {\n            translation = new paper.Point(Math.max(left, Math.min(nudgeAmount, right)), 0);\n        }\n\n        if (translation) {\n            for (const item of selected) {\n                item.translate(translation);\n            }\n            this.boundingBoxTool.setSelectionBounds();\n            event.preventDefault();\n        }\n    }\n    onKeyUp (event) {\n        const selected = getSelectedRootItems();\n        if (selected.length === 0) return;\n\n        if (event.key === 'up' || event.key === 'down' || event.key === 'left' || event.key === 'right') {\n            this.onUpdateImage();\n        }\n    }\n}\n\nexport default NudgeTool;\n","import paper from '@scratch/paper';\nimport Modes from '../../lib/modes';\nimport {styleShape} from '../style-path';\nimport {commitOvalToBitmap} from '../bitmap';\nimport {getRaster} from '../layer';\nimport {clearSelection} from '../selection';\nimport {getSquareDimensions} from '../math';\nimport BoundingBoxTool from '../selection-tools/bounding-box-tool';\nimport NudgeTool from '../selection-tools/nudge-tool';\n\n/**\n * Tool for drawing ovals.\n */\nclass OvalTool extends paper.Tool {\n    static get TOLERANCE () {\n        return 2;\n    }\n    /**\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setSelectedItems, clearSelectedItems, setCursor, onUpdateImage) {\n        super();\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.onUpdateImage = onUpdateImage;\n        this.boundingBoxTool = new BoundingBoxTool(\n            Modes.BIT_OVAL,\n            setSelectedItems,\n            clearSelectedItems,\n            setCursor,\n            onUpdateImage\n        );\n        const nudgeTool = new NudgeTool(Modes.BIT_OVAL, this.boundingBoxTool, onUpdateImage);\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseUp = this.handleMouseUp;\n        this.onKeyUp = nudgeTool.onKeyUp;\n        this.onKeyDown = nudgeTool.onKeyDown;\n\n        this.oval = null;\n        this.color = null;\n        this.active = false;\n    }\n    getHitOptions () {\n        return {\n            segments: false,\n            stroke: true,\n            curves: false,\n            fill: true,\n            guide: false,\n            match: hitResult =>\n                (hitResult.item.data && (hitResult.item.data.isScaleHandle || hitResult.item.data.isRotHandle)) ||\n                hitResult.item.selected, // Allow hits on bounding box and selected only\n            tolerance: OvalTool.TOLERANCE / paper.view.zoom\n        };\n    }\n    /**\n     * Should be called if the selection changes to update the bounds of the bounding box.\n     * @param {Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        this.boundingBoxTool.onSelectionChanged(selectedItems);\n        if ((!this.oval || !this.oval.isInserted()) &&\n                selectedItems && selectedItems.length === 1 && selectedItems[0].shape === 'ellipse') {\n            // Infer that an undo occurred and get back the active oval\n            this.oval = selectedItems[0];\n            if (this.oval.data.zoomLevel !== paper.view.zoom) {\n                this.oval.strokeWidth = this.oval.strokeWidth / this.oval.data.zoomLevel * paper.view.zoom;\n                this.oval.data.zoomLevel = paper.view.zoom;\n                this.thickness = this.oval.strokeWidth;\n            }\n            this.filled = this.oval.strokeWidth === 0;\n            // We don't need to set our color from the selected oval's color because the color state reducers will\n            // do that for us every time the selection changes.\n        } else if (this.oval && this.oval.isInserted() && !this.oval.selected) {\n            // Oval got deselected\n            this.commitOval();\n        }\n    }\n    styleOval () {\n        styleShape(this.oval, {\n            fillColor: this.filled ? this.color : null,\n            strokeColor: this.filled ? null : this.color,\n            strokeWidth: this.filled ? 0 : this.thickness\n        });\n    }\n    setColor (color) {\n        this.color = color;\n        if (this.oval) this.styleOval();\n    }\n    setFilled (filled) {\n        if (this.filled === filled) return;\n        this.filled = filled;\n        if (this.oval && this.oval.isInserted()) {\n            this.styleOval();\n            this.onUpdateImage();\n        }\n    }\n    setThickness (thickness) {\n        if (this.thickness === thickness * paper.view.zoom) return;\n        this.thickness = thickness * paper.view.zoom;\n        if (this.oval && this.oval.isInserted() && !this.filled) {\n            this.oval.strokeWidth = this.thickness;\n        }\n        if (this.oval && this.oval.isInserted()) {\n            this.oval.data.zoomLevel = paper.view.zoom;\n            this.onUpdateImage();\n        }\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        if (this.boundingBoxTool.onMouseDown(\n            event, false /* clone */, false /* multiselect */, false /* doubleClicked */, this.getHitOptions())) {\n            this.isBoundingBoxMode = true;\n        } else {\n            this.isBoundingBoxMode = false;\n            clearSelection(this.clearSelectedItems);\n            this.commitOval();\n            this.oval = new paper.Shape.Ellipse({\n                point: event.downPoint,\n                size: 0,\n                strokeScaling: false\n            });\n            this.styleOval();\n            this.oval.data = {zoomLevel: paper.view.zoom};\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseDrag(event);\n            return;\n        }\n\n        const downPoint = new paper.Point(event.downPoint.x, event.downPoint.y);\n        const point = new paper.Point(event.point.x, event.point.y);\n        const squareDimensions = getSquareDimensions(event.downPoint, event.point);\n        if (event.modifiers.shift) {\n            this.oval.size = squareDimensions.size.abs();\n        } else {\n            this.oval.size = downPoint.subtract(point);\n        }\n\n        if (event.modifiers.alt) {\n            this.oval.position = downPoint;\n        } else if (event.modifiers.shift) {\n            this.oval.position = squareDimensions.position;\n        } else {\n            this.oval.position = downPoint.subtract(this.oval.size.multiply(0.5));\n        }\n        this.styleOval();\n    }\n    handleMouseMove (event) {\n        this.boundingBoxTool.onMouseMove(event, this.getHitOptions());\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseUp(event);\n            this.isBoundingBoxMode = null;\n            return;\n        }\n\n        if (this.oval) {\n            if (Math.abs(this.oval.size.width * this.oval.size.height) < OvalTool.TOLERANCE / paper.view.zoom) {\n                // Tiny oval created unintentionally?\n                this.oval.remove();\n                this.oval = null;\n            } else {\n                // Hit testing does not work correctly unless the width and height are positive\n                this.oval.size = new paper.Point(Math.abs(this.oval.size.width), Math.abs(this.oval.size.height));\n                this.oval.selected = true;\n                this.styleOval();\n                this.setSelectedItems();\n            }\n        }\n        this.active = false;\n        this.onUpdateImage();\n    }\n    commitOval () {\n        if (!this.oval || !this.oval.isInserted()) return;\n\n        commitOvalToBitmap(this.oval, getRaster());\n        this.oval.remove();\n        this.oval = null;\n    }\n    deactivateTool () {\n        this.commitOval();\n        this.boundingBoxTool.deactivateTool();\n    }\n}\n\nexport default OvalTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport ovalIcon from './oval.svg';\n\nconst BitOvalComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.oval}\n        imgSrc={ovalIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitOvalComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitOvalComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport ColorStyleProptype from '../lib/color-style-proptype';\nimport {MIXED} from '../helper/style-path';\n\nimport {changeFillColor, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {setCursor} from '../reducers/cursor';\n\nimport {clearSelection, getSelectedLeafItems} from '../helper/selection';\nimport OvalTool from '../helper/bit-tools/oval-tool';\nimport OvalModeComponent from '../components/bit-oval-mode/bit-oval-mode.jsx';\n\nclass BitOvalMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isOvalModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool) {\n            if (nextProps.color !== this.props.color) {\n                this.tool.setColor(nextProps.color);\n            }\n            if (nextProps.selectedItems !== this.props.selectedItems) {\n                this.tool.onSelectionChanged(nextProps.selectedItems);\n            }\n            if (nextProps.filled !== this.props.filled) {\n                this.tool.setFilled(nextProps.filled);\n            }\n            if (nextProps.thickness !== this.props.thickness ||\n                    nextProps.zoom !== this.props.zoom) {\n                this.tool.setThickness(nextProps.thickness);\n            }\n        }\n\n        if (nextProps.isOvalModeActive && !this.props.isOvalModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isOvalModeActive && this.props.isOvalModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isOvalModeActive !== this.props.isOvalModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        // Force the default brush color if fill is MIXED or transparent\n        const fillColorPresent = this.props.color.primary !== MIXED && this.props.color.primary !== null;\n        if (!fillColorPresent) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n        }\n        this.tool = new OvalTool(\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.setCursor,\n            this.props.onUpdateImage\n        );\n        this.tool.setColor(this.props.color);\n        this.tool.setFilled(this.props.filled);\n        this.tool.setThickness(this.props.thickness);\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <OvalModeComponent\n                isSelected={this.props.isOvalModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBitOvalMode.propTypes = {\n    clearSelectedItems: PropTypes.func.isRequired,\n    color: ColorStyleProptype,\n    filled: PropTypes.bool,\n    handleMouseDown: PropTypes.func.isRequired,\n    isOvalModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    selectedItems: PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)),\n    setCursor: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired,\n    thickness: PropTypes.number.isRequired,\n    zoom: PropTypes.number.isRequired\n};\n\nconst mapStateToProps = state => ({\n    color: state.scratchPaint.color.fillColor,\n    filled: state.scratchPaint.fillBitmapShapes,\n    isOvalModeActive: state.scratchPaint.mode === Modes.BIT_OVAL,\n    selectedItems: state.scratchPaint.selectedItems,\n    thickness: state.scratchPaint.bitBrushSize,\n    zoom: state.scratchPaint.viewBounds.scaling.x\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    setCursor: cursorString => {\n        dispatch(setCursor(cursorString));\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), true /* bitmapMode */));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BIT_OVAL));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BitOvalMode);\n","import paper from '@scratch/paper';\nimport Modes from '../../lib/modes';\nimport {styleShape} from '../../helper/style-path';\nimport {commitRectToBitmap} from '../bitmap';\nimport {getRaster} from '../layer';\nimport {clearSelection} from '../selection';\nimport {getSquareDimensions} from '../math';\nimport BoundingBoxTool from '../selection-tools/bounding-box-tool';\nimport NudgeTool from '../selection-tools/nudge-tool';\n\n/**\n * Tool for drawing rects.\n */\nclass RectTool extends paper.Tool {\n    static get TOLERANCE () {\n        return 2;\n    }\n    /**\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setSelectedItems, clearSelectedItems, setCursor, onUpdateImage) {\n        super();\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.onUpdateImage = onUpdateImage;\n        this.boundingBoxTool = new BoundingBoxTool(\n            Modes.BIT_RECT,\n            setSelectedItems,\n            clearSelectedItems,\n            setCursor,\n            onUpdateImage\n        );\n        const nudgeTool = new NudgeTool(Modes.BIT_RECT, this.boundingBoxTool, onUpdateImage);\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseUp = this.handleMouseUp;\n        this.onKeyUp = nudgeTool.onKeyUp;\n        this.onKeyDown = nudgeTool.onKeyDown;\n\n        this.rect = null;\n        this.color = null;\n        this.active = false;\n    }\n    getHitOptions () {\n        return {\n            segments: false,\n            stroke: true,\n            curves: false,\n            fill: true,\n            guide: false,\n            match: hitResult =>\n                (hitResult.item.data && (hitResult.item.data.isScaleHandle || hitResult.item.data.isRotHandle)) ||\n                hitResult.item.selected, // Allow hits on bounding box and selected only\n            tolerance: RectTool.TOLERANCE / paper.view.zoom\n        };\n    }\n    /**\n     * Should be called if the selection changes to update the bounds of the bounding box.\n     * @param {Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        this.boundingBoxTool.onSelectionChanged(selectedItems);\n        if ((!this.rect || !this.rect.isInserted()) &&\n                selectedItems && selectedItems.length === 1 && selectedItems[0].shape === 'rectangle') {\n            // Infer that an undo occurred and get back the active rect\n            this.rect = selectedItems[0];\n            if (this.rect.data.zoomLevel !== paper.view.zoom) {\n                this.rect.strokeWidth = this.rect.strokeWidth / this.rect.data.zoomLevel * paper.view.zoom;\n                this.rect.data.zoomLevel = paper.view.zoom;\n                this.thickness = this.rect.strokeWidth;\n            }\n            this.filled = this.rect.strokeWidth === 0;\n        } else if (this.rect && this.rect.isInserted() && !this.rect.selected) {\n            // Rectangle got deselected\n            this.commitRect();\n        }\n    }\n    styleRect () {\n        styleShape(this.rect, {\n            fillColor: this.filled ? this.color : null,\n            strokeColor: this.filled ? null : this.color,\n            strokeWidth: this.filled ? 0 : this.thickness\n        });\n    }\n    setColor (color) {\n        this.color = color;\n        if (this.rect) this.styleRect();\n    }\n    setFilled (filled) {\n        if (this.filled === filled) return;\n        this.filled = filled;\n        if (this.rect && this.rect.isInserted()) {\n            this.styleRect();\n            this.onUpdateImage();\n        }\n    }\n    setThickness (thickness) {\n        if (this.thickness === thickness * paper.view.zoom) return;\n        this.thickness = thickness * paper.view.zoom;\n        if (this.rect && this.rect.isInserted() && !this.filled) {\n            this.rect.strokeWidth = this.thickness;\n        }\n        if (this.rect && this.rect.isInserted()) {\n            this.rect.data.zoomLevel = paper.view.zoom;\n            this.onUpdateImage();\n        }\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        if (this.boundingBoxTool.onMouseDown(\n            event, false /* clone */, false /* multiselect */, false /* doubleClicked */, this.getHitOptions())) {\n            this.isBoundingBoxMode = true;\n        } else {\n            this.isBoundingBoxMode = false;\n            clearSelection(this.clearSelectedItems);\n            this.commitRect();\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseDrag(event);\n            return;\n        }\n\n        const dimensions = event.point.subtract(event.downPoint);\n        const baseRect = new paper.Rectangle(event.downPoint, event.point);\n        const squareDimensions = getSquareDimensions(event.downPoint, event.point);\n        if (event.modifiers.shift) {\n            baseRect.size = squareDimensions.size.abs();\n        }\n\n        if (this.rect) this.rect.remove();\n        this.rect = new paper.Shape.Rectangle(baseRect);\n        this.rect.strokeJoin = 'round';\n        this.rect.strokeScaling = false;\n        this.rect.data = {zoomLevel: paper.view.zoom};\n        this.styleRect();\n\n        if (event.modifiers.alt) {\n            this.rect.position = event.downPoint;\n        } else if (event.modifiers.shift) {\n            this.rect.position = squareDimensions.position;\n        } else {\n            this.rect.position = event.downPoint.add(dimensions.multiply(.5));\n        }\n    }\n    handleMouseMove (event) {\n        this.boundingBoxTool.onMouseMove(event, this.getHitOptions());\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseUp(event);\n            this.isBoundingBoxMode = null;\n            return;\n        }\n\n        if (this.rect) {\n            if (Math.abs(this.rect.size.width * this.rect.size.height) < RectTool.TOLERANCE / paper.view.zoom) {\n                // Tiny shape created unintentionally?\n                this.rect.remove();\n                this.rect = null;\n            } else {\n                // Hit testing does not work correctly unless the width and height are positive\n                this.rect.size = new paper.Point(Math.abs(this.rect.size.width), Math.abs(this.rect.size.height));\n                this.rect.selected = true;\n                this.styleRect();\n                this.setSelectedItems();\n            }\n        }\n        this.active = false;\n        this.onUpdateImage();\n    }\n    commitRect () {\n        if (!this.rect || !this.rect.isInserted()) return;\n\n        commitRectToBitmap(this.rect, getRaster());\n\n        this.rect.remove();\n        this.rect = null;\n    }\n    deactivateTool () {\n        this.commitRect();\n        this.boundingBoxTool.deactivateTool();\n    }\n}\n\nexport default RectTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport rectIcon from './rectangle.svg';\n\nconst BitRectComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.rect}\n        imgSrc={rectIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitRectComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitRectComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport ColorStyleProptype from '../lib/color-style-proptype';\nimport {MIXED} from '../helper/style-path';\n\nimport {changeFillColor, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {setCursor} from '../reducers/cursor';\n\nimport {clearSelection, getSelectedLeafItems} from '../helper/selection';\nimport RectTool from '../helper/bit-tools/rect-tool';\nimport RectModeComponent from '../components/bit-rect-mode/bit-rect-mode.jsx';\n\nclass BitRectMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isRectModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool) {\n            if (nextProps.color !== this.props.color) {\n                this.tool.setColor(nextProps.color);\n            }\n            if (nextProps.selectedItems !== this.props.selectedItems) {\n                this.tool.onSelectionChanged(nextProps.selectedItems);\n            }\n            if (nextProps.filled !== this.props.filled) {\n                this.tool.setFilled(nextProps.filled);\n            }\n            if (nextProps.thickness !== this.props.thickness ||\n                    nextProps.zoom !== this.props.zoom) {\n                this.tool.setThickness(nextProps.thickness);\n            }\n        }\n\n        if (nextProps.isRectModeActive && !this.props.isRectModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isRectModeActive && this.props.isRectModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isRectModeActive !== this.props.isRectModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        // Force the default brush color if fill is MIXED or transparent\n        const fillColorPresent = this.props.color.primary !== MIXED && this.props.color.primary !== null;\n        if (!fillColorPresent) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n        }\n        this.tool = new RectTool(\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.setCursor,\n            this.props.onUpdateImage\n        );\n        this.tool.setColor(this.props.color);\n        this.tool.setFilled(this.props.filled);\n        this.tool.setThickness(this.props.thickness);\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <RectModeComponent\n                isSelected={this.props.isRectModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBitRectMode.propTypes = {\n    clearSelectedItems: PropTypes.func.isRequired,\n    color: ColorStyleProptype,\n    filled: PropTypes.bool,\n    handleMouseDown: PropTypes.func.isRequired,\n    isRectModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    selectedItems: PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)),\n    setCursor: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired,\n    thickness: PropTypes.number.isRequired,\n    zoom: PropTypes.number.isRequired\n};\n\nconst mapStateToProps = state => ({\n    color: state.scratchPaint.color.fillColor,\n    filled: state.scratchPaint.fillBitmapShapes,\n    isRectModeActive: state.scratchPaint.mode === Modes.BIT_RECT,\n    selectedItems: state.scratchPaint.selectedItems,\n    thickness: state.scratchPaint.bitBrushSize,\n    zoom: state.scratchPaint.viewBounds.scaling.x\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    setCursor: cursorString => {\n        dispatch(setCursor(cursorString));\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), true /* bitmapMode */));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BIT_RECT));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BitRectMode);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport fillIcon from './fill.svg';\n\nconst BitFillComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.fill}\n        imgSrc={fillIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitFillComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitFillComponent;\n","// Gradient type shown in the fill tool. This is the last gradient type explicitly chosen by the user,\n// and isn't overwritten by changing the selection.\nimport GradientTypes from '../lib/gradient-types';\nimport log from '../log/log';\nimport {CHANGE_FILL_GRADIENT_TYPE} from './fill-style';\n\nconst initialState = null;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_FILL_GRADIENT_TYPE:\n        if (action.gradientType in GradientTypes) {\n            return action.gradientType;\n        }\n        log.warn(`Gradient type does not exist: ${action.gradientType}`);\n        /* falls through */\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\n// Use this for user-initiated gradient type selections only.\n// See reducers/fill-style.js for other ways gradient type changes.\nconst changeGradientType = function (gradientType) {\n    return {\n        type: CHANGE_FILL_GRADIENT_TYPE,\n        gradientType: gradientType\n    };\n};\n\nexport {\n    reducer as default,\n    changeGradientType\n};\n","import paper from '@scratch/paper';\nimport {floodFill, floodFillAll, getHitBounds} from '../bitmap';\nimport {createGradientObject} from '../style-path';\nimport {createCanvas, getRaster} from '../layer';\nimport GradientTypes from '../../lib/gradient-types';\n\nconst TRANSPARENT = 'rgba(0,0,0,0)';\n/**\n * Tool for drawing fills.\n */\nclass FillTool extends paper.Tool {\n    /**\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (onUpdateImage) {\n        super();\n        this.onUpdateImage = onUpdateImage;\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n\n        this.color = null;\n        this.color2 = null;\n        this.gradientType = null;\n        this.active = false;\n    }\n    setColor (color) {\n        this.color = color;\n    }\n    setColor2 (color2) {\n        this.color2 = color2;\n    }\n    setGradientType (gradientType) {\n        this.gradientType = gradientType;\n    }\n    handleMouseDown (event) {\n        this.paint(event);\n    }\n    handleMouseDrag (event) {\n        this.paint(event);\n    }\n    paint (event) {\n        const sourceContext = getRaster().getContext('2d');\n        let destContext = sourceContext;\n        let color = this.color;\n        // Paint to a mask instead of the original canvas when drawing\n        if (this.gradientType !== GradientTypes.SOLID) {\n            const tmpCanvas = createCanvas();\n            destContext = tmpCanvas.getContext('2d');\n            color = 'black';\n        } else if (!color) {\n            // Null color means transparent because that is the standard in vector\n            color = TRANSPARENT;\n        }\n        let changed = false;\n        if (event.event.shiftKey) {\n            changed = floodFillAll(event.point.x, event.point.y, color, sourceContext, destContext);\n        } else {\n            changed = floodFill(event.point.x, event.point.y, color, sourceContext, destContext);\n        }\n        if (changed && this.gradientType !== GradientTypes.SOLID) {\n            const raster = new paper.Raster({insert: false});\n            raster.canvas = destContext.canvas;\n            raster.onLoad = () => {\n                raster.position = getRaster().position;\n                // Erase what's already there\n                getRaster().getContext().globalCompositeOperation = 'destination-out';\n                getRaster().drawImage(raster.canvas, new paper.Point());\n                getRaster().getContext().globalCompositeOperation = 'source-over';\n\n                // Create the gradient to be masked\n                const hitBounds = getHitBounds(raster);\n                if (!hitBounds.area) return;\n                const gradient = new paper.Shape.Rectangle({\n                    insert: false,\n                    rectangle: {\n                        topLeft: hitBounds.topLeft,\n                        bottomRight: hitBounds.bottomRight\n                    }\n                });\n                gradient.fillColor = createGradientObject(\n                    this.color,\n                    this.color2,\n                    this.gradientType,\n                    gradient.bounds,\n                    event.point);\n                const rasterGradient = gradient.rasterize(getRaster().resolution.width, false /* insert */);\n\n                // Mask gradient\n                raster.getContext().globalCompositeOperation = 'source-in';\n                raster.drawImage(rasterGradient.canvas, rasterGradient.bounds.topLeft);\n\n                // Draw masked gradient into raster layer\n                getRaster().drawImage(raster.canvas, new paper.Point());\n                this.onUpdateImage();\n            };\n        } else if (changed) {\n            this.onUpdateImage();\n        }\n    }\n    deactivateTool () {\n    }\n}\n\nexport default FillTool;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport GradientTypes from '../lib/gradient-types';\n\nimport FillModeComponent from '../components/bit-fill-mode/bit-fill-mode.jsx';\n\nimport {changeFillColor, changeFillColor2, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {changeGradientType} from '../reducers/fill-mode-gradient-type';\nimport {clearSelection} from '../helper/selection';\nimport FillTool from '../helper/bit-tools/fill-tool';\nimport {generateSecondaryColor, MIXED} from '../helper/style-path';\n\nclass BitFillMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isFillModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool) {\n            if (nextProps.color !== this.props.color) {\n                this.tool.setColor(nextProps.color);\n            }\n            if (nextProps.color2 !== this.props.color2) {\n                this.tool.setColor2(nextProps.color2);\n            }\n            if (nextProps.fillModeGradientType !== this.props.fillModeGradientType) {\n                this.tool.setGradientType(nextProps.fillModeGradientType);\n            }\n        }\n\n        if (nextProps.isFillModeActive && !this.props.isFillModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isFillModeActive && this.props.isFillModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isFillModeActive !== this.props.isFillModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n\n        // Force the default brush color if fill is MIXED or transparent\n        let color = this.props.color;\n        if (this.props.color === MIXED) {\n            color = DEFAULT_COLOR;\n            this.props.onChangeFillColor(DEFAULT_COLOR, 0);\n        }\n        const gradientType = this.props.fillModeGradientType ?\n            this.props.fillModeGradientType : this.props.styleGradientType;\n        let color2 = this.props.color2;\n        if (gradientType !== this.props.styleGradientType) {\n            if (this.props.styleGradientType === GradientTypes.SOLID) {\n                color2 = generateSecondaryColor(color);\n                this.props.onChangeFillColor(color2, 1);\n            }\n            this.props.changeGradientType(gradientType);\n        }\n        if (this.props.color2 === MIXED) {\n            color2 = generateSecondaryColor();\n            this.props.onChangeFillColor(color2, 1);\n        }\n        this.tool = new FillTool(this.props.onUpdateImage);\n        this.tool.setColor(color);\n        this.tool.setColor2(color2);\n        this.tool.setGradientType(gradientType);\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <FillModeComponent\n                isSelected={this.props.isFillModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBitFillMode.propTypes = {\n    changeGradientType: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    color: PropTypes.string,\n    color2: PropTypes.string,\n    styleGradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,\n    fillModeGradientType: PropTypes.oneOf(Object.keys(GradientTypes)),\n    handleMouseDown: PropTypes.func.isRequired,\n    isFillModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    fillModeGradientType: state.scratchPaint.fillMode.gradientType, // Last user-selected gradient type\n    color: state.scratchPaint.color.fillColor.primary,\n    color2: state.scratchPaint.color.fillColor.secondary,\n    styleGradientType: state.scratchPaint.color.fillColor.gradientType,\n    isFillModeActive: state.scratchPaint.mode === Modes.BIT_FILL\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    changeGradientType: gradientType => {\n        dispatch(changeGradientType(gradientType));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BIT_FILL));\n    },\n    onChangeFillColor: (fillColor, index) => {\n        if (index === 0) {\n            dispatch(changeFillColor(fillColor));\n        } else if (index === 1) {\n            dispatch(changeFillColor2(fillColor));\n        }\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BitFillMode);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport messages from '../../lib/messages.js';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\n\nimport eraserIcon from './eraser.svg';\n\nconst BitEraserComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.eraser}\n        imgSrc={eraserIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitEraserComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitEraserComponent;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\n\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {clearSelection} from '../helper/selection';\n\nimport BitEraserModeComponent from '../components/bit-eraser-mode/bit-eraser-mode.jsx';\nimport BitBrushTool from '../helper/bit-tools/brush-tool';\n\nclass BitEraserMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isBitEraserModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.bitEraserSize !== this.props.bitEraserSize) {\n            this.tool.setBrushSize(nextProps.bitEraserSize);\n        }\n        \n        if (nextProps.isBitEraserModeActive && !this.props.isBitEraserModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isBitEraserModeActive && this.props.isBitEraserModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isBitEraserModeActive !== this.props.isBitEraserModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        this.tool = new BitBrushTool(\n            this.props.onUpdateImage,\n            true /* isEraser */\n        );\n        this.tool.setBrushSize(this.props.bitEraserSize);\n\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <BitEraserModeComponent\n                isSelected={this.props.isBitEraserModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBitEraserMode.propTypes = {\n    bitEraserSize: PropTypes.number.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    isBitEraserModeActive: PropTypes.bool.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    bitEraserSize: state.scratchPaint.bitEraserSize,\n    isBitEraserModeActive: state.scratchPaint.mode === Modes.BIT_ERASER\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BIT_ERASER));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BitEraserMode);\n","import paper from '@scratch/paper';\nimport {rectSelect} from '../guides';\nimport {clearSelection, processRectangularSelection} from '../selection';\nimport {getRaster} from '../layer';\nimport {ART_BOARD_WIDTH, ART_BOARD_HEIGHT} from '../view';\nimport {getHitBounds} from '../../helper/bitmap';\n\n/** Tool to handle drag selection. A dotted line box appears and everything enclosed is selected. */\nclass SelectionBoxTool {\n    /**\n     * @param {!Modes} mode Current paint editor mode\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     */\n    constructor (mode, setSelectedItems, clearSelectedItems) {\n        this.selectionRect = null;\n        this.mode = mode;\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n    }\n    /**\n     * @param {boolean} multiselect Whether to multiselect on mouse down (e.g. shift key held)\n     */\n    onMouseDown (multiselect) {\n        if (!multiselect) {\n            clearSelection(this.clearSelectedItems);\n            this.clearSelectedItems();\n        }\n    }\n    onMouseDrag (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        if (this.selectionRect) {\n            this.selectionRect.remove();\n        }\n        this.selectionRect = rectSelect(event);\n    }\n    onMouseUpVector (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        if (this.selectionRect) {\n            processRectangularSelection(event, this.selectionRect, this.mode);\n            this.selectionRect.remove();\n            this.selectionRect = null;\n            this.setSelectedItems();\n        }\n    }\n    onMouseUpBitmap (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        if (this.selectionRect) {\n            let rect = new paper.Rectangle({\n                from: new paper.Point(\n                    Math.max(0, Math.round(this.selectionRect.bounds.topLeft.x)),\n                    Math.max(0, Math.round(this.selectionRect.bounds.topLeft.y))),\n                to: new paper.Point(\n                    Math.min(ART_BOARD_WIDTH, Math.round(this.selectionRect.bounds.bottomRight.x)),\n                    Math.min(ART_BOARD_HEIGHT, Math.round(this.selectionRect.bounds.bottomRight.y)))\n            });\n\n            // Trim/tighten selection bounds inwards to only the opaque region, excluding transparent pixels\n            rect = getHitBounds(getRaster(), rect);\n\n            if (rect.area) {\n                // Pull selected raster to active layer\n                const raster = getRaster().getSubRaster(rect);\n                raster.parent = paper.project.activeLayer;\n                raster.canvas.getContext('2d').imageSmoothingEnabled = false;\n                raster.selected = true;\n                // Gather a bit of extra data so that we can avoid aliasing at edges\n                const expanded = getRaster().getSubRaster(rect.expand(4));\n                expanded.remove();\n                raster.data = {expanded: expanded};\n\n                // Clear area from raster layer\n                const context = getRaster().getContext(true /* modify */);\n                context.clearRect(rect.x, rect.y, rect.width, rect.height);\n                this.setSelectedItems();\n            }\n\n            // Remove dotted rectangle\n            this.selectionRect.remove();\n            this.selectionRect = null;\n        }\n    }\n}\n\nexport default SelectionBoxTool;\n","import paper from '@scratch/paper';\nimport Modes from '../../lib/modes';\n\nimport {getRaster} from '../layer';\nimport {commitSelectionToBitmap} from '../bitmap';\n\nimport BoundingBoxTool from '../selection-tools/bounding-box-tool';\nimport NudgeTool from '../selection-tools/nudge-tool';\nimport SelectionBoxTool from '../selection-tools/selection-box-tool';\n\n/**\n * paper.Tool that handles select mode in bitmap. This is made up of 2 subtools.\n * - The selection box tool is active when the user clicks an empty space and drags.\n *   It selects all items in the rectangle.\n * - The bounding box tool is active if the user clicks on a non-empty space. It handles\n *   reshaping the selection.\n */\nclass SelectTool extends paper.Tool {\n    /** The distance within which mouse events count as a hit against an item */\n    static get TOLERANCE () {\n        return 2;\n    }\n    /**\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setSelectedItems, clearSelectedItems, setCursor, onUpdateImage) {\n        super();\n        this.onUpdateImage = onUpdateImage;\n        this.boundingBoxTool = new BoundingBoxTool(\n            Modes.BIT_SELECT,\n            setSelectedItems,\n            clearSelectedItems,\n            setCursor,\n            onUpdateImage\n        );\n        const nudgeTool = new NudgeTool(Modes.BIT_SELECT, this.boundingBoxTool, onUpdateImage);\n        this.selectionBoxTool = new SelectionBoxTool(Modes.BIT_SELECT, setSelectedItems, clearSelectedItems);\n        this.selectionBoxMode = false;\n        this.selection = null;\n        this.active = false;\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseUp = this.handleMouseUp;\n        this.onKeyUp = nudgeTool.onKeyUp;\n        this.onKeyDown = nudgeTool.onKeyDown;\n\n        this.boundingBoxTool.setSelectionBounds();\n    }\n    /**\n     * Should be called if the selection changes to update the bounds of the bounding box.\n     * @param {Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        this.boundingBoxTool.onSelectionChanged(selectedItems);\n        if (this.selection && this.selection.parent && !this.selection.selected) {\n            // Selection got deselected\n            this.commitSelection();\n        }\n        if ((!this.selection || !this.selection.parent) &&\n                selectedItems && selectedItems.length === 1 && selectedItems[0] instanceof paper.Raster) {\n            // Track the new active selection. This may happen via undo, paste, or drag to select.\n            this.selection = selectedItems[0];\n        }\n    }\n    /**\n     * Returns the hit options to use when conducting hit tests.\n     * @return {object} See paper.Item.hitTest for definition of options\n     */\n    getHitOptions () {\n        // Tolerance needs to be scaled when the view is zoomed in in order to represent the same\n        // distance for the user to move the mouse.\n        return {\n            segments: true,\n            stroke: true,\n            curves: true,\n            fill: true,\n            guide: false,\n            tolerance: SelectTool.TOLERANCE / paper.view.zoom,\n            match: hitResult => {\n                // Don't match helper items, unless they are handles.\n                if (!hitResult.item.data || !hitResult.item.data.isHelperItem) return true;\n                return hitResult.item.data.isScaleHandle || hitResult.item.data.isRotHandle;\n            }\n        };\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        // If bounding box tool does not find an item that was hit, rasterize the old selection,\n        // then use selection box tool.\n        if (!this.boundingBoxTool\n            .onMouseDown(\n                event,\n                event.modifiers.alt,\n                event.modifiers.shift,\n                false /* doubleClicked */,\n                this.getHitOptions())) {\n            this.commitSelection();\n            this.selectionBoxMode = true;\n            this.selectionBoxTool.onMouseDown(event.modifiers.shift);\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.selectionBoxMode) {\n            this.selectionBoxTool.onMouseDrag(event);\n        } else {\n            this.boundingBoxTool.onMouseDrag(event);\n        }\n    }\n    handleMouseMove (event) {\n        this.boundingBoxTool.onMouseMove(event, this.getHitOptions());\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.selectionBoxMode) {\n            this.selectionBoxTool.onMouseUpBitmap(event);\n        } else {\n            this.boundingBoxTool.onMouseUp(event);\n        }\n        this.selectionBoxMode = false;\n        this.active = false;\n    }\n    commitSelection () {\n        if (!this.selection || !this.selection.parent) return;\n\n        commitSelectionToBitmap(this.selection, getRaster());\n        this.selection.remove();\n        this.selection = null;\n        this.onUpdateImage();\n    }\n    deactivateTool () {\n        this.commitSelection();\n        this.boundingBoxTool.deactivateTool();\n        this.boundingBoxTool = null;\n        this.selectionBoxTool = null;\n    }\n}\n\nexport default SelectTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport selectIcon from './marquee.svg';\n\nconst BitSelectComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.select}\n        imgSrc={selectIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitSelectComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitSelectComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\n\nimport {clearFillGradient} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {setCursor} from '../reducers/cursor';\n\nimport {getSelectedLeafItems} from '../helper/selection';\nimport BitSelectTool from '../helper/bit-tools/select-tool';\nimport SelectModeComponent from '../components/bit-select-mode/bit-select-mode.jsx';\n\nclass BitSelectMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isSelectModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.selectedItems !== this.props.selectedItems) {\n            this.tool.onSelectionChanged(nextProps.selectedItems);\n        }\n\n        if (nextProps.isSelectModeActive && !this.props.isSelectModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isSelectModeActive && this.props.isSelectModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isSelectModeActive !== this.props.isSelectModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        this.props.clearGradient();\n        this.tool = new BitSelectTool(\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.setCursor,\n            this.props.onUpdateImage\n        );\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <SelectModeComponent\n                isSelected={this.props.isSelectModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBitSelectMode.propTypes = {\n    clearGradient: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    isSelectModeActive: PropTypes.bool.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    selectedItems: PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)),\n    setCursor: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    isSelectModeActive: state.scratchPaint.mode === Modes.BIT_SELECT,\n    selectedItems: state.scratchPaint.selectedItems\n});\nconst mapDispatchToProps = dispatch => ({\n    clearGradient: () => {\n        dispatch(clearFillGradient());\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    setCursor: cursorType => {\n        dispatch(setCursor(cursorType));\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems()));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BIT_SELECT));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BitSelectMode);\n","import classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './button-group.css';\n\nconst ButtonGroup = props => (\n    <div className={classNames(props.className, styles.buttonGroup)}>\n        {props.children}\n    </div>\n);\n\nButtonGroup.propTypes = {\n    children: PropTypes.node.isRequired,\n    className: PropTypes.string\n};\n\nexport default ButtonGroup;\n","// Broadbrush based on http://paperjs.org/tutorials/interaction/working-with-mouse-vectors/\nimport paper from '@scratch/paper';\nimport {styleBlob} from '../../helper/style-path';\nimport log from '../../log/log';\n\n/**\n * Broad brush functions to add as listeners on the mouse. Call them when the corresponding mouse event happens\n * to get the broad brush behavior.\n *\n * Broad brush draws strokes by drawing points equidistant from the mouse event, perpendicular to the\n * direction of motion. Shortcomings are that this path can cross itself, and 180 degree turns result\n * in a flat edge.\n *\n * @param {!Tool} tool paper.js mouse object\n */\nclass BroadBrushHelper {\n    constructor () {\n        // Direction vector of the last mouse move\n        this.lastVec = null;\n        // End point of the last mouse move\n        this.lastPoint = null;\n        // The path of the brush stroke we are building\n        this.finalPath = null;\n        // Number of points of finalPath that have already been processed\n        this.smoothed = 0;\n        // Number of steps to wait before performing another amortized smooth\n        this.smoothingThreshold = 20;\n        // Mouse moves since mouse down\n        this.steps = 0;\n        // End caps round out corners and are not merged into the path until the end.\n        this.endCaps = [];\n    }\n\n    onBroadMouseDown (event, tool, options) {\n        this.steps = 0;\n        this.smoothed = 0;\n        this.lastVec = null;\n        tool.minDistance = Math.min(5, Math.max(2 / paper.view.zoom, options.brushSize / 2));\n        tool.maxDistance = options.brushSize;\n        if (event.event.button > 0) return; // only first mouse button\n\n        this.finalPath = new paper.Path.Circle({\n            center: event.point,\n            radius: options.brushSize / 2\n        });\n        styleBlob(this.finalPath, options);\n        this.lastPoint = event.point;\n    }\n\n    onBroadMouseDrag (event, tool, options) {\n        this.steps++;\n        const step = (event.delta).normalize(options.brushSize / 2);\n\n        // Add an end cap if the mouse has changed direction very quickly\n        if (this.lastVec) {\n            const angle = this.lastVec.getDirectedAngle(step);\n            if (Math.abs(angle) > 126) {\n                // This will cause us to skip simplifying this sharp angle. Running simplify on\n                // sharp angles causes the stroke to blob outwards.\n                this.simplify(1);\n                this.smoothed++;\n\n                // If the angle is large, the broad brush tends to leave behind a flat edge.\n                // This code makes a shape to fill in that flat edge with a rounded cap.\n                const circ = new paper.Path.Circle(this.lastPoint, options.brushSize / 2);\n                circ.fillColor = options.fillColor;\n                const rect = new paper.Path.Rectangle(\n                    this.lastPoint.subtract(new paper.Point(-options.brushSize / 2, 0)),\n                    this.lastPoint.subtract(new paper.Point(options.brushSize / 2, this.lastVec.length))\n                );\n                rect.fillColor = options.fillColor;\n                rect.rotate(this.lastVec.angle - 90, this.lastPoint);\n                const rect2 = new paper.Path.Rectangle(\n                    event.point.subtract(new paper.Point(-options.brushSize / 2, 0)),\n                    event.point.subtract(new paper.Point(options.brushSize / 2, event.delta.length))\n                );\n                rect2.fillColor = options.fillColor;\n                rect2.rotate(step.angle - 90, event.point);\n                this.endCaps.push(this.union(circ, this.union(rect, rect2)));\n            }\n        }\n        step.angle += 90;\n\n        // Move the first point out away from the drag so that the end of the path is rounded\n        if (this.steps === 1) {\n            // Replace circle with path\n            this.finalPath.remove();\n            this.finalPath = new paper.Path();\n            const handleVec = event.delta.normalize(options.brushSize / 2);\n            this.finalPath.add(new paper.Segment(\n                this.lastPoint.subtract(handleVec),\n                handleVec.rotate(-90),\n                handleVec.rotate(90)\n            ));\n            styleBlob(this.finalPath, options);\n            this.finalPath.insert(0, new paper.Segment(this.lastPoint.subtract(step)));\n            this.finalPath.add(new paper.Segment(this.lastPoint.add(step)));\n        }\n\n        // Update angle of the last brush step's points to match the average angle of the last mouse vector and this\n        // mouse vector (aka the vertex normal).\n        if (this.lastVec) {\n            const lastNormal = this.lastVec.normalize(options.brushSize / 2).rotate(90);\n            const averageNormal = new paper.Point(\n                lastNormal.x + step.x,\n                lastNormal.y + step.y\n            ).normalize(options.brushSize / 2);\n\n            this.finalPath.segments[0].point = this.lastPoint.subtract(averageNormal);\n            this.finalPath.segments[this.finalPath.segments.length - 1].point = this.lastPoint.add(averageNormal);\n        }\n\n        this.finalPath.add(event.point.add(step));\n        this.finalPath.insert(0, event.point.subtract(step));\n\n        if (this.finalPath.segments.length > this.smoothed + (this.smoothingThreshold * 2)) {\n            this.simplify(1);\n        }\n\n        this.lastVec = event.delta;\n        this.lastPoint = event.point;\n    }\n\n    /**\n     * Simplify the path so that it looks almost the same while trying to have a reasonable number of handles.\n     * Without this, there would be 2 handles for every mouse move, which would make the path produced basically\n     * uneditable. This version of simplify keeps track of how much of the path has already been simplified to\n     * avoid repeating work.\n     * @param {number} threshold The simplify algorithm must try to stay within this distance of the actual line.\n     *     The algorithm will be faster and able to remove more points the higher this number is.\n     *     Note that 1 is about the lowest this algorithm can do (the result is about the same when 1 is\n     *     passed in as when 0 is passed in)\n     */\n    simplify (threshold) {\n        // Length of the current path\n        const length = this.finalPath.segments.length;\n        // Number of new points added to front and end of path since last simplify\n        const newPoints = Math.floor((length - this.smoothed) / 2) + 1;\n\n        // Where to cut. Don't go past the rounded start of the line (so there's always a tempPathMid)\n        const firstCutoff = Math.min(newPoints + 1, Math.floor((length / 2)));\n        const lastCutoff = Math.max(length - 1 - newPoints, Math.floor(length / 2) + 1);\n        if (firstCutoff <= 1 || lastCutoff >= length - 1) {\n            // Entire path is simplified already\n            return;\n        }\n        // Cut the path into 3 segments: the 2 ends where the new points are, and the middle, which will be\n        // staying the same\n        const tempPath1 = new paper.Path(this.finalPath.segments.slice(1, firstCutoff));\n        const tempPathMid = new paper.Path(this.finalPath.segments.slice(firstCutoff, lastCutoff));\n        const tempPath2 = new paper.Path(this.finalPath.segments.slice(lastCutoff, length - 1));\n\n        // Run simplify on the new ends. We need to graft the old handles back onto the newly\n        // simplified paths, since simplify removes the in handle from the start of the path, and\n        // the out handle from the end of the path it's simplifying.\n        const oldPath1End = tempPath1.segments[tempPath1.segments.length - 1];\n        const oldPath2End = tempPath2.segments[0];\n        tempPath1.simplify(threshold);\n        tempPath2.simplify(threshold);\n        const newPath1End = tempPath1.segments[tempPath1.segments.length - 1];\n        const newPath2End = tempPath2.segments[0];\n        newPath1End.handleOut = oldPath1End.handleOut;\n        newPath2End.handleIn = oldPath2End.handleIn;\n\n        // Delete the old contents of finalPath and replace it with the newly simplified segments, concatenated\n        this.finalPath.removeSegments(1, this.finalPath.segments.length - 1);\n        this.finalPath.insertSegments(1, tempPath1.segments.concat(tempPathMid.segments).concat(tempPath2.segments));\n\n        // Remove temp paths\n        tempPath1.remove();\n        tempPath2.remove();\n        tempPathMid.remove();\n\n        // Update how many points have been smoothed so far so that we don't redo work when\n        // simplify is called next time.\n        this.smoothed = Math.max(2, this.finalPath.segments.length);\n    }\n\n    /**\n     * Like paper.Path.unite, but it removes the original 2 paths\n     * @param {paper.Path} path1 to merge\n     * @param {paper.Path} path2 to merge\n     * @return {paper.Path} merged path. Original paths 1 and 2 will be removed from the view.\n     */\n    union (path1, path2) {\n        const temp = path1.unite(path2);\n        path1.remove();\n        path2.remove();\n        return temp;\n    }\n\n    onBroadMouseUp (event, tool, options) {\n        // If there was only a single click, draw a circle.\n        if (this.steps === 0) {\n            this.endCaps.length = 0;\n            return this.finalPath;\n        }\n\n        let delta = this.lastVec;\n\n        // If the mouse up is at the same point as the mouse drag event then we need\n        // the second to last point to get the right direction vector for the end cap\n        if (!event.point.equals(this.lastPoint)) {\n            // The given event.delta is the difference between the mouse down coords and the mouse up coords,\n            // but we want the difference between the last mouse drag coords and the mouse up coords.\n            delta = event.point.subtract(this.lastPoint);\n            const step = delta.normalize(options.brushSize / 2);\n            step.angle += 90;\n\n            const top = event.point.add(step);\n            const bottom = event.point.subtract(step);\n            this.finalPath.add(top);\n            this.finalPath.insert(0, bottom);\n        }\n\n        // Simplify before adding end cap so cap doesn't get warped\n        this.simplify(1);\n        const handleVec = delta.normalize(options.brushSize / 2);\n        this.finalPath.add(new paper.Segment(\n            event.point.add(handleVec),\n            handleVec.rotate(90),\n            handleVec.rotate(-90)\n        ));\n        this.finalPath.closePath();\n\n        // Resolve self-crossings\n        const newPath =\n            this.finalPath\n                .resolveCrossings()\n                .reorient(true /* nonZero */, true /* clockwise */)\n                .reduce({simplify: true});\n        if (newPath !== this.finalPath) {\n            newPath.copyAttributes(this.finalPath);\n            newPath.fillColor = this.finalPath.fillColor;\n            this.finalPath.remove();\n            this.finalPath = newPath;\n        }\n\n        // Try to merge end caps\n        for (const cap of this.endCaps) {\n            const temp = this.union(this.finalPath, cap);\n            if (temp.area >= this.finalPath.area &&\n                !(temp instanceof paper.CompoundPath && !(this.finalPath instanceof paper.CompoundPath))) {\n                this.finalPath = temp;\n            } else {\n                // If the union of the two shapes is smaller than the original shape,\n                // or it caused the path to become a compound path,\n                // then there must have been a glitch with paperjs's unite function.\n                // In this case, skip merging that segment. It's not great, but it's\n                // better than losing the whole path for instance. (Unfortunately, this\n                // happens reasonably often to scribbles, and this code doesn't catch\n                // all of the failures.)\n                this.finalPath.insertAbove(temp);\n                temp.remove();\n                log.warn('Skipping a merge.');\n            }\n        }\n        this.endCaps.length = 0;\n\n        return this.finalPath;\n    }\n}\n\nexport default BroadBrushHelper;\n","import paper from '@scratch/paper';\nimport {styleBlob} from '../../helper/style-path';\n\n/**\n * Segment brush functions to add as listeners on the mouse. Call them when the corresponding mouse event happens\n * to get the broad brush behavior.\n *\n * Segment brush draws by creating a rounded rectangle for each mouse move event and merging all of\n * those shapes. Unlike the broad brush, the resulting shape will not self-intersect and when you make\n * 180 degree turns, you will get a rounded point as expected. Shortcomings include that performance is\n * worse, especially as the number of segments to join increase, and that there are problems in paper.js\n * with union on shapes with curves, so that chunks of the union tend to disappear.\n * (https://github.com/paperjs/paper.js/issues/1321)\n *\n * @param {!Tool} tool paper.js mouse object\n */\nclass SegmentBrushHelper {\n    constructor () {\n        this.lastPoint = null;\n        this.finalPath = null;\n        this.firstCircle = null;\n    }\n    onSegmentMouseDown (event, tool, options) {\n        if (event.event.button > 0) return; // only first mouse button\n\n        tool.minDistance = 2 / paper.view.zoom;\n        tool.maxDistance = options.brushSize;\n        \n        this.firstCircle = new paper.Path.Circle({\n            center: event.point,\n            radius: options.brushSize / 2\n        });\n        this.finalPath = this.firstCircle;\n        styleBlob(this.finalPath, options);\n        this.lastPoint = event.point;\n    }\n    \n    onSegmentMouseDrag (event, tool, options) {\n        if (event.event.button > 0) return; // only first mouse button\n\n        const step = (event.delta).normalize(options.brushSize / 2);\n        const handleVec = step.clone();\n        handleVec.length = options.brushSize / 2;\n        handleVec.angle += 90;\n\n        const path = new paper.Path();\n        \n        styleBlob(path, options);\n\n        // Add handles to round the end caps\n        path.add(new paper.Segment(this.lastPoint.subtract(step), handleVec.multiply(-1), handleVec));\n        step.angle += 90;\n\n        path.add(event.lastPoint.add(step));\n        path.insert(0, event.lastPoint.subtract(step));\n        path.add(event.point.add(step));\n        path.insert(0, event.point.subtract(step));\n\n        // Add end cap\n        step.angle -= 90;\n        path.add(new paper.Segment(event.point.add(step), handleVec, handleVec.multiply(-1)));\n        path.closed = true;\n        // The unite function on curved paths does not always work (sometimes deletes half the path)\n        // so we have to flatten.\n        path.flatten(Math.min(5, options.brushSize / 5));\n        \n        this.lastPoint = event.point;\n        const newPath = this.finalPath.unite(path);\n        path.remove();\n        this.finalPath.remove();\n        this.finalPath = newPath;\n    }\n\n    onSegmentMouseUp (event) {\n        if (event.event.button > 0) return; // only first mouse button\n\n        // TODO: This smoothing tends to cut off large portions of the path! Would like to eventually\n        // add back smoothing, maybe a custom implementation that only applies to a subset of the line?\n\n        // Smooth the path. Make it unclosed first because smoothing of closed\n        // paths tends to cut off the path.\n        if (this.finalPath.segments && this.finalPath.segments.length > 4) {\n            this.finalPath.closed = false;\n            this.finalPath.simplify(2);\n            this.finalPath.closed = true;\n            // Merge again with the first point, since it gets distorted when we unclose the path.\n            const temp = this.finalPath.unite(this.firstCircle);\n            this.finalPath.remove();\n            this.finalPath = temp;\n        }\n        return this.finalPath;\n    }\n}\n\nexport default SegmentBrushHelper;\n","import paper from '@scratch/paper';\nimport log from '../../log/log';\nimport BroadBrushHelper from './broad-brush-helper';\nimport SegmentBrushHelper from './segment-brush-helper';\nimport {MIXED, styleCursorPreview} from '../../helper/style-path';\nimport {clearSelection, getItems} from '../../helper/selection';\nimport {getGuideLayer, setGuideItem} from '../../helper/layer';\nimport {isCompoundPathChild} from '../compound-path';\n\n/**\n * Shared code for the brush and eraser mode. Adds functions on the paper tool object\n * to handle mouse events, which are delegated to broad-brush-helper and segment-brush-helper\n * based on the brushSize in the state.\n */\nclass Blobbiness {\n    static get BROAD () {\n        return 'broadbrush';\n    }\n    static get SEGMENT () {\n        return 'segmentbrush';\n    }\n\n    // If brush size >= threshold use segment brush, else use broadbrush\n    // Segment brush has performance issues at low threshold, but broad brush has weird corners\n    // which get more obvious the bigger it is\n    static get THRESHOLD () {\n        return 30 / paper.view.zoom;\n    }\n\n    /**\n     * @param {function} onUpdateImage call when the drawing has changed to let listeners know\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     */\n    constructor (onUpdateImage, clearSelectedItems) {\n        this.broadBrushHelper = new BroadBrushHelper();\n        this.segmentBrushHelper = new SegmentBrushHelper();\n        this.onUpdateImage = onUpdateImage;\n        this.clearSelectedItems = clearSelectedItems;\n\n        // The following are stored to check whether these have changed and the cursor preview needs to be redrawn.\n        this.strokeColor = null;\n        this.brushSize = null;\n        this.fillColor = null;\n    }\n\n    /**\n     * Set configuration options for a blob\n     * @param {!object} options Configuration\n     * @param {!number} options.brushSize Width of blob marking made by mouse\n     * @param {!boolean} options.isEraser Whether the stroke should be treated as an erase path. If false,\n     *     the stroke is an additive path.\n     * @param {?string} options.fillColor Color of the brush stroke.\n     * @param {?string} options.strokeColor Color of the brush outline.\n     * @param {?number} options.strokeWidth Width of the brush outline.\n     */\n    setOptions (options) {\n        const oldFillColor = this.options ? this.options.fillColor : 'black';\n        const oldStrokeColor = this.options ? this.options.strokeColor : null;\n        const oldStrokeWidth = this.options ? this.options.strokeWidth : null;\n        // If values are mixed, it means the color was set by a selection contained multiple values.\n        // In this case keep drawing with the previous values if any. (For stroke width, null indicates\n        // mixed, because stroke width is required to be a number)\n        this.options = {\n            ...options,\n            fillColor: options.fillColor === MIXED ? oldFillColor : options.fillColor,\n            strokeColor: options.strokeColor === MIXED ? oldStrokeColor : options.strokeColor,\n            strokeWidth: options.strokeWidth === null ? oldStrokeWidth : options.strokeWidth\n        };\n        this.resizeCursorIfNeeded();\n    }\n\n    /**\n     * Adds handlers on the mouse tool to draw blobs. Initialize with configuration options for a blob.\n     * @param {!object} options Configuration\n     * @param {!number} options.brushSize Width of blob marking made by mouse\n     * @param {!boolean} options.isEraser Whether the stroke should be treated as an erase path. If false,\n     *     the stroke is an additive path.\n     * @param {?string} options.fillColor Color of the brush stroke.\n     * @param {?string} options.strokeColor Color of the brush outline.\n     * @param {?number} options.strokeWidth Width of the brush outline.\n     */\n    activateTool (options) {\n        this.tool = new paper.Tool();\n        this.cursorPreviewLastPoint = new paper.Point(-10000, -10000);\n        this.setOptions(options);\n        this.tool.active = false;\n        this.tool.fixedDistance = 1;\n\n        const blob = this;\n        this.tool.onMouseMove = function (event) {\n            blob.resizeCursorIfNeeded(event.point);\n            styleCursorPreview(blob.cursorPreview, blob.options);\n            blob.cursorPreview.bringToFront();\n            blob.cursorPreview.position = event.point;\n        };\n\n        this.tool.onMouseDown = function (event) {\n            blob.resizeCursorIfNeeded(event.point);\n            if (event.event.button > 0) return; // only first mouse button\n            this.active = true;\n\n            if (blob.options.brushSize < Blobbiness.THRESHOLD) {\n                blob.brush = Blobbiness.BROAD;\n                blob.broadBrushHelper.onBroadMouseDown(event, blob.tool, blob.options);\n            } else {\n                blob.brush = Blobbiness.SEGMENT;\n                blob.segmentBrushHelper.onSegmentMouseDown(event, blob.tool, blob.options);\n            }\n            blob.cursorPreview.bringToFront();\n            blob.cursorPreview.position = event.point;\n        };\n\n        this.tool.onMouseDrag = function (event) {\n            if (event.event.button > 0 || !this.active) return; // only first mouse button\n            if (blob.brush === Blobbiness.BROAD) {\n                blob.broadBrushHelper.onBroadMouseDrag(event, blob.tool, blob.options);\n            } else if (blob.brush === Blobbiness.SEGMENT) {\n                blob.segmentBrushHelper.onSegmentMouseDrag(event, blob.tool, blob.options);\n            } else {\n                log.warn(`Brush type does not exist: ${blob.brush}`);\n            }\n\n            blob.cursorPreview.bringToFront();\n            blob.cursorPreview.position = event.point;\n        };\n\n        this.tool.onMouseUp = function (event) {\n            if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n            let lastPath;\n            if (blob.brush === Blobbiness.BROAD) {\n                lastPath = blob.broadBrushHelper.onBroadMouseUp(event, blob.tool, blob.options);\n            } else if (blob.brush === Blobbiness.SEGMENT) {\n                lastPath = blob.segmentBrushHelper.onSegmentMouseUp(event, blob.tool, blob.options);\n            } else {\n                log.warn(`Brush type does not exist: ${blob.brush}`);\n            }\n\n            if (blob.options.isEraser) {\n                blob.mergeEraser(lastPath);\n            } else {\n                blob.mergeBrush(lastPath);\n            }\n\n            // Remove cursor preview during snapshot, then bring it back\n            blob.cursorPreview.remove();\n            blob.onUpdateImage();\n            blob.cursorPreview.parent = getGuideLayer();\n\n            // Reset\n            blob.brush = null;\n            this.fixedDistance = 1;\n            this.active = false;\n        };\n        this.tool.activate();\n    }\n\n    resizeCursorIfNeeded (point) {\n        if (!this.options) {\n            return;\n        }\n        // The cursor preview was unattached from the view by an outside process,\n        // such as changing costumes or undo.\n        if (this.cursorPreview && !this.cursorPreview.parent) {\n            this.cursorPreview = null;\n        }\n        if (this.cursorPreview &&\n                this.brushSize === this.options.brushSize &&\n                this.fillColor === this.options.fillColor &&\n                this.strokeColor === this.options.strokeColor &&\n                this.cursorPreviewLastPoint.equals(point)) {\n            return;\n        }\n        if (typeof point !== 'undefined') {\n            this.cursorPreviewLastPoint = point;\n        }\n\n        if (!this.cursorPreview) {\n            this.cursorPreview = new paper.Shape.Ellipse({\n                point: this.cursorPreviewLastPoint,\n                size: this.options.brushSize / 2\n            });\n            this.cursorPreview.parent = getGuideLayer();\n            this.cursorPreview.data.isHelperItem = true;\n            setGuideItem(this.cursorPreview);\n        }\n        this.cursorPreview.position = this.cursorPreviewLastPoint;\n        this.cursorPreview.radius = this.options.brushSize / 2;\n        this.brushSize = this.options.brushSize;\n        this.fillColor = this.options.fillColor;\n        this.strokeColor = this.options.strokeColor;\n        styleCursorPreview(this.cursorPreview, this.options);\n    }\n\n    mergeBrush (lastPath) {\n        const blob = this;\n\n        // Get all path items to merge with\n        const paths = getItems({\n            match: function (item) {\n                return blob.isMergeable(lastPath, item) &&\n                    item.parent instanceof paper.Layer; // don't merge with nested in group\n            }\n        });\n\n        let mergedPath = lastPath;\n        let i;\n        // Move down z order to first overlapping item\n        for (i = paths.length - 1; i >= 0 && !this.touches(paths[i], lastPath); i--) {\n            continue;\n        }\n        let mergedPathIndex = i;\n        for (; i >= 0; i--) {\n            if (!this.touches(paths[i], lastPath)) {\n                continue;\n            }\n            if (!paths[i].getFillColor()) {\n                // Ignore for merge. Paths without fill need to be in paths though,\n                // since they can visibly change if z order changes\n            } else if (this.colorMatch(paths[i], lastPath)) {\n                // Make sure the new shape isn't overlapped by anything that would\n                // visibly change if we change its z order\n                for (let j = mergedPathIndex; j > i; j--) {\n                    if (this.touches(paths[j], paths[i])) {\n                        continue;\n                    }\n                }\n                // Merge same fill color\n                const tempPath = mergedPath.unite(paths[i]);\n                tempPath.strokeColor = paths[i].strokeColor;\n                tempPath.strokeWidth = paths[i].strokeWidth;\n                if (mergedPath === lastPath) {\n                    tempPath.insertAbove(paths[i]); // First intersected path determines z position of the new path\n                } else {\n                    tempPath.insertAbove(mergedPath); // Rest of merges join z index of merged path\n                    mergedPathIndex--; // Removed an item, so the merged path index decreases\n                }\n                mergedPath.remove();\n                mergedPath = tempPath;\n                paths[i].remove();\n                paths.splice(i, 1);\n            }\n        }\n    }\n\n    mergeEraser (lastPath) {\n        const blob = this;\n\n        // Get all path items to merge with\n        // If there are selected items, try to erase from amongst those.\n        let items = getItems({\n            match: function (item) {\n                return item.selected && blob.isMergeable(lastPath, item) &&\n                    blob.touches(lastPath, item) &&\n                    // Boolean operations will produce incorrect results if directly applied to compound path children,\n                    // so exclude those. Their parents are also selected so boolean operations will apply to them.\n                    !isCompoundPathChild(item);\n            },\n            class: paper.PathItem\n        });\n        // Eraser didn't hit anything selected, so assume they meant to erase from all instead of from subset\n        // and deselect the selection\n        if (items.length === 0) {\n            clearSelection(this.clearSelectedItems);\n            items = getItems({\n                match: function (item) {\n                    return blob.isMergeable(lastPath, item) &&\n                        blob.touches(lastPath, item) &&\n                        !isCompoundPathChild(item);\n                },\n                class: paper.PathItem\n            });\n        }\n\n        for (let i = items.length - 1; i >= 0; i--) {\n            if (items[i] instanceof paper.Path && (!items[i].fillColor || items[i].fillColor._alpha === 0)) {\n                // Gather path segments\n                const subpaths = [];\n                const firstSeg = items[i];\n                const intersections = firstSeg.getIntersections(lastPath);\n                for (let j = intersections.length - 1; j >= 0; j--) {\n                    const split = firstSeg.splitAt(intersections[j]);\n                    if (split) {\n                        split.insertAbove(firstSeg);\n                        subpaths.push(split);\n                    }\n                }\n                subpaths.push(firstSeg);\n\n                // Remove the ones that are within the eraser stroke boundary\n                for (let k = subpaths.length - 1; k >= 0; k--) {\n                    const segMidpoint = subpaths[k].getLocationAt(subpaths[k].length / 2).point;\n                    if (lastPath.contains(segMidpoint)) {\n                        subpaths[k].remove();\n                        subpaths.splice(k, 1);\n                    }\n                }\n                lastPath.remove();\n                continue;\n            }\n\n            // Erase\n            const newPath = items[i].subtract(lastPath);\n            newPath.insertBelow(items[i]);\n\n            // Gather path segments\n            const subpaths = [];\n            if (items[i] instanceof paper.Path && !items[i].closed) {\n                const firstSeg = items[i].clone();\n                const intersections = firstSeg.getIntersections(lastPath);\n                // keep first and last segments\n                for (let j = intersections.length - 1; j >= 0; j--) {\n                    const split = firstSeg.splitAt(intersections[j]);\n                    split.insertAbove(firstSeg);\n                    subpaths.push(split);\n                }\n                subpaths.push(firstSeg);\n            }\n\n            // Remove the ones that are within the eraser stroke boundary, or are already part of new path.\n            // This way subpaths only remain if they didn't get turned into a shape by subtract.\n            for (let k = subpaths.length - 1; k >= 0; k--) {\n                const segMidpoint = subpaths[k].getLocationAt(subpaths[k].length / 2).point;\n                if (lastPath.contains(segMidpoint) || newPath.contains(segMidpoint)) {\n                    subpaths[k].remove();\n                    subpaths.splice(k, 1);\n                }\n            }\n\n            if (newPath.children) {\n                this.separateCompoundPath(newPath);\n                newPath.remove();\n            }\n            items[i].remove();\n        }\n        lastPath.remove();\n    }\n\n    separateCompoundPath (compoundPath) {\n        if (!compoundPath.isClockwise()) {\n            compoundPath.reverse();\n        }\n        // Divide topologically separate shapes into their own compound paths, instead of\n        // everything being stuck together.\n        const clockwiseChildren = [];\n        const ccwChildren = [];\n        for (let j = compoundPath.children.length - 1; j >= 0; j--) {\n            const child = compoundPath.children[j];\n            if (child.isClockwise()) {\n                clockwiseChildren.push(child);\n            } else {\n                ccwChildren.push(child);\n            }\n        }\n\n        // Sort by area smallest to largest\n        clockwiseChildren.sort((a, b) => a.area - b.area);\n        ccwChildren.sort((a, b) => Math.abs(a.area) - Math.abs(b.area));\n        // Go smallest to largest non-hole, so larger non-holes don't get the smaller pieces' holes\n        for (let j = 0; j < clockwiseChildren.length; j++) {\n            const cw = clockwiseChildren[j];\n            cw.copyAttributes(compoundPath);\n            cw.fillColor = compoundPath.fillColor;\n            cw.strokeColor = compoundPath.strokeColor;\n            cw.strokeWidth = compoundPath.strokeWidth;\n            cw.insertAbove(compoundPath);\n\n            // Go backward since we are deleting elements. Backwards is largest to smallest hole.\n            let newCw = cw;\n            for (let k = ccwChildren.length - 1; k >= 0; k--) {\n                const ccw = ccwChildren[k];\n                if (this.firstEnclosesSecond(cw, ccw)) {\n                    const temp = newCw.subtract(ccw);\n                    temp.insertAbove(compoundPath);\n                    newCw.remove();\n                    newCw = temp;\n                    ccw.remove();\n                    ccwChildren.splice(k, 1);\n                }\n            }\n        }\n    }\n\n    colorMatch (existingPath, addedPath) {\n        // Note: transparent fill colors do notdetect as touching\n        return existingPath.getFillColor().equals(addedPath.getFillColor()) &&\n                (addedPath.getStrokeColor() === existingPath.getStrokeColor() || // both null\n                    (addedPath.getStrokeColor() &&\n                        addedPath.getStrokeColor().equals(existingPath.getStrokeColor()))) &&\n                addedPath.getStrokeWidth() === existingPath.getStrokeWidth() &&\n                this.touches(existingPath, addedPath);\n    }\n\n    touches (path1, path2) {\n        // Two shapes are touching if their paths intersect\n        if (path1 && path2 && path1.intersects(path2)) {\n            return true;\n        }\n        return this.firstEnclosesSecond(path1, path2) || this.firstEnclosesSecond(path2, path1);\n    }\n\n    firstEnclosesSecond (path1, path2) {\n        // Two shapes are also touching if one is completely inside the other\n        if (path1 && path2 && path2.firstSegment && path2.firstSegment.point &&\n                path1.hitTest(path2.firstSegment.point)) {\n            return true;\n        }\n        // TODO: clean up these no point paths\n        return false;\n    }\n\n    matchesAnyChild (group, path) {\n        for (const child of group.children) {\n            if (child.children && this.matchesAnyChild(path, child)) {\n                return true;\n            }\n            if (path === child) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    isMergeable (newPath, existingPath) {\n        // Path or compound path\n        if (!(existingPath instanceof paper.PathItem)) {\n            return;\n        }\n        if (newPath.children) {\n            if (this.matchesAnyChild(newPath, existingPath)) { // Don't merge with children of self\n                return false;\n            }\n        }\n        return existingPath !== newPath; // don't merge with self\n    }\n\n    deactivateTool () {\n        if (this.cursorPreview) {\n            this.cursorPreview.remove();\n            this.cursorPreview = null;\n        }\n        this.tool.remove();\n        this.tool = null;\n    }\n}\n\nexport default Blobbiness;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport brushIcon from './brush.svg';\n\nconst BrushModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.brush}\n        imgSrc={brushIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBrushModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BrushModeComponent;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport ColorStyleProptype from '../lib/color-style-proptype';\nimport Blobbiness from '../helper/blob-tools/blob';\nimport {MIXED} from '../helper/style-path';\n\nimport {changeFillColor, clearFillGradient, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {clearSelection} from '../helper/selection';\n\nimport BrushModeComponent from '../components/brush-mode/brush-mode.jsx';\n\nclass BrushMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n        this.blob = new Blobbiness(\n            this.props.onUpdateImage, this.props.clearSelectedItems);\n    }\n    componentDidMount () {\n        if (this.props.isBrushModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (nextProps.isBrushModeActive && !this.props.isBrushModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isBrushModeActive && this.props.isBrushModeActive) {\n            this.deactivateTool();\n        } else if (nextProps.isBrushModeActive && this.props.isBrushModeActive) {\n            const {fillColor, strokeColor, strokeWidth} = nextProps.colorState;\n            this.blob.setOptions({\n                isEraser: false,\n                fillColor: fillColor.primary,\n                strokeColor: strokeColor.primary,\n                strokeWidth,\n                ...nextProps.brushModeState\n            });\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isBrushModeActive !== this.props.isBrushModeActive;\n    }\n    componentWillUnmount () {\n        if (this.blob.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        // TODO: Instead of clearing selection, consider a kind of \"draw inside\"\n        // analogous to how selection works with eraser\n        clearSelection(this.props.clearSelectedItems);\n        this.props.clearGradient();\n        // Force the default brush color if fill is MIXED or transparent\n        const fillColor = this.props.colorState.fillColor.primary;\n        if (fillColor === MIXED || fillColor === null) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n        }\n        this.blob.activateTool({\n            isEraser: false,\n            ...this.props.colorState,\n            ...this.props.brushModeState\n        });\n    }\n    deactivateTool () {\n        this.blob.deactivateTool();\n    }\n    render () {\n        return (\n            <BrushModeComponent\n                isSelected={this.props.isBrushModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nBrushMode.propTypes = {\n    brushModeState: PropTypes.shape({\n        brushSize: PropTypes.number.isRequired\n    }),\n    clearGradient: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    colorState: PropTypes.shape({\n        fillColor: ColorStyleProptype,\n        strokeColor: ColorStyleProptype,\n        strokeWidth: PropTypes.number\n    }).isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    isBrushModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    brushModeState: state.scratchPaint.brushMode,\n    colorState: state.scratchPaint.color,\n    isBrushModeActive: state.scratchPaint.mode === Modes.BRUSH\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearGradient: () => {\n        dispatch(clearFillGradient());\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.BRUSH));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(BrushMode);\n","import log from '../log/log';\n\nconst CHANGE_ERASER_SIZE = 'scratch-paint/eraser-mode/CHANGE_ERASER_SIZE';\nconst initialState = {brushSize: 40};\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_ERASER_SIZE:\n        if (isNaN(action.brushSize)) {\n            log.warn(`Invalid brush size: ${action.brushSize}`);\n            return state;\n        }\n        return {brushSize: Math.max(1, action.brushSize)};\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeBrushSize = function (brushSize) {\n    return {\n        type: CHANGE_ERASER_SIZE,\n        brushSize: brushSize\n    };\n};\n\nexport {\n    reducer as default,\n    changeBrushSize\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport eraserIcon from './eraser.svg';\n\nconst EraserModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.eraser}\n        imgSrc={eraserIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nEraserModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default EraserModeComponent;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport Blobbiness from '../helper/blob-tools/blob';\nimport {changeBrushSize} from '../reducers/eraser-mode';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport EraserModeComponent from '../components/eraser-mode/eraser-mode.jsx';\nimport {changeMode} from '../reducers/modes';\n\nclass EraserMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n        this.blob = new Blobbiness(\n            this.props.onUpdateImage, this.props.clearSelectedItems);\n    }\n    componentDidMount () {\n        if (this.props.isEraserModeActive) {\n            this.activateTool();\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (nextProps.isEraserModeActive && !this.props.isEraserModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isEraserModeActive && this.props.isEraserModeActive) {\n            this.deactivateTool();\n        } else if (nextProps.isEraserModeActive && this.props.isEraserModeActive) {\n            this.blob.setOptions({\n                isEraser: true,\n                ...nextProps.eraserModeState\n            });\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isEraserModeActive !== this.props.isEraserModeActive;\n    }\n    componentWillUnmount () {\n        if (this.blob.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        this.blob.activateTool({isEraser: true, ...this.props.eraserModeState});\n    }\n    deactivateTool () {\n        this.blob.deactivateTool();\n    }\n    render () {\n        return (\n            <EraserModeComponent\n                isSelected={this.props.isEraserModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nEraserMode.propTypes = {\n    clearSelectedItems: PropTypes.func.isRequired,\n    eraserModeState: PropTypes.shape({\n        brushSize: PropTypes.number.isRequired\n    }),\n    handleMouseDown: PropTypes.func.isRequired,\n    isEraserModeActive: PropTypes.bool.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    eraserModeState: state.scratchPaint.eraserMode,\n    isEraserModeActive: state.scratchPaint.mode === Modes.ERASER\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    changeBrushSize: brushSize => {\n        dispatch(changeBrushSize(brushSize));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.ERASER));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(EraserMode);\n","import log from '../log/log';\nimport {CHANGE_FILL_GRADIENT_TYPE} from './fill-style';\nimport GradientTypes from '../lib/gradient-types';\n\nconst CHANGE_COLOR_INDEX = 'scratch-paint/color-index/CHANGE_COLOR_INDEX';\nconst initialState = 0;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_COLOR_INDEX:\n        if (action.index !== 1 && action.index !== 0) {\n            log.warn(`Invalid color index: ${action.index}`);\n            return state;\n        }\n        return action.index;\n    case CHANGE_FILL_GRADIENT_TYPE:\n        if (action.gradientType === GradientTypes.SOLID) return 0;\n        /* falls through */\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeColorIndex = function (index) {\n    return {\n        type: CHANGE_COLOR_INDEX,\n        index: index\n    };\n};\n\nexport {\n    reducer as default,\n    changeColorIndex\n};\n","const OPEN_MODAL = 'scratch-paint/modals/OPEN_MODAL';\nconst CLOSE_MODAL = 'scratch-paint/modals/CLOSE_MODAL';\n\nconst MODAL_FILL_COLOR = 'fillColor';\nconst MODAL_STROKE_COLOR = 'strokeColor';\n\nconst initialState = {\n    [MODAL_FILL_COLOR]: false,\n    [MODAL_STROKE_COLOR]: false\n};\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case OPEN_MODAL:\n        return Object.assign({}, initialState, {\n            [action.modal]: true\n        });\n    case CLOSE_MODAL:\n        return Object.assign({}, initialState, {\n            [action.modal]: false\n        });\n    default:\n        return state;\n    }\n};\n\nconst openModal = function (modal) {\n    return {\n        type: OPEN_MODAL,\n        modal: modal\n    };\n};\n\nconst closeModal = function (modal) {\n    return {\n        type: CLOSE_MODAL,\n        modal: modal\n    };\n};\n\n// Action creators ==================================\n\nconst openFillColor = function () {\n    return openModal(MODAL_FILL_COLOR);\n};\n\nconst openStrokeColor = function () {\n    return openModal(MODAL_STROKE_COLOR);\n};\n\nconst closeFillColor = function () {\n    return closeModal(MODAL_FILL_COLOR);\n};\n\nconst closeStrokeColor = function () {\n    return closeModal(MODAL_STROKE_COLOR);\n};\n\nexport {\n    reducer as default,\n    openFillColor,\n    openStrokeColor,\n    closeFillColor,\n    closeStrokeColor\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport {MIXED} from '../../helper/style-path';\n\nimport noFillIcon from './no-fill.svg';\nimport mixedFillIcon from './mixed-fill.svg';\nimport styles from './color-button.css';\nimport GradientTypes from '../../lib/gradient-types';\nimport log from '../../log/log';\n\nconst colorToBackground = (color, color2, gradientType) => {\n    if (color === MIXED || (gradientType !== GradientTypes.SOLID && color2 === MIXED)) return 'white';\n    if (color === null) color = 'white';\n    if (color2 === null) color2 = 'white';\n    switch (gradientType) {\n    case GradientTypes.SOLID: return color;\n    case GradientTypes.HORIZONTAL: return `linear-gradient(to right, ${color}, ${color2})`;\n    case GradientTypes.VERTICAL: return `linear-gradient(${color}, ${color2})`;\n    case GradientTypes.RADIAL: return `radial-gradient(${color}, ${color2})`;\n    default: log.error(`Unrecognized gradient type: ${gradientType}`);\n    }\n};\n\nconst ColorButtonComponent = props => (\n    <div\n        className={styles.colorButton}\n        onClick={props.onClick}\n    >\n        <div\n            className={classNames(styles.colorButtonSwatch, {\n                [styles.outlineSwatch]: props.outline && !(props.color === MIXED)\n            })}\n            style={{\n                background: colorToBackground(props.color, props.color2, props.gradientType)\n            }}\n        >\n            {props.color === null && (props.gradientType === GradientTypes.SOLID || props.color2 === null) ? (\n                <img\n                    className={styles.swatchIcon}\n                    draggable={false}\n                    src={noFillIcon}\n                />\n            ) : ((props.color === MIXED || (props.gradientType !== GradientTypes.SOLID && props.color2 === MIXED) ? (\n                <img\n                    className={styles.swatchIcon}\n                    draggable={false}\n                    src={mixedFillIcon}\n                />\n            ) : null))}\n        </div>\n        <div className={styles.colorButtonArrow}>▾</div>\n    </div>\n);\n\nColorButtonComponent.propTypes = {\n    color: PropTypes.string,\n    color2: PropTypes.string,\n    gradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,\n    onClick: PropTypes.func.isRequired,\n    outline: PropTypes.bool.isRequired\n};\n\nColorButtonComponent.defaultProps = {\n    outline: false\n};\n\nexport default ColorButtonComponent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport bindAll from 'lodash.bindall';\nimport classNames from 'classnames';\nimport {getEventXY} from '../../lib/touch-utils';\n\nimport styles from './slider.css';\n\nconst CONTAINER_WIDTH = 150;\nconst HANDLE_WIDTH = 26;\n\nclass SliderComponent extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'handleMouseDown',\n            'handleMouseUp',\n            'handleMouseMove',\n            'handleClickBackground',\n            'setBackground',\n            'setHandle'\n        ]);\n\n        // Distance from the left edge of the slider handle to the mouse down/click event\n        this.handleClickOffset = 0;\n    }\n\n    handleMouseDown (event) {\n        document.addEventListener('mousemove', this.handleMouseMove);\n        document.addEventListener('mouseup', this.handleMouseUp);\n        document.addEventListener('touchmove', this.handleMouseMove, {passive: false});\n        document.addEventListener('touchend', this.handleMouseUp);\n\n        this.handleClickOffset = getEventXY(event).x - this.handle.getBoundingClientRect().left;\n    }\n\n    handleMouseUp () {\n        document.removeEventListener('mousemove', this.handleMouseMove);\n        document.removeEventListener('mouseup', this.handleMouseUp);\n        document.removeEventListener('touchmove', this.handleMouseMove, {passive: false});\n        document.removeEventListener('touchend', this.handleMouseUp);\n    }\n\n    handleMouseMove (event) {\n        event.preventDefault();\n        this.props.onChange(this.scaleMouseToSliderPosition(event));\n    }\n\n    handleClickBackground (event) {\n        // Because the slider handle is a child of the \"background\" element this handler is registered to, it calls this\n        // when clicked as well. We only want to change the slider value if the user clicked on the background itself.\n        if (event.target !== this.background) return;\n        // Move slider handle's center to the cursor\n        this.handleClickOffset = HANDLE_WIDTH / 2;\n        this.props.onChange(this.scaleMouseToSliderPosition(event));\n    }\n\n    scaleMouseToSliderPosition (event){\n        const {x} = getEventXY(event);\n        const backgroundBBox = this.background.getBoundingClientRect();\n        const scaledX = x - backgroundBBox.left - this.handleClickOffset;\n        return Math.max(0, Math.min(100, 100 * scaledX / (backgroundBBox.width - HANDLE_WIDTH)));\n    }\n\n    setBackground (ref) {\n        this.background = ref;\n    }\n\n    setHandle (ref) {\n        this.handle = ref;\n    }\n\n    render () {\n        const halfHandleWidth = HANDLE_WIDTH / 2;\n        const pixelMin = halfHandleWidth;\n        const pixelMax = CONTAINER_WIDTH - halfHandleWidth;\n        const handleOffset = pixelMin +\n            ((pixelMax - pixelMin) * (this.props.value / 100)) -\n            halfHandleWidth;\n        return (\n            <div\n                className={classNames({\n                    [styles.container]: true,\n                    [styles.last]: this.props.lastSlider\n                })}\n                ref={this.setBackground}\n                style={{\n                    backgroundImage: this.props.background\n                }}\n                onClick={this.handleClickBackground}\n            >\n                <div\n                    className={styles.handle}\n                    ref={this.setHandle}\n                    style={{\n                        left: `${handleOffset}px`\n                    }}\n                    onMouseDown={this.handleMouseDown}\n                    onTouchStart={this.handleMouseDown}\n                />\n            </div>\n        );\n    }\n}\n\nSliderComponent.propTypes = {\n    background: PropTypes.string,\n    lastSlider: PropTypes.bool,\n    onChange: PropTypes.func.isRequired,\n    value: PropTypes.number.isRequired\n};\n\nSliderComponent.defaultProps = {\n    background: 'yellow'\n};\n\nexport default SliderComponent;\nexport {CONTAINER_WIDTH, HANDLE_WIDTH};\n","/* @todo This file should be pulled out into a shared library with scratch-gui,\nconsolidating this component with icon-button.jsx in gui.\nSee #13 */\n\nimport classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Button from '../button/button.jsx';\n\nimport styles from './labeled-icon-button.css';\n\nconst LabeledIconButton = ({\n    className,\n    hideLabel,\n    imgAlt,\n    imgSrc,\n    onClick,\n    title,\n    ...props\n}) => (\n    <Button\n        className={classNames(className, styles.modEditField)}\n        onClick={onClick}\n        {...props}\n    >\n        <img\n            alt={imgAlt || title}\n            className={styles.editFieldIcon}\n            draggable={false}\n            src={imgSrc}\n            title={title}\n        />\n        {!hideLabel && <span className={styles.editFieldTitle}>{title}</span>}\n    </Button>\n);\n\nLabeledIconButton.propTypes = {\n    className: PropTypes.string,\n    hideLabel: PropTypes.bool,\n    highlighted: PropTypes.bool,\n    imgAlt: PropTypes.string,\n    imgSrc: PropTypes.string.isRequired,\n    onClick: PropTypes.func.isRequired,\n    title: PropTypes.string.isRequired\n};\n\nexport default LabeledIconButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {defineMessages, FormattedMessage, injectIntl, intlShape} from 'react-intl';\n\nimport classNames from 'classnames';\nimport parseColor from 'parse-color';\n\nimport Slider, {CONTAINER_WIDTH, HANDLE_WIDTH} from '../forms/slider.jsx';\nimport LabeledIconButton from '../labeled-icon-button/labeled-icon-button.jsx';\nimport styles from './color-picker.css';\nimport GradientTypes from '../../lib/gradient-types';\nimport {MIXED} from '../../helper/style-path';\n\nimport eyeDropperIcon from './icons/eye-dropper.svg';\nimport noFillIcon from '../color-button/no-fill.svg';\nimport mixedFillIcon from '../color-button/mixed-fill.svg';\nimport fillHorzGradientIcon from './icons/fill-horz-gradient-enabled.svg';\nimport fillRadialIcon from './icons/fill-radial-enabled.svg';\nimport fillSolidIcon from './icons/fill-solid-enabled.svg';\nimport fillVertGradientIcon from './icons/fill-vert-gradient-enabled.svg';\nimport swapIcon from './icons/swap.svg';\nimport Modes from '../../lib/modes';\n\nconst hsvToHex = (h, s, v) =>\n    // Scale hue back up to [0, 360] from [0, 100]\n    parseColor(`hsv(${3.6 * h}, ${s}, ${v})`).hex\n;\n\nconst messages = defineMessages({\n    swap: {\n        defaultMessage: 'Swap',\n        description: 'Label for button that swaps the two colors in a gradient',\n        id: 'paint.colorPicker.swap'\n    }\n});\nclass ColorPickerComponent extends React.Component {\n    _makeBackground (channel) {\n        const stops = [];\n        // Generate the color slider background CSS gradients by adding\n        // color stops depending on the slider.\n        for (let n = 100; n >= 0; n -= 10) {\n            switch (channel) {\n            case 'hue':\n                stops.push(hsvToHex(n, this.props.saturation, this.props.brightness));\n                break;\n            case 'saturation':\n                stops.push(hsvToHex(this.props.hue, n, this.props.brightness));\n                break;\n            case 'brightness':\n                stops.push(hsvToHex(this.props.hue, this.props.saturation, n));\n                break;\n            default:\n                throw new Error(`Unknown channel for color sliders: ${channel}`);\n            }\n        }\n\n        // The sliders are a rounded capsule shape, and the slider handles are circles. As a consequence, when the\n        // slider handle is fully to one side, its center is actually moved away from the start/end of the slider by\n        // the slider handle's radius, meaning that the effective range of the slider excludes the rounded caps.\n        // To compensate for this, position the first stop to where the rounded cap ends, and position the last stop\n        // to where the rounded cap begins.\n        const halfHandleWidth = HANDLE_WIDTH / 2;\n        stops[0] += ` 0 ${halfHandleWidth}px`;\n        stops[stops.length - 1] += ` ${CONTAINER_WIDTH - halfHandleWidth}px 100%`;\n\n        return `linear-gradient(to left, ${stops.join(',')})`;\n    }\n    render () {\n        return (\n            <div\n                className={styles.colorPickerContainer}\n                dir={this.props.rtl ? 'rtl' : 'ltr'}\n            >\n                {this.props.shouldShowGradientTools ? (\n                    <div>\n                        <div className={styles.row}>\n                            <div className={styles.gradientPickerRow}>\n                                <img\n                                    className={classNames({\n                                        [styles.inactiveGradient]: this.props.gradientType !== GradientTypes.SOLID,\n                                        [styles.clickable]: true\n                                    })}\n                                    draggable={false}\n                                    src={fillSolidIcon}\n                                    onClick={this.props.onChangeGradientTypeSolid}\n                                />\n                                <img\n                                    className={classNames({\n                                        [styles.inactiveGradient]:\n                                            this.props.gradientType !== GradientTypes.HORIZONTAL,\n                                        [styles.clickable]: true\n                                    })}\n                                    draggable={false}\n                                    src={fillHorzGradientIcon}\n                                    onClick={this.props.onChangeGradientTypeHorizontal}\n                                />\n                                <img\n                                    className={classNames({\n                                        [styles.inactiveGradient]: this.props.gradientType !== GradientTypes.VERTICAL,\n                                        [styles.clickable]: true\n                                    })}\n                                    draggable={false}\n                                    src={fillVertGradientIcon}\n                                    onClick={this.props.onChangeGradientTypeVertical}\n                                />\n                                <img\n                                    className={classNames({\n                                        [styles.inactiveGradient]: this.props.gradientType !== GradientTypes.RADIAL,\n                                        [styles.clickable]: true\n                                    })}\n                                    draggable={false}\n                                    src={fillRadialIcon}\n                                    onClick={this.props.onChangeGradientTypeRadial}\n                                />\n                            </div>\n                        </div>\n                        <div className={styles.divider} />\n                        {this.props.gradientType === GradientTypes.SOLID ? null : (\n                            <div className={styles.row}>\n                                <div\n                                    className={classNames(\n                                        styles.gradientPickerRow,\n                                        styles.gradientSwatchesRow\n                                    )}\n                                >\n                                    <div\n                                        className={classNames({\n                                            [styles.clickable]: true,\n                                            [styles.swatch]: true,\n                                            [styles.largeSwatch]: true,\n                                            [styles.activeSwatch]: this.props.colorIndex === 0\n                                        })}\n                                        style={{\n                                            backgroundColor: this.props.color === null || this.props.color === MIXED ?\n                                                'white' : this.props.color\n                                        }}\n                                        onClick={this.props.onSelectColor}\n                                    >\n                                        {this.props.color === null ? (\n                                            <img\n                                                className={styles.largeSwatchIcon}\n                                                draggable={false}\n                                                src={noFillIcon}\n                                            />\n                                        ) : this.props.color === MIXED ? (\n                                            <img\n                                                className={styles.largeSwatchIcon}\n                                                draggable={false}\n                                                src={mixedFillIcon}\n                                            />\n                                        ) : null}\n                                    </div>\n                                    <LabeledIconButton\n                                        className={styles.swapButton}\n                                        imgSrc={swapIcon}\n                                        title={this.props.intl.formatMessage(messages.swap)}\n                                        onClick={this.props.onSwap}\n                                    />\n                                    <div\n                                        className={classNames({\n                                            [styles.clickable]: true,\n                                            [styles.swatch]: true,\n                                            [styles.largeSwatch]: true,\n                                            [styles.activeSwatch]: this.props.colorIndex === 1\n                                        })}\n                                        style={{\n                                            backgroundColor: this.props.color2 === null || this.props.color2 === MIXED ?\n                                                'white' : this.props.color2\n                                        }}\n                                        onClick={this.props.onSelectColor2}\n                                    >\n                                        {this.props.color2 === null ? (\n                                            <img\n                                                className={styles.largeSwatchIcon}\n                                                draggable={false}\n                                                src={noFillIcon}\n                                            />\n                                        ) : this.props.color2 === MIXED ? (\n                                            <img\n                                                className={styles.largeSwatchIcon}\n                                                draggable={false}\n                                                src={mixedFillIcon}\n                                            />\n                                        ) : null}\n                                    </div>\n                                </div>\n                            </div>\n                        )}\n                    </div>\n                ) : null}\n                <div className={styles.row}>\n                    <div className={styles.rowHeader}>\n                        <span className={styles.labelName}>\n                            <FormattedMessage\n                                defaultMessage=\"Color\"\n                                description=\"Label for the hue component in the color picker\"\n                                id=\"paint.paintEditor.hue\"\n                            />\n                        </span>\n                        <span className={styles.labelReadout}>\n                            {Math.round(this.props.hue)}\n                        </span>\n                    </div>\n                    <div className={styles.rowSlider}>\n                        <Slider\n                            background={this._makeBackground('hue')}\n                            value={this.props.hue}\n                            onChange={this.props.onHueChange}\n                        />\n                    </div>\n                </div>\n                <div className={styles.row}>\n                    <div className={styles.rowHeader}>\n                        <span className={styles.labelName}>\n                            <FormattedMessage\n                                defaultMessage=\"Saturation\"\n                                description=\"Label for the saturation component in the color picker\"\n                                id=\"paint.paintEditor.saturation\"\n                            />\n                        </span>\n                        <span className={styles.labelReadout}>\n                            {Math.round(this.props.saturation)}\n                        </span>\n                    </div>\n                    <div className={styles.rowSlider}>\n                        <Slider\n                            background={this._makeBackground('saturation')}\n                            value={this.props.saturation}\n                            onChange={this.props.onSaturationChange}\n                        />\n                    </div>\n                </div>\n                <div className={styles.row}>\n                    <div className={styles.rowHeader}>\n                        <span className={styles.labelName}>\n                            <FormattedMessage\n                                defaultMessage=\"Brightness\"\n                                description=\"Label for the brightness component in the color picker\"\n                                id=\"paint.paintEditor.brightness\"\n                            />\n                        </span>\n                        <span className={styles.labelReadout}>\n                            {Math.round(this.props.brightness)}\n                        </span>\n                    </div>\n                    <div className={styles.rowSlider}>\n                        <Slider\n                            lastSlider\n                            background={this._makeBackground('brightness')}\n                            value={this.props.brightness}\n                            onChange={this.props.onBrightnessChange}\n                        />\n                    </div>\n                </div>\n                <div className={styles.swatchRow}>\n                    <div className={styles.swatches}>\n                        {this.props.mode === Modes.BIT_LINE ||\n                            this.props.mode === Modes.BIT_RECT ||\n                            this.props.mode === Modes.BIT_OVAL ||\n                            this.props.mode === Modes.BIT_TEXT ? null :\n                            (<div\n                                className={classNames({\n                                    [styles.clickable]: true,\n                                    [styles.swatch]: true,\n                                    [styles.activeSwatch]:\n                                        (this.props.colorIndex === 0 && this.props.color === null) ||\n                                        (this.props.colorIndex === 1 && this.props.color2 === null)\n                                })}\n                                onClick={this.props.onTransparent}\n                            >\n                                <img\n                                    className={styles.swatchIcon}\n                                    draggable={false}\n                                    src={noFillIcon}\n                                />\n                            </div>)\n                        }\n                    </div>\n                    <div className={styles.swatches}>\n                        <div\n                            className={classNames({\n                                [styles.clickable]: true,\n                                [styles.swatch]: true,\n                                [styles.activeSwatch]: this.props.isEyeDropping\n                            })}\n                            onClick={this.props.onActivateEyeDropper}\n                        >\n                            <img\n                                className={styles.swatchIcon}\n                                draggable={false}\n                                src={eyeDropperIcon}\n                            />\n                        </div>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\n\nColorPickerComponent.propTypes = {\n    brightness: PropTypes.number.isRequired,\n    color: PropTypes.string,\n    color2: PropTypes.string,\n    colorIndex: PropTypes.number.isRequired,\n    gradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,\n    hue: PropTypes.number.isRequired,\n    intl: intlShape.isRequired,\n    isEyeDropping: PropTypes.bool.isRequired,\n    mode: PropTypes.oneOf(Object.keys(Modes)),\n    onActivateEyeDropper: PropTypes.func.isRequired,\n    onBrightnessChange: PropTypes.func.isRequired,\n    onChangeGradientTypeHorizontal: PropTypes.func.isRequired,\n    onChangeGradientTypeRadial: PropTypes.func.isRequired,\n    onChangeGradientTypeSolid: PropTypes.func.isRequired,\n    onChangeGradientTypeVertical: PropTypes.func.isRequired,\n    onHueChange: PropTypes.func.isRequired,\n    onSaturationChange: PropTypes.func.isRequired,\n    onSelectColor: PropTypes.func.isRequired,\n    onSelectColor2: PropTypes.func.isRequired,\n    onSwap: PropTypes.func,\n    onTransparent: PropTypes.func.isRequired,\n    rtl: PropTypes.bool.isRequired,\n    saturation: PropTypes.number.isRequired,\n    shouldShowGradientTools: PropTypes.bool.isRequired\n};\n\nexport default injectIntl(ColorPickerComponent);\n","import bindAll from 'lodash.bindall';\nimport {connect} from 'react-redux';\nimport paper from '@scratch/paper';\nimport parseColor from 'parse-color';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport {changeColorIndex} from '../reducers/color-index';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {activateEyeDropper} from '../reducers/eye-dropper';\nimport GradientTypes from '../lib/gradient-types';\n\nimport ColorPickerComponent from '../components/color-picker/color-picker.jsx';\nimport {MIXED} from '../helper/style-path';\nimport Modes from '../lib/modes';\n\nconst colorStringToHsv = hexString => {\n    const hsv = parseColor(hexString).hsv;\n    // Hue comes out in [0, 360], limit to [0, 100]\n    hsv[0] = hsv[0] / 3.6;\n    // Black is parsed as {0, 0, 0}, but turn saturation up to 100\n    // to make it easier to see slider values.\n    if (hsv[1] === 0 && hsv[2] === 0) {\n        hsv[1] = 100;\n    }\n    return hsv;\n};\n\nconst hsvToHex = (h, s, v) =>\n    // Scale hue back up to [0, 360] from [0, 100]\n    parseColor(`hsv(${3.6 * h}, ${s}, ${v})`).hex\n;\n\n// Important! This component ignores new color props except when isEyeDropping\n// This is to make the HSV <=> RGB conversion stable. The sliders manage their\n// own changes until unmounted or color changes with props.isEyeDropping = true.\nclass ColorPicker extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'getHsv',\n            'handleChangeGradientTypeHorizontal',\n            'handleChangeGradientTypeRadial',\n            'handleChangeGradientTypeSolid',\n            'handleChangeGradientTypeVertical',\n            'handleHueChange',\n            'handleSaturationChange',\n            'handleBrightnessChange',\n            'handleTransparent',\n            'handleActivateEyeDropper'\n        ]);\n\n        const color = props.colorIndex === 0 ? props.color : props.color2;\n        const hsv = this.getHsv(color);\n        this.state = {\n            hue: hsv[0],\n            saturation: hsv[1],\n            brightness: hsv[2]\n        };\n    }\n    componentWillReceiveProps (newProps) {\n        const color = newProps.colorIndex === 0 ? this.props.color : this.props.color2;\n        const newColor = newProps.colorIndex === 0 ? newProps.color : newProps.color2;\n        const colorSetByEyedropper = this.props.isEyeDropping && color !== newColor;\n        if (colorSetByEyedropper || this.props.colorIndex !== newProps.colorIndex) {\n            const hsv = this.getHsv(newColor);\n            this.setState({\n                hue: hsv[0],\n                saturation: hsv[1],\n                brightness: hsv[2]\n            });\n        }\n    }\n    getHsv (color) {\n        const isTransparent = color === null;\n        const isMixed = color === MIXED;\n        return isTransparent || isMixed ?\n            [50, 100, 100] : colorStringToHsv(color);\n    }\n    handleHueChange (hue) {\n        this.setState({hue: hue}, () => {\n            this.handleColorChange();\n        });\n    }\n    handleSaturationChange (saturation) {\n        this.setState({saturation: saturation}, () => {\n            this.handleColorChange();\n        });\n    }\n    handleBrightnessChange (brightness) {\n        this.setState({brightness: brightness}, () => {\n            this.handleColorChange();\n        });\n    }\n    handleColorChange () {\n        this.props.onChangeColor(hsvToHex(\n            this.state.hue,\n            this.state.saturation,\n            this.state.brightness\n        ));\n    }\n    handleTransparent () {\n        this.props.onChangeColor(null);\n    }\n    handleActivateEyeDropper () {\n        this.props.onActivateEyeDropper(\n            paper.tool, // get the currently active tool from paper\n            this.props.onChangeColor\n        );\n    }\n    handleChangeGradientTypeHorizontal () {\n        this.props.onChangeGradientType(GradientTypes.HORIZONTAL);\n    }\n    handleChangeGradientTypeRadial () {\n        this.props.onChangeGradientType(GradientTypes.RADIAL);\n    }\n    handleChangeGradientTypeSolid () {\n        this.props.onChangeGradientType(GradientTypes.SOLID);\n    }\n    handleChangeGradientTypeVertical () {\n        this.props.onChangeGradientType(GradientTypes.VERTICAL);\n    }\n    render () {\n        return (\n            <ColorPickerComponent\n                brightness={this.state.brightness}\n                color={this.props.color}\n                color2={this.props.color2}\n                colorIndex={this.props.colorIndex}\n                gradientType={this.props.gradientType}\n                hue={this.state.hue}\n                isEyeDropping={this.props.isEyeDropping}\n                mode={this.props.mode}\n                rtl={this.props.rtl}\n                saturation={this.state.saturation}\n                shouldShowGradientTools={this.props.shouldShowGradientTools}\n                onActivateEyeDropper={this.handleActivateEyeDropper}\n                onBrightnessChange={this.handleBrightnessChange}\n                onChangeGradientTypeHorizontal={this.handleChangeGradientTypeHorizontal}\n                onChangeGradientTypeRadial={this.handleChangeGradientTypeRadial}\n                onChangeGradientTypeSolid={this.handleChangeGradientTypeSolid}\n                onChangeGradientTypeVertical={this.handleChangeGradientTypeVertical}\n                onHueChange={this.handleHueChange}\n                onSaturationChange={this.handleSaturationChange}\n                onSelectColor={this.props.onSelectColor}\n                onSelectColor2={this.props.onSelectColor2}\n                onSwap={this.props.onSwap}\n                onTransparent={this.handleTransparent}\n            />\n        );\n    }\n}\n\nColorPicker.propTypes = {\n    color: PropTypes.string,\n    color2: PropTypes.string,\n    colorIndex: PropTypes.number.isRequired,\n    gradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,\n    isEyeDropping: PropTypes.bool.isRequired,\n    mode: PropTypes.oneOf(Object.keys(Modes)),\n    onActivateEyeDropper: PropTypes.func.isRequired,\n    onChangeColor: PropTypes.func.isRequired,\n    onChangeGradientType: PropTypes.func,\n    onSelectColor: PropTypes.func.isRequired,\n    onSelectColor2: PropTypes.func.isRequired,\n    onSwap: PropTypes.func,\n    rtl: PropTypes.bool.isRequired,\n    shouldShowGradientTools: PropTypes.bool.isRequired\n};\n\nconst mapStateToProps = state => ({\n    colorIndex: state.scratchPaint.fillMode.colorIndex,\n    isEyeDropping: state.scratchPaint.color.eyeDropper.active,\n    mode: state.scratchPaint.mode,\n    rtl: state.scratchPaint.layout.rtl\n});\n\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    onActivateEyeDropper: (currentTool, callback) => {\n        dispatch(activateEyeDropper(currentTool, callback));\n    },\n    onSelectColor: () => {\n        dispatch(changeColorIndex(0));\n    },\n    onSelectColor2: () => {\n        dispatch(changeColorIndex(1));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ColorPicker);\n","import classNames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './input-group.css';\n\nconst InputGroup = props => (\n    <div\n        className={classNames(props.className, styles.inputGroup, {\n            [styles.disabled]: props.disabled\n        })}\n        dir={props.rtl ? 'rtl' : ''}\n    >\n        {props.children}\n    </div>\n);\n\nInputGroup.propTypes = {\n    children: PropTypes.node.isRequired,\n    className: PropTypes.string,\n    disabled: PropTypes.bool,\n    rtl: PropTypes.bool\n};\n\nexport default InputGroup;\n","/* DO NOT EDIT\n@todo This file is copied from GUI and should be pulled out into a shared library.\nSee https://github.com/LLK/scratch-paint/issues/13 */\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport styles from './label.css';\n\nconst Label = props => (\n    <label className={styles.inputGroup}>\n        <span className={props.secondary ? styles.inputLabelSecondary : styles.inputLabel}>\n            {props.text}\n        </span>\n        {props.children}\n    </label>\n);\n\nLabel.propTypes = {\n    children: PropTypes.node,\n    secondary: PropTypes.bool,\n    text: PropTypes.string.isRequired\n};\n\nLabel.defaultProps = {\n    secondary: false\n};\n\nexport default Label;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Popover from 'react-popover';\n\nimport ColorButton from './color-button/color-button.jsx';\nimport ColorPicker from '../containers/color-picker.jsx';\nimport InputGroup from './input-group/input-group.jsx';\nimport Label from './forms/label.jsx';\n\nimport GradientTypes from '../lib/gradient-types';\n\nconst ColorIndicatorComponent = props => (\n    <InputGroup\n        className={props.className}\n        disabled={props.disabled}\n    >\n        <Popover\n            body={\n                <ColorPicker\n                    color={props.color}\n                    color2={props.color2}\n                    gradientType={props.gradientType}\n                    shouldShowGradientTools={props.shouldShowGradientTools}\n                    onChangeColor={props.onChangeColor}\n                    onChangeGradientType={props.onChangeGradientType}\n                    onSwap={props.onSwap}\n                />\n            }\n            isOpen={props.colorModalVisible}\n            preferPlace=\"below\"\n            onOuterAction={props.onCloseColor}\n        >\n            <Label text={props.label}>\n                <ColorButton\n                    color={props.color}\n                    color2={props.color2}\n                    gradientType={props.gradientType}\n                    onClick={props.onOpenColor}\n                    outline={props.outline}\n                />\n            </Label>\n        </Popover>\n    </InputGroup>\n);\n\nColorIndicatorComponent.propTypes = {\n    className: PropTypes.string,\n    disabled: PropTypes.bool.isRequired,\n    color: PropTypes.string,\n    color2: PropTypes.string,\n    colorModalVisible: PropTypes.bool.isRequired,\n    gradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,\n    label: PropTypes.string.isRequired,\n    onChangeColor: PropTypes.func.isRequired,\n    onChangeGradientType: PropTypes.func.isRequired,\n    onCloseColor: PropTypes.func.isRequired,\n    onOpenColor: PropTypes.func.isRequired,\n    onSwap: PropTypes.func.isRequired,\n    outline: PropTypes.bool.isRequired,\n    shouldShowGradientTools: PropTypes.bool.isRequired\n};\n\nexport default ColorIndicatorComponent;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport bindAll from 'lodash.bindall';\nimport parseColor from 'parse-color';\nimport {injectIntl, intlShape} from 'react-intl';\n\nimport {getSelectedLeafItems} from '../helper/selection';\nimport Formats, {isBitmap} from '../lib/format';\nimport GradientTypes from '../lib/gradient-types';\n\nimport ColorIndicatorComponent from '../components/color-indicator.jsx';\nimport {applyColorToSelection,\n    applyGradientTypeToSelection,\n    applyStrokeWidthToSelection,\n    generateSecondaryColor,\n    swapColorsInSelection,\n    MIXED} from '../helper/style-path';\n\nconst makeColorIndicator = (label, isStroke) => {\n    class ColorIndicator extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'handleChangeColor',\n                'handleChangeGradientType',\n                'handleCloseColor',\n                'handleSwap'\n            ]);\n\n            // Flag to track whether an svg-update-worthy change has been made\n            this._hasChanged = false;\n        }\n        componentWillReceiveProps (newProps) {\n            const {colorModalVisible, onUpdateImage} = this.props;\n            if (colorModalVisible && !newProps.colorModalVisible) {\n                // Submit the new SVG, which also stores a single undo/redo action.\n                if (this._hasChanged) onUpdateImage();\n                this._hasChanged = false;\n            }\n        }\n        handleChangeColor (newColor) {\n            // Stroke-selector-specific logic: if we change the stroke color from \"none\" to something visible, ensure\n            // there's a nonzero stroke width. If we change the stroke color to \"none\", set the stroke width to zero.\n            if (isStroke) {\n\n                // Whether the old color style in this color indicator was null (completely transparent).\n                // If it's a solid color, this means that the first color is null.\n                // If it's a gradient, this means both colors are null.\n                const oldStyleWasNull = this.props.gradientType === GradientTypes.SOLID ?\n                    this.props.color === null :\n                    this.props.color === null && this.props.color2 === null;\n\n                const otherColor = this.props.colorIndex === 1 ? this.props.color : this.props.color2;\n                // Whether the new color style in this color indicator is null.\n                const newStyleIsNull = this.props.gradientType === GradientTypes.SOLID ?\n                    newColor === null :\n                    newColor === null && otherColor === null;\n\n                if (oldStyleWasNull && !newStyleIsNull) {\n                    this._hasChanged = applyStrokeWidthToSelection(1, this.props.textEditTarget) || this._hasChanged;\n                    this.props.onChangeStrokeWidth(1);\n                } else if (!oldStyleWasNull && newStyleIsNull) {\n                    this._hasChanged = applyStrokeWidthToSelection(0, this.props.textEditTarget) || this._hasChanged;\n                    this.props.onChangeStrokeWidth(0);\n                }\n            }\n\n            const formatIsBitmap = isBitmap(this.props.format);\n            // Apply color and update redux, but do not update svg until picker closes.\n            const isDifferent = applyColorToSelection(\n                newColor,\n                this.props.colorIndex,\n                this.props.gradientType === GradientTypes.SOLID,\n                // In bitmap mode, only the fill color selector is used, but it applies to stroke if fillBitmapShapes\n                // is set to true via the \"Fill\"/\"Outline\" selector button\n                isStroke || (formatIsBitmap && !this.props.fillBitmapShapes),\n                this.props.textEditTarget);\n            this._hasChanged = this._hasChanged || isDifferent;\n            this.props.onChangeColor(newColor, this.props.colorIndex);\n        }\n        handleChangeGradientType (gradientType) {\n            const formatIsBitmap = isBitmap(this.props.format);\n            // Apply color and update redux, but do not update svg until picker closes.\n            const isDifferent = applyGradientTypeToSelection(\n                gradientType,\n                isStroke || (formatIsBitmap && !this.props.fillBitmapShapes),\n                this.props.textEditTarget);\n            this._hasChanged = this._hasChanged || isDifferent;\n            const hasSelectedItems = getSelectedLeafItems().length > 0;\n            if (hasSelectedItems) {\n                if (isDifferent) {\n                    // Recalculates the swatch colors\n                    this.props.setSelectedItems(this.props.format);\n                }\n            }\n            if (this.props.gradientType === GradientTypes.SOLID && gradientType !== GradientTypes.SOLID) {\n                // Generate color 2 and change to the 2nd swatch when switching from solid to gradient\n                if (!hasSelectedItems) {\n                    this.props.onChangeColor(generateSecondaryColor(this.props.color), 1);\n                }\n                this.props.onChangeColorIndex(1);\n            }\n            if (this.props.onChangeGradientType) this.props.onChangeGradientType(gradientType);\n        }\n        handleCloseColor () {\n            // If the eyedropper is currently being used, don't\n            // close the color menu.\n            if (this.props.isEyeDropping) return;\n\n            // Otherwise, close the color menu and\n            // also reset the color index to indicate\n            // that `color1` is selected.\n            this.props.onCloseColor();\n            this.props.onChangeColorIndex(0);\n        }\n        handleSwap () {\n            if (getSelectedLeafItems().length) {\n                const formatIsBitmap = isBitmap(this.props.format);\n                const isDifferent = swapColorsInSelection(\n                    isStroke || (formatIsBitmap && !this.props.fillBitmapShapes),\n                    this.props.textEditTarget);\n                this.props.setSelectedItems(this.props.format);\n                this._hasChanged = this._hasChanged || isDifferent;\n            } else {\n                let color1 = this.props.color;\n                let color2 = this.props.color2;\n                color1 = color1 === null || color1 === MIXED ? color1 : parseColor(color1).hex;\n                color2 = color2 === null || color2 === MIXED ? color2 : parseColor(color2).hex;\n                this.props.onChangeColor(color1, 1);\n                this.props.onChangeColor(color2, 0);\n            }\n        }\n        render () {\n            return (\n                <ColorIndicatorComponent\n                    {...this.props}\n                    label={this.props.intl.formatMessage(label)}\n                    outline={isStroke}\n                    onChangeColor={this.handleChangeColor}\n                    onChangeGradientType={this.handleChangeGradientType}\n                    onCloseColor={this.handleCloseColor}\n                    onSwap={this.handleSwap}\n                />\n            );\n        }\n    }\n\n    ColorIndicator.propTypes = {\n        colorIndex: PropTypes.number.isRequired,\n        disabled: PropTypes.bool.isRequired,\n        color: PropTypes.string,\n        color2: PropTypes.string,\n        colorModalVisible: PropTypes.bool.isRequired,\n        fillBitmapShapes: PropTypes.bool.isRequired,\n        format: PropTypes.oneOf(Object.keys(Formats)),\n        gradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,\n        intl: intlShape,\n        isEyeDropping: PropTypes.bool.isRequired,\n        onChangeColorIndex: PropTypes.func.isRequired,\n        onChangeColor: PropTypes.func.isRequired,\n        onChangeGradientType: PropTypes.func,\n        onChangeStrokeWidth: PropTypes.func,\n        onCloseColor: PropTypes.func.isRequired,\n        onUpdateImage: PropTypes.func.isRequired,\n        setSelectedItems: PropTypes.func.isRequired,\n        textEditTarget: PropTypes.number\n    };\n\n    return injectIntl(ColorIndicator);\n};\n\nexport default makeColorIndicator;\n","import {connect} from 'react-redux';\nimport {defineMessages} from 'react-intl';\n\nimport {changeColorIndex} from '../reducers/color-index';\nimport {changeFillColor, changeFillColor2} from '../reducers/fill-style';\nimport {changeGradientType} from '../reducers/fill-mode-gradient-type';\nimport {openFillColor, closeFillColor} from '../reducers/modals';\nimport {getSelectedLeafItems} from '../helper/selection';\nimport {setSelectedItems} from '../reducers/selected-items';\nimport Modes, {GradientToolsModes} from '../lib/modes';\nimport {isBitmap} from '../lib/format';\n\nimport makeColorIndicator from './color-indicator.jsx';\n\nconst messages = defineMessages({\n    label: {\n        id: 'paint.paintEditor.fill',\n        description: 'Label for the color picker for the fill color',\n        defaultMessage: 'Fill'\n    }\n});\n\nconst FillColorIndicator = makeColorIndicator(messages.label, false);\n\nconst mapStateToProps = state => ({\n    colorIndex: state.scratchPaint.fillMode.colorIndex,\n    disabled: state.scratchPaint.mode === Modes.LINE,\n    color: state.scratchPaint.color.fillColor.primary,\n    color2: state.scratchPaint.color.fillColor.secondary,\n    colorModalVisible: state.scratchPaint.modals.fillColor,\n    fillBitmapShapes: state.scratchPaint.fillBitmapShapes,\n    format: state.scratchPaint.format,\n    gradientType: state.scratchPaint.color.fillColor.gradientType,\n    isEyeDropping: state.scratchPaint.color.eyeDropper.active,\n    mode: state.scratchPaint.mode,\n    shouldShowGradientTools: state.scratchPaint.mode in GradientToolsModes,\n    textEditTarget: state.scratchPaint.textEditTarget\n});\n\nconst mapDispatchToProps = dispatch => ({\n    onChangeColorIndex: index => {\n        dispatch(changeColorIndex(index));\n    },\n    onChangeColor: (fillColor, index) => {\n        if (index === 0) {\n            dispatch(changeFillColor(fillColor));\n        } else if (index === 1) {\n            dispatch(changeFillColor2(fillColor));\n        }\n    },\n    onOpenColor: () => {\n        dispatch(openFillColor());\n    },\n    onCloseColor: () => {\n        dispatch(closeFillColor());\n    },\n    onChangeGradientType: gradientType => {\n        dispatch(changeGradientType(gradientType));\n    },\n    setSelectedItems: format => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(FillColorIndicator);\n","import paper from '@scratch/paper';\nimport {isBoundsItem, getRootItem} from './item';\nimport {hoverBounds, hoverItem} from './guides';\nimport {isGroupChild} from './group';\nimport {sortItemsByZIndex} from './math';\n\n/**\n * @param {!MouseEvent} event mouse event\n * @param {?object} hitOptions hit options to use\n * @param {?boolean} subselect Whether items within groups can be hovered. If false, the\n *    entire group should be hovered.\n * @return {paper.Item} the hovered item or null if there is none\n */\nconst getHoveredItem = function (event, hitOptions, subselect) {\n    const oldMatch = hitOptions.match;\n    hitOptions.match = hitResult => {\n        if (hitResult.item.data && hitResult.item.data.noHover) return false;\n        return oldMatch ? oldMatch(hitResult) : true;\n    };\n    const hitResults = paper.project.hitTestAll(event.point, hitOptions);\n    if (hitResults.length === 0) {\n        return null;\n    }\n\n    // Get highest z-index result\n    let hitResult;\n    for (const result of hitResults) {\n        if (!hitResult || sortItemsByZIndex(hitResult.item, result.item) < 0) {\n            hitResult = result;\n        }\n    }\n    const item = hitResult.item;\n    // If the hovered item is already selected, then there should be no hovered item.\n    if (!item || item.selected) {\n        return null;\n    }\n\n    let hoverGuide;\n    if (isBoundsItem(item)) {\n        hoverGuide = hoverBounds(item);\n    } else if (!subselect && isGroupChild(item)) {\n        hoverGuide = hoverBounds(getRootItem(item));\n    } else {\n        hoverGuide = hoverItem(item);\n    }\n    hoverGuide.data.hitResult = hitResult;\n\n    return hoverGuide;\n};\n\nexport {\n    getHoveredItem\n};\n","import paper from '@scratch/paper';\nimport {getHoveredItem} from '../hover';\nimport {expandBy} from '../math';\nimport {createGradientObject} from '../style-path';\nimport GradientTypes from '../../lib/gradient-types';\n\nclass FillTool extends paper.Tool {\n    static get TOLERANCE () {\n        return 2;\n    }\n    /**\n     * @param {function} setHoveredItem Callback to set the hovered item\n     * @param {function} clearHoveredItem Callback to clear the hovered item\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setHoveredItem, clearHoveredItem, onUpdateImage) {\n        super();\n        this.setHoveredItem = setHoveredItem;\n        this.clearHoveredItem = clearHoveredItem;\n        this.onUpdateImage = onUpdateImage;\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseUp = this.handleMouseUp;\n\n        // Color to fill with\n        this.fillColor = null;\n        this.fillColor2 = null;\n        this.gradientType = null;\n\n        // The path that's being hovered over.\n        this.fillItem = null;\n        // The style property that we're applying the color to (either fill or stroke).\n        this.fillProperty = null;\n        // If we're hovering over a hole in a compound path, we can't just recolor it. This is the\n        // added item that's the same shape as the hole that's drawn over the hole when we fill a hole.\n        this.addedFillItem = null;\n        this.fillItemOrigColor = null;\n        this.prevHoveredItemId = null;\n    }\n    getHitOptions () {\n        const isAlmostClosedPath = function (item) {\n            return item instanceof paper.Path && item.segments.length > 2 &&\n                item.lastSegment.point.getDistance(item.firstSegment.point) < 8;\n        };\n        return {\n            segments: false,\n            stroke: true,\n            curves: false,\n            fill: true,\n            guide: false,\n            match: function (hitResult) {\n                // Allow fills to be hit only if the item has a fill already or the path is closed/nearly closed\n                const hitFill = hitResult.item.hasFill() || hitResult.item.closed || isAlmostClosedPath(hitResult.item);\n                if (hitResult.item instanceof paper.Path &&\n                    // Disallow hits that don't qualify for the fill criteria, but only if they're fills\n                    (hitFill || hitResult.type !== 'fill')) {\n                    return true;\n                }\n                if (hitResult.item instanceof paper.PointText) {\n                    return true;\n                }\n            },\n            hitUnfilledPaths: true,\n            // If the color is transparent/none, then we need to be able to hit \"invisible\" outlines so that we don't\n            // prevent ourselves from hitting an outline when we make it transparent via the fill preview, causing it to\n            // flicker back and forth between transparent/its previous color as we hit it, then stop hitting it, etc.\n            // If the color *is* visible, then don't hit \"invisible\" outlines, since this would add visible outlines to\n            // non-outlined shapes when you hovered over where their outlines would be.\n            hitUnstrokedPaths: this.gradientType === GradientTypes.SOLID && this.fillColor === null,\n            tolerance: FillTool.TOLERANCE / paper.view.zoom\n        };\n    }\n    setFillColor (fillColor) {\n        this.fillColor = fillColor;\n    }\n    setFillColor2 (fillColor2) {\n        this.fillColor2 = fillColor2;\n    }\n    setGradientType (gradientType) {\n        this.gradientType = gradientType;\n    }\n    /**\n     * To be called when the hovered item changes. When the select tool hovers over a\n     * new item, it compares against this to see if a hover item change event needs to\n     * be fired.\n     * @param {paper.Item} prevHoveredItemId ID of the highlight item that indicates the mouse is\n     *     over a given item currently\n     */\n    setPrevHoveredItemId (prevHoveredItemId) {\n        this.prevHoveredItemId = prevHoveredItemId;\n    }\n    updateFillPreview (event) {\n        const hoveredItem = getHoveredItem(event, this.getHitOptions(), true /* subselect */);\n        if ((!hoveredItem && this.prevHoveredItemId) || // There is no longer a hovered item\n                (hoveredItem && !this.prevHoveredItemId) || // There is now a hovered item\n                (hoveredItem && this.prevHoveredItemId &&\n                    hoveredItem.id !== this.prevHoveredItemId)) { // hovered item changed\n            this.setHoveredItem(hoveredItem ? hoveredItem.id : null);\n        }\n        const hitItem = hoveredItem ? hoveredItem.data.origItem : null;\n        const hitType = hoveredItem ? hoveredItem.data.hitResult.type : null;\n\n        // The hit \"target\" changes if we switch items or switch between fill/outline on the same item\n        const hitTargetChanged = hitItem !== this.fillItem || hitType !== this.fillProperty;\n\n        // Still hitting the same thing\n        if (!hitTargetChanged) {\n            // Only radial gradient needs to be updated\n            if (this.gradientType === GradientTypes.RADIAL) {\n                this._setFillItemColor(this.fillColor, this.fillColor2, this.gradientType, event.point);\n            }\n            return;\n        }\n        if (this.fillItem) {\n            if (this.addedFillItem) {\n                this.addedFillItem.remove();\n                this.addedFillItem = null;\n            } else {\n                this._setFillItemColor(this.fillItemOrigColor);\n            }\n            this.fillItemOrigColor = null;\n            this.fillItem = null;\n            this.fillProperty = null;\n        }\n        if (hitItem) {\n            this.fillItem = hitItem;\n            this.fillProperty = hitType;\n            const colorProp = hitType === 'fill' ? 'fillColor' : 'strokeColor';\n            this.fillItemOrigColor = hitItem[colorProp];\n            if (hitItem.parent instanceof paper.CompoundPath && hitItem.area < 0 && hitType === 'fill') { // hole\n                if (!this.fillColor) {\n                    // Hole filled with transparent is no-op\n                    this.fillItem = null;\n                    this.fillProperty = null;\n                    this.fillItemOrigColor = null;\n                    return;\n                }\n                // Make an item to fill the hole\n                this.addedFillItem = hitItem.clone();\n                this.addedFillItem.setClockwise(true);\n                this.addedFillItem.data.noHover = true;\n                this.addedFillItem.data.origItem = hitItem;\n                // This usually fixes it so there isn't a teeny tiny gap in between the fill and the outline\n                // when filling in a hole\n                expandBy(this.addedFillItem, .1);\n                this.addedFillItem.insertAbove(hitItem.parent);\n            } else if (this.fillItem.parent instanceof paper.CompoundPath) {\n                this.fillItemOrigColor = hitItem.parent[colorProp];\n            }\n            this._setFillItemColor(this.fillColor, this.fillColor2, this.gradientType, event.point);\n        }\n    }\n    handleMouseDown (event) {\n        // on touch, the user might touch-and-hold to preview what the fill tool would do\n        // if they don't move their finger at all after the \"mouse down\" event\n        // then this might be our only chance to give them a good preview\n        this.updateFillPreview(event);\n    }\n    handleMouseMove (event) {\n        this.updateFillPreview(event);\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        if (this.fillItem) {\n            // If the hole we're filling in is the same color as the parent, and parent has no outline, remove the hole\n            if (this.addedFillItem &&\n                    this._noStroke(this.fillItem.parent) &&\n                    this.addedFillItem.fillColor.type !== 'gradient' &&\n                    this.fillItem.parent.fillColor.toCSS() === this.addedFillItem.fillColor.toCSS()) {\n                this.addedFillItem.remove();\n                this.addedFillItem = null;\n                let parent = this.fillItem.parent;\n                this.fillItem.remove();\n                parent = parent.reduce();\n                parent.fillColor = this.fillColor;\n            } else if (this.addedFillItem) {\n                // Fill in a hole.\n                this.addedFillItem.data.noHover = false;\n            } else if (!this.fillColor &&\n                    this.fillItem.data &&\n                    this.fillItem.data.origItem) {\n                // Filling a hole filler with transparent returns it to being gone\n                // instead of making a shape that's transparent\n                const group = this.fillItem.parent;\n                this.fillItem.remove();\n                if (!(group instanceof paper.Layer) && group.children.length === 1) {\n                    group.reduce();\n                }\n            }\n\n            this.clearHoveredItem();\n            this.fillItem = null;\n            this.fillProperty = null;\n            this.addedFillItem = null;\n            this.fillItemOrigColor = null;\n            this.onUpdateImage();\n        }\n    }\n    _noStroke (item) {\n        return !item.strokeColor ||\n                item.strokeColor.alpha === 0 ||\n                item.strokeWidth === 0;\n    }\n    // Either pass in a fully defined paper.Color as color1,\n    // or pass in 2 color strings, a gradient type, and a pointer location\n    _setFillItemColor (color1, color2, gradientType, pointerLocation) {\n        const item = this._getFillItem();\n        if (!item) return;\n        const colorProp = this.fillProperty === 'fill' ? 'fillColor' : 'strokeColor';\n        // Only create a gradient if specifically requested, else use color1 directly\n        // This ensures we do not set a gradient by accident (see scratch-paint#830).\n        if (gradientType && gradientType !== GradientTypes.SOLID) {\n            item[colorProp] = createGradientObject(\n                color1,\n                color2,\n                gradientType,\n                item.bounds,\n                pointerLocation,\n                item.strokeWidth\n            );\n        } else {\n            item[colorProp] = color1;\n        }\n    }\n    _getFillItem () {\n        if (this.addedFillItem) {\n            return this.addedFillItem;\n        } else if (this.fillItem && this.fillItem.parent instanceof paper.CompoundPath) {\n            return this.fillItem.parent;\n        }\n        return this.fillItem;\n    }\n    deactivateTool () {\n        if (this.fillItem) {\n            this._setFillItemColor(this.fillItemOrigColor);\n            this.fillItemOrigColor = null;\n            this.fillItem = null;\n            this.fillProperty = null;\n        }\n        this.clearHoveredItem();\n        this.setHoveredItem = null;\n        this.clearHoveredItem = null;\n    }\n}\n\nexport default FillTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport fillIcon from './fill.svg';\n\nconst FillModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.fill}\n        imgSrc={fillIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nFillModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default FillModeComponent;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport GradientTypes from '../lib/gradient-types';\nimport FillTool from '../helper/tools/fill-tool';\nimport {generateSecondaryColor, MIXED} from '../helper/style-path';\n\nimport {changeFillColor, changeFillColor2, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {clearSelection} from '../helper/selection';\nimport {clearHoveredItem, setHoveredItem} from '../reducers/hover';\nimport {changeGradientType} from '../reducers/fill-mode-gradient-type';\n\nimport FillModeComponent from '../components/fill-mode/fill-mode.jsx';\n\nclass FillMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isFillModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool) {\n            if (nextProps.fillColor !== this.props.fillColor) {\n                this.tool.setFillColor(nextProps.fillColor);\n            }\n            if (nextProps.fillColor2 !== this.props.fillColor2) {\n                this.tool.setFillColor2(nextProps.fillColor2);\n            }\n            if (nextProps.hoveredItemId !== this.props.hoveredItemId) {\n                this.tool.setPrevHoveredItemId(nextProps.hoveredItemId);\n            }\n            if (nextProps.fillModeGradientType !== this.props.fillModeGradientType) {\n                this.tool.setGradientType(nextProps.fillModeGradientType);\n            }\n        }\n\n        if (nextProps.isFillModeActive && !this.props.isFillModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isFillModeActive && this.props.isFillModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isFillModeActive !== this.props.isFillModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n\n        // Force the default fill color if fill is MIXED\n        let fillColor = this.props.fillColor;\n        if (this.props.fillColor === MIXED) {\n            fillColor = DEFAULT_COLOR;\n            this.props.onChangeFillColor(DEFAULT_COLOR, 0);\n        }\n        const gradientType = this.props.fillModeGradientType ?\n            this.props.fillModeGradientType : this.props.fillStyleGradientType;\n        let fillColor2 = this.props.fillColor2;\n        if (gradientType !== this.props.fillStyleGradientType) {\n            if (this.props.fillStyleGradientType === GradientTypes.SOLID) {\n                fillColor2 = generateSecondaryColor(fillColor);\n                this.props.onChangeFillColor(fillColor2, 1);\n            }\n            this.props.changeGradientType(gradientType);\n        }\n        if (this.props.fillColor2 === MIXED) {\n            fillColor2 = generateSecondaryColor(fillColor);\n            this.props.onChangeFillColor(fillColor2, 1);\n        }\n        this.tool = new FillTool(\n            this.props.setHoveredItem,\n            this.props.clearHoveredItem,\n            this.props.onUpdateImage\n        );\n        this.tool.setFillColor(fillColor);\n        this.tool.setFillColor2(fillColor2);\n        this.tool.setGradientType(gradientType);\n        this.tool.setPrevHoveredItemId(this.props.hoveredItemId);\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <FillModeComponent\n                isSelected={this.props.isFillModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nFillMode.propTypes = {\n    changeGradientType: PropTypes.func.isRequired,\n    clearHoveredItem: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    fillColor: PropTypes.string,\n    fillColor2: PropTypes.string,\n    fillStyleGradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,\n    fillModeGradientType: PropTypes.oneOf(Object.keys(GradientTypes)),\n    handleMouseDown: PropTypes.func.isRequired,\n    hoveredItemId: PropTypes.number,\n    isFillModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    setHoveredItem: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    fillModeGradientType: state.scratchPaint.fillMode.gradientType, // Last user-selected gradient type\n    fillColor: state.scratchPaint.color.fillColor.primary,\n    fillColor2: state.scratchPaint.color.fillColor.secondary,\n    fillStyleGradientType: state.scratchPaint.color.fillColor.gradientType, // Selected item(s)' gradient type\n    hoveredItemId: state.scratchPaint.hoveredItemId,\n    isFillModeActive: state.scratchPaint.mode === Modes.FILL\n});\nconst mapDispatchToProps = dispatch => ({\n    setHoveredItem: hoveredItemId => {\n        dispatch(setHoveredItem(hoveredItemId));\n    },\n    clearHoveredItem: () => {\n        dispatch(clearHoveredItem());\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    changeGradientType: gradientType => {\n        dispatch(changeGradientType(gradientType));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.FILL));\n    },\n    onChangeFillColor: (fillColor, index) => {\n        if (index === 0) {\n            dispatch(changeFillColor(fillColor));\n        } else if (index === 1) {\n            dispatch(changeFillColor2(fillColor));\n        }\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(FillMode);\n","import paper from '@scratch/paper';\nimport {getItems} from './selection';\n\n/**\n * @param {paper.Point} point1 point 1\n * @param {paper.Point} point2 point 2\n * @param {number} tolerance Distance allowed between points that are \"touching\"\n * @return {boolean} true if points are within the tolerance distance.\n */\nconst touching = function (point1, point2, tolerance) {\n    return point1.getDistance(point2, true) < Math.pow(tolerance / paper.view.zoom, 2);\n};\n\n/**\n * @param {!paper.Point} point Point to check line endpoint hits against\n * @param {!number} tolerance Distance within which it counts as a hit\n * @param {?paper.Path} excludePath Path to exclude from hit test, if any. For instance, you\n *     are drawing a line and don't want it to snap to its own start point.\n * @return {object} data about the end point of an unclosed path, if any such point is within the\n *     tolerance distance of the given point, or null if none exists.\n */\nconst endPointHit = function (point, tolerance, excludePath) {\n    const lines = getItems({\n        class: paper.Path\n    });\n    // Prefer more recent lines\n    for (let i = lines.length - 1; i >= 0; i--) {\n        if (lines[i].closed) {\n            continue;\n        }\n        if (!(lines[i].parent instanceof paper.Layer)) {\n            // Don't connect to lines inside of groups\n            continue;\n        }\n        if (excludePath && lines[i] === excludePath) {\n            continue;\n        }\n        if (lines[i].firstSegment && touching(lines[i].firstSegment.point, point, tolerance)) {\n            return {\n                path: lines[i],\n                segment: lines[i].firstSegment,\n                isFirst: true\n            };\n        }\n        if (lines[i].lastSegment && touching(lines[i].lastSegment.point, point, tolerance)) {\n            return {\n                path: lines[i],\n                segment: lines[i].lastSegment,\n                isFirst: false\n            };\n        }\n    }\n    return null;\n};\n\nexport {\n    endPointHit,\n    touching\n};\n","import log from '../log/log';\nimport {CHANGE_SELECTED_ITEMS} from './selected-items';\nimport {getColorsFromSelection} from '../helper/style-path';\n\nconst CHANGE_STROKE_WIDTH = 'scratch-paint/stroke-width/CHANGE_STROKE_WIDTH';\nconst MAX_STROKE_WIDTH = 100;\nconst initialState = 4;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_STROKE_WIDTH:\n        if (isNaN(action.strokeWidth)) {\n            log.warn(`Invalid brush size: ${action.strokeWidth}`);\n            return state;\n        }\n        return Math.min(MAX_STROKE_WIDTH, Math.max(0, action.strokeWidth));\n    case CHANGE_SELECTED_ITEMS:\n        // Don't change state if no selection\n        if (!action.selectedItems || !action.selectedItems.length) {\n            return state;\n        }\n        // Bitmap mode doesn't have stroke width\n        if (action.bitmapMode) {\n            return state;\n        }\n        return getColorsFromSelection(action.selectedItems, action.bitmapMode).strokeWidth;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeStrokeWidth = function (strokeWidth) {\n    return {\n        type: CHANGE_STROKE_WIDTH,\n        strokeWidth: strokeWidth\n    };\n};\n\nexport {\n    reducer as default,\n    changeStrokeWidth,\n    CHANGE_STROKE_WIDTH,\n    MAX_STROKE_WIDTH\n};\n","import makeColorStyleReducer from '../lib/make-color-style-reducer';\n\nconst CHANGE_STROKE_COLOR = 'scratch-paint/stroke-style/CHANGE_STROKE_COLOR';\nconst CHANGE_STROKE_COLOR_2 = 'scratch-paint/stroke-style/CHANGE_STROKE_COLOR_2';\nconst CHANGE_STROKE_GRADIENT_TYPE = 'scratch-paint/stroke-style/CHANGE_STROKE_GRADIENT_TYPE';\nconst CLEAR_STROKE_GRADIENT = 'scratch-paint/stroke-style/CLEAR_STROKE_GRADIENT';\nconst DEFAULT_COLOR = '#000000';\n\nimport {CHANGE_STROKE_WIDTH} from './stroke-width';\n\nconst reducer = makeColorStyleReducer({\n    changePrimaryColorAction: CHANGE_STROKE_COLOR,\n    changeSecondaryColorAction: CHANGE_STROKE_COLOR_2,\n    changeGradientTypeAction: CHANGE_STROKE_GRADIENT_TYPE,\n    clearGradientAction: CLEAR_STROKE_GRADIENT,\n    defaultColor: DEFAULT_COLOR,\n    selectionPrimaryColorKey: 'strokeColor',\n    selectionSecondaryColorKey: 'strokeColor2',\n    selectionGradientTypeKey: 'strokeGradientType'\n});\n\n// This is mostly the same as the generated reducer, but with one piece of extra logic to set the color to null when the\n// stroke width is set to 0.\n// https://redux.js.org/recipes/structuring-reducers/reusing-reducer-logic\nconst strokeReducer = function (state, action) {\n    if (action.type === CHANGE_STROKE_WIDTH && Math.max(action.strokeWidth, 0) === 0) {\n        // TODO: this preserves the gradient type when you change the stroke width to 0.\n        // Alternatively, we could set gradientType to SOLID instead of setting secondary to null, but since\n        // the stroke width is automatically set to 0 as soon as a \"null\" color is detected (including a gradient for\n        // which both colors are null), that would change the gradient type back to solid if you selected null for both\n        // gradient colors.\n        return {...state, primary: null, secondary: null};\n    }\n\n    return reducer(state, action);\n};\n\n// Action creators ==================================\nconst changeStrokeColor = function (strokeColor) {\n    return {\n        type: CHANGE_STROKE_COLOR,\n        color: strokeColor\n    };\n};\n\nconst changeStrokeColor2 = function (strokeColor) {\n    return {\n        type: CHANGE_STROKE_COLOR_2,\n        color: strokeColor\n    };\n};\n\nconst changeStrokeGradientType = function (gradientType) {\n    return {\n        type: CHANGE_STROKE_GRADIENT_TYPE,\n        gradientType\n    };\n};\n\nconst clearStrokeGradient = function () {\n    return {\n        type: CLEAR_STROKE_GRADIENT\n    };\n};\n\nexport {\n    strokeReducer as default,\n    changeStrokeColor,\n    changeStrokeColor2,\n    changeStrokeGradientType,\n    clearStrokeGradient,\n    DEFAULT_COLOR,\n    CHANGE_STROKE_GRADIENT_TYPE\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport lineIcon from './line.svg';\n\nconst LineModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.line}\n        imgSrc={lineIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nLineModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default LineModeComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport ColorStyleProptype from '../lib/color-style-proptype';\nimport {clearSelection} from '../helper/selection';\nimport {endPointHit, touching} from '../helper/snapping';\nimport {drawHitPoint, removeHitPoint} from '../helper/guides';\nimport {styleShape, MIXED} from '../helper/style-path';\nimport {changeStrokeColor, clearStrokeGradient} from '../reducers/stroke-style';\nimport {changeStrokeWidth} from '../reducers/stroke-width';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems} from '../reducers/selected-items';\nimport {snapDeltaToAngle} from '../helper/math';\n\nimport LineModeComponent from '../components/line-mode/line-mode.jsx';\n\nclass LineMode extends React.Component {\n    static get SNAP_TOLERANCE () {\n        return 6;\n    }\n    static get DEFAULT_COLOR () {\n        return '#000000';\n    }\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool',\n            'drawHitPoint',\n            'onMouseDown',\n            'onMouseMove',\n            'onMouseDrag',\n            'onMouseUp'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isLineModeActive) {\n            this.activateTool();\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (nextProps.isLineModeActive && !this.props.isLineModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isLineModeActive && this.props.isLineModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isLineModeActive !== this.props.isLineModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        // Force the default line color if stroke is MIXED or transparent\n        const strokeColor1 = this.props.colorState.strokeColor.primary;\n        const strokeColor2 = this.props.colorState.strokeColor.secondary;\n        if (strokeColor1 === MIXED ||\n            (strokeColor1 === null &&\n                (strokeColor2 === null || strokeColor2 === MIXED))) {\n            this.props.onChangeStrokeColor(LineMode.DEFAULT_COLOR);\n        }\n        if (strokeColor2 === MIXED) {\n            this.props.clearStrokeGradient();\n        }\n        // Force a minimum stroke width\n        if (!this.props.colorState.strokeWidth) {\n            this.props.onChangeStrokeWidth(1);\n        }\n        this.tool = new paper.Tool();\n        this.active = false;\n\n        this.path = null;\n        this.hitResult = null;\n\n        const lineMode = this;\n        this.tool.onMouseDown = function (event) {\n            if (event.event.button > 0) return; // only first mouse button\n            lineMode.onMouseDown(event);\n        };\n        this.tool.onMouseMove = function (event) {\n            lineMode.onMouseMove(event);\n        };\n        this.tool.onMouseDrag = function (event) {\n            if (event.event.button > 0) return; // only first mouse button\n            lineMode.onMouseDrag(event);\n        };\n        this.tool.onMouseUp = function (event) {\n            if (event.event.button > 0) return; // only first mouse button\n            lineMode.onMouseUp(event);\n        };\n\n        this.tool.activate();\n    }\n    onMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        // If you click near a point, continue that line instead of making a new line\n        this.hitResult = endPointHit(event.point, LineMode.SNAP_TOLERANCE);\n        if (this.hitResult) {\n            this.path = this.hitResult.path;\n            styleShape(this.path, {\n                fillColor: null,\n                strokeColor: this.props.colorState.strokeColor,\n                strokeWidth: this.props.colorState.strokeWidth\n            });\n            if (this.hitResult.isFirst) {\n                this.path.reverse();\n            }\n\n            this.path.lastSegment.handleOut = null; // Make sure added line isn't made curvy\n            this.path.add(this.hitResult.segment.point); // Add second point, which is what will move when dragged\n        }\n\n        // If not near other path, start a new path\n        if (!this.path) {\n            this.path = new paper.Path();\n            this.path.strokeCap = 'round';\n            styleShape(this.path, {\n                fillColor: null,\n                strokeColor: this.props.colorState.strokeColor,\n                strokeWidth: this.props.colorState.strokeWidth\n            });\n\n            this.path.add(event.point);\n            this.path.add(event.point); // Add second point, which is what will move when dragged\n        }\n    }\n    drawHitPoint (hitResult) {\n        // If near another path's endpoint, draw hit point to indicate that paths would merge\n        if (hitResult) {\n            const hitPath = hitResult.path;\n            if (hitResult.isFirst) {\n                drawHitPoint(hitPath.firstSegment.point);\n            } else {\n                drawHitPoint(hitPath.lastSegment.point);\n            }\n        }\n    }\n    onMouseMove (event) {\n        if (this.hitResult) {\n            removeHitPoint();\n        }\n        this.hitResult = endPointHit(event.point, LineMode.SNAP_TOLERANCE);\n        this.drawHitPoint(this.hitResult);\n    }\n    onMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        // Clear the last hit result\n        if (this.hitResult) {\n            removeHitPoint();\n            this.hitResult = null;\n        }\n\n        // If shift is held, act like event.point always lies on a straight or 45 degree line from the last point\n        let endPoint = event.point;\n        if (event.modifiers.shift) {\n            const line = event.point.subtract(this.path.lastSegment.previous.point);\n            endPoint = this.path.lastSegment.previous.point.add(snapDeltaToAngle(line, Math.PI / 4));\n        }\n\n        // Find an end point that endPoint is close to (to snap lines together)\n        if (this.path &&\n                !this.path.closed &&\n                this.path.segments.length > 3 &&\n                touching(this.path.firstSegment.point, endPoint, LineMode.SNAP_TOLERANCE)) {\n            this.hitResult = {\n                path: this.path,\n                segment: this.path.firstSegment,\n                isFirst: true\n            };\n        } else {\n            this.hitResult = endPointHit(endPoint, LineMode.SNAP_TOLERANCE, this.path);\n        }\n\n        // If shift is being held, we shouldn't snap to end points that change the slope by too much.\n        // In that case, clear the hit result.\n        if (this.hitResult && event.modifiers.shift) {\n            const lineToSnap = this.hitResult.segment.point.subtract(this.path.lastSegment.previous.point);\n            const lineToEndPoint = endPoint.subtract(this.path.lastSegment.previous.point);\n            if (lineToSnap.normalize().getDistance(lineToEndPoint.normalize()) > 1e-2) {\n                this.hitResult = null;\n            }\n        }\n\n        // If near another path's endpoint, or this path's beginpoint, clip to it to suggest\n        // joining/closing the paths.\n        if (this.hitResult) {\n            this.drawHitPoint(this.hitResult);\n            this.path.lastSegment.point = this.hitResult.segment.point;\n        } else {\n            this.path.lastSegment.point = endPoint;\n        }\n\n        styleShape(this.path, {\n            fillColor: null,\n            strokeColor: this.props.colorState.strokeColor,\n            strokeWidth: this.props.colorState.strokeWidth\n        });\n    }\n    onMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        // If I single clicked, don't do anything\n        if (this.path.segments.length < 2 ||\n                (this.path.segments.length === 2 &&\n                touching(this.path.firstSegment.point, event.point, LineMode.SNAP_TOLERANCE) &&\n                !this.hitResult)) { // Let lines be short if you're connecting them\n            this.path.remove();\n            this.path = null;\n            return;\n        } else if (!this.hitResult &&\n                touching(this.path.lastSegment.point, this.path.segments[this.path.segments.length - 2].point,\n                    LineMode.SNAP_TOLERANCE)) {\n            // Single click or short drag on an existing path end point\n            this.path.removeSegment(this.path.segments.length - 1);\n            this.path = null;\n            return;\n        }\n        // If I intersect other line end points, join or close\n        if (this.hitResult) {\n            this.path.removeSegment(this.path.segments.length - 1);\n            if (this.path.firstSegment.point.equals(this.hitResult.segment.point)) {\n                this.path.firstSegment.handleIn = null; // Make sure added line isn't made curvy\n                // close path\n                this.path.closed = true;\n            } else {\n                // joining two paths\n                if (!this.hitResult.isFirst) {\n                    this.hitResult.path.reverse();\n                }\n                this.hitResult.path.firstSegment.handleIn = null; // Make sure added line isn't made curvy\n                this.path.join(this.hitResult.path);\n            }\n            removeHitPoint();\n            this.hitResult = null;\n        }\n\n        styleShape(this.path, {\n            fillColor: null,\n            strokeColor: this.props.colorState.strokeColor,\n            strokeWidth: this.props.colorState.strokeWidth\n        });\n\n        if (this.path) {\n            this.props.onUpdateImage();\n            this.path = null;\n        }\n        this.active = false;\n    }\n    deactivateTool () {\n        this.tool.remove();\n        this.tool = null;\n        if (this.hitResult) {\n            removeHitPoint();\n            this.hitResult = null;\n        }\n        if (this.path) {\n            this.path = null;\n        }\n    }\n    render () {\n        return (\n            <LineModeComponent\n                isSelected={this.props.isLineModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nLineMode.propTypes = {\n    clearSelectedItems: PropTypes.func.isRequired,\n    clearStrokeGradient: PropTypes.func.isRequired,\n    colorState: PropTypes.shape({\n        fillColor: ColorStyleProptype,\n        strokeColor: ColorStyleProptype,\n        strokeWidth: PropTypes.number\n    }).isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    isLineModeActive: PropTypes.bool.isRequired,\n    onChangeStrokeColor: PropTypes.func.isRequired,\n    onChangeStrokeWidth: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    colorState: state.scratchPaint.color,\n    isLineModeActive: state.scratchPaint.mode === Modes.LINE\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearStrokeGradient: () => {\n        dispatch(clearStrokeGradient());\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.LINE));\n    },\n    onChangeStrokeColor: strokeColor => {\n        dispatch(changeStrokeColor(strokeColor));\n    },\n    onChangeStrokeWidth: strokeWidth => {\n        dispatch(changeStrokeWidth(strokeWidth));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(LineMode);\n","import paper from '@scratch/paper';\nimport {createCanvas, getRaster, getBackgroundGuideLayer} from '../layer';\n\nconst LOUPE_RADIUS = 20;\nconst ZOOM_SCALE = 3;\n\nclass EyeDropperTool extends paper.Tool {\n    constructor (canvas, width, height, pixelRatio, zoom, offsetX, offsetY, isBitmap) {\n        super();\n\n        const layer = isBitmap ? getRaster().layer : paper.project.activeLayer;\n        const contentRaster3x = layer.rasterize(\n            72 * ZOOM_SCALE * paper.view.zoom, false /* insert */, paper.view.bounds);\n        const backgroundRaster3x = getBackgroundGuideLayer().rasterize(\n            72 * ZOOM_SCALE * paper.view.zoom, false /* insert */, paper.view.bounds);\n\n        // Canvas from which loupe is cut, shows art and grid\n        this.bufferCanvas = createCanvas(canvas.width * ZOOM_SCALE, canvas.height * ZOOM_SCALE);\n        const bufferCanvasContext = this.bufferCanvas.getContext('2d');\n        // Canvas to sample colors from; just the art\n        this.colorCanvas = createCanvas(canvas.width * ZOOM_SCALE, canvas.height * ZOOM_SCALE);\n        const colorCanvasContext = this.colorCanvas.getContext('2d');\n\n        backgroundRaster3x.onLoad = () => {\n            bufferCanvasContext.drawImage(backgroundRaster3x.canvas, 0, 0);\n            contentRaster3x.onLoad = () => {\n                colorCanvasContext.drawImage(contentRaster3x.canvas, 0, 0);\n                bufferCanvasContext.drawImage(this.colorCanvas, 0, 0);\n                this.bufferLoaded = true;\n            };\n            if (contentRaster3x.loaded) contentRaster3x.onLoad();\n        };\n\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseUp = this.handleMouseUp;\n        this.onMouseMove = this.handleMouseMove;\n\n        this.canvas = canvas;\n        this.pixelRatio = pixelRatio;\n        this.zoom = zoom;\n        this.offsetX = offsetX;\n        this.offsetY = offsetY;\n        this.width = width * this.zoom * this.pixelRatio;\n        this.height = height * this.zoom * this.pixelRatio;\n        this.rect = canvas.getBoundingClientRect();\n        this.colorString = '';\n        this.pickX = -1;\n        this.pickY = -1;\n        this.hideLoupe = true;\n    }\n    handleMouseMove (event) {\n        // Set the pickX/Y for the color picker loop to pick up\n        this.pickX = (event.point.x - this.offsetX) * this.zoom * this.pixelRatio;\n        this.pickY = (event.point.y - this.offsetY) * this.zoom * this.pixelRatio;\n\n        // check if the x/y are outside of the canvas\n        this.hideLoupe = this.pickX > this.width ||\n            this.pickX < 0 ||\n            this.pickY > this.height ||\n            this.pickY < 0;\n    }\n    handleMouseDown (event) {\n        // Nothing special on mousedown, just send to move handler which will show the loupe,\n        // and the mouse up handler submits the color. This allows touch to drag\n        // with the loupe visible to find the correct color\n        this.handleMouseMove(event);\n    }\n    handleMouseUp () {\n        if (!this.hideLoupe) {\n            const colorInfo = this.getColorInfo(this.pickX, this.pickY, this.hideLoupe);\n            if (!colorInfo) return;\n            if (colorInfo.color[3] === 0) {\n                // Alpha 0\n                this.colorString = null;\n                return;\n            }\n            const r = colorInfo.color[0];\n            const g = colorInfo.color[1];\n            const b = colorInfo.color[2];\n\n            // from https://github.com/LLK/scratch-gui/blob/77e54a80a31b6cd4684d4b2a70f1aeec671f229e/src/containers/stage.jsx#L218-L222\n            // formats the color info from the canvas into hex for parsing by the color picker\n            const componentToString = c => {\n                const hex = c.toString(16);\n                return hex.length === 1 ? `0${hex}` : hex;\n            };\n            this.colorString = `#${componentToString(r)}${componentToString(g)}${componentToString(b)}`;\n        }\n    }\n    getColorInfo (x, y, hideLoupe) {\n        const artX = x / this.pixelRatio;\n        const artY = y / this.pixelRatio;\n        if (!this.bufferLoaded) return null;\n        const colorContext = this.colorCanvas.getContext('2d');\n        const bufferContext = this.bufferCanvas.getContext('2d');\n        const colors = colorContext.getImageData(artX * ZOOM_SCALE, artY * ZOOM_SCALE, 1, 1);\n        return {\n            x: x,\n            y: y,\n            color: colors.data,\n            data: bufferContext.getImageData(\n                ZOOM_SCALE * (artX - LOUPE_RADIUS),\n                ZOOM_SCALE * (artY - LOUPE_RADIUS),\n                LOUPE_RADIUS * 2 * ZOOM_SCALE,\n                LOUPE_RADIUS * 2 * ZOOM_SCALE\n            ).data,\n            hideLoupe: hideLoupe\n        };\n    }\n}\n\nexport {\n    EyeDropperTool as default,\n    LOUPE_RADIUS,\n    ZOOM_SCALE\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport bindAll from 'lodash.bindall';\n\nimport Box from '../box/box.jsx';\n\nimport {LOUPE_RADIUS, ZOOM_SCALE} from '../../helper/tools/eye-dropper';\n\nimport styles from './loupe.css';\n\nclass LoupeComponent extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'setCanvas'\n        ]);\n    }\n    componentDidUpdate () {\n        this.draw();\n    }\n    draw () {\n        const boxSize = 5;\n        const boxLineWidth = 1;\n        const colorRingWidth = 15;\n        const loupeRadius = ZOOM_SCALE * LOUPE_RADIUS;\n        const loupeDiameter = loupeRadius * 2;\n\n        const color = this.props.colorInfo.color;\n\n        const ctx = this.canvas.getContext('2d');\n        this.canvas.width = loupeDiameter;\n        this.canvas.height = loupeDiameter;\n        ctx.fillStyle = 'white';\n        ctx.fillRect(0, 0, loupeDiameter, loupeDiameter);\n\n        // In order to scale the image data, must draw to a tmp canvas first\n        const tmpCanvas = document.createElement('canvas');\n        tmpCanvas.width = loupeDiameter;\n        tmpCanvas.height = loupeDiameter;\n        const tmpCtx = tmpCanvas.getContext('2d');\n        const imageData = tmpCtx.createImageData(\n            loupeDiameter, loupeDiameter\n        );\n\n        // Since the color info comes from elsewhere there is no guarantee\n        // about the size. Make sure it matches to prevent data.set from throwing.\n        // See issue #966 for example of how that can happen.\n        if (this.props.colorInfo.data.length === imageData.data.length) {\n            imageData.data.set(this.props.colorInfo.data);\n        } else {\n            console.warn('Image data size mismatch drawing loupe'); // eslint-disable-line no-console\n        }\n\n        tmpCtx.putImageData(imageData, 0, 0);\n\n        // Scale the loupe canvas and draw the zoomed image\n        ctx.drawImage(tmpCanvas, 0, 0);\n\n        // Draw an outlined square at the cursor position (cursor is hidden)\n        ctx.lineWidth = boxLineWidth;\n        ctx.strokeStyle = 'black';\n        ctx.fillStyle = `rgba(${color[0]}, ${color[1]}, ${color[2]}, ${color[3]})`;\n        ctx.beginPath();\n        ctx.rect(loupeRadius - (boxSize / 2), loupeRadius - (boxSize / 2), boxSize, boxSize);\n        ctx.fill();\n        ctx.stroke();\n\n        // Draw a thick ring around the loupe showing the current color\n        ctx.strokeStyle = `rgba(${color[0]}, ${color[1]}, ${color[2]}, ${color[3]})`;\n        ctx.lineWidth = colorRingWidth;\n        ctx.beginPath();\n        ctx.moveTo(loupeDiameter, loupeDiameter);\n        ctx.arc(loupeRadius, loupeRadius, loupeRadius, 0, 2 * Math.PI);\n        ctx.stroke();\n    }\n    setCanvas (element) {\n        this.canvas = element;\n        // Make sure to draw a frame when this component is first mounted\n        // Check for null ref because refs are called with null when unmounted\n        if (this.canvas) {\n            this.draw();\n        }\n    }\n    render () {\n        const {\n            colorInfo,\n            pixelRatio,\n            ...boxProps\n        } = this.props;\n        const loupeDiameter = ZOOM_SCALE * LOUPE_RADIUS * 2;\n        return (\n            <Box\n                {...boxProps}\n                className={styles.eyeDropper}\n                componentRef={this.setCanvas}\n                element=\"canvas\"\n                height={LOUPE_RADIUS * 2}\n                style={{\n                    top: (colorInfo.y / pixelRatio) - (loupeDiameter / 2),\n                    left: (colorInfo.x / pixelRatio) - (loupeDiameter / 2),\n                    width: loupeDiameter,\n                    height: loupeDiameter\n                }}\n                width={LOUPE_RADIUS * 2}\n            />\n        );\n    }\n}\n\nLoupeComponent.propTypes = {\n    colorInfo: PropTypes.shape({\n        color: PropTypes.instanceOf(Uint8ClampedArray), // this is the [r,g,b,a] array\n        x: PropTypes.number,\n        y: PropTypes.number,\n        data: PropTypes.instanceOf(Uint8ClampedArray)\n    }),\n    pixelRatio: PropTypes.number.isRequired\n};\n\nexport default LoupeComponent;\n","import {getSelectedRootItems} from './selection';\n\nconst bringToFront = function (onUpdateImage) {\n    const items = getSelectedRootItems();\n    for (const item of items) {\n        item.bringToFront();\n    }\n    onUpdateImage();\n};\n\nconst sendToBack = function (onUpdateImage) {\n    const items = getSelectedRootItems();\n    for (let i = items.length - 1; i >= 0; i--) {\n        items[i].sendToBack();\n    }\n    onUpdateImage();\n};\n\nconst bringForward = function (onUpdateImage) {\n    const items = getSelectedRootItems();\n    // Already at front\n    if (items.length === 0 || !items[items.length - 1].nextSibling) {\n        return;\n    }\n\n    const nextSibling = items[items.length - 1].nextSibling;\n    for (let i = items.length - 1; i >= 0; i--) {\n        items[i].insertAbove(nextSibling);\n    }\n    onUpdateImage();\n};\n\nconst sendBackward = function (onUpdateImage) {\n    const items = getSelectedRootItems();\n    // Already at front\n    if (items.length === 0 || !items[0].previousSibling) {\n        return;\n    }\n\n    const previousSibling = items[0].previousSibling;\n    for (const item of items) {\n        item.insertBelow(previousSibling);\n    }\n    onUpdateImage();\n};\n\nconst shouldShowSendBackward = function () {\n    const items = getSelectedRootItems();\n    if (items.length === 0 || !items[0].previousSibling) {\n        return false;\n    }\n    return true;\n};\n\nconst shouldShowBringForward = function () {\n    const items = getSelectedRootItems();\n    if (items.length === 0 || !items[items.length - 1].nextSibling) {\n        return false;\n    }\n    return true;\n};\n\nexport {\n    bringToFront,\n    sendToBack,\n    bringForward,\n    sendBackward,\n    shouldShowBringForward,\n    shouldShowSendBackward\n};\n","/* DO NOT EDIT\n@todo This file is copied from GUI and should be pulled out into a shared library.\nSee https://github.com/LLK/scratch-paint/issues/13 */\n\nimport bindAll from 'lodash.bindall';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\n/**\n * Higher Order Component to manage inputs that submit on blur and <enter>\n * @param {React.Component} Input text input that consumes onChange, onBlur, onKeyPress\n * @returns {React.Component} Buffered input that calls onSubmit on blur and <enter>\n */\nexport default function (Input) {\n    class BufferedInput extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'handleChange',\n                'handleKeyPress',\n                'handleFlush'\n            ]);\n            this.state = {\n                value: null\n            };\n        }\n        handleKeyPress (e) {\n            if (e.key === 'Enter') {\n                this.handleFlush();\n                e.target.blur();\n            }\n        }\n        handleFlush () {\n            const isNumeric = typeof this.props.value === 'number';\n            const validatesNumeric = isNumeric ? !isNaN(this.state.value) : true;\n            if (this.state.value !== null && validatesNumeric) {\n                this.props.onSubmit(isNumeric ? Number(this.state.value) : this.state.value);\n            }\n            this.setState({value: null});\n        }\n        handleChange (e) {\n            this.setState({value: e.target.value});\n        }\n        render () {\n            const bufferedValue = this.state.value === null ? this.props.value : this.state.value;\n            return (\n                <Input\n                    {...this.props}\n                    value={bufferedValue}\n                    onBlur={this.handleFlush}\n                    onChange={this.handleChange}\n                    onKeyPress={this.handleKeyPress}\n                />\n            );\n        }\n    }\n\n    BufferedInput.propTypes = {\n        onSubmit: PropTypes.func.isRequired,\n        value: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n    };\n\n    return BufferedInput;\n}\n","import bindAll from 'lodash.bindall';\nimport classNames from 'classnames';\nimport Popover from 'react-popover';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport styles from './dropdown.css';\n\nimport dropdownIcon from './dropdown-caret.svg';\n\nclass Dropdown extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'handleClosePopover',\n            'handleToggleOpenState',\n            'isOpen'\n        ]);\n        this.state = {\n            isOpen: false\n        };\n    }\n    handleClosePopover () {\n        this.setState({\n            isOpen: false\n        });\n    }\n    handleToggleOpenState () {\n        const newState = !this.state.isOpen;\n        this.setState({\n            isOpen: newState\n        });\n        if (newState && this.props.onOpen) {\n            this.props.onOpen();\n        }\n    }\n    isOpen () {\n        return this.state.isOpen;\n    }\n    render () {\n        return (\n            <Popover\n                body={this.props.popoverContent}\n                isOpen={this.state.isOpen}\n                preferPlace=\"below\"\n                onOuterAction={this.props.onOuterAction ?\n                    this.props.onOuterAction : this.handleClosePopover}\n                {...this.props}\n            >\n                <div\n                    className={classNames(styles.dropdown, this.props.className, {\n                        [styles.modOpen]: this.state.isOpen,\n                        [styles.modClosed]: !this.state.isOpen\n                    })}\n                    onClick={this.handleToggleOpenState}\n                >\n                    {this.props.children}\n                    <img\n                        className={classNames(styles.dropdownIcon, {\n                            [styles.modCaretUp]: this.state.isOpen\n                        })}\n                        draggable={false}\n                        src={dropdownIcon}\n                    />\n                </div>\n            </Popover>\n        );\n    }\n}\n\nDropdown.propTypes = {\n    children: PropTypes.node.isRequired,\n    className: PropTypes.string,\n    onOpen: PropTypes.func,\n    onOuterAction: PropTypes.func,\n    popoverContent: PropTypes.node.isRequired\n};\n\nexport default Dropdown;\n","/* DO NOT EDIT\n@todo This file is copied from GUI and should be pulled out into a shared library.\nSee https://github.com/LLK/scratch-paint/issues/13 */\n\n/* NOTE:\nEdited to add range prop\n*/\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\n\nimport styles from './input.css';\n\nconst Input = props => {\n    const {small, range, ...componentProps} = props;\n    return (\n        <input\n            {...componentProps}\n            className={classNames(\n                styles.inputForm,\n                props.className,\n                {\n                    [styles.inputSmall]: small && !range,\n                    [styles.inputSmallRange]: small && range\n                }\n            )}\n        />\n    );\n};\n\nInput.propTypes = {\n    className: PropTypes.string,\n    range: PropTypes.bool,\n    small: PropTypes.bool\n};\n\nInput.defaultProps = {\n    range: false,\n    small: false\n};\n\nexport default Input;\n","export default {\n    fullSizeEditorMinWidth: 1274\n};\n","const localeTooBig = [\n    'ab',\n    'ca',\n    'cy',\n    'de',\n    'et',\n    'el',\n    'ga',\n    'gd',\n    'gl',\n    'mi',\n    'nl',\n    'ja',\n    'ja-Hira',\n    'nb',\n    'nn',\n    'rap',\n    'th',\n    'sr',\n    'sk',\n    'sl',\n    'fi',\n    'sv',\n    'sw',\n    'vi',\n    'tr',\n    'uk'\n];\n\nconst hideLabel = locale => localeTooBig.includes(locale);\n\nexport {\n    hideLabel\n};\n","import classNames from 'classnames';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport MediaQuery from 'react-responsive';\n\nimport {shouldShowGroup, shouldShowUngroup} from '../../helper/group';\nimport {shouldShowBringForward, shouldShowSendBackward} from '../../helper/order';\n\nimport BufferedInputHOC from '../forms/buffered-input-hoc.jsx';\nimport Button from '../button/button.jsx';\nimport ButtonGroup from '../button-group/button-group.jsx';\nimport Dropdown from '../dropdown/dropdown.jsx';\nimport {defineMessages, injectIntl, intlShape} from 'react-intl';\nimport Formats, {isVector} from '../../lib/format';\nimport Input from '../forms/input.jsx';\nimport InputGroup from '../input-group/input-group.jsx';\nimport Label from '../forms/label.jsx';\nimport LabeledIconButton from '../labeled-icon-button/labeled-icon-button.jsx';\nimport layout from '../../lib/layout-constants';\nimport {hideLabel} from '../../lib/hide-label';\nimport styles from './fixed-tools.css';\n\nimport groupIcon from './icons/group.svg';\nimport redoIcon from './icons/redo.svg';\nimport sendBackIcon from './icons/send-back.svg';\nimport sendBackwardIcon from './icons/send-backward.svg';\nimport sendForwardIcon from './icons/send-forward.svg';\nimport sendFrontIcon from './icons/send-front.svg';\nimport undoIcon from './icons/undo.svg';\nimport ungroupIcon from './icons/ungroup.svg';\n\nconst BufferedInput = BufferedInputHOC(Input);\nconst messages = defineMessages({\n    costume: {\n        id: 'paint.paintEditor.costume',\n        description: 'Label for the name of a costume',\n        defaultMessage: 'Costume'\n    },\n    group: {\n        defaultMessage: 'Group',\n        description: 'Label for the button to group shapes',\n        id: 'paint.paintEditor.group'\n    },\n    ungroup: {\n        defaultMessage: 'Ungroup',\n        description: 'Label for the button to ungroup shapes',\n        id: 'paint.paintEditor.ungroup'\n    },\n    undo: {\n        defaultMessage: 'Undo',\n        description: 'Alt to image for the button to undo an action',\n        id: 'paint.paintEditor.undo'\n    },\n    redo: {\n        defaultMessage: 'Redo',\n        description: 'Alt to image for the button to redo an action',\n        id: 'paint.paintEditor.redo'\n    },\n    forward: {\n        defaultMessage: 'Forward',\n        description: 'Label for the `Send forward on canvas` button',\n        id: 'paint.paintEditor.forward'\n    },\n    backward: {\n        defaultMessage: 'Backward',\n        description: 'Label for the `Send backward on canvas` button',\n        id: 'paint.paintEditor.backward'\n    },\n    front: {\n        defaultMessage: 'Front',\n        description: 'Label for the `Send to front of canvas` button',\n        id: 'paint.paintEditor.front'\n    },\n    back: {\n        defaultMessage: 'Back',\n        description: 'Label for the `Send to back of canvas` button',\n        id: 'paint.paintEditor.back'\n    },\n    more: {\n        defaultMessage: 'More',\n        description: 'Label for dropdown to access more action buttons',\n        id: 'paint.paintEditor.more'\n    }\n});\n\nconst FixedToolsComponent = props => {\n    const redoDisabled = !props.canRedo();\n    const undoDisabled = !props.canUndo();\n\n    return (\n        <div className={styles.row}>\n            {/* Name field */}\n            <InputGroup>\n                <MediaQuery minWidth={layout.fullSizeEditorMinWidth}>\n                    <Label text={props.intl.formatMessage(messages.costume)}>\n                        <BufferedInput\n                            className={styles.costumeInput}\n                            type=\"text\"\n                            value={props.name}\n                            onSubmit={props.onUpdateName}\n                        />\n                    </Label>\n                </MediaQuery>\n                <MediaQuery maxWidth={layout.fullSizeEditorMinWidth - 1}>\n                    <BufferedInput\n                        className={styles.costumeInput}\n                        type=\"text\"\n                        value={props.name}\n                        onSubmit={props.onUpdateName}\n                    />\n                </MediaQuery>\n            </InputGroup>\n\n            {/* Undo/Redo */}\n            <InputGroup>\n                <ButtonGroup>\n                    <Button\n                        className={\n                            classNames(\n                                styles.buttonGroupButton,\n                                {\n                                    [styles.modNoEndBorder]: !redoDisabled\n                                }\n                            )\n                        }\n                        disabled={undoDisabled}\n                        onClick={props.onUndo}\n                    >\n                        <img\n                            alt={props.intl.formatMessage(messages.undo)}\n                            className={classNames(\n                                styles.buttonGroupButtonIcon,\n                                styles.undoIcon\n                            )}\n                            draggable={false}\n                            src={undoIcon}\n                        />\n                    </Button>\n                    <Button\n                        className={\n                            classNames(\n                                styles.buttonGroupButton,\n                                {\n                                    [styles.modStartBorder]: !redoDisabled\n                                }\n                            )\n                        }\n                        disabled={redoDisabled}\n                        onClick={props.onRedo}\n                    >\n                        <img\n                            alt={props.intl.formatMessage(messages.redo)}\n                            className={styles.buttonGroupButtonIcon}\n                            draggable={false}\n                            src={redoIcon}\n                        />\n                    </Button>\n                </ButtonGroup>\n            </InputGroup>\n\n            {/* Group/Ungroup */}\n            {isVector(props.format) ?\n                <InputGroup className={styles.modDashedBorder}>\n                    <LabeledIconButton\n                        disabled={!shouldShowGroup()}\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={groupIcon}\n                        title={props.intl.formatMessage(messages.group)}\n                        onClick={props.onGroup}\n                    />\n                    <LabeledIconButton\n                        disabled={!shouldShowUngroup()}\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={ungroupIcon}\n                        title={props.intl.formatMessage(messages.ungroup)}\n                        onClick={props.onUngroup}\n                    />\n                </InputGroup> : null\n            }\n\n            {/* Forward/Backward */}\n            {isVector(props.format) ?\n                <InputGroup className={styles.modDashedBorder}>\n                    <LabeledIconButton\n                        disabled={!shouldShowBringForward()}\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={sendForwardIcon}\n                        title={props.intl.formatMessage(messages.forward)}\n                        onClick={props.onSendForward}\n                    />\n                    <LabeledIconButton\n                        disabled={!shouldShowSendBackward()}\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={sendBackwardIcon}\n                        title={props.intl.formatMessage(messages.backward)}\n                        onClick={props.onSendBackward}\n                    />\n                </InputGroup> : null\n            }\n\n            {isVector(props.format) ?\n                <MediaQuery minWidth={layout.fullSizeEditorMinWidth}>\n                    <InputGroup className={styles.row}>\n                        <LabeledIconButton\n                            disabled={!shouldShowBringForward()}\n                            hideLabel={hideLabel(props.intl.locale)}\n                            imgSrc={sendFrontIcon}\n                            title={props.intl.formatMessage(messages.front)}\n                            onClick={props.onSendToFront}\n                        />\n                        <LabeledIconButton\n                            disabled={!shouldShowSendBackward()}\n                            hideLabel={hideLabel(props.intl.locale)}\n                            imgSrc={sendBackIcon}\n                            title={props.intl.formatMessage(messages.back)}\n                            onClick={props.onSendToBack}\n                        />\n                    </InputGroup>\n\n                    {/* To be rotation point */}\n                    {/* <InputGroup>\n                        <LabeledIconButton\n                            imgAlt=\"Rotation Point\"\n                            imgSrc={rotationPointIcon}\n                            title=\"Rotation Point\"\n                            onClick={function () {}}\n                        />\n                    </InputGroup> */}\n                </MediaQuery> : null\n            }\n            {isVector(props.format) ?\n                <MediaQuery maxWidth={layout.fullSizeEditorMinWidth - 1}>\n                    <InputGroup>\n                        <Dropdown\n                            className={styles.modUnselect}\n                            enterExitTransitionDurationMs={20}\n                            popoverContent={\n                                <InputGroup\n                                    className={styles.modContextMenu}\n                                    rtl={props.rtl}\n                                >\n                                    <Button\n                                        className={classNames(styles.modMenuItem, {\n                                            [styles.modDisabled]: !shouldShowBringForward()\n                                        })}\n                                        disabled={!shouldShowBringForward()}\n                                        onClick={props.onSendToFront}\n                                    >\n                                        <img\n                                            className={styles.menuItemIcon}\n                                            draggable={false}\n                                            src={sendFrontIcon}\n                                        />\n                                        <span>{props.intl.formatMessage(messages.front)}</span>\n                                    </Button>\n                                    <Button\n                                        className={classNames(styles.modMenuItem, {\n                                            [styles.modDisabled]: !shouldShowSendBackward()\n                                        })}\n                                        disabled={!shouldShowSendBackward()}\n                                        onClick={props.onSendToBack}\n                                    >\n                                        <img\n                                            className={styles.menuItemIcon}\n                                            draggable={false}\n                                            src={sendBackIcon}\n                                        />\n                                        <span>{props.intl.formatMessage(messages.back)}</span>\n                                    </Button>\n\n                                    {/* To be rotation point */}\n                                    {/* <Button\n                                        className={classNames(styles.modMenuItem, styles.modTopDivider)}\n                                        onClick={function () {}}\n                                    >\n                                        <img\n                                            className={styles.menuItemIcon}\n                                            draggable={false}\n                                            src={rotationPointIcon}\n                                        />\n                                        <span>{'Rotation Point'}</span>\n                                    </Button> */}\n                                </InputGroup>\n                            }\n                            tipSize={.01}\n                        >\n                            {props.intl.formatMessage(messages.more)}\n                        </Dropdown>\n                    </InputGroup>\n                </MediaQuery> : null\n            }\n        </div>\n    );\n};\n\nFixedToolsComponent.propTypes = {\n    canRedo: PropTypes.func.isRequired,\n    canUndo: PropTypes.func.isRequired,\n    format: PropTypes.oneOf(Object.keys(Formats)),\n    intl: intlShape,\n    name: PropTypes.string,\n    onGroup: PropTypes.func.isRequired,\n    onRedo: PropTypes.func.isRequired,\n    onSendBackward: PropTypes.func.isRequired,\n    onSendForward: PropTypes.func.isRequired,\n    onSendToBack: PropTypes.func.isRequired,\n    onSendToFront: PropTypes.func.isRequired,\n    onUndo: PropTypes.func.isRequired,\n    onUngroup: PropTypes.func.isRequired,\n    onUpdateName: PropTypes.func.isRequired,\n    rtl: PropTypes.bool.isRequired\n};\n\nconst mapStateToProps = state => ({\n    format: state.scratchPaint.format,\n    rtl: state.scratchPaint.layout.rtl,\n    selectedItems: state.scratchPaint.selectedItems,\n    undoState: state.scratchPaint.undo\n});\n\nexport default connect(\n    mapStateToProps\n)(injectIntl(FixedToolsComponent));\n","import log from '../log/log';\n\nconst CHANGE_TEXT_EDIT_TARGET = 'scratch-paint/text-tool/CHANGE_TEXT_EDIT_TARGET';\nconst initialState = null;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_TEXT_EDIT_TARGET:\n        if (typeof action.textEditTargetId === 'undefined') {\n            log.warn(`Text edit target should not be set to undefined. Use null.`);\n            return state;\n        } else if (typeof action.textEditTargetId === 'undefined' || isNaN(action.textEditTargetId)) {\n            log.warn(`Text edit target should be an item ID number. Got: ${action.textEditTargetId}`);\n            return state;\n        }\n        return action.textEditTargetId;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\n/**\n * Set the currently-being-edited text field to the given item ID\n * @param {?number} textEditTargetId The paper.Item ID of the active text field.\n *     Leave empty if there is no text editing target.\n * @return {object} Redux action to change the text edit target.\n */\nconst setTextEditTarget = function (textEditTargetId) {\n    return {\n        type: CHANGE_TEXT_EDIT_TARGET,\n        textEditTargetId: textEditTargetId ? textEditTargetId : null\n    };\n};\n\nexport {\n    reducer as default,\n    setTextEditTarget\n};\n","import log from '../log/log';\nconst SET_LAYOUT = 'scratch-paint/layout/SET_LAYOUT';\nconst initialState = {rtl: false};\n\nconst layouts = ['ltr', 'rtl'];\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case SET_LAYOUT:\n        if (layouts.indexOf(action.layout) === -1) {\n            log.warn(`Unrecognized layout provided: ${action.layout}`);\n            return state;\n        }\n        return {rtl: action.layout === 'rtl'};\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\n/**\n * Change the layout to the new layout\n * @param {string} layout either 'ltr' or 'rtl'\n * @return {object} Redux action to change the selected items.\n */\nconst setLayout = function (layout) {\n    return {\n        type: SET_LAYOUT,\n        layout: layout\n    };\n};\n\n\nexport {\n    reducer as default,\n    setLayout,\n    SET_LAYOUT\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\n\nimport FixedToolsComponent from '../components/fixed-tools/fixed-tools.jsx';\n\nimport {changeMode} from '../reducers/modes';\nimport {changeFormat} from '../reducers/format';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {deactivateEyeDropper} from '../reducers/eye-dropper';\nimport {setTextEditTarget} from '../reducers/text-edit-target';\nimport {setLayout} from '../reducers/layout';\n\nimport {getSelectedLeafItems} from '../helper/selection';\nimport {bringToFront, sendBackward, sendToBack, bringForward} from '../helper/order';\nimport {groupSelection, ungroupSelection} from '../helper/group';\n\nimport Formats, {isBitmap} from '../lib/format';\nimport bindAll from 'lodash.bindall';\n\nclass FixedTools extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'handleSendBackward',\n            'handleSendForward',\n            'handleSendToBack',\n            'handleSendToFront',\n            'handleSetSelectedItems',\n            'handleGroup',\n            'handleUngroup'\n        ]);\n    }\n    handleGroup () {\n        groupSelection(this.props.clearSelectedItems, this.handleSetSelectedItems, this.props.onUpdateImage);\n    }\n    handleUngroup () {\n        ungroupSelection(this.props.clearSelectedItems, this.handleSetSelectedItems, this.props.onUpdateImage);\n    }\n    handleSendBackward () {\n        sendBackward(this.props.onUpdateImage);\n    }\n    handleSendForward () {\n        bringForward(this.props.onUpdateImage);\n    }\n    handleSendToBack () {\n        sendToBack(this.props.onUpdateImage);\n    }\n    handleSendToFront () {\n        bringToFront(this.props.onUpdateImage);\n    }\n    handleSetSelectedItems () {\n        this.props.setSelectedItems(this.props.format);\n    }\n    render () {\n        return (\n            <FixedToolsComponent\n                canRedo={this.props.canRedo}\n                canUndo={this.props.canUndo}\n                name={this.props.name}\n                onGroup={this.handleGroup}\n                onRedo={this.props.onRedo}\n                onSendBackward={this.handleSendBackward}\n                onSendForward={this.handleSendForward}\n                onSendToBack={this.handleSendToBack}\n                onSendToFront={this.handleSendToFront}\n                onUndo={this.props.onUndo}\n                onUngroup={this.handleUngroup}\n                onUpdateImage={this.props.onUpdateImage}\n                onUpdateName={this.props.onUpdateName}\n            />\n        );\n    }\n}\n\nFixedTools.propTypes = {\n    canRedo: PropTypes.func.isRequired,\n    canUndo: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    format: PropTypes.oneOf(Object.keys(Formats)),\n    name: PropTypes.string,\n    onRedo: PropTypes.func.isRequired,\n    onUndo: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    onUpdateName: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    changeColorToEyeDropper: state.scratchPaint.color.eyeDropper.callback,\n    format: state.scratchPaint.format,\n    isEyeDropping: state.scratchPaint.color.eyeDropper.active,\n    mode: state.scratchPaint.mode,\n    pasteOffset: state.scratchPaint.clipboard.pasteOffset,\n    previousTool: state.scratchPaint.color.eyeDropper.previousTool,\n    selectedItems: state.scratchPaint.selectedItems,\n    viewBounds: state.scratchPaint.viewBounds\n});\nconst mapDispatchToProps = dispatch => ({\n    changeMode: mode => {\n        dispatch(changeMode(mode));\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    handleSwitchToBitmap: () => {\n        dispatch(changeFormat(Formats.BITMAP));\n    },\n    handleSwitchToVector: () => {\n        dispatch(changeFormat(Formats.VECTOR));\n    },\n    removeTextEditTarget: () => {\n        dispatch(setTextEditTarget());\n    },\n    setLayout: layout => {\n        dispatch(setLayout(layout));\n    },\n    setSelectedItems: format => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n    },\n    onDeactivateEyeDropper: () => {\n        // set redux values to default for eye dropper reducer\n        dispatch(deactivateEyeDropper());\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(FixedTools);\n","import paper from '@scratch/paper';\nimport bindAll from 'lodash.bindall';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport omit from 'lodash.omit';\nimport {connect} from 'react-redux';\n\nimport {\n    clearSelection,\n    getAllRootItems,\n    getSelectedLeafItems,\n    getSelectedRootItems\n} from '../helper/selection';\nimport {getTrimmedRaster} from '../helper/bitmap';\nimport Formats, {isBitmap} from '../lib/format';\nimport Modes from '../lib/modes';\n\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {incrementPasteOffset, setClipboardItems} from '../reducers/clipboard';\n\nconst CopyPasteHOC = function (WrappedComponent) {\n    class CopyPasteWrapper extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'handleCopy',\n                'handlePaste'\n            ]);\n        }\n        handleCopy () {\n            let selectedItems = [];\n            if (this.props.mode === Modes.RESHAPE) {\n                const leafItems = getSelectedLeafItems();\n                // Copy root of compound paths\n                for (const item of leafItems) {\n                    if (item.parent && item.parent instanceof paper.CompoundPath) {\n                        selectedItems.push(item.parent);\n                    } else {\n                        selectedItems.push(item);\n                    }\n                }\n            } else {\n                selectedItems = getSelectedRootItems();\n            }\n            if (selectedItems.length === 0) {\n                if (isBitmap(this.props.format)) {\n                    const raster = getTrimmedRaster(false /* shouldInsert */);\n                    if (!raster) return;\n                    selectedItems.push(raster);\n                } else {\n                    selectedItems = getAllRootItems();\n                }\n            }\n            const clipboardItems = [];\n            for (let i = 0; i < selectedItems.length; i++) {\n                const jsonItem = selectedItems[i].exportJSON({asString: false});\n                clipboardItems.push(jsonItem);\n            }\n            this.props.setClipboardItems(clipboardItems);\n        }\n        handlePaste () {\n            clearSelection(this.props.clearSelectedItems);\n\n            if (this.props.clipboardItems.length === 0) return;\n\n            let items = [];\n            for (let i = 0; i < this.props.clipboardItems.length; i++) {\n                const item = paper.Base.importJSON(this.props.clipboardItems[i]);\n                if (item) {\n                    items.push(item);\n                }\n            }\n            if (!items.length) return;\n            // If pasting a group or non-raster to bitmap, rasterize first\n            if (isBitmap(this.props.format) && !(items.length === 1 && items[0] instanceof paper.Raster)) {\n                const group = new paper.Group(items);\n                items = [group.rasterize()];\n                group.remove();\n            }\n            for (const item of items) {\n                const placedItem = paper.project.getActiveLayer().addChild(item);\n                placedItem.selected = true;\n                placedItem.position.x += 10 * this.props.pasteOffset;\n                placedItem.position.y += 10 * this.props.pasteOffset;\n            }\n            this.props.incrementPasteOffset();\n            this.props.setSelectedItems(this.props.format);\n            this.props.onUpdateImage();\n        }\n        render () {\n            const componentProps = omit(this.props, [\n                'clearSelectedItems',\n                'clipboardItems',\n                'format',\n                'incrementPasteOffset',\n                'mode',\n                'pasteOffset',\n                'setClipboardItems',\n                'setSelectedItems']);\n            return (\n                <WrappedComponent\n                    onCopyToClipboard={this.handleCopy}\n                    onPasteFromClipboard={this.handlePaste}\n                    {...componentProps}\n                />\n            );\n        }\n    }\n\n    CopyPasteWrapper.propTypes = {\n        clearSelectedItems: PropTypes.func.isRequired,\n        clipboardItems: PropTypes.arrayOf(PropTypes.array),\n        format: PropTypes.oneOf(Object.keys(Formats)),\n        incrementPasteOffset: PropTypes.func.isRequired,\n        mode: PropTypes.oneOf(Object.keys(Modes)),\n        onUpdateImage: PropTypes.func.isRequired,\n        pasteOffset: PropTypes.number,\n        setClipboardItems: PropTypes.func.isRequired,\n        setSelectedItems: PropTypes.func.isRequired\n    };\n    const mapStateToProps = state => ({\n        clipboardItems: state.scratchPaint.clipboard.items,\n        format: state.scratchPaint.format,\n        mode: state.scratchPaint.mode,\n        pasteOffset: state.scratchPaint.clipboard.pasteOffset\n    });\n    const mapDispatchToProps = dispatch => ({\n        setClipboardItems: items => {\n            dispatch(setClipboardItems(items));\n        },\n        incrementPasteOffset: () => {\n            dispatch(incrementPasteOffset());\n        },\n        clearSelectedItems: () => {\n            dispatch(clearSelectedItems());\n        },\n        setSelectedItems: format => {\n            dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n        }\n    });\n\n    return connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(CopyPasteWrapper);\n};\n\nexport default CopyPasteHOC;\n","import log from '../log/log';\n\nconst CHANGE_BRUSH_SIZE = 'scratch-paint/brush-mode/CHANGE_BRUSH_SIZE';\nconst initialState = {brushSize: 10};\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_BRUSH_SIZE:\n        if (isNaN(action.brushSize)) {\n            log.warn(`Invalid brush size: ${action.brushSize}`);\n            return state;\n        }\n        return {brushSize: Math.max(1, action.brushSize)};\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeBrushSize = function (brushSize) {\n    return {\n        type: CHANGE_BRUSH_SIZE,\n        brushSize: brushSize\n    };\n};\n\nexport {\n    reducer as default,\n    changeBrushSize\n};\n","import log from '../log/log';\nimport {CHANGE_SELECTED_ITEMS} from './selected-items';\nimport {getColorsFromSelection} from '../helper/style-path';\n\n// Bit brush size affects bit brush width, circle/rectangle outline drawing width, and line width\n// in the bitmap paint editor.\nconst CHANGE_BIT_BRUSH_SIZE = 'scratch-paint/brush-mode/CHANGE_BIT_BRUSH_SIZE';\nconst initialState = 10;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_BIT_BRUSH_SIZE:\n        if (isNaN(action.brushSize)) {\n            log.warn(`Invalid brush size: ${action.brushSize}`);\n            return state;\n        }\n        return Math.max(1, action.brushSize);\n    case CHANGE_SELECTED_ITEMS:\n    {\n        // Don't change state if no selection\n        if (!action.selectedItems || !action.selectedItems.length) {\n            return state;\n        }\n        // Vector mode doesn't have bit width\n        if (!action.bitmapMode) {\n            return state;\n        }\n        const colorState = getColorsFromSelection(action.selectedItems, action.bitmapMode);\n        if (colorState.thickness) return colorState.thickness;\n        return state;\n    }\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeBitBrushSize = function (brushSize) {\n    return {\n        type: CHANGE_BIT_BRUSH_SIZE,\n        brushSize: brushSize\n    };\n};\n\nexport {\n    reducer as default,\n    changeBitBrushSize\n};\n","import log from '../log/log';\n\nconst CHANGE_BIT_ERASER_SIZE = 'scratch-paint/eraser-mode/CHANGE_BIT_ERASER_SIZE';\nconst initialState = 40;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_BIT_ERASER_SIZE:\n        if (isNaN(action.eraserSize)) {\n            log.warn(`Invalid eraser size: ${action.eraserSize}`);\n            return state;\n        }\n        return Math.max(1, action.eraserSize);\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeBitEraserSize = function (eraserSize) {\n    return {\n        type: CHANGE_BIT_ERASER_SIZE,\n        eraserSize: eraserSize\n    };\n};\n\nexport {\n    reducer as default,\n    changeBitEraserSize\n};\n","import paper from '@scratch/paper';\nimport {CHANGE_SELECTED_ITEMS} from './selected-items';\n\nconst SET_FILLED = 'scratch-paint/fill-bitmap-shapes/SET_FILLED';\nconst initialState = true;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case SET_FILLED:\n        return action.filled;\n    case CHANGE_SELECTED_ITEMS:\n        if (action.bitmapMode &&\n            action.selectedItems &&\n            action.selectedItems[0] instanceof paper.Shape) {\n            return action.selectedItems[0].strokeWidth === 0;\n        }\n        return state;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst setShapesFilled = function (filled) {\n    return {\n        type: SET_FILLED,\n        filled: filled\n    };\n};\n\nexport {\n    reducer as default,\n    setShapesFilled\n};\n","const Fonts = {\n    SANS_SERIF: 'Sans Serif',\n    SERIF: 'Serif',\n    HANDWRITING: 'Handwriting',\n    MARKER: 'Marker',\n    CURLY: 'Curly',\n    PIXEL: 'Pixel',\n    CHINESE: '\"Microsoft YaHei\", \"微软雅黑\", STXihei, \"华文细黑\"',\n    JAPANESE: '\"ヒラギノ角ゴ Pro W3\", \"Hiragino Kaku Gothic Pro\", Osaka, \"メイリオ\", Meiryo, \"MS Pゴシック\", \"MS PGothic\"',\n    KOREAN: 'Malgun Gothic'\n};\n\nexport default Fonts;\n","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport Button from '../button/button.jsx';\nimport Dropdown from '../dropdown/dropdown.jsx';\nimport InputGroup from '../input-group/input-group.jsx';\nimport Fonts from '../../lib/fonts';\nimport styles from './font-dropdown.css';\n\nconst ModeToolsComponent = props => (\n    <Dropdown\n        className={classNames(styles.modUnselect, styles.fontDropdown)}\n        enterExitTransitionDurationMs={60}\n        popoverContent={\n            <InputGroup className={styles.modContextMenu}>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverSansSerif}\n                >\n                    <span className={styles.sansSerif}>\n                        {props.getFontName(Fonts.SANS_SERIF)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverSerif}\n                >\n                    <span className={styles.serif}>\n                        {props.getFontName(Fonts.SERIF)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverHandwriting}\n                >\n                    <span className={styles.handwriting}>\n                        {props.getFontName(Fonts.HANDWRITING)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverMarker}\n                >\n                    <span className={styles.marker}>\n                        {props.getFontName(Fonts.MARKER)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverCurly}\n                >\n                    <span className={styles.curly}>\n                        {props.getFontName(Fonts.CURLY)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverPixel}\n                >\n                    <span className={styles.pixel}>\n                        {props.getFontName(Fonts.PIXEL)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverChinese}\n                >\n                    <span className={styles.chinese}>\n                        {props.getFontName(Fonts.CHINESE)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverJapanese}\n                >\n                    <span className={styles.japanese}>\n                        {props.getFontName(Fonts.JAPANESE)}\n                    </span>\n                </Button>\n                <Button\n                    className={classNames(styles.modMenuItem)}\n                    onClick={props.onChoose}\n                    onMouseOver={props.onHoverKorean}\n                >\n                    <span className={styles.korean}>\n                        {props.getFontName(Fonts.KOREAN)}\n                    </span>\n                </Button>\n            </InputGroup>\n        }\n        ref={props.componentRef}\n        tipSize={.01}\n        onOpen={props.onOpenDropdown}\n        onOuterAction={props.onClickOutsideDropdown}\n    >\n        <span className={classNames(props.getFontStyle(props.font), styles.displayedFontName)}>\n            {props.getFontName(props.font)}\n        </span>\n    </Dropdown>\n);\n\nModeToolsComponent.propTypes = {\n    componentRef: PropTypes.func.isRequired,\n    font: PropTypes.string,\n    getFontName: PropTypes.func.isRequired,\n    getFontStyle: PropTypes.func.isRequired,\n    onChoose: PropTypes.func.isRequired,\n    onClickOutsideDropdown: PropTypes.func,\n    onHoverChinese: PropTypes.func,\n    onHoverCurly: PropTypes.func,\n    onHoverHandwriting: PropTypes.func,\n    onHoverJapanese: PropTypes.func,\n    onHoverKorean: PropTypes.func,\n    onHoverMarker: PropTypes.func,\n    onHoverPixel: PropTypes.func,\n    onHoverSansSerif: PropTypes.func,\n    onHoverSerif: PropTypes.func,\n    onOpenDropdown: PropTypes.func\n};\nexport default ModeToolsComponent;\n","import Fonts from '../lib/fonts';\n\nconst CHANGE_FONT = 'scratch-paint/fonts/CHANGE_FONT';\nconst initialState = Fonts.SANS_SERIF;\n\nconst reducer = function (state, action) {\n    if (typeof state === 'undefined') state = initialState;\n    switch (action.type) {\n    case CHANGE_FONT:\n        if (!action.font) return state;\n        return action.font;\n    default:\n        return state;\n    }\n};\n\n// Action creators ==================================\nconst changeFont = function (font) {\n    return {\n        type: CHANGE_FONT,\n        font: font\n    };\n};\n\nexport {\n    reducer as default,\n    changeFont\n};\n","import paper from '@scratch/paper';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport FontDropdownComponent from '../components/font-dropdown/font-dropdown.jsx';\nimport Fonts from '../lib/fonts';\nimport {changeFont} from '../reducers/font';\nimport {getSelectedLeafItems} from '../helper/selection';\nimport styles from '../components/font-dropdown/font-dropdown.css';\n\nclass FontDropdown extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'getFontStyle',\n            'getFontName',\n            'handleChangeFontSerif',\n            'handleChangeFontSansSerif',\n            'handleChangeFontHandwriting',\n            'handleChangeFontMarker',\n            'handleChangeFontCurly',\n            'handleChangeFontPixel',\n            'handleChangeFontChinese',\n            'handleChangeFontJapanese',\n            'handleChangeFontKorean',\n            'handleOpenDropdown',\n            'handleClickOutsideDropdown',\n            'setDropdown',\n            'handleChoose'\n        ]);\n    }\n    getFontStyle (font) {\n        switch (font) {\n        case Fonts.SERIF:\n            return styles.serif;\n        case Fonts.SANS_SERIF:\n            return styles.sansSerif;\n        case Fonts.HANDWRITING:\n            return styles.handwriting;\n        case Fonts.MARKER:\n            return styles.marker;\n        case Fonts.CURLY:\n            return styles.curly;\n        case Fonts.PIXEL:\n            return styles.pixel;\n        case Fonts.CHINESE:\n            return styles.chinese;\n        case Fonts.JAPANESE:\n            return styles.japanese;\n        case Fonts.KOREAN:\n            return styles.korean;\n        default:\n            return '';\n        }\n    }\n    getFontName (font) {\n        switch (font) {\n        case Fonts.CHINESE:\n            return '中文';\n        case Fonts.KOREAN:\n            return '한국어';\n        case Fonts.JAPANESE:\n            return '日本語';\n        default:\n            return font;\n        }\n    }\n    handleChangeFontSansSerif () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.SANS_SERIF);\n        }\n    }\n    handleChangeFontSerif () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.SERIF);\n        }\n    }\n    handleChangeFontHandwriting () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.HANDWRITING);\n        }\n    }\n    handleChangeFontMarker () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.MARKER);\n        }\n    }\n    handleChangeFontCurly () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.CURLY);\n        }\n    }\n    handleChangeFontPixel () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.PIXEL);\n        }\n    }\n    handleChangeFontChinese () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.CHINESE);\n        }\n    }\n    handleChangeFontJapanese () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.JAPANESE);\n        }\n    }\n    handleChangeFontKorean () {\n        if (this.dropDown.isOpen()) {\n            this.props.changeFont(Fonts.KOREAN);\n        }\n    }\n    handleChoose () {\n        if (this.dropDown.isOpen()) {\n            this.dropDown.handleClosePopover();\n            this.props.onUpdateImage();\n        }\n    }\n    handleOpenDropdown () {\n        this.savedFont = this.props.font;\n        this.savedSelection = getSelectedLeafItems();\n    }\n    handleClickOutsideDropdown (e) {\n        e.stopPropagation();\n        this.dropDown.handleClosePopover();\n\n        // Cancel font change\n        for (const item of this.savedSelection) {\n            if (item instanceof paper.PointText) {\n                item.font = this.savedFont;\n            }\n        }\n\n        this.props.changeFont(this.savedFont);\n        this.savedFont = null;\n        this.savedSelection = null;\n    }\n    setDropdown (element) {\n        this.dropDown = element;\n    }\n    render () {\n        return (\n            <FontDropdownComponent\n                componentRef={this.setDropdown}\n                font={this.props.font}\n                getFontName={this.getFontName}\n                getFontStyle={this.getFontStyle}\n                onChoose={this.handleChoose}\n                onClickOutsideDropdown={this.handleClickOutsideDropdown}\n                onHoverChinese={this.handleChangeFontChinese}\n                onHoverCurly={this.handleChangeFontCurly}\n                onHoverHandwriting={this.handleChangeFontHandwriting}\n                onHoverJapanese={this.handleChangeFontJapanese}\n                onHoverKorean={this.handleChangeFontKorean}\n                onHoverMarker={this.handleChangeFontMarker}\n                onHoverPixel={this.handleChangeFontPixel}\n                onHoverSansSerif={this.handleChangeFontSansSerif}\n                onHoverSerif={this.handleChangeFontSerif}\n                onOpenDropdown={this.handleOpenDropdown}\n            />\n        );\n    }\n}\n\nFontDropdown.propTypes = {\n    changeFont: PropTypes.func.isRequired,\n    font: PropTypes.string,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    font: state.scratchPaint.font\n});\nconst mapDispatchToProps = dispatch => ({\n    changeFont: font => {\n        dispatch(changeFont(font));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(FontDropdown);\n","import bindAll from 'lodash.bindall';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\n/**\n * Higher Order Component to manage inputs that submit on change and <enter>\n * @param {React.Component} Input text input that consumes onChange, onBlur, onKeyPress\n * @returns {React.Component} Live input that calls onSubmit on change and <enter>\n */\nexport default function (Input) {\n    class LiveInput extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'handleChange',\n                'handleKeyPress',\n                'handleFlush'\n            ]);\n            this.state = {\n                value: null\n            };\n        }\n        handleKeyPress (e) {\n            if (e.key === 'Enter') {\n                this.handleChange(e);\n                e.target.blur();\n            }\n        }\n        handleFlush () {\n            this.setState({value: null});\n        }\n        handleChange (e) {\n            const isNumeric = typeof this.props.value === 'number';\n            const validatesNumeric = isNumeric ? !isNaN(e.target.value) : true;\n            if (e.target.value !== null && validatesNumeric) {\n                let val = Number(e.target.value);\n                if (typeof this.props.max !== 'undefined' && val > Number(this.props.max)) {\n                    val = this.props.max;\n                }\n                if (typeof this.props.min !== 'undefined' && val < Number(this.props.min)) {\n                    val = this.props.min;\n                }\n                this.props.onSubmit(val);\n            }\n            this.setState({value: e.target.value});\n        }\n        render () {\n            const liveValue = this.state.value === null ? this.props.value : this.state.value;\n            return (\n                <Input\n                    {...this.props}\n                    value={liveValue}\n                    onBlur={this.handleFlush}\n                    onChange={this.handleChange}\n                    onKeyPress={this.handleKeyPress}\n                />\n            );\n        }\n    }\n\n    LiveInput.propTypes = {\n        max: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        min: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        onSubmit: PropTypes.func.isRequired,\n        value: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n    };\n\n    return LiveInput;\n}\n","import classNames from 'classnames';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport {changeBrushSize} from '../../reducers/brush-mode';\nimport {changeBrushSize as changeEraserSize} from '../../reducers/eraser-mode';\nimport {changeBitBrushSize} from '../../reducers/bit-brush-size';\nimport {changeBitEraserSize} from '../../reducers/bit-eraser-size';\nimport {setShapesFilled} from '../../reducers/fill-bitmap-shapes';\n\nimport FontDropdown from '../../containers/font-dropdown.jsx';\nimport LiveInputHOC from '../forms/live-input-hoc.jsx';\nimport Label from '../forms/label.jsx';\nimport {defineMessages, injectIntl, intlShape} from 'react-intl';\nimport Input from '../forms/input.jsx';\nimport InputGroup from '../input-group/input-group.jsx';\nimport LabeledIconButton from '../labeled-icon-button/labeled-icon-button.jsx';\nimport Modes from '../../lib/modes';\nimport Formats, {isBitmap, isVector} from '../../lib/format';\nimport {hideLabel} from '../../lib/hide-label';\nimport styles from './mode-tools.css';\n\nimport copyIcon from './icons/copy.svg';\nimport pasteIcon from './icons/paste.svg';\nimport deleteIcon from './icons/delete.svg';\n\nimport bitBrushIcon from '../bit-brush-mode/brush.svg';\nimport bitEraserIcon from '../bit-eraser-mode/eraser.svg';\nimport bitLineIcon from '../bit-line-mode/line.svg';\nimport brushIcon from '../brush-mode/brush.svg';\nimport curvedPointIcon from './icons/curved-point.svg';\nimport eraserIcon from '../eraser-mode/eraser.svg';\nimport flipHorizontalIcon from './icons/flip-horizontal.svg';\nimport flipVerticalIcon from './icons/flip-vertical.svg';\nimport straightPointIcon from './icons/straight-point.svg';\nimport bitOvalIcon from '../bit-oval-mode/oval.svg';\nimport bitRectIcon from '../bit-rect-mode/rectangle.svg';\nimport bitOvalOutlinedIcon from '../bit-oval-mode/oval-outlined.svg';\nimport bitRectOutlinedIcon from '../bit-rect-mode/rectangle-outlined.svg';\n\nimport {MAX_STROKE_WIDTH} from '../../reducers/stroke-width';\n\nconst LiveInput = LiveInputHOC(Input);\nconst ModeToolsComponent = props => {\n    const messages = defineMessages({\n        brushSize: {\n            defaultMessage: 'Size',\n            description: 'Label for the brush size input',\n            id: 'paint.modeTools.brushSize'\n        },\n        eraserSize: {\n            defaultMessage: 'Eraser size',\n            description: 'Label for the eraser size input',\n            id: 'paint.modeTools.eraserSize'\n        },\n        copy: {\n            defaultMessage: 'Copy',\n            description: 'Label for the copy button',\n            id: 'paint.modeTools.copy'\n        },\n        paste: {\n            defaultMessage: 'Paste',\n            description: 'Label for the paste button',\n            id: 'paint.modeTools.paste'\n        },\n        delete: {\n            defaultMessage: 'Delete',\n            description: 'Label for the delete button',\n            id: 'paint.modeTools.delete'\n        },\n        curved: {\n            defaultMessage: 'Curved',\n            description: 'Label for the button that converts selected points to curves',\n            id: 'paint.modeTools.curved'\n        },\n        pointed: {\n            defaultMessage: 'Pointed',\n            description: 'Label for the button that converts selected points to sharp points',\n            id: 'paint.modeTools.pointed'\n        },\n        thickness: {\n            defaultMessage: 'Thickness',\n            description: 'Label for the number input to choose the line thickness',\n            id: 'paint.modeTools.thickness'\n        },\n        flipHorizontal: {\n            defaultMessage: 'Flip Horizontal',\n            description: 'Label for the button to flip the image horizontally',\n            id: 'paint.modeTools.flipHorizontal'\n        },\n        flipVertical: {\n            defaultMessage: 'Flip Vertical',\n            description: 'Label for the button to flip the image vertically',\n            id: 'paint.modeTools.flipVertical'\n        },\n        filled: {\n            defaultMessage: 'Filled',\n            description: 'Label for the button that sets the bitmap rectangle/oval mode to draw outlines',\n            id: 'paint.modeTools.filled'\n        },\n        outlined: {\n            defaultMessage: 'Outlined',\n            description: 'Label for the button that sets the bitmap rectangle/oval mode to draw filled-in shapes',\n            id: 'paint.modeTools.outlined'\n        }\n    });\n\n    switch (props.mode) {\n    case Modes.BRUSH:\n        /* falls through */\n    case Modes.BIT_BRUSH:\n        /* falls through */\n    case Modes.BIT_LINE:\n    {\n        const currentIcon = isVector(props.format) ? brushIcon :\n            props.mode === Modes.BIT_LINE ? bitLineIcon : bitBrushIcon;\n        const currentBrushValue = isBitmap(props.format) ? props.bitBrushSize : props.brushValue;\n        const changeFunction = isBitmap(props.format) ? props.onBitBrushSliderChange : props.onBrushSliderChange;\n        const currentMessage = props.mode === Modes.BIT_LINE ? messages.thickness : messages.brushSize;\n        return (\n            <div className={classNames(props.className, styles.modeTools)}>\n                <div>\n                    <img\n                        alt={props.intl.formatMessage(currentMessage)}\n                        className={styles.modeToolsIcon}\n                        draggable={false}\n                        src={currentIcon}\n                    />\n                </div>\n                <LiveInput\n                    range\n                    small\n                    max={MAX_STROKE_WIDTH}\n                    min=\"1\"\n                    type=\"number\"\n                    value={currentBrushValue}\n                    onSubmit={changeFunction}\n                />\n            </div>\n        );\n    }\n    case Modes.BIT_ERASER:\n        /* falls through */\n    case Modes.ERASER:\n    {\n        const currentIcon = isVector(props.format) ? eraserIcon : bitEraserIcon;\n        const currentEraserValue = isBitmap(props.format) ? props.bitEraserSize : props.eraserValue;\n        const changeFunction = isBitmap(props.format) ? props.onBitEraserSliderChange : props.onEraserSliderChange;\n        return (\n            <div className={classNames(props.className, styles.modeTools)}>\n                <div>\n                    <img\n                        alt={props.intl.formatMessage(messages.eraserSize)}\n                        className={styles.modeToolsIcon}\n                        draggable={false}\n                        src={currentIcon}\n                    />\n                </div>\n                <LiveInput\n                    range\n                    small\n                    max={MAX_STROKE_WIDTH}\n                    min=\"1\"\n                    type=\"number\"\n                    value={currentEraserValue}\n                    onSubmit={changeFunction}\n                />\n            </div>\n        );\n    }\n    case Modes.RESHAPE:\n        return (\n            <div className={classNames(props.className, styles.modeTools)}>\n                <InputGroup className={classNames(styles.modDashedBorder, styles.modLabeledIconHeight)}>\n                    <LabeledIconButton\n                        disabled={!props.hasSelectedUncurvedPoints}\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={curvedPointIcon}\n                        title={props.intl.formatMessage(messages.curved)}\n                        onClick={props.onCurvePoints}\n                    />\n                    <LabeledIconButton\n                        disabled={!props.hasSelectedUnpointedPoints}\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={straightPointIcon}\n                        title={props.intl.formatMessage(messages.pointed)}\n                        onClick={props.onPointPoints}\n                    />\n                </InputGroup>\n                <InputGroup className={classNames(styles.modLabeledIconHeight)}>\n                    <LabeledIconButton\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={deleteIcon}\n                        title={props.intl.formatMessage(messages.delete)}\n                        onClick={props.onDelete}\n                    />\n                </InputGroup>\n            </div>\n        );\n    case Modes.BIT_SELECT:\n        /* falls through */\n    case Modes.SELECT:\n        return (\n            <div className={classNames(props.className, styles.modeTools)}>\n                <InputGroup className={classNames(styles.modDashedBorder, styles.modLabeledIconHeight)}>\n                    <LabeledIconButton\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={copyIcon}\n                        title={props.intl.formatMessage(messages.copy)}\n                        onClick={props.onCopyToClipboard}\n                    />\n                    <LabeledIconButton\n                        disabled={!(props.clipboardItems.length > 0)}\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={pasteIcon}\n                        title={props.intl.formatMessage(messages.paste)}\n                        onClick={props.onPasteFromClipboard}\n                    />\n                </InputGroup>\n                <InputGroup className={classNames(styles.modDashedBorder, styles.modLabeledIconHeight)}>\n                    <LabeledIconButton\n                        hideLabel={hideLabel(props.intl.locale)}\n                        imgSrc={deleteIcon}\n                        title={props.intl.formatMessage(messages.delete)}\n                        onClick={props.onDelete}\n                    />\n                </InputGroup>\n                <InputGroup className={classNames(styles.modLabeledIconHeight)}>\n                    <LabeledIconButton\n                        hideLabel={props.intl.locale !== 'en'}\n                        imgSrc={flipHorizontalIcon}\n                        title={props.intl.formatMessage(messages.flipHorizontal)}\n                        onClick={props.onFlipHorizontal}\n                    />\n                    <LabeledIconButton\n                        hideLabel={props.intl.locale !== 'en'}\n                        imgSrc={flipVerticalIcon}\n                        title={props.intl.formatMessage(messages.flipVertical)}\n                        onClick={props.onFlipVertical}\n                    />\n                </InputGroup>\n            </div>\n        );\n    case Modes.BIT_TEXT:\n        /* falls through */\n    case Modes.TEXT:\n        return (\n            <div className={classNames(props.className, styles.modeTools)}>\n                <InputGroup>\n                    <FontDropdown\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                </InputGroup>\n            </div>\n        );\n    case Modes.BIT_RECT:\n        /* falls through */\n    case Modes.BIT_OVAL:\n    {\n        const fillIcon = props.mode === Modes.BIT_RECT ? bitRectIcon : bitOvalIcon;\n        const outlineIcon = props.mode === Modes.BIT_RECT ? bitRectOutlinedIcon : bitOvalOutlinedIcon;\n        return (\n            <div className={classNames(props.className, styles.modeTools)}>\n                <InputGroup>\n                    <LabeledIconButton\n                        highlighted={props.fillBitmapShapes}\n                        imgSrc={fillIcon}\n                        title={props.intl.formatMessage(messages.filled)}\n                        onClick={props.onFillShapes}\n                    />\n                </InputGroup>\n                <InputGroup>\n                    <LabeledIconButton\n                        highlighted={!props.fillBitmapShapes}\n                        imgSrc={outlineIcon}\n                        title={props.intl.formatMessage(messages.outlined)}\n                        onClick={props.onOutlineShapes}\n                    />\n                </InputGroup>\n                {props.fillBitmapShapes ? null : (\n                    <InputGroup>\n                        <Label text={props.intl.formatMessage(messages.thickness)}>\n                            <LiveInput\n                                range\n                                small\n                                max={MAX_STROKE_WIDTH}\n                                min=\"1\"\n                                type=\"number\"\n                                value={props.bitBrushSize}\n                                onSubmit={props.onBitBrushSliderChange}\n                            />\n                        </Label>\n                    </InputGroup>)\n                }\n            </div>\n        );\n    }\n    default:\n        // Leave empty for now, if mode not supported\n        return (\n            <div className={classNames(props.className, styles.modeTools)} />\n        );\n    }\n};\n\nModeToolsComponent.propTypes = {\n    bitBrushSize: PropTypes.number,\n    bitEraserSize: PropTypes.number,\n    brushValue: PropTypes.number,\n    className: PropTypes.string,\n    clipboardItems: PropTypes.arrayOf(PropTypes.array),\n    eraserValue: PropTypes.number,\n    fillBitmapShapes: PropTypes.bool,\n    format: PropTypes.oneOf(Object.keys(Formats)),\n    hasSelectedUncurvedPoints: PropTypes.bool,\n    hasSelectedUnpointedPoints: PropTypes.bool,\n    intl: intlShape.isRequired,\n    mode: PropTypes.string.isRequired,\n    onBitBrushSliderChange: PropTypes.func.isRequired,\n    onBitEraserSliderChange: PropTypes.func.isRequired,\n    onBrushSliderChange: PropTypes.func.isRequired,\n    onCopyToClipboard: PropTypes.func.isRequired,\n    onCurvePoints: PropTypes.func.isRequired,\n    onDelete: PropTypes.func.isRequired,\n    onEraserSliderChange: PropTypes.func,\n    onFillShapes: PropTypes.func.isRequired,\n    onFlipHorizontal: PropTypes.func.isRequired,\n    onFlipVertical: PropTypes.func.isRequired,\n    onOutlineShapes: PropTypes.func.isRequired,\n    onPasteFromClipboard: PropTypes.func.isRequired,\n    onPointPoints: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    mode: state.scratchPaint.mode,\n    format: state.scratchPaint.format,\n    fillBitmapShapes: state.scratchPaint.fillBitmapShapes,\n    bitBrushSize: state.scratchPaint.bitBrushSize,\n    bitEraserSize: state.scratchPaint.bitEraserSize,\n    brushValue: state.scratchPaint.brushMode.brushSize,\n    clipboardItems: state.scratchPaint.clipboard.items,\n    eraserValue: state.scratchPaint.eraserMode.brushSize\n});\nconst mapDispatchToProps = dispatch => ({\n    onBrushSliderChange: brushSize => {\n        dispatch(changeBrushSize(brushSize));\n    },\n    onBitBrushSliderChange: bitBrushSize => {\n        dispatch(changeBitBrushSize(bitBrushSize));\n    },\n    onBitEraserSliderChange: eraserSize => {\n        dispatch(changeBitEraserSize(eraserSize));\n    },\n    onEraserSliderChange: eraserSize => {\n        dispatch(changeEraserSize(eraserSize));\n    },\n    onFillShapes: () => {\n        dispatch(setShapesFilled(true));\n    },\n    onOutlineShapes: () => {\n        dispatch(setShapesFilled(false));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(injectIntl(ModeToolsComponent));\n","import paper from '@scratch/paper';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\n\nimport CopyPasteHOC from '../hocs/copy-paste-hoc.jsx';\nimport ModeToolsComponent from '../components/mode-tools/mode-tools.jsx';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {\n    deleteSelection,\n    getSelectedLeafItems,\n    getSelectedRootItems,\n    getAllRootItems,\n    selectAllItems,\n    selectAllSegments\n} from '../helper/selection';\nimport {HANDLE_RATIO, ensureClockwise} from '../helper/math';\nimport {getRaster} from '../helper/layer';\nimport {flipBitmapHorizontal, flipBitmapVertical, selectAllBitmap} from '../helper/bitmap';\nimport Formats, {isBitmap} from '../lib/format';\nimport Modes from '../lib/modes';\n\nclass ModeTools extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            '_getSelectedUncurvedPoints',\n            '_getSelectedUnpointedPoints',\n            'hasSelectedUncurvedPoints',\n            'hasSelectedUnpointedPoints',\n            'handleCurvePoints',\n            'handleFlipHorizontal',\n            'handleFlipVertical',\n            'handleDelete',\n            'handlePasteFromClipboard',\n            'handlePointPoints'\n        ]);\n    }\n    _getSelectedUncurvedPoints () {\n        const items = [];\n        const selectedItems = getSelectedLeafItems();\n        for (const item of selectedItems) {\n            if (!item.segments) continue;\n            for (const seg of item.segments) {\n                if (seg.selected) {\n                    const prev = seg.getPrevious();\n                    const next = seg.getNext();\n                    const isCurved =\n                        (!prev || seg.handleIn.length > 0) &&\n                        (!next || seg.handleOut.length > 0) &&\n                        (prev && next ? seg.handleOut.isColinear(seg.handleIn) : true);\n                    if (!isCurved) items.push(seg);\n                }\n            }\n        }\n        return items;\n    }\n    _getSelectedUnpointedPoints () {\n        const points = [];\n        const selectedItems = getSelectedLeafItems();\n        for (const item of selectedItems) {\n            if (!item.segments) continue;\n            for (const seg of item.segments) {\n                if (seg.selected) {\n                    if (seg.handleIn.length > 0 || seg.handleOut.length > 0) {\n                        points.push(seg);\n                    }\n                }\n            }\n        }\n        return points;\n    }\n    hasSelectedUncurvedPoints () {\n        const points = this._getSelectedUncurvedPoints();\n        return points.length > 0;\n    }\n    hasSelectedUnpointedPoints () {\n        const points = this._getSelectedUnpointedPoints();\n        return points.length > 0;\n    }\n    handleCurvePoints () {\n        let changed;\n        const points = this._getSelectedUncurvedPoints();\n        for (const point of points) {\n            const prev = point.getPrevious();\n            const next = point.getNext();\n            const noHandles = point.handleIn.length === 0 && point.handleOut.length === 0;\n            if (!prev && !next) {\n                continue;\n            } else if (prev && next && noHandles) {\n                // Handles are parallel to the line from prev to next\n                point.handleIn = prev.point.subtract(next.point)\n                    .normalize()\n                    .multiply(prev.getCurve().length * HANDLE_RATIO);\n            } else if (prev && !next && point.handleIn.length === 0) {\n                // Point is end point\n                // Direction is average of normal at the point and direction to prev point, using the\n                // normal that points out from the convex side\n                // Lenth is curve length * HANDLE_RATIO\n                const convexity = prev.getCurve().getCurvatureAtTime(.5) < 0 ? -1 : 1;\n                point.handleIn = (prev.getCurve().getNormalAtTime(1)\n                    .multiply(convexity)\n                    .add(prev.point.subtract(point.point).normalize()))\n                    .normalize()\n                    .multiply(prev.getCurve().length * HANDLE_RATIO);\n            } else if (next && !prev && point.handleOut.length === 0) {\n                // Point is start point\n                // Direction is average of normal at the point and direction to prev point, using the\n                // normal that points out from the convex side\n                // Lenth is curve length * HANDLE_RATIO\n                const convexity = point.getCurve().getCurvatureAtTime(.5) < 0 ? -1 : 1;\n                point.handleOut = (point.getCurve().getNormalAtTime(0)\n                    .multiply(convexity)\n                    .add(next.point.subtract(point.point).normalize()))\n                    .normalize()\n                    .multiply(point.getCurve().length * HANDLE_RATIO);\n            }\n\n            // Point guaranteed to have a handle now. Make the second handle match the length and direction of first.\n            // This defines a curved point.\n            if (point.handleIn.length > 0 && next) {\n                point.handleOut = point.handleIn.multiply(-1);\n            } else if (point.handleOut.length > 0 && prev) {\n                point.handleIn = point.handleOut.multiply(-1);\n            }\n            changed = true;\n        }\n        if (changed) {\n            this.props.setSelectedItems(this.props.format);\n            this.props.onUpdateImage();\n        }\n    }\n    handlePointPoints () {\n        let changed;\n        const points = this._getSelectedUnpointedPoints();\n        for (const point of points) {\n            const noHandles = point.handleIn.length === 0 && point.handleOut.length === 0;\n            if (!noHandles) {\n                point.handleIn = null;\n                point.handleOut = null;\n                changed = true;\n            }\n        }\n        if (changed) {\n            this.props.setSelectedItems(this.props.format);\n            this.props.onUpdateImage();\n        }\n    }\n    _handleFlip (horizontalScale, verticalScale, selectedItems) {\n        if (selectedItems.length === 0) {\n            // If nothing is selected, select everything\n            selectedItems = getAllRootItems();\n        }\n        // Record old indices\n        for (const item of selectedItems) {\n            item.data.index = item.index;\n        }\n\n        // Group items so that they flip as a unit\n        const itemGroup = new paper.Group(selectedItems);\n        // Flip\n        itemGroup.scale(horizontalScale, verticalScale);\n        ensureClockwise(itemGroup);\n\n        // Remove flipped item from group and insert at old index. Must insert from bottom index up.\n        for (let i = 0; i < selectedItems.length; i++) {\n            itemGroup.layer.insertChild(selectedItems[i].data.index, selectedItems[i]);\n            selectedItems[i].data.index = null;\n        }\n        itemGroup.remove();\n\n        this.props.onUpdateImage();\n    }\n    handleFlipHorizontal () {\n        const selectedItems = getSelectedRootItems();\n        if (isBitmap(this.props.format) && selectedItems.length === 0) {\n            getRaster().canvas = flipBitmapHorizontal(getRaster().canvas);\n            this.props.onUpdateImage();\n        } else {\n            this._handleFlip(-1, 1, selectedItems);\n        }\n    }\n    handleFlipVertical () {\n        const selectedItems = getSelectedRootItems();\n        if (isBitmap(this.props.format) && selectedItems.length === 0) {\n            getRaster().canvas = flipBitmapVertical(getRaster().canvas);\n            this.props.onUpdateImage();\n        } else {\n            this._handleFlip(1, -1, selectedItems);\n        }\n    }\n    handlePasteFromClipboard () {\n        if (this.props.onPasteFromClipboard()) {\n            this.props.onUpdateImage();\n        }\n    }\n    handleDelete () {\n        if (!this.props.selectedItems.length) {\n            if (isBitmap(this.props.format)) {\n                selectAllBitmap(this.props.clearSelectedItems);\n            } else if (this.props.mode === Modes.RESHAPE) {\n                selectAllSegments();\n            } else {\n                selectAllItems();\n            }\n        }\n        if (deleteSelection(this.props.mode, this.props.onUpdateImage)) {\n            this.props.setSelectedItems(this.props.format);\n        }\n    }\n    render () {\n        return (\n            <ModeToolsComponent\n                hasSelectedUncurvedPoints={this.hasSelectedUncurvedPoints()}\n                hasSelectedUnpointedPoints={this.hasSelectedUnpointedPoints()}\n                onCopyToClipboard={this.props.onCopyToClipboard}\n                onCurvePoints={this.handleCurvePoints}\n                onDelete={this.handleDelete}\n                onFlipHorizontal={this.handleFlipHorizontal}\n                onFlipVertical={this.handleFlipVertical}\n                onPasteFromClipboard={this.handlePasteFromClipboard}\n                onPointPoints={this.handlePointPoints}\n                onUpdateImage={this.props.onUpdateImage}\n            />\n        );\n    }\n}\n\nModeTools.propTypes = {\n    clearSelectedItems: PropTypes.func.isRequired,\n    format: PropTypes.oneOf(Object.keys(Formats)),\n    mode: PropTypes.oneOf(Object.keys(Modes)),\n    onCopyToClipboard: PropTypes.func.isRequired,\n    onPasteFromClipboard: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    // Listen on selected items to update hasSelectedPoints\n    selectedItems:\n        PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)), // eslint-disable-line react/no-unused-prop-types\n    setSelectedItems: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    format: state.scratchPaint.format,\n    mode: state.scratchPaint.mode,\n    selectedItems: state.scratchPaint.selectedItems\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    setSelectedItems: format => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n    }\n});\n\nexport default CopyPasteHOC(connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ModeTools));\n","import paper from '@scratch/paper';\nimport Modes from '../../lib/modes';\nimport {styleShape} from '../style-path';\nimport {clearSelection} from '../selection';\nimport {getSquareDimensions} from '../math';\nimport BoundingBoxTool from '../selection-tools/bounding-box-tool';\nimport NudgeTool from '../selection-tools/nudge-tool';\n\n/**\n * Tool for drawing ovals.\n */\nclass OvalTool extends paper.Tool {\n    static get TOLERANCE () {\n        return 2;\n    }\n    /**\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setSelectedItems, clearSelectedItems, setCursor, onUpdateImage) {\n        super();\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.onUpdateImage = onUpdateImage;\n        this.boundingBoxTool = new BoundingBoxTool(\n            Modes.OVAL,\n            setSelectedItems,\n            clearSelectedItems,\n            setCursor,\n            onUpdateImage\n        );\n        const nudgeTool = new NudgeTool(Modes.OVAL, this.boundingBoxTool, onUpdateImage);\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseUp = this.handleMouseUp;\n        this.onKeyUp = nudgeTool.onKeyUp;\n        this.onKeyDown = nudgeTool.onKeyDown;\n\n        this.oval = null;\n        this.colorState = null;\n        this.isBoundingBoxMode = null;\n        this.active = false;\n    }\n    getHitOptions () {\n        return {\n            segments: true,\n            stroke: true,\n            curves: true,\n            fill: true,\n            guide: false,\n            match: hitResult =>\n                (hitResult.item.data && (hitResult.item.data.isScaleHandle || hitResult.item.data.isRotHandle)) ||\n                hitResult.item.selected, // Allow hits on bounding box and selected only\n            tolerance: OvalTool.TOLERANCE / paper.view.zoom\n        };\n    }\n    /**\n     * Should be called if the selection changes to update the bounds of the bounding box.\n     * @param {Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        this.boundingBoxTool.onSelectionChanged(selectedItems);\n    }\n    setColorState (colorState) {\n        this.colorState = colorState;\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        if (this.boundingBoxTool.onMouseDown(\n            event, false /* clone */, false /* multiselect */, false /* doubleClicked */, this.getHitOptions())) {\n            this.isBoundingBoxMode = true;\n        } else {\n            this.isBoundingBoxMode = false;\n            clearSelection(this.clearSelectedItems);\n            this.oval = new paper.Shape.Ellipse({\n                point: event.downPoint,\n                size: 0\n            });\n            styleShape(this.oval, this.colorState);\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseDrag(event);\n            return;\n        }\n\n        const downPoint = new paper.Point(event.downPoint.x, event.downPoint.y);\n        const point = new paper.Point(event.point.x, event.point.y);\n        const squareDimensions = getSquareDimensions(event.downPoint, event.point);\n        if (event.modifiers.shift) {\n            this.oval.size = squareDimensions.size.abs();\n        } else {\n            this.oval.size = downPoint.subtract(point);\n        }\n\n        if (event.modifiers.alt) {\n            this.oval.position = downPoint;\n        } else if (event.modifiers.shift) {\n            this.oval.position = squareDimensions.position;\n        } else {\n            this.oval.position = downPoint.subtract(this.oval.size.multiply(0.5));\n        }\n\n        styleShape(this.oval, this.colorState);\n    }\n    handleMouseMove (event) {\n        this.boundingBoxTool.onMouseMove(event, this.getHitOptions());\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseUp(event);\n            this.isBoundingBoxMode = null;\n            return;\n        }\n\n        if (this.oval) {\n            if (Math.abs(this.oval.size.width * this.oval.size.height) < OvalTool.TOLERANCE / paper.view.zoom) {\n                // Tiny oval created unintentionally?\n                this.oval.remove();\n                this.oval = null;\n            } else {\n                const ovalPath = this.oval.toPath(true /* insert */);\n                this.oval.remove();\n                this.oval = null;\n\n                ovalPath.selected = true;\n                this.setSelectedItems();\n                this.onUpdateImage();\n            }\n        }\n        this.active = false;\n    }\n    deactivateTool () {\n        this.boundingBoxTool.deactivateTool();\n    }\n}\n\nexport default OvalTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport ovalIcon from './oval.svg';\n\nconst OvalModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.oval}\n        imgSrc={ovalIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nOvalModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default OvalModeComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport {MIXED} from '../helper/style-path';\nimport ColorStyleProptype from '../lib/color-style-proptype';\nimport GradientTypes from '../lib/gradient-types';\n\nimport {changeFillColor, clearFillGradient, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeStrokeColor, clearStrokeGradient} from '../reducers/stroke-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {setCursor} from '../reducers/cursor';\n\nimport {clearSelection, getSelectedLeafItems} from '../helper/selection';\nimport OvalTool from '../helper/tools/oval-tool';\nimport OvalModeComponent from '../components/oval-mode/oval-mode.jsx';\n\nclass OvalMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool',\n            'validateColorState'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isOvalModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.colorState !== this.props.colorState) {\n            this.tool.setColorState(nextProps.colorState);\n        }\n        if (this.tool && nextProps.selectedItems !== this.props.selectedItems) {\n            this.tool.onSelectionChanged(nextProps.selectedItems);\n        }\n\n        if (nextProps.isOvalModeActive && !this.props.isOvalModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isOvalModeActive && this.props.isOvalModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isOvalModeActive !== this.props.isOvalModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        this.validateColorState();\n\n        this.tool = new OvalTool(\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.setCursor,\n            this.props.onUpdateImage\n        );\n        this.tool.setColorState(this.props.colorState);\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    validateColorState () {\n        // Make sure that at least one of fill/stroke is set, and that MIXED is not one of the colors.\n        // If fill and stroke color are both missing, set fill to default and stroke to transparent.\n        // If exactly one of fill or stroke color is set, set the other one to transparent.\n        const {strokeWidth} = this.props.colorState;\n        const fillColor1 = this.props.colorState.fillColor.primary;\n        let fillColor2 = this.props.colorState.fillColor.secondary;\n        let fillGradient = this.props.colorState.fillColor.gradientType;\n        const strokeColor1 = this.props.colorState.strokeColor.primary;\n        let strokeColor2 = this.props.colorState.strokeColor.secondary;\n        let strokeGradient = this.props.colorState.strokeColor.gradientType;\n\n        if (fillColor2 === MIXED) {\n            this.props.clearFillGradient();\n            fillColor2 = null;\n            fillGradient = GradientTypes.SOLID;\n        }\n        if (strokeColor2 === MIXED) {\n            this.props.clearStrokeGradient();\n            strokeColor2 = null;\n            strokeGradient = GradientTypes.SOLID;\n        }\n\n        const fillColorMissing = fillColor1 === MIXED ||\n            (fillGradient === GradientTypes.SOLID && fillColor1 === null) ||\n            (fillGradient !== GradientTypes.SOLID && fillColor1 === null && fillColor2 === null);\n        const strokeColorMissing = strokeColor1 === MIXED ||\n            strokeWidth === null ||\n            strokeWidth === 0 ||\n            (strokeGradient === GradientTypes.SOLID && strokeColor1 === null) ||\n            (strokeGradient !== GradientTypes.SOLID && strokeColor1 === null && strokeColor2 === null);\n\n        if (fillColorMissing && strokeColorMissing) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n            this.props.clearFillGradient();\n            this.props.onChangeStrokeColor(null);\n            this.props.clearStrokeGradient();\n        } else if (fillColorMissing && !strokeColorMissing) {\n            this.props.onChangeFillColor(null);\n            this.props.clearFillGradient();\n        } else if (!fillColorMissing && strokeColorMissing) {\n            this.props.onChangeStrokeColor(null);\n            this.props.clearStrokeGradient();\n        }\n    }\n    render () {\n        return (\n            <OvalModeComponent\n                isSelected={this.props.isOvalModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nOvalMode.propTypes = {\n    clearFillGradient: PropTypes.func.isRequired,\n    clearStrokeGradient: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    colorState: PropTypes.shape({\n        fillColor: ColorStyleProptype,\n        strokeColor: ColorStyleProptype,\n        strokeWidth: PropTypes.number\n    }).isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    isOvalModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onChangeStrokeColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    selectedItems: PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)),\n    setCursor: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    colorState: state.scratchPaint.color,\n    isOvalModeActive: state.scratchPaint.mode === Modes.OVAL,\n    selectedItems: state.scratchPaint.selectedItems\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearFillGradient: () => {\n        dispatch(clearFillGradient());\n    },\n    clearStrokeGradient: () => {\n        dispatch(clearStrokeGradient());\n    },\n    setCursor: cursorString => {\n        dispatch(setCursor(cursorString));\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), false /* bitmapMode */));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.OVAL));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    },\n    onChangeStrokeColor: strokeColor => {\n        dispatch(changeStrokeColor(strokeColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(OvalMode);\n","import paper from '@scratch/paper';\nimport Modes from '../../lib/modes';\nimport {styleShape} from '../style-path';\nimport {clearSelection} from '../selection';\nimport {getSquareDimensions} from '../math';\nimport BoundingBoxTool from '../selection-tools/bounding-box-tool';\nimport NudgeTool from '../selection-tools/nudge-tool';\n\n/**\n * Tool for drawing rectangles.\n */\nclass RectTool extends paper.Tool {\n    static get TOLERANCE () {\n        return 2;\n    }\n    /**\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setSelectedItems, clearSelectedItems, setCursor, onUpdateImage) {\n        super();\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.onUpdateImage = onUpdateImage;\n        this.boundingBoxTool = new BoundingBoxTool(\n            Modes.RECT,\n            setSelectedItems,\n            clearSelectedItems,\n            setCursor,\n            onUpdateImage\n        );\n        const nudgeTool = new NudgeTool(Modes.RECT, this.boundingBoxTool, onUpdateImage);\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseUp = this.handleMouseUp;\n        this.onKeyUp = nudgeTool.onKeyUp;\n        this.onKeyDown = nudgeTool.onKeyDown;\n\n        this.rect = null;\n        this.colorState = null;\n        this.isBoundingBoxMode = null;\n        this.active = false;\n    }\n    getHitOptions () {\n        return {\n            segments: true,\n            stroke: true,\n            curves: true,\n            fill: true,\n            guide: false,\n            match: hitResult =>\n                (hitResult.item.data && (hitResult.item.data.isScaleHandle || hitResult.item.data.isRotHandle)) ||\n                hitResult.item.selected, // Allow hits on bounding box and selected only\n            tolerance: RectTool.TOLERANCE / paper.view.zoom\n        };\n    }\n    /**\n     * Should be called if the selection changes to update the bounds of the bounding box.\n     * @param {Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        this.boundingBoxTool.onSelectionChanged(selectedItems);\n    }\n    setColorState (colorState) {\n        this.colorState = colorState;\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        if (this.boundingBoxTool.onMouseDown(\n            event, false /* clone */, false /* multiselect */, false /* doubleClicked */, this.getHitOptions())) {\n            this.isBoundingBoxMode = true;\n        } else {\n            this.isBoundingBoxMode = false;\n            clearSelection(this.clearSelectedItems);\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseDrag(event);\n            return;\n        }\n\n        if (this.rect) {\n            this.rect.remove();\n        }\n\n        const rect = new paper.Rectangle(event.downPoint, event.point);\n        const squareDimensions = getSquareDimensions(event.downPoint, event.point);\n        if (event.modifiers.shift) {\n            rect.size = squareDimensions.size.abs();\n        }\n\n        this.rect = new paper.Path.Rectangle(rect);\n        if (event.modifiers.alt) {\n            this.rect.position = event.downPoint;\n        } else if (event.modifiers.shift) {\n            this.rect.position = squareDimensions.position;\n        } else {\n            const dimensions = event.point.subtract(event.downPoint);\n            this.rect.position = event.downPoint.add(dimensions.multiply(0.5));\n        }\n\n        styleShape(this.rect, this.colorState);\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.isBoundingBoxMode) {\n            this.boundingBoxTool.onMouseUp(event);\n            this.isBoundingBoxMode = null;\n            return;\n        }\n\n        if (this.rect) {\n            if (this.rect.area < RectTool.TOLERANCE / paper.view.zoom) {\n                // Tiny rectangle created unintentionally?\n                this.rect.remove();\n                this.rect = null;\n            } else {\n                this.rect.selected = true;\n                this.setSelectedItems();\n                this.onUpdateImage();\n                this.rect = null;\n            }\n        }\n        this.active = false;\n    }\n    handleMouseMove (event) {\n        this.boundingBoxTool.onMouseMove(event, this.getHitOptions());\n    }\n    deactivateTool () {\n        this.boundingBoxTool.deactivateTool();\n    }\n}\n\nexport default RectTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport rectIcon from './rectangle.svg';\n\nconst RectModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.rect}\n        imgSrc={rectIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nRectModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default RectModeComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\nimport {MIXED} from '../helper/style-path';\nimport ColorStyleProptype from '../lib/color-style-proptype';\nimport GradientTypes from '../lib/gradient-types';\n\nimport {changeFillColor, clearFillGradient, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeStrokeColor, clearStrokeGradient} from '../reducers/stroke-style';\nimport {changeMode} from '../reducers/modes';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {setCursor} from '../reducers/cursor';\n\nimport {clearSelection, getSelectedLeafItems} from '../helper/selection';\nimport RectTool from '../helper/tools/rect-tool';\nimport RectModeComponent from '../components/rect-mode/rect-mode.jsx';\n\nclass RectMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool',\n            'validateColorState'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isRectModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.colorState !== this.props.colorState) {\n            this.tool.setColorState(nextProps.colorState);\n        }\n        if (this.tool && nextProps.selectedItems !== this.props.selectedItems) {\n            this.tool.onSelectionChanged(nextProps.selectedItems);\n        }\n\n        if (nextProps.isRectModeActive && !this.props.isRectModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isRectModeActive && this.props.isRectModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isRectModeActive !== this.props.isRectModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        clearSelection(this.props.clearSelectedItems);\n        this.validateColorState();\n\n        this.tool = new RectTool(\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.setCursor,\n            this.props.onUpdateImage\n        );\n        this.tool.setColorState(this.props.colorState);\n        this.tool.activate();\n    }\n    validateColorState () { // TODO move to shared class\n        // Make sure that at least one of fill/stroke is set, and that MIXED is not one of the colors.\n        // If fill and stroke color are both missing, set fill to default and stroke to transparent.\n        // If exactly one of fill or stroke color is set, set the other one to transparent.\n        const {strokeWidth} = this.props.colorState;\n        const fillColor1 = this.props.colorState.fillColor.primary;\n        let fillColor2 = this.props.colorState.fillColor.secondary;\n        let fillGradient = this.props.colorState.fillColor.gradientType;\n        const strokeColor1 = this.props.colorState.strokeColor.primary;\n        let strokeColor2 = this.props.colorState.strokeColor.secondary;\n        let strokeGradient = this.props.colorState.strokeColor.gradientType;\n\n        if (fillColor2 === MIXED) {\n            this.props.clearFillGradient();\n            fillColor2 = null;\n            fillGradient = GradientTypes.SOLID;\n        }\n        if (strokeColor2 === MIXED) {\n            this.props.clearStrokeGradient();\n            strokeColor2 = null;\n            strokeGradient = GradientTypes.SOLID;\n        }\n\n        const fillColorMissing = fillColor1 === MIXED ||\n            (fillGradient === GradientTypes.SOLID && fillColor1 === null) ||\n            (fillGradient !== GradientTypes.SOLID && fillColor1 === null && fillColor2 === null);\n        const strokeColorMissing = strokeColor1 === MIXED ||\n            strokeWidth === null ||\n            strokeWidth === 0 ||\n            (strokeGradient === GradientTypes.SOLID && strokeColor1 === null) ||\n            (strokeGradient !== GradientTypes.SOLID && strokeColor1 === null && strokeColor2 === null);\n\n        if (fillColorMissing && strokeColorMissing) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n            this.props.clearFillGradient();\n            this.props.onChangeStrokeColor(null);\n            this.props.clearStrokeGradient();\n        } else if (fillColorMissing && !strokeColorMissing) {\n            this.props.onChangeFillColor(null);\n            this.props.clearFillGradient();\n        } else if (!fillColorMissing && strokeColorMissing) {\n            this.props.onChangeStrokeColor(null);\n            this.props.clearStrokeGradient();\n        }\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <RectModeComponent\n                isSelected={this.props.isRectModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nRectMode.propTypes = {\n    clearFillGradient: PropTypes.func.isRequired,\n    clearStrokeGradient: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    colorState: PropTypes.shape({\n        fillColor: ColorStyleProptype,\n        strokeColor: ColorStyleProptype,\n        strokeWidth: PropTypes.number\n    }).isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    isRectModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onChangeStrokeColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    selectedItems: PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)),\n    setCursor: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    colorState: state.scratchPaint.color,\n    isRectModeActive: state.scratchPaint.mode === Modes.RECT,\n    selectedItems: state.scratchPaint.selectedItems\n});\nconst mapDispatchToProps = dispatch => ({\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearFillGradient: () => {\n        dispatch(clearFillGradient());\n    },\n    clearStrokeGradient: () => {\n        dispatch(clearStrokeGradient());\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), false /* bitmapMode */));\n    },\n    setCursor: cursorString => {\n        dispatch(setCursor(cursorString));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.RECT));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    },\n    onChangeStrokeColor: strokeColor => {\n        dispatch(changeStrokeColor(strokeColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(RectMode);\n","import {HANDLE_RATIO, snapDeltaToAngle} from '../math';\nimport {getActionBounds} from '../view';\nimport {clearSelection, getSelectedLeafItems, getSelectedSegments} from '../selection';\n\n/** Subtool of ReshapeTool for moving control points. */\nclass PointTool {\n    /**\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setSelectedItems, clearSelectedItems, onUpdateImage) {\n        /**\n         * Deselection often does not happen until mouse up. If the mouse is dragged before\n         * mouse up, deselection is cancelled. This variable keeps track of which paper.Item to deselect.\n         */\n        this.deselectOnMouseUp = null;\n        /**\n         * Delete control point does not happen until mouse up. If the mouse is dragged before\n         * mouse up, delete is cancelled. This variable keeps track of the hitResult that triggers delete.\n         */\n        this.deleteOnMouseUp = null;\n        /**\n         * There are 2 cases for deselection: Deselect this, or deselect everything but this.\n         * When invert deselect is true, deselect everything but the item in deselectOnMouseUp.\n         */\n        this.invertDeselect = false;\n        this.selectedItems = null;\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.lastPoint = null;\n        this.onUpdateImage = onUpdateImage;\n    }\n\n    /**\n     * @param {!object} hitProperties Describes the mouse event\n     * @param {!paper.HitResult} hitProperties.hitResult Data about the location of the mouse click\n     * @param {?boolean} hitProperties.multiselect Whether to multiselect on mouse down (e.g. shift key held)\n     * @param {?boolean} hitProperties.doubleClicked Whether this is the second click in a short time\n     */\n    onMouseDown (hitProperties) {\n        // Remove point\n        if (hitProperties.doubleClicked) {\n            this.deleteOnMouseUp = hitProperties.hitResult;\n        }\n        if (hitProperties.hitResult.segment.selected) {\n            // selected points with no handles get handles if selected again\n            if (hitProperties.multiselect) {\n                this.deselectOnMouseUp = hitProperties.hitResult.segment;\n            } else {\n                this.deselectOnMouseUp = hitProperties.hitResult.segment;\n                this.invertDeselect = true;\n                hitProperties.hitResult.segment.selected = true;\n            }\n        } else {\n            if (!hitProperties.multiselect) {\n                clearSelection(this.clearSelectedItems);\n            }\n            hitProperties.hitResult.segment.selected = true;\n        }\n\n        this.selectedItems = getSelectedLeafItems();\n    }\n    /**\n     * @param {!object} hitProperties Describes the mouse event\n     * @param {!paper.HitResult} hitProperties.hitResult Data about the location of the mouse click\n     * @param {?boolean} hitProperties.multiselect Whether to multiselect on mouse down (e.g. shift key held)\n     */\n    addPoint (hitProperties) {\n        const newSegment = hitProperties.hitResult.item.divideAt(hitProperties.hitResult.location);\n\n        // If we're adding a point in the middle of a straight line, it won't be smooth by default, so smooth it\n        if (!newSegment.hasHandles()) newSegment.smooth();\n\n        hitProperties.hitResult.segment = newSegment;\n        if (!hitProperties.multiselect) {\n            clearSelection(this.clearSelectedItems);\n        }\n        newSegment.selected = true;\n    }\n    removePoint (hitResult) {\n        const index = hitResult.segment.index;\n        hitResult.item.removeSegment(index);\n\n        // Adjust handles of curve before and curve after to account for new curve length\n        const beforeSegment = hitResult.item.segments[index - 1];\n        const afterSegment = hitResult.item.segments[index];\n        const curveLength = beforeSegment ? beforeSegment.curve ? beforeSegment.curve.length : null : null;\n        if (beforeSegment && beforeSegment.handleOut) {\n            if (afterSegment) {\n                beforeSegment.handleOut =\n                    beforeSegment.handleOut.multiply(curveLength * HANDLE_RATIO / beforeSegment.handleOut.length);\n            } else {\n                beforeSegment.handleOut = null;\n            }\n        }\n        if (afterSegment && afterSegment.handleIn) {\n            if (beforeSegment) {\n                afterSegment.handleIn =\n                    afterSegment.handleIn.multiply(curveLength * HANDLE_RATIO / afterSegment.handleIn.length);\n            } else {\n                afterSegment.handleIn = null;\n            }\n        }\n    }\n    onMouseDrag (event) {\n        // A click will deselect, but a drag will not\n        this.deselectOnMouseUp = null;\n        this.invertDeselect = false;\n        this.deleteOnMouseUp = null;\n\n        const point = event.point;\n        const bounds = getActionBounds();\n        point.x = Math.max(bounds.left, Math.min(point.x, bounds.right));\n        point.y = Math.max(bounds.top, Math.min(point.y, bounds.bottom));\n\n        if (!this.lastPoint) this.lastPoint = event.lastPoint;\n        const dragVector = point.subtract(event.downPoint);\n        const delta = point.subtract(this.lastPoint);\n        this.lastPoint = point;\n\n        const selectedSegments = getSelectedSegments();\n        for (const seg of selectedSegments) {\n            // add the point of the segment before the drag started\n            // for later use in the snap calculation\n            if (!seg.origPoint) {\n                seg.origPoint = seg.point.clone();\n            }\n\n            if (event.modifiers.shift) {\n                seg.point = seg.origPoint.add(snapDeltaToAngle(dragVector, Math.PI / 4));\n            } else {\n                seg.point = seg.point.add(delta);\n            }\n        }\n    }\n    onMouseUp () {\n        this.lastPoint = null;\n\n        // resetting the items and segments origin points for the next usage\n        let moved = false;\n        const selectedSegments = getSelectedSegments();\n        for (const seg of selectedSegments) {\n            if (seg.origPoint && !seg.equals(seg.origPoint)) {\n                moved = true;\n            }\n            seg.origPoint = null;\n        }\n\n        // If no drag occurred between mouse down and mouse up, then we can go through with deselect\n        // and delete\n        if (this.deselectOnMouseUp) {\n            if (this.invertDeselect) {\n                clearSelection(this.clearSelectedItems);\n                this.deselectOnMouseUp.selected = true;\n            } else {\n                this.deselectOnMouseUp.selected = false;\n            }\n            this.deselectOnMouseUp = null;\n            this.invertDeselect = false;\n        }\n        if (this.deleteOnMouseUp) {\n            this.removePoint(this.deleteOnMouseUp);\n        }\n        this.selectedItems = null;\n        this.setSelectedItems();\n        if (moved || this.deleteOnMouseUp) {\n            this.deleteOnMouseUp = null;\n            this.onUpdateImage();\n        }\n    }\n}\n\nexport default PointTool;\n","import {clearSelection, getSelectedLeafItems} from '../selection';\n\n/** Sub tool of the Reshape tool for moving handles, which adjust bezier curves. */\nclass HandleTool {\n    /**\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     */\n    constructor (setSelectedItems, clearSelectedItems, onUpdateImage) {\n        this.hitType = null;\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.onUpdateImage = onUpdateImage;\n        this.selectedItems = [];\n    }\n    /**\n     * @param {!object} hitProperties Describes the mouse event\n     * @param {?boolean} hitProperties.multiselect Whether to multiselect on mouse down (e.g. shift key held)\n     *     select the whole group.\n     */\n    onMouseDown (hitProperties) {\n        if (!hitProperties.multiselect) {\n            clearSelection(this.clearSelectedItems);\n        }\n        \n        hitProperties.hitResult.segment.handleIn.selected = true;\n        hitProperties.hitResult.segment.handleOut.selected = true;\n        this.hitType = hitProperties.hitResult.type;\n    }\n    onMouseDrag (event) {\n        this.selectedItems = getSelectedLeafItems();\n\n        for (const item of this.selectedItems) {\n            for (const seg of item.segments) {\n                // add the point of the segment before the drag started\n                // for later use in the snap calculation\n                if (!seg.origPoint) {\n                    seg.origPoint = seg.point.clone();\n                }\n\n                if (seg.handleOut.selected && this.hitType === 'handle-out'){\n                    // if option is pressed or handles have been split,\n                    // they're no longer parallel and move independently\n                    if (event.modifiers.option ||\n                        !seg.handleOut.isColinear(seg.handleIn)) {\n                        seg.handleOut = seg.handleOut.add(event.delta);\n                    } else {\n                        seg.handleOut = seg.handleOut.add(event.delta);\n                        seg.handleIn = seg.handleOut.multiply(-seg.handleIn.length / seg.handleOut.length);\n                    }\n                } else if (seg.handleIn.selected && this.hitType === 'handle-in') {\n                    // if option is pressed or handles have been split,\n                    // they're no longer parallel and move independently\n                    if (event.modifiers.option ||\n                        !seg.handleOut.isColinear(seg.handleIn)) {\n                        seg.handleIn = seg.handleIn.add(event.delta);\n\n                    } else {\n                        seg.handleIn = seg.handleIn.add(event.delta);\n                        seg.handleOut = seg.handleIn.multiply(-seg.handleOut.length / seg.handleIn.length);\n                    }\n                }\n            }\n        }\n    }\n    onMouseUp () {\n        // resetting the items and segments origin points for the next usage\n        let moved = false;\n        for (const item of this.selectedItems) {\n            if (!item.segments) {\n                return;\n            }\n            for (const seg of item.segments) {\n                if (seg.origPoint && !seg.equals(seg.origPoint)) {\n                    moved = true;\n                }\n                seg.origPoint = null;\n            }\n        }\n        if (moved) {\n            this.setSelectedItems();\n            this.onUpdateImage();\n        }\n        this.selectedItems = [];\n    }\n}\n\nexport default HandleTool;\n","import paper from '@scratch/paper';\nimport log from '../../log/log';\nimport keyMirror from 'keymirror';\n\nimport Modes from '../../lib/modes';\nimport {isBoundsItem} from '../item';\nimport {hoverBounds, hoverItem} from '../guides';\nimport {sortItemsByZIndex} from '../math';\nimport {getSelectedLeafItems, getSelectedSegments} from '../selection';\nimport MoveTool from './move-tool';\nimport PointTool from './point-tool';\nimport HandleTool from './handle-tool';\nimport SelectionBoxTool from './selection-box-tool';\n\n/** Modes of the reshape tool, which can do many things depending on how it's used. */\nconst ReshapeModes = keyMirror({\n    FILL: null,\n    POINT: null,\n    HANDLE: null,\n    SELECTION_BOX: null\n});\n\n/**\n * paper.Tool to handle reshape mode, which allows manipulation of control points and\n * handles of path items. Can be used to select items within groups and points within items.\n * Reshape is made up of 4 tools:\n * - Selection box tool, which is activated by clicking an empty area. Draws a box and selects\n *   points and curves inside it\n * - Move tool, which translates items\n * - Point tool, which translates, adds and removes points\n * - Handle tool, which translates handles, changing the shape of curves\n */\nclass ReshapeTool extends paper.Tool {\n    /** Distance within which mouse is considered to be hitting an item */\n    static get TOLERANCE () {\n        return ReshapeTool.HANDLE_RADIUS + ReshapeTool.HANDLE_PADDING;\n    }\n    /**\n     * Units of padding around the visible handle area that will still register clicks as \"touching the handle\"\n     */\n    static get HANDLE_PADDING () {\n        return 1;\n    }\n    /**\n     * Handles' radius, including the stroke\n     */\n    static get HANDLE_RADIUS () {\n        return 5.25;\n    }\n    /** Clicks registered within this amount of time are registered as double clicks */\n    static get DOUBLE_CLICK_MILLIS () {\n        return 250;\n    }\n    /**\n     * @param {function} setHoveredItem Callback to set the hovered item\n     * @param {function} clearHoveredItem Callback to clear the hovered item\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     * @param {!function} switchToTextTool A callback to call to switch to the text tool\n     */\n    constructor (setHoveredItem, clearHoveredItem, setSelectedItems, clearSelectedItems, onUpdateImage,\n        switchToTextTool) {\n        super();\n        this.setHoveredItem = setHoveredItem;\n        this.clearHoveredItem = clearHoveredItem;\n        this.onUpdateImage = onUpdateImage;\n        this.prevHoveredItemId = null;\n        this.lastEvent = null;\n        this.active = false;\n        this.mode = ReshapeModes.SELECTION_BOX;\n        this._modeMap = {};\n        this._modeMap[ReshapeModes.FILL] =\n            new MoveTool(Modes.RESHAPE, setSelectedItems, clearSelectedItems, onUpdateImage, switchToTextTool);\n        this._modeMap[ReshapeModes.POINT] = new PointTool(setSelectedItems, clearSelectedItems, onUpdateImage);\n        this._modeMap[ReshapeModes.HANDLE] = new HandleTool(setSelectedItems, clearSelectedItems, onUpdateImage);\n        this._modeMap[ReshapeModes.SELECTION_BOX] =\n            new SelectionBoxTool(Modes.RESHAPE, setSelectedItems, clearSelectedItems);\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseUp = this.handleMouseUp;\n        this.onKeyUp = this.handleKeyUp;\n        this.onKeyDown = this.handleKeyDown;\n\n        // A handle's size is given in diameter, and each handle has a 2.5-pixel stroke that isn't part of its size:\n        // https://github.com/LLK/paper.js/blob/a187e4c81cc63f3d48c5097b9a9fbddde9f057da/src/item/Item.js#L4480\n        // Size the handles such that clicking on either the stroke or the handle itself will be registered as a drag\n        paper.settings.handleSize = (ReshapeTool.HANDLE_RADIUS * 2) - 2.5;\n    }\n    /**\n     * Returns the hit options for segments to use when conducting hit tests. Segments are only visible\n     * when the shape is selected. Segments take precedence, since they are always over curves and need\n     * to be grabbable. (Segments are the little circles)\n     * @return {object} See paper.Item.hitTest for definition of options\n     */\n    getSelectedSegmentHitOptions () {\n        const hitOptions = {\n            segments: true,\n            tolerance: ReshapeTool.TOLERANCE / paper.view.zoom,\n            match: hitResult => {\n                if (hitResult.type !== 'segment') return false;\n                if (hitResult.item.data && hitResult.item.data.noHover) return false;\n                if (!hitResult.item.selected) return false;\n                return true;\n            }\n        };\n        return hitOptions;\n    }\n    /**\n     * Returns the hit options for handles to use when conducting hit tests. Handles need to be done\n     * separately because we want to ignore hidden handles, but we don't want hidden handles to negate\n     * legitimate hits on other things (like if the handle is over part of the fill). (Handles are the diamonds)\n     * @return {object} See paper.Item.hitTest for definition of options\n     */\n    getHandleHitOptions () {\n        const hitOptions = {\n            handles: true,\n            tolerance: ReshapeTool.TOLERANCE / paper.view.zoom,\n            match: hitResult => {\n                if (hitResult.item.data && hitResult.item.data.noHover) return false;\n                // Only hit test against handles that are visible, that is,\n                // their segment is selected\n                if (!hitResult.segment || !hitResult.segment.selected) return false;\n                // If the entire shape is selected, handles are hidden\n                if (hitResult.item.fullySelected) return false;\n                return true;\n            }\n        };\n        return hitOptions;\n    }\n    /**\n     * Returns the hit options for curves of selected objects, which take precedence over\n     * unselected things and fills.\n     * @return {object} See paper.Item.hitTest for definition of options\n     */\n    getSelectedStrokeHitOptions () {\n        const hitOptions = {\n            segments: false,\n            stroke: false,\n            curves: true,\n            handles: false,\n            fill: false,\n            guide: false,\n            tolerance: ReshapeTool.TOLERANCE / paper.view.zoom,\n            match: hitResult => {\n                if (hitResult.type !== 'curve') return false;\n                if (!hitResult.item.selected) return false;\n                if (hitResult.item.data && hitResult.item.data.noHover) return false;\n                return true;\n            }\n        };\n        return hitOptions;\n    }\n    /**\n     * Returns the hit options for fills and unselected strokes/curves to use when conducting hit tests.\n     * @param {boolean} preselectedOnly True if we should only return results that are already\n     *     selected.\n     * @return {object} See paper.Item.hitTest for definition of options\n     */\n    getUnselectedAndFillHitOptions () {\n        const hitOptions = {\n            fill: true,\n            stroke: true,\n            curves: true,\n            tolerance: ReshapeTool.TOLERANCE / paper.view.zoom,\n            match: hitResult => {\n                if (hitResult.item.data && hitResult.item.data.noHover) return false;\n                return true;\n            }\n        };\n        return hitOptions;\n    }\n    /**\n     * To be called when the hovered item changes. When the select tool hovers over a\n     * new item, it compares against this to see if a hover item change event needs to\n     * be fired.\n     * @param {paper.Item} prevHoveredItemId ID of the highlight item that indicates the mouse is\n     *     over a given item currently\n     */\n    setPrevHoveredItemId (prevHoveredItemId) {\n        this.prevHoveredItemId = prevHoveredItemId;\n    }\n    /**\n     * Given the point at which the mouse is, return the prioritized hit result, or null if nothing was hit.\n     * @param {paper.Point} point Point to hit test on canvas\n     * @return {?paper.HitResult} hitResult\n     */\n    getHitResult (point) {\n        // Prefer hits on segments to other types of hits, since segments always overlap curves.\n        let hitResults =\n            paper.project.hitTestAll(point, this.getSelectedSegmentHitOptions());\n        if (!hitResults.length) {\n            hitResults = paper.project.hitTestAll(point, this.getHandleHitOptions());\n        }\n        if (!hitResults.length) {\n            hitResults = paper.project.hitTestAll(point, this.getSelectedStrokeHitOptions());\n        }\n        if (!hitResults.length) {\n            hitResults = paper.project.hitTestAll(point, this.getUnselectedAndFillHitOptions());\n        }\n        if (!hitResults.length) {\n            return null;\n        }\n\n        // Get highest z-index result\n        let hitResult;\n        for (const result of hitResults) {\n            if (!hitResult || sortItemsByZIndex(hitResult.item, result.item) < 0) {\n                hitResult = result;\n            }\n        }\n        return hitResult;\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n        this.clearHoveredItem();\n\n        // Check if double clicked\n        let doubleClicked = false;\n        if (this.lastEvent) {\n            if ((event.event.timeStamp - this.lastEvent.event.timeStamp) < ReshapeTool.DOUBLE_CLICK_MILLIS) {\n                doubleClicked = true;\n            } else {\n                doubleClicked = false;\n            }\n        }\n        this.lastEvent = event;\n\n        const hitResult = this.getHitResult(event.point);\n        if (!hitResult) {\n            this._modeMap[ReshapeModes.SELECTION_BOX].onMouseDown(event.modifiers.shift);\n            return;\n        }\n\n        const hitProperties = {\n            hitResult: hitResult,\n            clone: event.modifiers.alt,\n            multiselect: event.modifiers.shift,\n            doubleClicked: doubleClicked,\n            subselect: true\n        };\n\n        // If item is not yet selected, don't behave differently depending on if they clicked a segment\n        // (since those were invisible), just select the whole thing as if they clicked the fill.\n        if (!hitResult.item.selected ||\n                hitResult.type === 'fill' ||\n                hitResult.type === 'stroke' ||\n                (hitResult.type !== 'segment' && doubleClicked)) {\n            this.mode = ReshapeModes.FILL;\n            this._modeMap[this.mode].onMouseDown(hitProperties);\n        } else if (hitResult.type === 'segment') {\n            this.mode = ReshapeModes.POINT;\n            this._modeMap[this.mode].onMouseDown(hitProperties);\n        } else if (\n            hitResult.type === 'curve') {\n            this.mode = ReshapeModes.POINT;\n            this._modeMap[this.mode].addPoint(hitProperties);\n            this.onUpdateImage();\n            this._modeMap[this.mode].onMouseDown(hitProperties);\n        } else if (\n            hitResult.type === 'handle-in' ||\n            hitResult.type === 'handle-out') {\n            this.mode = ReshapeModes.HANDLE;\n            this._modeMap[this.mode].onMouseDown(hitProperties);\n        } else {\n            log.warn(`Unhandled hit result type: ${hitResult.type}`);\n            this.mode = ReshapeModes.FILL;\n            this._modeMap[this.mode].onMouseDown(hitProperties);\n        }\n    }\n    handleMouseMove (event) {\n        const hitResult = this.getHitResult(event.point);\n        let hoveredItem;\n\n        if (hitResult) {\n            const item = hitResult.item;\n            if (item.selected) {\n                hoveredItem = null;\n            } else if (isBoundsItem(item)) {\n                hoveredItem = hoverBounds(item);\n            } else {\n                hoveredItem = hoverItem(item);\n            }\n        }\n\n        if ((!hoveredItem && this.prevHoveredItemId) || // There is no longer a hovered item\n                (hoveredItem && !this.prevHoveredItemId) || // There is now a hovered item\n                (hoveredItem && this.prevHoveredItemId &&\n                    hoveredItem.id !== this.prevHoveredItemId)) { // hovered item changed\n            this.setHoveredItem(hoveredItem ? hoveredItem.id : null);\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n        this._modeMap[this.mode].onMouseDrag(event);\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n        if (this.mode === ReshapeModes.SELECTION_BOX) {\n            this._modeMap[this.mode].onMouseUpVector(event);\n        } else {\n            this._modeMap[this.mode].onMouseUp(event);\n        }\n        this.mode = ReshapeModes.SELECTION_BOX;\n        this.active = false;\n    }\n    handleKeyDown (event) {\n        if (event.event.target instanceof HTMLInputElement) {\n            // Ignore nudge if a text input field is focused\n            return;\n        }\n\n        const nudgeAmount = 1 / paper.view.zoom;\n        const selected = getSelectedLeafItems();\n        if (selected.length === 0) return;\n\n        let translation;\n        if (event.key === 'up') {\n            translation = new paper.Point(0, -nudgeAmount);\n        } else if (event.key === 'down') {\n            translation = new paper.Point(0, nudgeAmount);\n        } else if (event.key === 'left') {\n            translation = new paper.Point(-nudgeAmount, 0);\n        } else if (event.key === 'right') {\n            translation = new paper.Point(nudgeAmount, 0);\n        }\n\n        if (translation) {\n            const segments = getSelectedSegments();\n            // If no segments are selected, translate selected paths\n            if (segments.length === 0) {\n                for (const item of selected) {\n                    item.translate(translation);\n                }\n            } else { // Translate segments\n                for (const seg of segments) {\n                    seg.point = seg.point.add(translation);\n                }\n            }\n        }\n    }\n    handleKeyUp (event) {\n        const selected = getSelectedLeafItems();\n        if (selected.length === 0) return;\n\n        if (event.key === 'up' || event.key === 'down' || event.key === 'left' || event.key === 'right') {\n            this.onUpdateImage();\n        }\n    }\n    deactivateTool () {\n        paper.settings.handleSize = 0;\n        this.clearHoveredItem();\n        this.setHoveredItem = null;\n        this.clearHoveredItem = null;\n        this.onUpdateImage = null;\n        this.lastEvent = null;\n    }\n}\n\nexport default ReshapeTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport messages from '../../lib/messages.js';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\n\nimport reshapeIcon from './reshape.svg';\n\nconst ReshapeModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.reshape}\n        imgSrc={reshapeIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nReshapeModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default ReshapeModeComponent;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\n\nimport {changeMode} from '../reducers/modes';\nimport {clearHoveredItem, setHoveredItem} from '../reducers/hover';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {getSelectedLeafItems} from '../helper/selection';\n\nimport ReshapeTool from '../helper/selection-tools/reshape-tool';\nimport ReshapeModeComponent from '../components/reshape-mode/reshape-mode.jsx';\n\nclass ReshapeMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isReshapeModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.hoveredItemId !== this.props.hoveredItemId) {\n            this.tool.setPrevHoveredItemId(nextProps.hoveredItemId);\n        }\n\n        if (nextProps.isReshapeModeActive && !this.props.isReshapeModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isReshapeModeActive && this.props.isReshapeModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isReshapeModeActive !== this.props.isReshapeModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        this.tool = new ReshapeTool(\n            this.props.setHoveredItem,\n            this.props.clearHoveredItem,\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.onUpdateImage,\n            this.props.switchToTextTool\n        );\n        this.tool.setPrevHoveredItemId(this.props.hoveredItemId);\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n        this.hitResult = null;\n    }\n    render () {\n        return (\n            <ReshapeModeComponent\n                isSelected={this.props.isReshapeModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nReshapeMode.propTypes = {\n    clearHoveredItem: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    hoveredItemId: PropTypes.number,\n    isReshapeModeActive: PropTypes.bool.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    setHoveredItem: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired,\n    switchToTextTool: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    isReshapeModeActive: state.scratchPaint.mode === Modes.RESHAPE,\n    hoveredItemId: state.scratchPaint.hoveredItemId\n});\nconst mapDispatchToProps = dispatch => ({\n    setHoveredItem: hoveredItemId => {\n        dispatch(setHoveredItem(hoveredItemId));\n    },\n    clearHoveredItem: () => {\n        dispatch(clearHoveredItem());\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), false /* bitmapMode */));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.RESHAPE));\n    },\n    switchToTextTool: () => {\n        dispatch(changeMode(Modes.TEXT));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(ReshapeMode);\n","import Modes from '../../lib/modes';\n\nimport {getHoveredItem} from '../hover';\nimport {selectRootItem} from '../selection';\nimport BoundingBoxTool from './bounding-box-tool';\nimport NudgeTool from './nudge-tool';\nimport SelectionBoxTool from './selection-box-tool';\nimport paper from '@scratch/paper';\n\n/**\n * paper.Tool that handles select mode. This is made up of 2 subtools.\n * - The selection box tool is active when the user clicks an empty space and drags.\n *   It selects all items in the rectangle.\n * - The bounding box tool is active if the user clicks on a non-empty space. It handles\n *   reshaping the item that was clicked.\n */\nclass SelectTool extends paper.Tool {\n    /** The distance within which mouse events count as a hit against an item */\n    static get TOLERANCE () {\n        return 2;\n    }\n    /** Clicks registered within this amount of time are registered as double clicks */\n    static get DOUBLE_CLICK_MILLIS () {\n        return 250;\n    }\n    /**\n     * @param {function} setHoveredItem Callback to set the hovered item\n     * @param {function} clearHoveredItem Callback to clear the hovered item\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     * @param {!function} switchToTextTool A callback to call to switch to the text tool\n     */\n    constructor (setHoveredItem, clearHoveredItem, setSelectedItems, clearSelectedItems, setCursor, onUpdateImage,\n        switchToTextTool) {\n        super();\n        this.setHoveredItem = setHoveredItem;\n        this.clearHoveredItem = clearHoveredItem;\n        this.onUpdateImage = onUpdateImage;\n        this.boundingBoxTool = new BoundingBoxTool(\n            Modes.SELECT,\n            setSelectedItems,\n            clearSelectedItems,\n            setCursor,\n            onUpdateImage,\n            switchToTextTool\n        );\n        const nudgeTool = new NudgeTool(Modes.SELECT, this.boundingBoxTool, onUpdateImage);\n        this.selectionBoxTool = new SelectionBoxTool(Modes.SELECT, setSelectedItems, clearSelectedItems);\n        this.selectionBoxMode = false;\n        this.prevHoveredItemId = null;\n        this.active = false;\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseMove = this.handleMouseMove;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseUp = this.handleMouseUp;\n        this.onKeyUp = nudgeTool.onKeyUp;\n        this.onKeyDown = nudgeTool.onKeyDown;\n\n        selectRootItem();\n        setSelectedItems();\n        this.boundingBoxTool.setSelectionBounds();\n    }\n    /**\n     * To be called when the hovered item changes. When the select tool hovers over a\n     * new item, it compares against this to see if a hover item change event needs to\n     * be fired.\n     * @param {paper.Item} prevHoveredItemId ID of the highlight item that indicates the mouse is\n     *     over a given item currently\n     */\n    setPrevHoveredItemId (prevHoveredItemId) {\n        this.prevHoveredItemId = prevHoveredItemId;\n    }\n    /**\n     * Should be called if the selection changes to update the bounds of the bounding box.\n     * @param {Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        this.boundingBoxTool.onSelectionChanged(selectedItems);\n    }\n    /**\n     * Returns the hit options to use when conducting hit tests.\n     * @param {boolean} preselectedOnly True if we should only return results that are already\n     *     selected.\n     * @return {object} See paper.Item.hitTest for definition of options\n     */\n    getHitOptions (preselectedOnly) {\n        // Tolerance needs to be scaled when the view is zoomed in in order to represent the same\n        // distance for the user to move the mouse.\n        const hitOptions = {\n            segments: true,\n            stroke: true,\n            curves: true,\n            fill: true,\n            guide: false,\n            tolerance: SelectTool.TOLERANCE / paper.view.zoom,\n            match: hitResult => {\n                // Don't match helper items, unless they are handles.\n                if (!hitResult.item.data || !hitResult.item.data.isHelperItem) return true;\n                return hitResult.item.data.isScaleHandle || hitResult.item.data.isRotHandle;\n            }\n        };\n        if (preselectedOnly) {\n            hitOptions.selected = true;\n        }\n        return hitOptions;\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n        this.clearHoveredItem();\n\n        // Check if double clicked\n        let doubleClicked = false;\n        if (this.lastEvent) {\n            if ((event.event.timeStamp - this.lastEvent.event.timeStamp) < SelectTool.DOUBLE_CLICK_MILLIS) {\n                doubleClicked = true;\n            } else {\n                doubleClicked = false;\n            }\n        }\n        this.lastEvent = event;\n\n        // If bounding box tool does not find an item that was hit, use selection box tool.\n        if (!this.boundingBoxTool\n            .onMouseDown(\n                event,\n                event.modifiers.alt,\n                event.modifiers.shift,\n                doubleClicked,\n                this.getHitOptions(false /* preseelectedOnly */))) {\n            this.selectionBoxMode = true;\n            this.selectionBoxTool.onMouseDown(event.modifiers.shift);\n        }\n    }\n    handleMouseMove (event) {\n        const hoveredItem = getHoveredItem(event, this.getHitOptions());\n        if ((!hoveredItem && this.prevHoveredItemId) || // There is no longer a hovered item\n                (hoveredItem && !this.prevHoveredItemId) || // There is now a hovered item\n                (hoveredItem && this.prevHoveredItemId &&\n                    hoveredItem.id !== this.prevHoveredItemId)) { // hovered item changed\n            this.setHoveredItem(hoveredItem ? hoveredItem.id : null);\n        }\n\n        if (!this.selectionBoxMode) {\n            this.boundingBoxTool.onMouseMove(event, this.getHitOptions(false));\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.selectionBoxMode) {\n            this.selectionBoxTool.onMouseDrag(event);\n        } else {\n            this.boundingBoxTool.onMouseDrag(event);\n        }\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.selectionBoxMode) {\n            this.selectionBoxTool.onMouseUpVector(event);\n        } else {\n            this.boundingBoxTool.onMouseUp(event, this.getHitOptions(false));\n        }\n        this.selectionBoxMode = false;\n        this.active = false;\n    }\n    deactivateTool () {\n        this.clearHoveredItem();\n        this.boundingBoxTool.deactivateTool();\n        this.setHoveredItem = null;\n        this.clearHoveredItem = null;\n        this.onUpdateImage = null;\n        this.boundingBoxTool = null;\n        this.selectionBoxTool = null;\n    }\n}\n\nexport default SelectTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport messages from '../../lib/messages.js';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\n\nimport selectIcon from './select.svg';\n\nconst SelectModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.select}\n        imgSrc={selectIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nSelectModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default SelectModeComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Modes from '../lib/modes';\n\nimport {changeMode} from '../reducers/modes';\nimport {clearHoveredItem, setHoveredItem} from '../reducers/hover';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {setCursor} from '../reducers/cursor';\n\nimport {getSelectedLeafItems} from '../helper/selection';\nimport SelectTool from '../helper/selection-tools/select-tool';\nimport SelectModeComponent from '../components/select-mode/select-mode.jsx';\n\nclass SelectMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isSelectModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool && nextProps.hoveredItemId !== this.props.hoveredItemId) {\n            this.tool.setPrevHoveredItemId(nextProps.hoveredItemId);\n        }\n        if (this.tool && nextProps.selectedItems !== this.props.selectedItems) {\n            this.tool.onSelectionChanged(nextProps.selectedItems);\n        }\n\n        if (nextProps.isSelectModeActive && !this.props.isSelectModeActive) {\n            this.activateTool();\n        } else if (!nextProps.isSelectModeActive && this.props.isSelectModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isSelectModeActive !== this.props.isSelectModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool () {\n        this.tool = new SelectTool(\n            this.props.setHoveredItem,\n            this.props.clearHoveredItem,\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.setCursor,\n            this.props.onUpdateImage,\n            this.props.switchToTextTool\n        );\n        this.tool.activate();\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            <SelectModeComponent\n                isSelected={this.props.isSelectModeActive}\n                onMouseDown={this.props.handleMouseDown}\n            />\n        );\n    }\n}\n\nSelectMode.propTypes = {\n    clearHoveredItem: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    handleMouseDown: PropTypes.func.isRequired,\n    hoveredItemId: PropTypes.number,\n    isSelectModeActive: PropTypes.bool.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    selectedItems: PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)),\n    setCursor: PropTypes.func.isRequired,\n    setHoveredItem: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired,\n    switchToTextTool: PropTypes.func.isRequired\n};\n\nconst mapStateToProps = state => ({\n    isSelectModeActive: state.scratchPaint.mode === Modes.SELECT,\n    hoveredItemId: state.scratchPaint.hoveredItemId,\n    selectedItems: state.scratchPaint.selectedItems\n});\nconst mapDispatchToProps = dispatch => ({\n    setHoveredItem: hoveredItemId => {\n        dispatch(setHoveredItem(hoveredItemId));\n    },\n    clearHoveredItem: () => {\n        dispatch(clearHoveredItem());\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), false /* bitmapMode */));\n    },\n    setCursor: cursorString => {\n        dispatch(setCursor(cursorString));\n    },\n    handleMouseDown: () => {\n        dispatch(changeMode(Modes.SELECT));\n    },\n    switchToTextTool: () => {\n        dispatch(changeMode(Modes.TEXT));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(SelectMode);\n","import {connect} from 'react-redux';\nimport {defineMessages} from 'react-intl';\n\nimport {changeColorIndex} from '../reducers/color-index';\nimport {changeStrokeColor, changeStrokeColor2, changeStrokeGradientType} from '../reducers/stroke-style';\nimport {changeStrokeWidth} from '../reducers/stroke-width';\nimport {openStrokeColor, closeStrokeColor} from '../reducers/modals';\nimport {getSelectedLeafItems} from '../helper/selection';\nimport {setSelectedItems} from '../reducers/selected-items';\nimport Modes, {GradientToolsModes} from '../lib/modes';\nimport {isBitmap} from '../lib/format';\n\nimport makeColorIndicator from './color-indicator.jsx';\n\nconst messages = defineMessages({\n    label: {\n        id: 'paint.paintEditor.stroke',\n        description: 'Label for the color picker for the outline color',\n        defaultMessage: 'Outline'\n    }\n});\n\nconst StrokeColorIndicator = makeColorIndicator(messages.label, true);\n\nconst mapStateToProps = state => ({\n    colorIndex: state.scratchPaint.fillMode.colorIndex,\n    disabled: state.scratchPaint.mode === Modes.BRUSH ||\n        state.scratchPaint.mode === Modes.TEXT ||\n        state.scratchPaint.mode === Modes.FILL,\n    color: state.scratchPaint.color.strokeColor.primary,\n    color2: state.scratchPaint.color.strokeColor.secondary,\n    fillBitmapShapes: state.scratchPaint.fillBitmapShapes,\n    colorModalVisible: state.scratchPaint.modals.strokeColor,\n    format: state.scratchPaint.format,\n    gradientType: state.scratchPaint.color.strokeColor.gradientType,\n    isEyeDropping: state.scratchPaint.color.eyeDropper.active,\n    mode: state.scratchPaint.mode,\n    shouldShowGradientTools: state.scratchPaint.mode in GradientToolsModes,\n    textEditTarget: state.scratchPaint.textEditTarget\n});\n\nconst mapDispatchToProps = dispatch => ({\n    onChangeColorIndex: index => {\n        dispatch(changeColorIndex(index));\n    },\n    onChangeColor: (strokeColor, index) => {\n        if (index === 0) {\n            dispatch(changeStrokeColor(strokeColor));\n        } else if (index === 1) {\n            dispatch(changeStrokeColor2(strokeColor));\n        }\n    },\n    onChangeStrokeWidth: strokeWidth => {\n        dispatch(changeStrokeWidth(strokeWidth));\n    },\n    onOpenColor: () => {\n        dispatch(openStrokeColor());\n    },\n    onCloseColor: () => {\n        dispatch(closeStrokeColor());\n    },\n    onChangeGradientType: gradientType => {\n        dispatch(changeStrokeGradientType(gradientType));\n    },\n    setSelectedItems: format => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(StrokeColorIndicator);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Input from './forms/input.jsx';\nimport InputGroup from './input-group/input-group.jsx';\nimport LiveInputHOC from './forms/live-input-hoc.jsx';\n\nimport {MAX_STROKE_WIDTH} from '../reducers/stroke-width';\n\nconst LiveInput = LiveInputHOC(Input);\nconst StrokeWidthIndicatorComponent = props => (\n    <InputGroup disabled={props.disabled}>\n        <LiveInput\n            range\n            small\n            disabled={props.disabled}\n            max={MAX_STROKE_WIDTH}\n            min=\"0\"\n            type=\"number\"\n            value={props.strokeWidth ? props.strokeWidth : 0}\n            onSubmit={props.onChangeStrokeWidth}\n        />\n    </InputGroup>\n);\n\nStrokeWidthIndicatorComponent.propTypes = {\n    disabled: PropTypes.bool.isRequired,\n    onChangeStrokeWidth: PropTypes.func.isRequired,\n    strokeWidth: PropTypes.number\n};\n\nexport default StrokeWidthIndicatorComponent;\n","import {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport bindAll from 'lodash.bindall';\nimport parseColor from 'parse-color';\nimport {changeStrokeColor, changeStrokeColor2, changeStrokeGradientType} from '../reducers/stroke-style';\nimport {changeStrokeWidth} from '../reducers/stroke-width';\nimport StrokeWidthIndicatorComponent from '../components/stroke-width-indicator.jsx';\nimport {getSelectedLeafItems} from '../helper/selection';\nimport {\n    applyColorToSelection, applyStrokeWidthToSelection, getColorsFromSelection, MIXED\n} from '../helper/style-path';\nimport GradientTypes from '../lib/gradient-types';\nimport Modes from '../lib/modes';\nimport Formats, {isBitmap} from '../lib/format';\n\nclass StrokeWidthIndicator extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'handleChangeStrokeWidth'\n        ]);\n    }\n    handleChangeStrokeWidth (newWidth) {\n        let changed = applyStrokeWidthToSelection(newWidth, this.props.textEditTarget);\n        if ((!this.props.strokeWidth || this.props.strokeWidth === 0) && newWidth > 0) {\n            const currentColorState = getColorsFromSelection(getSelectedLeafItems(), isBitmap(this.props.format));\n\n            // Color counts as null if either both colors are null or the primary color is null and it's solid\n            // TODO: consolidate this check in one place\n            const wasNull = currentColorState.strokeColor === null &&\n                (currentColorState.strokeColor2 === null ||\n                 currentColorState.strokeGradientType === GradientTypes.SOLID);\n\n            if (wasNull) {\n                changed = applyColorToSelection(\n                    '#000',\n                    0, // colorIndex,\n                    true, // isSolidGradient\n                    true, // applyToStroke\n                    this.props.textEditTarget) ||\n                    changed;\n                // If there's no previous stroke color, default to solid black\n                this.props.onChangeStrokeGradientType(GradientTypes.SOLID);\n                this.props.onChangeStrokeColor('#000');\n            } else if (currentColorState.strokeColor !== MIXED) {\n                // Set color state from the selected item's stroke color\n                this.props.onChangeStrokeGradientType(currentColorState.strokeGradientType);\n                this.props.onChangeStrokeColor(parseColor(currentColorState.strokeColor).hex);\n                this.props.onChangeStrokeColor2(parseColor(currentColorState.strokeColor2).hex);\n            }\n        }\n        this.props.onChangeStrokeWidth(newWidth);\n        if (changed) this.props.onUpdateImage();\n    }\n    render () {\n        return (\n            <StrokeWidthIndicatorComponent\n                disabled={this.props.disabled}\n                strokeWidth={this.props.strokeWidth}\n                onChangeStrokeWidth={this.handleChangeStrokeWidth}\n            />\n        );\n    }\n}\n\nconst mapStateToProps = state => ({\n    disabled: state.scratchPaint.mode === Modes.BRUSH ||\n        state.scratchPaint.mode === Modes.TEXT ||\n        state.scratchPaint.mode === Modes.FILL,\n    format: state.scratchPaint.format,\n    strokeWidth: state.scratchPaint.color.strokeWidth,\n    textEditTarget: state.scratchPaint.textEditTarget\n});\nconst mapDispatchToProps = dispatch => ({\n    onChangeStrokeColor: strokeColor => {\n        dispatch(changeStrokeColor(strokeColor));\n    },\n    onChangeStrokeColor2: strokeColor => {\n        dispatch(changeStrokeColor2(strokeColor));\n    },\n    onChangeStrokeGradientType: strokeColor => {\n        dispatch(changeStrokeGradientType(strokeColor));\n    },\n    onChangeStrokeWidth: strokeWidth => {\n        dispatch(changeStrokeWidth(strokeWidth));\n    }\n});\n\nStrokeWidthIndicator.propTypes = {\n    disabled: PropTypes.bool.isRequired,\n    format: PropTypes.oneOf(Object.keys(Formats)),\n    onChangeStrokeColor: PropTypes.func.isRequired,\n    onChangeStrokeColor2: PropTypes.func.isRequired,\n    onChangeStrokeGradientType: PropTypes.func.isRequired,\n    onChangeStrokeWidth: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    strokeWidth: PropTypes.number,\n    textEditTarget: PropTypes.number\n};\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(StrokeWidthIndicator);\n","import paper from '@scratch/paper';\nimport Modes from '../../lib/modes';\nimport {clearSelection, getSelectedLeafItems} from '../selection';\nimport BoundingBoxTool from '../selection-tools/bounding-box-tool';\nimport NudgeTool from '../selection-tools/nudge-tool';\nimport {hoverBounds} from '../guides';\nimport {getRaster} from '../layer';\n\n/**\n * Tool for adding text. Text elements have limited editability; they can't be reshaped,\n * drawn on or erased. This way they can preserve their ability to have the text edited.\n */\nclass TextTool extends paper.Tool {\n    static get TOLERANCE () {\n        return 2;\n    }\n    static get TEXT_EDIT_MODE () {\n        return 'TEXT_EDIT_MODE';\n    }\n    static get SELECT_MODE () {\n        return 'SELECT_MODE';\n    }\n    /** Clicks registered within this amount of time are registered as double clicks */\n    static get DOUBLE_CLICK_MILLIS () {\n        return 250;\n    }\n    /** Typing with no pauses longer than this amount of type will count as 1 action */\n    static get TYPING_TIMEOUT_MILLIS () {\n        return 1000;\n    }\n    static get TEXT_PADDING () {\n        return 8;\n    }\n    /**\n     * @param {HTMLTextAreaElement} textAreaElement dom element for the editable text field\n     * @param {function} setSelectedItems Callback to set the set of selected items in the Redux state\n     * @param {function} clearSelectedItems Callback to clear the set of selected items in the Redux state\n     * @param {function} setCursor Callback to set the visible mouse cursor\n     * @param {!function} onUpdateImage A callback to call when the image visibly changes\n     * @param {!function} setTextEditTarget Call to set text editing target whenever text editing is active\n     * @param {!function} changeFont Call to change the font in the dropdown\n     * @param {?boolean} isBitmap True if text should be rasterized once it's deselected\n     */\n    constructor (textAreaElement, setSelectedItems, clearSelectedItems, setCursor, onUpdateImage, setTextEditTarget,\n        changeFont, isBitmap) {\n        super();\n        this.element = textAreaElement;\n        this.setSelectedItems = setSelectedItems;\n        this.clearSelectedItems = clearSelectedItems;\n        this.onUpdateImage = onUpdateImage;\n        this.setTextEditTarget = setTextEditTarget;\n        this.changeFont = changeFont;\n        const paintMode = isBitmap ? Modes.BIT_TEXT : Modes.TEXT;\n        this.boundingBoxTool = new BoundingBoxTool(\n            paintMode,\n            setSelectedItems,\n            clearSelectedItems,\n            setCursor,\n            onUpdateImage\n        );\n        this.nudgeTool = new NudgeTool(paintMode, this.boundingBoxTool, onUpdateImage);\n        this.isBitmap = isBitmap;\n\n        // We have to set these functions instead of just declaring them because\n        // paper.js tools hook up the listeners in the setter functions.\n        this.onMouseDown = this.handleMouseDown;\n        this.onMouseDrag = this.handleMouseDrag;\n        this.onMouseUp = this.handleMouseUp;\n        this.onMouseMove = this.handleMouseMove;\n        this.onKeyUp = this.handleKeyUp;\n        this.onKeyDown = this.handleKeyDown;\n\n        this.textBox = null;\n        this.guide = null;\n        this.colorState = null;\n        this.mode = null;\n        this.active = false;\n        this.lastTypeEvent = null;\n        this.lastEvent = null;\n\n        // If text selected and then activate this tool, switch to text edit mode for that text\n        // If double click on text while in select mode, does mode change to text mode? Text fully selected by default\n    }\n    getBoundingBoxHitOptions () {\n        return {\n            segments: true,\n            stroke: true,\n            curves: true,\n            fill: true,\n            guide: false,\n            match: hitResult =>\n                (hitResult.item.data && (hitResult.item.data.isScaleHandle || hitResult.item.data.isRotHandle)) ||\n                hitResult.item.selected, // Allow hits on bounding box and selected only\n            tolerance: TextTool.TOLERANCE / paper.view.zoom\n        };\n    }\n    getTextEditHitOptions () {\n        return {\n            class: paper.PointText,\n            segments: true,\n            stroke: true,\n            curves: true,\n            fill: true,\n            guide: false,\n            match: hitResult => hitResult.item &&\n                !(hitResult.item.data && hitResult.item.data.isHelperItem) &&\n                !hitResult.item.selected, // Unselected only\n            tolerance: TextTool.TOLERANCE / paper.view.zoom\n        };\n    }\n    /**\n     * Called when the selection changes to update the bounds of the bounding box.\n     * @param {Array<paper.Item>} selectedItems Array of selected items.\n     */\n    onSelectionChanged (selectedItems) {\n        this.boundingBoxTool.onSelectionChanged(selectedItems);\n        if ((!this.textBox || !this.textBox.parent) &&\n                selectedItems && selectedItems.length === 1 && selectedItems[0] instanceof paper.PointText) {\n            // Infer that an undo occurred and get back the active text\n            this.textBox = selectedItems[0];\n            this.mode = TextTool.SELECT_MODE;\n        }\n    }\n    setFont (font) {\n        this.font = font;\n        if (this.textBox) {\n            this.textBox.font = font;\n        }\n        const selected = getSelectedLeafItems();\n        for (const item of selected) {\n            if (item instanceof paper.PointText) {\n                item.font = font;\n            }\n        }\n        this.element.style.fontFamily = font;\n        this.setSelectedItems();\n    }\n    // Allow other tools to cancel text edit mode\n    onTextEditCancelled () {\n        if (this.mode !== TextTool.TEXT_EDIT_MODE) {\n            return;\n        }\n        this.endTextEdit();\n        this.beginSelect();\n    }\n    /**\n     * Called when the view matrix changes\n     * @param {paper.Matrix} viewMtx applied to paper.view\n     */\n    onViewBoundsChanged (viewMtx) {\n        if (this.mode !== TextTool.TEXT_EDIT_MODE) {\n            return;\n        }\n        this.calculateMatrix(viewMtx);\n    }\n    calculateMatrix (viewMtx) {\n        const textBoxMtx = this.textBox.matrix;\n        const calculated = new paper.Matrix();\n\n        // In RTL, the element is moved relative to its parent's right edge instead of its left\n        // edge. We need to correct for this in order for the element to overlap the object in paper.\n        let tx = 0;\n        if (this.rtl && this.element.parentElement) {\n            tx = -this.element.parentElement.clientWidth;\n        }\n        // The transform origin in paper is x at justification side, y at the baseline of the text.\n        // The offset from (0, 0) to the upper left corner is recorded by internalBounds\n        // (so this.textBox.internalBounds.y is negative).\n        // Move the transform origin down to the text baseline to match paper\n        this.element.style.transformOrigin = `${-this.textBox.internalBounds.x}px ${-this.textBox.internalBounds.y}px`;\n        // Start by translating the element up so that its (0, 0) is now at the text baseline, like in paper\n        calculated.translate(tx, this.textBox.internalBounds.y);\n        calculated.append(viewMtx);\n        calculated.append(textBoxMtx);\n        this.element.style.transform = `matrix(${calculated.a}, ${calculated.b}, ${calculated.c}, ${calculated.d},\n             ${calculated.tx}, ${calculated.ty})`;\n    }\n    setColorState (colorState) {\n        this.colorState = colorState;\n    }\n    /** @param {boolean} isRtl True if paint editor is in right-to-left layout (e.g. Hebrew language) */\n    setRtl (isRtl) {\n        this.rtl = isRtl;\n    }\n    handleMouseMove (event) {\n        const hitResults = paper.project.hitTestAll(event.point, this.getTextEditHitOptions());\n        if (hitResults.length) {\n            document.body.style.cursor = 'text';\n        } else {\n            document.body.style.cursor = 'auto';\n        }\n        this.boundingBoxTool.onMouseMove(event, this.getBoundingBoxHitOptions());\n    }\n    handleMouseDown (event) {\n        if (event.event.button > 0) return; // only first mouse button\n        this.active = true;\n\n        // Check if double clicked\n        const doubleClicked = this.lastEvent &&\n            (event.event.timeStamp - this.lastEvent.event.timeStamp) < TextTool.DOUBLE_CLICK_MILLIS;\n        this.lastEvent = event;\n        if (doubleClicked &&\n                this.mode === TextTool.SELECT_MODE &&\n                this.textBox.hitTest(event.point)) {\n            // Double click in select mode moves you to text edit mode\n            this.endSelect();\n            this.beginTextEdit(this.textBox);\n            this.element.select();\n            return;\n        }\n\n        // In select mode staying in select mode\n        if (this.boundingBoxTool.onMouseDown(\n            event, false /* clone */, false /* multiselect */, false /* doubleClicked */,\n            this.getBoundingBoxHitOptions())) {\n            return;\n        }\n\n        // We clicked away from the item, so end the current mode\n        const lastMode = this.mode;\n        if (this.mode === TextTool.SELECT_MODE) {\n            this.endSelect();\n            if (this.isBitmap) {\n                this.commitText();\n            }\n        } else if (this.mode === TextTool.TEXT_EDIT_MODE) {\n            this.endTextEdit();\n        }\n\n        const hitResults = paper.project.hitTestAll(event.point, this.getTextEditHitOptions());\n        if (hitResults.length) {\n            // Clicking a different text item to begin text edit mode on that item\n            this.beginTextEdit(hitResults[0].item);\n        } else if (lastMode === TextTool.TEXT_EDIT_MODE) {\n            // In text mode clicking away to begin select mode\n            this.beginSelect();\n        } else {\n            // In no mode or select mode clicking away to begin text edit mode\n            this.textBox = new paper.PointText({\n                point: event.point,\n                content: '',\n                font: this.font,\n                fontSize: 40,\n                // TODO: style using gradient\n                // https://github.com/LLK/scratch-paint/issues/1164\n                fillColor: this.colorState.fillColor.primary,\n                // Default leading for both the HTML text area and paper.PointText\n                // is 120%, but for some reason they are slightly off from each other.\n                // This value was obtained experimentally.\n                leading: 46.15\n            });\n            this.beginTextEdit(this.textBox);\n        }\n    }\n    handleMouseDrag (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.mode === TextTool.SELECT_MODE) {\n            this.boundingBoxTool.onMouseDrag(event);\n            return;\n        }\n    }\n    handleMouseUp (event) {\n        if (event.event.button > 0 || !this.active) return; // only first mouse button\n\n        if (this.mode === TextTool.SELECT_MODE) {\n            this.boundingBoxTool.onMouseUp(event);\n            this.isBoundingBoxMode = null;\n            return;\n        }\n\n        this.active = false;\n    }\n    handleKeyUp (event) {\n        if (event.event.target instanceof HTMLInputElement) {\n            // Ignore nudge if a text input field is focused\n            return;\n        }\n\n        if (this.mode === TextTool.SELECT_MODE) {\n            this.nudgeTool.onKeyUp(event);\n        }\n    }\n    handleKeyDown (event) {\n        if (event.event.target instanceof HTMLInputElement) {\n            // Ignore nudge if a text input field is focused\n            return;\n        }\n        if (this.mode === TextTool.TEXT_EDIT_MODE && event.key === 'escape') {\n            this.endTextEdit();\n        }\n        if (this.mode === TextTool.SELECT_MODE) {\n            this.nudgeTool.onKeyDown(event);\n        }\n    }\n    handleTextInput (event) {\n        // Save undo state if you paused typing for long enough.\n        if (this.lastTypeEvent && event.timeStamp - this.lastTypeEvent.timeStamp > TextTool.TYPING_TIMEOUT_MILLIS) {\n            // Select the textbox so that it will be selected if the user performs undo.\n            this.textBox.selected = true;\n            this.onUpdateImage();\n            this.textBox.selected = false;\n        }\n        this.lastTypeEvent = event;\n        if (this.mode === TextTool.TEXT_EDIT_MODE) {\n            this.textBox.content = this.element.value;\n        }\n        this.resizeGuide();\n    }\n    resizeGuide () {\n        if (this.guide) this.guide.remove();\n        this.guide = hoverBounds(this.textBox, TextTool.TEXT_PADDING);\n        this.guide.dashArray = [4, 4];\n        // Prevent line from wrapping\n        this.element.style.width = `${this.textBox.internalBounds.width + 1}px`;\n        this.element.style.height = `${this.textBox.internalBounds.height}px`;\n        // The transform origin needs to be updated in RTL because this.textBox.internalBounds.x\n        // changes as you type\n        if (this.rtl) {\n            this.element.style.transformOrigin =\n                `${-this.textBox.internalBounds.x}px ${-this.textBox.internalBounds.y}px`;\n        }\n    }\n    beginSelect () {\n        if (this.textBox) {\n            this.mode = TextTool.SELECT_MODE;\n            this.textBox.selected = true;\n            this.setSelectedItems();\n        }\n    }\n    endSelect () {\n        clearSelection(this.clearSelectedItems);\n        this.mode = null;\n    }\n    /**\n     * @param {paper.PointText} textBox Text object to begin text edit on\n     */\n    beginTextEdit (textBox) {\n        this.textBox = textBox;\n        this.mode = TextTool.TEXT_EDIT_MODE;\n        this.setTextEditTarget(this.textBox.id);\n        if (this.font !== this.textBox.font) {\n            this.changeFont(this.textBox.font);\n        }\n        this.element.style.fontSize = `${this.textBox.fontSize}px`;\n        this.element.style.lineHeight = this.textBox.leading / this.textBox.fontSize;\n\n        this.element.style.display = 'initial';\n        this.element.value = textBox.content ? textBox.content : '';\n        this.calculateMatrix(paper.view.matrix);\n\n        if (this.rtl) {\n            // make both the textbox and the textarea element grow to the left\n            this.textBox.justification = 'right';\n        } else {\n            this.textBox.justification = 'left';\n        }\n\n        this.element.focus({preventScroll: true});\n        this.eventListener = this.handleTextInput.bind(this);\n        this.element.addEventListener('input', this.eventListener);\n        this.resizeGuide();\n    }\n    endTextEdit () {\n        if (this.mode !== TextTool.TEXT_EDIT_MODE) {\n            return;\n        }\n        this.mode = null;\n\n        // Remove invisible textboxes\n        if (this.textBox && this.textBox.content.trim() === '') {\n            this.textBox.remove();\n            this.textBox = null;\n        }\n\n        // Remove guide\n        if (this.guide) {\n            this.guide.remove();\n            this.guide = null;\n            this.setTextEditTarget();\n        }\n        this.element.style.display = 'none';\n        if (this.eventListener) {\n            this.element.removeEventListener('input', this.eventListener);\n            this.eventListener = null;\n        }\n        if (this.textBox && this.lastTypeEvent) {\n            // Finished editing a textbox, save undo state\n            // Select the textbox so that it will be selected if the user performs undo.\n            this.textBox.selected = true;\n            this.onUpdateImage();\n            this.textBox.selected = false;\n            this.lastTypeEvent = null;\n        }\n    }\n    commitText () {\n        if (!this.textBox || !this.textBox.parent) return;\n\n        // @todo get crisp text https://github.com/LLK/scratch-paint/issues/508\n        const textRaster = this.textBox.rasterize(72, false /* insert */, this.textBox.drawnBounds);\n        this.textBox.remove();\n        this.textBox = null;\n        getRaster().drawImage(\n            textRaster.canvas,\n            new paper.Point(Math.floor(textRaster.bounds.x), Math.floor(textRaster.bounds.y))\n        );\n        this.onUpdateImage();\n    }\n    deactivateTool () {\n        if (this.textBox && this.textBox.content.trim() === '') {\n            this.textBox.remove();\n            this.textBox = null;\n        }\n        this.endTextEdit();\n        if (this.isBitmap) {\n            this.commitText();\n        }\n        this.boundingBoxTool.deactivateTool();\n    }\n}\n\nexport default TextTool;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport messages from '../../lib/messages.js';\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\n\nimport textIcon from './text.svg';\n\nconst TextModeComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.text}\n        imgSrc={textIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nTextModeComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default TextModeComponent;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ToolSelectComponent from '../tool-select-base/tool-select-base.jsx';\nimport messages from '../../lib/messages.js';\nimport textIcon from './text.svg';\n\nconst BitTextComponent = props => (\n    <ToolSelectComponent\n        imgDescriptor={messages.text}\n        imgSrc={textIcon}\n        isSelected={props.isSelected}\n        onMouseDown={props.onMouseDown}\n    />\n);\n\nBitTextComponent.propTypes = {\n    isSelected: PropTypes.bool.isRequired,\n    onMouseDown: PropTypes.func.isRequired\n};\n\nexport default BitTextComponent;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\nimport Fonts from '../lib/fonts';\nimport Modes from '../lib/modes';\nimport ColorStyleProptype from '../lib/color-style-proptype';\nimport {MIXED} from '../helper/style-path';\n\nimport {changeFont} from '../reducers/font';\nimport {changeFillColor, clearFillGradient, DEFAULT_COLOR} from '../reducers/fill-style';\nimport {changeStrokeColor} from '../reducers/stroke-style';\nimport {changeMode} from '../reducers/modes';\nimport {setTextEditTarget} from '../reducers/text-edit-target';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {setCursor} from '../reducers/cursor';\n\nimport {clearSelection, getSelectedLeafItems} from '../helper/selection';\nimport TextTool from '../helper/tools/text-tool';\nimport TextModeComponent from '../components/text-mode/text-mode.jsx';\nimport BitTextModeComponent from '../components/bit-text-mode/bit-text-mode.jsx';\n\nclass TextMode extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'activateTool',\n            'deactivateTool'\n        ]);\n    }\n    componentDidMount () {\n        if (this.props.isTextModeActive) {\n            this.activateTool(this.props);\n        }\n    }\n    componentWillReceiveProps (nextProps) {\n        if (this.tool) {\n            if (nextProps.colorState !== this.props.colorState) {\n                this.tool.setColorState(nextProps.colorState);\n            }\n            if (nextProps.selectedItems !== this.props.selectedItems) {\n                this.tool.onSelectionChanged(nextProps.selectedItems);\n            }\n            if (!nextProps.textEditTarget && this.props.textEditTarget) {\n                this.tool.onTextEditCancelled();\n            }\n            if (!nextProps.viewBounds.equals(this.props.viewBounds)) {\n                this.tool.onViewBoundsChanged(nextProps.viewBounds);\n            }\n            if (nextProps.font !== this.props.font) {\n                this.tool.setFont(nextProps.font);\n            }\n            if (nextProps.rtl !== this.props.rtl) {\n                this.tool.setRtl(nextProps.rtl);\n            }\n        }\n\n        if (nextProps.isTextModeActive && !this.props.isTextModeActive) {\n            this.activateTool(nextProps);\n        } else if (!nextProps.isTextModeActive && this.props.isTextModeActive) {\n            this.deactivateTool();\n        }\n    }\n    shouldComponentUpdate (nextProps) {\n        return nextProps.isTextModeActive !== this.props.isTextModeActive;\n    }\n    componentWillUnmount () {\n        if (this.tool) {\n            this.deactivateTool();\n        }\n    }\n    activateTool (nextProps) {\n        const selected = getSelectedLeafItems();\n        let textBoxToStartEditing = null;\n        if (selected.length === 1 && selected[0] instanceof paper.PointText) {\n            textBoxToStartEditing = selected[0];\n        }\n        clearSelection(this.props.clearSelectedItems);\n        this.props.clearGradient();\n\n        // If fill and stroke color are both mixed/transparent/absent, set fill to default and stroke to transparent.\n        // If exactly one of fill or stroke color is set, set the other one to transparent.\n        // This way the tool won't draw an invisible state, or be unclear about what will be drawn.\n        const {strokeWidth} = nextProps.colorState;\n        const fillColor = nextProps.colorState.fillColor.primary;\n        const strokeColor = nextProps.colorState.strokeColor.primary;\n        const fillColorPresent = fillColor !== MIXED && fillColor !== null;\n        const strokeColorPresent = nextProps.isBitmap ? false :\n            strokeColor !== MIXED && strokeColor !== null && strokeWidth !== null && strokeWidth !== 0;\n        if (!fillColorPresent && !strokeColorPresent) {\n            this.props.onChangeFillColor(DEFAULT_COLOR);\n            this.props.onChangeStrokeColor(null);\n        } else if (!fillColorPresent && strokeColorPresent) {\n            this.props.onChangeFillColor(null);\n        } else if (fillColorPresent && !strokeColorPresent) {\n            this.props.onChangeStrokeColor(null);\n        }\n        if (!nextProps.font || Object.keys(Fonts).map(key => Fonts[key])\n            .indexOf(nextProps.font) < 0) {\n            this.props.changeFont(Fonts.SANS_SERIF);\n        }\n\n        this.tool = new TextTool(\n            this.props.textArea,\n            this.props.setSelectedItems,\n            this.props.clearSelectedItems,\n            this.props.setCursor,\n            this.props.onUpdateImage,\n            this.props.setTextEditTarget,\n            this.props.changeFont,\n            nextProps.isBitmap\n        );\n        this.tool.setRtl(this.props.rtl);\n        this.tool.setColorState(nextProps.colorState);\n        this.tool.setFont(nextProps.font);\n        this.tool.activate();\n        if (textBoxToStartEditing) {\n            this.tool.beginTextEdit(textBoxToStartEditing);\n            this.props.textArea.select();\n        }\n    }\n    deactivateTool () {\n        this.tool.deactivateTool();\n        this.tool.remove();\n        this.tool = null;\n    }\n    render () {\n        return (\n            this.props.isBitmap ?\n                <BitTextModeComponent\n                    isSelected={this.props.isTextModeActive}\n                    onMouseDown={this.props.handleChangeModeBitText}\n                /> :\n                <TextModeComponent\n                    isSelected={this.props.isTextModeActive}\n                    onMouseDown={this.props.handleChangeModeText}\n                />\n        );\n    }\n}\n\nTextMode.propTypes = {\n    changeFont: PropTypes.func.isRequired,\n    clearGradient: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    colorState: PropTypes.shape({\n        fillColor: ColorStyleProptype,\n        strokeColor: ColorStyleProptype,\n        strokeWidth: PropTypes.number\n    }).isRequired,\n    font: PropTypes.string,\n    handleChangeModeBitText: PropTypes.func.isRequired,\n    handleChangeModeText: PropTypes.func.isRequired,\n    isBitmap: PropTypes.bool,\n    isTextModeActive: PropTypes.bool.isRequired,\n    onChangeFillColor: PropTypes.func.isRequired,\n    onChangeStrokeColor: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    rtl: PropTypes.bool,\n    selectedItems: PropTypes.arrayOf(PropTypes.instanceOf(paper.Item)),\n    setCursor: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired,\n    setTextEditTarget: PropTypes.func.isRequired,\n    textArea: PropTypes.instanceOf(Element),\n    textEditTarget: PropTypes.number,\n    viewBounds: PropTypes.instanceOf(paper.Matrix).isRequired\n};\n\nconst mapStateToProps = (state, ownProps) => ({\n    colorState: state.scratchPaint.color,\n    font: state.scratchPaint.font,\n    isTextModeActive: ownProps.isBitmap ?\n        state.scratchPaint.mode === Modes.BIT_TEXT :\n        state.scratchPaint.mode === Modes.TEXT,\n    rtl: state.scratchPaint.layout.rtl,\n    selectedItems: state.scratchPaint.selectedItems,\n    textEditTarget: state.scratchPaint.textEditTarget,\n    viewBounds: state.scratchPaint.viewBounds\n});\nconst mapDispatchToProps = (dispatch, ownProps) => ({\n    changeFont: font => {\n        dispatch(changeFont(font));\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    clearGradient: () => {\n        dispatch(clearFillGradient());\n    },\n    handleChangeModeBitText: () => {\n        dispatch(changeMode(Modes.BIT_TEXT));\n    },\n    handleChangeModeText: () => {\n        dispatch(changeMode(Modes.TEXT));\n    },\n    setCursor: cursorString => {\n        dispatch(setCursor(cursorString));\n    },\n    setSelectedItems: () => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), ownProps.isBitmap));\n    },\n    setTextEditTarget: targetId => {\n        dispatch(setTextEditTarget(targetId));\n    },\n    onChangeFillColor: fillColor => {\n        dispatch(changeFillColor(fillColor));\n    },\n    onChangeStrokeColor: strokeColor => {\n        dispatch(changeStrokeColor(strokeColor));\n    }\n});\n\nexport default connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(TextMode);\n","import paper from '@scratch/paper';\nimport classNames from 'classnames';\nimport {defineMessages, injectIntl, intlShape} from 'react-intl';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport PaperCanvas from '../../containers/paper-canvas.jsx';\nimport ScrollableCanvas from '../../containers/scrollable-canvas.jsx';\n\nimport BitBrushMode from '../../containers/bit-brush-mode.jsx';\nimport BitLineMode from '../../containers/bit-line-mode.jsx';\nimport BitOvalMode from '../../containers/bit-oval-mode.jsx';\nimport BitRectMode from '../../containers/bit-rect-mode.jsx';\nimport BitFillMode from '../../containers/bit-fill-mode.jsx';\nimport BitEraserMode from '../../containers/bit-eraser-mode.jsx';\nimport BitSelectMode from '../../containers/bit-select-mode.jsx';\nimport Box from '../box/box.jsx';\nimport Button from '../button/button.jsx';\nimport ButtonGroup from '../button-group/button-group.jsx';\nimport BrushMode from '../../containers/brush-mode.jsx';\nimport EraserMode from '../../containers/eraser-mode.jsx';\nimport FillColorIndicatorComponent from '../../containers/fill-color-indicator.jsx';\nimport FillMode from '../../containers/fill-mode.jsx';\nimport InputGroup from '../input-group/input-group.jsx';\nimport LineMode from '../../containers/line-mode.jsx';\nimport Loupe from '../loupe/loupe.jsx';\nimport FixedToolsContainer from '../../containers/fixed-tools.jsx';\nimport ModeToolsContainer from '../../containers/mode-tools.jsx';\nimport OvalMode from '../../containers/oval-mode.jsx';\nimport RectMode from '../../containers/rect-mode.jsx';\nimport ReshapeMode from '../../containers/reshape-mode.jsx';\nimport SelectMode from '../../containers/select-mode.jsx';\nimport StrokeColorIndicatorComponent from '../../containers/stroke-color-indicator.jsx';\nimport StrokeWidthIndicatorComponent from '../../containers/stroke-width-indicator.jsx';\nimport TextMode from '../../containers/text-mode.jsx';\n\nimport Formats, {isBitmap, isVector} from '../../lib/format';\nimport styles from './paint-editor.css';\n\nimport bitmapIcon from './icons/bitmap.svg';\nimport zoomInIcon from './icons/zoom-in.svg';\nimport zoomOutIcon from './icons/zoom-out.svg';\nimport zoomResetIcon from './icons/zoom-reset.svg';\n\nconst messages = defineMessages({\n    bitmap: {\n        defaultMessage: 'Convert to Bitmap',\n        description: 'Label for button that converts the paint editor to bitmap mode',\n        id: 'paint.paintEditor.bitmap'\n    },\n    vector: {\n        defaultMessage: 'Convert to Vector',\n        description: 'Label for button that converts the paint editor to vector mode',\n        id: 'paint.paintEditor.vector'\n    }\n});\n\nconst PaintEditorComponent = props => (\n    <div\n        className={styles.editorContainer}\n        dir={props.rtl ? 'rtl' : 'ltr'}\n    >\n        {props.canvas !== null ? ( // eslint-disable-line no-negated-condition\n            <div className={styles.editorContainerTop}>\n                {/* First row */}\n                <div className={styles.row}>\n                    <FixedToolsContainer\n                        canRedo={props.canRedo}\n                        canUndo={props.canUndo}\n                        name={props.name}\n                        onRedo={props.onRedo}\n                        onUndo={props.onUndo}\n                        onUpdateImage={props.onUpdateImage}\n                        onUpdateName={props.onUpdateName}\n                    />\n                </div>\n                {/* Second Row */}\n                {isVector(props.format) ?\n                    <div className={styles.row}>\n                        <InputGroup\n                            className={classNames(\n                                styles.row,\n                                styles.modDashedBorder,\n                                styles.modLabeledIconHeight\n                            )}\n                        >\n                            {/* fill */}\n                            <FillColorIndicatorComponent\n                                className={styles.modMarginAfter}\n                                onUpdateImage={props.onUpdateImage}\n                            />\n                            {/* stroke */}\n                            <StrokeColorIndicatorComponent\n                                onUpdateImage={props.onUpdateImage}\n                            />\n                            {/* stroke width */}\n                            <StrokeWidthIndicatorComponent\n                                onUpdateImage={props.onUpdateImage}\n                            />\n                        </InputGroup>\n                        <InputGroup className={styles.modModeTools}>\n                            <ModeToolsContainer\n                                onUpdateImage={props.onUpdateImage}\n                            />\n                        </InputGroup>\n                    </div> :\n                    isBitmap(props.format) ?\n                        <div className={styles.row}>\n                            <InputGroup\n                                className={classNames(\n                                    styles.row,\n                                    styles.modDashedBorder,\n                                    styles.modLabeledIconHeight\n                                )}\n                            >\n                                {/* fill */}\n                                <FillColorIndicatorComponent\n                                    className={styles.modMarginAfter}\n                                    onUpdateImage={props.onUpdateImage}\n                                />\n                            </InputGroup>\n                            <InputGroup className={styles.modModeTools}>\n                                <ModeToolsContainer\n                                    onUpdateImage={props.onUpdateImage}\n                                />\n                            </InputGroup>\n                        </div> : null\n                }\n            </div>\n        ) : null}\n\n        <div className={styles.topAlignRow}>\n            {/* Modes */}\n            {props.canvas !== null && isVector(props.format) ? ( // eslint-disable-line no-negated-condition\n                <div className={styles.modeSelector}>\n                    <SelectMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <ReshapeMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <BrushMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <EraserMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <FillMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <TextMode\n                        textArea={props.textArea}\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <LineMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <OvalMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <RectMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                </div>\n            ) : null}\n\n            {props.canvas !== null && isBitmap(props.format) ? ( // eslint-disable-line no-negated-condition\n                <div className={styles.modeSelector}>\n                    <BitBrushMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <BitLineMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <BitOvalMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <BitRectMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <TextMode\n                        isBitmap\n                        textArea={props.textArea}\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <BitFillMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <BitEraserMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <BitSelectMode\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                </div>\n            ) : null}\n\n            <div className={styles.controlsContainer}>\n                {/* Canvas */}\n                <ScrollableCanvas\n                    canvas={props.canvas}\n                    hideScrollbars={props.isEyeDropping}\n                    style={styles.canvasContainer}\n                >\n                    <PaperCanvas\n                        canvasRef={props.setCanvas}\n                        image={props.image}\n                        imageFormat={props.imageFormat}\n                        imageId={props.imageId}\n                        rotationCenterX={props.rotationCenterX}\n                        rotationCenterY={props.rotationCenterY}\n                        zoomLevelId={props.zoomLevelId}\n                        onUpdateImage={props.onUpdateImage}\n                    />\n                    <textarea\n                        className={styles.textArea}\n                        ref={props.setTextArea}\n                        spellCheck={false}\n                    />\n                    {props.isEyeDropping &&\n                        props.colorInfo !== null &&\n                        !props.colorInfo.hideLoupe ? (\n                            <Box className={styles.colorPickerWrapper}>\n                                <Loupe\n                                    colorInfo={props.colorInfo}\n                                    pixelRatio={paper.project.view.pixelRatio}\n                                />\n                            </Box>\n                        ) : null\n                    }\n                </ScrollableCanvas>\n                <div className={styles.canvasControls}>\n                    {isVector(props.format) ?\n                        <Button\n                            className={styles.bitmapButton}\n                            onClick={props.onSwitchToBitmap}\n                        >\n                            <img\n                                className={styles.bitmapButtonIcon}\n                                draggable={false}\n                                src={bitmapIcon}\n                            />\n                            <span className={styles.buttonText}>\n                                {props.intl.formatMessage(messages.bitmap)}\n                            </span>\n                        </Button> :\n                        isBitmap(props.format) ?\n                            <Button\n                                className={styles.bitmapButton}\n                                onClick={props.onSwitchToVector}\n                            >\n                                <img\n                                    className={styles.bitmapButtonIcon}\n                                    draggable={false}\n                                    src={bitmapIcon}\n                                />\n                                <span className={styles.buttonText}>\n                                    {props.intl.formatMessage(messages.vector)}\n                                </span>\n                            </Button> : null\n                    }\n                    {/* Zoom controls */}\n                    <InputGroup className={styles.zoomControls}>\n                        <ButtonGroup>\n                            <Button\n                                className={styles.buttonGroupButton}\n                                onClick={props.onZoomOut}\n                            >\n                                <img\n                                    alt=\"Zoom Out\"\n                                    className={styles.buttonGroupButtonIcon}\n                                    draggable={false}\n                                    src={zoomOutIcon}\n                                />\n                            </Button>\n                            <Button\n                                className={styles.buttonGroupButton}\n                                onClick={props.onZoomReset}\n                            >\n                                <img\n                                    alt=\"Zoom Reset\"\n                                    className={styles.buttonGroupButtonIcon}\n                                    draggable={false}\n                                    src={zoomResetIcon}\n                                />\n                            </Button>\n                            <Button\n                                className={styles.buttonGroupButton}\n                                onClick={props.onZoomIn}\n                            >\n                                <img\n                                    alt=\"Zoom In\"\n                                    className={styles.buttonGroupButtonIcon}\n                                    draggable={false}\n                                    src={zoomInIcon}\n                                />\n                            </Button>\n                        </ButtonGroup>\n                    </InputGroup>\n                </div>\n            </div>\n        </div>\n    </div>\n);\n\nPaintEditorComponent.propTypes = {\n    canRedo: PropTypes.func.isRequired,\n    canUndo: PropTypes.func.isRequired,\n    canvas: PropTypes.instanceOf(Element),\n    colorInfo: Loupe.propTypes.colorInfo,\n    format: PropTypes.oneOf(Object.keys(Formats)),\n    image: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.instanceOf(HTMLImageElement)\n    ]),\n    imageFormat: PropTypes.string,\n    imageId: PropTypes.string,\n    intl: intlShape,\n    isEyeDropping: PropTypes.bool,\n    name: PropTypes.string,\n    onRedo: PropTypes.func.isRequired,\n    onSwitchToBitmap: PropTypes.func.isRequired,\n    onSwitchToVector: PropTypes.func.isRequired,\n    onUndo: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    onUpdateName: PropTypes.func.isRequired,\n    onZoomIn: PropTypes.func.isRequired,\n    onZoomOut: PropTypes.func.isRequired,\n    onZoomReset: PropTypes.func.isRequired,\n    rotationCenterX: PropTypes.number,\n    rotationCenterY: PropTypes.number,\n    rtl: PropTypes.bool,\n    setCanvas: PropTypes.func.isRequired,\n    setTextArea: PropTypes.func.isRequired,\n    textArea: PropTypes.instanceOf(Element),\n    zoomLevelId: PropTypes.string\n};\n\nexport default injectIntl(PaintEditorComponent);\n","import bindAll from 'lodash.bindall';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport omit from 'lodash.omit';\nimport {connect} from 'react-redux';\n\nimport CopyPasteHOC from './copy-paste-hoc.jsx';\n\nimport {selectAllBitmap} from '../helper/bitmap';\nimport {clearSelection, deleteSelection, getSelectedLeafItems,\n    selectAllItems, selectAllSegments, getSelectedRootItems} from '../helper/selection';\nimport {groupSelection, shouldShowGroup, ungroupSelection, shouldShowUngroup} from '../helper/group';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {changeMode} from '../reducers/modes';\n\nimport Formats, {isBitmap} from '../lib/format';\nimport Modes from '../lib/modes';\n\nconst KeyboardShortcutsHOC = function (WrappedComponent) {\n    class KeyboardShortcutsWrapper extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'handleKeyPress',\n                'changeToASelectMode',\n                'selectAll'\n            ]);\n        }\n        handleKeyPress (event) {\n            if (event.target instanceof HTMLInputElement) {\n                // Ignore keyboard shortcuts if a text input field is focused\n                return;\n            }\n            // Don't activate keyboard shortcuts during text editing\n            if (this.props.textEditing) return;\n\n            if (event.key === 'Escape') {\n                event.preventDefault();\n                clearSelection(this.props.clearSelectedItems);\n            } else if (event.key === 'Delete' || event.key === 'Backspace') {\n                event.preventDefault();\n                if (deleteSelection(this.props.mode, this.props.onUpdateImage)) {\n                    this.props.setSelectedItems(this.props.format);\n                }\n            } else if (event.metaKey || event.ctrlKey) {\n                if (event.shiftKey && event.key.toLowerCase() === 'z') {\n                    this.props.onRedo();\n                } else if (event.key === 'z') {\n                    this.props.onUndo();\n                } else if (event.shiftKey && event.key.toLowerCase() === 'g') {\n                    if (shouldShowUngroup()) {\n                        ungroupSelection(clearSelectedItems, setSelectedItems, this.props.onUpdateImage);\n                    }\n                    event.preventDefault();\n                } else if (event.key === 'g') {\n                    if (shouldShowGroup()) {\n                        groupSelection(clearSelectedItems, setSelectedItems, this.props.onUpdateImage);\n                    }\n                    event.preventDefault();\n                } else if (event.key === 'c') {\n                    this.props.onCopyToClipboard();\n                } else if (event.key === 'v') {\n                    this.changeToASelectMode();\n                    this.props.onPasteFromClipboard();\n                } else if (event.key === 'x') {\n                    const selectedItems = getSelectedRootItems();\n                    if (selectedItems.length > 0) {\n                        this.props.onCopyToClipboard();\n                        if (deleteSelection(this.props.mode, this.props.onUpdateImage)) {\n                            this.props.setSelectedItems(this.props.format);\n                        }\n                    }\n                    event.preventDefault();\n                } else if (event.key === 'a') {\n                    this.changeToASelectMode();\n                    event.preventDefault();\n                    this.selectAll();\n                }\n            }\n        }\n        changeToASelectMode () {\n            if (isBitmap(this.props.format)) {\n                if (this.props.mode !== Modes.BIT_SELECT) {\n                    this.props.changeMode(Modes.BIT_SELECT);\n                }\n            } else if (this.props.mode !== Modes.SELECT && this.props.mode !== Modes.RESHAPE) {\n                this.props.changeMode(Modes.SELECT);\n            }\n        }\n        selectAll () {\n            if (isBitmap(this.props.format)) {\n                selectAllBitmap(this.props.clearSelectedItems);\n                this.props.setSelectedItems(this.props.format);\n            } else if (this.props.mode === Modes.RESHAPE) {\n                if (selectAllSegments()) this.props.setSelectedItems(this.props.format);\n            } else if (selectAllItems()) {\n                this.props.setSelectedItems(this.props.format);\n            }\n        }\n        render () {\n            const componentProps = omit(this.props, [\n                'changeMode',\n                'clearSelectedItems',\n                'format',\n                'mode',\n                'onCopyToClipboard',\n                'onPasteFromClipboard',\n                'setSelectedItems',\n                'textEditing']);\n            return (\n                <WrappedComponent\n                    onKeyPress={this.handleKeyPress}\n                    {...componentProps}\n                />\n            );\n        }\n    }\n\n    KeyboardShortcutsWrapper.propTypes = {\n        changeMode: PropTypes.func.isRequired,\n        clearSelectedItems: PropTypes.func.isRequired,\n        format: PropTypes.oneOf(Object.keys(Formats)),\n        mode: PropTypes.oneOf(Object.keys(Modes)).isRequired,\n        onCopyToClipboard: PropTypes.func.isRequired,\n        onPasteFromClipboard: PropTypes.func.isRequired,\n        onRedo: PropTypes.func.isRequired,\n        onUndo: PropTypes.func.isRequired,\n        onUpdateImage: PropTypes.func.isRequired,\n        setSelectedItems: PropTypes.func.isRequired,\n        textEditing: PropTypes.bool.isRequired\n    };\n\n    const mapStateToProps = state => ({\n        mode: state.scratchPaint.mode,\n        format: state.scratchPaint.format,\n        textEditing: state.scratchPaint.textEditTarget !== null\n    });\n    const mapDispatchToProps = dispatch => ({\n        changeMode: mode => {\n            dispatch(changeMode(mode));\n        },\n        clearSelectedItems: () => {\n            dispatch(clearSelectedItems());\n        },\n        setSelectedItems: format => {\n            dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n        }\n    });\n\n    return CopyPasteHOC(connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(KeyboardShortcutsWrapper));\n};\n\nexport default KeyboardShortcutsHOC;\n","import paper from '@scratch/paper';\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {connect} from 'react-redux';\nimport bindAll from 'lodash.bindall';\n\nconst SelectionHOC = function (WrappedComponent) {\n    class SelectionComponent extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'removeItemById'\n            ]);\n        }\n        componentDidUpdate (prevProps) {\n            // Hovered item has changed\n            if ((this.props.hoveredItemId && this.props.hoveredItemId !== prevProps.hoveredItemId) ||\n                    (!this.props.hoveredItemId && prevProps.hoveredItemId)) {\n                // Remove the old hover item if any\n                this.removeItemById(prevProps.hoveredItemId);\n            }\n        }\n        removeItemById (itemId) {\n            if (itemId) {\n                const match = paper.project.getItem({\n                    match: item => (item.id === itemId)\n                });\n                if (match) {\n                    match.remove();\n                }\n            }\n        }\n        render () {\n            const {\n                hoveredItemId, // eslint-disable-line no-unused-vars\n                ...props\n            } = this.props;\n            return (\n                <WrappedComponent {...props} />\n            );\n        }\n    }\n    SelectionComponent.propTypes = {\n        hoveredItemId: PropTypes.number\n    };\n\n    const mapStateToProps = state => ({\n        hoveredItemId: state.scratchPaint.hoveredItemId\n    });\n    return connect(\n        mapStateToProps\n    )(SelectionComponent);\n};\n\nexport default SelectionHOC;\n","import bindAll from 'lodash.bindall';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport omit from 'lodash.omit';\nimport {connect} from 'react-redux';\n\nimport {getSelectedLeafItems} from '../helper/selection';\nimport {setSelectedItems} from '../reducers/selected-items';\nimport {\n    performUndo, performRedo, shouldShowUndo, shouldShowRedo\n} from '../helper/undo';\nimport {undo, redo} from '../reducers/undo';\n\nimport Formats, {isBitmap} from '../lib/format';\n\nconst UndoHOC = function (WrappedComponent) {\n    class UndoWrapper extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'handleUndo',\n                'handleRedo',\n                'handleSetSelectedItems',\n                'shouldShowUndo',\n                'shouldShowRedo'\n            ]);\n        }\n        handleUndo () {\n            performUndo(this.props.undoState, this.props.onUndo, this.handleSetSelectedItems, this.props.onUpdateImage);\n        }\n        handleRedo () {\n            performRedo(this.props.undoState, this.props.onRedo, this.handleSetSelectedItems, this.props.onUpdateImage);\n        }\n        handleSetSelectedItems () {\n            this.props.setSelectedItems(this.props.format);\n        }\n        shouldShowUndo () {\n            return shouldShowUndo(this.props.undoState);\n        }\n        shouldShowRedo () {\n            return shouldShowRedo(this.props.undoState);\n        }\n        render () {\n            const componentProps = omit(this.props, [\n                'format',\n                'onUndo',\n                'onRedo',\n                'setSelectedItems',\n                'undoState']);\n            return (\n                <WrappedComponent\n                    shouldShowRedo={this.shouldShowRedo}\n                    shouldShowUndo={this.shouldShowUndo}\n                    onRedo={this.handleRedo}\n                    onUndo={this.handleUndo}\n                    {...componentProps}\n                />\n            );\n        }\n    }\n\n    UndoWrapper.propTypes = {\n        format: PropTypes.oneOf(Object.keys(Formats)),\n        onRedo: PropTypes.func.isRequired,\n        onUndo: PropTypes.func.isRequired,\n        onUpdateImage: PropTypes.func.isRequired,\n        setSelectedItems: PropTypes.func.isRequired,\n        undoState: PropTypes.shape({\n            stack: PropTypes.arrayOf(PropTypes.object).isRequired,\n            pointer: PropTypes.number.isRequired\n        })\n    };\n\n    const mapStateToProps = state => ({\n        format: state.scratchPaint.format,\n        undoState: state.scratchPaint.undo\n    });\n    const mapDispatchToProps = dispatch => ({\n        setSelectedItems: format => {\n            dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n        },\n        onUndo: format => {\n            dispatch(undo(format));\n        },\n        onRedo: format => {\n            dispatch(redo(format));\n        }\n    });\n\n    return connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(UndoWrapper);\n};\n\nexport default UndoHOC;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport log from '../log/log';\nimport bindAll from 'lodash.bindall';\nimport React from 'react';\nimport omit from 'lodash.omit';\nimport {connect} from 'react-redux';\n\nimport {undoSnapshot} from '../reducers/undo';\nimport {setSelectedItems} from '../reducers/selected-items';\nimport {updateViewBounds} from '../reducers/view-bounds';\n\nimport {getSelectedLeafItems} from '../helper/selection';\nimport {getRaster, hideGuideLayers, showGuideLayers} from '../helper/layer';\nimport {commitRectToBitmap, commitOvalToBitmap, commitSelectionToBitmap, getHitBounds} from '../helper/bitmap';\nimport {performSnapshot} from '../helper/undo';\nimport {scaleWithStrokes} from '../helper/math';\n\nimport {\n    ART_BOARD_WIDTH, ART_BOARD_HEIGHT, SVG_ART_BOARD_WIDTH, SVG_ART_BOARD_HEIGHT,\n    setWorkspaceBounds\n} from '../helper/view';\n\nimport Modes, {BitmapModes} from '../lib/modes';\nimport Formats, {isBitmap, isVector} from '../lib/format';\n\nconst UpdateImageHOC = function (WrappedComponent) {\n    class UpdateImageWrapper extends React.Component {\n        constructor (props) {\n            super(props);\n            bindAll(this, [\n                'handleUpdateImage',\n                'handleUpdateBitmap',\n                'handleUpdateVector'\n            ]);\n        }\n        /**\n         * @param {?boolean} skipSnapshot True if the call to update image should not trigger saving\n         * an undo state. For instance after calling undo.\n         * @param {?Formats} formatOverride Normally the mode is used to determine the format of the image,\n         * but the format used can be overridden here. In particular when converting between formats,\n         * the does not accurately represent the format.\n         */\n        handleUpdateImage (skipSnapshot, formatOverride) {\n            // If in the middle of switching formats, rely on the current mode instead of format.\n            const actualFormat = formatOverride ? formatOverride :\n                BitmapModes[this.props.mode] ? Formats.BITMAP : Formats.VECTOR;\n            if (isBitmap(actualFormat)) {\n                this.handleUpdateBitmap(skipSnapshot);\n            } else if (isVector(actualFormat)) {\n                this.handleUpdateVector(skipSnapshot);\n            }\n            // Any time an image update is made, recalculate the bounds of the artwork\n            setWorkspaceBounds();\n            this.props.updateViewBounds(paper.view.matrix);\n        }\n        handleUpdateBitmap (skipSnapshot) {\n            if (!getRaster().loaded) {\n                // In general, callers of updateImage should wait for getRaster().loaded = true before\n                // calling updateImage.\n                // However, this may happen if the user is rapidly undoing/redoing. In this case it's safe\n                // to skip the update.\n                log.warn('Bitmap layer should be loaded before calling updateImage.');\n                return;\n            }\n            // Anything that is selected is on the vector layer waiting to be committed to the bitmap layer.\n            // Plaster the selection onto the raster layer before exporting, if there is a selection.\n            const plasteredRaster = getRaster().getSubRaster(getRaster().bounds); // Clone the raster layer\n            plasteredRaster.remove(); // Don't insert\n            const selectedItems = getSelectedLeafItems();\n            if (selectedItems.length === 1) {\n                const item = selectedItems[0];\n                if (item instanceof paper.Raster) {\n                    if (!item.loaded ||\n                        (item.data &&\n                            item.data.expanded &&\n                            !item.data.expanded.loaded)) {\n                        // This may get logged when rapidly undoing/redoing or changing costumes,\n                        // in which case the warning is not relevant.\n                        log.warn('Bitmap layer should be loaded before calling updateImage.');\n                        return;\n                    }\n                    commitSelectionToBitmap(item, plasteredRaster);\n                } else if (item instanceof paper.Shape && item.type === 'rectangle') {\n                    commitRectToBitmap(item, plasteredRaster);\n                } else if (item instanceof paper.Shape && item.type === 'ellipse') {\n                    commitOvalToBitmap(item, plasteredRaster);\n                } else if (item instanceof paper.PointText) {\n                    const bounds = item.drawnBounds;\n                    const textRaster = item.rasterize(72, false /* insert */, bounds);\n                    plasteredRaster.drawImage(\n                        textRaster.canvas,\n                        new paper.Point(Math.floor(bounds.x), Math.floor(bounds.y))\n                    );\n                }\n            }\n            const rect = getHitBounds(plasteredRaster);\n\n            // Use 1x1 instead of 0x0 for getting imageData since paper.js automagically\n            // returns the full artboard in the case of getImageData(0x0).\n            // Bitmaps need a non-zero width/height in order to be saved as PNG.\n            if (rect.width === 0 || rect.height === 0) {\n                rect.width = rect.height = 1;\n            }\n\n            const imageData = plasteredRaster.getImageData(rect);\n\n            this.props.onUpdateImage(\n                false /* isVector */,\n                imageData,\n                (ART_BOARD_WIDTH / 2) - rect.x,\n                (ART_BOARD_HEIGHT / 2) - rect.y);\n\n            if (!skipSnapshot) {\n                performSnapshot(this.props.undoSnapshot, Formats.BITMAP);\n            }\n        }\n        handleUpdateVector (skipSnapshot) {\n            // Remove viewbox (this would make it export at MAX_WORKSPACE_BOUNDS)\n            let workspaceMask;\n            if (paper.project.activeLayer.clipped) {\n                for (const child of paper.project.activeLayer.children) {\n                    if (child.isClipMask()) {\n                        workspaceMask = child;\n                        break;\n                    }\n                }\n                paper.project.activeLayer.clipped = false;\n                workspaceMask.remove();\n            }\n            const guideLayers = hideGuideLayers(true /* includeRaster */);\n\n            // Export at 0.5x\n            scaleWithStrokes(paper.project.activeLayer, .5, new paper.Point());\n\n            const bounds = paper.project.activeLayer.drawnBounds;\n\n            // `bounds.x` and `bounds.y` are relative to the top left corner,\n            // but if there is no content in the active layer, they default to 0,\n            // making the \"Scratch space\" rotation center ((SVG_ART_BOARD_WIDTH / 2), (SVG_ART_BOARD_HEIGHT / 2)),\n            // aka the upper left corner. Special-case this to be (0, 0), which is the center of the art board.\n            const centerX = bounds.width === 0 ? 0 : (SVG_ART_BOARD_WIDTH / 2) - bounds.x;\n            const centerY = bounds.height === 0 ? 0 : (SVG_ART_BOARD_HEIGHT / 2) - bounds.y;\n\n            this.props.onUpdateImage(\n                true /* isVector */,\n                paper.project.exportSVG({\n                    asString: true,\n                    bounds: 'content',\n                    matrix: new paper.Matrix().translate(-bounds.x, -bounds.y)\n                }),\n                centerX,\n                centerY);\n            scaleWithStrokes(paper.project.activeLayer, 2, new paper.Point());\n            paper.project.activeLayer.applyMatrix = true;\n\n            showGuideLayers(guideLayers);\n\n            // Add back viewbox\n            if (workspaceMask) {\n                paper.project.activeLayer.addChild(workspaceMask);\n                workspaceMask.clipMask = true;\n            }\n\n            if (!skipSnapshot) {\n                performSnapshot(this.props.undoSnapshot, Formats.VECTOR);\n            }\n        }\n        render () {\n            const componentProps = omit(this.props, [\n                'format',\n                'onUpdateImage',\n                'undoSnapshot'\n            ]);\n            return (\n                <WrappedComponent\n                    onUpdateImage={this.handleUpdateImage}\n                    {...componentProps}\n                />\n            );\n        }\n    }\n\n    UpdateImageWrapper.propTypes = {\n        format: PropTypes.oneOf(Object.keys(Formats)),\n        mode: PropTypes.oneOf(Object.keys(Modes)).isRequired,\n        onUpdateImage: PropTypes.func.isRequired,\n        undoSnapshot: PropTypes.func.isRequired,\n        updateViewBounds: PropTypes.func.isRequired\n    };\n\n    const mapStateToProps = state => ({\n        format: state.scratchPaint.format,\n        mode: state.scratchPaint.mode,\n        undoState: state.scratchPaint.undo\n    });\n    const mapDispatchToProps = dispatch => ({\n        setSelectedItems: format => {\n            dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n        },\n        undoSnapshot: snapshot => {\n            dispatch(undoSnapshot(snapshot));\n        },\n        updateViewBounds: matrix => {\n            dispatch(updateViewBounds(matrix));\n        }\n    });\n\n    return connect(\n        mapStateToProps,\n        mapDispatchToProps\n    )(UpdateImageWrapper);\n};\n\nexport default UpdateImageHOC;\n","import paper from '@scratch/paper';\nimport PropTypes from 'prop-types';\nimport log from '../log/log';\nimport React from 'react';\nimport {connect} from 'react-redux';\n\nimport PaintEditorComponent from '../components/paint-editor/paint-editor.jsx';\nimport KeyboardShortcutsHOC from '../hocs/keyboard-shortcuts-hoc.jsx';\nimport SelectionHOC from '../hocs/selection-hoc.jsx';\nimport UndoHOC from '../hocs/undo-hoc.jsx';\nimport UpdateImageHOC from '../hocs/update-image-hoc.jsx';\n\nimport {changeMode} from '../reducers/modes';\nimport {changeFormat} from '../reducers/format';\nimport {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';\nimport {deactivateEyeDropper} from '../reducers/eye-dropper';\nimport {setTextEditTarget} from '../reducers/text-edit-target';\nimport {updateViewBounds} from '../reducers/view-bounds';\nimport {setLayout} from '../reducers/layout';\n\nimport {getSelectedLeafItems} from '../helper/selection';\nimport {convertToBitmap, convertToVector} from '../helper/bitmap';\nimport {resetZoom, zoomOnSelection, OUTERMOST_ZOOM_LEVEL} from '../helper/view';\nimport EyeDropperTool from '../helper/tools/eye-dropper';\n\nimport Modes, {BitmapModes, VectorModes} from '../lib/modes';\nimport Formats, {isBitmap, isVector} from '../lib/format';\nimport bindAll from 'lodash.bindall';\n\n/**\n * The top-level paint editor component. See README for more details on usage.\n *\n * <PaintEditor\n *     image={optionalImage}\n *     imageId={optionalId}\n *     imageFormat='svg'\n *     rotationCenterX={optionalCenterPointX}\n *     rotationCenterY={optionalCenterPointY}\n *     rtl={true|false}\n *     onUpdateImage={handleUpdateImageFunction}\n *     zoomLevelId={optionalZoomLevelId}\n * />\n *\n * `image`: may either be nothing, an SVG string or a base64 data URI)\n * SVGs of up to size 480 x 360 will fit into the view window of the paint editor,\n * while bitmaps of size up to 960 x 720 will fit into the paint editor. One unit\n * of an SVG will appear twice as tall and wide as one unit of a bitmap. This quirky\n * import behavior comes from needing to support legacy projects in Scratch.\n *\n * `imageId`: If this parameter changes, then the paint editor will be cleared, the\n * undo stack reset, and the image re-imported.\n *\n * `imageFormat`: 'svg', 'png', or 'jpg'. Other formats are currently not supported.\n *\n * `rotationCenterX`: x coordinate relative to the top left corner of the sprite of\n * the point that should be centered.\n *\n * `rotationCenterY`: y coordinate relative to the top left corner of the sprite of\n * the point that should be centered.\n *\n * `rtl`: True if the paint editor should be laid out right to left (meant for right\n * to left languages)\n *\n * `onUpdateImage`: A handler called with the new image (either an SVG string or an\n * ImageData) each time the drawing is edited.\n *\n * `zoomLevelId`: All costumes with the same zoom level ID will share the same saved\n * zoom level. When a new zoom level ID is encountered, the paint editor will zoom to\n * fit the current costume comfortably. Leave undefined to perform no zoom to fit.\n */\nclass PaintEditor extends React.Component {\n    static get ZOOM_INCREMENT () {\n        return 0.5;\n    }\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'switchModeForFormat',\n            'onMouseDown',\n            'onMouseUp',\n            'setCanvas',\n            'setTextArea',\n            'startEyeDroppingLoop',\n            'stopEyeDroppingLoop',\n            'handleSetSelectedItems',\n            'handleZoomIn',\n            'handleZoomOut',\n            'handleZoomReset'\n        ]);\n        this.state = {\n            canvas: null,\n            colorInfo: null\n        };\n        this.props.setLayout(this.props.rtl ? 'rtl' : 'ltr');\n    }\n    componentDidMount () {\n        document.addEventListener('keydown', this.props.onKeyPress);\n\n        // document listeners used to detect if a mouse is down outside of the\n        // canvas, and should therefore stop the eye dropper\n        document.addEventListener('mousedown', this.onMouseDown);\n        document.addEventListener('touchstart', this.onMouseDown);\n        document.addEventListener('mouseup', this.onMouseUp);\n        document.addEventListener('touchend', this.onMouseUp);\n    }\n    componentWillReceiveProps (newProps) {\n        if (!isBitmap(this.props.format) && isBitmap(newProps.format)) {\n            this.switchModeForFormat(Formats.BITMAP);\n        } else if (!isVector(this.props.format) && isVector(newProps.format)) {\n            this.switchModeForFormat(Formats.VECTOR);\n        }\n        if (newProps.rtl !== this.props.rtl) {\n            this.props.setLayout(newProps.rtl ? 'rtl' : 'ltr');\n        }\n    }\n    componentDidUpdate (prevProps) {\n        if (this.props.isEyeDropping && !prevProps.isEyeDropping) {\n            this.startEyeDroppingLoop();\n        } else if (!this.props.isEyeDropping && prevProps.isEyeDropping) {\n            this.stopEyeDroppingLoop();\n        } else if (this.props.isEyeDropping && this.props.viewBounds !== prevProps.viewBounds) {\n            if (this.props.previousTool) this.props.previousTool.activate();\n            this.props.onDeactivateEyeDropper();\n            this.stopEyeDroppingLoop();\n        }\n\n        if (this.props.format === Formats.VECTOR && isBitmap(prevProps.format)) {\n            convertToVector(this.props.clearSelectedItems, this.props.onUpdateImage);\n        } else if (isVector(prevProps.format) && this.props.format === Formats.BITMAP) {\n            convertToBitmap(this.props.clearSelectedItems, this.props.onUpdateImage, this.props.fontInlineFn);\n        }\n    }\n    componentWillUnmount () {\n        document.removeEventListener('keydown', this.props.onKeyPress);\n        this.stopEyeDroppingLoop();\n        document.removeEventListener('mousedown', this.onMouseDown);\n        document.removeEventListener('touchstart', this.onMouseDown);\n        document.removeEventListener('mouseup', this.onMouseUp);\n        document.removeEventListener('touchend', this.onMouseUp);\n    }\n    switchModeForFormat (newFormat) {\n        if ((isVector(newFormat) && (this.props.mode in VectorModes)) ||\n            (isBitmap(newFormat) && (this.props.mode in BitmapModes))) {\n            // Format didn't change; no mode change needed\n            return;\n        }\n        if (isVector(newFormat)) {\n            switch (this.props.mode) {\n            case Modes.BIT_BRUSH:\n                this.props.changeMode(Modes.BRUSH);\n                break;\n            case Modes.BIT_LINE:\n                this.props.changeMode(Modes.LINE);\n                break;\n            case Modes.BIT_OVAL:\n                this.props.changeMode(Modes.OVAL);\n                break;\n            case Modes.BIT_RECT:\n                this.props.changeMode(Modes.RECT);\n                break;\n            case Modes.BIT_TEXT:\n                this.props.changeMode(Modes.TEXT);\n                break;\n            case Modes.BIT_FILL:\n                this.props.changeMode(Modes.FILL);\n                break;\n            case Modes.BIT_ERASER:\n                this.props.changeMode(Modes.ERASER);\n                break;\n            case Modes.BIT_SELECT:\n                this.props.changeMode(Modes.SELECT);\n                break;\n            default:\n                log.error(`Mode not handled: ${this.props.mode}`);\n                this.props.changeMode(Modes.BRUSH);\n            }\n        } else if (isBitmap(newFormat)) {\n            switch (this.props.mode) {\n            case Modes.BRUSH:\n                this.props.changeMode(Modes.BIT_BRUSH);\n                break;\n            case Modes.LINE:\n                this.props.changeMode(Modes.BIT_LINE);\n                break;\n            case Modes.OVAL:\n                this.props.changeMode(Modes.BIT_OVAL);\n                break;\n            case Modes.RECT:\n                this.props.changeMode(Modes.BIT_RECT);\n                break;\n            case Modes.TEXT:\n                this.props.changeMode(Modes.BIT_TEXT);\n                break;\n            case Modes.FILL:\n                this.props.changeMode(Modes.BIT_FILL);\n                break;\n            case Modes.ERASER:\n                this.props.changeMode(Modes.BIT_ERASER);\n                break;\n            case Modes.RESHAPE:\n                /* falls through */\n            case Modes.SELECT:\n                this.props.changeMode(Modes.BIT_SELECT);\n                break;\n            default:\n                log.error(`Mode not handled: ${this.props.mode}`);\n                this.props.changeMode(Modes.BIT_BRUSH);\n            }\n        }\n    }\n    handleZoomIn () {\n        // Make the \"next step\" after the outermost zoom level be the default\n        // zoom level (0.5)\n        let zoomIncrement = PaintEditor.ZOOM_INCREMENT;\n        if (paper.view.zoom === OUTERMOST_ZOOM_LEVEL) {\n            zoomIncrement = 0.5 - OUTERMOST_ZOOM_LEVEL;\n        }\n        zoomOnSelection(zoomIncrement);\n        this.props.updateViewBounds(paper.view.matrix);\n        this.handleSetSelectedItems();\n    }\n    handleZoomOut () {\n        zoomOnSelection(-PaintEditor.ZOOM_INCREMENT);\n        this.props.updateViewBounds(paper.view.matrix);\n        this.handleSetSelectedItems();\n    }\n    handleZoomReset () {\n        resetZoom();\n        this.props.updateViewBounds(paper.view.matrix);\n        this.handleSetSelectedItems();\n    }\n    handleSetSelectedItems () {\n        this.props.setSelectedItems(this.props.format);\n    }\n    setCanvas (canvas) {\n        this.setState({canvas: canvas});\n        this.canvas = canvas;\n    }\n    setTextArea (element) {\n        this.setState({textArea: element});\n    }\n    onMouseDown (event) {\n        if (event.target === paper.view.element &&\n                document.activeElement instanceof HTMLInputElement) {\n            document.activeElement.blur();\n        }\n\n        if (event.target !== paper.view.element && event.target !== this.state.textArea) {\n            // Exit text edit mode if you click anywhere outside of canvas\n            this.props.removeTextEditTarget();\n        }\n    }\n    onMouseUp () {\n        if (this.props.isEyeDropping) {\n            const colorString = this.eyeDropper.colorString;\n            const callback = this.props.changeColorToEyeDropper;\n\n            this.eyeDropper.remove();\n            if (!this.eyeDropper.hideLoupe) {\n                // If not hide loupe, that means the click is inside the canvas,\n                // so apply the new color\n                callback(colorString);\n            }\n            if (this.props.previousTool) this.props.previousTool.activate();\n            this.props.onDeactivateEyeDropper();\n            this.stopEyeDroppingLoop();\n        }\n    }\n    startEyeDroppingLoop () {\n        this.eyeDropper = new EyeDropperTool(\n            this.canvas,\n            paper.project.view.bounds.width,\n            paper.project.view.bounds.height,\n            paper.project.view.pixelRatio,\n            paper.view.zoom,\n            paper.project.view.bounds.x,\n            paper.project.view.bounds.y,\n            isBitmap(this.props.format)\n        );\n        this.eyeDropper.pickX = -1;\n        this.eyeDropper.pickY = -1;\n        this.eyeDropper.activate();\n\n        this.intervalId = setInterval(() => {\n            const colorInfo = this.eyeDropper.getColorInfo(\n                this.eyeDropper.pickX,\n                this.eyeDropper.pickY,\n                this.eyeDropper.hideLoupe\n            );\n            if (!colorInfo) return;\n            if (\n                this.state.colorInfo === null ||\n                this.state.colorInfo.x !== colorInfo.x ||\n                this.state.colorInfo.y !== colorInfo.y\n            ) {\n                this.setState({\n                    colorInfo: colorInfo\n                });\n            }\n        }, 30);\n    }\n    stopEyeDroppingLoop () {\n        clearInterval(this.intervalId);\n        this.setState({colorInfo: null});\n    }\n    render () {\n        return (\n            <PaintEditorComponent\n                canRedo={this.props.shouldShowRedo}\n                canUndo={this.props.shouldShowUndo}\n                canvas={this.state.canvas}\n                colorInfo={this.state.colorInfo}\n                format={this.props.format}\n                image={this.props.image}\n                imageFormat={this.props.imageFormat}\n                imageId={this.props.imageId}\n                isEyeDropping={this.props.isEyeDropping}\n                name={this.props.name}\n                rotationCenterX={this.props.rotationCenterX}\n                rotationCenterY={this.props.rotationCenterY}\n                rtl={this.props.rtl}\n                setCanvas={this.setCanvas}\n                setTextArea={this.setTextArea}\n                textArea={this.state.textArea}\n                zoomLevelId={this.props.zoomLevelId}\n                onRedo={this.props.onRedo}\n                onSwitchToBitmap={this.props.handleSwitchToBitmap}\n                onSwitchToVector={this.props.handleSwitchToVector}\n                onUndo={this.props.onUndo}\n                onUpdateImage={this.props.onUpdateImage}\n                onUpdateName={this.props.onUpdateName}\n                onZoomIn={this.handleZoomIn}\n                onZoomOut={this.handleZoomOut}\n                onZoomReset={this.handleZoomReset}\n            />\n        );\n    }\n}\n\nPaintEditor.propTypes = {\n    changeColorToEyeDropper: PropTypes.func,\n    changeMode: PropTypes.func.isRequired,\n    clearSelectedItems: PropTypes.func.isRequired,\n    format: PropTypes.oneOf(Object.keys(Formats)), // Internal, up-to-date data format\n    fontInlineFn: PropTypes.func,\n    handleSwitchToBitmap: PropTypes.func.isRequired,\n    handleSwitchToVector: PropTypes.func.isRequired,\n    image: PropTypes.oneOfType([\n        PropTypes.string,\n        PropTypes.instanceOf(HTMLImageElement)\n    ]),\n    imageFormat: PropTypes.string, // The incoming image's data format, used during import\n    imageId: PropTypes.string,\n    isEyeDropping: PropTypes.bool,\n    mode: PropTypes.oneOf(Object.keys(Modes)).isRequired,\n    name: PropTypes.string,\n    onDeactivateEyeDropper: PropTypes.func.isRequired,\n    onKeyPress: PropTypes.func.isRequired,\n    onRedo: PropTypes.func.isRequired,\n    onUndo: PropTypes.func.isRequired,\n    onUpdateImage: PropTypes.func.isRequired,\n    onUpdateName: PropTypes.func.isRequired,\n    previousTool: PropTypes.shape({ // paper.Tool\n        activate: PropTypes.func.isRequired,\n        remove: PropTypes.func.isRequired\n    }),\n    removeTextEditTarget: PropTypes.func.isRequired,\n    rotationCenterX: PropTypes.number,\n    rotationCenterY: PropTypes.number,\n    rtl: PropTypes.bool,\n    setLayout: PropTypes.func.isRequired,\n    setSelectedItems: PropTypes.func.isRequired,\n    shouldShowRedo: PropTypes.func.isRequired,\n    shouldShowUndo: PropTypes.func.isRequired,\n    updateViewBounds: PropTypes.func.isRequired,\n    viewBounds: PropTypes.instanceOf(paper.Matrix).isRequired,\n    zoomLevelId: PropTypes.string\n};\n\nconst mapStateToProps = state => ({\n    changeColorToEyeDropper: state.scratchPaint.color.eyeDropper.callback,\n    format: state.scratchPaint.format,\n    isEyeDropping: state.scratchPaint.color.eyeDropper.active,\n    mode: state.scratchPaint.mode,\n    previousTool: state.scratchPaint.color.eyeDropper.previousTool,\n    viewBounds: state.scratchPaint.viewBounds\n});\nconst mapDispatchToProps = dispatch => ({\n    changeMode: mode => {\n        dispatch(changeMode(mode));\n    },\n    clearSelectedItems: () => {\n        dispatch(clearSelectedItems());\n    },\n    handleSwitchToBitmap: () => {\n        dispatch(changeFormat(Formats.BITMAP));\n    },\n    handleSwitchToVector: () => {\n        dispatch(changeFormat(Formats.VECTOR));\n    },\n    removeTextEditTarget: () => {\n        dispatch(setTextEditTarget());\n    },\n    setLayout: layout => {\n        dispatch(setLayout(layout));\n    },\n    setSelectedItems: format => {\n        dispatch(setSelectedItems(getSelectedLeafItems(), isBitmap(format)));\n    },\n    onDeactivateEyeDropper: () => {\n        // set redux values to default for eye dropper reducer\n        dispatch(deactivateEyeDropper());\n    },\n    updateViewBounds: matrix => {\n        dispatch(updateViewBounds(matrix));\n    }\n});\n\nexport default UpdateImageHOC(SelectionHOC(UndoHOC(KeyboardShortcutsHOC(connect(\n    mapStateToProps,\n    mapDispatchToProps\n)(PaintEditor)))));\n","import {combineReducers} from 'redux';\nimport eyeDropperReducer from './eye-dropper';\nimport fillColorReducer from './fill-style';\nimport strokeColorReducer from './stroke-style';\nimport strokeWidthReducer from './stroke-width';\n\nexport default combineReducers({\n    eyeDropper: eyeDropperReducer,\n    fillColor: fillColorReducer,\n    strokeColor: strokeColorReducer,\n    strokeWidth: strokeWidthReducer\n});\n","import {combineReducers} from 'redux';\nimport fillModeGradientTypeReducer from './fill-mode-gradient-type';\nimport colorIndexReducer from './color-index';\n\nexport default combineReducers({\n    gradientType: fillModeGradientTypeReducer,\n    colorIndex: colorIndexReducer\n});\n","import {combineReducers} from 'redux';\nimport modeReducer from './modes';\nimport bitBrushSizeReducer from './bit-brush-size';\nimport bitEraserSizeReducer from './bit-eraser-size';\nimport brushModeReducer from './brush-mode';\nimport eraserModeReducer from './eraser-mode';\nimport colorReducer from './color';\nimport clipboardReducer from './clipboard';\nimport cursorReducer from './cursor';\nimport fillBitmapShapesReducer from './fill-bitmap-shapes';\nimport fillModeReducer from './fill-mode';\nimport fontReducer from './font';\nimport formatReducer from './format';\nimport hoverReducer from './hover';\nimport layoutReducer from './layout';\nimport modalsReducer from './modals';\nimport selectedItemReducer from './selected-items';\nimport textEditTargetReducer from './text-edit-target';\nimport viewBoundsReducer from './view-bounds';\nimport undoReducer from './undo';\nimport zoomLevelsReducer from './zoom-levels';\n\nexport default combineReducers({\n    mode: modeReducer,\n    bitBrushSize: bitBrushSizeReducer,\n    bitEraserSize: bitEraserSizeReducer,\n    brushMode: brushModeReducer,\n    color: colorReducer,\n    clipboard: clipboardReducer,\n    cursor: cursorReducer,\n    eraserMode: eraserModeReducer,\n    fillBitmapShapes: fillBitmapShapesReducer,\n    fillMode: fillModeReducer,\n    font: fontReducer,\n    format: formatReducer,\n    hoveredItemId: hoverReducer,\n    layout: layoutReducer,\n    modals: modalsReducer,\n    selectedItems: selectedItemReducer,\n    textEditTarget: textEditTargetReducer,\n    undo: undoReducer,\n    viewBounds: viewBoundsReducer,\n    zoomLevels: zoomLevelsReducer\n});\n","import PaintEditor from './containers/paint-editor.jsx';\nimport ScratchPaintReducer from './reducers/scratch-paint-reducer';\n\nexport {\n    PaintEditor as default,\n    ScratchPaintReducer\n};\n","/**\n * Currently supported locales for the Scratch Project\n * @type {Object} Key Value pairs of locale code: Language name written in the language\n */\n\nconst locales = {\n    'ab': {name: 'Аҧсшәа'},\n    'af': {name: 'Afrikaans'},\n    'ar': {name: 'العربية'},\n    'am': {name: 'አማርኛ'},\n    'an': {name: 'Aragonés'},\n    'ast': {name: 'Asturianu'},\n    'az': {name: 'Azeri'},\n    'id': {name: 'Bahasa Indonesia'},\n    'bn': {name: 'বাংলা'},\n    'be': {name: 'Беларуская'},\n    'bg': {name: 'Български'},\n    'ca': {name: 'Català'},\n    'cs': {name: 'Česky'},\n    'cy': {name: 'Cymraeg'},\n    'da': {name: 'Dansk'},\n    'de': {name: 'Deutsch'},\n    'et': {name: 'Eesti'},\n    'el': {name: 'Ελληνικά'},\n    'en': {name: 'English'},\n    'es': {name: 'Español (España)'},\n    'es-419': {name: 'Español Latinoamericano'},\n    'eo': {name: 'Esperanto'},\n    'eu': {name: 'Euskara'},\n    'fa': {name: 'فارسی'},\n    'fil': {name: 'Filipino'},\n    'fr': {name: 'Français'},\n    'fy': {name: 'Frysk'},\n    'ga': {name: 'Gaeilge'},\n    'gd': {name: 'Gàidhlig'},\n    'gl': {name: 'Galego'},\n    'ko': {name: '한국어'},\n    'ha': {name: 'Hausa'},\n    'hy': {name: 'Հայերեն'},\n    'he': {name: 'עִבְרִית'},\n    'hi': {name: 'हिंदी'},\n    'hr': {name: 'Hrvatski'},\n    'xh': {name: 'isiXhosa'},\n    'zu': {name: 'isiZulu'},\n    'is': {name: 'Íslenska'},\n    'it': {name: 'Italiano'},\n    'ka': {name: 'ქართული ენა'},\n    'kk': {name: 'қазақша'},\n    'qu': {name: 'Kichwa'},\n    'sw': {name: 'Kiswahili'},\n    'ht': {name: 'Kreyòl ayisyen'},\n    'ku': {name: 'Kurdî'},\n    'ckb': {name: 'کوردیی ناوەندی'},\n    'lv': {name: 'Latviešu'},\n    'lt': {name: 'Lietuvių'},\n    'hu': {name: 'Magyar'},\n    'mi': {name: 'Māori'},\n    'mn': {name: 'Монгол хэл'},\n    'nl': {name: 'Nederlands'},\n    'ja': {name: '日本語'},\n    'ja-Hira': {name: 'にほんご'},\n    'nb': {name: 'Norsk Bokmål'},\n    'nn': {name: 'Norsk Nynorsk'},\n    'oc': {name: 'Occitan'},\n    'or': {name: 'ଓଡ଼ିଆ'},\n    'uz': {name: 'Oʻzbekcha'},\n    'th': {name: 'ไทย'},\n    'km': {name: 'ភាសាខ្មែរ'},\n    'pl': {name: 'Polski'},\n    'pt': {name: 'Português'},\n    'pt-br': {name: 'Português Brasileiro'},\n    'rap': {name: 'Rapa Nui'},\n    'ro': {name: 'Română'},\n    'ru': {name: 'Русский'},\n    'nso': {name: 'Sepedi'},\n    'tn': {name: 'Setswana'},\n    'sk': {name: 'Slovenčina'},\n    'sl': {name: 'Slovenščina'},\n    'sr': {name: 'Српски'},\n    'fi': {name: 'Suomi'},\n    'sv': {name: 'Svenska'},\n    'vi': {name: 'Tiếng Việt'},\n    'tr': {name: 'Türkçe'},\n    'uk': {name: 'Українська'},\n    'zh-cn': {name: '简体中文'},\n    'zh-tw': {name: '繁體中文'}\n};\n\nconst customLocales = {\n    'ab': {\n        locale: 'ab',\n        parentLocale: 'ru'\n    },\n    // Aragonese is not in the locale data, using es for Spain\n    'an': {\n        locale: 'an',\n        parentLocale: 'es'\n    },\n    // haitian creole is not in locale-langData\n    'ht': {\n        locale: 'ht',\n        parentLocale: 'fr'\n    },\n    'oc': {\n        locale: 'oc',\n        parentLocale: 'fr'\n    },\n    'rap': {\n        locale: 'rap',\n        parentLocale: 'es'\n    },\n    // TODO: replace zh-cn, zh-tw with zh-Hans and zh-Hant then customLocales is unnecessary\n    'zh-cn': {\n        locale: 'zh-cn',\n        parentLocale: 'zh'\n    },\n    'zh-tw': {\n        locale: 'zh-tw',\n        parentLocale: 'zh'\n    }\n};\n\nconst localeMap = {\n    'aa-dj': 'aa_DJ',\n    'es-419': 'es_419',\n    // ja-Hira: no map - it's 'ja-Hira' on transifex\n    'pt-br': 'pt_BR',\n    'zh-cn': 'zh_CN',\n    'zh-tw': 'zh_TW'\n};\n\n// list of RTL locales supported, and a function to check whether a locale is RTL\nconst rtlLocales = [\n    'ar',\n    'ckb',\n    'fa',\n    'he'\n];\n\nconst isRtl = locale => {\n    return rtlLocales.indexOf(locale) !== -1;\n};\n\nexport {locales as default, customLocales, localeMap, isRtl};\n","// temporarily we have all the locale data in scratch-l10n\n\nimport en from './locale-data/en.js';\nimport af from './locale-data/af.js';\nimport am from './locale-data/am.js';\nimport ar from './locale-data/ar.js';\nimport ast from './locale-data/ast.js';\nimport az from './locale-data/az.js';\nimport be from './locale-data/be.js';\nimport bn from './locale-data/bn.js';\nimport bg from './locale-data/bg.js';\nimport ca from './locale-data/ca.js';\nimport ckb from './locale-data/ckb.js';\nimport cs from './locale-data/cs.js';\nimport cy from './locale-data/cy.js';\nimport da from './locale-data/da.js';\nimport de from './locale-data/de.js';\nimport el from './locale-data/el.js';\nimport eo from './locale-data/eo.js';\nimport es from './locale-data/es.js';\nimport et from './locale-data/et.js';\nimport eu from './locale-data/eu.js';\nimport fa from './locale-data/fa.js';\nimport fi from './locale-data/fi.js';\nimport fil from './locale-data/fil.js';\nimport fr from './locale-data/fr.js';\nimport fy from './locale-data/fy.js';\nimport ga from './locale-data/ga.js';\nimport gd from './locale-data/gd.js';\nimport gl from './locale-data/gl.js';\nimport ha from './locale-data/ha.js';\nimport he from './locale-data/he.js';\nimport hi from './locale-data/hi.js';\nimport hu from './locale-data/hu.js';\nimport hr from './locale-data/hr.js';\nimport hy from './locale-data/hy.js';\nimport id from './locale-data/id.js';\nimport is from './locale-data/is.js';\nimport it from './locale-data/it.js';\nimport ja from './locale-data/ja.js';\nimport ka from './locale-data/ka.js';\nimport kk from './locale-data/kk.js';\nimport ko from './locale-data/ko.js';\nimport km from './locale-data/km.js';\nimport ku from './locale-data/ku.js';\nimport lt from './locale-data/lt.js';\nimport lv from './locale-data/lv.js';\nimport mi from './locale-data/mi.js';\nimport mn from './locale-data/mn.js';\nimport nl from './locale-data/nl.js';\nimport nb from './locale-data/nb.js';\nimport nn from './locale-data/nn.js';\nimport nso from './locale-data/nso.js';\nimport or from './locale-data/or.js';\nimport pl from './locale-data/pl.js';\nimport pt from './locale-data/pt.js';\nimport qu from './locale-data/qu.js';\nimport ro from './locale-data/ro.js';\nimport ru from './locale-data/ru.js';\nimport sl from './locale-data/sl.js';\nimport sk from './locale-data/sk.js';\nimport sr from './locale-data/sr.js';\nimport sv from './locale-data/sv.js';\nimport sw from './locale-data/sw.js';\nimport th from './locale-data/th.js';\nimport tr from './locale-data/tr.js';\nimport tn from './locale-data/tn.js';\nimport uk from './locale-data/uk.js';\nimport uz from './locale-data/uz.js';\nimport vi from './locale-data/vi.js';\nimport xh from './locale-data/xh.js';\nimport zh from './locale-data/zh.js';\nimport zu from './locale-data/zu.js';\n\nimport {customLocales} from './supported-locales.mjs';\n\nlet localeData = [].concat(\n    en,\n    af,\n    am,\n    ar,\n    ast,\n    az,\n    be,\n    bg,\n    bn,\n    ca,\n    ckb,\n    cs,\n    cy,\n    da,\n    de,\n    el,\n    eo,\n    es,\n    et,\n    eu,\n    fa,\n    fi,\n    fil,\n    fr,\n    fy,\n    ga,\n    gd,\n    gl,\n    ha,\n    he,\n    hi,\n    hu,\n    hr,\n    hy,\n    id,\n    is,\n    it,\n    ja,\n    ka,\n    kk,\n    ko,\n    km,\n    ku,\n    lt,\n    lv,\n    mi,\n    mn,\n    nl,\n    nb,\n    nn,\n    nso,\n    or,\n    pl,\n    pt,\n    sl,\n    sk,\n    sr,\n    sv,\n    sw,\n    qu,\n    ro,\n    ru,\n    th,\n    tn,\n    tr,\n    uk,\n    uz,\n    vi,\n    xh,\n    zh,\n    zu\n);\n\nfor (const lang in customLocales) {\n    localeData.push(customLocales[lang]);\n}\n\nexport {\n    localeData as default // data expected for initializing ReactIntl.addLocaleData\n};\n","import localeData from './locale-data.mjs';\nimport locales, {localeMap, isRtl} from './supported-locales.mjs';\nexport {locales as default, localeData, localeMap, isRtl};\n","// GENERATED FILE:\nexport default {\n  \"ab\": {\n    \"paint.paintEditor.hue\": \"Аԥштәы\",\n    \"paint.paintEditor.saturation\": \"Аԥштәылгазаара\",\n    \"paint.paintEditor.brightness\": \"Ажжара\",\n    \"gui.comingSoon.message1\": \"Шәгәы шәырҭынч, ари ҳара аус адулара ҳаҿуп {emoji}\",\n    \"gui.comingSoon.message2\": \"Иаарласны...\",\n    \"gui.comingSoon.message3\": \"Ари, ҳара аус адулара ҳаҿуп {emoji}\",\n    \"paint.paintEditor.costume\": \"Акостиум\",\n    \"paint.paintEditor.group\": \"Иргәыԥтәуп\",\n    \"paint.paintEditor.ungroup\": \"Аргәыԥра ықәгатәуп\",\n    \"paint.paintEditor.undo\": \"Иаҟәыхтәуп\",\n    \"paint.paintEditor.redo\": \"Ирхынҳәтәуп\",\n    \"paint.paintEditor.forward\": \"Ԥхьаҟа\",\n    \"paint.paintEditor.backward\": \"Шьҭахьҟа\",\n    \"paint.paintEditor.front\": \"Аԥхьатәи аплан ахь\",\n    \"paint.paintEditor.back\": \"Шьҭахьҟа\",\n    \"paint.paintEditor.more\": \"Иҵегь\",\n    \"paint.modeTools.brushSize\": \"Ашәагаа\",\n    \"paint.modeTools.eraserSize\": \"Аныхга аҭбаара\",\n    \"paint.modeTools.copy\": \"Акопиа ахыхтәуп\",\n    \"paint.modeTools.paste\": \"Иҭаргылатәуп\",\n    \"paint.modeTools.delete\": \"Ианыхтәуп\",\n    \"paint.modeTools.curved\": \"Архәақәа рахь\",\n    \"paint.modeTools.pointed\": \"Ирҵарқәоу рахь\",\n    \"paint.modeTools.thickness\": \"Ашәпара\",\n    \"paint.modeTools.flipHorizontal\": \"Горизонталла ианырԥшртәуп\",\n    \"paint.modeTools.flipVertical\": \"Вертикалла ианырԥштәуп\",\n    \"paint.modeTools.filled\": \"Иҭарҭәоу\",\n    \"paint.modeTools.outlined\": \"Иҿыкәыршоу\",\n    \"paint.paintEditor.bitmap\": \"Аконвертациа арастртә графика ахь\",\n    \"paint.paintEditor.vector\": \"Аконвертациа авектортә графика ахь \",\n    \"paint.paintEditor.fill\": \"Аҭарҭәара\",\n    \"paint.paintEditor.stroke\": \"Аконтур\",\n    \"paint.brushMode.brush\": \"Ашәыга\",\n    \"paint.eraserMode.eraser\": \"Аныхга\",\n    \"paint.fillMode.fill\": \"Аҭарҭәара\",\n    \"paint.lineMode.line\": \"Аҵәаӷәа\",\n    \"paint.ovalMode.oval\": \"Агьежь\",\n    \"paint.rectMode.rect\": \"Акәакьҭаиаша\",\n    \"paint.reshapeMode.reshape\": \"Аформа аԥсахра\",\n    \"paint.roundedRectMode.roundedRect\": \"Ихаргьежьу акәакьҭаиаша\",\n    \"paint.selectMode.select\": \"Иалхтәуп\",\n    \"paint.textMode.text\": \"Атекст\",\n    \"paint.colorPicker.swap\": \"Иалаԥсахтәуп\"\n  },\n  \"af\": {\n    \"paint.paintEditor.hue\": \"Kleur\",\n    \"paint.paintEditor.saturation\": \"Versadiging\",\n    \"paint.paintEditor.brightness\": \"Helderheid\",\n    \"gui.comingSoon.message1\": \"Moet nie bekommer nie, ons is op dit {emoji}\",\n    \"gui.comingSoon.message2\": \"Kom Binnekort...\",\n    \"gui.comingSoon.message3\": \"Ons werk daaraan{emoji}\",\n    \"paint.paintEditor.costume\": \"Kostuum\",\n    \"paint.paintEditor.group\": \"Groepeer\",\n    \"paint.paintEditor.ungroup\": \"Ontgroepeer\",\n    \"paint.paintEditor.undo\": \"Ontdoen\",\n    \"paint.paintEditor.redo\": \"Herdoen\",\n    \"paint.paintEditor.forward\": \"Vorentoe\",\n    \"paint.paintEditor.backward\": \"Agteruit\",\n    \"paint.paintEditor.front\": \"Voorkant\",\n    \"paint.paintEditor.back\": \"Terug\",\n    \"paint.paintEditor.more\": \"Meer\",\n    \"paint.modeTools.brushSize\": \"Grootte\",\n    \"paint.modeTools.eraserSize\": \"Uitveër grootte\",\n    \"paint.modeTools.copy\": \"Kopie\",\n    \"paint.modeTools.paste\": \"Plak\",\n    \"paint.modeTools.delete\": \"Verwyder\",\n    \"paint.modeTools.curved\": \"Kurwe\",\n    \"paint.modeTools.pointed\": \"Punt\",\n    \"paint.modeTools.thickness\": \"Dikte\",\n    \"paint.modeTools.flipHorizontal\": \"Draai Horisontaal\",\n    \"paint.modeTools.flipVertical\": \"Draai Vertikaal\",\n    \"paint.modeTools.filled\": \"Gevul\",\n    \"paint.modeTools.outlined\": \"Buitelyn \",\n    \"paint.paintEditor.bitmap\": \"Omskakel na Bitmap\",\n    \"paint.paintEditor.vector\": \"Omskakel in Vektor\",\n    \"paint.paintEditor.fill\": \"Vul\",\n    \"paint.paintEditor.stroke\": \"Buitelyn\",\n    \"paint.brushMode.brush\": \"Kwas\",\n    \"paint.eraserMode.eraser\": \"Uitveër\",\n    \"paint.fillMode.fill\": \"Vul\",\n    \"paint.lineMode.line\": \"Lyn\",\n    \"paint.ovalMode.oval\": \"Sirkel\",\n    \"paint.rectMode.rect\": \"Reghoek\",\n    \"paint.reshapeMode.reshape\": \"Hervorm\",\n    \"paint.roundedRectMode.roundedRect\": \"Geronde Reghoek\",\n    \"paint.selectMode.select\": \"Kies\",\n    \"paint.textMode.text\": \"Teks\",\n    \"paint.colorPicker.swap\": \"Ruil om\"\n  },\n  \"ar\": {\n    \"paint.paintEditor.hue\": \"اللون\",\n    \"paint.paintEditor.saturation\": \"تشبع اللون\",\n    \"paint.paintEditor.brightness\": \"السطوع\",\n    \"gui.comingSoon.message1\": \"لا تقلق، فنحن نعمل على الأمر {emoji}\",\n    \"gui.comingSoon.message2\": \"قريبًا...\",\n    \"gui.comingSoon.message3\": \"نحن نعمل على الأمر {emoji}\",\n    \"paint.paintEditor.costume\": \"المظهر\",\n    \"paint.paintEditor.group\": \"تجميع\",\n    \"paint.paintEditor.ungroup\": \"فك تجميع\",\n    \"paint.paintEditor.undo\": \"تراجع\",\n    \"paint.paintEditor.redo\": \"إعادة\",\n    \"paint.paintEditor.forward\": \"طبقة إلى الأمام\",\n    \"paint.paintEditor.backward\": \"طبقة إلى الخلف\",\n    \"paint.paintEditor.front\": \"وضع في الطبقة الأولى\",\n    \"paint.paintEditor.back\": \"وضع في الطبقة الأخيرة\",\n    \"paint.paintEditor.more\": \"المزيد\",\n    \"paint.modeTools.brushSize\": \"الحجم\",\n    \"paint.modeTools.eraserSize\": \"حجم الممحاة\",\n    \"paint.modeTools.copy\": \"نسخ\",\n    \"paint.modeTools.paste\": \"لصق\",\n    \"paint.modeTools.delete\": \"حذف\",\n    \"paint.modeTools.curved\": \"مقوَّس\",\n    \"paint.modeTools.pointed\": \"مدبب\",\n    \"paint.modeTools.thickness\": \"الثخانة\",\n    \"paint.modeTools.flipHorizontal\": \"اعكس أفقيًا\",\n    \"paint.modeTools.flipVertical\": \"اعكس شاقوليًا\",\n    \"paint.modeTools.filled\": \"مملوء\",\n    \"paint.modeTools.outlined\": \"مؤطَّر\",\n    \"paint.paintEditor.bitmap\": \"تحويل إلى رسم نقطي\",\n    \"paint.paintEditor.vector\": \"تحويل إلى رسم متجه\",\n    \"paint.paintEditor.fill\": \"ملء\",\n    \"paint.paintEditor.stroke\": \"الإطار\",\n    \"paint.brushMode.brush\": \"فرشاة\",\n    \"paint.eraserMode.eraser\": \"ممحاة\",\n    \"paint.fillMode.fill\": \"الملء\",\n    \"paint.lineMode.line\": \"خط \",\n    \"paint.ovalMode.oval\": \"دائرة\",\n    \"paint.rectMode.rect\": \"مستطيل\",\n    \"paint.reshapeMode.reshape\": \"إعادة تشكيل\",\n    \"paint.roundedRectMode.roundedRect\": \"مستطيل مستدير الزوايا\",\n    \"paint.selectMode.select\": \"تحديد\",\n    \"paint.textMode.text\": \"نص\",\n    \"paint.colorPicker.swap\": \"تبديل\"\n  },\n  \"am\": {\n    \"paint.paintEditor.hue\": \"ቀለም\",\n    \"paint.paintEditor.saturation\": \"ርኬት\",\n    \"paint.paintEditor.brightness\": \"ብሩህነት\",\n    \"gui.comingSoon.message1\": \"አትጨነቁ፣ የሰራንበት ነው {emoji}\",\n    \"gui.comingSoon.message2\": \"በቅርቡ ይደርሳል...\",\n    \"gui.comingSoon.message3\": \"የሰራንበት ነው {emoji}\",\n    \"paint.paintEditor.costume\": \"ልብስ\",\n    \"paint.paintEditor.group\": \"ቡድን\",\n    \"paint.paintEditor.ungroup\": \"በቡድን የተመደበውን በተን\",\n    \"paint.paintEditor.undo\": \"መልስ\",\n    \"paint.paintEditor.redo\": \"ድጋሜ አድርግ\",\n    \"paint.paintEditor.forward\": \"ወደፊት\",\n    \"paint.paintEditor.backward\": \"ወደኋላ\",\n    \"paint.paintEditor.front\": \"ፊት\",\n    \"paint.paintEditor.back\": \"ኋላ\",\n    \"paint.paintEditor.more\": \"ተጨማሪ\",\n    \"paint.modeTools.brushSize\": \"ልክ\",\n    \"paint.modeTools.eraserSize\": \"የላጲስ ልክ\",\n    \"paint.modeTools.copy\": \"ቅዳ\",\n    \"paint.modeTools.paste\": \"ለጥፍ\",\n    \"paint.modeTools.delete\": \"አጥፋ\",\n    \"paint.modeTools.curved\": \"የታጠፈ\",\n    \"paint.modeTools.pointed\": \"ሾለ\",\n    \"paint.modeTools.thickness\": \"ውፍረት\",\n    \"paint.modeTools.flipHorizontal\": \"በግድምታ አሽከርክር\",\n    \"paint.modeTools.flipVertical\": \"በሽቅብዮሽ አሽከርክር\",\n    \"paint.modeTools.filled\": \"የተሟላ\",\n    \"paint.modeTools.outlined\": \"የተቀረፀ\",\n    \"paint.paintEditor.bitmap\": \"ወደ ንድፈ ቅንጣት ለውጥ\",\n    \"paint.paintEditor.vector\": \"ወደ ቬክተር ለውጥ\",\n    \"paint.paintEditor.fill\": \"ምላት\",\n    \"paint.paintEditor.stroke\": \"ቅረፅ\",\n    \"paint.brushMode.brush\": \"ብሩሽ\",\n    \"paint.eraserMode.eraser\": \"ላጲስ\",\n    \"paint.fillMode.fill\": \"ምላት\",\n    \"paint.lineMode.line\": \"መስመር\",\n    \"paint.ovalMode.oval\": \"ክብ\",\n    \"paint.rectMode.rect\": \"አራት ማዕዘን\",\n    \"paint.reshapeMode.reshape\": \"እንደገና ቅረጽ\",\n    \"paint.roundedRectMode.roundedRect\": \"የተድበለበለ አራት ማዕዘን\",\n    \"paint.selectMode.select\": \"ምረጥ\",\n    \"paint.textMode.text\": \"ጽሀፍ\",\n    \"paint.colorPicker.swap\": \"ለዋውጥ\"\n  },\n  \"an\": {\n    \"paint.paintEditor.hue\": \"Color\",\n    \"paint.paintEditor.saturation\": \"Saturación\",\n    \"paint.paintEditor.brightness\": \"Brilo\",\n    \"gui.comingSoon.message1\": \"No te'n fagas, somos en ixo {emoji}\",\n    \"gui.comingSoon.message2\": \"Bien luego...\",\n    \"gui.comingSoon.message3\": \"Somos treballando en ixo {emoji}\",\n    \"paint.paintEditor.costume\": \"Vestiu\",\n    \"paint.paintEditor.group\": \"Grupo\",\n    \"paint.paintEditor.ungroup\": \"Desagrupar\",\n    \"paint.paintEditor.undo\": \"Desfer\",\n    \"paint.paintEditor.redo\": \"Refer\",\n    \"paint.paintEditor.forward\": \"Enta debant\",\n    \"paint.paintEditor.backward\": \"Enta zaga\",\n    \"paint.paintEditor.front\": \"Debant\",\n    \"paint.paintEditor.back\": \"Dezaga\",\n    \"paint.paintEditor.more\": \"Mas\",\n    \"paint.modeTools.brushSize\": \"Grandaria\",\n    \"paint.modeTools.eraserSize\": \"Grandaria d'o borrador\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Apegar\",\n    \"paint.modeTools.delete\": \"Borrar\",\n    \"paint.modeTools.curved\": \"Curva\",\n    \"paint.modeTools.pointed\": \"Puncha\",\n    \"paint.modeTools.thickness\": \"Gordaria\",\n    \"paint.modeTools.flipHorizontal\": \"Chirar en horizontal\",\n    \"paint.modeTools.flipVertical\": \"Chirar en vertical\",\n    \"paint.modeTools.filled\": \"Repleno\",\n    \"paint.modeTools.outlined\": \"Deliniau\",\n    \"paint.paintEditor.bitmap\": \"Tornar en mapa de bits\",\n    \"paint.paintEditor.vector\": \"Tornar en vectorial\",\n    \"paint.paintEditor.fill\": \"Replenar\",\n    \"paint.paintEditor.stroke\": \"Linia\",\n    \"paint.brushMode.brush\": \"Pincel\",\n    \"paint.eraserMode.eraser\": \"Borrador\",\n    \"paint.fillMode.fill\": \"Replenar\",\n    \"paint.lineMode.line\": \"Linia\",\n    \"paint.ovalMode.oval\": \"Cerclo\",\n    \"paint.rectMode.rect\": \"Rectanglo\",\n    \"paint.reshapeMode.reshape\": \"Cambiar forma\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectanglo redondiau\",\n    \"paint.selectMode.select\": \"Seleccionar\",\n    \"paint.textMode.text\": \"Texto\",\n    \"paint.colorPicker.swap\": \"Cambiar\"\n  },\n  \"ast\": {\n    \"paint.paintEditor.hue\": \"Color\",\n    \"paint.paintEditor.saturation\": \"Saturación\",\n    \"paint.paintEditor.brightness\": \"Brillu\",\n    \"gui.comingSoon.message1\": \"Nun t'esmolezas, tamos nello {emoji}\",\n    \"gui.comingSoon.message2\": \"Aportando en Breve...\",\n    \"gui.comingSoon.message3\": \"Tamos trabayando nello {emoji}\",\n    \"paint.paintEditor.costume\": \"Disfraz\",\n    \"paint.paintEditor.group\": \"Grupu\",\n    \"paint.paintEditor.ungroup\": \"Desagrupar\",\n    \"paint.paintEditor.undo\": \"Desfacer\",\n    \"paint.paintEditor.redo\": \"Refacer\",\n    \"paint.paintEditor.forward\": \"P'alantre\",\n    \"paint.paintEditor.backward\": \"P'atrás\",\n    \"paint.paintEditor.front\": \"Frente\",\n    \"paint.paintEditor.back\": \"Atrás\",\n    \"paint.paintEditor.more\": \"Más\",\n    \"paint.modeTools.brushSize\": \"Tamañu\",\n    \"paint.modeTools.eraserSize\": \"Tamañu del borrador\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Apegar\",\n    \"paint.modeTools.delete\": \"Esborrar\",\n    \"paint.modeTools.curved\": \"En curva\",\n    \"paint.modeTools.pointed\": \"Afiláu\",\n    \"paint.modeTools.thickness\": \"Espesor\",\n    \"paint.modeTools.flipHorizontal\": \"Xirar horizontalmente\",\n    \"paint.modeTools.flipVertical\": \"Xirar verticalmente\",\n    \"paint.modeTools.filled\": \"Rellenu\",\n    \"paint.modeTools.outlined\": \"Contorniáu\",\n    \"paint.paintEditor.bitmap\": \"Convertir a Bitmap\",\n    \"paint.paintEditor.vector\": \"Convertir a vector\",\n    \"paint.paintEditor.fill\": \"Rellenar\",\n    \"paint.paintEditor.stroke\": \"Contornu\",\n    \"paint.brushMode.brush\": \"Pincel\",\n    \"paint.eraserMode.eraser\": \"Borrador\",\n    \"paint.fillMode.fill\": \"Rellenar\",\n    \"paint.lineMode.line\": \"Llinia\",\n    \"paint.ovalMode.oval\": \"Círculu\",\n    \"paint.rectMode.rect\": \"Rectángulu\",\n    \"paint.reshapeMode.reshape\": \"Remodelar\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectángulu arrondiáu\",\n    \"paint.selectMode.select\": \"Escoyer\",\n    \"paint.textMode.text\": \"Testu\",\n    \"paint.colorPicker.swap\": \"Intercambiar\"\n  },\n  \"az\": {\n    \"paint.paintEditor.hue\": \"Rəng\",\n    \"paint.paintEditor.saturation\": \"Dolğunluq\",\n    \"paint.paintEditor.brightness\": \"Parlaqlıq\",\n    \"gui.comingSoon.message1\": \"Narahat olmayın, biz bunun üzərində çalışırıq {emoji}\",\n    \"gui.comingSoon.message2\": \"Tezliklə ...\",\n    \"gui.comingSoon.message3\": \"Biz bunun üzərində çalışırıq {emoji}\",\n    \"paint.paintEditor.costume\": \"Libas\",\n    \"paint.paintEditor.group\": \"Qrup\",\n    \"paint.paintEditor.ungroup\": \"Qrupu ləğv et\",\n    \"paint.paintEditor.undo\": \"Ləğv et\",\n    \"paint.paintEditor.redo\": \"Redo\",\n    \"paint.paintEditor.forward\": \"İrəli\",\n    \"paint.paintEditor.backward\": \"Geri\",\n    \"paint.paintEditor.front\": \"Ön\",\n    \"paint.paintEditor.back\": \"Geri\",\n    \"paint.paintEditor.more\": \"Daha çox\",\n    \"paint.modeTools.brushSize\": \"Ölçü\",\n    \"paint.modeTools.eraserSize\": \"Pozanın ölçüsü\",\n    \"paint.modeTools.copy\": \"Kopyala\",\n    \"paint.modeTools.paste\": \"Yerləşdir\",\n    \"paint.modeTools.delete\": \"Sil\",\n    \"paint.modeTools.curved\": \"Əyri\",\n    \"paint.modeTools.pointed\": \"İşarələnmiş\",\n    \"paint.modeTools.thickness\": \"Qalınlıq\",\n    \"paint.modeTools.flipHorizontal\": \"Üfiqi çevir\",\n    \"paint.modeTools.flipVertical\": \"Şaquli çevir\",\n    \"paint.modeTools.filled\": \"Dolu\",\n    \"paint.modeTools.outlined\": \"Konturlanmış\",\n    \"paint.paintEditor.bitmap\": \"Rastr qrafikasına çevir\",\n    \"paint.paintEditor.vector\": \"Vektor qrafikasına çevir\",\n    \"paint.paintEditor.fill\": \"Rənglə doldur\",\n    \"paint.paintEditor.stroke\": \"Kontur\",\n    \"paint.brushMode.brush\": \"Brush\",\n    \"paint.eraserMode.eraser\": \"Eraser\",\n    \"paint.fillMode.fill\": \"Fill\",\n    \"paint.lineMode.line\": \"Line\",\n    \"paint.ovalMode.oval\": \"Circle\",\n    \"paint.rectMode.rect\": \"Rectangle\",\n    \"paint.reshapeMode.reshape\": \"Reshape\",\n    \"paint.roundedRectMode.roundedRect\": \"Rounded Rectangle\",\n    \"paint.selectMode.select\": \"Select\",\n    \"paint.textMode.text\": \"Text\",\n    \"paint.colorPicker.swap\": \"Dəyişdir\"\n  },\n  \"id\": {\n    \"paint.paintEditor.hue\": \"Warna\",\n    \"paint.paintEditor.saturation\": \"Saturasi\",\n    \"paint.paintEditor.brightness\": \"Keterangan\",\n    \"gui.comingSoon.message1\": \"Jangan khawatir, kami sedang mengerjakannya {emoji}\",\n    \"gui.comingSoon.message2\": \"Akan Segera Datang\",\n    \"gui.comingSoon.message3\": \"Kami sedang mengerjakannya {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostum\",\n    \"paint.paintEditor.group\": \"Kelompokkan\",\n    \"paint.paintEditor.ungroup\": \"Pisahkan\",\n    \"paint.paintEditor.undo\": \"Undo\",\n    \"paint.paintEditor.redo\": \"Ulangi\",\n    \"paint.paintEditor.forward\": \"Maju\",\n    \"paint.paintEditor.backward\": \"Mundur\",\n    \"paint.paintEditor.front\": \"Depan\",\n    \"paint.paintEditor.back\": \"Back\",\n    \"paint.paintEditor.more\": \"Lebih\",\n    \"paint.modeTools.brushSize\": \"Ukuran\",\n    \"paint.modeTools.eraserSize\": \"Ukuran penghapus\",\n    \"paint.modeTools.copy\": \"Salin\",\n    \"paint.modeTools.paste\": \"Tempel\",\n    \"paint.modeTools.delete\": \"Hapus\",\n    \"paint.modeTools.curved\": \"Bundar\",\n    \"paint.modeTools.pointed\": \"Tajam\",\n    \"paint.modeTools.thickness\": \"Ketebalan\",\n    \"paint.modeTools.flipHorizontal\": \"Balikkan Secara Horisontal\",\n    \"paint.modeTools.flipVertical\": \"Balikkan Secara Vertikal\",\n    \"paint.modeTools.filled\": \"Terisi\",\n    \"paint.modeTools.outlined\": \"Garis besar\",\n    \"paint.paintEditor.bitmap\": \"Sesuaikan ke Bitmap\",\n    \"paint.paintEditor.vector\": \"Sesuaikan ke Vektor\",\n    \"paint.paintEditor.fill\": \"Isi\",\n    \"paint.paintEditor.stroke\": \"Garis besar\",\n    \"paint.brushMode.brush\": \"Kuas\",\n    \"paint.eraserMode.eraser\": \"Penghapus\",\n    \"paint.fillMode.fill\": \"Isi\",\n    \"paint.lineMode.line\": \"Garis\",\n    \"paint.ovalMode.oval\": \"Lingkaran\",\n    \"paint.rectMode.rect\": \"Persegi panjang\",\n    \"paint.reshapeMode.reshape\": \"Bentuk ulang\",\n    \"paint.roundedRectMode.roundedRect\": \"Persegi Bulat\",\n    \"paint.selectMode.select\": \"Pilih\",\n    \"paint.textMode.text\": \"Teks\",\n    \"paint.colorPicker.swap\": \"Tukar\"\n  },\n  \"bn\": {\n    \"paint.paintEditor.hue\": \"রঙ\",\n    \"paint.paintEditor.saturation\": \"সম্পৃক্ত\",\n    \"paint.paintEditor.brightness\": \"উজ্জ্বলতা\",\n    \"gui.comingSoon.message1\": \"চিন্তা কর না, আমরা এটার উপর কাজ করছি {emoji}\",\n    \"gui.comingSoon.message2\": \"শীঘ্রই আসছে...\",\n    \"gui.comingSoon.message3\": \"আমরা এখনো এটা নিয়ে কাজ করছি {emoji} \",\n    \"paint.paintEditor.costume\": \"পোশাক\",\n    \"paint.paintEditor.group\": \"দল\",\n    \"paint.paintEditor.ungroup\": \"দলমুক্ত\",\n    \"paint.paintEditor.undo\": \"পূর্বাবস্থায় ফেরত\",\n    \"paint.paintEditor.redo\": \"পুনরায় কর\",\n    \"paint.paintEditor.forward\": \"সামনে\",\n    \"paint.paintEditor.backward\": \"পিছনে\",\n    \"paint.paintEditor.front\": \"সামনে\",\n    \"paint.paintEditor.back\": \"পিছনে\",\n    \"paint.paintEditor.more\": \"আরও\",\n    \"paint.modeTools.brushSize\": \"আকার\",\n    \"paint.modeTools.eraserSize\": \"রবারের আকার\",\n    \"paint.modeTools.copy\": \"কপি\",\n    \"paint.modeTools.paste\": \"পেস্ট\",\n    \"paint.modeTools.delete\": \"অপসারণ\",\n    \"paint.modeTools.curved\": \"বাঁকা\",\n    \"paint.modeTools.pointed\": \"তীক্ষ্ন\",\n    \"paint.modeTools.thickness\": \"পুরুত্ব\",\n    \"paint.modeTools.flipHorizontal\": \"হরিজেন্টালি উল্টাও \",\n    \"paint.modeTools.flipVertical\": \"ভার্টিক্যালি উল্টাও\",\n    \"paint.modeTools.filled\": \"ভরাট করা\",\n    \"paint.modeTools.outlined\": \"আউটলাইন\",\n    \"paint.paintEditor.bitmap\": \"বিটম্যাপে রূপান্তর কর\",\n    \"paint.paintEditor.vector\": \"ভেক্টরে রূপান্তর কর \",\n    \"paint.paintEditor.fill\": \"পূরণ\",\n    \"paint.paintEditor.stroke\": \"আউটলাইন\",\n    \"paint.brushMode.brush\": \"তুলি\",\n    \"paint.eraserMode.eraser\": \"রবার\",\n    \"paint.fillMode.fill\": \"ভরাট\",\n    \"paint.lineMode.line\": \"রেখা\",\n    \"paint.ovalMode.oval\": \"বৃত্তাকার\",\n    \"paint.rectMode.rect\": \"আয়তক্ষেত্র\",\n    \"paint.reshapeMode.reshape\": \"পুনর্গঠন\",\n    \"paint.roundedRectMode.roundedRect\": \"গোলাকার আয়তক্ষেত্র\",\n    \"paint.selectMode.select\": \"নির্বাচন কর\",\n    \"paint.textMode.text\": \"পাঠ\",\n    \"paint.colorPicker.swap\": \"বিনিময়\"\n  },\n  \"be\": {\n    \"paint.paintEditor.hue\": \"Колер\",\n    \"paint.paintEditor.saturation\": \"Насычанасць\",\n    \"paint.paintEditor.brightness\": \"Яркасць\",\n    \"gui.comingSoon.message1\": \"Не хвалюйцеся, мы працуем над гэтым {emoji}\",\n    \"gui.comingSoon.message2\": \"У бліжэйшы час...\",\n    \"gui.comingSoon.message3\": \"Мы працуем над гэтым {emoji}\",\n    \"paint.paintEditor.costume\": \"Касцюм\",\n    \"paint.paintEditor.group\": \"Згрупаваць\",\n    \"paint.paintEditor.ungroup\": \"Разгрупаваць\",\n    \"paint.paintEditor.undo\": \"Адмяніць\",\n    \"paint.paintEditor.redo\": \"Вярнуць\",\n    \"paint.paintEditor.forward\": \"Наперад\",\n    \"paint.paintEditor.backward\": \"Назад\",\n    \"paint.paintEditor.front\": \"На пярэдні план\",\n    \"paint.paintEditor.back\": \"Назад\",\n    \"paint.paintEditor.more\": \"Яшчэ\",\n    \"paint.modeTools.brushSize\": \"Памер\",\n    \"paint.modeTools.eraserSize\": \"Памер гумкі\",\n    \"paint.modeTools.copy\": \"Капіраваць\",\n    \"paint.modeTools.paste\": \"Уставіць\",\n    \"paint.modeTools.delete\": \"Выдаліць\",\n    \"paint.modeTools.curved\": \"Выгнутыя\",\n    \"paint.modeTools.pointed\": \"Завостраныя\",\n    \"paint.modeTools.thickness\": \"Таўшчыня\",\n    \"paint.modeTools.flipHorizontal\": \"Адлюстраваць па гарызанталі\",\n    \"paint.modeTools.flipVertical\": \"Адлюстраваць па вертыкалі\",\n    \"paint.modeTools.filled\": \"Заліты\",\n    \"paint.modeTools.outlined\": \"Абведзены\",\n    \"paint.paintEditor.bitmap\": \"Канвертаваць у растравую графіку\",\n    \"paint.paintEditor.vector\": \"Канвертаваць у вектарную графіку\",\n    \"paint.paintEditor.fill\": \"Заліўка\",\n    \"paint.paintEditor.stroke\": \"Контур\",\n    \"paint.brushMode.brush\": \"Пэндзлік\",\n    \"paint.eraserMode.eraser\": \"Гумка\",\n    \"paint.fillMode.fill\": \"Заліўка\",\n    \"paint.lineMode.line\": \"Рыса\",\n    \"paint.ovalMode.oval\": \"Кола\",\n    \"paint.rectMode.rect\": \"Прамавугольнік\",\n    \"paint.reshapeMode.reshape\": \"Змяніць форму\",\n    \"paint.roundedRectMode.roundedRect\": \"Скруглёны прамавугольнік\",\n    \"paint.selectMode.select\": \"Выбраць\",\n    \"paint.textMode.text\": \"Тэкст\",\n    \"paint.colorPicker.swap\": \"Замяніць\"\n  },\n  \"bg\": {\n    \"paint.paintEditor.hue\": \"Цвят\",\n    \"paint.paintEditor.saturation\": \"Наситеност\",\n    \"paint.paintEditor.brightness\": \"Яркост\",\n    \"gui.comingSoon.message1\": \"Не се притеснявайте, заели сме се с това{emoji}\",\n    \"gui.comingSoon.message2\": \"Очаквайте скоро…\",\n    \"gui.comingSoon.message3\": \"Работим по това{emoji}\",\n    \"paint.paintEditor.costume\": \"Костюм\",\n    \"paint.paintEditor.group\": \"Групиране\",\n    \"paint.paintEditor.ungroup\": \"Разгрупиране\",\n    \"paint.paintEditor.undo\": \"Отмяна\",\n    \"paint.paintEditor.redo\": \"Повтаряне\",\n    \"paint.paintEditor.forward\": \"Напред\",\n    \"paint.paintEditor.backward\": \"Назад\",\n    \"paint.paintEditor.front\": \"Отпред\",\n    \"paint.paintEditor.back\": \"Отзад\",\n    \"paint.paintEditor.more\": \"Още\",\n    \"paint.modeTools.brushSize\": \"Размер\",\n    \"paint.modeTools.eraserSize\": \"Размер на гумата\",\n    \"paint.modeTools.copy\": \"Копиране\",\n    \"paint.modeTools.paste\": \"Поставяне\",\n    \"paint.modeTools.delete\": \"Изтриване\",\n    \"paint.modeTools.curved\": \"Заоблен\",\n    \"paint.modeTools.pointed\": \"Заострен\",\n    \"paint.modeTools.thickness\": \"Дебелина\",\n    \"paint.modeTools.flipHorizontal\": \"Хоризонтално обръщане\",\n    \"paint.modeTools.flipVertical\": \"Вертикално обръщане\",\n    \"paint.modeTools.filled\": \"Запълнен\",\n    \"paint.modeTools.outlined\": \"Подчертан\",\n    \"paint.paintEditor.bitmap\": \"Преобразуване в растерен режим\",\n    \"paint.paintEditor.vector\": \"Преобразуване във векторен режим\",\n    \"paint.paintEditor.fill\": \"Запълване\",\n    \"paint.paintEditor.stroke\": \"Подчертаване\",\n    \"paint.brushMode.brush\": \"Четка\",\n    \"paint.eraserMode.eraser\": \"Гума\",\n    \"paint.fillMode.fill\": \"Запълване\",\n    \"paint.lineMode.line\": \"Линия\",\n    \"paint.ovalMode.oval\": \"Окръжност\",\n    \"paint.rectMode.rect\": \"Правоъгълник\",\n    \"paint.reshapeMode.reshape\": \"Оформяне\",\n    \"paint.roundedRectMode.roundedRect\": \"Заоблен правоъгълник\",\n    \"paint.selectMode.select\": \"Маркиране\",\n    \"paint.textMode.text\": \"Текст\",\n    \"paint.colorPicker.swap\": \"Замяна\"\n  },\n  \"ca\": {\n    \"paint.paintEditor.hue\": \"Color\",\n    \"paint.paintEditor.saturation\": \"Saturació\",\n    \"paint.paintEditor.brightness\": \"Lluminositat\",\n    \"gui.comingSoon.message1\": \"No et preocupis, hi estem treballant {emoji}\",\n    \"gui.comingSoon.message2\": \"Properament...\",\n    \"gui.comingSoon.message3\": \"Hi estem treballant {emoji}\",\n    \"paint.paintEditor.costume\": \"Vestit\",\n    \"paint.paintEditor.group\": \"Agrupa\",\n    \"paint.paintEditor.ungroup\": \"Desagrupa\",\n    \"paint.paintEditor.undo\": \"Desfés\",\n    \"paint.paintEditor.redo\": \"Torna-hi\",\n    \"paint.paintEditor.forward\": \"Endavant\",\n    \"paint.paintEditor.backward\": \"Enrere\",\n    \"paint.paintEditor.front\": \"Al davant\",\n    \"paint.paintEditor.back\": \"Al darrere\",\n    \"paint.paintEditor.more\": \"Més\",\n    \"paint.modeTools.brushSize\": \"Mida\",\n    \"paint.modeTools.eraserSize\": \"Ample de l'esborrador\",\n    \"paint.modeTools.copy\": \"Copia\",\n    \"paint.modeTools.paste\": \"Enganxa\",\n    \"paint.modeTools.delete\": \"Elimina\",\n    \"paint.modeTools.curved\": \"Corbat\",\n    \"paint.modeTools.pointed\": \"Afila conjunt de punts\",\n    \"paint.modeTools.thickness\": \"Gruix\",\n    \"paint.modeTools.flipHorizontal\": \"Gira horitzontalment\",\n    \"paint.modeTools.flipVertical\": \"Gira verticalment\",\n    \"paint.modeTools.filled\": \"Omplert\",\n    \"paint.modeTools.outlined\": \"Contorn\",\n    \"paint.paintEditor.bitmap\": \"Converteix a mapa de bits\",\n    \"paint.paintEditor.vector\": \"Converteix a vectorial\",\n    \"paint.paintEditor.fill\": \"Omple\",\n    \"paint.paintEditor.stroke\": \"Línia exterior\",\n    \"paint.brushMode.brush\": \"Pinzell\",\n    \"paint.eraserMode.eraser\": \"Goma d'esborrar\",\n    \"paint.fillMode.fill\": \"Omple\",\n    \"paint.lineMode.line\": \"Línia\",\n    \"paint.ovalMode.oval\": \"Cercle\",\n    \"paint.rectMode.rect\": \"Rectangle\",\n    \"paint.reshapeMode.reshape\": \"Redibuixa\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectangle amb cantonades arrodonides\",\n    \"paint.selectMode.select\": \"Selecciona\",\n    \"paint.textMode.text\": \"Text\",\n    \"paint.colorPicker.swap\": \"Intercanvia\"\n  },\n  \"cs\": {\n    \"paint.paintEditor.hue\": \"Barva\",\n    \"paint.paintEditor.saturation\": \"Sytost\",\n    \"paint.paintEditor.brightness\": \"Světlost\",\n    \"gui.comingSoon.message1\": \"Neboj, pracujeme na tom {emoji}\",\n    \"gui.comingSoon.message2\": \"Již brzy...\",\n    \"gui.comingSoon.message3\": \"Pracujeme na tom  {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostým\",\n    \"paint.paintEditor.group\": \"Seskupit\",\n    \"paint.paintEditor.ungroup\": \"Odskupit\",\n    \"paint.paintEditor.undo\": \"Vrátit\",\n    \"paint.paintEditor.redo\": \"Znovu provést\",\n    \"paint.paintEditor.forward\": \"Dopředu\",\n    \"paint.paintEditor.backward\": \"Dozadu\",\n    \"paint.paintEditor.front\": \"Dopředu\",\n    \"paint.paintEditor.back\": \"Zpět\",\n    \"paint.paintEditor.more\": \"Více\",\n    \"paint.modeTools.brushSize\": \"Velikost\",\n    \"paint.modeTools.eraserSize\": \"Velikost gumy\",\n    \"paint.modeTools.copy\": \"Zkopírovat\",\n    \"paint.modeTools.paste\": \"Vložit\",\n    \"paint.modeTools.delete\": \"Odstranit\",\n    \"paint.modeTools.curved\": \"Zakřivit\",\n    \"paint.modeTools.pointed\": \"Zašpičatět\",\n    \"paint.modeTools.thickness\": \"Tloušťka\",\n    \"paint.modeTools.flipHorizontal\": \"Přetočit horizontálně\",\n    \"paint.modeTools.flipVertical\": \"Přetočit vertikálně\",\n    \"paint.modeTools.filled\": \"Výplň\",\n    \"paint.modeTools.outlined\": \"Obrys\",\n    \"paint.paintEditor.bitmap\": \"Převést do bitmapy\",\n    \"paint.paintEditor.vector\": \"Převeď na vektor\",\n    \"paint.paintEditor.fill\": \"Vyplnit\",\n    \"paint.paintEditor.stroke\": \"Obrys\",\n    \"paint.brushMode.brush\": \"Štětec\",\n    \"paint.eraserMode.eraser\": \"Guma\",\n    \"paint.fillMode.fill\": \"Vyplnit\",\n    \"paint.lineMode.line\": \"Úsečka\",\n    \"paint.ovalMode.oval\": \"Kružnice\",\n    \"paint.rectMode.rect\": \"Obdélník\",\n    \"paint.reshapeMode.reshape\": \"Změna tvaru\",\n    \"paint.roundedRectMode.roundedRect\": \"Zaoblený obdélník\",\n    \"paint.selectMode.select\": \"Výběr\",\n    \"paint.textMode.text\": \"Text\",\n    \"paint.colorPicker.swap\": \"Záměna\"\n  },\n  \"cy\": {\n    \"paint.paintEditor.hue\": \"Lliw\",\n    \"paint.paintEditor.saturation\": \"Dirlawnder\",\n    \"paint.paintEditor.brightness\": \"Disgleirdeb\",\n    \"gui.comingSoon.message1\": \"Peidiwch poeni, rydym wrthi {emoji}\",\n    \"gui.comingSoon.message2\": \"Yn Dod Cyn Bo Hir...\",\n    \"gui.comingSoon.message3\": \"Rydym yn gweithio arno {emoji}\",\n    \"paint.paintEditor.costume\": \"Gwisg\",\n    \"paint.paintEditor.group\": \"Grŵp\",\n    \"paint.paintEditor.ungroup\": \"Dad-grwpio\",\n    \"paint.paintEditor.undo\": \"Dadwneud\",\n    \"paint.paintEditor.redo\": \"Ailwneud\",\n    \"paint.paintEditor.forward\": \"Ymlaen\",\n    \"paint.paintEditor.backward\": \"Nôl\",\n    \"paint.paintEditor.front\": \"Blaen\",\n    \"paint.paintEditor.back\": \"Nôl\",\n    \"paint.paintEditor.more\": \"Rhagor\",\n    \"paint.modeTools.brushSize\": \"Maint\",\n    \"paint.modeTools.eraserSize\": \"Maint rhwbiwr\",\n    \"paint.modeTools.copy\": \"Copïo\",\n    \"paint.modeTools.paste\": \"Gludo\",\n    \"paint.modeTools.delete\": \"Dileu\",\n    \"paint.modeTools.curved\": \"Crwm\",\n    \"paint.modeTools.pointed\": \"Gyda Blaen\",\n    \"paint.modeTools.thickness\": \"Trwch\",\n    \"paint.modeTools.flipHorizontal\": \"Fflipio'n Llorweddol\",\n    \"paint.modeTools.flipVertical\": \"Fflipio'n Fertigol\",\n    \"paint.modeTools.filled\": \"Llanwyd\",\n    \"paint.modeTools.outlined\": \"Amlinellwyd\",\n    \"paint.paintEditor.bitmap\": \"Trosi i Ddidfap\",\n    \"paint.paintEditor.vector\": \"Trosi i Fector\",\n    \"paint.paintEditor.fill\": \"Llanw\",\n    \"paint.paintEditor.stroke\": \"Amlinell\",\n    \"paint.brushMode.brush\": \"Brwsh\",\n    \"paint.eraserMode.eraser\": \"Rhwbiwr\",\n    \"paint.fillMode.fill\": \"Llanw\",\n    \"paint.lineMode.line\": \"Llinell\",\n    \"paint.ovalMode.oval\": \"Cylch\",\n    \"paint.rectMode.rect\": \"Petryal\",\n    \"paint.reshapeMode.reshape\": \"Ail siapio\",\n    \"paint.roundedRectMode.roundedRect\": \"Petryal Crwm\",\n    \"paint.selectMode.select\": \"Dewis\",\n    \"paint.textMode.text\": \"Testun\",\n    \"paint.colorPicker.swap\": \"Cyfnewid\"\n  },\n  \"da\": {\n    \"paint.paintEditor.hue\": \"Farve\",\n    \"paint.paintEditor.saturation\": \"Farvemætning\",\n    \"paint.paintEditor.brightness\": \"Lysstyrke\",\n    \"gui.comingSoon.message1\": \"Du skal ikke bekymre dig, vi arbejder på sagen {emoji}\",\n    \"gui.comingSoon.message2\": \"Kommer snart...\",\n    \"gui.comingSoon.message3\": \"Vi arbejder på sagen {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostume\",\n    \"paint.paintEditor.group\": \"Gruppe\",\n    \"paint.paintEditor.ungroup\": \"Opdel\",\n    \"paint.paintEditor.undo\": \"Fortryd\",\n    \"paint.paintEditor.redo\": \"Gør om\",\n    \"paint.paintEditor.forward\": \"Frem\",\n    \"paint.paintEditor.backward\": \"Tilbage\",\n    \"paint.paintEditor.front\": \"Forrest\",\n    \"paint.paintEditor.back\": \"Bagerst\",\n    \"paint.paintEditor.more\": \"Mere\",\n    \"paint.modeTools.brushSize\": \"Størrelse\",\n    \"paint.modeTools.eraserSize\": \"Viskelæderets størrelse\",\n    \"paint.modeTools.copy\": \"Kopier\",\n    \"paint.modeTools.paste\": \"Sæt ind\",\n    \"paint.modeTools.delete\": \"Slet\",\n    \"paint.modeTools.curved\": \"Buet\",\n    \"paint.modeTools.pointed\": \"Spids\",\n    \"paint.modeTools.thickness\": \"Tykkelse\",\n    \"paint.modeTools.flipHorizontal\": \"Vend venstre-højre\",\n    \"paint.modeTools.flipVertical\": \"Vend op og ned\",\n    \"paint.modeTools.filled\": \"Fyldt\",\n    \"paint.modeTools.outlined\": \"Kant streg\",\n    \"paint.paintEditor.bitmap\": \"Konverter til Bitmap\",\n    \"paint.paintEditor.vector\": \"Konverter til Vektor\",\n    \"paint.paintEditor.fill\": \"Fyld\",\n    \"paint.paintEditor.stroke\": \"Kant\",\n    \"paint.brushMode.brush\": \"Pensel\",\n    \"paint.eraserMode.eraser\": \"Viskelæder\",\n    \"paint.fillMode.fill\": \"Fyld\",\n    \"paint.lineMode.line\": \"Linje\",\n    \"paint.ovalMode.oval\": \"Cirkel\",\n    \"paint.rectMode.rect\": \"Rektangel\",\n    \"paint.reshapeMode.reshape\": \"Omform\",\n    \"paint.roundedRectMode.roundedRect\": \"Afrundet rektangel\",\n    \"paint.selectMode.select\": \"Vælg\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Byt\"\n  },\n  \"de\": {\n    \"paint.paintEditor.hue\": \"Farbe\",\n    \"paint.paintEditor.saturation\": \"Sättigung\",\n    \"paint.paintEditor.brightness\": \"Helligkeit\",\n    \"gui.comingSoon.message1\": \"Keine Sorge, wir kümmern uns darum {emoji}\",\n    \"gui.comingSoon.message2\": \"Bald verfügbar...\",\n    \"gui.comingSoon.message3\": \"Wir arbeiten daran {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostüm\",\n    \"paint.paintEditor.group\": \"Gruppieren\",\n    \"paint.paintEditor.ungroup\": \"Gruppierung aufheben\",\n    \"paint.paintEditor.undo\": \"Rückgängig\",\n    \"paint.paintEditor.redo\": \"Wiederherstellen\",\n    \"paint.paintEditor.forward\": \"nach vorne\",\n    \"paint.paintEditor.backward\": \"nach hinten\",\n    \"paint.paintEditor.front\": \"Ganz nach vorne\",\n    \"paint.paintEditor.back\": \"Ganz nach hinten\",\n    \"paint.paintEditor.more\": \"Mehr\",\n    \"paint.modeTools.brushSize\": \"Größe\",\n    \"paint.modeTools.eraserSize\": \"Radiererbreite\",\n    \"paint.modeTools.copy\": \"Kopieren\",\n    \"paint.modeTools.paste\": \"Einfügen\",\n    \"paint.modeTools.delete\": \"Löschen\",\n    \"paint.modeTools.curved\": \"gekrümmt\",\n    \"paint.modeTools.pointed\": \"gerade\",\n    \"paint.modeTools.thickness\": \"Linienstärke\",\n    \"paint.modeTools.flipHorizontal\": \"Horizontal spiegeln\",\n    \"paint.modeTools.flipVertical\": \"Vertikal spiegeln\",\n    \"paint.modeTools.filled\": \"Ausgefüllt\",\n    \"paint.modeTools.outlined\": \"Umrandet\",\n    \"paint.paintEditor.bitmap\": \"In Rastergrafik umwandeln\",\n    \"paint.paintEditor.vector\": \"In Vektorgrafik umwandeln\",\n    \"paint.paintEditor.fill\": \"Füllfarbe\",\n    \"paint.paintEditor.stroke\": \"Randfarbe\",\n    \"paint.brushMode.brush\": \"Pinsel\",\n    \"paint.eraserMode.eraser\": \"Radierer\",\n    \"paint.fillMode.fill\": \"Fülleimer\",\n    \"paint.lineMode.line\": \"Linie\",\n    \"paint.ovalMode.oval\": \"Kreis\",\n    \"paint.rectMode.rect\": \"Rechteck\",\n    \"paint.reshapeMode.reshape\": \"Verformen\",\n    \"paint.roundedRectMode.roundedRect\": \"Abgerundetes Rechteck \",\n    \"paint.selectMode.select\": \"Auswählen\",\n    \"paint.textMode.text\": \"Text\",\n    \"paint.colorPicker.swap\": \"Tauschen\"\n  },\n  \"et\": {\n    \"paint.paintEditor.hue\": \"Värv\",\n    \"paint.paintEditor.saturation\": \"Küllastus\",\n    \"paint.paintEditor.brightness\": \"Heledus\",\n    \"gui.comingSoon.message1\": \"Ära muretse, tegeleme sellega {emoji}\",\n    \"gui.comingSoon.message2\": \"Ilmub varsti...\",\n    \"gui.comingSoon.message3\": \"Tegeleme sellega {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostüüm\",\n    \"paint.paintEditor.group\": \"Rühmita\",\n    \"paint.paintEditor.ungroup\": \"Tühista rühmitus\",\n    \"paint.paintEditor.undo\": \"Võta tagasi\",\n    \"paint.paintEditor.redo\": \"Tee uuesti\",\n    \"paint.paintEditor.forward\": \"Ettepoole\",\n    \"paint.paintEditor.backward\": \"Tahapoole\",\n    \"paint.paintEditor.front\": \"Esiplaanile\",\n    \"paint.paintEditor.back\": \"Tahaplaanile\",\n    \"paint.paintEditor.more\": \"Rohkem\",\n    \"paint.modeTools.brushSize\": \"Suurus\",\n    \"paint.modeTools.eraserSize\": \"Kustutaja suurus\",\n    \"paint.modeTools.copy\": \"Kopeeri\",\n    \"paint.modeTools.paste\": \"Kleebi\",\n    \"paint.modeTools.delete\": \"Kustuta\",\n    \"paint.modeTools.curved\": \"Kõver\",\n    \"paint.modeTools.pointed\": \"Teravatipuline\",\n    \"paint.modeTools.thickness\": \"Paksus\",\n    \"paint.modeTools.flipHorizontal\": \"Horisontaalne peegeldus\",\n    \"paint.modeTools.flipVertical\": \"Vertikaalne peegeldus\",\n    \"paint.modeTools.filled\": \"Täidetud\",\n    \"paint.modeTools.outlined\": \"Piirjoonega\",\n    \"paint.paintEditor.bitmap\": \"Rastergraafikasse\",\n    \"paint.paintEditor.vector\": \"Vektorgraafikasse\",\n    \"paint.paintEditor.fill\": \"Täide\",\n    \"paint.paintEditor.stroke\": \"Piirjoon\",\n    \"paint.brushMode.brush\": \"Pintsel\",\n    \"paint.eraserMode.eraser\": \"Kustutaja\",\n    \"paint.fillMode.fill\": \"Täide\",\n    \"paint.lineMode.line\": \"Joon\",\n    \"paint.ovalMode.oval\": \"Ring\",\n    \"paint.rectMode.rect\": \"Ristkülik\",\n    \"paint.reshapeMode.reshape\": \"Kuju muutmine\",\n    \"paint.roundedRectMode.roundedRect\": \"Ümarate nurkadega ristkülik\",\n    \"paint.selectMode.select\": \"Vali\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Vaheta\"\n  },\n  \"el\": {\n    \"paint.paintEditor.hue\": \"Χρώμα\",\n    \"paint.paintEditor.saturation\": \"Κορεσμός\",\n    \"paint.paintEditor.brightness\": \"Φωτεινότητα\",\n    \"gui.comingSoon.message1\": \"Μην ανησυχείτε, το επεξεργαζόμαστε {emoji}\",\n    \"gui.comingSoon.message2\": \"Έρχεται Σύντομα...\",\n    \"gui.comingSoon.message3\": \"Το δουλεύουμε {emoji}\",\n    \"paint.paintEditor.costume\": \"Ενδυμασία\",\n    \"paint.paintEditor.group\": \"Ομαδοποίηση\",\n    \"paint.paintEditor.ungroup\": \"Διαχωρισμός\",\n    \"paint.paintEditor.undo\": \"Αναίρεση\",\n    \"paint.paintEditor.redo\": \"Επανάληψη\",\n    \"paint.paintEditor.forward\": \"Προς τα εμπρός\",\n    \"paint.paintEditor.backward\": \"Προς τα πίσω\",\n    \"paint.paintEditor.front\": \"Προσκήνιο\",\n    \"paint.paintEditor.back\": \"Παρασκήνιο\",\n    \"paint.paintEditor.more\": \"Περισσότερα\",\n    \"paint.modeTools.brushSize\": \"Μέγεθος\",\n    \"paint.modeTools.eraserSize\": \"Μέγεθος γόμας\",\n    \"paint.modeTools.copy\": \"Αντιγραφή\",\n    \"paint.modeTools.paste\": \"Επικόλληση\",\n    \"paint.modeTools.delete\": \"Διαγραφή\",\n    \"paint.modeTools.curved\": \"Καμπύλες\",\n    \"paint.modeTools.pointed\": \"Μυτερό\",\n    \"paint.modeTools.thickness\": \"Πάχος\",\n    \"paint.modeTools.flipHorizontal\": \"Οριζόντια Αναστροφή\",\n    \"paint.modeTools.flipVertical\": \"Κατακόρυφη Αναστροφή\",\n    \"paint.modeTools.filled\": \"Γεμάτο\",\n    \"paint.modeTools.outlined\": \"Με περίγραμμα\",\n    \"paint.paintEditor.bitmap\": \"Μετατροπή σε Ψηφιοαπεικόνιση (Bitmap)\",\n    \"paint.paintEditor.vector\": \"Μετατροπή σε Διάνυσμα (Vector)\",\n    \"paint.paintEditor.fill\": \"Γέμισμα\",\n    \"paint.paintEditor.stroke\": \"Περίγραμμα\",\n    \"paint.brushMode.brush\": \"Πινέλο\",\n    \"paint.eraserMode.eraser\": \"Γόμα\",\n    \"paint.fillMode.fill\": \"Γέμισμα\",\n    \"paint.lineMode.line\": \"Γραμμή\",\n    \"paint.ovalMode.oval\": \"Κύκλος\",\n    \"paint.rectMode.rect\": \"Ορθογώνιο\",\n    \"paint.reshapeMode.reshape\": \"Αλλαγή σχήματος\",\n    \"paint.roundedRectMode.roundedRect\": \"Στρογγυλεμένο Ορθογώνιο\",\n    \"paint.selectMode.select\": \"Επιλογή\",\n    \"paint.textMode.text\": \"Κείμενο\",\n    \"paint.colorPicker.swap\": \"Αντιμετάθεση\"\n  },\n  \"en\": {\n    \"paint.paintEditor.hue\": \"Color\",\n    \"paint.paintEditor.saturation\": \"Saturation\",\n    \"paint.paintEditor.brightness\": \"Brightness\",\n    \"gui.comingSoon.message1\": \"Don't worry, we're on it {emoji}\",\n    \"gui.comingSoon.message2\": \"Coming Soon...\",\n    \"gui.comingSoon.message3\": \"We're working on it {emoji}\",\n    \"paint.paintEditor.costume\": \"Costume\",\n    \"paint.paintEditor.group\": \"Group\",\n    \"paint.paintEditor.ungroup\": \"Ungroup\",\n    \"paint.paintEditor.undo\": \"Undo\",\n    \"paint.paintEditor.redo\": \"Redo\",\n    \"paint.paintEditor.forward\": \"Forward\",\n    \"paint.paintEditor.backward\": \"Backward\",\n    \"paint.paintEditor.front\": \"Front\",\n    \"paint.paintEditor.back\": \"Back\",\n    \"paint.paintEditor.more\": \"More\",\n    \"paint.modeTools.brushSize\": \"Size\",\n    \"paint.modeTools.eraserSize\": \"Eraser size\",\n    \"paint.modeTools.copy\": \"Copy\",\n    \"paint.modeTools.paste\": \"Paste\",\n    \"paint.modeTools.delete\": \"Delete\",\n    \"paint.modeTools.curved\": \"Curved\",\n    \"paint.modeTools.pointed\": \"Pointed\",\n    \"paint.modeTools.thickness\": \"Thickness\",\n    \"paint.modeTools.flipHorizontal\": \"Flip Horizontal\",\n    \"paint.modeTools.flipVertical\": \"Flip Vertical\",\n    \"paint.modeTools.filled\": \"Filled\",\n    \"paint.modeTools.outlined\": \"Outlined\",\n    \"paint.paintEditor.bitmap\": \"Convert to Bitmap\",\n    \"paint.paintEditor.vector\": \"Convert to Vector\",\n    \"paint.paintEditor.fill\": \"Fill\",\n    \"paint.paintEditor.stroke\": \"Outline\",\n    \"paint.brushMode.brush\": \"Brush\",\n    \"paint.eraserMode.eraser\": \"Eraser\",\n    \"paint.fillMode.fill\": \"Fill\",\n    \"paint.lineMode.line\": \"Line\",\n    \"paint.ovalMode.oval\": \"Circle\",\n    \"paint.rectMode.rect\": \"Rectangle\",\n    \"paint.reshapeMode.reshape\": \"Reshape\",\n    \"paint.roundedRectMode.roundedRect\": \"Rounded Rectangle\",\n    \"paint.selectMode.select\": \"Select\",\n    \"paint.textMode.text\": \"Text\",\n    \"paint.colorPicker.swap\": \"Swap\"\n  },\n  \"es\": {\n    \"paint.paintEditor.hue\": \"Color\",\n    \"paint.paintEditor.saturation\": \"Saturación\",\n    \"paint.paintEditor.brightness\": \"Brillo\",\n    \"gui.comingSoon.message1\": \"No te preocupes, estamos en ello {emoji}\",\n    \"gui.comingSoon.message2\": \"Próximamente...\",\n    \"gui.comingSoon.message3\": \"Estamos trabajando en ello {emoji}\",\n    \"paint.paintEditor.costume\": \"Disfraz\",\n    \"paint.paintEditor.group\": \"Agrupar\",\n    \"paint.paintEditor.ungroup\": \"Desagrupar\",\n    \"paint.paintEditor.undo\": \"Deshacer\",\n    \"paint.paintEditor.redo\": \"Rehacer\",\n    \"paint.paintEditor.forward\": \"Adelante\",\n    \"paint.paintEditor.backward\": \"Atrás\",\n    \"paint.paintEditor.front\": \"Al frente\",\n    \"paint.paintEditor.back\": \"Al fondo\",\n    \"paint.paintEditor.more\": \"Más\",\n    \"paint.modeTools.brushSize\": \"Tamaño\",\n    \"paint.modeTools.eraserSize\": \"Tamaño de la goma\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Pegar\",\n    \"paint.modeTools.delete\": \"Eliminar\",\n    \"paint.modeTools.curved\": \"Curvado\",\n    \"paint.modeTools.pointed\": \"Recto\",\n    \"paint.modeTools.thickness\": \"Grosor\",\n    \"paint.modeTools.flipHorizontal\": \"Voltear horizontalmente\",\n    \"paint.modeTools.flipVertical\": \"Voltear verticalmente\",\n    \"paint.modeTools.filled\": \"Relleno\",\n    \"paint.modeTools.outlined\": \"Contorneado\",\n    \"paint.paintEditor.bitmap\": \"Convertir a mapa de bits\",\n    \"paint.paintEditor.vector\": \"Convertir a vector\",\n    \"paint.paintEditor.fill\": \"Rellenar\",\n    \"paint.paintEditor.stroke\": \"Borde\",\n    \"paint.brushMode.brush\": \"Pincel\",\n    \"paint.eraserMode.eraser\": \"Goma\",\n    \"paint.fillMode.fill\": \"Rellenar\",\n    \"paint.lineMode.line\": \"Línea\",\n    \"paint.ovalMode.oval\": \"Círculo\",\n    \"paint.rectMode.rect\": \"Rectángulo\",\n    \"paint.reshapeMode.reshape\": \"Volver a dar forma\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectángulo con bordes redoneados\",\n    \"paint.selectMode.select\": \"Seleccionar\",\n    \"paint.textMode.text\": \"Texto\",\n    \"paint.colorPicker.swap\": \"Invertir\"\n  },\n  \"es-419\": {\n    \"paint.paintEditor.hue\": \"Color\",\n    \"paint.paintEditor.saturation\": \"Saturación\",\n    \"paint.paintEditor.brightness\": \"Brillo\",\n    \"gui.comingSoon.message1\": \"No te preocupes, estamos en eso {emoji}\",\n    \"gui.comingSoon.message2\": \"Próximamente...\",\n    \"gui.comingSoon.message3\": \"Estamos trabajando en ello {emoji}\",\n    \"paint.paintEditor.costume\": \"Disfraz\",\n    \"paint.paintEditor.group\": \"Agrupar\",\n    \"paint.paintEditor.ungroup\": \"Desagrupar\",\n    \"paint.paintEditor.undo\": \"Deshacer\",\n    \"paint.paintEditor.redo\": \"Rehacer\",\n    \"paint.paintEditor.forward\": \"Adelante\",\n    \"paint.paintEditor.backward\": \"Atrás\",\n    \"paint.paintEditor.front\": \"Al frente\",\n    \"paint.paintEditor.back\": \"Al fondo\",\n    \"paint.paintEditor.more\": \"Más\",\n    \"paint.modeTools.brushSize\": \"Tamaño\",\n    \"paint.modeTools.eraserSize\": \"Tamaño del borrador\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Pegar\",\n    \"paint.modeTools.delete\": \"Eliminar\",\n    \"paint.modeTools.curved\": \"Curvo\",\n    \"paint.modeTools.pointed\": \"Puntiagudo\",\n    \"paint.modeTools.thickness\": \"Grosor\",\n    \"paint.modeTools.flipHorizontal\": \"Voltear horizontal\",\n    \"paint.modeTools.flipVertical\": \"Voltear vertical\",\n    \"paint.modeTools.filled\": \"Relleno\",\n    \"paint.modeTools.outlined\": \"Con contorno\",\n    \"paint.paintEditor.bitmap\": \"Convertir a mapa de bits\",\n    \"paint.paintEditor.vector\": \"Convertir a vector\",\n    \"paint.paintEditor.fill\": \"Relleno\",\n    \"paint.paintEditor.stroke\": \"Contorno\",\n    \"paint.brushMode.brush\": \"Pincel\",\n    \"paint.eraserMode.eraser\": \"Borrador\",\n    \"paint.fillMode.fill\": \"Relleno\",\n    \"paint.lineMode.line\": \"Línea\",\n    \"paint.ovalMode.oval\": \"Círculo\",\n    \"paint.rectMode.rect\": \"Rectángulo\",\n    \"paint.reshapeMode.reshape\": \"Cambiar forma\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectángulo redondeado\",\n    \"paint.selectMode.select\": \"Seleccionar\",\n    \"paint.textMode.text\": \"Texto\",\n    \"paint.colorPicker.swap\": \"Intercambiar\"\n  },\n  \"eo\": {\n    \"paint.paintEditor.hue\": \"Koloro\",\n    \"paint.paintEditor.saturation\": \"Satureco\",\n    \"paint.paintEditor.brightness\": \"Heleco\",\n    \"gui.comingSoon.message1\": \"Ne zorgu, ni baldaŭ okupiĝos pri tio {emoji}\",\n    \"gui.comingSoon.message2\": \"Venos baldaŭ...\",\n    \"gui.comingSoon.message3\": \"Ni laboras pri tio {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostumo\",\n    \"paint.paintEditor.group\": \"Grupo\",\n    \"paint.paintEditor.ungroup\": \"Malgrupigi\",\n    \"paint.paintEditor.undo\": \"Malfari\",\n    \"paint.paintEditor.redo\": \"Refari\",\n    \"paint.paintEditor.forward\": \"supren\",\n    \"paint.paintEditor.backward\": \"malsupren\",\n    \"paint.paintEditor.front\": \"al la supro\",\n    \"paint.paintEditor.back\": \"Reen\",\n    \"paint.paintEditor.more\": \"Pli\",\n    \"paint.modeTools.brushSize\": \"Grandeco\",\n    \"paint.modeTools.eraserSize\": \"grando de forviŝilo\",\n    \"paint.modeTools.copy\": \"Kopii\",\n    \"paint.modeTools.paste\": \"Alglui\",\n    \"paint.modeTools.delete\": \"Forigi\",\n    \"paint.modeTools.curved\": \"Kurbigi\",\n    \"paint.modeTools.pointed\": \"akrigi\",\n    \"paint.modeTools.thickness\": \"Larĝo\",\n    \"paint.modeTools.flipHorizontal\": \"inversi horizontale\",\n    \"paint.modeTools.flipVertical\": \"inversi vertikale\",\n    \"paint.modeTools.filled\": \"Plenigita\",\n    \"paint.modeTools.outlined\": \"Konturo\",\n    \"paint.paintEditor.bitmap\": \"Konverti al rastruma bildo\",\n    \"paint.paintEditor.vector\": \"Konverti al vektora bildo\",\n    \"paint.paintEditor.fill\": \"Plenigi\",\n    \"paint.paintEditor.stroke\": \"Konturo\",\n    \"paint.brushMode.brush\": \"Peniko\",\n    \"paint.eraserMode.eraser\": \"Forviŝilo\",\n    \"paint.fillMode.fill\": \"Plenigi\",\n    \"paint.lineMode.line\": \"Linio\",\n    \"paint.ovalMode.oval\": \"Cirklo\",\n    \"paint.rectMode.rect\": \"Rektangulo\",\n    \"paint.reshapeMode.reshape\": \"Ŝanĝi formon\",\n    \"paint.roundedRectMode.roundedRect\": \"Rondigita rektangulo\",\n    \"paint.selectMode.select\": \"Elekti\",\n    \"paint.textMode.text\": \"Teksto\",\n    \"paint.colorPicker.swap\": \"Interŝanĝi\"\n  },\n  \"eu\": {\n    \"paint.paintEditor.hue\": \"Kolorea\",\n    \"paint.paintEditor.saturation\": \"Asetasuna\",\n    \"paint.paintEditor.brightness\": \"Distira\",\n    \"gui.comingSoon.message1\": \"Lasai, horretan gabiltza {emoji}\",\n    \"gui.comingSoon.message2\": \"Laster ...\",\n    \"gui.comingSoon.message3\": \"Horretan ari gara {emoji}\",\n    \"paint.paintEditor.costume\": \"Tankera\",\n    \"paint.paintEditor.group\": \"Taldekatu\",\n    \"paint.paintEditor.ungroup\": \"Desegin taldea\",\n    \"paint.paintEditor.undo\": \"Desegin\",\n    \"paint.paintEditor.redo\": \"Berregin\",\n    \"paint.paintEditor.forward\": \"Aurrealderantz\",\n    \"paint.paintEditor.backward\": \"Atzealderantz\",\n    \"paint.paintEditor.front\": \"Aurrealdera\",\n    \"paint.paintEditor.back\": \"Atzealdera\",\n    \"paint.paintEditor.more\": \"Gehiago\",\n    \"paint.modeTools.brushSize\": \"Tamaina\",\n    \"paint.modeTools.eraserSize\": \"Ezabatzailearen tamaina\",\n    \"paint.modeTools.copy\": \"Kopiatu\",\n    \"paint.modeTools.paste\": \"Itsatsi\",\n    \"paint.modeTools.delete\": \"Ezabatu\",\n    \"paint.modeTools.curved\": \"Kurbatua\",\n    \"paint.modeTools.pointed\": \"Zorrotza\",\n    \"paint.modeTools.thickness\": \"Lodiera\",\n    \"paint.modeTools.flipHorizontal\": \"Islatu horizontalki\",\n    \"paint.modeTools.flipVertical\": \"Islatu bertikalki\",\n    \"paint.modeTools.filled\": \"Betea\",\n    \"paint.modeTools.outlined\": \"Eskematizatua\",\n    \"paint.paintEditor.bitmap\": \"Bihurtu Bitmap\",\n    \"paint.paintEditor.vector\": \"Bihurtu bektore\",\n    \"paint.paintEditor.fill\": \"Bete\",\n    \"paint.paintEditor.stroke\": \"Eskema\",\n    \"paint.brushMode.brush\": \"Pintzela\",\n    \"paint.eraserMode.eraser\": \"Ezabatzailea\",\n    \"paint.fillMode.fill\": \"Bete\",\n    \"paint.lineMode.line\": \"Marra\",\n    \"paint.ovalMode.oval\": \"Zirkuloa\",\n    \"paint.rectMode.rect\": \"Laukizuzena\",\n    \"paint.reshapeMode.reshape\": \"Aldatu forma\",\n    \"paint.roundedRectMode.roundedRect\": \"Laukizuzen biribildua\",\n    \"paint.selectMode.select\": \"Hautatu\",\n    \"paint.textMode.text\": \"Testua\",\n    \"paint.colorPicker.swap\": \"Trukatu\"\n  },\n  \"fa\": {\n    \"paint.paintEditor.hue\": \"رنگ\",\n    \"paint.paintEditor.saturation\": \"شدت رنگ\",\n    \"paint.paintEditor.brightness\": \"روشنایی\",\n    \"gui.comingSoon.message1\": \"نگران نباشید، ما داریم روی آن کار می‌کنیم{emoji}\",\n    \"gui.comingSoon.message2\": \"به زودی...\",\n    \"gui.comingSoon.message3\": \"ما در حال کار بر روی آن هستیم {emoji}\",\n    \"paint.paintEditor.costume\": \"حالت\",\n    \"paint.paintEditor.group\": \"گروه\",\n    \"paint.paintEditor.ungroup\": \"تفکیک\",\n    \"paint.paintEditor.undo\": \"واگـرد\",\n    \"paint.paintEditor.redo\": \"باز انجام\",\n    \"paint.paintEditor.forward\": \"جلوتر\",\n    \"paint.paintEditor.backward\": \"عقب‌تر\",\n    \"paint.paintEditor.front\": \"اولین\",\n    \"paint.paintEditor.back\": \"آخرین\",\n    \"paint.paintEditor.more\": \"بیشتر\",\n    \"paint.modeTools.brushSize\": \"اندازه\",\n    \"paint.modeTools.eraserSize\": \"اندازه‌ی پاک‌ کن\",\n    \"paint.modeTools.copy\": \"کپی\",\n    \"paint.modeTools.paste\": \"جای‌گذاری\",\n    \"paint.modeTools.delete\": \"حذف\",\n    \"paint.modeTools.curved\": \"خمیده\",\n    \"paint.modeTools.pointed\": \"تیز\",\n    \"paint.modeTools.thickness\": \"ضخامت\",\n    \"paint.modeTools.flipHorizontal\": \"قرینه عمودی\",\n    \"paint.modeTools.flipVertical\": \"قرینه‌ی افقی\",\n    \"paint.modeTools.filled\": \"تو پُــر\",\n    \"paint.modeTools.outlined\": \"تو خالی\",\n    \"paint.paintEditor.bitmap\": \"تبدیل به بیت‌مپ\",\n    \"paint.paintEditor.vector\": \"تبدیل به بردار\",\n    \"paint.paintEditor.fill\": \"رنگ\",\n    \"paint.paintEditor.stroke\": \"خط دور\",\n    \"paint.brushMode.brush\": \"قلم‌مو\",\n    \"paint.eraserMode.eraser\": \"پاک‌ کن\",\n    \"paint.fillMode.fill\": \"سطل رنگ\",\n    \"paint.lineMode.line\": \"خط\",\n    \"paint.ovalMode.oval\": \"دایره\",\n    \"paint.rectMode.rect\": \"مستطیل\",\n    \"paint.reshapeMode.reshape\": \"تغییر شکل\",\n    \"paint.roundedRectMode.roundedRect\": \"مستطیل دور گرد\",\n    \"paint.selectMode.select\": \"انتخاب\",\n    \"paint.textMode.text\": \"متن\",\n    \"paint.colorPicker.swap\": \"جابه‌جا\"\n  },\n  \"fil\": {\n    \"paint.paintEditor.hue\": \"Kulay\",\n    \"paint.paintEditor.saturation\": \"Tingkad\",\n    \"paint.paintEditor.brightness\": \"Liwanag\",\n    \"gui.comingSoon.message1\": \"Wag po kayong mag-alala, ginagawa na po namin {emoji}\",\n    \"gui.comingSoon.message2\": \"Abangan...\",\n    \"gui.comingSoon.message3\": \"Ginagawa na po namin {emoji}\",\n    \"paint.paintEditor.costume\": \"Costume\",\n    \"paint.paintEditor.group\": \"Igrupo\",\n    \"paint.paintEditor.ungroup\": \"Wag igrupo\",\n    \"paint.paintEditor.undo\": \"I-undo\",\n    \"paint.paintEditor.redo\": \"I-redo\",\n    \"paint.paintEditor.forward\": \"Iharap\",\n    \"paint.paintEditor.backward\": \"Ilikod\",\n    \"paint.paintEditor.front\": \"Harap\",\n    \"paint.paintEditor.back\": \"Balik\",\n    \"paint.paintEditor.more\": \"Higit pa\",\n    \"paint.modeTools.brushSize\": \"Laki\",\n    \"paint.modeTools.eraserSize\": \"Laki ng pambura\",\n    \"paint.modeTools.copy\": \"Kopyahin\",\n    \"paint.modeTools.paste\": \"I-paste\",\n    \"paint.modeTools.delete\": \"Burahin\",\n    \"paint.modeTools.curved\": \"Nakakurba\",\n    \"paint.modeTools.pointed\": \"Matulis\",\n    \"paint.modeTools.thickness\": \"Kapal\",\n    \"paint.modeTools.flipHorizontal\": \"Baligtarin Pahiga\",\n    \"paint.modeTools.flipVertical\": \"Baligtarin Patayo\",\n    \"paint.modeTools.filled\": \"Kinulayan\",\n    \"paint.modeTools.outlined\": \"Nakabakas\",\n    \"paint.paintEditor.bitmap\": \"I-convert sa Bitmap\",\n    \"paint.paintEditor.vector\": \"I-convert sa Vector\",\n    \"paint.paintEditor.fill\": \"Kulayan\",\n    \"paint.paintEditor.stroke\": \"Bakas\",\n    \"paint.brushMode.brush\": \"Brush\",\n    \"paint.eraserMode.eraser\": \"Pambura\",\n    \"paint.fillMode.fill\": \"Kulayan\",\n    \"paint.lineMode.line\": \"Linya\",\n    \"paint.ovalMode.oval\": \"Bilog\",\n    \"paint.rectMode.rect\": \"Parihaba\",\n    \"paint.reshapeMode.reshape\": \"Ibahin ang hugis\",\n    \"paint.roundedRectMode.roundedRect\": \"Parihabang pabilog\",\n    \"paint.selectMode.select\": \"Pumili\",\n    \"paint.textMode.text\": \"Teksto\",\n    \"paint.colorPicker.swap\": \"Magpalitan\"\n  },\n  \"fr\": {\n    \"paint.paintEditor.hue\": \"Couleur\",\n    \"paint.paintEditor.saturation\": \"Saturation\",\n    \"paint.paintEditor.brightness\": \"Luminosité\",\n    \"gui.comingSoon.message1\": \"Ne t'inquiète pas, on y travaille {emoji}\",\n    \"gui.comingSoon.message2\": \"Ça arrive bientôt...\",\n    \"gui.comingSoon.message3\": \"Nous y travaillons {emoji}\",\n    \"paint.paintEditor.costume\": \"Costume\",\n    \"paint.paintEditor.group\": \"Grouper\",\n    \"paint.paintEditor.ungroup\": \"Dégrouper\",\n    \"paint.paintEditor.undo\": \"Restaurer\",\n    \"paint.paintEditor.redo\": \"Refaire\",\n    \"paint.paintEditor.forward\": \"Avancer\",\n    \"paint.paintEditor.backward\": \"Reculer\",\n    \"paint.paintEditor.front\": \"Avant-plan\",\n    \"paint.paintEditor.back\": \"Arrière-plan\",\n    \"paint.paintEditor.more\": \"Plus\",\n    \"paint.modeTools.brushSize\": \"Taille\",\n    \"paint.modeTools.eraserSize\": \"Taille de la gomme\",\n    \"paint.modeTools.copy\": \"Copier\",\n    \"paint.modeTools.paste\": \"Coller\",\n    \"paint.modeTools.delete\": \"Supprimer\",\n    \"paint.modeTools.curved\": \"Courbé\",\n    \"paint.modeTools.pointed\": \"Pointu\",\n    \"paint.modeTools.thickness\": \"Épaisseur\",\n    \"paint.modeTools.flipHorizontal\": \"Retourner horizontalement\",\n    \"paint.modeTools.flipVertical\": \"Retourner verticalement\",\n    \"paint.modeTools.filled\": \"Plein\",\n    \"paint.modeTools.outlined\": \"Contours\",\n    \"paint.paintEditor.bitmap\": \"Convertir en bitmap\",\n    \"paint.paintEditor.vector\": \"Convertir en Vecteur\",\n    \"paint.paintEditor.fill\": \"Remplissage\",\n    \"paint.paintEditor.stroke\": \"Contour\",\n    \"paint.brushMode.brush\": \"Pinceau\",\n    \"paint.eraserMode.eraser\": \"Gomme\",\n    \"paint.fillMode.fill\": \"Remplissage\",\n    \"paint.lineMode.line\": \"Ligne\",\n    \"paint.ovalMode.oval\": \"Cercle\",\n    \"paint.rectMode.rect\": \"Rectangle\",\n    \"paint.reshapeMode.reshape\": \"Redessiner\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectangle arrondi\",\n    \"paint.selectMode.select\": \"Sélectionner\",\n    \"paint.textMode.text\": \"Texte\",\n    \"paint.colorPicker.swap\": \"Inverser\"\n  },\n  \"fy\": {\n    \"paint.paintEditor.hue\": \"Kleur\",\n    \"paint.paintEditor.saturation\": \"Sêding\",\n    \"paint.paintEditor.brightness\": \"Helderheid\",\n    \"gui.comingSoon.message1\": \"Gjin need, wy wurkje deroan {emoji}\",\n    \"gui.comingSoon.message2\": \"Meikoarten...\",\n    \"gui.comingSoon.message3\": \"Wy wurkje deroan {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostúm\",\n    \"paint.paintEditor.group\": \"Groep\",\n    \"paint.paintEditor.ungroup\": \"Ut groep helje\",\n    \"paint.paintEditor.undo\": \"Ungedien meitsje\",\n    \"paint.paintEditor.redo\": \"Op 'e nij dwaan\",\n    \"paint.paintEditor.forward\": \"Foarút\",\n    \"paint.paintEditor.backward\": \"Efterút\",\n    \"paint.paintEditor.front\": \"Foarkant\",\n    \"paint.paintEditor.back\": \"Werom\",\n    \"paint.paintEditor.more\": \"Mear\",\n    \"paint.modeTools.brushSize\": \"Grutte\",\n    \"paint.modeTools.eraserSize\": \"Gumgrutte\",\n    \"paint.modeTools.copy\": \"Kopiearje\",\n    \"paint.modeTools.paste\": \"Plakke\",\n    \"paint.modeTools.delete\": \"Fuorthelje\",\n    \"paint.modeTools.curved\": \"Bûgd\",\n    \"paint.modeTools.pointed\": \"Oanwiisd\",\n    \"paint.modeTools.thickness\": \"Dikte\",\n    \"paint.modeTools.flipHorizontal\": \"Horizontaal omdraaie\",\n    \"paint.modeTools.flipVertical\": \"Fertikaal omdraaie\",\n    \"paint.modeTools.filled\": \"Folle\",\n    \"paint.modeTools.outlined\": \"Bûtenste râne\",\n    \"paint.paintEditor.bitmap\": \"Omsette nei Bitmap\",\n    \"paint.paintEditor.vector\": \"Omsette nei Fektor\",\n    \"paint.paintEditor.fill\": \"Folje\",\n    \"paint.paintEditor.stroke\": \"Râne\",\n    \"paint.brushMode.brush\": \"Kwast\",\n    \"paint.eraserMode.eraser\": \"Gum\",\n    \"paint.fillMode.fill\": \"Folje\",\n    \"paint.lineMode.line\": \"Rigel\",\n    \"paint.ovalMode.oval\": \"Sirkel\",\n    \"paint.rectMode.rect\": \"Rjochthoek\",\n    \"paint.reshapeMode.reshape\": \"Foarm feroarje\",\n    \"paint.roundedRectMode.roundedRect\": \"Rjochthoek mei rûne hoeken\",\n    \"paint.selectMode.select\": \"Selektearje\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Ruilje\"\n  },\n  \"ga\": {\n    \"paint.paintEditor.hue\": \"Dath\",\n    \"paint.paintEditor.saturation\": \"Sáithiú\",\n    \"paint.paintEditor.brightness\": \"Gile\",\n    \"gui.comingSoon.message1\": \"Ná buair do cheann, táimid ag plé leis {emoji}\",\n    \"gui.comingSoon.message2\": \"Le teacht go luath...\",\n    \"gui.comingSoon.message3\": \"Táimid ag plé leis {emoji}\",\n    \"paint.paintEditor.costume\": \"Culaith\",\n    \"paint.paintEditor.group\": \"Grúpa\",\n    \"paint.paintEditor.ungroup\": \"Díghrúpáil\",\n    \"paint.paintEditor.undo\": \"Cealaigh\",\n    \"paint.paintEditor.redo\": \"Athdhéan\",\n    \"paint.paintEditor.forward\": \"Ar aghaidh\",\n    \"paint.paintEditor.backward\": \"Ar gcúl\",\n    \"paint.paintEditor.front\": \"Chun tosaigh\",\n    \"paint.paintEditor.back\": \"Chun deiridh\",\n    \"paint.paintEditor.more\": \"Tuilleadh\",\n    \"paint.modeTools.brushSize\": \"Méid\",\n    \"paint.modeTools.eraserSize\": \"Méid an léirscriosáin\",\n    \"paint.modeTools.copy\": \"Cóipeáil\",\n    \"paint.modeTools.paste\": \"Greamaigh\",\n    \"paint.modeTools.delete\": \"Scrios\",\n    \"paint.modeTools.curved\": \"Cuartha\",\n    \"paint.modeTools.pointed\": \"Bioraithe\",\n    \"paint.modeTools.thickness\": \"Leithead\",\n    \"paint.modeTools.flipHorizontal\": \"Smeach go cothrománach\",\n    \"paint.modeTools.flipVertical\": \"Smeach go hingearach\",\n    \"paint.modeTools.filled\": \"Líonta\",\n    \"paint.modeTools.outlined\": \"Imlínithe\",\n    \"paint.paintEditor.bitmap\": \"Tiontaigh go mapa giotán\",\n    \"paint.paintEditor.vector\": \"Mód Veicteora\",\n    \"paint.paintEditor.fill\": \"Líon\",\n    \"paint.paintEditor.stroke\": \"Imlíne\",\n    \"paint.brushMode.brush\": \"Scuab\",\n    \"paint.eraserMode.eraser\": \"Léirscriosán\",\n    \"paint.fillMode.fill\": \"Líon\",\n    \"paint.lineMode.line\": \"Líne\",\n    \"paint.ovalMode.oval\": \"Ciorcal\",\n    \"paint.rectMode.rect\": \"Dronuilleog\",\n    \"paint.reshapeMode.reshape\": \"Athdheilbhigh\",\n    \"paint.roundedRectMode.roundedRect\": \"Dronuilleog Chruinn\",\n    \"paint.selectMode.select\": \"Roghnaigh\",\n    \"paint.textMode.text\": \"Téacs\",\n    \"paint.colorPicker.swap\": \"Babhtáil\"\n  },\n  \"gd\": {\n    \"paint.paintEditor.hue\": \"Dath\",\n    \"paint.paintEditor.saturation\": \"Sàthachd\",\n    \"paint.paintEditor.brightness\": \"Soilleireachd\",\n    \"gui.comingSoon.message1\": \"Na gabh dragh, tha sinn ag obair air {emoji}\",\n    \"gui.comingSoon.message2\": \"Ri thighinn a dh’aithghearr…\",\n    \"gui.comingSoon.message3\": \"Tha sinn ag obair air {emoji}\",\n    \"paint.paintEditor.costume\": \"Dreach\",\n    \"paint.paintEditor.group\": \"Buidhnich\",\n    \"paint.paintEditor.ungroup\": \"Sgaoil am buidheann\",\n    \"paint.paintEditor.undo\": \"Neo-dhèan\",\n    \"paint.paintEditor.redo\": \"Ath-dhèan\",\n    \"paint.paintEditor.forward\": \"Gluais an comhair a’ bheòil\",\n    \"paint.paintEditor.backward\": \"Gluais an comhair a’ chùil\",\n    \"paint.paintEditor.front\": \"Gluais dhan fhìor-bheulaibh\",\n    \"paint.paintEditor.back\": \"Gluais dhan fhìor-chùlaibh\",\n    \"paint.paintEditor.more\": \"Barrachd\",\n    \"paint.modeTools.brushSize\": \"Meud na bruise\",\n    \"paint.modeTools.eraserSize\": \"Meud an t‑suathain\",\n    \"paint.modeTools.copy\": \"Dèan lethbhreac\",\n    \"paint.modeTools.paste\": \"Cuir ann\",\n    \"paint.modeTools.delete\": \"Sguab às\",\n    \"paint.modeTools.curved\": \"Cruinn\",\n    \"paint.modeTools.pointed\": \"Biorach\",\n    \"paint.modeTools.thickness\": \"Tiughad\",\n    \"paint.modeTools.flipHorizontal\": \"Flip air a’ chòmhnard\",\n    \"paint.modeTools.flipVertical\": \"Flip gu h‑inghearach\",\n    \"paint.modeTools.filled\": \"Lìonta\",\n    \"paint.modeTools.outlined\": \"Oir‑loidhne\",\n    \"paint.paintEditor.bitmap\": \"Iompaich na bitmap\",\n    \"paint.paintEditor.vector\": \"Iompaich na vector\",\n    \"paint.paintEditor.fill\": \"Lìonadh\",\n    \"paint.paintEditor.stroke\": \"Oir‑loidhne\",\n    \"paint.brushMode.brush\": \"Bruis\",\n    \"paint.eraserMode.eraser\": \"Suathan\",\n    \"paint.fillMode.fill\": \"Lìonadh\",\n    \"paint.lineMode.line\": \"Loidhne\",\n    \"paint.ovalMode.oval\": \"Cearcall\",\n    \"paint.rectMode.rect\": \"Ceart-cheàrnach\",\n    \"paint.reshapeMode.reshape\": \"Cumadh\",\n    \"paint.roundedRectMode.roundedRect\": \"Ceart-cheàrnach cruinnte\",\n    \"paint.selectMode.select\": \"Tagh\",\n    \"paint.textMode.text\": \"Teacsa\",\n    \"paint.colorPicker.swap\": \"Suaip\"\n  },\n  \"gl\": {\n    \"paint.paintEditor.hue\": \"Cor\",\n    \"paint.paintEditor.saturation\": \"Saturación\",\n    \"paint.paintEditor.brightness\": \"Luminosidade\",\n    \"gui.comingSoon.message1\": \"Non te preocupes, andamos niso {emoji}\",\n    \"gui.comingSoon.message2\": \"Proximamente...\",\n    \"gui.comingSoon.message3\": \"Andamos a traballar nisto {emoji}\",\n    \"paint.paintEditor.costume\": \"Traxe\",\n    \"paint.paintEditor.group\": \"Agrupar\",\n    \"paint.paintEditor.ungroup\": \"Desagrupar\",\n    \"paint.paintEditor.undo\": \"Desfacer\",\n    \"paint.paintEditor.redo\": \"Refacer\",\n    \"paint.paintEditor.forward\": \"Adiante\",\n    \"paint.paintEditor.backward\": \"Atrás\",\n    \"paint.paintEditor.front\": \"Traer á fronte\",\n    \"paint.paintEditor.back\": \"Levar ao fondo\",\n    \"paint.paintEditor.more\": \"Máis\",\n    \"paint.modeTools.brushSize\": \"Tamaño\",\n    \"paint.modeTools.eraserSize\": \"Tamaño do borrador\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Pegar\",\n    \"paint.modeTools.delete\": \"Eliminar\",\n    \"paint.modeTools.curved\": \"A curvas\",\n    \"paint.modeTools.pointed\": \"Bordes Afiados\",\n    \"paint.modeTools.thickness\": \"Gordura\",\n    \"paint.modeTools.flipHorizontal\": \"Voltear en horizontal\",\n    \"paint.modeTools.flipVertical\": \"Voltear en vertical\",\n    \"paint.modeTools.filled\": \"Enchido\",\n    \"paint.modeTools.outlined\": \"Bordos\",\n    \"paint.paintEditor.bitmap\": \"Converter en mapa de bits\",\n    \"paint.paintEditor.vector\": \"Converter en vectores\",\n    \"paint.paintEditor.fill\": \"Recheo\",\n    \"paint.paintEditor.stroke\": \"Bordo\",\n    \"paint.brushMode.brush\": \"Pincel\",\n    \"paint.eraserMode.eraser\": \"Borrador\",\n    \"paint.fillMode.fill\": \"Encher\",\n    \"paint.lineMode.line\": \"Liña\",\n    \"paint.ovalMode.oval\": \"Círculo\",\n    \"paint.rectMode.rect\": \"Rectángulo\",\n    \"paint.reshapeMode.reshape\": \"Reformar\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectángulo arredondado\",\n    \"paint.selectMode.select\": \"Seleccionar\",\n    \"paint.textMode.text\": \"Texto\",\n    \"paint.colorPicker.swap\": \"Trocar\"\n  },\n  \"ko\": {\n    \"paint.paintEditor.hue\": \"색상\",\n    \"paint.paintEditor.saturation\": \"채도\",\n    \"paint.paintEditor.brightness\": \"명도\",\n    \"gui.comingSoon.message1\": \"걱정 마세요, 작업 중입니다 {emoji}\",\n    \"gui.comingSoon.message2\": \"곧 이용 가능합니다...\",\n    \"gui.comingSoon.message3\": \"작업 중입니다 {emoji}\",\n    \"paint.paintEditor.costume\": \"모양\",\n    \"paint.paintEditor.group\": \"그룹화 적용\",\n    \"paint.paintEditor.ungroup\": \"그룹화 해제\",\n    \"paint.paintEditor.undo\": \"되돌리기\",\n    \"paint.paintEditor.redo\": \"재시도\",\n    \"paint.paintEditor.forward\": \"앞으로\",\n    \"paint.paintEditor.backward\": \"뒤로\",\n    \"paint.paintEditor.front\": \"맨 앞으로\",\n    \"paint.paintEditor.back\": \"맨 뒤로\",\n    \"paint.paintEditor.more\": \"기타\",\n    \"paint.modeTools.brushSize\": \"크기\",\n    \"paint.modeTools.eraserSize\": \"지우개 크기\",\n    \"paint.modeTools.copy\": \"복사\",\n    \"paint.modeTools.paste\": \"붙이기\",\n    \"paint.modeTools.delete\": \"삭제\",\n    \"paint.modeTools.curved\": \"굽은 모양\",\n    \"paint.modeTools.pointed\": \"꺾인 모양\",\n    \"paint.modeTools.thickness\": \"굵기\",\n    \"paint.modeTools.flipHorizontal\": \"좌우 뒤집기\",\n    \"paint.modeTools.flipVertical\": \"상하 뒤집기\",\n    \"paint.modeTools.filled\": \"채우기\",\n    \"paint.modeTools.outlined\": \"윤곽선\",\n    \"paint.paintEditor.bitmap\": \"비트맵으로 바꾸기\",\n    \"paint.paintEditor.vector\": \"벡터로 바꾸기\",\n    \"paint.paintEditor.fill\": \"채우기 색\",\n    \"paint.paintEditor.stroke\": \"윤곽선 색\",\n    \"paint.brushMode.brush\": \"붓\",\n    \"paint.eraserMode.eraser\": \"지우개\",\n    \"paint.fillMode.fill\": \"채우기 색\",\n    \"paint.lineMode.line\": \"선\",\n    \"paint.ovalMode.oval\": \"원\",\n    \"paint.rectMode.rect\": \"직사각형\",\n    \"paint.reshapeMode.reshape\": \"형태 고치기\",\n    \"paint.roundedRectMode.roundedRect\": \"모서리가 둥근 직사각형\",\n    \"paint.selectMode.select\": \"선택\",\n    \"paint.textMode.text\": \"텍스트\",\n    \"paint.colorPicker.swap\": \"바꾸기\"\n  },\n  \"ha\": {\n    \"paint.paintEditor.hue\": \"launi\",\n    \"paint.paintEditor.saturation\": \"Yanayin tumbatsa\",\n    \"paint.paintEditor.brightness\": \"yanayin haske\",\n    \"gui.comingSoon.message1\": \"Kar a damu, muna aiki a kai {emoji}\",\n    \"gui.comingSoon.message2\": \"Yana nan tafe...\",\n    \"gui.comingSoon.message3\": \"Muna aiki a kai {emoji}\",\n    \"paint.paintEditor.costume\": \"Fasali \",\n    \"paint.paintEditor.group\": \"Rukuni\",\n    \"paint.paintEditor.ungroup\": \"Raba rukuni\",\n    \"paint.paintEditor.undo\": \"warwarewa\",\n    \"paint.paintEditor.redo\": \"sake yi\",\n    \"paint.paintEditor.forward\": \"ci gaba\",\n    \"paint.paintEditor.backward\": \"ci baya\",\n    \"paint.paintEditor.front\": \"Gaba\",\n    \"paint.paintEditor.back\": \"Baya\",\n    \"paint.paintEditor.more\": \"ƙari\",\n    \"paint.modeTools.brushSize\": \"girma\",\n    \"paint.modeTools.eraserSize\": \"Girman abun gogewa\",\n    \"paint.modeTools.copy\": \"kwafa\",\n    \"paint.modeTools.paste\": \"manna\",\n    \"paint.modeTools.delete\": \"goge\",\n    \"paint.modeTools.curved\": \"mai lanƙwasa\",\n    \"paint.modeTools.pointed\": \"An nuna\",\n    \"paint.modeTools.thickness\": \"kauri\",\n    \"paint.modeTools.flipHorizontal\": \"Jefa a kwance\",\n    \"paint.modeTools.flipVertical\": \"Jefa a tsaye\",\n    \"paint.modeTools.filled\": \"an cika\",\n    \"paint.modeTools.outlined\": \"ƙayyadadde\",\n    \"paint.paintEditor.bitmap\": \"Maida zuwa bitmap\",\n    \"paint.paintEditor.vector\": \"maida zuwa tataccen zanen kwamfuta\",\n    \"paint.paintEditor.fill\": \"cika\",\n    \"paint.paintEditor.stroke\": \"ƙayyadewa\",\n    \"paint.brushMode.brush\": \"burushi\",\n    \"paint.eraserMode.eraser\": \"abun gogewa\",\n    \"paint.fillMode.fill\": \"cika\",\n    \"paint.lineMode.line\": \"layi\",\n    \"paint.ovalMode.oval\": \"da'ira\",\n    \"paint.rectMode.rect\": \"murabba'i mai dari\",\n    \"paint.reshapeMode.reshape\": \"sake siffantawa\",\n    \"paint.roundedRectMode.roundedRect\": \"Lanƙwasasshen murabba'i mai dari \",\n    \"paint.selectMode.select\": \"Zaɓa\",\n    \"paint.textMode.text\": \"rubutu\",\n    \"paint.colorPicker.swap\": \"musanya\"\n  },\n  \"hy\": {\n    \"paint.paintEditor.hue\": \"Գույն\",\n    \"paint.paintEditor.saturation\": \"Հագեցվածություն\",\n    \"paint.paintEditor.brightness\": \"Պայծառություն\",\n    \"gui.comingSoon.message1\": \"Մի անհանգստացեք, մենք աշխատում ենք դրա վրա {emoji}\",\n    \"gui.comingSoon.message2\": \"Շուտով...\",\n    \"gui.comingSoon.message3\": \"Մենք աշխատում ենք դրա վրա {emoji}\",\n    \"paint.paintEditor.costume\": \"Զգեստ\",\n    \"paint.paintEditor.group\": \"Խումբ\",\n    \"paint.paintEditor.ungroup\": \"Ցրել խումբը\",\n    \"paint.paintEditor.undo\": \"Հետ գնալ\",\n    \"paint.paintEditor.redo\": \"Առաջ գնալ\",\n    \"paint.paintEditor.forward\": \"Դեպի առաջ\",\n    \"paint.paintEditor.backward\": \"Դեպի հետ\",\n    \"paint.paintEditor.front\": \"Դիմաց\",\n    \"paint.paintEditor.back\": \"Հետ գնալ\",\n    \"paint.paintEditor.more\": \"Ավելին\",\n    \"paint.modeTools.brushSize\": \"Չափս\",\n    \"paint.modeTools.eraserSize\": \"Ռետինի չափսը\",\n    \"paint.modeTools.copy\": \"Պատճենել\",\n    \"paint.modeTools.paste\": \"Զետեղել\",\n    \"paint.modeTools.delete\": \"Ջնջել\",\n    \"paint.modeTools.curved\": \"Ծռված\",\n    \"paint.modeTools.pointed\": \"Նշված\",\n    \"paint.modeTools.thickness\": \"Հաստություն\",\n    \"paint.modeTools.flipHorizontal\": \"Հորիզոնական շրջադարձ\",\n    \"paint.modeTools.flipVertical\": \"Ուղղահայաց շրջադարձ\",\n    \"paint.modeTools.filled\": \"Լցված\",\n    \"paint.modeTools.outlined\": \"Եզրագծած\",\n    \"paint.paintEditor.bitmap\": \"Փոխակերպել կետապատկերայինի\",\n    \"paint.paintEditor.vector\": \"Փոխակերպել վեկտորի\",\n    \"paint.paintEditor.fill\": \"Լցնել\",\n    \"paint.paintEditor.stroke\": \"Եզրագիծ\",\n    \"paint.brushMode.brush\": \"Վրձին\",\n    \"paint.eraserMode.eraser\": \"Ռետին\",\n    \"paint.fillMode.fill\": \"Լցնել\",\n    \"paint.lineMode.line\": \"Գիծ\",\n    \"paint.ovalMode.oval\": \"Շրջանագիծ\",\n    \"paint.rectMode.rect\": \"Ուղղանկյուն\",\n    \"paint.reshapeMode.reshape\": \"Ձևափոխել\",\n    \"paint.roundedRectMode.roundedRect\": \"Կլորացված ուղղանկյուն\",\n    \"paint.selectMode.select\": \"Ընտրել\",\n    \"paint.textMode.text\": \"Տեքստ\",\n    \"paint.colorPicker.swap\": \"Փոխարինում\"\n  },\n  \"he\": {\n    \"paint.paintEditor.hue\": \"צבע\",\n    \"paint.paintEditor.saturation\": \"רוויה\",\n    \"paint.paintEditor.brightness\": \"בהירות\",\n    \"gui.comingSoon.message1\": \"אל דאגה, אנחנו מטפלים בזה {emoji}\",\n    \"gui.comingSoon.message2\": \"בקרוב...\",\n    \"gui.comingSoon.message3\": \"אנחנו עובדים על זה {emoji}\",\n    \"paint.paintEditor.costume\": \"תלבושת\",\n    \"paint.paintEditor.group\": \"קבץ\",\n    \"paint.paintEditor.ungroup\": \"בטל קיבוץ\",\n    \"paint.paintEditor.undo\": \"בטל\",\n    \"paint.paintEditor.redo\": \"בצע שוב\",\n    \"paint.paintEditor.forward\": \"קדימה\",\n    \"paint.paintEditor.backward\": \"אחורה\",\n    \"paint.paintEditor.front\": \"העבר לקידמה\",\n    \"paint.paintEditor.back\": \"העבר לרקע\",\n    \"paint.paintEditor.more\": \"עוד\",\n    \"paint.modeTools.brushSize\": \"גודל\",\n    \"paint.modeTools.eraserSize\": \"גודל מחק\",\n    \"paint.modeTools.copy\": \"העתק\",\n    \"paint.modeTools.paste\": \"הדבק\",\n    \"paint.modeTools.delete\": \"מחק\",\n    \"paint.modeTools.curved\": \"מעוקל\",\n    \"paint.modeTools.pointed\": \"מחודד\",\n    \"paint.modeTools.thickness\": \"עובי\",\n    \"paint.modeTools.flipHorizontal\": \"הפוך אופקית\",\n    \"paint.modeTools.flipVertical\": \"הפוך אנכית\",\n    \"paint.modeTools.filled\": \"מלא\",\n    \"paint.modeTools.outlined\": \"מסורטט\",\n    \"paint.paintEditor.bitmap\": \"המרה למפת סיביות\",\n    \"paint.paintEditor.vector\": \"המרה לוקטור\",\n    \"paint.paintEditor.fill\": \"מילוי\",\n    \"paint.paintEditor.stroke\": \"מסגרת\",\n    \"paint.brushMode.brush\": \"מברשת\",\n    \"paint.eraserMode.eraser\": \"מחק\",\n    \"paint.fillMode.fill\": \"מילוי\",\n    \"paint.lineMode.line\": \"קו\",\n    \"paint.ovalMode.oval\": \"עיגול\",\n    \"paint.rectMode.rect\": \"מלבן\",\n    \"paint.reshapeMode.reshape\": \"שנה צורה\",\n    \"paint.roundedRectMode.roundedRect\": \"מלבן מעוגל\",\n    \"paint.selectMode.select\": \"בחר\",\n    \"paint.textMode.text\": \"טקסט\",\n    \"paint.colorPicker.swap\": \"החלף\"\n  },\n  \"hi\": {\n    \"paint.paintEditor.hue\": \"रंग\",\n    \"paint.paintEditor.saturation\": \"संतृप्ति\",\n    \"paint.paintEditor.brightness\": \"चमक\",\n    \"gui.comingSoon.message1\": \"चिन्ता ना करें , हम इस पर कार्य कर रहे हैं  {emoji}\",\n    \"gui.comingSoon.message2\": \"शीघ्रः प्रस्तुत होगा \",\n    \"gui.comingSoon.message3\": \"हम इस पर कार्य कर रहे हैं  {emoji}\",\n    \"paint.paintEditor.costume\": \"पोशाक\",\n    \"paint.paintEditor.group\": \"समूह \",\n    \"paint.paintEditor.ungroup\": \"असमूहीकृत\",\n    \"paint.paintEditor.undo\": \"पूर्ववत\",\n    \"paint.paintEditor.redo\": \"पुनः करें\",\n    \"paint.paintEditor.forward\": \"आगे \",\n    \"paint.paintEditor.backward\": \"पीछे \",\n    \"paint.paintEditor.front\": \"सामने\",\n    \"paint.paintEditor.back\": \"वापस \",\n    \"paint.paintEditor.more\": \"और \",\n    \"paint.modeTools.brushSize\": \"माप \",\n    \"paint.modeTools.eraserSize\": \"रबड़ का माप \",\n    \"paint.modeTools.copy\": \"प्रतिलिपि \",\n    \"paint.modeTools.paste\": \"चिपकाना \",\n    \"paint.modeTools.delete\": \"मिटाये\",\n    \"paint.modeTools.curved\": \"मुड़ा हुआ \",\n    \"paint.modeTools.pointed\": \"नोकीला \",\n    \"paint.modeTools.thickness\": \"मोटाई \",\n    \"paint.modeTools.flipHorizontal\": \"क्षितिज के समानांतर पलटिये \",\n    \"paint.modeTools.flipVertical\": \"ऊर्ध्वाधर के समानांतर पलटिये\",\n    \"paint.modeTools.filled\": \"भरा हुआ \",\n    \"paint.modeTools.outlined\": \"उल्लिखित\",\n    \"paint.paintEditor.bitmap\": \"बिटमैप में बदलें \",\n    \"paint.paintEditor.vector\": \"वेक्टर में बदलें \",\n    \"paint.paintEditor.fill\": \"भरो\",\n    \"paint.paintEditor.stroke\": \"सीमा \",\n    \"paint.brushMode.brush\": \"ब्रश\",\n    \"paint.eraserMode.eraser\": \"रबड़\",\n    \"paint.fillMode.fill\": \"भरो\",\n    \"paint.lineMode.line\": \"रेखा \",\n    \"paint.ovalMode.oval\": \"घेरा \",\n    \"paint.rectMode.rect\": \"आयत \",\n    \"paint.reshapeMode.reshape\": \"फिर से आकार बनाएं \",\n    \"paint.roundedRectMode.roundedRect\": \"कोनो पर मुड़े हुए आयताकार \",\n    \"paint.selectMode.select\": \"चुनें \",\n    \"paint.textMode.text\": \"अक्षर \",\n    \"paint.colorPicker.swap\": \"आपस में बदलें \"\n  },\n  \"hr\": {\n    \"paint.paintEditor.hue\": \"Boja\",\n    \"paint.paintEditor.saturation\": \"Saturacija\",\n    \"paint.paintEditor.brightness\": \"Osvjetljenje\",\n    \"gui.comingSoon.message1\": \"Ne brini, radimo na tome{emoji}\",\n    \"gui.comingSoon.message2\": \"Pričekajte trenutak...\",\n    \"gui.comingSoon.message3\": \"Radimo na tome{emoji}\",\n    \"paint.paintEditor.costume\": \"Kostim\",\n    \"paint.paintEditor.group\": \"Grupiraj\",\n    \"paint.paintEditor.ungroup\": \"Razgrupiraj\",\n    \"paint.paintEditor.undo\": \"Poništi\",\n    \"paint.paintEditor.redo\": \"Ponovi\",\n    \"paint.paintEditor.forward\": \"Naprijed\",\n    \"paint.paintEditor.backward\": \"Natrag\",\n    \"paint.paintEditor.front\": \"prednji\",\n    \"paint.paintEditor.back\": \"Stražnji\",\n    \"paint.paintEditor.more\": \"Više\",\n    \"paint.modeTools.brushSize\": \"Veličina\",\n    \"paint.modeTools.eraserSize\": \"Debljina gumice\",\n    \"paint.modeTools.copy\": \"Kopiraj\",\n    \"paint.modeTools.paste\": \"Zalijepi\",\n    \"paint.modeTools.delete\": \"Izbriši\",\n    \"paint.modeTools.curved\": \"Zaobljen\",\n    \"paint.modeTools.pointed\": \"Šiljast\",\n    \"paint.modeTools.thickness\": \"Debljina\",\n    \"paint.modeTools.flipHorizontal\": \"Obrni vodoravno\",\n    \"paint.modeTools.flipVertical\": \"Obrni okomito\",\n    \"paint.modeTools.filled\": \"Ispunjeno\",\n    \"paint.modeTools.outlined\": \"Obrubljeno\",\n    \"paint.paintEditor.bitmap\": \"Pretvori u mapu bitova\",\n    \"paint.paintEditor.vector\": \"Pretvori u vektor\",\n    \"paint.paintEditor.fill\": \"Ispuna\",\n    \"paint.paintEditor.stroke\": \"Obrub\",\n    \"paint.brushMode.brush\": \"Kist\",\n    \"paint.eraserMode.eraser\": \"Gumica\",\n    \"paint.fillMode.fill\": \"Ispuna\",\n    \"paint.lineMode.line\": \"Linija\",\n    \"paint.ovalMode.oval\": \"Kružnica\",\n    \"paint.rectMode.rect\": \"Pravokutnik\",\n    \"paint.reshapeMode.reshape\": \"Preoblikuj\",\n    \"paint.roundedRectMode.roundedRect\": \"Pravokutnik\",\n    \"paint.selectMode.select\": \"Označi\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Zamijeni\"\n  },\n  \"xh\": {\n    \"paint.paintEditor.hue\": \"Umbala\",\n    \"paint.paintEditor.saturation\": \"Ukugcwala\",\n    \"paint.paintEditor.brightness\": \"Ukuqaqamba\",\n    \"gui.comingSoon.message1\": \"Ungakhathazehi, sikuyo {emoji}\",\n    \"gui.comingSoon.message2\": \"Iyeza msinyane...\",\n    \"gui.comingSoon.message3\": \"Sisebenza yona {emoji}\",\n    \"paint.paintEditor.costume\": \"Ikhostyum\",\n    \"paint.paintEditor.group\": \"Iqela\",\n    \"paint.paintEditor.ungroup\": \"Phasalakisa\",\n    \"paint.paintEditor.undo\": \"Qhaqha\",\n    \"paint.paintEditor.redo\": \"Yenza kwakhona\",\n    \"paint.paintEditor.forward\": \"Phambili\",\n    \"paint.paintEditor.backward\": \"Emva\",\n    \"paint.paintEditor.front\": \"Ngaphambili\",\n    \"paint.paintEditor.back\": \"emva\",\n    \"paint.paintEditor.more\": \"Ngaphezulu\",\n    \"paint.modeTools.brushSize\": \"Ubungakanani\",\n    \"paint.modeTools.eraserSize\": \"Ubungakanani besicimi\",\n    \"paint.modeTools.copy\": \"Khuphela\",\n    \"paint.modeTools.paste\": \"Ncamathisela\",\n    \"paint.modeTools.delete\": \"Cima\",\n    \"paint.modeTools.curved\": \"Inamagophe\",\n    \"paint.modeTools.pointed\": \"Yolathe\",\n    \"paint.modeTools.thickness\": \"Ubungqindilili\",\n    \"paint.modeTools.flipHorizontal\": \"Guqula ububanzi\",\n    \"paint.modeTools.flipVertical\": \"Guqula ubunzulu\",\n    \"paint.modeTools.filled\": \"Ugcwalise\",\n    \"paint.modeTools.outlined\": \"Uyicacise nzulu\",\n    \"paint.paintEditor.bitmap\": \"Qhagamshela ku-Bitmap\",\n    \"paint.paintEditor.vector\": \"Guqula ibe yi- Vector\",\n    \"paint.paintEditor.fill\": \"Gcwalisa\",\n    \"paint.paintEditor.stroke\": \"Cacisa nzulu\",\n    \"paint.brushMode.brush\": \"Phulula\",\n    \"paint.eraserMode.eraser\": \"Isixhobo sokucima\",\n    \"paint.fillMode.fill\": \"Gcwalisa\",\n    \"paint.lineMode.line\": \"Umgca\",\n    \"paint.ovalMode.oval\": \"Isangqa\",\n    \"paint.rectMode.rect\": \"Ixande\",\n    \"paint.reshapeMode.reshape\": \"Milisa okutsha\",\n    \"paint.roundedRectMode.roundedRect\": \"Unxantathu owenziwe ronte\",\n    \"paint.selectMode.select\": \"Khetha\",\n    \"paint.textMode.text\": \"Umbhalo\",\n    \"paint.colorPicker.swap\": \"Tshintsha\"\n  },\n  \"zu\": {\n    \"paint.paintEditor.hue\": \"Umbala\",\n    \"paint.paintEditor.saturation\": \"Ukukhanya kombala\",\n    \"paint.paintEditor.brightness\": \"Ukukhanya\",\n    \"gui.comingSoon.message1\": \"Ungakhazeni sesikhona siyasebenza {emoji}\",\n    \"gui.comingSoon.message2\": \"Kuyeza Maduzane...\",\n    \"gui.comingSoon.message3\": \"Sisebenza kona kuyimanje {emoji}\",\n    \"paint.paintEditor.costume\": \"Impahla\",\n    \"paint.paintEditor.group\": \"Iqembu\",\n    \"paint.paintEditor.ungroup\": \"Hlukanisa\",\n    \"paint.paintEditor.undo\": \"Yenza kabusha\",\n    \"paint.paintEditor.redo\": \"Ukwenzakabusha\",\n    \"paint.paintEditor.forward\": \"Phambili\",\n    \"paint.paintEditor.backward\": \"Emuva\",\n    \"paint.paintEditor.front\": \"Phambili\",\n    \"paint.paintEditor.back\": \"Emuva\",\n    \"paint.paintEditor.more\": \"Okunye\",\n    \"paint.modeTools.brushSize\": \"Isisindo\",\n    \"paint.modeTools.eraserSize\": \"Irabha ubude\",\n    \"paint.modeTools.copy\": \"Khopisha\",\n    \"paint.modeTools.paste\": \"Namathisela\",\n    \"paint.modeTools.delete\": \"Susa\",\n    \"paint.modeTools.curved\": \"Lugobile \",\n    \"paint.modeTools.pointed\": \"Iphoyinti\",\n    \"paint.modeTools.thickness\": \"Ugqinsi\",\n    \"paint.modeTools.flipHorizontal\": \"Phendula ngokuya emaceleni\",\n    \"paint.modeTools.flipVertical\": \"Phendula ngokuya phansi naphezulu\",\n    \"paint.modeTools.filled\": \"Kugcwele\",\n    \"paint.modeTools.outlined\": \"Kugqamile\",\n    \"paint.paintEditor.bitmap\": \"Shitsela kuBitmap\",\n    \"paint.paintEditor.vector\": \"Shitsela kuVector\",\n    \"paint.paintEditor.fill\": \"Gcwalisa\",\n    \"paint.paintEditor.stroke\": \"Kugqamise\",\n    \"paint.brushMode.brush\": \"Ibhrashi\",\n    \"paint.eraserMode.eraser\": \"Irabha\",\n    \"paint.fillMode.fill\": \"Gcwalisa\",\n    \"paint.lineMode.line\": \"Umugqa\",\n    \"paint.ovalMode.oval\": \"Indingiliza\",\n    \"paint.rectMode.rect\": \"Irectangle\",\n    \"paint.reshapeMode.reshape\": \"Ukubuyisele esimeni\",\n    \"paint.roundedRectMode.roundedRect\": \"Indingiliza yerectangle\",\n    \"paint.selectMode.select\": \"Khetha\",\n    \"paint.textMode.text\": \"Umbhalo\",\n    \"paint.colorPicker.swap\": \"Shitsha \"\n  },\n  \"is\": {\n    \"paint.paintEditor.hue\": \"Litur\",\n    \"paint.paintEditor.saturation\": \"mettun\",\n    \"paint.paintEditor.brightness\": \"Birtustig\",\n    \"gui.comingSoon.message1\": \"Ekki hafa áhyggjur, við erum að vinna í þessu {emoji}\",\n    \"gui.comingSoon.message2\": \"Kemur bráðlega...\",\n    \"gui.comingSoon.message3\": \"Við erum að vinna í þessu {emoji}\",\n    \"paint.paintEditor.costume\": \"Búningur\",\n    \"paint.paintEditor.group\": \"Hópur\",\n    \"paint.paintEditor.ungroup\": \"Leysa upp hóp\",\n    \"paint.paintEditor.undo\": \"Afgera\",\n    \"paint.paintEditor.redo\": \"Endurgera\",\n    \"paint.paintEditor.forward\": \"Áfram\",\n    \"paint.paintEditor.backward\": \"Aftur á bak\",\n    \"paint.paintEditor.front\": \"Fremst\",\n    \"paint.paintEditor.back\": \"Til baka\",\n    \"paint.paintEditor.more\": \"Meira\",\n    \"paint.modeTools.brushSize\": \"Stærð\",\n    \"paint.modeTools.eraserSize\": \"Stærð strokleðurs\",\n    \"paint.modeTools.copy\": \"Afrita\",\n    \"paint.modeTools.paste\": \"Líma\",\n    \"paint.modeTools.delete\": \"Eyða\",\n    \"paint.modeTools.curved\": \"Sveigja\",\n    \"paint.modeTools.pointed\": \"Oddmjótt\",\n    \"paint.modeTools.thickness\": \"Þykkt\",\n    \"paint.modeTools.flipHorizontal\": \"Flippa lárétt\",\n    \"paint.modeTools.flipVertical\": \"Flippa lóðrétt\",\n    \"paint.modeTools.filled\": \"Fylla\",\n    \"paint.modeTools.outlined\": \"Útlína\",\n    \"paint.paintEditor.bitmap\": \"Umbreyta í Bitmap\",\n    \"paint.paintEditor.vector\": \"Umbreyta í vektor\",\n    \"paint.paintEditor.fill\": \"Fylla\",\n    \"paint.paintEditor.stroke\": \"Útlína\",\n    \"paint.brushMode.brush\": \"Bursti\",\n    \"paint.eraserMode.eraser\": \"Strokleður\",\n    \"paint.fillMode.fill\": \"Fylla\",\n    \"paint.lineMode.line\": \"Lína\",\n    \"paint.ovalMode.oval\": \"Hringur\",\n    \"paint.rectMode.rect\": \"Ferhyrningur\",\n    \"paint.reshapeMode.reshape\": \"Ummynda\",\n    \"paint.roundedRectMode.roundedRect\": \"Rúnaður ferhyrningur\",\n    \"paint.selectMode.select\": \"Velja\",\n    \"paint.textMode.text\": \"Texti\",\n    \"paint.colorPicker.swap\": \"Skipta\"\n  },\n  \"it\": {\n    \"paint.paintEditor.hue\": \"Colore\",\n    \"paint.paintEditor.saturation\": \"Saturazione\",\n    \"paint.paintEditor.brightness\": \"Luminosità\",\n    \"gui.comingSoon.message1\": \"Tranquillo, ci stiamo lavorando {emoji}\",\n    \"gui.comingSoon.message2\": \"Disponibile a Breve...\",\n    \"gui.comingSoon.message3\": \"Ci stiamo lavorando {emoji}\",\n    \"paint.paintEditor.costume\": \"Costume\",\n    \"paint.paintEditor.group\": \"Raggruppa\",\n    \"paint.paintEditor.ungroup\": \"Separa\",\n    \"paint.paintEditor.undo\": \"Annulla\",\n    \"paint.paintEditor.redo\": \"Ripristina\",\n    \"paint.paintEditor.forward\": \"Porta avanti\",\n    \"paint.paintEditor.backward\": \"Porta indietro\",\n    \"paint.paintEditor.front\": \"Primo piano\",\n    \"paint.paintEditor.back\": \"Secondo piano\",\n    \"paint.paintEditor.more\": \"Altro\",\n    \"paint.modeTools.brushSize\": \"Dimensione\",\n    \"paint.modeTools.eraserSize\": \"Dimensione gomma\",\n    \"paint.modeTools.copy\": \"Copia\",\n    \"paint.modeTools.paste\": \"Incolla\",\n    \"paint.modeTools.delete\": \"Cancella\",\n    \"paint.modeTools.curved\": \"Curva\",\n    \"paint.modeTools.pointed\": \"Angolo\",\n    \"paint.modeTools.thickness\": \"Spessore\",\n    \"paint.modeTools.flipHorizontal\": \"Rifletti in Orizzontale\",\n    \"paint.modeTools.flipVertical\": \"Capovolgi\",\n    \"paint.modeTools.filled\": \"Riempito\",\n    \"paint.modeTools.outlined\": \"Contorno\",\n    \"paint.paintEditor.bitmap\": \"Converti in Bitmap\",\n    \"paint.paintEditor.vector\": \"Converti in Vettoriale\",\n    \"paint.paintEditor.fill\": \"Riempimento\",\n    \"paint.paintEditor.stroke\": \"Contorno\",\n    \"paint.brushMode.brush\": \"Pennello\",\n    \"paint.eraserMode.eraser\": \"Gomma\",\n    \"paint.fillMode.fill\": \"Riempimento\",\n    \"paint.lineMode.line\": \"Linea\",\n    \"paint.ovalMode.oval\": \"Cerchio\",\n    \"paint.rectMode.rect\": \"Rettangolo\",\n    \"paint.reshapeMode.reshape\": \"Modifica contorno\",\n    \"paint.roundedRectMode.roundedRect\": \"Rettangolo Arrotondato\",\n    \"paint.selectMode.select\": \"Seleziona\",\n    \"paint.textMode.text\": \"Testo\",\n    \"paint.colorPicker.swap\": \"Scambia\"\n  },\n  \"ka\": {\n    \"paint.paintEditor.hue\": \"ფერი\",\n    \"paint.paintEditor.saturation\": \"გაჯერება\",\n    \"paint.paintEditor.brightness\": \"სიკაშკაშე\",\n    \"gui.comingSoon.message1\": \"ნუ ღელავთ, ჩვენ ვმუშაობთ ამ პრობლემაზე {emoji}\",\n    \"gui.comingSoon.message2\": \"მალე იქნება...\",\n    \"gui.comingSoon.message3\": \"ჩვენ ვმუშაობთ ამ პრობლემაზე {emoji}\",\n    \"paint.paintEditor.costume\": \"კოსტიუმი\",\n    \"paint.paintEditor.group\": \"დაჯგუფება\",\n    \"paint.paintEditor.ungroup\": \"ჯგუფის დაშლა \",\n    \"paint.paintEditor.undo\": \"გაუქმება\",\n    \"paint.paintEditor.redo\": \"აღდგენა\",\n    \"paint.paintEditor.forward\": \"წინ\",\n    \"paint.paintEditor.backward\": \"უკან\",\n    \"paint.paintEditor.front\": \"წინა პლანზე\",\n    \"paint.paintEditor.back\": \"უკანა პლანზე\",\n    \"paint.paintEditor.more\": \"სხვა\",\n    \"paint.modeTools.brushSize\": \"ზომა\",\n    \"paint.modeTools.eraserSize\": \"საშლელის ზომა\",\n    \"paint.modeTools.copy\": \"კოპირება\",\n    \"paint.modeTools.paste\": \"ჩასმა\",\n    \"paint.modeTools.delete\": \"წაშლა\",\n    \"paint.modeTools.curved\": \"გამრუდებული\",\n    \"paint.modeTools.pointed\": \"მიმართული\",\n    \"paint.modeTools.thickness\": \"სისქე\",\n    \"paint.modeTools.flipHorizontal\": \"ჰორიზონტალურად არეკვლა\",\n    \"paint.modeTools.flipVertical\": \"ვერტიკალურად არეკვლა\",\n    \"paint.modeTools.filled\": \"შევსებული\",\n    \"paint.modeTools.outlined\": \"შემოხაზული\",\n    \"paint.paintEditor.bitmap\": \"რასტრულ გამოსახულებად გარდაქმნა\",\n    \"paint.paintEditor.vector\": \"ვექტორულ გამოსახულებად გარდაქმნა\",\n    \"paint.paintEditor.fill\": \"შევსება\",\n    \"paint.paintEditor.stroke\": \"გამოკვეთე\",\n    \"paint.brushMode.brush\": \"ფუნჯი\",\n    \"paint.eraserMode.eraser\": \"საშლელი\",\n    \"paint.fillMode.fill\": \"შევსება\",\n    \"paint.lineMode.line\": \"ხაზი\",\n    \"paint.ovalMode.oval\": \"წრე\",\n    \"paint.rectMode.rect\": \"მართკუთხედი\",\n    \"paint.reshapeMode.reshape\": \"ფორმის შეცვლა\",\n    \"paint.roundedRectMode.roundedRect\": \"დამრგვალებული მართკუთხედი\",\n    \"paint.selectMode.select\": \"არჩევა\",\n    \"paint.textMode.text\": \"ტექსტი\",\n    \"paint.colorPicker.swap\": \"შეცვლა\"\n  },\n  \"kk\": {\n    \"paint.paintEditor.hue\": \"Түс\",\n    \"paint.paintEditor.saturation\": \"Қанықтылық\",\n    \"paint.paintEditor.brightness\": \"Жарықтығы\",\n    \"gui.comingSoon.message1\": \"Уайымдамаңыз, біз оған дайынбыз{emoji}\",\n    \"gui.comingSoon.message2\": \"Жуырда...\",\n    \"gui.comingSoon.message3\": \"Біз бұнымен жұмыс істеп жатырмыз{emoji}\",\n    \"paint.paintEditor.costume\": \"Костюм\",\n    \"paint.paintEditor.group\": \"Топтау\",\n    \"paint.paintEditor.ungroup\": \"топтан шығару\",\n    \"paint.paintEditor.undo\": \"Болдырмау\",\n    \"paint.paintEditor.redo\": \"Қайталау\",\n    \"paint.paintEditor.forward\": \"Алға\",\n    \"paint.paintEditor.backward\": \"Артқа\",\n    \"paint.paintEditor.front\": \"Фронт\",\n    \"paint.paintEditor.back\": \"Артқа\",\n    \"paint.paintEditor.more\": \"Көбірек\",\n    \"paint.modeTools.brushSize\": \"өлшем\",\n    \"paint.modeTools.eraserSize\": \"Өшіргіштің өлшемі\",\n    \"paint.modeTools.copy\": \"Көшіру\",\n    \"paint.modeTools.paste\": \"Қою\",\n    \"paint.modeTools.delete\": \"Жою\",\n    \"paint.modeTools.curved\": \"Қисық\",\n    \"paint.modeTools.pointed\": \"Көрсетілген\\n\",\n    \"paint.modeTools.thickness\": \"Қалыңдығы\",\n    \"paint.modeTools.flipHorizontal\": \"Көлденеңінен аудару\",\n    \"paint.modeTools.flipVertical\": \"Тігінен аудару\",\n    \"paint.modeTools.filled\": \"Толтырылған\",\n    \"paint.modeTools.outlined\": \"Сызылған\",\n    \"paint.paintEditor.bitmap\": \"Растрлық графикаға ауыстыру\",\n    \"paint.paintEditor.vector\": \"Векторлық графикаға ауыстыру\",\n    \"paint.paintEditor.fill\": \"Толтыру\",\n    \"paint.paintEditor.stroke\": \"контур\",\n    \"paint.brushMode.brush\": \"Қылқалам\",\n    \"paint.eraserMode.eraser\": \"Өшіргіш\",\n    \"paint.fillMode.fill\": \"Толтыру\",\n    \"paint.lineMode.line\": \"Сызық\",\n    \"paint.ovalMode.oval\": \"Шеңбер\",\n    \"paint.rectMode.rect\": \"Тікбұрыш\",\n    \"paint.reshapeMode.reshape\": \"Форманы өзгерту\",\n    \"paint.roundedRectMode.roundedRect\": \"Дөңгелек бұрышты төртбұрыш\",\n    \"paint.selectMode.select\": \"Таңдау\",\n    \"paint.textMode.text\": \"Мәтін\",\n    \"paint.colorPicker.swap\": \"Ауыстыру\"\n  },\n  \"qu\": {\n    \"paint.paintEditor.hue\": \"kulur\",\n    \"paint.paintEditor.saturation\": \"Llimpi yuraqchay\",\n    \"paint.paintEditor.brightness\": \"kanchiq\",\n    \"gui.comingSoon.message1\": \"ama llakikuychu chanipunim {emoji}\",\n    \"gui.comingSoon.message2\": \"Hukninkama...\",\n    \"gui.comingSoon.message3\": \"chay punim llamkachkaniku {emoji}\",\n    \"paint.paintEditor.costume\": \"Pacha\",\n    \"paint.paintEditor.group\": \"Huñusqa\",\n    \"paint.paintEditor.ungroup\": \"Rakisqa\",\n    \"paint.paintEditor.undo\": \"ruraray\",\n    \"paint.paintEditor.redo\": \"kutipay\",\n    \"paint.paintEditor.forward\": \"Ñawpaqman\",\n    \"paint.paintEditor.backward\": \"Qipaman\",\n    \"paint.paintEditor.front\": \"Chimpa\",\n    \"paint.paintEditor.back\": \"Hipaman\",\n    \"paint.paintEditor.more\": \"aswan\",\n    \"paint.modeTools.brushSize\": \"Hatun\",\n    \"paint.modeTools.eraserSize\": \"Hatun Pichana\",\n    \"paint.modeTools.copy\": \"kupyay\",\n    \"paint.modeTools.paste\": \"Laqay\",\n    \"paint.modeTools.delete\": \"Pichay\",\n    \"paint.modeTools.curved\": \"Muyo\",\n    \"paint.modeTools.pointed\": \"Tupsuyaq\",\n    \"paint.modeTools.thickness\": \"Rakuqnin\",\n    \"paint.modeTools.flipHorizontal\": \"Kinrayman Tikrasqa\",\n    \"paint.modeTools.flipVertical\": \"Sayaqman Tikrasqa\",\n    \"paint.modeTools.filled\": \"Huntasqa\",\n    \"paint.modeTools.outlined\": \"Sikwiy\",\n    \"paint.paintEditor.bitmap\": \"Tikrayay MapaBitman\",\n    \"paint.paintEditor.vector\": \"Tikray Vikturman\",\n    \"paint.paintEditor.fill\": \"huntay\",\n    \"paint.paintEditor.stroke\": \"Muyuriqnin\",\n    \"paint.brushMode.brush\": \"Llimpinapaq\",\n    \"paint.eraserMode.eraser\": \"Pichana\",\n    \"paint.fillMode.fill\": \"Huntasqa\",\n    \"paint.lineMode.line\": \"Sikwi\",\n    \"paint.ovalMode.oval\": \"Muyu\",\n    \"paint.rectMode.rect\": \"Tawa Kuchuyuq\",\n    \"paint.reshapeMode.reshape\": \"Allichana\",\n    \"paint.roundedRectMode.roundedRect\": \"Muyuq hina Tawa Kuchu\",\n    \"paint.selectMode.select\": \"Akllasqa\",\n    \"paint.textMode.text\": \"Qillqay\",\n    \"paint.colorPicker.swap\": \"Hukniraqchay\"\n  },\n  \"sw\": {\n    \"paint.paintEditor.hue\": \"Rangi\",\n    \"paint.paintEditor.saturation\": \"Kiasi Ya Rangi\",\n    \"paint.paintEditor.brightness\": \"Mng'aro\",\n    \"gui.comingSoon.message1\": \"Tunashughulikia {emoji}\",\n    \"gui.comingSoon.message2\": \"Inakuja hivi karibuni...\",\n    \"gui.comingSoon.message3\": \"Tunashughulikia {emoji}\",\n    \"paint.paintEditor.costume\": \"Mtindo\",\n    \"paint.paintEditor.group\": \"Kusanya\",\n    \"paint.paintEditor.ungroup\": \"Toa Kwenye Kundi\",\n    \"paint.paintEditor.undo\": \"Ondoa\",\n    \"paint.paintEditor.redo\": \"Rudia\",\n    \"paint.paintEditor.forward\": \"Enda Mbele\",\n    \"paint.paintEditor.backward\": \"Rudi Nyuma\",\n    \"paint.paintEditor.front\": \"Mbele\",\n    \"paint.paintEditor.back\": \"Nyuma\",\n    \"paint.paintEditor.more\": \"Zaidi\",\n    \"paint.modeTools.brushSize\": \"Ukubwa \",\n    \"paint.modeTools.eraserSize\": \"Ukubwa wa kifutio\",\n    \"paint.modeTools.copy\": \"Nakala\",\n    \"paint.modeTools.paste\": \"Bandika\",\n    \"paint.modeTools.delete\": \"Futa\",\n    \"paint.modeTools.curved\": \"Fanya Mzingo\",\n    \"paint.modeTools.pointed\": \"Fanya Kipeo\",\n    \"paint.modeTools.thickness\": \"Unene\",\n    \"paint.modeTools.flipHorizontal\": \"Zungusha Kwa Mlalo\",\n    \"paint.modeTools.flipVertical\": \"Zungusha Kwa Wima\",\n    \"paint.modeTools.filled\": \"Iliyojazwa\",\n    \"paint.modeTools.outlined\": \"Mstari Uliozungukwa\",\n    \"paint.paintEditor.bitmap\": \"Badilisha kuwa Bitmap\",\n    \"paint.paintEditor.vector\": \"Badilisha kuwa Vector\",\n    \"paint.paintEditor.fill\": \"Jaza Rangi\",\n    \"paint.paintEditor.stroke\": \"Mstari Wa Kuzunguka\",\n    \"paint.brushMode.brush\": \"Brashi\",\n    \"paint.eraserMode.eraser\": \"Kifutio\",\n    \"paint.fillMode.fill\": \"Jaza Rangi\",\n    \"paint.lineMode.line\": \"Mstari\",\n    \"paint.ovalMode.oval\": \"Duara\",\n    \"paint.rectMode.rect\": \"Mstatili\",\n    \"paint.reshapeMode.reshape\": \"Badilisha Umbo\",\n    \"paint.roundedRectMode.roundedRect\": \"Mstatili Uilo Na Pembe Za Mviringo\",\n    \"paint.selectMode.select\": \"Chagua\",\n    \"paint.textMode.text\": \"Maandishi\",\n    \"paint.colorPicker.swap\": \"Badilisha\"\n  },\n  \"ht\": {\n    \"paint.paintEditor.hue\": \"Koulè\",\n    \"paint.paintEditor.saturation\": \"Satirasyon\",\n    \"paint.paintEditor.brightness\": \"Ekleraj\",\n    \"gui.comingSoon.message1\": \"Pa enkyete w, n ap travay sou li{emoji}\",\n    \"gui.comingSoon.message2\": \"Disponib talè\",\n    \"gui.comingSoon.message3\": \"N ap travay sou li{emoji}\",\n    \"paint.paintEditor.costume\": \"Kostim\",\n    \"paint.paintEditor.group\": \"Gwoup\",\n    \"paint.paintEditor.ungroup\": \"Degwoupe\",\n    \"paint.paintEditor.undo\": \"Anile\",\n    \"paint.paintEditor.redo\": \"Fè ankò\",\n    \"paint.paintEditor.forward\": \"Avanse\",\n    \"paint.paintEditor.backward\": \"Bak\",\n    \"paint.paintEditor.front\": \"Douvan\",\n    \"paint.paintEditor.back\": \"Dèyè\",\n    \"paint.paintEditor.more\": \"Plis\",\n    \"paint.modeTools.brushSize\": \"Tay\",\n    \"paint.modeTools.eraserSize\": \"Tay gòm\",\n    \"paint.modeTools.copy\": \"Kopye\",\n    \"paint.modeTools.paste\": \"Kole\",\n    \"paint.modeTools.delete\": \"Efase\",\n    \"paint.modeTools.curved\": \"Koube\",\n    \"paint.modeTools.pointed\": \"Pwenti\",\n    \"paint.modeTools.thickness\": \"Epesè\",\n    \"paint.modeTools.flipHorizontal\": \"Ranvèse orizontalman\",\n    \"paint.modeTools.flipVertical\": \"Ranvèse vètikalman\",\n    \"paint.modeTools.filled\": \"Ranpli\",\n    \"paint.modeTools.outlined\": \"An kontou\",\n    \"paint.paintEditor.bitmap\": \"Konvèti an Bitmap\",\n    \"paint.paintEditor.vector\": \"Konvèti an vektè\",\n    \"paint.paintEditor.fill\": \"Ranpli\",\n    \"paint.paintEditor.stroke\": \"Kontou\",\n    \"paint.brushMode.brush\": \"Penso\",\n    \"paint.eraserMode.eraser\": \"Gòm\",\n    \"paint.fillMode.fill\": \"Ranpli\",\n    \"paint.lineMode.line\": \"Liy\",\n    \"paint.ovalMode.oval\": \"Sèk\",\n    \"paint.rectMode.rect\": \"Rektang\",\n    \"paint.reshapeMode.reshape\": \"Refòme\",\n    \"paint.roundedRectMode.roundedRect\": \"Rektang Awondi\",\n    \"paint.selectMode.select\": \"Seleksyone\",\n    \"paint.textMode.text\": \"Tèks\",\n    \"paint.colorPicker.swap\": \"Echanje\"\n  },\n  \"ku\": {\n    \"paint.paintEditor.hue\": \"Reng\",\n    \"paint.paintEditor.saturation\": \"Têrbûna Reng\",\n    \"paint.paintEditor.brightness\": \"Ronahî\",\n    \"gui.comingSoon.message1\": \"Xemgîn nebe, em hene {emoji}\",\n    \"gui.comingSoon.message2\": \"Pir Nêzîk e...\",\n    \"gui.comingSoon.message3\": \"Em li ser dixebitin {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostum\",\n    \"paint.paintEditor.group\": \"Kom\",\n    \"paint.paintEditor.ungroup\": \"Komê belav bike\",\n    \"paint.paintEditor.undo\": \"Vegerîne\",\n    \"paint.paintEditor.redo\": \"Dîsa pêşve\",\n    \"paint.paintEditor.forward\": \"Pêşve\",\n    \"paint.paintEditor.backward\": \"Paşve\",\n    \"paint.paintEditor.front\": \"Herî Pêşî\",\n    \"paint.paintEditor.back\": \"Herî Paşî\",\n    \"paint.paintEditor.more\": \"Zêdetir\",\n    \"paint.modeTools.brushSize\": \"Mezinahî\",\n    \"paint.modeTools.eraserSize\": \"Mezinahiya jêbirkê\",\n    \"paint.modeTools.copy\": \"Kopî bike\",\n    \"paint.modeTools.paste\": \"Bizeliqîne\",\n    \"paint.modeTools.delete\": \"Jê bibe\",\n    \"paint.modeTools.curved\": \"Badayî\",\n    \"paint.modeTools.pointed\": \"Nîşankirî\",\n    \"paint.modeTools.thickness\": \"Qalindbûn\",\n    \"paint.modeTools.flipHorizontal\": \"Vexistî Bizîvirîne\",\n    \"paint.modeTools.flipVertical\": \"Stûnî Bizîvirîne\",\n    \"paint.modeTools.filled\": \"Tijebûyî\",\n    \"paint.modeTools.outlined\": \"Kurte\",\n    \"paint.paintEditor.bitmap\": \"Veguherîne Bitmapê\",\n    \"paint.paintEditor.vector\": \"Veguherîne Vektorê\",\n    \"paint.paintEditor.fill\": \"Tije bike\",\n    \"paint.paintEditor.stroke\": \"Puxte\",\n    \"paint.brushMode.brush\": \"Firçe\",\n    \"paint.eraserMode.eraser\": \"Jêbirk\",\n    \"paint.fillMode.fill\": \"Tije bike\",\n    \"paint.lineMode.line\": \"Çixêz\",\n    \"paint.ovalMode.oval\": \"Çember\",\n    \"paint.rectMode.rect\": \"Çarqozî\",\n    \"paint.reshapeMode.reshape\": \"Şêweyê biguherîne\",\n    \"paint.roundedRectMode.roundedRect\": \"Çarqoziya Çerxkirî\",\n    \"paint.selectMode.select\": \"Hilbijêre\",\n    \"paint.textMode.text\": \"Nivîs\",\n    \"paint.colorPicker.swap\": \"Pev Biguherîne\"\n  },\n  \"ckb\": {\n    \"paint.paintEditor.hue\": \"ڕەنگ\",\n    \"paint.paintEditor.saturation\": \"تێری\",\n    \"paint.paintEditor.brightness\": \"ڕووناکی\",\n    \"gui.comingSoon.message1\": \"نیگەران مەبە، ئێمە خەریکین {emoji}\",\n    \"gui.comingSoon.message2\": \"بەم زووانە...\",\n    \"gui.comingSoon.message3\": \"ئێمە کاری لەسەر دەکەین {emoji}\",\n    \"paint.paintEditor.costume\": \"بەرگ\",\n    \"paint.paintEditor.group\": \"گروپ کردن\",\n    \"paint.paintEditor.ungroup\": \"نا گروپ کردن\",\n    \"paint.paintEditor.undo\": \"هه‌ڵوه‌شاندنه‌وه‌\",\n    \"paint.paintEditor.redo\": \"کردنەوە\",\n    \"paint.paintEditor.forward\": \"بۆ پێشەوە\",\n    \"paint.paintEditor.backward\": \"بۆ دواوە\",\n    \"paint.paintEditor.front\": \"پێشەوە\",\n    \"paint.paintEditor.back\": \"دواوە\",\n    \"paint.paintEditor.more\": \"زیاتر\",\n    \"paint.modeTools.brushSize\": \"قەبارە\",\n    \"paint.modeTools.eraserSize\": \"قەبارەی سڕەوە\",\n    \"paint.modeTools.copy\": \"لەبەرگرتنەوە\",\n    \"paint.modeTools.paste\": \"لکاندن\",\n    \"paint.modeTools.delete\": \"سڕینەوە\",\n    \"paint.modeTools.curved\": \"چەماوە\",\n    \"paint.modeTools.pointed\": \"ئاماژە بۆکراو\",\n    \"paint.modeTools.thickness\": \"ئەستوورایی\",\n    \"paint.modeTools.flipHorizontal\": \"هەڵگەڕانەوەی ئاسۆیی\",\n    \"paint.modeTools.flipVertical\": \"هەڵگەڕانەوەی ستوونی\",\n    \"paint.modeTools.filled\": \"پڕکراوە\",\n    \"paint.modeTools.outlined\": \"چوارچێوەکراو\",\n    \"paint.paintEditor.bitmap\": \"گۆڕینی بۆ Bitmap\",\n    \"paint.paintEditor.vector\": \"گۆڕینی بۆ Vector\",\n    \"paint.paintEditor.fill\": \"پڕکردنەوە\",\n    \"paint.paintEditor.stroke\": \"چوارچێوە\",\n    \"paint.brushMode.brush\": \"فڵچە\",\n    \"paint.eraserMode.eraser\": \"سڕەوە\",\n    \"paint.fillMode.fill\": \"پڕکردنەوە\",\n    \"paint.lineMode.line\": \"هێڵ\",\n    \"paint.ovalMode.oval\": \"بازنە\",\n    \"paint.rectMode.rect\": \"لاکێشە\",\n    \"paint.reshapeMode.reshape\": \"شێوەکردنەوە\",\n    \"paint.roundedRectMode.roundedRect\": \"لاکێشەی خڕ\",\n    \"paint.selectMode.select\": \"دیاریکردن\",\n    \"paint.textMode.text\": \"دەق\",\n    \"paint.colorPicker.swap\": \"ئاڵوگۆڕ\"\n  },\n  \"lv\": {\n    \"paint.paintEditor.hue\": \"Krāsa\",\n    \"paint.paintEditor.saturation\": \"Piesātinājums\",\n    \"paint.paintEditor.brightness\": \"Gaišums\",\n    \"gui.comingSoon.message1\": \"Neuztraucies, mēs pie tā strādājam {emoji}\",\n    \"gui.comingSoon.message2\": \"Drīzumā...\",\n    \"gui.comingSoon.message3\": \"Mēs pie tā strādājam {emoji}\",\n    \"paint.paintEditor.costume\": \"Tērps\",\n    \"paint.paintEditor.group\": \"Grupēt\",\n    \"paint.paintEditor.ungroup\": \"Atgrupēt\",\n    \"paint.paintEditor.undo\": \"Atsaukt\",\n    \"paint.paintEditor.redo\": \"Atcelt atsaukšanu\",\n    \"paint.paintEditor.forward\": \"Uz priekšu\",\n    \"paint.paintEditor.backward\": \"Atpakaļ\",\n    \"paint.paintEditor.front\": \"Uz priekšpusi\",\n    \"paint.paintEditor.back\": \"Uz aizmuguri\",\n    \"paint.paintEditor.more\": \"Vairāk\",\n    \"paint.modeTools.brushSize\": \"Izmērs\",\n    \"paint.modeTools.eraserSize\": \"Dzēšgumijas izmērs\",\n    \"paint.modeTools.copy\": \"Kopēt\",\n    \"paint.modeTools.paste\": \"Ielīmēt\",\n    \"paint.modeTools.delete\": \"Dzēst\",\n    \"paint.modeTools.curved\": \"Izliekts\",\n    \"paint.modeTools.pointed\": \"Lauzts\",\n    \"paint.modeTools.thickness\": \"Biezums\",\n    \"paint.modeTools.flipHorizontal\": \"Apmest horizontāli\",\n    \"paint.modeTools.flipVertical\": \"Apmest vertikāli\",\n    \"paint.modeTools.filled\": \"Aizpildīts\",\n    \"paint.modeTools.outlined\": \"Neaizpildīts\",\n    \"paint.paintEditor.bitmap\": \"Pārvērst rastra grafikā\",\n    \"paint.paintEditor.vector\": \"Pārvērst vektorgrafikā\",\n    \"paint.paintEditor.fill\": \"Aizpildīt\",\n    \"paint.paintEditor.stroke\": \"Kontūra\",\n    \"paint.brushMode.brush\": \"Ota\",\n    \"paint.eraserMode.eraser\": \"Dzēšgumija\",\n    \"paint.fillMode.fill\": \"Aizpildīt\",\n    \"paint.lineMode.line\": \"Līnija\",\n    \"paint.ovalMode.oval\": \"Aplis\",\n    \"paint.rectMode.rect\": \"Taisnstūris\",\n    \"paint.reshapeMode.reshape\": \"Pārveidot\",\n    \"paint.roundedRectMode.roundedRect\": \"Noapaļots taisnstūris\",\n    \"paint.selectMode.select\": \"Atlasīt\",\n    \"paint.textMode.text\": \"Teksts\",\n    \"paint.colorPicker.swap\": \"Mainīt\"\n  },\n  \"lt\": {\n    \"paint.paintEditor.hue\": \"Spalva\",\n    \"paint.paintEditor.saturation\": \"Sodrumas\",\n    \"paint.paintEditor.brightness\": \"Šviesumas\",\n    \"gui.comingSoon.message1\": \"Ramybės, mes šį bei tą tobuliname {emoji}\",\n    \"gui.comingSoon.message2\": \"Netrukus...\",\n    \"gui.comingSoon.message3\": \"Šį bei tą tobuliname {emoji}\",\n    \"paint.paintEditor.costume\": \"Kaukė\",\n    \"paint.paintEditor.group\": \"Grupuoti\",\n    \"paint.paintEditor.ungroup\": \"Išgrupuoti\",\n    \"paint.paintEditor.undo\": \"Atšaukti\",\n    \"paint.paintEditor.redo\": \"Grąžinti\",\n    \"paint.paintEditor.forward\": \"Artyn\",\n    \"paint.paintEditor.backward\": \"Tolyn\",\n    \"paint.paintEditor.front\": \"Į priekį\",\n    \"paint.paintEditor.back\": \"Atgal\",\n    \"paint.paintEditor.more\": \"Daugiau\",\n    \"paint.modeTools.brushSize\": \"Dydis\",\n    \"paint.modeTools.eraserSize\": \"Trintuko dydis\",\n    \"paint.modeTools.copy\": \"Kopijuoti\",\n    \"paint.modeTools.paste\": \"Įklijuoti\",\n    \"paint.modeTools.delete\": \"Šalinti\",\n    \"paint.modeTools.curved\": \"Lenktas\",\n    \"paint.modeTools.pointed\": \"Tiesus\",\n    \"paint.modeTools.thickness\": \"Storis\",\n    \"paint.modeTools.flipHorizontal\": \"Apversti horizontaliai\",\n    \"paint.modeTools.flipVertical\": \"Apversti vertikaliai\",\n    \"paint.modeTools.filled\": \"Užpildyta\",\n    \"paint.modeTools.outlined\": \"Su kontūru\",\n    \"paint.paintEditor.bitmap\": \"Keisti į piešinį taškais\",\n    \"paint.paintEditor.vector\": \"Keisti į piešinį linijomis\",\n    \"paint.paintEditor.fill\": \"Užpildymas\",\n    \"paint.paintEditor.stroke\": \"Kontūrai\",\n    \"paint.brushMode.brush\": \"Teptukas\",\n    \"paint.eraserMode.eraser\": \"Trintukas\",\n    \"paint.fillMode.fill\": \"Užpildyti\",\n    \"paint.lineMode.line\": \"Linija\",\n    \"paint.ovalMode.oval\": \"Apskritimas\",\n    \"paint.rectMode.rect\": \"Stačiakampis\",\n    \"paint.reshapeMode.reshape\": \"Pakeisti formą\",\n    \"paint.roundedRectMode.roundedRect\": \"Užapvalintas stačiakampis\",\n    \"paint.selectMode.select\": \"Pažymėti\",\n    \"paint.textMode.text\": \"Tekstas\",\n    \"paint.colorPicker.swap\": \"Sukeisti\"\n  },\n  \"hu\": {\n    \"paint.paintEditor.hue\": \"Szín\",\n    \"paint.paintEditor.saturation\": \"Telítettség\",\n    \"paint.paintEditor.brightness\": \"Fényerő\",\n    \"gui.comingSoon.message1\": \"Ne aggódj, rajta vagyunk {emoji}\",\n    \"gui.comingSoon.message2\": \"Hamarosan...\",\n    \"gui.comingSoon.message3\": \"Dolgozunk rajta {emoji}\",\n    \"paint.paintEditor.costume\": \"Jelmez\",\n    \"paint.paintEditor.group\": \"Csoportosítás\",\n    \"paint.paintEditor.ungroup\": \"Csoport bontása\",\n    \"paint.paintEditor.undo\": \"Visszavonás\",\n    \"paint.paintEditor.redo\": \"Mégis\",\n    \"paint.paintEditor.forward\": \"Előreküld\",\n    \"paint.paintEditor.backward\": \"Hátraküld\",\n    \"paint.paintEditor.front\": \"Legelőre\",\n    \"paint.paintEditor.back\": \"Leghátra\",\n    \"paint.paintEditor.more\": \"Több\",\n    \"paint.modeTools.brushSize\": \"Méret\",\n    \"paint.modeTools.eraserSize\": \"Radír méret\",\n    \"paint.modeTools.copy\": \"Másolás\",\n    \"paint.modeTools.paste\": \"Beillesztés\",\n    \"paint.modeTools.delete\": \"Törlés\",\n    \"paint.modeTools.curved\": \"Ívelt\",\n    \"paint.modeTools.pointed\": \"Csúcsos\",\n    \"paint.modeTools.thickness\": \"Vastagság\",\n    \"paint.modeTools.flipHorizontal\": \"Vízszintes tükrözés\",\n    \"paint.modeTools.flipVertical\": \"Függőleges tükrözés\",\n    \"paint.modeTools.filled\": \"Kitöltött\",\n    \"paint.modeTools.outlined\": \"Körvonalazott\",\n    \"paint.paintEditor.bitmap\": \"Konvertálás Bitképpé\",\n    \"paint.paintEditor.vector\": \"Konvertálás Vektorképpe\",\n    \"paint.paintEditor.fill\": \"Kitöltés\",\n    \"paint.paintEditor.stroke\": \"Körvonal\",\n    \"paint.brushMode.brush\": \"Ecset\",\n    \"paint.eraserMode.eraser\": \"Radír\",\n    \"paint.fillMode.fill\": \"Kitöltés\",\n    \"paint.lineMode.line\": \"Vonal\",\n    \"paint.ovalMode.oval\": \"Kör\",\n    \"paint.rectMode.rect\": \"Téglalap\",\n    \"paint.reshapeMode.reshape\": \"Újraformálás\",\n    \"paint.roundedRectMode.roundedRect\": \"Kerekített téglalap\",\n    \"paint.selectMode.select\": \"Kijelölés\",\n    \"paint.textMode.text\": \"Szöveg\",\n    \"paint.colorPicker.swap\": \"Csere\"\n  },\n  \"mi\": {\n    \"paint.paintEditor.hue\": \"Tae\",\n    \"paint.paintEditor.saturation\": \"Waiwai\",\n    \"paint.paintEditor.brightness\": \"Pīataata\",\n    \"gui.comingSoon.message1\": \"Kaua e āwangawanga, ka ekengia e mātou {emoji}\",\n    \"gui.comingSoon.message2\": \"Ākuanei kei konei...\",\n    \"gui.comingSoon.message3\": \"Kei te ngana mātou ki te whakaoti {emoji}\",\n    \"paint.paintEditor.costume\": \"Kākahu\",\n    \"paint.paintEditor.group\": \"Whakarōpūngia\",\n    \"paint.paintEditor.ungroup\": \"Wehea\",\n    \"paint.paintEditor.undo\": \"Wetekia\",\n    \"paint.paintEditor.redo\": \"Mahia anōtia\",\n    \"paint.paintEditor.forward\": \"Ki mua\",\n    \"paint.paintEditor.backward\": \"Ki muri\",\n    \"paint.paintEditor.front\": \"Mua\",\n    \"paint.paintEditor.back\": \"Hoki atu\",\n    \"paint.paintEditor.more\": \"Anō\",\n    \"paint.modeTools.brushSize\": \"Rahi\",\n    \"paint.modeTools.eraserSize\": \"Te rahi kōmuru\",\n    \"paint.modeTools.copy\": \"Tāruatia\",\n    \"paint.modeTools.paste\": \"Whakapiri\",\n    \"paint.modeTools.delete\": \"Mukua\",\n    \"paint.modeTools.curved\": \"Ānau\",\n    \"paint.modeTools.pointed\": \"Koi\",\n    \"paint.modeTools.thickness\": \"Mātotoru\",\n    \"paint.modeTools.flipHorizontal\": \"Pore whakapae\",\n    \"paint.modeTools.flipVertical\": \"Pore poutū\",\n    \"paint.modeTools.filled\": \"Kua kī\",\n    \"paint.modeTools.outlined\": \"Kua whakahuahuatia\",\n    \"paint.paintEditor.bitmap\": \"Whakawhitia hei Maheremoka\",\n    \"paint.paintEditor.vector\": \"Whakawhitia hei Pere\",\n    \"paint.paintEditor.fill\": \"Whakakīia\",\n    \"paint.paintEditor.stroke\": \"Whakahuahua\",\n    \"paint.brushMode.brush\": \"Paraihe\",\n    \"paint.eraserMode.eraser\": \"Kōmuru\",\n    \"paint.fillMode.fill\": \"Whakakīia\",\n    \"paint.lineMode.line\": \"Rārangi\",\n    \"paint.ovalMode.oval\": \"Porowhita\",\n    \"paint.rectMode.rect\": \"Tapawhā Roa\",\n    \"paint.reshapeMode.reshape\": \"Tāraia anōtia\",\n    \"paint.roundedRectMode.roundedRect\": \"Tapawhā Roa Tōpuku\",\n    \"paint.selectMode.select\": \"Kōwhiria\",\n    \"paint.textMode.text\": \"Kuputuhi\",\n    \"paint.colorPicker.swap\": \"Whakawhitia\"\n  },\n  \"mn\": {\n    \"paint.paintEditor.hue\": \"Өнгө\",\n    \"paint.paintEditor.saturation\": \"Нэвчилт\",\n    \"paint.paintEditor.brightness\": \"Цайруулалт\",\n    \"gui.comingSoon.message1\": \"Битгий санаа зов бид {emoji} дээр ажиллаж байна\",\n    \"gui.comingSoon.message2\": \"Тун удахгүй...\",\n    \"gui.comingSoon.message3\": \"Бид {emoji} дээр ажиллаж байна.\",\n    \"paint.paintEditor.costume\": \"Өмсгөл\",\n    \"paint.paintEditor.group\": \"Бүлэг\",\n    \"paint.paintEditor.ungroup\": \"Бүлэглэлт болиулах\",\n    \"paint.paintEditor.undo\": \"Үйлдлийг буцаах\",\n    \"paint.paintEditor.redo\": \"Буцаалтыг сэргээх\",\n    \"paint.paintEditor.forward\": \"Урагшаа\",\n    \"paint.paintEditor.backward\": \"Арагшаа\",\n    \"paint.paintEditor.front\": \"Урд\",\n    \"paint.paintEditor.back\": \"Ард\",\n    \"paint.paintEditor.more\": \"Цааш...\",\n    \"paint.modeTools.brushSize\": \"Хэмжээ\",\n    \"paint.modeTools.eraserSize\": \"Баллуурын хэмжээ\",\n    \"paint.modeTools.copy\": \"Хуулбарлах\",\n    \"paint.modeTools.paste\": \"Хуулбарыг буулгах\",\n    \"paint.modeTools.delete\": \"Устгах\",\n    \"paint.modeTools.curved\": \"Мохой\",\n    \"paint.modeTools.pointed\": \"Хурц\",\n    \"paint.modeTools.thickness\": \"Зузаан\",\n    \"paint.modeTools.flipHorizontal\": \"Хэвтээ тэнхлэгийн дагуу тонгоруулах\",\n    \"paint.modeTools.flipVertical\": \"Босоо тэнхлэгийн дагуу тонгоруулах\",\n    \"paint.modeTools.filled\": \"Дүүрсэн\",\n    \"paint.modeTools.outlined\": \"Хүрээлсэн зураастай\",\n    \"paint.paintEditor.bitmap\": \"Битмап-руу шилжүүлэх\",\n    \"paint.paintEditor.vector\": \"Вектор-т шилжүүл\",\n    \"paint.paintEditor.fill\": \"Дүүргэх\",\n    \"paint.paintEditor.stroke\": \"Хүрээ зураас\",\n    \"paint.brushMode.brush\": \"Бийр\",\n    \"paint.eraserMode.eraser\": \"Баллуур\",\n    \"paint.fillMode.fill\": \"Дүүргэх\",\n    \"paint.lineMode.line\": \"Шугам\",\n    \"paint.ovalMode.oval\": \"Тойрог\",\n    \"paint.rectMode.rect\": \"Тэгш өнцөгт\",\n    \"paint.reshapeMode.reshape\": \"Дүрсийг өөрчлөх\",\n    \"paint.roundedRectMode.roundedRect\": \"Мөлгөр дөрвөлжин\",\n    \"paint.selectMode.select\": \"Сонгох\",\n    \"paint.textMode.text\": \"Текст\",\n    \"paint.colorPicker.swap\": \"Сэлгэх\"\n  },\n  \"nl\": {\n    \"paint.paintEditor.hue\": \"Kleur\",\n    \"paint.paintEditor.saturation\": \"Verzadiging\",\n    \"paint.paintEditor.brightness\": \"Helderheid\",\n    \"gui.comingSoon.message1\": \"Geen zorgen; we zijn er mee bezig {emoji}\",\n    \"gui.comingSoon.message2\": \"Binnenkort beschikbaar...\",\n    \"gui.comingSoon.message3\": \"We werken er aan {emoji}\",\n    \"paint.paintEditor.costume\": \"Uiterlijk\",\n    \"paint.paintEditor.group\": \"Groeperen\",\n    \"paint.paintEditor.ungroup\": \"Groep opheffen\",\n    \"paint.paintEditor.undo\": \"Ongedaan maken\",\n    \"paint.paintEditor.redo\": \"Opnieuw\",\n    \"paint.paintEditor.forward\": \"Naar voren\",\n    \"paint.paintEditor.backward\": \"Naar achteren\",\n    \"paint.paintEditor.front\": \"Naar voorgrond\",\n    \"paint.paintEditor.back\": \"Naar achtergrond\",\n    \"paint.paintEditor.more\": \"Meer\",\n    \"paint.modeTools.brushSize\": \"Grootte\",\n    \"paint.modeTools.eraserSize\": \"Gum-breedte\",\n    \"paint.modeTools.copy\": \"Kopie maken \",\n    \"paint.modeTools.paste\": \"Plakken\",\n    \"paint.modeTools.delete\": \"Verwijder\",\n    \"paint.modeTools.curved\": \"Gebogen\",\n    \"paint.modeTools.pointed\": \"Puntig\",\n    \"paint.modeTools.thickness\": \"Dikte\",\n    \"paint.modeTools.flipHorizontal\": \"Links-rechts omdraaien\",\n    \"paint.modeTools.flipVertical\": \"Boven-onder omdraaien\",\n    \"paint.modeTools.filled\": \"Gevuld\",\n    \"paint.modeTools.outlined\": \"Omtrek\",\n    \"paint.paintEditor.bitmap\": \"Zet om naar bitmap\",\n    \"paint.paintEditor.vector\": \"Zet om naar vector\",\n    \"paint.paintEditor.fill\": \"Vulling\",\n    \"paint.paintEditor.stroke\": \"Omtrek\",\n    \"paint.brushMode.brush\": \"Kwast\",\n    \"paint.eraserMode.eraser\": \"Gum\",\n    \"paint.fillMode.fill\": \"Vulling\",\n    \"paint.lineMode.line\": \"Lijn\",\n    \"paint.ovalMode.oval\": \"Cirkel\",\n    \"paint.rectMode.rect\": \"Rechthoek\",\n    \"paint.reshapeMode.reshape\": \"Opnieuw vormen\",\n    \"paint.roundedRectMode.roundedRect\": \"Afgeronde rechthoek\",\n    \"paint.selectMode.select\": \"Selecteren\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Wissel\"\n  },\n  \"ja\": {\n    \"paint.paintEditor.hue\": \"色\",\n    \"paint.paintEditor.saturation\": \"鮮やかさ\",\n    \"paint.paintEditor.brightness\": \"明るさ\",\n    \"gui.comingSoon.message1\": \"安心してください。開発中です {emoji}\",\n    \"gui.comingSoon.message2\": \"近日公開\",\n    \"gui.comingSoon.message3\": \"開発中です {emoji}\",\n    \"paint.paintEditor.costume\": \"コスチューム\",\n    \"paint.paintEditor.group\": \"グループ化\",\n    \"paint.paintEditor.ungroup\": \"グループ解除\",\n    \"paint.paintEditor.undo\": \"取り消し\",\n    \"paint.paintEditor.redo\": \"やり直し\",\n    \"paint.paintEditor.forward\": \"手前に出す\",\n    \"paint.paintEditor.backward\": \"奥に下げる\",\n    \"paint.paintEditor.front\": \"最前面\",\n    \"paint.paintEditor.back\": \"最背面\",\n    \"paint.paintEditor.more\": \"もっと\",\n    \"paint.modeTools.brushSize\": \"大きさ\",\n    \"paint.modeTools.eraserSize\": \"消しゴムの大きさ\",\n    \"paint.modeTools.copy\": \"コピー\",\n    \"paint.modeTools.paste\": \"貼り付け\",\n    \"paint.modeTools.delete\": \"削除\",\n    \"paint.modeTools.curved\": \"滑らか\",\n    \"paint.modeTools.pointed\": \"角ばった\",\n    \"paint.modeTools.thickness\": \"太さ\",\n    \"paint.modeTools.flipHorizontal\": \"左右反転\",\n    \"paint.modeTools.flipVertical\": \"上下反転\",\n    \"paint.modeTools.filled\": \"塗りつぶし\",\n    \"paint.modeTools.outlined\": \"輪郭\",\n    \"paint.paintEditor.bitmap\": \"ビットマップに変換\",\n    \"paint.paintEditor.vector\": \"ベクターに変換\",\n    \"paint.paintEditor.fill\": \"塗りつぶし\",\n    \"paint.paintEditor.stroke\": \"枠線\",\n    \"paint.brushMode.brush\": \"筆\",\n    \"paint.eraserMode.eraser\": \"消しゴム\",\n    \"paint.fillMode.fill\": \"塗りつぶし\",\n    \"paint.lineMode.line\": \"直線\",\n    \"paint.ovalMode.oval\": \"円\",\n    \"paint.rectMode.rect\": \"四角形\",\n    \"paint.reshapeMode.reshape\": \"形を変える\",\n    \"paint.roundedRectMode.roundedRect\": \"角丸の長方形\",\n    \"paint.selectMode.select\": \"選択\",\n    \"paint.textMode.text\": \"テキスト\",\n    \"paint.colorPicker.swap\": \"入れ替え\"\n  },\n  \"ja-Hira\": {\n    \"paint.paintEditor.hue\": \"いろ\",\n    \"paint.paintEditor.saturation\": \"あざやかさ\",\n    \"paint.paintEditor.brightness\": \"あかるさ\",\n    \"gui.comingSoon.message1\": \"あんしんしてください。かいはつちゅうです {emoji}\",\n    \"gui.comingSoon.message2\": \"きんじつこうかい\",\n    \"gui.comingSoon.message3\": \"かいはつちゅうです {emoji}\",\n    \"paint.paintEditor.costume\": \"コスチューム\",\n    \"paint.paintEditor.group\": \"ぐるーぷか\",\n    \"paint.paintEditor.ungroup\": \"グループかいじょ\",\n    \"paint.paintEditor.undo\": \"とりけし\",\n    \"paint.paintEditor.redo\": \"やりなおし\",\n    \"paint.paintEditor.forward\": \"てまえにだす\",\n    \"paint.paintEditor.backward\": \"おくにさげる\",\n    \"paint.paintEditor.front\": \"さいぜんめん\",\n    \"paint.paintEditor.back\": \"さいはいめん\",\n    \"paint.paintEditor.more\": \"もっと\",\n    \"paint.modeTools.brushSize\": \"おおきさ\",\n    \"paint.modeTools.eraserSize\": \"けしごむのおおきさ\",\n    \"paint.modeTools.copy\": \"コピー\",\n    \"paint.modeTools.paste\": \"はりつけ\",\n    \"paint.modeTools.delete\": \"さくじょ\",\n    \"paint.modeTools.curved\": \"なめらか\",\n    \"paint.modeTools.pointed\": \"かどばった\",\n    \"paint.modeTools.thickness\": \"ふとさ\",\n    \"paint.modeTools.flipHorizontal\": \"さゆうはんてん\",\n    \"paint.modeTools.flipVertical\": \"じょうげはんてん\",\n    \"paint.modeTools.filled\": \"ぬりつぶし\",\n    \"paint.modeTools.outlined\": \"りんかく\",\n    \"paint.paintEditor.bitmap\": \"ビットマップにへんかん\",\n    \"paint.paintEditor.vector\": \"ベクターにへんかん\",\n    \"paint.paintEditor.fill\": \"ぬりつぶし\",\n    \"paint.paintEditor.stroke\": \"わくせん\",\n    \"paint.brushMode.brush\": \"ふで\",\n    \"paint.eraserMode.eraser\": \"けしごむ\",\n    \"paint.fillMode.fill\": \"ぬりつぶし\",\n    \"paint.lineMode.line\": \"ちょくせん\",\n    \"paint.ovalMode.oval\": \"えん\",\n    \"paint.rectMode.rect\": \"しかくけい\",\n    \"paint.reshapeMode.reshape\": \"かたちをかえる\",\n    \"paint.roundedRectMode.roundedRect\": \"かくまるのちょうほうけい\",\n    \"paint.selectMode.select\": \"せんたく\",\n    \"paint.textMode.text\": \"テキスト\",\n    \"paint.colorPicker.swap\": \"いれかえ\"\n  },\n  \"nb\": {\n    \"paint.paintEditor.hue\": \"Farge\",\n    \"paint.paintEditor.saturation\": \"Fargemetning\",\n    \"paint.paintEditor.brightness\": \"Lysstyrke\",\n    \"gui.comingSoon.message1\": \"Ingen fare, vi arbeider med dette {emoji}\",\n    \"gui.comingSoon.message2\": \"Kommer snart...\",\n    \"gui.comingSoon.message3\": \"Vi arbeider med dette {emoji}\",\n    \"paint.paintEditor.costume\": \"Drakt\",\n    \"paint.paintEditor.group\": \"Gruppér\",\n    \"paint.paintEditor.ungroup\": \"Del opp gruppe\",\n    \"paint.paintEditor.undo\": \"Angre\",\n    \"paint.paintEditor.redo\": \"Gjør igjen\",\n    \"paint.paintEditor.forward\": \"Flytt frem\",\n    \"paint.paintEditor.backward\": \"Flytt tilbake\",\n    \"paint.paintEditor.front\": \"Foran alt\",\n    \"paint.paintEditor.back\": \"Tilbake\",\n    \"paint.paintEditor.more\": \"Flere\",\n    \"paint.modeTools.brushSize\": \"Størrelse\",\n    \"paint.modeTools.eraserSize\": \"Viskelærbredde\",\n    \"paint.modeTools.copy\": \"Kopier\",\n    \"paint.modeTools.paste\": \"Lim inn\",\n    \"paint.modeTools.delete\": \"Slett\",\n    \"paint.modeTools.curved\": \"Glatt\",\n    \"paint.modeTools.pointed\": \"Skarp\",\n    \"paint.modeTools.thickness\": \"Tykkelse\",\n    \"paint.modeTools.flipHorizontal\": \"Speilvend\",\n    \"paint.modeTools.flipVertical\": \"Opp ned\",\n    \"paint.modeTools.filled\": \"Fylt\",\n    \"paint.modeTools.outlined\": \"Omriss\",\n    \"paint.paintEditor.bitmap\": \"Gå til pikselgrafikk\",\n    \"paint.paintEditor.vector\": \"Gjør om til vektorgrafikk\",\n    \"paint.paintEditor.fill\": \"Fyll\",\n    \"paint.paintEditor.stroke\": \"Kant\",\n    \"paint.brushMode.brush\": \"Malepensel\",\n    \"paint.eraserMode.eraser\": \"Viskelær\",\n    \"paint.fillMode.fill\": \"Fyll\",\n    \"paint.lineMode.line\": \"Linje\",\n    \"paint.ovalMode.oval\": \"Sirkel\",\n    \"paint.rectMode.rect\": \"Rektangel\",\n    \"paint.reshapeMode.reshape\": \"Bøy\",\n    \"paint.roundedRectMode.roundedRect\": \"Avrundet rektangel\",\n    \"paint.selectMode.select\": \"Velg\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Bytt\"\n  },\n  \"nn\": {\n    \"paint.paintEditor.hue\": \"Farge\",\n    \"paint.paintEditor.saturation\": \"Fargemetting\",\n    \"paint.paintEditor.brightness\": \"Lysstyrke\",\n    \"gui.comingSoon.message1\": \"Slapp av – me er på saka {emoji}\",\n    \"gui.comingSoon.message2\": \"Kjem snart …\",\n    \"gui.comingSoon.message3\": \"Me arbeider med det {emoji}\",\n    \"paint.paintEditor.costume\": \"Drakt\",\n    \"paint.paintEditor.group\": \"Lag gruppe\",\n    \"paint.paintEditor.ungroup\": \"Løys opp gruppe\",\n    \"paint.paintEditor.undo\": \"Angra\",\n    \"paint.paintEditor.redo\": \"Gjer om\",\n    \"paint.paintEditor.forward\": \"Framover\",\n    \"paint.paintEditor.backward\": \"Bakover\",\n    \"paint.paintEditor.front\": \"Heilt fram\",\n    \"paint.paintEditor.back\": \"Heilt bak\",\n    \"paint.paintEditor.more\": \"Fleire\",\n    \"paint.modeTools.brushSize\": \"Storleik\",\n    \"paint.modeTools.eraserSize\": \"Viskelêrstorleik\",\n    \"paint.modeTools.copy\": \"Kopier\",\n    \"paint.modeTools.paste\": \"Lim inn\",\n    \"paint.modeTools.delete\": \"Slett\",\n    \"paint.modeTools.curved\": \"Glatt\",\n    \"paint.modeTools.pointed\": \"Spiss\",\n    \"paint.modeTools.thickness\": \"Strekbreidd\",\n    \"paint.modeTools.flipHorizontal\": \"Spegelvend\",\n    \"paint.modeTools.flipVertical\": \"Opp ned\",\n    \"paint.modeTools.filled\": \"Fylt\",\n    \"paint.modeTools.outlined\": \"Omriss\",\n    \"paint.paintEditor.bitmap\": \"Gjer om til punktgrafikk\",\n    \"paint.paintEditor.vector\": \"Gjer om til vektorgrafikk\",\n    \"paint.paintEditor.fill\": \"Fyll\",\n    \"paint.paintEditor.stroke\": \"Kantlinje\",\n    \"paint.brushMode.brush\": \"Målarpensel\",\n    \"paint.eraserMode.eraser\": \"Viskelêr\",\n    \"paint.fillMode.fill\": \"Fyll\",\n    \"paint.lineMode.line\": \"Linje\",\n    \"paint.ovalMode.oval\": \"Sirkel\",\n    \"paint.rectMode.rect\": \"Rektangel\",\n    \"paint.reshapeMode.reshape\": \"Endra form\",\n    \"paint.roundedRectMode.roundedRect\": \"Avrunda rektangel\",\n    \"paint.selectMode.select\": \"Vel\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Byt\"\n  },\n  \"oc\": {\n    \"paint.paintEditor.hue\": \"Color\",\n    \"paint.paintEditor.saturation\": \"Saturacion\",\n    \"paint.paintEditor.brightness\": \"Luminositat\",\n    \"gui.comingSoon.message1\": \"Te'n fagas pas, nos en tracham ! {emoji}\",\n    \"gui.comingSoon.message2\": \"Arriba lèu...\",\n    \"gui.comingSoon.message3\": \"Sèm a i trabalhar {emoji}\",\n    \"paint.paintEditor.costume\": \"Costum\",\n    \"paint.paintEditor.group\": \"Grop\",\n    \"paint.paintEditor.ungroup\": \"Desgroupar\",\n    \"paint.paintEditor.undo\": \"Anullar\",\n    \"paint.paintEditor.redo\": \"Tornar far\",\n    \"paint.paintEditor.forward\": \"Endavant\",\n    \"paint.paintEditor.backward\": \"Endarrièr\",\n    \"paint.paintEditor.front\": \"Davant\",\n    \"paint.paintEditor.back\": \"Endarrièr\",\n    \"paint.paintEditor.more\": \"Mai\",\n    \"paint.modeTools.brushSize\": \"Talha\",\n    \"paint.modeTools.eraserSize\": \"Talha de la goma\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Pegar\",\n    \"paint.modeTools.delete\": \"Escafar\",\n    \"paint.modeTools.curved\": \"Corbat\",\n    \"paint.modeTools.pointed\": \"Ponchut\",\n    \"paint.modeTools.thickness\": \"Espessor\",\n    \"paint.modeTools.flipHorizontal\": \"Revirar Orizontalement\",\n    \"paint.modeTools.flipVertical\": \"Revirar Verticalement\",\n    \"paint.modeTools.filled\": \"Emplenat\",\n    \"paint.modeTools.outlined\": \"Suslinhat\",\n    \"paint.paintEditor.bitmap\": \"Convertir en Bitmap\",\n    \"paint.paintEditor.vector\": \"Convertir en Vectors\",\n    \"paint.paintEditor.fill\": \"Emplenar\",\n    \"paint.paintEditor.stroke\": \"Suslinhar\",\n    \"paint.brushMode.brush\": \"Bròssa\",\n    \"paint.eraserMode.eraser\": \"Goma\",\n    \"paint.fillMode.fill\": \"Emplenar\",\n    \"paint.lineMode.line\": \"Linha\",\n    \"paint.ovalMode.oval\": \"Cercle\",\n    \"paint.rectMode.rect\": \"Rectangle\",\n    \"paint.reshapeMode.reshape\": \"Remodelar\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectangle arredondit\",\n    \"paint.selectMode.select\": \"Seleccionar\",\n    \"paint.textMode.text\": \"Tèxt\",\n    \"paint.colorPicker.swap\": \"Escambiar\"\n  },\n  \"or\": {\n    \"paint.paintEditor.hue\": \"ରଙ୍ଗ\",\n    \"paint.paintEditor.saturation\": \"ପରିପୂର୍ଣତା\",\n    \"paint.paintEditor.brightness\": \"ଉଜ୍ଜ୍ୱଳତା\",\n    \"gui.comingSoon.message1\": \"ଚିନ୍ତା କରନ୍ତୁ ନାହିଁ, ଆମେ ଦେଖୁଛୁ    {emoji}\",\n    \"gui.comingSoon.message2\": \"ଶୀଘ୍ର ଆସିବାକୁ ଯାଉଛି \",\n    \"gui.comingSoon.message3\": \"ଆମେ ଏହା ଉପରେ କାମ କରୁଛୁ  {emoji}\",\n    \"paint.paintEditor.costume\": \"ପୋଷାକ\",\n    \"paint.paintEditor.group\": \"ସମୂହ\",\n    \"paint.paintEditor.ungroup\": \"ଅଲଗା କର\",\n    \"paint.paintEditor.undo\": \"ଆଗ ପରି\",\n    \"paint.paintEditor.redo\": \"ପୁଣି କର\",\n    \"paint.paintEditor.forward\": \"ଆଗକୁ କର\",\n    \"paint.paintEditor.backward\": \"ପଛକୁ କର\",\n    \"paint.paintEditor.front\": \"ସାମନା\",\n    \"paint.paintEditor.back\": \"ପଛପାଖ\",\n    \"paint.paintEditor.more\": \"ଆହୁରି\",\n    \"paint.modeTools.brushSize\": \"ଆକାର\",\n    \"paint.modeTools.eraserSize\": \"ରବର ଆକାର\",\n    \"paint.modeTools.copy\": \"ନକଲ କର\",\n    \"paint.modeTools.paste\": \"ଲଗାଅ\",\n    \"paint.modeTools.delete\": \"ଲିଭାଅ\",\n    \"paint.modeTools.curved\": \"ବକ୍ର\",\n    \"paint.modeTools.pointed\": \"ମୁନିଆ\",\n    \"paint.modeTools.thickness\": \"ମୋଟେଇ\",\n    \"paint.modeTools.flipHorizontal\": \"ଭୁସମାନ୍ତରାଳ ଭାବରେ ଓଲଟାଅ\",\n    \"paint.modeTools.flipVertical\": \"ଭୁଲମ୍ବାକାରରେଓଲଟାଅ \",\n    \"paint.modeTools.filled\": \"ଭର୍ତି\",\n    \"paint.modeTools.outlined\": \"ସୀମା ନିର୍ଦ୍ଧାରିତ\",\n    \"paint.paintEditor.bitmap\": \"ବିଟମ୍ଯାପ ରେ ବଦଳେଇଦିଅ\",\n    \"paint.paintEditor.vector\": \"ଭେକ୍ଟର ରେ ବଦଳେଇଦିଅ\",\n    \"paint.paintEditor.fill\": \"ଭର୍ତି କର\",\n    \"paint.paintEditor.stroke\": \"ସୀମା\",\n    \"paint.brushMode.brush\": \"ବ୍ରଶ\",\n    \"paint.eraserMode.eraser\": \"ରବର\",\n    \"paint.fillMode.fill\": \"ଭର୍ତି କର\",\n    \"paint.lineMode.line\": \"ରେଖା\",\n    \"paint.ovalMode.oval\": \"ବୃତ୍ତ\",\n    \"paint.rectMode.rect\": \"ଆୟତକାର\",\n    \"paint.reshapeMode.reshape\": \"ପୁଣି ଆକାର ତିଆରିକର\",\n    \"paint.roundedRectMode.roundedRect\": \"ବୃତ୍ତାକାର କୋଣ ବିଶିଷ୍ଟ ଆୟତକାର \",\n    \"paint.selectMode.select\": \"ବାଛ\",\n    \"paint.textMode.text\": \"ଲେଖା\",\n    \"paint.colorPicker.swap\": \"ପରସ୍ପର ମଧ୍ୟରେ ବଦଳେଇଦିଅ \"\n  },\n  \"uz\": {\n    \"paint.paintEditor.hue\": \"Rang\",\n    \"paint.paintEditor.saturation\": \"To'yinganlik\",\n    \"paint.paintEditor.brightness\": \"Yorqinlik\",\n    \"gui.comingSoon.message1\": \"Xavotir olmang, biz shu yerdamiz. {emoji}\",\n    \"gui.comingSoon.message2\": \"Tez kunda...\",\n    \"gui.comingSoon.message3\": \"Biz uning ustida ishlayapmiz {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostyum\",\n    \"paint.paintEditor.group\": \"Guruh\",\n    \"paint.paintEditor.ungroup\": \"Guruhlashni bekor qilish\",\n    \"paint.paintEditor.undo\": \"Bekor qilish\",\n    \"paint.paintEditor.redo\": \"Qaytarish\",\n    \"paint.paintEditor.forward\": \"Oldiga\",\n    \"paint.paintEditor.backward\": \"Orqaga\",\n    \"paint.paintEditor.front\": \"Eng oldiga\",\n    \"paint.paintEditor.back\": \"Eng orqaga\",\n    \"paint.paintEditor.more\": \"Ko'proq\",\n    \"paint.modeTools.brushSize\": \"O'lchami\",\n    \"paint.modeTools.eraserSize\": \"O'chirg'ich o'lchami\",\n    \"paint.modeTools.copy\": \"Nusxa olish\",\n    \"paint.modeTools.paste\": \"Joylashtirish\",\n    \"paint.modeTools.delete\": \"O'chirish\",\n    \"paint.modeTools.curved\": \"Egri\",\n    \"paint.modeTools.pointed\": \"Ko'rsatilgan\",\n    \"paint.modeTools.thickness\": \"Qalinligi\",\n    \"paint.modeTools.flipHorizontal\": \"Chapdan o'ngga burish\",\n    \"paint.modeTools.flipVertical\": \"Yuqoridan pastga burish\",\n    \"paint.modeTools.filled\": \"Bo'yash\",\n    \"paint.modeTools.outlined\": \"Qisqartirilgan\",\n    \"paint.paintEditor.bitmap\": \"Rastr tasvirga o'zgartirish\",\n    \"paint.paintEditor.vector\": \"Vektor tasvirga o'zgartirish\",\n    \"paint.paintEditor.fill\": \"To'ldirish\",\n    \"paint.paintEditor.stroke\": \"Ramqa\",\n    \"paint.brushMode.brush\": \"Kistichka\",\n    \"paint.eraserMode.eraser\": \"O'chirg'ich\",\n    \"paint.fillMode.fill\": \"Bo'yash\",\n    \"paint.lineMode.line\": \"Chiziq\",\n    \"paint.ovalMode.oval\": \"Aylana\",\n    \"paint.rectMode.rect\": \"Toʻrtburchak\",\n    \"paint.reshapeMode.reshape\": \"Burchakli to'rtburchak\",\n    \"paint.roundedRectMode.roundedRect\": \"Aval shakl berish\",\n    \"paint.selectMode.select\": \"Tanlash\",\n    \"paint.textMode.text\": \"Yozuv\",\n    \"paint.colorPicker.swap\": \"Almashtirish\"\n  },\n  \"th\": {\n    \"paint.paintEditor.hue\": \"สี\",\n    \"paint.paintEditor.saturation\": \"ความอิ่มตัว\",\n    \"paint.paintEditor.brightness\": \"ความสว่าง\",\n    \"gui.comingSoon.message1\": \"ไม่ต้องกังวล เรากำลังทำอยู่ {emoji}\",\n    \"gui.comingSoon.message2\": \"เร็วๆ นี้...\",\n    \"gui.comingSoon.message3\": \"เรากำลังทำอยู่ {emoji}\",\n    \"paint.paintEditor.costume\": \"คอสตูม\",\n    \"paint.paintEditor.group\": \"กลุ่ม\",\n    \"paint.paintEditor.ungroup\": \"แยกกลุ่ม\",\n    \"paint.paintEditor.undo\": \"ย้อนกลับ\",\n    \"paint.paintEditor.redo\": \"ทำซ้ำ\",\n    \"paint.paintEditor.forward\": \"มาข้างหน้า\",\n    \"paint.paintEditor.backward\": \"ไปข้างหลัง\",\n    \"paint.paintEditor.front\": \"หน้าสุด\",\n    \"paint.paintEditor.back\": \"หลังสุด\",\n    \"paint.paintEditor.more\": \"เพิ่มเติม\",\n    \"paint.modeTools.brushSize\": \"ขนาด\",\n    \"paint.modeTools.eraserSize\": \"ขนาดยางลบ\",\n    \"paint.modeTools.copy\": \"คัดลอก\",\n    \"paint.modeTools.paste\": \"วาง\",\n    \"paint.modeTools.delete\": \"ลบ\",\n    \"paint.modeTools.curved\": \"โค้ง\",\n    \"paint.modeTools.pointed\": \"แหลม\",\n    \"paint.modeTools.thickness\": \"ความหนา\",\n    \"paint.modeTools.flipHorizontal\": \"พลิกแนวนอน\",\n    \"paint.modeTools.flipVertical\": \"พลิกแนวตั้ง\",\n    \"paint.modeTools.filled\": \"เติมสี\",\n    \"paint.modeTools.outlined\": \"สีขอบ\",\n    \"paint.paintEditor.bitmap\": \"แปลงเป็นบิตแมป\",\n    \"paint.paintEditor.vector\": \"แปลงเป็นเวกเตอร์\",\n    \"paint.paintEditor.fill\": \"สีพื้น\",\n    \"paint.paintEditor.stroke\": \"สีขอบ\",\n    \"paint.brushMode.brush\": \"แปรง\",\n    \"paint.eraserMode.eraser\": \"ยางลบ\",\n    \"paint.fillMode.fill\": \"สีพื้น\",\n    \"paint.lineMode.line\": \"เส้น\",\n    \"paint.ovalMode.oval\": \"วงกลม\",\n    \"paint.rectMode.rect\": \"สี่เหลี่ยม\",\n    \"paint.reshapeMode.reshape\": \"จัดรูปร่างใหม่\",\n    \"paint.roundedRectMode.roundedRect\": \"สี่เหลี่ยมขอบมน\",\n    \"paint.selectMode.select\": \"เลือก\",\n    \"paint.textMode.text\": \"ข้อความ\",\n    \"paint.colorPicker.swap\": \"สลับสี\"\n  },\n  \"km\": {\n    \"paint.paintEditor.hue\": \"ពណ៌\",\n    \"paint.paintEditor.saturation\": \"កម្រិតដិត\",\n    \"paint.paintEditor.brightness\": \"កម្រិតពន្លឺ\",\n    \"gui.comingSoon.message1\": \"កុំបារម្ភ! ពួកយើងកំពុងតែធ្វើការលើហ្នឹងហើយ {emoji}\",\n    \"gui.comingSoon.message2\": \"មកដល់ឆាប់ៗ...\",\n    \"gui.comingSoon.message3\": \"ពួកយើងកំពុងតែធ្វើការលើហ្នឹងហើយ {emoji}\",\n    \"paint.paintEditor.costume\": \"រូបរាង\",\n    \"paint.paintEditor.group\": \"ដាក់ក្រុម\",\n    \"paint.paintEditor.ungroup\": \"បំបែកក្រុម\",\n    \"paint.paintEditor.undo\": \"មិនធ្វើវិញ\",\n    \"paint.paintEditor.redo\": \"ធ្វើឡើងវិញ\",\n    \"paint.paintEditor.forward\": \"ទៅមុខ\",\n    \"paint.paintEditor.backward\": \"ថយក្រោយ\",\n    \"paint.paintEditor.front\": \"មុខគេ\",\n    \"paint.paintEditor.back\": \"ក្រោយគេ\",\n    \"paint.paintEditor.more\": \"ច្រើនទៀត\",\n    \"paint.modeTools.brushSize\": \"ទំហំ\",\n    \"paint.modeTools.eraserSize\": \"ទំហំជ័រលុប\",\n    \"paint.modeTools.copy\": \"ចម្លង\",\n    \"paint.modeTools.paste\": \"ភ្ជាប់\",\n    \"paint.modeTools.delete\": \"លុប\",\n    \"paint.modeTools.curved\": \"កោង\",\n    \"paint.modeTools.pointed\": \"ស្រួច\",\n    \"paint.modeTools.thickness\": \"កម្រាស់\",\n    \"paint.modeTools.flipHorizontal\": \"ត្រឡប់ផ្ដេក\",\n    \"paint.modeTools.flipVertical\": \"ត្រឡប់ឈរ\",\n    \"paint.modeTools.filled\": \"មានផ្ទៃ\",\n    \"paint.modeTools.outlined\": \"មានគ្រោង\",\n    \"paint.paintEditor.bitmap\": \"បម្លែងជា Bitmap\",\n    \"paint.paintEditor.vector\": \"បម្លែងជា Vector\",\n    \"paint.paintEditor.fill\": \"ផ្ទៃ\",\n    \"paint.paintEditor.stroke\": \"បន្ទាត់គែម\",\n    \"paint.brushMode.brush\": \"ជក់\",\n    \"paint.eraserMode.eraser\": \"ជ័រលុប\",\n    \"paint.fillMode.fill\": \"ផ្ទៃ\",\n    \"paint.lineMode.line\": \"បន្ទាត់\",\n    \"paint.ovalMode.oval\": \"រង្វង់\",\n    \"paint.rectMode.rect\": \"ចតុកោណកែង\",\n    \"paint.reshapeMode.reshape\": \"កែរូបរាង\",\n    \"paint.roundedRectMode.roundedRect\": \"ចតុកោណកែងជ្រុងមូល\",\n    \"paint.selectMode.select\": \"ជ្រើសរើស\",\n    \"paint.textMode.text\": \"អត្ថបទ\",\n    \"paint.colorPicker.swap\": \"ប្តូរពណ៌\"\n  },\n  \"pl\": {\n    \"paint.paintEditor.hue\": \"Kolor\",\n    \"paint.paintEditor.saturation\": \"Nasycenie\",\n    \"paint.paintEditor.brightness\": \"Jasność\",\n    \"gui.comingSoon.message1\": \"Nie martw się, pracujemy nad tym {emoji}\",\n    \"gui.comingSoon.message2\": \"Już wkrótce...\",\n    \"gui.comingSoon.message3\": \"Pracujemy nad tym {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostium\",\n    \"paint.paintEditor.group\": \"Grupuj\",\n    \"paint.paintEditor.ungroup\": \"Rozgrupuj\",\n    \"paint.paintEditor.undo\": \"Cofnij\",\n    \"paint.paintEditor.redo\": \"Ponów\",\n    \"paint.paintEditor.forward\": \"Do przodu\",\n    \"paint.paintEditor.backward\": \"Do tyłu\",\n    \"paint.paintEditor.front\": \"Przód\",\n    \"paint.paintEditor.back\": \"Powrót\",\n    \"paint.paintEditor.more\": \"Więcej\",\n    \"paint.modeTools.brushSize\": \"Rozmiar\",\n    \"paint.modeTools.eraserSize\": \"Wielkość gumki\",\n    \"paint.modeTools.copy\": \"Kopiuj\",\n    \"paint.modeTools.paste\": \"Wklej\",\n    \"paint.modeTools.delete\": \"Usuń\",\n    \"paint.modeTools.curved\": \"Zakrzywiony\",\n    \"paint.modeTools.pointed\": \"Wskazany\",\n    \"paint.modeTools.thickness\": \"Grubość\",\n    \"paint.modeTools.flipHorizontal\": \"Odwróć w płaszczyźnie poziomej\",\n    \"paint.modeTools.flipVertical\": \"Odwróć w płaszczyźnie pionowej\",\n    \"paint.modeTools.filled\": \"Wypełniony\",\n    \"paint.modeTools.outlined\": \"Kontur\",\n    \"paint.paintEditor.bitmap\": \"Przekształć w bitmapę\",\n    \"paint.paintEditor.vector\": \"Konwertuj na wektor\",\n    \"paint.paintEditor.fill\": \"Wypełnij\",\n    \"paint.paintEditor.stroke\": \"Zarys\",\n    \"paint.brushMode.brush\": \"Pędzel\",\n    \"paint.eraserMode.eraser\": \"Gumka\",\n    \"paint.fillMode.fill\": \"Wypełnij\",\n    \"paint.lineMode.line\": \"Linia\",\n    \"paint.ovalMode.oval\": \"Okrąg\",\n    \"paint.rectMode.rect\": \"Prostokąt\",\n    \"paint.reshapeMode.reshape\": \"Przekształć\",\n    \"paint.roundedRectMode.roundedRect\": \"Zaokrąglony prostokąt\",\n    \"paint.selectMode.select\": \"Wybierz\",\n    \"paint.textMode.text\": \"Tekst\",\n    \"paint.colorPicker.swap\": \"Zamień\"\n  },\n  \"pt\": {\n    \"paint.paintEditor.hue\": \"Matiz\",\n    \"paint.paintEditor.saturation\": \"Saturação\",\n    \"paint.paintEditor.brightness\": \"Brilho\",\n    \"gui.comingSoon.message1\": \"Não se preocupe, estamos a trabalhar afincadamente nisto {emoji}\",\n    \"gui.comingSoon.message2\": \"Em Breve…\",\n    \"gui.comingSoon.message3\": \"Estamos a trabalhar afincadamente nisto {emoji}\",\n    \"paint.paintEditor.costume\": \"Traje\",\n    \"paint.paintEditor.group\": \"Agrupar\",\n    \"paint.paintEditor.ungroup\": \"Desagrupar\",\n    \"paint.paintEditor.undo\": \"Desfazer\",\n    \"paint.paintEditor.redo\": \"Refazer\",\n    \"paint.paintEditor.forward\": \"Avançar\",\n    \"paint.paintEditor.backward\": \"Recuar\",\n    \"paint.paintEditor.front\": \"Para a Frente\",\n    \"paint.paintEditor.back\": \"Para Trás\",\n    \"paint.paintEditor.more\": \"Mais\",\n    \"paint.modeTools.brushSize\": \"Tamanho\",\n    \"paint.modeTools.eraserSize\": \"Tamanho da borracha\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Colar\",\n    \"paint.modeTools.delete\": \"Remover\",\n    \"paint.modeTools.curved\": \"Arredondado\",\n    \"paint.modeTools.pointed\": \"Em Ângulo\",\n    \"paint.modeTools.thickness\": \"Espessura\",\n    \"paint.modeTools.flipHorizontal\": \"Inverter Horizontalmente\",\n    \"paint.modeTools.flipVertical\": \"Inverter Verticalmente\",\n    \"paint.modeTools.filled\": \"A cheio\",\n    \"paint.modeTools.outlined\": \"Com contorno\",\n    \"paint.paintEditor.bitmap\": \"Converter para Bitmap\",\n    \"paint.paintEditor.vector\": \"Converter para Vectorial\",\n    \"paint.paintEditor.fill\": \"Interior\",\n    \"paint.paintEditor.stroke\": \"Contorno\",\n    \"paint.brushMode.brush\": \"Pincel\",\n    \"paint.eraserMode.eraser\": \"Borracha\",\n    \"paint.fillMode.fill\": \"Preencher\",\n    \"paint.lineMode.line\": \"Linha\",\n    \"paint.ovalMode.oval\": \"Círculo\",\n    \"paint.rectMode.rect\": \"Rectângulo\",\n    \"paint.reshapeMode.reshape\": \"Remodelar\",\n    \"paint.roundedRectMode.roundedRect\": \"Rectângulo Arredondado\",\n    \"paint.selectMode.select\": \"Seleccionar\",\n    \"paint.textMode.text\": \"Texto\",\n    \"paint.colorPicker.swap\": \"Trocar\"\n  },\n  \"pt-br\": {\n    \"paint.paintEditor.hue\": \"Cor\",\n    \"paint.paintEditor.saturation\": \"Saturação\",\n    \"paint.paintEditor.brightness\": \"Brilho\",\n    \"gui.comingSoon.message1\": \"Não se preocupe, estamos trabalhando nisso {emoji}\",\n    \"gui.comingSoon.message2\": \"Em breve...\",\n    \"gui.comingSoon.message3\": \"Estamos trabalhando nisso {emoji}\",\n    \"paint.paintEditor.costume\": \"Fantasia\",\n    \"paint.paintEditor.group\": \"Agrupar\",\n    \"paint.paintEditor.ungroup\": \"Desagrupar\",\n    \"paint.paintEditor.undo\": \"Desfazer\",\n    \"paint.paintEditor.redo\": \"Refazer\",\n    \"paint.paintEditor.forward\": \"Pra frente\",\n    \"paint.paintEditor.backward\": \"Pra Trás\",\n    \"paint.paintEditor.front\": \"Frente\",\n    \"paint.paintEditor.back\": \"Atrás\",\n    \"paint.paintEditor.more\": \"Mais\",\n    \"paint.modeTools.brushSize\": \"Tamanho\",\n    \"paint.modeTools.eraserSize\": \"Tamanho da borracha\",\n    \"paint.modeTools.copy\": \"Copiar\",\n    \"paint.modeTools.paste\": \"Colar\",\n    \"paint.modeTools.delete\": \"Apagar\",\n    \"paint.modeTools.curved\": \"Curvado\",\n    \"paint.modeTools.pointed\": \"Apontado\",\n    \"paint.modeTools.thickness\": \"Espessura\",\n    \"paint.modeTools.flipHorizontal\": \"Espelhar Horizontalmente\",\n    \"paint.modeTools.flipVertical\": \"Espelhar Verticalmente\",\n    \"paint.modeTools.filled\": \"Preenchido\",\n    \"paint.modeTools.outlined\": \"Contornar\",\n    \"paint.paintEditor.bitmap\": \"Converter para Bitmap\",\n    \"paint.paintEditor.vector\": \"Converter pra Vetor\",\n    \"paint.paintEditor.fill\": \"Preencher\",\n    \"paint.paintEditor.stroke\": \"Contornar\",\n    \"paint.brushMode.brush\": \"Pincel\",\n    \"paint.eraserMode.eraser\": \"Apagador\",\n    \"paint.fillMode.fill\": \"Preencher\",\n    \"paint.lineMode.line\": \"Linha\",\n    \"paint.ovalMode.oval\": \"Círculo\",\n    \"paint.rectMode.rect\": \"Retângulo\",\n    \"paint.reshapeMode.reshape\": \"Remodelar\",\n    \"paint.roundedRectMode.roundedRect\": \"Retângulo Arredondado\",\n    \"paint.selectMode.select\": \"Selecionar\",\n    \"paint.textMode.text\": \"Texto\",\n    \"paint.colorPicker.swap\": \"Troque\"\n  },\n  \"rap\": {\n    \"paint.paintEditor.hue\": \"Kiʾea\",\n    \"paint.paintEditor.saturation\": \"Saturación\",\n    \"paint.paintEditor.brightness\": \"ʾUira\",\n    \"gui.comingSoon.message1\": \"ina koe ko tipa tipa, i matou e aŋa a mo ra meʾe {emoji}\",\n    \"gui.comingSoon.message2\": \"Na he oho mai…\",\n    \"gui.comingSoon.message3\": \"e aŋa a mo ra meʾe {emoji}\",\n    \"paint.paintEditor.costume\": \"Diseño\",\n    \"paint.paintEditor.group\": \"piri\",\n    \"paint.paintEditor.ungroup\": \"haka kore te piri\",\n    \"paint.paintEditor.undo\": \"moumou\",\n    \"paint.paintEditor.redo\": \"he anga haka ʾou\",\n    \"paint.paintEditor.forward\": \"a muʾa\",\n    \"paint.paintEditor.backward\": \"A tuʾa \",\n    \"paint.paintEditor.front\": \"i muʾa\",\n    \"paint.paintEditor.back\": \"a tuʾa \",\n    \"paint.paintEditor.more\": \"te tahi\",\n    \"paint.modeTools.brushSize\": \"he haito\",\n    \"paint.modeTools.eraserSize\": \"he nui nui o te ua ua haka kore\",\n    \"paint.modeTools.copy\": \"ko tuʾu meʾe a\",\n    \"paint.modeTools.paste\": \"pipiri\",\n    \"paint.modeTools.delete\": \"haka kore\",\n    \"paint.modeTools.curved\": \"pikopiko\",\n    \"paint.modeTools.pointed\": \"titika\",\n    \"paint.modeTools.thickness\": \"peŋo peŋo\",\n    \"paint.modeTools.flipHorizontal\": \"haka teka pahe hau titika\",\n    \"paint.modeTools.flipVertical\": \"e rori mo haka titika\",\n    \"paint.modeTools.filled\": \"hāʾī\",\n    \"paint.modeTools.outlined\": \"Contorneado\",\n    \"paint.paintEditor.bitmap\": \"haka āŋa ki te mapa bits\",\n    \"paint.paintEditor.vector\": \"e rori ki te vector\",\n    \"paint.paintEditor.fill\": \"hāʾī\",\n    \"paint.paintEditor.stroke\": \"Tītī\",\n    \"paint.brushMode.brush\": \"purumu paru\",\n    \"paint.eraserMode.eraser\": \"ua ua haka kore\",\n    \"paint.fillMode.fill\": \"hāʾī\",\n    \"paint.lineMode.line\": \"hore hore\",\n    \"paint.ovalMode.oval\": \"taka taka\",\n    \"paint.rectMode.rect\": \"avahata poto roa\",\n    \"paint.reshapeMode.reshape\": \"e hoki mo haka titika te āŋa\",\n    \"paint.roundedRectMode.roundedRect\": \"avahata poto roa hai titi taka taka\",\n    \"paint.selectMode.select\": \"tuhi\",\n    \"paint.textMode.text\": \"papaʾi\",\n    \"paint.colorPicker.swap\": \"rori\"\n  },\n  \"ro\": {\n    \"paint.paintEditor.hue\": \"Culoare\",\n    \"paint.paintEditor.saturation\": \"Saturație\",\n    \"paint.paintEditor.brightness\": \"Strălucire\",\n    \"gui.comingSoon.message1\": \"Nu-ți face griji, ne ocupăm de asta {emoji}\",\n    \"gui.comingSoon.message2\": \"În curând...\",\n    \"gui.comingSoon.message3\": \"Lucrăm la asta {emoji}\",\n    \"paint.paintEditor.costume\": \"Costum\",\n    \"paint.paintEditor.group\": \"Grupează\",\n    \"paint.paintEditor.ungroup\": \"Degrupează\",\n    \"paint.paintEditor.undo\": \"Anulează ultima modificare\",\n    \"paint.paintEditor.redo\": \"Refă acțiunea anulată\",\n    \"paint.paintEditor.forward\": \"În față\",\n    \"paint.paintEditor.backward\": \"În spate\",\n    \"paint.paintEditor.front\": \"Primul\",\n    \"paint.paintEditor.back\": \"Înapoi\",\n    \"paint.paintEditor.more\": \"Altele\",\n    \"paint.modeTools.brushSize\": \"Dimensiune\",\n    \"paint.modeTools.eraserSize\": \"Grosimea radierei\",\n    \"paint.modeTools.copy\": \"Copiază\",\n    \"paint.modeTools.paste\": \"Lipește\",\n    \"paint.modeTools.delete\": \"Șterge\",\n    \"paint.modeTools.curved\": \"Curbat\",\n    \"paint.modeTools.pointed\": \"Unghi\",\n    \"paint.modeTools.thickness\": \"Grosime\",\n    \"paint.modeTools.flipHorizontal\": \"Întoarce orizontal\",\n    \"paint.modeTools.flipVertical\": \"Întoarce vertical\",\n    \"paint.modeTools.filled\": \"Plin\",\n    \"paint.modeTools.outlined\": \"Contur\",\n    \"paint.paintEditor.bitmap\": \"Convertește la bitmap\",\n    \"paint.paintEditor.vector\": \"Convertește în format vectorial\",\n    \"paint.paintEditor.fill\": \"Umplere\",\n    \"paint.paintEditor.stroke\": \"Contur\",\n    \"paint.brushMode.brush\": \"Pensulă\",\n    \"paint.eraserMode.eraser\": \"Radieră\",\n    \"paint.fillMode.fill\": \"Umplere\",\n    \"paint.lineMode.line\": \"Linie\",\n    \"paint.ovalMode.oval\": \"Cerc\",\n    \"paint.rectMode.rect\": \"Dreptunghi\",\n    \"paint.reshapeMode.reshape\": \"Remodelează\",\n    \"paint.roundedRectMode.roundedRect\": \"Dreptunghi rotunjit\",\n    \"paint.selectMode.select\": \"Selectează\",\n    \"paint.textMode.text\": \"Text\",\n    \"paint.colorPicker.swap\": \"Schimbă\"\n  },\n  \"ru\": {\n    \"paint.paintEditor.hue\": \"Цвет\",\n    \"paint.paintEditor.saturation\": \"Насыщенность\",\n    \"paint.paintEditor.brightness\": \"Яркость\",\n    \"gui.comingSoon.message1\": \"Не волнуйтесь, мы работаем над этим {emoji}\",\n    \"gui.comingSoon.message2\": \"Скоро…\",\n    \"gui.comingSoon.message3\": \"Мы работаем над этим {emoji}\",\n    \"paint.paintEditor.costume\": \"Костюм\",\n    \"paint.paintEditor.group\": \"Группировать\",\n    \"paint.paintEditor.ungroup\": \"Разгруппировать\",\n    \"paint.paintEditor.undo\": \"Отменить\",\n    \"paint.paintEditor.redo\": \"Переделать\",\n    \"paint.paintEditor.forward\": \"Вперёд\",\n    \"paint.paintEditor.backward\": \"Назад\",\n    \"paint.paintEditor.front\": \"На передний план\",\n    \"paint.paintEditor.back\": \"На задний план\",\n    \"paint.paintEditor.more\": \"Ещё\",\n    \"paint.modeTools.brushSize\": \"Размер\",\n    \"paint.modeTools.eraserSize\": \"Ширина ластика\",\n    \"paint.modeTools.copy\": \"Копировать\",\n    \"paint.modeTools.paste\": \"Вставить\",\n    \"paint.modeTools.delete\": \"Удалить\",\n    \"paint.modeTools.curved\": \"Изогнуть\",\n    \"paint.modeTools.pointed\": \"Заострить\",\n    \"paint.modeTools.thickness\": \"Толщина\",\n    \"paint.modeTools.flipHorizontal\": \"Отразить по горизонтали\",\n    \"paint.modeTools.flipVertical\": \"Отразить по вертикали\",\n    \"paint.modeTools.filled\": \"Залитый\",\n    \"paint.modeTools.outlined\": \"Обведённый\",\n    \"paint.paintEditor.bitmap\": \"Конвертировать в растровую графику\",\n    \"paint.paintEditor.vector\": \"Конвертировать в векторную графику\",\n    \"paint.paintEditor.fill\": \"Заливка\",\n    \"paint.paintEditor.stroke\": \"Контур\",\n    \"paint.brushMode.brush\": \"Кисть\",\n    \"paint.eraserMode.eraser\": \"Ластик\",\n    \"paint.fillMode.fill\": \"Заливка\",\n    \"paint.lineMode.line\": \"Линия\",\n    \"paint.ovalMode.oval\": \"Круг\",\n    \"paint.rectMode.rect\": \"Прямоугольник\",\n    \"paint.reshapeMode.reshape\": \"Изменение формы\",\n    \"paint.roundedRectMode.roundedRect\": \"Скруглённый Прямоугольник\",\n    \"paint.selectMode.select\": \"Выбрать\",\n    \"paint.textMode.text\": \"Текст\",\n    \"paint.colorPicker.swap\": \"Заменить\"\n  },\n  \"nso\": {\n    \"paint.paintEditor.hue\": \"Mmala\",\n    \"paint.paintEditor.saturation\": \"Tlopelo\",\n    \"paint.paintEditor.brightness\": \"Go taga\",\n    \"gui.comingSoon.message1\": \"O se belaele, re šomana le yona{emoji}\",\n    \"gui.comingSoon.message2\": \"E a tla e se kgale...\",\n    \"gui.comingSoon.message3\": \"Re sa šoma ka yona{emoji}\",\n    \"paint.paintEditor.costume\": \"Khosetšhumo\",\n    \"paint.paintEditor.group\": \"Sehlopha\",\n    \"paint.paintEditor.ungroup\": \"Hlopholla\",\n    \"paint.paintEditor.undo\": \"Dirolla\",\n    \"paint.paintEditor.redo\": \"Dira gape\",\n    \"paint.paintEditor.forward\": \"Pele\",\n    \"paint.paintEditor.backward\": \"Morago\",\n    \"paint.paintEditor.front\": \"Pele\",\n    \"paint.paintEditor.back\": \"Morago\",\n    \"paint.paintEditor.more\": \"Go feta\",\n    \"paint.modeTools.brushSize\": \"Bogolo\",\n    \"paint.modeTools.eraserSize\": \"Bogolo bja sephumodi\",\n    \"paint.modeTools.copy\": \"Kopiša\",\n    \"paint.modeTools.paste\": \"Momaretša\",\n    \"paint.modeTools.delete\": \"Phumula\",\n    \"paint.modeTools.curved\": \"Kgopame\",\n    \"paint.modeTools.pointed\": \"Šupile\",\n    \"paint.modeTools.thickness\": \"Bokoto\",\n    \"paint.modeTools.flipHorizontal\": \"Phethola go Rapama\",\n    \"paint.modeTools.flipVertical\": \"Go phethola go tsepa\",\n    \"paint.modeTools.filled\": \"Tladitšwe\",\n    \"paint.modeTools.outlined\": \"Hlalositšwe\",\n    \"paint.paintEditor.bitmap\": \"Fetolela go Bitmap\",\n    \"paint.paintEditor.vector\": \"Fetolela go Vector\",\n    \"paint.paintEditor.fill\": \"Tlatša\",\n    \"paint.paintEditor.stroke\": \"Hlalosa\",\n    \"paint.brushMode.brush\": \"Poraša\",\n    \"paint.eraserMode.eraser\": \"Sephumodi\",\n    \"paint.fillMode.fill\": \"Tlatša\",\n    \"paint.lineMode.line\": \"Mothalo\",\n    \"paint.ovalMode.oval\": \"Sediko\",\n    \"paint.rectMode.rect\": \"Khutlonne\",\n    \"paint.reshapeMode.reshape\": \"Bopaleswa\",\n    \"paint.roundedRectMode.roundedRect\": \"Khutlonne ya go dirwa nkgokolo\",\n    \"paint.selectMode.select\": \"Kgetha\",\n    \"paint.textMode.text\": \"Sengwalwa\",\n    \"paint.colorPicker.swap\": \"Fetola\"\n  },\n  \"tn\": {\n    \"paint.paintEditor.hue\": \"Mmala\",\n    \"paint.paintEditor.saturation\": \"Go tlala\",\n    \"paint.paintEditor.brightness\": \"Phatsimo\",\n    \"gui.comingSoon.message1\": \"Se tshwenyege, re mo go yona{emoji}\",\n    \"gui.comingSoon.message2\": \"E a latela\",\n    \"gui.comingSoon.message3\": \"Re dira mo go yona {emoji}\",\n    \"paint.paintEditor.costume\": \"Seaparo\",\n    \"paint.paintEditor.group\": \"Setlhopa\",\n    \"paint.paintEditor.ungroup\": \"Kgobokanyolola\",\n    \"paint.paintEditor.undo\": \"Sutlha\",\n    \"paint.paintEditor.redo\": \"Dira gape\",\n    \"paint.paintEditor.forward\": \"Kwa pele\",\n    \"paint.paintEditor.backward\": \"Kwa morago\",\n    \"paint.paintEditor.front\": \"Fa pele\",\n    \"paint.paintEditor.back\": \"Morago\",\n    \"paint.paintEditor.more\": \"Oketsegileng\",\n    \"paint.modeTools.brushSize\": \"Tlolela kwa godimo le tlase\",\n    \"paint.modeTools.eraserSize\": \"Bogolo jwa sephimodi\",\n    \"paint.modeTools.copy\": \"Kopa\",\n    \"paint.modeTools.paste\": \"Kgomaretsa\",\n    \"paint.modeTools.delete\": \"Phimola\",\n    \"paint.modeTools.curved\": \"Obegile\",\n    \"paint.modeTools.pointed\": \"Supile\",\n    \"paint.modeTools.thickness\": \"Bokima\",\n    \"paint.modeTools.flipHorizontal\": \"Tlola go tswa mo letlhakoreng go ya go letlhakore le lengwe\",\n    \"paint.modeTools.flipVertical\": \"Tlolela kwa godimo le tlase\",\n    \"paint.modeTools.filled\": \"Tladitswe\",\n    \"paint.modeTools.outlined\": \"Tlhalositswe\",\n    \"paint.paintEditor.bitmap\": \"Fetolela go Bitmap\",\n    \"paint.paintEditor.vector\": \"Fetolela go Vector\",\n    \"paint.paintEditor.fill\": \"Tlatsa\",\n    \"paint.paintEditor.stroke\": \"Tlhalosa\",\n    \"paint.brushMode.brush\": \"Gotlha\",\n    \"paint.eraserMode.eraser\": \"Sephimodi\",\n    \"paint.fillMode.fill\": \"Tlatsa\",\n    \"paint.lineMode.line\": \"Mola\",\n    \"paint.ovalMode.oval\": \"Sediko\",\n    \"paint.rectMode.rect\": \"Khutlho nne tsepa\",\n    \"paint.reshapeMode.reshape\": \"Bopa gape \",\n    \"paint.roundedRectMode.roundedRect\": \"Dikhutlonnetsepa tse di golokang\",\n    \"paint.selectMode.select\": \"Tlhopha\",\n    \"paint.textMode.text\": \"Mokwalo\",\n    \"paint.colorPicker.swap\": \"Refosana\"\n  },\n  \"sk\": {\n    \"paint.paintEditor.hue\": \"farba\",\n    \"paint.paintEditor.saturation\": \"sýtosť\",\n    \"paint.paintEditor.brightness\": \"jas\",\n    \"gui.comingSoon.message1\": \"Na tomto ešte pracujeme {emoji}\",\n    \"gui.comingSoon.message2\": \"Už čoskoro...\",\n    \"gui.comingSoon.message3\": \"Na tomto ešte pracujeme {emoji}\",\n    \"paint.paintEditor.costume\": \"kostým\",\n    \"paint.paintEditor.group\": \"Spoj\",\n    \"paint.paintEditor.ungroup\": \"Rozdeľ\",\n    \"paint.paintEditor.undo\": \"Naspäť\",\n    \"paint.paintEditor.redo\": \"Znova\",\n    \"paint.paintEditor.forward\": \"Dopredu\",\n    \"paint.paintEditor.backward\": \"Dozadu\",\n    \"paint.paintEditor.front\": \"Navrch\",\n    \"paint.paintEditor.back\": \"Naspodok\",\n    \"paint.paintEditor.more\": \"Viac\",\n    \"paint.modeTools.brushSize\": \"hrúbka\",\n    \"paint.modeTools.eraserSize\": \"hrúbka gumy\",\n    \"paint.modeTools.copy\": \"Kopíruj\",\n    \"paint.modeTools.paste\": \"Vlož\",\n    \"paint.modeTools.delete\": \"Zmaž\",\n    \"paint.modeTools.curved\": \"Krivky\",\n    \"paint.modeTools.pointed\": \"Hroty\",\n    \"paint.modeTools.thickness\": \"Hrúbka\",\n    \"paint.modeTools.flipHorizontal\": \"prevráť vodorovne\",\n    \"paint.modeTools.flipVertical\": \"prevráť zvislo\",\n    \"paint.modeTools.filled\": \"výplň\",\n    \"paint.modeTools.outlined\": \"obrys\",\n    \"paint.paintEditor.bitmap\": \"zmeň na raster\",\n    \"paint.paintEditor.vector\": \"zmeň na vektory\",\n    \"paint.paintEditor.fill\": \"výplň\",\n    \"paint.paintEditor.stroke\": \"obrys\",\n    \"paint.brushMode.brush\": \"štetec\",\n    \"paint.eraserMode.eraser\": \"guma\",\n    \"paint.fillMode.fill\": \"výplň\",\n    \"paint.lineMode.line\": \"úsečka\",\n    \"paint.ovalMode.oval\": \"elipsa (Shift: Kružnica)\",\n    \"paint.rectMode.rect\": \"obdĺžnik (Shift: štvorec)\",\n    \"paint.reshapeMode.reshape\": \"uprav tvar\",\n    \"paint.roundedRectMode.roundedRect\": \"zaoblený obdĺžnik\",\n    \"paint.selectMode.select\": \"označ\",\n    \"paint.textMode.text\": \"text\",\n    \"paint.colorPicker.swap\": \"zameň farby\"\n  },\n  \"sl\": {\n    \"paint.paintEditor.hue\": \"Barva\",\n    \"paint.paintEditor.saturation\": \"nasičenost\",\n    \"paint.paintEditor.brightness\": \"Svetlost\",\n    \"gui.comingSoon.message1\": \"Ne skrbi, delamo na tem {emoji}\",\n    \"gui.comingSoon.message2\": \"Kmalu ...\",\n    \"gui.comingSoon.message3\": \"Delamo na tem {emoji}\",\n    \"paint.paintEditor.costume\": \"Videz\",\n    \"paint.paintEditor.group\": \"Združi\",\n    \"paint.paintEditor.ungroup\": \"Razdruži\",\n    \"paint.paintEditor.undo\": \"Razveljavi\",\n    \"paint.paintEditor.redo\": \"Uveljavi\",\n    \"paint.paintEditor.forward\": \"naprej\",\n    \"paint.paintEditor.backward\": \"nazaj\",\n    \"paint.paintEditor.front\": \"Spredaj\",\n    \"paint.paintEditor.back\": \"Nazaj\",\n    \"paint.paintEditor.more\": \"Več\",\n    \"paint.modeTools.brushSize\": \"Velikost\",\n    \"paint.modeTools.eraserSize\": \"Širina radirke\",\n    \"paint.modeTools.copy\": \"Kopiraj\",\n    \"paint.modeTools.paste\": \"prilepi\",\n    \"paint.modeTools.delete\": \"Izbriši\",\n    \"paint.modeTools.curved\": \"Zaobljeno\",\n    \"paint.modeTools.pointed\": \"Točkovno\",\n    \"paint.modeTools.thickness\": \"debelina\",\n    \"paint.modeTools.flipHorizontal\": \"Obrni vodoravno\",\n    \"paint.modeTools.flipVertical\": \"Obrni navpično\",\n    \"paint.modeTools.filled\": \"polnitev\",\n    \"paint.modeTools.outlined\": \"očrtano\",\n    \"paint.paintEditor.bitmap\": \"Pretvori v bitno sliko\",\n    \"paint.paintEditor.vector\": \"Pretvori v vektorsko sliko\",\n    \"paint.paintEditor.fill\": \"Zapolni\",\n    \"paint.paintEditor.stroke\": \"Obroba\",\n    \"paint.brushMode.brush\": \"Čopič\",\n    \"paint.eraserMode.eraser\": \"Radirka\",\n    \"paint.fillMode.fill\": \"Zapolni\",\n    \"paint.lineMode.line\": \"Črta\",\n    \"paint.ovalMode.oval\": \"Krog\",\n    \"paint.rectMode.rect\": \"Pravokotnik\",\n    \"paint.reshapeMode.reshape\": \"Preoblikuj\",\n    \"paint.roundedRectMode.roundedRect\": \"Zaokrožen pravokotnik\",\n    \"paint.selectMode.select\": \"Izberi\",\n    \"paint.textMode.text\": \"Besedilo\",\n    \"paint.colorPicker.swap\": \"zamenjaj\"\n  },\n  \"sr\": {\n    \"paint.paintEditor.hue\": \"Боја\",\n    \"paint.paintEditor.saturation\": \"Засићење\",\n    \"paint.paintEditor.brightness\": \"Осветљеност\",\n    \"gui.comingSoon.message1\": \"Не брини, радимо на томе  {emoji}\",\n    \"gui.comingSoon.message2\": \"Очекуј убрзо\",\n    \"gui.comingSoon.message3\": \"Радимо на томе {emoji}\",\n    \"paint.paintEditor.costume\": \"Костим\",\n    \"paint.paintEditor.group\": \"Групиши\",\n    \"paint.paintEditor.ungroup\": \"Разгрупиши\",\n    \"paint.paintEditor.undo\": \"Опозови\",\n    \"paint.paintEditor.redo\": \"Понови\",\n    \"paint.paintEditor.forward\": \"Напред\",\n    \"paint.paintEditor.backward\": \"Назад\",\n    \"paint.paintEditor.front\": \"Напред\",\n    \"paint.paintEditor.back\": \"Назад\",\n    \"paint.paintEditor.more\": \"Више\",\n    \"paint.modeTools.brushSize\": \"Величина\",\n    \"paint.modeTools.eraserSize\": \"Величина брисача\",\n    \"paint.modeTools.copy\": \"Умножи\",\n    \"paint.modeTools.paste\": \"Уметни\",\n    \"paint.modeTools.delete\": \"Обриши\",\n    \"paint.modeTools.curved\": \"Заобљено\",\n    \"paint.modeTools.pointed\": \"Шиљаст\",\n    \"paint.modeTools.thickness\": \"Дебљина\",\n    \"paint.modeTools.flipHorizontal\": \"Обрни хоризонтално\",\n    \"paint.modeTools.flipVertical\": \"Обрни вертикално\",\n    \"paint.modeTools.filled\": \"Попуњено\",\n    \"paint.modeTools.outlined\": \"Контура\",\n    \"paint.paintEditor.bitmap\": \"Преведи у растерски облик\",\n    \"paint.paintEditor.vector\": \"Преведи у векторски облик\",\n    \"paint.paintEditor.fill\": \"Попуни\",\n    \"paint.paintEditor.stroke\": \"Контура\",\n    \"paint.brushMode.brush\": \"Четкица\",\n    \"paint.eraserMode.eraser\": \"Брисач\",\n    \"paint.fillMode.fill\": \"Попуни\",\n    \"paint.lineMode.line\": \"Линија\",\n    \"paint.ovalMode.oval\": \"Круг\",\n    \"paint.rectMode.rect\": \"Правоугаоник\",\n    \"paint.reshapeMode.reshape\": \"Преобликуј\",\n    \"paint.roundedRectMode.roundedRect\": \"Заобљени правоугаоник\",\n    \"paint.selectMode.select\": \"Изабери\",\n    \"paint.textMode.text\": \"Текст\",\n    \"paint.colorPicker.swap\": \"Замени\"\n  },\n  \"fi\": {\n    \"paint.paintEditor.hue\": \"Väri\",\n    \"paint.paintEditor.saturation\": \"Värikylläisyys\",\n    \"paint.paintEditor.brightness\": \"Kirkkaus\",\n    \"gui.comingSoon.message1\": \"Älä huoli, toteutamme sitä {emoji}\",\n    \"gui.comingSoon.message2\": \"Tulossa pian...\",\n    \"gui.comingSoon.message3\": \"Toteutamme sitä {emoji}\",\n    \"paint.paintEditor.costume\": \"Asuste\",\n    \"paint.paintEditor.group\": \"Ryhmitä\",\n    \"paint.paintEditor.ungroup\": \"Pura ryhmitys\",\n    \"paint.paintEditor.undo\": \"Kumoa\",\n    \"paint.paintEditor.redo\": \"Tee uudelleen\",\n    \"paint.paintEditor.forward\": \"Eteenpäin\",\n    \"paint.paintEditor.backward\": \"Taaksepäin\",\n    \"paint.paintEditor.front\": \"Eteen\",\n    \"paint.paintEditor.back\": \"Taakse\",\n    \"paint.paintEditor.more\": \"Enemmän\",\n    \"paint.modeTools.brushSize\": \"Koko\",\n    \"paint.modeTools.eraserSize\": \"Kumin koko\",\n    \"paint.modeTools.copy\": \"Kopioi\",\n    \"paint.modeTools.paste\": \"Liitä\",\n    \"paint.modeTools.delete\": \"Poista\",\n    \"paint.modeTools.curved\": \"Kaartuva\",\n    \"paint.modeTools.pointed\": \"Teräväkärkinen\",\n    \"paint.modeTools.thickness\": \"Paksuus\",\n    \"paint.modeTools.flipHorizontal\": \"Käännä vaakasuoraan\",\n    \"paint.modeTools.flipVertical\": \"Käännä pystysuoraan\",\n    \"paint.modeTools.filled\": \"Täytetty\",\n    \"paint.modeTools.outlined\": \"Ääriviivallinen\",\n    \"paint.paintEditor.bitmap\": \"Muunna bittikartaksi\",\n    \"paint.paintEditor.vector\": \"Muunna vektoriksi\",\n    \"paint.paintEditor.fill\": \"Täytä\",\n    \"paint.paintEditor.stroke\": \"Ääriviiva\",\n    \"paint.brushMode.brush\": \"Sivellin\",\n    \"paint.eraserMode.eraser\": \"Pyyhekumi\",\n    \"paint.fillMode.fill\": \"Täytä\",\n    \"paint.lineMode.line\": \"Viiva\",\n    \"paint.ovalMode.oval\": \"Ympyrä\",\n    \"paint.rectMode.rect\": \"Suorakulmio\",\n    \"paint.reshapeMode.reshape\": \"Muotoile uudelleen\",\n    \"paint.roundedRectMode.roundedRect\": \"Pyöristetty suorakulmio\",\n    \"paint.selectMode.select\": \"Valitse\",\n    \"paint.textMode.text\": \"Teksti\",\n    \"paint.colorPicker.swap\": \"Vaihda\"\n  },\n  \"sv\": {\n    \"paint.paintEditor.hue\": \"Färg\",\n    \"paint.paintEditor.saturation\": \"Mättnad\",\n    \"paint.paintEditor.brightness\": \"Ljusstyrka\",\n    \"gui.comingSoon.message1\": \"Det är lugnt, vi jobbar på det {emoji}\",\n    \"gui.comingSoon.message2\": \"Kommer snart...\",\n    \"gui.comingSoon.message3\": \"Vi jobbar på det {emoji}\",\n    \"paint.paintEditor.costume\": \"Klädsel\",\n    \"paint.paintEditor.group\": \"Gruppera\",\n    \"paint.paintEditor.ungroup\": \"Dela upp grupp\",\n    \"paint.paintEditor.undo\": \"Ångra\",\n    \"paint.paintEditor.redo\": \"Gör om\",\n    \"paint.paintEditor.forward\": \"Framåt\",\n    \"paint.paintEditor.backward\": \"Bakåt\",\n    \"paint.paintEditor.front\": \"Placera längst fram\",\n    \"paint.paintEditor.back\": \"Placera längst bak\",\n    \"paint.paintEditor.more\": \"Mer\",\n    \"paint.modeTools.brushSize\": \"Storlek\",\n    \"paint.modeTools.eraserSize\": \"Suddgummi storlek\",\n    \"paint.modeTools.copy\": \"Kopiera\",\n    \"paint.modeTools.paste\": \"Klistra in\",\n    \"paint.modeTools.delete\": \"Radera\",\n    \"paint.modeTools.curved\": \"Böjd\",\n    \"paint.modeTools.pointed\": \"Spetsig\",\n    \"paint.modeTools.thickness\": \"Tjocklek\",\n    \"paint.modeTools.flipHorizontal\": \"Vänd vågrätt\",\n    \"paint.modeTools.flipVertical\": \"Vänd lodrätt\",\n    \"paint.modeTools.filled\": \"Fylld\",\n    \"paint.modeTools.outlined\": \"Ofylld\",\n    \"paint.paintEditor.bitmap\": \"Gör till bitmapp\",\n    \"paint.paintEditor.vector\": \"Konvertera till vektor\",\n    \"paint.paintEditor.fill\": \"Fyll\",\n    \"paint.paintEditor.stroke\": \"Kontur\",\n    \"paint.brushMode.brush\": \"Pensel\",\n    \"paint.eraserMode.eraser\": \"Radergummi\",\n    \"paint.fillMode.fill\": \"Fyll\",\n    \"paint.lineMode.line\": \"Linje\",\n    \"paint.ovalMode.oval\": \"Cirkel\",\n    \"paint.rectMode.rect\": \"Rektangel\",\n    \"paint.reshapeMode.reshape\": \"Omforma\",\n    \"paint.roundedRectMode.roundedRect\": \"Rektangel rundade hörn\",\n    \"paint.selectMode.select\": \"Välj\",\n    \"paint.textMode.text\": \"Text\",\n    \"paint.colorPicker.swap\": \"Växla färg\"\n  },\n  \"vi\": {\n    \"paint.paintEditor.hue\": \"Màu\",\n    \"paint.paintEditor.saturation\": \"Độ bão hòa\",\n    \"paint.paintEditor.brightness\": \"Độ sáng\",\n    \"gui.comingSoon.message1\": \"Đừng lo, chúng tôi đang phát triển tính năng này {emoji}\",\n    \"gui.comingSoon.message2\": \"Sắp có...\",\n    \"gui.comingSoon.message3\": \"Chúng tôi đang tiếp tục phát triển tính năng này {emoji}\",\n    \"paint.paintEditor.costume\": \"Trang phục\",\n    \"paint.paintEditor.group\": \"Nhóm\",\n    \"paint.paintEditor.ungroup\": \"Hủy nhóm\",\n    \"paint.paintEditor.undo\": \"Hoàn tác\",\n    \"paint.paintEditor.redo\": \"Làm lại \",\n    \"paint.paintEditor.forward\": \"Đưa lên phía trên\",\n    \"paint.paintEditor.backward\": \"Đưa ra phía sau\",\n    \"paint.paintEditor.front\": \"Đưa lên phía trên cùng\",\n    \"paint.paintEditor.back\": \"Đưa ra phía sau cùng\",\n    \"paint.paintEditor.more\": \"Nhiều hơn\",\n    \"paint.modeTools.brushSize\": \"Kích thước \",\n    \"paint.modeTools.eraserSize\": \"Kích thước tẩy\",\n    \"paint.modeTools.copy\": \"Sao chép\",\n    \"paint.modeTools.paste\": \"Dán\",\n    \"paint.modeTools.delete\": \"Xóa\",\n    \"paint.modeTools.curved\": \"Uốn cong\",\n    \"paint.modeTools.pointed\": \"Góc nhọn\",\n    \"paint.modeTools.thickness\": \"Độ dày ngòi bút\",\n    \"paint.modeTools.flipHorizontal\": \"Lật ngang\",\n    \"paint.modeTools.flipVertical\": \"Lật dọc\",\n    \"paint.modeTools.filled\": \"Hình đầy\",\n    \"paint.modeTools.outlined\": \"Hình rỗng\",\n    \"paint.paintEditor.bitmap\": \"Chuyển thành Bitmap\",\n    \"paint.paintEditor.vector\": \"Chuyển thành Vector\",\n    \"paint.paintEditor.fill\": \"Tô\",\n    \"paint.paintEditor.stroke\": \"Viền\",\n    \"paint.brushMode.brush\": \"Cọ vẽ\",\n    \"paint.eraserMode.eraser\": \"Tẩy\",\n    \"paint.fillMode.fill\": \"Tô\",\n    \"paint.lineMode.line\": \"Dòng\",\n    \"paint.ovalMode.oval\": \"Hình tròn\",\n    \"paint.rectMode.rect\": \"Hình chữ nhật\",\n    \"paint.reshapeMode.reshape\": \"Đổi hình dạng\",\n    \"paint.roundedRectMode.roundedRect\": \"Hình vuông góc tròn\",\n    \"paint.selectMode.select\": \"Chọn\",\n    \"paint.textMode.text\": \"Văn bản\",\n    \"paint.colorPicker.swap\": \"Đổi màu\"\n  },\n  \"tr\": {\n    \"paint.paintEditor.hue\": \"Renk\",\n    \"paint.paintEditor.saturation\": \"Doygunluk\",\n    \"paint.paintEditor.brightness\": \"Parlaklık\",\n    \"gui.comingSoon.message1\": \"Endişelenmeyin, üzerinde çalışıyoruz {emoji}\",\n    \"gui.comingSoon.message2\": \"Çok Yakında...\",\n    \"gui.comingSoon.message3\": \"Üzerinde çalışıyoruz {emoji}\",\n    \"paint.paintEditor.costume\": \"Kostüm\",\n    \"paint.paintEditor.group\": \"Grup\",\n    \"paint.paintEditor.ungroup\": \"Grubu Dağıt\",\n    \"paint.paintEditor.undo\": \"Geri Al\",\n    \"paint.paintEditor.redo\": \"İleri Al\",\n    \"paint.paintEditor.forward\": \"Öne\",\n    \"paint.paintEditor.backward\": \"Geriye\",\n    \"paint.paintEditor.front\": \"En Öne\",\n    \"paint.paintEditor.back\": \"En Geriye\",\n    \"paint.paintEditor.more\": \"Daha Fazla\",\n    \"paint.modeTools.brushSize\": \"Büyüklük\",\n    \"paint.modeTools.eraserSize\": \"Silgi boyutu\",\n    \"paint.modeTools.copy\": \"Kopyala\",\n    \"paint.modeTools.paste\": \"Yapıştır\",\n    \"paint.modeTools.delete\": \"Sil\",\n    \"paint.modeTools.curved\": \"Kavisli\",\n    \"paint.modeTools.pointed\": \"işaretlendi\",\n    \"paint.modeTools.thickness\": \"Kalınlık\",\n    \"paint.modeTools.flipHorizontal\": \"Yatay Çevir\",\n    \"paint.modeTools.flipVertical\": \"Dikey Çevir\",\n    \"paint.modeTools.filled\": \"Dolmuş\",\n    \"paint.modeTools.outlined\": \"Ana Hatlarıyla Çizilen \",\n    \"paint.paintEditor.bitmap\": \"Bitmap'e Dönüştür\",\n    \"paint.paintEditor.vector\": \"Vektöre Dönüştür\",\n    \"paint.paintEditor.fill\": \"Doldur\",\n    \"paint.paintEditor.stroke\": \"Kontur\",\n    \"paint.brushMode.brush\": \"Fırça\",\n    \"paint.eraserMode.eraser\": \"silgi\",\n    \"paint.fillMode.fill\": \"Doldur\",\n    \"paint.lineMode.line\": \"Çizgi\",\n    \"paint.ovalMode.oval\": \"Çember\",\n    \"paint.rectMode.rect\": \"Dikdörtgen\",\n    \"paint.reshapeMode.reshape\": \"Şekli değiştir\",\n    \"paint.roundedRectMode.roundedRect\": \"Yuvarlatılmış dikdörtgen\",\n    \"paint.selectMode.select\": \"Seç\",\n    \"paint.textMode.text\": \"Metin\",\n    \"paint.colorPicker.swap\": \"Değiştir\"\n  },\n  \"uk\": {\n    \"paint.paintEditor.hue\": \"Колір\",\n    \"paint.paintEditor.saturation\": \"Насиченість\",\n    \"paint.paintEditor.brightness\": \"Яскравість\",\n    \"gui.comingSoon.message1\": \"Не хвилюйтеся, ми тут {emoji}\",\n    \"gui.comingSoon.message2\": \"Незабаром...\",\n    \"gui.comingSoon.message3\": \"Ми над цим працюємо {emoji}\",\n    \"paint.paintEditor.costume\": \"Образ\",\n    \"paint.paintEditor.group\": \"Групувати\",\n    \"paint.paintEditor.ungroup\": \"Розгрупувати\",\n    \"paint.paintEditor.undo\": \"Скасувати\",\n    \"paint.paintEditor.redo\": \"Повернути\",\n    \"paint.paintEditor.forward\": \"Вперед\",\n    \"paint.paintEditor.backward\": \"Назад\",\n    \"paint.paintEditor.front\": \"Попереду\",\n    \"paint.paintEditor.back\": \"Позаду\",\n    \"paint.paintEditor.more\": \"Більше\",\n    \"paint.modeTools.brushSize\": \"Розмір\",\n    \"paint.modeTools.eraserSize\": \"Розмір зтирачки\",\n    \"paint.modeTools.copy\": \"Копія\",\n    \"paint.modeTools.paste\": \"Вставити\",\n    \"paint.modeTools.delete\": \"Вилучити\",\n    \"paint.modeTools.curved\": \"Крива\",\n    \"paint.modeTools.pointed\": \"Кути\",\n    \"paint.modeTools.thickness\": \"Товщина\",\n    \"paint.modeTools.flipHorizontal\": \"Право-ліво\",\n    \"paint.modeTools.flipVertical\": \"Верх-низ\",\n    \"paint.modeTools.filled\": \"Заповнення\",\n    \"paint.modeTools.outlined\": \"Межа\",\n    \"paint.paintEditor.bitmap\": \"У растрове\",\n    \"paint.paintEditor.vector\": \"У векторне\",\n    \"paint.paintEditor.fill\": \"Заповнення\",\n    \"paint.paintEditor.stroke\": \"Межа\",\n    \"paint.brushMode.brush\": \"Пензель\",\n    \"paint.eraserMode.eraser\": \"Гумка\",\n    \"paint.fillMode.fill\": \"Заповнення\",\n    \"paint.lineMode.line\": \"Лінія\",\n    \"paint.ovalMode.oval\": \"Коло\",\n    \"paint.rectMode.rect\": \"Прямокутник\",\n    \"paint.reshapeMode.reshape\": \"Реформувати\",\n    \"paint.roundedRectMode.roundedRect\": \"Закруглений прямокутник\",\n    \"paint.selectMode.select\": \"Обрати\",\n    \"paint.textMode.text\": \"Текст\",\n    \"paint.colorPicker.swap\": \"Поміняти\"\n  },\n  \"zh-cn\": {\n    \"paint.paintEditor.hue\": \"颜色\",\n    \"paint.paintEditor.saturation\": \"饱和度\",\n    \"paint.paintEditor.brightness\": \"亮度\",\n    \"gui.comingSoon.message1\": \"别急,我们还在开发 {emoji}\",\n    \"gui.comingSoon.message2\": \"很快就能用了……\",\n    \"gui.comingSoon.message3\": \"我们还在开发这个功能 {emoji}\",\n    \"paint.paintEditor.costume\": \"造型\",\n    \"paint.paintEditor.group\": \"组合\",\n    \"paint.paintEditor.ungroup\": \"拆散\",\n    \"paint.paintEditor.undo\": \"撤销\",\n    \"paint.paintEditor.redo\": \"重做\",\n    \"paint.paintEditor.forward\": \"往前放\",\n    \"paint.paintEditor.backward\": \"往后放\",\n    \"paint.paintEditor.front\": \"放最前面\",\n    \"paint.paintEditor.back\": \"放最后面\",\n    \"paint.paintEditor.more\": \"更多\",\n    \"paint.modeTools.brushSize\": \"粗细\",\n    \"paint.modeTools.eraserSize\": \"橡皮擦大小\",\n    \"paint.modeTools.copy\": \"复制\",\n    \"paint.modeTools.paste\": \"粘贴\",\n    \"paint.modeTools.delete\": \"删除\",\n    \"paint.modeTools.curved\": \"曲线\",\n    \"paint.modeTools.pointed\": \"折线\",\n    \"paint.modeTools.thickness\": \"粗细\",\n    \"paint.modeTools.flipHorizontal\": \"水平翻转\",\n    \"paint.modeTools.flipVertical\": \"垂直翻转\",\n    \"paint.modeTools.filled\": \"实心\",\n    \"paint.modeTools.outlined\": \"轮廓\",\n    \"paint.paintEditor.bitmap\": \"转换为位图\",\n    \"paint.paintEditor.vector\": \"转换为矢量图\",\n    \"paint.paintEditor.fill\": \"填充\",\n    \"paint.paintEditor.stroke\": \"轮廓\",\n    \"paint.brushMode.brush\": \"画笔\",\n    \"paint.eraserMode.eraser\": \"橡皮擦\",\n    \"paint.fillMode.fill\": \"填充\",\n    \"paint.lineMode.line\": \"线段\",\n    \"paint.ovalMode.oval\": \"圆\",\n    \"paint.rectMode.rect\": \"矩形\",\n    \"paint.reshapeMode.reshape\": \"变形\",\n    \"paint.roundedRectMode.roundedRect\": \"圆角矩形\",\n    \"paint.selectMode.select\": \"选择\",\n    \"paint.textMode.text\": \"文本\",\n    \"paint.colorPicker.swap\": \"交换\"\n  },\n  \"zh-tw\": {\n    \"paint.paintEditor.hue\": \"顏色\",\n    \"paint.paintEditor.saturation\": \"彩度\",\n    \"paint.paintEditor.brightness\": \"亮度\",\n    \"gui.comingSoon.message1\": \"別擔心,我們在做囉 {emoji}\",\n    \"gui.comingSoon.message2\": \"即將推出...\",\n    \"gui.comingSoon.message3\": \"努力趕工中 {emoji}\",\n    \"paint.paintEditor.costume\": \"造型\",\n    \"paint.paintEditor.group\": \"建立群組\",\n    \"paint.paintEditor.ungroup\": \"解散群組\",\n    \"paint.paintEditor.undo\": \"復原\",\n    \"paint.paintEditor.redo\": \"重做\",\n    \"paint.paintEditor.forward\": \"上移一層\",\n    \"paint.paintEditor.backward\": \"下移一層\",\n    \"paint.paintEditor.front\": \"移到最上層\",\n    \"paint.paintEditor.back\": \"移到最下層\",\n    \"paint.paintEditor.more\": \"更多\",\n    \"paint.modeTools.brushSize\": \"尺寸\",\n    \"paint.modeTools.eraserSize\": \"擦子寬度\",\n    \"paint.modeTools.copy\": \"複製\",\n    \"paint.modeTools.paste\": \"貼上\",\n    \"paint.modeTools.delete\": \"刪除\",\n    \"paint.modeTools.curved\": \"圓弧\",\n    \"paint.modeTools.pointed\": \"尖角\",\n    \"paint.modeTools.thickness\": \"線條寬度\",\n    \"paint.modeTools.flipHorizontal\": \"橫向翻轉\",\n    \"paint.modeTools.flipVertical\": \"直向翻轉\",\n    \"paint.modeTools.filled\": \"填滿\",\n    \"paint.modeTools.outlined\": \"外框\",\n    \"paint.paintEditor.bitmap\": \"轉換成點陣圖\",\n    \"paint.paintEditor.vector\": \"轉換成向量圖\",\n    \"paint.paintEditor.fill\": \"填滿\",\n    \"paint.paintEditor.stroke\": \"外框\",\n    \"paint.brushMode.brush\": \"筆刷\",\n    \"paint.eraserMode.eraser\": \"擦子\",\n    \"paint.fillMode.fill\": \"填滿\",\n    \"paint.lineMode.line\": \"線條\",\n    \"paint.ovalMode.oval\": \"圓形\",\n    \"paint.rectMode.rect\": \"方形\",\n    \"paint.reshapeMode.reshape\": \"重新塑形\",\n    \"paint.roundedRectMode.roundedRect\": \"圓角方形\",\n    \"paint.selectMode.select\": \"選取\",\n    \"paint.textMode.text\": \"文字\",\n    \"paint.colorPicker.swap\": \"交換\"\n  }\n};\n","import {addLocaleData} from 'react-intl';\nimport {updateIntl as superUpdateIntl} from 'react-intl-redux';\nimport {IntlProvider, intlReducer} from 'react-intl-redux';\n\nimport localeData from 'scratch-l10n';\nimport paintMessages from 'scratch-l10n/locales/paint-editor-msgs';\n\nObject.keys(localeData).forEach(locale => {\n    // TODO: will need to handle locales not in the default intl - see www/custom-locales\n    addLocaleData(localeData[locale].localeData);\n});\n\nconst intlInitialState = {\n    intl: {\n        defaultLocale: 'en',\n        locale: 'en',\n        messages: paintMessages.en.messages\n    }\n};\n\nconst updateIntl = locale => superUpdateIntl({\n    locale: locale,\n    messages: paintMessages[locale].messages || paintMessages.en.messages\n});\n\nexport {\n    intlReducer as default,\n    IntlProvider,\n    intlInitialState,\n    updateIntl\n};\n","import {combineReducers} from 'redux';\nimport intlReducer from './intl';\nimport {ScratchPaintReducer} from '../..';\n\nexport default combineReducers({\n    intl: intlReducer,\n    scratchPaint: ScratchPaintReducer\n});\n","import bindAll from 'lodash.bindall';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PaintEditor from '..';\nimport {Provider} from 'react-redux';\nimport {createStore} from 'redux';\nimport reducer from './reducers/combine-reducers';\nimport {intlInitialState, IntlProvider} from './reducers/intl.js';\nimport styles from './playground.css';\n// scratch-render-fonts is a playground-only dep. Fonts are expected to be imported\n// as a peer dependency, otherwise there will be two copies of them.\nimport {FONTS} from 'scratch-render-fonts';\n\nconst appTarget = document.createElement('div');\nappTarget.setAttribute('class', styles.playgroundContainer);\ndocument.body.appendChild(appTarget);\nconst store = createStore(\n    reducer,\n    intlInitialState,\n    window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()\n);\nconst svgString =\n    '<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"' +\n            ' x=\"0px\" y=\"0px\" width=\"32px\" height=\"32px\" viewBox=\"0.5 384.5 32 32\"' +\n            ' enable-background=\"new 0.5 384.5 32 32\" xml:space=\"preserve\">' +\n        '<path fill=\"none\" stroke=\"#000000\" stroke-width=\"3\" stroke-miterlimit=\"10\" d=\"M7.5,392.241h7.269' +\n            'c4.571,0,8.231,5.555,8.231,10.123v7.377\"/>' +\n        '<polyline points=\"10.689,399.492 3.193,391.997 10.689,384.5 \"/>' +\n        '<polyline points=\"30.185,405.995 22.689,413.491 15.192,405.995 \"/>' +\n    '</svg>';\nclass Playground extends React.Component {\n    constructor (props) {\n        super(props);\n        bindAll(this, [\n            'downloadImage',\n            'handleUpdateName',\n            'handleUpdateImage',\n            'onUploadImage'\n        ]);\n        // Append ?dir=rtl to URL to get RTL layout\n        const match = location.search.match(/dir=([^&]+)/);\n        const rtl = match && match[1] == 'rtl';\n        this.id = 0;\n        this.state = {\n            name: 'meow',\n            rotationCenterX: 20,\n            rotationCenterY: 400,\n            imageFormat: 'svg', // 'svg', 'png', or 'jpg'\n            image: svgString, // svg string or data URI\n            imageId: this.id, // If this changes, the paint editor will reload\n            rtl: rtl,\n        };\n        this.reusableCanvas = document.createElement('canvas');\n    }\n    handleUpdateName (name) {\n        this.setState({name});\n    }\n    handleUpdateImage (isVector, image, rotationCenterX, rotationCenterY) {\n        this.setState({\n            imageFormat: isVector ? 'svg' : 'png'\n        });\n        if (!isVector) {\n            console.log(`Image width: ${image.width}    Image height: ${image.height}`);\n        }\n        console.log(`rotationCenterX: ${rotationCenterX}    rotationCenterY: ${rotationCenterY}`);\n        if (isVector) {\n            this.setState({image, rotationCenterX, rotationCenterY});\n        } else { // is Bitmap\n            // image parameter has type ImageData\n            // paint editor takes dataURI as input\n            this.reusableCanvas.width = image.width;\n            this.reusableCanvas.height = image.height;\n            const context = this.reusableCanvas.getContext('2d');\n            context.putImageData(image, 0, 0);\n            this.setState({\n                image: this.reusableCanvas.toDataURL('image/png'),\n                rotationCenterX: rotationCenterX,\n                rotationCenterY: rotationCenterY\n            });\n        }\n    }\n    downloadImage () {\n        const downloadLink = document.createElement('a');\n        document.body.appendChild(downloadLink);\n\n        const format = this.state.imageFormat;\n        let data = this.state.image;\n        if (format === 'png' || format === 'jpg') {\n            data = this.b64toByteArray(data);\n        } else {\n            data = [data];\n        }\n        const blob = new Blob(data, {type: format});\n        const filename = `${this.state.name}.${format}`;\n        if ('download' in HTMLAnchorElement.prototype) {\n            const url = window.URL.createObjectURL(blob);\n            downloadLink.href = url;\n            downloadLink.download = filename;\n            downloadLink.type = blob.type;\n            downloadLink.click();\n            window.URL.revokeObjectURL(url);\n        } else {\n            // iOS Safari, open a new page and set href to data-uri\n            let popup = window.open('', '_blank');\n            const reader = new FileReader();\n            reader.onloadend = function () {\n                popup.location.href = reader.result;\n                popup = null;\n            };\n            reader.readAsDataURL(blob);\n        }\n        document.body.removeChild(downloadLink);\n    }\n    b64toByteArray (b64Data, sliceSize=512) {\n        // Remove header\n        b64Data = b64Data.substring(b64Data.indexOf('base64,') + 7);\n\n        const byteCharacters = atob(b64Data);\n        const byteArrays = [];\n\n        for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n            const slice = byteCharacters.slice(offset, offset + sliceSize);\n\n            const byteNumbers = new Array(slice.length);\n            for (let i = 0; i < slice.length; i++) {\n                byteNumbers[i] = slice.charCodeAt(i);\n            }\n\n        const byteArray = new Uint8Array(byteNumbers);\n        byteArrays.push(byteArray);\n      }\n\n      return byteArrays;\n    }\n    uploadImage() {\n        document.getElementById(styles.fileInput).click();\n    }\n    onUploadImage(event) {\n        var file = event.target.files[0];\n        var type = file.type === 'image/svg+xml' ? 'svg' :\n            file.type === 'image/png' ? 'png' :\n            file.type === 'image/jpg' ? 'jpg' :\n            file.type === 'image/jpeg' ? 'jpg' :\n            null;\n\n        var reader = new FileReader();\n        if (type === 'svg') {\n            reader.readAsText(file,'UTF-8');\n        } else if (type === 'png' || type === 'jpg'){\n            reader.readAsDataURL(file);\n        } else {\n            alert(\"Couldn't read file type: \" + file.type);\n        }\n\n        const that = this;\n        reader.onload = readerEvent => {\n            var content = readerEvent.target.result; // this is the content!\n\n            that.setState({\n                image: content,\n                name: file.name.split('.').slice(0, -1).join('.'),\n                imageId: ++that.id,\n                imageFormat: type,\n                rotationCenterX: undefined,\n                rotationCenterY: undefined,\n            });\n       }\n    }\n    render () {\n        return (\n            <div className={styles.wrapper}>\n                <PaintEditor\n                    {...this.state}\n                    onUpdateName={this.handleUpdateName}\n                    onUpdateImage={this.handleUpdateImage}\n                />\n                <button className={styles.playgroundButton}  onClick={this.uploadImage}>Upload</button>\n                <input id={styles.fileInput} type=\"file\" name=\"name\" onChange={this.onUploadImage} />\n                <button className={styles.playgroundButton} onClick={this.downloadImage}>Download</button>\n            </div>\n        );\n    }\n\n}\nReactDOM.render((\n    <Provider store={store}>\n        <IntlProvider>\n            <Playground />\n        </IntlProvider>\n    </Provider>\n), appTarget);\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAOA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA,SAEA;AACA;AACA;AACA;;;;;;;;ACvpiBA;AACA;AACA;AACA;AACA,SAEA;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACr+CA;AACA;AACA;AACA;AACA;;;ACJA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAiCA;AACA;AACA;AACA;AACA;;AC/SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAEA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA,UAEA;AACA;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACRA;AACA;AACA;AACA;AACA;AACA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACdA;AACA;AACA;AACA;AACA;AACA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAEA;AACA;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/8CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnDA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACltBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtGA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AAGA;AACA;AAGA;AACA;AAGA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5IA;;;;;;ACAA;;;;;;ACAA;AACA;AACA;AACA;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChDA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAEA;;;;;;;;ACrCA;AACA;AACA;AACA;AACA,SAEA;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzCA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAEA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;;;;;;;;ACHA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;;;;;;ACAA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClBA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnSA;AACA;AACA;AACA;AACA,SAEA;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzgMA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChNA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACx3CA;AACA;AACA;AACA;AACA;;;;;;ACJA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACZA;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAEA;AACA;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxCA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AAEA;;;;;;;;;;;;;;;;ACHA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;;;;;;;;;AChBA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;;ACxCA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAIA;AACA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;;;AChEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxJA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AAEA;;;;;;ACpBA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AAEA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;ACpKA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAMA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;AC3aA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAMA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAKA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACr7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACzMA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;;;AC7FA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzFA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtDA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;ACxCA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;;ACvDA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AChCA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/BA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AASA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;AC1ZA;AACA;AAEA;AAEA;AAAA;AAEA;AAAA;AAIA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAKA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAIA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;ACXA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAMA;AAAA;AAAA;AACA;AACA;AAQA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AAAA;AA7IA;AACA;AAAA;AAAA;AA+IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;;ACtLA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAIA;AAEA;AAEA;AAEA;AAGA;AAGA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAEA;;AC9FA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAKA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAGA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC5nBA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAMA;AAJA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAQA;AAAA;AAMA;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;;;;;;;;;;ACtDA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAEA;AAKA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AC3CA;AAEA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAEA;;;;;;ACvDA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;ACvHA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;ACjHA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;AC1HA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;ACjHA;AAEA;AAEA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;ACXA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AAEA;AACA;AAIA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AChDA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAMA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;ACpOA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAMA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAAA;AAAA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;ACjOA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAAA;AAAA;AAUA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;ACtVA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAzLA;AACA;AAAA;AAAA;AA2LA;;;;;;AC3MA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AArLA;AACA;AAAA;AAAA;AAuLA;;;;;;ACvMA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;ACxIA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;ACrBA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAGA;;;;;;;;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;AC5IA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAIA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAGA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;ACpFA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AA/HA;AACA;AACA;AAAA;AAAA;AAgIA;;;;;;ACrJA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAMA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;AC1GA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAWA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AAIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAGA;;;;;;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAZA;AAcA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAoBA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAIA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AA3aA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAmaA;;;;;;AC9bA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;ACzHA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;ACxFA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9BA;AACA;AAEA;AACA;AAEA;AAKA;AACA;AACA;AACA;AACA;AAGA;AACA;AAGA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzDA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AAAA;AAGA;AAGA;AACA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAIA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AAQA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAGA;AAEA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/CA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAEA;AAIA;AACA;AACA;AAAA;AAGA;AAKA;AACA;AACA;AAAA;AAGA;AAIA;AACA;AACA;AAAA;AAGA;AAIA;AACA;AACA;AAAA;AAIA;AAAA;AAEA;AAAA;AAEA;AAGA;AAGA;AAMA;AACA;AAEA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AAAA;AAGA;AAMA;AACA;AAEA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AAIA;AACA;AACA;AAAA;AASA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAEA;AAAA;AAGA;AAAA;AAIA;AAAA;AAEA;AACA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAEA;AAAA;AAGA;AAAA;AAIA;AAAA;AAEA;AACA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AACA;AAAA;AAEA;AAEA;AAAA;AAGA;AAAA;AAIA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAMA;AAOA;AAAA;AAGA;AACA;AACA;AAAA;AAKA;AAAA;AAEA;AAKA;AAAA;AAGA;AACA;AACA;AAAA;AAOA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACvUA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAKA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;AChMA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AAGA;AAAA;AAGA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AAIA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;;AC5BA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AACA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAOA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAMA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAIA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;;AC3KA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAKA;AAEA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;;;;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAAA;AAAA;AAQA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AA7OA;AACA;AAAA;AAAA;AA+OA;;;;;;ACxPA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrDA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtCA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AASA;AAAA;AAAA;AACA;AACA;AAQA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AA/PA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AA8PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;AC5TA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAIA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;AC5GA;AACA;AACA;AAEA;AAEA;AAEA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;ACvHA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAKA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAGA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAKA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAIA;AAIA;AAAA;AAIA;AAGA;AACA;AAAA;AAKA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AACA;AAGA;AAOA;AAGA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;;AC1CA;AACA;AACA;;ACFA;AA6BA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AASA;AAQA;AACA;AAAA;AAGA;AACA;AAIA;AACA;AAAA;AAIA;AAQA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAQA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAOA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAMA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAgBA;AAAA;AAGA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAGA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAKA;AAGA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAmBA;AAAA;AASA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;ACjUA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClCA;AACA;AACA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAQA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AC9HA;AACA;AACA;AACA;AACA;AACA;AAEA;AAMA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AASA;AAEA;AACA;AAAA;AAIA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAIA;AAEA;;ACnJA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3CA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzBA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;ACZA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAKA;AACA;AACA;AAAA;AAEA;AAAA;AAMA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAGA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAgBA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAKA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAGA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAKA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAOA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;;;;AC9WA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAWA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;AChQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAtIA;AACA;AAAA;AAAA;AAwIA;;;;;;ACtJA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAMA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAjIA;AACA;AAAA;AAAA;AAmIA;;;;;;ACjJA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AAMA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;ACpLA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAMA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;AC7KA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAMA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;;;;ACxFA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AA+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAAA;AAAA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAMA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAvUA;AACA;AACA;AACA;AACA;AACA;AAFA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAFA;AAAA;AAAA;AAIA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAwTA;;;;;;AC5WA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAQA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;AC/GA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAAA;AAAA;AAAA;AAQA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAlKA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AA+JA;;;;;;ACvLA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AASA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;ACzHA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAKA;AAEA;AAEA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;ACrEA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAFA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AApZA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAqYA;;;;;;ACraA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;ACrBA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AAEA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAGA;AACA;AAAA;AAGA;AACA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;ACrNA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAKA;AAEA;AAAA;AAEA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAEA;AAIA;AAIA;AACA;AAAA;AAIA;AAAA;AAIA;AAAA;AAGA;AAAA;AAEA;AAAA;AAKA;AAAA;AAEA;AAIA;AAIA;AACA;AAAA;AAGA;AAAA;AAEA;AAAA;AAQA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAGA;AAAA;AAGA;AAAA;AAGA;AAAA;AAGA;AAAA;AAGA;AACA;AAAA;AAGA;AAAA;AAGA;AAAA;AAGA;AAAA;AAKA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAGA;AAAA;AAGA;AAAA;AAGA;AAAA;AAGA;AACA;AACA;AAAA;AAGA;AAAA;AAGA;AAAA;AAGA;AAAA;AAKA;AAAA;AAGA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAKA;AAAA;AAEA;AACA;AAAA;AAMA;AAAA;AAGA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAEA;AAAA;AAMA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AAEA;AAAA;AAMA;AAAA;AAGA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAIA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAIA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAQA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;;;;;;;AClVA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AASA;AAEA;AAAA;AAIA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAIA;AAEA;;;;;;;;;;;;;;;;;;AC3JA;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAGA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AAAA;AACA;AACA;AAAA;AACA;AAGA;AAEA;;;;;;;;;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AAEA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAMA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAMA;AAEA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAIA;AAEA;;;;;;;;;;;;;;;;;;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAKA;AACA;AAEA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAAA;AAAA;AAAA;AAQA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAMA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAKA;AAEA;AAAA;AAIA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAIA;AAEA;;;;;;;;;;;;;;;ACtNA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAxCA;AA6CA;AAAA;AAAA;AACA;AACA;AAaA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAUA;AACA;AACA;AAEA;AACA;AAKA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAxQA;AACA;AAAA;AAAA;AA0QA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAIA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;;;;;AClaA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AAEA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;AC5JA;AACA;AACA;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClhHA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;;;ACvBA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAKA;AAQA;AAEA;AAAA;AAAA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAGA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AAGA;AACA;AAAA;;;A","sourceRoot":""}
\ No newline at end of file