PluginProbe
PDF & Print by BestWebSoft – WordPress Posts and Pages PDF Generator Plugin / 2.4.2
PDF & Print by BestWebSoft – WordPress Posts and Pages PDF Generator Plugin v2.4.2
trunk 1.5 1.6 1.7 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 All 71 releases
← All changes | js/html2canvas.js +1925 -2674 trunk → 2.4.2 View file →
@@ -1,28 +1,28 @@
1 1 /*!
2 - * html2canvas 1.4.1 <https://html2canvas.hertzen.com>
3 - * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
2 + * html2canvas 1.0.0-rc.7 <https://html2canvas.hertzen.com>
3 + * Copyright (c) 2020 Niklas von Hertzen <https://hertzen.com>
4 4 * Released under MIT License
5 5 */
6 6 (function (global, factory) {
7 7 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
8 - typeof define === 'function' && define.amd ? define(factory) :
9 - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.html2canvas = factory());
10 -}(this, (function () { 'use strict';
8 + typeof define === 'function' && define.amd ? define(factory) :
9 + (global = global || self, global.html2canvas = factory());
10 +}(this, function () { 'use strict';
11 11
12 12 /*! *****************************************************************************
13 - Copyright (c) Microsoft Corporation.
13 + Copyright (c) Microsoft Corporation. All rights reserved.
14 + Licensed under the Apache License, Version 2.0 (the "License"); you may not use
15 + this file except in compliance with the License. You may obtain a copy of the
16 + License at http://www.apache.org/licenses/LICENSE-2.0
14 17
15 - Permission to use, copy, modify, and/or distribute this software for any
16 - purpose with or without fee is hereby granted.
18 + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19 + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
20 + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
21 + MERCHANTABLITY OR NON-INFRINGEMENT.
17 22
18 - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
19 - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
20 - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
21 - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
22 - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
23 - OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
24 - PERFORMANCE OF THIS SOFTWARE.
23 + See the Apache Version 2.0 License for specific language governing permissions
24 + and limitations under the License.
25 25 ***************************************************************************** */
26 26 /* global Reflect, Promise */
27 27
28 28 var extendStatics = function(d, b) {
@@ -27,15 +27,13 @@
27 27
28 28 var extendStatics = function(d, b) {
29 29 extendStatics = Object.setPrototypeOf ||
30 30 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
31 - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
31 + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
32 32 return extendStatics(d, b);
33 33 };
34 34
35 35 function __extends(d, b) {
36 - if (typeof b !== "function" && b !== null)
37 - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
38 36 extendStatics(d, b);
39 37 function __() { this.constructor = d; }
40 38 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
41 39 }
@@ -51,13 +49,12 @@
51 49 return __assign.apply(this, arguments);
52 50 };
53 51
54 52 function __awaiter(thisArg, _arguments, P, generator) {
55 - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
56 53 return new (P || (P = Promise))(function (resolve, reject) {
57 54 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
58 55 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
59 - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
56 + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
60 57 step((generator = generator.apply(thisArg, _arguments || [])).next());
61 58 });
62 59 }
63 60
@@ -88,42 +85,25 @@
88 85 if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
89 86 }
90 87 }
91 88
92 - function __spreadArray(to, from, pack) {
93 - if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
94 - if (ar || !(i in from)) {
95 - if (!ar) ar = Array.prototype.slice.call(from, 0, i);
96 - ar[i] = from[i];
97 - }
98 - }
99 - return to.concat(ar || from);
100 - }
101 -
102 89 var Bounds = /** @class */ (function () {
103 - function Bounds(left, top, width, height) {
104 - this.left = left;
105 - this.top = top;
106 - this.width = width;
107 - this.height = height;
90 + function Bounds(x, y, w, h) {
91 + this.left = x;
92 + this.top = y;
93 + this.width = w;
94 + this.height = h;
108 95 }
109 96 Bounds.prototype.add = function (x, y, w, h) {
110 97 return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);
111 98 };
112 - Bounds.fromClientRect = function (context, clientRect) {
113 - return new Bounds(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height);
99 + Bounds.fromClientRect = function (clientRect) {
100 + return new Bounds(clientRect.left, clientRect.top, clientRect.width, clientRect.height);
114 101 };
115 - Bounds.fromDOMRectList = function (context, domRectList) {
116 - var domRect = Array.from(domRectList).find(function (rect) { return rect.width !== 0; });
117 - return domRect
118 - ? new Bounds(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height)
119 - : Bounds.EMPTY;
120 - };
121 - Bounds.EMPTY = new Bounds(0, 0, 0, 0);
122 102 return Bounds;
123 103 }());
124 - var parseBounds = function (context, node) {
125 - return Bounds.fromClientRect(context, node.getBoundingClientRect());
104 + var parseBounds = function (node) {
105 + return Bounds.fromClientRect(node.getBoundingClientRect());
126 106 };
127 107 var parseDocumentSize = function (document) {
128 108 var body = document.body;
129 109 var documentElement = document.documentElement;
@@ -135,13 +115,13 @@
135 115 return new Bounds(0, 0, width, height);
136 116 };
137 117
138 118 /*
139 - * css-line-break 2.1.0 <https://github.com/niklasvh/css-line-break#readme>
140 - * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
119 + * css-line-break 1.1.1 <https://github.com/niklasvh/css-line-break#readme>
120 + * Copyright (c) 2019 Niklas von Hertzen <https://hertzen.com>
141 121 * Released under MIT License
142 122 */
143 - var toCodePoints$1 = function (str) {
123 + var toCodePoints = function (str) {
144 124 var codePoints = [];
145 125 var i = 0;
146 126 var length = str.length;
147 127 while (i < length) {
@@ -161,9 +141,9 @@
161 141 }
162 142 }
163 143 return codePoints;
164 144 };
165 - var fromCodePoint$1 = function () {
145 + var fromCodePoint = function () {
166 146 var codePoints = [];
167 147 for (var _i = 0; _i < arguments.length; _i++) {
168 148 codePoints[_i] = arguments[_i];
169 149 }
@@ -183,9 +163,9 @@
183 163 codeUnits.push(codePoint);
184 164 }
185 165 else {
186 166 codePoint -= 0x10000;
187 - codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);
167 + codeUnits.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00);
188 168 }
189 169 if (index + 1 === length || codeUnits.length > 0x4000) {
190 170 result += String.fromCharCode.apply(String, codeUnits);
191 171 codeUnits.length = 0;
@@ -192,27 +172,15 @@
192 172 }
193 173 }
194 174 return result;
195 175 };
196 - var chars$2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
176 + var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
197 177 // Use a lookup table to find the index.
198 - var lookup$2 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
199 - for (var i$2 = 0; i$2 < chars$2.length; i$2++) {
200 - lookup$2[chars$2.charCodeAt(i$2)] = i$2;
178 + var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
179 + for (var i = 0; i < chars.length; i++) {
180 + lookup[chars.charCodeAt(i)] = i;
201 181 }
202 -
203 - /*
204 - * utrie 1.0.2 <https://github.com/niklasvh/utrie>
205 - * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
206 - * Released under MIT License
207 - */
208 - var chars$1$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
209 - // Use a lookup table to find the index.
210 - var lookup$1$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
211 - for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {
212 - lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1;
213 - }
214 - var decode$1 = function (base64) {
182 + var decode = function (base64) {
215 183 var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
216 184 if (base64[base64.length - 1] === '=') {
217 185 bufferLength--;
218 186 if (base64[base64.length - 2] === '=') {
@@ -219,18 +187,18 @@
219 187 bufferLength--;
220 188 }
221 189 }
222 190 var buffer = typeof ArrayBuffer !== 'undefined' &&
223 - typeof Uint8Array !== 'undefined' &&
224 - typeof Uint8Array.prototype.slice !== 'undefined'
191 + typeof Uint8Array !== 'undefined' &&
192 + typeof Uint8Array.prototype.slice !== 'undefined'
225 193 ? new ArrayBuffer(bufferLength)
226 194 : new Array(bufferLength);
227 195 var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
228 196 for (i = 0; i < len; i += 4) {
229 - encoded1 = lookup$1$1[base64.charCodeAt(i)];
230 - encoded2 = lookup$1$1[base64.charCodeAt(i + 1)];
231 - encoded3 = lookup$1$1[base64.charCodeAt(i + 2)];
232 - encoded4 = lookup$1$1[base64.charCodeAt(i + 3)];
197 + encoded1 = lookup[base64.charCodeAt(i)];
198 + encoded2 = lookup[base64.charCodeAt(i + 1)];
199 + encoded3 = lookup[base64.charCodeAt(i + 2)];
200 + encoded4 = lookup[base64.charCodeAt(i + 3)];
233 201 bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
234 202 bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
235 203 bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
236 204 }
@@ -235,9 +203,9 @@
235 203 bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
236 204 }
237 205 return buffer;
238 206 };
239 - var polyUint16Array$1 = function (buffer) {
207 + var polyUint16Array = function (buffer) {
240 208 var length = buffer.length;
241 209 var bytes = [];
242 210 for (var i = 0; i < length; i += 2) {
243 211 bytes.push((buffer[i + 1] << 8) | buffer[i]);
@@ -243,9 +211,9 @@
243 211 bytes.push((buffer[i + 1] << 8) | buffer[i]);
244 212 }
245 213 return bytes;
246 214 };
247 - var polyUint32Array$1 = function (buffer) {
215 + var polyUint32Array = function (buffer) {
248 216 var length = buffer.length;
249 217 var bytes = [];
250 218 for (var i = 0; i < length; i += 4) {
251 219 bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);
@@ -253,11 +221,11 @@
253 221 return bytes;
254 222 };
255 223
256 224 /** Shift size for getting the index-2 table offset. */
257 - var UTRIE2_SHIFT_2$1 = 5;
225 + var UTRIE2_SHIFT_2 = 5;
258 226 /** Shift size for getting the index-1 table offset. */
259 - var UTRIE2_SHIFT_1$1 = 6 + 5;
227 + var UTRIE2_SHIFT_1 = 6 + 5;
260 228 /**
261 229 * Shift size for shifting left the index array values.
262 230 * Increases possible data size with 16-bit index values at the cost
263 231 * of compactability.
@@ -262,14 +230,14 @@
262 230 * Increases possible data size with 16-bit index values at the cost
263 231 * of compactability.
264 232 * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.
265 233 */
266 - var UTRIE2_INDEX_SHIFT$1 = 2;
234 + var UTRIE2_INDEX_SHIFT = 2;
267 235 /**
268 236 * Difference between the two shift sizes,
269 237 * for getting an index-1 offset from an index-2 offset. 6=11-5
270 238 */
271 - var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;
239 + var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;
272 240 /**
273 241 * The part of the index-2 table for U+D800..U+DBFF stores values for
274 242 * lead surrogate code _units_ not code _points_.
275 243 * Values for lead surrogate code _points_ are indexed with this portion of the table.
@@ -274,22 +242,22 @@
274 242 * lead surrogate code _units_ not code _points_.
275 243 * Values for lead surrogate code _points_ are indexed with this portion of the table.
276 244 * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)
277 245 */
278 - var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 0x10000 >> UTRIE2_SHIFT_2$1;
246 + var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;
279 247 /** Number of entries in a data block. 32=0x20 */
280 - var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;
248 + var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;
281 249 /** Mask for getting the lower bits for the in-data-block offset. */
282 - var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;
283 - var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 0x400 >> UTRIE2_SHIFT_2$1;
250 + var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;
251 + var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;
284 252 /** Count the lengths of both BMP pieces. 2080=0x820 */
285 - var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;
253 + var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;
286 254 /**
287 255 * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.
288 256 * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.
289 257 */
290 - var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;
291 - var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */
258 + var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;
259 + var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */
292 260 /**
293 261 * The index-1 table, only used for supplementary code points, at offset 2112=0x840.
294 262 * Variable length, for code points up to highStart, where the last single-value range starts.
295 263 * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.
@@ -300,42 +268,42 @@
300 268 *
301 269 * Both the index-1 table and the following part of the index-2 table
302 270 * are omitted completely if there is only BMP data.
303 271 */
304 - var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;
272 + var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;
305 273 /**
306 274 * Number of index-1 entries for the BMP. 32=0x20
307 275 * This part of the index-1 table is omitted from the serialized form.
308 276 */
309 - var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 0x10000 >> UTRIE2_SHIFT_1$1;
277 + var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;
310 278 /** Number of entries in an index-2 block. 64=0x40 */
311 - var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;
279 + var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;
312 280 /** Mask for getting the lower bits for the in-index-2-block offset. */
313 - var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;
314 - var slice16$1 = function (view, start, end) {
281 + var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;
282 + var slice16 = function (view, start, end) {
315 283 if (view.slice) {
316 284 return view.slice(start, end);
317 285 }
318 286 return new Uint16Array(Array.prototype.slice.call(view, start, end));
319 287 };
320 - var slice32$1 = function (view, start, end) {
288 + var slice32 = function (view, start, end) {
321 289 if (view.slice) {
322 290 return view.slice(start, end);
323 291 }
324 292 return new Uint32Array(Array.prototype.slice.call(view, start, end));
325 293 };
326 - var createTrieFromBase64$1 = function (base64, _byteLength) {
327 - var buffer = decode$1(base64);
328 - var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer);
329 - var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer);
294 + var createTrieFromBase64 = function (base64) {
295 + var buffer = decode(base64);
296 + var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);
297 + var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);
330 298 var headerLength = 24;
331 - var index = slice16$1(view16, headerLength / 2, view32[4] / 2);
299 + var index = slice16(view16, headerLength / 2, view32[4] / 2);
332 300 var data = view32[5] === 2
333 - ? slice16$1(view16, (headerLength + view32[4]) / 2)
334 - : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));
335 - return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data);
301 + ? slice16(view16, (headerLength + view32[4]) / 2)
302 + : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));
303 + return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);
336 304 };
337 - var Trie$1 = /** @class */ (function () {
305 + var Trie = /** @class */ (function () {
338 306 function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {
339 307 this.initialValue = initialValue;
340 308 this.errorValue = errorValue;
341 309 this.highStart = highStart;
@@ -355,10 +323,10 @@
355 323 if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {
356 324 // Ordinary BMP code point, excluding leading surrogates.
357 325 // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.
358 326 // 16 bit data is stored in the index array itself.
359 - ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];
360 - ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
327 + ix = this.index[codePoint >> UTRIE2_SHIFT_2];
328 + ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
361 329 return this.data[ix];
362 330 }
363 331 if (codePoint <= 0xffff) {
364 332 // Lead Surrogate Code Point. A Separate index section is stored for
@@ -366,19 +334,19 @@
366 334 // The main index has the code unit data.
367 335 // For this function, we need the code point data.
368 336 // Note: this expression could be refactored for slightly improved efficiency, but
369 337 // surrogate code points will be so rare in practice that it's not worth it.
370 - ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2$1)];
371 - ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
338 + ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];
339 + ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
372 340 return this.data[ix];
373 341 }
374 342 if (codePoint < this.highStart) {
375 343 // Supplemental code point, use two-level lookup.
376 - ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1);
344 + ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);
377 345 ix = this.index[ix];
378 - ix += (codePoint >> UTRIE2_SHIFT_2$1) & UTRIE2_INDEX_2_MASK$1;
346 + ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;
379 347 ix = this.index[ix];
380 - ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
348 + ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
381 349 return this.data[ix];
382 350 }
383 351 if (codePoint <= 0x10ffff) {
384 352 return this.data[this.highValueIndex];
@@ -389,27 +357,16 @@
389 357 };
390 358 return Trie;
391 359 }());
392 360
393 - /*
394 - * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>
395 - * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
396 - * Released under MIT License
397 - */
398 - var chars$3 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
399 - // Use a lookup table to find the index.
400 - var lookup$3 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
401 - for (var i$3 = 0; i$3 < chars$3.length; i$3++) {
402 - lookup$3[chars$3.charCodeAt(i$3)] = i$3;
403 - }
361 + var base64 = 'KwAAAAAAAAAACA4AIDoAAPAfAAACAAAAAAAIABAAGABAAEgAUABYAF4AZgBeAGYAYABoAHAAeABeAGYAfACEAIAAiACQAJgAoACoAK0AtQC9AMUAXgBmAF4AZgBeAGYAzQDVAF4AZgDRANkA3gDmAOwA9AD8AAQBDAEUARoBIgGAAIgAJwEvATcBPwFFAU0BTAFUAVwBZAFsAXMBewGDATAAiwGTAZsBogGkAawBtAG8AcIBygHSAdoB4AHoAfAB+AH+AQYCDgIWAv4BHgImAi4CNgI+AkUCTQJTAlsCYwJrAnECeQKBAk0CiQKRApkCoQKoArACuALAAsQCzAIwANQC3ALkAjAA7AL0AvwCAQMJAxADGAMwACADJgMuAzYDPgOAAEYDSgNSA1IDUgNaA1oDYANiA2IDgACAAGoDgAByA3YDfgOAAIQDgACKA5IDmgOAAIAAogOqA4AAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAK8DtwOAAIAAvwPHA88D1wPfAyAD5wPsA/QD/AOAAIAABAQMBBIEgAAWBB4EJgQuBDMEIAM7BEEEXgBJBCADUQRZBGEEaQQwADAAcQQ+AXkEgQSJBJEEgACYBIAAoASoBK8EtwQwAL8ExQSAAIAAgACAAIAAgACgAM0EXgBeAF4AXgBeAF4AXgBeANUEXgDZBOEEXgDpBPEE+QQBBQkFEQUZBSEFKQUxBTUFPQVFBUwFVAVcBV4AYwVeAGsFcwV7BYMFiwWSBV4AmgWgBacFXgBeAF4AXgBeAKsFXgCyBbEFugW7BcIFwgXIBcIFwgXQBdQF3AXkBesF8wX7BQMGCwYTBhsGIwYrBjMGOwZeAD8GRwZNBl4AVAZbBl4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAGMGXgBqBnEGXgBeAF4AXgBeAF4AXgBeAF4AXgB5BoAG4wSGBo4GkwaAAIADHgR5AF4AXgBeAJsGgABGA4AAowarBrMGswagALsGwwbLBjAA0wbaBtoG3QbaBtoG2gbaBtoG2gblBusG8wb7BgMHCwcTBxsHCwcjBysHMAc1BzUHOgdCB9oGSgdSB1oHYAfaBloHaAfaBlIH2gbaBtoG2gbaBtoG2gbaBjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHbQdeAF4ANQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQd1B30HNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B4MH2gaKB68EgACAAIAAgACAAIAAgACAAI8HlwdeAJ8HpweAAIAArwe3B14AXgC/B8UHygcwANAH2AfgB4AA6AfwBz4B+AcACFwBCAgPCBcIogEYAR8IJwiAAC8INwg/CCADRwhPCFcIXwhnCEoDGgSAAIAAgABvCHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIhAiLCI4IMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQc1BzUHNQc1BzUHNQc1BzUHNQc1B54INQc1B6II2gaqCLIIugiAAIAAvgjGCIAAgACAAIAAgACAAIAAgACAAIAAywiHAYAA0wiAANkI3QjlCO0I9Aj8CIAAgACAAAIJCgkSCRoJIgknCTYHLwk3CZYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiAAIAAAAFAAXgBeAGAAcABeAHwAQACQAKAArQC9AJ4AXgBeAE0A3gBRAN4A7AD8AMwBGgEAAKcBNwEFAUwBXAF4QkhCmEKnArcCgAHHAsABz4LAAcABwAHAAd+C6ABoAG+C/4LAAcABwAHAAc+DF4MAAcAB54M3gweDV4Nng3eDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEeDqABVg6WDqABoQ6gAaABoAHXDvcONw/3DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DncPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB7cPPwlGCU4JMACAAIAAgABWCV4JYQmAAGkJcAl4CXwJgAkwADAAMAAwAIgJgACLCZMJgACZCZ8JowmrCYAAswkwAF4AXgB8AIAAuwkABMMJyQmAAM4JgADVCTAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAqwYWBNkIMAAwADAAMADdCeAJ6AnuCR4E9gkwAP4JBQoNCjAAMACAABUK0wiAAB0KJAosCjQKgAAwADwKQwqAAEsKvQmdCVMKWwowADAAgACAALcEMACAAGMKgABrCjAAMAAwADAAMAAwADAAMAAwADAAMAAeBDAAMAAwADAAMAAwADAAMAAwADAAMAAwAIkEPQFzCnoKiQSCCooKkAqJBJgKoAqkCokEGAGsCrQKvArBCjAAMADJCtEKFQHZCuEK/gHpCvEKMAAwADAAMACAAIwE+QowAIAAPwEBCzAAMAAwADAAMACAAAkLEQswAIAAPwEZCyELgAAOCCkLMAAxCzkLMAAwADAAMAAwADAAXgBeAEELMAAwADAAMAAwADAAMAAwAEkLTQtVC4AAXAtkC4AAiQkwADAAMAAwADAAMAAwADAAbAtxC3kLgAuFC4sLMAAwAJMLlwufCzAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAApwswADAAMACAAIAAgACvC4AAgACAAIAAgACAALcLMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAvwuAAMcLgACAAIAAgACAAIAAyguAAIAAgACAAIAA0QswADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAANkLgACAAIAA4AswADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACJCR4E6AswADAAhwHwC4AA+AsADAgMEAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACAAIAAGAwdDCUMMAAwAC0MNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQw1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHPQwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADUHNQc1BzUHNQc1BzUHNQc2BzAAMAA5DDUHNQc1BzUHNQc1BzUHNQc1BzUHNQdFDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAATQxSDFoMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAF4AXgBeAF4AXgBeAF4AYgxeAGoMXgBxDHkMfwxeAIUMXgBeAI0MMAAwADAAMAAwAF4AXgCVDJ0MMAAwADAAMABeAF4ApQxeAKsMswy7DF4Awgy9DMoMXgBeAF4AXgBeAF4AXgBeAF4AXgDRDNkMeQBqCeAM3Ax8AOYM7Az0DPgMXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgCgAAANoAAHDQ4NFg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAeDSYNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAC4NMABeAF4ANg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAD4NRg1ODVYNXg1mDTAAbQ0wADAAMAAwADAAMAAwADAA2gbaBtoG2gbaBtoG2gbaBnUNeg3CBYANwgWFDdoGjA3aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gaUDZwNpA2oDdoG2gawDbcNvw3HDdoG2gbPDdYN3A3fDeYN2gbsDfMN2gbaBvoN/g3aBgYODg7aBl4AXgBeABYOXgBeACUG2gYeDl4AJA5eACwO2w3aBtoGMQ45DtoG2gbaBtoGQQ7aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B1EO2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQdZDjUHNQc1BzUHNQc1B2EONQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHaA41BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B3AO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B2EO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBkkOeA6gAKAAoAAwADAAMAAwAKAAoACgAKAAoACgAKAAgA4wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAD//wQABAAEAAQABAAEAAQABAAEAA0AAwABAAEAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAKABMAFwAeABsAGgAeABcAFgASAB4AGwAYAA8AGAAcAEsASwBLAEsASwBLAEsASwBLAEsAGAAYAB4AHgAeABMAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAFgAbABIAHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYADQARAB4ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkAFgAaABsAGwAbAB4AHQAdAB4ATwAXAB4ADQAeAB4AGgAbAE8ATwAOAFAAHQAdAB0ATwBPABcATwBPAE8AFgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwArAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAAQABAANAA0ASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAUAArACsAKwArACsAKwArACsABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAGgAaAFAAUABQAFAAUABMAB4AGwBQAB4AKwArACsABAAEAAQAKwBQAFAAUABQAFAAUAArACsAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUAArAFAAUAArACsABAArAAQABAAEAAQABAArACsAKwArAAQABAArACsABAAEAAQAKwArACsABAArACsAKwArACsAKwArAFAAUABQAFAAKwBQACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwAEAAQAUABQAFAABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQAKwArAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeABsAKwArACsAKwArACsAKwBQAAQABAAEAAQABAAEACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAKwArACsAKwArACsAKwArAAQABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwAEAFAAKwBQAFAAUABQAFAAUAArACsAKwBQAFAAUAArAFAAUABQAFAAKwArACsAUABQACsAUAArAFAAUAArACsAKwBQAFAAKwArACsAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQAKwArACsABAAEAAQAKwAEAAQABAAEACsAKwBQACsAKwArACsAKwArAAQAKwArACsAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAB4AHgAeAB4AHgAeABsAHgArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArAFAAUABQACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAB4AUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArACsAKwArACsAKwArAFAAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwArAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAKwBcAFwAKwBcACsAKwBcACsAKwArACsAKwArAFwAXABcAFwAKwBcAFwAXABcAFwAXABcACsAXABcAFwAKwBcACsAXAArACsAXABcACsAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgArACoAKgBcACsAKwBcAFwAXABcAFwAKwBcACsAKgAqACoAKgAqACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAFwAXABcAFwAUAAOAA4ADgAOAB4ADgAOAAkADgAOAA0ACQATABMAEwATABMACQAeABMAHgAeAB4ABAAEAB4AHgAeAB4AHgAeAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUAANAAQAHgAEAB4ABAAWABEAFgARAAQABABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAAQABAAEAAQABAANAAQABABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsADQANAB4AHgAeAB4AHgAeAAQAHgAeAB4AHgAeAB4AKwAeAB4ADgAOAA0ADgAeAB4AHgAeAB4ACQAJACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgAeAB4AHgBcAFwAXABcAFwAXAAqACoAKgAqAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAKgAqACoAKgAqACoAKgBcAFwAXAAqACoAKgAqAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAXAAqAEsASwBLAEsASwBLAEsASwBLAEsAKgAqACoAKgAqACoAUABQAFAAUABQAFAAKwBQACsAKwArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQACsAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwAEAAQABAAeAA0AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAEQArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAADQANAA0AUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAA0ADQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoADQANABUAXAANAB4ADQAbAFwAKgArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAB4AHgATABMADQANAA4AHgATABMAHgAEAAQABAAJACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAUABQAFAAUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwAeACsAKwArABMAEwBLAEsASwBLAEsASwBLAEsASwBLAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwBcAFwAXABcAFwAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcACsAKwArACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwAeAB4AXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsABABLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKgAqACoAKgAqACoAKgBcACoAKgAqACoAKgAqACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAUABQAFAAUABQAFAAUAArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4ADQANAA0ADQAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAHgAeAB4AHgBQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwANAA0ADQANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwBQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsABAAEAAQAHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAABABQAFAAUABQAAQABAAEAFAAUAAEAAQABAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAKwBQACsAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAKwArAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAKwAeAB4AHgAeAB4AHgAeAA4AHgArAA0ADQANAA0ADQANAA0ACQANAA0ADQAIAAQACwAEAAQADQAJAA0ADQAMAB0AHQAeABcAFwAWABcAFwAXABYAFwAdAB0AHgAeABQAFAAUAA0AAQABAAQABAAEAAQABAAJABoAGgAaABoAGgAaABoAGgAeABcAFwAdABUAFQAeAB4AHgAeAB4AHgAYABYAEQAVABUAFQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgANAB4ADQANAA0ADQAeAA0ADQANAAcAHgAeAB4AHgArAAQABAAEAAQABAAEAAQABAAEAAQAUABQACsAKwBPAFAAUABQAFAAUAAeAB4AHgAWABEATwBQAE8ATwBPAE8AUABQAFAAUABQAB4AHgAeABYAEQArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGgAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgBQABoAHgAdAB4AUAAeABoAHgAeAB4AHgAeAB4AHgAeAB4ATwAeAFAAGwAeAB4AUABQAFAAUABQAB4AHgAeAB0AHQAeAFAAHgBQAB4AUAAeAFAATwBQAFAAHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AUABQAFAAUABPAE8AUABQAFAAUABQAE8AUABQAE8AUABPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAE8ATwBPAE8ATwBPAE8ATwBPAE8AUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAATwAeAB4AKwArACsAKwAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB0AHQAeAB4AHgAdAB0AHgAeAB0AHgAeAB4AHQAeAB0AGwAbAB4AHQAeAB4AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB0AHgAdAB4AHQAdAB0AHQAdAB0AHgAdAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAdAB0AHQAdAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAlACUAHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB0AHQAeAB4AHgAeAB0AHQAdAB4AHgAdAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB0AHQAeAB4AHQAeAB4AHgAeAB0AHQAeAB4AHgAeACUAJQAdAB0AJQAeACUAJQAlACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHQAdAB0AHgAdACUAHQAdAB4AHQAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHQAdAB0AHQAlAB4AJQAlACUAHQAlACUAHQAdAB0AJQAlAB0AHQAlAB0AHQAlACUAJQAeAB0AHgAeAB4AHgAdAB0AJQAdAB0AHQAdAB0AHQAlACUAJQAlACUAHQAlACUAIAAlAB0AHQAlACUAJQAlACUAJQAlACUAHgAeAB4AJQAlACAAIAAgACAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeABcAFwAXABcAFwAXAB4AEwATACUAHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACUAJQBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwArACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAE8ATwBPAE8ATwBPAE8ATwAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeACsAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUAArACsAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQBQAFAAUABQACsAKwArACsAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAABAAEAAQAKwAEAAQAKwArACsAKwArAAQABAAEAAQAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsABAAEAAQAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsADQANAA0ADQANAA0ADQANAB4AKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAUABQAFAAUABQAA0ADQANAA0ADQANABQAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwANAA0ADQANAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAeAAQABAAEAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLACsADQArAB4AKwArAAQABAAEAAQAUABQAB4AUAArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwAEAAQABAAEAAQABAAEAAQABAAOAA0ADQATABMAHgAeAB4ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0AUABQAFAAUAAEAAQAKwArAAQADQANAB4AUAArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXABcAA0ADQANACoASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUAArACsAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANACsADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEcARwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwAeAAQABAANAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAEAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUAArACsAUAArACsAUABQACsAKwBQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAeAB4ADQANAA0ADQAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAArAAQABAArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAEAAQABAAEAAQABAAEACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAFgAWAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAKwBQACsAKwArACsAKwArAFAAKwArACsAKwBQACsAUAArAFAAKwBQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQACsAUAArAFAAKwBQACsAUABQACsAUAArACsAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAUABQAFAAUAArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUAArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAlACUAJQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeACUAJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeACUAJQAlACUAJQAeACUAJQAlACUAJQAgACAAIAAlACUAIAAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIQAhACEAIQAhACUAJQAgACAAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAIAAlACUAJQAlACAAJQAgACAAIAAgACAAIAAgACAAIAAlACUAJQAgACUAJQAlACUAIAAgACAAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeACUAHgAlAB4AJQAlACUAJQAlACAAJQAlACUAJQAeACUAHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAIAAgACAAIAAgAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFwAXABcAFQAVABUAHgAeAB4AHgAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAlACAAIAAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsA';
404 362
405 - var base64$1 = 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';
406 -
363 + /* @flow */
407 364 var LETTER_NUMBER_MODIFIER = 50;
408 365 // Non-tailorable Line Breaking Classes
409 366 var BK = 1; // Cause a line break (after)
410 - var CR$1 = 2; // Cause a line break (after), except between CR and LF
411 - var LF$1 = 3; // Cause a line break (after)
367 + var CR = 2; // Cause a line break (after), except between CR and LF
368 + var LF = 3; // Cause a line break (after)
412 369 var CM = 4; // Prohibit a line break between the character and the preceding character
413 370 var NL = 5; // Cause a line break (after)
414 371 var WJ = 7; // Prohibit line breaks before and after
415 372 var ZW = 8; // Provide a break opportunity
@@ -414,9 +371,9 @@
414 371 var WJ = 7; // Prohibit line breaks before and after
415 372 var ZW = 8; // Provide a break opportunity
416 373 var GL = 9; // Prohibit line breaks before and after
417 374 var SP = 10; // Enable indirect line breaks
418 - var ZWJ$1 = 11; // Prohibit line breaks within joiner sequences
375 + var ZWJ = 11; // Prohibit line breaks within joiner sequences
419 376 // Break Opportunities
420 377 var B2 = 12; // Provide a line break opportunity before and after the character
421 378 var BA = 13; // Generally provide a line break opportunity after the character
422 379 var BB = 14; // Generally provide a line break opportunity before the character
@@ -448,30 +405,29 @@
448 405 var ID = 37; // Break before or after; except in some numeric context
449 406 var JL = 38; // Form Korean syllable blocks
450 407 var JV = 39; // Form Korean syllable blocks
451 408 var JT = 40; // Form Korean syllable blocks
452 - var RI$1 = 41; // Keep pairs together. For pairs; break before and after other classes
409 + var RI = 41; // Keep pairs together. For pairs; break before and after other classes
453 410 var SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis
454 411 var XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions
455 - var ea_OP = [0x2329, 0xff08];
456 412 var BREAK_MANDATORY = '!';
457 - var BREAK_NOT_ALLOWED$1 = '×';
458 - var BREAK_ALLOWED$1 = '÷';
459 - var UnicodeTrie$1 = createTrieFromBase64$1(base64$1);
413 + var BREAK_NOT_ALLOWED = '×';
414 + var BREAK_ALLOWED = '÷';
415 + var UnicodeTrie = createTrieFromBase64(base64);
460 416 var ALPHABETICS = [AL, HL];
461 - var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];
462 - var SPACE$1 = [SP, ZW];
417 + var HARD_LINE_BREAKS = [BK, CR, LF, NL];
418 + var SPACE = [SP, ZW];
463 419 var PREFIX_POSTFIX = [PR, PO];
464 - var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);
420 + var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);
465 421 var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];
466 422 var HYPHEN = [HY, BA];
467 423 var codePointsToCharacterClasses = function (codePoints, lineBreak) {
468 424 if (lineBreak === void 0) { lineBreak = 'strict'; }
469 425 var types = [];
470 - var indices = [];
426 + var indicies = [];
471 427 var categories = [];
472 428 codePoints.forEach(function (codePoint, index) {
473 - var classType = UnicodeTrie$1.get(codePoint);
429 + var classType = UnicodeTrie.get(codePoint);
474 430 if (classType > LETTER_NUMBER_MODIFIER) {
475 431 categories.push(true);
476 432 classType -= LETTER_NUMBER_MODIFIER;
477 433 }
@@ -480,16 +436,16 @@
480 436 }
481 437 if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {
482 438 // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0
483 439 if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {
484 - indices.push(index);
440 + indicies.push(index);
485 441 return types.push(CB);
486 442 }
487 443 }
488 - if (classType === CM || classType === ZWJ$1) {
444 + if (classType === CM || classType === ZWJ) {
489 445 // LB10 Treat any remaining combining mark or ZWJ as AL.
490 446 if (index === 0) {
491 - indices.push(index);
447 + indicies.push(index);
492 448 return types.push(AL);
493 449 }
494 450 // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of
495 451 // the base character in all of the following rules. Treat ZWJ as if it were CM.
@@ -494,15 +450,15 @@
494 450 // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of
495 451 // the base character in all of the following rules. Treat ZWJ as if it were CM.
496 452 var prev = types[index - 1];
497 453 if (LINE_BREAKS.indexOf(prev) === -1) {
498 - indices.push(indices[index - 1]);
454 + indicies.push(indicies[index - 1]);
499 455 return types.push(prev);
500 456 }
501 - indices.push(index);
457 + indicies.push(index);
502 458 return types.push(AL);
503 459 }
504 - indices.push(index);
460 + indicies.push(index);
505 461 if (classType === CJ) {
506 462 return types.push(lineBreak === 'strict' ? NS : ID);
507 463 }
508 464 if (classType === SA) {
@@ -523,9 +479,9 @@
523 479 }
524 480 }
525 481 types.push(classType);
526 482 });
527 - return [indices, types, categories];
483 + return [indicies, types, categories];
528 484 };
529 485 var isAdjacentWithSpaceIgnored = function (a, b, currentIndex, classTypes) {
530 486 var current = classTypes[currentIndex];
531 487 if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {
@@ -580,13 +536,13 @@
580 536 return 0;
581 537 };
582 538 var _lineBreakAtIndex = function (codePoints, classTypes, indicies, index, forbiddenBreaks) {
583 539 if (indicies[index] === 0) {
584 - return BREAK_NOT_ALLOWED$1;
540 + return BREAK_NOT_ALLOWED;
585 541 }
586 542 var currentIndex = index - 1;
587 543 if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {
588 - return BREAK_NOT_ALLOWED$1;
544 + return BREAK_NOT_ALLOWED;
589 545 }
590 546 var beforeIndex = currentIndex - 1;
591 547 var afterIndex = currentIndex + 1;
592 548 var current = classTypes[currentIndex];
@@ -593,10 +549,10 @@
593 549 // LB4 Always break after hard line breaks.
594 550 // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.
595 551 var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;
596 552 var next = classTypes[afterIndex];
597 - if (current === CR$1 && next === LF$1) {
598 - return BREAK_NOT_ALLOWED$1;
553 + if (current === CR && next === LF) {
554 + return BREAK_NOT_ALLOWED;
599 555 }
600 556 if (HARD_LINE_BREAKS.indexOf(current) !== -1) {
601 557 return BREAK_MANDATORY;
602 558 }
@@ -601,110 +557,106 @@
601 557 return BREAK_MANDATORY;
602 558 }
603 559 // LB6 Do not break before hard line breaks.
604 560 if (HARD_LINE_BREAKS.indexOf(next) !== -1) {
605 - return BREAK_NOT_ALLOWED$1;
561 + return BREAK_NOT_ALLOWED;
606 562 }
607 563 // LB7 Do not break before spaces or zero width space.
608 - if (SPACE$1.indexOf(next) !== -1) {
609 - return BREAK_NOT_ALLOWED$1;
564 + if (SPACE.indexOf(next) !== -1) {
565 + return BREAK_NOT_ALLOWED;
610 566 }
611 567 // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.
612 568 if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {
613 - return BREAK_ALLOWED$1;
569 + return BREAK_ALLOWED;
614 570 }
615 - // LB8a Do not break after a zero width joiner.
616 - if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {
617 - return BREAK_NOT_ALLOWED$1;
571 + // LB8a Do not break between a zero width joiner and an ideograph, emoji base or emoji modifier.
572 + if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ && (next === ID || next === EB || next === EM)) {
573 + return BREAK_NOT_ALLOWED;
618 574 }
619 - // zwj emojis
620 - if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) {
621 - return BREAK_NOT_ALLOWED$1;
622 - }
623 575 // LB11 Do not break before or after Word joiner and related characters.
624 576 if (current === WJ || next === WJ) {
625 - return BREAK_NOT_ALLOWED$1;
577 + return BREAK_NOT_ALLOWED;
626 578 }
627 579 // LB12 Do not break after NBSP and related characters.
628 580 if (current === GL) {
629 - return BREAK_NOT_ALLOWED$1;
581 + return BREAK_NOT_ALLOWED;
630 582 }
631 583 // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.
632 584 if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {
633 - return BREAK_NOT_ALLOWED$1;
585 + return BREAK_NOT_ALLOWED;
634 586 }
635 587 // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.
636 588 if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {
637 - return BREAK_NOT_ALLOWED$1;
589 + return BREAK_NOT_ALLOWED;
638 590 }
639 591 // LB14 Do not break after ‘[’, even after spaces.
640 592 if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {
641 - return BREAK_NOT_ALLOWED$1;
593 + return BREAK_NOT_ALLOWED;
642 594 }
643 595 // LB15 Do not break within ‘”[’, even with intervening spaces.
644 596 if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {
645 - return BREAK_NOT_ALLOWED$1;
597 + return BREAK_NOT_ALLOWED;
646 598 }
647 599 // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.
648 600 if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {
649 - return BREAK_NOT_ALLOWED$1;
601 + return BREAK_NOT_ALLOWED;
650 602 }
651 603 // LB17 Do not break within ‘——’, even with intervening spaces.
652 604 if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {
653 - return BREAK_NOT_ALLOWED$1;
605 + return BREAK_NOT_ALLOWED;
654 606 }
655 607 // LB18 Break after spaces.
656 608 if (current === SP) {
657 - return BREAK_ALLOWED$1;
609 + return BREAK_ALLOWED;
658 610 }
659 611 // LB19 Do not break before or after quotation marks, such as ‘ ” ’.
660 612 if (current === QU || next === QU) {
661 - return BREAK_NOT_ALLOWED$1;
613 + return BREAK_NOT_ALLOWED;
662 614 }
663 615 // LB20 Break before and after unresolved CB.
664 616 if (next === CB || current === CB) {
665 - return BREAK_ALLOWED$1;
617 + return BREAK_ALLOWED;
666 618 }
667 619 // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.
668 620 if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {
669 - return BREAK_NOT_ALLOWED$1;
621 + return BREAK_NOT_ALLOWED;
670 622 }
671 623 // LB21a Don't break after Hebrew + Hyphen.
672 624 if (before === HL && HYPHEN.indexOf(current) !== -1) {
673 - return BREAK_NOT_ALLOWED$1;
625 + return BREAK_NOT_ALLOWED;
674 626 }
675 627 // LB21b Don’t break between Solidus and Hebrew letters.
676 628 if (current === SY && next === HL) {
677 - return BREAK_NOT_ALLOWED$1;
629 + return BREAK_NOT_ALLOWED;
678 630 }
679 - // LB22 Do not break before ellipsis.
680 - if (next === IN) {
681 - return BREAK_NOT_ALLOWED$1;
631 + // LB22 Do not break between two ellipses, or between letters, numbers or exclamations and ellipsis.
632 + if (next === IN && ALPHABETICS.concat(IN, EX, NU, ID, EB, EM).indexOf(current) !== -1) {
633 + return BREAK_NOT_ALLOWED;
682 634 }
683 635 // LB23 Do not break between digits and letters.
684 636 if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {
685 - return BREAK_NOT_ALLOWED$1;
637 + return BREAK_NOT_ALLOWED;
686 638 }
687 639 // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.
688 640 if ((current === PR && [ID, EB, EM].indexOf(next) !== -1) ||
689 641 ([ID, EB, EM].indexOf(current) !== -1 && next === PO)) {
690 - return BREAK_NOT_ALLOWED$1;
642 + return BREAK_NOT_ALLOWED;
691 643 }
692 644 // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.
693 645 if ((ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||
694 646 (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)) {
695 - return BREAK_NOT_ALLOWED$1;
647 + return BREAK_NOT_ALLOWED;
696 648 }
697 649 // LB25 Do not break between the following pairs of classes relevant to numbers:
698 650 if (
699 - // (PR | PO) × ( OP | HY )? NU
700 - ([PR, PO].indexOf(current) !== -1 &&
701 - (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||
651 + // (PR | PO) × ( OP | HY )? NU
652 + ([PR, PO].indexOf(current) !== -1 &&
653 + (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||
702 654 // ( OP | HY ) × NU
703 655 ([OP, HY].indexOf(current) !== -1 && next === NU) ||
704 656 // NU × (NU | SY | IS)
705 657 (current === NU && [NU, SY, IS].indexOf(next) !== -1)) {
706 - return BREAK_NOT_ALLOWED$1;
658 + return BREAK_NOT_ALLOWED;
707 659 }
708 660 // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)
709 661 if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {
710 662 var prevIndex = currentIndex;
@@ -710,9 +662,9 @@
710 662 var prevIndex = currentIndex;
711 663 while (prevIndex >= 0) {
712 664 var type = classTypes[prevIndex];
713 665 if (type === NU) {
714 - return BREAK_NOT_ALLOWED$1;
666 + return BREAK_NOT_ALLOWED;
715 667 }
716 668 else if ([SY, IS].indexOf(type) !== -1) {
717 669 prevIndex--;
718 670 }
@@ -726,9 +678,9 @@
726 678 var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;
727 679 while (prevIndex >= 0) {
728 680 var type = classTypes[prevIndex];
729 681 if (type === NU) {
730 - return BREAK_NOT_ALLOWED$1;
682 + return BREAK_NOT_ALLOWED;
731 683 }
732 684 else if ([SY, IS].indexOf(type) !== -1) {
733 685 prevIndex--;
734 686 }
@@ -740,38 +692,36 @@
740 692 // LB26 Do not break a Korean syllable.
741 693 if ((JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||
742 694 ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||
743 695 ([JT, H3].indexOf(current) !== -1 && next === JT)) {
744 - return BREAK_NOT_ALLOWED$1;
696 + return BREAK_NOT_ALLOWED;
745 697 }
746 698 // LB27 Treat a Korean Syllable Block the same as ID.
747 699 if ((KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||
748 700 (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)) {
749 - return BREAK_NOT_ALLOWED$1;
701 + return BREAK_NOT_ALLOWED;
750 702 }
751 703 // LB28 Do not break between alphabetics (“at”).
752 704 if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
753 - return BREAK_NOT_ALLOWED$1;
705 + return BREAK_NOT_ALLOWED;
754 706 }
755 707 // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).
756 708 if (current === IS && ALPHABETICS.indexOf(next) !== -1) {
757 - return BREAK_NOT_ALLOWED$1;
709 + return BREAK_NOT_ALLOWED;
758 710 }
759 711 // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.
760 - if ((ALPHABETICS.concat(NU).indexOf(current) !== -1 &&
761 - next === OP &&
762 - ea_OP.indexOf(codePoints[afterIndex]) === -1) ||
712 + if ((ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP) ||
763 713 (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)) {
764 - return BREAK_NOT_ALLOWED$1;
714 + return BREAK_NOT_ALLOWED;
765 715 }
766 716 // LB30a Break between two regional indicator symbols if and only if there are an even number of regional
767 717 // indicators preceding the position of the break.
768 - if (current === RI$1 && next === RI$1) {
718 + if (current === RI && next === RI) {
769 719 var i = indicies[currentIndex];
770 720 var count = 1;
771 721 while (i > 0) {
772 722 i--;
773 - if (classTypes[i] === RI$1) {
723 + if (classTypes[i] === RI) {
774 724 count++;
775 725 }
776 726 else {
777 727 break;
@@ -777,16 +727,16 @@
777 727 break;
778 728 }
779 729 }
780 730 if (count % 2 !== 0) {
781 - return BREAK_NOT_ALLOWED$1;
731 + return BREAK_NOT_ALLOWED;
782 732 }
783 733 }
784 734 // LB30b Do not break between an emoji base and an emoji modifier.
785 735 if (current === EB && next === EM) {
786 - return BREAK_NOT_ALLOWED$1;
736 + return BREAK_NOT_ALLOWED;
787 737 }
788 - return BREAK_ALLOWED$1;
738 + return BREAK_ALLOWED;
789 739 };
790 740 var cssFormattedClasses = function (codePoints, options) {
791 741 if (!options) {
792 742 options = { lineBreak: 'normal', wordBreak: 'normal' };
@@ -809,14 +759,14 @@
809 759 this.start = start;
810 760 this.end = end;
811 761 }
812 762 Break.prototype.slice = function () {
813 - return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end));
763 + return fromCodePoint.apply(void 0, this.codePoints.slice(this.start, this.end));
814 764 };
815 765 return Break;
816 766 }());
817 767 var LineBreaker = function (str, options) {
818 - var codePoints = toCodePoints$1(str);
768 + var codePoints = toCodePoints(str);
819 769 var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2];
820 770 var length = codePoints.length;
821 771 var lastEnd = 0;
822 772 var nextIndex = 0;
@@ -824,13 +774,13 @@
824 774 next: function () {
825 775 if (nextIndex >= length) {
826 776 return { done: true, value: null };
827 777 }
828 - var lineBreak = BREAK_NOT_ALLOWED$1;
778 + var lineBreak = BREAK_NOT_ALLOWED;
829 779 while (nextIndex < length &&
830 - (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===
831 - BREAK_NOT_ALLOWED$1) { }
832 - if (lineBreak !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {
780 + (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===
781 + BREAK_NOT_ALLOWED) { }
782 + if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {
833 783 var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);
834 784 lastEnd = nextIndex;
835 785 return { value: value, done: false };
836 786 }
@@ -839,8 +789,44 @@
839 789 };
840 790 };
841 791
842 792 // https://www.w3.org/TR/css-syntax-3
793 + var TokenType;
794 + (function (TokenType) {
795 + TokenType[TokenType["STRING_TOKEN"] = 0] = "STRING_TOKEN";
796 + TokenType[TokenType["BAD_STRING_TOKEN"] = 1] = "BAD_STRING_TOKEN";
797 + TokenType[TokenType["LEFT_PARENTHESIS_TOKEN"] = 2] = "LEFT_PARENTHESIS_TOKEN";
798 + TokenType[TokenType["RIGHT_PARENTHESIS_TOKEN"] = 3] = "RIGHT_PARENTHESIS_TOKEN";
799 + TokenType[TokenType["COMMA_TOKEN"] = 4] = "COMMA_TOKEN";
800 + TokenType[TokenType["HASH_TOKEN"] = 5] = "HASH_TOKEN";
801 + TokenType[TokenType["DELIM_TOKEN"] = 6] = "DELIM_TOKEN";
802 + TokenType[TokenType["AT_KEYWORD_TOKEN"] = 7] = "AT_KEYWORD_TOKEN";
803 + TokenType[TokenType["PREFIX_MATCH_TOKEN"] = 8] = "PREFIX_MATCH_TOKEN";
804 + TokenType[TokenType["DASH_MATCH_TOKEN"] = 9] = "DASH_MATCH_TOKEN";
805 + TokenType[TokenType["INCLUDE_MATCH_TOKEN"] = 10] = "INCLUDE_MATCH_TOKEN";
806 + TokenType[TokenType["LEFT_CURLY_BRACKET_TOKEN"] = 11] = "LEFT_CURLY_BRACKET_TOKEN";
807 + TokenType[TokenType["RIGHT_CURLY_BRACKET_TOKEN"] = 12] = "RIGHT_CURLY_BRACKET_TOKEN";
808 + TokenType[TokenType["SUFFIX_MATCH_TOKEN"] = 13] = "SUFFIX_MATCH_TOKEN";
809 + TokenType[TokenType["SUBSTRING_MATCH_TOKEN"] = 14] = "SUBSTRING_MATCH_TOKEN";
810 + TokenType[TokenType["DIMENSION_TOKEN"] = 15] = "DIMENSION_TOKEN";
811 + TokenType[TokenType["PERCENTAGE_TOKEN"] = 16] = "PERCENTAGE_TOKEN";
812 + TokenType[TokenType["NUMBER_TOKEN"] = 17] = "NUMBER_TOKEN";
813 + TokenType[TokenType["FUNCTION"] = 18] = "FUNCTION";
814 + TokenType[TokenType["FUNCTION_TOKEN"] = 19] = "FUNCTION_TOKEN";
815 + TokenType[TokenType["IDENT_TOKEN"] = 20] = "IDENT_TOKEN";
816 + TokenType[TokenType["COLUMN_TOKEN"] = 21] = "COLUMN_TOKEN";
817 + TokenType[TokenType["URL_TOKEN"] = 22] = "URL_TOKEN";
818 + TokenType[TokenType["BAD_URL_TOKEN"] = 23] = "BAD_URL_TOKEN";
819 + TokenType[TokenType["CDC_TOKEN"] = 24] = "CDC_TOKEN";
820 + TokenType[TokenType["CDO_TOKEN"] = 25] = "CDO_TOKEN";
821 + TokenType[TokenType["COLON_TOKEN"] = 26] = "COLON_TOKEN";
822 + TokenType[TokenType["SEMICOLON_TOKEN"] = 27] = "SEMICOLON_TOKEN";
823 + TokenType[TokenType["LEFT_SQUARE_BRACKET_TOKEN"] = 28] = "LEFT_SQUARE_BRACKET_TOKEN";
824 + TokenType[TokenType["RIGHT_SQUARE_BRACKET_TOKEN"] = 29] = "RIGHT_SQUARE_BRACKET_TOKEN";
825 + TokenType[TokenType["UNICODE_RANGE_TOKEN"] = 30] = "UNICODE_RANGE_TOKEN";
826 + TokenType[TokenType["WHITESPACE_TOKEN"] = 31] = "WHITESPACE_TOKEN";
827 + TokenType[TokenType["EOF_TOKEN"] = 32] = "EOF_TOKEN";
828 + })(TokenType || (TokenType = {}));
843 829 var FLAG_UNRESTRICTED = 1 << 0;
844 830 var FLAG_ID = 1 << 1;
845 831 var FLAG_INTEGER = 1 << 2;
846 832 var FLAG_NUMBER = 1 << 3;
@@ -847,9 +833,9 @@
847 833 var LINE_FEED = 0x000a;
848 834 var SOLIDUS = 0x002f;
849 835 var REVERSE_SOLIDUS = 0x005c;
850 836 var CHARACTER_TABULATION = 0x0009;
851 - var SPACE = 0x0020;
837 + var SPACE$1 = 0x0020;
852 838 var QUOTATION_MARK = 0x0022;
853 839 var EQUALS_SIGN = 0x003d;
854 840 var NUMBER_SIGN = 0x0023;
855 841 var DOLLAR_SIGN = 0x0024;
@@ -906,9 +892,9 @@
906 892 var isUpperCaseLetter = function (codePoint) { return codePoint >= A && codePoint <= Z; };
907 893 var isLetter = function (codePoint) { return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint); };
908 894 var isNonASCIICodePoint = function (codePoint) { return codePoint >= CONTROL; };
909 895 var isWhiteSpace = function (codePoint) {
910 - return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;
896 + return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE$1;
911 897 };
912 898 var isNameStartCodePoint = function (codePoint) {
913 899 return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;
914 900 };
@@ -963,9 +949,9 @@
963 949 var integers = [];
964 950 while (isDigit(codePoints[c])) {
965 951 integers.push(codePoints[c++]);
966 952 }
967 - var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0;
953 + var int = integers.length ? parseInt(fromCodePoint.apply(void 0, integers), 10) : 0;
968 954 if (codePoints[c] === FULL_STOP) {
969 955 c++;
970 956 }
971 957 var fraction = [];
@@ -972,9 +958,9 @@
972 958 while (isDigit(codePoints[c])) {
973 959 fraction.push(codePoints[c++]);
974 960 }
975 961 var fracd = fraction.length;
976 - var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0;
962 + var frac = fracd ? parseInt(fromCodePoint.apply(void 0, fraction), 10) : 0;
977 963 if (codePoints[c] === E || codePoints[c] === e) {
978 964 c++;
979 965 }
980 966 var expsign = 1;
@@ -987,50 +973,50 @@
987 973 var exponent = [];
988 974 while (isDigit(codePoints[c])) {
989 975 exponent.push(codePoints[c++]);
990 976 }
991 - var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0;
977 + var exp = exponent.length ? parseInt(fromCodePoint.apply(void 0, exponent), 10) : 0;
992 978 return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);
993 979 };
994 980 var LEFT_PARENTHESIS_TOKEN = {
995 - type: 2 /* LEFT_PARENTHESIS_TOKEN */
981 + type: TokenType.LEFT_PARENTHESIS_TOKEN
996 982 };
997 983 var RIGHT_PARENTHESIS_TOKEN = {
998 - type: 3 /* RIGHT_PARENTHESIS_TOKEN */
984 + type: TokenType.RIGHT_PARENTHESIS_TOKEN
999 985 };
1000 - var COMMA_TOKEN = { type: 4 /* COMMA_TOKEN */ };
1001 - var SUFFIX_MATCH_TOKEN = { type: 13 /* SUFFIX_MATCH_TOKEN */ };
1002 - var PREFIX_MATCH_TOKEN = { type: 8 /* PREFIX_MATCH_TOKEN */ };
1003 - var COLUMN_TOKEN = { type: 21 /* COLUMN_TOKEN */ };
1004 - var DASH_MATCH_TOKEN = { type: 9 /* DASH_MATCH_TOKEN */ };
1005 - var INCLUDE_MATCH_TOKEN = { type: 10 /* INCLUDE_MATCH_TOKEN */ };
986 + var COMMA_TOKEN = { type: TokenType.COMMA_TOKEN };
987 + var SUFFIX_MATCH_TOKEN = { type: TokenType.SUFFIX_MATCH_TOKEN };
988 + var PREFIX_MATCH_TOKEN = { type: TokenType.PREFIX_MATCH_TOKEN };
989 + var COLUMN_TOKEN = { type: TokenType.COLUMN_TOKEN };
990 + var DASH_MATCH_TOKEN = { type: TokenType.DASH_MATCH_TOKEN };
991 + var INCLUDE_MATCH_TOKEN = { type: TokenType.INCLUDE_MATCH_TOKEN };
1006 992 var LEFT_CURLY_BRACKET_TOKEN = {
1007 - type: 11 /* LEFT_CURLY_BRACKET_TOKEN */
993 + type: TokenType.LEFT_CURLY_BRACKET_TOKEN
1008 994 };
1009 995 var RIGHT_CURLY_BRACKET_TOKEN = {
1010 - type: 12 /* RIGHT_CURLY_BRACKET_TOKEN */
996 + type: TokenType.RIGHT_CURLY_BRACKET_TOKEN
1011 997 };
1012 - var SUBSTRING_MATCH_TOKEN = { type: 14 /* SUBSTRING_MATCH_TOKEN */ };
1013 - var BAD_URL_TOKEN = { type: 23 /* BAD_URL_TOKEN */ };
1014 - var BAD_STRING_TOKEN = { type: 1 /* BAD_STRING_TOKEN */ };
1015 - var CDO_TOKEN = { type: 25 /* CDO_TOKEN */ };
1016 - var CDC_TOKEN = { type: 24 /* CDC_TOKEN */ };
1017 - var COLON_TOKEN = { type: 26 /* COLON_TOKEN */ };
1018 - var SEMICOLON_TOKEN = { type: 27 /* SEMICOLON_TOKEN */ };
998 + var SUBSTRING_MATCH_TOKEN = { type: TokenType.SUBSTRING_MATCH_TOKEN };
999 + var BAD_URL_TOKEN = { type: TokenType.BAD_URL_TOKEN };
1000 + var BAD_STRING_TOKEN = { type: TokenType.BAD_STRING_TOKEN };
1001 + var CDO_TOKEN = { type: TokenType.CDO_TOKEN };
1002 + var CDC_TOKEN = { type: TokenType.CDC_TOKEN };
1003 + var COLON_TOKEN = { type: TokenType.COLON_TOKEN };
1004 + var SEMICOLON_TOKEN = { type: TokenType.SEMICOLON_TOKEN };
1019 1005 var LEFT_SQUARE_BRACKET_TOKEN = {
1020 - type: 28 /* LEFT_SQUARE_BRACKET_TOKEN */
1006 + type: TokenType.LEFT_SQUARE_BRACKET_TOKEN
1021 1007 };
1022 1008 var RIGHT_SQUARE_BRACKET_TOKEN = {
1023 - type: 29 /* RIGHT_SQUARE_BRACKET_TOKEN */
1009 + type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN
1024 1010 };
1025 - var WHITESPACE_TOKEN = { type: 31 /* WHITESPACE_TOKEN */ };
1026 - var EOF_TOKEN = { type: 32 /* EOF_TOKEN */ };
1011 + var WHITESPACE_TOKEN = { type: TokenType.WHITESPACE_TOKEN };
1012 + var EOF_TOKEN = { type: TokenType.EOF_TOKEN };
1027 1013 var Tokenizer = /** @class */ (function () {
1028 1014 function Tokenizer() {
1029 1015 this._value = [];
1030 1016 }
1031 1017 Tokenizer.prototype.write = function (chunk) {
1032 - this._value = this._value.concat(toCodePoints$1(chunk));
1018 + this._value = this._value.concat(toCodePoints(chunk));
1033 1019 };
1034 1020 Tokenizer.prototype.read = function () {
1035 1021 var tokens = [];
1036 1022 var token = this.consumeToken();
@@ -1051,9 +1037,9 @@
1051 1037 var c3 = this.peekCodePoint(2);
1052 1038 if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {
1053 1039 var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;
1054 1040 var value = this.consumeName();
1055 - return { type: 5 /* HASH_TOKEN */, value: value, flags: flags };
1041 + return { type: TokenType.HASH_TOKEN, value: value, flags: flags };
1056 1042 }
1057 1043 break;
1058 1044 case DOLLAR_SIGN:
1059 1045 if (this.peekCodePoint(0) === EQUALS_SIGN) {
@@ -1140,9 +1126,9 @@
1140 1126 var a2 = this.peekCodePoint(1);
1141 1127 var a3 = this.peekCodePoint(2);
1142 1128 if (isIdentifierStart(a1, a2, a3)) {
1143 1129 var value = this.consumeName();
1144 - return { type: 7 /* AT_KEYWORD_TOKEN */, value: value };
1130 + return { type: TokenType.AT_KEYWORD_TOKEN, value: value };
1145 1131 }
1146 1132 break;
1147 1133 case LEFT_SQUARE_BRACKET:
1148 1134 return LEFT_SQUARE_BRACKET_TOKEN;
@@ -1204,9 +1190,9 @@
1204 1190 if (isNameStartCodePoint(codePoint)) {
1205 1191 this.reconsumeCodePoint(codePoint);
1206 1192 return this.consumeIdentLikeToken();
1207 1193 }
1208 - return { type: 6 /* DELIM_TOKEN */, value: fromCodePoint$1(codePoint) };
1194 + return { type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint) };
1209 1195 };
1210 1196 Tokenizer.prototype.consumeCodePoint = function () {
1211 1197 var value = this._value.shift();
1212 1198 return typeof value === 'undefined' ? -1 : value;
@@ -1233,13 +1219,13 @@
1233 1219 codePoint = this.consumeCodePoint();
1234 1220 questionMarks = true;
1235 1221 }
1236 1222 if (questionMarks) {
1237 - var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? ZERO : digit); })), 16);
1238 - var end = parseInt(fromCodePoint$1.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? F : digit); })), 16);
1239 - return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start_1, end: end };
1223 + var start_1 = parseInt(fromCodePoint.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? ZERO : digit); })), 16);
1224 + var end = parseInt(fromCodePoint.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? F : digit); })), 16);
1225 + return { type: TokenType.UNICODE_RANGE_TOKEN, start: start_1, end: end };
1240 1226 }
1241 - var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16);
1227 + var start = parseInt(fromCodePoint.apply(void 0, digits), 16);
1242 1228 if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {
1243 1229 this.consumeCodePoint();
1244 1230 codePoint = this.consumeCodePoint();
1245 1231 var endDigits = [];
@@ -1246,13 +1232,13 @@
1246 1232 while (isHex(codePoint) && endDigits.length < 6) {
1247 1233 endDigits.push(codePoint);
1248 1234 codePoint = this.consumeCodePoint();
1249 1235 }
1250 - var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);
1251 - return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: end };
1236 + var end = parseInt(fromCodePoint.apply(void 0, endDigits), 16);
1237 + return { type: TokenType.UNICODE_RANGE_TOKEN, start: start, end: end };
1252 1238 }
1253 1239 else {
1254 - return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: start };
1240 + return { type: TokenType.UNICODE_RANGE_TOKEN, start: start, end: start };
1255 1241 }
1256 1242 };
1257 1243 Tokenizer.prototype.consumeIdentLikeToken = function () {
1258 1244 var value = this.consumeName();
@@ -1261,26 +1247,26 @@
1261 1247 return this.consumeUrlToken();
1262 1248 }
1263 1249 else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {
1264 1250 this.consumeCodePoint();
1265 - return { type: 19 /* FUNCTION_TOKEN */, value: value };
1251 + return { type: TokenType.FUNCTION_TOKEN, value: value };
1266 1252 }
1267 - return { type: 20 /* IDENT_TOKEN */, value: value };
1253 + return { type: TokenType.IDENT_TOKEN, value: value };
1268 1254 };
1269 1255 Tokenizer.prototype.consumeUrlToken = function () {
1270 1256 var value = [];
1271 1257 this.consumeWhiteSpace();
1272 1258 if (this.peekCodePoint(0) === EOF) {
1273 - return { type: 22 /* URL_TOKEN */, value: '' };
1259 + return { type: TokenType.URL_TOKEN, value: '' };
1274 1260 }
1275 1261 var next = this.peekCodePoint(0);
1276 1262 if (next === APOSTROPHE || next === QUOTATION_MARK) {
1277 1263 var stringToken = this.consumeStringToken(this.consumeCodePoint());
1278 - if (stringToken.type === 0 /* STRING_TOKEN */) {
1264 + if (stringToken.type === TokenType.STRING_TOKEN) {
1279 1265 this.consumeWhiteSpace();
1280 1266 if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
1281 1267 this.consumeCodePoint();
1282 - return { type: 22 /* URL_TOKEN */, value: stringToken.value };
1268 + return { type: TokenType.URL_TOKEN, value: stringToken.value };
1283 1269 }
1284 1270 }
1285 1271 this.consumeBadUrlRemnants();
1286 1272 return BAD_URL_TOKEN;
@@ -1287,15 +1273,15 @@
1287 1273 }
1288 1274 while (true) {
1289 1275 var codePoint = this.consumeCodePoint();
1290 1276 if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {
1291 - return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };
1277 + return { type: TokenType.URL_TOKEN, value: fromCodePoint.apply(void 0, value) };
1292 1278 }
1293 1279 else if (isWhiteSpace(codePoint)) {
1294 1280 this.consumeWhiteSpace();
1295 1281 if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
1296 1282 this.consumeCodePoint();
1297 - return { type: 22 /* URL_TOKEN */, value: fromCodePoint$1.apply(void 0, value) };
1283 + return { type: TokenType.URL_TOKEN, value: fromCodePoint.apply(void 0, value) };
1298 1284 }
1299 1285 this.consumeBadUrlRemnants();
1300 1286 return BAD_URL_TOKEN;
1301 1287 }
@@ -1336,13 +1322,13 @@
1336 1322 }
1337 1323 }
1338 1324 };
1339 1325 Tokenizer.prototype.consumeStringSlice = function (count) {
1340 - var SLICE_STACK_SIZE = 50000;
1326 + var SLICE_STACK_SIZE = 60000;
1341 1327 var value = '';
1342 1328 while (count > 0) {
1343 1329 var amount = Math.min(SLICE_STACK_SIZE, count);
1344 - value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));
1330 + value += fromCodePoint.apply(void 0, this._value.splice(0, amount));
1345 1331 count -= amount;
1346 1332 }
1347 1333 this._value.shift();
1348 1334 return value;
@@ -1353,9 +1339,9 @@
1353 1339 do {
1354 1340 var codePoint = this._value[i];
1355 1341 if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {
1356 1342 value += this.consumeStringSlice(i);
1357 - return { type: 0 /* STRING_TOKEN */, value: value };
1343 + return { type: TokenType.STRING_TOKEN, value: value };
1358 1344 }
1359 1345 if (codePoint === LINE_FEED) {
1360 1346 this._value.splice(0, i);
1361 1347 return BAD_STRING_TOKEN;
@@ -1369,9 +1355,9 @@
1369 1355 this._value.shift();
1370 1356 }
1371 1357 else if (isValidEscape(codePoint, next)) {
1372 1358 value += this.consumeStringSlice(i);
1373 - value += fromCodePoint$1(this.consumeEscapedCodePoint());
1359 + value += fromCodePoint(this.consumeEscapedCodePoint());
1374 1360 i = -1;
1375 1361 }
1376 1362 }
1377 1363 }
@@ -1415,22 +1401,22 @@
1415 1401 var c2 = this.peekCodePoint(1);
1416 1402 var c3 = this.peekCodePoint(2);
1417 1403 if (isIdentifierStart(c1, c2, c3)) {
1418 1404 var unit = this.consumeName();
1419 - return { type: 15 /* DIMENSION_TOKEN */, number: number, flags: flags, unit: unit };
1405 + return { type: TokenType.DIMENSION_TOKEN, number: number, flags: flags, unit: unit };
1420 1406 }
1421 1407 if (c1 === PERCENTAGE_SIGN) {
1422 1408 this.consumeCodePoint();
1423 - return { type: 16 /* PERCENTAGE_TOKEN */, number: number, flags: flags };
1409 + return { type: TokenType.PERCENTAGE_TOKEN, number: number, flags: flags };
1424 1410 }
1425 - return { type: 17 /* NUMBER_TOKEN */, number: number, flags: flags };
1411 + return { type: TokenType.NUMBER_TOKEN, number: number, flags: flags };
1426 1412 };
1427 1413 Tokenizer.prototype.consumeEscapedCodePoint = function () {
1428 1414 var codePoint = this.consumeCodePoint();
1429 1415 if (isHex(codePoint)) {
1430 - var hex = fromCodePoint$1(codePoint);
1416 + var hex = fromCodePoint(codePoint);
1431 1417 while (isHex(this.peekCodePoint(0)) && hex.length < 6) {
1432 - hex += fromCodePoint$1(this.consumeCodePoint());
1418 + hex += fromCodePoint(this.consumeCodePoint());
1433 1419 }
1434 1420 if (isWhiteSpace(this.peekCodePoint(0))) {
1435 1421 this.consumeCodePoint();
1436 1422 }
@@ -1449,12 +1435,12 @@
1449 1435 var result = '';
1450 1436 while (true) {
1451 1437 var codePoint = this.consumeCodePoint();
1452 1438 if (isNameCodePoint(codePoint)) {
1453 - result += fromCodePoint$1(codePoint);
1439 + result += fromCodePoint(codePoint);
1454 1440 }
1455 1441 else if (isValidEscape(codePoint, this.peekCodePoint(0))) {
1456 - result += fromCodePoint$1(this.consumeEscapedCodePoint());
1442 + result += fromCodePoint(this.consumeEscapedCodePoint());
1457 1443 }
1458 1444 else {
1459 1445 this.reconsumeCodePoint(codePoint);
1460 1446 return result;
@@ -1480,12 +1466,12 @@
1480 1466 return Parser.create(value).parseComponentValues();
1481 1467 };
1482 1468 Parser.prototype.parseComponentValue = function () {
1483 1469 var token = this.consumeToken();
1484 - while (token.type === 31 /* WHITESPACE_TOKEN */) {
1470 + while (token.type === TokenType.WHITESPACE_TOKEN) {
1485 1471 token = this.consumeToken();
1486 1472 }
1487 - if (token.type === 32 /* EOF_TOKEN */) {
1473 + if (token.type === TokenType.EOF_TOKEN) {
1488 1474 throw new SyntaxError("Error parsing CSS component value, unexpected EOF");
1489 1475 }
1490 1476 this.reconsumeToken(token);
1491 1477 var value = this.consumeComponentValue();
@@ -1490,10 +1476,10 @@
1490 1476 this.reconsumeToken(token);
1491 1477 var value = this.consumeComponentValue();
1492 1478 do {
1493 1479 token = this.consumeToken();
1494 - } while (token.type === 31 /* WHITESPACE_TOKEN */);
1495 - if (token.type === 32 /* EOF_TOKEN */) {
1480 + } while (token.type === TokenType.WHITESPACE_TOKEN);
1481 + if (token.type === TokenType.EOF_TOKEN) {
1496 1482 return value;
1497 1483 }
1498 1484 throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one");
1499 1485 };
@@ -1500,9 +1486,9 @@
1500 1486 Parser.prototype.parseComponentValues = function () {
1501 1487 var values = [];
1502 1488 while (true) {
1503 1489 var value = this.consumeComponentValue();
1504 - if (value.type === 32 /* EOF_TOKEN */) {
1490 + if (value.type === TokenType.EOF_TOKEN) {
1505 1491 return values;
1506 1492 }
1507 1493 values.push(value);
1508 1494 values.push();
@@ -1510,13 +1496,13 @@
1510 1496 };
1511 1497 Parser.prototype.consumeComponentValue = function () {
1512 1498 var token = this.consumeToken();
1513 1499 switch (token.type) {
1514 - case 11 /* LEFT_CURLY_BRACKET_TOKEN */:
1515 - case 28 /* LEFT_SQUARE_BRACKET_TOKEN */:
1516 - case 2 /* LEFT_PARENTHESIS_TOKEN */:
1500 + case TokenType.LEFT_CURLY_BRACKET_TOKEN:
1501 + case TokenType.LEFT_SQUARE_BRACKET_TOKEN:
1502 + case TokenType.LEFT_PARENTHESIS_TOKEN:
1517 1503 return this.consumeSimpleBlock(token.type);
1518 - case 19 /* FUNCTION_TOKEN */:
1504 + case TokenType.FUNCTION_TOKEN:
1519 1505 return this.consumeFunction(token);
1520 1506 }
1521 1507 return token;
1522 1508 };
@@ -1523,9 +1509,9 @@
1523 1509 Parser.prototype.consumeSimpleBlock = function (type) {
1524 1510 var block = { type: type, values: [] };
1525 1511 var token = this.consumeToken();
1526 1512 while (true) {
1527 - if (token.type === 32 /* EOF_TOKEN */ || isEndingTokenFor(token, type)) {
1513 + if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {
1528 1514 return block;
1529 1515 }
1530 1516 this.reconsumeToken(token);
1531 1517 block.values.push(this.consumeComponentValue());
@@ -1535,13 +1521,13 @@
1535 1521 Parser.prototype.consumeFunction = function (functionToken) {
1536 1522 var cssFunction = {
1537 1523 name: functionToken.value,
1538 1524 values: [],
1539 - type: 18 /* FUNCTION */
1525 + type: TokenType.FUNCTION
1540 1526 };
1541 1527 while (true) {
1542 1528 var token = this.consumeToken();
1543 - if (token.type === 32 /* EOF_TOKEN */ || token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */) {
1529 + if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {
1544 1530 return cssFunction;
1545 1531 }
1546 1532 this.reconsumeToken(token);
1547 1533 cssFunction.values.push(this.consumeComponentValue());
@@ -1555,24 +1541,24 @@
1555 1541 this._tokens.unshift(token);
1556 1542 };
1557 1543 return Parser;
1558 1544 }());
1559 - var isDimensionToken = function (token) { return token.type === 15 /* DIMENSION_TOKEN */; };
1560 - var isNumberToken = function (token) { return token.type === 17 /* NUMBER_TOKEN */; };
1561 - var isIdentToken = function (token) { return token.type === 20 /* IDENT_TOKEN */; };
1562 - var isStringToken = function (token) { return token.type === 0 /* STRING_TOKEN */; };
1545 + var isDimensionToken = function (token) { return token.type === TokenType.DIMENSION_TOKEN; };
1546 + var isNumberToken = function (token) { return token.type === TokenType.NUMBER_TOKEN; };
1547 + var isIdentToken = function (token) { return token.type === TokenType.IDENT_TOKEN; };
1548 + var isStringToken = function (token) { return token.type === TokenType.STRING_TOKEN; };
1563 1549 var isIdentWithValue = function (token, value) {
1564 1550 return isIdentToken(token) && token.value === value;
1565 1551 };
1566 - var nonWhiteSpace = function (token) { return token.type !== 31 /* WHITESPACE_TOKEN */; };
1552 + var nonWhiteSpace = function (token) { return token.type !== TokenType.WHITESPACE_TOKEN; };
1567 1553 var nonFunctionArgSeparator = function (token) {
1568 - return token.type !== 31 /* WHITESPACE_TOKEN */ && token.type !== 4 /* COMMA_TOKEN */;
1554 + return token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;
1569 1555 };
1570 1556 var parseFunctionArgs = function (tokens) {
1571 1557 var args = [];
1572 1558 var arg = [];
1573 1559 tokens.forEach(function (token) {
1574 - if (token.type === 4 /* COMMA_TOKEN */) {
1560 + if (token.type === TokenType.COMMA_TOKEN) {
1575 1561 if (arg.length === 0) {
1576 1562 throw new Error("Error parsing function args, zero tokens for arg");
1577 1563 }
1578 1564 args.push(arg);
@@ -1578,9 +1564,9 @@
1578 1564 args.push(arg);
1579 1565 arg = [];
1580 1566 return;
1581 1567 }
1582 - if (token.type !== 31 /* WHITESPACE_TOKEN */) {
1568 + if (token.type !== TokenType.WHITESPACE_TOKEN) {
1583 1569 arg.push(token);
1584 1570 }
1585 1571 });
1586 1572 if (arg.length) {
@@ -1588,39 +1574,39 @@
1588 1574 }
1589 1575 return args;
1590 1576 };
1591 1577 var isEndingTokenFor = function (token, type) {
1592 - if (type === 11 /* LEFT_CURLY_BRACKET_TOKEN */ && token.type === 12 /* RIGHT_CURLY_BRACKET_TOKEN */) {
1578 + if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {
1593 1579 return true;
1594 1580 }
1595 - if (type === 28 /* LEFT_SQUARE_BRACKET_TOKEN */ && token.type === 29 /* RIGHT_SQUARE_BRACKET_TOKEN */) {
1581 + if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {
1596 1582 return true;
1597 1583 }
1598 - return type === 2 /* LEFT_PARENTHESIS_TOKEN */ && token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */;
1584 + return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;
1599 1585 };
1600 1586
1601 1587 var isLength = function (token) {
1602 - return token.type === 17 /* NUMBER_TOKEN */ || token.type === 15 /* DIMENSION_TOKEN */;
1588 + return token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;
1603 1589 };
1604 1590
1605 1591 var isLengthPercentage = function (token) {
1606 - return token.type === 16 /* PERCENTAGE_TOKEN */ || isLength(token);
1592 + return token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);
1607 1593 };
1608 1594 var parseLengthPercentageTuple = function (tokens) {
1609 1595 return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];
1610 1596 };
1611 1597 var ZERO_LENGTH = {
1612 - type: 17 /* NUMBER_TOKEN */,
1598 + type: TokenType.NUMBER_TOKEN,
1613 1599 number: 0,
1614 1600 flags: FLAG_INTEGER
1615 1601 };
1616 1602 var FIFTY_PERCENT = {
1617 - type: 16 /* PERCENTAGE_TOKEN */,
1603 + type: TokenType.PERCENTAGE_TOKEN,
1618 1604 number: 50,
1619 1605 flags: FLAG_INTEGER
1620 1606 };
1621 1607 var HUNDRED_PERCENT = {
1622 - type: 16 /* PERCENTAGE_TOKEN */,
1608 + type: TokenType.PERCENTAGE_TOKEN,
1623 1609 number: 100,
1624 1610 flags: FLAG_INTEGER
1625 1611 };
1626 1612 var getAbsoluteValueForTuple = function (tuple, width, height) {
@@ -1627,9 +1613,9 @@
1627 1613 var x = tuple[0], y = tuple[1];
1628 1614 return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];
1629 1615 };
1630 1616 var getAbsoluteValue = function (token, parent) {
1631 - if (token.type === 16 /* PERCENTAGE_TOKEN */) {
1617 + if (token.type === TokenType.PERCENTAGE_TOKEN) {
1632 1618 return (token.number / 100) * parent;
1633 1619 }
1634 1620 if (isDimensionToken(token)) {
1635 1621 switch (token.unit) {
@@ -1649,10 +1635,10 @@
1649 1635 var RAD = 'rad';
1650 1636 var TURN = 'turn';
1651 1637 var angle = {
1652 1638 name: 'angle',
1653 - parse: function (_context, value) {
1654 - if (value.type === 15 /* DIMENSION_TOKEN */) {
1639 + parse: function (value) {
1640 + if (value.type === TokenType.DIMENSION_TOKEN) {
1655 1641 switch (value.unit) {
1656 1642 case DEG:
1657 1643 return (Math.PI * value.number) / 180;
1658 1644 case GRAD:
@@ -1666,9 +1652,9 @@
1666 1652 throw new Error("Unsupported angle type");
1667 1653 }
1668 1654 };
1669 1655 var isAngle = function (value) {
1670 - if (value.type === 15 /* DIMENSION_TOKEN */) {
1656 + if (value.type === TokenType.DIMENSION_TOKEN) {
1671 1657 if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {
1672 1658 return true;
1673 1659 }
1674 1660 }
@@ -1716,19 +1702,19 @@
1716 1702 return 0;
1717 1703 };
1718 1704 var deg = function (deg) { return (Math.PI * deg) / 180; };
1719 1705
1720 - var color$1 = {
1706 + var color = {
1721 1707 name: 'color',
1722 - parse: function (context, value) {
1723 - if (value.type === 18 /* FUNCTION */) {
1708 + parse: function (value) {
1709 + if (value.type === TokenType.FUNCTION) {
1724 1710 var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];
1725 1711 if (typeof colorFunction === 'undefined') {
1726 1712 throw new Error("Attempting to parse an unsupported color function \"" + value.name + "\"");
1727 1713 }
1728 - return colorFunction(context, value.values);
1714 + return colorFunction(value.values);
1729 1715 }
1730 - if (value.type === 5 /* HASH_TOKEN */) {
1716 + if (value.type === TokenType.HASH_TOKEN) {
1731 1717 if (value.value.length === 3) {
1732 1718 var r = value.value.substring(0, 1);
1733 1719 var g = value.value.substring(1, 2);
1734 1720 var b = value.value.substring(2, 3);
@@ -1754,9 +1740,9 @@
1754 1740 var a = value.value.substring(6, 8);
1755 1741 return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);
1756 1742 }
1757 1743 }
1758 - if (value.type === 20 /* IDENT_TOKEN */) {
1744 + if (value.type === TokenType.IDENT_TOKEN) {
1759 1745 var namedColor = COLORS[value.value.toUpperCase()];
1760 1746 if (typeof namedColor !== 'undefined') {
1761 1747 return namedColor;
1762 1748 }
@@ -1775,18 +1761,18 @@
1775 1761 var pack = function (r, g, b, a) {
1776 1762 return ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;
1777 1763 };
1778 1764 var getTokenColorValue = function (token, i) {
1779 - if (token.type === 17 /* NUMBER_TOKEN */) {
1765 + if (token.type === TokenType.NUMBER_TOKEN) {
1780 1766 return token.number;
1781 1767 }
1782 - if (token.type === 16 /* PERCENTAGE_TOKEN */) {
1768 + if (token.type === TokenType.PERCENTAGE_TOKEN) {
1783 1769 var max = i === 3 ? 1 : 255;
1784 1770 return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);
1785 1771 }
1786 1772 return 0;
1787 1773 };
1788 - var rgb = function (_context, args) {
1774 + var rgb = function (args) {
1789 1775 var tokens = args.filter(nonFunctionArgSeparator);
1790 1776 if (tokens.length === 3) {
1791 1777 var _a = tokens.map(getTokenColorValue), r = _a[0], g = _a[1], b = _a[2];
1792 1778 return pack(r, g, b, 1);
@@ -1816,12 +1802,12 @@
1816 1802 else {
1817 1803 return t1;
1818 1804 }
1819 1805 }
1820 - var hsl = function (context, args) {
1806 + var hsl = function (args) {
1821 1807 var tokens = args.filter(nonFunctionArgSeparator);
1822 1808 var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3];
1823 - var h = (hue.type === 17 /* NUMBER_TOKEN */ ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);
1809 + var h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(hue)) / (Math.PI * 2);
1824 1810 var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;
1825 1811 var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;
1826 1812 var a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;
1827 1813 if (s === 0) {
@@ -1839,11 +1825,8 @@
1839 1825 hsla: hsl,
1840 1826 rgb: rgb,
1841 1827 rgba: rgb
1842 1828 };
1843 - var parseColor = function (context, value) {
1844 - return color$1.parse(context, Parser.create(value).parseComponentValue());
1845 - };
1846 1829 var COLORS = {
1847 1830 ALICEBLUE: 0xf0f8ffff,
1848 1831 ANTIQUEWHITE: 0xfaebd7ff,
1849 1832 AQUA: 0x00ffffff,
@@ -1994,24 +1977,39 @@
1994 1977 YELLOW: 0xffff00ff,
1995 1978 YELLOWGREEN: 0x9acd32ff
1996 1979 };
1997 1980
1981 + var PropertyDescriptorParsingType;
1982 + (function (PropertyDescriptorParsingType) {
1983 + PropertyDescriptorParsingType[PropertyDescriptorParsingType["VALUE"] = 0] = "VALUE";
1984 + PropertyDescriptorParsingType[PropertyDescriptorParsingType["LIST"] = 1] = "LIST";
1985 + PropertyDescriptorParsingType[PropertyDescriptorParsingType["IDENT_VALUE"] = 2] = "IDENT_VALUE";
1986 + PropertyDescriptorParsingType[PropertyDescriptorParsingType["TYPE_VALUE"] = 3] = "TYPE_VALUE";
1987 + PropertyDescriptorParsingType[PropertyDescriptorParsingType["TOKEN_VALUE"] = 4] = "TOKEN_VALUE";
1988 + })(PropertyDescriptorParsingType || (PropertyDescriptorParsingType = {}));
1989 +
1990 + var BACKGROUND_CLIP;
1991 + (function (BACKGROUND_CLIP) {
1992 + BACKGROUND_CLIP[BACKGROUND_CLIP["BORDER_BOX"] = 0] = "BORDER_BOX";
1993 + BACKGROUND_CLIP[BACKGROUND_CLIP["PADDING_BOX"] = 1] = "PADDING_BOX";
1994 + BACKGROUND_CLIP[BACKGROUND_CLIP["CONTENT_BOX"] = 2] = "CONTENT_BOX";
1995 + })(BACKGROUND_CLIP || (BACKGROUND_CLIP = {}));
1998 1996 var backgroundClip = {
1999 1997 name: 'background-clip',
2000 1998 initialValue: 'border-box',
2001 1999 prefix: false,
2002 - type: 1 /* LIST */,
2003 - parse: function (_context, tokens) {
2000 + type: PropertyDescriptorParsingType.LIST,
2001 + parse: function (tokens) {
2004 2002 return tokens.map(function (token) {
2005 2003 if (isIdentToken(token)) {
2006 2004 switch (token.value) {
2007 2005 case 'padding-box':
2008 - return 1 /* PADDING_BOX */;
2006 + return BACKGROUND_CLIP.PADDING_BOX;
2009 2007 case 'content-box':
2010 - return 2 /* CONTENT_BOX */;
2008 + return BACKGROUND_CLIP.CONTENT_BOX;
2011 2009 }
2012 2010 }
2013 - return 0 /* BORDER_BOX */;
2011 + return BACKGROUND_CLIP.BORDER_BOX;
2014 2012 });
2015 2013 }
2016 2014 };
2017 2015
@@ -2018,16 +2016,16 @@
2018 2016 var backgroundColor = {
2019 2017 name: "background-color",
2020 2018 initialValue: 'transparent',
2021 2019 prefix: false,
2022 - type: 3 /* TYPE_VALUE */,
2020 + type: PropertyDescriptorParsingType.TYPE_VALUE,
2023 2021 format: 'color'
2024 2022 };
2025 2023
2026 - var parseColorStop = function (context, args) {
2027 - var color = color$1.parse(context, args[0]);
2024 + var parseColorStop = function (args) {
2025 + var color$1 = color.parse(args[0]);
2028 2026 var stop = args[1];
2029 - return stop && isLengthPercentage(stop) ? { color: color, stop: stop } : { color: color, stop: null };
2027 + return stop && isLengthPercentage(stop) ? { color: color$1, stop: stop } : { color: color$1, stop: null };
2030 2028 };
2031 2029 var processColorStops = function (stops, lineLength) {
2032 2030 var first = stops[0];
2033 2031 var last = stops[stops.length - 1];
@@ -2096,14 +2094,9 @@
2096 2094 return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];
2097 2095 };
2098 2096 var distance = function (a, b) { return Math.sqrt(a * a + b * b); };
2099 2097 var findCorner = function (width, height, x, y, closest) {
2100 - var corners = [
2101 - [0, 0],
2102 - [0, height],
2103 - [width, 0],
2104 - [width, height]
2105 - ];
2098 + var corners = [[0, 0], [0, height], [width, 0], [width, height]];
2106 2099 return corners.reduce(function (stat, corner) {
2107 2100 var cx = corner[0], cy = corner[1];
2108 2101 var d = distance(x - cx, y - cy);
2109 2102 if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {
@@ -2121,26 +2114,26 @@
2121 2114 var calculateRadius = function (gradient, x, y, width, height) {
2122 2115 var rx = 0;
2123 2116 var ry = 0;
2124 2117 switch (gradient.size) {
2125 - case 0 /* CLOSEST_SIDE */:
2118 + case CSSRadialExtent.CLOSEST_SIDE:
2126 2119 // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.
2127 2120 // If the shape is an ellipse, it exactly meets the closest side in each dimension.
2128 - if (gradient.shape === 0 /* CIRCLE */) {
2121 + if (gradient.shape === CSSRadialShape.CIRCLE) {
2129 2122 rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));
2130 2123 }
2131 - else if (gradient.shape === 1 /* ELLIPSE */) {
2124 + else if (gradient.shape === CSSRadialShape.ELLIPSE) {
2132 2125 rx = Math.min(Math.abs(x), Math.abs(x - width));
2133 2126 ry = Math.min(Math.abs(y), Math.abs(y - height));
2134 2127 }
2135 2128 break;
2136 - case 2 /* CLOSEST_CORNER */:
2129 + case CSSRadialExtent.CLOSEST_CORNER:
2137 2130 // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.
2138 2131 // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.
2139 - if (gradient.shape === 0 /* CIRCLE */) {
2132 + if (gradient.shape === CSSRadialShape.CIRCLE) {
2140 2133 rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));
2141 2134 }
2142 - else if (gradient.shape === 1 /* ELLIPSE */) {
2135 + else if (gradient.shape === CSSRadialShape.ELLIPSE) {
2143 2136 // Compute the ratio ry/rx (which is to be the same as for "closest-side")
2144 2137 var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));
2145 2138 var _a = findCorner(width, height, x, y, true), cx = _a[0], cy = _a[1];
2146 2139 rx = distance(cx - x, (cy - y) / c);
@@ -2146,25 +2139,25 @@
2146 2139 rx = distance(cx - x, (cy - y) / c);
2147 2140 ry = c * rx;
2148 2141 }
2149 2142 break;
2150 - case 1 /* FARTHEST_SIDE */:
2143 + case CSSRadialExtent.FARTHEST_SIDE:
2151 2144 // Same as closest-side, except the ending shape is sized based on the farthest side(s)
2152 - if (gradient.shape === 0 /* CIRCLE */) {
2145 + if (gradient.shape === CSSRadialShape.CIRCLE) {
2153 2146 rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));
2154 2147 }
2155 - else if (gradient.shape === 1 /* ELLIPSE */) {
2148 + else if (gradient.shape === CSSRadialShape.ELLIPSE) {
2156 2149 rx = Math.max(Math.abs(x), Math.abs(x - width));
2157 2150 ry = Math.max(Math.abs(y), Math.abs(y - height));
2158 2151 }
2159 2152 break;
2160 - case 3 /* FARTHEST_CORNER */:
2153 + case CSSRadialExtent.FARTHEST_CORNER:
2161 2154 // Same as closest-corner, except the ending shape is sized based on the farthest corner.
2162 2155 // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.
2163 - if (gradient.shape === 0 /* CIRCLE */) {
2156 + if (gradient.shape === CSSRadialShape.CIRCLE) {
2164 2157 rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));
2165 2158 }
2166 - else if (gradient.shape === 1 /* ELLIPSE */) {
2159 + else if (gradient.shape === CSSRadialShape.ELLIPSE) {
2167 2160 // Compute the ratio ry/rx (which is to be the same as for "farthest-side")
2168 2161 var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));
2169 2162 var _b = findCorner(width, height, x, y, false), cx = _b[0], cy = _b[1];
2170 2163 rx = distance(cx - x, (cy - y) / c);
@@ -2178,92 +2171,479 @@
2178 2171 }
2179 2172 return [rx, ry];
2180 2173 };
2181 2174
2182 - var linearGradient = function (context, tokens) {
2175 + var linearGradient = function (tokens) {
2183 2176 var angle$1 = deg(180);
2184 2177 var stops = [];
2185 2178 parseFunctionArgs(tokens).forEach(function (arg, i) {
2186 2179 if (i === 0) {
2187 2180 var firstToken = arg[0];
2188 - if (firstToken.type === 20 /* IDENT_TOKEN */ && firstToken.value === 'to') {
2181 + if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {
2189 2182 angle$1 = parseNamedSide(arg);
2190 2183 return;
2191 2184 }
2192 2185 else if (isAngle(firstToken)) {
2193 - angle$1 = angle.parse(context, firstToken);
2186 + angle$1 = angle.parse(firstToken);
2194 2187 return;
2195 2188 }
2196 2189 }
2197 - var colorStop = parseColorStop(context, arg);
2190 + var colorStop = parseColorStop(arg);
2198 2191 stops.push(colorStop);
2199 2192 });
2200 - return { angle: angle$1, stops: stops, type: 1 /* LINEAR_GRADIENT */ };
2193 + return { angle: angle$1, stops: stops, type: CSSImageType.LINEAR_GRADIENT };
2201 2194 };
2202 2195
2203 - var prefixLinearGradient = function (context, tokens) {
2196 + var prefixLinearGradient = function (tokens) {
2204 2197 var angle$1 = deg(180);
2205 2198 var stops = [];
2206 2199 parseFunctionArgs(tokens).forEach(function (arg, i) {
2207 2200 if (i === 0) {
2208 2201 var firstToken = arg[0];
2209 - if (firstToken.type === 20 /* IDENT_TOKEN */ &&
2202 + if (firstToken.type === TokenType.IDENT_TOKEN &&
2210 2203 ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1) {
2211 2204 angle$1 = parseNamedSide(arg);
2212 2205 return;
2213 2206 }
2214 2207 else if (isAngle(firstToken)) {
2215 - angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);
2208 + angle$1 = (angle.parse(firstToken) + deg(270)) % deg(360);
2216 2209 return;
2217 2210 }
2218 2211 }
2219 - var colorStop = parseColorStop(context, arg);
2212 + var colorStop = parseColorStop(arg);
2220 2213 stops.push(colorStop);
2221 2214 });
2222 2215 return {
2223 2216 angle: angle$1,
2224 2217 stops: stops,
2225 - type: 1 /* LINEAR_GRADIENT */
2218 + type: CSSImageType.LINEAR_GRADIENT
2226 2219 };
2227 2220 };
2228 2221
2229 - var webkitGradient = function (context, tokens) {
2222 + var testRangeBounds = function (document) {
2223 + var TEST_HEIGHT = 123;
2224 + if (document.createRange) {
2225 + var range = document.createRange();
2226 + if (range.getBoundingClientRect) {
2227 + var testElement = document.createElement('boundtest');
2228 + testElement.style.height = TEST_HEIGHT + "px";
2229 + testElement.style.display = 'block';
2230 + document.body.appendChild(testElement);
2231 + range.selectNode(testElement);
2232 + var rangeBounds = range.getBoundingClientRect();
2233 + var rangeHeight = Math.round(rangeBounds.height);
2234 + document.body.removeChild(testElement);
2235 + if (rangeHeight === TEST_HEIGHT) {
2236 + return true;
2237 + }
2238 + }
2239 + }
2240 + return false;
2241 + };
2242 + var testCORS = function () { return typeof new Image().crossOrigin !== 'undefined'; };
2243 + var testResponseType = function () { return typeof new XMLHttpRequest().responseType === 'string'; };
2244 + var testSVG = function (document) {
2245 + var img = new Image();
2246 + var canvas = document.createElement('canvas');
2247 + var ctx = canvas.getContext('2d');
2248 + if (!ctx) {
2249 + return false;
2250 + }
2251 + img.src = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";
2252 + try {
2253 + ctx.drawImage(img, 0, 0);
2254 + canvas.toDataURL();
2255 + }
2256 + catch (e) {
2257 + return false;
2258 + }
2259 + return true;
2260 + };
2261 + var isGreenPixel = function (data) {
2262 + return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;
2263 + };
2264 + var testForeignObject = function (document) {
2265 + var canvas = document.createElement('canvas');
2266 + var size = 100;
2267 + canvas.width = size;
2268 + canvas.height = size;
2269 + var ctx = canvas.getContext('2d');
2270 + if (!ctx) {
2271 + return Promise.reject(false);
2272 + }
2273 + ctx.fillStyle = 'rgb(0, 255, 0)';
2274 + ctx.fillRect(0, 0, size, size);
2275 + var img = new Image();
2276 + var greenImageSrc = canvas.toDataURL();
2277 + img.src = greenImageSrc;
2278 + var svg = createForeignObjectSVG(size, size, 0, 0, img);
2279 + ctx.fillStyle = 'red';
2280 + ctx.fillRect(0, 0, size, size);
2281 + return loadSerializedSVG(svg)
2282 + .then(function (img) {
2283 + ctx.drawImage(img, 0, 0);
2284 + var data = ctx.getImageData(0, 0, size, size).data;
2285 + ctx.fillStyle = 'red';
2286 + ctx.fillRect(0, 0, size, size);
2287 + var node = document.createElement('div');
2288 + node.style.backgroundImage = "url(" + greenImageSrc + ")";
2289 + node.style.height = size + "px";
2290 + // Firefox 55 does not render inline <img /> tags
2291 + return isGreenPixel(data)
2292 + ? loadSerializedSVG(createForeignObjectSVG(size, size, 0, 0, node))
2293 + : Promise.reject(false);
2294 + })
2295 + .then(function (img) {
2296 + ctx.drawImage(img, 0, 0);
2297 + // Edge does not render background-images
2298 + return isGreenPixel(ctx.getImageData(0, 0, size, size).data);
2299 + })
2300 + .catch(function () { return false; });
2301 + };
2302 + var createForeignObjectSVG = function (width, height, x, y, node) {
2303 + var xmlns = 'http://www.w3.org/2000/svg';
2304 + var svg = document.createElementNS(xmlns, 'svg');
2305 + var foreignObject = document.createElementNS(xmlns, 'foreignObject');
2306 + svg.setAttributeNS(null, 'width', width.toString());
2307 + svg.setAttributeNS(null, 'height', height.toString());
2308 + foreignObject.setAttributeNS(null, 'width', '100%');
2309 + foreignObject.setAttributeNS(null, 'height', '100%');
2310 + foreignObject.setAttributeNS(null, 'x', x.toString());
2311 + foreignObject.setAttributeNS(null, 'y', y.toString());
2312 + foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');
2313 + svg.appendChild(foreignObject);
2314 + foreignObject.appendChild(node);
2315 + return svg;
2316 + };
2317 + var loadSerializedSVG = function (svg) {
2318 + return new Promise(function (resolve, reject) {
2319 + var img = new Image();
2320 + img.onload = function () { return resolve(img); };
2321 + img.onerror = reject;
2322 + img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg));
2323 + });
2324 + };
2325 + var FEATURES = {
2326 + get SUPPORT_RANGE_BOUNDS() {
2327 + var value = testRangeBounds(document);
2328 + Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value });
2329 + return value;
2330 + },
2331 + get SUPPORT_SVG_DRAWING() {
2332 + var value = testSVG(document);
2333 + Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value });
2334 + return value;
2335 + },
2336 + get SUPPORT_FOREIGNOBJECT_DRAWING() {
2337 + var value = typeof Array.from === 'function' && typeof window.fetch === 'function'
2338 + ? testForeignObject(document)
2339 + : Promise.resolve(false);
2340 + Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value });
2341 + return value;
2342 + },
2343 + get SUPPORT_CORS_IMAGES() {
2344 + var value = testCORS();
2345 + Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value });
2346 + return value;
2347 + },
2348 + get SUPPORT_RESPONSE_TYPE() {
2349 + var value = testResponseType();
2350 + Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value });
2351 + return value;
2352 + },
2353 + get SUPPORT_CORS_XHR() {
2354 + var value = 'withCredentials' in new XMLHttpRequest();
2355 + Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value });
2356 + return value;
2357 + }
2358 + };
2359 +
2360 + var Logger = /** @class */ (function () {
2361 + function Logger(_a) {
2362 + var id = _a.id, enabled = _a.enabled;
2363 + this.id = id;
2364 + this.enabled = enabled;
2365 + this.start = Date.now();
2366 + }
2367 + // eslint-disable-next-line @typescript-eslint/no-explicit-any
2368 + Logger.prototype.debug = function () {
2369 + var args = [];
2370 + for (var _i = 0; _i < arguments.length; _i++) {
2371 + args[_i] = arguments[_i];
2372 + }
2373 + if (this.enabled) {
2374 + // eslint-disable-next-line no-console
2375 + if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {
2376 + // eslint-disable-next-line no-console
2377 + console.debug.apply(console, [this.id, this.getTime() + "ms"].concat(args));
2378 + }
2379 + else {
2380 + this.info.apply(this, args);
2381 + }
2382 + }
2383 + };
2384 + Logger.prototype.getTime = function () {
2385 + return Date.now() - this.start;
2386 + };
2387 + Logger.create = function (options) {
2388 + Logger.instances[options.id] = new Logger(options);
2389 + };
2390 + Logger.destroy = function (id) {
2391 + delete Logger.instances[id];
2392 + };
2393 + Logger.getInstance = function (id) {
2394 + var instance = Logger.instances[id];
2395 + if (typeof instance === 'undefined') {
2396 + throw new Error("No logger instance found with id " + id);
2397 + }
2398 + return instance;
2399 + };
2400 + // eslint-disable-next-line @typescript-eslint/no-explicit-any
2401 + Logger.prototype.info = function () {
2402 + var args = [];
2403 + for (var _i = 0; _i < arguments.length; _i++) {
2404 + args[_i] = arguments[_i];
2405 + }
2406 + if (this.enabled) {
2407 + // eslint-disable-next-line no-console
2408 + if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {
2409 + // eslint-disable-next-line no-console
2410 + console.info.apply(console, [this.id, this.getTime() + "ms"].concat(args));
2411 + }
2412 + }
2413 + };
2414 + // eslint-disable-next-line @typescript-eslint/no-explicit-any
2415 + Logger.prototype.error = function () {
2416 + var args = [];
2417 + for (var _i = 0; _i < arguments.length; _i++) {
2418 + args[_i] = arguments[_i];
2419 + }
2420 + if (this.enabled) {
2421 + // eslint-disable-next-line no-console
2422 + if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {
2423 + // eslint-disable-next-line no-console
2424 + console.error.apply(console, [this.id, this.getTime() + "ms"].concat(args));
2425 + }
2426 + else {
2427 + this.info.apply(this, args);
2428 + }
2429 + }
2430 + };
2431 + Logger.instances = {};
2432 + return Logger;
2433 + }());
2434 +
2435 + var CacheStorage = /** @class */ (function () {
2436 + function CacheStorage() {
2437 + }
2438 + CacheStorage.create = function (name, options) {
2439 + return (CacheStorage._caches[name] = new Cache(name, options));
2440 + };
2441 + CacheStorage.destroy = function (name) {
2442 + delete CacheStorage._caches[name];
2443 + };
2444 + CacheStorage.open = function (name) {
2445 + var cache = CacheStorage._caches[name];
2446 + if (typeof cache !== 'undefined') {
2447 + return cache;
2448 + }
2449 + throw new Error("Cache with key \"" + name + "\" not found");
2450 + };
2451 + CacheStorage.getOrigin = function (url) {
2452 + var link = CacheStorage._link;
2453 + if (!link) {
2454 + return 'about:blank';
2455 + }
2456 + link.href = url;
2457 + link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/
2458 + return link.protocol + link.hostname + link.port;
2459 + };
2460 + CacheStorage.isSameOrigin = function (src) {
2461 + return CacheStorage.getOrigin(src) === CacheStorage._origin;
2462 + };
2463 + CacheStorage.setContext = function (window) {
2464 + CacheStorage._link = window.document.createElement('a');
2465 + CacheStorage._origin = CacheStorage.getOrigin(window.location.href);
2466 + };
2467 + CacheStorage.getInstance = function () {
2468 + var current = CacheStorage._current;
2469 + if (current === null) {
2470 + throw new Error("No cache instance attached");
2471 + }
2472 + return current;
2473 + };
2474 + CacheStorage.attachInstance = function (cache) {
2475 + CacheStorage._current = cache;
2476 + };
2477 + CacheStorage.detachInstance = function () {
2478 + CacheStorage._current = null;
2479 + };
2480 + CacheStorage._caches = {};
2481 + CacheStorage._origin = 'about:blank';
2482 + CacheStorage._current = null;
2483 + return CacheStorage;
2484 + }());
2485 + var Cache = /** @class */ (function () {
2486 + function Cache(id, options) {
2487 + this.id = id;
2488 + this._options = options;
2489 + this._cache = {};
2490 + }
2491 + Cache.prototype.addImage = function (src) {
2492 + var result = Promise.resolve();
2493 + if (this.has(src)) {
2494 + return result;
2495 + }
2496 + if (isBlobImage(src) || isRenderable(src)) {
2497 + this._cache[src] = this.loadImage(src);
2498 + return result;
2499 + }
2500 + return result;
2501 + };
2502 + // eslint-disable-next-line @typescript-eslint/no-explicit-any
2503 + Cache.prototype.match = function (src) {
2504 + return this._cache[src];
2505 + };
2506 + Cache.prototype.loadImage = function (key) {
2507 + return __awaiter(this, void 0, void 0, function () {
2508 + var isSameOrigin, useCORS, useProxy, src;
2509 + var _this = this;
2510 + return __generator(this, function (_a) {
2511 + switch (_a.label) {
2512 + case 0:
2513 + isSameOrigin = CacheStorage.isSameOrigin(key);
2514 + useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;
2515 + useProxy = !isInlineImage(key) &&
2516 + !isSameOrigin &&
2517 + typeof this._options.proxy === 'string' &&
2518 + FEATURES.SUPPORT_CORS_XHR &&
2519 + !useCORS;
2520 + if (!isSameOrigin && this._options.allowTaint === false && !isInlineImage(key) && !useProxy && !useCORS) {
2521 + return [2 /*return*/];
2522 + }
2523 + src = key;
2524 + if (!useProxy) return [3 /*break*/, 2];
2525 + return [4 /*yield*/, this.proxy(src)];
2526 + case 1:
2527 + src = _a.sent();
2528 + _a.label = 2;
2529 + case 2:
2530 + Logger.getInstance(this.id).debug("Added image " + key.substring(0, 256));
2531 + return [4 /*yield*/, new Promise(function (resolve, reject) {
2532 + var img = new Image();
2533 + img.onload = function () { return resolve(img); };
2534 + img.onerror = reject;
2535 + //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous
2536 + if (isInlineBase64Image(src) || useCORS) {
2537 + img.crossOrigin = 'anonymous';
2538 + }
2539 + img.src = src;
2540 + if (img.complete === true) {
2541 + // Inline XML images may fail to parse, throwing an Error later on
2542 + setTimeout(function () { return resolve(img); }, 500);
2543 + }
2544 + if (_this._options.imageTimeout > 0) {
2545 + setTimeout(function () { return reject("Timed out (" + _this._options.imageTimeout + "ms) loading image"); }, _this._options.imageTimeout);
2546 + }
2547 + })];
2548 + case 3: return [2 /*return*/, _a.sent()];
2549 + }
2550 + });
2551 + });
2552 + };
2553 + Cache.prototype.has = function (key) {
2554 + return typeof this._cache[key] !== 'undefined';
2555 + };
2556 + Cache.prototype.keys = function () {
2557 + return Promise.resolve(Object.keys(this._cache));
2558 + };
2559 + Cache.prototype.proxy = function (src) {
2560 + var _this = this;
2561 + var proxy = this._options.proxy;
2562 + if (!proxy) {
2563 + throw new Error('No proxy defined');
2564 + }
2565 + var key = src.substring(0, 256);
2566 + return new Promise(function (resolve, reject) {
2567 + var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';
2568 + var xhr = new XMLHttpRequest();
2569 + xhr.onload = function () {
2570 + if (xhr.status === 200) {
2571 + if (responseType === 'text') {
2572 + resolve(xhr.response);
2573 + }
2574 + else {
2575 + var reader_1 = new FileReader();
2576 + reader_1.addEventListener('load', function () { return resolve(reader_1.result); }, false);
2577 + reader_1.addEventListener('error', function (e) { return reject(e); }, false);
2578 + reader_1.readAsDataURL(xhr.response);
2579 + }
2580 + }
2581 + else {
2582 + reject("Failed to proxy resource " + key + " with status code " + xhr.status);
2583 + }
2584 + };
2585 + xhr.onerror = reject;
2586 + xhr.open('GET', proxy + "?url=" + encodeURIComponent(src) + "&responseType=" + responseType);
2587 + if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {
2588 + xhr.responseType = responseType;
2589 + }
2590 + if (_this._options.imageTimeout) {
2591 + var timeout_1 = _this._options.imageTimeout;
2592 + xhr.timeout = timeout_1;
2593 + xhr.ontimeout = function () { return reject("Timed out (" + timeout_1 + "ms) proxying " + key); };
2594 + }
2595 + xhr.send();
2596 + });
2597 + };
2598 + return Cache;
2599 + }());
2600 + var INLINE_SVG = /^data:image\/svg\+xml/i;
2601 + var INLINE_BASE64 = /^data:image\/.*;base64,/i;
2602 + var INLINE_IMG = /^data:image\/.*/i;
2603 + var isRenderable = function (src) { return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src); };
2604 + var isInlineImage = function (src) { return INLINE_IMG.test(src); };
2605 + var isInlineBase64Image = function (src) { return INLINE_BASE64.test(src); };
2606 + var isBlobImage = function (src) { return src.substr(0, 4) === 'blob'; };
2607 + var isSVG = function (src) { return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); };
2608 +
2609 + var webkitGradient = function (tokens) {
2230 2610 var angle = deg(180);
2231 2611 var stops = [];
2232 - var type = 1 /* LINEAR_GRADIENT */;
2233 - var shape = 0 /* CIRCLE */;
2234 - var size = 3 /* FARTHEST_CORNER */;
2612 + var type = CSSImageType.LINEAR_GRADIENT;
2613 + var shape = CSSRadialShape.CIRCLE;
2614 + var size = CSSRadialExtent.FARTHEST_CORNER;
2235 2615 var position = [];
2236 2616 parseFunctionArgs(tokens).forEach(function (arg, i) {
2237 2617 var firstToken = arg[0];
2238 2618 if (i === 0) {
2239 2619 if (isIdentToken(firstToken) && firstToken.value === 'linear') {
2240 - type = 1 /* LINEAR_GRADIENT */;
2620 + type = CSSImageType.LINEAR_GRADIENT;
2241 2621 return;
2242 2622 }
2243 2623 else if (isIdentToken(firstToken) && firstToken.value === 'radial') {
2244 - type = 2 /* RADIAL_GRADIENT */;
2624 + type = CSSImageType.RADIAL_GRADIENT;
2245 2625 return;
2246 2626 }
2247 2627 }
2248 - if (firstToken.type === 18 /* FUNCTION */) {
2628 + if (firstToken.type === TokenType.FUNCTION) {
2249 2629 if (firstToken.name === 'from') {
2250 - var color = color$1.parse(context, firstToken.values[0]);
2251 - stops.push({ stop: ZERO_LENGTH, color: color });
2630 + var color$1 = color.parse(firstToken.values[0]);
2631 + stops.push({ stop: ZERO_LENGTH, color: color$1 });
2252 2632 }
2253 2633 else if (firstToken.name === 'to') {
2254 - var color = color$1.parse(context, firstToken.values[0]);
2255 - stops.push({ stop: HUNDRED_PERCENT, color: color });
2634 + var color$1 = color.parse(firstToken.values[0]);
2635 + stops.push({ stop: HUNDRED_PERCENT, color: color$1 });
2256 2636 }
2257 2637 else if (firstToken.name === 'color-stop') {
2258 2638 var values = firstToken.values.filter(nonFunctionArgSeparator);
2259 2639 if (values.length === 2) {
2260 - var color = color$1.parse(context, values[1]);
2640 + var color$1 = color.parse(values[1]);
2261 2641 var stop_1 = values[0];
2262 2642 if (isNumberToken(stop_1)) {
2263 2643 stops.push({
2264 - stop: { type: 16 /* PERCENTAGE_TOKEN */, number: stop_1.number * 100, flags: stop_1.flags },
2265 - color: color
2644 + stop: { type: TokenType.PERCENTAGE_TOKEN, number: stop_1.number * 100, flags: stop_1.flags },
2645 + color: color$1
2266 2646 });
2267 2647 }
2268 2648 }
2269 2649 }
@@ -2268,9 +2648,9 @@
2268 2648 }
2269 2649 }
2270 2650 }
2271 2651 });
2272 - return type === 1 /* LINEAR_GRADIENT */
2652 + return type === CSSImageType.LINEAR_GRADIENT
2273 2653 ? {
2274 2654 angle: (angle + deg(180)) % deg(360),
2275 2655 stops: stops,
2276 2656 type: type
@@ -2285,11 +2665,11 @@
2285 2665 var CIRCLE = 'circle';
2286 2666 var ELLIPSE = 'ellipse';
2287 2667 var COVER = 'cover';
2288 2668 var CONTAIN = 'contain';
2289 - var radialGradient = function (context, tokens) {
2290 - var shape = 0 /* CIRCLE */;
2291 - var size = 3 /* FARTHEST_CORNER */;
2669 + var radialGradient = function (tokens) {
2670 + var shape = CSSRadialShape.CIRCLE;
2671 + var size = CSSRadialExtent.FARTHEST_CORNER;
2292 2672 var stops = [];
2293 2673 var position = [];
2294 2674 parseFunctionArgs(tokens).forEach(function (arg, i) {
2295 2675 var isColorStop = true;
@@ -2318,29 +2698,29 @@
2318 2698 }
2319 2699 else if (isIdentToken(token)) {
2320 2700 switch (token.value) {
2321 2701 case CIRCLE:
2322 - shape = 0 /* CIRCLE */;
2702 + shape = CSSRadialShape.CIRCLE;
2323 2703 return false;
2324 2704 case ELLIPSE:
2325 - shape = 1 /* ELLIPSE */;
2705 + shape = CSSRadialShape.ELLIPSE;
2326 2706 return false;
2327 2707 case 'at':
2328 2708 isAtPosition_1 = true;
2329 2709 return false;
2330 2710 case CLOSEST_SIDE:
2331 - size = 0 /* CLOSEST_SIDE */;
2711 + size = CSSRadialExtent.CLOSEST_SIDE;
2332 2712 return false;
2333 2713 case COVER:
2334 2714 case FARTHEST_SIDE:
2335 - size = 1 /* FARTHEST_SIDE */;
2715 + size = CSSRadialExtent.FARTHEST_SIDE;
2336 2716 return false;
2337 2717 case CONTAIN:
2338 2718 case CLOSEST_CORNER:
2339 - size = 2 /* CLOSEST_CORNER */;
2719 + size = CSSRadialExtent.CLOSEST_CORNER;
2340 2720 return false;
2341 2721 case FARTHEST_CORNER:
2342 - size = 3 /* FARTHEST_CORNER */;
2722 + size = CSSRadialExtent.FARTHEST_CORNER;
2343 2723 return false;
2344 2724 }
2345 2725 }
2346 2726 else if (isLength(token) || isLengthPercentage(token)) {
@@ -2353,18 +2733,18 @@
2353 2733 return acc;
2354 2734 }, isColorStop);
2355 2735 }
2356 2736 if (isColorStop) {
2357 - var colorStop = parseColorStop(context, arg);
2737 + var colorStop = parseColorStop(arg);
2358 2738 stops.push(colorStop);
2359 2739 }
2360 2740 });
2361 - return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };
2741 + return { size: size, shape: shape, stops: stops, position: position, type: CSSImageType.RADIAL_GRADIENT };
2362 2742 };
2363 2743
2364 - var prefixRadialGradient = function (context, tokens) {
2365 - var shape = 0 /* CIRCLE */;
2366 - var size = 3 /* FARTHEST_CORNER */;
2744 + var prefixRadialGradient = function (tokens) {
2745 + var shape = CSSRadialShape.CIRCLE;
2746 + var size = CSSRadialExtent.FARTHEST_CORNER;
2367 2747 var stops = [];
2368 2748 var position = [];
2369 2749 parseFunctionArgs(tokens).forEach(function (arg, i) {
2370 2750 var isColorStop = true;
@@ -2396,26 +2776,26 @@
2396 2776 isColorStop = arg.reduce(function (acc, token) {
2397 2777 if (isIdentToken(token)) {
2398 2778 switch (token.value) {
2399 2779 case CIRCLE:
2400 - shape = 0 /* CIRCLE */;
2780 + shape = CSSRadialShape.CIRCLE;
2401 2781 return false;
2402 2782 case ELLIPSE:
2403 - shape = 1 /* ELLIPSE */;
2783 + shape = CSSRadialShape.ELLIPSE;
2404 2784 return false;
2405 2785 case CONTAIN:
2406 2786 case CLOSEST_SIDE:
2407 - size = 0 /* CLOSEST_SIDE */;
2787 + size = CSSRadialExtent.CLOSEST_SIDE;
2408 2788 return false;
2409 2789 case FARTHEST_SIDE:
2410 - size = 1 /* FARTHEST_SIDE */;
2790 + size = CSSRadialExtent.FARTHEST_SIDE;
2411 2791 return false;
2412 2792 case CLOSEST_CORNER:
2413 - size = 2 /* CLOSEST_CORNER */;
2793 + size = CSSRadialExtent.CLOSEST_CORNER;
2414 2794 return false;
2415 2795 case COVER:
2416 2796 case FARTHEST_CORNER:
2417 - size = 3 /* FARTHEST_CORNER */;
2797 + size = CSSRadialExtent.FARTHEST_CORNER;
2418 2798 return false;
2419 2799 }
2420 2800 }
2421 2801 else if (isLength(token) || isLengthPercentage(token)) {
@@ -2428,42 +2808,59 @@
2428 2808 return acc;
2429 2809 }, isColorStop);
2430 2810 }
2431 2811 if (isColorStop) {
2432 - var colorStop = parseColorStop(context, arg);
2812 + var colorStop = parseColorStop(arg);
2433 2813 stops.push(colorStop);
2434 2814 }
2435 2815 });
2436 - return { size: size, shape: shape, stops: stops, position: position, type: 2 /* RADIAL_GRADIENT */ };
2816 + return { size: size, shape: shape, stops: stops, position: position, type: CSSImageType.RADIAL_GRADIENT };
2437 2817 };
2438 2818
2819 + var CSSImageType;
2820 + (function (CSSImageType) {
2821 + CSSImageType[CSSImageType["URL"] = 0] = "URL";
2822 + CSSImageType[CSSImageType["LINEAR_GRADIENT"] = 1] = "LINEAR_GRADIENT";
2823 + CSSImageType[CSSImageType["RADIAL_GRADIENT"] = 2] = "RADIAL_GRADIENT";
2824 + })(CSSImageType || (CSSImageType = {}));
2439 2825 var isLinearGradient = function (background) {
2440 - return background.type === 1 /* LINEAR_GRADIENT */;
2826 + return background.type === CSSImageType.LINEAR_GRADIENT;
2441 2827 };
2442 2828 var isRadialGradient = function (background) {
2443 - return background.type === 2 /* RADIAL_GRADIENT */;
2829 + return background.type === CSSImageType.RADIAL_GRADIENT;
2444 2830 };
2831 + var CSSRadialShape;
2832 + (function (CSSRadialShape) {
2833 + CSSRadialShape[CSSRadialShape["CIRCLE"] = 0] = "CIRCLE";
2834 + CSSRadialShape[CSSRadialShape["ELLIPSE"] = 1] = "ELLIPSE";
2835 + })(CSSRadialShape || (CSSRadialShape = {}));
2836 + var CSSRadialExtent;
2837 + (function (CSSRadialExtent) {
2838 + CSSRadialExtent[CSSRadialExtent["CLOSEST_SIDE"] = 0] = "CLOSEST_SIDE";
2839 + CSSRadialExtent[CSSRadialExtent["FARTHEST_SIDE"] = 1] = "FARTHEST_SIDE";
2840 + CSSRadialExtent[CSSRadialExtent["CLOSEST_CORNER"] = 2] = "CLOSEST_CORNER";
2841 + CSSRadialExtent[CSSRadialExtent["FARTHEST_CORNER"] = 3] = "FARTHEST_CORNER";
2842 + })(CSSRadialExtent || (CSSRadialExtent = {}));
2445 2843 var image = {
2446 2844 name: 'image',
2447 - parse: function (context, value) {
2448 - if (value.type === 22 /* URL_TOKEN */) {
2449 - var image_1 = { url: value.value, type: 0 /* URL */ };
2450 - context.cache.addImage(value.value);
2845 + parse: function (value) {
2846 + if (value.type === TokenType.URL_TOKEN) {
2847 + var image_1 = { url: value.value, type: CSSImageType.URL };
2848 + CacheStorage.getInstance().addImage(value.value);
2451 2849 return image_1;
2452 2850 }
2453 - if (value.type === 18 /* FUNCTION */) {
2851 + if (value.type === TokenType.FUNCTION) {
2454 2852 var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];
2455 2853 if (typeof imageFunction === 'undefined') {
2456 2854 throw new Error("Attempting to parse an unsupported image function \"" + value.name + "\"");
2457 2855 }
2458 - return imageFunction(context, value.values);
2856 + return imageFunction(value.values);
2459 2857 }
2460 - throw new Error("Unsupported image type " + value.type);
2858 + throw new Error("Unsupported image type");
2461 2859 }
2462 2860 };
2463 2861 function isSupportedImage(value) {
2464 - return (!(value.type === 20 /* IDENT_TOKEN */ && value.value === 'none') &&
2465 - (value.type !== 18 /* FUNCTION */ || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]));
2862 + return value.type !== TokenType.FUNCTION || SUPPORTED_IMAGE_FUNCTIONS[value.name];
2466 2863 }
2467 2864 var SUPPORTED_IMAGE_FUNCTIONS = {
2468 2865 'linear-gradient': linearGradient,
2469 2866 '-moz-linear-gradient': prefixLinearGradient,
@@ -2480,21 +2877,19 @@
2480 2877
2481 2878 var backgroundImage = {
2482 2879 name: 'background-image',
2483 2880 initialValue: 'none',
2484 - type: 1 /* LIST */,
2881 + type: PropertyDescriptorParsingType.LIST,
2485 2882 prefix: false,
2486 - parse: function (context, tokens) {
2883 + parse: function (tokens) {
2487 2884 if (tokens.length === 0) {
2488 2885 return [];
2489 2886 }
2490 2887 var first = tokens[0];
2491 - if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {
2888 + if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {
2492 2889 return [];
2493 2890 }
2494 - return tokens
2495 - .filter(function (value) { return nonFunctionArgSeparator(value) && isSupportedImage(value); })
2496 - .map(function (value) { return image.parse(context, value); });
2891 + return tokens.filter(function (value) { return nonFunctionArgSeparator(value) && isSupportedImage(value); }).map(image.parse);
2497 2892 }
2498 2893 };
2499 2894
2500 2895 var backgroundOrigin = {
@@ -2500,10 +2895,10 @@
2500 2895 var backgroundOrigin = {
2501 2896 name: 'background-origin',
2502 2897 initialValue: 'border-box',
2503 2898 prefix: false,
2504 - type: 1 /* LIST */,
2505 - parse: function (_context, tokens) {
2899 + type: PropertyDescriptorParsingType.LIST,
2900 + parse: function (tokens) {
2506 2901 return tokens.map(function (token) {
2507 2902 if (isIdentToken(token)) {
2508 2903 switch (token.value) {
2509 2904 case 'padding-box':
@@ -2519,11 +2914,11 @@
2519 2914
2520 2915 var backgroundPosition = {
2521 2916 name: 'background-position',
2522 2917 initialValue: '0% 0%',
2523 - type: 1 /* LIST */,
2918 + type: PropertyDescriptorParsingType.LIST,
2524 2919 prefix: false,
2525 - parse: function (_context, tokens) {
2920 + parse: function (tokens) {
2526 2921 return parseFunctionArgs(tokens)
2527 2922 .map(function (values) { return values.filter(isLengthPercentage); })
2528 2923 .map(parseLengthPercentageTuple);
2529 2924 }
@@ -2528,21 +2923,28 @@
2528 2923 .map(parseLengthPercentageTuple);
2529 2924 }
2530 2925 };
2531 2926
2927 + var BACKGROUND_REPEAT;
2928 + (function (BACKGROUND_REPEAT) {
2929 + BACKGROUND_REPEAT[BACKGROUND_REPEAT["REPEAT"] = 0] = "REPEAT";
2930 + BACKGROUND_REPEAT[BACKGROUND_REPEAT["NO_REPEAT"] = 1] = "NO_REPEAT";
2931 + BACKGROUND_REPEAT[BACKGROUND_REPEAT["REPEAT_X"] = 2] = "REPEAT_X";
2932 + BACKGROUND_REPEAT[BACKGROUND_REPEAT["REPEAT_Y"] = 3] = "REPEAT_Y";
2933 + })(BACKGROUND_REPEAT || (BACKGROUND_REPEAT = {}));
2532 2934 var backgroundRepeat = {
2533 2935 name: 'background-repeat',
2534 2936 initialValue: 'repeat',
2535 2937 prefix: false,
2536 - type: 1 /* LIST */,
2537 - parse: function (_context, tokens) {
2938 + type: PropertyDescriptorParsingType.LIST,
2939 + parse: function (tokens) {
2538 2940 return parseFunctionArgs(tokens)
2539 2941 .map(function (values) {
2540 - return values
2541 - .filter(isIdentToken)
2542 - .map(function (token) { return token.value; })
2543 - .join(' ');
2544 - })
2942 + return values
2943 + .filter(isIdentToken)
2944 + .map(function (token) { return token.value; })
2945 + .join(' ');
2946 + })
2545 2947 .map(parseBackgroundRepeat);
2546 2948 }
2547 2949 };
2548 2950 var parseBackgroundRepeat = function (value) {
@@ -2547,18 +2949,18 @@
2547 2949 };
2548 2950 var parseBackgroundRepeat = function (value) {
2549 2951 switch (value) {
2550 2952 case 'no-repeat':
2551 - return 1 /* NO_REPEAT */;
2953 + return BACKGROUND_REPEAT.NO_REPEAT;
2552 2954 case 'repeat-x':
2553 2955 case 'repeat no-repeat':
2554 - return 2 /* REPEAT_X */;
2956 + return BACKGROUND_REPEAT.REPEAT_X;
2555 2957 case 'repeat-y':
2556 2958 case 'no-repeat repeat':
2557 - return 3 /* REPEAT_Y */;
2959 + return BACKGROUND_REPEAT.REPEAT_Y;
2558 2960 case 'repeat':
2559 2961 default:
2560 - return 0 /* REPEAT */;
2962 + return BACKGROUND_REPEAT.REPEAT;
2561 2963 }
2562 2964 };
2563 2965
2564 2966 var BACKGROUND_SIZE;
@@ -2570,10 +2972,10 @@
2570 2972 var backgroundSize = {
2571 2973 name: 'background-size',
2572 2974 initialValue: '0',
2573 2975 prefix: false,
2574 - type: 1 /* LIST */,
2575 - parse: function (_context, tokens) {
2976 + type: PropertyDescriptorParsingType.LIST,
2977 + parse: function (tokens) {
2576 2978 return parseFunctionArgs(tokens).map(function (values) { return values.filter(isBackgroundSizeInfoToken); });
2577 2979 }
2578 2980 };
2579 2981 var isBackgroundSizeInfoToken = function (value) {
@@ -2583,9 +2985,9 @@
2583 2985 var borderColorForSide = function (side) { return ({
2584 2986 name: "border-" + side + "-color",
2585 2987 initialValue: 'transparent',
2586 2988 prefix: false,
2587 - type: 3 /* TYPE_VALUE */,
2989 + type: PropertyDescriptorParsingType.TYPE_VALUE,
2588 2990 format: 'color'
2589 2991 }); };
2590 2992 var borderTopColor = borderColorForSide('top');
2591 2993 var borderRightColor = borderColorForSide('right');
@@ -2595,12 +2997,10 @@
2595 2997 var borderRadiusForSide = function (side) { return ({
2596 2998 name: "border-radius-" + side,
2597 2999 initialValue: '0 0',
2598 3000 prefix: false,
2599 - type: 1 /* LIST */,
2600 - parse: function (_context, tokens) {
2601 - return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));
2602 - }
3001 + type: PropertyDescriptorParsingType.LIST,
3002 + parse: function (tokens) { return parseLengthPercentageTuple(tokens.filter(isLengthPercentage)); }
2603 3003 }); };
2604 3004 var borderTopLeftRadius = borderRadiusForSide('top-left');
2605 3005 var borderTopRightRadius = borderRadiusForSide('top-right');
2606 3006 var borderBottomRightRadius = borderRadiusForSide('bottom-right');
@@ -2605,25 +3005,24 @@
2605 3005 var borderTopRightRadius = borderRadiusForSide('top-right');
2606 3006 var borderBottomRightRadius = borderRadiusForSide('bottom-right');
2607 3007 var borderBottomLeftRadius = borderRadiusForSide('bottom-left');
2608 3008
3009 + var BORDER_STYLE;
3010 + (function (BORDER_STYLE) {
3011 + BORDER_STYLE[BORDER_STYLE["NONE"] = 0] = "NONE";
3012 + BORDER_STYLE[BORDER_STYLE["SOLID"] = 1] = "SOLID";
3013 + })(BORDER_STYLE || (BORDER_STYLE = {}));
2609 3014 var borderStyleForSide = function (side) { return ({
2610 3015 name: "border-" + side + "-style",
2611 3016 initialValue: 'solid',
2612 3017 prefix: false,
2613 - type: 2 /* IDENT_VALUE */,
2614 - parse: function (_context, style) {
3018 + type: PropertyDescriptorParsingType.IDENT_VALUE,
3019 + parse: function (style) {
2615 3020 switch (style) {
2616 3021 case 'none':
2617 - return 0 /* NONE */;
2618 - case 'dashed':
2619 - return 2 /* DASHED */;
2620 - case 'dotted':
2621 - return 3 /* DOTTED */;
2622 - case 'double':
2623 - return 4 /* DOUBLE */;
3022 + return BORDER_STYLE.NONE;
2624 3023 }
2625 - return 1 /* SOLID */;
3024 + return BORDER_STYLE.SOLID;
2626 3025 }
2627 3026 }); };
2628 3027 var borderTopStyle = borderStyleForSide('top');
2629 3028 var borderRightStyle = borderStyleForSide('right');
@@ -2632,11 +3031,11 @@
2632 3031
2633 3032 var borderWidthForSide = function (side) { return ({
2634 3033 name: "border-" + side + "-width",
2635 3034 initialValue: '0',
2636 - type: 0 /* VALUE */,
3035 + type: PropertyDescriptorParsingType.VALUE,
2637 3036 prefix: false,
2638 - parse: function (_context, token) {
3037 + parse: function (token) {
2639 3038 if (isDimensionToken(token)) {
2640 3039 return token.number;
2641 3040 }
2642 3041 return 0;
@@ -2646,38 +3045,22 @@
2646 3045 var borderRightWidth = borderWidthForSide('right');
2647 3046 var borderBottomWidth = borderWidthForSide('bottom');
2648 3047 var borderLeftWidth = borderWidthForSide('left');
2649 3048
2650 - var color = {
3049 + var color$1 = {
2651 3050 name: "color",
2652 3051 initialValue: 'transparent',
2653 3052 prefix: false,
2654 - type: 3 /* TYPE_VALUE */,
3053 + type: PropertyDescriptorParsingType.TYPE_VALUE,
2655 3054 format: 'color'
2656 3055 };
2657 3056
2658 - var direction = {
2659 - name: 'direction',
2660 - initialValue: 'ltr',
2661 - prefix: false,
2662 - type: 2 /* IDENT_VALUE */,
2663 - parse: function (_context, direction) {
2664 - switch (direction) {
2665 - case 'rtl':
2666 - return 1 /* RTL */;
2667 - case 'ltr':
2668 - default:
2669 - return 0 /* LTR */;
2670 - }
2671 - }
2672 - };
2673 -
2674 3057 var display = {
2675 3058 name: 'display',
2676 3059 initialValue: 'inline-block',
2677 3060 prefix: false,
2678 - type: 1 /* LIST */,
2679 - parse: function (_context, tokens) {
3061 + type: PropertyDescriptorParsingType.LIST,
3062 + parse: function (tokens) {
2680 3063 return tokens.filter(isIdentToken).reduce(function (bit, token) {
2681 3064 return bit | parseDisplayValue(token.value);
2682 3065 }, 0 /* NONE */);
2683 3066 }
@@ -2684,9 +3067,8 @@
2684 3067 };
2685 3068 var parseDisplayValue = function (display) {
2686 3069 switch (display) {
2687 3070 case 'block':
2688 - case '-webkit-box':
2689 3071 return 2 /* BLOCK */;
2690 3072 case 'inline':
2691 3073 return 4 /* INLINE */;
2692 3074 case 'run-in':
@@ -2748,25 +3130,33 @@
2748 3130 }
2749 3131 return 0 /* NONE */;
2750 3132 };
2751 3133
3134 + var FLOAT;
3135 + (function (FLOAT) {
3136 + FLOAT[FLOAT["NONE"] = 0] = "NONE";
3137 + FLOAT[FLOAT["LEFT"] = 1] = "LEFT";
3138 + FLOAT[FLOAT["RIGHT"] = 2] = "RIGHT";
3139 + FLOAT[FLOAT["INLINE_START"] = 3] = "INLINE_START";
3140 + FLOAT[FLOAT["INLINE_END"] = 4] = "INLINE_END";
3141 + })(FLOAT || (FLOAT = {}));
2752 3142 var float = {
2753 3143 name: 'float',
2754 3144 initialValue: 'none',
2755 3145 prefix: false,
2756 - type: 2 /* IDENT_VALUE */,
2757 - parse: function (_context, float) {
3146 + type: PropertyDescriptorParsingType.IDENT_VALUE,
3147 + parse: function (float) {
2758 3148 switch (float) {
2759 3149 case 'left':
2760 - return 1 /* LEFT */;
3150 + return FLOAT.LEFT;
2761 3151 case 'right':
2762 - return 2 /* RIGHT */;
3152 + return FLOAT.RIGHT;
2763 3153 case 'inline-start':
2764 - return 3 /* INLINE_START */;
3154 + return FLOAT.INLINE_START;
2765 3155 case 'inline-end':
2766 - return 4 /* INLINE_END */;
3156 + return FLOAT.INLINE_END;
2767 3157 }
2768 - return 0 /* NONE */;
3158 + return FLOAT.NONE;
2769 3159 }
2770 3160 };
2771 3161
2772 3162 var letterSpacing = {
@@ -2772,17 +3162,17 @@
2772 3162 var letterSpacing = {
2773 3163 name: 'letter-spacing',
2774 3164 initialValue: '0',
2775 3165 prefix: false,
2776 - type: 0 /* VALUE */,
2777 - parse: function (_context, token) {
2778 - if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'normal') {
3166 + type: PropertyDescriptorParsingType.VALUE,
3167 + parse: function (token) {
3168 + if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {
2779 3169 return 0;
2780 3170 }
2781 - if (token.type === 17 /* NUMBER_TOKEN */) {
3171 + if (token.type === TokenType.NUMBER_TOKEN) {
2782 3172 return token.number;
2783 3173 }
2784 - if (token.type === 15 /* DIMENSION_TOKEN */) {
3174 + if (token.type === TokenType.DIMENSION_TOKEN) {
2785 3175 return token.number;
2786 3176 }
2787 3177 return 0;
2788 3178 }
@@ -2796,10 +3186,10 @@
2796 3186 var lineBreak = {
2797 3187 name: 'line-break',
2798 3188 initialValue: 'normal',
2799 3189 prefix: false,
2800 - type: 2 /* IDENT_VALUE */,
2801 - parse: function (_context, lineBreak) {
3190 + type: PropertyDescriptorParsingType.IDENT_VALUE,
3191 + parse: function (lineBreak) {
2802 3192 switch (lineBreak) {
2803 3193 case 'strict':
2804 3194 return LINE_BREAK.STRICT;
2805 3195 case 'normal':
@@ -2812,15 +3202,15 @@
2812 3202 var lineHeight = {
2813 3203 name: 'line-height',
2814 3204 initialValue: 'normal',
2815 3205 prefix: false,
2816 - type: 4 /* TOKEN_VALUE */
3206 + type: PropertyDescriptorParsingType.TOKEN_VALUE
2817 3207 };
2818 3208 var computeLineHeight = function (token, fontSize) {
2819 3209 if (isIdentToken(token) && token.value === 'normal') {
2820 3210 return 1.2 * fontSize;
2821 3211 }
2822 - else if (token.type === 17 /* NUMBER_TOKEN */) {
3212 + else if (token.type === TokenType.NUMBER_TOKEN) {
2823 3213 return fontSize * token.number;
2824 3214 }
2825 3215 else if (isLengthPercentage(token)) {
2826 3216 return getAbsoluteValue(token, fontSize);
@@ -2830,150 +3220,212 @@
2830 3220
2831 3221 var listStyleImage = {
2832 3222 name: 'list-style-image',
2833 3223 initialValue: 'none',
2834 - type: 0 /* VALUE */,
3224 + type: PropertyDescriptorParsingType.VALUE,
2835 3225 prefix: false,
2836 - parse: function (context, token) {
2837 - if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {
3226 + parse: function (token) {
3227 + if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {
2838 3228 return null;
2839 3229 }
2840 - return image.parse(context, token);
3230 + return image.parse(token);
2841 3231 }
2842 3232 };
2843 3233
3234 + var LIST_STYLE_POSITION;
3235 + (function (LIST_STYLE_POSITION) {
3236 + LIST_STYLE_POSITION[LIST_STYLE_POSITION["INSIDE"] = 0] = "INSIDE";
3237 + LIST_STYLE_POSITION[LIST_STYLE_POSITION["OUTSIDE"] = 1] = "OUTSIDE";
3238 + })(LIST_STYLE_POSITION || (LIST_STYLE_POSITION = {}));
2844 3239 var listStylePosition = {
2845 3240 name: 'list-style-position',
2846 3241 initialValue: 'outside',
2847 3242 prefix: false,
2848 - type: 2 /* IDENT_VALUE */,
2849 - parse: function (_context, position) {
3243 + type: PropertyDescriptorParsingType.IDENT_VALUE,
3244 + parse: function (position) {
2850 3245 switch (position) {
2851 3246 case 'inside':
2852 - return 0 /* INSIDE */;
3247 + return LIST_STYLE_POSITION.INSIDE;
2853 3248 case 'outside':
2854 3249 default:
2855 - return 1 /* OUTSIDE */;
3250 + return LIST_STYLE_POSITION.OUTSIDE;
2856 3251 }
2857 3252 }
2858 3253 };
2859 3254
3255 + var LIST_STYLE_TYPE;
3256 + (function (LIST_STYLE_TYPE) {
3257 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["NONE"] = -1] = "NONE";
3258 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["DISC"] = 0] = "DISC";
3259 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["CIRCLE"] = 1] = "CIRCLE";
3260 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["SQUARE"] = 2] = "SQUARE";
3261 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["DECIMAL"] = 3] = "DECIMAL";
3262 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["CJK_DECIMAL"] = 4] = "CJK_DECIMAL";
3263 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["DECIMAL_LEADING_ZERO"] = 5] = "DECIMAL_LEADING_ZERO";
3264 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["LOWER_ROMAN"] = 6] = "LOWER_ROMAN";
3265 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["UPPER_ROMAN"] = 7] = "UPPER_ROMAN";
3266 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["LOWER_GREEK"] = 8] = "LOWER_GREEK";
3267 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["LOWER_ALPHA"] = 9] = "LOWER_ALPHA";
3268 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["UPPER_ALPHA"] = 10] = "UPPER_ALPHA";
3269 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["ARABIC_INDIC"] = 11] = "ARABIC_INDIC";
3270 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["ARMENIAN"] = 12] = "ARMENIAN";
3271 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["BENGALI"] = 13] = "BENGALI";
3272 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["CAMBODIAN"] = 14] = "CAMBODIAN";
3273 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["CJK_EARTHLY_BRANCH"] = 15] = "CJK_EARTHLY_BRANCH";
3274 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["CJK_HEAVENLY_STEM"] = 16] = "CJK_HEAVENLY_STEM";
3275 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["CJK_IDEOGRAPHIC"] = 17] = "CJK_IDEOGRAPHIC";
3276 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["DEVANAGARI"] = 18] = "DEVANAGARI";
3277 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["ETHIOPIC_NUMERIC"] = 19] = "ETHIOPIC_NUMERIC";
3278 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["GEORGIAN"] = 20] = "GEORGIAN";
3279 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["GUJARATI"] = 21] = "GUJARATI";
3280 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["GURMUKHI"] = 22] = "GURMUKHI";
3281 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["HEBREW"] = 22] = "HEBREW";
3282 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["HIRAGANA"] = 23] = "HIRAGANA";
3283 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["HIRAGANA_IROHA"] = 24] = "HIRAGANA_IROHA";
3284 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["JAPANESE_FORMAL"] = 25] = "JAPANESE_FORMAL";
3285 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["JAPANESE_INFORMAL"] = 26] = "JAPANESE_INFORMAL";
3286 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["KANNADA"] = 27] = "KANNADA";
3287 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["KATAKANA"] = 28] = "KATAKANA";
3288 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["KATAKANA_IROHA"] = 29] = "KATAKANA_IROHA";
3289 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["KHMER"] = 30] = "KHMER";
3290 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["KOREAN_HANGUL_FORMAL"] = 31] = "KOREAN_HANGUL_FORMAL";
3291 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["KOREAN_HANJA_FORMAL"] = 32] = "KOREAN_HANJA_FORMAL";
3292 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["KOREAN_HANJA_INFORMAL"] = 33] = "KOREAN_HANJA_INFORMAL";
3293 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["LAO"] = 34] = "LAO";
3294 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["LOWER_ARMENIAN"] = 35] = "LOWER_ARMENIAN";
3295 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["MALAYALAM"] = 36] = "MALAYALAM";
3296 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["MONGOLIAN"] = 37] = "MONGOLIAN";
3297 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["MYANMAR"] = 38] = "MYANMAR";
3298 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["ORIYA"] = 39] = "ORIYA";
3299 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["PERSIAN"] = 40] = "PERSIAN";
3300 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["SIMP_CHINESE_FORMAL"] = 41] = "SIMP_CHINESE_FORMAL";
3301 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["SIMP_CHINESE_INFORMAL"] = 42] = "SIMP_CHINESE_INFORMAL";
3302 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["TAMIL"] = 43] = "TAMIL";
3303 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["TELUGU"] = 44] = "TELUGU";
3304 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["THAI"] = 45] = "THAI";
3305 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["TIBETAN"] = 46] = "TIBETAN";
3306 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["TRAD_CHINESE_FORMAL"] = 47] = "TRAD_CHINESE_FORMAL";
3307 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["TRAD_CHINESE_INFORMAL"] = 48] = "TRAD_CHINESE_INFORMAL";
3308 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["UPPER_ARMENIAN"] = 49] = "UPPER_ARMENIAN";
3309 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["DISCLOSURE_OPEN"] = 50] = "DISCLOSURE_OPEN";
3310 + LIST_STYLE_TYPE[LIST_STYLE_TYPE["DISCLOSURE_CLOSED"] = 51] = "DISCLOSURE_CLOSED";
3311 + })(LIST_STYLE_TYPE || (LIST_STYLE_TYPE = {}));
2860 3312 var listStyleType = {
2861 3313 name: 'list-style-type',
2862 3314 initialValue: 'none',
2863 3315 prefix: false,
2864 - type: 2 /* IDENT_VALUE */,
2865 - parse: function (_context, type) {
3316 + type: PropertyDescriptorParsingType.IDENT_VALUE,
3317 + parse: function (type) {
2866 3318 switch (type) {
2867 3319 case 'disc':
2868 - return 0 /* DISC */;
3320 + return LIST_STYLE_TYPE.DISC;
2869 3321 case 'circle':
2870 - return 1 /* CIRCLE */;
3322 + return LIST_STYLE_TYPE.CIRCLE;
2871 3323 case 'square':
2872 - return 2 /* SQUARE */;
3324 + return LIST_STYLE_TYPE.SQUARE;
2873 3325 case 'decimal':
2874 - return 3 /* DECIMAL */;
3326 + return LIST_STYLE_TYPE.DECIMAL;
2875 3327 case 'cjk-decimal':
2876 - return 4 /* CJK_DECIMAL */;
3328 + return LIST_STYLE_TYPE.CJK_DECIMAL;
2877 3329 case 'decimal-leading-zero':
2878 - return 5 /* DECIMAL_LEADING_ZERO */;
3330 + return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;
2879 3331 case 'lower-roman':
2880 - return 6 /* LOWER_ROMAN */;
3332 + return LIST_STYLE_TYPE.LOWER_ROMAN;
2881 3333 case 'upper-roman':
2882 - return 7 /* UPPER_ROMAN */;
3334 + return LIST_STYLE_TYPE.UPPER_ROMAN;
2883 3335 case 'lower-greek':
2884 - return 8 /* LOWER_GREEK */;
3336 + return LIST_STYLE_TYPE.LOWER_GREEK;
2885 3337 case 'lower-alpha':
2886 - return 9 /* LOWER_ALPHA */;
3338 + return LIST_STYLE_TYPE.LOWER_ALPHA;
2887 3339 case 'upper-alpha':
2888 - return 10 /* UPPER_ALPHA */;
3340 + return LIST_STYLE_TYPE.UPPER_ALPHA;
2889 3341 case 'arabic-indic':
2890 - return 11 /* ARABIC_INDIC */;
3342 + return LIST_STYLE_TYPE.ARABIC_INDIC;
2891 3343 case 'armenian':
2892 - return 12 /* ARMENIAN */;
3344 + return LIST_STYLE_TYPE.ARMENIAN;
2893 3345 case 'bengali':
2894 - return 13 /* BENGALI */;
3346 + return LIST_STYLE_TYPE.BENGALI;
2895 3347 case 'cambodian':
2896 - return 14 /* CAMBODIAN */;
3348 + return LIST_STYLE_TYPE.CAMBODIAN;
2897 3349 case 'cjk-earthly-branch':
2898 - return 15 /* CJK_EARTHLY_BRANCH */;
3350 + return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;
2899 3351 case 'cjk-heavenly-stem':
2900 - return 16 /* CJK_HEAVENLY_STEM */;
3352 + return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;
2901 3353 case 'cjk-ideographic':
2902 - return 17 /* CJK_IDEOGRAPHIC */;
3354 + return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;
2903 3355 case 'devanagari':
2904 - return 18 /* DEVANAGARI */;
3356 + return LIST_STYLE_TYPE.DEVANAGARI;
2905 3357 case 'ethiopic-numeric':
2906 - return 19 /* ETHIOPIC_NUMERIC */;
3358 + return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;
2907 3359 case 'georgian':
2908 - return 20 /* GEORGIAN */;
3360 + return LIST_STYLE_TYPE.GEORGIAN;
2909 3361 case 'gujarati':
2910 - return 21 /* GUJARATI */;
3362 + return LIST_STYLE_TYPE.GUJARATI;
2911 3363 case 'gurmukhi':
2912 - return 22 /* GURMUKHI */;
3364 + return LIST_STYLE_TYPE.GURMUKHI;
2913 3365 case 'hebrew':
2914 - return 22 /* HEBREW */;
3366 + return LIST_STYLE_TYPE.HEBREW;
2915 3367 case 'hiragana':
2916 - return 23 /* HIRAGANA */;
3368 + return LIST_STYLE_TYPE.HIRAGANA;
2917 3369 case 'hiragana-iroha':
2918 - return 24 /* HIRAGANA_IROHA */;
3370 + return LIST_STYLE_TYPE.HIRAGANA_IROHA;
2919 3371 case 'japanese-formal':
2920 - return 25 /* JAPANESE_FORMAL */;
3372 + return LIST_STYLE_TYPE.JAPANESE_FORMAL;
2921 3373 case 'japanese-informal':
2922 - return 26 /* JAPANESE_INFORMAL */;
3374 + return LIST_STYLE_TYPE.JAPANESE_INFORMAL;
2923 3375 case 'kannada':
2924 - return 27 /* KANNADA */;
3376 + return LIST_STYLE_TYPE.KANNADA;
2925 3377 case 'katakana':
2926 - return 28 /* KATAKANA */;
3378 + return LIST_STYLE_TYPE.KATAKANA;
2927 3379 case 'katakana-iroha':
2928 - return 29 /* KATAKANA_IROHA */;
3380 + return LIST_STYLE_TYPE.KATAKANA_IROHA;
2929 3381 case 'khmer':
2930 - return 30 /* KHMER */;
3382 + return LIST_STYLE_TYPE.KHMER;
2931 3383 case 'korean-hangul-formal':
2932 - return 31 /* KOREAN_HANGUL_FORMAL */;
3384 + return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;
2933 3385 case 'korean-hanja-formal':
2934 - return 32 /* KOREAN_HANJA_FORMAL */;
3386 + return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;
2935 3387 case 'korean-hanja-informal':
2936 - return 33 /* KOREAN_HANJA_INFORMAL */;
3388 + return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;
2937 3389 case 'lao':
2938 - return 34 /* LAO */;
3390 + return LIST_STYLE_TYPE.LAO;
2939 3391 case 'lower-armenian':
2940 - return 35 /* LOWER_ARMENIAN */;
3392 + return LIST_STYLE_TYPE.LOWER_ARMENIAN;
2941 3393 case 'malayalam':
2942 - return 36 /* MALAYALAM */;
3394 + return LIST_STYLE_TYPE.MALAYALAM;
2943 3395 case 'mongolian':
2944 - return 37 /* MONGOLIAN */;
3396 + return LIST_STYLE_TYPE.MONGOLIAN;
2945 3397 case 'myanmar':
2946 - return 38 /* MYANMAR */;
3398 + return LIST_STYLE_TYPE.MYANMAR;
2947 3399 case 'oriya':
2948 - return 39 /* ORIYA */;
3400 + return LIST_STYLE_TYPE.ORIYA;
2949 3401 case 'persian':
2950 - return 40 /* PERSIAN */;
3402 + return LIST_STYLE_TYPE.PERSIAN;
2951 3403 case 'simp-chinese-formal':
2952 - return 41 /* SIMP_CHINESE_FORMAL */;
3404 + return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;
2953 3405 case 'simp-chinese-informal':
2954 - return 42 /* SIMP_CHINESE_INFORMAL */;
3406 + return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;
2955 3407 case 'tamil':
2956 - return 43 /* TAMIL */;
3408 + return LIST_STYLE_TYPE.TAMIL;
2957 3409 case 'telugu':
2958 - return 44 /* TELUGU */;
3410 + return LIST_STYLE_TYPE.TELUGU;
2959 3411 case 'thai':
2960 - return 45 /* THAI */;
3412 + return LIST_STYLE_TYPE.THAI;
2961 3413 case 'tibetan':
2962 - return 46 /* TIBETAN */;
3414 + return LIST_STYLE_TYPE.TIBETAN;
2963 3415 case 'trad-chinese-formal':
2964 - return 47 /* TRAD_CHINESE_FORMAL */;
3416 + return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;
2965 3417 case 'trad-chinese-informal':
2966 - return 48 /* TRAD_CHINESE_INFORMAL */;
3418 + return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;
2967 3419 case 'upper-armenian':
2968 - return 49 /* UPPER_ARMENIAN */;
3420 + return LIST_STYLE_TYPE.UPPER_ARMENIAN;
2969 3421 case 'disclosure-open':
2970 - return 50 /* DISCLOSURE_OPEN */;
3422 + return LIST_STYLE_TYPE.DISCLOSURE_OPEN;
2971 3423 case 'disclosure-closed':
2972 - return 51 /* DISCLOSURE_CLOSED */;
3424 + return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;
2973 3425 case 'none':
2974 3426 default:
2975 - return -1 /* NONE */;
3427 + return LIST_STYLE_TYPE.NONE;
2976 3428 }
2977 3429 }
2978 3430 };
2979 3431
@@ -2980,9 +3432,9 @@
2980 3432 var marginForSide = function (side) { return ({
2981 3433 name: "margin-" + side,
2982 3434 initialValue: '0',
2983 3435 prefix: false,
2984 - type: 4 /* TOKEN_VALUE */
3436 + type: PropertyDescriptorParsingType.TOKEN_VALUE
2985 3437 }); };
2986 3438 var marginTop = marginForSide('top');
2987 3439 var marginRight = marginForSide('right');
2988 3440 var marginBottom = marginForSide('bottom');
@@ -2987,44 +3439,54 @@
2987 3439 var marginRight = marginForSide('right');
2988 3440 var marginBottom = marginForSide('bottom');
2989 3441 var marginLeft = marginForSide('left');
2990 3442
3443 + var OVERFLOW;
3444 + (function (OVERFLOW) {
3445 + OVERFLOW[OVERFLOW["VISIBLE"] = 0] = "VISIBLE";
3446 + OVERFLOW[OVERFLOW["HIDDEN"] = 1] = "HIDDEN";
3447 + OVERFLOW[OVERFLOW["SCROLL"] = 2] = "SCROLL";
3448 + OVERFLOW[OVERFLOW["AUTO"] = 3] = "AUTO";
3449 + })(OVERFLOW || (OVERFLOW = {}));
2991 3450 var overflow = {
2992 3451 name: 'overflow',
2993 3452 initialValue: 'visible',
2994 3453 prefix: false,
2995 - type: 1 /* LIST */,
2996 - parse: function (_context, tokens) {
3454 + type: PropertyDescriptorParsingType.LIST,
3455 + parse: function (tokens) {
2997 3456 return tokens.filter(isIdentToken).map(function (overflow) {
2998 3457 switch (overflow.value) {
2999 3458 case 'hidden':
3000 - return 1 /* HIDDEN */;
3459 + return OVERFLOW.HIDDEN;
3001 3460 case 'scroll':
3002 - return 2 /* SCROLL */;
3003 - case 'clip':
3004 - return 3 /* CLIP */;
3461 + return OVERFLOW.SCROLL;
3005 3462 case 'auto':
3006 - return 4 /* AUTO */;
3463 + return OVERFLOW.AUTO;
3007 3464 case 'visible':
3008 3465 default:
3009 - return 0 /* VISIBLE */;
3466 + return OVERFLOW.VISIBLE;
3010 3467 }
3011 3468 });
3012 3469 }
3013 3470 };
3014 3471
3472 + var OVERFLOW_WRAP;
3473 + (function (OVERFLOW_WRAP) {
3474 + OVERFLOW_WRAP["NORMAL"] = "normal";
3475 + OVERFLOW_WRAP["BREAK_WORD"] = "break-word";
3476 + })(OVERFLOW_WRAP || (OVERFLOW_WRAP = {}));
3015 3477 var overflowWrap = {
3016 3478 name: 'overflow-wrap',
3017 3479 initialValue: 'normal',
3018 3480 prefix: false,
3019 - type: 2 /* IDENT_VALUE */,
3020 - parse: function (_context, overflow) {
3481 + type: PropertyDescriptorParsingType.IDENT_VALUE,
3482 + parse: function (overflow) {
3021 3483 switch (overflow) {
3022 3484 case 'break-word':
3023 - return "break-word" /* BREAK_WORD */;
3485 + return OVERFLOW_WRAP.BREAK_WORD;
3024 3486 case 'normal':
3025 3487 default:
3026 - return "normal" /* NORMAL */;
3488 + return OVERFLOW_WRAP.NORMAL;
3027 3489 }
3028 3490 }
3029 3491 };
3030 3492
@@ -3031,9 +3493,9 @@
3031 3493 var paddingForSide = function (side) { return ({
3032 3494 name: "padding-" + side,
3033 3495 initialValue: '0',
3034 3496 prefix: false,
3035 - type: 3 /* TYPE_VALUE */,
3497 + type: PropertyDescriptorParsingType.TYPE_VALUE,
3036 3498 format: 'length-percentage'
3037 3499 }); };
3038 3500 var paddingTop = paddingForSide('top');
3039 3501 var paddingRight = paddingForSide('right');
@@ -3039,44 +3501,58 @@
3039 3501 var paddingRight = paddingForSide('right');
3040 3502 var paddingBottom = paddingForSide('bottom');
3041 3503 var paddingLeft = paddingForSide('left');
3042 3504
3505 + var TEXT_ALIGN;
3506 + (function (TEXT_ALIGN) {
3507 + TEXT_ALIGN[TEXT_ALIGN["LEFT"] = 0] = "LEFT";
3508 + TEXT_ALIGN[TEXT_ALIGN["CENTER"] = 1] = "CENTER";
3509 + TEXT_ALIGN[TEXT_ALIGN["RIGHT"] = 2] = "RIGHT";
3510 + })(TEXT_ALIGN || (TEXT_ALIGN = {}));
3043 3511 var textAlign = {
3044 3512 name: 'text-align',
3045 3513 initialValue: 'left',
3046 3514 prefix: false,
3047 - type: 2 /* IDENT_VALUE */,
3048 - parse: function (_context, textAlign) {
3515 + type: PropertyDescriptorParsingType.IDENT_VALUE,
3516 + parse: function (textAlign) {
3049 3517 switch (textAlign) {
3050 3518 case 'right':
3051 - return 2 /* RIGHT */;
3519 + return TEXT_ALIGN.RIGHT;
3052 3520 case 'center':
3053 3521 case 'justify':
3054 - return 1 /* CENTER */;
3522 + return TEXT_ALIGN.CENTER;
3055 3523 case 'left':
3056 3524 default:
3057 - return 0 /* LEFT */;
3525 + return TEXT_ALIGN.LEFT;
3058 3526 }
3059 3527 }
3060 3528 };
3061 3529
3530 + var POSITION;
3531 + (function (POSITION) {
3532 + POSITION[POSITION["STATIC"] = 0] = "STATIC";
3533 + POSITION[POSITION["RELATIVE"] = 1] = "RELATIVE";
3534 + POSITION[POSITION["ABSOLUTE"] = 2] = "ABSOLUTE";
3535 + POSITION[POSITION["FIXED"] = 3] = "FIXED";
3536 + POSITION[POSITION["STICKY"] = 4] = "STICKY";
3537 + })(POSITION || (POSITION = {}));
3062 3538 var position = {
3063 3539 name: 'position',
3064 3540 initialValue: 'static',
3065 3541 prefix: false,
3066 - type: 2 /* IDENT_VALUE */,
3067 - parse: function (_context, position) {
3542 + type: PropertyDescriptorParsingType.IDENT_VALUE,
3543 + parse: function (position) {
3068 3544 switch (position) {
3069 3545 case 'relative':
3070 - return 1 /* RELATIVE */;
3546 + return POSITION.RELATIVE;
3071 3547 case 'absolute':
3072 - return 2 /* ABSOLUTE */;
3548 + return POSITION.ABSOLUTE;
3073 3549 case 'fixed':
3074 - return 3 /* FIXED */;
3550 + return POSITION.FIXED;
3075 3551 case 'sticky':
3076 - return 4 /* STICKY */;
3552 + return POSITION.STICKY;
3077 3553 }
3078 - return 0 /* STATIC */;
3554 + return POSITION.STATIC;
3079 3555 }
3080 3556 };
3081 3557
3082 3558 var textShadow = {
@@ -3081,11 +3557,11 @@
3081 3557
3082 3558 var textShadow = {
3083 3559 name: 'text-shadow',
3084 3560 initialValue: 'none',
3085 - type: 1 /* LIST */,
3561 + type: PropertyDescriptorParsingType.LIST,
3086 3562 prefix: false,
3087 - parse: function (context, tokens) {
3563 + parse: function (tokens) {
3088 3564 if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {
3089 3565 return [];
3090 3566 }
3091 3567 return parseFunctionArgs(tokens).map(function (values) {
@@ -3110,9 +3586,9 @@
3110 3586 }
3111 3587 c++;
3112 3588 }
3113 3589 else {
3114 - shadow.color = color$1.parse(context, token);
3590 + shadow.color = color.parse(token);
3115 3591 }
3116 3592 }
3117 3593 return shadow;
3118 3594 });
@@ -3118,36 +3594,43 @@
3118 3594 });
3119 3595 }
3120 3596 };
3121 3597
3598 + var TEXT_TRANSFORM;
3599 + (function (TEXT_TRANSFORM) {
3600 + TEXT_TRANSFORM[TEXT_TRANSFORM["NONE"] = 0] = "NONE";
3601 + TEXT_TRANSFORM[TEXT_TRANSFORM["LOWERCASE"] = 1] = "LOWERCASE";
3602 + TEXT_TRANSFORM[TEXT_TRANSFORM["UPPERCASE"] = 2] = "UPPERCASE";
3603 + TEXT_TRANSFORM[TEXT_TRANSFORM["CAPITALIZE"] = 3] = "CAPITALIZE";
3604 + })(TEXT_TRANSFORM || (TEXT_TRANSFORM = {}));
3122 3605 var textTransform = {
3123 3606 name: 'text-transform',
3124 3607 initialValue: 'none',
3125 3608 prefix: false,
3126 - type: 2 /* IDENT_VALUE */,
3127 - parse: function (_context, textTransform) {
3609 + type: PropertyDescriptorParsingType.IDENT_VALUE,
3610 + parse: function (textTransform) {
3128 3611 switch (textTransform) {
3129 3612 case 'uppercase':
3130 - return 2 /* UPPERCASE */;
3613 + return TEXT_TRANSFORM.UPPERCASE;
3131 3614 case 'lowercase':
3132 - return 1 /* LOWERCASE */;
3615 + return TEXT_TRANSFORM.LOWERCASE;
3133 3616 case 'capitalize':
3134 - return 3 /* CAPITALIZE */;
3617 + return TEXT_TRANSFORM.CAPITALIZE;
3135 3618 }
3136 - return 0 /* NONE */;
3619 + return TEXT_TRANSFORM.NONE;
3137 3620 }
3138 3621 };
3139 3622
3140 - var transform$1 = {
3623 + var transform = {
3141 3624 name: 'transform',
3142 3625 initialValue: 'none',
3143 3626 prefix: true,
3144 - type: 0 /* VALUE */,
3145 - parse: function (_context, token) {
3146 - if (token.type === 20 /* IDENT_TOKEN */ && token.value === 'none') {
3627 + type: PropertyDescriptorParsingType.VALUE,
3628 + parse: function (token) {
3629 + if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {
3147 3630 return null;
3148 3631 }
3149 - if (token.type === 18 /* FUNCTION */) {
3632 + if (token.type === TokenType.FUNCTION) {
3150 3633 var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];
3151 3634 if (typeof transformFunction === 'undefined') {
3152 3635 throw new Error("Attempting to parse an unsupported transform function \"" + token.name + "\"");
3153 3636 }
@@ -3156,15 +3639,15 @@
3156 3639 return null;
3157 3640 }
3158 3641 };
3159 3642 var matrix = function (args) {
3160 - var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });
3643 + var values = args.filter(function (arg) { return arg.type === TokenType.NUMBER_TOKEN; }).map(function (arg) { return arg.number; });
3161 3644 return values.length === 6 ? values : null;
3162 3645 };
3163 3646 // doesn't support 3D transforms at the moment
3164 3647 var matrix3d = function (args) {
3165 - var values = args.filter(function (arg) { return arg.type === 17 /* NUMBER_TOKEN */; }).map(function (arg) { return arg.number; });
3166 - var a1 = values[0], b1 = values[1]; values[2]; values[3]; var a2 = values[4], b2 = values[5]; values[6]; values[7]; values[8]; values[9]; values[10]; values[11]; var a4 = values[12], b4 = values[13]; values[14]; values[15];
3648 + var values = args.filter(function (arg) { return arg.type === TokenType.NUMBER_TOKEN; }).map(function (arg) { return arg.number; });
3649 + var a1 = values[0], b1 = values[1], _a = values[2], _b = values[3], a2 = values[4], b2 = values[5], _c = values[6], _d = values[7], _e = values[8], _f = values[9], _g = values[10], _h = values[11], a4 = values[12], b4 = values[13], _j = values[14], _k = values[15];
3167 3650 return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;
3168 3651 };
3169 3652 var SUPPORTED_TRANSFORM_FUNCTIONS = {
3170 3653 matrix: matrix,
@@ -3171,9 +3654,9 @@
3171 3654 matrix3d: matrix3d
3172 3655 };
3173 3656
3174 3657 var DEFAULT_VALUE = {
3175 - type: 16 /* PERCENTAGE_TOKEN */,
3658 + type: TokenType.PERCENTAGE_TOKEN,
3176 3659 number: 50,
3177 3660 flags: FLAG_INTEGER
3178 3661 };
3179 3662 var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];
@@ -3180,10 +3663,10 @@
3180 3663 var transformOrigin = {
3181 3664 name: 'transform-origin',
3182 3665 initialValue: '50% 50%',
3183 3666 prefix: true,
3184 - type: 1 /* LIST */,
3185 - parse: function (_context, tokens) {
3667 + type: PropertyDescriptorParsingType.LIST,
3668 + parse: function (tokens) {
3186 3669 var origins = tokens.filter(isLengthPercentage);
3187 3670 if (origins.length !== 2) {
3188 3671 return DEFAULT;
3189 3672 }
@@ -3190,22 +3673,28 @@
3190 3673 return [origins[0], origins[1]];
3191 3674 }
3192 3675 };
3193 3676
3677 + var VISIBILITY;
3678 + (function (VISIBILITY) {
3679 + VISIBILITY[VISIBILITY["VISIBLE"] = 0] = "VISIBLE";
3680 + VISIBILITY[VISIBILITY["HIDDEN"] = 1] = "HIDDEN";
3681 + VISIBILITY[VISIBILITY["COLLAPSE"] = 2] = "COLLAPSE";
3682 + })(VISIBILITY || (VISIBILITY = {}));
3194 3683 var visibility = {
3195 3684 name: 'visible',
3196 3685 initialValue: 'none',
3197 3686 prefix: false,
3198 - type: 2 /* IDENT_VALUE */,
3199 - parse: function (_context, visibility) {
3687 + type: PropertyDescriptorParsingType.IDENT_VALUE,
3688 + parse: function (visibility) {
3200 3689 switch (visibility) {
3201 3690 case 'hidden':
3202 - return 1 /* HIDDEN */;
3691 + return VISIBILITY.HIDDEN;
3203 3692 case 'collapse':
3204 - return 2 /* COLLAPSE */;
3693 + return VISIBILITY.COLLAPSE;
3205 3694 case 'visible':
3206 3695 default:
3207 - return 0 /* VISIBLE */;
3696 + return VISIBILITY.VISIBLE;
3208 3697 }
3209 3698 }
3210 3699 };
3211 3700
@@ -3218,10 +3707,10 @@
3218 3707 var wordBreak = {
3219 3708 name: 'word-break',
3220 3709 initialValue: 'normal',
3221 3710 prefix: false,
3222 - type: 2 /* IDENT_VALUE */,
3223 - parse: function (_context, wordBreak) {
3711 + type: PropertyDescriptorParsingType.IDENT_VALUE,
3712 + parse: function (wordBreak) {
3224 3713 switch (wordBreak) {
3225 3714 case 'break-all':
3226 3715 return WORD_BREAK.BREAK_ALL;
3227 3716 case 'keep-all':
@@ -3236,11 +3725,11 @@
3236 3725 var zIndex = {
3237 3726 name: 'z-index',
3238 3727 initialValue: 'auto',
3239 3728 prefix: false,
3240 - type: 0 /* VALUE */,
3241 - parse: function (_context, token) {
3242 - if (token.type === 20 /* IDENT_TOKEN */) {
3729 + type: PropertyDescriptorParsingType.VALUE,
3730 + parse: function (token) {
3731 + if (token.type === TokenType.IDENT_TOKEN) {
3243 3732 return { auto: true, order: 0 };
3244 3733 }
3245 3734 if (isNumberToken(token)) {
3246 3735 return { auto: false, order: token.number };
@@ -3248,29 +3737,14 @@
3248 3737 throw new Error("Invalid z-index number parsed");
3249 3738 }
3250 3739 };
3251 3740
3252 - var time = {
3253 - name: 'time',
3254 - parse: function (_context, value) {
3255 - if (value.type === 15 /* DIMENSION_TOKEN */) {
3256 - switch (value.unit.toLowerCase()) {
3257 - case 's':
3258 - return 1000 * value.number;
3259 - case 'ms':
3260 - return value.number;
3261 - }
3262 - }
3263 - throw new Error("Unsupported time type");
3264 - }
3265 - };
3266 -
3267 3741 var opacity = {
3268 3742 name: 'opacity',
3269 3743 initialValue: '1',
3270 - type: 0 /* VALUE */,
3744 + type: PropertyDescriptorParsingType.VALUE,
3271 3745 prefix: false,
3272 - parse: function (_context, token) {
3746 + parse: function (token) {
3273 3747 if (isNumberToken(token)) {
3274 3748 return token.number;
3275 3749 }
3276 3750 return 1;
@@ -3280,9 +3754,9 @@
3280 3754 var textDecorationColor = {
3281 3755 name: "text-decoration-color",
3282 3756 initialValue: 'transparent',
3283 3757 prefix: false,
3284 - type: 3 /* TYPE_VALUE */,
3758 + type: PropertyDescriptorParsingType.TYPE_VALUE,
3285 3759 format: 'color'
3286 3760 };
3287 3761
3288 3762 var textDecorationLine = {
@@ -3288,25 +3762,25 @@
3288 3762 var textDecorationLine = {
3289 3763 name: 'text-decoration-line',
3290 3764 initialValue: 'none',
3291 3765 prefix: false,
3292 - type: 1 /* LIST */,
3293 - parse: function (_context, tokens) {
3766 + type: PropertyDescriptorParsingType.LIST,
3767 + parse: function (tokens) {
3294 3768 return tokens
3295 3769 .filter(isIdentToken)
3296 3770 .map(function (token) {
3297 - switch (token.value) {
3298 - case 'underline':
3299 - return 1 /* UNDERLINE */;
3300 - case 'overline':
3301 - return 2 /* OVERLINE */;
3302 - case 'line-through':
3303 - return 3 /* LINE_THROUGH */;
3304 - case 'none':
3305 - return 4 /* BLINK */;
3306 - }
3307 - return 0 /* NONE */;
3308 - })
3771 + switch (token.value) {
3772 + case 'underline':
3773 + return 1 /* UNDERLINE */;
3774 + case 'overline':
3775 + return 2 /* OVERLINE */;
3776 + case 'line-through':
3777 + return 3 /* LINE_THROUGH */;
3778 + case 'none':
3779 + return 4 /* BLINK */;
3780 + }
3781 + return 0 /* NONE */;
3782 + })
3309 3783 .filter(function (line) { return line !== 0 /* NONE */; });
3310 3784 }
3311 3785 };
3312 3786
@@ -3313,22 +3787,22 @@
3313 3787 var fontFamily = {
3314 3788 name: "font-family",
3315 3789 initialValue: '',
3316 3790 prefix: false,
3317 - type: 1 /* LIST */,
3318 - parse: function (_context, tokens) {
3791 + type: PropertyDescriptorParsingType.LIST,
3792 + parse: function (tokens) {
3319 3793 var accumulator = [];
3320 3794 var results = [];
3321 3795 tokens.forEach(function (token) {
3322 3796 switch (token.type) {
3323 - case 20 /* IDENT_TOKEN */:
3324 - case 0 /* STRING_TOKEN */:
3797 + case TokenType.IDENT_TOKEN:
3798 + case TokenType.STRING_TOKEN:
3325 3799 accumulator.push(token.value);
3326 3800 break;
3327 - case 17 /* NUMBER_TOKEN */:
3801 + case TokenType.NUMBER_TOKEN:
3328 3802 accumulator.push(token.number.toString());
3329 3803 break;
3330 - case 4 /* COMMA_TOKEN */:
3804 + case TokenType.COMMA_TOKEN:
3331 3805 results.push(accumulator.join(' '));
3332 3806 accumulator.length = 0;
3333 3807 break;
3334 3808 }
@@ -3343,9 +3817,9 @@
3343 3817 var fontSize = {
3344 3818 name: "font-size",
3345 3819 initialValue: '0',
3346 3820 prefix: false,
3347 - type: 3 /* TYPE_VALUE */,
3821 + type: PropertyDescriptorParsingType.TYPE_VALUE,
3348 3822 format: 'length'
3349 3823 };
3350 3824
3351 3825 var fontWeight = {
@@ -3350,11 +3824,11 @@
3350 3824
3351 3825 var fontWeight = {
3352 3826 name: 'font-weight',
3353 3827 initialValue: 'normal',
3354 - type: 0 /* VALUE */,
3828 + type: PropertyDescriptorParsingType.VALUE,
3355 3829 prefix: false,
3356 - parse: function (_context, token) {
3830 + parse: function (token) {
3357 3831 if (isNumberToken(token)) {
3358 3832 return token.number;
3359 3833 }
3360 3834 if (isIdentToken(token)) {
@@ -3372,29 +3846,35 @@
3372 3846
3373 3847 var fontVariant = {
3374 3848 name: 'font-variant',
3375 3849 initialValue: 'none',
3376 - type: 1 /* LIST */,
3850 + type: PropertyDescriptorParsingType.LIST,
3377 3851 prefix: false,
3378 - parse: function (_context, tokens) {
3852 + parse: function (tokens) {
3379 3853 return tokens.filter(isIdentToken).map(function (token) { return token.value; });
3380 3854 }
3381 3855 };
3382 3856
3857 + var FONT_STYLE;
3858 + (function (FONT_STYLE) {
3859 + FONT_STYLE["NORMAL"] = "normal";
3860 + FONT_STYLE["ITALIC"] = "italic";
3861 + FONT_STYLE["OBLIQUE"] = "oblique";
3862 + })(FONT_STYLE || (FONT_STYLE = {}));
3383 3863 var fontStyle = {
3384 3864 name: 'font-style',
3385 3865 initialValue: 'normal',
3386 3866 prefix: false,
3387 - type: 2 /* IDENT_VALUE */,
3388 - parse: function (_context, overflow) {
3867 + type: PropertyDescriptorParsingType.IDENT_VALUE,
3868 + parse: function (overflow) {
3389 3869 switch (overflow) {
3390 3870 case 'oblique':
3391 - return "oblique" /* OBLIQUE */;
3871 + return FONT_STYLE.OBLIQUE;
3392 3872 case 'italic':
3393 - return "italic" /* ITALIC */;
3873 + return FONT_STYLE.ITALIC;
3394 3874 case 'normal':
3395 3875 default:
3396 - return "normal" /* NORMAL */;
3876 + return FONT_STYLE.NORMAL;
3397 3877 }
3398 3878 }
3399 3879 };
3400 3880
@@ -3402,16 +3882,16 @@
3402 3882
3403 3883 var content = {
3404 3884 name: 'content',
3405 3885 initialValue: 'none',
3406 - type: 1 /* LIST */,
3886 + type: PropertyDescriptorParsingType.LIST,
3407 3887 prefix: false,
3408 - parse: function (_context, tokens) {
3888 + parse: function (tokens) {
3409 3889 if (tokens.length === 0) {
3410 3890 return [];
3411 3891 }
3412 3892 var first = tokens[0];
3413 - if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {
3893 + if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {
3414 3894 return [];
3415 3895 }
3416 3896 return tokens;
3417 3897 }
@@ -3420,15 +3900,15 @@
3420 3900 var counterIncrement = {
3421 3901 name: 'counter-increment',
3422 3902 initialValue: 'none',
3423 3903 prefix: true,
3424 - type: 1 /* LIST */,
3425 - parse: function (_context, tokens) {
3904 + type: PropertyDescriptorParsingType.LIST,
3905 + parse: function (tokens) {
3426 3906 if (tokens.length === 0) {
3427 3907 return null;
3428 3908 }
3429 3909 var first = tokens[0];
3430 - if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {
3910 + if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {
3431 3911 return null;
3432 3912 }
3433 3913 var increments = [];
3434 3914 var filtered = tokens.filter(nonWhiteSpace);
@@ -3434,9 +3914,9 @@
3434 3914 var filtered = tokens.filter(nonWhiteSpace);
3435 3915 for (var i = 0; i < filtered.length; i++) {
3436 3916 var counter = filtered[i];
3437 3917 var next = filtered[i + 1];
3438 - if (counter.type === 20 /* IDENT_TOKEN */) {
3918 + if (counter.type === TokenType.IDENT_TOKEN) {
3439 3919 var increment = next && isNumberToken(next) ? next.number : 1;
3440 3920 increments.push({ counter: counter.value, increment: increment });
3441 3921 }
3442 3922 }
@@ -3447,10 +3927,10 @@
3447 3927 var counterReset = {
3448 3928 name: 'counter-reset',
3449 3929 initialValue: 'none',
3450 3930 prefix: true,
3451 - type: 1 /* LIST */,
3452 - parse: function (_context, tokens) {
3931 + type: PropertyDescriptorParsingType.LIST,
3932 + parse: function (tokens) {
3453 3933 if (tokens.length === 0) {
3454 3934 return [];
3455 3935 }
3456 3936 var resets = [];
@@ -3466,29 +3946,19 @@
3466 3946 return resets;
3467 3947 }
3468 3948 };
3469 3949
3470 - var duration = {
3471 - name: 'duration',
3472 - initialValue: '0s',
3473 - prefix: false,
3474 - type: 1 /* LIST */,
3475 - parse: function (context, tokens) {
3476 - return tokens.filter(isDimensionToken).map(function (token) { return time.parse(context, token); });
3477 - }
3478 - };
3479 -
3480 3950 var quotes = {
3481 3951 name: 'quotes',
3482 3952 initialValue: 'none',
3483 3953 prefix: true,
3484 - type: 1 /* LIST */,
3485 - parse: function (_context, tokens) {
3954 + type: PropertyDescriptorParsingType.LIST,
3955 + parse: function (tokens) {
3486 3956 if (tokens.length === 0) {
3487 3957 return null;
3488 3958 }
3489 3959 var first = tokens[0];
3490 - if (first.type === 20 /* IDENT_TOKEN */ && first.value === 'none') {
3960 + if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {
3491 3961 return null;
3492 3962 }
3493 3963 var quotes = [];
3494 3964 var filtered = tokens.filter(isStringToken);
@@ -3516,11 +3986,11 @@
3516 3986
3517 3987 var boxShadow = {
3518 3988 name: 'box-shadow',
3519 3989 initialValue: 'none',
3520 - type: 1 /* LIST */,
3990 + type: PropertyDescriptorParsingType.LIST,
3521 3991 prefix: false,
3522 - parse: function (context, tokens) {
3992 + parse: function (tokens) {
3523 3993 if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {
3524 3994 return [];
3525 3995 }
3526 3996 return parseFunctionArgs(tokens).map(function (values) {
@@ -3553,9 +4023,9 @@
3553 4023 }
3554 4024 c++;
3555 4025 }
3556 4026 else {
3557 - shadow.color = color$1.parse(context, token);
4027 + shadow.color = color.parse(token);
3558 4028 }
3559 4029 }
3560 4030 return shadow;
3561 4031 });
@@ -3561,132 +4031,75 @@
3561 4031 });
3562 4032 }
3563 4033 };
3564 4034
3565 - var paintOrder = {
3566 - name: 'paint-order',
3567 - initialValue: 'normal',
3568 - prefix: false,
3569 - type: 1 /* LIST */,
3570 - parse: function (_context, tokens) {
3571 - var DEFAULT_VALUE = [0 /* FILL */, 1 /* STROKE */, 2 /* MARKERS */];
3572 - var layers = [];
3573 - tokens.filter(isIdentToken).forEach(function (token) {
3574 - switch (token.value) {
3575 - case 'stroke':
3576 - layers.push(1 /* STROKE */);
3577 - break;
3578 - case 'fill':
3579 - layers.push(0 /* FILL */);
3580 - break;
3581 - case 'markers':
3582 - layers.push(2 /* MARKERS */);
3583 - break;
3584 - }
3585 - });
3586 - DEFAULT_VALUE.forEach(function (value) {
3587 - if (layers.indexOf(value) === -1) {
3588 - layers.push(value);
3589 - }
3590 - });
3591 - return layers;
3592 - }
3593 - };
3594 -
3595 - var webkitTextStrokeColor = {
3596 - name: "-webkit-text-stroke-color",
3597 - initialValue: 'currentcolor',
3598 - prefix: false,
3599 - type: 3 /* TYPE_VALUE */,
3600 - format: 'color'
3601 - };
3602 -
3603 - var webkitTextStrokeWidth = {
3604 - name: "-webkit-text-stroke-width",
3605 - initialValue: '0',
3606 - type: 0 /* VALUE */,
3607 - prefix: false,
3608 - parse: function (_context, token) {
3609 - if (isDimensionToken(token)) {
3610 - return token.number;
3611 - }
3612 - return 0;
3613 - }
3614 - };
3615 -
3616 4035 var CSSParsedDeclaration = /** @class */ (function () {
3617 - function CSSParsedDeclaration(context, declaration) {
3618 - var _a, _b;
3619 - this.animationDuration = parse(context, duration, declaration.animationDuration);
3620 - this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);
3621 - this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);
3622 - this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);
3623 - this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);
3624 - this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);
3625 - this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);
3626 - this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);
3627 - this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);
3628 - this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);
3629 - this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);
3630 - this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);
3631 - this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);
3632 - this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);
3633 - this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);
3634 - this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);
3635 - this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);
3636 - this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);
3637 - this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);
3638 - this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);
3639 - this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);
3640 - this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);
3641 - this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);
3642 - this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);
3643 - this.boxShadow = parse(context, boxShadow, declaration.boxShadow);
3644 - this.color = parse(context, color, declaration.color);
3645 - this.direction = parse(context, direction, declaration.direction);
3646 - this.display = parse(context, display, declaration.display);
3647 - this.float = parse(context, float, declaration.cssFloat);
3648 - this.fontFamily = parse(context, fontFamily, declaration.fontFamily);
3649 - this.fontSize = parse(context, fontSize, declaration.fontSize);
3650 - this.fontStyle = parse(context, fontStyle, declaration.fontStyle);
3651 - this.fontVariant = parse(context, fontVariant, declaration.fontVariant);
3652 - this.fontWeight = parse(context, fontWeight, declaration.fontWeight);
3653 - this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);
3654 - this.lineBreak = parse(context, lineBreak, declaration.lineBreak);
3655 - this.lineHeight = parse(context, lineHeight, declaration.lineHeight);
3656 - this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);
3657 - this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);
3658 - this.listStyleType = parse(context, listStyleType, declaration.listStyleType);
3659 - this.marginTop = parse(context, marginTop, declaration.marginTop);
3660 - this.marginRight = parse(context, marginRight, declaration.marginRight);
3661 - this.marginBottom = parse(context, marginBottom, declaration.marginBottom);
3662 - this.marginLeft = parse(context, marginLeft, declaration.marginLeft);
3663 - this.opacity = parse(context, opacity, declaration.opacity);
3664 - var overflowTuple = parse(context, overflow, declaration.overflow);
4036 + function CSSParsedDeclaration(declaration) {
4037 + this.backgroundClip = parse(backgroundClip, declaration.backgroundClip);
4038 + this.backgroundColor = parse(backgroundColor, declaration.backgroundColor);
4039 + this.backgroundImage = parse(backgroundImage, declaration.backgroundImage);
4040 + this.backgroundOrigin = parse(backgroundOrigin, declaration.backgroundOrigin);
4041 + this.backgroundPosition = parse(backgroundPosition, declaration.backgroundPosition);
4042 + this.backgroundRepeat = parse(backgroundRepeat, declaration.backgroundRepeat);
4043 + this.backgroundSize = parse(backgroundSize, declaration.backgroundSize);
4044 + this.borderTopColor = parse(borderTopColor, declaration.borderTopColor);
4045 + this.borderRightColor = parse(borderRightColor, declaration.borderRightColor);
4046 + this.borderBottomColor = parse(borderBottomColor, declaration.borderBottomColor);
4047 + this.borderLeftColor = parse(borderLeftColor, declaration.borderLeftColor);
4048 + this.borderTopLeftRadius = parse(borderTopLeftRadius, declaration.borderTopLeftRadius);
4049 + this.borderTopRightRadius = parse(borderTopRightRadius, declaration.borderTopRightRadius);
4050 + this.borderBottomRightRadius = parse(borderBottomRightRadius, declaration.borderBottomRightRadius);
4051 + this.borderBottomLeftRadius = parse(borderBottomLeftRadius, declaration.borderBottomLeftRadius);
4052 + this.borderTopStyle = parse(borderTopStyle, declaration.borderTopStyle);
4053 + this.borderRightStyle = parse(borderRightStyle, declaration.borderRightStyle);
4054 + this.borderBottomStyle = parse(borderBottomStyle, declaration.borderBottomStyle);
4055 + this.borderLeftStyle = parse(borderLeftStyle, declaration.borderLeftStyle);
4056 + this.borderTopWidth = parse(borderTopWidth, declaration.borderTopWidth);
4057 + this.borderRightWidth = parse(borderRightWidth, declaration.borderRightWidth);
4058 + this.borderBottomWidth = parse(borderBottomWidth, declaration.borderBottomWidth);
4059 + this.borderLeftWidth = parse(borderLeftWidth, declaration.borderLeftWidth);
4060 + this.boxShadow = parse(boxShadow, declaration.boxShadow);
4061 + this.color = parse(color$1, declaration.color);
4062 + this.display = parse(display, declaration.display);
4063 + this.float = parse(float, declaration.cssFloat);
4064 + this.fontFamily = parse(fontFamily, declaration.fontFamily);
4065 + this.fontSize = parse(fontSize, declaration.fontSize);
4066 + this.fontStyle = parse(fontStyle, declaration.fontStyle);
4067 + this.fontVariant = parse(fontVariant, declaration.fontVariant);
4068 + this.fontWeight = parse(fontWeight, declaration.fontWeight);
4069 + this.letterSpacing = parse(letterSpacing, declaration.letterSpacing);
4070 + this.lineBreak = parse(lineBreak, declaration.lineBreak);
4071 + this.lineHeight = parse(lineHeight, declaration.lineHeight);
4072 + this.listStyleImage = parse(listStyleImage, declaration.listStyleImage);
4073 + this.listStylePosition = parse(listStylePosition, declaration.listStylePosition);
4074 + this.listStyleType = parse(listStyleType, declaration.listStyleType);
4075 + this.marginTop = parse(marginTop, declaration.marginTop);
4076 + this.marginRight = parse(marginRight, declaration.marginRight);
4077 + this.marginBottom = parse(marginBottom, declaration.marginBottom);
4078 + this.marginLeft = parse(marginLeft, declaration.marginLeft);
4079 + this.opacity = parse(opacity, declaration.opacity);
4080 + var overflowTuple = parse(overflow, declaration.overflow);
3665 4081 this.overflowX = overflowTuple[0];
3666 4082 this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];
3667 - this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);
3668 - this.paddingTop = parse(context, paddingTop, declaration.paddingTop);
3669 - this.paddingRight = parse(context, paddingRight, declaration.paddingRight);
3670 - this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);
3671 - this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);
3672 - this.paintOrder = parse(context, paintOrder, declaration.paintOrder);
3673 - this.position = parse(context, position, declaration.position);
3674 - this.textAlign = parse(context, textAlign, declaration.textAlign);
3675 - this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color);
3676 - this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration);
3677 - this.textShadow = parse(context, textShadow, declaration.textShadow);
3678 - this.textTransform = parse(context, textTransform, declaration.textTransform);
3679 - this.transform = parse(context, transform$1, declaration.transform);
3680 - this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);
3681 - this.visibility = parse(context, visibility, declaration.visibility);
3682 - this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);
3683 - this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);
3684 - this.wordBreak = parse(context, wordBreak, declaration.wordBreak);
3685 - this.zIndex = parse(context, zIndex, declaration.zIndex);
4083 + this.overflowWrap = parse(overflowWrap, declaration.overflowWrap);
4084 + this.paddingTop = parse(paddingTop, declaration.paddingTop);
4085 + this.paddingRight = parse(paddingRight, declaration.paddingRight);
4086 + this.paddingBottom = parse(paddingBottom, declaration.paddingBottom);
4087 + this.paddingLeft = parse(paddingLeft, declaration.paddingLeft);
4088 + this.position = parse(position, declaration.position);
4089 + this.textAlign = parse(textAlign, declaration.textAlign);
4090 + this.textDecorationColor = parse(textDecorationColor, declaration.textDecorationColor || declaration.color);
4091 + this.textDecorationLine = parse(textDecorationLine, declaration.textDecorationLine);
4092 + this.textShadow = parse(textShadow, declaration.textShadow);
4093 + this.textTransform = parse(textTransform, declaration.textTransform);
4094 + this.transform = parse(transform, declaration.transform);
4095 + this.transformOrigin = parse(transformOrigin, declaration.transformOrigin);
4096 + this.visibility = parse(visibility, declaration.visibility);
4097 + this.wordBreak = parse(wordBreak, declaration.wordBreak);
4098 + this.zIndex = parse(zIndex, declaration.zIndex);
3686 4099 }
3687 4100 CSSParsedDeclaration.prototype.isVisible = function () {
3688 - return this.display > 0 && this.opacity > 0 && this.visibility === 0 /* VISIBLE */;
4101 + return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;
3689 4102 };
3690 4103 CSSParsedDeclaration.prototype.isTransparent = function () {
3691 4104 return isTransparent(this.backgroundColor);
3692 4105 };
@@ -3693,15 +4106,15 @@
3693 4106 CSSParsedDeclaration.prototype.isTransformed = function () {
3694 4107 return this.transform !== null;
3695 4108 };
3696 4109 CSSParsedDeclaration.prototype.isPositioned = function () {
3697 - return this.position !== 0 /* STATIC */;
4110 + return this.position !== POSITION.STATIC;
3698 4111 };
3699 4112 CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () {
3700 4113 return this.isPositioned() && !this.zIndex.auto;
3701 4114 };
3702 4115 CSSParsedDeclaration.prototype.isFloating = function () {
3703 - return this.float !== 0 /* NONE */;
4116 + return this.float !== FLOAT.NONE;
3704 4117 };
3705 4118 CSSParsedDeclaration.prototype.isInlineLevel = function () {
3706 4119 return (contains(this.display, 4 /* INLINE */) ||
3707 4120 contains(this.display, 33554432 /* INLINE_BLOCK */) ||
@@ -3712,45 +4125,45 @@
3712 4125 };
3713 4126 return CSSParsedDeclaration;
3714 4127 }());
3715 4128 var CSSParsedPseudoDeclaration = /** @class */ (function () {
3716 - function CSSParsedPseudoDeclaration(context, declaration) {
3717 - this.content = parse(context, content, declaration.content);
3718 - this.quotes = parse(context, quotes, declaration.quotes);
4129 + function CSSParsedPseudoDeclaration(declaration) {
4130 + this.content = parse(content, declaration.content);
4131 + this.quotes = parse(quotes, declaration.quotes);
3719 4132 }
3720 4133 return CSSParsedPseudoDeclaration;
3721 4134 }());
3722 4135 var CSSParsedCounterDeclaration = /** @class */ (function () {
3723 - function CSSParsedCounterDeclaration(context, declaration) {
3724 - this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);
3725 - this.counterReset = parse(context, counterReset, declaration.counterReset);
4136 + function CSSParsedCounterDeclaration(declaration) {
4137 + this.counterIncrement = parse(counterIncrement, declaration.counterIncrement);
4138 + this.counterReset = parse(counterReset, declaration.counterReset);
3726 4139 }
3727 4140 return CSSParsedCounterDeclaration;
3728 4141 }());
3729 4142 // eslint-disable-next-line @typescript-eslint/no-explicit-any
3730 - var parse = function (context, descriptor, style) {
4143 + var parse = function (descriptor, style) {
3731 4144 var tokenizer = new Tokenizer();
3732 4145 var value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;
3733 4146 tokenizer.write(value);
3734 4147 var parser = new Parser(tokenizer.read());
3735 4148 switch (descriptor.type) {
3736 - case 2 /* IDENT_VALUE */:
4149 + case PropertyDescriptorParsingType.IDENT_VALUE:
3737 4150 var token = parser.parseComponentValue();
3738 - return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);
3739 - case 0 /* VALUE */:
3740 - return descriptor.parse(context, parser.parseComponentValue());
3741 - case 1 /* LIST */:
3742 - return descriptor.parse(context, parser.parseComponentValues());
3743 - case 4 /* TOKEN_VALUE */:
4151 + return descriptor.parse(isIdentToken(token) ? token.value : descriptor.initialValue);
4152 + case PropertyDescriptorParsingType.VALUE:
4153 + return descriptor.parse(parser.parseComponentValue());
4154 + case PropertyDescriptorParsingType.LIST:
4155 + return descriptor.parse(parser.parseComponentValues());
4156 + case PropertyDescriptorParsingType.TOKEN_VALUE:
3744 4157 return parser.parseComponentValue();
3745 - case 3 /* TYPE_VALUE */:
4158 + case PropertyDescriptorParsingType.TYPE_VALUE:
3746 4159 switch (descriptor.format) {
3747 4160 case 'angle':
3748 - return angle.parse(context, parser.parseComponentValue());
4161 + return angle.parse(parser.parseComponentValue());
3749 4162 case 'color':
3750 - return color$1.parse(context, parser.parseComponentValue());
4163 + return color.parse(parser.parseComponentValue());
3751 4164 case 'image':
3752 - return image.parse(context, parser.parseComponentValue());
4165 + return image.parse(parser.parseComponentValue());
3753 4166 case 'length':
3754 4167 var length_1 = parser.parseComponentValue();
3755 4168 return isLength(length_1) ? length_1 : ZERO_LENGTH;
3756 4169 case 'length-percentage':
@@ -3755,624 +4168,28 @@
3755 4168 return isLength(length_1) ? length_1 : ZERO_LENGTH;
3756 4169 case 'length-percentage':
3757 4170 var value_1 = parser.parseComponentValue();
3758 4171 return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;
3759 - case 'time':
3760 - return time.parse(context, parser.parseComponentValue());
3761 4172 }
3762 - break;
3763 4173 }
4174 + throw new Error("Attempting to parse unsupported css format type " + descriptor.format);
3764 4175 };
3765 4176
3766 - var elementDebuggerAttribute = 'data-html2canvas-debug';
3767 - var getElementDebugType = function (element) {
3768 - var attribute = element.getAttribute(elementDebuggerAttribute);
3769 - switch (attribute) {
3770 - case 'all':
3771 - return 1 /* ALL */;
3772 - case 'clone':
3773 - return 2 /* CLONE */;
3774 - case 'parse':
3775 - return 3 /* PARSE */;
3776 - case 'render':
3777 - return 4 /* RENDER */;
3778 - default:
3779 - return 0 /* NONE */;
3780 - }
3781 - };
3782 - var isDebugging = function (element, type) {
3783 - var elementType = getElementDebugType(element);
3784 - return elementType === 1 /* ALL */ || type === elementType;
3785 - };
3786 -
3787 4177 var ElementContainer = /** @class */ (function () {
3788 - function ElementContainer(context, element) {
3789 - this.context = context;
4178 + function ElementContainer(element) {
4179 + this.styles = new CSSParsedDeclaration(window.getComputedStyle(element, null));
3790 4180 this.textNodes = [];
3791 4181 this.elements = [];
4182 + if (this.styles.transform !== null && isHTMLElementNode(element)) {
4183 + // getBoundingClientRect takes transforms into account
4184 + element.style.transform = 'none';
4185 + }
4186 + this.bounds = parseBounds(element);
3792 4187 this.flags = 0;
3793 - if (isDebugging(element, 3 /* PARSE */)) {
3794 - debugger;
3795 - }
3796 - this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));
3797 - if (isHTMLElementNode(element)) {
3798 - if (this.styles.animationDuration.some(function (duration) { return duration > 0; })) {
3799 - element.style.animationDuration = '0s';
3800 - }
3801 - if (this.styles.transform !== null) {
3802 - // getBoundingClientRect takes transforms into account
3803 - element.style.transform = 'none';
3804 - }
3805 - }
3806 - this.bounds = parseBounds(this.context, element);
3807 - if (isDebugging(element, 4 /* RENDER */)) {
3808 - this.flags |= 16 /* DEBUG_RENDER */;
3809 - }
3810 4188 }
3811 4189 return ElementContainer;
3812 4190 }());
3813 4191
3814 - /*
3815 - * text-segmentation 1.0.3 <https://github.com/niklasvh/text-segmentation>
3816 - * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
3817 - * Released under MIT License
3818 - */
3819 - var base64 = 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';
3820 -
3821 - /*
3822 - * utrie 1.0.2 <https://github.com/niklasvh/utrie>
3823 - * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
3824 - * Released under MIT License
3825 - */
3826 - var chars$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
3827 - // Use a lookup table to find the index.
3828 - var lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
3829 - for (var i$1 = 0; i$1 < chars$1.length; i$1++) {
3830 - lookup$1[chars$1.charCodeAt(i$1)] = i$1;
3831 - }
3832 - var decode = function (base64) {
3833 - var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
3834 - if (base64[base64.length - 1] === '=') {
3835 - bufferLength--;
3836 - if (base64[base64.length - 2] === '=') {
3837 - bufferLength--;
3838 - }
3839 - }
3840 - var buffer = typeof ArrayBuffer !== 'undefined' &&
3841 - typeof Uint8Array !== 'undefined' &&
3842 - typeof Uint8Array.prototype.slice !== 'undefined'
3843 - ? new ArrayBuffer(bufferLength)
3844 - : new Array(bufferLength);
3845 - var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
3846 - for (i = 0; i < len; i += 4) {
3847 - encoded1 = lookup$1[base64.charCodeAt(i)];
3848 - encoded2 = lookup$1[base64.charCodeAt(i + 1)];
3849 - encoded3 = lookup$1[base64.charCodeAt(i + 2)];
3850 - encoded4 = lookup$1[base64.charCodeAt(i + 3)];
3851 - bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
3852 - bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
3853 - bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
3854 - }
3855 - return buffer;
3856 - };
3857 - var polyUint16Array = function (buffer) {
3858 - var length = buffer.length;
3859 - var bytes = [];
3860 - for (var i = 0; i < length; i += 2) {
3861 - bytes.push((buffer[i + 1] << 8) | buffer[i]);
3862 - }
3863 - return bytes;
3864 - };
3865 - var polyUint32Array = function (buffer) {
3866 - var length = buffer.length;
3867 - var bytes = [];
3868 - for (var i = 0; i < length; i += 4) {
3869 - bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);
3870 - }
3871 - return bytes;
3872 - };
3873 -
3874 - /** Shift size for getting the index-2 table offset. */
3875 - var UTRIE2_SHIFT_2 = 5;
3876 - /** Shift size for getting the index-1 table offset. */
3877 - var UTRIE2_SHIFT_1 = 6 + 5;
3878 - /**
3879 - * Shift size for shifting left the index array values.
3880 - * Increases possible data size with 16-bit index values at the cost
3881 - * of compactability.
3882 - * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.
3883 - */
3884 - var UTRIE2_INDEX_SHIFT = 2;
3885 - /**
3886 - * Difference between the two shift sizes,
3887 - * for getting an index-1 offset from an index-2 offset. 6=11-5
3888 - */
3889 - var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;
3890 - /**
3891 - * The part of the index-2 table for U+D800..U+DBFF stores values for
3892 - * lead surrogate code _units_ not code _points_.
3893 - * Values for lead surrogate code _points_ are indexed with this portion of the table.
3894 - * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)
3895 - */
3896 - var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;
3897 - /** Number of entries in a data block. 32=0x20 */
3898 - var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;
3899 - /** Mask for getting the lower bits for the in-data-block offset. */
3900 - var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;
3901 - var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;
3902 - /** Count the lengths of both BMP pieces. 2080=0x820 */
3903 - var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;
3904 - /**
3905 - * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.
3906 - * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.
3907 - */
3908 - var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;
3909 - var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */
3910 - /**
3911 - * The index-1 table, only used for supplementary code points, at offset 2112=0x840.
3912 - * Variable length, for code points up to highStart, where the last single-value range starts.
3913 - * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.
3914 - * (For 0x100000 supplementary code points U+10000..U+10ffff.)
3915 - *
3916 - * The part of the index-2 table for supplementary code points starts
3917 - * after this index-1 table.
3918 - *
3919 - * Both the index-1 table and the following part of the index-2 table
3920 - * are omitted completely if there is only BMP data.
3921 - */
3922 - var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;
3923 - /**
3924 - * Number of index-1 entries for the BMP. 32=0x20
3925 - * This part of the index-1 table is omitted from the serialized form.
3926 - */
3927 - var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;
3928 - /** Number of entries in an index-2 block. 64=0x40 */
3929 - var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;
3930 - /** Mask for getting the lower bits for the in-index-2-block offset. */
3931 - var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;
3932 - var slice16 = function (view, start, end) {
3933 - if (view.slice) {
3934 - return view.slice(start, end);
3935 - }
3936 - return new Uint16Array(Array.prototype.slice.call(view, start, end));
3937 - };
3938 - var slice32 = function (view, start, end) {
3939 - if (view.slice) {
3940 - return view.slice(start, end);
3941 - }
3942 - return new Uint32Array(Array.prototype.slice.call(view, start, end));
3943 - };
3944 - var createTrieFromBase64 = function (base64, _byteLength) {
3945 - var buffer = decode(base64);
3946 - var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);
3947 - var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);
3948 - var headerLength = 24;
3949 - var index = slice16(view16, headerLength / 2, view32[4] / 2);
3950 - var data = view32[5] === 2
3951 - ? slice16(view16, (headerLength + view32[4]) / 2)
3952 - : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));
3953 - return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);
3954 - };
3955 - var Trie = /** @class */ (function () {
3956 - function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {
3957 - this.initialValue = initialValue;
3958 - this.errorValue = errorValue;
3959 - this.highStart = highStart;
3960 - this.highValueIndex = highValueIndex;
3961 - this.index = index;
3962 - this.data = data;
3963 - }
3964 - /**
3965 - * Get the value for a code point as stored in the Trie.
3966 - *
3967 - * @param codePoint the code point
3968 - * @return the value
3969 - */
3970 - Trie.prototype.get = function (codePoint) {
3971 - var ix;
3972 - if (codePoint >= 0) {
3973 - if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {
3974 - // Ordinary BMP code point, excluding leading surrogates.
3975 - // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.
3976 - // 16 bit data is stored in the index array itself.
3977 - ix = this.index[codePoint >> UTRIE2_SHIFT_2];
3978 - ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
3979 - return this.data[ix];
3980 - }
3981 - if (codePoint <= 0xffff) {
3982 - // Lead Surrogate Code Point. A Separate index section is stored for
3983 - // lead surrogate code units and code points.
3984 - // The main index has the code unit data.
3985 - // For this function, we need the code point data.
3986 - // Note: this expression could be refactored for slightly improved efficiency, but
3987 - // surrogate code points will be so rare in practice that it's not worth it.
3988 - ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];
3989 - ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
3990 - return this.data[ix];
3991 - }
3992 - if (codePoint < this.highStart) {
3993 - // Supplemental code point, use two-level lookup.
3994 - ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);
3995 - ix = this.index[ix];
3996 - ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;
3997 - ix = this.index[ix];
3998 - ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
3999 - return this.data[ix];
4000 - }
4001 - if (codePoint <= 0x10ffff) {
4002 - return this.data[this.highValueIndex];
4003 - }
4004 - }
4005 - // Fall through. The code point is outside of the legal range of 0..0x10ffff.
4006 - return this.errorValue;
4007 - };
4008 - return Trie;
4009 - }());
4010 -
4011 - /*
4012 - * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>
4013 - * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
4014 - * Released under MIT License
4015 - */
4016 - var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
4017 - // Use a lookup table to find the index.
4018 - var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
4019 - for (var i = 0; i < chars.length; i++) {
4020 - lookup[chars.charCodeAt(i)] = i;
4021 - }
4022 -
4023 - var Prepend = 1;
4024 - var CR = 2;
4025 - var LF = 3;
4026 - var Control = 4;
4027 - var Extend = 5;
4028 - var SpacingMark = 7;
4029 - var L = 8;
4030 - var V = 9;
4031 - var T = 10;
4032 - var LV = 11;
4033 - var LVT = 12;
4034 - var ZWJ = 13;
4035 - var Extended_Pictographic = 14;
4036 - var RI = 15;
4037 - var toCodePoints = function (str) {
4038 - var codePoints = [];
4039 - var i = 0;
4040 - var length = str.length;
4041 - while (i < length) {
4042 - var value = str.charCodeAt(i++);
4043 - if (value >= 0xd800 && value <= 0xdbff && i < length) {
4044 - var extra = str.charCodeAt(i++);
4045 - if ((extra & 0xfc00) === 0xdc00) {
4046 - codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);
4047 - }
4048 - else {
4049 - codePoints.push(value);
4050 - i--;
4051 - }
4052 - }
4053 - else {
4054 - codePoints.push(value);
4055 - }
4056 - }
4057 - return codePoints;
4058 - };
4059 - var fromCodePoint = function () {
4060 - var codePoints = [];
4061 - for (var _i = 0; _i < arguments.length; _i++) {
4062 - codePoints[_i] = arguments[_i];
4063 - }
4064 - if (String.fromCodePoint) {
4065 - return String.fromCodePoint.apply(String, codePoints);
4066 - }
4067 - var length = codePoints.length;
4068 - if (!length) {
4069 - return '';
4070 - }
4071 - var codeUnits = [];
4072 - var index = -1;
4073 - var result = '';
4074 - while (++index < length) {
4075 - var codePoint = codePoints[index];
4076 - if (codePoint <= 0xffff) {
4077 - codeUnits.push(codePoint);
4078 - }
4079 - else {
4080 - codePoint -= 0x10000;
4081 - codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);
4082 - }
4083 - if (index + 1 === length || codeUnits.length > 0x4000) {
4084 - result += String.fromCharCode.apply(String, codeUnits);
4085 - codeUnits.length = 0;
4086 - }
4087 - }
4088 - return result;
4089 - };
4090 - var UnicodeTrie = createTrieFromBase64(base64);
4091 - var BREAK_NOT_ALLOWED = '×';
4092 - var BREAK_ALLOWED = '÷';
4093 - var codePointToClass = function (codePoint) { return UnicodeTrie.get(codePoint); };
4094 - var _graphemeBreakAtIndex = function (_codePoints, classTypes, index) {
4095 - var prevIndex = index - 2;
4096 - var prev = classTypes[prevIndex];
4097 - var current = classTypes[index - 1];
4098 - var next = classTypes[index];
4099 - // GB3 Do not break between a CR and LF
4100 - if (current === CR && next === LF) {
4101 - return BREAK_NOT_ALLOWED;
4102 - }
4103 - // GB4 Otherwise, break before and after controls.
4104 - if (current === CR || current === LF || current === Control) {
4105 - return BREAK_ALLOWED;
4106 - }
4107 - // GB5
4108 - if (next === CR || next === LF || next === Control) {
4109 - return BREAK_ALLOWED;
4110 - }
4111 - // Do not break Hangul syllable sequences.
4112 - // GB6
4113 - if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {
4114 - return BREAK_NOT_ALLOWED;
4115 - }
4116 - // GB7
4117 - if ((current === LV || current === V) && (next === V || next === T)) {
4118 - return BREAK_NOT_ALLOWED;
4119 - }
4120 - // GB8
4121 - if ((current === LVT || current === T) && next === T) {
4122 - return BREAK_NOT_ALLOWED;
4123 - }
4124 - // GB9 Do not break before extending characters or ZWJ.
4125 - if (next === ZWJ || next === Extend) {
4126 - return BREAK_NOT_ALLOWED;
4127 - }
4128 - // Do not break before SpacingMarks, or after Prepend characters.
4129 - // GB9a
4130 - if (next === SpacingMark) {
4131 - return BREAK_NOT_ALLOWED;
4132 - }
4133 - // GB9a
4134 - if (current === Prepend) {
4135 - return BREAK_NOT_ALLOWED;
4136 - }
4137 - // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.
4138 - if (current === ZWJ && next === Extended_Pictographic) {
4139 - while (prev === Extend) {
4140 - prev = classTypes[--prevIndex];
4141 - }
4142 - if (prev === Extended_Pictographic) {
4143 - return BREAK_NOT_ALLOWED;
4144 - }
4145 - }
4146 - // GB12 Do not break within emoji flag sequences.
4147 - // That is, do not break between regional indicator (RI) symbols
4148 - // if there is an odd number of RI characters before the break point.
4149 - if (current === RI && next === RI) {
4150 - var countRI = 0;
4151 - while (prev === RI) {
4152 - countRI++;
4153 - prev = classTypes[--prevIndex];
4154 - }
4155 - if (countRI % 2 === 0) {
4156 - return BREAK_NOT_ALLOWED;
4157 - }
4158 - }
4159 - return BREAK_ALLOWED;
4160 - };
4161 - var GraphemeBreaker = function (str) {
4162 - var codePoints = toCodePoints(str);
4163 - var length = codePoints.length;
4164 - var index = 0;
4165 - var lastEnd = 0;
4166 - var classTypes = codePoints.map(codePointToClass);
4167 - return {
4168 - next: function () {
4169 - if (index >= length) {
4170 - return { done: true, value: null };
4171 - }
4172 - var graphemeBreak = BREAK_NOT_ALLOWED;
4173 - while (index < length &&
4174 - (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) { }
4175 - if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {
4176 - var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));
4177 - lastEnd = index;
4178 - return { value: value, done: false };
4179 - }
4180 - return { done: true, value: null };
4181 - },
4182 - };
4183 - };
4184 - var splitGraphemes = function (str) {
4185 - var breaker = GraphemeBreaker(str);
4186 - var graphemes = [];
4187 - var bk;
4188 - while (!(bk = breaker.next()).done) {
4189 - if (bk.value) {
4190 - graphemes.push(bk.value.slice());
4191 - }
4192 - }
4193 - return graphemes;
4194 - };
4195 -
4196 - var testRangeBounds = function (document) {
4197 - var TEST_HEIGHT = 123;
4198 - if (document.createRange) {
4199 - var range = document.createRange();
4200 - if (range.getBoundingClientRect) {
4201 - var testElement = document.createElement('boundtest');
4202 - testElement.style.height = TEST_HEIGHT + "px";
4203 - testElement.style.display = 'block';
4204 - document.body.appendChild(testElement);
4205 - range.selectNode(testElement);
4206 - var rangeBounds = range.getBoundingClientRect();
4207 - var rangeHeight = Math.round(rangeBounds.height);
4208 - document.body.removeChild(testElement);
4209 - if (rangeHeight === TEST_HEIGHT) {
4210 - return true;
4211 - }
4212 - }
4213 - }
4214 - return false;
4215 - };
4216 - var testIOSLineBreak = function (document) {
4217 - var testElement = document.createElement('boundtest');
4218 - testElement.style.width = '50px';
4219 - testElement.style.display = 'block';
4220 - testElement.style.fontSize = '12px';
4221 - testElement.style.letterSpacing = '0px';
4222 - testElement.style.wordSpacing = '0px';
4223 - document.body.appendChild(testElement);
4224 - var range = document.createRange();
4225 - testElement.innerHTML = typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : '';
4226 - var node = testElement.firstChild;
4227 - var textList = toCodePoints$1(node.data).map(function (i) { return fromCodePoint$1(i); });
4228 - var offset = 0;
4229 - var prev = {};
4230 - // ios 13 does not handle range getBoundingClientRect line changes correctly #2177
4231 - var supports = textList.every(function (text, i) {
4232 - range.setStart(node, offset);
4233 - range.setEnd(node, offset + text.length);
4234 - var rect = range.getBoundingClientRect();
4235 - offset += text.length;
4236 - var boundAhead = rect.x > prev.x || rect.y > prev.y;
4237 - prev = rect;
4238 - if (i === 0) {
4239 - return true;
4240 - }
4241 - return boundAhead;
4242 - });
4243 - document.body.removeChild(testElement);
4244 - return supports;
4245 - };
4246 - var testCORS = function () { return typeof new Image().crossOrigin !== 'undefined'; };
4247 - var testResponseType = function () { return typeof new XMLHttpRequest().responseType === 'string'; };
4248 - var testSVG = function (document) {
4249 - var img = new Image();
4250 - var canvas = document.createElement('canvas');
4251 - var ctx = canvas.getContext('2d');
4252 - if (!ctx) {
4253 - return false;
4254 - }
4255 - img.src = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";
4256 - try {
4257 - ctx.drawImage(img, 0, 0);
4258 - canvas.toDataURL();
4259 - }
4260 - catch (e) {
4261 - return false;
4262 - }
4263 - return true;
4264 - };
4265 - var isGreenPixel = function (data) {
4266 - return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;
4267 - };
4268 - var testForeignObject = function (document) {
4269 - var canvas = document.createElement('canvas');
4270 - var size = 100;
4271 - canvas.width = size;
4272 - canvas.height = size;
4273 - var ctx = canvas.getContext('2d');
4274 - if (!ctx) {
4275 - return Promise.reject(false);
4276 - }
4277 - ctx.fillStyle = 'rgb(0, 255, 0)';
4278 - ctx.fillRect(0, 0, size, size);
4279 - var img = new Image();
4280 - var greenImageSrc = canvas.toDataURL();
4281 - img.src = greenImageSrc;
4282 - var svg = createForeignObjectSVG(size, size, 0, 0, img);
4283 - ctx.fillStyle = 'red';
4284 - ctx.fillRect(0, 0, size, size);
4285 - return loadSerializedSVG$1(svg)
4286 - .then(function (img) {
4287 - ctx.drawImage(img, 0, 0);
4288 - var data = ctx.getImageData(0, 0, size, size).data;
4289 - ctx.fillStyle = 'red';
4290 - ctx.fillRect(0, 0, size, size);
4291 - var node = document.createElement('div');
4292 - node.style.backgroundImage = "url(" + greenImageSrc + ")";
4293 - node.style.height = size + "px";
4294 - // Firefox 55 does not render inline <img /> tags
4295 - return isGreenPixel(data)
4296 - ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node))
4297 - : Promise.reject(false);
4298 - })
4299 - .then(function (img) {
4300 - ctx.drawImage(img, 0, 0);
4301 - // Edge does not render background-images
4302 - return isGreenPixel(ctx.getImageData(0, 0, size, size).data);
4303 - })
4304 - .catch(function () { return false; });
4305 - };
4306 - var createForeignObjectSVG = function (width, height, x, y, node) {
4307 - var xmlns = 'http://www.w3.org/2000/svg';
4308 - var svg = document.createElementNS(xmlns, 'svg');
4309 - var foreignObject = document.createElementNS(xmlns, 'foreignObject');
4310 - svg.setAttributeNS(null, 'width', width.toString());
4311 - svg.setAttributeNS(null, 'height', height.toString());
4312 - foreignObject.setAttributeNS(null, 'width', '100%');
4313 - foreignObject.setAttributeNS(null, 'height', '100%');
4314 - foreignObject.setAttributeNS(null, 'x', x.toString());
4315 - foreignObject.setAttributeNS(null, 'y', y.toString());
4316 - foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');
4317 - svg.appendChild(foreignObject);
4318 - foreignObject.appendChild(node);
4319 - return svg;
4320 - };
4321 - var loadSerializedSVG$1 = function (svg) {
4322 - return new Promise(function (resolve, reject) {
4323 - var img = new Image();
4324 - img.onload = function () { return resolve(img); };
4325 - img.onerror = reject;
4326 - img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg));
4327 - });
4328 - };
4329 - var FEATURES = {
4330 - get SUPPORT_RANGE_BOUNDS() {
4331 - var value = testRangeBounds(document);
4332 - Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value });
4333 - return value;
4334 - },
4335 - get SUPPORT_WORD_BREAKING() {
4336 - var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);
4337 - Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', { value: value });
4338 - return value;
4339 - },
4340 - get SUPPORT_SVG_DRAWING() {
4341 - var value = testSVG(document);
4342 - Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value });
4343 - return value;
4344 - },
4345 - get SUPPORT_FOREIGNOBJECT_DRAWING() {
4346 - var value = typeof Array.from === 'function' && typeof window.fetch === 'function'
4347 - ? testForeignObject(document)
4348 - : Promise.resolve(false);
4349 - Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value });
4350 - return value;
4351 - },
4352 - get SUPPORT_CORS_IMAGES() {
4353 - var value = testCORS();
4354 - Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value });
4355 - return value;
4356 - },
4357 - get SUPPORT_RESPONSE_TYPE() {
4358 - var value = testResponseType();
4359 - Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value });
4360 - return value;
4361 - },
4362 - get SUPPORT_CORS_XHR() {
4363 - var value = 'withCredentials' in new XMLHttpRequest();
4364 - Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value });
4365 - return value;
4366 - },
4367 - get SUPPORT_NATIVE_TEXT_SEGMENTATION() {
4368 - // eslint-disable-next-line @typescript-eslint/no-explicit-any
4369 - var value = !!(typeof Intl !== 'undefined' && Intl.Segmenter);
4370 - Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', { value: value });
4371 - return value;
4372 - }
4373 - };
4374 -
4375 4192 var TextBounds = /** @class */ (function () {
4376 4193 function TextBounds(text, bounds) {
4377 4194 this.text = text;
4378 4195 this.bounds = bounds;
@@ -4378,9 +4195,9 @@
4378 4195 this.bounds = bounds;
4379 4196 }
4380 4197 return TextBounds;
4381 4198 }());
4382 - var parseTextBounds = function (context, value, styles, node) {
4199 + var parseTextBounds = function (value, styles, node) {
4383 4200 var textList = breakText(value, styles);
4384 4201 var textBounds = [];
4385 4202 var offset = 0;
4386 4203 textList.forEach(function (text) {
@@ -4385,24 +4202,13 @@
4385 4202 var offset = 0;
4386 4203 textList.forEach(function (text) {
4387 4204 if (styles.textDecorationLine.length || text.trim().length > 0) {
4388 4205 if (FEATURES.SUPPORT_RANGE_BOUNDS) {
4389 - var clientRects = createRange(node, offset, text.length).getClientRects();
4390 - if (clientRects.length > 1) {
4391 - var subSegments = segmentGraphemes(text);
4392 - var subOffset_1 = 0;
4393 - subSegments.forEach(function (subSegment) {
4394 - textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset, subSegment.length).getClientRects())));
4395 - subOffset_1 += subSegment.length;
4396 - });
4397 - }
4398 - else {
4399 - textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));
4400 - }
4206 + textBounds.push(new TextBounds(text, getRangeBounds(node, offset, text.length)));
4401 4207 }
4402 4208 else {
4403 4209 var replacementNode = node.splitText(text.length);
4404 - textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));
4210 + textBounds.push(new TextBounds(text, getWrapperBounds(node)));
4405 4211 node = replacementNode;
4406 4212 }
4407 4213 }
4408 4214 else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {
@@ -4411,9 +4217,9 @@
4411 4217 offset += text.length;
4412 4218 });
4413 4219 return textBounds;
4414 4220 };
4415 - var getWrapperBounds = function (context, node) {
4221 + var getWrapperBounds = function (node) {
4416 4222 var ownerDocument = node.ownerDocument;
4417 4223 if (ownerDocument) {
4418 4224 var wrapper = ownerDocument.createElement('html2canvaswrapper');
4419 4225 wrapper.appendChild(node.cloneNode(true));
@@ -4419,9 +4225,9 @@
4419 4225 wrapper.appendChild(node.cloneNode(true));
4420 4226 var parentNode = node.parentNode;
4421 4227 if (parentNode) {
4422 4228 parentNode.replaceChild(wrapper, node);
4423 - var bounds = parseBounds(context, wrapper);
4229 + var bounds = parseBounds(wrapper);
4424 4230 if (wrapper.firstChild) {
4425 4231 parentNode.replaceChild(wrapper.firstChild, wrapper);
4426 4232 }
4427 4233 return bounds;
@@ -4426,11 +4232,11 @@
4426 4232 }
4427 4233 return bounds;
4428 4234 }
4429 4235 }
4430 - return Bounds.EMPTY;
4236 + return new Bounds(0, 0, 0, 0);
4431 4237 };
4432 - var createRange = function (node, offset, length) {
4238 + var getRangeBounds = function (node, offset, length) {
4433 4239 var ownerDocument = node.ownerDocument;
4434 4240 if (!ownerDocument) {
4435 4241 throw new Error('Node has no owner document');
4436 4242 }
@@ -4436,84 +4242,42 @@
4436 4242 }
4437 4243 var range = ownerDocument.createRange();
4438 4244 range.setStart(node, offset);
4439 4245 range.setEnd(node, offset + length);
4440 - return range;
4246 + return Bounds.fromClientRect(range.getBoundingClientRect());
4441 4247 };
4442 - var segmentGraphemes = function (value) {
4443 - if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
4444 - // eslint-disable-next-line @typescript-eslint/no-explicit-any
4445 - var segmenter = new Intl.Segmenter(void 0, { granularity: 'grapheme' });
4446 - // eslint-disable-next-line @typescript-eslint/no-explicit-any
4447 - return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });
4448 - }
4449 - return splitGraphemes(value);
4450 - };
4451 - var segmentWords = function (value, styles) {
4452 - if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
4453 - // eslint-disable-next-line @typescript-eslint/no-explicit-any
4454 - var segmenter = new Intl.Segmenter(void 0, {
4455 - granularity: 'word'
4456 - });
4457 - // eslint-disable-next-line @typescript-eslint/no-explicit-any
4458 - return Array.from(segmenter.segment(value)).map(function (segment) { return segment.segment; });
4459 - }
4460 - return breakWords(value, styles);
4461 - };
4462 4248 var breakText = function (value, styles) {
4463 - return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);
4249 + return styles.letterSpacing !== 0 ? toCodePoints(value).map(function (i) { return fromCodePoint(i); }) : breakWords(value, styles);
4464 4250 };
4465 - // https://drafts.csswg.org/css-text/#word-separator
4466 - var wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];
4467 4251 var breakWords = function (str, styles) {
4468 4252 var breaker = LineBreaker(str, {
4469 4253 lineBreak: styles.lineBreak,
4470 - wordBreak: styles.overflowWrap === "break-word" /* BREAK_WORD */ ? 'break-word' : styles.wordBreak
4254 + wordBreak: styles.overflowWrap === OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : styles.wordBreak
4471 4255 });
4472 4256 var words = [];
4473 4257 var bk;
4474 - var _loop_1 = function () {
4258 + while (!(bk = breaker.next()).done) {
4475 4259 if (bk.value) {
4476 - var value = bk.value.slice();
4477 - var codePoints = toCodePoints$1(value);
4478 - var word_1 = '';
4479 - codePoints.forEach(function (codePoint) {
4480 - if (wordSeparators.indexOf(codePoint) === -1) {
4481 - word_1 += fromCodePoint$1(codePoint);
4482 - }
4483 - else {
4484 - if (word_1.length) {
4485 - words.push(word_1);
4486 - }
4487 - words.push(fromCodePoint$1(codePoint));
4488 - word_1 = '';
4489 - }
4490 - });
4491 - if (word_1.length) {
4492 - words.push(word_1);
4493 - }
4260 + words.push(bk.value.slice());
4494 4261 }
4495 - };
4496 - while (!(bk = breaker.next()).done) {
4497 - _loop_1();
4498 4262 }
4499 4263 return words;
4500 4264 };
4501 4265
4502 4266 var TextContainer = /** @class */ (function () {
4503 - function TextContainer(context, node, styles) {
4504 - this.text = transform(node.data, styles.textTransform);
4505 - this.textBounds = parseTextBounds(context, this.text, styles, node);
4267 + function TextContainer(node, styles) {
4268 + this.text = transform$1(node.data, styles.textTransform);
4269 + this.textBounds = parseTextBounds(this.text, styles, node);
4506 4270 }
4507 4271 return TextContainer;
4508 4272 }());
4509 - var transform = function (text, transform) {
4273 + var transform$1 = function (text, transform) {
4510 4274 switch (transform) {
4511 - case 1 /* LOWERCASE */:
4275 + case TEXT_TRANSFORM.LOWERCASE:
4512 4276 return text.toLowerCase();
4513 - case 3 /* CAPITALIZE */:
4277 + case TEXT_TRANSFORM.CAPITALIZE:
4514 4278 return text.replace(CAPITALIZE, capitalize);
4515 - case 2 /* UPPERCASE */:
4279 + case TEXT_TRANSFORM.UPPERCASE:
4516 4280 return text.toUpperCase();
4517 4281 default:
4518 4282 return text;
4519 4283 }
@@ -4527,14 +4291,14 @@
4527 4291 };
4528 4292
4529 4293 var ImageElementContainer = /** @class */ (function (_super) {
4530 4294 __extends(ImageElementContainer, _super);
4531 - function ImageElementContainer(context, img) {
4532 - var _this = _super.call(this, context, img) || this;
4295 + function ImageElementContainer(img) {
4296 + var _this = _super.call(this, img) || this;
4533 4297 _this.src = img.currentSrc || img.src;
4534 4298 _this.intrinsicWidth = img.naturalWidth;
4535 4299 _this.intrinsicHeight = img.naturalHeight;
4536 - _this.context.cache.addImage(_this.src);
4300 + CacheStorage.getInstance().addImage(_this.src);
4537 4301 return _this;
4538 4302 }
4539 4303 return ImageElementContainer;
4540 4304 }(ElementContainer));
@@ -4540,10 +4304,10 @@
4540 4304 }(ElementContainer));
4541 4305
4542 4306 var CanvasElementContainer = /** @class */ (function (_super) {
4543 4307 __extends(CanvasElementContainer, _super);
4544 - function CanvasElementContainer(context, canvas) {
4545 - var _this = _super.call(this, context, canvas) || this;
4308 + function CanvasElementContainer(canvas) {
4309 + var _this = _super.call(this, canvas) || this;
4546 4310 _this.canvas = canvas;
4547 4311 _this.intrinsicWidth = canvas.width;
4548 4312 _this.intrinsicHeight = canvas.height;
4549 4313 return _this;
@@ -4552,18 +4316,15 @@
4552 4316 }(ElementContainer));
4553 4317
4554 4318 var SVGElementContainer = /** @class */ (function (_super) {
4555 4319 __extends(SVGElementContainer, _super);
4556 - function SVGElementContainer(context, img) {
4557 - var _this = _super.call(this, context, img) || this;
4320 + function SVGElementContainer(img) {
4321 + var _this = _super.call(this, img) || this;
4558 4322 var s = new XMLSerializer();
4559 - var bounds = parseBounds(context, img);
4560 - img.setAttribute('width', bounds.width + "px");
4561 - img.setAttribute('height', bounds.height + "px");
4562 4323 _this.svg = "data:image/svg+xml," + encodeURIComponent(s.serializeToString(img));
4563 4324 _this.intrinsicWidth = img.width.baseVal.value;
4564 4325 _this.intrinsicHeight = img.height.baseVal.value;
4565 - _this.context.cache.addImage(_this.svg);
4326 + CacheStorage.getInstance().addImage(_this.svg);
4566 4327 return _this;
4567 4328 }
4568 4329 return SVGElementContainer;
4569 4330 }(ElementContainer));
@@ -4569,10 +4330,10 @@
4569 4330 }(ElementContainer));
4570 4331
4571 4332 var LIElementContainer = /** @class */ (function (_super) {
4572 4333 __extends(LIElementContainer, _super);
4573 - function LIElementContainer(context, element) {
4574 - var _this = _super.call(this, context, element) || this;
4334 + function LIElementContainer(element) {
4335 + var _this = _super.call(this, element) || this;
4575 4336 _this.value = element.value;
4576 4337 return _this;
4577 4338 }
4578 4339 return LIElementContainer;
@@ -4579,10 +4340,10 @@
4579 4340 }(ElementContainer));
4580 4341
4581 4342 var OLElementContainer = /** @class */ (function (_super) {
4582 4343 __extends(OLElementContainer, _super);
4583 - function OLElementContainer(context, element) {
4584 - var _this = _super.call(this, context, element) || this;
4344 + function OLElementContainer(element) {
4345 + var _this = _super.call(this, element) || this;
4585 4346 _this.start = element.start;
4586 4347 _this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;
4587 4348 return _this;
4588 4349 }
@@ -4590,9 +4351,9 @@
4590 4351 }(ElementContainer));
4591 4352
4592 4353 var CHECKBOX_BORDER_RADIUS = [
4593 4354 {
4594 - type: 15 /* DIMENSION_TOKEN */,
4355 + type: TokenType.DIMENSION_TOKEN,
4595 4356 flags: 0,
4596 4357 unit: 'px',
4597 4358 number: 3
4598 4359 }
@@ -4598,9 +4359,9 @@
4598 4359 }
4599 4360 ];
4600 4361 var RADIO_BORDER_RADIUS = [
4601 4362 {
4602 - type: 16 /* PERCENTAGE_TOKEN */,
4363 + type: TokenType.PERCENTAGE_TOKEN,
4603 4364 flags: 0,
4604 4365 number: 50
4605 4366 }
4606 4367 ];
@@ -4622,48 +4383,29 @@
4622 4383 var PASSWORD = 'password';
4623 4384 var INPUT_COLOR = 0x2a2a2aff;
4624 4385 var InputElementContainer = /** @class */ (function (_super) {
4625 4386 __extends(InputElementContainer, _super);
4626 - function InputElementContainer(context, input) {
4627 - var _this = _super.call(this, context, input) || this;
4387 + function InputElementContainer(input) {
4388 + var _this = _super.call(this, input) || this;
4628 4389 _this.type = input.type.toLowerCase();
4629 4390 _this.checked = input.checked;
4630 4391 _this.value = getInputValue(input);
4631 4392 if (_this.type === CHECKBOX || _this.type === RADIO) {
4632 4393 _this.styles.backgroundColor = 0xdededeff;
4633 - _this.styles.borderTopColor =
4634 - _this.styles.borderRightColor =
4635 - _this.styles.borderBottomColor =
4636 - _this.styles.borderLeftColor =
4637 - 0xa5a5a5ff;
4638 - _this.styles.borderTopWidth =
4639 - _this.styles.borderRightWidth =
4640 - _this.styles.borderBottomWidth =
4641 - _this.styles.borderLeftWidth =
4642 - 1;
4643 - _this.styles.borderTopStyle =
4644 - _this.styles.borderRightStyle =
4645 - _this.styles.borderBottomStyle =
4646 - _this.styles.borderLeftStyle =
4647 - 1 /* SOLID */;
4648 - _this.styles.backgroundClip = [0 /* BORDER_BOX */];
4394 + _this.styles.borderTopColor = _this.styles.borderRightColor = _this.styles.borderBottomColor = _this.styles.borderLeftColor = 0xa5a5a5ff;
4395 + _this.styles.borderTopWidth = _this.styles.borderRightWidth = _this.styles.borderBottomWidth = _this.styles.borderLeftWidth = 1;
4396 + _this.styles.borderTopStyle = _this.styles.borderRightStyle = _this.styles.borderBottomStyle = _this.styles.borderLeftStyle =
4397 + BORDER_STYLE.SOLID;
4398 + _this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];
4649 4399 _this.styles.backgroundOrigin = [0 /* BORDER_BOX */];
4650 4400 _this.bounds = reformatInputBounds(_this.bounds);
4651 4401 }
4652 4402 switch (_this.type) {
4653 4403 case CHECKBOX:
4654 - _this.styles.borderTopRightRadius =
4655 - _this.styles.borderTopLeftRadius =
4656 - _this.styles.borderBottomRightRadius =
4657 - _this.styles.borderBottomLeftRadius =
4658 - CHECKBOX_BORDER_RADIUS;
4404 + _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = CHECKBOX_BORDER_RADIUS;
4659 4405 break;
4660 4406 case RADIO:
4661 - _this.styles.borderTopRightRadius =
4662 - _this.styles.borderTopLeftRadius =
4663 - _this.styles.borderBottomRightRadius =
4664 - _this.styles.borderBottomLeftRadius =
4665 - RADIO_BORDER_RADIUS;
4407 + _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = RADIO_BORDER_RADIUS;
4666 4408 break;
4667 4409 }
4668 4410 return _this;
4669 4411 }
@@ -4671,10 +4413,10 @@
4671 4413 }(ElementContainer));
4672 4414
4673 4415 var SelectElementContainer = /** @class */ (function (_super) {
4674 4416 __extends(SelectElementContainer, _super);
4675 - function SelectElementContainer(context, element) {
4676 - var _this = _super.call(this, context, element) || this;
4417 + function SelectElementContainer(element) {
4418 + var _this = _super.call(this, element) || this;
4677 4419 var option = element.options[element.selectedIndex || 0];
4678 4420 _this.value = option ? option.text || '' : '';
4679 4421 return _this;
4680 4422 }
@@ -4682,10 +4424,10 @@
4682 4424 }(ElementContainer));
4683 4425
4684 4426 var TextareaElementContainer = /** @class */ (function (_super) {
4685 4427 __extends(TextareaElementContainer, _super);
4686 - function TextareaElementContainer(context, element) {
4687 - var _this = _super.call(this, context, element) || this;
4428 + function TextareaElementContainer(element) {
4429 + var _this = _super.call(this, element) || this;
4688 4430 _this.value = element.value;
4689 4431 return _this;
4690 4432 }
4691 4433 return TextareaElementContainer;
@@ -4690,12 +4432,13 @@
4690 4432 }
4691 4433 return TextareaElementContainer;
4692 4434 }(ElementContainer));
4693 4435
4436 + var parseColor = function (value) { return color.parse(Parser.create(value).parseComponentValue()); };
4694 4437 var IFrameElementContainer = /** @class */ (function (_super) {
4695 4438 __extends(IFrameElementContainer, _super);
4696 - function IFrameElementContainer(context, iframe) {
4697 - var _this = _super.call(this, context, iframe) || this;
4439 + function IFrameElementContainer(iframe) {
4440 + var _this = _super.call(this, iframe) || this;
4698 4441 _this.src = iframe.src;
4699 4442 _this.width = parseInt(iframe.width, 10) || 0;
4700 4443 _this.height = parseInt(iframe.height, 10) || 0;
4701 4444 _this.backgroundColor = _this.styles.backgroundColor;
@@ -4702,15 +4445,16 @@
4702 4445 try {
4703 4446 if (iframe.contentWindow &&
4704 4447 iframe.contentWindow.document &&
4705 4448 iframe.contentWindow.document.documentElement) {
4706 - _this.tree = parseTree(context, iframe.contentWindow.document.documentElement);
4449 + _this.tree = parseTree(iframe.contentWindow.document.documentElement);
4707 4450 // http://www.w3.org/TR/css3-background/#special-backgrounds
4708 4451 var documentBackgroundColor = iframe.contentWindow.document.documentElement
4709 - ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor)
4452 + ? parseColor(getComputedStyle(iframe.contentWindow.document.documentElement)
4453 + .backgroundColor)
4710 4454 : COLORS.TRANSPARENT;
4711 4455 var bodyBackgroundColor = iframe.contentWindow.document.body
4712 - ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor)
4456 + ? parseColor(getComputedStyle(iframe.contentWindow.document.body).backgroundColor)
4713 4457 : COLORS.TRANSPARENT;
4714 4458 _this.backgroundColor = isTransparent(documentBackgroundColor)
4715 4459 ? isTransparent(bodyBackgroundColor)
4716 4460 ? _this.styles.backgroundColor
@@ -4724,79 +4468,68 @@
4724 4468 return IFrameElementContainer;
4725 4469 }(ElementContainer));
4726 4470
4727 4471 var LIST_OWNERS = ['OL', 'UL', 'MENU'];
4728 - var parseNodeTree = function (context, node, parent, root) {
4472 + var parseNodeTree = function (node, parent, root) {
4729 4473 for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {
4730 4474 nextNode = childNode.nextSibling;
4731 4475 if (isTextNode(childNode) && childNode.data.trim().length > 0) {
4732 - parent.textNodes.push(new TextContainer(context, childNode, parent.styles));
4476 + parent.textNodes.push(new TextContainer(childNode, parent.styles));
4733 4477 }
4734 4478 else if (isElementNode(childNode)) {
4735 - if (isSlotElement(childNode) && childNode.assignedNodes) {
4736 - childNode.assignedNodes().forEach(function (childNode) { return parseNodeTree(context, childNode, parent, root); });
4737 - }
4738 - else {
4739 - var container = createContainer(context, childNode);
4740 - if (container.styles.isVisible()) {
4741 - if (createsRealStackingContext(childNode, container, root)) {
4742 - container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;
4743 - }
4744 - else if (createsStackingContext(container.styles)) {
4745 - container.flags |= 2 /* CREATES_STACKING_CONTEXT */;
4746 - }
4747 - if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {
4748 - container.flags |= 8 /* IS_LIST_OWNER */;
4749 - }
4750 - parent.elements.push(container);
4751 - childNode.slot;
4752 - if (childNode.shadowRoot) {
4753 - parseNodeTree(context, childNode.shadowRoot, container, root);
4754 - }
4755 - else if (!isTextareaElement(childNode) &&
4756 - !isSVGElement(childNode) &&
4757 - !isSelectElement(childNode)) {
4758 - parseNodeTree(context, childNode, container, root);
4759 - }
4479 + var container = createContainer(childNode);
4480 + if (container.styles.isVisible()) {
4481 + if (createsRealStackingContext(childNode, container, root)) {
4482 + container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;
4760 4483 }
4484 + else if (createsStackingContext(container.styles)) {
4485 + container.flags |= 2 /* CREATES_STACKING_CONTEXT */;
4486 + }
4487 + if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {
4488 + container.flags |= 8 /* IS_LIST_OWNER */;
4489 + }
4490 + parent.elements.push(container);
4491 + if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) {
4492 + parseNodeTree(childNode, container, root);
4493 + }
4761 4494 }
4762 4495 }
4763 4496 }
4764 4497 };
4765 - var createContainer = function (context, element) {
4498 + var createContainer = function (element) {
4766 4499 if (isImageElement(element)) {
4767 - return new ImageElementContainer(context, element);
4500 + return new ImageElementContainer(element);
4768 4501 }
4769 4502 if (isCanvasElement(element)) {
4770 - return new CanvasElementContainer(context, element);
4503 + return new CanvasElementContainer(element);
4771 4504 }
4772 4505 if (isSVGElement(element)) {
4773 - return new SVGElementContainer(context, element);
4506 + return new SVGElementContainer(element);
4774 4507 }
4775 4508 if (isLIElement(element)) {
4776 - return new LIElementContainer(context, element);
4509 + return new LIElementContainer(element);
4777 4510 }
4778 4511 if (isOLElement(element)) {
4779 - return new OLElementContainer(context, element);
4512 + return new OLElementContainer(element);
4780 4513 }
4781 4514 if (isInputElement(element)) {
4782 - return new InputElementContainer(context, element);
4515 + return new InputElementContainer(element);
4783 4516 }
4784 4517 if (isSelectElement(element)) {
4785 - return new SelectElementContainer(context, element);
4518 + return new SelectElementContainer(element);
4786 4519 }
4787 4520 if (isTextareaElement(element)) {
4788 - return new TextareaElementContainer(context, element);
4521 + return new TextareaElementContainer(element);
4789 4522 }
4790 4523 if (isIFrameElement(element)) {
4791 - return new IFrameElementContainer(context, element);
4524 + return new IFrameElementContainer(element);
4792 4525 }
4793 - return new ElementContainer(context, element);
4526 + return new ElementContainer(element);
4794 4527 };
4795 - var parseTree = function (context, element) {
4796 - var container = createContainer(context, element);
4528 + var parseTree = function (element) {
4529 + var container = createContainer(element);
4797 4530 container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;
4798 - parseNodeTree(context, element, container, container);
4531 + parseNodeTree(element, container, container);
4799 4532 return container;
4800 4533 };
4801 4534 var createsRealStackingContext = function (node, container, root) {
4802 4535 return (container.styles.isPositionedWithZIndex() ||
@@ -4819,9 +4552,8 @@
4819 4552 var isHTMLElement = function (node) { return node.tagName === 'HTML'; };
4820 4553 var isSVGElement = function (node) { return node.tagName === 'svg'; };
4821 4554 var isBodyElement = function (node) { return node.tagName === 'BODY'; };
4822 4555 var isCanvasElement = function (node) { return node.tagName === 'CANVAS'; };
4823 - var isVideoElement = function (node) { return node.tagName === 'VIDEO'; };
4824 4556 var isImageElement = function (node) { return node.tagName === 'IMG'; };
4825 4557 var isIFrameElement = function (node) { return node.tagName === 'IFRAME'; };
4826 4558 var isStyleElement = function (node) { return node.tagName === 'STYLE'; };
4827 4559 var isScriptElement = function (node) { return node.tagName === 'SCRIPT'; };
@@ -4826,11 +4558,8 @@
4826 4558 var isStyleElement = function (node) { return node.tagName === 'STYLE'; };
4827 4559 var isScriptElement = function (node) { return node.tagName === 'SCRIPT'; };
4828 4560 var isTextareaElement = function (node) { return node.tagName === 'TEXTAREA'; };
4829 4561 var isSelectElement = function (node) { return node.tagName === 'SELECT'; };
4830 - var isSlotElement = function (node) { return node.tagName === 'SLOT'; };
4831 - // https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name
4832 - var isCustomElement = function (node) { return node.tagName.indexOf('-') > 0; };
4833 4562
4834 4563 var CounterState = /** @class */ (function () {
4835 4564 function CounterState() {
4836 4565 this.counters = {};
@@ -4859,11 +4588,8 @@
4859 4588 counterIncrement.forEach(function (entry) {
4860 4589 var counter = _this.counters[entry.counter];
4861 4590 if (counter && entry.increment !== 0) {
4862 4591 canReset = false;
4863 - if (!counter.length) {
4864 - counter.push(1);
4865 - }
4866 4592 counter[Math.max(0, counter.length - 1)] += entry.increment;
4867 4593 }
4868 4594 });
4869 4595 }
@@ -4887,10 +4613,44 @@
4887 4613 values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']
4888 4614 };
4889 4615 var ARMENIAN = {
4890 4616 integers: [
4891 - 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,
4892 - 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
4617 + 9000,
4618 + 8000,
4619 + 7000,
4620 + 6000,
4621 + 5000,
4622 + 4000,
4623 + 3000,
4624 + 2000,
4625 + 1000,
4626 + 900,
4627 + 800,
4628 + 700,
4629 + 600,
4630 + 500,
4631 + 400,
4632 + 300,
4633 + 200,
4634 + 100,
4635 + 90,
4636 + 80,
4637 + 70,
4638 + 60,
4639 + 50,
4640 + 40,
4641 + 30,
4642 + 20,
4643 + 10,
4644 + 9,
4645 + 8,
4646 + 7,
4647 + 6,
4648 + 5,
4649 + 4,
4650 + 3,
4651 + 2,
4652 + 1
4893 4653 ],
4894 4654 values: [
4895 4655 'Ք',
4896 4656 'Փ',
@@ -4931,10 +4691,45 @@
4931 4691 ]
4932 4692 };
4933 4693 var HEBREW = {
4934 4694 integers: [
4935 - 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,
4936 - 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
4695 + 10000,
4696 + 9000,
4697 + 8000,
4698 + 7000,
4699 + 6000,
4700 + 5000,
4701 + 4000,
4702 + 3000,
4703 + 2000,
4704 + 1000,
4705 + 400,
4706 + 300,
4707 + 200,
4708 + 100,
4709 + 90,
4710 + 80,
4711 + 70,
4712 + 60,
4713 + 50,
4714 + 40,
4715 + 30,
4716 + 20,
4717 + 19,
4718 + 18,
4719 + 17,
4720 + 16,
4721 + 15,
4722 + 10,
4723 + 9,
4724 + 8,
4725 + 7,
4726 + 6,
4727 + 5,
4728 + 4,
4729 + 3,
4730 + 2,
4731 + 1
4937 4732 ],
4938 4733 values: [
4939 4734 'י׳',
4940 4735 'ט׳',
@@ -4976,10 +4771,45 @@
4976 4771 ]
4977 4772 };
4978 4773 var GEORGIAN = {
4979 4774 integers: [
4980 - 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,
4981 - 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
4775 + 10000,
4776 + 9000,
4777 + 8000,
4778 + 7000,
4779 + 6000,
4780 + 5000,
4781 + 4000,
4782 + 3000,
4783 + 2000,
4784 + 1000,
4785 + 900,
4786 + 800,
4787 + 700,
4788 + 600,
4789 + 500,
4790 + 400,
4791 + 300,
4792 + 200,
4793 + 100,
4794 + 90,
4795 + 80,
4796 + 70,
4797 + 60,
4798 + 50,
4799 + 40,
4800 + 30,
4801 + 20,
4802 + 10,
4803 + 9,
4804 + 8,
4805 + 7,
4806 + 6,
4807 + 5,
4808 + 4,
4809 + 3,
4810 + 2,
4811 + 1
4982 4812 ],
4983 4813 values: [
4984 4814 'ჵ',
4985 4815 'ჰ',
@@ -5046,10 +4876,10 @@
5046 4876 var createCounterStyleFromRange = function (value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {
5047 4877 var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;
5048 4878 return ((value < 0 ? '-' : '') +
5049 4879 (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {
5050 - return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);
5051 - }) +
4880 + return fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);
4881 + }) +
5052 4882 suffix));
5053 4883 };
5054 4884 var createCounterStyleFromSymbols = function (value, symbols, suffix) {
5055 4885 if (suffix === void 0) { suffix = '. '; }
@@ -5061,9 +4891,9 @@
5061 4891 var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;
5062 4892 var CJK_HUNDRED_COEFFICIENTS = 1 << 3;
5063 4893 var createCJKCounter = function (value, numbers, multipliers, negativeSign, suffix, flags) {
5064 4894 if (value < -9999 || value > 9999) {
5065 - return createCounterText(value, 4 /* CJK_DECIMAL */, suffix.length > 0);
4895 + return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);
5066 4896 }
5067 4897 var tmp = Math.abs(value);
5068 4898 var string = suffix;
5069 4899 if (tmp === 0) {
@@ -5097,103 +4927,103 @@
5097 4927 var cjkSuffix = appendSuffix ? '、' : '';
5098 4928 var koreanSuffix = appendSuffix ? ', ' : '';
5099 4929 var spaceSuffix = appendSuffix ? ' ' : '';
5100 4930 switch (type) {
5101 - case 0 /* DISC */:
4931 + case LIST_STYLE_TYPE.DISC:
5102 4932 return '•' + spaceSuffix;
5103 - case 1 /* CIRCLE */:
4933 + case LIST_STYLE_TYPE.CIRCLE:
5104 4934 return '◦' + spaceSuffix;
5105 - case 2 /* SQUARE */:
4935 + case LIST_STYLE_TYPE.SQUARE:
5106 4936 return '◾' + spaceSuffix;
5107 - case 5 /* DECIMAL_LEADING_ZERO */:
4937 + case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:
5108 4938 var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
5109 4939 return string.length < 4 ? "0" + string : string;
5110 - case 4 /* CJK_DECIMAL */:
4940 + case LIST_STYLE_TYPE.CJK_DECIMAL:
5111 4941 return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);
5112 - case 6 /* LOWER_ROMAN */:
5113 - return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix).toLowerCase();
5114 - case 7 /* UPPER_ROMAN */:
5115 - return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3 /* DECIMAL */, defaultSuffix);
5116 - case 8 /* LOWER_GREEK */:
4942 + case LIST_STYLE_TYPE.LOWER_ROMAN:
4943 + return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();
4944 + case LIST_STYLE_TYPE.UPPER_ROMAN:
4945 + return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
4946 + case LIST_STYLE_TYPE.LOWER_GREEK:
5117 4947 return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);
5118 - case 9 /* LOWER_ALPHA */:
4948 + case LIST_STYLE_TYPE.LOWER_ALPHA:
5119 4949 return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);
5120 - case 10 /* UPPER_ALPHA */:
4950 + case LIST_STYLE_TYPE.UPPER_ALPHA:
5121 4951 return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);
5122 - case 11 /* ARABIC_INDIC */:
4952 + case LIST_STYLE_TYPE.ARABIC_INDIC:
5123 4953 return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);
5124 - case 12 /* ARMENIAN */:
5125 - case 49 /* UPPER_ARMENIAN */:
5126 - return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix);
5127 - case 35 /* LOWER_ARMENIAN */:
5128 - return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3 /* DECIMAL */, defaultSuffix).toLowerCase();
5129 - case 13 /* BENGALI */:
4954 + case LIST_STYLE_TYPE.ARMENIAN:
4955 + case LIST_STYLE_TYPE.UPPER_ARMENIAN:
4956 + return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
4957 + case LIST_STYLE_TYPE.LOWER_ARMENIAN:
4958 + return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();
4959 + case LIST_STYLE_TYPE.BENGALI:
5130 4960 return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);
5131 - case 14 /* CAMBODIAN */:
5132 - case 30 /* KHMER */:
4961 + case LIST_STYLE_TYPE.CAMBODIAN:
4962 + case LIST_STYLE_TYPE.KHMER:
5133 4963 return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);
5134 - case 15 /* CJK_EARTHLY_BRANCH */:
4964 + case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:
5135 4965 return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);
5136 - case 16 /* CJK_HEAVENLY_STEM */:
4966 + case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:
5137 4967 return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);
5138 - case 17 /* CJK_IDEOGRAPHIC */:
5139 - case 48 /* TRAD_CHINESE_INFORMAL */:
4968 + case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:
4969 + case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:
5140 4970 return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
5141 - case 47 /* TRAD_CHINESE_FORMAL */:
4971 + case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:
5142 4972 return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
5143 - case 42 /* SIMP_CHINESE_INFORMAL */:
4973 + case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:
5144 4974 return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
5145 - case 41 /* SIMP_CHINESE_FORMAL */:
4975 + case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:
5146 4976 return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
5147 - case 26 /* JAPANESE_INFORMAL */:
4977 + case LIST_STYLE_TYPE.JAPANESE_INFORMAL:
5148 4978 return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);
5149 - case 25 /* JAPANESE_FORMAL */:
4979 + case LIST_STYLE_TYPE.JAPANESE_FORMAL:
5150 4980 return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
5151 - case 31 /* KOREAN_HANGUL_FORMAL */:
4981 + case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:
5152 4982 return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
5153 - case 33 /* KOREAN_HANJA_INFORMAL */:
4983 + case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:
5154 4984 return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);
5155 - case 32 /* KOREAN_HANJA_FORMAL */:
4985 + case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:
5156 4986 return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
5157 - case 18 /* DEVANAGARI */:
4987 + case LIST_STYLE_TYPE.DEVANAGARI:
5158 4988 return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);
5159 - case 20 /* GEORGIAN */:
5160 - return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3 /* DECIMAL */, defaultSuffix);
5161 - case 21 /* GUJARATI */:
4989 + case LIST_STYLE_TYPE.GEORGIAN:
4990 + return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
4991 + case LIST_STYLE_TYPE.GUJARATI:
5162 4992 return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);
5163 - case 22 /* GURMUKHI */:
4993 + case LIST_STYLE_TYPE.GURMUKHI:
5164 4994 return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);
5165 - case 22 /* HEBREW */:
5166 - return createAdditiveCounter(value, 1, 10999, HEBREW, 3 /* DECIMAL */, defaultSuffix);
5167 - case 23 /* HIRAGANA */:
4995 + case LIST_STYLE_TYPE.HEBREW:
4996 + return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
4997 + case LIST_STYLE_TYPE.HIRAGANA:
5168 4998 return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');
5169 - case 24 /* HIRAGANA_IROHA */:
4999 + case LIST_STYLE_TYPE.HIRAGANA_IROHA:
5170 5000 return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');
5171 - case 27 /* KANNADA */:
5001 + case LIST_STYLE_TYPE.KANNADA:
5172 5002 return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);
5173 - case 28 /* KATAKANA */:
5003 + case LIST_STYLE_TYPE.KATAKANA:
5174 5004 return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);
5175 - case 29 /* KATAKANA_IROHA */:
5005 + case LIST_STYLE_TYPE.KATAKANA_IROHA:
5176 5006 return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);
5177 - case 34 /* LAO */:
5007 + case LIST_STYLE_TYPE.LAO:
5178 5008 return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);
5179 - case 37 /* MONGOLIAN */:
5009 + case LIST_STYLE_TYPE.MONGOLIAN:
5180 5010 return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);
5181 - case 38 /* MYANMAR */:
5011 + case LIST_STYLE_TYPE.MYANMAR:
5182 5012 return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);
5183 - case 39 /* ORIYA */:
5013 + case LIST_STYLE_TYPE.ORIYA:
5184 5014 return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);
5185 - case 40 /* PERSIAN */:
5015 + case LIST_STYLE_TYPE.PERSIAN:
5186 5016 return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);
5187 - case 43 /* TAMIL */:
5017 + case LIST_STYLE_TYPE.TAMIL:
5188 5018 return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);
5189 - case 44 /* TELUGU */:
5019 + case LIST_STYLE_TYPE.TELUGU:
5190 5020 return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);
5191 - case 45 /* THAI */:
5021 + case LIST_STYLE_TYPE.THAI:
5192 5022 return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);
5193 - case 46 /* TIBETAN */:
5023 + case LIST_STYLE_TYPE.TIBETAN:
5194 5024 return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);
5195 - case 3 /* DECIMAL */:
5025 + case LIST_STYLE_TYPE.DECIMAL:
5196 5026 default:
5197 5027 return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
5198 5028 }
5199 5029 };
@@ -5199,10 +5029,9 @@
5199 5029 };
5200 5030
5201 5031 var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';
5202 5032 var DocumentCloner = /** @class */ (function () {
5203 - function DocumentCloner(context, element, options) {
5204 - this.context = context;
5033 + function DocumentCloner(element, options) {
5205 5034 this.options = options;
5206 5035 this.scrolledElements = [];
5207 5036 this.referenceElement = element;
5208 5037 this.counters = new CounterState();
@@ -5209,9 +5038,9 @@
5209 5038 this.quoteDepth = 0;
5210 5039 if (!element.ownerDocument) {
5211 5040 throw new Error('Cloned element does not have an owner document');
5212 5041 }
5213 - this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false);
5042 + this.documentElement = this.cloneNode(element.ownerDocument.documentElement);
5214 5043 }
5215 5044 DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) {
5216 5045 var _this = this;
5217 5046 var iframe = createIFrameContainer(ownerDocument, windowSize);
@@ -5225,9 +5054,9 @@
5225 5054 /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle
5226 5055 if window url is about:blank, we can assign the url to current by writing onto the document
5227 5056 */
5228 5057 var iframeLoad = iframeLoader(iframe).then(function () { return __awaiter(_this, void 0, void 0, function () {
5229 - var onclone, referenceElement;
5058 + var onclone;
5230 5059 return __generator(this, function (_a) {
5231 5060 switch (_a.label) {
5232 5061 case 0:
5233 5062 this.scrolledElements.forEach(restoreNodeScroll);
@@ -5234,15 +5063,15 @@
5234 5063 if (cloneWindow) {
5235 5064 cloneWindow.scrollTo(windowSize.left, windowSize.top);
5236 5065 if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&
5237 5066 (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {
5238 - this.context.logger.warn('Unable to restore scroll position for cloned document');
5239 - this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0);
5067 + documentClone.documentElement.style.top = -windowSize.top + 'px';
5068 + documentClone.documentElement.style.left = -windowSize.left + 'px';
5069 + documentClone.documentElement.style.position = 'absolute';
5240 5070 }
5241 5071 }
5242 5072 onclone = this.options.onclone;
5243 - referenceElement = this.clonedReferenceElement;
5244 - if (typeof referenceElement === 'undefined') {
5073 + if (typeof this.clonedReferenceElement === 'undefined') {
5245 5074 return [2 /*return*/, Promise.reject("Error finding the " + this.referenceElement.nodeName + " in the cloned document")];
5246 5075 }
5247 5076 if (!(documentClone.fonts && documentClone.fonts.ready)) return [3 /*break*/, 2];
5248 5077 return [4 /*yield*/, documentClone.fonts.ready];
@@ -5249,18 +5078,12 @@
5249 5078 case 1:
5250 5079 _a.sent();
5251 5080 _a.label = 2;
5252 5081 case 2:
5253 - if (!/(AppleWebKit)/g.test(navigator.userAgent)) return [3 /*break*/, 4];
5254 - return [4 /*yield*/, imagesReady(documentClone)];
5255 - case 3:
5256 - _a.sent();
5257 - _a.label = 4;
5258 - case 4:
5259 5082 if (typeof onclone === 'function') {
5260 5083 return [2 /*return*/, Promise.resolve()
5261 - .then(function () { return onclone(documentClone, referenceElement); })
5262 - .then(function () { return iframe; })];
5084 + .then(function () { return onclone(documentClone); })
5085 + .then(function () { return iframe; })];
5263 5086 }
5264 5087 return [2 /*return*/, iframe];
5265 5088 }
5266 5089 });
@@ -5273,40 +5096,27 @@
5273 5096 documentClone.close();
5274 5097 return iframeLoad;
5275 5098 };
5276 5099 DocumentCloner.prototype.createElementClone = function (node) {
5277 - if (isDebugging(node, 2 /* CLONE */)) {
5278 - debugger;
5279 - }
5280 5100 if (isCanvasElement(node)) {
5281 5101 return this.createCanvasClone(node);
5282 5102 }
5283 - if (isVideoElement(node)) {
5284 - return this.createVideoClone(node);
5103 + /*
5104 + if (isIFrameElement(node)) {
5105 + return this.createIFrameClone(node);
5285 5106 }
5107 + */
5286 5108 if (isStyleElement(node)) {
5287 5109 return this.createStyleClone(node);
5288 5110 }
5289 5111 var clone = node.cloneNode(false);
5290 - if (isImageElement(clone)) {
5291 - if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {
5292 - clone.src = node.currentSrc;
5293 - clone.srcset = '';
5294 - }
5295 - if (clone.loading === 'lazy') {
5296 - clone.loading = 'eager';
5297 - }
5112 + // @ts-ignore
5113 + if (isImageElement(clone) && clone.loading === 'lazy') {
5114 + // @ts-ignore
5115 + clone.loading = 'eager';
5298 5116 }
5299 - if (isCustomElement(clone)) {
5300 - return this.createCustomElementClone(clone);
5301 - }
5302 5117 return clone;
5303 5118 };
5304 - DocumentCloner.prototype.createCustomElementClone = function (node) {
5305 - var clone = document.createElement('html2canvascustomelement');
5306 - copyCSSStyles(node.style, clone);
5307 - return clone;
5308 - };
5309 5119 DocumentCloner.prototype.createStyleClone = function (node) {
5310 5120 try {
5311 5121 var sheet = node.sheet;
5312 5122 if (sheet && sheet.cssRules) {
@@ -5322,9 +5132,9 @@
5322 5132 }
5323 5133 }
5324 5134 catch (e) {
5325 5135 // accessing node.sheet.cssRules throws a DOMException
5326 - this.context.logger.error('Unable to access cssRules property', e);
5136 + Logger.getInstance(this.options.id).error('Unable to access cssRules property', e);
5327 5137 if (e.name !== 'SecurityError') {
5328 5138 throw e;
5329 5139 }
5330 5140 }
@@ -5330,9 +5140,8 @@
5330 5140 }
5331 5141 return node.cloneNode(false);
5332 5142 };
5333 5143 DocumentCloner.prototype.createCanvasClone = function (canvas) {
5334 - var _a;
5335 5144 if (this.options.inlineImages && canvas.ownerDocument) {
5336 5145 var img = canvas.ownerDocument.createElement('img');
5337 5146 try {
5338 5147 img.src = canvas.toDataURL();
@@ -5338,9 +5147,9 @@
5338 5147 img.src = canvas.toDataURL();
5339 5148 return img;
5340 5149 }
5341 5150 catch (e) {
5342 - this.context.logger.info("Unable to inline canvas contents, canvas is tainted", canvas);
5151 + Logger.getInstance(this.options.id).info("Unable to clone canvas contents, canvas is tainted");
5343 5152 }
5344 5153 }
5345 5154 var clonedCanvas = canvas.cloneNode(false);
5346 5155 try {
@@ -5348,76 +5157,82 @@
5348 5157 clonedCanvas.height = canvas.height;
5349 5158 var ctx = canvas.getContext('2d');
5350 5159 var clonedCtx = clonedCanvas.getContext('2d');
5351 5160 if (clonedCtx) {
5352 - if (!this.options.allowTaint && ctx) {
5161 + if (ctx) {
5353 5162 clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);
5354 5163 }
5355 5164 else {
5356 - var gl = (_a = canvas.getContext('webgl2')) !== null && _a !== void 0 ? _a : canvas.getContext('webgl');
5357 - if (gl) {
5358 - var attribs = gl.getContextAttributes();
5359 - if ((attribs === null || attribs === void 0 ? void 0 : attribs.preserveDrawingBuffer) === false) {
5360 - this.context.logger.warn('Unable to clone WebGL context as it has preserveDrawingBuffer=false', canvas);
5361 - }
5362 - }
5363 5165 clonedCtx.drawImage(canvas, 0, 0);
5364 5166 }
5365 5167 }
5366 5168 return clonedCanvas;
5367 5169 }
5368 - catch (e) {
5369 - this.context.logger.info("Unable to clone canvas as it is tainted", canvas);
5370 - }
5170 + catch (e) { }
5371 5171 return clonedCanvas;
5372 5172 };
5373 - DocumentCloner.prototype.createVideoClone = function (video) {
5374 - var canvas = video.ownerDocument.createElement('canvas');
5375 - canvas.width = video.offsetWidth;
5376 - canvas.height = video.offsetHeight;
5377 - var ctx = canvas.getContext('2d');
5378 - try {
5379 - if (ctx) {
5380 - ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
5381 - if (!this.options.allowTaint) {
5382 - ctx.getImageData(0, 0, canvas.width, canvas.height);
5383 - }
5384 - }
5385 - return canvas;
5386 - }
5387 - catch (e) {
5388 - this.context.logger.info("Unable to clone video as it is tainted", video);
5389 - }
5390 - var blankCanvas = video.ownerDocument.createElement('canvas');
5391 - blankCanvas.width = video.offsetWidth;
5392 - blankCanvas.height = video.offsetHeight;
5393 - return blankCanvas;
5394 - };
5395 - DocumentCloner.prototype.appendChildNode = function (clone, child, copyStyles) {
5396 - if (!isElementNode(child) ||
5397 - (!isScriptElement(child) &&
5398 - !child.hasAttribute(IGNORE_ATTRIBUTE) &&
5399 - (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))) {
5400 - if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {
5401 - clone.appendChild(this.cloneNode(child, copyStyles));
5402 - }
5403 - }
5404 - };
5405 - DocumentCloner.prototype.cloneChildNodes = function (node, clone, copyStyles) {
5406 - var _this = this;
5407 - for (var child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; child; child = child.nextSibling) {
5408 - if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {
5409 - var assignedNodes = child.assignedNodes();
5410 - if (assignedNodes.length) {
5411 - assignedNodes.forEach(function (assignedNode) { return _this.appendChildNode(clone, assignedNode, copyStyles); });
5412 - }
5413 - }
5414 - else {
5415 - this.appendChildNode(clone, child, copyStyles);
5416 - }
5417 - }
5418 - };
5419 - DocumentCloner.prototype.cloneNode = function (node, copyStyles) {
5173 + /*
5174 + createIFrameClone(iframe: HTMLIFrameElement) {
5175 + const tempIframe = <HTMLIFrameElement>iframe.cloneNode(false);
5176 + const iframeKey = generateIframeKey();
5177 + tempIframe.setAttribute('data-html2canvas-internal-iframe-key', iframeKey);
5178 +
5179 + const {width, height} = parseBounds(iframe);
5180 +
5181 + this.resourceLoader.cache[iframeKey] = getIframeDocumentElement(iframe, this.options)
5182 + .then(documentElement => {
5183 + return this.renderer(
5184 + documentElement,
5185 + {
5186 + allowTaint: this.options.allowTaint,
5187 + backgroundColor: '#ffffff',
5188 + canvas: null,
5189 + imageTimeout: this.options.imageTimeout,
5190 + logging: this.options.logging,
5191 + proxy: this.options.proxy,
5192 + removeContainer: this.options.removeContainer,
5193 + scale: this.options.scale,
5194 + foreignObjectRendering: this.options.foreignObjectRendering,
5195 + useCORS: this.options.useCORS,
5196 + target: new CanvasRenderer(),
5197 + width,
5198 + height,
5199 + x: 0,
5200 + y: 0,
5201 + windowWidth: documentElement.ownerDocument.defaultView.innerWidth,
5202 + windowHeight: documentElement.ownerDocument.defaultView.innerHeight,
5203 + scrollX: documentElement.ownerDocument.defaultView.pageXOffset,
5204 + scrollY: documentElement.ownerDocument.defaultView.pageYOffset
5205 + },
5206 + );
5207 + })
5208 + .then(
5209 + (canvas: HTMLCanvasElement) =>
5210 + new Promise((resolve, reject) => {
5211 + const iframeCanvas = document.createElement('img');
5212 + iframeCanvas.onload = () => resolve(canvas);
5213 + iframeCanvas.onerror = (event) => {
5214 + // Empty iframes may result in empty "data:," URLs, which are invalid from the <img>'s point of view
5215 + // and instead of `onload` cause `onerror` and unhandled rejection warnings
5216 + // https://github.com/niklasvh/html2canvas/issues/1502
5217 + iframeCanvas.src == 'data:,' ? resolve(canvas) : reject(event);
5218 + };
5219 + iframeCanvas.src = canvas.toDataURL();
5220 + if (tempIframe.parentNode && iframe.ownerDocument && iframe.ownerDocument.defaultView) {
5221 + tempIframe.parentNode.replaceChild(
5222 + copyCSSStyles(
5223 + iframe.ownerDocument.defaultView.getComputedStyle(iframe),
5224 + iframeCanvas
5225 + ),
5226 + tempIframe
5227 + );
5228 + }
5229 + })
5230 + );
5231 + return tempIframe;
5232 + }
5233 + */
5234 + DocumentCloner.prototype.cloneNode = function (node) {
5420 5235 if (isTextNode(node)) {
5421 5236 return document.createTextNode(node.data);
5422 5237 }
5423 5238 if (!node.ownerDocument) {
@@ -5425,9 +5240,8 @@
5425 5240 }
5426 5241 var window = node.ownerDocument.defaultView;
5427 5242 if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {
5428 5243 var clone = this.createElementClone(node);
5429 - clone.style.transitionProperty = 'none';
5430 5244 var style = window.getComputedStyle(node);
5431 5245 var styleBefore = window.getComputedStyle(node, ':before');
5432 5246 var styleAfter = window.getComputedStyle(node, ':after');
5433 5247 if (this.referenceElement === node && isHTMLElementNode(clone)) {
@@ -5435,16 +5249,20 @@
5435 5249 }
5436 5250 if (isBodyElement(clone)) {
5437 5251 createPseudoHideStyles(clone);
5438 5252 }
5439 - var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));
5253 + var counters = this.counters.parse(new CSSParsedCounterDeclaration(style));
5440 5254 var before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);
5441 - if (isCustomElement(node)) {
5442 - copyStyles = true;
5255 + for (var child = node.firstChild; child; child = child.nextSibling) {
5256 + if (!isElementNode(child) ||
5257 + (!isScriptElement(child) &&
5258 + !child.hasAttribute(IGNORE_ATTRIBUTE) &&
5259 + (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))) {
5260 + if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {
5261 + clone.appendChild(this.cloneNode(child));
5262 + }
5263 + }
5443 5264 }
5444 - if (!isVideoElement(node)) {
5445 - this.cloneChildNodes(node, clone, copyStyles);
5446 - }
5447 5265 if (before) {
5448 5266 clone.insertBefore(before, clone.firstChild);
5449 5267 }
5450 5268 var after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);
@@ -5451,12 +5269,12 @@
5451 5269 if (after) {
5452 5270 clone.appendChild(after);
5453 5271 }
5454 5272 this.counters.pop(counters);
5455 - if ((style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||
5456 - copyStyles) {
5273 + if (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) {
5457 5274 copyCSSStyles(style, clone);
5458 5275 }
5276 + //this.inlineAllImages(clone);
5459 5277 if (node.scrollTop !== 0 || node.scrollLeft !== 0) {
5460 5278 this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);
5461 5279 }
5462 5280 if ((isTextareaElement(node) || isSelectElement(node)) &&
@@ -5476,23 +5294,23 @@
5476 5294 var document = clone.ownerDocument;
5477 5295 if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {
5478 5296 return;
5479 5297 }
5480 - this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));
5481 - var declaration = new CSSParsedPseudoDeclaration(this.context, style);
5298 + this.counters.parse(new CSSParsedCounterDeclaration(style));
5299 + var declaration = new CSSParsedPseudoDeclaration(style);
5482 5300 var anonymousReplacedElement = document.createElement('html2canvaspseudoelement');
5483 5301 copyCSSStyles(style, anonymousReplacedElement);
5484 5302 declaration.content.forEach(function (token) {
5485 - if (token.type === 0 /* STRING_TOKEN */) {
5303 + if (token.type === TokenType.STRING_TOKEN) {
5486 5304 anonymousReplacedElement.appendChild(document.createTextNode(token.value));
5487 5305 }
5488 - else if (token.type === 22 /* URL_TOKEN */) {
5306 + else if (token.type === TokenType.URL_TOKEN) {
5489 5307 var img = document.createElement('img');
5490 5308 img.src = token.value;
5491 5309 img.style.opacity = '1';
5492 5310 anonymousReplacedElement.appendChild(img);
5493 5311 }
5494 - else if (token.type === 18 /* FUNCTION */) {
5312 + else if (token.type === TokenType.FUNCTION) {
5495 5313 if (token.name === 'attr') {
5496 5314 var attr = token.values.filter(isIdentToken);
5497 5315 if (attr.length) {
5498 5316 anonymousReplacedElement.appendChild(document.createTextNode(node.getAttribute(attr[0].value) || ''));
@@ -5502,10 +5320,10 @@
5502 5320 var _a = token.values.filter(nonFunctionArgSeparator), counter = _a[0], counterStyle = _a[1];
5503 5321 if (counter && isIdentToken(counter)) {
5504 5322 var counterState = _this.counters.getCounterValue(counter.value);
5505 5323 var counterType = counterStyle && isIdentToken(counterStyle)
5506 - ? listStyleType.parse(_this.context, counterStyle.value)
5507 - : 3 /* DECIMAL */;
5324 + ? listStyleType.parse(counterStyle.value)
5325 + : LIST_STYLE_TYPE.DECIMAL;
5508 5326 anonymousReplacedElement.appendChild(document.createTextNode(createCounterText(counterState, counterType, false)));
5509 5327 }
5510 5328 }
5511 5329 else if (token.name === 'counters') {
@@ -5512,11 +5330,11 @@
5512 5330 var _b = token.values.filter(nonFunctionArgSeparator), counter = _b[0], delim = _b[1], counterStyle = _b[2];
5513 5331 if (counter && isIdentToken(counter)) {
5514 5332 var counterStates = _this.counters.getCounterValues(counter.value);
5515 5333 var counterType_1 = counterStyle && isIdentToken(counterStyle)
5516 - ? listStyleType.parse(_this.context, counterStyle.value)
5517 - : 3 /* DECIMAL */;
5518 - var separator = delim && delim.type === 0 /* STRING_TOKEN */ ? delim.value : '';
5334 + ? listStyleType.parse(counterStyle.value)
5335 + : LIST_STYLE_TYPE.DECIMAL;
5336 + var separator = delim && delim.type === TokenType.STRING_TOKEN ? delim.value : '';
5519 5337 var text = counterStates
5520 5338 .map(function (value) { return createCounterText(value, counterType_1, false); })
5521 5339 .join(separator);
5522 5340 anonymousReplacedElement.appendChild(document.createTextNode(text));
@@ -5521,11 +5339,10 @@
5521 5339 .join(separator);
5522 5340 anonymousReplacedElement.appendChild(document.createTextNode(text));
5523 5341 }
5524 5342 }
5525 - else ;
5526 5343 }
5527 - else if (token.type === 20 /* IDENT_TOKEN */) {
5344 + else if (token.type === TokenType.IDENT_TOKEN) {
5528 5345 switch (token.value) {
5529 5346 case 'open-quote':
5530 5347 anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true)));
5531 5348 break;
@@ -5578,25 +5395,8 @@
5578 5395 cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');
5579 5396 ownerDocument.body.appendChild(cloneIframeContainer);
5580 5397 return cloneIframeContainer;
5581 5398 };
5582 - var imageReady = function (img) {
5583 - return new Promise(function (resolve) {
5584 - if (img.complete) {
5585 - resolve();
5586 - return;
5587 - }
5588 - if (!img.src) {
5589 - resolve();
5590 - return;
5591 - }
5592 - img.onload = resolve;
5593 - img.onerror = resolve;
5594 - });
5595 - };
5596 - var imagesReady = function (document) {
5597 - return Promise.all([].slice.call(document.images, 0).map(imageReady));
5598 - };
5599 5399 var iframeLoader = function (iframe) {
5600 5400 return new Promise(function (resolve, reject) {
5601 5401 var cloneWindow = iframe.contentWindow;
5602 5402 if (!cloneWindow) {
@@ -5602,10 +5402,10 @@
5602 5402 if (!cloneWindow) {
5603 5403 return reject("No window assigned for iframe");
5604 5404 }
5605 5405 var documentClone = cloneWindow.document;
5606 - cloneWindow.onload = iframe.onload = function () {
5607 - cloneWindow.onload = iframe.onload = null;
5406 + cloneWindow.onload = iframe.onload = documentClone.onreadystatechange = function () {
5407 + cloneWindow.onload = iframe.onload = documentClone.onreadystatechange = null;
5608 5408 var interval = setInterval(function () {
5609 5409 if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {
5610 5410 clearInterval(interval);
5611 5411 resolve(iframe);
@@ -5613,18 +5413,14 @@
5613 5413 }, 50);
5614 5414 };
5615 5415 });
5616 5416 };
5617 - var ignoredStyleProperties = [
5618 - 'all',
5619 - 'd',
5620 - 'content' // Safari shows pseudoelements if content is set
5621 - ];
5622 5417 var copyCSSStyles = function (style, target) {
5623 5418 // Edge does not provide value for cssText
5624 5419 for (var i = style.length - 1; i >= 0; i--) {
5625 5420 var property = style.item(i);
5626 - if (ignoredStyleProperties.indexOf(property) === -1) {
5421 + // Safari shows pseudoelements if content is set
5422 + if (property !== 'content') {
5627 5423 target.style.setProperty(property, style.getPropertyValue(property));
5628 5424 }
5629 5425 }
5630 5426 return target;
@@ -5677,167 +5473,38 @@
5677 5473 body.appendChild(style);
5678 5474 }
5679 5475 };
5680 5476
5681 - var CacheStorage = /** @class */ (function () {
5682 - function CacheStorage() {
5477 + var PathType;
5478 + (function (PathType) {
5479 + PathType[PathType["VECTOR"] = 0] = "VECTOR";
5480 + PathType[PathType["BEZIER_CURVE"] = 1] = "BEZIER_CURVE";
5481 + })(PathType || (PathType = {}));
5482 + var equalPath = function (a, b) {
5483 + if (a.length === b.length) {
5484 + return a.some(function (v, i) { return v === b[i]; });
5683 5485 }
5684 - CacheStorage.getOrigin = function (url) {
5685 - var link = CacheStorage._link;
5686 - if (!link) {
5687 - return 'about:blank';
5486 + return false;
5487 + };
5488 + var transformPath = function (path, deltaX, deltaY, deltaW, deltaH) {
5489 + return path.map(function (point, index) {
5490 + switch (index) {
5491 + case 0:
5492 + return point.add(deltaX, deltaY);
5493 + case 1:
5494 + return point.add(deltaX + deltaW, deltaY);
5495 + case 2:
5496 + return point.add(deltaX + deltaW, deltaY + deltaH);
5497 + case 3:
5498 + return point.add(deltaX, deltaY + deltaH);
5688 5499 }
5689 - link.href = url;
5690 - link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/
5691 - return link.protocol + link.hostname + link.port;
5692 - };
5693 - CacheStorage.isSameOrigin = function (src) {
5694 - return CacheStorage.getOrigin(src) === CacheStorage._origin;
5695 - };
5696 - CacheStorage.setContext = function (window) {
5697 - CacheStorage._link = window.document.createElement('a');
5698 - CacheStorage._origin = CacheStorage.getOrigin(window.location.href);
5699 - };
5700 - CacheStorage._origin = 'about:blank';
5701 - return CacheStorage;
5702 - }());
5703 - var Cache = /** @class */ (function () {
5704 - function Cache(context, _options) {
5705 - this.context = context;
5706 - this._options = _options;
5707 - // eslint-disable-next-line @typescript-eslint/no-explicit-any
5708 - this._cache = {};
5709 - }
5710 - Cache.prototype.addImage = function (src) {
5711 - var result = Promise.resolve();
5712 - if (this.has(src)) {
5713 - return result;
5714 - }
5715 - if (isBlobImage(src) || isRenderable(src)) {
5716 - (this._cache[src] = this.loadImage(src)).catch(function () {
5717 - // prevent unhandled rejection
5718 - });
5719 - return result;
5720 - }
5721 - return result;
5722 - };
5723 - // eslint-disable-next-line @typescript-eslint/no-explicit-any
5724 - Cache.prototype.match = function (src) {
5725 - return this._cache[src];
5726 - };
5727 - Cache.prototype.loadImage = function (key) {
5728 - return __awaiter(this, void 0, void 0, function () {
5729 - var isSameOrigin, useCORS, useProxy, src;
5730 - var _this = this;
5731 - return __generator(this, function (_a) {
5732 - switch (_a.label) {
5733 - case 0:
5734 - isSameOrigin = CacheStorage.isSameOrigin(key);
5735 - useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;
5736 - useProxy = !isInlineImage(key) &&
5737 - !isSameOrigin &&
5738 - !isBlobImage(key) &&
5739 - typeof this._options.proxy === 'string' &&
5740 - FEATURES.SUPPORT_CORS_XHR &&
5741 - !useCORS;
5742 - if (!isSameOrigin &&
5743 - this._options.allowTaint === false &&
5744 - !isInlineImage(key) &&
5745 - !isBlobImage(key) &&
5746 - !useProxy &&
5747 - !useCORS) {
5748 - return [2 /*return*/];
5749 - }
5750 - src = key;
5751 - if (!useProxy) return [3 /*break*/, 2];
5752 - return [4 /*yield*/, this.proxy(src)];
5753 - case 1:
5754 - src = _a.sent();
5755 - _a.label = 2;
5756 - case 2:
5757 - this.context.logger.debug("Added image " + key.substring(0, 256));
5758 - return [4 /*yield*/, new Promise(function (resolve, reject) {
5759 - var img = new Image();
5760 - img.onload = function () { return resolve(img); };
5761 - img.onerror = reject;
5762 - //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous
5763 - if (isInlineBase64Image(src) || useCORS) {
5764 - img.crossOrigin = 'anonymous';
5765 - }
5766 - img.src = src;
5767 - if (img.complete === true) {
5768 - // Inline XML images may fail to parse, throwing an Error later on
5769 - setTimeout(function () { return resolve(img); }, 500);
5770 - }
5771 - if (_this._options.imageTimeout > 0) {
5772 - setTimeout(function () { return reject("Timed out (" + _this._options.imageTimeout + "ms) loading image"); }, _this._options.imageTimeout);
5773 - }
5774 - })];
5775 - case 3: return [2 /*return*/, _a.sent()];
5776 - }
5777 - });
5778 - });
5779 - };
5780 - Cache.prototype.has = function (key) {
5781 - return typeof this._cache[key] !== 'undefined';
5782 - };
5783 - Cache.prototype.keys = function () {
5784 - return Promise.resolve(Object.keys(this._cache));
5785 - };
5786 - Cache.prototype.proxy = function (src) {
5787 - var _this = this;
5788 - var proxy = this._options.proxy;
5789 - if (!proxy) {
5790 - throw new Error('No proxy defined');
5791 - }
5792 - var key = src.substring(0, 256);
5793 - return new Promise(function (resolve, reject) {
5794 - var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';
5795 - var xhr = new XMLHttpRequest();
5796 - xhr.onload = function () {
5797 - if (xhr.status === 200) {
5798 - if (responseType === 'text') {
5799 - resolve(xhr.response);
5800 - }
5801 - else {
5802 - var reader_1 = new FileReader();
5803 - reader_1.addEventListener('load', function () { return resolve(reader_1.result); }, false);
5804 - reader_1.addEventListener('error', function (e) { return reject(e); }, false);
5805 - reader_1.readAsDataURL(xhr.response);
5806 - }
5807 - }
5808 - else {
5809 - reject("Failed to proxy resource " + key + " with status code " + xhr.status);
5810 - }
5811 - };
5812 - xhr.onerror = reject;
5813 - var queryString = proxy.indexOf('?') > -1 ? '&' : '?';
5814 - xhr.open('GET', "" + proxy + queryString + "url=" + encodeURIComponent(src) + "&responseType=" + responseType);
5815 - if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {
5816 - xhr.responseType = responseType;
5817 - }
5818 - if (_this._options.imageTimeout) {
5819 - var timeout_1 = _this._options.imageTimeout;
5820 - xhr.timeout = timeout_1;
5821 - xhr.ontimeout = function () { return reject("Timed out (" + timeout_1 + "ms) proxying " + key); };
5822 - }
5823 - xhr.send();
5824 - });
5825 - };
5826 - return Cache;
5827 - }());
5828 - var INLINE_SVG = /^data:image\/svg\+xml/i;
5829 - var INLINE_BASE64 = /^data:image\/.*;base64,/i;
5830 - var INLINE_IMG = /^data:image\/.*/i;
5831 - var isRenderable = function (src) { return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src); };
5832 - var isInlineImage = function (src) { return INLINE_IMG.test(src); };
5833 - var isInlineBase64Image = function (src) { return INLINE_BASE64.test(src); };
5834 - var isBlobImage = function (src) { return src.substr(0, 4) === 'blob'; };
5835 - var isSVG = function (src) { return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); };
5500 + return point;
5501 + });
5502 + };
5836 5503
5837 5504 var Vector = /** @class */ (function () {
5838 5505 function Vector(x, y) {
5839 - this.type = 0 /* VECTOR */;
5506 + this.type = PathType.VECTOR;
5840 5507 this.x = x;
5841 5508 this.y = y;
5842 5509 }
5843 5510 Vector.prototype.add = function (deltaX, deltaY) {
@@ -5850,9 +5517,9 @@
5850 5517 return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);
5851 5518 };
5852 5519 var BezierCurve = /** @class */ (function () {
5853 5520 function BezierCurve(start, startControl, endControl, end) {
5854 - this.type = 1 /* BEZIER_CURVE */;
5521 + this.type = PathType.BEZIER_CURVE;
5855 5522 this.start = start;
5856 5523 this.startControl = startControl;
5857 5524 this.endControl = endControl;
5858 5525 this.end = end;
@@ -5873,9 +5540,9 @@
5873 5540 return new BezierCurve(this.end, this.endControl, this.startControl, this.start);
5874 5541 };
5875 5542 return BezierCurve;
5876 5543 }());
5877 - var isBezierCurve = function (path) { return path.type === 1 /* BEZIER_CURVE */; };
5544 + var isBezierCurve = function (path) { return path.type === PathType.BEZIER_CURVE; };
5878 5545
5879 5546 var BoundCurves = /** @class */ (function () {
5880 5547 function BoundCurves(element) {
5881 5548 var styles = element.styles;
@@ -5911,56 +5578,8 @@
5911 5578 var paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);
5912 5579 var paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);
5913 5580 var paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);
5914 5581 var paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);
5915 - this.topLeftBorderDoubleOuterBox =
5916 - tlh > 0 || tlv > 0
5917 - ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3, tlh - borderLeftWidth / 3, tlv - borderTopWidth / 3, CORNER.TOP_LEFT)
5918 - : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);
5919 - this.topRightBorderDoubleOuterBox =
5920 - tlh > 0 || tlv > 0
5921 - ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 3, trh - borderRightWidth / 3, trv - borderTopWidth / 3, CORNER.TOP_RIGHT)
5922 - : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);
5923 - this.bottomRightBorderDoubleOuterBox =
5924 - brh > 0 || brv > 0
5925 - ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 3, brv - borderBottomWidth / 3, CORNER.BOTTOM_RIGHT)
5926 - : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);
5927 - this.bottomLeftBorderDoubleOuterBox =
5928 - blh > 0 || blv > 0
5929 - ? getCurvePoints(bounds.left + borderLeftWidth / 3, bounds.top + leftHeight, blh - borderLeftWidth / 3, blv - borderBottomWidth / 3, CORNER.BOTTOM_LEFT)
5930 - : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);
5931 - this.topLeftBorderDoubleInnerBox =
5932 - tlh > 0 || tlv > 0
5933 - ? getCurvePoints(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3, tlh - (borderLeftWidth * 2) / 3, tlv - (borderTopWidth * 2) / 3, CORNER.TOP_LEFT)
5934 - : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);
5935 - this.topRightBorderDoubleInnerBox =
5936 - tlh > 0 || tlv > 0
5937 - ? getCurvePoints(bounds.left + topWidth, bounds.top + (borderTopWidth * 2) / 3, trh - (borderRightWidth * 2) / 3, trv - (borderTopWidth * 2) / 3, CORNER.TOP_RIGHT)
5938 - : new Vector(bounds.left + bounds.width - (borderRightWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);
5939 - this.bottomRightBorderDoubleInnerBox =
5940 - brh > 0 || brv > 0
5941 - ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - (borderRightWidth * 2) / 3, brv - (borderBottomWidth * 2) / 3, CORNER.BOTTOM_RIGHT)
5942 - : new Vector(bounds.left + bounds.width - (borderRightWidth * 2) / 3, bounds.top + bounds.height - (borderBottomWidth * 2) / 3);
5943 - this.bottomLeftBorderDoubleInnerBox =
5944 - blh > 0 || blv > 0
5945 - ? getCurvePoints(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + leftHeight, blh - (borderLeftWidth * 2) / 3, blv - (borderBottomWidth * 2) / 3, CORNER.BOTTOM_LEFT)
5946 - : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + bounds.height - (borderBottomWidth * 2) / 3);
5947 - this.topLeftBorderStroke =
5948 - tlh > 0 || tlv > 0
5949 - ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2, tlh - borderLeftWidth / 2, tlv - borderTopWidth / 2, CORNER.TOP_LEFT)
5950 - : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);
5951 - this.topRightBorderStroke =
5952 - tlh > 0 || tlv > 0
5953 - ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth / 2, trh - borderRightWidth / 2, trv - borderTopWidth / 2, CORNER.TOP_RIGHT)
5954 - : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);
5955 - this.bottomRightBorderStroke =
5956 - brh > 0 || brv > 0
5957 - ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth / 2, brv - borderBottomWidth / 2, CORNER.BOTTOM_RIGHT)
5958 - : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);
5959 - this.bottomLeftBorderStroke =
5960 - blh > 0 || blv > 0
5961 - ? getCurvePoints(bounds.left + borderLeftWidth / 2, bounds.top + leftHeight, blh - borderLeftWidth / 2, blv - borderBottomWidth / 2, CORNER.BOTTOM_LEFT)
5962 - : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);
5963 5582 this.topLeftBorderBox =
5964 5583 tlh > 0 || tlv > 0
5965 5584 ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)
5966 5585 : new Vector(bounds.left, bounds.top);
@@ -5981,17 +5600,17 @@
5981 5600 ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + borderTopWidth, Math.max(0, tlh - borderLeftWidth), Math.max(0, tlv - borderTopWidth), CORNER.TOP_LEFT)
5982 5601 : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);
5983 5602 this.topRightPaddingBox =
5984 5603 trh > 0 || trv > 0
5985 - ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width - borderRightWidth), bounds.top + borderTopWidth, topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth), Math.max(0, trv - borderTopWidth), CORNER.TOP_RIGHT)
5604 + ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth), bounds.top + borderTopWidth, topWidth > bounds.width + borderLeftWidth ? 0 : trh - borderLeftWidth, trv - borderTopWidth, CORNER.TOP_RIGHT)
5986 5605 : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);
5987 5606 this.bottomRightPaddingBox =
5988 5607 brh > 0 || brv > 0
5989 - ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth), bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth), Math.max(0, brh - borderRightWidth), Math.max(0, brv - borderBottomWidth), CORNER.BOTTOM_RIGHT)
5608 + ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth), Math.max(0, brh - borderRightWidth), brv - borderBottomWidth, CORNER.BOTTOM_RIGHT)
5990 5609 : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + bounds.height - borderBottomWidth);
5991 5610 this.bottomLeftPaddingBox =
5992 5611 blh > 0 || blv > 0
5993 - ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth), Math.max(0, blh - borderLeftWidth), Math.max(0, blv - borderBottomWidth), CORNER.BOTTOM_LEFT)
5612 + ? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + leftHeight, Math.max(0, blh - borderLeftWidth), blv - borderBottomWidth, CORNER.BOTTOM_LEFT)
5994 5613 : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);
5995 5614 this.topLeftContentBox =
5996 5615 tlh > 0 || tlv > 0
5997 5616 ? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop, Math.max(0, tlh - (borderLeftWidth + paddingLeft)), Math.max(0, tlv - (borderTopWidth + paddingTop)), CORNER.TOP_LEFT)
@@ -6057,29 +5676,29 @@
6057 5676 };
6058 5677
6059 5678 var TransformEffect = /** @class */ (function () {
6060 5679 function TransformEffect(offsetX, offsetY, matrix) {
5680 + this.type = 0 /* TRANSFORM */;
5681 + this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;
6061 5682 this.offsetX = offsetX;
6062 5683 this.offsetY = offsetY;
6063 5684 this.matrix = matrix;
6064 - this.type = 0 /* TRANSFORM */;
6065 - this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;
6066 5685 }
6067 5686 return TransformEffect;
6068 5687 }());
6069 5688 var ClipEffect = /** @class */ (function () {
6070 5689 function ClipEffect(path, target) {
5690 + this.type = 1 /* CLIP */;
5691 + this.target = target;
6071 5692 this.path = path;
6072 - this.target = target;
6073 - this.type = 1 /* CLIP */;
6074 5693 }
6075 5694 return ClipEffect;
6076 5695 }());
6077 5696 var OpacityEffect = /** @class */ (function () {
6078 5697 function OpacityEffect(opacity) {
6079 - this.opacity = opacity;
6080 5698 this.type = 2 /* OPACITY */;
6081 5699 this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;
5700 + this.opacity = opacity;
6082 5701 }
6083 5702 return OpacityEffect;
6084 5703 }());
6085 5704 var isTransformEffect = function (effect) {
@@ -6087,30 +5706,8 @@
6087 5706 };
6088 5707 var isClipEffect = function (effect) { return effect.type === 1 /* CLIP */; };
6089 5708 var isOpacityEffect = function (effect) { return effect.type === 2 /* OPACITY */; };
6090 5709
6091 - var equalPath = function (a, b) {
6092 - if (a.length === b.length) {
6093 - return a.some(function (v, i) { return v === b[i]; });
6094 - }
6095 - return false;
6096 - };
6097 - var transformPath = function (path, deltaX, deltaY, deltaW, deltaH) {
6098 - return path.map(function (point, index) {
6099 - switch (index) {
6100 - case 0:
6101 - return point.add(deltaX, deltaY);
6102 - case 1:
6103 - return point.add(deltaX + deltaW, deltaY);
6104 - case 2:
6105 - return point.add(deltaX + deltaW, deltaY + deltaH);
6106 - case 3:
6107 - return point.add(deltaX, deltaY + deltaH);
6108 - }
6109 - return point;
6110 - });
6111 - };
6112 -
6113 5710 var StackingContext = /** @class */ (function () {
6114 5711 function StackingContext(container) {
6115 5712 this.element = container;
6116 5713 this.inlineLevel = [];
@@ -6123,23 +5720,22 @@
6123 5720 }
6124 5721 return StackingContext;
6125 5722 }());
6126 5723 var ElementPaint = /** @class */ (function () {
6127 - function ElementPaint(container, parent) {
6128 - this.container = container;
6129 - this.parent = parent;
6130 - this.effects = [];
6131 - this.curves = new BoundCurves(this.container);
6132 - if (this.container.styles.opacity < 1) {
6133 - this.effects.push(new OpacityEffect(this.container.styles.opacity));
5724 + function ElementPaint(element, parentStack) {
5725 + this.container = element;
5726 + this.effects = parentStack.slice(0);
5727 + this.curves = new BoundCurves(element);
5728 + if (element.styles.opacity < 1) {
5729 + this.effects.push(new OpacityEffect(element.styles.opacity));
6134 5730 }
6135 - if (this.container.styles.transform !== null) {
6136 - var offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;
6137 - var offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;
6138 - var matrix = this.container.styles.transform;
5731 + if (element.styles.transform !== null) {
5732 + var offsetX = element.bounds.left + element.styles.transformOrigin[0].number;
5733 + var offsetY = element.bounds.top + element.styles.transformOrigin[1].number;
5734 + var matrix = element.styles.transform;
6139 5735 this.effects.push(new TransformEffect(offsetX, offsetY, matrix));
6140 5736 }
6141 - if (this.container.styles.overflowX !== 0 /* VISIBLE */) {
5737 + if (element.styles.overflowX !== OVERFLOW.VISIBLE) {
6142 5738 var borderBox = calculateBorderBoxPath(this.curves);
6143 5739 var paddingBox = calculatePaddingBoxPath(this.curves);
6144 5740 if (equalPath(borderBox, paddingBox)) {
6145 5741 this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));
@@ -6149,31 +5745,18 @@
6149 5745 this.effects.push(new ClipEffect(paddingBox, 4 /* CONTENT */));
6150 5746 }
6151 5747 }
6152 5748 }
6153 - ElementPaint.prototype.getEffects = function (target) {
6154 - var inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(this.container.styles.position) === -1;
6155 - var parent = this.parent;
5749 + ElementPaint.prototype.getParentEffects = function () {
6156 5750 var effects = this.effects.slice(0);
6157 - while (parent) {
6158 - var croplessEffects = parent.effects.filter(function (effect) { return !isClipEffect(effect); });
6159 - if (inFlow || parent.container.styles.position !== 0 /* STATIC */ || !parent.parent) {
6160 - effects.unshift.apply(effects, croplessEffects);
6161 - inFlow = [2 /* ABSOLUTE */, 3 /* FIXED */].indexOf(parent.container.styles.position) === -1;
6162 - if (parent.container.styles.overflowX !== 0 /* VISIBLE */) {
6163 - var borderBox = calculateBorderBoxPath(parent.curves);
6164 - var paddingBox = calculatePaddingBoxPath(parent.curves);
6165 - if (!equalPath(borderBox, paddingBox)) {
6166 - effects.unshift(new ClipEffect(paddingBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));
6167 - }
6168 - }
5751 + if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) {
5752 + var borderBox = calculateBorderBoxPath(this.curves);
5753 + var paddingBox = calculatePaddingBoxPath(this.curves);
5754 + if (!equalPath(borderBox, paddingBox)) {
5755 + effects.push(new ClipEffect(paddingBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));
6169 5756 }
6170 - else {
6171 - effects.unshift.apply(effects, croplessEffects);
6172 - }
6173 - parent = parent.parent;
6174 5757 }
6175 - return effects.filter(function (effect) { return contains(effect.target, target); });
5758 + return effects;
6176 5759 };
6177 5760 return ElementPaint;
6178 5761 }());
6179 5762 var parseStackTree = function (parent, stackingContext, realStackingContext, listItems) {
@@ -6179,9 +5762,9 @@
6179 5762 var parseStackTree = function (parent, stackingContext, realStackingContext, listItems) {
6180 5763 parent.container.elements.forEach(function (child) {
6181 5764 var treatAsRealStackingContext = contains(child.flags, 4 /* CREATES_REAL_STACKING_CONTEXT */);
6182 5765 var createsStackingContext = contains(child.flags, 2 /* CREATES_STACKING_CONTEXT */);
6183 - var paintContainer = new ElementPaint(child, parent);
5766 + var paintContainer = new ElementPaint(child, parent.getParentEffects());
6184 5767 if (contains(child.styles.display, 2048 /* LIST_ITEM */)) {
6185 5768 listItems.push(paintContainer);
6186 5769 }
6187 5770 var listOwnerItems = contains(child.flags, 8 /* IS_LIST_OWNER */) ? [] : listItems;
@@ -6260,9 +5843,9 @@
6260 5843 numbering += reversed ? -1 : 1;
6261 5844 }
6262 5845 };
6263 5846 var parseStackingContexts = function (container) {
6264 - var paintContainer = new ElementPaint(container, null);
5847 + var paintContainer = new ElementPaint(container, []);
6265 5848 var root = new StackingContext(paintContainer);
6266 5849 var listItems = [];
6267 5850 parseStackTree(paintContainer, root, root, listItems);
6268 5851 processListItems(paintContainer.container, listItems);
@@ -6281,63 +5864,8 @@
6281 5864 default:
6282 5865 return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox);
6283 5866 }
6284 5867 };
6285 - var parsePathForBorderDoubleOuter = function (curves, borderSide) {
6286 - switch (borderSide) {
6287 - case 0:
6288 - return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox, curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox);
6289 - case 1:
6290 - return createPathFromCurves(curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox, curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox);
6291 - case 2:
6292 - return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox, curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox);
6293 - case 3:
6294 - default:
6295 - return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox, curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox);
6296 - }
6297 - };
6298 - var parsePathForBorderDoubleInner = function (curves, borderSide) {
6299 - switch (borderSide) {
6300 - case 0:
6301 - return createPathFromCurves(curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox, curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox);
6302 - case 1:
6303 - return createPathFromCurves(curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox, curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox);
6304 - case 2:
6305 - return createPathFromCurves(curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox);
6306 - case 3:
6307 - default:
6308 - return createPathFromCurves(curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox, curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox);
6309 - }
6310 - };
6311 - var parsePathForBorderStroke = function (curves, borderSide) {
6312 - switch (borderSide) {
6313 - case 0:
6314 - return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);
6315 - case 1:
6316 - return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);
6317 - case 2:
6318 - return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);
6319 - case 3:
6320 - default:
6321 - return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);
6322 - }
6323 - };
6324 - var createStrokePathFromCurves = function (outer1, outer2) {
6325 - var path = [];
6326 - if (isBezierCurve(outer1)) {
6327 - path.push(outer1.subdivide(0.5, false));
6328 - }
6329 - else {
6330 - path.push(outer1);
6331 - }
6332 - if (isBezierCurve(outer2)) {
6333 - path.push(outer2.subdivide(0.5, true));
6334 - }
6335 - else {
6336 - path.push(outer2);
6337 - }
6338 - return path;
6339 - };
6340 5868 var createPathFromCurves = function (outer1, inner1, outer2, inner2) {
6341 5869 var path = [];
6342 5870 if (isBezierCurve(outer1)) {
6343 5871 path.push(outer1.subdivide(0.5, false));
@@ -6390,12 +5918,12 @@
6390 5918 }
6391 5919 return paddingBox(element);
6392 5920 };
6393 5921 var calculateBackgroundPaintingArea = function (backgroundClip, element) {
6394 - if (backgroundClip === 0 /* BORDER_BOX */) {
5922 + if (backgroundClip === BACKGROUND_CLIP.BORDER_BOX) {
6395 5923 return element.bounds;
6396 5924 }
6397 - if (backgroundClip === 2 /* CONTENT_BOX */) {
5925 + if (backgroundClip === BACKGROUND_CLIP.CONTENT_BOX) {
6398 5926 return contentBox(element);
6399 5927 }
6400 5928 return paddingBox(element);
6401 5929 };
@@ -6414,11 +5942,8 @@
6414 5942 var hasIntrinsicValue = function (value) { return typeof value === 'number'; };
6415 5943 var calculateBackgroundSize = function (size, _a, bounds) {
6416 5944 var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2];
6417 5945 var first = size[0], second = size[1];
6418 - if (!first) {
6419 - return [0, 0];
6420 - }
6421 5946 if (isLengthPercentage(first) && second && isLengthPercentage(second)) {
6422 5947 return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];
6423 5948 }
6424 5949 var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);
@@ -6521,9 +6046,9 @@
6521 6046 var calculateBackgroundRepeatPath = function (repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) {
6522 6047 var x = _a[0], y = _a[1];
6523 6048 var width = _b[0], height = _b[1];
6524 6049 switch (repeat) {
6525 - case 2 /* REPEAT_X */:
6050 + case BACKGROUND_REPEAT.REPEAT_X:
6526 6051 return [
6527 6052 new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),
6528 6053 new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y)),
6529 6054 new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y)),
@@ -6528,9 +6053,9 @@
6528 6053 new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y)),
6529 6054 new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y)),
6530 6055 new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y))
6531 6056 ];
6532 - case 3 /* REPEAT_Y */:
6057 + case BACKGROUND_REPEAT.REPEAT_Y:
6533 6058 return [
6534 6059 new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),
6535 6060 new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top)),
6536 6061 new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),
@@ -6535,9 +6060,9 @@
6535 6060 new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top)),
6536 6061 new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),
6537 6062 new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))
6538 6063 ];
6539 - case 1 /* NO_REPEAT */:
6064 + case BACKGROUND_REPEAT.NO_REPEAT:
6540 6065 return [
6541 6066 new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y)),
6542 6067 new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y)),
6543 6068 new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y + height)),
@@ -6570,9 +6095,8 @@
6570 6095 container.style.fontFamily = fontFamily;
6571 6096 container.style.fontSize = fontSize;
6572 6097 container.style.margin = '0';
6573 6098 container.style.padding = '0';
6574 - container.style.whiteSpace = 'nowrap';
6575 6099 body.appendChild(container);
6576 6100 img.src = SMALL_IMAGE;
6577 6101 img.width = 1;
6578 6102 img.height = 1;
@@ -6604,44 +6128,34 @@
6604 6128 };
6605 6129 return FontMetrics;
6606 6130 }());
6607 6131
6608 - var Renderer = /** @class */ (function () {
6609 - function Renderer(context, options) {
6610 - this.context = context;
6132 + var MASK_OFFSET = 10000;
6133 + var CanvasRenderer = /** @class */ (function () {
6134 + function CanvasRenderer(options) {
6135 + this._activeEffects = [];
6136 + this.canvas = options.canvas ? options.canvas : document.createElement('canvas');
6137 + this.ctx = this.canvas.getContext('2d');
6611 6138 this.options = options;
6612 - }
6613 - return Renderer;
6614 - }());
6615 -
6616 - var MASK_OFFSET = 10000;
6617 - var CanvasRenderer = /** @class */ (function (_super) {
6618 - __extends(CanvasRenderer, _super);
6619 - function CanvasRenderer(context, options) {
6620 - var _this = _super.call(this, context, options) || this;
6621 - _this._activeEffects = [];
6622 - _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');
6623 - _this.ctx = _this.canvas.getContext('2d');
6624 6139 if (!options.canvas) {
6625 - _this.canvas.width = Math.floor(options.width * options.scale);
6626 - _this.canvas.height = Math.floor(options.height * options.scale);
6627 - _this.canvas.style.width = options.width + "px";
6628 - _this.canvas.style.height = options.height + "px";
6140 + this.canvas.width = Math.floor(options.width * options.scale);
6141 + this.canvas.height = Math.floor(options.height * options.scale);
6142 + this.canvas.style.width = options.width + "px";
6143 + this.canvas.style.height = options.height + "px";
6629 6144 }
6630 - _this.fontMetrics = new FontMetrics(document);
6631 - _this.ctx.scale(_this.options.scale, _this.options.scale);
6632 - _this.ctx.translate(-options.x, -options.y);
6633 - _this.ctx.textBaseline = 'bottom';
6634 - _this._activeEffects = [];
6635 - _this.context.logger.debug("Canvas renderer initialized (" + options.width + "x" + options.height + ") with scale " + options.scale);
6636 - return _this;
6145 + this.fontMetrics = new FontMetrics(document);
6146 + this.ctx.scale(this.options.scale, this.options.scale);
6147 + this.ctx.translate(-options.x + options.scrollX, -options.y + options.scrollY);
6148 + this.ctx.textBaseline = 'bottom';
6149 + this._activeEffects = [];
6150 + Logger.getInstance(options.id).debug("Canvas renderer initialized (" + options.width + "x" + options.height + " at " + options.x + "," + options.y + ") with scale " + options.scale);
6637 6151 }
6638 - CanvasRenderer.prototype.applyEffects = function (effects) {
6152 + CanvasRenderer.prototype.applyEffects = function (effects, target) {
6639 6153 var _this = this;
6640 6154 while (this._activeEffects.length) {
6641 6155 this.popEffect();
6642 6156 }
6643 - effects.forEach(function (effect) { return _this.applyEffect(effect); });
6157 + effects.filter(function (effect) { return contains(effect.target, target); }).forEach(function (effect) { return _this.applyEffect(effect); });
6644 6158 };
6645 6159 CanvasRenderer.prototype.applyEffect = function (effect) {
6646 6160 this.ctx.save();
6647 6161 if (isOpacityEffect(effect)) {
@@ -6683,11 +6197,8 @@
6683 6197 return __awaiter(this, void 0, void 0, function () {
6684 6198 return __generator(this, function (_a) {
6685 6199 switch (_a.label) {
6686 6200 case 0:
6687 - if (contains(paint.container.flags, 16 /* DEBUG_RENDER */)) {
6688 - debugger;
6689 - }
6690 6201 if (!paint.container.styles.isVisible()) return [3 /*break*/, 3];
6691 6202 return [4 /*yield*/, this.renderNodeBackgroundAndBorders(paint)];
6692 6203 case 1:
6693 6204 _a.sent();
@@ -6699,17 +6210,17 @@
6699 6210 }
6700 6211 });
6701 6212 });
6702 6213 };
6703 - CanvasRenderer.prototype.renderTextWithLetterSpacing = function (text, letterSpacing, baseline) {
6214 + CanvasRenderer.prototype.renderTextWithLetterSpacing = function (text, letterSpacing) {
6704 6215 var _this = this;
6705 6216 if (letterSpacing === 0) {
6706 - this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);
6217 + this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);
6707 6218 }
6708 6219 else {
6709 - var letters = segmentGraphemes(text.text);
6220 + var letters = toCodePoints(text.text).map(function (i) { return fromCodePoint(i); });
6710 6221 letters.reduce(function (left, letter) {
6711 - _this.ctx.fillText(letter, left, text.bounds.top + baseline);
6222 + _this.ctx.fillText(letter, left, text.bounds.top + text.bounds.height);
6712 6223 return left + _this.ctx.measureText(letter).width;
6713 6224 }, text.bounds.left);
6714 6225 }
6715 6226 };
@@ -6716,9 +6227,9 @@
6716 6227 CanvasRenderer.prototype.createFontStyle = function (styles) {
6717 6228 var fontVariant = styles.fontVariant
6718 6229 .filter(function (variant) { return variant === 'normal' || variant === 'small-caps'; })
6719 6230 .join('');
6720 - var fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');
6231 + var fontFamily = styles.fontFamily.join(', ');
6721 6232 var fontSize = isDimensionToken(styles.fontSize)
6722 6233 ? "" + styles.fontSize.number + styles.fontSize.unit
6723 6234 : styles.fontSize.number + "px";
6724 6235 return [
@@ -6728,76 +6239,55 @@
6728 6239 ];
6729 6240 };
6730 6241 CanvasRenderer.prototype.renderTextNode = function (text, styles) {
6731 6242 return __awaiter(this, void 0, void 0, function () {
6732 - var _a, font, fontFamily, fontSize, _b, baseline, middle, paintOrder;
6243 + var _a, font, fontFamily, fontSize;
6733 6244 var _this = this;
6734 - return __generator(this, function (_c) {
6245 + return __generator(this, function (_b) {
6735 6246 _a = this.createFontStyle(styles), font = _a[0], fontFamily = _a[1], fontSize = _a[2];
6736 6247 this.ctx.font = font;
6737 - this.ctx.direction = styles.direction === 1 /* RTL */ ? 'rtl' : 'ltr';
6738 - this.ctx.textAlign = 'left';
6739 - this.ctx.textBaseline = 'alphabetic';
6740 - _b = this.fontMetrics.getMetrics(fontFamily, fontSize), baseline = _b.baseline, middle = _b.middle;
6741 - paintOrder = styles.paintOrder;
6742 6248 text.textBounds.forEach(function (text) {
6743 - paintOrder.forEach(function (paintOrderLayer) {
6744 - switch (paintOrderLayer) {
6745 - case 0 /* FILL */:
6746 - _this.ctx.fillStyle = asString(styles.color);
6747 - _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);
6748 - var textShadows = styles.textShadow;
6749 - if (textShadows.length && text.text.trim().length) {
6750 - textShadows
6751 - .slice(0)
6752 - .reverse()
6753 - .forEach(function (textShadow) {
6754 - _this.ctx.shadowColor = asString(textShadow.color);
6755 - _this.ctx.shadowOffsetX = textShadow.offsetX.number * _this.options.scale;
6756 - _this.ctx.shadowOffsetY = textShadow.offsetY.number * _this.options.scale;
6757 - _this.ctx.shadowBlur = textShadow.blur.number;
6758 - _this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);
6759 - });
6760 - _this.ctx.shadowColor = '';
6761 - _this.ctx.shadowOffsetX = 0;
6762 - _this.ctx.shadowOffsetY = 0;
6763 - _this.ctx.shadowBlur = 0;
6764 - }
6765 - if (styles.textDecorationLine.length) {
6766 - _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);
6767 - styles.textDecorationLine.forEach(function (textDecorationLine) {
6768 - switch (textDecorationLine) {
6769 - case 1 /* UNDERLINE */:
6770 - // Draws a line at the baseline of the font
6771 - // TODO As some browsers display the line as more than 1px if the font-size is big,
6772 - // need to take that into account both in position and size
6773 - _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top + baseline), text.bounds.width, 1);
6774 - break;
6775 - case 2 /* OVERLINE */:
6776 - _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1);
6777 - break;
6778 - case 3 /* LINE_THROUGH */:
6779 - // TODO try and find exact position for line-through
6780 - _this.ctx.fillRect(text.bounds.left, Math.ceil(text.bounds.top + middle), text.bounds.width, 1);
6781 - break;
6782 - }
6783 - });
6784 - }
6785 - break;
6786 - case 1 /* STROKE */:
6787 - if (styles.webkitTextStrokeWidth && text.text.trim().length) {
6788 - _this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);
6789 - _this.ctx.lineWidth = styles.webkitTextStrokeWidth;
6790 - // eslint-disable-next-line @typescript-eslint/no-explicit-any
6791 - _this.ctx.lineJoin = !!window.chrome ? 'miter' : 'round';
6792 - _this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);
6793 - }
6794 - _this.ctx.strokeStyle = '';
6795 - _this.ctx.lineWidth = 0;
6796 - _this.ctx.lineJoin = 'miter';
6797 - break;
6798 - }
6799 - });
6249 + _this.ctx.fillStyle = asString(styles.color);
6250 + _this.renderTextWithLetterSpacing(text, styles.letterSpacing);
6251 + var textShadows = styles.textShadow;
6252 + if (textShadows.length && text.text.trim().length) {
6253 + textShadows
6254 + .slice(0)
6255 + .reverse()
6256 + .forEach(function (textShadow) {
6257 + _this.ctx.shadowColor = asString(textShadow.color);
6258 + _this.ctx.shadowOffsetX = textShadow.offsetX.number * _this.options.scale;
6259 + _this.ctx.shadowOffsetY = textShadow.offsetY.number * _this.options.scale;
6260 + _this.ctx.shadowBlur = textShadow.blur.number;
6261 + _this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);
6262 + });
6263 + _this.ctx.shadowColor = '';
6264 + _this.ctx.shadowOffsetX = 0;
6265 + _this.ctx.shadowOffsetY = 0;
6266 + _this.ctx.shadowBlur = 0;
6267 + }
6268 + if (styles.textDecorationLine.length) {
6269 + _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);
6270 + styles.textDecorationLine.forEach(function (textDecorationLine) {
6271 + switch (textDecorationLine) {
6272 + case 1 /* UNDERLINE */:
6273 + // Draws a line at the baseline of the font
6274 + // TODO As some browsers display the line as more than 1px if the font-size is big,
6275 + // need to take that into account both in position and size
6276 + var baseline = _this.fontMetrics.getMetrics(fontFamily, fontSize).baseline;
6277 + _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top + baseline), text.bounds.width, 1);
6278 + break;
6279 + case 2 /* OVERLINE */:
6280 + _this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1);
6281 + break;
6282 + case 3 /* LINE_THROUGH */:
6283 + // TODO try and find exact position for line-through
6284 + var middle = _this.fontMetrics.getMetrics(fontFamily, fontSize).middle;
6285 + _this.ctx.fillRect(text.bounds.left, Math.ceil(text.bounds.top + middle), text.bounds.width, 1);
6286 + break;
6287 + }
6288 + });
6289 + }
6800 6290 });
6801 6291 return [2 /*return*/];
6802 6292 });
6803 6293 });
@@ -6814,41 +6304,41 @@
6814 6304 }
6815 6305 };
6816 6306 CanvasRenderer.prototype.renderNodeContent = function (paint) {
6817 6307 return __awaiter(this, void 0, void 0, function () {
6818 - var container, curves, styles, _i, _a, child, image, image, iframeRenderer, canvas, size, _b, fontFamily, fontSize, baseline, bounds, x, textBounds, img, image, url, fontFamily, bounds;
6819 - return __generator(this, function (_c) {
6820 - switch (_c.label) {
6308 + var container, curves, styles, _i, _a, child, image, e_1, image, e_2, iframeRenderer, canvas, size, bounds, x, textBounds, img, image, url, e_3, bounds;
6309 + return __generator(this, function (_b) {
6310 + switch (_b.label) {
6821 6311 case 0:
6822 - this.applyEffects(paint.getEffects(4 /* CONTENT */));
6312 + this.applyEffects(paint.effects, 4 /* CONTENT */);
6823 6313 container = paint.container;
6824 6314 curves = paint.curves;
6825 6315 styles = container.styles;
6826 6316 _i = 0, _a = container.textNodes;
6827 - _c.label = 1;
6317 + _b.label = 1;
6828 6318 case 1:
6829 6319 if (!(_i < _a.length)) return [3 /*break*/, 4];
6830 6320 child = _a[_i];
6831 6321 return [4 /*yield*/, this.renderTextNode(child, styles)];
6832 6322 case 2:
6833 - _c.sent();
6834 - _c.label = 3;
6323 + _b.sent();
6324 + _b.label = 3;
6835 6325 case 3:
6836 6326 _i++;
6837 6327 return [3 /*break*/, 1];
6838 6328 case 4:
6839 6329 if (!(container instanceof ImageElementContainer)) return [3 /*break*/, 8];
6840 - _c.label = 5;
6330 + _b.label = 5;
6841 6331 case 5:
6842 - _c.trys.push([5, 7, , 8]);
6843 - return [4 /*yield*/, this.context.cache.match(container.src)];
6332 + _b.trys.push([5, 7, , 8]);
6333 + return [4 /*yield*/, this.options.cache.match(container.src)];
6844 6334 case 6:
6845 - image = _c.sent();
6335 + image = _b.sent();
6846 6336 this.renderReplacedElement(container, curves, image);
6847 6337 return [3 /*break*/, 8];
6848 6338 case 7:
6849 - _c.sent();
6850 - this.context.logger.error("Error loading image " + container.src);
6339 + e_1 = _b.sent();
6340 + Logger.getInstance(this.options.id).error("Error loading image " + container.src);
6851 6341 return [3 /*break*/, 8];
6852 6342 case 8:
6853 6343 if (container instanceof CanvasElementContainer) {
6854 6344 this.renderReplacedElement(container, curves, container.canvas);
@@ -6853,37 +6343,43 @@
6853 6343 if (container instanceof CanvasElementContainer) {
6854 6344 this.renderReplacedElement(container, curves, container.canvas);
6855 6345 }
6856 6346 if (!(container instanceof SVGElementContainer)) return [3 /*break*/, 12];
6857 - _c.label = 9;
6347 + _b.label = 9;
6858 6348 case 9:
6859 - _c.trys.push([9, 11, , 12]);
6860 - return [4 /*yield*/, this.context.cache.match(container.svg)];
6349 + _b.trys.push([9, 11, , 12]);
6350 + return [4 /*yield*/, this.options.cache.match(container.svg)];
6861 6351 case 10:
6862 - image = _c.sent();
6352 + image = _b.sent();
6863 6353 this.renderReplacedElement(container, curves, image);
6864 6354 return [3 /*break*/, 12];
6865 6355 case 11:
6866 - _c.sent();
6867 - this.context.logger.error("Error loading svg " + container.svg.substring(0, 255));
6356 + e_2 = _b.sent();
6357 + Logger.getInstance(this.options.id).error("Error loading svg " + container.svg.substring(0, 255));
6868 6358 return [3 /*break*/, 12];
6869 6359 case 12:
6870 6360 if (!(container instanceof IFrameElementContainer && container.tree)) return [3 /*break*/, 14];
6871 - iframeRenderer = new CanvasRenderer(this.context, {
6361 + iframeRenderer = new CanvasRenderer({
6362 + id: this.options.id,
6872 6363 scale: this.options.scale,
6873 6364 backgroundColor: container.backgroundColor,
6874 6365 x: 0,
6875 6366 y: 0,
6367 + scrollX: 0,
6368 + scrollY: 0,
6876 6369 width: container.width,
6877 - height: container.height
6370 + height: container.height,
6371 + cache: this.options.cache,
6372 + windowWidth: container.width,
6373 + windowHeight: container.height
6878 6374 });
6879 6375 return [4 /*yield*/, iframeRenderer.render(container.tree)];
6880 6376 case 13:
6881 - canvas = _c.sent();
6377 + canvas = _b.sent();
6882 6378 if (container.width && container.height) {
6883 6379 this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height);
6884 6380 }
6885 - _c.label = 14;
6381 + _b.label = 14;
6886 6382 case 14:
6887 6383 if (container instanceof InputElementContainer) {
6888 6384 size = Math.min(container.bounds.width, container.bounds.height);
6889 6385 if (container.type === CHECKBOX) {
@@ -6914,21 +6410,19 @@
6914 6410 }
6915 6411 }
6916 6412 }
6917 6413 if (isTextInputElement(container) && container.value.length) {
6918 - _b = this.createFontStyle(styles), fontFamily = _b[0], fontSize = _b[1];
6919 - baseline = this.fontMetrics.getMetrics(fontFamily, fontSize).baseline;
6920 - this.ctx.font = fontFamily;
6414 + this.ctx.font = this.createFontStyle(styles)[0];
6921 6415 this.ctx.fillStyle = asString(styles.color);
6922 - this.ctx.textBaseline = 'alphabetic';
6416 + this.ctx.textBaseline = 'middle';
6923 6417 this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);
6924 6418 bounds = contentBox(container);
6925 6419 x = 0;
6926 6420 switch (container.styles.textAlign) {
6927 - case 1 /* CENTER */:
6421 + case TEXT_ALIGN.CENTER:
6928 6422 x += bounds.width / 2;
6929 6423 break;
6930 - case 2 /* RIGHT */:
6424 + case TEXT_ALIGN.RIGHT:
6931 6425 x += bounds.width;
6932 6426 break;
6933 6427 }
6934 6428 textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);
@@ -6939,45 +6433,44 @@
6939 6433 new Vector(bounds.left + bounds.width, bounds.top + bounds.height),
6940 6434 new Vector(bounds.left, bounds.top + bounds.height)
6941 6435 ]);
6942 6436 this.ctx.clip();
6943 - this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing, baseline);
6437 + this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing);
6944 6438 this.ctx.restore();
6945 - this.ctx.textBaseline = 'alphabetic';
6439 + this.ctx.textBaseline = 'bottom';
6946 6440 this.ctx.textAlign = 'left';
6947 6441 }
6948 6442 if (!contains(container.styles.display, 2048 /* LIST_ITEM */)) return [3 /*break*/, 20];
6949 6443 if (!(container.styles.listStyleImage !== null)) return [3 /*break*/, 19];
6950 6444 img = container.styles.listStyleImage;
6951 - if (!(img.type === 0 /* URL */)) return [3 /*break*/, 18];
6445 + if (!(img.type === CSSImageType.URL)) return [3 /*break*/, 18];
6952 6446 image = void 0;
6953 6447 url = img.url;
6954 - _c.label = 15;
6448 + _b.label = 15;
6955 6449 case 15:
6956 - _c.trys.push([15, 17, , 18]);
6957 - return [4 /*yield*/, this.context.cache.match(url)];
6450 + _b.trys.push([15, 17, , 18]);
6451 + return [4 /*yield*/, this.options.cache.match(url)];
6958 6452 case 16:
6959 - image = _c.sent();
6453 + image = _b.sent();
6960 6454 this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);
6961 6455 return [3 /*break*/, 18];
6962 6456 case 17:
6963 - _c.sent();
6964 - this.context.logger.error("Error loading list-style-image " + url);
6457 + e_3 = _b.sent();
6458 + Logger.getInstance(this.options.id).error("Error loading list-style-image " + url);
6965 6459 return [3 /*break*/, 18];
6966 6460 case 18: return [3 /*break*/, 20];
6967 6461 case 19:
6968 - if (paint.listValue && container.styles.listStyleType !== -1 /* NONE */) {
6969 - fontFamily = this.createFontStyle(styles)[0];
6970 - this.ctx.font = fontFamily;
6462 + if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) {
6463 + this.ctx.font = this.createFontStyle(styles)[0];
6971 6464 this.ctx.fillStyle = asString(styles.color);
6972 6465 this.ctx.textBaseline = 'middle';
6973 6466 this.ctx.textAlign = 'right';
6974 6467 bounds = new Bounds(container.bounds.left, container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width), container.bounds.width, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1);
6975 - this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2);
6468 + this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing);
6976 6469 this.ctx.textBaseline = 'bottom';
6977 6470 this.ctx.textAlign = 'left';
6978 6471 }
6979 - _c.label = 20;
6472 + _b.label = 20;
6980 6473 case 20: return [2 /*return*/];
6981 6474 }
6982 6475 });
6983 6476 });
@@ -6987,11 +6480,8 @@
6987 6480 var _i, _a, child, _b, _c, child, _d, _e, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child;
6988 6481 return __generator(this, function (_p) {
6989 6482 switch (_p.label) {
6990 6483 case 0:
6991 - if (contains(stack.element.container.flags, 16 /* DEBUG_RENDER */)) {
6992 - debugger;
6993 - }
6994 6484 // https://www.w3.org/TR/css-position-3/#painting-order
6995 6485 // 1. the background and borders of the element forming the stacking context.
6996 6486 return [4 /*yield*/, this.renderNodeBackgroundAndBorders(stack.element)];
6997 6487 case 1:
@@ -7009,11 +6499,11 @@
7009 6499 _p.label = 4;
7010 6500 case 4:
7011 6501 _i++;
7012 6502 return [3 /*break*/, 2];
7013 - case 5:
7014 - // 3. For all its in-flow, non-positioned, block-level descendants in tree order:
7015 - return [4 /*yield*/, this.renderNodeContent(stack.element)];
6503 + case 5:
6504 + // 3. For all its in-flow, non-positioned, block-level descendants in tree order:
6505 + return [4 /*yield*/, this.renderNodeContent(stack.element)];
7016 6506 case 6:
7017 6507 // 3. For all its in-flow, non-positioned, block-level descendants in tree order:
7018 6508 _p.sent();
7019 6509 _b = 0, _c = stack.nonInlineLevel;
@@ -7135,16 +6625,14 @@
7135 6625 this.ctx.fill();
7136 6626 this.ctx.translate(-offsetX, -offsetY);
7137 6627 };
7138 6628 CanvasRenderer.prototype.resizeImage = function (image, width, height) {
7139 - var _a;
7140 6629 if (image.width === width && image.height === height) {
7141 6630 return image;
7142 6631 }
7143 - var ownerDocument = (_a = this.canvas.ownerDocument) !== null && _a !== void 0 ? _a : document;
7144 - var canvas = ownerDocument.createElement('canvas');
7145 - canvas.width = Math.max(1, width);
7146 - canvas.height = Math.max(1, height);
6632 + var canvas = this.canvas.ownerDocument.createElement('canvas');
6633 + canvas.width = width;
6634 + canvas.height = height;
7147 6635 var ctx = canvas.getContext('2d');
7148 6636 ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);
7149 6637 return canvas;
7150 6638 };
@@ -7155,33 +6643,33 @@
7155 6643 switch (_b.label) {
7156 6644 case 0:
7157 6645 index = container.styles.backgroundImage.length - 1;
7158 6646 _loop_1 = function (backgroundImage) {
7159 - var image, url, _c, path, x, y, width, height, pattern, _d, path, x, y, width, height, _e, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _f, path, left, top_1, width, height, position, x, y, _g, rx, ry, radialGradient_1, midX, midY, f, invF;
7160 - return __generator(this, function (_h) {
7161 - switch (_h.label) {
6647 + var image, url, e_4, _a, path, x, y, width, height, pattern, _b, path, x, y, width, height, _c, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _d, path, left, top_1, width, height, position, x, y, _e, rx, ry, radialGradient_1, midX, midY, f, invF;
6648 + return __generator(this, function (_f) {
6649 + switch (_f.label) {
7162 6650 case 0:
7163 - if (!(backgroundImage.type === 0 /* URL */)) return [3 /*break*/, 5];
6651 + if (!(backgroundImage.type === CSSImageType.URL)) return [3 /*break*/, 5];
7164 6652 image = void 0;
7165 6653 url = backgroundImage.url;
7166 - _h.label = 1;
6654 + _f.label = 1;
7167 6655 case 1:
7168 - _h.trys.push([1, 3, , 4]);
7169 - return [4 /*yield*/, this_1.context.cache.match(url)];
6656 + _f.trys.push([1, 3, , 4]);
6657 + return [4 /*yield*/, this_1.options.cache.match(url)];
7170 6658 case 2:
7171 - image = _h.sent();
6659 + image = _f.sent();
7172 6660 return [3 /*break*/, 4];
7173 6661 case 3:
7174 - _h.sent();
7175 - this_1.context.logger.error("Error loading background-image " + url);
6662 + e_4 = _f.sent();
6663 + Logger.getInstance(this_1.options.id).error("Error loading background-image " + url);
7176 6664 return [3 /*break*/, 4];
7177 6665 case 4:
7178 6666 if (image) {
7179 - _c = calculateBackgroundRendering(container, index, [
6667 + _a = calculateBackgroundRendering(container, index, [
7180 6668 image.width,
7181 6669 image.height,
7182 6670 image.width / image.height
7183 - ]), path = _c[0], x = _c[1], y = _c[2], width = _c[3], height = _c[4];
6671 + ]), path = _a[0], x = _a[1], y = _a[2], width = _a[3], height = _a[4];
7184 6672 pattern = this_1.ctx.createPattern(this_1.resizeImage(image, width, height), 'repeat');
7185 6673 this_1.renderRepeat(path, pattern, x, y);
7186 6674 }
7187 6675 return [3 /*break*/, 6];
@@ -7186,10 +6674,10 @@
7186 6674 }
7187 6675 return [3 /*break*/, 6];
7188 6676 case 5:
7189 6677 if (isLinearGradient(backgroundImage)) {
7190 - _d = calculateBackgroundRendering(container, index, [null, null, null]), path = _d[0], x = _d[1], y = _d[2], width = _d[3], height = _d[4];
7191 - _e = calculateGradientDirection(backgroundImage.angle, width, height), lineLength = _e[0], x0 = _e[1], x1 = _e[2], y0 = _e[3], y1 = _e[4];
6678 + _b = calculateBackgroundRendering(container, index, [null, null, null]), path = _b[0], x = _b[1], y = _b[2], width = _b[3], height = _b[4];
6679 + _c = calculateGradientDirection(backgroundImage.angle, width, height), lineLength = _c[0], x0 = _c[1], x1 = _c[2], y0 = _c[3], y1 = _c[4];
7192 6680 canvas = document.createElement('canvas');
7193 6681 canvas.width = width;
7194 6682 canvas.height = height;
7195 6683 ctx = canvas.getContext('2d');
@@ -7204,18 +6692,18 @@
7204 6692 this_1.renderRepeat(path, pattern, x, y);
7205 6693 }
7206 6694 }
7207 6695 else if (isRadialGradient(backgroundImage)) {
7208 - _f = calculateBackgroundRendering(container, index, [
6696 + _d = calculateBackgroundRendering(container, index, [
7209 6697 null,
7210 6698 null,
7211 6699 null
7212 - ]), path = _f[0], left = _f[1], top_1 = _f[2], width = _f[3], height = _f[4];
6700 + ]), path = _d[0], left = _d[1], top_1 = _d[2], width = _d[3], height = _d[4];
7213 6701 position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;
7214 6702 x = getAbsoluteValue(position[0], width);
7215 6703 y = getAbsoluteValue(position[position.length - 1], height);
7216 - _g = calculateRadius(backgroundImage, x, y, width, height), rx = _g[0], ry = _g[1];
7217 - if (rx > 0 && ry > 0) {
6704 + _e = calculateRadius(backgroundImage, x, y, width, height), rx = _e[0], ry = _e[1];
6705 + if (rx > 0 && rx > 0) {
7218 6706 radialGradient_1 = this_1.ctx.createRadialGradient(left + x, top_1 + y, 0, left + x, top_1 + y, rx);
7219 6707 processColorStops(backgroundImage.stops, rx * 2).forEach(function (colorStop) {
7220 6708 return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color));
7221 6709 });
@@ -7237,9 +6725,9 @@
7237 6725 this_1.ctx.fill();
7238 6726 }
7239 6727 }
7240 6728 }
7241 - _h.label = 6;
6729 + _f.label = 6;
7242 6730 case 6:
7243 6731 index--;
7244 6732 return [2 /*return*/];
7245 6733 }
@@ -7262,9 +6750,9 @@
7262 6750 }
7263 6751 });
7264 6752 });
7265 6753 };
7266 - CanvasRenderer.prototype.renderSolidBorder = function (color, side, curvePoints) {
6754 + CanvasRenderer.prototype.renderBorder = function (color, side, curvePoints) {
7267 6755 return __awaiter(this, void 0, void 0, function () {
7268 6756 return __generator(this, function (_a) {
7269 6757 this.path(parsePathForBorder(curvePoints, side));
7270 6758 this.ctx.fillStyle = asString(color);
@@ -7272,32 +6760,8 @@
7272 6760 return [2 /*return*/];
7273 6761 });
7274 6762 });
7275 6763 };
7276 - CanvasRenderer.prototype.renderDoubleBorder = function (color, width, side, curvePoints) {
7277 - return __awaiter(this, void 0, void 0, function () {
7278 - var outerPaths, innerPaths;
7279 - return __generator(this, function (_a) {
7280 - switch (_a.label) {
7281 - case 0:
7282 - if (!(width < 3)) return [3 /*break*/, 2];
7283 - return [4 /*yield*/, this.renderSolidBorder(color, side, curvePoints)];
7284 - case 1:
7285 - _a.sent();
7286 - return [2 /*return*/];
7287 - case 2:
7288 - outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);
7289 - this.path(outerPaths);
7290 - this.ctx.fillStyle = asString(color);
7291 - this.ctx.fill();
7292 - innerPaths = parsePathForBorderDoubleInner(curvePoints, side);
7293 - this.path(innerPaths);
7294 - this.ctx.fill();
7295 - return [2 /*return*/];
7296 - }
7297 - });
7298 - });
7299 - };
7300 6764 CanvasRenderer.prototype.renderNodeBackgroundAndBorders = function (paint) {
7301 6765 return __awaiter(this, void 0, void 0, function () {
7302 6766 var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border;
7303 6767 var _this = this;
@@ -7303,16 +6767,16 @@
7303 6767 var _this = this;
7304 6768 return __generator(this, function (_a) {
7305 6769 switch (_a.label) {
7306 6770 case 0:
7307 - this.applyEffects(paint.getEffects(2 /* BACKGROUND_BORDERS */));
6771 + this.applyEffects(paint.effects, 2 /* BACKGROUND_BORDERS */);
7308 6772 styles = paint.container.styles;
7309 6773 hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;
7310 6774 borders = [
7311 - { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },
7312 - { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },
7313 - { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },
7314 - { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }
6775 + { style: styles.borderTopStyle, color: styles.borderTopColor },
6776 + { style: styles.borderRightStyle, color: styles.borderRightColor },
6777 + { style: styles.borderBottomStyle, color: styles.borderBottomColor },
6778 + { style: styles.borderLeftStyle, color: styles.borderLeftColor }
7315 6779 ];
7316 6780 backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves);
7317 6781 if (!(hasBackground || styles.boxShadow.length)) return [3 /*break*/, 2];
7318 6782 this.ctx.save();
@@ -7329,30 +6793,30 @@
7329 6793 styles.boxShadow
7330 6794 .slice(0)
7331 6795 .reverse()
7332 6796 .forEach(function (shadow) {
7333 - _this.ctx.save();
7334 - var borderBoxArea = calculateBorderBoxPath(paint.curves);
7335 - var maskOffset = shadow.inset ? 0 : MASK_OFFSET;
7336 - var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2));
7337 - if (shadow.inset) {
7338 - _this.path(borderBoxArea);
7339 - _this.ctx.clip();
7340 - _this.mask(shadowPaintingArea);
7341 - }
7342 - else {
7343 - _this.mask(borderBoxArea);
7344 - _this.ctx.clip();
7345 - _this.path(shadowPaintingArea);
7346 - }
7347 - _this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;
7348 - _this.ctx.shadowOffsetY = shadow.offsetY.number;
7349 - _this.ctx.shadowColor = asString(shadow.color);
7350 - _this.ctx.shadowBlur = shadow.blur.number;
7351 - _this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';
7352 - _this.ctx.fill();
7353 - _this.ctx.restore();
7354 - });
6797 + _this.ctx.save();
6798 + var borderBoxArea = calculateBorderBoxPath(paint.curves);
6799 + var maskOffset = shadow.inset ? 0 : MASK_OFFSET;
6800 + var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2));
6801 + if (shadow.inset) {
6802 + _this.path(borderBoxArea);
6803 + _this.ctx.clip();
6804 + _this.mask(shadowPaintingArea);
6805 + }
6806 + else {
6807 + _this.mask(borderBoxArea);
6808 + _this.ctx.clip();
6809 + _this.path(shadowPaintingArea);
6810 + }
6811 + _this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;
6812 + _this.ctx.shadowOffsetY = shadow.offsetY.number;
6813 + _this.ctx.shadowColor = asString(shadow.color);
6814 + _this.ctx.shadowBlur = shadow.blur.number;
6815 + _this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';
6816 + _this.ctx.fill();
6817 + _this.ctx.restore();
6818 + });
7355 6819 _a.label = 2;
7356 6820 case 2:
7357 6821 side = 0;
7358 6822 _i = 0, borders_1 = borders;
@@ -7357,147 +6821,26 @@
7357 6821 side = 0;
7358 6822 _i = 0, borders_1 = borders;
7359 6823 _a.label = 3;
7360 6824 case 3:
7361 - if (!(_i < borders_1.length)) return [3 /*break*/, 13];
6825 + if (!(_i < borders_1.length)) return [3 /*break*/, 7];
7362 6826 border = borders_1[_i];
7363 - if (!(border.style !== 0 /* NONE */ && !isTransparent(border.color) && border.width > 0)) return [3 /*break*/, 11];
7364 - if (!(border.style === 2 /* DASHED */)) return [3 /*break*/, 5];
7365 - return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 2 /* DASHED */)];
6827 + if (!(border.style !== BORDER_STYLE.NONE && !isTransparent(border.color))) return [3 /*break*/, 5];
6828 + return [4 /*yield*/, this.renderBorder(border.color, side, paint.curves)];
7366 6829 case 4:
7367 6830 _a.sent();
7368 - return [3 /*break*/, 11];
6831 + _a.label = 5;
7369 6832 case 5:
7370 - if (!(border.style === 3 /* DOTTED */)) return [3 /*break*/, 7];
7371 - return [4 /*yield*/, this.renderDashedDottedBorder(border.color, border.width, side, paint.curves, 3 /* DOTTED */)];
6833 + side++;
6834 + _a.label = 6;
7372 6835 case 6:
7373 - _a.sent();
7374 - return [3 /*break*/, 11];
7375 - case 7:
7376 - if (!(border.style === 4 /* DOUBLE */)) return [3 /*break*/, 9];
7377 - return [4 /*yield*/, this.renderDoubleBorder(border.color, border.width, side, paint.curves)];
7378 - case 8:
7379 - _a.sent();
7380 - return [3 /*break*/, 11];
7381 - case 9: return [4 /*yield*/, this.renderSolidBorder(border.color, side, paint.curves)];
7382 - case 10:
7383 - _a.sent();
7384 - _a.label = 11;
7385 - case 11:
7386 - side++;
7387 - _a.label = 12;
7388 - case 12:
7389 6836 _i++;
7390 6837 return [3 /*break*/, 3];
7391 - case 13: return [2 /*return*/];
6838 + case 7: return [2 /*return*/];
7392 6839 }
7393 6840 });
7394 6841 });
7395 6842 };
7396 - CanvasRenderer.prototype.renderDashedDottedBorder = function (color, width, side, curvePoints, style) {
7397 - return __awaiter(this, void 0, void 0, function () {
7398 - var strokePaths, boxPaths, startX, startY, endX, endY, length, dashLength, spaceLength, useLineDash, multiplier, numberOfDashes, minSpace, maxSpace, path1, path2, path1, path2;
7399 - return __generator(this, function (_a) {
7400 - this.ctx.save();
7401 - strokePaths = parsePathForBorderStroke(curvePoints, side);
7402 - boxPaths = parsePathForBorder(curvePoints, side);
7403 - if (style === 2 /* DASHED */) {
7404 - this.path(boxPaths);
7405 - this.ctx.clip();
7406 - }
7407 - if (isBezierCurve(boxPaths[0])) {
7408 - startX = boxPaths[0].start.x;
7409 - startY = boxPaths[0].start.y;
7410 - }
7411 - else {
7412 - startX = boxPaths[0].x;
7413 - startY = boxPaths[0].y;
7414 - }
7415 - if (isBezierCurve(boxPaths[1])) {
7416 - endX = boxPaths[1].end.x;
7417 - endY = boxPaths[1].end.y;
7418 - }
7419 - else {
7420 - endX = boxPaths[1].x;
7421 - endY = boxPaths[1].y;
7422 - }
7423 - if (side === 0 || side === 2) {
7424 - length = Math.abs(startX - endX);
7425 - }
7426 - else {
7427 - length = Math.abs(startY - endY);
7428 - }
7429 - this.ctx.beginPath();
7430 - if (style === 3 /* DOTTED */) {
7431 - this.formatPath(strokePaths);
7432 - }
7433 - else {
7434 - this.formatPath(boxPaths.slice(0, 2));
7435 - }
7436 - dashLength = width < 3 ? width * 3 : width * 2;
7437 - spaceLength = width < 3 ? width * 2 : width;
7438 - if (style === 3 /* DOTTED */) {
7439 - dashLength = width;
7440 - spaceLength = width;
7441 - }
7442 - useLineDash = true;
7443 - if (length <= dashLength * 2) {
7444 - useLineDash = false;
7445 - }
7446 - else if (length <= dashLength * 2 + spaceLength) {
7447 - multiplier = length / (2 * dashLength + spaceLength);
7448 - dashLength *= multiplier;
7449 - spaceLength *= multiplier;
7450 - }
7451 - else {
7452 - numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));
7453 - minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);
7454 - maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;
7455 - spaceLength =
7456 - maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)
7457 - ? minSpace
7458 - : maxSpace;
7459 - }
7460 - if (useLineDash) {
7461 - if (style === 3 /* DOTTED */) {
7462 - this.ctx.setLineDash([0, dashLength + spaceLength]);
7463 - }
7464 - else {
7465 - this.ctx.setLineDash([dashLength, spaceLength]);
7466 - }
7467 - }
7468 - if (style === 3 /* DOTTED */) {
7469 - this.ctx.lineCap = 'round';
7470 - this.ctx.lineWidth = width;
7471 - }
7472 - else {
7473 - this.ctx.lineWidth = width * 2 + 1.1;
7474 - }
7475 - this.ctx.strokeStyle = asString(color);
7476 - this.ctx.stroke();
7477 - this.ctx.setLineDash([]);
7478 - // dashed round edge gap
7479 - if (style === 2 /* DASHED */) {
7480 - if (isBezierCurve(boxPaths[0])) {
7481 - path1 = boxPaths[3];
7482 - path2 = boxPaths[0];
7483 - this.ctx.beginPath();
7484 - this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);
7485 - this.ctx.stroke();
7486 - }
7487 - if (isBezierCurve(boxPaths[1])) {
7488 - path1 = boxPaths[1];
7489 - path2 = boxPaths[2];
7490 - this.ctx.beginPath();
7491 - this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);
7492 - this.ctx.stroke();
7493 - }
7494 - }
7495 - this.ctx.restore();
7496 - return [2 /*return*/];
7497 - });
7498 - });
7499 - };
7500 6843 CanvasRenderer.prototype.render = function (element) {
7501 6844 return __awaiter(this, void 0, void 0, function () {
7502 6845 var stack;
7503 6846 return __generator(this, function (_a) {
@@ -7504,15 +6847,15 @@
7504 6847 switch (_a.label) {
7505 6848 case 0:
7506 6849 if (this.options.backgroundColor) {
7507 6850 this.ctx.fillStyle = asString(this.options.backgroundColor);
7508 - this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);
6851 + this.ctx.fillRect(this.options.x - this.options.scrollX, this.options.y - this.options.scrollY, this.options.width, this.options.height);
7509 6852 }
7510 6853 stack = parseStackingContexts(element);
7511 6854 return [4 /*yield*/, this.renderStack(stack)];
7512 6855 case 1:
7513 6856 _a.sent();
7514 - this.applyEffects([]);
6857 + this.applyEffects([], 2 /* BACKGROUND_BORDERS */);
7515 6858 return [2 /*return*/, this.canvas];
7516 6859 }
7517 6860 });
7518 6861 });
@@ -7517,9 +6860,9 @@
7517 6860 });
7518 6861 });
7519 6862 };
7520 6863 return CanvasRenderer;
7521 - }(Renderer));
6864 + }());
7522 6865 var isTextInputElement = function (container) {
7523 6866 if (container instanceof TextareaElementContainer) {
7524 6867 return true;
7525 6868 }
@@ -7532,13 +6875,13 @@
7532 6875 return false;
7533 6876 };
7534 6877 var calculateBackgroundCurvedPaintingArea = function (clip, curves) {
7535 6878 switch (clip) {
7536 - case 0 /* BORDER_BOX */:
6879 + case BACKGROUND_CLIP.BORDER_BOX:
7537 6880 return calculateBorderBoxPath(curves);
7538 - case 2 /* CONTENT_BOX */:
6881 + case BACKGROUND_CLIP.CONTENT_BOX:
7539 6882 return calculateContentBoxPath(curves);
7540 - case 1 /* PADDING_BOX */:
6883 + case BACKGROUND_CLIP.PADDING_BOX:
7541 6884 default:
7542 6885 return calculatePaddingBoxPath(curves);
7543 6886 }
7544 6887 };
@@ -7543,40 +6886,30 @@
7543 6886 }
7544 6887 };
7545 6888 var canvasTextAlign = function (textAlign) {
7546 6889 switch (textAlign) {
7547 - case 1 /* CENTER */:
6890 + case TEXT_ALIGN.CENTER:
7548 6891 return 'center';
7549 - case 2 /* RIGHT */:
6892 + case TEXT_ALIGN.RIGHT:
7550 6893 return 'right';
7551 - case 0 /* LEFT */:
6894 + case TEXT_ALIGN.LEFT:
7552 6895 default:
7553 6896 return 'left';
7554 6897 }
7555 6898 };
7556 - // see https://github.com/niklasvh/html2canvas/pull/2645
7557 - var iOSBrokenFonts = ['-apple-system', 'system-ui'];
7558 - var fixIOSSystemFonts = function (fontFamilies) {
7559 - return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)
7560 - ? fontFamilies.filter(function (fontFamily) { return iOSBrokenFonts.indexOf(fontFamily) === -1; })
7561 - : fontFamilies;
7562 - };
7563 6899
7564 - var ForeignObjectRenderer = /** @class */ (function (_super) {
7565 - __extends(ForeignObjectRenderer, _super);
7566 - function ForeignObjectRenderer(context, options) {
7567 - var _this = _super.call(this, context, options) || this;
7568 - _this.canvas = options.canvas ? options.canvas : document.createElement('canvas');
7569 - _this.ctx = _this.canvas.getContext('2d');
7570 - _this.options = options;
7571 - _this.canvas.width = Math.floor(options.width * options.scale);
7572 - _this.canvas.height = Math.floor(options.height * options.scale);
7573 - _this.canvas.style.width = options.width + "px";
7574 - _this.canvas.style.height = options.height + "px";
7575 - _this.ctx.scale(_this.options.scale, _this.options.scale);
7576 - _this.ctx.translate(-options.x, -options.y);
7577 - _this.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized (" + options.width + "x" + options.height + " at " + options.x + "," + options.y + ") with scale " + options.scale);
7578 - return _this;
6900 + var ForeignObjectRenderer = /** @class */ (function () {
6901 + function ForeignObjectRenderer(options) {
6902 + this.canvas = options.canvas ? options.canvas : document.createElement('canvas');
6903 + this.ctx = this.canvas.getContext('2d');
6904 + this.options = options;
6905 + this.canvas.width = Math.floor(options.width * options.scale);
6906 + this.canvas.height = Math.floor(options.height * options.scale);
6907 + this.canvas.style.width = options.width + "px";
6908 + this.canvas.style.height = options.height + "px";
6909 + this.ctx.scale(this.options.scale, this.options.scale);
6910 + this.ctx.translate(-options.x + options.scrollX, -options.y + options.scrollY);
6911 + Logger.getInstance(options.id).debug("EXPERIMENTAL ForeignObject renderer initialized (" + options.width + "x" + options.height + " at " + options.x + "," + options.y + ") with scale " + options.scale);
7579 6912 }
7580 6913 ForeignObjectRenderer.prototype.render = function (element) {
7581 6914 return __awaiter(this, void 0, void 0, function () {
7582 6915 var svg, img;
@@ -7582,10 +6915,10 @@
7582 6915 var svg, img;
7583 6916 return __generator(this, function (_a) {
7584 6917 switch (_a.label) {
7585 6918 case 0:
7586 - svg = createForeignObjectSVG(this.options.width * this.options.scale, this.options.height * this.options.scale, this.options.scale, this.options.scale, element);
7587 - return [4 /*yield*/, loadSerializedSVG(svg)];
6919 + svg = createForeignObjectSVG(Math.max(this.options.windowWidth, this.options.width) * this.options.scale, Math.max(this.options.windowHeight, this.options.height) * this.options.scale, this.options.scrollX * this.options.scale, this.options.scrollY * this.options.scale, element);
6920 + return [4 /*yield*/, loadSerializedSVG$1(svg)];
7588 6921 case 1:
7589 6922 img = _a.sent();
7590 6923 if (this.options.backgroundColor) {
7591 6924 this.ctx.fillStyle = asString(this.options.backgroundColor);
@@ -7597,10 +6930,10 @@
7597 6930 });
7598 6931 });
7599 6932 };
7600 6933 return ForeignObjectRenderer;
7601 - }(Renderer));
7602 - var loadSerializedSVG = function (svg) {
6934 + }());
6935 + var loadSerializedSVG$1 = function (svg) {
7603 6936 return new Promise(function (resolve, reject) {
7604 6937 var img = new Image();
7605 6938 img.onload = function () {
7606 6939 resolve(img);
@@ -7609,99 +6942,10 @@
7609 6942 img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg));
7610 6943 });
7611 6944 };
7612 6945
7613 - var Logger = /** @class */ (function () {
7614 - function Logger(_a) {
7615 - var id = _a.id, enabled = _a.enabled;
7616 - this.id = id;
7617 - this.enabled = enabled;
7618 - this.start = Date.now();
7619 - }
7620 - // eslint-disable-next-line @typescript-eslint/no-explicit-any
7621 - Logger.prototype.debug = function () {
7622 - var args = [];
7623 - for (var _i = 0; _i < arguments.length; _i++) {
7624 - args[_i] = arguments[_i];
7625 - }
7626 - if (this.enabled) {
7627 - // eslint-disable-next-line no-console
7628 - if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {
7629 - // eslint-disable-next-line no-console
7630 - console.debug.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
7631 - }
7632 - else {
7633 - this.info.apply(this, args);
7634 - }
7635 - }
7636 - };
7637 - Logger.prototype.getTime = function () {
7638 - return Date.now() - this.start;
7639 - };
7640 - // eslint-disable-next-line @typescript-eslint/no-explicit-any
7641 - Logger.prototype.info = function () {
7642 - var args = [];
7643 - for (var _i = 0; _i < arguments.length; _i++) {
7644 - args[_i] = arguments[_i];
7645 - }
7646 - if (this.enabled) {
7647 - // eslint-disable-next-line no-console
7648 - if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {
7649 - // eslint-disable-next-line no-console
7650 - console.info.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
7651 - }
7652 - }
7653 - };
7654 - // eslint-disable-next-line @typescript-eslint/no-explicit-any
7655 - Logger.prototype.warn = function () {
7656 - var args = [];
7657 - for (var _i = 0; _i < arguments.length; _i++) {
7658 - args[_i] = arguments[_i];
7659 - }
7660 - if (this.enabled) {
7661 - // eslint-disable-next-line no-console
7662 - if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {
7663 - // eslint-disable-next-line no-console
7664 - console.warn.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
7665 - }
7666 - else {
7667 - this.info.apply(this, args);
7668 - }
7669 - }
7670 - };
7671 - // eslint-disable-next-line @typescript-eslint/no-explicit-any
7672 - Logger.prototype.error = function () {
7673 - var args = [];
7674 - for (var _i = 0; _i < arguments.length; _i++) {
7675 - args[_i] = arguments[_i];
7676 - }
7677 - if (this.enabled) {
7678 - // eslint-disable-next-line no-console
7679 - if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {
7680 - // eslint-disable-next-line no-console
7681 - console.error.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
7682 - }
7683 - else {
7684 - this.info.apply(this, args);
7685 - }
7686 - }
7687 - };
7688 - Logger.instances = {};
7689 - return Logger;
7690 - }());
7691 -
7692 - var Context = /** @class */ (function () {
7693 - function Context(options, windowBounds) {
7694 - var _a;
7695 - this.windowBounds = windowBounds;
7696 - this.instanceName = "#" + Context.instanceCount++;
7697 - this.logger = new Logger({ id: this.instanceName, enabled: options.logging });
7698 - this.cache = (_a = options.cache) !== null && _a !== void 0 ? _a : new Cache(this, options);
7699 - }
7700 - Context.instanceCount = 1;
7701 - return Context;
7702 - }());
7703 -
6946 + var _this = undefined;
6947 + var parseColor$1 = function (value) { return color.parse(Parser.create(value).parseComponentValue()); };
7704 6948 var html2canvas = function (element, options) {
7705 6949 if (options === void 0) { options = {}; }
7706 6950 return renderElement(element, options);
7707 6951 };
@@ -7707,17 +6951,13 @@
7707 6951 };
7708 6952 if (typeof window !== 'undefined') {
7709 6953 CacheStorage.setContext(window);
7710 6954 }
7711 - var renderElement = function (element, opts) { return __awaiter(void 0, void 0, void 0, function () {
7712 - var ownerDocument, defaultView, resourceOptions, contextOptions, windowOptions, windowBounds, context, foreignObjectRendering, cloneOptions, documentCloner, clonedElement, container, _a, width, height, left, top, backgroundColor, renderOptions, canvas, renderer, root, renderer;
7713 - var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
7714 - return __generator(this, function (_u) {
7715 - switch (_u.label) {
6955 + var renderElement = function (element, opts) { return __awaiter(_this, void 0, void 0, function () {
6956 + var ownerDocument, defaultView, instanceName, _a, width, height, left, top, defaultResourceOptions, resourceOptions, defaultOptions, options, windowBounds, documentCloner, clonedElement, container, documentBackgroundColor, bodyBackgroundColor, bgColor, defaultBackgroundColor, backgroundColor, renderOptions, canvas, renderer, root, renderer;
6957 + return __generator(this, function (_b) {
6958 + switch (_b.label) {
7716 6959 case 0:
7717 - if (!element || typeof element !== 'object') {
7718 - return [2 /*return*/, Promise.reject('Invalid element provided as first argument')];
7719 - }
7720 6960 ownerDocument = element.ownerDocument;
7721 6961 if (!ownerDocument) {
7722 6962 throw new Error("Element is not attached to a Document");
7723 6963 }
@@ -7724,33 +6964,45 @@
7724 6964 defaultView = ownerDocument.defaultView;
7725 6965 if (!defaultView) {
7726 6966 throw new Error("Document is not attached to a Window");
7727 6967 }
7728 - resourceOptions = {
7729 - allowTaint: (_b = opts.allowTaint) !== null && _b !== void 0 ? _b : false,
7730 - imageTimeout: (_c = opts.imageTimeout) !== null && _c !== void 0 ? _c : 15000,
7731 - proxy: opts.proxy,
7732 - useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false
6968 + instanceName = (Math.round(Math.random() * 1000) + Date.now()).toString(16);
6969 + _a = isBodyElement(element) || isHTMLElement(element) ? parseDocumentSize(ownerDocument) : parseBounds(element), width = _a.width, height = _a.height, left = _a.left, top = _a.top;
6970 + defaultResourceOptions = {
6971 + allowTaint: false,
6972 + imageTimeout: 15000,
6973 + proxy: undefined,
6974 + useCORS: false
7733 6975 };
7734 - contextOptions = __assign({ logging: (_e = opts.logging) !== null && _e !== void 0 ? _e : true, cache: opts.cache }, resourceOptions);
7735 - windowOptions = {
7736 - windowWidth: (_f = opts.windowWidth) !== null && _f !== void 0 ? _f : defaultView.innerWidth,
7737 - windowHeight: (_g = opts.windowHeight) !== null && _g !== void 0 ? _g : defaultView.innerHeight,
7738 - scrollX: (_h = opts.scrollX) !== null && _h !== void 0 ? _h : defaultView.pageXOffset,
7739 - scrollY: (_j = opts.scrollY) !== null && _j !== void 0 ? _j : defaultView.pageYOffset
6976 + resourceOptions = __assign({}, defaultResourceOptions, opts);
6977 + defaultOptions = {
6978 + backgroundColor: '#ffffff',
6979 + cache: opts.cache ? opts.cache : CacheStorage.create(instanceName, resourceOptions),
6980 + logging: true,
6981 + removeContainer: true,
6982 + foreignObjectRendering: false,
6983 + scale: defaultView.devicePixelRatio || 1,
6984 + windowWidth: defaultView.innerWidth,
6985 + windowHeight: defaultView.innerHeight,
6986 + scrollX: defaultView.pageXOffset,
6987 + scrollY: defaultView.pageYOffset,
6988 + x: left,
6989 + y: top,
6990 + width: Math.ceil(width),
6991 + height: Math.ceil(height),
6992 + id: instanceName
7740 6993 };
7741 - windowBounds = new Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);
7742 - context = new Context(contextOptions, windowBounds);
7743 - foreignObjectRendering = (_k = opts.foreignObjectRendering) !== null && _k !== void 0 ? _k : false;
7744 - cloneOptions = {
7745 - allowTaint: (_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false,
7746 - onclone: opts.onclone,
7747 - ignoreElements: opts.ignoreElements,
7748 - inlineImages: foreignObjectRendering,
7749 - copyStyles: foreignObjectRendering
7750 - };
7751 - context.logger.debug("Starting document clone with size " + windowBounds.width + "x" + windowBounds.height + " scrolled to " + -windowBounds.left + "," + -windowBounds.top);
7752 - documentCloner = new DocumentCloner(context, element, cloneOptions);
6994 + options = __assign({}, defaultOptions, resourceOptions, opts);
6995 + windowBounds = new Bounds(options.scrollX, options.scrollY, options.windowWidth, options.windowHeight);
6996 + Logger.create({ id: instanceName, enabled: options.logging });
6997 + Logger.getInstance(instanceName).debug("Starting document clone");
6998 + documentCloner = new DocumentCloner(element, {
6999 + id: instanceName,
7000 + onclone: options.onclone,
7001 + ignoreElements: options.ignoreElements,
7002 + inlineImages: options.foreignObjectRendering,
7003 + copyStyles: options.foreignObjectRendering
7004 + });
7753 7005 clonedElement = documentCloner.clonedReferenceElement;
7754 7006 if (!clonedElement) {
7755 7007 return [2 /*return*/, Promise.reject("Unable to find element in cloned iframe")];
7756 7008 }
@@ -7755,76 +7007,75 @@
7755 7007 return [2 /*return*/, Promise.reject("Unable to find element in cloned iframe")];
7756 7008 }
7757 7009 return [4 /*yield*/, documentCloner.toIFrame(ownerDocument, windowBounds)];
7758 7010 case 1:
7759 - container = _u.sent();
7760 - _a = isBodyElement(clonedElement) || isHTMLElement(clonedElement)
7761 - ? parseDocumentSize(clonedElement.ownerDocument)
7762 - : parseBounds(context, clonedElement), width = _a.width, height = _a.height, left = _a.left, top = _a.top;
7763 - backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);
7011 + container = _b.sent();
7012 + documentBackgroundColor = ownerDocument.documentElement
7013 + ? parseColor$1(getComputedStyle(ownerDocument.documentElement).backgroundColor)
7014 + : COLORS.TRANSPARENT;
7015 + bodyBackgroundColor = ownerDocument.body
7016 + ? parseColor$1(getComputedStyle(ownerDocument.body).backgroundColor)
7017 + : COLORS.TRANSPARENT;
7018 + bgColor = opts.backgroundColor;
7019 + defaultBackgroundColor = typeof bgColor === 'string' ? parseColor$1(bgColor) : bgColor === null ? COLORS.TRANSPARENT : 0xffffffff;
7020 + backgroundColor = element === ownerDocument.documentElement
7021 + ? isTransparent(documentBackgroundColor)
7022 + ? isTransparent(bodyBackgroundColor)
7023 + ? defaultBackgroundColor
7024 + : bodyBackgroundColor
7025 + : documentBackgroundColor
7026 + : defaultBackgroundColor;
7764 7027 renderOptions = {
7765 - canvas: opts.canvas,
7028 + id: instanceName,
7029 + cache: options.cache,
7030 + canvas: options.canvas,
7766 7031 backgroundColor: backgroundColor,
7767 - scale: (_o = (_m = opts.scale) !== null && _m !== void 0 ? _m : defaultView.devicePixelRatio) !== null && _o !== void 0 ? _o : 1,
7768 - x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left,
7769 - y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top,
7770 - width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width),
7771 - height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height)
7032 + scale: options.scale,
7033 + x: options.x,
7034 + y: options.y,
7035 + scrollX: options.scrollX,
7036 + scrollY: options.scrollY,
7037 + width: options.width,
7038 + height: options.height,
7039 + windowWidth: options.windowWidth,
7040 + windowHeight: options.windowHeight
7772 7041 };
7773 - if (!foreignObjectRendering) return [3 /*break*/, 3];
7774 - context.logger.debug("Document cloned, using foreign object rendering");
7775 - renderer = new ForeignObjectRenderer(context, renderOptions);
7042 + if (!options.foreignObjectRendering) return [3 /*break*/, 3];
7043 + Logger.getInstance(instanceName).debug("Document cloned, using foreign object rendering");
7044 + renderer = new ForeignObjectRenderer(renderOptions);
7776 7045 return [4 /*yield*/, renderer.render(clonedElement)];
7777 7046 case 2:
7778 - canvas = _u.sent();
7047 + canvas = _b.sent();
7779 7048 return [3 /*break*/, 5];
7780 7049 case 3:
7781 - context.logger.debug("Document cloned, element located at " + left + "," + top + " with size " + width + "x" + height + " using computed rendering");
7782 - context.logger.debug("Starting DOM parsing");
7783 - root = parseTree(context, clonedElement);
7050 + Logger.getInstance(instanceName).debug("Document cloned, using computed rendering");
7051 + CacheStorage.attachInstance(options.cache);
7052 + Logger.getInstance(instanceName).debug("Starting DOM parsing");
7053 + root = parseTree(clonedElement);
7054 + CacheStorage.detachInstance();
7784 7055 if (backgroundColor === root.styles.backgroundColor) {
7785 7056 root.styles.backgroundColor = COLORS.TRANSPARENT;
7786 7057 }
7787 - context.logger.debug("Starting renderer for element at " + renderOptions.x + "," + renderOptions.y + " with size " + renderOptions.width + "x" + renderOptions.height);
7788 - renderer = new CanvasRenderer(context, renderOptions);
7058 + Logger.getInstance(instanceName).debug("Starting renderer");
7059 + renderer = new CanvasRenderer(renderOptions);
7789 7060 return [4 /*yield*/, renderer.render(root)];
7790 7061 case 4:
7791 - canvas = _u.sent();
7792 - _u.label = 5;
7062 + canvas = _b.sent();
7063 + _b.label = 5;
7793 7064 case 5:
7794 - if ((_t = opts.removeContainer) !== null && _t !== void 0 ? _t : true) {
7065 + if (options.removeContainer === true) {
7795 7066 if (!DocumentCloner.destroy(container)) {
7796 - context.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore");
7067 + Logger.getInstance(instanceName).error("Cannot detach cloned iframe as it is not in the DOM anymore");
7797 7068 }
7798 7069 }
7799 - context.logger.debug("Finished rendering");
7070 + Logger.getInstance(instanceName).debug("Finished rendering");
7071 + Logger.destroy(instanceName);
7072 + CacheStorage.destroy(instanceName);
7800 7073 return [2 /*return*/, canvas];
7801 7074 }
7802 7075 });
7803 7076 }); };
7804 - var parseBackgroundColor = function (context, element, backgroundColorOverride) {
7805 - var ownerDocument = element.ownerDocument;
7806 - // http://www.w3.org/TR/css3-background/#special-backgrounds
7807 - var documentBackgroundColor = ownerDocument.documentElement
7808 - ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor)
7809 - : COLORS.TRANSPARENT;
7810 - var bodyBackgroundColor = ownerDocument.body
7811 - ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor)
7812 - : COLORS.TRANSPARENT;
7813 - var defaultBackgroundColor = typeof backgroundColorOverride === 'string'
7814 - ? parseColor(context, backgroundColorOverride)
7815 - : backgroundColorOverride === null
7816 - ? COLORS.TRANSPARENT
7817 - : 0xffffffff;
7818 - return element === ownerDocument.documentElement
7819 - ? isTransparent(documentBackgroundColor)
7820 - ? isTransparent(bodyBackgroundColor)
7821 - ? defaultBackgroundColor
7822 - : bodyBackgroundColor
7823 - : documentBackgroundColor
7824 - : defaultBackgroundColor;
7825 - };
7826 7077
7827 7078 return html2canvas;
7828 7079
7829 -})));
7830 -//# sourceMappingURL=html2canvas.js.map
7080 +}));
7081 +//# sourceMappingURL=html2canvas.js.map