@formulaxjs/ckeditor5 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +24 -21
  2. package/README.zh-CN.md +24 -21
  3. package/dist/base.css +47 -0
  4. package/dist/canvg-runtime-UR3JNX5Q.js +2759 -0
  5. package/dist/canvg-runtime-UR3JNX5Q.js.map +1 -0
  6. package/dist/chunk-4NHESKRD.js +3407 -0
  7. package/dist/chunk-4NHESKRD.js.map +1 -0
  8. package/dist/images/scrollbar/custom/bar-bg.png +0 -0
  9. package/dist/images/scrollbar/custom/bar.png +0 -0
  10. package/dist/images/scrollbar/custom/bg.png +0 -0
  11. package/dist/images/scrollbar/custom/bottom.png +0 -0
  12. package/dist/images/scrollbar/custom/btn.png +0 -0
  13. package/dist/images/scrollbar/custom/down.png +0 -0
  14. package/dist/images/scrollbar/custom/top.png +0 -0
  15. package/dist/images/scrollbar/custom/up.png +0 -0
  16. package/dist/images/scrollbar/edit/bar-bg.png +0 -0
  17. package/dist/images/scrollbar/edit/bar-left.png +0 -0
  18. package/dist/images/scrollbar/edit/bar-right.png +0 -0
  19. package/dist/images/scrollbar/edit/thumb-bg.png +0 -0
  20. package/dist/images/scrollbar/edit/thumb-left.png +0 -0
  21. package/dist/images/scrollbar/edit/thumb-right.png +0 -0
  22. package/dist/images/toolbar/btn.png +0 -0
  23. package/dist/index.cjs +24080 -70
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.global.js +162 -156
  26. package/dist/index.global.js.map +1 -1
  27. package/dist/index.js +3768 -21
  28. package/dist/index.js.map +1 -1
  29. package/dist/install-XGCSWTLU.js +5464 -0
  30. package/dist/install-XGCSWTLU.js.map +1 -0
  31. package/dist/install-XVTKACEN.js +1349 -0
  32. package/dist/install-XVTKACEN.js.map +1 -0
  33. package/dist/other.png +0 -0
  34. package/dist/scrollbar.css +78 -0
  35. package/dist/start-CRRRBVTN.js +4926 -0
  36. package/dist/start-CRRRBVTN.js.map +1 -0
  37. package/dist/ui.css +625 -0
  38. package/package.json +11 -6
  39. /package/dist/{KF_AMS_BB-5QF7FUSO.woff → KF_AMS_BB.woff} +0 -0
  40. /package/dist/{KF_AMS_CAL-NXRNLAZN.woff → KF_AMS_CAL.woff} +0 -0
  41. /package/dist/{KF_AMS_FRAK-CO33WWN4.woff → KF_AMS_FRAK.woff} +0 -0
  42. /package/dist/{KF_AMS_MAIN-25QJVAWY.woff → KF_AMS_MAIN.woff} +0 -0
  43. /package/dist/{KF_AMS_ROMAN-243BR7HH.woff → KF_AMS_ROMAN.woff} +0 -0
  44. /package/dist/{btn-5DANP6JY.png → btn.png} +0 -0
  45. /package/dist/{editor-JT5KLVXX.css → editor.css} +0 -0
  46. /package/dist/{other-OMWJFGL5.png → images/toolbar/other.png} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../kity-runtime/src/vendor/kity-formula/canvg-runtime.ts"],"sourcesContent":["// @ts-nocheck\r\n\r\nexport function createCanvgRuntime() {\r\nconst target = globalThis as typeof globalThis & Window;\r\nfunction RGBColor(color_string) {\r\n this.ok = false;\r\n if (color_string.charAt(0) == \"#\") {\r\n color_string = color_string.substr(1, 6);\r\n }\r\n color_string = color_string.replace(/ /g, \"\");\r\n color_string = color_string.toLowerCase();\r\n let simple_colors = {\r\n aliceblue: \"f0f8ff\",\r\n antiquewhite: \"faebd7\",\r\n aqua: \"00ffff\",\r\n aquamarine: \"7fffd4\",\r\n azure: \"f0ffff\",\r\n beige: \"f5f5dc\",\r\n bisque: \"ffe4c4\",\r\n black: \"000000\",\r\n blanchedalmond: \"ffebcd\",\r\n blue: \"0000ff\",\r\n blueviolet: \"8a2be2\",\r\n brown: \"a52a2a\",\r\n burlywood: \"deb887\",\r\n cadetblue: \"5f9ea0\",\r\n chartreuse: \"7fff00\",\r\n chocolate: \"d2691e\",\r\n coral: \"ff7f50\",\r\n cornflowerblue: \"6495ed\",\r\n cornsilk: \"fff8dc\",\r\n crimson: \"dc143c\",\r\n cyan: \"00ffff\",\r\n darkblue: \"00008b\",\r\n darkcyan: \"008b8b\",\r\n darkgoldenrod: \"b8860b\",\r\n darkgray: \"a9a9a9\",\r\n darkgreen: \"006400\",\r\n darkkhaki: \"bdb76b\",\r\n darkmagenta: \"8b008b\",\r\n darkolivegreen: \"556b2f\",\r\n darkorange: \"ff8c00\",\r\n darkorchid: \"9932cc\",\r\n darkred: \"8b0000\",\r\n darksalmon: \"e9967a\",\r\n darkseagreen: \"8fbc8f\",\r\n darkslateblue: \"483d8b\",\r\n darkslategray: \"2f4f4f\",\r\n darkturquoise: \"00ced1\",\r\n darkviolet: \"9400d3\",\r\n deeppink: \"ff1493\",\r\n deepskyblue: \"00bfff\",\r\n dimgray: \"696969\",\r\n dodgerblue: \"1e90ff\",\r\n feldspar: \"d19275\",\r\n firebrick: \"b22222\",\r\n floralwhite: \"fffaf0\",\r\n forestgreen: \"228b22\",\r\n fuchsia: \"ff00ff\",\r\n gainsboro: \"dcdcdc\",\r\n ghostwhite: \"f8f8ff\",\r\n gold: \"ffd700\",\r\n goldenrod: \"daa520\",\r\n gray: \"808080\",\r\n green: \"008000\",\r\n greenyellow: \"adff2f\",\r\n honeydew: \"f0fff0\",\r\n hotpink: \"ff69b4\",\r\n indianred: \"cd5c5c\",\r\n indigo: \"4b0082\",\r\n ivory: \"fffff0\",\r\n khaki: \"f0e68c\",\r\n lavender: \"e6e6fa\",\r\n lavenderblush: \"fff0f5\",\r\n lawngreen: \"7cfc00\",\r\n lemonchiffon: \"fffacd\",\r\n lightblue: \"add8e6\",\r\n lightcoral: \"f08080\",\r\n lightcyan: \"e0ffff\",\r\n lightgoldenrodyellow: \"fafad2\",\r\n lightgrey: \"d3d3d3\",\r\n lightgreen: \"90ee90\",\r\n lightpink: \"ffb6c1\",\r\n lightsalmon: \"ffa07a\",\r\n lightseagreen: \"20b2aa\",\r\n lightskyblue: \"87cefa\",\r\n lightslateblue: \"8470ff\",\r\n lightslategray: \"778899\",\r\n lightsteelblue: \"b0c4de\",\r\n lightyellow: \"ffffe0\",\r\n lime: \"00ff00\",\r\n limegreen: \"32cd32\",\r\n linen: \"faf0e6\",\r\n magenta: \"ff00ff\",\r\n maroon: \"800000\",\r\n mediumaquamarine: \"66cdaa\",\r\n mediumblue: \"0000cd\",\r\n mediumorchid: \"ba55d3\",\r\n mediumpurple: \"9370d8\",\r\n mediumseagreen: \"3cb371\",\r\n mediumslateblue: \"7b68ee\",\r\n mediumspringgreen: \"00fa9a\",\r\n mediumturquoise: \"48d1cc\",\r\n mediumvioletred: \"c71585\",\r\n midnightblue: \"191970\",\r\n mintcream: \"f5fffa\",\r\n mistyrose: \"ffe4e1\",\r\n moccasin: \"ffe4b5\",\r\n navajowhite: \"ffdead\",\r\n navy: \"000080\",\r\n oldlace: \"fdf5e6\",\r\n olive: \"808000\",\r\n olivedrab: \"6b8e23\",\r\n orange: \"ffa500\",\r\n orangered: \"ff4500\",\r\n orchid: \"da70d6\",\r\n palegoldenrod: \"eee8aa\",\r\n palegreen: \"98fb98\",\r\n paleturquoise: \"afeeee\",\r\n palevioletred: \"d87093\",\r\n papayawhip: \"ffefd5\",\r\n peachpuff: \"ffdab9\",\r\n peru: \"cd853f\",\r\n pink: \"ffc0cb\",\r\n plum: \"dda0dd\",\r\n powderblue: \"b0e0e6\",\r\n purple: \"800080\",\r\n red: \"ff0000\",\r\n rosybrown: \"bc8f8f\",\r\n royalblue: \"4169e1\",\r\n saddlebrown: \"8b4513\",\r\n salmon: \"fa8072\",\r\n sandybrown: \"f4a460\",\r\n seagreen: \"2e8b57\",\r\n seashell: \"fff5ee\",\r\n sienna: \"a0522d\",\r\n silver: \"c0c0c0\",\r\n skyblue: \"87ceeb\",\r\n slateblue: \"6a5acd\",\r\n slategray: \"708090\",\r\n snow: \"fffafa\",\r\n springgreen: \"00ff7f\",\r\n steelblue: \"4682b4\",\r\n tan: \"d2b48c\",\r\n teal: \"008080\",\r\n thistle: \"d8bfd8\",\r\n tomato: \"ff6347\",\r\n turquoise: \"40e0d0\",\r\n violet: \"ee82ee\",\r\n violetred: \"d02090\",\r\n wheat: \"f5deb3\",\r\n white: \"ffffff\",\r\n whitesmoke: \"f5f5f5\",\r\n yellow: \"ffff00\",\r\n yellowgreen: \"9acd32\"\r\n };\r\n for (let key in simple_colors) {\r\n if (color_string == key) {\r\n color_string = simple_colors[key];\r\n }\r\n }\r\n let color_defs = [ {\r\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n example: [ \"rgb(123, 234, 45)\", \"rgb(255,234,245)\" ],\r\n process: function(bits) {\r\n return [ parseInt(bits[1]), parseInt(bits[2]), parseInt(bits[3]) ];\r\n }\r\n }, {\r\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\r\n example: [ \"#00ff00\", \"336699\" ],\r\n process: function(bits) {\r\n return [ parseInt(bits[1], 16), parseInt(bits[2], 16), parseInt(bits[3], 16) ];\r\n }\r\n }, {\r\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\r\n example: [ \"#fb0\", \"f0f\" ],\r\n process: function(bits) {\r\n return [ parseInt(bits[1] + bits[1], 16), parseInt(bits[2] + bits[2], 16), parseInt(bits[3] + bits[3], 16) ];\r\n }\r\n } ];\r\n for (let i = 0; i < color_defs.length; i++) {\r\n let re = color_defs[i].re;\r\n let processor = color_defs[i].process;\r\n let bits = re.exec(color_string);\r\n if (bits) {\r\n channels = processor(bits);\r\n this.r = channels[0];\r\n this.g = channels[1];\r\n this.b = channels[2];\r\n this.ok = true;\r\n }\r\n }\r\n this.r = this.r < 0 || isNaN(this.r) ? 0 : this.r > 255 ? 255 : this.r;\r\n this.g = this.g < 0 || isNaN(this.g) ? 0 : this.g > 255 ? 255 : this.g;\r\n this.b = this.b < 0 || isNaN(this.b) ? 0 : this.b > 255 ? 255 : this.b;\r\n this.toRGB = function() {\r\n return \"rgb(\" + this.r + \", \" + this.g + \", \" + this.b + \")\";\r\n };\r\n this.toHex = function() {\r\n let r = this.r.toString(16);\r\n let g = this.g.toString(16);\r\n let b = this.b.toString(16);\r\n if (r.length == 1) r = \"0\" + r;\r\n if (g.length == 1) g = \"0\" + g;\r\n if (b.length == 1) b = \"0\" + b;\r\n return \"#\" + r + g + b;\r\n };\r\n this.getHelpXML = function() {\r\n let examples = new Array();\r\n for (let i = 0; i < color_defs.length; i++) {\r\n let example = color_defs[i].example;\r\n for (let j = 0; j < example.length; j++) {\r\n examples[examples.length] = example[j];\r\n }\r\n }\r\n for (let sc in simple_colors) {\r\n examples[examples.length] = sc;\r\n }\r\n let xml = document.createElement(\"ul\");\r\n xml.setAttribute(\"id\", \"rgbcolor-examples\");\r\n for (let i = 0; i < examples.length; i++) {\r\n try {\r\n let list_item = document.createElement(\"li\");\r\n let list_color = new RGBColor(examples[i]);\r\n let example_div = document.createElement(\"div\");\r\n example_div.style.cssText = \"margin: 3px; \" + \"border: 1px solid black; \" + \"background:\" + list_color.toHex() + \"; \" + \"color:\" + list_color.toHex();\r\n example_div.appendChild(document.createTextNode(\"test\"));\r\n let list_item_value = document.createTextNode(\" \" + examples[i] + \" -> \" + list_color.toRGB() + \" -> \" + list_color.toHex());\r\n list_item.appendChild(example_div);\r\n list_item.appendChild(list_item_value);\r\n xml.appendChild(list_item);\r\n } catch {}\r\n }\r\n return xml;\r\n };\r\n }\r\n let mul_table = [ 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259 ];\r\n let shg_table = [ 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 ];\r\n\r\n function stackBlurCanvasRGBA(id, top_x, top_y, width, height, radius) {\r\n if (isNaN(radius) || radius < 1) return;\r\n radius |= 0;\r\n let canvas = document.getElementById(id);\r\n let context = canvas.getContext(\"2d\");\r\n let imageData;\r\n try {\r\n try {\r\n imageData = context.getImageData(top_x, top_y, width, height);\r\n } catch {\r\n try {\r\n netscape.security.PrivilegeManager.enablePrivilege(\"UniversalBrowserRead\");\r\n imageData = context.getImageData(top_x, top_y, width, height);\r\n } catch (e) {\r\n alert(\"Cannot access local image\");\r\n throw new Error(\"unable to access local image data: \" + e);\r\n return;\r\n }\r\n }\r\n } catch (e) {\r\n alert(\"Cannot access image\");\r\n throw new Error(\"unable to access image data: \" + e);\r\n }\r\n let pixels = imageData.data;\r\n let x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs;\r\n let div = radius + radius + 1;\r\n let widthMinus1 = width - 1;\r\n let heightMinus1 = height - 1;\r\n let radiusPlus1 = radius + 1;\r\n let sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\r\n let stackStart = new BlurStack();\r\n let stack = stackStart;\r\n let stackEnd = stackStart;\r\n for (i = 1; i < div; i++) {\r\n stack = stack.next = new BlurStack();\r\n if (i == radiusPlus1) stackEnd = stack;\r\n }\r\n stack.next = stackStart;\r\n let stackIn = null;\r\n let stackOut = null;\r\n yw = yi = 0;\r\n let mul_sum = mul_table[radius];\r\n let shg_sum = shg_table[radius];\r\n for (y = 0; y < height; y++) {\r\n r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0;\r\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\r\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\r\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\r\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\r\n r_sum += sumFactor * pr;\r\n g_sum += sumFactor * pg;\r\n b_sum += sumFactor * pb;\r\n a_sum += sumFactor * pa;\r\n stack = stackStart;\r\n for (i = 0; i < radiusPlus1; i++) {\r\n stack.r = pr;\r\n stack.g = pg;\r\n stack.b = pb;\r\n stack.a = pa;\r\n stack = stack.next;\r\n }\r\n for (i = 1; i < radiusPlus1; i++) {\r\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\r\n r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i);\r\n g_sum += (stack.g = pg = pixels[p + 1]) * rbs;\r\n b_sum += (stack.b = pb = pixels[p + 2]) * rbs;\r\n a_sum += (stack.a = pa = pixels[p + 3]) * rbs;\r\n r_in_sum += pr;\r\n g_in_sum += pg;\r\n b_in_sum += pb;\r\n a_in_sum += pa;\r\n stack = stack.next;\r\n }\r\n stackIn = stackStart;\r\n stackOut = stackEnd;\r\n for (x = 0; x < width; x++) {\r\n pixels[yi + 3] = pa = a_sum * mul_sum >> shg_sum;\r\n if (pa != 0) {\r\n pa = 255 / pa;\r\n pixels[yi] = (r_sum * mul_sum >> shg_sum) * pa;\r\n pixels[yi + 1] = (g_sum * mul_sum >> shg_sum) * pa;\r\n pixels[yi + 2] = (b_sum * mul_sum >> shg_sum) * pa;\r\n } else {\r\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\r\n }\r\n r_sum -= r_out_sum;\r\n g_sum -= g_out_sum;\r\n b_sum -= b_out_sum;\r\n a_sum -= a_out_sum;\r\n r_out_sum -= stackIn.r;\r\n g_out_sum -= stackIn.g;\r\n b_out_sum -= stackIn.b;\r\n a_out_sum -= stackIn.a;\r\n p = yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1) << 2;\r\n r_in_sum += stackIn.r = pixels[p];\r\n g_in_sum += stackIn.g = pixels[p + 1];\r\n b_in_sum += stackIn.b = pixels[p + 2];\r\n a_in_sum += stackIn.a = pixels[p + 3];\r\n r_sum += r_in_sum;\r\n g_sum += g_in_sum;\r\n b_sum += b_in_sum;\r\n a_sum += a_in_sum;\r\n stackIn = stackIn.next;\r\n r_out_sum += pr = stackOut.r;\r\n g_out_sum += pg = stackOut.g;\r\n b_out_sum += pb = stackOut.b;\r\n a_out_sum += pa = stackOut.a;\r\n r_in_sum -= pr;\r\n g_in_sum -= pg;\r\n b_in_sum -= pb;\r\n a_in_sum -= pa;\r\n stackOut = stackOut.next;\r\n yi += 4;\r\n }\r\n yw += width;\r\n }\r\n for (x = 0; x < width; x++) {\r\n g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0;\r\n yi = x << 2;\r\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\r\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\r\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\r\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\r\n r_sum += sumFactor * pr;\r\n g_sum += sumFactor * pg;\r\n b_sum += sumFactor * pb;\r\n a_sum += sumFactor * pa;\r\n stack = stackStart;\r\n for (i = 0; i < radiusPlus1; i++) {\r\n stack.r = pr;\r\n stack.g = pg;\r\n stack.b = pb;\r\n stack.a = pa;\r\n stack = stack.next;\r\n }\r\n yp = width;\r\n for (i = 1; i <= radius; i++) {\r\n yi = yp + x << 2;\r\n r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i);\r\n g_sum += (stack.g = pg = pixels[yi + 1]) * rbs;\r\n b_sum += (stack.b = pb = pixels[yi + 2]) * rbs;\r\n a_sum += (stack.a = pa = pixels[yi + 3]) * rbs;\r\n r_in_sum += pr;\r\n g_in_sum += pg;\r\n b_in_sum += pb;\r\n a_in_sum += pa;\r\n stack = stack.next;\r\n if (i < heightMinus1) {\r\n yp += width;\r\n }\r\n }\r\n yi = x;\r\n stackIn = stackStart;\r\n stackOut = stackEnd;\r\n for (y = 0; y < height; y++) {\r\n p = yi << 2;\r\n pixels[p + 3] = pa = a_sum * mul_sum >> shg_sum;\r\n if (pa > 0) {\r\n pa = 255 / pa;\r\n pixels[p] = (r_sum * mul_sum >> shg_sum) * pa;\r\n pixels[p + 1] = (g_sum * mul_sum >> shg_sum) * pa;\r\n pixels[p + 2] = (b_sum * mul_sum >> shg_sum) * pa;\r\n } else {\r\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\r\n }\r\n r_sum -= r_out_sum;\r\n g_sum -= g_out_sum;\r\n b_sum -= b_out_sum;\r\n a_sum -= a_out_sum;\r\n r_out_sum -= stackIn.r;\r\n g_out_sum -= stackIn.g;\r\n b_out_sum -= stackIn.b;\r\n a_out_sum -= stackIn.a;\r\n p = x + ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width << 2;\r\n r_sum += r_in_sum += stackIn.r = pixels[p];\r\n g_sum += g_in_sum += stackIn.g = pixels[p + 1];\r\n b_sum += b_in_sum += stackIn.b = pixels[p + 2];\r\n a_sum += a_in_sum += stackIn.a = pixels[p + 3];\r\n stackIn = stackIn.next;\r\n r_out_sum += pr = stackOut.r;\r\n g_out_sum += pg = stackOut.g;\r\n b_out_sum += pb = stackOut.b;\r\n a_out_sum += pa = stackOut.a;\r\n r_in_sum -= pr;\r\n g_in_sum -= pg;\r\n b_in_sum -= pb;\r\n a_in_sum -= pa;\r\n stackOut = stackOut.next;\r\n yi += width;\r\n }\r\n }\r\n context.putImageData(imageData, top_x, top_y);\r\n }\r\n function BlurStack() {\r\n this.r = 0;\r\n this.g = 0;\r\n this.b = 0;\r\n this.a = 0;\r\n this.next = null;\r\n }\r\n (function(global) {\r\n global.canvg = function(target, s, opts) {\r\n if (target == null && s == null && opts == null) {\r\n let svgTags = document.getElementsByTagName(\"svg\");\r\n for (let i = 0; i < svgTags.length; i++) {\r\n let svgTag = svgTags[i];\r\n let c = document.createElement(\"canvas\");\r\n c.width = svgTag.clientWidth;\r\n c.height = svgTag.clientHeight;\r\n svgTag.parentNode.insertBefore(c, svgTag);\r\n svgTag.parentNode.removeChild(svgTag);\r\n let div = document.createElement(\"div\");\r\n div.appendChild(svgTag);\r\n canvg(c, div.innerHTML);\r\n }\r\n return;\r\n }\r\n opts = opts || {};\r\n if (typeof target == \"string\") {\r\n target = document.getElementById(target);\r\n }\r\n if (target.svg != null) target.svg.stop();\r\n let svg = build();\r\n if (!(target.childNodes.length == 1 && target.childNodes[0].nodeName == \"OBJECT\")) target.svg = svg;\r\n svg.opts = opts;\r\n let ctx = target.getContext(\"2d\");\r\n if (typeof s.documentElement != \"undefined\") {\r\n svg.loadXmlDoc(ctx, s);\r\n } else if (s.substr(0, 1) == \"<\") {\r\n svg.loadXml(ctx, s);\r\n } else {\r\n svg.load(ctx, s);\r\n }\r\n };\r\n function build() {\r\n let svg = {};\r\n svg.FRAMERATE = 30;\r\n svg.MAX_VIRTUAL_PIXELS = 3e4;\r\n svg.init = function(ctx) {\r\n let uniqueId = 0;\r\n svg.UniqueId = function() {\r\n uniqueId++;\r\n return \"canvg\" + uniqueId;\r\n };\r\n svg.Definitions = {};\r\n svg.Styles = {};\r\n svg.Animations = [];\r\n svg.Images = [];\r\n svg.ctx = ctx;\r\n svg.ViewPort = new function() {\r\n this.viewPorts = [];\r\n this.Clear = function() {\r\n this.viewPorts = [];\r\n };\r\n this.SetCurrent = function(width, height) {\r\n this.viewPorts.push({\r\n width: width,\r\n height: height\r\n });\r\n };\r\n this.RemoveCurrent = function() {\r\n this.viewPorts.pop();\r\n };\r\n this.Current = function() {\r\n return this.viewPorts[this.viewPorts.length - 1];\r\n };\r\n this.width = function() {\r\n return this.Current().width;\r\n };\r\n this.height = function() {\r\n return this.Current().height;\r\n };\r\n this.ComputeSize = function(d) {\r\n if (d != null && typeof d == \"number\") return d;\r\n if (d == \"x\") return this.width();\r\n if (d == \"y\") return this.height();\r\n return Math.sqrt(Math.pow(this.width(), 2) + Math.pow(this.height(), 2)) / Math.sqrt(2);\r\n };\r\n }();\r\n };\r\n svg.init();\r\n svg.ImagesLoaded = function() {\r\n for (let i = 0; i < svg.Images.length; i++) {\r\n if (!svg.Images[i].loaded) return false;\r\n }\r\n return true;\r\n };\r\n svg.trim = function(s) {\r\n return s.replace(/^\\s+|\\s+$/g, \"\");\r\n };\r\n svg.compressSpaces = function(s) {\r\n return s.replace(/[\\s\\r\\t\\n]+/gm, \" \");\r\n };\r\n svg.ajax = function(url) {\r\n let AJAX;\r\n if (window.XMLHttpRequest) {\r\n AJAX = new XMLHttpRequest();\r\n } else {\r\n AJAX = new ActiveXObject(\"Microsoft.XMLHTTP\");\r\n }\r\n if (AJAX) {\r\n AJAX.open(\"GET\", url, false);\r\n AJAX.send(null);\r\n return AJAX.responseText;\r\n }\r\n return null;\r\n };\r\n svg.parseXml = function(xml) {\r\n if (window.DOMParser) {\r\n let parser = new DOMParser();\r\n return parser.parseFromString(xml, \"text/xml\");\r\n } else {\r\n xml = xml.replace(/<!DOCTYPE svg[^>]*>/, \"\");\r\n let xmlDoc = new ActiveXObject(\"Microsoft.XMLDOM\");\r\n xmlDoc.async = \"false\";\r\n xmlDoc.loadXML(xml);\r\n return xmlDoc;\r\n }\r\n };\r\n svg.Property = function(name, value) {\r\n this.name = name;\r\n this.value = value;\r\n };\r\n svg.Property.prototype.getValue = function() {\r\n return this.value;\r\n };\r\n svg.Property.prototype.hasValue = function() {\r\n return this.value != null && this.value !== \"\";\r\n };\r\n svg.Property.prototype.numValue = function() {\r\n if (!this.hasValue()) return 0;\r\n let n = parseFloat(this.value);\r\n if ((this.value + \"\").match(/%$/)) {\r\n n = n / 100;\r\n }\r\n return n;\r\n };\r\n svg.Property.prototype.valueOrDefault = function(def) {\r\n if (this.hasValue()) return this.value;\r\n return def;\r\n };\r\n svg.Property.prototype.numValueOrDefault = function(def) {\r\n if (this.hasValue()) return this.numValue();\r\n return def;\r\n };\r\n svg.Property.prototype.addOpacity = function(opacity) {\r\n let newValue = this.value;\r\n if (opacity != null && opacity != \"\" && typeof this.value == \"string\") {\r\n let color = new RGBColor(this.value);\r\n if (color.ok) {\r\n newValue = \"rgba(\" + color.r + \", \" + color.g + \", \" + color.b + \", \" + opacity + \")\";\r\n }\r\n }\r\n return new svg.Property(this.name, newValue);\r\n };\r\n svg.Property.prototype.getDefinition = function() {\r\n let name = this.value.match(/#([^\\)'\"]+)/);\r\n if (name) {\r\n name = name[1];\r\n }\r\n if (!name) {\r\n name = this.value;\r\n }\r\n return svg.Definitions[name];\r\n };\r\n svg.Property.prototype.isUrlDefinition = function() {\r\n return this.value.indexOf(\"url(\") == 0;\r\n };\r\n svg.Property.prototype.getFillStyleDefinition = function(e, opacityProp) {\r\n let def = this.getDefinition();\r\n if (def != null && def.createGradient) {\r\n return def.createGradient(svg.ctx, e, opacityProp);\r\n }\r\n if (def != null && def.createPattern) {\r\n if (def.getHrefAttribute().hasValue()) {\r\n let pt = def.attribute(\"patternTransform\");\r\n def = def.getHrefAttribute().getDefinition();\r\n if (pt.hasValue()) {\r\n def.attribute(\"patternTransform\", true).value = pt.value;\r\n }\r\n }\r\n return def.createPattern(svg.ctx, e);\r\n }\r\n return null;\r\n };\r\n svg.Property.prototype.getDPI = function() {\r\n return 96;\r\n };\r\n svg.Property.prototype.getEM = function(viewPort) {\r\n let em = 12;\r\n let fontSize = new svg.Property(\"fontSize\", svg.Font.Parse(svg.ctx.font).fontSize);\r\n if (fontSize.hasValue()) em = fontSize.toPixels(viewPort);\r\n return em;\r\n };\r\n svg.Property.prototype.getUnits = function() {\r\n let s = this.value + \"\";\r\n return s.replace(/[0-9\\.\\-]/g, \"\");\r\n };\r\n svg.Property.prototype.toPixels = function(viewPort, processPercent) {\r\n if (!this.hasValue()) return 0;\r\n let s = this.value + \"\";\r\n if (s.match(/em$/)) return this.numValue() * this.getEM(viewPort);\r\n if (s.match(/ex$/)) return this.numValue() * this.getEM(viewPort) / 2;\r\n if (s.match(/px$/)) return this.numValue();\r\n if (s.match(/pt$/)) return this.numValue() * this.getDPI(viewPort) * (1 / 72);\r\n if (s.match(/pc$/)) return this.numValue() * 15;\r\n if (s.match(/cm$/)) return this.numValue() * this.getDPI(viewPort) / 2.54;\r\n if (s.match(/mm$/)) return this.numValue() * this.getDPI(viewPort) / 25.4;\r\n if (s.match(/in$/)) return this.numValue() * this.getDPI(viewPort);\r\n if (s.match(/%$/)) return this.numValue() * svg.ViewPort.ComputeSize(viewPort);\r\n let n = this.numValue();\r\n if (processPercent && n < 1) return n * svg.ViewPort.ComputeSize(viewPort);\r\n return n;\r\n };\r\n svg.Property.prototype.toMilliseconds = function() {\r\n if (!this.hasValue()) return 0;\r\n let s = this.value + \"\";\r\n if (s.match(/s$/)) return this.numValue() * 1e3;\r\n if (s.match(/ms$/)) return this.numValue();\r\n return this.numValue();\r\n };\r\n svg.Property.prototype.toRadians = function() {\r\n if (!this.hasValue()) return 0;\r\n let s = this.value + \"\";\r\n if (s.match(/deg$/)) return this.numValue() * (Math.PI / 180);\r\n if (s.match(/grad$/)) return this.numValue() * (Math.PI / 200);\r\n if (s.match(/rad$/)) return this.numValue();\r\n return this.numValue() * (Math.PI / 180);\r\n };\r\n svg.Font = new function() {\r\n this.Styles = \"normal|italic|oblique|inherit\";\r\n this.Variants = \"normal|small-caps|inherit\";\r\n this.Weights = \"normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit\";\r\n this.CreateFont = function(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) {\r\n let f = inherit != null ? this.Parse(inherit) : this.CreateFont(\"\", \"\", \"\", \"\", \"\", svg.ctx.font);\r\n return {\r\n fontFamily: fontFamily || f.fontFamily,\r\n fontSize: fontSize || f.fontSize,\r\n fontStyle: fontStyle || f.fontStyle,\r\n fontWeight: fontWeight || f.fontWeight,\r\n fontVariant: fontVariant || f.fontVariant,\r\n toString: function() {\r\n return [ this.fontStyle, this.fontVariant, this.fontWeight, this.fontSize, this.fontFamily ].join(\" \");\r\n }\r\n };\r\n };\r\n let that = this;\r\n this.Parse = function(s) {\r\n let f = {};\r\n let d = svg.trim(svg.compressSpaces(s || \"\")).split(\" \");\r\n let set = {\r\n fontSize: false,\r\n fontStyle: false,\r\n fontWeight: false,\r\n fontVariant: false\r\n };\r\n let ff = \"\";\r\n for (let i = 0; i < d.length; i++) {\r\n if (!set.fontStyle && that.Styles.indexOf(d[i]) != -1) {\r\n if (d[i] != \"inherit\") f.fontStyle = d[i];\r\n set.fontStyle = true;\r\n } else if (!set.fontVariant && that.Variants.indexOf(d[i]) != -1) {\r\n if (d[i] != \"inherit\") f.fontVariant = d[i];\r\n set.fontStyle = set.fontVariant = true;\r\n } else if (!set.fontWeight && that.Weights.indexOf(d[i]) != -1) {\r\n if (d[i] != \"inherit\") f.fontWeight = d[i];\r\n set.fontStyle = set.fontVariant = set.fontWeight = true;\r\n } else if (!set.fontSize) {\r\n if (d[i] != \"inherit\") f.fontSize = d[i].split(\"/\")[0];\r\n set.fontStyle = set.fontVariant = set.fontWeight = set.fontSize = true;\r\n } else {\r\n if (d[i] != \"inherit\") ff += d[i];\r\n }\r\n }\r\n if (ff != \"\") f.fontFamily = ff;\r\n return f;\r\n };\r\n }();\r\n svg.ToNumberArray = function(s) {\r\n let a = svg.trim(svg.compressSpaces((s || \"\").replace(/,/g, \" \"))).split(\" \");\r\n for (let i = 0; i < a.length; i++) {\r\n a[i] = parseFloat(a[i]);\r\n }\r\n return a;\r\n };\r\n svg.Point = function(x, y) {\r\n this.x = x;\r\n this.y = y;\r\n };\r\n svg.Point.prototype.angleTo = function(p) {\r\n return Math.atan2(p.y - this.y, p.x - this.x);\r\n };\r\n svg.Point.prototype.applyTransform = function(v) {\r\n let xp = this.x * v[0] + this.y * v[2] + v[4];\r\n let yp = this.x * v[1] + this.y * v[3] + v[5];\r\n this.x = xp;\r\n this.y = yp;\r\n };\r\n svg.CreatePoint = function(s) {\r\n let a = svg.ToNumberArray(s);\r\n return new svg.Point(a[0], a[1]);\r\n };\r\n svg.CreatePath = function(s) {\r\n let a = svg.ToNumberArray(s);\r\n let path = [];\r\n for (let i = 0; i < a.length; i += 2) {\r\n path.push(new svg.Point(a[i], a[i + 1]));\r\n }\r\n return path;\r\n };\r\n svg.BoundingBox = function(x1, y1, x2, y2) {\r\n this.x1 = Number.NaN;\r\n this.y1 = Number.NaN;\r\n this.x2 = Number.NaN;\r\n this.y2 = Number.NaN;\r\n this.x = function() {\r\n return this.x1;\r\n };\r\n this.y = function() {\r\n return this.y1;\r\n };\r\n this.width = function() {\r\n return this.x2 - this.x1;\r\n };\r\n this.height = function() {\r\n return this.y2 - this.y1;\r\n };\r\n this.addPoint = function(x, y) {\r\n if (x != null) {\r\n if (isNaN(this.x1) || isNaN(this.x2)) {\r\n this.x1 = x;\r\n this.x2 = x;\r\n }\r\n if (x < this.x1) this.x1 = x;\r\n if (x > this.x2) this.x2 = x;\r\n }\r\n if (y != null) {\r\n if (isNaN(this.y1) || isNaN(this.y2)) {\r\n this.y1 = y;\r\n this.y2 = y;\r\n }\r\n if (y < this.y1) this.y1 = y;\r\n if (y > this.y2) this.y2 = y;\r\n }\r\n };\r\n this.addX = function(x) {\r\n this.addPoint(x, null);\r\n };\r\n this.addY = function(y) {\r\n this.addPoint(null, y);\r\n };\r\n this.addBoundingBox = function(bb) {\r\n this.addPoint(bb.x1, bb.y1);\r\n this.addPoint(bb.x2, bb.y2);\r\n };\r\n this.addQuadraticCurve = function(p0x, p0y, p1x, p1y, p2x, p2y) {\r\n let cp1x = p0x + 2 / 3 * (p1x - p0x);\r\n let cp1y = p0y + 2 / 3 * (p1y - p0y);\r\n let cp2x = cp1x + 1 / 3 * (p2x - p0x);\r\n let cp2y = cp1y + 1 / 3 * (p2y - p0y);\r\n this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);\r\n };\r\n this.addBezierCurve = function(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\r\n let p0 = [ p0x, p0y ], p1 = [ p1x, p1y ], p2 = [ p2x, p2y ], p3 = [ p3x, p3y ];\r\n this.addPoint(p0[0], p0[1]);\r\n this.addPoint(p3[0], p3[1]);\r\n for (i = 0; i <= 1; i++) {\r\n let f = function(t) {\r\n return Math.pow(1 - t, 3) * p0[i] + 3 * Math.pow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * Math.pow(t, 2) * p2[i] + Math.pow(t, 3) * p3[i];\r\n };\r\n let b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\r\n let a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\r\n let c = 3 * p1[i] - 3 * p0[i];\r\n if (a == 0) {\r\n if (b == 0) continue;\r\n let t = -c / b;\r\n if (0 < t && t < 1) {\r\n if (i == 0) this.addX(f(t));\r\n if (i == 1) this.addY(f(t));\r\n }\r\n continue;\r\n }\r\n let b2ac = Math.pow(b, 2) - 4 * c * a;\r\n if (b2ac < 0) continue;\r\n let t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\r\n if (0 < t1 && t1 < 1) {\r\n if (i == 0) this.addX(f(t1));\r\n if (i == 1) this.addY(f(t1));\r\n }\r\n let t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\r\n if (0 < t2 && t2 < 1) {\r\n if (i == 0) this.addX(f(t2));\r\n if (i == 1) this.addY(f(t2));\r\n }\r\n }\r\n };\r\n this.isPointInBox = function(x, y) {\r\n return this.x1 <= x && x <= this.x2 && this.y1 <= y && y <= this.y2;\r\n };\r\n this.addPoint(x1, y1);\r\n this.addPoint(x2, y2);\r\n };\r\n svg.Transform = function(v) {\r\n let that = this;\r\n this.Type = {};\r\n this.Type.translate = function(s) {\r\n this.p = svg.CreatePoint(s);\r\n this.apply = function(ctx) {\r\n ctx.translate(this.p.x || 0, this.p.y || 0);\r\n };\r\n this.unapply = function(ctx) {\r\n ctx.translate(-1 * this.p.x || 0, -1 * this.p.y || 0);\r\n };\r\n this.applyToPoint = function(p) {\r\n p.applyTransform([ 1, 0, 0, 1, this.p.x || 0, this.p.y || 0 ]);\r\n };\r\n };\r\n this.Type.rotate = function(s) {\r\n let a = svg.ToNumberArray(s);\r\n this.angle = new svg.Property(\"angle\", a[0]);\r\n this.cx = a[1] || 0;\r\n this.cy = a[2] || 0;\r\n this.apply = function(ctx) {\r\n ctx.translate(this.cx, this.cy);\r\n ctx.rotate(this.angle.toRadians());\r\n ctx.translate(-this.cx, -this.cy);\r\n };\r\n this.unapply = function(ctx) {\r\n ctx.translate(this.cx, this.cy);\r\n ctx.rotate(-1 * this.angle.toRadians());\r\n ctx.translate(-this.cx, -this.cy);\r\n };\r\n this.applyToPoint = function(p) {\r\n let a = this.angle.toRadians();\r\n p.applyTransform([ 1, 0, 0, 1, this.p.x || 0, this.p.y || 0 ]);\r\n p.applyTransform([ Math.cos(a), Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0 ]);\r\n p.applyTransform([ 1, 0, 0, 1, -this.p.x || 0, -this.p.y || 0 ]);\r\n };\r\n };\r\n this.Type.scale = function(s) {\r\n this.p = svg.CreatePoint(s);\r\n this.apply = function(ctx) {\r\n ctx.scale(this.p.x || 1, this.p.y || this.p.x || 1);\r\n };\r\n this.unapply = function(ctx) {\r\n ctx.scale(1 / this.p.x || 1, 1 / this.p.y || this.p.x || 1);\r\n };\r\n this.applyToPoint = function(p) {\r\n p.applyTransform([ this.p.x || 0, 0, 0, this.p.y || 0, 0, 0 ]);\r\n };\r\n };\r\n this.Type.matrix = function(s) {\r\n this.m = svg.ToNumberArray(s);\r\n this.apply = function(ctx) {\r\n ctx.transform(this.m[0], this.m[1], this.m[2], this.m[3], this.m[4], this.m[5]);\r\n };\r\n this.applyToPoint = function(p) {\r\n p.applyTransform(this.m);\r\n };\r\n };\r\n this.Type.SkewBase = function(s) {\r\n this.base = that.Type.matrix;\r\n this.base(s);\r\n this.angle = new svg.Property(\"angle\", s);\r\n };\r\n this.Type.SkewBase.prototype = new this.Type.matrix();\r\n this.Type.skewX = function(s) {\r\n this.base = that.Type.SkewBase;\r\n this.base(s);\r\n this.m = [ 1, 0, Math.tan(this.angle.toRadians()), 1, 0, 0 ];\r\n };\r\n this.Type.skewX.prototype = new this.Type.SkewBase();\r\n this.Type.skewY = function(s) {\r\n this.base = that.Type.SkewBase;\r\n this.base(s);\r\n this.m = [ 1, Math.tan(this.angle.toRadians()), 0, 1, 0, 0 ];\r\n };\r\n this.Type.skewY.prototype = new this.Type.SkewBase();\r\n this.transforms = [];\r\n this.apply = function(ctx) {\r\n for (let i = 0; i < this.transforms.length; i++) {\r\n this.transforms[i].apply(ctx);\r\n }\r\n };\r\n this.unapply = function(ctx) {\r\n for (let i = this.transforms.length - 1; i >= 0; i--) {\r\n this.transforms[i].unapply(ctx);\r\n }\r\n };\r\n this.applyToPoint = function(p) {\r\n for (let i = 0; i < this.transforms.length; i++) {\r\n this.transforms[i].applyToPoint(p);\r\n }\r\n };\r\n let data = svg.trim(svg.compressSpaces(v)).replace(/\\)(\\s?,\\s?)/g, \") \").split(/\\s(?=[a-z])/);\r\n for (let i = 0; i < data.length; i++) {\r\n let type = svg.trim(data[i].split(\"(\")[0]);\r\n let s = data[i].split(\"(\")[1].replace(\")\", \"\");\r\n let transform = new this.Type[type](s);\r\n transform.type = type;\r\n this.transforms.push(transform);\r\n }\r\n };\r\n svg.AspectRatio = function(ctx, aspectRatio, width, desiredWidth, height, desiredHeight, minX, minY, refX, refY) {\r\n aspectRatio = svg.compressSpaces(aspectRatio);\r\n aspectRatio = aspectRatio.replace(/^defer\\s/, \"\");\r\n let align = aspectRatio.split(\" \")[0] || \"xMidYMid\";\r\n let meetOrSlice = aspectRatio.split(\" \")[1] || \"meet\";\r\n let scaleX = width / desiredWidth;\r\n let scaleY = height / desiredHeight;\r\n let scaleMin = Math.min(scaleX, scaleY);\r\n let scaleMax = Math.max(scaleX, scaleY);\r\n if (meetOrSlice == \"meet\") {\r\n desiredWidth *= scaleMin;\r\n desiredHeight *= scaleMin;\r\n }\r\n if (meetOrSlice == \"slice\") {\r\n desiredWidth *= scaleMax;\r\n desiredHeight *= scaleMax;\r\n }\r\n refX = new svg.Property(\"refX\", refX);\r\n refY = new svg.Property(\"refY\", refY);\r\n if (refX.hasValue() && refY.hasValue()) {\r\n ctx.translate(-scaleMin * refX.toPixels(\"x\"), -scaleMin * refY.toPixels(\"y\"));\r\n } else {\r\n if (align.match(/^xMid/) && (meetOrSlice == \"meet\" && scaleMin == scaleY || meetOrSlice == \"slice\" && scaleMax == scaleY)) ctx.translate(width / 2 - desiredWidth / 2, 0);\r\n if (align.match(/YMid$/) && (meetOrSlice == \"meet\" && scaleMin == scaleX || meetOrSlice == \"slice\" && scaleMax == scaleX)) ctx.translate(0, height / 2 - desiredHeight / 2);\r\n if (align.match(/^xMax/) && (meetOrSlice == \"meet\" && scaleMin == scaleY || meetOrSlice == \"slice\" && scaleMax == scaleY)) ctx.translate(width - desiredWidth, 0);\r\n if (align.match(/YMax$/) && (meetOrSlice == \"meet\" && scaleMin == scaleX || meetOrSlice == \"slice\" && scaleMax == scaleX)) ctx.translate(0, height - desiredHeight);\r\n }\r\n if (align == \"none\") ctx.scale(scaleX, scaleY); else if (meetOrSlice == \"meet\") ctx.scale(scaleMin, scaleMin); else if (meetOrSlice == \"slice\") ctx.scale(scaleMax, scaleMax);\r\n ctx.translate(minX == null ? 0 : -minX, minY == null ? 0 : -minY);\r\n };\r\n svg.Element = {};\r\n svg.EmptyProperty = new svg.Property(\"EMPTY\", \"\");\r\n svg.Element.ElementBase = function(node) {\r\n this.attributes = {};\r\n this.styles = {};\r\n this.children = [];\r\n this.attribute = function(name, createIfNotExists) {\r\n let a = this.attributes[name];\r\n if (a != null) return a;\r\n if (createIfNotExists == true) {\r\n a = new svg.Property(name, \"\");\r\n this.attributes[name] = a;\r\n }\r\n return a || svg.EmptyProperty;\r\n };\r\n this.getHrefAttribute = function() {\r\n for (let a in this.attributes) {\r\n if (a.match(/:href$/)) {\r\n return this.attributes[a];\r\n }\r\n }\r\n return svg.EmptyProperty;\r\n };\r\n this.style = function(name, createIfNotExists) {\r\n let s = this.styles[name];\r\n if (s != null) return s;\r\n let a = this.attribute(name);\r\n if (a != null && a.hasValue()) {\r\n this.styles[name] = a;\r\n return a;\r\n }\r\n let p = this.parent;\r\n if (p != null) {\r\n let ps = p.style(name);\r\n if (ps != null && ps.hasValue()) {\r\n return ps;\r\n }\r\n }\r\n if (createIfNotExists == true) {\r\n s = new svg.Property(name, \"\");\r\n this.styles[name] = s;\r\n }\r\n return s || svg.EmptyProperty;\r\n };\r\n this.render = function(ctx) {\r\n if (this.style(\"display\").value == \"none\") return;\r\n if (this.attribute(\"visibility\").value == \"hidden\") return;\r\n ctx.save();\r\n if (this.attribute(\"mask\").hasValue()) {\r\n let mask = this.attribute(\"mask\").getDefinition();\r\n if (mask != null) mask.apply(ctx, this);\r\n } else if (this.style(\"filter\").hasValue()) {\r\n let filter = this.style(\"filter\").getDefinition();\r\n if (filter != null) filter.apply(ctx, this);\r\n } else {\r\n this.setContext(ctx);\r\n this.renderChildren(ctx);\r\n this.clearContext(ctx);\r\n }\r\n ctx.restore();\r\n };\r\n this.setContext = function(_ctx) {};\r\n this.clearContext = function(_ctx) {};\r\n this.renderChildren = function(ctx) {\r\n for (let i = 0; i < this.children.length; i++) {\r\n this.children[i].render(ctx);\r\n }\r\n };\r\n this.addChild = function(childNode, create) {\r\n let child = childNode;\r\n if (create) child = svg.CreateElement(childNode);\r\n child.parent = this;\r\n this.children.push(child);\r\n };\r\n if (node != null && node.nodeType == 1) {\r\n for (let i = 0; i < node.childNodes.length; i++) {\r\n let childNode = node.childNodes[i];\r\n if (childNode.nodeType == 1) this.addChild(childNode, true);\r\n if (this.captureTextNodes && childNode.nodeType == 3) {\r\n let text = childNode.nodeValue || childNode.text || \"\";\r\n if (svg.trim(svg.compressSpaces(text)) != \"\") {\r\n this.addChild(new svg.Element.tspan(childNode), false);\r\n }\r\n }\r\n }\r\n for (let i = 0; i < node.attributes.length; i++) {\r\n let attribute = node.attributes[i];\r\n this.attributes[attribute.nodeName] = new svg.Property(attribute.nodeName, attribute.nodeValue);\r\n }\r\n let styles = svg.Styles[node.nodeName];\r\n if (styles != null) {\r\n for (let name in styles) {\r\n this.styles[name] = styles[name];\r\n }\r\n }\r\n if (this.attribute(\"class\").hasValue()) {\r\n let classes = svg.compressSpaces(this.attribute(\"class\").value).split(\" \");\r\n for (let j = 0; j < classes.length; j++) {\r\n styles = svg.Styles[\".\" + classes[j]];\r\n if (styles != null) {\r\n for (let name in styles) {\r\n this.styles[name] = styles[name];\r\n }\r\n }\r\n styles = svg.Styles[node.nodeName + \".\" + classes[j]];\r\n if (styles != null) {\r\n for (let name in styles) {\r\n this.styles[name] = styles[name];\r\n }\r\n }\r\n }\r\n }\r\n if (this.attribute(\"id\").hasValue()) {\r\n let styles = svg.Styles[\"#\" + this.attribute(\"id\").value];\r\n if (styles != null) {\r\n for (let name in styles) {\r\n this.styles[name] = styles[name];\r\n }\r\n }\r\n }\r\n if (this.attribute(\"style\").hasValue()) {\r\n let styles = this.attribute(\"style\").value.split(\";\");\r\n for (let i = 0; i < styles.length; i++) {\r\n if (svg.trim(styles[i]) != \"\") {\r\n let style = styles[i].split(\":\");\r\n let name = svg.trim(style[0]);\r\n let value = svg.trim(style[1]);\r\n this.styles[name] = new svg.Property(name, value);\r\n }\r\n }\r\n }\r\n if (this.attribute(\"id\").hasValue()) {\r\n if (svg.Definitions[this.attribute(\"id\").value] == null) {\r\n svg.Definitions[this.attribute(\"id\").value] = this;\r\n }\r\n }\r\n }\r\n };\r\n svg.Element.RenderedElementBase = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n this.setContext = function(ctx) {\r\n if (this.style(\"fill\").isUrlDefinition()) {\r\n let fs = this.style(\"fill\").getFillStyleDefinition(this, this.style(\"fill-opacity\"));\r\n if (fs != null) ctx.fillStyle = fs;\r\n } else if (this.style(\"fill\").hasValue()) {\r\n let fillStyle = this.style(\"fill\");\r\n if (fillStyle.value == \"currentColor\") fillStyle.value = this.style(\"color\").value;\r\n ctx.fillStyle = fillStyle.value == \"none\" ? \"rgba(0,0,0,0)\" : fillStyle.value;\r\n }\r\n if (this.style(\"fill-opacity\").hasValue()) {\r\n let fillStyle = new svg.Property(\"fill\", ctx.fillStyle);\r\n fillStyle = fillStyle.addOpacity(this.style(\"fill-opacity\").value);\r\n ctx.fillStyle = fillStyle.value;\r\n }\r\n if (this.style(\"stroke\").isUrlDefinition()) {\r\n let fs = this.style(\"stroke\").getFillStyleDefinition(this, this.style(\"stroke-opacity\"));\r\n if (fs != null) ctx.strokeStyle = fs;\r\n } else if (this.style(\"stroke\").hasValue()) {\r\n let strokeStyle = this.style(\"stroke\");\r\n if (strokeStyle.value == \"currentColor\") strokeStyle.value = this.style(\"color\").value;\r\n ctx.strokeStyle = strokeStyle.value == \"none\" ? \"rgba(0,0,0,0)\" : strokeStyle.value;\r\n }\r\n if (this.style(\"stroke-opacity\").hasValue()) {\r\n let strokeStyle = new svg.Property(\"stroke\", ctx.strokeStyle);\r\n strokeStyle = strokeStyle.addOpacity(this.style(\"stroke-opacity\").value);\r\n ctx.strokeStyle = strokeStyle.value;\r\n }\r\n if (this.style(\"stroke-width\").hasValue()) {\r\n let newLineWidth = this.style(\"stroke-width\").toPixels();\r\n ctx.lineWidth = newLineWidth == 0 ? .001 : newLineWidth;\r\n }\r\n if (this.style(\"stroke-linecap\").hasValue()) ctx.lineCap = this.style(\"stroke-linecap\").value;\r\n if (this.style(\"stroke-linejoin\").hasValue()) ctx.lineJoin = this.style(\"stroke-linejoin\").value;\r\n if (this.style(\"stroke-miterlimit\").hasValue()) ctx.miterLimit = this.style(\"stroke-miterlimit\").value;\r\n if (this.style(\"stroke-dasharray\").hasValue()) {\r\n let gaps = svg.ToNumberArray(this.style(\"stroke-dasharray\").value);\r\n if (typeof ctx.setLineDash != \"undefined\") {\r\n ctx.setLineDash(gaps);\r\n } else if (typeof ctx.webkitLineDash != \"undefined\") {\r\n ctx.webkitLineDash = gaps;\r\n } else if (typeof ctx.mozDash != \"undefined\") {\r\n ctx.mozDash = gaps;\r\n }\r\n let offset = this.style(\"stroke-dashoffset\").numValueOrDefault(1);\r\n if (typeof ctx.lineDashOffset != \"undefined\") {\r\n ctx.lineDashOffset = offset;\r\n } else if (typeof ctx.webkitLineDashOffset != \"undefined\") {\r\n ctx.webkitLineDashOffset = offset;\r\n } else if (typeof ctx.mozDashOffset != \"undefined\") {\r\n ctx.mozDashOffset = offset;\r\n }\r\n }\r\n if (typeof ctx.font != \"undefined\") {\r\n ctx.font = svg.Font.CreateFont(this.style(\"font-style\").value, this.style(\"font-variant\").value, this.style(\"font-weight\").value, this.style(\"font-size\").hasValue() ? this.style(\"font-size\").toPixels() + \"px\" : \"\", this.style(\"font-family\").value).toString();\r\n }\r\n if (this.attribute(\"transform\").hasValue()) {\r\n let transform = new svg.Transform(this.attribute(\"transform\").value);\r\n transform.apply(ctx);\r\n }\r\n if (this.style(\"clip-path\").hasValue()) {\r\n let clip = this.style(\"clip-path\").getDefinition();\r\n if (clip != null) clip.apply(ctx);\r\n }\r\n if (this.style(\"opacity\").hasValue()) {\r\n ctx.globalAlpha = this.style(\"opacity\").numValue();\r\n }\r\n };\r\n };\r\n svg.Element.RenderedElementBase.prototype = new svg.Element.ElementBase();\r\n svg.Element.PathElementBase = function(node) {\r\n this.base = svg.Element.RenderedElementBase;\r\n this.base(node);\r\n this.path = function(ctx) {\r\n if (ctx != null) ctx.beginPath();\r\n return new svg.BoundingBox();\r\n };\r\n this.renderChildren = function(ctx) {\r\n this.path(ctx);\r\n svg.Mouse.checkPath(this, ctx);\r\n if (ctx.fillStyle != \"\") {\r\n if (this.attribute(\"fill-rule\").hasValue()) {\r\n ctx.fill(this.attribute(\"fill-rule\").value);\r\n } else {\r\n ctx.fill();\r\n }\r\n }\r\n if (ctx.strokeStyle != \"\") ctx.stroke();\r\n let markers = this.getMarkers();\r\n if (markers != null) {\r\n if (this.style(\"marker-start\").isUrlDefinition()) {\r\n let marker = this.style(\"marker-start\").getDefinition();\r\n marker.render(ctx, markers[0][0], markers[0][1]);\r\n }\r\n if (this.style(\"marker-mid\").isUrlDefinition()) {\r\n let marker = this.style(\"marker-mid\").getDefinition();\r\n for (let i = 1; i < markers.length - 1; i++) {\r\n marker.render(ctx, markers[i][0], markers[i][1]);\r\n }\r\n }\r\n if (this.style(\"marker-end\").isUrlDefinition()) {\r\n let marker = this.style(\"marker-end\").getDefinition();\r\n marker.render(ctx, markers[markers.length - 1][0], markers[markers.length - 1][1]);\r\n }\r\n }\r\n };\r\n this.getBoundingBox = function() {\r\n return this.path();\r\n };\r\n this.getMarkers = function() {\r\n return null;\r\n };\r\n };\r\n svg.Element.PathElementBase.prototype = new svg.Element.RenderedElementBase();\r\n svg.Element.svg = function(node) {\r\n this.base = svg.Element.RenderedElementBase;\r\n this.base(node);\r\n this.baseClearContext = this.clearContext;\r\n this.clearContext = function(ctx) {\r\n this.baseClearContext(ctx);\r\n svg.ViewPort.RemoveCurrent();\r\n };\r\n this.baseSetContext = this.setContext;\r\n this.setContext = function(ctx) {\r\n ctx.strokeStyle = \"rgba(0,0,0,0)\";\r\n ctx.lineCap = \"butt\";\r\n ctx.lineJoin = \"miter\";\r\n ctx.miterLimit = 4;\r\n this.baseSetContext(ctx);\r\n if (!this.attribute(\"x\").hasValue()) this.attribute(\"x\", true).value = 0;\r\n if (!this.attribute(\"y\").hasValue()) this.attribute(\"y\", true).value = 0;\r\n ctx.translate(this.attribute(\"x\").toPixels(\"x\"), this.attribute(\"y\").toPixels(\"y\"));\r\n let width = svg.ViewPort.width();\r\n let height = svg.ViewPort.height();\r\n if (!this.attribute(\"width\").hasValue()) this.attribute(\"width\", true).value = \"100%\";\r\n if (!this.attribute(\"height\").hasValue()) this.attribute(\"height\", true).value = \"100%\";\r\n if (typeof this.root == \"undefined\") {\r\n width = this.attribute(\"width\").toPixels(\"x\");\r\n height = this.attribute(\"height\").toPixels(\"y\");\r\n let x = 0;\r\n let y = 0;\r\n if (this.attribute(\"refX\").hasValue() && this.attribute(\"refY\").hasValue()) {\r\n x = -this.attribute(\"refX\").toPixels(\"x\");\r\n y = -this.attribute(\"refY\").toPixels(\"y\");\r\n }\r\n ctx.beginPath();\r\n ctx.moveTo(x, y);\r\n ctx.lineTo(width, y);\r\n ctx.lineTo(width, height);\r\n ctx.lineTo(x, height);\r\n ctx.closePath();\r\n ctx.clip();\r\n }\r\n svg.ViewPort.SetCurrent(width, height);\r\n if (this.attribute(\"viewBox\").hasValue()) {\r\n let viewBox = svg.ToNumberArray(this.attribute(\"viewBox\").value);\r\n let minX = viewBox[0];\r\n let minY = viewBox[1];\r\n width = viewBox[2];\r\n height = viewBox[3];\r\n svg.AspectRatio(ctx, this.attribute(\"preserveAspectRatio\").value, svg.ViewPort.width(), width, svg.ViewPort.height(), height, minX, minY, this.attribute(\"refX\").value, this.attribute(\"refY\").value);\r\n svg.ViewPort.RemoveCurrent();\r\n svg.ViewPort.SetCurrent(viewBox[2], viewBox[3]);\r\n }\r\n };\r\n };\r\n svg.Element.svg.prototype = new svg.Element.RenderedElementBase();\r\n svg.Element.rect = function(node) {\r\n this.base = svg.Element.PathElementBase;\r\n this.base(node);\r\n this.path = function(ctx) {\r\n let x = this.attribute(\"x\").toPixels(\"x\");\r\n let y = this.attribute(\"y\").toPixels(\"y\");\r\n let width = this.attribute(\"width\").toPixels(\"x\");\r\n let height = this.attribute(\"height\").toPixels(\"y\");\r\n let rx = this.attribute(\"rx\").toPixels(\"x\");\r\n let ry = this.attribute(\"ry\").toPixels(\"y\");\r\n if (this.attribute(\"rx\").hasValue() && !this.attribute(\"ry\").hasValue()) ry = rx;\r\n if (this.attribute(\"ry\").hasValue() && !this.attribute(\"rx\").hasValue()) rx = ry;\r\n rx = Math.min(rx, width / 2);\r\n ry = Math.min(ry, height / 2);\r\n if (ctx != null) {\r\n ctx.beginPath();\r\n ctx.moveTo(x + rx, y);\r\n ctx.lineTo(x + width - rx, y);\r\n ctx.quadraticCurveTo(x + width, y, x + width, y + ry);\r\n ctx.lineTo(x + width, y + height - ry);\r\n ctx.quadraticCurveTo(x + width, y + height, x + width - rx, y + height);\r\n ctx.lineTo(x + rx, y + height);\r\n ctx.quadraticCurveTo(x, y + height, x, y + height - ry);\r\n ctx.lineTo(x, y + ry);\r\n ctx.quadraticCurveTo(x, y, x + rx, y);\r\n ctx.closePath();\r\n }\r\n return new svg.BoundingBox(x, y, x + width, y + height);\r\n };\r\n };\r\n svg.Element.rect.prototype = new svg.Element.PathElementBase();\r\n svg.Element.circle = function(node) {\r\n this.base = svg.Element.PathElementBase;\r\n this.base(node);\r\n this.path = function(ctx) {\r\n let cx = this.attribute(\"cx\").toPixels(\"x\");\r\n let cy = this.attribute(\"cy\").toPixels(\"y\");\r\n let r = this.attribute(\"r\").toPixels();\r\n if (ctx != null) {\r\n ctx.beginPath();\r\n ctx.arc(cx, cy, r, 0, Math.PI * 2, true);\r\n ctx.closePath();\r\n }\r\n return new svg.BoundingBox(cx - r, cy - r, cx + r, cy + r);\r\n };\r\n };\r\n svg.Element.circle.prototype = new svg.Element.PathElementBase();\r\n svg.Element.ellipse = function(node) {\r\n this.base = svg.Element.PathElementBase;\r\n this.base(node);\r\n this.path = function(ctx) {\r\n let KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\r\n let rx = this.attribute(\"rx\").toPixels(\"x\");\r\n let ry = this.attribute(\"ry\").toPixels(\"y\");\r\n let cx = this.attribute(\"cx\").toPixels(\"x\");\r\n let cy = this.attribute(\"cy\").toPixels(\"y\");\r\n if (ctx != null) {\r\n ctx.beginPath();\r\n ctx.moveTo(cx, cy - ry);\r\n ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);\r\n ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);\r\n ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);\r\n ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);\r\n ctx.closePath();\r\n }\r\n return new svg.BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\r\n };\r\n };\r\n svg.Element.ellipse.prototype = new svg.Element.PathElementBase();\r\n svg.Element.line = function(node) {\r\n this.base = svg.Element.PathElementBase;\r\n this.base(node);\r\n this.getPoints = function() {\r\n return [ new svg.Point(this.attribute(\"x1\").toPixels(\"x\"), this.attribute(\"y1\").toPixels(\"y\")), new svg.Point(this.attribute(\"x2\").toPixels(\"x\"), this.attribute(\"y2\").toPixels(\"y\")) ];\r\n };\r\n this.path = function(ctx) {\r\n let points = this.getPoints();\r\n if (ctx != null) {\r\n ctx.beginPath();\r\n ctx.moveTo(points[0].x, points[0].y);\r\n ctx.lineTo(points[1].x, points[1].y);\r\n }\r\n return new svg.BoundingBox(points[0].x, points[0].y, points[1].x, points[1].y);\r\n };\r\n this.getMarkers = function() {\r\n let points = this.getPoints();\r\n let a = points[0].angleTo(points[1]);\r\n return [ [ points[0], a ], [ points[1], a ] ];\r\n };\r\n };\r\n svg.Element.line.prototype = new svg.Element.PathElementBase();\r\n svg.Element.polyline = function(node) {\r\n this.base = svg.Element.PathElementBase;\r\n this.base(node);\r\n this.points = svg.CreatePath(this.attribute(\"points\").value);\r\n this.path = function(ctx) {\r\n let bb = new svg.BoundingBox(this.points[0].x, this.points[0].y);\r\n if (ctx != null) {\r\n ctx.beginPath();\r\n ctx.moveTo(this.points[0].x, this.points[0].y);\r\n }\r\n for (let i = 1; i < this.points.length; i++) {\r\n bb.addPoint(this.points[i].x, this.points[i].y);\r\n if (ctx != null) ctx.lineTo(this.points[i].x, this.points[i].y);\r\n }\r\n return bb;\r\n };\r\n this.getMarkers = function() {\r\n let markers = [];\r\n for (let i = 0; i < this.points.length - 1; i++) {\r\n markers.push([ this.points[i], this.points[i].angleTo(this.points[i + 1]) ]);\r\n }\r\n markers.push([ this.points[this.points.length - 1], markers[markers.length - 1][1] ]);\r\n return markers;\r\n };\r\n };\r\n svg.Element.polyline.prototype = new svg.Element.PathElementBase();\r\n svg.Element.polygon = function(node) {\r\n this.base = svg.Element.polyline;\r\n this.base(node);\r\n this.basePath = this.path;\r\n this.path = function(ctx) {\r\n let bb = this.basePath(ctx);\r\n if (ctx != null) {\r\n ctx.lineTo(this.points[0].x, this.points[0].y);\r\n ctx.closePath();\r\n }\r\n return bb;\r\n };\r\n };\r\n svg.Element.polygon.prototype = new svg.Element.polyline();\r\n svg.Element.path = function(node) {\r\n this.base = svg.Element.PathElementBase;\r\n this.base(node);\r\n let d = this.attribute(\"d\").value;\r\n d = d.replace(/,/gm, \" \");\r\n d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm, \"$1 $2\");\r\n d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm, \"$1 $2\");\r\n d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([^\\s])/gm, \"$1 $2\");\r\n d = d.replace(/([^\\s])([MmZzLlHhVvCcSsQqTtAa])/gm, \"$1 $2\");\r\n d = d.replace(/([0-9])([+\\-])/gm, \"$1 $2\");\r\n d = d.replace(/(\\.[0-9]*)(\\.)/gm, \"$1 $2\");\r\n d = d.replace(/([Aa](\\s+[0-9]+){3})\\s+([01])\\s*([01])/gm, \"$1 $3 $4 \");\r\n d = svg.compressSpaces(d);\r\n d = svg.trim(d);\r\n this.PathParser = new function(d) {\r\n this.tokens = d.split(\" \");\r\n this.reset = function() {\r\n this.i = -1;\r\n this.command = \"\";\r\n this.previousCommand = \"\";\r\n this.start = new svg.Point(0, 0);\r\n this.control = new svg.Point(0, 0);\r\n this.current = new svg.Point(0, 0);\r\n this.points = [];\r\n this.angles = [];\r\n };\r\n this.isEnd = function() {\r\n return this.i >= this.tokens.length - 1;\r\n };\r\n this.isCommandOrEnd = function() {\r\n if (this.isEnd()) return true;\r\n return this.tokens[this.i + 1].match(/^[A-Za-z]$/) != null;\r\n };\r\n this.isRelativeCommand = function() {\r\n switch (this.command) {\r\n case \"m\":\r\n case \"l\":\r\n case \"h\":\r\n case \"v\":\r\n case \"c\":\r\n case \"s\":\r\n case \"q\":\r\n case \"t\":\r\n case \"a\":\r\n case \"z\":\r\n return true;\r\n break;\r\n }\r\n return false;\r\n };\r\n this.getToken = function() {\r\n this.i++;\r\n return this.tokens[this.i];\r\n };\r\n this.getScalar = function() {\r\n return parseFloat(this.getToken());\r\n };\r\n this.nextCommand = function() {\r\n this.previousCommand = this.command;\r\n this.command = this.getToken();\r\n };\r\n this.getPoint = function() {\r\n let p = new svg.Point(this.getScalar(), this.getScalar());\r\n return this.makeAbsolute(p);\r\n };\r\n this.getAsControlPoint = function() {\r\n let p = this.getPoint();\r\n this.control = p;\r\n return p;\r\n };\r\n this.getAsCurrentPoint = function() {\r\n let p = this.getPoint();\r\n this.current = p;\r\n return p;\r\n };\r\n this.getReflectedControlPoint = function() {\r\n if (this.previousCommand.toLowerCase() != \"c\" && this.previousCommand.toLowerCase() != \"s\" && this.previousCommand.toLowerCase() != \"q\" && this.previousCommand.toLowerCase() != \"t\") {\r\n return this.current;\r\n }\r\n let p = new svg.Point(2 * this.current.x - this.control.x, 2 * this.current.y - this.control.y);\r\n return p;\r\n };\r\n this.makeAbsolute = function(p) {\r\n if (this.isRelativeCommand()) {\r\n p.x += this.current.x;\r\n p.y += this.current.y;\r\n }\r\n return p;\r\n };\r\n this.addMarker = function(p, from, priorTo) {\r\n if (priorTo != null && this.angles.length > 0 && this.angles[this.angles.length - 1] == null) {\r\n this.angles[this.angles.length - 1] = this.points[this.points.length - 1].angleTo(priorTo);\r\n }\r\n this.addMarkerAngle(p, from == null ? null : from.angleTo(p));\r\n };\r\n this.addMarkerAngle = function(p, a) {\r\n this.points.push(p);\r\n this.angles.push(a);\r\n };\r\n this.getMarkerPoints = function() {\r\n return this.points;\r\n };\r\n this.getMarkerAngles = function() {\r\n for (let i = 0; i < this.angles.length; i++) {\r\n if (this.angles[i] == null) {\r\n for (let j = i + 1; j < this.angles.length; j++) {\r\n if (this.angles[j] != null) {\r\n this.angles[i] = this.angles[j];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return this.angles;\r\n };\r\n }(d);\r\n this.path = function(ctx) {\r\n let pp = this.PathParser;\r\n pp.reset();\r\n let bb = new svg.BoundingBox();\r\n if (ctx != null) ctx.beginPath();\r\n while (!pp.isEnd()) {\r\n pp.nextCommand();\r\n switch (pp.command) {\r\n case \"M\":\r\n case \"m\":\r\n let p = pp.getAsCurrentPoint();\r\n pp.addMarker(p);\r\n bb.addPoint(p.x, p.y);\r\n if (ctx != null) ctx.moveTo(p.x, p.y);\r\n pp.start = pp.current;\r\n while (!pp.isCommandOrEnd()) {\r\n let p = pp.getAsCurrentPoint();\r\n pp.addMarker(p, pp.start);\r\n bb.addPoint(p.x, p.y);\r\n if (ctx != null) ctx.lineTo(p.x, p.y);\r\n }\r\n break;\r\n\r\n case \"L\":\r\n case \"l\":\r\n while (!pp.isCommandOrEnd()) {\r\n let c = pp.current;\r\n let p = pp.getAsCurrentPoint();\r\n pp.addMarker(p, c);\r\n bb.addPoint(p.x, p.y);\r\n if (ctx != null) ctx.lineTo(p.x, p.y);\r\n }\r\n break;\r\n\r\n case \"H\":\r\n case \"h\":\r\n while (!pp.isCommandOrEnd()) {\r\n let newP = new svg.Point((pp.isRelativeCommand() ? pp.current.x : 0) + pp.getScalar(), pp.current.y);\r\n pp.addMarker(newP, pp.current);\r\n pp.current = newP;\r\n bb.addPoint(pp.current.x, pp.current.y);\r\n if (ctx != null) ctx.lineTo(pp.current.x, pp.current.y);\r\n }\r\n break;\r\n\r\n case \"V\":\r\n case \"v\":\r\n while (!pp.isCommandOrEnd()) {\r\n let newP = new svg.Point(pp.current.x, (pp.isRelativeCommand() ? pp.current.y : 0) + pp.getScalar());\r\n pp.addMarker(newP, pp.current);\r\n pp.current = newP;\r\n bb.addPoint(pp.current.x, pp.current.y);\r\n if (ctx != null) ctx.lineTo(pp.current.x, pp.current.y);\r\n }\r\n break;\r\n\r\n case \"C\":\r\n case \"c\":\r\n while (!pp.isCommandOrEnd()) {\r\n let curr = pp.current;\r\n let p1 = pp.getPoint();\r\n let cntrl = pp.getAsControlPoint();\r\n let cp = pp.getAsCurrentPoint();\r\n pp.addMarker(cp, cntrl, p1);\r\n bb.addBezierCurve(curr.x, curr.y, p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);\r\n if (ctx != null) ctx.bezierCurveTo(p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);\r\n }\r\n break;\r\n\r\n case \"S\":\r\n case \"s\":\r\n while (!pp.isCommandOrEnd()) {\r\n let curr = pp.current;\r\n let p1 = pp.getReflectedControlPoint();\r\n let cntrl = pp.getAsControlPoint();\r\n let cp = pp.getAsCurrentPoint();\r\n pp.addMarker(cp, cntrl, p1);\r\n bb.addBezierCurve(curr.x, curr.y, p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);\r\n if (ctx != null) ctx.bezierCurveTo(p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y);\r\n }\r\n break;\r\n\r\n case \"Q\":\r\n case \"q\":\r\n while (!pp.isCommandOrEnd()) {\r\n let curr = pp.current;\r\n let cntrl = pp.getAsControlPoint();\r\n let cp = pp.getAsCurrentPoint();\r\n pp.addMarker(cp, cntrl, cntrl);\r\n bb.addQuadraticCurve(curr.x, curr.y, cntrl.x, cntrl.y, cp.x, cp.y);\r\n if (ctx != null) ctx.quadraticCurveTo(cntrl.x, cntrl.y, cp.x, cp.y);\r\n }\r\n break;\r\n\r\n case \"T\":\r\n case \"t\":\r\n while (!pp.isCommandOrEnd()) {\r\n let curr = pp.current;\r\n let cntrl = pp.getReflectedControlPoint();\r\n pp.control = cntrl;\r\n let cp = pp.getAsCurrentPoint();\r\n pp.addMarker(cp, cntrl, cntrl);\r\n bb.addQuadraticCurve(curr.x, curr.y, cntrl.x, cntrl.y, cp.x, cp.y);\r\n if (ctx != null) ctx.quadraticCurveTo(cntrl.x, cntrl.y, cp.x, cp.y);\r\n }\r\n break;\r\n\r\n case \"A\":\r\n case \"a\":\r\n while (!pp.isCommandOrEnd()) {\r\n let curr = pp.current;\r\n let rx = pp.getScalar();\r\n let ry = pp.getScalar();\r\n let xAxisRotation = pp.getScalar() * (Math.PI / 180);\r\n let largeArcFlag = pp.getScalar();\r\n let sweepFlag = pp.getScalar();\r\n let cp = pp.getAsCurrentPoint();\r\n let currp = new svg.Point(Math.cos(xAxisRotation) * (curr.x - cp.x) / 2 + Math.sin(xAxisRotation) * (curr.y - cp.y) / 2, -Math.sin(xAxisRotation) * (curr.x - cp.x) / 2 + Math.cos(xAxisRotation) * (curr.y - cp.y) / 2);\r\n let l = Math.pow(currp.x, 2) / Math.pow(rx, 2) + Math.pow(currp.y, 2) / Math.pow(ry, 2);\r\n if (l > 1) {\r\n rx *= Math.sqrt(l);\r\n ry *= Math.sqrt(l);\r\n }\r\n let s = (largeArcFlag == sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rx, 2) * Math.pow(ry, 2) - Math.pow(rx, 2) * Math.pow(currp.y, 2) - Math.pow(ry, 2) * Math.pow(currp.x, 2)) / (Math.pow(rx, 2) * Math.pow(currp.y, 2) + Math.pow(ry, 2) * Math.pow(currp.x, 2)));\r\n if (isNaN(s)) s = 0;\r\n let cpp = new svg.Point(s * rx * currp.y / ry, s * -ry * currp.x / rx);\r\n let centp = new svg.Point((curr.x + cp.x) / 2 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (curr.y + cp.y) / 2 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y);\r\n let m = function(v) {\r\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\r\n };\r\n let r = function(u, v) {\r\n return (u[0] * v[0] + u[1] * v[1]) / (m(u) * m(v));\r\n };\r\n let a = function(u, v) {\r\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(r(u, v));\r\n };\r\n let a1 = a([ 1, 0 ], [ (currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry ]);\r\n let u = [ (currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry ];\r\n let v = [ (-currp.x - cpp.x) / rx, (-currp.y - cpp.y) / ry ];\r\n let ad = a(u, v);\r\n if (r(u, v) <= -1) ad = Math.PI;\r\n if (r(u, v) >= 1) ad = 0;\r\n let dir = 1 - sweepFlag ? 1 : -1;\r\n let ah = a1 + dir * (ad / 2);\r\n let halfWay = new svg.Point(centp.x + rx * Math.cos(ah), centp.y + ry * Math.sin(ah));\r\n pp.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);\r\n pp.addMarkerAngle(cp, ah - dir * Math.PI);\r\n bb.addPoint(cp.x, cp.y);\r\n if (ctx != null) {\r\n let r = rx > ry ? rx : ry;\r\n let sx = rx > ry ? 1 : rx / ry;\r\n let sy = rx > ry ? ry / rx : 1;\r\n ctx.translate(centp.x, centp.y);\r\n ctx.rotate(xAxisRotation);\r\n ctx.scale(sx, sy);\r\n ctx.arc(0, 0, r, a1, a1 + ad, 1 - sweepFlag);\r\n ctx.scale(1 / sx, 1 / sy);\r\n ctx.rotate(-xAxisRotation);\r\n ctx.translate(-centp.x, -centp.y);\r\n }\r\n }\r\n break;\r\n\r\n case \"Z\":\r\n case \"z\":\r\n if (ctx != null) ctx.closePath();\r\n pp.current = pp.start;\r\n }\r\n }\r\n return bb;\r\n };\r\n this.getMarkers = function() {\r\n let points = this.PathParser.getMarkerPoints();\r\n let angles = this.PathParser.getMarkerAngles();\r\n let markers = [];\r\n for (let i = 0; i < points.length; i++) {\r\n markers.push([ points[i], angles[i] ]);\r\n }\r\n return markers;\r\n };\r\n };\r\n svg.Element.path.prototype = new svg.Element.PathElementBase();\r\n svg.Element.pattern = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n this.createPattern = function(_ctx, _element) {\r\n let width = this.attribute(\"width\").toPixels(\"x\", true);\r\n let height = this.attribute(\"height\").toPixels(\"y\", true);\r\n let tempSvg = new svg.Element.svg();\r\n tempSvg.attributes[\"viewBox\"] = new svg.Property(\"viewBox\", this.attribute(\"viewBox\").value);\r\n tempSvg.attributes[\"width\"] = new svg.Property(\"width\", width + \"px\");\r\n tempSvg.attributes[\"height\"] = new svg.Property(\"height\", height + \"px\");\r\n tempSvg.attributes[\"transform\"] = new svg.Property(\"transform\", this.attribute(\"patternTransform\").value);\r\n tempSvg.children = this.children;\r\n let c = document.createElement(\"canvas\");\r\n c.width = width;\r\n c.height = height;\r\n let cctx = c.getContext(\"2d\");\r\n if (this.attribute(\"x\").hasValue() && this.attribute(\"y\").hasValue()) {\r\n cctx.translate(this.attribute(\"x\").toPixels(\"x\", true), this.attribute(\"y\").toPixels(\"y\", true));\r\n }\r\n for (let x = -1; x <= 1; x++) {\r\n for (let y = -1; y <= 1; y++) {\r\n cctx.save();\r\n cctx.translate(x * c.width, y * c.height);\r\n tempSvg.render(cctx);\r\n cctx.restore();\r\n }\r\n }\r\n let pattern = ctx.createPattern(c, \"repeat\");\r\n return pattern;\r\n };\r\n };\r\n svg.Element.pattern.prototype = new svg.Element.ElementBase();\r\n svg.Element.marker = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n this.baseRender = this.render;\r\n this.render = function(ctx, point, angle) {\r\n ctx.translate(point.x, point.y);\r\n if (this.attribute(\"orient\").valueOrDefault(\"auto\") == \"auto\") ctx.rotate(angle);\r\n if (this.attribute(\"markerUnits\").valueOrDefault(\"strokeWidth\") == \"strokeWidth\") ctx.scale(ctx.lineWidth, ctx.lineWidth);\r\n ctx.save();\r\n let tempSvg = new svg.Element.svg();\r\n tempSvg.attributes[\"viewBox\"] = new svg.Property(\"viewBox\", this.attribute(\"viewBox\").value);\r\n tempSvg.attributes[\"refX\"] = new svg.Property(\"refX\", this.attribute(\"refX\").value);\r\n tempSvg.attributes[\"refY\"] = new svg.Property(\"refY\", this.attribute(\"refY\").value);\r\n tempSvg.attributes[\"width\"] = new svg.Property(\"width\", this.attribute(\"markerWidth\").value);\r\n tempSvg.attributes[\"height\"] = new svg.Property(\"height\", this.attribute(\"markerHeight\").value);\r\n tempSvg.attributes[\"fill\"] = new svg.Property(\"fill\", this.attribute(\"fill\").valueOrDefault(\"black\"));\r\n tempSvg.attributes[\"stroke\"] = new svg.Property(\"stroke\", this.attribute(\"stroke\").valueOrDefault(\"none\"));\r\n tempSvg.children = this.children;\r\n tempSvg.render(ctx);\r\n ctx.restore();\r\n if (this.attribute(\"markerUnits\").valueOrDefault(\"strokeWidth\") == \"strokeWidth\") ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\r\n if (this.attribute(\"orient\").valueOrDefault(\"auto\") == \"auto\") ctx.rotate(-angle);\r\n ctx.translate(-point.x, -point.y);\r\n };\r\n };\r\n svg.Element.marker.prototype = new svg.Element.ElementBase();\r\n svg.Element.defs = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n this.render = function(_ctx) {};\r\n };\r\n svg.Element.defs.prototype = new svg.Element.ElementBase();\r\n svg.Element.GradientBase = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n this.gradientUnits = this.attribute(\"gradientUnits\").valueOrDefault(\"objectBoundingBox\");\r\n this.stops = [];\r\n for (let i = 0; i < this.children.length; i++) {\r\n let child = this.children[i];\r\n if (child.type == \"stop\") this.stops.push(child);\r\n }\r\n this.getGradient = function() {};\r\n this.createGradient = function(ctx, element, parentOpacityProp) {\r\n let stopsContainer = this;\r\n if (this.getHrefAttribute().hasValue()) {\r\n stopsContainer = this.getHrefAttribute().getDefinition();\r\n }\r\n let addParentOpacity = function(color) {\r\n if (parentOpacityProp.hasValue()) {\r\n let p = new svg.Property(\"color\", color);\r\n return p.addOpacity(parentOpacityProp.value).value;\r\n }\r\n return color;\r\n };\r\n let g = this.getGradient(ctx, element);\r\n if (g == null) return addParentOpacity(stopsContainer.stops[stopsContainer.stops.length - 1].color);\r\n for (let i = 0; i < stopsContainer.stops.length; i++) {\r\n g.addColorStop(stopsContainer.stops[i].offset, addParentOpacity(stopsContainer.stops[i].color));\r\n }\r\n if (this.attribute(\"gradientTransform\").hasValue()) {\r\n let rootView = svg.ViewPort.viewPorts[0];\r\n let rect = new svg.Element.rect();\r\n rect.attributes[\"x\"] = new svg.Property(\"x\", -svg.MAX_VIRTUAL_PIXELS / 3);\r\n rect.attributes[\"y\"] = new svg.Property(\"y\", -svg.MAX_VIRTUAL_PIXELS / 3);\r\n rect.attributes[\"width\"] = new svg.Property(\"width\", svg.MAX_VIRTUAL_PIXELS);\r\n rect.attributes[\"height\"] = new svg.Property(\"height\", svg.MAX_VIRTUAL_PIXELS);\r\n let group = new svg.Element.g();\r\n group.attributes[\"transform\"] = new svg.Property(\"transform\", this.attribute(\"gradientTransform\").value);\r\n group.children = [ rect ];\r\n let tempSvg = new svg.Element.svg();\r\n tempSvg.attributes[\"x\"] = new svg.Property(\"x\", 0);\r\n tempSvg.attributes[\"y\"] = new svg.Property(\"y\", 0);\r\n tempSvg.attributes[\"width\"] = new svg.Property(\"width\", rootView.width);\r\n tempSvg.attributes[\"height\"] = new svg.Property(\"height\", rootView.height);\r\n tempSvg.children = [ group ];\r\n let c = document.createElement(\"canvas\");\r\n c.width = rootView.width;\r\n c.height = rootView.height;\r\n let tempCtx = c.getContext(\"2d\");\r\n tempCtx.fillStyle = g;\r\n tempSvg.render(tempCtx);\r\n return tempCtx.createPattern(c, \"no-repeat\");\r\n }\r\n return g;\r\n };\r\n };\r\n svg.Element.GradientBase.prototype = new svg.Element.ElementBase();\r\n svg.Element.linearGradient = function(node) {\r\n this.base = svg.Element.GradientBase;\r\n this.base(node);\r\n this.getGradient = function(ctx, element) {\r\n let bb = element.getBoundingBox();\r\n if (!this.attribute(\"x1\").hasValue() && !this.attribute(\"y1\").hasValue() && !this.attribute(\"x2\").hasValue() && !this.attribute(\"y2\").hasValue()) {\r\n this.attribute(\"x1\", true).value = 0;\r\n this.attribute(\"y1\", true).value = 0;\r\n this.attribute(\"x2\", true).value = 1;\r\n this.attribute(\"y2\", true).value = 0;\r\n }\r\n let x1 = this.gradientUnits == \"objectBoundingBox\" ? bb.x() + bb.width() * this.attribute(\"x1\").numValue() : this.attribute(\"x1\").toPixels(\"x\");\r\n let y1 = this.gradientUnits == \"objectBoundingBox\" ? bb.y() + bb.height() * this.attribute(\"y1\").numValue() : this.attribute(\"y1\").toPixels(\"y\");\r\n let x2 = this.gradientUnits == \"objectBoundingBox\" ? bb.x() + bb.width() * this.attribute(\"x2\").numValue() : this.attribute(\"x2\").toPixels(\"x\");\r\n let y2 = this.gradientUnits == \"objectBoundingBox\" ? bb.y() + bb.height() * this.attribute(\"y2\").numValue() : this.attribute(\"y2\").toPixels(\"y\");\r\n if (x1 == x2 && y1 == y2) return null;\r\n return ctx.createLinearGradient(x1, y1, x2, y2);\r\n };\r\n };\r\n svg.Element.linearGradient.prototype = new svg.Element.GradientBase();\r\n svg.Element.radialGradient = function(node) {\r\n this.base = svg.Element.GradientBase;\r\n this.base(node);\r\n this.getGradient = function(ctx, element) {\r\n let bb = element.getBoundingBox();\r\n if (!this.attribute(\"cx\").hasValue()) this.attribute(\"cx\", true).value = \"50%\";\r\n if (!this.attribute(\"cy\").hasValue()) this.attribute(\"cy\", true).value = \"50%\";\r\n if (!this.attribute(\"r\").hasValue()) this.attribute(\"r\", true).value = \"50%\";\r\n let cx = this.gradientUnits == \"objectBoundingBox\" ? bb.x() + bb.width() * this.attribute(\"cx\").numValue() : this.attribute(\"cx\").toPixels(\"x\");\r\n let cy = this.gradientUnits == \"objectBoundingBox\" ? bb.y() + bb.height() * this.attribute(\"cy\").numValue() : this.attribute(\"cy\").toPixels(\"y\");\r\n let fx = cx;\r\n let fy = cy;\r\n if (this.attribute(\"fx\").hasValue()) {\r\n fx = this.gradientUnits == \"objectBoundingBox\" ? bb.x() + bb.width() * this.attribute(\"fx\").numValue() : this.attribute(\"fx\").toPixels(\"x\");\r\n }\r\n if (this.attribute(\"fy\").hasValue()) {\r\n fy = this.gradientUnits == \"objectBoundingBox\" ? bb.y() + bb.height() * this.attribute(\"fy\").numValue() : this.attribute(\"fy\").toPixels(\"y\");\r\n }\r\n let r = this.gradientUnits == \"objectBoundingBox\" ? (bb.width() + bb.height()) / 2 * this.attribute(\"r\").numValue() : this.attribute(\"r\").toPixels();\r\n return ctx.createRadialGradient(fx, fy, 0, cx, cy, r);\r\n };\r\n };\r\n svg.Element.radialGradient.prototype = new svg.Element.GradientBase();\r\n svg.Element.stop = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n this.offset = this.attribute(\"offset\").numValue();\r\n if (this.offset < 0) this.offset = 0;\r\n if (this.offset > 1) this.offset = 1;\r\n let stopColor = this.style(\"stop-color\");\r\n if (this.style(\"stop-opacity\").hasValue()) stopColor = stopColor.addOpacity(this.style(\"stop-opacity\").value);\r\n this.color = stopColor.value;\r\n };\r\n svg.Element.stop.prototype = new svg.Element.ElementBase();\r\n svg.Element.AnimateBase = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n svg.Animations.push(this);\r\n this.duration = 0;\r\n this.begin = this.attribute(\"begin\").toMilliseconds();\r\n this.maxDuration = this.begin + this.attribute(\"dur\").toMilliseconds();\r\n this.getProperty = function() {\r\n let attributeType = this.attribute(\"attributeType\").value;\r\n let attributeName = this.attribute(\"attributeName\").value;\r\n if (attributeType == \"CSS\") {\r\n return this.parent.style(attributeName, true);\r\n }\r\n return this.parent.attribute(attributeName, true);\r\n };\r\n this.initialValue = null;\r\n this.initialUnits = \"\";\r\n this.removed = false;\r\n this.calcValue = function() {\r\n return \"\";\r\n };\r\n this.update = function(delta) {\r\n if (this.initialValue == null) {\r\n this.initialValue = this.getProperty().value;\r\n this.initialUnits = this.getProperty().getUnits();\r\n }\r\n if (this.duration > this.maxDuration) {\r\n if (this.attribute(\"repeatCount\").value == \"indefinite\" || this.attribute(\"repeatDur\").value == \"indefinite\") {\r\n this.duration = 0;\r\n } else if (this.attribute(\"fill\").valueOrDefault(\"remove\") == \"remove\" && !this.removed) {\r\n this.removed = true;\r\n this.getProperty().value = this.initialValue;\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n this.duration = this.duration + delta;\r\n let updated = false;\r\n if (this.begin < this.duration) {\r\n let newValue = this.calcValue();\r\n if (this.attribute(\"type\").hasValue()) {\r\n let type = this.attribute(\"type\").value;\r\n newValue = type + \"(\" + newValue + \")\";\r\n }\r\n this.getProperty().value = newValue;\r\n updated = true;\r\n }\r\n return updated;\r\n };\r\n this.from = this.attribute(\"from\");\r\n this.to = this.attribute(\"to\");\r\n this.values = this.attribute(\"values\");\r\n if (this.values.hasValue()) this.values.value = this.values.value.split(\";\");\r\n this.progress = function() {\r\n let ret = {\r\n progress: (this.duration - this.begin) / (this.maxDuration - this.begin)\r\n };\r\n if (this.values.hasValue()) {\r\n let p = ret.progress * (this.values.value.length - 1);\r\n let lb = Math.floor(p), ub = Math.ceil(p);\r\n ret.from = new svg.Property(\"from\", parseFloat(this.values.value[lb]));\r\n ret.to = new svg.Property(\"to\", parseFloat(this.values.value[ub]));\r\n ret.progress = (p - lb) / (ub - lb);\r\n } else {\r\n ret.from = this.from;\r\n ret.to = this.to;\r\n }\r\n return ret;\r\n };\r\n };\r\n svg.Element.AnimateBase.prototype = new svg.Element.ElementBase();\r\n svg.Element.animate = function(node) {\r\n this.base = svg.Element.AnimateBase;\r\n this.base(node);\r\n this.calcValue = function() {\r\n let p = this.progress();\r\n let newValue = p.from.numValue() + (p.to.numValue() - p.from.numValue()) * p.progress;\r\n return newValue + this.initialUnits;\r\n };\r\n };\r\n svg.Element.animate.prototype = new svg.Element.AnimateBase();\r\n svg.Element.animateColor = function(node) {\r\n this.base = svg.Element.AnimateBase;\r\n this.base(node);\r\n this.calcValue = function() {\r\n let p = this.progress();\r\n let from = new RGBColor(p.from.value);\r\n let to = new RGBColor(p.to.value);\r\n if (from.ok && to.ok) {\r\n let r = from.r + (to.r - from.r) * p.progress;\r\n let g = from.g + (to.g - from.g) * p.progress;\r\n let b = from.b + (to.b - from.b) * p.progress;\r\n return \"rgb(\" + parseInt(r, 10) + \",\" + parseInt(g, 10) + \",\" + parseInt(b, 10) + \")\";\r\n }\r\n return this.attribute(\"from\").value;\r\n };\r\n };\r\n svg.Element.animateColor.prototype = new svg.Element.AnimateBase();\r\n svg.Element.animateTransform = function(node) {\r\n this.base = svg.Element.AnimateBase;\r\n this.base(node);\r\n this.calcValue = function() {\r\n let p = this.progress();\r\n let from = svg.ToNumberArray(p.from.value);\r\n let to = svg.ToNumberArray(p.to.value);\r\n let newValue = \"\";\r\n for (let i = 0; i < from.length; i++) {\r\n newValue += from[i] + (to[i] - from[i]) * p.progress + \" \";\r\n }\r\n return newValue;\r\n };\r\n };\r\n svg.Element.animateTransform.prototype = new svg.Element.animate();\r\n svg.Element.font = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n this.horizAdvX = this.attribute(\"horiz-adv-x\").numValue();\r\n this.isRTL = false;\r\n this.isArabic = false;\r\n this.fontFace = null;\r\n this.missingGlyph = null;\r\n this.glyphs = [];\r\n for (let i = 0; i < this.children.length; i++) {\r\n let child = this.children[i];\r\n if (child.type == \"font-face\") {\r\n this.fontFace = child;\r\n if (child.style(\"font-family\").hasValue()) {\r\n svg.Definitions[child.style(\"font-family\").value] = this;\r\n }\r\n } else if (child.type == \"missing-glyph\") this.missingGlyph = child; else if (child.type == \"glyph\") {\r\n if (child.arabicForm != \"\") {\r\n this.isRTL = true;\r\n this.isArabic = true;\r\n if (typeof this.glyphs[child.unicode] == \"undefined\") this.glyphs[child.unicode] = [];\r\n this.glyphs[child.unicode][child.arabicForm] = child;\r\n } else {\r\n this.glyphs[child.unicode] = child;\r\n }\r\n }\r\n }\r\n };\r\n svg.Element.font.prototype = new svg.Element.ElementBase();\r\n svg.Element.fontface = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n this.ascent = this.attribute(\"ascent\").value;\r\n this.descent = this.attribute(\"descent\").value;\r\n this.unitsPerEm = this.attribute(\"units-per-em\").numValue();\r\n };\r\n svg.Element.fontface.prototype = new svg.Element.ElementBase();\r\n svg.Element.missingglyph = function(node) {\r\n this.base = svg.Element.path;\r\n this.base(node);\r\n this.horizAdvX = 0;\r\n };\r\n svg.Element.missingglyph.prototype = new svg.Element.path();\r\n svg.Element.glyph = function(node) {\r\n this.base = svg.Element.path;\r\n this.base(node);\r\n this.horizAdvX = this.attribute(\"horiz-adv-x\").numValue();\r\n this.unicode = this.attribute(\"unicode\").value;\r\n this.arabicForm = this.attribute(\"arabic-form\").value;\r\n };\r\n svg.Element.glyph.prototype = new svg.Element.path();\r\n svg.Element.text = function(node) {\r\n this.captureTextNodes = true;\r\n this.base = svg.Element.RenderedElementBase;\r\n this.base(node);\r\n this.baseSetContext = this.setContext;\r\n this.setContext = function(ctx) {\r\n this.baseSetContext(ctx);\r\n if (this.style(\"dominant-baseline\").hasValue()) ctx.textBaseline = this.style(\"dominant-baseline\").value;\r\n if (this.style(\"alignment-baseline\").hasValue()) ctx.textBaseline = this.style(\"alignment-baseline\").value;\r\n };\r\n this.getBoundingBox = function() {\r\n return new svg.BoundingBox(this.attribute(\"x\").toPixels(\"x\"), this.attribute(\"y\").toPixels(\"y\"), 0, 0);\r\n };\r\n this.renderChildren = function(ctx) {\r\n this.x = this.attribute(\"x\").toPixels(\"x\");\r\n this.y = this.attribute(\"y\").toPixels(\"y\");\r\n this.x += this.getAnchorDelta(ctx, this, 0);\r\n for (let i = 0; i < this.children.length; i++) {\r\n this.renderChild(ctx, this, i);\r\n }\r\n };\r\n this.getAnchorDelta = function(ctx, parent, startI) {\r\n let textAnchor = this.style(\"text-anchor\").valueOrDefault(\"start\");\r\n if (textAnchor != \"start\") {\r\n let width = 0;\r\n for (let i = startI; i < parent.children.length; i++) {\r\n let child = parent.children[i];\r\n if (i > startI && child.attribute(\"x\").hasValue()) break;\r\n width += child.measureTextRecursive(ctx);\r\n }\r\n return -1 * (textAnchor == \"end\" ? width : width / 2);\r\n }\r\n return 0;\r\n };\r\n this.renderChild = function(ctx, parent, i) {\r\n let child = parent.children[i];\r\n if (child.attribute(\"x\").hasValue()) {\r\n child.x = child.attribute(\"x\").toPixels(\"x\") + this.getAnchorDelta(ctx, parent, i);\r\n } else {\r\n if (this.attribute(\"dx\").hasValue()) this.x += this.attribute(\"dx\").toPixels(\"x\");\r\n if (child.attribute(\"dx\").hasValue()) this.x += child.attribute(\"dx\").toPixels(\"x\");\r\n child.x = this.x;\r\n }\r\n this.x = child.x + child.measureText(ctx);\r\n if (child.attribute(\"y\").hasValue()) {\r\n child.y = child.attribute(\"y\").toPixels(\"y\");\r\n } else {\r\n if (this.attribute(\"dy\").hasValue()) this.y += this.attribute(\"dy\").toPixels(\"y\");\r\n if (child.attribute(\"dy\").hasValue()) this.y += child.attribute(\"dy\").toPixels(\"y\");\r\n child.y = this.y;\r\n }\r\n this.y = child.y;\r\n child.render(ctx);\r\n for (let i = 0; i < child.children.length; i++) {\r\n this.renderChild(ctx, child, i);\r\n }\r\n };\r\n };\r\n svg.Element.text.prototype = new svg.Element.RenderedElementBase();\r\n svg.Element.TextElementBase = function(node) {\r\n this.base = svg.Element.RenderedElementBase;\r\n this.base(node);\r\n this.getGlyph = function(font, text, i) {\r\n let c = text[i];\r\n let glyph = null;\r\n if (font.isArabic) {\r\n let arabicForm = \"isolated\";\r\n if ((i == 0 || text[i - 1] == \" \") && i < text.length - 2 && text[i + 1] != \" \") arabicForm = \"terminal\";\r\n if (i > 0 && text[i - 1] != \" \" && i < text.length - 2 && text[i + 1] != \" \") arabicForm = \"medial\";\r\n if (i > 0 && text[i - 1] != \" \" && (i == text.length - 1 || text[i + 1] == \" \")) arabicForm = \"initial\";\r\n if (typeof font.glyphs[c] != \"undefined\") {\r\n glyph = font.glyphs[c][arabicForm];\r\n if (glyph == null && font.glyphs[c].type == \"glyph\") glyph = font.glyphs[c];\r\n }\r\n } else {\r\n glyph = font.glyphs[c];\r\n }\r\n if (glyph == null) glyph = font.missingGlyph;\r\n return glyph;\r\n };\r\n this.renderChildren = function(ctx) {\r\n let customFont = this.parent.style(\"font-family\").getDefinition();\r\n if (customFont != null) {\r\n let fontSize = this.parent.style(\"font-size\").numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize);\r\n let fontStyle = this.parent.style(\"font-style\").valueOrDefault(svg.Font.Parse(svg.ctx.font).fontStyle);\r\n let text = this.getText();\r\n if (customFont.isRTL) text = text.split(\"\").reverse().join(\"\");\r\n let dx = svg.ToNumberArray(this.parent.attribute(\"dx\").value);\r\n for (let i = 0; i < text.length; i++) {\r\n let glyph = this.getGlyph(customFont, text, i);\r\n let scale = fontSize / customFont.fontFace.unitsPerEm;\r\n ctx.translate(this.x, this.y);\r\n ctx.scale(scale, -scale);\r\n let lw = ctx.lineWidth;\r\n ctx.lineWidth = ctx.lineWidth * customFont.fontFace.unitsPerEm / fontSize;\r\n if (fontStyle == \"italic\") ctx.transform(1, 0, .4, 1, 0, 0);\r\n glyph.render(ctx);\r\n if (fontStyle == \"italic\") ctx.transform(1, 0, -.4, 1, 0, 0);\r\n ctx.lineWidth = lw;\r\n ctx.scale(1 / scale, -1 / scale);\r\n ctx.translate(-this.x, -this.y);\r\n this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / customFont.fontFace.unitsPerEm;\r\n if (typeof dx[i] != \"undefined\" && !isNaN(dx[i])) {\r\n this.x += dx[i];\r\n }\r\n }\r\n return;\r\n }\r\n if (ctx.fillStyle != \"\") ctx.fillText(svg.compressSpaces(this.getText()), this.x, this.y);\r\n if (ctx.strokeStyle != \"\") ctx.strokeText(svg.compressSpaces(this.getText()), this.x, this.y);\r\n };\r\n this.getText = function() {};\r\n this.measureTextRecursive = function(ctx) {\r\n let width = this.measureText(ctx);\r\n for (let i = 0; i < this.children.length; i++) {\r\n width += this.children[i].measureTextRecursive(ctx);\r\n }\r\n return width;\r\n };\r\n this.measureText = function(ctx) {\r\n let customFont = this.parent.style(\"font-family\").getDefinition();\r\n if (customFont != null) {\r\n let fontSize = this.parent.style(\"font-size\").numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize);\r\n let measure = 0;\r\n let text = this.getText();\r\n if (customFont.isRTL) text = text.split(\"\").reverse().join(\"\");\r\n let dx = svg.ToNumberArray(this.parent.attribute(\"dx\").value);\r\n for (let i = 0; i < text.length; i++) {\r\n let glyph = this.getGlyph(customFont, text, i);\r\n measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\r\n if (typeof dx[i] != \"undefined\" && !isNaN(dx[i])) {\r\n measure += dx[i];\r\n }\r\n }\r\n return measure;\r\n }\r\n let textToMeasure = svg.compressSpaces(this.getText());\r\n if (!ctx.measureText) return textToMeasure.length * 10;\r\n ctx.save();\r\n this.setContext(ctx);\r\n let width = ctx.measureText(textToMeasure).width;\r\n ctx.restore();\r\n return width;\r\n };\r\n };\r\n svg.Element.TextElementBase.prototype = new svg.Element.RenderedElementBase();\r\n svg.Element.tspan = function(node) {\r\n this.captureTextNodes = true;\r\n this.base = svg.Element.TextElementBase;\r\n this.base(node);\r\n this.text = node.nodeValue || node.text || \"\";\r\n this.getText = function() {\r\n return this.text;\r\n };\r\n };\r\n svg.Element.tspan.prototype = new svg.Element.TextElementBase();\r\n svg.Element.tref = function(node) {\r\n this.base = svg.Element.TextElementBase;\r\n this.base(node);\r\n this.getText = function() {\r\n let element = this.getHrefAttribute().getDefinition();\r\n if (element != null) return element.children[0].getText();\r\n };\r\n };\r\n svg.Element.tref.prototype = new svg.Element.TextElementBase();\r\n svg.Element.a = function(node) {\r\n this.base = svg.Element.TextElementBase;\r\n this.base(node);\r\n this.hasText = true;\r\n for (let i = 0; i < node.childNodes.length; i++) {\r\n if (node.childNodes[i].nodeType != 3) this.hasText = false;\r\n }\r\n this.text = this.hasText ? node.childNodes[0].nodeValue : \"\";\r\n this.getText = function() {\r\n return this.text;\r\n };\r\n this.baseRenderChildren = this.renderChildren;\r\n this.renderChildren = function(ctx) {\r\n if (this.hasText) {\r\n this.baseRenderChildren(ctx);\r\n let fontSize = new svg.Property(\"fontSize\", svg.Font.Parse(svg.ctx.font).fontSize);\r\n svg.Mouse.checkBoundingBox(this, new svg.BoundingBox(this.x, this.y - fontSize.toPixels(\"y\"), this.x + this.measureText(ctx), this.y));\r\n } else {\r\n let g = new svg.Element.g();\r\n g.children = this.children;\r\n g.parent = this;\r\n g.render(ctx);\r\n }\r\n };\r\n this.onclick = function() {\r\n window.open(this.getHrefAttribute().value);\r\n };\r\n this.onmousemove = function() {\r\n svg.ctx.canvas.style.cursor = \"pointer\";\r\n };\r\n };\r\n svg.Element.a.prototype = new svg.Element.TextElementBase();\r\n svg.Element.image = function(node) {\r\n this.base = svg.Element.RenderedElementBase;\r\n this.base(node);\r\n let href = this.getHrefAttribute().value;\r\n let isSvg = href.match(/\\.svg$/);\r\n svg.Images.push(this);\r\n this.loaded = false;\r\n if (!isSvg) {\r\n this.img = document.createElement(\"img\");\r\n let self = this;\r\n this.img.onload = function() {\r\n self.loaded = true;\r\n };\r\n this.img.onerror = function() {\r\n if (typeof console != \"undefined\") {\r\n console.log('ERROR: image \"' + href + '\" not found');\r\n self.loaded = true;\r\n }\r\n };\r\n this.img.src = href;\r\n } else {\r\n this.img = svg.ajax(href);\r\n this.loaded = true;\r\n }\r\n this.renderChildren = function(ctx) {\r\n let x = this.attribute(\"x\").toPixels(\"x\");\r\n let y = this.attribute(\"y\").toPixels(\"y\");\r\n let width = this.attribute(\"width\").toPixels(\"x\");\r\n let height = this.attribute(\"height\").toPixels(\"y\");\r\n if (width == 0 || height == 0) return;\r\n ctx.save();\r\n if (isSvg) {\r\n ctx.drawSvg(this.img, x, y, width, height);\r\n } else {\r\n ctx.translate(x, y);\r\n svg.AspectRatio(ctx, this.attribute(\"preserveAspectRatio\").value, width, this.img.width, height, this.img.height, 0, 0);\r\n ctx.drawImage(this.img, 0, 0);\r\n }\r\n ctx.restore();\r\n };\r\n this.getBoundingBox = function() {\r\n let x = this.attribute(\"x\").toPixels(\"x\");\r\n let y = this.attribute(\"y\").toPixels(\"y\");\r\n let width = this.attribute(\"width\").toPixels(\"x\");\r\n let height = this.attribute(\"height\").toPixels(\"y\");\r\n return new svg.BoundingBox(x, y, x + width, y + height);\r\n };\r\n };\r\n svg.Element.image.prototype = new svg.Element.RenderedElementBase();\r\n svg.Element.g = function(node) {\r\n this.base = svg.Element.RenderedElementBase;\r\n this.base(node);\r\n this.getBoundingBox = function() {\r\n let bb = new svg.BoundingBox();\r\n for (let i = 0; i < this.children.length; i++) {\r\n bb.addBoundingBox(this.children[i].getBoundingBox());\r\n }\r\n return bb;\r\n };\r\n };\r\n svg.Element.g.prototype = new svg.Element.RenderedElementBase();\r\n svg.Element.symbol = function(node) {\r\n this.base = svg.Element.RenderedElementBase;\r\n this.base(node);\r\n this.baseSetContext = this.setContext;\r\n this.setContext = function(ctx) {\r\n this.baseSetContext(ctx);\r\n if (this.attribute(\"viewBox\").hasValue()) {\r\n let viewBox = svg.ToNumberArray(this.attribute(\"viewBox\").value);\r\n let minX = viewBox[0];\r\n let minY = viewBox[1];\r\n width = viewBox[2];\r\n height = viewBox[3];\r\n svg.AspectRatio(ctx, this.attribute(\"preserveAspectRatio\").value, this.attribute(\"width\").toPixels(\"x\"), width, this.attribute(\"height\").toPixels(\"y\"), height, minX, minY);\r\n svg.ViewPort.SetCurrent(viewBox[2], viewBox[3]);\r\n }\r\n };\r\n };\r\n svg.Element.symbol.prototype = new svg.Element.RenderedElementBase();\r\n svg.Element.style = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n let css = \"\";\r\n for (let i = 0; i < node.childNodes.length; i++) {\r\n css += node.childNodes[i].nodeValue;\r\n }\r\n css = css.replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*\\/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, \"\");\r\n css = svg.compressSpaces(css);\r\n let cssDefs = css.split(\"}\");\r\n for (let i = 0; i < cssDefs.length; i++) {\r\n if (svg.trim(cssDefs[i]) != \"\") {\r\n let cssDef = cssDefs[i].split(\"{\");\r\n let cssClasses = cssDef[0].split(\",\");\r\n let cssProps = cssDef[1].split(\";\");\r\n for (let j = 0; j < cssClasses.length; j++) {\r\n let cssClass = svg.trim(cssClasses[j]);\r\n if (cssClass != \"\") {\r\n let props = {};\r\n for (let k = 0; k < cssProps.length; k++) {\r\n let prop = cssProps[k].indexOf(\":\");\r\n let name = cssProps[k].substr(0, prop);\r\n let value = cssProps[k].substr(prop + 1, cssProps[k].length - prop);\r\n if (name != null && value != null) {\r\n props[svg.trim(name)] = new svg.Property(svg.trim(name), svg.trim(value));\r\n }\r\n }\r\n svg.Styles[cssClass] = props;\r\n if (cssClass == \"@font-face\") {\r\n let fontFamily = props[\"font-family\"].value.replace(/\"/g, \"\");\r\n let srcs = props[\"src\"].value.split(\",\");\r\n for (let s = 0; s < srcs.length; s++) {\r\n if (srcs[s].indexOf('format(\"svg\")') > 0) {\r\n let urlStart = srcs[s].indexOf(\"url\");\r\n let urlEnd = srcs[s].indexOf(\")\", urlStart);\r\n let url = srcs[s].substr(urlStart + 5, urlEnd - urlStart - 6);\r\n let doc = svg.parseXml(svg.ajax(url));\r\n let fonts = doc.getElementsByTagName(\"font\");\r\n for (let f = 0; f < fonts.length; f++) {\r\n let font = svg.CreateElement(fonts[f]);\r\n svg.Definitions[fontFamily] = font;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n svg.Element.style.prototype = new svg.Element.ElementBase();\r\n svg.Element.use = function(node) {\r\n this.base = svg.Element.RenderedElementBase;\r\n this.base(node);\r\n this.baseSetContext = this.setContext;\r\n this.setContext = function(ctx) {\r\n this.baseSetContext(ctx);\r\n if (this.attribute(\"x\").hasValue()) ctx.translate(this.attribute(\"x\").toPixels(\"x\"), 0);\r\n if (this.attribute(\"y\").hasValue()) ctx.translate(0, this.attribute(\"y\").toPixels(\"y\"));\r\n };\r\n this.getDefinition = function() {\r\n let element = this.getHrefAttribute().getDefinition();\r\n if (this.attribute(\"width\").hasValue()) element.attribute(\"width\", true).value = this.attribute(\"width\").value;\r\n if (this.attribute(\"height\").hasValue()) element.attribute(\"height\", true).value = this.attribute(\"height\").value;\r\n return element;\r\n };\r\n this.path = function(ctx) {\r\n let element = this.getDefinition();\r\n if (element != null) element.path(ctx);\r\n };\r\n this.getBoundingBox = function() {\r\n let element = this.getDefinition();\r\n if (element != null) return element.getBoundingBox();\r\n };\r\n this.renderChildren = function(ctx) {\r\n let element = this.getDefinition();\r\n if (element != null) {\r\n let oldParent = element.parent;\r\n element.parent = null;\r\n element.render(ctx);\r\n element.parent = oldParent;\r\n }\r\n };\r\n };\r\n svg.Element.use.prototype = new svg.Element.RenderedElementBase();\r\n svg.Element.mask = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n this.apply = function(ctx, element) {\r\n let x = this.attribute(\"x\").toPixels(\"x\");\r\n let y = this.attribute(\"y\").toPixels(\"y\");\r\n let width = this.attribute(\"width\").toPixels(\"x\");\r\n let height = this.attribute(\"height\").toPixels(\"y\");\r\n if (width == 0 && height == 0) {\r\n let bb = new svg.BoundingBox();\r\n for (let i = 0; i < this.children.length; i++) {\r\n bb.addBoundingBox(this.children[i].getBoundingBox());\r\n }\r\n // let x = Math.floor(bb.x1);\r\n // let y = Math.floor(bb.y1);\r\n // let width = Math.floor(bb.width());\r\n // let height = Math.floor(bb.height());\r\n }\r\n let mask = element.attribute(\"mask\").value;\r\n element.attribute(\"mask\").value = \"\";\r\n let cMask = document.createElement(\"canvas\");\r\n cMask.width = x + width;\r\n cMask.height = y + height;\r\n let maskCtx = cMask.getContext(\"2d\");\r\n this.renderChildren(maskCtx);\r\n let c = document.createElement(\"canvas\");\r\n c.width = x + width;\r\n c.height = y + height;\r\n let tempCtx = c.getContext(\"2d\");\r\n element.render(tempCtx);\r\n tempCtx.globalCompositeOperation = \"destination-in\";\r\n tempCtx.fillStyle = maskCtx.createPattern(cMask, \"no-repeat\");\r\n tempCtx.fillRect(0, 0, x + width, y + height);\r\n ctx.fillStyle = tempCtx.createPattern(c, \"no-repeat\");\r\n ctx.fillRect(0, 0, x + width, y + height);\r\n element.attribute(\"mask\").value = mask;\r\n };\r\n this.render = function() {};\r\n };\r\n svg.Element.mask.prototype = new svg.Element.ElementBase();\r\n svg.Element.clipPath = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n this.apply = function(ctx) {\r\n for (let i = 0; i < this.children.length; i++) {\r\n let child = this.children[i];\r\n if (typeof child.path != \"undefined\") {\r\n let transform = null;\r\n if (child.attribute(\"transform\").hasValue()) {\r\n transform = new svg.Transform(child.attribute(\"transform\").value);\r\n transform.apply(ctx);\r\n }\r\n child.path(ctx);\r\n ctx.clip();\r\n if (transform) {\r\n transform.unapply(ctx);\r\n }\r\n }\r\n }\r\n };\r\n this.render = function() {};\r\n };\r\n svg.Element.clipPath.prototype = new svg.Element.ElementBase();\r\n svg.Element.filter = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n this.apply = function(ctx, element) {\r\n let bb = element.getBoundingBox();\r\n let x = Math.floor(bb.x1);\r\n let y = Math.floor(bb.y1);\r\n let width = Math.floor(bb.width());\r\n let height = Math.floor(bb.height());\r\n let filter = element.style(\"filter\").value;\r\n element.style(\"filter\").value = \"\";\r\n let px = 0, py = 0;\r\n for (let i = 0; i < this.children.length; i++) {\r\n let efd = this.children[i].extraFilterDistance || 0;\r\n px = Math.max(px, efd);\r\n py = Math.max(py, efd);\r\n }\r\n let c = document.createElement(\"canvas\");\r\n c.width = width + 2 * px;\r\n c.height = height + 2 * py;\r\n let tempCtx = c.getContext(\"2d\");\r\n tempCtx.translate(-x + px, -y + py);\r\n element.render(tempCtx);\r\n for (let i = 0; i < this.children.length; i++) {\r\n this.children[i].apply(tempCtx, 0, 0, width + 2 * px, height + 2 * py);\r\n }\r\n ctx.drawImage(c, 0, 0, width + 2 * px, height + 2 * py, x - px, y - py, width + 2 * px, height + 2 * py);\r\n element.style(\"filter\", true).value = filter;\r\n };\r\n this.render = function() {};\r\n };\r\n svg.Element.filter.prototype = new svg.Element.ElementBase();\r\n svg.Element.feMorphology = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n this.apply = function() {};\r\n };\r\n svg.Element.feMorphology.prototype = new svg.Element.ElementBase();\r\n svg.Element.feColorMatrix = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n function imGet(img, x, y, width, height, rgba) {\r\n return img[y * width * 4 + x * 4 + rgba];\r\n }\r\n function imSet(img, x, y, width, height, rgba, val) {\r\n img[y * width * 4 + x * 4 + rgba] = val;\r\n }\r\n this.apply = function(ctx, x, y, width, height) {\r\n let srcData = ctx.getImageData(0, 0, width, height);\r\n for (let y = 0; y < height; y++) {\r\n for (let x = 0; x < width; x++) {\r\n let r = imGet(srcData.data, x, y, width, height, 0);\r\n let g = imGet(srcData.data, x, y, width, height, 1);\r\n let b = imGet(srcData.data, x, y, width, height, 2);\r\n let gray = (r + g + b) / 3;\r\n imSet(srcData.data, x, y, width, height, 0, gray);\r\n imSet(srcData.data, x, y, width, height, 1, gray);\r\n imSet(srcData.data, x, y, width, height, 2, gray);\r\n }\r\n }\r\n ctx.clearRect(0, 0, width, height);\r\n ctx.putImageData(srcData, 0, 0);\r\n };\r\n };\r\n svg.Element.feColorMatrix.prototype = new svg.Element.ElementBase();\r\n svg.Element.feGaussianBlur = function(node) {\r\n this.base = svg.Element.ElementBase;\r\n this.base(node);\r\n this.blurRadius = Math.floor(this.attribute(\"stdDeviation\").numValue());\r\n this.extraFilterDistance = this.blurRadius;\r\n this.apply = function(ctx, x, y, width, height) {\r\n if (typeof stackBlurCanvasRGBA == \"undefined\") {\r\n if (typeof console != \"undefined\") {\r\n console.log(\"ERROR: StackBlur.js must be included for blur to work\");\r\n }\r\n return;\r\n }\r\n ctx.canvas.id = svg.UniqueId();\r\n ctx.canvas.style.display = \"none\";\r\n document.body.appendChild(ctx.canvas);\r\n stackBlurCanvasRGBA(ctx.canvas.id, x, y, width, height, this.blurRadius);\r\n document.body.removeChild(ctx.canvas);\r\n };\r\n };\r\n svg.Element.feGaussianBlur.prototype = new svg.Element.ElementBase();\r\n svg.Element.title = function() {};\r\n svg.Element.title.prototype = new svg.Element.ElementBase();\r\n svg.Element.desc = function() {};\r\n svg.Element.desc.prototype = new svg.Element.ElementBase();\r\n svg.Element.MISSING = function(node) {\r\n if (typeof console != \"undefined\") {\r\n console.log(\"ERROR: Element '\" + node.nodeName + \"' not yet implemented.\");\r\n }\r\n };\r\n svg.Element.MISSING.prototype = new svg.Element.ElementBase();\r\n svg.CreateElement = function(node) {\r\n let className = node.nodeName.replace(/^[^:]+:/, \"\");\r\n className = className.replace(/\\-/g, \"\");\r\n let e = null;\r\n if (typeof svg.Element[className] != \"undefined\") {\r\n e = new svg.Element[className](node);\r\n } else {\r\n e = new svg.Element.MISSING(node);\r\n }\r\n e.type = node.nodeName;\r\n return e;\r\n };\r\n svg.load = function(ctx, url) {\r\n svg.loadXml(ctx, svg.ajax(url));\r\n };\r\n svg.loadXml = function(ctx, xml) {\r\n svg.loadXmlDoc(ctx, svg.parseXml(xml));\r\n };\r\n svg.loadXmlDoc = function(ctx, dom) {\r\n svg.init(ctx);\r\n let mapXY = function(p) {\r\n let e = ctx.canvas;\r\n while (e) {\r\n p.x -= e.offsetLeft;\r\n p.y -= e.offsetTop;\r\n e = e.offsetParent;\r\n }\r\n if (window.scrollX) p.x += window.scrollX;\r\n if (window.scrollY) p.y += window.scrollY;\r\n return p;\r\n };\r\n if (svg.opts[\"ignoreMouse\"] != true) {\r\n ctx.canvas.onclick = function(e) {\r\n let p = mapXY(new svg.Point(e != null ? e.clientX : event.clientX, e != null ? e.clientY : event.clientY));\r\n svg.Mouse.onclick(p.x, p.y);\r\n };\r\n ctx.canvas.onmousemove = function(e) {\r\n let p = mapXY(new svg.Point(e != null ? e.clientX : event.clientX, e != null ? e.clientY : event.clientY));\r\n svg.Mouse.onmousemove(p.x, p.y);\r\n };\r\n }\r\n let e = svg.CreateElement(dom.documentElement);\r\n e.root = true;\r\n let isFirstRender = true;\r\n let draw = function() {\r\n svg.ViewPort.Clear();\r\n if (ctx.canvas.parentNode) svg.ViewPort.SetCurrent(ctx.canvas.parentNode.clientWidth, ctx.canvas.parentNode.clientHeight);\r\n if (svg.opts[\"ignoreDimensions\"] != true) {\r\n if (e.style(\"width\").hasValue()) {\r\n ctx.canvas.width = e.style(\"width\").toPixels(\"x\");\r\n ctx.canvas.style.width = ctx.canvas.width + \"px\";\r\n }\r\n if (e.style(\"height\").hasValue()) {\r\n ctx.canvas.height = e.style(\"height\").toPixels(\"y\");\r\n ctx.canvas.style.height = ctx.canvas.height + \"px\";\r\n }\r\n }\r\n let cWidth = ctx.canvas.clientWidth || ctx.canvas.width;\r\n let cHeight = ctx.canvas.clientHeight || ctx.canvas.height;\r\n if (svg.opts[\"ignoreDimensions\"] == true && e.style(\"width\").hasValue() && e.style(\"height\").hasValue()) {\r\n cWidth = e.style(\"width\").toPixels(\"x\");\r\n cHeight = e.style(\"height\").toPixels(\"y\");\r\n }\r\n svg.ViewPort.SetCurrent(cWidth, cHeight);\r\n if (svg.opts[\"offsetX\"] != null) e.attribute(\"x\", true).value = svg.opts[\"offsetX\"];\r\n if (svg.opts[\"offsetY\"] != null) e.attribute(\"y\", true).value = svg.opts[\"offsetY\"];\r\n if (svg.opts[\"scaleWidth\"] != null && svg.opts[\"scaleHeight\"] != null) {\r\n let xRatio = 1, yRatio = 1, viewBox = svg.ToNumberArray(e.attribute(\"viewBox\").value);\r\n if (e.attribute(\"width\").hasValue()) xRatio = e.attribute(\"width\").toPixels(\"x\") / svg.opts[\"scaleWidth\"]; else if (!isNaN(viewBox[2])) xRatio = viewBox[2] / svg.opts[\"scaleWidth\"];\r\n if (e.attribute(\"height\").hasValue()) yRatio = e.attribute(\"height\").toPixels(\"y\") / svg.opts[\"scaleHeight\"]; else if (!isNaN(viewBox[3])) yRatio = viewBox[3] / svg.opts[\"scaleHeight\"];\r\n e.attribute(\"width\", true).value = svg.opts[\"scaleWidth\"];\r\n e.attribute(\"height\", true).value = svg.opts[\"scaleHeight\"];\r\n e.attribute(\"viewBox\", true).value = \"0 0 \" + cWidth * xRatio + \" \" + cHeight * yRatio;\r\n e.attribute(\"preserveAspectRatio\", true).value = \"none\";\r\n }\r\n if (svg.opts[\"ignoreClear\"] != true) {\r\n ctx.clearRect(0, 0, cWidth, cHeight);\r\n }\r\n e.render(ctx);\r\n if (isFirstRender) {\r\n isFirstRender = false;\r\n if (typeof svg.opts[\"renderCallback\"] == \"function\") svg.opts[\"renderCallback\"](dom);\r\n }\r\n };\r\n let waitingForImages = true;\r\n if (svg.ImagesLoaded()) {\r\n waitingForImages = false;\r\n draw();\r\n }\r\n svg.intervalID = setInterval(function() {\r\n let needUpdate = false;\r\n if (waitingForImages && svg.ImagesLoaded()) {\r\n waitingForImages = false;\r\n needUpdate = true;\r\n }\r\n if (svg.opts[\"ignoreMouse\"] != true) {\r\n needUpdate = needUpdate | svg.Mouse.hasEvents();\r\n }\r\n if (svg.opts[\"ignoreAnimation\"] != true) {\r\n for (let i = 0; i < svg.Animations.length; i++) {\r\n needUpdate = needUpdate | svg.Animations[i].update(1e3 / svg.FRAMERATE);\r\n }\r\n }\r\n if (typeof svg.opts[\"forceRedraw\"] == \"function\") {\r\n if (svg.opts[\"forceRedraw\"]() == true) needUpdate = true;\r\n }\r\n if (needUpdate) {\r\n draw();\r\n svg.Mouse.runEvents();\r\n }\r\n }, 1e3 / svg.FRAMERATE);\r\n };\r\n svg.stop = function() {\r\n if (svg.intervalID) {\r\n clearInterval(svg.intervalID);\r\n }\r\n };\r\n svg.Mouse = new function() {\r\n this.events = [];\r\n this.hasEvents = function() {\r\n return this.events.length != 0;\r\n };\r\n this.onclick = function(x, y) {\r\n this.events.push({\r\n type: \"onclick\",\r\n x: x,\r\n y: y,\r\n run: function(e) {\r\n if (e.onclick) e.onclick();\r\n }\r\n });\r\n };\r\n this.onmousemove = function(x, y) {\r\n this.events.push({\r\n type: \"onmousemove\",\r\n x: x,\r\n y: y,\r\n run: function(e) {\r\n if (e.onmousemove) e.onmousemove();\r\n }\r\n });\r\n };\r\n this.eventElements = [];\r\n this.checkPath = function(element, ctx) {\r\n for (let i = 0; i < this.events.length; i++) {\r\n let e = this.events[i];\r\n if (ctx.isPointInPath && ctx.isPointInPath(e.x, e.y)) this.eventElements[i] = element;\r\n }\r\n };\r\n this.checkBoundingBox = function(element, bb) {\r\n for (let i = 0; i < this.events.length; i++) {\r\n let e = this.events[i];\r\n if (bb.isPointInBox(e.x, e.y)) this.eventElements[i] = element;\r\n }\r\n };\r\n this.runEvents = function() {\r\n svg.ctx.canvas.style.cursor = \"\";\r\n for (let i = 0; i < this.events.length; i++) {\r\n let e = this.events[i];\r\n let element = this.eventElements[i];\r\n while (element) {\r\n e.run(element);\r\n element = element.parent;\r\n }\r\n }\r\n this.events = [];\r\n this.eventElements = [];\r\n };\r\n }();\r\n return svg;\r\n }\r\n }).call(target, target);\r\n if (typeof CanvasRenderingContext2D != \"undefined\") {\r\n CanvasRenderingContext2D.prototype.drawSvg = function(s, dx, dy, dw, dh) {\r\n canvg(this.canvas, s, {\r\n ignoreMouse: true,\r\n ignoreAnimation: true,\r\n ignoreDimensions: true,\r\n ignoreClear: true,\r\n offsetX: dx,\r\n offsetY: dy,\r\n scaleWidth: dw,\r\n scaleHeight: dh\r\n });\r\n };\r\n }\r\n return canvg;\r\n}\r\n"],"mappings":";AAEO,SAAS,qBAAqB;AACrC,QAAM,SAAS;AACf,WAAS,SAAS,cAAc;AACxB,SAAK,KAAK;AACV,QAAI,aAAa,OAAO,CAAC,KAAK,KAAK;AAC/B,qBAAe,aAAa,OAAO,GAAG,CAAC;AAAA,IAC3C;AACA,mBAAe,aAAa,QAAQ,MAAM,EAAE;AAC5C,mBAAe,aAAa,YAAY;AACxC,QAAI,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,cAAc;AAAA,MACd,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,gBAAgB;AAAA,MAChB,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,WAAW;AAAA,MACX,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,OAAO;AAAA,MACP,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,SAAS;AAAA,MACT,MAAM;AAAA,MACN,UAAU;AAAA,MACV,UAAU;AAAA,MACV,eAAe;AAAA,MACf,UAAU;AAAA,MACV,WAAW;AAAA,MACX,WAAW;AAAA,MACX,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,eAAe;AAAA,MACf,eAAe;AAAA,MACf,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,aAAa;AAAA,MACb,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,WAAW;AAAA,MACX,aAAa;AAAA,MACb,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,WAAW;AAAA,MACX,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,MACb,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP,UAAU;AAAA,MACV,eAAe;AAAA,MACf,WAAW;AAAA,MACX,cAAc;AAAA,MACd,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,sBAAsB;AAAA,MACtB,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,aAAa;AAAA,MACb,eAAe;AAAA,MACf,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,kBAAkB;AAAA,MAClB,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,MACnB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,WAAW;AAAA,MACX,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO;AAAA,MACP,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,eAAe;AAAA,MACf,WAAW;AAAA,MACX,eAAe;AAAA,MACf,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,WAAW;AAAA,MACX,WAAW;AAAA,MACX,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW;AAAA,MACX,WAAW;AAAA,MACX,MAAM;AAAA,MACN,aAAa;AAAA,MACb,WAAW;AAAA,MACX,KAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,aAAa;AAAA,IACjB;AACA,aAAS,OAAO,eAAe;AAC3B,UAAI,gBAAgB,KAAK;AACrB,uBAAe,cAAc,GAAG;AAAA,MACpC;AAAA,IACJ;AACA,QAAI,aAAa,CAAE;AAAA,MACf,IAAI;AAAA,MACJ,SAAS,CAAE,qBAAqB,kBAAmB;AAAA,MACnD,SAAS,SAAS,MAAM;AACpB,eAAO,CAAE,SAAS,KAAK,CAAC,CAAC,GAAG,SAAS,KAAK,CAAC,CAAC,GAAG,SAAS,KAAK,CAAC,CAAC,CAAE;AAAA,MACrE;AAAA,IACJ,GAAG;AAAA,MACC,IAAI;AAAA,MACJ,SAAS,CAAE,WAAW,QAAS;AAAA,MAC/B,SAAS,SAAS,MAAM;AACpB,eAAO,CAAE,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,SAAS,KAAK,CAAC,GAAG,EAAE,CAAE;AAAA,MACjF;AAAA,IACJ,GAAG;AAAA,MACC,IAAI;AAAA,MACJ,SAAS,CAAE,QAAQ,KAAM;AAAA,MACzB,SAAS,SAAS,MAAM;AACpB,eAAO,CAAE,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAE;AAAA,MAC/G;AAAA,IACJ,CAAE;AACF,aAASA,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AACxC,UAAI,KAAK,WAAWA,EAAC,EAAE;AACvB,UAAI,YAAY,WAAWA,EAAC,EAAE;AAC9B,UAAI,OAAO,GAAG,KAAK,YAAY;AAC/B,UAAI,MAAM;AACN,mBAAW,UAAU,IAAI;AACzB,aAAK,IAAI,SAAS,CAAC;AACnB,aAAK,IAAI,SAAS,CAAC;AACnB,aAAK,IAAI,SAAS,CAAC;AACnB,aAAK,KAAK;AAAA,MACd;AAAA,IACJ;AACA,SAAK,IAAI,KAAK,IAAI,KAAK,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,MAAM,MAAM,KAAK;AACrE,SAAK,IAAI,KAAK,IAAI,KAAK,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,MAAM,MAAM,KAAK;AACrE,SAAK,IAAI,KAAK,IAAI,KAAK,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,MAAM,MAAM,KAAK;AACrE,SAAK,QAAQ,WAAW;AACpB,aAAO,SAAS,KAAK,IAAI,OAAO,KAAK,IAAI,OAAO,KAAK,IAAI;AAAA,IAC7D;AACA,SAAK,QAAQ,WAAW;AACpB,UAAI,IAAI,KAAK,EAAE,SAAS,EAAE;AAC1B,UAAI,IAAI,KAAK,EAAE,SAAS,EAAE;AAC1B,UAAI,IAAI,KAAK,EAAE,SAAS,EAAE;AAC1B,UAAI,EAAE,UAAU,EAAG,KAAI,MAAM;AAC7B,UAAI,EAAE,UAAU,EAAG,KAAI,MAAM;AAC7B,UAAI,EAAE,UAAU,EAAG,KAAI,MAAM;AAC7B,aAAO,MAAM,IAAI,IAAI;AAAA,IACzB;AACA,SAAK,aAAa,WAAW;AACzB,UAAI,WAAW,IAAI,MAAM;AACzB,eAASA,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AACxC,YAAI,UAAU,WAAWA,EAAC,EAAE;AAC5B,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,mBAAS,SAAS,MAAM,IAAI,QAAQ,CAAC;AAAA,QACzC;AAAA,MACJ;AACA,eAAS,MAAM,eAAe;AAC1B,iBAAS,SAAS,MAAM,IAAI;AAAA,MAChC;AACA,UAAI,MAAM,SAAS,cAAc,IAAI;AACrC,UAAI,aAAa,MAAM,mBAAmB;AAC1C,eAASA,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACtC,YAAI;AACA,cAAI,YAAY,SAAS,cAAc,IAAI;AAC3C,cAAI,aAAa,IAAI,SAAS,SAASA,EAAC,CAAC;AACzC,cAAI,cAAc,SAAS,cAAc,KAAK;AAC9C,sBAAY,MAAM,UAAU,sDAAgE,WAAW,MAAM,IAAI,aAAkB,WAAW,MAAM;AACpJ,sBAAY,YAAY,SAAS,eAAe,MAAM,CAAC;AACvD,cAAI,kBAAkB,SAAS,eAAe,MAAM,SAASA,EAAC,IAAI,SAAS,WAAW,MAAM,IAAI,SAAS,WAAW,MAAM,CAAC;AAC3H,oBAAU,YAAY,WAAW;AACjC,oBAAU,YAAY,eAAe;AACrC,cAAI,YAAY,SAAS;AAAA,QAC7B,QAAQ;AAAA,QAAC;AAAA,MACb;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AACA,MAAI,YAAY,CAAE,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAI;AAC5wC,MAAI,YAAY,CAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAG;AAE5gC,WAAS,oBAAoB,IAAI,OAAO,OAAOC,QAAOC,SAAQ,QAAQ;AAClE,QAAI,MAAM,MAAM,KAAK,SAAS,EAAG;AACjC,cAAU;AACV,QAAI,SAAS,SAAS,eAAe,EAAE;AACvC,QAAI,UAAU,OAAO,WAAW,IAAI;AACpC,QAAI;AACJ,QAAI;AACA,UAAI;AACA,oBAAY,QAAQ,aAAa,OAAO,OAAOD,QAAOC,OAAM;AAAA,MAChE,QAAQ;AACJ,YAAI;AACA,mBAAS,SAAS,iBAAiB,gBAAgB,sBAAsB;AACzE,sBAAY,QAAQ,aAAa,OAAO,OAAOD,QAAOC,OAAM;AAAA,QAChE,SAAS,GAAG;AACR,gBAAM,2BAA2B;AACjC,gBAAM,IAAI,MAAM,wCAAwC,CAAC;AACzD;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,SAAS,GAAG;AACR,YAAM,qBAAqB;AAC3B,YAAM,IAAI,MAAM,kCAAkC,CAAC;AAAA,IACvD;AACA,QAAI,SAAS,UAAU;AACvB,QAAI,GAAG,GAAGF,IAAG,GAAG,IAAI,IAAI,IAAI,OAAO,OAAO,OAAO,OAAO,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,UAAU,UAAU,IAAI,IAAI,IAAI,IAAI;AAC5J,QAAI,MAAM,SAAS,SAAS;AAC5B,QAAI,cAAcC,SAAQ;AAC1B,QAAI,eAAeC,UAAS;AAC5B,QAAI,cAAc,SAAS;AAC3B,QAAI,YAAY,eAAe,cAAc,KAAK;AAClD,QAAI,aAAa,IAAI,UAAU;AAC/B,QAAI,QAAQ;AACZ,QAAI,WAAW;AACf,SAAKF,KAAI,GAAGA,KAAI,KAAKA,MAAK;AACtB,cAAQ,MAAM,OAAO,IAAI,UAAU;AACnC,UAAIA,MAAK,YAAa,YAAW;AAAA,IACrC;AACA,UAAM,OAAO;AACb,QAAI,UAAU;AACd,QAAI,WAAW;AACf,SAAK,KAAK;AACV,QAAI,UAAU,UAAU,MAAM;AAC9B,QAAI,UAAU,UAAU,MAAM;AAC9B,SAAK,IAAI,GAAG,IAAIE,SAAQ,KAAK;AACzB,iBAAW,WAAW,WAAW,WAAW,QAAQ,QAAQ,QAAQ,QAAQ;AAC5E,kBAAY,eAAe,KAAK,OAAO,EAAE;AACzC,kBAAY,eAAe,KAAK,OAAO,KAAK,CAAC;AAC7C,kBAAY,eAAe,KAAK,OAAO,KAAK,CAAC;AAC7C,kBAAY,eAAe,KAAK,OAAO,KAAK,CAAC;AAC7C,eAAS,YAAY;AACrB,eAAS,YAAY;AACrB,eAAS,YAAY;AACrB,eAAS,YAAY;AACrB,cAAQ;AACR,WAAKF,KAAI,GAAGA,KAAI,aAAaA,MAAK;AAC9B,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,gBAAQ,MAAM;AAAA,MAClB;AACA,WAAKA,KAAI,GAAGA,KAAI,aAAaA,MAAK;AAC9B,YAAI,OAAO,cAAcA,KAAI,cAAcA,OAAM;AACjD,kBAAU,MAAM,IAAI,KAAK,OAAO,CAAC,MAAM,MAAM,cAAcA;AAC3D,kBAAU,MAAM,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK;AAC1C,kBAAU,MAAM,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK;AAC1C,kBAAU,MAAM,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK;AAC1C,oBAAY;AACZ,oBAAY;AACZ,oBAAY;AACZ,oBAAY;AACZ,gBAAQ,MAAM;AAAA,MAClB;AACA,gBAAU;AACV,iBAAW;AACX,WAAK,IAAI,GAAG,IAAIC,QAAO,KAAK;AACxB,eAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,WAAW;AACzC,YAAI,MAAM,GAAG;AACT,eAAK,MAAM;AACX,iBAAO,EAAE,KAAK,QAAQ,WAAW,WAAW;AAC5C,iBAAO,KAAK,CAAC,KAAK,QAAQ,WAAW,WAAW;AAChD,iBAAO,KAAK,CAAC,KAAK,QAAQ,WAAW,WAAW;AAAA,QACpD,OAAO;AACH,iBAAO,EAAE,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI;AAAA,QACnD;AACA,iBAAS;AACT,iBAAS;AACT,iBAAS;AACT,iBAAS;AACT,qBAAa,QAAQ;AACrB,qBAAa,QAAQ;AACrB,qBAAa,QAAQ;AACrB,qBAAa,QAAQ;AACrB,YAAI,OAAO,IAAI,IAAI,SAAS,KAAK,cAAc,IAAI,gBAAgB;AACnE,oBAAY,QAAQ,IAAI,OAAO,CAAC;AAChC,oBAAY,QAAQ,IAAI,OAAO,IAAI,CAAC;AACpC,oBAAY,QAAQ,IAAI,OAAO,IAAI,CAAC;AACpC,oBAAY,QAAQ,IAAI,OAAO,IAAI,CAAC;AACpC,iBAAS;AACT,iBAAS;AACT,iBAAS;AACT,iBAAS;AACT,kBAAU,QAAQ;AAClB,qBAAa,KAAK,SAAS;AAC3B,qBAAa,KAAK,SAAS;AAC3B,qBAAa,KAAK,SAAS;AAC3B,qBAAa,KAAK,SAAS;AAC3B,oBAAY;AACZ,oBAAY;AACZ,oBAAY;AACZ,oBAAY;AACZ,mBAAW,SAAS;AACpB,cAAM;AAAA,MACV;AACA,YAAMA;AAAA,IACV;AACA,SAAK,IAAI,GAAG,IAAIA,QAAO,KAAK;AACxB,iBAAW,WAAW,WAAW,WAAW,QAAQ,QAAQ,QAAQ,QAAQ;AAC5E,WAAK,KAAK;AACV,kBAAY,eAAe,KAAK,OAAO,EAAE;AACzC,kBAAY,eAAe,KAAK,OAAO,KAAK,CAAC;AAC7C,kBAAY,eAAe,KAAK,OAAO,KAAK,CAAC;AAC7C,kBAAY,eAAe,KAAK,OAAO,KAAK,CAAC;AAC7C,eAAS,YAAY;AACrB,eAAS,YAAY;AACrB,eAAS,YAAY;AACrB,eAAS,YAAY;AACrB,cAAQ;AACR,WAAKD,KAAI,GAAGA,KAAI,aAAaA,MAAK;AAC9B,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,gBAAQ,MAAM;AAAA,MAClB;AACA,WAAKC;AACL,WAAKD,KAAI,GAAGA,MAAK,QAAQA,MAAK;AAC1B,aAAK,KAAK,KAAK;AACf,kBAAU,MAAM,IAAI,KAAK,OAAO,EAAE,MAAM,MAAM,cAAcA;AAC5D,kBAAU,MAAM,IAAI,KAAK,OAAO,KAAK,CAAC,KAAK;AAC3C,kBAAU,MAAM,IAAI,KAAK,OAAO,KAAK,CAAC,KAAK;AAC3C,kBAAU,MAAM,IAAI,KAAK,OAAO,KAAK,CAAC,KAAK;AAC3C,oBAAY;AACZ,oBAAY;AACZ,oBAAY;AACZ,oBAAY;AACZ,gBAAQ,MAAM;AACd,YAAIA,KAAI,cAAc;AAClB,gBAAMC;AAAA,QACV;AAAA,MACJ;AACA,WAAK;AACL,gBAAU;AACV,iBAAW;AACX,WAAK,IAAI,GAAG,IAAIC,SAAQ,KAAK;AACzB,YAAI,MAAM;AACV,eAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,WAAW;AACxC,YAAI,KAAK,GAAG;AACR,eAAK,MAAM;AACX,iBAAO,CAAC,KAAK,QAAQ,WAAW,WAAW;AAC3C,iBAAO,IAAI,CAAC,KAAK,QAAQ,WAAW,WAAW;AAC/C,iBAAO,IAAI,CAAC,KAAK,QAAQ,WAAW,WAAW;AAAA,QACnD,OAAO;AACH,iBAAO,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI;AAAA,QAChD;AACA,iBAAS;AACT,iBAAS;AACT,iBAAS;AACT,iBAAS;AACT,qBAAa,QAAQ;AACrB,qBAAa,QAAQ;AACrB,qBAAa,QAAQ;AACrB,qBAAa,QAAQ;AACrB,YAAI,MAAM,IAAI,IAAI,eAAe,eAAe,IAAI,gBAAgBD,UAAS;AAC7E,iBAAS,YAAY,QAAQ,IAAI,OAAO,CAAC;AACzC,iBAAS,YAAY,QAAQ,IAAI,OAAO,IAAI,CAAC;AAC7C,iBAAS,YAAY,QAAQ,IAAI,OAAO,IAAI,CAAC;AAC7C,iBAAS,YAAY,QAAQ,IAAI,OAAO,IAAI,CAAC;AAC7C,kBAAU,QAAQ;AAClB,qBAAa,KAAK,SAAS;AAC3B,qBAAa,KAAK,SAAS;AAC3B,qBAAa,KAAK,SAAS;AAC3B,qBAAa,KAAK,SAAS;AAC3B,oBAAY;AACZ,oBAAY;AACZ,oBAAY;AACZ,oBAAY;AACZ,mBAAW,SAAS;AACpB,cAAMA;AAAA,MACV;AAAA,IACJ;AACA,YAAQ,aAAa,WAAW,OAAO,KAAK;AAAA,EAChD;AACA,WAAS,YAAY;AACjB,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,IAAI;AACT,SAAK,OAAO;AAAA,EAChB;AACA,GAAC,SAAS,QAAQ;AACd,WAAO,QAAQ,SAASE,SAAQ,GAAG,MAAM;AACrC,UAAIA,WAAU,QAAQ,KAAK,QAAQ,QAAQ,MAAM;AAC7C,YAAI,UAAU,SAAS,qBAAqB,KAAK;AACjD,iBAASH,KAAI,GAAGA,KAAI,QAAQ,QAAQA,MAAK;AACrC,cAAI,SAAS,QAAQA,EAAC;AACtB,cAAI,IAAI,SAAS,cAAc,QAAQ;AACvC,YAAE,QAAQ,OAAO;AACjB,YAAE,SAAS,OAAO;AAClB,iBAAO,WAAW,aAAa,GAAG,MAAM;AACxC,iBAAO,WAAW,YAAY,MAAM;AACpC,cAAI,MAAM,SAAS,cAAc,KAAK;AACtC,cAAI,YAAY,MAAM;AACtB,gBAAM,GAAG,IAAI,SAAS;AAAA,QAC1B;AACA;AAAA,MACJ;AACA,aAAO,QAAQ,CAAC;AAChB,UAAI,OAAOG,WAAU,UAAU;AAC3B,QAAAA,UAAS,SAAS,eAAeA,OAAM;AAAA,MAC3C;AACA,UAAIA,QAAO,OAAO,KAAM,CAAAA,QAAO,IAAI,KAAK;AACxC,UAAI,MAAM,MAAM;AAChB,UAAI,EAAEA,QAAO,WAAW,UAAU,KAAKA,QAAO,WAAW,CAAC,EAAE,YAAY,UAAW,CAAAA,QAAO,MAAM;AAChG,UAAI,OAAO;AACX,UAAIC,OAAMD,QAAO,WAAW,IAAI;AAChC,UAAI,OAAO,EAAE,mBAAmB,aAAa;AACzC,YAAI,WAAWC,MAAK,CAAC;AAAA,MACzB,WAAW,EAAE,OAAO,GAAG,CAAC,KAAK,KAAK;AAC9B,YAAI,QAAQA,MAAK,CAAC;AAAA,MACtB,OAAO;AACH,YAAI,KAAKA,MAAK,CAAC;AAAA,MACnB;AAAA,IACJ;AACA,aAAS,QAAQ;AACb,UAAI,MAAM,CAAC;AACX,UAAI,YAAY;AAChB,UAAI,qBAAqB;AACzB,UAAI,OAAO,SAASA,MAAK;AACrB,YAAI,WAAW;AACf,YAAI,WAAW,WAAW;AACtB;AACA,iBAAO,UAAU;AAAA,QACrB;AACA,YAAI,cAAc,CAAC;AACnB,YAAI,SAAS,CAAC;AACd,YAAI,aAAa,CAAC;AAClB,YAAI,SAAS,CAAC;AACd,YAAI,MAAMA;AACV,YAAI,WAAW,IAAI,WAAW;AAC1B,eAAK,YAAY,CAAC;AAClB,eAAK,QAAQ,WAAW;AACpB,iBAAK,YAAY,CAAC;AAAA,UACtB;AACA,eAAK,aAAa,SAASH,QAAOC,SAAQ;AACtC,iBAAK,UAAU,KAAK;AAAA,cAChB,OAAOD;AAAA,cACP,QAAQC;AAAA,YACZ,CAAC;AAAA,UACL;AACA,eAAK,gBAAgB,WAAW;AAC5B,iBAAK,UAAU,IAAI;AAAA,UACvB;AACA,eAAK,UAAU,WAAW;AACtB,mBAAO,KAAK,UAAU,KAAK,UAAU,SAAS,CAAC;AAAA,UACnD;AACA,eAAK,QAAQ,WAAW;AACpB,mBAAO,KAAK,QAAQ,EAAE;AAAA,UAC1B;AACA,eAAK,SAAS,WAAW;AACrB,mBAAO,KAAK,QAAQ,EAAE;AAAA,UAC1B;AACA,eAAK,cAAc,SAAS,GAAG;AAC3B,gBAAI,KAAK,QAAQ,OAAO,KAAK,SAAU,QAAO;AAC9C,gBAAI,KAAK,IAAK,QAAO,KAAK,MAAM;AAChC,gBAAI,KAAK,IAAK,QAAO,KAAK,OAAO;AACjC,mBAAO,KAAK,KAAK,KAAK,IAAI,KAAK,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,OAAO,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;AAAA,UAC1F;AAAA,QACJ,EAAE;AAAA,MACN;AACA,UAAI,KAAK;AACT,UAAI,eAAe,WAAW;AAC1B,iBAASF,KAAI,GAAGA,KAAI,IAAI,OAAO,QAAQA,MAAK;AACxC,cAAI,CAAC,IAAI,OAAOA,EAAC,EAAE,OAAQ,QAAO;AAAA,QACtC;AACA,eAAO;AAAA,MACX;AACA,UAAI,OAAO,SAAS,GAAG;AACnB,eAAO,EAAE,QAAQ,cAAc,EAAE;AAAA,MACrC;AACA,UAAI,iBAAiB,SAAS,GAAG;AAC7B,eAAO,EAAE,QAAQ,iBAAiB,GAAG;AAAA,MACzC;AACA,UAAI,OAAO,SAAS,KAAK;AACrB,YAAI;AACJ,YAAI,OAAO,gBAAgB;AACvB,iBAAO,IAAI,eAAe;AAAA,QAC9B,OAAO;AACH,iBAAO,IAAI,cAAc,mBAAmB;AAAA,QAChD;AACA,YAAI,MAAM;AACN,eAAK,KAAK,OAAO,KAAK,KAAK;AAC3B,eAAK,KAAK,IAAI;AACd,iBAAO,KAAK;AAAA,QAChB;AACA,eAAO;AAAA,MACX;AACA,UAAI,WAAW,SAAS,KAAK;AACzB,YAAI,OAAO,WAAW;AAClB,cAAI,SAAS,IAAI,UAAU;AAC3B,iBAAO,OAAO,gBAAgB,KAAK,UAAU;AAAA,QACjD,OAAO;AACH,gBAAM,IAAI,QAAQ,uBAAuB,EAAE;AAC3C,cAAI,SAAS,IAAI,cAAc,kBAAkB;AACjD,iBAAO,QAAQ;AACf,iBAAO,QAAQ,GAAG;AAClB,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,UAAI,WAAW,SAAS,MAAM,OAAO;AACjC,aAAK,OAAO;AACZ,aAAK,QAAQ;AAAA,MACjB;AACA,UAAI,SAAS,UAAU,WAAW,WAAW;AACzC,eAAO,KAAK;AAAA,MAChB;AACA,UAAI,SAAS,UAAU,WAAW,WAAW;AACzC,eAAO,KAAK,SAAS,QAAQ,KAAK,UAAU;AAAA,MAChD;AACA,UAAI,SAAS,UAAU,WAAW,WAAW;AACzC,YAAI,CAAC,KAAK,SAAS,EAAG,QAAO;AAC7B,YAAI,IAAI,WAAW,KAAK,KAAK;AAC7B,aAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG;AAC/B,cAAI,IAAI;AAAA,QACZ;AACA,eAAO;AAAA,MACX;AACA,UAAI,SAAS,UAAU,iBAAiB,SAAS,KAAK;AAClD,YAAI,KAAK,SAAS,EAAG,QAAO,KAAK;AACjC,eAAO;AAAA,MACX;AACA,UAAI,SAAS,UAAU,oBAAoB,SAAS,KAAK;AACrD,YAAI,KAAK,SAAS,EAAG,QAAO,KAAK,SAAS;AAC1C,eAAO;AAAA,MACX;AACA,UAAI,SAAS,UAAU,aAAa,SAAS,SAAS;AAClD,YAAI,WAAW,KAAK;AACpB,YAAI,WAAW,QAAQ,WAAW,MAAM,OAAO,KAAK,SAAS,UAAU;AACnE,cAAI,QAAQ,IAAI,SAAS,KAAK,KAAK;AACnC,cAAI,MAAM,IAAI;AACV,uBAAW,UAAU,MAAM,IAAI,OAAO,MAAM,IAAI,OAAO,MAAM,IAAI,OAAO,UAAU;AAAA,UACtF;AAAA,QACJ;AACA,eAAO,IAAI,IAAI,SAAS,KAAK,MAAM,QAAQ;AAAA,MAC/C;AACA,UAAI,SAAS,UAAU,gBAAgB,WAAW;AAC9C,YAAI,OAAO,KAAK,MAAM,MAAM,aAAa;AACzC,YAAI,MAAM;AACN,iBAAO,KAAK,CAAC;AAAA,QACjB;AACA,YAAI,CAAC,MAAM;AACP,iBAAO,KAAK;AAAA,QAChB;AACA,eAAO,IAAI,YAAY,IAAI;AAAA,MAC/B;AACA,UAAI,SAAS,UAAU,kBAAkB,WAAW;AAChD,eAAO,KAAK,MAAM,QAAQ,MAAM,KAAK;AAAA,MACzC;AACA,UAAI,SAAS,UAAU,yBAAyB,SAAS,GAAG,aAAa;AACrE,YAAI,MAAM,KAAK,cAAc;AAC7B,YAAI,OAAO,QAAQ,IAAI,gBAAgB;AACnC,iBAAO,IAAI,eAAe,IAAI,KAAK,GAAG,WAAW;AAAA,QACrD;AACA,YAAI,OAAO,QAAQ,IAAI,eAAe;AAClC,cAAI,IAAI,iBAAiB,EAAE,SAAS,GAAG;AACnC,gBAAI,KAAK,IAAI,UAAU,kBAAkB;AACzC,kBAAM,IAAI,iBAAiB,EAAE,cAAc;AAC3C,gBAAI,GAAG,SAAS,GAAG;AACf,kBAAI,UAAU,oBAAoB,IAAI,EAAE,QAAQ,GAAG;AAAA,YACvD;AAAA,UACJ;AACA,iBAAO,IAAI,cAAc,IAAI,KAAK,CAAC;AAAA,QACvC;AACA,eAAO;AAAA,MACX;AACA,UAAI,SAAS,UAAU,SAAS,WAAW;AACvC,eAAO;AAAA,MACX;AACA,UAAI,SAAS,UAAU,QAAQ,SAAS,UAAU;AAC9C,YAAI,KAAK;AACT,YAAI,WAAW,IAAI,IAAI,SAAS,YAAY,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,QAAQ;AACjF,YAAI,SAAS,SAAS,EAAG,MAAK,SAAS,SAAS,QAAQ;AACxD,eAAO;AAAA,MACX;AACA,UAAI,SAAS,UAAU,WAAW,WAAW;AACzC,YAAI,IAAI,KAAK,QAAQ;AACrB,eAAO,EAAE,QAAQ,cAAc,EAAE;AAAA,MACrC;AACA,UAAI,SAAS,UAAU,WAAW,SAAS,UAAU,gBAAgB;AACjE,YAAI,CAAC,KAAK,SAAS,EAAG,QAAO;AAC7B,YAAI,IAAI,KAAK,QAAQ;AACrB,YAAI,EAAE,MAAM,KAAK,EAAG,QAAO,KAAK,SAAS,IAAI,KAAK,MAAM,QAAQ;AAChE,YAAI,EAAE,MAAM,KAAK,EAAG,QAAO,KAAK,SAAS,IAAI,KAAK,MAAM,QAAQ,IAAI;AACpE,YAAI,EAAE,MAAM,KAAK,EAAG,QAAO,KAAK,SAAS;AACzC,YAAI,EAAE,MAAM,KAAK,EAAG,QAAO,KAAK,SAAS,IAAI,KAAK,OAAO,QAAQ,KAAK,IAAI;AAC1E,YAAI,EAAE,MAAM,KAAK,EAAG,QAAO,KAAK,SAAS,IAAI;AAC7C,YAAI,EAAE,MAAM,KAAK,EAAG,QAAO,KAAK,SAAS,IAAI,KAAK,OAAO,QAAQ,IAAI;AACrE,YAAI,EAAE,MAAM,KAAK,EAAG,QAAO,KAAK,SAAS,IAAI,KAAK,OAAO,QAAQ,IAAI;AACrE,YAAI,EAAE,MAAM,KAAK,EAAG,QAAO,KAAK,SAAS,IAAI,KAAK,OAAO,QAAQ;AACjE,YAAI,EAAE,MAAM,IAAI,EAAG,QAAO,KAAK,SAAS,IAAI,IAAI,SAAS,YAAY,QAAQ;AAC7E,YAAI,IAAI,KAAK,SAAS;AACtB,YAAI,kBAAkB,IAAI,EAAG,QAAO,IAAI,IAAI,SAAS,YAAY,QAAQ;AACzE,eAAO;AAAA,MACX;AACA,UAAI,SAAS,UAAU,iBAAiB,WAAW;AAC/C,YAAI,CAAC,KAAK,SAAS,EAAG,QAAO;AAC7B,YAAI,IAAI,KAAK,QAAQ;AACrB,YAAI,EAAE,MAAM,IAAI,EAAG,QAAO,KAAK,SAAS,IAAI;AAC5C,YAAI,EAAE,MAAM,KAAK,EAAG,QAAO,KAAK,SAAS;AACzC,eAAO,KAAK,SAAS;AAAA,MACzB;AACA,UAAI,SAAS,UAAU,YAAY,WAAW;AAC1C,YAAI,CAAC,KAAK,SAAS,EAAG,QAAO;AAC7B,YAAI,IAAI,KAAK,QAAQ;AACrB,YAAI,EAAE,MAAM,MAAM,EAAG,QAAO,KAAK,SAAS,KAAK,KAAK,KAAK;AACzD,YAAI,EAAE,MAAM,OAAO,EAAG,QAAO,KAAK,SAAS,KAAK,KAAK,KAAK;AAC1D,YAAI,EAAE,MAAM,MAAM,EAAG,QAAO,KAAK,SAAS;AAC1C,eAAO,KAAK,SAAS,KAAK,KAAK,KAAK;AAAA,MACxC;AACA,UAAI,OAAO,IAAI,WAAW;AACtB,aAAK,SAAS;AACd,aAAK,WAAW;AAChB,aAAK,UAAU;AACf,aAAK,aAAa,SAAS,WAAW,aAAa,YAAY,UAAU,YAAY,SAAS;AAC1F,cAAI,IAAI,WAAW,OAAO,KAAK,MAAM,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAChG,iBAAO;AAAA,YACH,YAAY,cAAc,EAAE;AAAA,YAC5B,UAAU,YAAY,EAAE;AAAA,YACxB,WAAW,aAAa,EAAE;AAAA,YAC1B,YAAY,cAAc,EAAE;AAAA,YAC5B,aAAa,eAAe,EAAE;AAAA,YAC9B,UAAU,WAAW;AACjB,qBAAO,CAAE,KAAK,WAAW,KAAK,aAAa,KAAK,YAAY,KAAK,UAAU,KAAK,UAAW,EAAE,KAAK,GAAG;AAAA,YACzG;AAAA,UACJ;AAAA,QACJ;AACA,YAAI,OAAO;AACX,aAAK,QAAQ,SAAS,GAAG;AACrB,cAAI,IAAI,CAAC;AACT,cAAI,IAAI,IAAI,KAAK,IAAI,eAAe,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG;AACvD,cAAI,MAAM;AAAA,YACN,UAAU;AAAA,YACV,WAAW;AAAA,YACX,YAAY;AAAA,YACZ,aAAa;AAAA,UACjB;AACA,cAAI,KAAK;AACT,mBAASA,KAAI,GAAGA,KAAI,EAAE,QAAQA,MAAK;AAC/B,gBAAI,CAAC,IAAI,aAAa,KAAK,OAAO,QAAQ,EAAEA,EAAC,CAAC,KAAK,IAAI;AACnD,kBAAI,EAAEA,EAAC,KAAK,UAAW,GAAE,YAAY,EAAEA,EAAC;AACxC,kBAAI,YAAY;AAAA,YACpB,WAAW,CAAC,IAAI,eAAe,KAAK,SAAS,QAAQ,EAAEA,EAAC,CAAC,KAAK,IAAI;AAC9D,kBAAI,EAAEA,EAAC,KAAK,UAAW,GAAE,cAAc,EAAEA,EAAC;AAC1C,kBAAI,YAAY,IAAI,cAAc;AAAA,YACtC,WAAW,CAAC,IAAI,cAAc,KAAK,QAAQ,QAAQ,EAAEA,EAAC,CAAC,KAAK,IAAI;AAC5D,kBAAI,EAAEA,EAAC,KAAK,UAAW,GAAE,aAAa,EAAEA,EAAC;AACzC,kBAAI,YAAY,IAAI,cAAc,IAAI,aAAa;AAAA,YACvD,WAAW,CAAC,IAAI,UAAU;AACtB,kBAAI,EAAEA,EAAC,KAAK,UAAW,GAAE,WAAW,EAAEA,EAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AACrD,kBAAI,YAAY,IAAI,cAAc,IAAI,aAAa,IAAI,WAAW;AAAA,YACtE,OAAO;AACH,kBAAI,EAAEA,EAAC,KAAK,UAAW,OAAM,EAAEA,EAAC;AAAA,YACpC;AAAA,UACJ;AACA,cAAI,MAAM,GAAI,GAAE,aAAa;AAC7B,iBAAO;AAAA,QACX;AAAA,MACJ,EAAE;AACF,UAAI,gBAAgB,SAAS,GAAG;AAC5B,YAAI,IAAI,IAAI,KAAK,IAAI,gBAAgB,KAAK,IAAI,QAAQ,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG;AAC5E,iBAASA,KAAI,GAAGA,KAAI,EAAE,QAAQA,MAAK;AAC/B,YAAEA,EAAC,IAAI,WAAW,EAAEA,EAAC,CAAC;AAAA,QAC1B;AACA,eAAO;AAAA,MACX;AACA,UAAI,QAAQ,SAAS,GAAG,GAAG;AACvB,aAAK,IAAI;AACT,aAAK,IAAI;AAAA,MACb;AACA,UAAI,MAAM,UAAU,UAAU,SAAS,GAAG;AACtC,eAAO,KAAK,MAAM,EAAE,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,CAAC;AAAA,MAChD;AACA,UAAI,MAAM,UAAU,iBAAiB,SAAS,GAAG;AAC7C,YAAI,KAAK,KAAK,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AAC5C,YAAI,KAAK,KAAK,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AAC5C,aAAK,IAAI;AACT,aAAK,IAAI;AAAA,MACb;AACA,UAAI,cAAc,SAAS,GAAG;AAC1B,YAAI,IAAI,IAAI,cAAc,CAAC;AAC3B,eAAO,IAAI,IAAI,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAAA,MACnC;AACA,UAAI,aAAa,SAAS,GAAG;AACzB,YAAI,IAAI,IAAI,cAAc,CAAC;AAC3B,YAAI,OAAO,CAAC;AACZ,iBAASA,KAAI,GAAGA,KAAI,EAAE,QAAQA,MAAK,GAAG;AAClC,eAAK,KAAK,IAAI,IAAI,MAAM,EAAEA,EAAC,GAAG,EAAEA,KAAI,CAAC,CAAC,CAAC;AAAA,QAC3C;AACA,eAAO;AAAA,MACX;AACA,UAAI,cAAc,SAAS,IAAI,IAAI,IAAI,IAAI;AACvC,aAAK,KAAK,OAAO;AACjB,aAAK,KAAK,OAAO;AACjB,aAAK,KAAK,OAAO;AACjB,aAAK,KAAK,OAAO;AACjB,aAAK,IAAI,WAAW;AAChB,iBAAO,KAAK;AAAA,QAChB;AACA,aAAK,IAAI,WAAW;AAChB,iBAAO,KAAK;AAAA,QAChB;AACA,aAAK,QAAQ,WAAW;AACpB,iBAAO,KAAK,KAAK,KAAK;AAAA,QAC1B;AACA,aAAK,SAAS,WAAW;AACrB,iBAAO,KAAK,KAAK,KAAK;AAAA,QAC1B;AACA,aAAK,WAAW,SAAS,GAAG,GAAG;AAC3B,cAAI,KAAK,MAAM;AACX,gBAAI,MAAM,KAAK,EAAE,KAAK,MAAM,KAAK,EAAE,GAAG;AAClC,mBAAK,KAAK;AACV,mBAAK,KAAK;AAAA,YACd;AACA,gBAAI,IAAI,KAAK,GAAI,MAAK,KAAK;AAC3B,gBAAI,IAAI,KAAK,GAAI,MAAK,KAAK;AAAA,UAC/B;AACA,cAAI,KAAK,MAAM;AACX,gBAAI,MAAM,KAAK,EAAE,KAAK,MAAM,KAAK,EAAE,GAAG;AAClC,mBAAK,KAAK;AACV,mBAAK,KAAK;AAAA,YACd;AACA,gBAAI,IAAI,KAAK,GAAI,MAAK,KAAK;AAC3B,gBAAI,IAAI,KAAK,GAAI,MAAK,KAAK;AAAA,UAC/B;AAAA,QACJ;AACA,aAAK,OAAO,SAAS,GAAG;AACpB,eAAK,SAAS,GAAG,IAAI;AAAA,QACzB;AACA,aAAK,OAAO,SAAS,GAAG;AACpB,eAAK,SAAS,MAAM,CAAC;AAAA,QACzB;AACA,aAAK,iBAAiB,SAAS,IAAI;AAC/B,eAAK,SAAS,GAAG,IAAI,GAAG,EAAE;AAC1B,eAAK,SAAS,GAAG,IAAI,GAAG,EAAE;AAAA,QAC9B;AACA,aAAK,oBAAoB,SAAS,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK;AAC5D,cAAI,OAAO,MAAM,IAAI,KAAK,MAAM;AAChC,cAAI,OAAO,MAAM,IAAI,KAAK,MAAM;AAChC,cAAI,OAAO,OAAO,IAAI,KAAK,MAAM;AACjC,cAAI,OAAO,OAAO,IAAI,KAAK,MAAM;AACjC,eAAK,eAAe,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,KAAK,GAAG;AAAA,QAClE;AACA,aAAK,iBAAiB,SAAS,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK;AACnE,cAAI,KAAK,CAAE,KAAK,GAAI,GAAG,KAAK,CAAE,KAAK,GAAI,GAAG,KAAK,CAAE,KAAK,GAAI,GAAG,KAAK,CAAE,KAAK,GAAI;AAC7E,eAAK,SAAS,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC1B,eAAK,SAAS,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC1B,eAAK,IAAI,GAAG,KAAK,GAAG,KAAK;AACrB,gBAAI,IAAI,SAAS,GAAG;AAChB,qBAAO,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;AAAA,YACzI;AACA,gBAAI,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;AACzC,gBAAI,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;AACrD,gBAAI,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;AAC5B,gBAAI,KAAK,GAAG;AACR,kBAAI,KAAK,EAAG;AACZ,kBAAI,IAAI,CAAC,IAAI;AACb,kBAAI,IAAI,KAAK,IAAI,GAAG;AAChB,oBAAI,KAAK,EAAG,MAAK,KAAK,EAAE,CAAC,CAAC;AAC1B,oBAAI,KAAK,EAAG,MAAK,KAAK,EAAE,CAAC,CAAC;AAAA,cAC9B;AACA;AAAA,YACJ;AACA,gBAAI,OAAO,KAAK,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI;AACpC,gBAAI,OAAO,EAAG;AACd,gBAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,IAAI;AACvC,gBAAI,IAAI,MAAM,KAAK,GAAG;AAClB,kBAAI,KAAK,EAAG,MAAK,KAAK,EAAE,EAAE,CAAC;AAC3B,kBAAI,KAAK,EAAG,MAAK,KAAK,EAAE,EAAE,CAAC;AAAA,YAC/B;AACA,gBAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,IAAI;AACvC,gBAAI,IAAI,MAAM,KAAK,GAAG;AAClB,kBAAI,KAAK,EAAG,MAAK,KAAK,EAAE,EAAE,CAAC;AAC3B,kBAAI,KAAK,EAAG,MAAK,KAAK,EAAE,EAAE,CAAC;AAAA,YAC/B;AAAA,UACJ;AAAA,QACJ;AACA,aAAK,eAAe,SAAS,GAAG,GAAG;AAC/B,iBAAO,KAAK,MAAM,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,KAAK,KAAK;AAAA,QACrE;AACA,aAAK,SAAS,IAAI,EAAE;AACpB,aAAK,SAAS,IAAI,EAAE;AAAA,MACxB;AACA,UAAI,YAAY,SAAS,GAAG;AACxB,YAAI,OAAO;AACX,aAAK,OAAO,CAAC;AACb,aAAK,KAAK,YAAY,SAAS,GAAG;AAC9B,eAAK,IAAI,IAAI,YAAY,CAAC;AAC1B,eAAK,QAAQ,SAASI,MAAK;AACvB,YAAAA,KAAI,UAAU,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC;AAAA,UAC9C;AACA,eAAK,UAAU,SAASA,MAAK;AACzB,YAAAA,KAAI,UAAU,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,KAAK,EAAE,KAAK,CAAC;AAAA,UACxD;AACA,eAAK,eAAe,SAAS,GAAG;AAC5B,cAAE,eAAe,CAAE,GAAG,GAAG,GAAG,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,CAAE,CAAC;AAAA,UACjE;AAAA,QACJ;AACA,aAAK,KAAK,SAAS,SAAS,GAAG;AAC3B,cAAI,IAAI,IAAI,cAAc,CAAC;AAC3B,eAAK,QAAQ,IAAI,IAAI,SAAS,SAAS,EAAE,CAAC,CAAC;AAC3C,eAAK,KAAK,EAAE,CAAC,KAAK;AAClB,eAAK,KAAK,EAAE,CAAC,KAAK;AAClB,eAAK,QAAQ,SAASA,MAAK;AACvB,YAAAA,KAAI,UAAU,KAAK,IAAI,KAAK,EAAE;AAC9B,YAAAA,KAAI,OAAO,KAAK,MAAM,UAAU,CAAC;AACjC,YAAAA,KAAI,UAAU,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;AAAA,UACpC;AACA,eAAK,UAAU,SAASA,MAAK;AACzB,YAAAA,KAAI,UAAU,KAAK,IAAI,KAAK,EAAE;AAC9B,YAAAA,KAAI,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AACtC,YAAAA,KAAI,UAAU,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;AAAA,UACpC;AACA,eAAK,eAAe,SAAS,GAAG;AAC5B,gBAAIC,KAAI,KAAK,MAAM,UAAU;AAC7B,cAAE,eAAe,CAAE,GAAG,GAAG,GAAG,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,CAAE,CAAC;AAC7D,cAAE,eAAe,CAAE,KAAK,IAAIA,EAAC,GAAG,KAAK,IAAIA,EAAC,GAAG,CAAC,KAAK,IAAIA,EAAC,GAAG,KAAK,IAAIA,EAAC,GAAG,GAAG,CAAE,CAAC;AAC9E,cAAE,eAAe,CAAE,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,CAAE,CAAC;AAAA,UACnE;AAAA,QACJ;AACA,aAAK,KAAK,QAAQ,SAAS,GAAG;AAC1B,eAAK,IAAI,IAAI,YAAY,CAAC;AAC1B,eAAK,QAAQ,SAASD,MAAK;AACvB,YAAAA,KAAI,MAAM,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,CAAC;AAAA,UACtD;AACA,eAAK,UAAU,SAASA,MAAK;AACzB,YAAAA,KAAI,MAAM,IAAI,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,CAAC;AAAA,UAC9D;AACA,eAAK,eAAe,SAAS,GAAG;AAC5B,cAAE,eAAe,CAAE,KAAK,EAAE,KAAK,GAAG,GAAG,GAAG,KAAK,EAAE,KAAK,GAAG,GAAG,CAAE,CAAC;AAAA,UACjE;AAAA,QACJ;AACA,aAAK,KAAK,SAAS,SAAS,GAAG;AAC3B,eAAK,IAAI,IAAI,cAAc,CAAC;AAC5B,eAAK,QAAQ,SAASA,MAAK;AACvB,YAAAA,KAAI,UAAU,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;AAAA,UAClF;AACA,eAAK,eAAe,SAAS,GAAG;AAC5B,cAAE,eAAe,KAAK,CAAC;AAAA,UAC3B;AAAA,QACJ;AACA,aAAK,KAAK,WAAW,SAAS,GAAG;AAC7B,eAAK,OAAO,KAAK,KAAK;AACtB,eAAK,KAAK,CAAC;AACX,eAAK,QAAQ,IAAI,IAAI,SAAS,SAAS,CAAC;AAAA,QAC5C;AACA,aAAK,KAAK,SAAS,YAAY,IAAI,KAAK,KAAK,OAAO;AACpD,aAAK,KAAK,QAAQ,SAAS,GAAG;AAC1B,eAAK,OAAO,KAAK,KAAK;AACtB,eAAK,KAAK,CAAC;AACX,eAAK,IAAI,CAAE,GAAG,GAAG,KAAK,IAAI,KAAK,MAAM,UAAU,CAAC,GAAG,GAAG,GAAG,CAAE;AAAA,QAC/D;AACA,aAAK,KAAK,MAAM,YAAY,IAAI,KAAK,KAAK,SAAS;AACnD,aAAK,KAAK,QAAQ,SAAS,GAAG;AAC1B,eAAK,OAAO,KAAK,KAAK;AACtB,eAAK,KAAK,CAAC;AACX,eAAK,IAAI,CAAE,GAAG,KAAK,IAAI,KAAK,MAAM,UAAU,CAAC,GAAG,GAAG,GAAG,GAAG,CAAE;AAAA,QAC/D;AACA,aAAK,KAAK,MAAM,YAAY,IAAI,KAAK,KAAK,SAAS;AACnD,aAAK,aAAa,CAAC;AACnB,aAAK,QAAQ,SAASA,MAAK;AACvB,mBAASJ,KAAI,GAAGA,KAAI,KAAK,WAAW,QAAQA,MAAK;AAC7C,iBAAK,WAAWA,EAAC,EAAE,MAAMI,IAAG;AAAA,UAChC;AAAA,QACJ;AACA,aAAK,UAAU,SAASA,MAAK;AACzB,mBAASJ,KAAI,KAAK,WAAW,SAAS,GAAGA,MAAK,GAAGA,MAAK;AAClD,iBAAK,WAAWA,EAAC,EAAE,QAAQI,IAAG;AAAA,UAClC;AAAA,QACJ;AACA,aAAK,eAAe,SAAS,GAAG;AAC5B,mBAASJ,KAAI,GAAGA,KAAI,KAAK,WAAW,QAAQA,MAAK;AAC7C,iBAAK,WAAWA,EAAC,EAAE,aAAa,CAAC;AAAA,UACrC;AAAA,QACJ;AACA,YAAI,OAAO,IAAI,KAAK,IAAI,eAAe,CAAC,CAAC,EAAE,QAAQ,gBAAgB,IAAI,EAAE,MAAM,aAAa;AAC5F,iBAASA,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAClC,cAAI,OAAO,IAAI,KAAK,KAAKA,EAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;AACzC,cAAI,IAAI,KAAKA,EAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,QAAQ,KAAK,EAAE;AAC7C,cAAI,YAAY,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;AACrC,oBAAU,OAAO;AACjB,eAAK,WAAW,KAAK,SAAS;AAAA,QAClC;AAAA,MACJ;AACA,UAAI,cAAc,SAASI,MAAK,aAAaH,QAAO,cAAcC,SAAQ,eAAe,MAAM,MAAM,MAAM,MAAM;AAC7G,sBAAc,IAAI,eAAe,WAAW;AAC5C,sBAAc,YAAY,QAAQ,YAAY,EAAE;AAChD,YAAI,QAAQ,YAAY,MAAM,GAAG,EAAE,CAAC,KAAK;AACzC,YAAI,cAAc,YAAY,MAAM,GAAG,EAAE,CAAC,KAAK;AAC/C,YAAI,SAASD,SAAQ;AACrB,YAAI,SAASC,UAAS;AACtB,YAAI,WAAW,KAAK,IAAI,QAAQ,MAAM;AACtC,YAAI,WAAW,KAAK,IAAI,QAAQ,MAAM;AACtC,YAAI,eAAe,QAAQ;AACvB,0BAAgB;AAChB,2BAAiB;AAAA,QACrB;AACA,YAAI,eAAe,SAAS;AACxB,0BAAgB;AAChB,2BAAiB;AAAA,QACrB;AACA,eAAO,IAAI,IAAI,SAAS,QAAQ,IAAI;AACpC,eAAO,IAAI,IAAI,SAAS,QAAQ,IAAI;AACpC,YAAI,KAAK,SAAS,KAAK,KAAK,SAAS,GAAG;AACpC,UAAAE,KAAI,UAAU,CAAC,WAAW,KAAK,SAAS,GAAG,GAAG,CAAC,WAAW,KAAK,SAAS,GAAG,CAAC;AAAA,QAChF,OAAO;AACH,cAAI,MAAM,MAAM,OAAO,MAAM,eAAe,UAAU,YAAY,UAAU,eAAe,WAAW,YAAY,QAAS,CAAAA,KAAI,UAAUH,SAAQ,IAAI,eAAe,GAAG,CAAC;AACxK,cAAI,MAAM,MAAM,OAAO,MAAM,eAAe,UAAU,YAAY,UAAU,eAAe,WAAW,YAAY,QAAS,CAAAG,KAAI,UAAU,GAAGF,UAAS,IAAI,gBAAgB,CAAC;AAC1K,cAAI,MAAM,MAAM,OAAO,MAAM,eAAe,UAAU,YAAY,UAAU,eAAe,WAAW,YAAY,QAAS,CAAAE,KAAI,UAAUH,SAAQ,cAAc,CAAC;AAChK,cAAI,MAAM,MAAM,OAAO,MAAM,eAAe,UAAU,YAAY,UAAU,eAAe,WAAW,YAAY,QAAS,CAAAG,KAAI,UAAU,GAAGF,UAAS,aAAa;AAAA,QACtK;AACA,YAAI,SAAS,OAAQ,CAAAE,KAAI,MAAM,QAAQ,MAAM;AAAA,iBAAY,eAAe,OAAQ,CAAAA,KAAI,MAAM,UAAU,QAAQ;AAAA,iBAAY,eAAe,QAAS,CAAAA,KAAI,MAAM,UAAU,QAAQ;AAC5K,QAAAA,KAAI,UAAU,QAAQ,OAAO,IAAI,CAAC,MAAM,QAAQ,OAAO,IAAI,CAAC,IAAI;AAAA,MACpE;AACA,UAAI,UAAU,CAAC;AACf,UAAI,gBAAgB,IAAI,IAAI,SAAS,SAAS,EAAE;AAChD,UAAI,QAAQ,cAAc,SAAS,MAAM;AACrC,aAAK,aAAa,CAAC;AACnB,aAAK,SAAS,CAAC;AACf,aAAK,WAAW,CAAC;AACjB,aAAK,YAAY,SAAS,MAAM,mBAAmB;AAC/C,cAAI,IAAI,KAAK,WAAW,IAAI;AAC5B,cAAI,KAAK,KAAM,QAAO;AACtB,cAAI,qBAAqB,MAAM;AAC3B,gBAAI,IAAI,IAAI,SAAS,MAAM,EAAE;AAC7B,iBAAK,WAAW,IAAI,IAAI;AAAA,UAC5B;AACA,iBAAO,KAAK,IAAI;AAAA,QACpB;AACA,aAAK,mBAAmB,WAAW;AAC/B,mBAAS,KAAK,KAAK,YAAY;AAC3B,gBAAI,EAAE,MAAM,QAAQ,GAAG;AACnB,qBAAO,KAAK,WAAW,CAAC;AAAA,YAC5B;AAAA,UACJ;AACA,iBAAO,IAAI;AAAA,QACf;AACA,aAAK,QAAQ,SAAS,MAAM,mBAAmB;AAC3C,cAAI,IAAI,KAAK,OAAO,IAAI;AACxB,cAAI,KAAK,KAAM,QAAO;AACtB,cAAI,IAAI,KAAK,UAAU,IAAI;AAC3B,cAAI,KAAK,QAAQ,EAAE,SAAS,GAAG;AAC3B,iBAAK,OAAO,IAAI,IAAI;AACpB,mBAAO;AAAA,UACX;AACA,cAAI,IAAI,KAAK;AACb,cAAI,KAAK,MAAM;AACX,gBAAI,KAAK,EAAE,MAAM,IAAI;AACrB,gBAAI,MAAM,QAAQ,GAAG,SAAS,GAAG;AAC7B,qBAAO;AAAA,YACX;AAAA,UACJ;AACA,cAAI,qBAAqB,MAAM;AAC3B,gBAAI,IAAI,IAAI,SAAS,MAAM,EAAE;AAC7B,iBAAK,OAAO,IAAI,IAAI;AAAA,UACxB;AACA,iBAAO,KAAK,IAAI;AAAA,QACpB;AACA,aAAK,SAAS,SAASA,MAAK;AACxB,cAAI,KAAK,MAAM,SAAS,EAAE,SAAS,OAAQ;AAC3C,cAAI,KAAK,UAAU,YAAY,EAAE,SAAS,SAAU;AACpD,UAAAA,KAAI,KAAK;AACT,cAAI,KAAK,UAAU,MAAM,EAAE,SAAS,GAAG;AACnC,gBAAI,OAAO,KAAK,UAAU,MAAM,EAAE,cAAc;AAChD,gBAAI,QAAQ,KAAM,MAAK,MAAMA,MAAK,IAAI;AAAA,UAC1C,WAAW,KAAK,MAAM,QAAQ,EAAE,SAAS,GAAG;AACxC,gBAAI,SAAS,KAAK,MAAM,QAAQ,EAAE,cAAc;AAChD,gBAAI,UAAU,KAAM,QAAO,MAAMA,MAAK,IAAI;AAAA,UAC9C,OAAO;AACH,iBAAK,WAAWA,IAAG;AACnB,iBAAK,eAAeA,IAAG;AACvB,iBAAK,aAAaA,IAAG;AAAA,UACzB;AACA,UAAAA,KAAI,QAAQ;AAAA,QAChB;AACA,aAAK,aAAa,SAAS,MAAM;AAAA,QAAC;AAClC,aAAK,eAAe,SAAS,MAAM;AAAA,QAAC;AACpC,aAAK,iBAAiB,SAASA,MAAK;AAChC,mBAASJ,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC3C,iBAAK,SAASA,EAAC,EAAE,OAAOI,IAAG;AAAA,UAC/B;AAAA,QACJ;AACA,aAAK,WAAW,SAAS,WAAW,QAAQ;AACxC,cAAI,QAAQ;AACZ,cAAI,OAAQ,SAAQ,IAAI,cAAc,SAAS;AAC/C,gBAAM,SAAS;AACf,eAAK,SAAS,KAAK,KAAK;AAAA,QAC5B;AACA,YAAI,QAAQ,QAAQ,KAAK,YAAY,GAAG;AACpC,mBAASJ,KAAI,GAAGA,KAAI,KAAK,WAAW,QAAQA,MAAK;AAC7C,gBAAI,YAAY,KAAK,WAAWA,EAAC;AACjC,gBAAI,UAAU,YAAY,EAAG,MAAK,SAAS,WAAW,IAAI;AAC1D,gBAAI,KAAK,oBAAoB,UAAU,YAAY,GAAG;AAClD,kBAAI,OAAO,UAAU,aAAa,UAAU,QAAQ;AACpD,kBAAI,IAAI,KAAK,IAAI,eAAe,IAAI,CAAC,KAAK,IAAI;AAC1C,qBAAK,SAAS,IAAI,IAAI,QAAQ,MAAM,SAAS,GAAG,KAAK;AAAA,cACzD;AAAA,YACJ;AAAA,UACJ;AACA,mBAASA,KAAI,GAAGA,KAAI,KAAK,WAAW,QAAQA,MAAK;AAC7C,gBAAI,YAAY,KAAK,WAAWA,EAAC;AACjC,iBAAK,WAAW,UAAU,QAAQ,IAAI,IAAI,IAAI,SAAS,UAAU,UAAU,UAAU,SAAS;AAAA,UAClG;AACA,cAAI,SAAS,IAAI,OAAO,KAAK,QAAQ;AACrC,cAAI,UAAU,MAAM;AAChB,qBAAS,QAAQ,QAAQ;AACrB,mBAAK,OAAO,IAAI,IAAI,OAAO,IAAI;AAAA,YACnC;AAAA,UACJ;AACA,cAAI,KAAK,UAAU,OAAO,EAAE,SAAS,GAAG;AACpC,gBAAI,UAAU,IAAI,eAAe,KAAK,UAAU,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG;AACzE,qBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,uBAAS,IAAI,OAAO,MAAM,QAAQ,CAAC,CAAC;AACpC,kBAAI,UAAU,MAAM;AAChB,yBAAS,QAAQ,QAAQ;AACrB,uBAAK,OAAO,IAAI,IAAI,OAAO,IAAI;AAAA,gBACnC;AAAA,cACJ;AACA,uBAAS,IAAI,OAAO,KAAK,WAAW,MAAM,QAAQ,CAAC,CAAC;AACpD,kBAAI,UAAU,MAAM;AAChB,yBAAS,QAAQ,QAAQ;AACrB,uBAAK,OAAO,IAAI,IAAI,OAAO,IAAI;AAAA,gBACnC;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AACA,cAAI,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AACjC,gBAAIM,UAAS,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,EAAE,KAAK;AACxD,gBAAIA,WAAU,MAAM;AAChB,uBAAS,QAAQA,SAAQ;AACrB,qBAAK,OAAO,IAAI,IAAIA,QAAO,IAAI;AAAA,cACnC;AAAA,YACJ;AAAA,UACJ;AACA,cAAI,KAAK,UAAU,OAAO,EAAE,SAAS,GAAG;AACpC,gBAAIA,UAAS,KAAK,UAAU,OAAO,EAAE,MAAM,MAAM,GAAG;AACpD,qBAASN,KAAI,GAAGA,KAAIM,QAAO,QAAQN,MAAK;AACpC,kBAAI,IAAI,KAAKM,QAAON,EAAC,CAAC,KAAK,IAAI;AAC3B,oBAAI,QAAQM,QAAON,EAAC,EAAE,MAAM,GAAG;AAC/B,oBAAI,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC;AAC5B,oBAAI,QAAQ,IAAI,KAAK,MAAM,CAAC,CAAC;AAC7B,qBAAK,OAAO,IAAI,IAAI,IAAI,IAAI,SAAS,MAAM,KAAK;AAAA,cACpD;AAAA,YACJ;AAAA,UACJ;AACA,cAAI,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AACjC,gBAAI,IAAI,YAAY,KAAK,UAAU,IAAI,EAAE,KAAK,KAAK,MAAM;AACrD,kBAAI,YAAY,KAAK,UAAU,IAAI,EAAE,KAAK,IAAI;AAAA,YAClD;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,QAAQ,sBAAsB,SAAS,MAAM;AAC7C,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,aAAa,SAASI,MAAK;AAC5B,cAAI,KAAK,MAAM,MAAM,EAAE,gBAAgB,GAAG;AACtC,gBAAI,KAAK,KAAK,MAAM,MAAM,EAAE,uBAAuB,MAAM,KAAK,MAAM,cAAc,CAAC;AACnF,gBAAI,MAAM,KAAM,CAAAA,KAAI,YAAY;AAAA,UACpC,WAAW,KAAK,MAAM,MAAM,EAAE,SAAS,GAAG;AACtC,gBAAI,YAAY,KAAK,MAAM,MAAM;AACjC,gBAAI,UAAU,SAAS,eAAgB,WAAU,QAAQ,KAAK,MAAM,OAAO,EAAE;AAC7E,YAAAA,KAAI,YAAY,UAAU,SAAS,SAAS,kBAAkB,UAAU;AAAA,UAC5E;AACA,cAAI,KAAK,MAAM,cAAc,EAAE,SAAS,GAAG;AACvC,gBAAI,YAAY,IAAI,IAAI,SAAS,QAAQA,KAAI,SAAS;AACtD,wBAAY,UAAU,WAAW,KAAK,MAAM,cAAc,EAAE,KAAK;AACjE,YAAAA,KAAI,YAAY,UAAU;AAAA,UAC9B;AACA,cAAI,KAAK,MAAM,QAAQ,EAAE,gBAAgB,GAAG;AACxC,gBAAI,KAAK,KAAK,MAAM,QAAQ,EAAE,uBAAuB,MAAM,KAAK,MAAM,gBAAgB,CAAC;AACvF,gBAAI,MAAM,KAAM,CAAAA,KAAI,cAAc;AAAA,UACtC,WAAW,KAAK,MAAM,QAAQ,EAAE,SAAS,GAAG;AACxC,gBAAI,cAAc,KAAK,MAAM,QAAQ;AACrC,gBAAI,YAAY,SAAS,eAAgB,aAAY,QAAQ,KAAK,MAAM,OAAO,EAAE;AACjF,YAAAA,KAAI,cAAc,YAAY,SAAS,SAAS,kBAAkB,YAAY;AAAA,UAClF;AACA,cAAI,KAAK,MAAM,gBAAgB,EAAE,SAAS,GAAG;AACzC,gBAAI,cAAc,IAAI,IAAI,SAAS,UAAUA,KAAI,WAAW;AAC5D,0BAAc,YAAY,WAAW,KAAK,MAAM,gBAAgB,EAAE,KAAK;AACvE,YAAAA,KAAI,cAAc,YAAY;AAAA,UAClC;AACA,cAAI,KAAK,MAAM,cAAc,EAAE,SAAS,GAAG;AACvC,gBAAI,eAAe,KAAK,MAAM,cAAc,EAAE,SAAS;AACvD,YAAAA,KAAI,YAAY,gBAAgB,IAAI,OAAO;AAAA,UAC/C;AACA,cAAI,KAAK,MAAM,gBAAgB,EAAE,SAAS,EAAG,CAAAA,KAAI,UAAU,KAAK,MAAM,gBAAgB,EAAE;AACxF,cAAI,KAAK,MAAM,iBAAiB,EAAE,SAAS,EAAG,CAAAA,KAAI,WAAW,KAAK,MAAM,iBAAiB,EAAE;AAC3F,cAAI,KAAK,MAAM,mBAAmB,EAAE,SAAS,EAAG,CAAAA,KAAI,aAAa,KAAK,MAAM,mBAAmB,EAAE;AACjG,cAAI,KAAK,MAAM,kBAAkB,EAAE,SAAS,GAAG;AAC3C,gBAAI,OAAO,IAAI,cAAc,KAAK,MAAM,kBAAkB,EAAE,KAAK;AACjE,gBAAI,OAAOA,KAAI,eAAe,aAAa;AACvC,cAAAA,KAAI,YAAY,IAAI;AAAA,YACxB,WAAW,OAAOA,KAAI,kBAAkB,aAAa;AACjD,cAAAA,KAAI,iBAAiB;AAAA,YACzB,WAAW,OAAOA,KAAI,WAAW,aAAa;AAC1C,cAAAA,KAAI,UAAU;AAAA,YAClB;AACA,gBAAI,SAAS,KAAK,MAAM,mBAAmB,EAAE,kBAAkB,CAAC;AAChE,gBAAI,OAAOA,KAAI,kBAAkB,aAAa;AAC1C,cAAAA,KAAI,iBAAiB;AAAA,YACzB,WAAW,OAAOA,KAAI,wBAAwB,aAAa;AACvD,cAAAA,KAAI,uBAAuB;AAAA,YAC/B,WAAW,OAAOA,KAAI,iBAAiB,aAAa;AAChD,cAAAA,KAAI,gBAAgB;AAAA,YACxB;AAAA,UACJ;AACA,cAAI,OAAOA,KAAI,QAAQ,aAAa;AAChC,YAAAA,KAAI,OAAO,IAAI,KAAK,WAAW,KAAK,MAAM,YAAY,EAAE,OAAO,KAAK,MAAM,cAAc,EAAE,OAAO,KAAK,MAAM,aAAa,EAAE,OAAO,KAAK,MAAM,WAAW,EAAE,SAAS,IAAI,KAAK,MAAM,WAAW,EAAE,SAAS,IAAI,OAAO,IAAI,KAAK,MAAM,aAAa,EAAE,KAAK,EAAE,SAAS;AAAA,UACrQ;AACA,cAAI,KAAK,UAAU,WAAW,EAAE,SAAS,GAAG;AACxC,gBAAI,YAAY,IAAI,IAAI,UAAU,KAAK,UAAU,WAAW,EAAE,KAAK;AACnE,sBAAU,MAAMA,IAAG;AAAA,UACvB;AACA,cAAI,KAAK,MAAM,WAAW,EAAE,SAAS,GAAG;AACpC,gBAAI,OAAO,KAAK,MAAM,WAAW,EAAE,cAAc;AACjD,gBAAI,QAAQ,KAAM,MAAK,MAAMA,IAAG;AAAA,UACpC;AACA,cAAI,KAAK,MAAM,SAAS,EAAE,SAAS,GAAG;AAClC,YAAAA,KAAI,cAAc,KAAK,MAAM,SAAS,EAAE,SAAS;AAAA,UACrD;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,QAAQ,oBAAoB,YAAY,IAAI,IAAI,QAAQ,YAAY;AACxE,UAAI,QAAQ,kBAAkB,SAAS,MAAM;AACzC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,OAAO,SAASA,MAAK;AACtB,cAAIA,QAAO,KAAM,CAAAA,KAAI,UAAU;AAC/B,iBAAO,IAAI,IAAI,YAAY;AAAA,QAC/B;AACA,aAAK,iBAAiB,SAASA,MAAK;AAChC,eAAK,KAAKA,IAAG;AACb,cAAI,MAAM,UAAU,MAAMA,IAAG;AAC7B,cAAIA,KAAI,aAAa,IAAI;AACrB,gBAAI,KAAK,UAAU,WAAW,EAAE,SAAS,GAAG;AACxC,cAAAA,KAAI,KAAK,KAAK,UAAU,WAAW,EAAE,KAAK;AAAA,YAC9C,OAAO;AACH,cAAAA,KAAI,KAAK;AAAA,YACb;AAAA,UACJ;AACA,cAAIA,KAAI,eAAe,GAAI,CAAAA,KAAI,OAAO;AACtC,cAAI,UAAU,KAAK,WAAW;AAC9B,cAAI,WAAW,MAAM;AACjB,gBAAI,KAAK,MAAM,cAAc,EAAE,gBAAgB,GAAG;AAC9C,kBAAI,SAAS,KAAK,MAAM,cAAc,EAAE,cAAc;AACtD,qBAAO,OAAOA,MAAK,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AAAA,YACnD;AACA,gBAAI,KAAK,MAAM,YAAY,EAAE,gBAAgB,GAAG;AAC5C,kBAAI,SAAS,KAAK,MAAM,YAAY,EAAE,cAAc;AACpD,uBAASJ,KAAI,GAAGA,KAAI,QAAQ,SAAS,GAAGA,MAAK;AACzC,uBAAO,OAAOI,MAAK,QAAQJ,EAAC,EAAE,CAAC,GAAG,QAAQA,EAAC,EAAE,CAAC,CAAC;AAAA,cACnD;AAAA,YACJ;AACA,gBAAI,KAAK,MAAM,YAAY,EAAE,gBAAgB,GAAG;AAC5C,kBAAI,SAAS,KAAK,MAAM,YAAY,EAAE,cAAc;AACpD,qBAAO,OAAOI,MAAK,QAAQ,QAAQ,SAAS,CAAC,EAAE,CAAC,GAAG,QAAQ,QAAQ,SAAS,CAAC,EAAE,CAAC,CAAC;AAAA,YACrF;AAAA,UACJ;AAAA,QACJ;AACA,aAAK,iBAAiB,WAAW;AAC7B,iBAAO,KAAK,KAAK;AAAA,QACrB;AACA,aAAK,aAAa,WAAW;AACzB,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,UAAI,QAAQ,gBAAgB,YAAY,IAAI,IAAI,QAAQ,oBAAoB;AAC5E,UAAI,QAAQ,MAAM,SAAS,MAAM;AAC7B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,mBAAmB,KAAK;AAC7B,aAAK,eAAe,SAASA,MAAK;AAC9B,eAAK,iBAAiBA,IAAG;AACzB,cAAI,SAAS,cAAc;AAAA,QAC/B;AACA,aAAK,iBAAiB,KAAK;AAC3B,aAAK,aAAa,SAASA,MAAK;AAC5B,UAAAA,KAAI,cAAc;AAClB,UAAAA,KAAI,UAAU;AACd,UAAAA,KAAI,WAAW;AACf,UAAAA,KAAI,aAAa;AACjB,eAAK,eAAeA,IAAG;AACvB,cAAI,CAAC,KAAK,UAAU,GAAG,EAAE,SAAS,EAAG,MAAK,UAAU,KAAK,IAAI,EAAE,QAAQ;AACvE,cAAI,CAAC,KAAK,UAAU,GAAG,EAAE,SAAS,EAAG,MAAK,UAAU,KAAK,IAAI,EAAE,QAAQ;AACvE,UAAAA,KAAI,UAAU,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG,GAAG,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG,CAAC;AAClF,cAAIH,SAAQ,IAAI,SAAS,MAAM;AAC/B,cAAIC,UAAS,IAAI,SAAS,OAAO;AACjC,cAAI,CAAC,KAAK,UAAU,OAAO,EAAE,SAAS,EAAG,MAAK,UAAU,SAAS,IAAI,EAAE,QAAQ;AAC/E,cAAI,CAAC,KAAK,UAAU,QAAQ,EAAE,SAAS,EAAG,MAAK,UAAU,UAAU,IAAI,EAAE,QAAQ;AACjF,cAAI,OAAO,KAAK,QAAQ,aAAa;AACjC,YAAAD,SAAQ,KAAK,UAAU,OAAO,EAAE,SAAS,GAAG;AAC5C,YAAAC,UAAS,KAAK,UAAU,QAAQ,EAAE,SAAS,GAAG;AAC9C,gBAAI,IAAI;AACR,gBAAI,IAAI;AACR,gBAAI,KAAK,UAAU,MAAM,EAAE,SAAS,KAAK,KAAK,UAAU,MAAM,EAAE,SAAS,GAAG;AACxE,kBAAI,CAAC,KAAK,UAAU,MAAM,EAAE,SAAS,GAAG;AACxC,kBAAI,CAAC,KAAK,UAAU,MAAM,EAAE,SAAS,GAAG;AAAA,YAC5C;AACA,YAAAE,KAAI,UAAU;AACd,YAAAA,KAAI,OAAO,GAAG,CAAC;AACf,YAAAA,KAAI,OAAOH,QAAO,CAAC;AACnB,YAAAG,KAAI,OAAOH,QAAOC,OAAM;AACxB,YAAAE,KAAI,OAAO,GAAGF,OAAM;AACpB,YAAAE,KAAI,UAAU;AACd,YAAAA,KAAI,KAAK;AAAA,UACb;AACA,cAAI,SAAS,WAAWH,QAAOC,OAAM;AACrC,cAAI,KAAK,UAAU,SAAS,EAAE,SAAS,GAAG;AACtC,gBAAI,UAAU,IAAI,cAAc,KAAK,UAAU,SAAS,EAAE,KAAK;AAC/D,gBAAI,OAAO,QAAQ,CAAC;AACpB,gBAAI,OAAO,QAAQ,CAAC;AACpB,YAAAD,SAAQ,QAAQ,CAAC;AACjB,YAAAC,UAAS,QAAQ,CAAC;AAClB,gBAAI,YAAYE,MAAK,KAAK,UAAU,qBAAqB,EAAE,OAAO,IAAI,SAAS,MAAM,GAAGH,QAAO,IAAI,SAAS,OAAO,GAAGC,SAAQ,MAAM,MAAM,KAAK,UAAU,MAAM,EAAE,OAAO,KAAK,UAAU,MAAM,EAAE,KAAK;AACpM,gBAAI,SAAS,cAAc;AAC3B,gBAAI,SAAS,WAAW,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC;AAAA,UAClD;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,QAAQ,IAAI,YAAY,IAAI,IAAI,QAAQ,oBAAoB;AAChE,UAAI,QAAQ,OAAO,SAAS,MAAM;AAC9B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,OAAO,SAASE,MAAK;AACtB,cAAI,IAAI,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG;AACxC,cAAI,IAAI,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG;AACxC,cAAIH,SAAQ,KAAK,UAAU,OAAO,EAAE,SAAS,GAAG;AAChD,cAAIC,UAAS,KAAK,UAAU,QAAQ,EAAE,SAAS,GAAG;AAClD,cAAI,KAAK,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAC1C,cAAI,KAAK,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAC1C,cAAI,KAAK,UAAU,IAAI,EAAE,SAAS,KAAK,CAAC,KAAK,UAAU,IAAI,EAAE,SAAS,EAAG,MAAK;AAC9E,cAAI,KAAK,UAAU,IAAI,EAAE,SAAS,KAAK,CAAC,KAAK,UAAU,IAAI,EAAE,SAAS,EAAG,MAAK;AAC9E,eAAK,KAAK,IAAI,IAAID,SAAQ,CAAC;AAC3B,eAAK,KAAK,IAAI,IAAIC,UAAS,CAAC;AAC5B,cAAIE,QAAO,MAAM;AACb,YAAAA,KAAI,UAAU;AACd,YAAAA,KAAI,OAAO,IAAI,IAAI,CAAC;AACpB,YAAAA,KAAI,OAAO,IAAIH,SAAQ,IAAI,CAAC;AAC5B,YAAAG,KAAI,iBAAiB,IAAIH,QAAO,GAAG,IAAIA,QAAO,IAAI,EAAE;AACpD,YAAAG,KAAI,OAAO,IAAIH,QAAO,IAAIC,UAAS,EAAE;AACrC,YAAAE,KAAI,iBAAiB,IAAIH,QAAO,IAAIC,SAAQ,IAAID,SAAQ,IAAI,IAAIC,OAAM;AACtE,YAAAE,KAAI,OAAO,IAAI,IAAI,IAAIF,OAAM;AAC7B,YAAAE,KAAI,iBAAiB,GAAG,IAAIF,SAAQ,GAAG,IAAIA,UAAS,EAAE;AACtD,YAAAE,KAAI,OAAO,GAAG,IAAI,EAAE;AACpB,YAAAA,KAAI,iBAAiB,GAAG,GAAG,IAAI,IAAI,CAAC;AACpC,YAAAA,KAAI,UAAU;AAAA,UAClB;AACA,iBAAO,IAAI,IAAI,YAAY,GAAG,GAAG,IAAIH,QAAO,IAAIC,OAAM;AAAA,QAC1D;AAAA,MACJ;AACA,UAAI,QAAQ,KAAK,YAAY,IAAI,IAAI,QAAQ,gBAAgB;AAC7D,UAAI,QAAQ,SAAS,SAAS,MAAM;AAChC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,OAAO,SAASE,MAAK;AACtB,cAAI,KAAK,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAC1C,cAAI,KAAK,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAC1C,cAAI,IAAI,KAAK,UAAU,GAAG,EAAE,SAAS;AACrC,cAAIA,QAAO,MAAM;AACb,YAAAA,KAAI,UAAU;AACd,YAAAA,KAAI,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,KAAK,GAAG,IAAI;AACvC,YAAAA,KAAI,UAAU;AAAA,UAClB;AACA,iBAAO,IAAI,IAAI,YAAY,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAAA,QAC7D;AAAA,MACJ;AACA,UAAI,QAAQ,OAAO,YAAY,IAAI,IAAI,QAAQ,gBAAgB;AAC/D,UAAI,QAAQ,UAAU,SAAS,MAAM;AACjC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,OAAO,SAASA,MAAK;AACtB,cAAI,QAAQ,MAAM,KAAK,KAAK,CAAC,IAAI,KAAK;AACtC,cAAI,KAAK,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAC1C,cAAI,KAAK,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAC1C,cAAI,KAAK,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAC1C,cAAI,KAAK,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAC1C,cAAIA,QAAO,MAAM;AACb,YAAAA,KAAI,UAAU;AACd,YAAAA,KAAI,OAAO,IAAI,KAAK,EAAE;AACtB,YAAAA,KAAI,cAAc,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ,IAAI,KAAK,IAAI,EAAE;AACjF,YAAAA,KAAI,cAAc,KAAK,IAAI,KAAK,QAAQ,IAAI,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE;AACjF,YAAAA,KAAI,cAAc,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ,IAAI,KAAK,IAAI,EAAE;AACjF,YAAAA,KAAI,cAAc,KAAK,IAAI,KAAK,QAAQ,IAAI,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE;AACjF,YAAAA,KAAI,UAAU;AAAA,UAClB;AACA,iBAAO,IAAI,IAAI,YAAY,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;AAAA,QACjE;AAAA,MACJ;AACA,UAAI,QAAQ,QAAQ,YAAY,IAAI,IAAI,QAAQ,gBAAgB;AAChE,UAAI,QAAQ,OAAO,SAAS,MAAM;AAC9B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,YAAY,WAAW;AACxB,iBAAO,CAAE,IAAI,IAAI,MAAM,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG,GAAG,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG,CAAC,GAAG,IAAI,IAAI,MAAM,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG,GAAG,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG,CAAC,CAAE;AAAA,QAC1L;AACA,aAAK,OAAO,SAASA,MAAK;AACtB,cAAI,SAAS,KAAK,UAAU;AAC5B,cAAIA,QAAO,MAAM;AACb,YAAAA,KAAI,UAAU;AACd,YAAAA,KAAI,OAAO,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;AACnC,YAAAA,KAAI,OAAO,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;AAAA,UACvC;AACA,iBAAO,IAAI,IAAI,YAAY,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;AAAA,QACjF;AACA,aAAK,aAAa,WAAW;AACzB,cAAI,SAAS,KAAK,UAAU;AAC5B,cAAI,IAAI,OAAO,CAAC,EAAE,QAAQ,OAAO,CAAC,CAAC;AACnC,iBAAO,CAAE,CAAE,OAAO,CAAC,GAAG,CAAE,GAAG,CAAE,OAAO,CAAC,GAAG,CAAE,CAAE;AAAA,QAChD;AAAA,MACJ;AACA,UAAI,QAAQ,KAAK,YAAY,IAAI,IAAI,QAAQ,gBAAgB;AAC7D,UAAI,QAAQ,WAAW,SAAS,MAAM;AAClC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,SAAS,IAAI,WAAW,KAAK,UAAU,QAAQ,EAAE,KAAK;AAC3D,aAAK,OAAO,SAASA,MAAK;AACtB,cAAI,KAAK,IAAI,IAAI,YAAY,KAAK,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,EAAE,CAAC;AAC/D,cAAIA,QAAO,MAAM;AACb,YAAAA,KAAI,UAAU;AACd,YAAAA,KAAI,OAAO,KAAK,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,EAAE,CAAC;AAAA,UACjD;AACA,mBAASJ,KAAI,GAAGA,KAAI,KAAK,OAAO,QAAQA,MAAK;AACzC,eAAG,SAAS,KAAK,OAAOA,EAAC,EAAE,GAAG,KAAK,OAAOA,EAAC,EAAE,CAAC;AAC9C,gBAAII,QAAO,KAAM,CAAAA,KAAI,OAAO,KAAK,OAAOJ,EAAC,EAAE,GAAG,KAAK,OAAOA,EAAC,EAAE,CAAC;AAAA,UAClE;AACA,iBAAO;AAAA,QACX;AACA,aAAK,aAAa,WAAW;AACzB,cAAI,UAAU,CAAC;AACf,mBAASA,KAAI,GAAGA,KAAI,KAAK,OAAO,SAAS,GAAGA,MAAK;AAC7C,oBAAQ,KAAK,CAAE,KAAK,OAAOA,EAAC,GAAG,KAAK,OAAOA,EAAC,EAAE,QAAQ,KAAK,OAAOA,KAAI,CAAC,CAAC,CAAE,CAAC;AAAA,UAC/E;AACA,kBAAQ,KAAK,CAAE,KAAK,OAAO,KAAK,OAAO,SAAS,CAAC,GAAG,QAAQ,QAAQ,SAAS,CAAC,EAAE,CAAC,CAAE,CAAC;AACpF,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,UAAI,QAAQ,SAAS,YAAY,IAAI,IAAI,QAAQ,gBAAgB;AACjE,UAAI,QAAQ,UAAU,SAAS,MAAM;AACjC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,WAAW,KAAK;AACrB,aAAK,OAAO,SAASI,MAAK;AACtB,cAAI,KAAK,KAAK,SAASA,IAAG;AAC1B,cAAIA,QAAO,MAAM;AACb,YAAAA,KAAI,OAAO,KAAK,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,EAAE,CAAC;AAC7C,YAAAA,KAAI,UAAU;AAAA,UAClB;AACA,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,UAAI,QAAQ,QAAQ,YAAY,IAAI,IAAI,QAAQ,SAAS;AACzD,UAAI,QAAQ,OAAO,SAAS,MAAM;AAC9B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,YAAI,IAAI,KAAK,UAAU,GAAG,EAAE;AAC5B,YAAI,EAAE,QAAQ,OAAO,GAAG;AACxB,YAAI,EAAE,QAAQ,sDAAsD,OAAO;AAC3E,YAAI,EAAE,QAAQ,sDAAsD,OAAO;AAC3E,YAAI,EAAE,QAAQ,qCAAqC,OAAO;AAC1D,YAAI,EAAE,QAAQ,qCAAqC,OAAO;AAC1D,YAAI,EAAE,QAAQ,oBAAoB,OAAO;AACzC,YAAI,EAAE,QAAQ,oBAAoB,OAAO;AACzC,YAAI,EAAE,QAAQ,4CAA4C,WAAW;AACrE,YAAI,IAAI,eAAe,CAAC;AACxB,YAAI,IAAI,KAAK,CAAC;AACd,aAAK,aAAa,IAAI,SAASG,IAAG;AAC9B,eAAK,SAASA,GAAE,MAAM,GAAG;AACzB,eAAK,QAAQ,WAAW;AACpB,iBAAK,IAAI;AACT,iBAAK,UAAU;AACf,iBAAK,kBAAkB;AACvB,iBAAK,QAAQ,IAAI,IAAI,MAAM,GAAG,CAAC;AAC/B,iBAAK,UAAU,IAAI,IAAI,MAAM,GAAG,CAAC;AACjC,iBAAK,UAAU,IAAI,IAAI,MAAM,GAAG,CAAC;AACjC,iBAAK,SAAS,CAAC;AACf,iBAAK,SAAS,CAAC;AAAA,UACnB;AACA,eAAK,QAAQ,WAAW;AACpB,mBAAO,KAAK,KAAK,KAAK,OAAO,SAAS;AAAA,UAC1C;AACA,eAAK,iBAAiB,WAAW;AAC7B,gBAAI,KAAK,MAAM,EAAG,QAAO;AACzB,mBAAO,KAAK,OAAO,KAAK,IAAI,CAAC,EAAE,MAAM,YAAY,KAAK;AAAA,UAC1D;AACA,eAAK,oBAAoB,WAAW;AAChC,oBAAQ,KAAK,SAAS;AAAA,cACpB,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,uBAAO;AACP;AAAA,YACJ;AACA,mBAAO;AAAA,UACX;AACA,eAAK,WAAW,WAAW;AACvB,iBAAK;AACL,mBAAO,KAAK,OAAO,KAAK,CAAC;AAAA,UAC7B;AACA,eAAK,YAAY,WAAW;AACxB,mBAAO,WAAW,KAAK,SAAS,CAAC;AAAA,UACrC;AACA,eAAK,cAAc,WAAW;AAC1B,iBAAK,kBAAkB,KAAK;AAC5B,iBAAK,UAAU,KAAK,SAAS;AAAA,UACjC;AACA,eAAK,WAAW,WAAW;AACvB,gBAAI,IAAI,IAAI,IAAI,MAAM,KAAK,UAAU,GAAG,KAAK,UAAU,CAAC;AACxD,mBAAO,KAAK,aAAa,CAAC;AAAA,UAC9B;AACA,eAAK,oBAAoB,WAAW;AAChC,gBAAI,IAAI,KAAK,SAAS;AACtB,iBAAK,UAAU;AACf,mBAAO;AAAA,UACX;AACA,eAAK,oBAAoB,WAAW;AAChC,gBAAI,IAAI,KAAK,SAAS;AACtB,iBAAK,UAAU;AACf,mBAAO;AAAA,UACX;AACA,eAAK,2BAA2B,WAAW;AACvC,gBAAI,KAAK,gBAAgB,YAAY,KAAK,OAAO,KAAK,gBAAgB,YAAY,KAAK,OAAO,KAAK,gBAAgB,YAAY,KAAK,OAAO,KAAK,gBAAgB,YAAY,KAAK,KAAK;AAClL,qBAAO,KAAK;AAAA,YAChB;AACA,gBAAI,IAAI,IAAI,IAAI,MAAM,IAAI,KAAK,QAAQ,IAAI,KAAK,QAAQ,GAAG,IAAI,KAAK,QAAQ,IAAI,KAAK,QAAQ,CAAC;AAC9F,mBAAO;AAAA,UACX;AACA,eAAK,eAAe,SAAS,GAAG;AAC5B,gBAAI,KAAK,kBAAkB,GAAG;AAC1B,gBAAE,KAAK,KAAK,QAAQ;AACpB,gBAAE,KAAK,KAAK,QAAQ;AAAA,YACxB;AACA,mBAAO;AAAA,UACX;AACA,eAAK,YAAY,SAAS,GAAG,MAAM,SAAS;AACxC,gBAAI,WAAW,QAAQ,KAAK,OAAO,SAAS,KAAK,KAAK,OAAO,KAAK,OAAO,SAAS,CAAC,KAAK,MAAM;AAC1F,mBAAK,OAAO,KAAK,OAAO,SAAS,CAAC,IAAI,KAAK,OAAO,KAAK,OAAO,SAAS,CAAC,EAAE,QAAQ,OAAO;AAAA,YAC7F;AACA,iBAAK,eAAe,GAAG,QAAQ,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC;AAAA,UAChE;AACA,eAAK,iBAAiB,SAAS,GAAG,GAAG;AACjC,iBAAK,OAAO,KAAK,CAAC;AAClB,iBAAK,OAAO,KAAK,CAAC;AAAA,UACtB;AACA,eAAK,kBAAkB,WAAW;AAC9B,mBAAO,KAAK;AAAA,UAChB;AACA,eAAK,kBAAkB,WAAW;AAC9B,qBAASP,KAAI,GAAGA,KAAI,KAAK,OAAO,QAAQA,MAAK;AACzC,kBAAI,KAAK,OAAOA,EAAC,KAAK,MAAM;AACxB,yBAAS,IAAIA,KAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK;AAC7C,sBAAI,KAAK,OAAO,CAAC,KAAK,MAAM;AACxB,yBAAK,OAAOA,EAAC,IAAI,KAAK,OAAO,CAAC;AAC9B;AAAA,kBACJ;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AACA,mBAAO,KAAK;AAAA,UAChB;AAAA,QACJ,EAAE,CAAC;AACH,aAAK,OAAO,SAASI,MAAK;AACtB,cAAI,KAAK,KAAK;AACd,aAAG,MAAM;AACT,cAAI,KAAK,IAAI,IAAI,YAAY;AAC7B,cAAIA,QAAO,KAAM,CAAAA,KAAI,UAAU;AAC/B,iBAAO,CAAC,GAAG,MAAM,GAAG;AAChB,eAAG,YAAY;AACf,oBAAQ,GAAG,SAAS;AAAA,cAClB,KAAK;AAAA,cACL,KAAK;AACH,oBAAI,IAAI,GAAG,kBAAkB;AAC7B,mBAAG,UAAU,CAAC;AACd,mBAAG,SAAS,EAAE,GAAG,EAAE,CAAC;AACpB,oBAAIA,QAAO,KAAM,CAAAA,KAAI,OAAO,EAAE,GAAG,EAAE,CAAC;AACpC,mBAAG,QAAQ,GAAG;AACd,uBAAO,CAAC,GAAG,eAAe,GAAG;AACzB,sBAAII,KAAI,GAAG,kBAAkB;AAC7B,qBAAG,UAAUA,IAAG,GAAG,KAAK;AACxB,qBAAG,SAASA,GAAE,GAAGA,GAAE,CAAC;AACpB,sBAAIJ,QAAO,KAAM,CAAAA,KAAI,OAAOI,GAAE,GAAGA,GAAE,CAAC;AAAA,gBACxC;AACA;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,CAAC,GAAG,eAAe,GAAG;AACzB,sBAAI,IAAI,GAAG;AACX,sBAAIA,KAAI,GAAG,kBAAkB;AAC7B,qBAAG,UAAUA,IAAG,CAAC;AACjB,qBAAG,SAASA,GAAE,GAAGA,GAAE,CAAC;AACpB,sBAAIJ,QAAO,KAAM,CAAAA,KAAI,OAAOI,GAAE,GAAGA,GAAE,CAAC;AAAA,gBACxC;AACA;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,CAAC,GAAG,eAAe,GAAG;AACzB,sBAAI,OAAO,IAAI,IAAI,OAAO,GAAG,kBAAkB,IAAI,GAAG,QAAQ,IAAI,KAAK,GAAG,UAAU,GAAG,GAAG,QAAQ,CAAC;AACnG,qBAAG,UAAU,MAAM,GAAG,OAAO;AAC7B,qBAAG,UAAU;AACb,qBAAG,SAAS,GAAG,QAAQ,GAAG,GAAG,QAAQ,CAAC;AACtC,sBAAIJ,QAAO,KAAM,CAAAA,KAAI,OAAO,GAAG,QAAQ,GAAG,GAAG,QAAQ,CAAC;AAAA,gBAC1D;AACA;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,CAAC,GAAG,eAAe,GAAG;AACzB,sBAAI,OAAO,IAAI,IAAI,MAAM,GAAG,QAAQ,IAAI,GAAG,kBAAkB,IAAI,GAAG,QAAQ,IAAI,KAAK,GAAG,UAAU,CAAC;AACnG,qBAAG,UAAU,MAAM,GAAG,OAAO;AAC7B,qBAAG,UAAU;AACb,qBAAG,SAAS,GAAG,QAAQ,GAAG,GAAG,QAAQ,CAAC;AACtC,sBAAIA,QAAO,KAAM,CAAAA,KAAI,OAAO,GAAG,QAAQ,GAAG,GAAG,QAAQ,CAAC;AAAA,gBAC1D;AACA;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,CAAC,GAAG,eAAe,GAAG;AACzB,sBAAI,OAAO,GAAG;AACd,sBAAI,KAAK,GAAG,SAAS;AACrB,sBAAI,QAAQ,GAAG,kBAAkB;AACjC,sBAAI,KAAK,GAAG,kBAAkB;AAC9B,qBAAG,UAAU,IAAI,OAAO,EAAE;AAC1B,qBAAG,eAAe,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1E,sBAAIA,QAAO,KAAM,CAAAA,KAAI,cAAc,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,gBAC/E;AACA;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,CAAC,GAAG,eAAe,GAAG;AACzB,sBAAI,OAAO,GAAG;AACd,sBAAI,KAAK,GAAG,yBAAyB;AACrC,sBAAI,QAAQ,GAAG,kBAAkB;AACjC,sBAAI,KAAK,GAAG,kBAAkB;AAC9B,qBAAG,UAAU,IAAI,OAAO,EAAE;AAC1B,qBAAG,eAAe,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1E,sBAAIA,QAAO,KAAM,CAAAA,KAAI,cAAc,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,gBAC/E;AACA;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,CAAC,GAAG,eAAe,GAAG;AACzB,sBAAI,OAAO,GAAG;AACd,sBAAI,QAAQ,GAAG,kBAAkB;AACjC,sBAAI,KAAK,GAAG,kBAAkB;AAC9B,qBAAG,UAAU,IAAI,OAAO,KAAK;AAC7B,qBAAG,kBAAkB,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;AACjE,sBAAIA,QAAO,KAAM,CAAAA,KAAI,iBAAiB,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,gBACtE;AACA;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,CAAC,GAAG,eAAe,GAAG;AACzB,sBAAI,OAAO,GAAG;AACd,sBAAI,QAAQ,GAAG,yBAAyB;AACxC,qBAAG,UAAU;AACb,sBAAI,KAAK,GAAG,kBAAkB;AAC9B,qBAAG,UAAU,IAAI,OAAO,KAAK;AAC7B,qBAAG,kBAAkB,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;AACjE,sBAAIA,QAAO,KAAM,CAAAA,KAAI,iBAAiB,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;AAAA,gBACtE;AACA;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,CAAC,GAAG,eAAe,GAAG;AACzB,sBAAI,OAAO,GAAG;AACd,sBAAI,KAAK,GAAG,UAAU;AACtB,sBAAI,KAAK,GAAG,UAAU;AACtB,sBAAI,gBAAgB,GAAG,UAAU,KAAK,KAAK,KAAK;AAChD,sBAAI,eAAe,GAAG,UAAU;AAChC,sBAAI,YAAY,GAAG,UAAU;AAC7B,sBAAI,KAAK,GAAG,kBAAkB;AAC9B,sBAAI,QAAQ,IAAI,IAAI,MAAM,KAAK,IAAI,aAAa,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,aAAa,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,aAAa,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,aAAa,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC;AACvN,sBAAI,IAAI,KAAK,IAAI,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC;AACtF,sBAAI,IAAI,GAAG;AACP,0BAAM,KAAK,KAAK,CAAC;AACjB,0BAAM,KAAK,KAAK,CAAC;AAAA,kBACrB;AACA,sBAAI,KAAK,gBAAgB,YAAY,KAAK,KAAK,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,MAAM,GAAG,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE;AAClQ,sBAAI,MAAM,CAAC,EAAG,KAAI;AAClB,sBAAI,MAAM,IAAI,IAAI,MAAM,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,MAAM,IAAI,EAAE;AACrE,sBAAI,QAAQ,IAAI,IAAI,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,aAAa,IAAI,IAAI,IAAI,KAAK,IAAI,aAAa,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,aAAa,IAAI,IAAI,IAAI,KAAK,IAAI,aAAa,IAAI,IAAI,CAAC;AAC1M,sBAAI,IAAI,SAASK,IAAG;AAChB,2BAAO,KAAK,KAAK,KAAK,IAAIA,GAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAIA,GAAE,CAAC,GAAG,CAAC,CAAC;AAAA,kBAC1D;AACA,sBAAI,IAAI,SAASC,IAAGD,IAAG;AACnB,4BAAQC,GAAE,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAID,GAAE,CAAC,MAAM,EAAEC,EAAC,IAAI,EAAED,EAAC;AAAA,kBACpD;AACA,sBAAI,IAAI,SAASC,IAAGD,IAAG;AACnB,4BAAQC,GAAE,CAAC,IAAID,GAAE,CAAC,IAAIC,GAAE,CAAC,IAAID,GAAE,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,EAAEC,IAAGD,EAAC,CAAC;AAAA,kBACnE;AACA,sBAAI,KAAK,EAAE,CAAE,GAAG,CAAE,GAAG,EAAG,MAAM,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,KAAK,EAAG,CAAC;AACvE,sBAAI,IAAI,EAAG,MAAM,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,KAAK,EAAG;AACzD,sBAAI,IAAI,EAAG,CAAC,MAAM,IAAI,IAAI,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,KAAK,EAAG;AAC3D,sBAAI,KAAK,EAAE,GAAG,CAAC;AACf,sBAAI,EAAE,GAAG,CAAC,KAAK,GAAI,MAAK,KAAK;AAC7B,sBAAI,EAAE,GAAG,CAAC,KAAK,EAAG,MAAK;AACvB,sBAAI,MAAM,IAAI,YAAY,IAAI;AAC9B,sBAAI,KAAK,KAAK,OAAO,KAAK;AAC1B,sBAAI,UAAU,IAAI,IAAI,MAAM,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;AACpF,qBAAG,eAAe,SAAS,KAAK,MAAM,KAAK,KAAK,CAAC;AACjD,qBAAG,eAAe,IAAI,KAAK,MAAM,KAAK,EAAE;AACxC,qBAAG,SAAS,GAAG,GAAG,GAAG,CAAC;AACtB,sBAAIL,QAAO,MAAM;AACb,wBAAIO,KAAI,KAAK,KAAK,KAAK;AACvB,wBAAI,KAAK,KAAK,KAAK,IAAI,KAAK;AAC5B,wBAAI,KAAK,KAAK,KAAK,KAAK,KAAK;AAC7B,oBAAAP,KAAI,UAAU,MAAM,GAAG,MAAM,CAAC;AAC9B,oBAAAA,KAAI,OAAO,aAAa;AACxB,oBAAAA,KAAI,MAAM,IAAI,EAAE;AAChB,oBAAAA,KAAI,IAAI,GAAG,GAAGO,IAAG,IAAI,KAAK,IAAI,IAAI,SAAS;AAC3C,oBAAAP,KAAI,MAAM,IAAI,IAAI,IAAI,EAAE;AACxB,oBAAAA,KAAI,OAAO,CAAC,aAAa;AACzB,oBAAAA,KAAI,UAAU,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC;AAAA,kBACpC;AAAA,gBACJ;AACA;AAAA,cAEF,KAAK;AAAA,cACL,KAAK;AACH,oBAAIA,QAAO,KAAM,CAAAA,KAAI,UAAU;AAC/B,mBAAG,UAAU,GAAG;AAAA,YACpB;AAAA,UACJ;AACA,iBAAO;AAAA,QACX;AACA,aAAK,aAAa,WAAW;AACzB,cAAI,SAAS,KAAK,WAAW,gBAAgB;AAC7C,cAAI,SAAS,KAAK,WAAW,gBAAgB;AAC7C,cAAI,UAAU,CAAC;AACf,mBAASJ,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACpC,oBAAQ,KAAK,CAAE,OAAOA,EAAC,GAAG,OAAOA,EAAC,CAAE,CAAC;AAAA,UACzC;AACA,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,UAAI,QAAQ,KAAK,YAAY,IAAI,IAAI,QAAQ,gBAAgB;AAC7D,UAAI,QAAQ,UAAU,SAAS,MAAM;AACjC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,gBAAgB,SAAS,MAAM,UAAU;AAC1C,cAAIC,SAAQ,KAAK,UAAU,OAAO,EAAE,SAAS,KAAK,IAAI;AACtD,cAAIC,UAAS,KAAK,UAAU,QAAQ,EAAE,SAAS,KAAK,IAAI;AACxD,cAAI,UAAU,IAAI,IAAI,QAAQ,IAAI;AAClC,kBAAQ,WAAW,SAAS,IAAI,IAAI,IAAI,SAAS,WAAW,KAAK,UAAU,SAAS,EAAE,KAAK;AAC3F,kBAAQ,WAAW,OAAO,IAAI,IAAI,IAAI,SAAS,SAASD,SAAQ,IAAI;AACpE,kBAAQ,WAAW,QAAQ,IAAI,IAAI,IAAI,SAAS,UAAUC,UAAS,IAAI;AACvE,kBAAQ,WAAW,WAAW,IAAI,IAAI,IAAI,SAAS,aAAa,KAAK,UAAU,kBAAkB,EAAE,KAAK;AACxG,kBAAQ,WAAW,KAAK;AACxB,cAAI,IAAI,SAAS,cAAc,QAAQ;AACvC,YAAE,QAAQD;AACV,YAAE,SAASC;AACX,cAAI,OAAO,EAAE,WAAW,IAAI;AAC5B,cAAI,KAAK,UAAU,GAAG,EAAE,SAAS,KAAK,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG;AAClE,iBAAK,UAAU,KAAK,UAAU,GAAG,EAAE,SAAS,KAAK,IAAI,GAAG,KAAK,UAAU,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,UACnG;AACA,mBAAS,IAAI,IAAI,KAAK,GAAG,KAAK;AAC1B,qBAAS,IAAI,IAAI,KAAK,GAAG,KAAK;AAC1B,mBAAK,KAAK;AACV,mBAAK,UAAU,IAAI,EAAE,OAAO,IAAI,EAAE,MAAM;AACxC,sBAAQ,OAAO,IAAI;AACnB,mBAAK,QAAQ;AAAA,YACjB;AAAA,UACJ;AACA,cAAI,UAAU,IAAI,cAAc,GAAG,QAAQ;AAC3C,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,UAAI,QAAQ,QAAQ,YAAY,IAAI,IAAI,QAAQ,YAAY;AAC5D,UAAI,QAAQ,SAAS,SAAS,MAAM;AAChC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,aAAa,KAAK;AACvB,aAAK,SAAS,SAASE,MAAK,OAAO,OAAO;AACtC,UAAAA,KAAI,UAAU,MAAM,GAAG,MAAM,CAAC;AAC9B,cAAI,KAAK,UAAU,QAAQ,EAAE,eAAe,MAAM,KAAK,OAAQ,CAAAA,KAAI,OAAO,KAAK;AAC/E,cAAI,KAAK,UAAU,aAAa,EAAE,eAAe,aAAa,KAAK,cAAe,CAAAA,KAAI,MAAMA,KAAI,WAAWA,KAAI,SAAS;AACxH,UAAAA,KAAI,KAAK;AACT,cAAI,UAAU,IAAI,IAAI,QAAQ,IAAI;AAClC,kBAAQ,WAAW,SAAS,IAAI,IAAI,IAAI,SAAS,WAAW,KAAK,UAAU,SAAS,EAAE,KAAK;AAC3F,kBAAQ,WAAW,MAAM,IAAI,IAAI,IAAI,SAAS,QAAQ,KAAK,UAAU,MAAM,EAAE,KAAK;AAClF,kBAAQ,WAAW,MAAM,IAAI,IAAI,IAAI,SAAS,QAAQ,KAAK,UAAU,MAAM,EAAE,KAAK;AAClF,kBAAQ,WAAW,OAAO,IAAI,IAAI,IAAI,SAAS,SAAS,KAAK,UAAU,aAAa,EAAE,KAAK;AAC3F,kBAAQ,WAAW,QAAQ,IAAI,IAAI,IAAI,SAAS,UAAU,KAAK,UAAU,cAAc,EAAE,KAAK;AAC9F,kBAAQ,WAAW,MAAM,IAAI,IAAI,IAAI,SAAS,QAAQ,KAAK,UAAU,MAAM,EAAE,eAAe,OAAO,CAAC;AACpG,kBAAQ,WAAW,QAAQ,IAAI,IAAI,IAAI,SAAS,UAAU,KAAK,UAAU,QAAQ,EAAE,eAAe,MAAM,CAAC;AACzG,kBAAQ,WAAW,KAAK;AACxB,kBAAQ,OAAOA,IAAG;AAClB,UAAAA,KAAI,QAAQ;AACZ,cAAI,KAAK,UAAU,aAAa,EAAE,eAAe,aAAa,KAAK,cAAe,CAAAA,KAAI,MAAM,IAAIA,KAAI,WAAW,IAAIA,KAAI,SAAS;AAChI,cAAI,KAAK,UAAU,QAAQ,EAAE,eAAe,MAAM,KAAK,OAAQ,CAAAA,KAAI,OAAO,CAAC,KAAK;AAChF,UAAAA,KAAI,UAAU,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC;AAAA,QACpC;AAAA,MACJ;AACA,UAAI,QAAQ,OAAO,YAAY,IAAI,IAAI,QAAQ,YAAY;AAC3D,UAAI,QAAQ,OAAO,SAAS,MAAM;AAC9B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,SAAS,SAAS,MAAM;AAAA,QAAC;AAAA,MAClC;AACA,UAAI,QAAQ,KAAK,YAAY,IAAI,IAAI,QAAQ,YAAY;AACzD,UAAI,QAAQ,eAAe,SAAS,MAAM;AACtC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,gBAAgB,KAAK,UAAU,eAAe,EAAE,eAAe,mBAAmB;AACvF,aAAK,QAAQ,CAAC;AACd,iBAASJ,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC3C,cAAI,QAAQ,KAAK,SAASA,EAAC;AAC3B,cAAI,MAAM,QAAQ,OAAQ,MAAK,MAAM,KAAK,KAAK;AAAA,QACnD;AACA,aAAK,cAAc,WAAW;AAAA,QAAC;AAC/B,aAAK,iBAAiB,SAASI,MAAK,SAAS,mBAAmB;AAC5D,cAAI,iBAAiB;AACrB,cAAI,KAAK,iBAAiB,EAAE,SAAS,GAAG;AACpC,6BAAiB,KAAK,iBAAiB,EAAE,cAAc;AAAA,UAC3D;AACA,cAAI,mBAAmB,SAAS,OAAO;AACnC,gBAAI,kBAAkB,SAAS,GAAG;AAC9B,kBAAI,IAAI,IAAI,IAAI,SAAS,SAAS,KAAK;AACvC,qBAAO,EAAE,WAAW,kBAAkB,KAAK,EAAE;AAAA,YACjD;AACA,mBAAO;AAAA,UACX;AACA,cAAI,IAAI,KAAK,YAAYA,MAAK,OAAO;AACrC,cAAI,KAAK,KAAM,QAAO,iBAAiB,eAAe,MAAM,eAAe,MAAM,SAAS,CAAC,EAAE,KAAK;AAClG,mBAASJ,KAAI,GAAGA,KAAI,eAAe,MAAM,QAAQA,MAAK;AAClD,cAAE,aAAa,eAAe,MAAMA,EAAC,EAAE,QAAQ,iBAAiB,eAAe,MAAMA,EAAC,EAAE,KAAK,CAAC;AAAA,UAClG;AACA,cAAI,KAAK,UAAU,mBAAmB,EAAE,SAAS,GAAG;AAChD,gBAAI,WAAW,IAAI,SAAS,UAAU,CAAC;AACvC,gBAAI,OAAO,IAAI,IAAI,QAAQ,KAAK;AAChC,iBAAK,WAAW,GAAG,IAAI,IAAI,IAAI,SAAS,KAAK,CAAC,IAAI,qBAAqB,CAAC;AACxE,iBAAK,WAAW,GAAG,IAAI,IAAI,IAAI,SAAS,KAAK,CAAC,IAAI,qBAAqB,CAAC;AACxE,iBAAK,WAAW,OAAO,IAAI,IAAI,IAAI,SAAS,SAAS,IAAI,kBAAkB;AAC3E,iBAAK,WAAW,QAAQ,IAAI,IAAI,IAAI,SAAS,UAAU,IAAI,kBAAkB;AAC7E,gBAAI,QAAQ,IAAI,IAAI,QAAQ,EAAE;AAC9B,kBAAM,WAAW,WAAW,IAAI,IAAI,IAAI,SAAS,aAAa,KAAK,UAAU,mBAAmB,EAAE,KAAK;AACvG,kBAAM,WAAW,CAAE,IAAK;AACxB,gBAAI,UAAU,IAAI,IAAI,QAAQ,IAAI;AAClC,oBAAQ,WAAW,GAAG,IAAI,IAAI,IAAI,SAAS,KAAK,CAAC;AACjD,oBAAQ,WAAW,GAAG,IAAI,IAAI,IAAI,SAAS,KAAK,CAAC;AACjD,oBAAQ,WAAW,OAAO,IAAI,IAAI,IAAI,SAAS,SAAS,SAAS,KAAK;AACtE,oBAAQ,WAAW,QAAQ,IAAI,IAAI,IAAI,SAAS,UAAU,SAAS,MAAM;AACzE,oBAAQ,WAAW,CAAE,KAAM;AAC3B,gBAAI,IAAI,SAAS,cAAc,QAAQ;AACvC,cAAE,QAAQ,SAAS;AACnB,cAAE,SAAS,SAAS;AACpB,gBAAI,UAAU,EAAE,WAAW,IAAI;AAC/B,oBAAQ,YAAY;AACpB,oBAAQ,OAAO,OAAO;AACtB,mBAAO,QAAQ,cAAc,GAAG,WAAW;AAAA,UAC/C;AACA,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,UAAI,QAAQ,aAAa,YAAY,IAAI,IAAI,QAAQ,YAAY;AACjE,UAAI,QAAQ,iBAAiB,SAAS,MAAM;AACxC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,cAAc,SAASI,MAAK,SAAS;AACtC,cAAI,KAAK,QAAQ,eAAe;AAChC,cAAI,CAAC,KAAK,UAAU,IAAI,EAAE,SAAS,KAAK,CAAC,KAAK,UAAU,IAAI,EAAE,SAAS,KAAK,CAAC,KAAK,UAAU,IAAI,EAAE,SAAS,KAAK,CAAC,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAC9I,iBAAK,UAAU,MAAM,IAAI,EAAE,QAAQ;AACnC,iBAAK,UAAU,MAAM,IAAI,EAAE,QAAQ;AACnC,iBAAK,UAAU,MAAM,IAAI,EAAE,QAAQ;AACnC,iBAAK,UAAU,MAAM,IAAI,EAAE,QAAQ;AAAA,UACvC;AACA,cAAI,KAAK,KAAK,iBAAiB,sBAAsB,GAAG,EAAE,IAAI,GAAG,MAAM,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAC9I,cAAI,KAAK,KAAK,iBAAiB,sBAAsB,GAAG,EAAE,IAAI,GAAG,OAAO,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAC/I,cAAI,KAAK,KAAK,iBAAiB,sBAAsB,GAAG,EAAE,IAAI,GAAG,MAAM,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAC9I,cAAI,KAAK,KAAK,iBAAiB,sBAAsB,GAAG,EAAE,IAAI,GAAG,OAAO,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAC/I,cAAI,MAAM,MAAM,MAAM,GAAI,QAAO;AACjC,iBAAOA,KAAI,qBAAqB,IAAI,IAAI,IAAI,EAAE;AAAA,QAClD;AAAA,MACJ;AACA,UAAI,QAAQ,eAAe,YAAY,IAAI,IAAI,QAAQ,aAAa;AACpE,UAAI,QAAQ,iBAAiB,SAAS,MAAM;AACxC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,cAAc,SAASA,MAAK,SAAS;AACtC,cAAI,KAAK,QAAQ,eAAe;AAChC,cAAI,CAAC,KAAK,UAAU,IAAI,EAAE,SAAS,EAAG,MAAK,UAAU,MAAM,IAAI,EAAE,QAAQ;AACzE,cAAI,CAAC,KAAK,UAAU,IAAI,EAAE,SAAS,EAAG,MAAK,UAAU,MAAM,IAAI,EAAE,QAAQ;AACzE,cAAI,CAAC,KAAK,UAAU,GAAG,EAAE,SAAS,EAAG,MAAK,UAAU,KAAK,IAAI,EAAE,QAAQ;AACvE,cAAI,KAAK,KAAK,iBAAiB,sBAAsB,GAAG,EAAE,IAAI,GAAG,MAAM,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAC9I,cAAI,KAAK,KAAK,iBAAiB,sBAAsB,GAAG,EAAE,IAAI,GAAG,OAAO,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAC/I,cAAI,KAAK;AACT,cAAI,KAAK;AACT,cAAI,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AACjC,iBAAK,KAAK,iBAAiB,sBAAsB,GAAG,EAAE,IAAI,GAAG,MAAM,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAAA,UAC9I;AACA,cAAI,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AACjC,iBAAK,KAAK,iBAAiB,sBAAsB,GAAG,EAAE,IAAI,GAAG,OAAO,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,IAAI,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAAA,UAC/I;AACA,cAAI,IAAI,KAAK,iBAAiB,uBAAuB,GAAG,MAAM,IAAI,GAAG,OAAO,KAAK,IAAI,KAAK,UAAU,GAAG,EAAE,SAAS,IAAI,KAAK,UAAU,GAAG,EAAE,SAAS;AACnJ,iBAAOA,KAAI,qBAAqB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;AAAA,QACxD;AAAA,MACJ;AACA,UAAI,QAAQ,eAAe,YAAY,IAAI,IAAI,QAAQ,aAAa;AACpE,UAAI,QAAQ,OAAO,SAAS,MAAM;AAC9B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,SAAS,KAAK,UAAU,QAAQ,EAAE,SAAS;AAChD,YAAI,KAAK,SAAS,EAAG,MAAK,SAAS;AACnC,YAAI,KAAK,SAAS,EAAG,MAAK,SAAS;AACnC,YAAI,YAAY,KAAK,MAAM,YAAY;AACvC,YAAI,KAAK,MAAM,cAAc,EAAE,SAAS,EAAG,aAAY,UAAU,WAAW,KAAK,MAAM,cAAc,EAAE,KAAK;AAC5G,aAAK,QAAQ,UAAU;AAAA,MAC3B;AACA,UAAI,QAAQ,KAAK,YAAY,IAAI,IAAI,QAAQ,YAAY;AACzD,UAAI,QAAQ,cAAc,SAAS,MAAM;AACrC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,YAAI,WAAW,KAAK,IAAI;AACxB,aAAK,WAAW;AAChB,aAAK,QAAQ,KAAK,UAAU,OAAO,EAAE,eAAe;AACpD,aAAK,cAAc,KAAK,QAAQ,KAAK,UAAU,KAAK,EAAE,eAAe;AACrE,aAAK,cAAc,WAAW;AAC1B,cAAI,gBAAgB,KAAK,UAAU,eAAe,EAAE;AACpD,cAAI,gBAAgB,KAAK,UAAU,eAAe,EAAE;AACpD,cAAI,iBAAiB,OAAO;AACxB,mBAAO,KAAK,OAAO,MAAM,eAAe,IAAI;AAAA,UAChD;AACA,iBAAO,KAAK,OAAO,UAAU,eAAe,IAAI;AAAA,QACpD;AACA,aAAK,eAAe;AACpB,aAAK,eAAe;AACpB,aAAK,UAAU;AACf,aAAK,YAAY,WAAW;AACxB,iBAAO;AAAA,QACX;AACA,aAAK,SAAS,SAAS,OAAO;AAC1B,cAAI,KAAK,gBAAgB,MAAM;AAC3B,iBAAK,eAAe,KAAK,YAAY,EAAE;AACvC,iBAAK,eAAe,KAAK,YAAY,EAAE,SAAS;AAAA,UACpD;AACA,cAAI,KAAK,WAAW,KAAK,aAAa;AAClC,gBAAI,KAAK,UAAU,aAAa,EAAE,SAAS,gBAAgB,KAAK,UAAU,WAAW,EAAE,SAAS,cAAc;AAC1G,mBAAK,WAAW;AAAA,YACpB,WAAW,KAAK,UAAU,MAAM,EAAE,eAAe,QAAQ,KAAK,YAAY,CAAC,KAAK,SAAS;AACrF,mBAAK,UAAU;AACf,mBAAK,YAAY,EAAE,QAAQ,KAAK;AAChC,qBAAO;AAAA,YACX,OAAO;AACH,qBAAO;AAAA,YACX;AAAA,UACJ;AACA,eAAK,WAAW,KAAK,WAAW;AAChC,cAAI,UAAU;AACd,cAAI,KAAK,QAAQ,KAAK,UAAU;AAC5B,gBAAI,WAAW,KAAK,UAAU;AAC9B,gBAAI,KAAK,UAAU,MAAM,EAAE,SAAS,GAAG;AACnC,kBAAI,OAAO,KAAK,UAAU,MAAM,EAAE;AAClC,yBAAW,OAAO,MAAM,WAAW;AAAA,YACvC;AACA,iBAAK,YAAY,EAAE,QAAQ;AAC3B,sBAAU;AAAA,UACd;AACA,iBAAO;AAAA,QACX;AACA,aAAK,OAAO,KAAK,UAAU,MAAM;AACjC,aAAK,KAAK,KAAK,UAAU,IAAI;AAC7B,aAAK,SAAS,KAAK,UAAU,QAAQ;AACrC,YAAI,KAAK,OAAO,SAAS,EAAG,MAAK,OAAO,QAAQ,KAAK,OAAO,MAAM,MAAM,GAAG;AAC3E,aAAK,WAAW,WAAW;AACvB,cAAI,MAAM;AAAA,YACN,WAAW,KAAK,WAAW,KAAK,UAAU,KAAK,cAAc,KAAK;AAAA,UACtE;AACA,cAAI,KAAK,OAAO,SAAS,GAAG;AACxB,gBAAI,IAAI,IAAI,YAAY,KAAK,OAAO,MAAM,SAAS;AACnD,gBAAI,KAAK,KAAK,MAAM,CAAC,GAAG,KAAK,KAAK,KAAK,CAAC;AACxC,gBAAI,OAAO,IAAI,IAAI,SAAS,QAAQ,WAAW,KAAK,OAAO,MAAM,EAAE,CAAC,CAAC;AACrE,gBAAI,KAAK,IAAI,IAAI,SAAS,MAAM,WAAW,KAAK,OAAO,MAAM,EAAE,CAAC,CAAC;AACjE,gBAAI,YAAY,IAAI,OAAO,KAAK;AAAA,UACpC,OAAO;AACH,gBAAI,OAAO,KAAK;AAChB,gBAAI,KAAK,KAAK;AAAA,UAClB;AACA,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,UAAI,QAAQ,YAAY,YAAY,IAAI,IAAI,QAAQ,YAAY;AAChE,UAAI,QAAQ,UAAU,SAAS,MAAM;AACjC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,YAAY,WAAW;AACxB,cAAI,IAAI,KAAK,SAAS;AACtB,cAAI,WAAW,EAAE,KAAK,SAAS,KAAK,EAAE,GAAG,SAAS,IAAI,EAAE,KAAK,SAAS,KAAK,EAAE;AAC7E,iBAAO,WAAW,KAAK;AAAA,QAC3B;AAAA,MACJ;AACA,UAAI,QAAQ,QAAQ,YAAY,IAAI,IAAI,QAAQ,YAAY;AAC5D,UAAI,QAAQ,eAAe,SAAS,MAAM;AACtC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,YAAY,WAAW;AACxB,cAAI,IAAI,KAAK,SAAS;AACtB,cAAI,OAAO,IAAI,SAAS,EAAE,KAAK,KAAK;AACpC,cAAI,KAAK,IAAI,SAAS,EAAE,GAAG,KAAK;AAChC,cAAI,KAAK,MAAM,GAAG,IAAI;AAClB,gBAAI,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,EAAE;AACrC,gBAAI,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,EAAE;AACrC,gBAAI,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,EAAE;AACrC,mBAAO,SAAS,SAAS,GAAG,EAAE,IAAI,MAAM,SAAS,GAAG,EAAE,IAAI,MAAM,SAAS,GAAG,EAAE,IAAI;AAAA,UACtF;AACA,iBAAO,KAAK,UAAU,MAAM,EAAE;AAAA,QAClC;AAAA,MACJ;AACA,UAAI,QAAQ,aAAa,YAAY,IAAI,IAAI,QAAQ,YAAY;AACjE,UAAI,QAAQ,mBAAmB,SAAS,MAAM;AAC1C,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,YAAY,WAAW;AACxB,cAAI,IAAI,KAAK,SAAS;AACtB,cAAI,OAAO,IAAI,cAAc,EAAE,KAAK,KAAK;AACzC,cAAI,KAAK,IAAI,cAAc,EAAE,GAAG,KAAK;AACrC,cAAI,WAAW;AACf,mBAASJ,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAClC,wBAAY,KAAKA,EAAC,KAAK,GAAGA,EAAC,IAAI,KAAKA,EAAC,KAAK,EAAE,WAAW;AAAA,UAC3D;AACA,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,UAAI,QAAQ,iBAAiB,YAAY,IAAI,IAAI,QAAQ,QAAQ;AACjE,UAAI,QAAQ,OAAO,SAAS,MAAM;AAC9B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,YAAY,KAAK,UAAU,aAAa,EAAE,SAAS;AACxD,aAAK,QAAQ;AACb,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,eAAe;AACpB,aAAK,SAAS,CAAC;AACf,iBAASA,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC3C,cAAI,QAAQ,KAAK,SAASA,EAAC;AAC3B,cAAI,MAAM,QAAQ,aAAa;AAC3B,iBAAK,WAAW;AAChB,gBAAI,MAAM,MAAM,aAAa,EAAE,SAAS,GAAG;AACvC,kBAAI,YAAY,MAAM,MAAM,aAAa,EAAE,KAAK,IAAI;AAAA,YACxD;AAAA,UACJ,WAAW,MAAM,QAAQ,gBAAiB,MAAK,eAAe;AAAA,mBAAgB,MAAM,QAAQ,SAAS;AACjG,gBAAI,MAAM,cAAc,IAAI;AACxB,mBAAK,QAAQ;AACb,mBAAK,WAAW;AAChB,kBAAI,OAAO,KAAK,OAAO,MAAM,OAAO,KAAK,YAAa,MAAK,OAAO,MAAM,OAAO,IAAI,CAAC;AACpF,mBAAK,OAAO,MAAM,OAAO,EAAE,MAAM,UAAU,IAAI;AAAA,YACnD,OAAO;AACH,mBAAK,OAAO,MAAM,OAAO,IAAI;AAAA,YACjC;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,QAAQ,KAAK,YAAY,IAAI,IAAI,QAAQ,YAAY;AACzD,UAAI,QAAQ,WAAW,SAAS,MAAM;AAClC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,SAAS,KAAK,UAAU,QAAQ,EAAE;AACvC,aAAK,UAAU,KAAK,UAAU,SAAS,EAAE;AACzC,aAAK,aAAa,KAAK,UAAU,cAAc,EAAE,SAAS;AAAA,MAC9D;AACA,UAAI,QAAQ,SAAS,YAAY,IAAI,IAAI,QAAQ,YAAY;AAC7D,UAAI,QAAQ,eAAe,SAAS,MAAM;AACtC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,YAAY;AAAA,MACrB;AACA,UAAI,QAAQ,aAAa,YAAY,IAAI,IAAI,QAAQ,KAAK;AAC1D,UAAI,QAAQ,QAAQ,SAAS,MAAM;AAC/B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,YAAY,KAAK,UAAU,aAAa,EAAE,SAAS;AACxD,aAAK,UAAU,KAAK,UAAU,SAAS,EAAE;AACzC,aAAK,aAAa,KAAK,UAAU,aAAa,EAAE;AAAA,MACpD;AACA,UAAI,QAAQ,MAAM,YAAY,IAAI,IAAI,QAAQ,KAAK;AACnD,UAAI,QAAQ,OAAO,SAAS,MAAM;AAC9B,aAAK,mBAAmB;AACxB,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,iBAAiB,KAAK;AAC3B,aAAK,aAAa,SAASI,MAAK;AAC5B,eAAK,eAAeA,IAAG;AACvB,cAAI,KAAK,MAAM,mBAAmB,EAAE,SAAS,EAAG,CAAAA,KAAI,eAAe,KAAK,MAAM,mBAAmB,EAAE;AACnG,cAAI,KAAK,MAAM,oBAAoB,EAAE,SAAS,EAAG,CAAAA,KAAI,eAAe,KAAK,MAAM,oBAAoB,EAAE;AAAA,QACzG;AACA,aAAK,iBAAiB,WAAW;AAC7B,iBAAO,IAAI,IAAI,YAAY,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG,GAAG,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG,GAAG,GAAG,CAAC;AAAA,QACzG;AACA,aAAK,iBAAiB,SAASA,MAAK;AAChC,eAAK,IAAI,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG;AACzC,eAAK,IAAI,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG;AACzC,eAAK,KAAK,KAAK,eAAeA,MAAK,MAAM,CAAC;AAC1C,mBAASJ,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC3C,iBAAK,YAAYI,MAAK,MAAMJ,EAAC;AAAA,UACjC;AAAA,QACJ;AACA,aAAK,iBAAiB,SAASI,MAAK,QAAQ,QAAQ;AAChD,cAAI,aAAa,KAAK,MAAM,aAAa,EAAE,eAAe,OAAO;AACjE,cAAI,cAAc,SAAS;AACvB,gBAAIH,SAAQ;AACZ,qBAASD,KAAI,QAAQA,KAAI,OAAO,SAAS,QAAQA,MAAK;AAClD,kBAAI,QAAQ,OAAO,SAASA,EAAC;AAC7B,kBAAIA,KAAI,UAAU,MAAM,UAAU,GAAG,EAAE,SAAS,EAAG;AACnD,cAAAC,UAAS,MAAM,qBAAqBG,IAAG;AAAA,YAC3C;AACA,mBAAO,MAAM,cAAc,QAAQH,SAAQA,SAAQ;AAAA,UACvD;AACA,iBAAO;AAAA,QACX;AACA,aAAK,cAAc,SAASG,MAAK,QAAQJ,IAAG;AACxC,cAAI,QAAQ,OAAO,SAASA,EAAC;AAC7B,cAAI,MAAM,UAAU,GAAG,EAAE,SAAS,GAAG;AACjC,kBAAM,IAAI,MAAM,UAAU,GAAG,EAAE,SAAS,GAAG,IAAI,KAAK,eAAeI,MAAK,QAAQJ,EAAC;AAAA,UACrF,OAAO;AACH,gBAAI,KAAK,UAAU,IAAI,EAAE,SAAS,EAAG,MAAK,KAAK,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAChF,gBAAI,MAAM,UAAU,IAAI,EAAE,SAAS,EAAG,MAAK,KAAK,MAAM,UAAU,IAAI,EAAE,SAAS,GAAG;AAClF,kBAAM,IAAI,KAAK;AAAA,UACnB;AACA,eAAK,IAAI,MAAM,IAAI,MAAM,YAAYI,IAAG;AACxC,cAAI,MAAM,UAAU,GAAG,EAAE,SAAS,GAAG;AACjC,kBAAM,IAAI,MAAM,UAAU,GAAG,EAAE,SAAS,GAAG;AAAA,UAC/C,OAAO;AACH,gBAAI,KAAK,UAAU,IAAI,EAAE,SAAS,EAAG,MAAK,KAAK,KAAK,UAAU,IAAI,EAAE,SAAS,GAAG;AAChF,gBAAI,MAAM,UAAU,IAAI,EAAE,SAAS,EAAG,MAAK,KAAK,MAAM,UAAU,IAAI,EAAE,SAAS,GAAG;AAClF,kBAAM,IAAI,KAAK;AAAA,UACnB;AACA,eAAK,IAAI,MAAM;AACf,gBAAM,OAAOA,IAAG;AAChB,mBAASJ,KAAI,GAAGA,KAAI,MAAM,SAAS,QAAQA,MAAK;AAC5C,iBAAK,YAAYI,MAAK,OAAOJ,EAAC;AAAA,UAClC;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,QAAQ,KAAK,YAAY,IAAI,IAAI,QAAQ,oBAAoB;AACjE,UAAI,QAAQ,kBAAkB,SAAS,MAAM;AACzC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,WAAW,SAAS,MAAM,MAAMA,IAAG;AACpC,cAAI,IAAI,KAAKA,EAAC;AACd,cAAI,QAAQ;AACZ,cAAI,KAAK,UAAU;AACf,gBAAI,aAAa;AACjB,iBAAKA,MAAK,KAAK,KAAKA,KAAI,CAAC,KAAK,QAAQA,KAAI,KAAK,SAAS,KAAK,KAAKA,KAAI,CAAC,KAAK,IAAK,cAAa;AAC9F,gBAAIA,KAAI,KAAK,KAAKA,KAAI,CAAC,KAAK,OAAOA,KAAI,KAAK,SAAS,KAAK,KAAKA,KAAI,CAAC,KAAK,IAAK,cAAa;AAC3F,gBAAIA,KAAI,KAAK,KAAKA,KAAI,CAAC,KAAK,QAAQA,MAAK,KAAK,SAAS,KAAK,KAAKA,KAAI,CAAC,KAAK,KAAM,cAAa;AAC9F,gBAAI,OAAO,KAAK,OAAO,CAAC,KAAK,aAAa;AACtC,sBAAQ,KAAK,OAAO,CAAC,EAAE,UAAU;AACjC,kBAAI,SAAS,QAAQ,KAAK,OAAO,CAAC,EAAE,QAAQ,QAAS,SAAQ,KAAK,OAAO,CAAC;AAAA,YAC9E;AAAA,UACJ,OAAO;AACH,oBAAQ,KAAK,OAAO,CAAC;AAAA,UACzB;AACA,cAAI,SAAS,KAAM,SAAQ,KAAK;AAChC,iBAAO;AAAA,QACX;AACA,aAAK,iBAAiB,SAASI,MAAK;AAChC,cAAI,aAAa,KAAK,OAAO,MAAM,aAAa,EAAE,cAAc;AAChE,cAAI,cAAc,MAAM;AACpB,gBAAI,WAAW,KAAK,OAAO,MAAM,WAAW,EAAE,kBAAkB,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,QAAQ;AACrG,gBAAI,YAAY,KAAK,OAAO,MAAM,YAAY,EAAE,eAAe,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,SAAS;AACrG,gBAAI,OAAO,KAAK,QAAQ;AACxB,gBAAI,WAAW,MAAO,QAAO,KAAK,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC7D,gBAAI,KAAK,IAAI,cAAc,KAAK,OAAO,UAAU,IAAI,EAAE,KAAK;AAC5D,qBAASJ,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAClC,kBAAI,QAAQ,KAAK,SAAS,YAAY,MAAMA,EAAC;AAC7C,kBAAI,QAAQ,WAAW,WAAW,SAAS;AAC3C,cAAAI,KAAI,UAAU,KAAK,GAAG,KAAK,CAAC;AAC5B,cAAAA,KAAI,MAAM,OAAO,CAAC,KAAK;AACvB,kBAAI,KAAKA,KAAI;AACb,cAAAA,KAAI,YAAYA,KAAI,YAAY,WAAW,SAAS,aAAa;AACjE,kBAAI,aAAa,SAAU,CAAAA,KAAI,UAAU,GAAG,GAAG,KAAI,GAAG,GAAG,CAAC;AAC1D,oBAAM,OAAOA,IAAG;AAChB,kBAAI,aAAa,SAAU,CAAAA,KAAI,UAAU,GAAG,GAAG,MAAK,GAAG,GAAG,CAAC;AAC3D,cAAAA,KAAI,YAAY;AAChB,cAAAA,KAAI,MAAM,IAAI,OAAO,KAAK,KAAK;AAC/B,cAAAA,KAAI,UAAU,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC;AAC9B,mBAAK,KAAK,YAAY,MAAM,aAAa,WAAW,aAAa,WAAW,SAAS;AACrF,kBAAI,OAAO,GAAGJ,EAAC,KAAK,eAAe,CAAC,MAAM,GAAGA,EAAC,CAAC,GAAG;AAC9C,qBAAK,KAAK,GAAGA,EAAC;AAAA,cAClB;AAAA,YACJ;AACA;AAAA,UACJ;AACA,cAAII,KAAI,aAAa,GAAI,CAAAA,KAAI,SAAS,IAAI,eAAe,KAAK,QAAQ,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;AACxF,cAAIA,KAAI,eAAe,GAAI,CAAAA,KAAI,WAAW,IAAI,eAAe,KAAK,QAAQ,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;AAAA,QAChG;AACA,aAAK,UAAU,WAAW;AAAA,QAAC;AAC3B,aAAK,uBAAuB,SAASA,MAAK;AACtC,cAAIH,SAAQ,KAAK,YAAYG,IAAG;AAChC,mBAASJ,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC3C,YAAAC,UAAS,KAAK,SAASD,EAAC,EAAE,qBAAqBI,IAAG;AAAA,UACtD;AACA,iBAAOH;AAAA,QACX;AACA,aAAK,cAAc,SAASG,MAAK;AAC7B,cAAI,aAAa,KAAK,OAAO,MAAM,aAAa,EAAE,cAAc;AAChE,cAAI,cAAc,MAAM;AACpB,gBAAI,WAAW,KAAK,OAAO,MAAM,WAAW,EAAE,kBAAkB,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,QAAQ;AACrG,gBAAI,UAAU;AACd,gBAAI,OAAO,KAAK,QAAQ;AACxB,gBAAI,WAAW,MAAO,QAAO,KAAK,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC7D,gBAAI,KAAK,IAAI,cAAc,KAAK,OAAO,UAAU,IAAI,EAAE,KAAK;AAC5D,qBAASJ,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAClC,kBAAI,QAAQ,KAAK,SAAS,YAAY,MAAMA,EAAC;AAC7C,0BAAY,MAAM,aAAa,WAAW,aAAa,WAAW,WAAW,SAAS;AACtF,kBAAI,OAAO,GAAGA,EAAC,KAAK,eAAe,CAAC,MAAM,GAAGA,EAAC,CAAC,GAAG;AAC9C,2BAAW,GAAGA,EAAC;AAAA,cACnB;AAAA,YACJ;AACA,mBAAO;AAAA,UACX;AACA,cAAI,gBAAgB,IAAI,eAAe,KAAK,QAAQ,CAAC;AACrD,cAAI,CAACI,KAAI,YAAa,QAAO,cAAc,SAAS;AACpD,UAAAA,KAAI,KAAK;AACT,eAAK,WAAWA,IAAG;AACnB,cAAIH,SAAQG,KAAI,YAAY,aAAa,EAAE;AAC3C,UAAAA,KAAI,QAAQ;AACZ,iBAAOH;AAAA,QACX;AAAA,MACJ;AACA,UAAI,QAAQ,gBAAgB,YAAY,IAAI,IAAI,QAAQ,oBAAoB;AAC5E,UAAI,QAAQ,QAAQ,SAAS,MAAM;AAC/B,aAAK,mBAAmB;AACxB,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,OAAO,KAAK,aAAa,KAAK,QAAQ;AAC3C,aAAK,UAAU,WAAW;AACtB,iBAAO,KAAK;AAAA,QAChB;AAAA,MACJ;AACA,UAAI,QAAQ,MAAM,YAAY,IAAI,IAAI,QAAQ,gBAAgB;AAC9D,UAAI,QAAQ,OAAO,SAAS,MAAM;AAC9B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,UAAU,WAAW;AACtB,cAAI,UAAU,KAAK,iBAAiB,EAAE,cAAc;AACpD,cAAI,WAAW,KAAM,QAAO,QAAQ,SAAS,CAAC,EAAE,QAAQ;AAAA,QAC5D;AAAA,MACJ;AACA,UAAI,QAAQ,KAAK,YAAY,IAAI,IAAI,QAAQ,gBAAgB;AAC7D,UAAI,QAAQ,IAAI,SAAS,MAAM;AAC3B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,UAAU;AACf,iBAASD,KAAI,GAAGA,KAAI,KAAK,WAAW,QAAQA,MAAK;AAC7C,cAAI,KAAK,WAAWA,EAAC,EAAE,YAAY,EAAG,MAAK,UAAU;AAAA,QACzD;AACA,aAAK,OAAO,KAAK,UAAU,KAAK,WAAW,CAAC,EAAE,YAAY;AAC1D,aAAK,UAAU,WAAW;AACtB,iBAAO,KAAK;AAAA,QAChB;AACA,aAAK,qBAAqB,KAAK;AAC/B,aAAK,iBAAiB,SAASI,MAAK;AAChC,cAAI,KAAK,SAAS;AACd,iBAAK,mBAAmBA,IAAG;AAC3B,gBAAI,WAAW,IAAI,IAAI,SAAS,YAAY,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,QAAQ;AACjF,gBAAI,MAAM,iBAAiB,MAAM,IAAI,IAAI,YAAY,KAAK,GAAG,KAAK,IAAI,SAAS,SAAS,GAAG,GAAG,KAAK,IAAI,KAAK,YAAYA,IAAG,GAAG,KAAK,CAAC,CAAC;AAAA,UACzI,OAAO;AACH,gBAAI,IAAI,IAAI,IAAI,QAAQ,EAAE;AAC1B,cAAE,WAAW,KAAK;AAClB,cAAE,SAAS;AACX,cAAE,OAAOA,IAAG;AAAA,UAChB;AAAA,QACJ;AACA,aAAK,UAAU,WAAW;AACtB,iBAAO,KAAK,KAAK,iBAAiB,EAAE,KAAK;AAAA,QAC7C;AACA,aAAK,cAAc,WAAW;AAC1B,cAAI,IAAI,OAAO,MAAM,SAAS;AAAA,QAClC;AAAA,MACJ;AACA,UAAI,QAAQ,EAAE,YAAY,IAAI,IAAI,QAAQ,gBAAgB;AAC1D,UAAI,QAAQ,QAAQ,SAAS,MAAM;AAC/B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,YAAI,OAAO,KAAK,iBAAiB,EAAE;AACnC,YAAI,QAAQ,KAAK,MAAM,QAAQ;AAC/B,YAAI,OAAO,KAAK,IAAI;AACpB,aAAK,SAAS;AACd,YAAI,CAAC,OAAO;AACR,eAAK,MAAM,SAAS,cAAc,KAAK;AACvC,cAAI,OAAO;AACX,eAAK,IAAI,SAAS,WAAW;AACzB,iBAAK,SAAS;AAAA,UAClB;AACA,eAAK,IAAI,UAAU,WAAW;AAC1B,gBAAI,OAAO,WAAW,aAAa;AAC/B,sBAAQ,IAAI,mBAAmB,OAAO,aAAa;AACnD,mBAAK,SAAS;AAAA,YAClB;AAAA,UACJ;AACA,eAAK,IAAI,MAAM;AAAA,QACnB,OAAO;AACH,eAAK,MAAM,IAAI,KAAK,IAAI;AACxB,eAAK,SAAS;AAAA,QAClB;AACA,aAAK,iBAAiB,SAASA,MAAK;AAChC,cAAI,IAAI,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG;AACxC,cAAI,IAAI,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG;AACxC,cAAIH,SAAQ,KAAK,UAAU,OAAO,EAAE,SAAS,GAAG;AAChD,cAAIC,UAAS,KAAK,UAAU,QAAQ,EAAE,SAAS,GAAG;AAClD,cAAID,UAAS,KAAKC,WAAU,EAAG;AAC/B,UAAAE,KAAI,KAAK;AACT,cAAI,OAAO;AACP,YAAAA,KAAI,QAAQ,KAAK,KAAK,GAAG,GAAGH,QAAOC,OAAM;AAAA,UAC7C,OAAO;AACH,YAAAE,KAAI,UAAU,GAAG,CAAC;AAClB,gBAAI,YAAYA,MAAK,KAAK,UAAU,qBAAqB,EAAE,OAAOH,QAAO,KAAK,IAAI,OAAOC,SAAQ,KAAK,IAAI,QAAQ,GAAG,CAAC;AACtH,YAAAE,KAAI,UAAU,KAAK,KAAK,GAAG,CAAC;AAAA,UAChC;AACA,UAAAA,KAAI,QAAQ;AAAA,QAChB;AACA,aAAK,iBAAiB,WAAW;AAC7B,cAAI,IAAI,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG;AACxC,cAAI,IAAI,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG;AACxC,cAAIH,SAAQ,KAAK,UAAU,OAAO,EAAE,SAAS,GAAG;AAChD,cAAIC,UAAS,KAAK,UAAU,QAAQ,EAAE,SAAS,GAAG;AAClD,iBAAO,IAAI,IAAI,YAAY,GAAG,GAAG,IAAID,QAAO,IAAIC,OAAM;AAAA,QAC1D;AAAA,MACJ;AACA,UAAI,QAAQ,MAAM,YAAY,IAAI,IAAI,QAAQ,oBAAoB;AAClE,UAAI,QAAQ,IAAI,SAAS,MAAM;AAC3B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,iBAAiB,WAAW;AAC7B,cAAI,KAAK,IAAI,IAAI,YAAY;AAC7B,mBAASF,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC3C,eAAG,eAAe,KAAK,SAASA,EAAC,EAAE,eAAe,CAAC;AAAA,UACvD;AACA,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,UAAI,QAAQ,EAAE,YAAY,IAAI,IAAI,QAAQ,oBAAoB;AAC9D,UAAI,QAAQ,SAAS,SAAS,MAAM;AAChC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,iBAAiB,KAAK;AAC3B,aAAK,aAAa,SAASI,MAAK;AAC5B,eAAK,eAAeA,IAAG;AACvB,cAAI,KAAK,UAAU,SAAS,EAAE,SAAS,GAAG;AACtC,gBAAI,UAAU,IAAI,cAAc,KAAK,UAAU,SAAS,EAAE,KAAK;AAC/D,gBAAI,OAAO,QAAQ,CAAC;AACpB,gBAAI,OAAO,QAAQ,CAAC;AACpB,oBAAQ,QAAQ,CAAC;AACjB,qBAAS,QAAQ,CAAC;AAClB,gBAAI,YAAYA,MAAK,KAAK,UAAU,qBAAqB,EAAE,OAAO,KAAK,UAAU,OAAO,EAAE,SAAS,GAAG,GAAG,OAAO,KAAK,UAAU,QAAQ,EAAE,SAAS,GAAG,GAAG,QAAQ,MAAM,IAAI;AAC1K,gBAAI,SAAS,WAAW,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC;AAAA,UAClD;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,QAAQ,OAAO,YAAY,IAAI,IAAI,QAAQ,oBAAoB;AACnE,UAAI,QAAQ,QAAQ,SAAS,MAAM;AAC/B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,YAAI,MAAM;AACV,iBAASJ,KAAI,GAAGA,KAAI,KAAK,WAAW,QAAQA,MAAK;AAC7C,iBAAO,KAAK,WAAWA,EAAC,EAAE;AAAA,QAC9B;AACA,cAAM,IAAI,QAAQ,mEAAmE,EAAE;AACvF,cAAM,IAAI,eAAe,GAAG;AAC5B,YAAI,UAAU,IAAI,MAAM,GAAG;AAC3B,iBAASA,KAAI,GAAGA,KAAI,QAAQ,QAAQA,MAAK;AACrC,cAAI,IAAI,KAAK,QAAQA,EAAC,CAAC,KAAK,IAAI;AAC5B,gBAAI,SAAS,QAAQA,EAAC,EAAE,MAAM,GAAG;AACjC,gBAAI,aAAa,OAAO,CAAC,EAAE,MAAM,GAAG;AACpC,gBAAI,WAAW,OAAO,CAAC,EAAE,MAAM,GAAG;AAClC,qBAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AACxC,kBAAI,WAAW,IAAI,KAAK,WAAW,CAAC,CAAC;AACrC,kBAAI,YAAY,IAAI;AAChB,oBAAI,QAAQ,CAAC;AACb,yBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACtC,sBAAI,OAAO,SAAS,CAAC,EAAE,QAAQ,GAAG;AAClC,sBAAI,OAAO,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI;AACrC,sBAAI,QAAQ,SAAS,CAAC,EAAE,OAAO,OAAO,GAAG,SAAS,CAAC,EAAE,SAAS,IAAI;AAClE,sBAAI,QAAQ,QAAQ,SAAS,MAAM;AAC/B,0BAAM,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,SAAS,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,KAAK,CAAC;AAAA,kBAC5E;AAAA,gBACJ;AACA,oBAAI,OAAO,QAAQ,IAAI;AACvB,oBAAI,YAAY,cAAc;AAC1B,sBAAI,aAAa,MAAM,aAAa,EAAE,MAAM,QAAQ,MAAM,EAAE;AAC5D,sBAAI,OAAO,MAAM,KAAK,EAAE,MAAM,MAAM,GAAG;AACvC,2BAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAClC,wBAAI,KAAK,CAAC,EAAE,QAAQ,eAAe,IAAI,GAAG;AACtC,0BAAI,WAAW,KAAK,CAAC,EAAE,QAAQ,KAAK;AACpC,0BAAI,SAAS,KAAK,CAAC,EAAE,QAAQ,KAAK,QAAQ;AAC1C,0BAAI,MAAM,KAAK,CAAC,EAAE,OAAO,WAAW,GAAG,SAAS,WAAW,CAAC;AAC5D,0BAAI,MAAM,IAAI,SAAS,IAAI,KAAK,GAAG,CAAC;AACpC,0BAAI,QAAQ,IAAI,qBAAqB,MAAM;AAC3C,+BAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,4BAAI,OAAO,IAAI,cAAc,MAAM,CAAC,CAAC;AACrC,4BAAI,YAAY,UAAU,IAAI;AAAA,sBAClC;AAAA,oBACJ;AAAA,kBACJ;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,QAAQ,MAAM,YAAY,IAAI,IAAI,QAAQ,YAAY;AAC1D,UAAI,QAAQ,MAAM,SAAS,MAAM;AAC7B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,iBAAiB,KAAK;AAC3B,aAAK,aAAa,SAASI,MAAK;AAC5B,eAAK,eAAeA,IAAG;AACvB,cAAI,KAAK,UAAU,GAAG,EAAE,SAAS,EAAG,CAAAA,KAAI,UAAU,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG,GAAG,CAAC;AACtF,cAAI,KAAK,UAAU,GAAG,EAAE,SAAS,EAAG,CAAAA,KAAI,UAAU,GAAG,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG,CAAC;AAAA,QAC1F;AACA,aAAK,gBAAgB,WAAW;AAC5B,cAAI,UAAU,KAAK,iBAAiB,EAAE,cAAc;AACpD,cAAI,KAAK,UAAU,OAAO,EAAE,SAAS,EAAG,SAAQ,UAAU,SAAS,IAAI,EAAE,QAAQ,KAAK,UAAU,OAAO,EAAE;AACzG,cAAI,KAAK,UAAU,QAAQ,EAAE,SAAS,EAAG,SAAQ,UAAU,UAAU,IAAI,EAAE,QAAQ,KAAK,UAAU,QAAQ,EAAE;AAC5G,iBAAO;AAAA,QACX;AACA,aAAK,OAAO,SAASA,MAAK;AACtB,cAAI,UAAU,KAAK,cAAc;AACjC,cAAI,WAAW,KAAM,SAAQ,KAAKA,IAAG;AAAA,QACzC;AACA,aAAK,iBAAiB,WAAW;AAC7B,cAAI,UAAU,KAAK,cAAc;AACjC,cAAI,WAAW,KAAM,QAAO,QAAQ,eAAe;AAAA,QACvD;AACA,aAAK,iBAAiB,SAASA,MAAK;AAChC,cAAI,UAAU,KAAK,cAAc;AACjC,cAAI,WAAW,MAAM;AACjB,gBAAI,YAAY,QAAQ;AACxB,oBAAQ,SAAS;AACjB,oBAAQ,OAAOA,IAAG;AAClB,oBAAQ,SAAS;AAAA,UACrB;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,QAAQ,IAAI,YAAY,IAAI,IAAI,QAAQ,oBAAoB;AAChE,UAAI,QAAQ,OAAO,SAAS,MAAM;AAC9B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,QAAQ,SAASA,MAAK,SAAS;AAChC,cAAI,IAAI,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG;AACxC,cAAI,IAAI,KAAK,UAAU,GAAG,EAAE,SAAS,GAAG;AACxC,cAAIH,SAAQ,KAAK,UAAU,OAAO,EAAE,SAAS,GAAG;AAChD,cAAIC,UAAS,KAAK,UAAU,QAAQ,EAAE,SAAS,GAAG;AAClD,cAAID,UAAS,KAAKC,WAAU,GAAG;AAC3B,gBAAI,KAAK,IAAI,IAAI,YAAY;AAC7B,qBAASF,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC3C,iBAAG,eAAe,KAAK,SAASA,EAAC,EAAE,eAAe,CAAC;AAAA,YACvD;AAAA,UAKJ;AACA,cAAI,OAAO,QAAQ,UAAU,MAAM,EAAE;AACrC,kBAAQ,UAAU,MAAM,EAAE,QAAQ;AAClC,cAAI,QAAQ,SAAS,cAAc,QAAQ;AAC3C,gBAAM,QAAQ,IAAIC;AAClB,gBAAM,SAAS,IAAIC;AACnB,cAAI,UAAU,MAAM,WAAW,IAAI;AACnC,eAAK,eAAe,OAAO;AAC3B,cAAI,IAAI,SAAS,cAAc,QAAQ;AACvC,YAAE,QAAQ,IAAID;AACd,YAAE,SAAS,IAAIC;AACf,cAAI,UAAU,EAAE,WAAW,IAAI;AAC/B,kBAAQ,OAAO,OAAO;AACtB,kBAAQ,2BAA2B;AACnC,kBAAQ,YAAY,QAAQ,cAAc,OAAO,WAAW;AAC5D,kBAAQ,SAAS,GAAG,GAAG,IAAID,QAAO,IAAIC,OAAM;AAC5C,UAAAE,KAAI,YAAY,QAAQ,cAAc,GAAG,WAAW;AACpD,UAAAA,KAAI,SAAS,GAAG,GAAG,IAAIH,QAAO,IAAIC,OAAM;AACxC,kBAAQ,UAAU,MAAM,EAAE,QAAQ;AAAA,QACtC;AACA,aAAK,SAAS,WAAW;AAAA,QAAC;AAAA,MAC9B;AACA,UAAI,QAAQ,KAAK,YAAY,IAAI,IAAI,QAAQ,YAAY;AACzD,UAAI,QAAQ,WAAW,SAAS,MAAM;AAClC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,QAAQ,SAASE,MAAK;AACvB,mBAASJ,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC3C,gBAAI,QAAQ,KAAK,SAASA,EAAC;AAC3B,gBAAI,OAAO,MAAM,QAAQ,aAAa;AAClC,kBAAI,YAAY;AAChB,kBAAI,MAAM,UAAU,WAAW,EAAE,SAAS,GAAG;AACzC,4BAAY,IAAI,IAAI,UAAU,MAAM,UAAU,WAAW,EAAE,KAAK;AAChE,0BAAU,MAAMI,IAAG;AAAA,cACvB;AACA,oBAAM,KAAKA,IAAG;AACd,cAAAA,KAAI,KAAK;AACT,kBAAI,WAAW;AACX,0BAAU,QAAQA,IAAG;AAAA,cACzB;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AACA,aAAK,SAAS,WAAW;AAAA,QAAC;AAAA,MAC9B;AACA,UAAI,QAAQ,SAAS,YAAY,IAAI,IAAI,QAAQ,YAAY;AAC7D,UAAI,QAAQ,SAAS,SAAS,MAAM;AAChC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,QAAQ,SAASA,MAAK,SAAS;AAChC,cAAI,KAAK,QAAQ,eAAe;AAChC,cAAI,IAAI,KAAK,MAAM,GAAG,EAAE;AACxB,cAAI,IAAI,KAAK,MAAM,GAAG,EAAE;AACxB,cAAIH,SAAQ,KAAK,MAAM,GAAG,MAAM,CAAC;AACjC,cAAIC,UAAS,KAAK,MAAM,GAAG,OAAO,CAAC;AACnC,cAAI,SAAS,QAAQ,MAAM,QAAQ,EAAE;AACrC,kBAAQ,MAAM,QAAQ,EAAE,QAAQ;AAChC,cAAI,KAAK,GAAG,KAAK;AACjB,mBAASF,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC3C,gBAAI,MAAM,KAAK,SAASA,EAAC,EAAE,uBAAuB;AAClD,iBAAK,KAAK,IAAI,IAAI,GAAG;AACrB,iBAAK,KAAK,IAAI,IAAI,GAAG;AAAA,UACzB;AACA,cAAI,IAAI,SAAS,cAAc,QAAQ;AACvC,YAAE,QAAQC,SAAQ,IAAI;AACtB,YAAE,SAASC,UAAS,IAAI;AACxB,cAAI,UAAU,EAAE,WAAW,IAAI;AAC/B,kBAAQ,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;AAClC,kBAAQ,OAAO,OAAO;AACtB,mBAASF,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQA,MAAK;AAC3C,iBAAK,SAASA,EAAC,EAAE,MAAM,SAAS,GAAG,GAAGC,SAAQ,IAAI,IAAIC,UAAS,IAAI,EAAE;AAAA,UACzE;AACA,UAAAE,KAAI,UAAU,GAAG,GAAG,GAAGH,SAAQ,IAAI,IAAIC,UAAS,IAAI,IAAI,IAAI,IAAI,IAAI,IAAID,SAAQ,IAAI,IAAIC,UAAS,IAAI,EAAE;AACvG,kBAAQ,MAAM,UAAU,IAAI,EAAE,QAAQ;AAAA,QAC1C;AACA,aAAK,SAAS,WAAW;AAAA,QAAC;AAAA,MAC9B;AACA,UAAI,QAAQ,OAAO,YAAY,IAAI,IAAI,QAAQ,YAAY;AAC3D,UAAI,QAAQ,eAAe,SAAS,MAAM;AACtC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,QAAQ,WAAW;AAAA,QAAC;AAAA,MAC7B;AACA,UAAI,QAAQ,aAAa,YAAY,IAAI,IAAI,QAAQ,YAAY;AACjE,UAAI,QAAQ,gBAAgB,SAAS,MAAM;AACvC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,iBAAS,MAAM,KAAK,GAAG,GAAGD,QAAOC,SAAQ,MAAM;AAC3C,iBAAO,IAAI,IAAID,SAAQ,IAAI,IAAI,IAAI,IAAI;AAAA,QAC3C;AACA,iBAAS,MAAM,KAAK,GAAG,GAAGA,QAAOC,SAAQ,MAAM,KAAK;AAChD,cAAI,IAAID,SAAQ,IAAI,IAAI,IAAI,IAAI,IAAI;AAAA,QACxC;AACA,aAAK,QAAQ,SAASG,MAAK,GAAG,GAAGH,QAAOC,SAAQ;AAC5C,cAAI,UAAUE,KAAI,aAAa,GAAG,GAAGH,QAAOC,OAAM;AAClD,mBAASU,KAAI,GAAGA,KAAIV,SAAQU,MAAK;AAC7B,qBAASC,KAAI,GAAGA,KAAIZ,QAAOY,MAAK;AAC5B,kBAAI,IAAI,MAAM,QAAQ,MAAMA,IAAGD,IAAGX,QAAOC,SAAQ,CAAC;AAClD,kBAAI,IAAI,MAAM,QAAQ,MAAMW,IAAGD,IAAGX,QAAOC,SAAQ,CAAC;AAClD,kBAAI,IAAI,MAAM,QAAQ,MAAMW,IAAGD,IAAGX,QAAOC,SAAQ,CAAC;AAClD,kBAAI,QAAQ,IAAI,IAAI,KAAK;AACzB,oBAAM,QAAQ,MAAMW,IAAGD,IAAGX,QAAOC,SAAQ,GAAG,IAAI;AAChD,oBAAM,QAAQ,MAAMW,IAAGD,IAAGX,QAAOC,SAAQ,GAAG,IAAI;AAChD,oBAAM,QAAQ,MAAMW,IAAGD,IAAGX,QAAOC,SAAQ,GAAG,IAAI;AAAA,YACpD;AAAA,UACJ;AACA,UAAAE,KAAI,UAAU,GAAG,GAAGH,QAAOC,OAAM;AACjC,UAAAE,KAAI,aAAa,SAAS,GAAG,CAAC;AAAA,QAClC;AAAA,MACJ;AACA,UAAI,QAAQ,cAAc,YAAY,IAAI,IAAI,QAAQ,YAAY;AAClE,UAAI,QAAQ,iBAAiB,SAAS,MAAM;AACxC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,KAAK,IAAI;AACd,aAAK,aAAa,KAAK,MAAM,KAAK,UAAU,cAAc,EAAE,SAAS,CAAC;AACtE,aAAK,sBAAsB,KAAK;AAChC,aAAK,QAAQ,SAASA,MAAK,GAAG,GAAGH,QAAOC,SAAQ;AAC5C,cAAI,OAAO,uBAAuB,aAAa;AAC3C,gBAAI,OAAO,WAAW,aAAa;AAC/B,sBAAQ,IAAI,uDAAuD;AAAA,YACvE;AACA;AAAA,UACJ;AACA,UAAAE,KAAI,OAAO,KAAK,IAAI,SAAS;AAC7B,UAAAA,KAAI,OAAO,MAAM,UAAU;AAC3B,mBAAS,KAAK,YAAYA,KAAI,MAAM;AACpC,8BAAoBA,KAAI,OAAO,IAAI,GAAG,GAAGH,QAAOC,SAAQ,KAAK,UAAU;AACvE,mBAAS,KAAK,YAAYE,KAAI,MAAM;AAAA,QACxC;AAAA,MACJ;AACA,UAAI,QAAQ,eAAe,YAAY,IAAI,IAAI,QAAQ,YAAY;AACnE,UAAI,QAAQ,QAAQ,WAAW;AAAA,MAAC;AAChC,UAAI,QAAQ,MAAM,YAAY,IAAI,IAAI,QAAQ,YAAY;AAC1D,UAAI,QAAQ,OAAO,WAAW;AAAA,MAAC;AAC/B,UAAI,QAAQ,KAAK,YAAY,IAAI,IAAI,QAAQ,YAAY;AACzD,UAAI,QAAQ,UAAU,SAAS,MAAM;AACjC,YAAI,OAAO,WAAW,aAAa;AAC/B,kBAAQ,IAAI,qBAAqB,KAAK,WAAW,wBAAwB;AAAA,QAC7E;AAAA,MACJ;AACA,UAAI,QAAQ,QAAQ,YAAY,IAAI,IAAI,QAAQ,YAAY;AAC5D,UAAI,gBAAgB,SAAS,MAAM;AAC/B,YAAI,YAAY,KAAK,SAAS,QAAQ,WAAW,EAAE;AACnD,oBAAY,UAAU,QAAQ,OAAO,EAAE;AACvC,YAAI,IAAI;AACR,YAAI,OAAO,IAAI,QAAQ,SAAS,KAAK,aAAa;AAC9C,cAAI,IAAI,IAAI,QAAQ,SAAS,EAAE,IAAI;AAAA,QACvC,OAAO;AACH,cAAI,IAAI,IAAI,QAAQ,QAAQ,IAAI;AAAA,QACpC;AACA,UAAE,OAAO,KAAK;AACd,eAAO;AAAA,MACX;AACA,UAAI,OAAO,SAASA,MAAK,KAAK;AAC1B,YAAI,QAAQA,MAAK,IAAI,KAAK,GAAG,CAAC;AAAA,MAClC;AACA,UAAI,UAAU,SAASA,MAAK,KAAK;AAC7B,YAAI,WAAWA,MAAK,IAAI,SAAS,GAAG,CAAC;AAAA,MACzC;AACA,UAAI,aAAa,SAASA,MAAK,KAAK;AAChC,YAAI,KAAKA,IAAG;AACZ,YAAI,QAAQ,SAAS,GAAG;AACpB,cAAIU,KAAIV,KAAI;AACZ,iBAAOU,IAAG;AACN,cAAE,KAAKA,GAAE;AACT,cAAE,KAAKA,GAAE;AACT,YAAAA,KAAIA,GAAE;AAAA,UACV;AACA,cAAI,OAAO,QAAS,GAAE,KAAK,OAAO;AAClC,cAAI,OAAO,QAAS,GAAE,KAAK,OAAO;AAClC,iBAAO;AAAA,QACX;AACA,YAAI,IAAI,KAAK,aAAa,KAAK,MAAM;AACjC,UAAAV,KAAI,OAAO,UAAU,SAASU,IAAG;AAC7B,gBAAI,IAAI,MAAM,IAAI,IAAI,MAAMA,MAAK,OAAOA,GAAE,UAAU,MAAM,SAASA,MAAK,OAAOA,GAAE,UAAU,MAAM,OAAO,CAAC;AACzG,gBAAI,MAAM,QAAQ,EAAE,GAAG,EAAE,CAAC;AAAA,UAC9B;AACA,UAAAV,KAAI,OAAO,cAAc,SAASU,IAAG;AACjC,gBAAI,IAAI,MAAM,IAAI,IAAI,MAAMA,MAAK,OAAOA,GAAE,UAAU,MAAM,SAASA,MAAK,OAAOA,GAAE,UAAU,MAAM,OAAO,CAAC;AACzG,gBAAI,MAAM,YAAY,EAAE,GAAG,EAAE,CAAC;AAAA,UAClC;AAAA,QACJ;AACA,YAAI,IAAI,IAAI,cAAc,IAAI,eAAe;AAC7C,UAAE,OAAO;AACT,YAAI,gBAAgB;AACpB,YAAI,OAAO,WAAW;AAClB,cAAI,SAAS,MAAM;AACnB,cAAIV,KAAI,OAAO,WAAY,KAAI,SAAS,WAAWA,KAAI,OAAO,WAAW,aAAaA,KAAI,OAAO,WAAW,YAAY;AACxH,cAAI,IAAI,KAAK,kBAAkB,KAAK,MAAM;AACtC,gBAAI,EAAE,MAAM,OAAO,EAAE,SAAS,GAAG;AAC7B,cAAAA,KAAI,OAAO,QAAQ,EAAE,MAAM,OAAO,EAAE,SAAS,GAAG;AAChD,cAAAA,KAAI,OAAO,MAAM,QAAQA,KAAI,OAAO,QAAQ;AAAA,YAChD;AACA,gBAAI,EAAE,MAAM,QAAQ,EAAE,SAAS,GAAG;AAC9B,cAAAA,KAAI,OAAO,SAAS,EAAE,MAAM,QAAQ,EAAE,SAAS,GAAG;AAClD,cAAAA,KAAI,OAAO,MAAM,SAASA,KAAI,OAAO,SAAS;AAAA,YAClD;AAAA,UACJ;AACA,cAAI,SAASA,KAAI,OAAO,eAAeA,KAAI,OAAO;AAClD,cAAI,UAAUA,KAAI,OAAO,gBAAgBA,KAAI,OAAO;AACpD,cAAI,IAAI,KAAK,kBAAkB,KAAK,QAAQ,EAAE,MAAM,OAAO,EAAE,SAAS,KAAK,EAAE,MAAM,QAAQ,EAAE,SAAS,GAAG;AACrG,qBAAS,EAAE,MAAM,OAAO,EAAE,SAAS,GAAG;AACtC,sBAAU,EAAE,MAAM,QAAQ,EAAE,SAAS,GAAG;AAAA,UAC5C;AACA,cAAI,SAAS,WAAW,QAAQ,OAAO;AACvC,cAAI,IAAI,KAAK,SAAS,KAAK,KAAM,GAAE,UAAU,KAAK,IAAI,EAAE,QAAQ,IAAI,KAAK,SAAS;AAClF,cAAI,IAAI,KAAK,SAAS,KAAK,KAAM,GAAE,UAAU,KAAK,IAAI,EAAE,QAAQ,IAAI,KAAK,SAAS;AAClF,cAAI,IAAI,KAAK,YAAY,KAAK,QAAQ,IAAI,KAAK,aAAa,KAAK,MAAM;AACnE,gBAAI,SAAS,GAAG,SAAS,GAAG,UAAU,IAAI,cAAc,EAAE,UAAU,SAAS,EAAE,KAAK;AACpF,gBAAI,EAAE,UAAU,OAAO,EAAE,SAAS,EAAG,UAAS,EAAE,UAAU,OAAO,EAAE,SAAS,GAAG,IAAI,IAAI,KAAK,YAAY;AAAA,qBAAY,CAAC,MAAM,QAAQ,CAAC,CAAC,EAAG,UAAS,QAAQ,CAAC,IAAI,IAAI,KAAK,YAAY;AACnL,gBAAI,EAAE,UAAU,QAAQ,EAAE,SAAS,EAAG,UAAS,EAAE,UAAU,QAAQ,EAAE,SAAS,GAAG,IAAI,IAAI,KAAK,aAAa;AAAA,qBAAY,CAAC,MAAM,QAAQ,CAAC,CAAC,EAAG,UAAS,QAAQ,CAAC,IAAI,IAAI,KAAK,aAAa;AACvL,cAAE,UAAU,SAAS,IAAI,EAAE,QAAQ,IAAI,KAAK,YAAY;AACxD,cAAE,UAAU,UAAU,IAAI,EAAE,QAAQ,IAAI,KAAK,aAAa;AAC1D,cAAE,UAAU,WAAW,IAAI,EAAE,QAAQ,SAAS,SAAS,SAAS,MAAM,UAAU;AAChF,cAAE,UAAU,uBAAuB,IAAI,EAAE,QAAQ;AAAA,UACrD;AACA,cAAI,IAAI,KAAK,aAAa,KAAK,MAAM;AACjC,YAAAA,KAAI,UAAU,GAAG,GAAG,QAAQ,OAAO;AAAA,UACvC;AACA,YAAE,OAAOA,IAAG;AACZ,cAAI,eAAe;AACf,4BAAgB;AAChB,gBAAI,OAAO,IAAI,KAAK,gBAAgB,KAAK,WAAY,KAAI,KAAK,gBAAgB,EAAE,GAAG;AAAA,UACvF;AAAA,QACJ;AACA,YAAI,mBAAmB;AACvB,YAAI,IAAI,aAAa,GAAG;AACpB,6BAAmB;AACnB,eAAK;AAAA,QACT;AACA,YAAI,aAAa,YAAY,WAAW;AACpC,cAAI,aAAa;AACjB,cAAI,oBAAoB,IAAI,aAAa,GAAG;AACxC,+BAAmB;AACnB,yBAAa;AAAA,UACjB;AACA,cAAI,IAAI,KAAK,aAAa,KAAK,MAAM;AACjC,yBAAa,aAAa,IAAI,MAAM,UAAU;AAAA,UAClD;AACA,cAAI,IAAI,KAAK,iBAAiB,KAAK,MAAM;AACrC,qBAASJ,KAAI,GAAGA,KAAI,IAAI,WAAW,QAAQA,MAAK;AAC5C,2BAAa,aAAa,IAAI,WAAWA,EAAC,EAAE,OAAO,MAAM,IAAI,SAAS;AAAA,YAC1E;AAAA,UACJ;AACA,cAAI,OAAO,IAAI,KAAK,aAAa,KAAK,YAAY;AAC9C,gBAAI,IAAI,KAAK,aAAa,EAAE,KAAK,KAAM,cAAa;AAAA,UACxD;AACA,cAAI,YAAY;AACZ,iBAAK;AACL,gBAAI,MAAM,UAAU;AAAA,UACxB;AAAA,QACJ,GAAG,MAAM,IAAI,SAAS;AAAA,MAC1B;AACA,UAAI,OAAO,WAAW;AAClB,YAAI,IAAI,YAAY;AAChB,wBAAc,IAAI,UAAU;AAAA,QAChC;AAAA,MACJ;AACA,UAAI,QAAQ,IAAI,WAAW;AACvB,aAAK,SAAS,CAAC;AACf,aAAK,YAAY,WAAW;AACxB,iBAAO,KAAK,OAAO,UAAU;AAAA,QACjC;AACA,aAAK,UAAU,SAAS,GAAG,GAAG;AAC1B,eAAK,OAAO,KAAK;AAAA,YACb,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA,KAAK,SAAS,GAAG;AACb,kBAAI,EAAE,QAAS,GAAE,QAAQ;AAAA,YAC7B;AAAA,UACJ,CAAC;AAAA,QACL;AACA,aAAK,cAAc,SAAS,GAAG,GAAG;AAC9B,eAAK,OAAO,KAAK;AAAA,YACb,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA,KAAK,SAAS,GAAG;AACb,kBAAI,EAAE,YAAa,GAAE,YAAY;AAAA,YACrC;AAAA,UACJ,CAAC;AAAA,QACL;AACA,aAAK,gBAAgB,CAAC;AACtB,aAAK,YAAY,SAAS,SAASI,MAAK;AACpC,mBAASJ,KAAI,GAAGA,KAAI,KAAK,OAAO,QAAQA,MAAK;AACzC,gBAAI,IAAI,KAAK,OAAOA,EAAC;AACrB,gBAAII,KAAI,iBAAiBA,KAAI,cAAc,EAAE,GAAG,EAAE,CAAC,EAAG,MAAK,cAAcJ,EAAC,IAAI;AAAA,UAClF;AAAA,QACJ;AACA,aAAK,mBAAmB,SAAS,SAAS,IAAI;AAC1C,mBAASA,KAAI,GAAGA,KAAI,KAAK,OAAO,QAAQA,MAAK;AACzC,gBAAI,IAAI,KAAK,OAAOA,EAAC;AACrB,gBAAI,GAAG,aAAa,EAAE,GAAG,EAAE,CAAC,EAAG,MAAK,cAAcA,EAAC,IAAI;AAAA,UAC3D;AAAA,QACJ;AACA,aAAK,YAAY,WAAW;AACxB,cAAI,IAAI,OAAO,MAAM,SAAS;AAC9B,mBAASA,KAAI,GAAGA,KAAI,KAAK,OAAO,QAAQA,MAAK;AACzC,gBAAI,IAAI,KAAK,OAAOA,EAAC;AACrB,gBAAI,UAAU,KAAK,cAAcA,EAAC;AAClC,mBAAO,SAAS;AACZ,gBAAE,IAAI,OAAO;AACb,wBAAU,QAAQ;AAAA,YACtB;AAAA,UACJ;AACA,eAAK,SAAS,CAAC;AACf,eAAK,gBAAgB,CAAC;AAAA,QAC1B;AAAA,MACJ,EAAE;AACF,aAAO;AAAA,IACX;AAAA,EACJ,GAAG,KAAK,QAAQ,MAAM;AACtB,MAAI,OAAO,4BAA4B,aAAa;AAChD,6BAAyB,UAAU,UAAU,SAAS,GAAG,IAAI,IAAI,IAAI,IAAI;AACrE,YAAM,KAAK,QAAQ,GAAG;AAAA,QAClB,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,aAAa;AAAA,QACb,SAAS;AAAA,QACT,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,aAAa;AAAA,MACjB,CAAC;AAAA,IACL;AAAA,EACJ;AACA,SAAO;AACX;","names":["i","width","height","target","ctx","a","styles","d","p","v","u","r","y","x","e"]}