@vouchfor/embeds 0.0.0-experiment.8c5a3f8 → 0.0.0-experiment.8cafed9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. package/dist/es/browser-DfO9Pnu7.js +921 -0
  2. package/dist/es/browser-DfO9Pnu7.js.map +1 -0
  3. package/dist/es/embeds.js +1 -1599
  4. package/dist/es/embeds.js.map +1 -1
  5. package/dist/es/index-5G8orrrP.js +2609 -0
  6. package/dist/es/index-5G8orrrP.js.map +1 -0
  7. package/dist/es/src/components/DialogEmbed/DialogOverlay.d.ts +20 -0
  8. package/dist/es/src/components/DialogEmbed/DialogPortal.d.ts +36 -0
  9. package/dist/es/src/components/DialogEmbed/index.d.ts +38 -0
  10. package/dist/es/src/components/PlayerEmbed/controllers/event-forwarder.d.ts +15 -0
  11. package/dist/es/src/components/{Embed → PlayerEmbed}/controllers/fetcher.d.ts +5 -4
  12. package/dist/es/src/components/{Embed/controllers/tracking.d.ts → PlayerEmbed/controllers/tracking/index.d.ts} +14 -11
  13. package/dist/es/src/components/PlayerEmbed/controllers/tracking/utils.d.ts +17 -0
  14. package/dist/es/src/components/{Embed → PlayerEmbed}/index.d.ts +28 -21
  15. package/dist/es/src/components/PlayerEmbed/tests/data.d.ts +3 -0
  16. package/dist/es/src/index.d.ts +2 -1
  17. package/dist/iife/dialog-embed/browser-DCzTItVw.js +429 -0
  18. package/dist/iife/dialog-embed/browser-DCzTItVw.js.map +1 -0
  19. package/dist/iife/dialog-embed/embed.iife.js +1750 -0
  20. package/dist/iife/dialog-embed/embed.iife.js.map +1 -0
  21. package/dist/iife/dialog-embed/embed.js +5 -0
  22. package/dist/iife/dialog-embed/embed.js.map +1 -0
  23. package/dist/iife/dialog-embed/index-CgdXxP5z.js +27698 -0
  24. package/dist/iife/dialog-embed/index-CgdXxP5z.js.map +1 -0
  25. package/dist/iife/dialog-embed/src/components/DialogEmbed/DialogOverlay.d.ts +20 -0
  26. package/dist/iife/dialog-embed/src/components/DialogEmbed/DialogPortal.d.ts +36 -0
  27. package/dist/iife/dialog-embed/src/components/DialogEmbed/index.d.ts +38 -0
  28. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/event-forwarder.d.ts +15 -0
  29. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/fetcher.d.ts +14 -0
  30. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/tracking/index.d.ts +36 -0
  31. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/tracking/utils.d.ts +17 -0
  32. package/dist/iife/dialog-embed/src/components/PlayerEmbed/index.d.ts +74 -0
  33. package/dist/iife/dialog-embed/src/components/PlayerEmbed/tests/data.d.ts +3 -0
  34. package/dist/iife/dialog-embed/src/index.d.ts +2 -0
  35. package/dist/iife/dialog-embed/src/utils/env.d.ts +12 -0
  36. package/dist/iife/dialog-embed/src/utils/events.d.ts +2 -0
  37. package/dist/iife/embeds.iife.js +661 -456
  38. package/dist/iife/embeds.iife.js.map +1 -1
  39. package/dist/iife/player-embed/browser-BBSMddCs.js +429 -0
  40. package/dist/iife/player-embed/browser-BBSMddCs.js.map +1 -0
  41. package/dist/iife/player-embed/embed.iife.js +1612 -0
  42. package/dist/iife/player-embed/embed.iife.js.map +1 -0
  43. package/dist/iife/player-embed/embed.js +5 -0
  44. package/dist/iife/player-embed/embed.js.map +1 -0
  45. package/dist/iife/player-embed/index-BGZl_iqR.js +27255 -0
  46. package/dist/iife/player-embed/index-BGZl_iqR.js.map +1 -0
  47. package/dist/iife/player-embed/src/components/DialogEmbed/DialogOverlay.d.ts +20 -0
  48. package/dist/iife/player-embed/src/components/DialogEmbed/DialogPortal.d.ts +36 -0
  49. package/dist/iife/player-embed/src/components/DialogEmbed/index.d.ts +38 -0
  50. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/event-forwarder.d.ts +15 -0
  51. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/fetcher.d.ts +14 -0
  52. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/tracking/index.d.ts +36 -0
  53. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/tracking/utils.d.ts +17 -0
  54. package/dist/iife/player-embed/src/components/PlayerEmbed/index.d.ts +74 -0
  55. package/dist/iife/player-embed/src/components/PlayerEmbed/tests/data.d.ts +3 -0
  56. package/dist/iife/player-embed/src/index.d.ts +2 -0
  57. package/dist/iife/player-embed/src/utils/env.d.ts +12 -0
  58. package/dist/iife/player-embed/src/utils/events.d.ts +2 -0
  59. package/package.json +43 -31
  60. package/src/components/DialogEmbed/Dialog.stories.ts +91 -0
  61. package/src/components/DialogEmbed/DialogOverlay.ts +131 -0
  62. package/src/components/DialogEmbed/DialogPortal.ts +126 -0
  63. package/src/components/DialogEmbed/index.ts +97 -0
  64. package/src/components/{Embed/Embed.stories.ts → PlayerEmbed/PlayerEmbed.stories.ts} +26 -14
  65. package/src/components/{Embed → PlayerEmbed}/controllers/event-forwarder.ts +6 -5
  66. package/src/components/{Embed → PlayerEmbed}/controllers/fetcher.ts +33 -14
  67. package/src/components/{Embed/controllers/tracking.ts → PlayerEmbed/controllers/tracking/index.ts} +47 -115
  68. package/src/components/PlayerEmbed/controllers/tracking/utils.ts +95 -0
  69. package/src/components/{Embed → PlayerEmbed}/index.ts +71 -27
  70. package/src/components/PlayerEmbed/tests/PlayerEmbed.spec.ts +80 -0
  71. package/src/components/PlayerEmbed/tests/data.ts +183 -0
  72. package/src/index.ts +2 -1
@@ -0,0 +1,2609 @@
1
+ import { css, LitElement, html } from 'lit';
2
+ import { property, state, customElement } from 'lit/decorators.js';
3
+ import { ifDefined } from 'lit/directives/if-defined.js';
4
+ import { createRef, ref } from 'lit/directives/ref.js';
5
+ import { Task } from '@lit/task';
6
+ import { v4 } from 'uuid';
7
+ import '@vouchfor/media-player';
8
+ import { styleMap } from 'lit/directives/style-map.js';
9
+ import { classMap } from 'lit/directives/class-map.js';
10
+ import '@a11y/focus-trap';
11
+
12
+ function forwardEvent(type, fromElement, toElement) {
13
+ function forwarder(event) {
14
+ toElement.dispatchEvent(new CustomEvent(event.type, event));
15
+ }
16
+ fromElement.addEventListener(type, forwarder);
17
+ return () => {
18
+ fromElement.removeEventListener(type, forwarder);
19
+ };
20
+ }
21
+
22
+ class EventForwardController {
23
+ constructor(host, events) {
24
+ this._events = [];
25
+ this._cleanup = [];
26
+ this._forwardElementRef = createRef();
27
+ this.host = host;
28
+ this._events = events;
29
+ host.addController(this);
30
+ }
31
+ register() {
32
+ return ref(this._forwardElementRef);
33
+ }
34
+ hostConnected() {
35
+ requestAnimationFrame(() => {
36
+ this._events.forEach((event) => {
37
+ if (this._forwardElementRef.value) {
38
+ this._cleanup.push(forwardEvent(event, this._forwardElementRef.value, this.host));
39
+ }
40
+ });
41
+ });
42
+ }
43
+ hostDisconnected() {
44
+ this._cleanup.forEach((fn) => {
45
+ fn();
46
+ });
47
+ this._cleanup = [];
48
+ }
49
+ }
50
+
51
+ const devVideoUrl = "https://d2rxhdlm2q91uk.cloudfront.net";
52
+ const stagingVideoUrl = "https://d1ix11aj5kfygl.cloudfront.net";
53
+ const prodVideoUrl = "https://d157jlwnudd93d.cloudfront.net";
54
+ const devPublicApiUrl = "https://bshyfw4h5a.execute-api.ap-southeast-2.amazonaws.com/dev";
55
+ const stagingPublicApiUrl = "https://gyzw7rpbq3.execute-api.ap-southeast-2.amazonaws.com/staging";
56
+ const prodPublicApiUrl = "https://vfcjuim1l3.execute-api.ap-southeast-2.amazonaws.com/prod";
57
+ const localEmbedApiUrl = "http://localhost:6060/v2";
58
+ const devEmbedApiUrl = "https://embed-dev.vouchfor.com/v2";
59
+ const stagingEmbedApiUrl = "https://embed-staging.vouchfor.com/v2";
60
+ const prodEmbedApiUrl = "https://embed.vouchfor.com/v2";
61
+ function getEnvUrls(env) {
62
+ if (!["local", "dev", "staging", "prod"].includes(env)) {
63
+ throw new Error(`Unknown environment: ${env}`);
64
+ }
65
+ if (env === "local") {
66
+ return {
67
+ videoUrl: devVideoUrl,
68
+ publicApiUrl: devPublicApiUrl,
69
+ embedApiUrl: localEmbedApiUrl
70
+ };
71
+ }
72
+ if (env === "dev") {
73
+ return {
74
+ videoUrl: devVideoUrl,
75
+ publicApiUrl: devPublicApiUrl,
76
+ embedApiUrl: devEmbedApiUrl
77
+ };
78
+ }
79
+ if (env === "staging") {
80
+ return {
81
+ videoUrl: stagingVideoUrl,
82
+ publicApiUrl: stagingPublicApiUrl,
83
+ embedApiUrl: stagingEmbedApiUrl
84
+ };
85
+ }
86
+ if (env === "prod") {
87
+ return {
88
+ videoUrl: prodVideoUrl,
89
+ publicApiUrl: prodPublicApiUrl,
90
+ embedApiUrl: prodEmbedApiUrl
91
+ };
92
+ }
93
+ }
94
+
95
+ class FetcherController {
96
+ constructor(host) {
97
+ this._fetching = false;
98
+ this.getVouch = async (env, apiKey, vouchId) => {
99
+ const { embedApiUrl } = getEnvUrls(env);
100
+ const cacheCheck = v4();
101
+ const res = await fetch(`${embedApiUrl}/vouches/${vouchId}`, {
102
+ method: "GET",
103
+ headers: [
104
+ ["X-Api-Key", apiKey],
105
+ ["X-Cache-Check", cacheCheck]
106
+ ]
107
+ });
108
+ const vouch = await res.json();
109
+ this.host.dispatchEvent(new CustomEvent("vouch:loaded", { detail: vouch?.id }));
110
+ const resCacheCheck = res?.headers?.get("X-Cache-Check");
111
+ if (resCacheCheck !== cacheCheck) {
112
+ fetch(`${embedApiUrl}/vouches/${vouchId}`, {
113
+ method: "GET",
114
+ headers: [
115
+ ["X-Api-Key", apiKey],
116
+ ["Cache-Control", "max-age=0"]
117
+ ]
118
+ });
119
+ }
120
+ return vouch;
121
+ };
122
+ this.getTemplate = async (env, apiKey, templateId) => {
123
+ const { embedApiUrl } = getEnvUrls(env);
124
+ const cacheCheck = v4();
125
+ const res = await fetch(`${embedApiUrl}/templates/${templateId}`, {
126
+ method: "GET",
127
+ headers: [
128
+ ["X-Api-Key", apiKey],
129
+ ["X-Cache-Check", cacheCheck]
130
+ ]
131
+ });
132
+ const template = await res.json();
133
+ const resCacheCheck = res?.headers?.get("X-Cache-Check");
134
+ if (resCacheCheck !== cacheCheck) {
135
+ fetch(`${embedApiUrl}/templates/${templateId}`, {
136
+ method: "GET",
137
+ headers: [
138
+ ["X-Api-Key", apiKey],
139
+ ["Cache-Control", "max-age=0"]
140
+ ]
141
+ });
142
+ }
143
+ return template;
144
+ };
145
+ this.host = host;
146
+ new Task(
147
+ this.host,
148
+ async ([env, apiKey, data, vouchId, templateId]) => {
149
+ try {
150
+ host.vouch = void 0;
151
+ host.template = void 0;
152
+ if (data) {
153
+ let template;
154
+ if (templateId) {
155
+ this.fetching = true;
156
+ template = await this.getTemplate(env, apiKey, templateId);
157
+ }
158
+ this._vouch = data;
159
+ host.template = template ?? data?.settings?.template?.instance;
160
+ } else if (vouchId) {
161
+ this.fetching = true;
162
+ const [vouch, template] = await Promise.all([
163
+ this.getVouch(env, apiKey, vouchId),
164
+ templateId ? this.getTemplate(env, apiKey, templateId) : null
165
+ ]);
166
+ this._vouch = vouch;
167
+ host.template = template ?? vouch?.settings?.template?.instance;
168
+ }
169
+ } finally {
170
+ this.fetching = false;
171
+ }
172
+ },
173
+ () => [host.env, host.apiKey, host.data, host.vouchId, host.templateId]
174
+ );
175
+ new Task(
176
+ this.host,
177
+ ([vouch, questions]) => {
178
+ host.vouch = vouch ? {
179
+ ...vouch,
180
+ questions: {
181
+ items: vouch?.questions.items.filter((_, index) => !questions?.length || questions?.includes(index + 1))
182
+ }
183
+ } : void 0;
184
+ },
185
+ () => [this._vouch, host.questions]
186
+ );
187
+ }
188
+ set fetching(value) {
189
+ if (this._fetching !== value) {
190
+ this._fetching = value;
191
+ this.host.requestUpdate();
192
+ }
193
+ }
194
+ get fetching() {
195
+ return this._fetching;
196
+ }
197
+ }
198
+
199
+ const copyProperty$1 = (to, from, property, ignoreNonConfigurable) => {
200
+ // `Function#length` should reflect the parameters of `to` not `from` since we keep its body.
201
+ // `Function#prototype` is non-writable and non-configurable so can never be modified.
202
+ if (property === 'length' || property === 'prototype') {
203
+ return;
204
+ }
205
+
206
+ // `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.
207
+ if (property === 'arguments' || property === 'caller') {
208
+ return;
209
+ }
210
+
211
+ const toDescriptor = Object.getOwnPropertyDescriptor(to, property);
212
+ const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);
213
+
214
+ if (!canCopyProperty$1(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {
215
+ return;
216
+ }
217
+
218
+ Object.defineProperty(to, property, fromDescriptor);
219
+ };
220
+
221
+ // `Object.defineProperty()` throws if the property exists, is not configurable and either:
222
+ // - one its descriptors is changed
223
+ // - it is non-writable and its value is changed
224
+ const canCopyProperty$1 = function (toDescriptor, fromDescriptor) {
225
+ return toDescriptor === undefined || toDescriptor.configurable || (
226
+ toDescriptor.writable === fromDescriptor.writable
227
+ && toDescriptor.enumerable === fromDescriptor.enumerable
228
+ && toDescriptor.configurable === fromDescriptor.configurable
229
+ && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value)
230
+ );
231
+ };
232
+
233
+ const changePrototype$1 = (to, from) => {
234
+ const fromPrototype = Object.getPrototypeOf(from);
235
+ if (fromPrototype === Object.getPrototypeOf(to)) {
236
+ return;
237
+ }
238
+
239
+ Object.setPrototypeOf(to, fromPrototype);
240
+ };
241
+
242
+ const wrappedToString$1 = (withName, fromBody) => `/* Wrapped ${withName}*/\n${fromBody}`;
243
+
244
+ const toStringDescriptor$1 = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');
245
+ const toStringName$1 = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');
246
+
247
+ // We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.
248
+ // We use `bind()` instead of a closure for the same reason.
249
+ // Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.
250
+ const changeToString$1 = (to, from, name) => {
251
+ const withName = name === '' ? '' : `with ${name.trim()}() `;
252
+ const newToString = wrappedToString$1.bind(null, withName, from.toString());
253
+ // Ensure `to.toString.toString` is non-enumerable and has the same `same`
254
+ Object.defineProperty(newToString, 'name', toStringName$1);
255
+ const {writable, enumerable, configurable} = toStringDescriptor$1; // We destructue to avoid a potential `get` descriptor.
256
+ Object.defineProperty(to, 'toString', {value: newToString, writable, enumerable, configurable});
257
+ };
258
+
259
+ function mimicFunction$1(to, from, {ignoreNonConfigurable = false} = {}) {
260
+ const {name} = to;
261
+
262
+ for (const property of Reflect.ownKeys(from)) {
263
+ copyProperty$1(to, from, property, ignoreNonConfigurable);
264
+ }
265
+
266
+ changePrototype$1(to, from);
267
+ changeToString$1(to, from, name);
268
+
269
+ return to;
270
+ }
271
+
272
+ const cacheStore$1 = new WeakMap();
273
+ const cacheTimerStore = new WeakMap();
274
+ /**
275
+ [Memoize](https://en.wikipedia.org/wiki/Memoization) functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input.
276
+
277
+ @param fn - The function to be memoized.
278
+
279
+ @example
280
+ ```
281
+ import memoize from 'memoize';
282
+
283
+ let index = 0;
284
+ const counter = () => ++index;
285
+ const memoized = memoize(counter);
286
+
287
+ memoized('foo');
288
+ //=> 1
289
+
290
+ // Cached as it's the same argument
291
+ memoized('foo');
292
+ //=> 1
293
+
294
+ // Not cached anymore as the arguments changed
295
+ memoized('bar');
296
+ //=> 2
297
+
298
+ memoized('bar');
299
+ //=> 2
300
+ ```
301
+ */
302
+ function memoize(fn, { cacheKey, cache = new Map(), maxAge, } = {}) {
303
+ if (maxAge === 0) {
304
+ return fn;
305
+ }
306
+ if (typeof maxAge === 'number') {
307
+ const maxSetIntervalValue = 2147483647;
308
+ if (maxAge > maxSetIntervalValue) {
309
+ throw new TypeError(`The \`maxAge\` option cannot exceed ${maxSetIntervalValue}.`);
310
+ }
311
+ if (maxAge < 0) {
312
+ throw new TypeError('The `maxAge` option should not be a negative number.');
313
+ }
314
+ }
315
+ const memoized = function (...arguments_) {
316
+ const key = cacheKey ? cacheKey(arguments_) : arguments_[0];
317
+ const cacheItem = cache.get(key);
318
+ if (cacheItem) {
319
+ return cacheItem.data;
320
+ }
321
+ const result = fn.apply(this, arguments_);
322
+ cache.set(key, {
323
+ data: result,
324
+ maxAge: maxAge ? Date.now() + maxAge : Number.POSITIVE_INFINITY,
325
+ });
326
+ if (typeof maxAge === 'number' && maxAge !== Number.POSITIVE_INFINITY) {
327
+ const timer = setTimeout(() => {
328
+ cache.delete(key);
329
+ }, maxAge);
330
+ timer.unref?.();
331
+ const timers = cacheTimerStore.get(fn) ?? new Set();
332
+ timers.add(timer);
333
+ cacheTimerStore.set(fn, timers);
334
+ }
335
+ return result;
336
+ };
337
+ mimicFunction$1(memoized, fn, {
338
+ ignoreNonConfigurable: true,
339
+ });
340
+ cacheStore$1.set(memoized, cache);
341
+ return memoized;
342
+ }
343
+
344
+ var loadYoga = (() => {
345
+ var _scriptDir = import.meta.url;
346
+
347
+ return (
348
+ function(loadYoga) {
349
+ loadYoga = loadYoga || {};
350
+
351
+
352
+ var h;h||(h=typeof loadYoga !== 'undefined' ? loadYoga : {});var aa,ca;h.ready=new Promise(function(a,b){aa=a;ca=b;});var da=Object.assign({},h),q="";"undefined"!=typeof document&&document.currentScript&&(q=document.currentScript.src);_scriptDir&&(q=_scriptDir);0!==q.indexOf("blob:")?q=q.substr(0,q.replace(/[?#].*/,"").lastIndexOf("/")+1):q="";var ea=h.print||console.log.bind(console),v=h.printErr||console.warn.bind(console);Object.assign(h,da);da=null;var w;h.wasmBinary&&(w=h.wasmBinary);
353
+ h.noExitRuntime||!0;"object"!=typeof WebAssembly&&x("no native wasm support detected");var fa,ha=!1;function z(a,b,c){c=b+c;for(var d="";!(b>=c);){var e=a[b++];if(!e)break;if(e&128){var f=a[b++]&63;if(192==(e&224))d+=String.fromCharCode((e&31)<<6|f);else {var g=a[b++]&63;e=224==(e&240)?(e&15)<<12|f<<6|g:(e&7)<<18|f<<12|g<<6|a[b++]&63;65536>e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023));}}else d+=String.fromCharCode(e);}return d}
354
+ var ia,ja,A,C,ka,D,E,la,ma;function na(){var a=fa.buffer;ia=a;h.HEAP8=ja=new Int8Array(a);h.HEAP16=C=new Int16Array(a);h.HEAP32=D=new Int32Array(a);h.HEAPU8=A=new Uint8Array(a);h.HEAPU16=ka=new Uint16Array(a);h.HEAPU32=E=new Uint32Array(a);h.HEAPF32=la=new Float32Array(a);h.HEAPF64=ma=new Float64Array(a);}var oa,pa=[],qa=[],ra=[];function sa(){var a=h.preRun.shift();pa.unshift(a);}var F=0,G=null;
355
+ function x(a){if(h.onAbort)h.onAbort(a);a="Aborted("+a+")";v(a);ha=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");ca(a);throw a;}function ua(a){return a.startsWith("data:application/octet-stream;base64,")}var H;H="data:application/octet-stream;base64,AGFzbQEAAAABrAM2YAF/AGABfwF/YAJ/fwBgA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWAAAGADf398AGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAJ/fwF9YAV/f39/fwBgAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBH9/fX8AYAZ/fH9/f38Bf2ACf30AYAR/fHx/AGAIf39/f39/f38AYA1/f39/f39/f39/f39/AGAKf39/f39/f39/fwBgBX9/f39/AXxgBH9/fX0BfWAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gBn9/fX1/fwBgAn5/AX9gA399fQF9YAN/f30BfWABfAF8YAN/fHwAYAV/f319fQBgBX9/fX19AX1gDX99f31/fX99fX19fX8Bf2ALf39/f39/f319fX0AYAh/f39/f399fQBgBH9/fn4AYAd/f39/f39/AX9gAnx/AXxgBX9/fHx/AGADf39/AXxgBH9/f3wAYAN/f30AYAZ/f31/fX8BfwK1AR4BYQFhABwBYQFiAAMBYQFjAAgBYQFkABUBYQFlABIBYQFmAB0BYQFnAAABYQFoAB4BYQFpAAMBYQFqAAABYQFrABYBYQFsAAoBYQFtAAUBYQFuAAMBYQFvAAIBYQFwABYBYQFxAAYBYQFyAAABYQFzAB8BYQF0AAoBYQF1AA0BYQF2ABUBYQF3AAEBYQF4AAMBYQF5ABcBYQF6AAEBYQFBAAIBYQFCABIBYQFDAAIBYQFEAAADiwKJAgEDEQ8PBwcHBwgAAwoSBiAKBgIGIQcYDwMTIgUGIxMHBwMkAhcDAwoKGBETCg8KAwMBCAEAAAUmAQEGBwEDAgIJDAAAJwgABQAHBQAoKQAAASoHACsBLAcHLQMuCAUKAS8NMAMBCAEAAQIGCgIBAgEFAgAFCAICAgIAAQ4BAQUCAhoDDg0NBhQBAhkUBgEIARAAAAAFMQ8yDAUGCTMFAQMFDg4ONAEDAQEBAwYBATUBAgwMDAILCwsLCwsbAQAAAAIAEAIFAQECAwERAwwLAgICAgICCwsCAQEDAQEBAQEBAwEJAgkJCQQEBAQEBAQEBAAEBAAEBAQEAAQEBAICAgkJAgICAgICCQkEBwFwAcwB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AkACQCAELQAMQQFrDgIAAQILIAQqAgghBQwBCyAEKgIIIAOUQwrXIzyUIQULIARBEGokACAFQwAAAAAgBSAFWxsLcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QaAkaigCACACEC5DAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akHuAGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDQDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALcAyIADQALCyADQRBqJAALhQECA38BfgJAIABCgICAgBBUBEAgACEFDAELA0AgAUEBayIBIABCCoAiBUL2AX4gAHynQTByOgAAIABC/////58BViECIAUhACACDQALCyAFpyICBEADQCABQQFrIgEgAkEKbiIDQfYBbCACakEwcjoAACACQQlLIQQgAyECIAQNAAsLIAELNwECf0EEEB4iAiABNgIAQQQQHiIDIAE2AgBB/TkgAEGeOkG6J0G3ASACQZ46Qb4nQbgBIAMQBwteAQF/IABBADYCDCAAIAM2AhACQCABBEAgAUGAgICABE8NASABQQJ0EB4hBAsgACAENgIAIAAgBCACQQJ0aiICNgIIIAAgBCABQQJ0ajYCDCAAIAI2AgQgAA8LEFAAC0cBAX8gAi8ABiIDQQdxBEAgACABQegAaiADEB8PCyABQegAaiEBIAIvAA4iA0EHcQRAIAAgASADEB8PCyAAIAEgAi8AEBAfC0cBAX8gAi8AAiIDQQdxBEAgACABQegAaiADEB8PCyABQegAaiEBIAIvAA4iA0EHcQRAIAAgASADEB8PCyAAIAEgAi8AEBAfC3sAAkACQAJAAkAgA0EBaw4CAAECCyACLwAKIgNBB3FFDQEMAgsgAi8ACCIDQQdxRQ0ADAELIAIvAAQiA0EHcQRADAELIAFB6ABqIQEgAi8ADCID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BQUgAC0AFUEEdgtBBUYEQCAALQAUQQhxDQULIAEtAABBAnENBCACIAEgAhshAgsgBEEBaiIEIAdHDQELCyACDQILIAAqApQDIQgMAgsgASECCyACEEkgAioCnAOSIQgLIANBEGokACAIC1AAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBMGoQRA8LIAAgASABQTBqIAMQRQ8LIAAgASABQTBqEEMPCxAnAAsgACABIAFBMGogAxBGC3kCAX8BfSMAQRBrIgMkACADQQhqIAAgAUECdEGwJGooAgAgAhBMQwAAwH8hBAJAAkACQCADLQAMQQFrDgIAAQILIAMqAgghBAwBCyADKgIIQwAAAACUQwrXIzyUIQQLIANBEGokACAEQwAAAACXQwAAAAAgBCAEWxsLVAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUHCAGoQRA8LIAAgASABQcIAaiADEEUPCyAAIAEgAUHCAGoQQw8LECcACyAAIAEgAUHCAGogAxBGC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQfYAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQNANAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAtwDIgANAAsLIANBEGokAAvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akHyAGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDQDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALcAyIADQALCyADQRBqJAALCgAgAEEwa0EKSQsFABACAAsEACAACxQAIAAEQCAAIAAoAgAoAgQRAAALCysBAX8gACgCDCIBBEAgARAoCyAAKAIAIgEEQCAAIAE2AgQgARAoCyAAECgL8QMB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OgAAQQELC8QCAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBCWsOEgAKCwwKCwIDBAUMCwwMCgsHCAkLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LAAsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsACyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAErAwA5AwAPCyAAIAIgAxECAAsPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwALXQEEfyAAKAIAIQIDQCACLAAAIgMQTwRAQX8hBCAAIAJBAWoiAjYCACABQcyZs+YATQR/QX8gA0EwayIDIAFBCmwiBGogAyAEQf////8Hc0obBSAECyEBDAELCyABC6gUAhJ/AX4jAEHQAGsiCCQAIAggATYCTCAIQTdqIRcgCEE4aiEUAkACQAJAAkADQCABIQ0gByAOQf////8Hc0oNASAHIA5qIQ4CQAJAAkAgDSIHLQAAIgkEQANAAkACQCAJQf8BcSIBRQRAIAchAQwBCyABQSVHDQEgByEJA0AgCS0AAUElRwRAIAkhAQwCCyAHQQFqIQcgCS0AAiEKIAlBAmoiASEJIApBJUYNAAsLIAcgDWsiByAOQf////8HcyIYSg0HIAAEQCAAIA0gBxApCyAHDQYgCCABNgJMIAFBAWohB0F/IRICQCABLAABIgoQT0UNACABLQACQSRHDQAgAUEDaiEHIApBMGshEkEBIRULIAggBzYCTEEAIQwCQCAHLAAAIglBIGsiAUEfSwRAIAchCgwBCyAHIQpBASABdCIBQYnRBHFFDQADQCAIIAdBAWoiCjYCTCABIAxyIQwgBywAASIJQSBrIgFBIE8NASAKIQdBASABdCIBQYnRBHENAAsLAkAgCUEqRgRAAn8CQCAKLAABIgEQT0UNACAKLQACQSRHDQAgAUECdCAEakHAAWtBCjYCACAKQQNqIQlBASEVIAosAAFBA3QgA2pBgANrKAIADAEL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4AMiAwRAIAAgAzYC5AMgAxAoCyAAIAEoAuADNgLgAyAAIAEoAuQDNgLkAyAAIAEoAugDNgLoAyABQQA2AugDIAFCADcC4AMgACABKQL0AzcC9AMgACABKQLsAzcC7AMgACABKAL8AzYC/AMgASgClAEhACABQQA2ApQBIAAEQCAAEFMLIAJBoARqJAAPCyACQYIcNgIQIAAgAkEQahAwECcACyACQcsRNgIAIAAgAhAwECcACwoAQQwQHiAAEGULCgBBDBAeQQAQZQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhALGQAgAUH/AXEEQBACAAsgACgCACgCDEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLDAAgACgCACABNgIQC3oBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGBFBEAgAkHdEzYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQfguQZwkIAIQOhoMAQsgAEEAQQVBnCQgAiAAKAIEEQ0AGgsgA0EQaiQAECcACyAAIAE4AhQgAkEQaiQACyMAIAFB/wFxBEAQAgALIAAoAgAiACAAKAIMQX5xIAJyNgIMCz4BAn9BBBAeIQFBHBAeIgBCgICA/AM3AhQgAEIANwIMIABBADoACCAAQQA2AgAgAEEDNgIEIAEgADYCACABCyMAIAJBBUdBACACG0UEQEH4LiADIAQQOg8LQYgwIAMgBBA6CyIBAX4gASACrSADrUIghoQgBCAAERQAIgVCIIinJAEgBacLqAEBBX8gACgCVCIDKAIAIQUgAygCBCIEIAAoAhQgACgCHCIHayIGIAQgBkkbIgYEQCAFIAcgBhAsGiADIAMoAgAgBmoiBTYCACADIAMoAgQgBmsiBDYCBAsgBCACIAIgBEsbIgQEQCAFIAEgBBAsGiADIAMoAgAgBGoiBTYCACADIAMoAgQgBGs2AgQLIAVBADoAACAAIAAoAiwiATYCHCAAIAE2AhQgAgsEAEIACwQAQQALigUCBn4CfyABIAEoAgBBB2pBeHEiAUEQajYCACAAIQkgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICA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AAAAAPBBYyAIRAAAAAAAAAAAZnEEQCAIqwwBC0EACyEBIAYoAgwhAyAAIAEpAwA3AwAgACABKQMINwMIIAMQESAGQTBqJAALCQAgABCEARAoCwwAIAAoAghB+hsQXAsJACAAEIYBECgLVQECfyMAQTBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxECAEEwEB4gAkEwECwhACACQTBqJAAgAAs7AQF/IAEgACgCBCIFQQF1aiEBIAAoAgAhACABIAIgAyAEIAVBAXEEfyABKAIAIABqKAIABSAACxEbAAs3AQF/IAEgACgCBCIDQQF1aiEBIAAoAgAhACABIAIgA0EBcQR/IAEoAgAgAGooAgAFIAALEREACzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRDAALNQEBfyABIAAoAgQiAkEBdWohASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxECAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCQALCQAgASAAEQEACwUAQf85Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAvCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRGgALBQBB+jkL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QRhqIgEgBUcNAAsgAkKAgID8i4CAwL9/NwLkASACQoGAgIAQNwLcASACQoCAgPyLgIDAv383AtQBIAJCgICA/oeAgOD/ADcD+AEgAkKAgID+h4CA4P8ANwPwASACIAItAOwBQfgBcToA7AEgAkGAAmpBAEHAABAvGiADQZgBaiACQcACECwaIANBADYC3AMLA0AgAC0AACIBQQRxDQEgACABQQRyOgAAIAAoAhAiAQRAIAAgAREAAAsgAEGAgID+BzYCnAEgACgC3AMiAA0ACwsgBEHAAmokAAuyBwEIfyMAQdAAayIHJAAgACgCACEAAkACQCABKAIAIggoAtwDRQRAIAAoAggNASAAKALgAyIBIAJBAnRqIQYCQCAAKALkAyIEIABB6ANqIgMoAgAiBUkEQCAEIAZGBEAgBiAINgIAIAAgBkEEajYC5AMMAgsgBCAEIgJBBGsiAUsEQANAIAIgASgCADYCACACQQRqIQIgAUEEaiIBIARJDQALCyAAIAI2AuQDIAZBBGoiASAERwRAIAQgBCABayIBQXxxayAGIAEQMRoLIAYgCDYCAAwBCyAEIAFrQQJ1QQFqIgRBgICAgARPDQMCQCAHQSBqQf////8DIAUgAWsiAUEBdSIFIAQgBCAFSRsgAUH8////B08bIAIgAxBCIgMoAggiAiADKAIMRw0AIAMoAgQiASADKAIAIgRLBEAgAyABIAEgBGtBAnVBAWpBfm1BAnQiBGogASACIAFrIgEQMSABaiICNgIIIAMgAygCBCAEajYCBAwBCyAHQThqQQEgAiAEa0EBdSACIARGGyIBIAFBAnYgAygCEBBCIgUoAgghBAJ/IAMoAggiAiADKAIEIgFGBEAgBCECIAEMAQsgBCACIAFraiECA0AgBCABKAIANgIAIAFBBGohASAEQQRqIgQgAkcNAAsgAygCCCEBIAMoAgQLIQQgAygCACEJIAMgBSgCADYCACAFIAk2AgAgAyAFKAIENgIEIAUgBDYCBCADIAI2AgggBSABNgIIIAMoAgwhCiADIAUoAgw2AgwgBSAKNgIMIAEgBEcEQCAFIAEgBCABa0EDakF8cWo2AggLIAlFDQAgCRAoIAMoAgghAgsgAiAINgIAIAMgAygCCEEEajYCCCADIAMoAgQgBiAAKALgAyIBayICayABIAIQMTYCBCADKAII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CwsLgQECA38BfSMAQRBrIgMkACAAKAIAIQQCfSACtiIGIAZcBEBBACEAQwAAwH8MAQtBAEECIAZDAACAf1sgBkMAAID/W3IiBRshAEMAAMB/IAYgBRsLIQYgAyAAOgAMIAMgBjgCCCADIAMpAwg3AwAgBCABQf8BcSADEIEBIANBEGokAAt5AgF9An8jAEEQayIEJAAgACgCACEFIAQCfyACtiIDIANcBEBDAADAfyEDQQAMAQtDAADAfyADIANDAACAf1sgA0MAAID/W3IiABshAyAARQs6AAwgBCADOAIIIAQgBCkDCDcDACAFIAFB/wFxIAQQgQEgBEEQaiQACwukJSMAQYAIC8UcT25seSBsZWFmIG5vZGVzIHdpdGggY3VzdG9tIG1lYXN1cmUgZnVuY3Rpb25zIHNob3VsZCBtYW51YWxseSBtYXJrIHRoZW1zZWx2ZXMgYXMgZGlydHkAaXNEaXJ0eQBtYXJrRGlydHkAZGVzdHJveQBzZXREaXNwbGF5AGdldERpc3BsYXkAc2V0RmxleAAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AHNldEZsZXhHcm93AGdldEZsZXhHcm93AHNldE92ZXJmbG93AGdldE92ZXJmbG93AGNhbGN1bGF0ZUxheW91dABnZXRDb21wdXRlZExheW91dAB1bnNpZ25lZCBzaG9ydABnZXRDaGlsZENvdW50AHVuc2lnbmVkIGludABzZXRKdXN0aWZ5Q29udGVudABnZXRKdXN0aWZ5Q29udGVudABhdmFpbGFibGVIZWlnaHQgaXMgaW5kZWZpbml0ZSBzbyBoZWlnaHRTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABhdmFpbGFibGVXaWR0aCBpcyBpbmRlZmluaXRlIHNvIHdpZHRoU2l6aW5nTW9kZSBtdXN0IGJlIFNpemluZ01vZGU6Ok1heENvbnRlbnQAc2V0QWxpZ25Db250ZW50AGdldEFsaWduQ29udGVudABnZXRQYXJlbnQAaW1wbGVtZW50AHNldE1heEhlaWdodFBlcmNlbnQAc2V0SGVpZ2h0UGVyY2VudABzZXRNaW5IZWlnaHRQZXJjZW50AHNldEZsZXhCYXNpc1BlcmNlbnQAc2V0UG9zaXRpb25QZXJjZW50AHNldE1hcmdpblBlcmNlbnQAc2V0TWF4V2lkdGhQZXJjZW50AHNldFdpZHRoUGVyY2VudABzZXRNaW5XaWR0aFBlcmNlbnQAc2V0UGFkZGluZ1BlcmNlbnQAaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQb2ludCB8fCBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6OlBlcmNlbnQAY3JlYXRlRGVmYXVsdAB1bml0AHJpZ2h0AGhlaWdodABzZXRNYXhIZWlnaHQAZ2V0TWF4SGVpZ2h0AHNldEhlaWdodABnZXRIZWlnaHQAc2V0TWluSGVpZ2h0AGdldE1pbkhlaWdodABnZXRDb21wdXRlZEhlaWdodABnZXRDb21wdXRlZFJpZ2h0AGxlZnQAZ2V0Q29tcHV0ZWRMZWZ0AHJlc2V0AF9fZGVzdHJ1Y3QAZmxvYXQAdWludDY0X3QAdXNlV2ViRGVmYXVsdHMAc2V0VXNlV2ViRGVmYXVsdHMAc2V0QWxpZ25JdGVtcwBnZXRBbGlnbkl0ZW1zAHNldEZsZXhCYXNpcwBnZXRGbGV4QmFzaXMAQ2Fubm90IGdldCBsYXlvdXQgcHJvcGVydGllcyBvZiBtdWx0aS1lZGdlIHNob3J0aGFuZHMAc2V0UG9pbnRTY2FsZUZhY3RvcgBNZWFzdXJlQ2FsbGJhY2tXcmFwcGVyAERpcnRpZWRDYWxsYmFja1dyYXBwZXIAQ2Fubm90IHJlc2V0IGEgbm9kZSBzdGlsbCBhdHRhY2hlZCB0byBhIG93bmVyAHNldEJvcmRlcgBnZXRCb3JkZXIAZ2V0Q29tcHV0ZWRCb3JkZXIAZ2V0TnVtYmVyAGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6TnVtYmVyAHVuc2lnbmVkIGNoYXIAdG9wAGdldENvbXB1dGVkVG9wAHNldEZsZXhXcmFwAGdldEZsZXhXcmFwAHNldEdhcABnZXRHYXAAJXAAc2V0SGVpZ2h0QXV0bwBzZXRGbGV4QmFzaXNBdXRvAHNldE1hcmdpbkF1dG8Ac2V0V2lkdGhBdXRvAFNjYWxlIGZhY3RvciBzaG91bGQgbm90IGJlIGxlc3MgdGhhbiB6ZXJvAHNldEFzcGVjdFJhdGlvAGdldEFzcGVjdFJhdGlvAHNldFBvc2l0aW9uAGdldFBvc2l0aW9uAG5vdGlmeU9uRGVzdHJ1Y3Rpb24Ac2V0RmxleERpcmVjdGlvbgBnZXRGbGV4RGlyZWN0aW9uAHNldE1hcmdpbgBnZXRNYXJnaW4AZ2V0Q29tcHV0ZWRNYXJnaW4AbmFuAGJvdHRvbQBnZXRDb21wdXRlZEJvdHRvbQBib29sAGVtc2NyaXB0ZW46OnZhbABzZXRGbGV4U2hyaW5rAGdldEZsZXhTaHJpbmsAc2V0QWx3YXlzRm9ybXNDb250YWluaW5nQmxvY2sATWVhc3VyZUNhbGxiYWNrAERpcnRpZWRDYWxsYmFjawBnZXRMZW5ndGgAd2lkdGgAc2V0TWF4V2lkdGgAZ2V0TWF4V2lkdGgAc2V0V2lkdGgAZ2V0V2lkdGgAc2V0TWluV2lkdGgAZ2V0TWluV2lkdGgAZ2V0Q29tcHV0ZWRXaWR0aABwdXNoAC9ob21lL3J1bm5lci93b3JrL3lvZ2EveW9nYS9qYXZhc2NyaXB0Ly4uL3lvZ2Evc3R5bGUvU21hbGxWYWx1ZUJ1ZmZlci5oAC9ob21lL3J1bm5lci93b3JrL3lvZ2EveW9nYS9qYXZhc2NyaXB0Ly4uL3lvZ2Evc3R5bGUvU3R5bGVWYWx1ZVBvb2wuaAB1bnNpZ25lZCBsb25nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4AQ2hpbGQgYWxyZWFkeSBoYXMgYSBvd25lciwgaXQgbXVzdCBiZSByZW1vdmVkIGZpcnN0LgBDYW5ub3Qgc2V0IG1lYXN1cmUgZnVuY3Rpb246IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAENhbm5vdCBhZGQgY2hpbGQ6IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAChudWxsKQBpbmRleCA8IDQwOTYgJiYgIlNtYWxsVmFsdWVCdWZmZXIgY2FuIG9ubHkgaG9sZCB1cCB0byA0MDk2IGNodW5rcyIAJXMKAAEAAAADAAAAAAAAAAIAAAADAAAAAQAAAAIAAAAAAAAAAQAAAAEAQdAkCwdpaQB2AHZpAEHgJAs33xwAAN0cAAAdHQAAFx0AAB0dAAAXHQAAaWlpZmlmaQAQHQAA4BwAAHZpaQDhHAAAJB0AAGlpaQBBoCULCbwAAAC9AAAAvgBBtCULDrwAAAC/AAAAwAAAABAdAEHQJQs+3xwAAB0dAAAXHQAAHR0AABcdAAAkHQAAHx0AACQdAABpaWlpAAAAABAdAAD1HAAAEB0AAPccAAD4HAAAJB0AQZgmCwnBAAAAwgAAAMMAQawmCxbBAAAAxAAAAMAAAAD7HAAAEB0AAPscAEHQJguiAxAdAAD7HAAAFx0AABEdAAB2aWlpaQAAABAdAAD7HAAAHR0AAHZpaWYAAAAAEB0AAPscAAAXHQAAdmlpaQAAAAAQHQAA+xwAABEdAAARHQAA/BwAABcdAAAXHQAA/BwAABEdAAD8HAAAaQBkaWkAdmlpZAAAAB0AAAAdAAD7HAAAEB0AAAAdAAAQHQAAAB0AAP8cAAAQHQAAAB0AABcdAAAQHQAAAB0AABcdAAAeHQAAdmlpaWQAAAAQHQAAAB0AAB4dAAAXHQAAAR0AAP4cAAABHQAAFx0AAP4cAAABHQAAHh0AAAEdAAAeHQAAAR0AABcdAABkaWlpAAAAAB0dAAAAHQAAFx0AAGZpaWkAAAAAEB0AAAAdAAAAHQAAGB0AABAdAAAAHQAAAB0AABgdAAABHQAAAB0AAAAdAAAAHQAAAB0AABgdAAAQHQAAAB0AABEdAAARHQAAAB0AABAdAAAAHQAA3RwAABAdAAAAHQAA9RwAABEdAAABHQAAAAAAABAdAAAAHQAAHh0AAB4dAAAXHQAAdmlpZGRpAAD9HAAAAR0AQYAqC0EZAAoAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkAEQoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBB0SoLIQ4AAAAAAAAAABkACg0ZGRkADQAAAgAJDgAAAAkADgAADgBBiysLAQwAQZcrCxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQcUrCwEQAEHRKwsVDwAAAAQPAAAAAAkQAAAAAAAQAAAQAEH/KwsBEgBBiywLHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBBwiwLDhoAAAAaGhoAAAAAAAAJAEHzLAsBFABB/ywLFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABBrS0LARYAQbktCycVAAAAABUAAAAACRYAAAAAABYAABYAADAxMjM0NTY3ODlBQkNERUYAQYQuCwHKAEGsLgsI//////////8AQfAuCwlQIQEAAAAAAAUAQYQvCwHFAEGcLwsKxgAAAMcAAAA4HQBBtC8LAQIAQcQvCwj//////////wBBiDALAQUAQZQwCwHIAEGsMAsOxgAAAMkAAABIHQAAAAQAQcQwCwEBAEHUMAsF/////woAQZgxCwHL";if(!ua(H)){var va=H;H=h.locateFile?h.locateFile(va,q):q+va;}
356
+ function wa(){var a=H;try{if(a==H&&w)return new Uint8Array(w);if(ua(a))try{var b=xa(a.slice(37)),c=new Uint8Array(b.length);for(a=0;a<b.length;++a)c[a]=b.charCodeAt(a);var d=c;}catch(f){throw Error("Converting base64 string to bytes failed.");}else d=void 0;var e=d;if(e)return e;throw "both async and sync fetching of the wasm failed";}catch(f){x(f);}}
357
+ function ya(){return w||"function"!=typeof fetch?Promise.resolve().then(function(){return wa()}):fetch(H,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw "failed to load wasm binary file at '"+H+"'";return a.arrayBuffer()}).catch(function(){return wa()})}function za(a){for(;0<a.length;)a.shift()(h);}function Aa(a){if(void 0===a)return "_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a}
358
+ function Ba(a,b){a=Aa(a);return function(){return b.apply(this,arguments)}}var J=[{},{value:void 0},{value:null},{value:!0},{value:!1}],Ca=[];function Da(a){var b=Error,c=Ba(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""));});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c}var K=void 0;
359
+ function L(a){throw new K(a);}var M=a=>{a||L("Cannot use deleted val. handle = "+a);return J[a].value},Ea=a=>{switch(a){case void 0:return 1;case null:return 2;case !0:return 3;case !1:return 4;default:var b=Ca.length?Ca.pop():J.length;J[b]={ga:1,value:a};return b}},Fa=void 0,Ga=void 0;function N(a){for(var b="";A[a];)b+=Ga[A[a++]];return b}var O=[];function Ha(){for(;O.length;){var a=O.pop();a.M.$=!1;a["delete"]();}}var P=void 0,Q={};
360
+ function Ia(a,b){for(void 0===b&&L("ptr should not be undefined");a.R;)b=a.ba(b),a=a.R;return b}var R={};function Ja(a){a=Ka(a);var b=N(a);S(a);return b}function La(a,b){var c=R[a];void 0===c&&L(b+" has unknown type "+Ja(a));return c}function Ma(){}var Na=!1;function Oa(a){--a.count.value;0===a.count.value&&(a.T?a.U.W(a.T):a.P.N.W(a.O));}function Pa(a,b,c){if(b===c)return a;if(void 0===c.R)return null;a=Pa(a,b,c.R);return null===a?null:c.na(a)}var Qa={};function Ra(a,b){b=Ia(a,b);return Q[b]}
361
+ var Sa=void 0;function Ta(a){throw new Sa(a);}function Ua(a,b){b.P&&b.O||Ta("makeClassHandle requires ptr and ptrType");!!b.U!==!!b.T&&Ta("Both smartPtrType and smartPtr must be specified");b.count={value:1};return T(Object.create(a,{M:{value:b}}))}function T(a){if("undefined"===typeof FinalizationRegistry)return T=b=>b,a;Na=new FinalizationRegistry(b=>{Oa(b.M);});T=b=>{var c=b.M;c.T&&Na.register(b,{M:c},b);return b};Ma=b=>{Na.unregister(b);};return T(a)}var Va={};
362
+ function Wa(a){for(;a.length;){var b=a.pop();a.pop()(b);}}function Xa(a){return this.fromWireType(D[a>>2])}var U={},Ya={};function V(a,b,c){function d(k){k=c(k);k.length!==a.length&&Ta("Mismatched type converter count");for(var m=0;m<a.length;++m)W(a[m],k[m]);}a.forEach(function(k){Ya[k]=b;});var e=Array(b.length),f=[],g=0;b.forEach((k,m)=>{R.hasOwnProperty(k)?e[m]=R[k]:(f.push(k),U.hasOwnProperty(k)||(U[k]=[]),U[k].push(()=>{e[m]=R[k];++g;g===f.length&&d(e);}));});0===f.length&&d(e);}
363
+ function Za(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+a);}}
364
+ function W(a,b,c={}){if(!("argPackAdvance"in b))throw new TypeError("registerType registeredInstance requires argPackAdvance");var d=b.name;a||L('type "'+d+'" must have a positive integer typeid pointer');if(R.hasOwnProperty(a)){if(c.ua)return;L("Cannot register type '"+d+"' twice");}R[a]=b;delete Ya[a];U.hasOwnProperty(a)&&(b=U[a],delete U[a],b.forEach(e=>e()));}function $a(a){L(a.M.P.N.name+" instance already deleted");}function X(){}
365
+ function ab(a,b,c){if(void 0===a[b].S){var d=a[b];a[b]=function(){a[b].S.hasOwnProperty(arguments.length)||L("Function '"+c+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+a[b].S+")!");return a[b].S[arguments.length].apply(this,arguments)};a[b].S=[];a[b].S[d.Z]=d;}}
366
+ function bb(a,b){h.hasOwnProperty(a)?(L("Cannot register public name '"+a+"' twice"),ab(h,a,a),h.hasOwnProperty(void 0)&&L("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),h[a].S[void 0]=b):h[a]=b;}function cb(a,b,c,d,e,f,g,k){this.name=a;this.constructor=b;this.X=c;this.W=d;this.R=e;this.pa=f;this.ba=g;this.na=k;this.ja=[];}
367
+ function db(a,b,c){for(;b!==c;)b.ba||L("Expected null or instance of "+c.name+", got an instance of "+b.name),a=b.ba(a),b=b.R;return a}function eb(a,b){if(null===b)return this.ea&&L("null is not a valid "+this.name),0;b.M||L('Cannot pass "'+fb(b)+'" as a '+this.name);b.M.O||L("Cannot pass deleted object as a pointer of type "+this.name);return db(b.M.O,b.M.P.N,this.N)}
368
+ function gb(a,b){if(null===b){this.ea&&L("null is not a valid "+this.name);if(this.da){var c=this.fa();null!==a&&a.push(this.W,c);return c}return 0}b.M||L('Cannot pass "'+fb(b)+'" as a '+this.name);b.M.O||L("Cannot pass deleted object as a pointer of type "+this.name);!this.ca&&b.M.P.ca&&L("Cannot convert argument of type "+(b.M.U?b.M.U.name:b.M.P.name)+" to parameter type "+this.name);c=db(b.M.O,b.M.P.N,this.N);if(this.da)switch(void 0===b.M.T&&L("Passing raw pointer to smart pointer is illegal"),
369
+ this.Ba){case 0:b.M.U===this?c=b.M.T:L("Cannot convert argument of type "+(b.M.U?b.M.U.name:b.M.P.name)+" to parameter type "+this.name);break;case 1:c=b.M.T;break;case 2:if(b.M.U===this)c=b.M.T;else {var d=b.clone();c=this.xa(c,Ea(function(){d["delete"]();}));null!==a&&a.push(this.W,c);}break;default:L("Unsupporting sharing policy");}return c}
370
+ function hb(a,b){if(null===b)return this.ea&&L("null is not a valid "+this.name),0;b.M||L('Cannot pass "'+fb(b)+'" as a '+this.name);b.M.O||L("Cannot pass deleted object as a pointer of type "+this.name);b.M.P.ca&&L("Cannot convert argument of type "+b.M.P.name+" to parameter type "+this.name);return db(b.M.O,b.M.P.N,this.N)}
371
+ function Y(a,b,c,d){this.name=a;this.N=b;this.ea=c;this.ca=d;this.da=!1;this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0;void 0!==b.R?this.toWireType=gb:(this.toWireType=d?eb:hb,this.V=null);}function ib(a,b){h.hasOwnProperty(a)||Ta("Replacing nonexistant public symbol");h[a]=b;h[a].Z=void 0;}
372
+ function jb(a,b){var c=[];return function(){c.length=0;Object.assign(c,arguments);if(a.includes("j")){var d=h["dynCall_"+a];d=c&&c.length?d.apply(null,[b].concat(c)):d.call(null,b);}else d=oa.get(b).apply(null,c);return d}}function Z(a,b){a=N(a);var c=a.includes("j")?jb(a,b):oa.get(b);"function"!=typeof c&&L("unknown function pointer with signature "+a+": "+b);return c}var mb=void 0;
373
+ function nb(a,b){function c(f){e[f]||R[f]||(Ya[f]?Ya[f].forEach(c):(d.push(f),e[f]=!0));}var d=[],e={};b.forEach(c);throw new mb(a+": "+d.map(Ja).join([", "]));}
374
+ function ob(a,b,c,d,e){var f=b.length;2>f&&L("argTypes array size mismatch! Must at least get return value and 'this' types!");var g=null!==b[1]&&null!==c,k=!1;for(c=1;c<b.length;++c)if(null!==b[c]&&void 0===b[c].V){k=!0;break}var m="void"!==b[0].name,l=f-2,n=Array(l),p=[],r=[];return function(){arguments.length!==l&&L("function "+a+" called with "+arguments.length+" arguments, expected "+l+" args!");r.length=0;p.length=g?2:1;p[0]=e;if(g){var u=b[1].toWireType(r,this);p[1]=u;}for(var t=0;t<l;++t)n[t]=
375
+ b[t+2].toWireType(r,arguments[t]),p.push(n[t]);t=d.apply(null,p);if(k)Wa(r);else for(var y=g?1:2;y<b.length;y++){var B=1===y?u:n[y-2];null!==b[y].V&&b[y].V(B);}u=m?b[0].fromWireType(t):void 0;return u}}function pb(a,b){for(var c=[],d=0;d<a;d++)c.push(E[b+4*d>>2]);return c}function qb(a){4<a&&0===--J[a].ga&&(J[a]=void 0,Ca.push(a));}function fb(a){if(null===a)return "null";var b=typeof a;return "object"===b||"array"===b||"function"===b?a.toString():""+a}
376
+ function rb(a,b){switch(b){case 2:return function(c){return this.fromWireType(la[c>>2])};case 3:return function(c){return this.fromWireType(ma[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}
377
+ function sb(a,b,c){switch(b){case 0:return c?function(d){return ja[d]}:function(d){return A[d]};case 1:return c?function(d){return C[d>>1]}:function(d){return ka[d>>1]};case 2:return c?function(d){return D[d>>2]}:function(d){return E[d>>2]};default:throw new TypeError("Unknown integer type: "+a);}}function tb(a,b){for(var c="",d=0;!(d>=b/2);++d){var e=C[a+2*d>>1];if(0==e)break;c+=String.fromCharCode(e);}return c}
378
+ function ub(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e<c;++e)C[b>>1]=a.charCodeAt(e),b+=2;C[b>>1]=0;return b-d}function vb(a){return 2*a.length}function wb(a,b){for(var c=0,d="";!(c>=b/4);){var e=D[a+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e);}return d}
379
+ function xb(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e<a.length;++e){var f=a.charCodeAt(e);if(55296<=f&&57343>=f){var g=a.charCodeAt(++e);f=65536+((f&1023)<<10)|g&1023;}D[b>>2]=f;b+=4;if(b+4>c)break}D[b>>2]=0;return b-d}function yb(a){for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);55296<=d&&57343>=d&&++c;b+=4;}return b}var zb={};function Ab(a){var b=zb[a];return void 0===b?N(a):b}var Bb=[];function Cb(a){var b=Bb.length;Bb.push(a);return b}
380
+ function Db(a,b){for(var c=Array(a),d=0;d<a;++d)c[d]=La(E[b+4*d>>2],"parameter "+d);return c}var Eb=[],Fb=[null,[],[]];K=h.BindingError=Da("BindingError");h.count_emval_handles=function(){for(var a=0,b=5;b<J.length;++b)void 0!==J[b]&&++a;return a};h.get_first_emval=function(){for(var a=5;a<J.length;++a)if(void 0!==J[a])return J[a];return null};Fa=h.PureVirtualError=Da("PureVirtualError");for(var Gb=Array(256),Hb=0;256>Hb;++Hb)Gb[Hb]=String.fromCharCode(Hb);Ga=Gb;h.getInheritedInstanceCount=function(){return Object.keys(Q).length};
381
+ h.getLiveInheritedInstances=function(){var a=[],b;for(b in Q)Q.hasOwnProperty(b)&&a.push(Q[b]);return a};h.flushPendingDeletes=Ha;h.setDelayFunction=function(a){P=a;O.length&&P&&P(Ha);};Sa=h.InternalError=Da("InternalError");X.prototype.isAliasOf=function(a){if(!(this instanceof X&&a instanceof X))return !1;var b=this.M.P.N,c=this.M.O,d=a.M.P.N;for(a=a.M.O;b.R;)c=b.ba(c),b=b.R;for(;d.R;)a=d.ba(a),d=d.R;return b===d&&c===a};
382
+ X.prototype.clone=function(){this.M.O||$a(this);if(this.M.aa)return this.M.count.value+=1,this;var a=T,b=Object,c=b.create,d=Object.getPrototypeOf(this),e=this.M;a=a(c.call(b,d,{M:{value:{count:e.count,$:e.$,aa:e.aa,O:e.O,P:e.P,T:e.T,U:e.U}}}));a.M.count.value+=1;a.M.$=!1;return a};X.prototype["delete"]=function(){this.M.O||$a(this);this.M.$&&!this.M.aa&&L("Object already scheduled for deletion");Ma(this);Oa(this.M);this.M.aa||(this.M.T=void 0,this.M.O=void 0);};X.prototype.isDeleted=function(){return !this.M.O};
383
+ X.prototype.deleteLater=function(){this.M.O||$a(this);this.M.$&&!this.M.aa&&L("Object already scheduled for deletion");O.push(this);1===O.length&&P&&P(Ha);this.M.$=!0;return this};Y.prototype.qa=function(a){this.ka&&(a=this.ka(a));return a};Y.prototype.ha=function(a){this.W&&this.W(a);};Y.prototype.argPackAdvance=8;Y.prototype.readValueFromPointer=Xa;Y.prototype.deleteObject=function(a){if(null!==a)a["delete"]();};
384
+ Y.prototype.fromWireType=function(a){function b(){return this.da?Ua(this.N.X,{P:this.wa,O:c,U:this,T:a}):Ua(this.N.X,{P:this,O:a})}var c=this.qa(a);if(!c)return this.ha(a),null;var d=Ra(this.N,c);if(void 0!==d){if(0===d.M.count.value)return d.M.O=c,d.M.T=a,d.clone();d=d.clone();this.ha(a);return d}d=this.N.pa(c);d=Qa[d];if(!d)return b.call(this);d=this.ca?d.la:d.pointerType;var e=Pa(c,this.N,d.N);return null===e?b.call(this):this.da?Ua(d.N.X,{P:d,O:e,U:this,T:a}):Ua(d.N.X,{P:d,O:e})};
385
+ mb=h.UnboundTypeError=Da("UnboundTypeError");
386
+ var xa="function"==typeof atob?atob:function(a){var b="",c=0;a=a.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));var f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));d=d<<2|e>>4;
387
+ e=(e&15)<<4|f>>2;var k=(f&3)<<6|g;b+=String.fromCharCode(d);64!==f&&(b+=String.fromCharCode(e));64!==g&&(b+=String.fromCharCode(k));}while(c<a.length);return b},Jb={l:function(a,b,c,d){x("Assertion failed: "+(a?z(A,a):"")+", at: "+[b?b?z(A,b):"":"unknown filename",c,d?d?z(A,d):"":"unknown function"]);},q:function(a,b,c){a=N(a);b=La(b,"wrapper");c=M(c);var d=[].slice,e=b.N,f=e.X,g=e.R.X,k=e.R.constructor;a=Ba(a,function(){e.R.ja.forEach(function(l){if(this[l]===g[l])throw new Fa("Pure virtual function "+
388
+ l+" must be implemented in JavaScript");}.bind(this));Object.defineProperty(this,"__parent",{value:f});this.__construct.apply(this,d.call(arguments));});f.__construct=function(){this===f&&L("Pass correct 'this' to __construct");var l=k.implement.apply(void 0,[this].concat(d.call(arguments)));Ma(l);var n=l.M;l.notifyOnDestruction();n.aa=!0;Object.defineProperties(this,{M:{value:n}});T(this);l=n.O;l=Ia(e,l);Q.hasOwnProperty(l)?L("Tried to register registered instance: "+l):Q[l]=this;};f.__destruct=function(){this===
389
+ f&&L("Pass correct 'this' to __destruct");Ma(this);var l=this.M.O;l=Ia(e,l);Q.hasOwnProperty(l)?delete Q[l]:L("Tried to unregister unregistered instance: "+l);};a.prototype=Object.create(f);for(var m in c)a.prototype[m]=c[m];return Ea(a)},j:function(a){var b=Va[a];delete Va[a];var c=b.fa,d=b.W,e=b.ia,f=e.map(g=>g.ta).concat(e.map(g=>g.za));V([a],f,g=>{var k={};e.forEach((m,l)=>{var n=g[l],p=m.ra,r=m.sa,u=g[l+e.length],t=m.ya,y=m.Aa;k[m.oa]={read:B=>n.fromWireType(p(r,B)),write:(B,ba)=>{var I=[];t(y,
390
+ B,u.toWireType(I,ba));Wa(I);}};});return [{name:b.name,fromWireType:function(m){var l={},n;for(n in k)l[n]=k[n].read(m);d(m);return l},toWireType:function(m,l){for(var n in k)if(!(n in l))throw new TypeError('Missing field: "'+n+'"');var p=c();for(n in k)k[n].write(p,l[n]);null!==m&&m.push(d,p);return p},argPackAdvance:8,readValueFromPointer:Xa,V:d}]});},v:function(){},B:function(a,b,c,d,e){var f=Za(c);b=N(b);W(a,{name:b,fromWireType:function(g){return !!g},toWireType:function(g,k){return k?d:e},argPackAdvance:8,
391
+ readValueFromPointer:function(g){if(1===c)var k=ja;else if(2===c)k=C;else if(4===c)k=D;else throw new TypeError("Unknown boolean type size: "+b);return this.fromWireType(k[g>>f])},V:null});},f:function(a,b,c,d,e,f,g,k,m,l,n,p,r){n=N(n);f=Z(e,f);k&&(k=Z(g,k));l&&(l=Z(m,l));r=Z(p,r);var u=Aa(n);bb(u,function(){nb("Cannot construct "+n+" due to unbound types",[d]);});V([a,b,c],d?[d]:[],function(t){t=t[0];if(d){var y=t.N;var B=y.X;}else B=X.prototype;t=Ba(u,function(){if(Object.getPrototypeOf(this)!==ba)throw new K("Use 'new' to construct "+
392
+ n);if(void 0===I.Y)throw new K(n+" has no accessible constructor");var kb=I.Y[arguments.length];if(void 0===kb)throw new K("Tried to invoke ctor of "+n+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(I.Y).toString()+") parameters instead!");return kb.apply(this,arguments)});var ba=Object.create(B,{constructor:{value:t}});t.prototype=ba;var I=new cb(n,t,ba,r,y,f,k,l);y=new Y(n,I,!0,!1);B=new Y(n+"*",I,!1,!1);var lb=new Y(n+" const*",I,!1,!0);Qa[a]={pointerType:B,
393
+ la:lb};ib(u,t);return [y,B,lb]});},d:function(a,b,c,d,e,f,g){var k=pb(c,d);b=N(b);f=Z(e,f);V([],[a],function(m){function l(){nb("Cannot call "+n+" due to unbound types",k);}m=m[0];var n=m.name+"."+b;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);var p=m.N.constructor;void 0===p[b]?(l.Z=c-1,p[b]=l):(ab(p,b,n),p[b].S[c-1]=l);V([],k,function(r){r=ob(n,[r[0],null].concat(r.slice(1)),null,f,g);void 0===p[b].S?(r.Z=c-1,p[b]=r):p[b].S[c-1]=r;return []});return []});},p:function(a,b,c,d,e,f){0<b||x();var g=pb(b,
394
+ c);e=Z(d,e);V([],[a],function(k){k=k[0];var m="constructor "+k.name;void 0===k.N.Y&&(k.N.Y=[]);if(void 0!==k.N.Y[b-1])throw new K("Cannot register multiple constructors with identical number of parameters ("+(b-1)+") for class '"+k.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");k.N.Y[b-1]=()=>{nb("Cannot construct "+k.name+" due to unbound types",g);};V([],g,function(l){l.splice(1,0,null);k.N.Y[b-1]=ob(m,l,null,e,f);return []});return []});},
395
+ a:function(a,b,c,d,e,f,g,k){var m=pb(c,d);b=N(b);f=Z(e,f);V([],[a],function(l){function n(){nb("Cannot call "+p+" due to unbound types",m);}l=l[0];var p=l.name+"."+b;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);k&&l.N.ja.push(b);var r=l.N.X,u=r[b];void 0===u||void 0===u.S&&u.className!==l.name&&u.Z===c-2?(n.Z=c-2,n.className=l.name,r[b]=n):(ab(r,b,p),r[b].S[c-2]=n);V([],m,function(t){t=ob(p,t,l,f,g);void 0===r[b].S?(t.Z=c-2,r[b]=t):r[b].S[c-2]=t;return []});return []});},A:function(a,b){b=N(b);W(a,
396
+ {name:b,fromWireType:function(c){var d=M(c);qb(c);return d},toWireType:function(c,d){return Ea(d)},argPackAdvance:8,readValueFromPointer:Xa,V:null});},n:function(a,b,c){c=Za(c);b=N(b);W(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,e){return e},argPackAdvance:8,readValueFromPointer:rb(b,c),V:null});},e:function(a,b,c,d,e){b=N(b);-1===e&&(e=4294967295);e=Za(c);var f=k=>k;if(0===d){var g=32-8*c;f=k=>k<<g>>>g;}c=b.includes("unsigned")?function(k,m){return m>>>0}:function(k,m){return m};
397
+ W(a,{name:b,fromWireType:f,toWireType:c,argPackAdvance:8,readValueFromPointer:sb(b,e,0!==d),V:null});},b:function(a,b,c){function d(f){f>>=2;var g=E;return new e(ia,g[f+1],g[f])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=N(c);W(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{ua:!0});},o:function(a,b){b=N(b);var c="std::string"===b;W(a,{name:b,fromWireType:function(d){var e=E[d>>2],f=d+4;if(c)for(var g=f,k=0;k<=e;++k){var m=
398
+ f+k;if(k==e||0==A[m]){g=g?z(A,g,m-g):"";if(void 0===l)var l=g;else l+=String.fromCharCode(0),l+=g;g=m+1;}}else {l=Array(e);for(k=0;k<e;++k)l[k]=String.fromCharCode(A[f+k]);l=l.join("");}S(d);return l},toWireType:function(d,e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var f,g="string"==typeof e;g||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int8Array||L("Cannot pass non-string to std::string");if(c&&g){var k=0;for(f=0;f<e.length;++f){var m=e.charCodeAt(f);127>=m?k++:2047>=
399
+ m?k+=2:55296<=m&&57343>=m?(k+=4,++f):k+=3;}f=k;}else f=e.length;k=Ib(4+f+1);m=k+4;E[k>>2]=f;if(c&&g){if(g=m,m=f+1,f=A,0<m){m=g+m-1;for(var l=0;l<e.length;++l){var n=e.charCodeAt(l);if(55296<=n&&57343>=n){var p=e.charCodeAt(++l);n=65536+((n&1023)<<10)|p&1023;}if(127>=n){if(g>=m)break;f[g++]=n;}else {if(2047>=n){if(g+1>=m)break;f[g++]=192|n>>6;}else {if(65535>=n){if(g+2>=m)break;f[g++]=224|n>>12;}else {if(g+3>=m)break;f[g++]=240|n>>18;f[g++]=128|n>>12&63;}f[g++]=128|n>>6&63;}f[g++]=128|n&63;}}f[g]=0;}}else if(g)for(g=
400
+ 0;g<f;++g)l=e.charCodeAt(g),255<l&&(S(m),L("String has UTF-16 code units that do not fit in 8 bits")),A[m+g]=l;else for(g=0;g<f;++g)A[m+g]=e[g];null!==d&&d.push(S,k);return k},argPackAdvance:8,readValueFromPointer:Xa,V:function(d){S(d);}});},i:function(a,b,c){c=N(c);if(2===b){var d=tb;var e=ub;var f=vb;var g=()=>ka;var k=1;}else 4===b&&(d=wb,e=xb,f=yb,g=()=>E,k=2);W(a,{name:c,fromWireType:function(m){for(var l=E[m>>2],n=g(),p,r=m+4,u=0;u<=l;++u){var t=m+4+u*b;if(u==l||0==n[t>>k])r=d(r,t-r),void 0===
401
+ p?p=r:(p+=String.fromCharCode(0),p+=r),r=t+b;}S(m);return p},toWireType:function(m,l){"string"!=typeof l&&L("Cannot pass non-string to C++ string type "+c);var n=f(l),p=Ib(4+n+b);E[p>>2]=n>>k;e(l,p+4,n+b);null!==m&&m.push(S,p);return p},argPackAdvance:8,readValueFromPointer:Xa,V:function(m){S(m);}});},k:function(a,b,c,d,e,f){Va[a]={name:N(b),fa:Z(c,d),W:Z(e,f),ia:[]};},h:function(a,b,c,d,e,f,g,k,m,l){Va[a].ia.push({oa:N(b),ta:c,ra:Z(d,e),sa:f,za:g,ya:Z(k,m),Aa:l});},C:function(a,b){b=N(b);W(a,{va:!0,name:b,
402
+ argPackAdvance:0,fromWireType:function(){},toWireType:function(){}});},s:function(a,b,c,d,e){a=Bb[a];b=M(b);c=Ab(c);var f=[];E[d>>2]=Ea(f);return a(b,c,f,e)},t:function(a,b,c,d){a=Bb[a];b=M(b);c=Ab(c);a(b,c,null,d);},g:qb,m:function(a,b){var c=Db(a,b),d=c[0];b=d.name+"_$"+c.slice(1).map(function(g){return g.name}).join("_")+"$";var e=Eb[b];if(void 0!==e)return e;var f=Array(a-1);e=Cb((g,k,m,l)=>{for(var n=0,p=0;p<a-1;++p)f[p]=c[p+1].readValueFromPointer(l+n),n+=c[p+1].argPackAdvance;g=g[k].apply(g,
403
+ f);for(p=0;p<a-1;++p)c[p+1].ma&&c[p+1].ma(f[p]);if(!d.va)return d.toWireType(m,g)});return Eb[b]=e},D:function(a){4<a&&(J[a].ga+=1);},r:function(a){var b=M(a);Wa(b);qb(a);},c:function(){x("");},x:function(a,b,c){A.copyWithin(a,b,b+c);},w:function(a){var b=A.length;a>>>=0;if(2147483648<a)return !1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);var e=Math;d=Math.max(a,d);e=e.min.call(e,2147483648,d+(65536-d%65536)%65536);a:{try{fa.grow(e-ia.byteLength+65535>>>16);na();var f=1;break a}catch(g){}f=
404
+ void 0;}if(f)return !0}return !1},z:function(){return 52},u:function(){return 70},y:function(a,b,c,d){for(var e=0,f=0;f<c;f++){var g=E[b>>2],k=E[b+4>>2];b+=8;for(var m=0;m<k;m++){var l=A[g+m],n=Fb[a];0===l||10===l?((1===a?ea:v)(z(n,0)),n.length=0):n.push(l);}e+=k;}E[d>>2]=e;return 0}};
405
+ (function(){function a(e){h.asm=e.exports;fa=h.asm.E;na();oa=h.asm.J;qa.unshift(h.asm.F);F--;h.monitorRunDependencies&&h.monitorRunDependencies(F);0==F&&(G&&(e=G,G=null,e()));}function b(e){a(e.instance);}function c(e){return ya().then(function(f){return WebAssembly.instantiate(f,d)}).then(function(f){return f}).then(e,function(f){v("failed to asynchronously prepare wasm: "+f);x(f);})}var d={a:Jb};F++;h.monitorRunDependencies&&h.monitorRunDependencies(F);if(h.instantiateWasm)try{return h.instantiateWasm(d,
406
+ a)}catch(e){v("Module.instantiateWasm callback failed with error: "+e),ca(e);}(function(){return w||"function"!=typeof WebAssembly.instantiateStreaming||ua(H)||"function"!=typeof fetch?c(b):fetch(H,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(f){v("wasm streaming compile failed: "+f);v("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(ca);return {}})();
407
+ h.___wasm_call_ctors=function(){return (h.___wasm_call_ctors=h.asm.F).apply(null,arguments)};var Ka=h.___getTypeName=function(){return (Ka=h.___getTypeName=h.asm.G).apply(null,arguments)};h.__embind_initialize_bindings=function(){return (h.__embind_initialize_bindings=h.asm.H).apply(null,arguments)};var Ib=h._malloc=function(){return (Ib=h._malloc=h.asm.I).apply(null,arguments)},S=h._free=function(){return (S=h._free=h.asm.K).apply(null,arguments)};
408
+ h.dynCall_jiji=function(){return (h.dynCall_jiji=h.asm.L).apply(null,arguments)};var Kb;G=function Lb(){Kb||Mb();Kb||(G=Lb);};
409
+ function Mb(){function a(){if(!Kb&&(Kb=!0,h.calledRun=!0,!ha)){za(qa);aa(h);if(h.onRuntimeInitialized)h.onRuntimeInitialized();if(h.postRun)for("function"==typeof h.postRun&&(h.postRun=[h.postRun]);h.postRun.length;){var b=h.postRun.shift();ra.unshift(b);}za(ra);}}if(!(0<F)){if(h.preRun)for("function"==typeof h.preRun&&(h.preRun=[h.preRun]);h.preRun.length;)sa();za(pa);0<F||(h.setStatus?(h.setStatus("Running..."),setTimeout(function(){setTimeout(function(){h.setStatus("");},1);a();},1)):a());}}
410
+ if(h.preInit)for("function"==typeof h.preInit&&(h.preInit=[h.preInit]);0<h.preInit.length;)h.preInit.pop()();Mb();
411
+
412
+
413
+ return loadYoga.ready
414
+ }
415
+ );
416
+ })();
417
+
418
+ /**
419
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
420
+ *
421
+ * This source code is licensed under the MIT license found in the
422
+ * LICENSE file in the root directory of this source tree.
423
+ */
424
+
425
+ // @generated by enums.py
426
+
427
+ let Align = /*#__PURE__*/function (Align) {
428
+ Align[Align["Auto"] = 0] = "Auto";
429
+ Align[Align["FlexStart"] = 1] = "FlexStart";
430
+ Align[Align["Center"] = 2] = "Center";
431
+ Align[Align["FlexEnd"] = 3] = "FlexEnd";
432
+ Align[Align["Stretch"] = 4] = "Stretch";
433
+ Align[Align["Baseline"] = 5] = "Baseline";
434
+ Align[Align["SpaceBetween"] = 6] = "SpaceBetween";
435
+ Align[Align["SpaceAround"] = 7] = "SpaceAround";
436
+ Align[Align["SpaceEvenly"] = 8] = "SpaceEvenly";
437
+ return Align;
438
+ }({});
439
+ let Dimension = /*#__PURE__*/function (Dimension) {
440
+ Dimension[Dimension["Width"] = 0] = "Width";
441
+ Dimension[Dimension["Height"] = 1] = "Height";
442
+ return Dimension;
443
+ }({});
444
+ let Direction = /*#__PURE__*/function (Direction) {
445
+ Direction[Direction["Inherit"] = 0] = "Inherit";
446
+ Direction[Direction["LTR"] = 1] = "LTR";
447
+ Direction[Direction["RTL"] = 2] = "RTL";
448
+ return Direction;
449
+ }({});
450
+ let Display = /*#__PURE__*/function (Display) {
451
+ Display[Display["Flex"] = 0] = "Flex";
452
+ Display[Display["None"] = 1] = "None";
453
+ return Display;
454
+ }({});
455
+ let Edge = /*#__PURE__*/function (Edge) {
456
+ Edge[Edge["Left"] = 0] = "Left";
457
+ Edge[Edge["Top"] = 1] = "Top";
458
+ Edge[Edge["Right"] = 2] = "Right";
459
+ Edge[Edge["Bottom"] = 3] = "Bottom";
460
+ Edge[Edge["Start"] = 4] = "Start";
461
+ Edge[Edge["End"] = 5] = "End";
462
+ Edge[Edge["Horizontal"] = 6] = "Horizontal";
463
+ Edge[Edge["Vertical"] = 7] = "Vertical";
464
+ Edge[Edge["All"] = 8] = "All";
465
+ return Edge;
466
+ }({});
467
+ let Errata = /*#__PURE__*/function (Errata) {
468
+ Errata[Errata["None"] = 0] = "None";
469
+ Errata[Errata["StretchFlexBasis"] = 1] = "StretchFlexBasis";
470
+ Errata[Errata["AbsolutePositioningIncorrect"] = 2] = "AbsolutePositioningIncorrect";
471
+ Errata[Errata["AbsolutePercentAgainstInnerSize"] = 4] = "AbsolutePercentAgainstInnerSize";
472
+ Errata[Errata["All"] = 2147483647] = "All";
473
+ Errata[Errata["Classic"] = 2147483646] = "Classic";
474
+ return Errata;
475
+ }({});
476
+ let ExperimentalFeature = /*#__PURE__*/function (ExperimentalFeature) {
477
+ ExperimentalFeature[ExperimentalFeature["WebFlexBasis"] = 0] = "WebFlexBasis";
478
+ return ExperimentalFeature;
479
+ }({});
480
+ let FlexDirection = /*#__PURE__*/function (FlexDirection) {
481
+ FlexDirection[FlexDirection["Column"] = 0] = "Column";
482
+ FlexDirection[FlexDirection["ColumnReverse"] = 1] = "ColumnReverse";
483
+ FlexDirection[FlexDirection["Row"] = 2] = "Row";
484
+ FlexDirection[FlexDirection["RowReverse"] = 3] = "RowReverse";
485
+ return FlexDirection;
486
+ }({});
487
+ let Gutter = /*#__PURE__*/function (Gutter) {
488
+ Gutter[Gutter["Column"] = 0] = "Column";
489
+ Gutter[Gutter["Row"] = 1] = "Row";
490
+ Gutter[Gutter["All"] = 2] = "All";
491
+ return Gutter;
492
+ }({});
493
+ let Justify = /*#__PURE__*/function (Justify) {
494
+ Justify[Justify["FlexStart"] = 0] = "FlexStart";
495
+ Justify[Justify["Center"] = 1] = "Center";
496
+ Justify[Justify["FlexEnd"] = 2] = "FlexEnd";
497
+ Justify[Justify["SpaceBetween"] = 3] = "SpaceBetween";
498
+ Justify[Justify["SpaceAround"] = 4] = "SpaceAround";
499
+ Justify[Justify["SpaceEvenly"] = 5] = "SpaceEvenly";
500
+ return Justify;
501
+ }({});
502
+ let LogLevel = /*#__PURE__*/function (LogLevel) {
503
+ LogLevel[LogLevel["Error"] = 0] = "Error";
504
+ LogLevel[LogLevel["Warn"] = 1] = "Warn";
505
+ LogLevel[LogLevel["Info"] = 2] = "Info";
506
+ LogLevel[LogLevel["Debug"] = 3] = "Debug";
507
+ LogLevel[LogLevel["Verbose"] = 4] = "Verbose";
508
+ LogLevel[LogLevel["Fatal"] = 5] = "Fatal";
509
+ return LogLevel;
510
+ }({});
511
+ let MeasureMode = /*#__PURE__*/function (MeasureMode) {
512
+ MeasureMode[MeasureMode["Undefined"] = 0] = "Undefined";
513
+ MeasureMode[MeasureMode["Exactly"] = 1] = "Exactly";
514
+ MeasureMode[MeasureMode["AtMost"] = 2] = "AtMost";
515
+ return MeasureMode;
516
+ }({});
517
+ let NodeType = /*#__PURE__*/function (NodeType) {
518
+ NodeType[NodeType["Default"] = 0] = "Default";
519
+ NodeType[NodeType["Text"] = 1] = "Text";
520
+ return NodeType;
521
+ }({});
522
+ let Overflow = /*#__PURE__*/function (Overflow) {
523
+ Overflow[Overflow["Visible"] = 0] = "Visible";
524
+ Overflow[Overflow["Hidden"] = 1] = "Hidden";
525
+ Overflow[Overflow["Scroll"] = 2] = "Scroll";
526
+ return Overflow;
527
+ }({});
528
+ let PositionType = /*#__PURE__*/function (PositionType) {
529
+ PositionType[PositionType["Static"] = 0] = "Static";
530
+ PositionType[PositionType["Relative"] = 1] = "Relative";
531
+ PositionType[PositionType["Absolute"] = 2] = "Absolute";
532
+ return PositionType;
533
+ }({});
534
+ let Unit = /*#__PURE__*/function (Unit) {
535
+ Unit[Unit["Undefined"] = 0] = "Undefined";
536
+ Unit[Unit["Point"] = 1] = "Point";
537
+ Unit[Unit["Percent"] = 2] = "Percent";
538
+ Unit[Unit["Auto"] = 3] = "Auto";
539
+ return Unit;
540
+ }({});
541
+ let Wrap = /*#__PURE__*/function (Wrap) {
542
+ Wrap[Wrap["NoWrap"] = 0] = "NoWrap";
543
+ Wrap[Wrap["Wrap"] = 1] = "Wrap";
544
+ Wrap[Wrap["WrapReverse"] = 2] = "WrapReverse";
545
+ return Wrap;
546
+ }({});
547
+ const constants = {
548
+ ALIGN_AUTO: Align.Auto,
549
+ ALIGN_FLEX_START: Align.FlexStart,
550
+ ALIGN_CENTER: Align.Center,
551
+ ALIGN_FLEX_END: Align.FlexEnd,
552
+ ALIGN_STRETCH: Align.Stretch,
553
+ ALIGN_BASELINE: Align.Baseline,
554
+ ALIGN_SPACE_BETWEEN: Align.SpaceBetween,
555
+ ALIGN_SPACE_AROUND: Align.SpaceAround,
556
+ ALIGN_SPACE_EVENLY: Align.SpaceEvenly,
557
+ DIMENSION_WIDTH: Dimension.Width,
558
+ DIMENSION_HEIGHT: Dimension.Height,
559
+ DIRECTION_INHERIT: Direction.Inherit,
560
+ DIRECTION_LTR: Direction.LTR,
561
+ DIRECTION_RTL: Direction.RTL,
562
+ DISPLAY_FLEX: Display.Flex,
563
+ DISPLAY_NONE: Display.None,
564
+ EDGE_LEFT: Edge.Left,
565
+ EDGE_TOP: Edge.Top,
566
+ EDGE_RIGHT: Edge.Right,
567
+ EDGE_BOTTOM: Edge.Bottom,
568
+ EDGE_START: Edge.Start,
569
+ EDGE_END: Edge.End,
570
+ EDGE_HORIZONTAL: Edge.Horizontal,
571
+ EDGE_VERTICAL: Edge.Vertical,
572
+ EDGE_ALL: Edge.All,
573
+ ERRATA_NONE: Errata.None,
574
+ ERRATA_STRETCH_FLEX_BASIS: Errata.StretchFlexBasis,
575
+ ERRATA_ABSOLUTE_POSITIONING_INCORRECT: Errata.AbsolutePositioningIncorrect,
576
+ ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE: Errata.AbsolutePercentAgainstInnerSize,
577
+ ERRATA_ALL: Errata.All,
578
+ ERRATA_CLASSIC: Errata.Classic,
579
+ EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: ExperimentalFeature.WebFlexBasis,
580
+ FLEX_DIRECTION_COLUMN: FlexDirection.Column,
581
+ FLEX_DIRECTION_COLUMN_REVERSE: FlexDirection.ColumnReverse,
582
+ FLEX_DIRECTION_ROW: FlexDirection.Row,
583
+ FLEX_DIRECTION_ROW_REVERSE: FlexDirection.RowReverse,
584
+ GUTTER_COLUMN: Gutter.Column,
585
+ GUTTER_ROW: Gutter.Row,
586
+ GUTTER_ALL: Gutter.All,
587
+ JUSTIFY_FLEX_START: Justify.FlexStart,
588
+ JUSTIFY_CENTER: Justify.Center,
589
+ JUSTIFY_FLEX_END: Justify.FlexEnd,
590
+ JUSTIFY_SPACE_BETWEEN: Justify.SpaceBetween,
591
+ JUSTIFY_SPACE_AROUND: Justify.SpaceAround,
592
+ JUSTIFY_SPACE_EVENLY: Justify.SpaceEvenly,
593
+ LOG_LEVEL_ERROR: LogLevel.Error,
594
+ LOG_LEVEL_WARN: LogLevel.Warn,
595
+ LOG_LEVEL_INFO: LogLevel.Info,
596
+ LOG_LEVEL_DEBUG: LogLevel.Debug,
597
+ LOG_LEVEL_VERBOSE: LogLevel.Verbose,
598
+ LOG_LEVEL_FATAL: LogLevel.Fatal,
599
+ MEASURE_MODE_UNDEFINED: MeasureMode.Undefined,
600
+ MEASURE_MODE_EXACTLY: MeasureMode.Exactly,
601
+ MEASURE_MODE_AT_MOST: MeasureMode.AtMost,
602
+ NODE_TYPE_DEFAULT: NodeType.Default,
603
+ NODE_TYPE_TEXT: NodeType.Text,
604
+ OVERFLOW_VISIBLE: Overflow.Visible,
605
+ OVERFLOW_HIDDEN: Overflow.Hidden,
606
+ OVERFLOW_SCROLL: Overflow.Scroll,
607
+ POSITION_TYPE_STATIC: PositionType.Static,
608
+ POSITION_TYPE_RELATIVE: PositionType.Relative,
609
+ POSITION_TYPE_ABSOLUTE: PositionType.Absolute,
610
+ UNIT_UNDEFINED: Unit.Undefined,
611
+ UNIT_POINT: Unit.Point,
612
+ UNIT_PERCENT: Unit.Percent,
613
+ UNIT_AUTO: Unit.Auto,
614
+ WRAP_NO_WRAP: Wrap.NoWrap,
615
+ WRAP_WRAP: Wrap.Wrap,
616
+ WRAP_WRAP_REVERSE: Wrap.WrapReverse
617
+ };
618
+
619
+ /**
620
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
621
+ *
622
+ * This source code is licensed under the MIT license found in the
623
+ * LICENSE file in the root directory of this source tree.
624
+ *
625
+ * @format
626
+ */
627
+
628
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
629
+ function wrapAssembly(lib) {
630
+ function patch(prototype, name, fn) {
631
+ const original = prototype[name];
632
+ prototype[name] = function () {
633
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
634
+ args[_key] = arguments[_key];
635
+ }
636
+ return fn.call(this, original, ...args);
637
+ };
638
+ }
639
+ for (const fnName of ['setPosition', 'setMargin', 'setFlexBasis', 'setWidth', 'setHeight', 'setMinWidth', 'setMinHeight', 'setMaxWidth', 'setMaxHeight', 'setPadding']) {
640
+ const methods = {
641
+ [Unit.Point]: lib.Node.prototype[fnName],
642
+ [Unit.Percent]: lib.Node.prototype[`${fnName}Percent`],
643
+ [Unit.Auto]: lib.Node.prototype[`${fnName}Auto`]
644
+ };
645
+ patch(lib.Node.prototype, fnName, function (original) {
646
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
647
+ args[_key2 - 1] = arguments[_key2];
648
+ }
649
+ // We patch all these functions to add support for the following calls:
650
+ // .setWidth(100) / .setWidth("100%") / .setWidth(.getWidth()) / .setWidth("auto")
651
+
652
+ const value = args.pop();
653
+ let unit, asNumber;
654
+ if (value === 'auto') {
655
+ unit = Unit.Auto;
656
+ asNumber = undefined;
657
+ } else if (typeof value === 'object') {
658
+ unit = value.unit;
659
+ asNumber = value.valueOf();
660
+ } else {
661
+ unit = typeof value === 'string' && value.endsWith('%') ? Unit.Percent : Unit.Point;
662
+ asNumber = parseFloat(value);
663
+ if (value !== undefined && !Number.isNaN(value) && Number.isNaN(asNumber)) {
664
+ throw new Error(`Invalid value ${value} for ${fnName}`);
665
+ }
666
+ }
667
+ if (!methods[unit]) throw new Error(`Failed to execute "${fnName}": Unsupported unit '${value}'`);
668
+ if (asNumber !== undefined) {
669
+ return methods[unit].call(this, ...args, asNumber);
670
+ } else {
671
+ return methods[unit].call(this, ...args);
672
+ }
673
+ });
674
+ }
675
+ function wrapMeasureFunction(measureFunction) {
676
+ return lib.MeasureCallback.implement({
677
+ measure: function () {
678
+ const {
679
+ width,
680
+ height
681
+ } = measureFunction(...arguments);
682
+ return {
683
+ width: width ?? NaN,
684
+ height: height ?? NaN
685
+ };
686
+ }
687
+ });
688
+ }
689
+ patch(lib.Node.prototype, 'setMeasureFunc', function (original, measureFunc) {
690
+ // This patch is just a convenience patch, since it helps write more
691
+ // idiomatic source code (such as .setMeasureFunc(null))
692
+ if (measureFunc) {
693
+ return original.call(this, wrapMeasureFunction(measureFunc));
694
+ } else {
695
+ return this.unsetMeasureFunc();
696
+ }
697
+ });
698
+ function wrapDirtiedFunc(dirtiedFunction) {
699
+ return lib.DirtiedCallback.implement({
700
+ dirtied: dirtiedFunction
701
+ });
702
+ }
703
+ patch(lib.Node.prototype, 'setDirtiedFunc', function (original, dirtiedFunc) {
704
+ original.call(this, wrapDirtiedFunc(dirtiedFunc));
705
+ });
706
+ patch(lib.Config.prototype, 'free', function () {
707
+ // Since we handle the memory allocation ourselves (via lib.Config.create),
708
+ // we also need to handle the deallocation
709
+ lib.Config.destroy(this);
710
+ });
711
+ patch(lib.Node, 'create', (_, config) => {
712
+ // We decide the constructor we want to call depending on the parameters
713
+ return config ? lib.Node.createWithConfig(config) : lib.Node.createDefault();
714
+ });
715
+ patch(lib.Node.prototype, 'free', function () {
716
+ // Since we handle the memory allocation ourselves (via lib.Node.create),
717
+ // we also need to handle the deallocation
718
+ lib.Node.destroy(this);
719
+ });
720
+ patch(lib.Node.prototype, 'freeRecursive', function () {
721
+ for (let t = 0, T = this.getChildCount(); t < T; ++t) {
722
+ this.getChild(0).freeRecursive();
723
+ }
724
+ this.free();
725
+ });
726
+ patch(lib.Node.prototype, 'calculateLayout', function (original) {
727
+ let width = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;
728
+ let height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NaN;
729
+ let direction = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Direction.LTR;
730
+ // Just a small patch to add support for the function default parameters
731
+ return original.call(this, width, height, direction);
732
+ });
733
+ return {
734
+ Config: lib.Config,
735
+ Node: lib.Node,
736
+ ...constants
737
+ };
738
+ }
739
+
740
+ /**
741
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
742
+ *
743
+ * This source code is licensed under the MIT license found in the
744
+ * LICENSE file in the root directory of this source tree.
745
+ *
746
+ * @format
747
+ */
748
+
749
+ wrapAssembly(await loadYoga());
750
+
751
+ var invariant = function() {
752
+ };
753
+
754
+ const clamp$1 = (min, max, v) => Math.min(Math.max(v, min), max);
755
+
756
+ const progress = (from, to, value) => {
757
+ const toFromDifference = to - from;
758
+ return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;
759
+ };
760
+
761
+ const mix = (from, to, progress) => -progress * from + progress * to + from;
762
+
763
+ const clamp = (min, max) => (v) => Math.max(Math.min(v, max), min);
764
+ const sanitize = (v) => (v % 1 ? Number(v.toFixed(5)) : v);
765
+ const floatRegex = /(-)?([\d]*\.?[\d])+/g;
766
+ const colorRegex = /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))/gi;
767
+ const singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))$/i;
768
+ function isString(v) {
769
+ return typeof v === 'string';
770
+ }
771
+
772
+ const number = {
773
+ test: (v) => typeof v === 'number',
774
+ parse: parseFloat,
775
+ transform: (v) => v,
776
+ };
777
+ const alpha = Object.assign(Object.assign({}, number), { transform: clamp(0, 1) });
778
+ Object.assign(Object.assign({}, number), { default: 1 });
779
+
780
+ const createUnitType = (unit) => ({
781
+ test: (v) => isString(v) && v.endsWith(unit) && v.split(' ').length === 1,
782
+ parse: parseFloat,
783
+ transform: (v) => `${v}${unit}`,
784
+ });
785
+ const percent = createUnitType('%');
786
+ Object.assign(Object.assign({}, percent), { parse: (v) => percent.parse(v) / 100, transform: (v) => percent.transform(v * 100) });
787
+
788
+ const isColorString = (type, testProp) => (v) => {
789
+ return Boolean((isString(v) && singleColorRegex.test(v) && v.startsWith(type)) ||
790
+ (testProp && Object.prototype.hasOwnProperty.call(v, testProp)));
791
+ };
792
+ const splitColor = (aName, bName, cName) => (v) => {
793
+ if (!isString(v))
794
+ return v;
795
+ const [a, b, c, alpha] = v.match(floatRegex);
796
+ return {
797
+ [aName]: parseFloat(a),
798
+ [bName]: parseFloat(b),
799
+ [cName]: parseFloat(c),
800
+ alpha: alpha !== undefined ? parseFloat(alpha) : 1,
801
+ };
802
+ };
803
+
804
+ const hsla = {
805
+ test: isColorString('hsl', 'hue'),
806
+ parse: splitColor('hue', 'saturation', 'lightness'),
807
+ transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {
808
+ return ('hsla(' +
809
+ Math.round(hue) +
810
+ ', ' +
811
+ percent.transform(sanitize(saturation)) +
812
+ ', ' +
813
+ percent.transform(sanitize(lightness)) +
814
+ ', ' +
815
+ sanitize(alpha.transform(alpha$1)) +
816
+ ')');
817
+ },
818
+ };
819
+
820
+ const clampRgbUnit = clamp(0, 255);
821
+ const rgbUnit = Object.assign(Object.assign({}, number), { transform: (v) => Math.round(clampRgbUnit(v)) });
822
+ const rgba = {
823
+ test: isColorString('rgb', 'red'),
824
+ parse: splitColor('red', 'green', 'blue'),
825
+ transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => 'rgba(' +
826
+ rgbUnit.transform(red) +
827
+ ', ' +
828
+ rgbUnit.transform(green) +
829
+ ', ' +
830
+ rgbUnit.transform(blue) +
831
+ ', ' +
832
+ sanitize(alpha.transform(alpha$1)) +
833
+ ')',
834
+ };
835
+
836
+ function parseHex(v) {
837
+ let r = '';
838
+ let g = '';
839
+ let b = '';
840
+ let a = '';
841
+ if (v.length > 5) {
842
+ r = v.substr(1, 2);
843
+ g = v.substr(3, 2);
844
+ b = v.substr(5, 2);
845
+ a = v.substr(7, 2);
846
+ }
847
+ else {
848
+ r = v.substr(1, 1);
849
+ g = v.substr(2, 1);
850
+ b = v.substr(3, 1);
851
+ a = v.substr(4, 1);
852
+ r += r;
853
+ g += g;
854
+ b += b;
855
+ a += a;
856
+ }
857
+ return {
858
+ red: parseInt(r, 16),
859
+ green: parseInt(g, 16),
860
+ blue: parseInt(b, 16),
861
+ alpha: a ? parseInt(a, 16) / 255 : 1,
862
+ };
863
+ }
864
+ const hex = {
865
+ test: isColorString('#'),
866
+ parse: parseHex,
867
+ transform: rgba.transform,
868
+ };
869
+
870
+ const color = {
871
+ test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),
872
+ parse: (v) => {
873
+ if (rgba.test(v)) {
874
+ return rgba.parse(v);
875
+ }
876
+ else if (hsla.test(v)) {
877
+ return hsla.parse(v);
878
+ }
879
+ else {
880
+ return hex.parse(v);
881
+ }
882
+ },
883
+ transform: (v) => {
884
+ return isString(v)
885
+ ? v
886
+ : v.hasOwnProperty('red')
887
+ ? rgba.transform(v)
888
+ : hsla.transform(v);
889
+ },
890
+ };
891
+
892
+ const colorToken = '${c}';
893
+ const numberToken = '${n}';
894
+ function test(v) {
895
+ var _a, _b, _c, _d;
896
+ return (isNaN(v) &&
897
+ isString(v) &&
898
+ ((_b = (_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) + ((_d = (_c = v.match(colorRegex)) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0);
899
+ }
900
+ function analyse$1(v) {
901
+ if (typeof v === 'number')
902
+ v = `${v}`;
903
+ const values = [];
904
+ let numColors = 0;
905
+ const colors = v.match(colorRegex);
906
+ if (colors) {
907
+ numColors = colors.length;
908
+ v = v.replace(colorRegex, colorToken);
909
+ values.push(...colors.map(color.parse));
910
+ }
911
+ const numbers = v.match(floatRegex);
912
+ if (numbers) {
913
+ v = v.replace(floatRegex, numberToken);
914
+ values.push(...numbers.map(number.parse));
915
+ }
916
+ return { values, numColors, tokenised: v };
917
+ }
918
+ function parse(v) {
919
+ return analyse$1(v).values;
920
+ }
921
+ function createTransformer(v) {
922
+ const { values, numColors, tokenised } = analyse$1(v);
923
+ const numValues = values.length;
924
+ return (v) => {
925
+ let output = tokenised;
926
+ for (let i = 0; i < numValues; i++) {
927
+ output = output.replace(i < numColors ? colorToken : numberToken, i < numColors ? color.transform(v[i]) : sanitize(v[i]));
928
+ }
929
+ return output;
930
+ };
931
+ }
932
+ const convertNumbersToZero = (v) => typeof v === 'number' ? 0 : v;
933
+ function getAnimatableNone(v) {
934
+ const parsed = parse(v);
935
+ const transformer = createTransformer(v);
936
+ return transformer(parsed.map(convertNumbersToZero));
937
+ }
938
+ const complex = { test, parse, createTransformer, getAnimatableNone };
939
+
940
+ function hueToRgb(p, q, t) {
941
+ if (t < 0)
942
+ t += 1;
943
+ if (t > 1)
944
+ t -= 1;
945
+ if (t < 1 / 6)
946
+ return p + (q - p) * 6 * t;
947
+ if (t < 1 / 2)
948
+ return q;
949
+ if (t < 2 / 3)
950
+ return p + (q - p) * (2 / 3 - t) * 6;
951
+ return p;
952
+ }
953
+ function hslaToRgba({ hue, saturation, lightness, alpha }) {
954
+ hue /= 360;
955
+ saturation /= 100;
956
+ lightness /= 100;
957
+ let red = 0;
958
+ let green = 0;
959
+ let blue = 0;
960
+ if (!saturation) {
961
+ red = green = blue = lightness;
962
+ }
963
+ else {
964
+ const q = lightness < 0.5
965
+ ? lightness * (1 + saturation)
966
+ : lightness + saturation - lightness * saturation;
967
+ const p = 2 * lightness - q;
968
+ red = hueToRgb(p, q, hue + 1 / 3);
969
+ green = hueToRgb(p, q, hue);
970
+ blue = hueToRgb(p, q, hue - 1 / 3);
971
+ }
972
+ return {
973
+ red: Math.round(red * 255),
974
+ green: Math.round(green * 255),
975
+ blue: Math.round(blue * 255),
976
+ alpha,
977
+ };
978
+ }
979
+
980
+ const mixLinearColor = (from, to, v) => {
981
+ const fromExpo = from * from;
982
+ const toExpo = to * to;
983
+ return Math.sqrt(Math.max(0, v * (toExpo - fromExpo) + fromExpo));
984
+ };
985
+ const colorTypes = [hex, rgba, hsla];
986
+ const getColorType = (v) => colorTypes.find((type) => type.test(v));
987
+ const mixColor = (from, to) => {
988
+ let fromColorType = getColorType(from);
989
+ let toColorType = getColorType(to);
990
+ let fromColor = fromColorType.parse(from);
991
+ let toColor = toColorType.parse(to);
992
+ if (fromColorType === hsla) {
993
+ fromColor = hslaToRgba(fromColor);
994
+ fromColorType = rgba;
995
+ }
996
+ if (toColorType === hsla) {
997
+ toColor = hslaToRgba(toColor);
998
+ toColorType = rgba;
999
+ }
1000
+ const blended = Object.assign({}, fromColor);
1001
+ return (v) => {
1002
+ for (const key in blended) {
1003
+ if (key !== "alpha") {
1004
+ blended[key] = mixLinearColor(fromColor[key], toColor[key], v);
1005
+ }
1006
+ }
1007
+ blended.alpha = mix(fromColor.alpha, toColor.alpha, v);
1008
+ return fromColorType.transform(blended);
1009
+ };
1010
+ };
1011
+
1012
+ const isNum = (v) => typeof v === 'number';
1013
+
1014
+ const combineFunctions = (a, b) => (v) => b(a(v));
1015
+ const pipe = (...transformers) => transformers.reduce(combineFunctions);
1016
+
1017
+ function getMixer(origin, target) {
1018
+ if (isNum(origin)) {
1019
+ return (v) => mix(origin, target, v);
1020
+ }
1021
+ else if (color.test(origin)) {
1022
+ return mixColor(origin, target);
1023
+ }
1024
+ else {
1025
+ return mixComplex(origin, target);
1026
+ }
1027
+ }
1028
+ const mixArray = (from, to) => {
1029
+ const output = [...from];
1030
+ const numValues = output.length;
1031
+ const blendValue = from.map((fromThis, i) => getMixer(fromThis, to[i]));
1032
+ return (v) => {
1033
+ for (let i = 0; i < numValues; i++) {
1034
+ output[i] = blendValue[i](v);
1035
+ }
1036
+ return output;
1037
+ };
1038
+ };
1039
+ const mixObject = (origin, target) => {
1040
+ const output = Object.assign(Object.assign({}, origin), target);
1041
+ const blendValue = {};
1042
+ for (const key in output) {
1043
+ if (origin[key] !== undefined && target[key] !== undefined) {
1044
+ blendValue[key] = getMixer(origin[key], target[key]);
1045
+ }
1046
+ }
1047
+ return (v) => {
1048
+ for (const key in blendValue) {
1049
+ output[key] = blendValue[key](v);
1050
+ }
1051
+ return output;
1052
+ };
1053
+ };
1054
+ function analyse(value) {
1055
+ const parsed = complex.parse(value);
1056
+ const numValues = parsed.length;
1057
+ let numNumbers = 0;
1058
+ let numRGB = 0;
1059
+ let numHSL = 0;
1060
+ for (let i = 0; i < numValues; i++) {
1061
+ if (numNumbers || typeof parsed[i] === "number") {
1062
+ numNumbers++;
1063
+ }
1064
+ else {
1065
+ if (parsed[i].hue !== undefined) {
1066
+ numHSL++;
1067
+ }
1068
+ else {
1069
+ numRGB++;
1070
+ }
1071
+ }
1072
+ }
1073
+ return { parsed, numNumbers, numRGB, numHSL };
1074
+ }
1075
+ const mixComplex = (origin, target) => {
1076
+ const template = complex.createTransformer(target);
1077
+ const originStats = analyse(origin);
1078
+ const targetStats = analyse(target);
1079
+ const canInterpolate = originStats.numHSL === targetStats.numHSL &&
1080
+ originStats.numRGB === targetStats.numRGB &&
1081
+ originStats.numNumbers >= targetStats.numNumbers;
1082
+ if (canInterpolate) {
1083
+ return pipe(mixArray(originStats.parsed, targetStats.parsed), template);
1084
+ }
1085
+ else {
1086
+ return (p) => `${p > 0 ? target : origin}`;
1087
+ }
1088
+ };
1089
+
1090
+ const mixNumber = (from, to) => (p) => mix(from, to, p);
1091
+ function detectMixerFactory(v) {
1092
+ if (typeof v === 'number') {
1093
+ return mixNumber;
1094
+ }
1095
+ else if (typeof v === 'string') {
1096
+ if (color.test(v)) {
1097
+ return mixColor;
1098
+ }
1099
+ else {
1100
+ return mixComplex;
1101
+ }
1102
+ }
1103
+ else if (Array.isArray(v)) {
1104
+ return mixArray;
1105
+ }
1106
+ else if (typeof v === 'object') {
1107
+ return mixObject;
1108
+ }
1109
+ }
1110
+ function createMixers(output, ease, customMixer) {
1111
+ const mixers = [];
1112
+ const mixerFactory = customMixer || detectMixerFactory(output[0]);
1113
+ const numMixers = output.length - 1;
1114
+ for (let i = 0; i < numMixers; i++) {
1115
+ let mixer = mixerFactory(output[i], output[i + 1]);
1116
+ if (ease) {
1117
+ const easingFunction = Array.isArray(ease) ? ease[i] : ease;
1118
+ mixer = pipe(easingFunction, mixer);
1119
+ }
1120
+ mixers.push(mixer);
1121
+ }
1122
+ return mixers;
1123
+ }
1124
+ function fastInterpolate([from, to], [mixer]) {
1125
+ return (v) => mixer(progress(from, to, v));
1126
+ }
1127
+ function slowInterpolate(input, mixers) {
1128
+ const inputLength = input.length;
1129
+ const lastInputIndex = inputLength - 1;
1130
+ return (v) => {
1131
+ let mixerIndex = 0;
1132
+ let foundMixerIndex = false;
1133
+ if (v <= input[0]) {
1134
+ foundMixerIndex = true;
1135
+ }
1136
+ else if (v >= input[lastInputIndex]) {
1137
+ mixerIndex = lastInputIndex - 1;
1138
+ foundMixerIndex = true;
1139
+ }
1140
+ if (!foundMixerIndex) {
1141
+ let i = 1;
1142
+ for (; i < inputLength; i++) {
1143
+ if (input[i] > v || i === lastInputIndex) {
1144
+ break;
1145
+ }
1146
+ }
1147
+ mixerIndex = i - 1;
1148
+ }
1149
+ const progressInRange = progress(input[mixerIndex], input[mixerIndex + 1], v);
1150
+ return mixers[mixerIndex](progressInRange);
1151
+ };
1152
+ }
1153
+ function interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {
1154
+ const inputLength = input.length;
1155
+ invariant(inputLength === output.length);
1156
+ invariant(!ease || !Array.isArray(ease) || ease.length === inputLength - 1);
1157
+ if (input[0] > input[inputLength - 1]) {
1158
+ input = [].concat(input);
1159
+ output = [].concat(output);
1160
+ input.reverse();
1161
+ output.reverse();
1162
+ }
1163
+ const mixers = createMixers(output, ease, mixer);
1164
+ const interpolator = inputLength === 2
1165
+ ? fastInterpolate(input, mixers)
1166
+ : slowInterpolate(input, mixers);
1167
+ return isClamp
1168
+ ? (v) => interpolator(clamp$1(input[0], input[inputLength - 1], v))
1169
+ : interpolator;
1170
+ }
1171
+
1172
+ const reverseEasing = easing => p => 1 - easing(1 - p);
1173
+ const mirrorEasing = easing => p => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;
1174
+ const createExpoIn = (power) => p => Math.pow(p, power);
1175
+ const createBackIn = (power) => p => p * p * ((power + 1) * p - power);
1176
+ const createAnticipate = (power) => {
1177
+ const backEasing = createBackIn(power);
1178
+ return p => (p *= 2) < 1
1179
+ ? 0.5 * backEasing(p)
1180
+ : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));
1181
+ };
1182
+
1183
+ const DEFAULT_OVERSHOOT_STRENGTH = 1.525;
1184
+ const BOUNCE_FIRST_THRESHOLD = 4.0 / 11.0;
1185
+ const BOUNCE_SECOND_THRESHOLD = 8.0 / 11.0;
1186
+ const BOUNCE_THIRD_THRESHOLD = 9.0 / 10.0;
1187
+ const linear = p => p;
1188
+ const easeIn = createExpoIn(2);
1189
+ const easeOut = reverseEasing(easeIn);
1190
+ const easeInOut = mirrorEasing(easeIn);
1191
+ const circIn = p => 1 - Math.sin(Math.acos(p));
1192
+ const circOut = reverseEasing(circIn);
1193
+ const circInOut = mirrorEasing(circOut);
1194
+ const backIn = createBackIn(DEFAULT_OVERSHOOT_STRENGTH);
1195
+ const backOut = reverseEasing(backIn);
1196
+ const backInOut = mirrorEasing(backIn);
1197
+ const anticipate = createAnticipate(DEFAULT_OVERSHOOT_STRENGTH);
1198
+ const ca = 4356.0 / 361.0;
1199
+ const cb = 35442.0 / 1805.0;
1200
+ const cc = 16061.0 / 1805.0;
1201
+ const bounceOut = (p) => {
1202
+ if (p === 1 || p === 0)
1203
+ return p;
1204
+ const p2 = p * p;
1205
+ return p < BOUNCE_FIRST_THRESHOLD
1206
+ ? 7.5625 * p2
1207
+ : p < BOUNCE_SECOND_THRESHOLD
1208
+ ? 9.075 * p2 - 9.9 * p + 3.4
1209
+ : p < BOUNCE_THIRD_THRESHOLD
1210
+ ? ca * p2 - cb * p + cc
1211
+ : 10.8 * p * p - 20.52 * p + 10.72;
1212
+ };
1213
+ const bounceIn = reverseEasing(bounceOut);
1214
+ const bounceInOut = (p) => p < 0.5
1215
+ ? 0.5 * (1.0 - bounceOut(1.0 - p * 2.0))
1216
+ : 0.5 * bounceOut(p * 2.0 - 1.0) + 0.5;
1217
+
1218
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
1219
+
1220
+ function getDefaultExportFromCjs (x) {
1221
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
1222
+ }
1223
+
1224
+ var squirrelly_min = {exports: {}};
1225
+
1226
+ (function (module, exports) {
1227
+ !function(e,t){t(exports);}(commonjsGlobal,(function(e){function t(e){var n,r,a=new Error(e);return n=a,r=t.prototype,Object.setPrototypeOf?Object.setPrototypeOf(n,r):n.__proto__=r,a}function n(e,n,r){var a=n.slice(0,r).split(/\n/),i=a.length,s=a[i-1].length+1;throw t(e+=" at line "+i+" col "+s+":\n\n "+n.split(/\n/)[i-1]+"\n "+Array(s).join(" ")+"^")}t.prototype=Object.create(Error.prototype,{name:{value:"Squirrelly Error",enumerable:!1}});var r=new Function("return this")().Promise,a=!1;try{a=new Function("return (async function(){}).constructor")();}catch(e){if(!(e instanceof SyntaxError))throw e}function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function s(e,t,n){for(var r in t)i(t,r)&&(null==t[r]||"object"!=typeof t[r]||"storage"!==r&&"prefixes"!==r||n?e[r]=t[r]:e[r]=s({},t[r]));return e}var c=/^async +/,o=/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\${)[^\\`])*`/g,l=/'(?:\\[\s\w"'\\`]|[^\n\r'\\])*?'/g,f=/"(?:\\[\s\w"'\\`]|[^\n\r"\\])*?"/g,u=/[.*+\-?^${}()|[\]\\]/g;function p(e){return u.test(e)?e.replace(u,"\\$&"):e}function h(e,r){r.rmWhitespace&&(e=e.replace(/[\r\n]+/g,"\n").replace(/^\s+|\s+$/gm,"")),o.lastIndex=0,l.lastIndex=0,f.lastIndex=0;var a=r.prefixes,i=[a.h,a.b,a.i,a.r,a.c,a.e].reduce((function(e,t){return e&&t?e+"|"+p(t):t?p(t):e}),""),s=new RegExp("([|()]|=>)|('|\"|`|\\/\\*)|\\s*((\\/)?(-|_)?"+p(r.tags[1])+")","g"),u=new RegExp("([^]*?)"+p(r.tags[0])+"(-|_)?\\s*("+i+")?\\s*","g"),h=0,d=!1;function g(t,a){var i,p={f:[]},g=0,v="c";function m(t){var a=e.slice(h,t),i=a.trim();if("f"===v)"safe"===i?p.raw=!0:r.async&&c.test(i)?(i=i.replace(c,""),p.f.push([i,"",!0])):p.f.push([i,""]);else if("fp"===v)p.f[p.f.length-1][1]+=i;else if("err"===v){if(i){var s=a.search(/\S/);n("invalid syntax",e,h+s);}}else p[v]=i;h=t+1;}for("h"===a||"b"===a||"c"===a?v="n":"r"===a&&(p.raw=!0,a="i"),s.lastIndex=h;null!==(i=s.exec(e));){var y=i[1],x=i[2],b=i[3],w=i[4],F=i[5],S=i.index;if(y)"("===y?(0===g&&("n"===v?(m(S),v="p"):"f"===v&&(m(S),v="fp")),g++):")"===y?0===--g&&"c"!==v&&(m(S),v="err"):0===g&&"|"===y?(m(S),v="f"):"=>"===y&&(m(S),h+=1,v="res");else if(x){if("/*"===x){var I=e.indexOf("*/",s.lastIndex);-1===I&&n("unclosed comment",e,i.index),s.lastIndex=I+2;}else if("'"===x){l.lastIndex=i.index,l.exec(e)?s.lastIndex=l.lastIndex:n("unclosed string",e,i.index);}else if('"'===x){f.lastIndex=i.index,f.exec(e)?s.lastIndex=f.lastIndex:n("unclosed string",e,i.index);}else if("`"===x){o.lastIndex=i.index,o.exec(e)?s.lastIndex=o.lastIndex:n("unclosed string",e,i.index);}}else if(b)return m(S),h=S+i[0].length,u.lastIndex=h,d=F,w&&"h"===a&&(a="s"),p.t=a,p}return n("unclosed tag",e,t),p}var v=function i(s,o){s.b=[],s.d=[];var l,f=!1,p=[];function v(e,t){e&&(e=function(e,t,n,r){var a,i;return "string"==typeof t.autoTrim?a=i=t.autoTrim:Array.isArray(t.autoTrim)&&(a=t.autoTrim[1],i=t.autoTrim[0]),(n||!1===n)&&(a=n),(r||!1===r)&&(i=r),"slurp"===a&&"slurp"===i?e.trim():("_"===a||"slurp"===a?e=String.prototype.trimLeft?e.trimLeft():e.replace(/^[\s\uFEFF\xA0]+/,""):"-"!==a&&"nl"!==a||(e=e.replace(/^(?:\n|\r|\r\n)/,"")),"_"===i||"slurp"===i?e=String.prototype.trimRight?e.trimRight():e.replace(/[\s\uFEFF\xA0]+$/,""):"-"!==i&&"nl"!==i||(e=e.replace(/(?:\n|\r|\r\n)$/,"")),e)}(e,r,d,t))&&(e=e.replace(/\\|'/g,"\\$&").replace(/\r\n|\n|\r/g,"\\n"),p.push(e));}for(;null!==(l=u.exec(e));){var m,y=l[1],x=l[2],b=l[3]||"";for(var w in a)if(a[w]===b){m=w;break}v(y,x),h=l.index+l[0].length,m||n("unrecognized tag type: "+b,e,h);var F=g(l.index,m),S=F.t;if("h"===S){var I=F.n||"";r.async&&c.test(I)&&(F.a=!0,F.n=I.replace(c,"")),F=i(F),p.push(F);}else if("c"===S){if(s.n===F.n)return f?(f.d=p,s.b.push(f)):s.d=p,s;n("Helper start and end don't match",e,l.index+l[0].length);}else if("b"===S){f?(f.d=p,s.b.push(f)):s.d=p;var R=F.n||"";r.async&&c.test(R)&&(F.a=!0,F.n=R.replace(c,"")),f=F,p=[];}else if("s"===S){var T=F.n||"";r.async&&c.test(T)&&(F.a=!0,F.n=T.replace(c,"")),p.push(F);}else p.push(F);}if(!o)throw t('unclosed helper "'+s.n+'"');return v(e.slice(h,e.length),!1),s.d=p,s}({f:[]},!0);if(r.plugins)for(var m=0;m<r.plugins.length;m++){var y=r.plugins[m];y.processAST&&(v.d=y.processAST(v.d,r));}return v.d}function d(e,t){var n=h(e,t),r="var tR='';"+(t.useWith?"with("+t.varName+"||{}){":"")+x(n,t)+"if(cb){cb(null,tR)} return tR"+(t.useWith?"}":"");if(t.plugins)for(var a=0;a<t.plugins.length;a++){var i=t.plugins[a];i.processFnString&&(r=i.processFnString(r,t));}return r}function g(e,t){for(var n=0;n<t.length;n++){var r=t[n][0],a=t[n][1];e=(t[n][2]?"await ":"")+"c.l('F','"+r+"')("+e,a&&(e+=","+a),e+=")";}return e}function v(e,t,n,r,a,i){var s="{exec:"+(a?"async ":"")+y(n,t,e)+",params:["+r+"]";return i&&(s+=",name:'"+i+"'"),a&&(s+=",async:true"),s+="}"}function m(e,t){for(var n="[",r=0;r<e.length;r++){var a=e[r];n+=v(t,a.res||"",a.d,a.p||"",a.a,a.n),r<e.length&&(n+=",");}return n+="]"}function y(e,t,n){return "function("+t+"){var tR='';"+x(e,n)+"return tR}"}function x(e,t){for(var n=0,r=e.length,a="";n<r;n++){var i=e[n];if("string"==typeof i){a+="tR+='"+i+"';";}else {var s=i.t,c=i.c||"",o=i.f,l=i.n||"",f=i.p||"",u=i.res||"",p=i.b,h=!!i.a;if("i"===s){t.defaultFilter&&(c="c.l('F','"+t.defaultFilter+"')("+c+")");var d=g(c,o);!i.raw&&t.autoEscape&&(d="c.l('F','e')("+d+")"),a+="tR+="+d+";";}else if("h"===s)if(t.storage.nativeHelpers.get(l))a+=t.storage.nativeHelpers.get(l)(i,t);else {var y=(h?"await ":"")+"c.l('H','"+l+"')("+v(t,u,i.d,f,h);y+=p?","+m(p,t):",[]",a+="tR+="+g(y+=",c)",o)+";";}else "s"===s?a+="tR+="+g((h?"await ":"")+"c.l('H','"+l+"')({params:["+f+"]},[],c)",o)+";":"e"===s&&(a+=c+"\n");}}return a}var b=function(){function e(e){this.cache=e;}return e.prototype.define=function(e,t){this.cache[e]=t;},e.prototype.get=function(e){return this.cache[e]},e.prototype.remove=function(e){delete this.cache[e];},e.prototype.reset=function(){this.cache={};},e.prototype.load=function(e){s(this.cache,e,!0);},e}();function w(e,n,r,a){if(n&&n.length>0)throw t((a?"Native":"")+"Helper '"+e+"' doesn't accept blocks");if(r&&r.length>0)throw t((a?"Native":"")+"Helper '"+e+"' doesn't accept filters")}var F={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function S(e){return F[e]}var I=new b({}),R=new b({each:function(e,t){var n="",r=e.params[0];if(w("each",t,!1),e.async)return new Promise((function(t){!function e(t,n,r,a,i){r(t[n],n).then((function(s){a+=s,n===t.length-1?i(a):e(t,n+1,r,a,i);}));}(r,0,e.exec,n,t);}));for(var a=0;a<r.length;a++)n+=e.exec(r[a],a);return n},foreach:function(e,t){var n=e.params[0];if(w("foreach",t,!1),e.async)return new Promise((function(t){!function e(t,n,r,a,i,s){a(n[r],t[n[r]]).then((function(c){i+=c,r===n.length-1?s(i):e(t,n,r+1,a,i,s);}));}(n,Object.keys(n),0,e.exec,"",t);}));var r="";for(var a in n)i(n,a)&&(r+=e.exec(a,n[a]));return r},include:function(e,n,r){w("include",n,!1);var a=r.storage.templates.get(e.params[0]);if(!a)throw t('Could not fetch template "'+e.params[0]+'"');return a(e.params[1],r)},extends:function(e,n,r){var a=e.params[1]||{};a.content=e.exec();for(var i=0;i<n.length;i++){var s=n[i];a[s.name]=s.exec();}var c=r.storage.templates.get(e.params[0]);if(!c)throw t('Could not fetch template "'+e.params[0]+'"');return c(a,r)},useScope:function(e,t){return w("useScope",t,!1),e.exec(e.params[0])}}),T=new b({if:function(e,t){w("if",!1,e.f,!0);var n="if("+e.p+"){"+x(e.d,t)+"}";if(e.b)for(var r=0;r<e.b.length;r++){var a=e.b[r];"else"===a.n?n+="else{"+x(a.d,t)+"}":"elif"===a.n&&(n+="else if("+a.p+"){"+x(a.d,t)+"}");}return n},try:function(e,n){if(w("try",!1,e.f,!0),!e.b||1!==e.b.length||"catch"!==e.b[0].n)throw t("native helper 'try' only accepts 1 block, 'catch'");var r="try{"+x(e.d,n)+"}",a=e.b[0];return r+="catch"+(a.res?"("+a.res+")":"")+"{"+x(a.d,n)+"}"},block:function(e,t){return w("block",e.b,e.f,!0),"if(!"+t.varName+"["+e.p+"]){tR+=("+y(e.d,"",t)+")()}else{tR+="+t.varName+"["+e.p+"]}"}}),E=new b({e:function(e){var t=String(e);return /[&<>"']/.test(t)?t.replace(/[&<>"']/g,S):t}}),j={varName:"it",autoTrim:[!1,"nl"],autoEscape:!0,defaultFilter:!1,tags:["{{","}}"],l:function(e,n){if("H"===e){var r=this.storage.helpers.get(n);if(r)return r;throw t("Can't find helper '"+n+"'")}if("F"===e){var a=this.storage.filters.get(n);if(a)return a;throw t("Can't find filter '"+n+"'")}},async:!1,storage:{helpers:R,nativeHelpers:T,filters:E,templates:I},prefixes:{h:"@",b:"#",i:"",r:"*",c:"/",e:"!"},cache:!1,plugins:[],useWith:!1};function H(e,t){var n={};return s(n,j),t&&s(n,t),e&&s(n,e),n.l.bind(n),n}function O(e,n){var r=H(n||{}),i=Function;if(r.async){if(!a)throw t("This environment doesn't support async/await");i=a;}try{return new i(r.varName,"c","cb",d(e,r))}catch(n){throw n instanceof SyntaxError?t("Bad template syntax\n\n"+n.message+"\n"+Array(n.message.length+1).join("=")+"\n"+d(e,r)):n}}function _(e,t){var n;return t.cache&&t.name&&t.storage.templates.get(t.name)?t.storage.templates.get(t.name):(n="function"==typeof e?e:O(e,t),t.cache&&t.name&&t.storage.templates.define(t.name,n),n)}j.l.bind(j),e.compile=O,e.compileScope=x,e.compileScopeIntoFunction=y,e.compileToString=d,e.defaultConfig=j,e.filters=E,e.getConfig=H,e.helpers=R,e.nativeHelpers=T,e.parse=h,e.render=function(e,n,a,i){var s=H(a||{});if(!s.async)return _(e,s)(n,s);if(!i){if("function"==typeof r)return new r((function(t,r){try{t(_(e,s)(n,s));}catch(e){r(e);}}));throw t("Please provide a callback function, this env doesn't support Promises")}try{_(e,s)(n,s,i);}catch(e){return i(e)}},e.templates=I,Object.defineProperty(e,"__esModule",{value:!0});}));
1228
+
1229
+ } (squirrelly_min, squirrelly_min.exports));
1230
+
1231
+ var squirrelly_minExports = squirrelly_min.exports;
1232
+
1233
+ const copyProperty = (to, from, property, ignoreNonConfigurable) => {
1234
+ // `Function#length` should reflect the parameters of `to` not `from` since we keep its body.
1235
+ // `Function#prototype` is non-writable and non-configurable so can never be modified.
1236
+ if (property === 'length' || property === 'prototype') {
1237
+ return;
1238
+ }
1239
+
1240
+ // `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.
1241
+ if (property === 'arguments' || property === 'caller') {
1242
+ return;
1243
+ }
1244
+
1245
+ const toDescriptor = Object.getOwnPropertyDescriptor(to, property);
1246
+ const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);
1247
+
1248
+ if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {
1249
+ return;
1250
+ }
1251
+
1252
+ Object.defineProperty(to, property, fromDescriptor);
1253
+ };
1254
+
1255
+ // `Object.defineProperty()` throws if the property exists, is not configurable and either:
1256
+ // - one its descriptors is changed
1257
+ // - it is non-writable and its value is changed
1258
+ const canCopyProperty = function (toDescriptor, fromDescriptor) {
1259
+ return toDescriptor === undefined || toDescriptor.configurable || (
1260
+ toDescriptor.writable === fromDescriptor.writable &&
1261
+ toDescriptor.enumerable === fromDescriptor.enumerable &&
1262
+ toDescriptor.configurable === fromDescriptor.configurable &&
1263
+ (toDescriptor.writable || toDescriptor.value === fromDescriptor.value)
1264
+ );
1265
+ };
1266
+
1267
+ const changePrototype = (to, from) => {
1268
+ const fromPrototype = Object.getPrototypeOf(from);
1269
+ if (fromPrototype === Object.getPrototypeOf(to)) {
1270
+ return;
1271
+ }
1272
+
1273
+ Object.setPrototypeOf(to, fromPrototype);
1274
+ };
1275
+
1276
+ const wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\n${fromBody}`;
1277
+
1278
+ const toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');
1279
+ const toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');
1280
+
1281
+ // We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.
1282
+ // We use `bind()` instead of a closure for the same reason.
1283
+ // Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.
1284
+ const changeToString = (to, from, name) => {
1285
+ const withName = name === '' ? '' : `with ${name.trim()}() `;
1286
+ const newToString = wrappedToString.bind(null, withName, from.toString());
1287
+ // Ensure `to.toString.toString` is non-enumerable and has the same `same`
1288
+ Object.defineProperty(newToString, 'name', toStringName);
1289
+ Object.defineProperty(to, 'toString', {...toStringDescriptor, value: newToString});
1290
+ };
1291
+
1292
+ function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {
1293
+ const {name} = to;
1294
+
1295
+ for (const property of Reflect.ownKeys(from)) {
1296
+ copyProperty(to, from, property, ignoreNonConfigurable);
1297
+ }
1298
+
1299
+ changePrototype(to, from);
1300
+ changeToString(to, from, name);
1301
+
1302
+ return to;
1303
+ }
1304
+
1305
+ const cacheStore = new WeakMap();
1306
+ /**
1307
+ [Memoize](https://en.wikipedia.org/wiki/Memoization) functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input.
1308
+
1309
+ @param fn - Function to be memoized.
1310
+
1311
+ @example
1312
+ ```
1313
+ import {setTimeout as delay} from 'node:timer/promises';
1314
+ import pMemoize from 'p-memoize';
1315
+ import got from 'got';
1316
+
1317
+ const memoizedGot = pMemoize(got);
1318
+
1319
+ await memoizedGot('https://sindresorhus.com');
1320
+
1321
+ // This call is cached
1322
+ await memoizedGot('https://sindresorhus.com');
1323
+
1324
+ await delay(2000);
1325
+
1326
+ // This call is not cached as the cache has expired
1327
+ await memoizedGot('https://sindresorhus.com');
1328
+ ```
1329
+ */
1330
+ function pMemoize(fn, { cacheKey = ([firstArgument]) => firstArgument, cache = new Map(), } = {}) {
1331
+ // Promise objects can't be serialized so we keep track of them internally and only provide their resolved values to `cache`
1332
+ // `Promise<AsyncReturnType<FunctionToMemoize>>` is used instead of `ReturnType<FunctionToMemoize>` because promise properties are not kept
1333
+ const promiseCache = new Map();
1334
+ const memoized = function (...arguments_) {
1335
+ const key = cacheKey(arguments_);
1336
+ if (promiseCache.has(key)) {
1337
+ return promiseCache.get(key);
1338
+ }
1339
+ const promise = (async () => {
1340
+ try {
1341
+ if (cache && await cache.has(key)) {
1342
+ return (await cache.get(key));
1343
+ }
1344
+ const promise = fn.apply(this, arguments_);
1345
+ const result = await promise;
1346
+ try {
1347
+ return result;
1348
+ }
1349
+ finally {
1350
+ if (cache) {
1351
+ await cache.set(key, result);
1352
+ }
1353
+ }
1354
+ }
1355
+ finally {
1356
+ promiseCache.delete(key);
1357
+ }
1358
+ })();
1359
+ promiseCache.set(key, promise);
1360
+ return promise;
1361
+ };
1362
+ mimicFunction(memoized, fn, {
1363
+ ignoreNonConfigurable: true,
1364
+ });
1365
+ cacheStore.set(memoized, cache);
1366
+ return memoized;
1367
+ }
1368
+
1369
+ function breakWord({ context, word, maxW = Infinity }) {
1370
+ const lines = [];
1371
+ const fullWordMetrics = context.measureText(word);
1372
+ if (fullWordMetrics.width < maxW) {
1373
+ return [{ text: word, metrics: fullWordMetrics }];
1374
+ }
1375
+ for (let i = 0; i < word.length; i++) {
1376
+ const lastLine = lines[lines.length - 1];
1377
+ const newText = (lastLine?.text ?? "") + word[i];
1378
+ const newLineMetrics = context.measureText(newText);
1379
+ if (newLineMetrics.width < maxW) {
1380
+ lines[lastLine ? lines.length - 1 : 0] = {
1381
+ text: newText,
1382
+ metrics: newLineMetrics
1383
+ };
1384
+ } else {
1385
+ lines.push({ text: word[i], metrics: context.measureText(word[i]) });
1386
+ }
1387
+ }
1388
+ return lines;
1389
+ }
1390
+
1391
+ memoize(
1392
+ ({ font, scale, context, maxW, maxH, text, minSize, maxSize }) => {
1393
+ let fontSize = 0;
1394
+ if (maxSize) {
1395
+ const multiplier = 1;
1396
+ fontSize = (minSize ?? 0) * scale;
1397
+ let widestLine = 0;
1398
+ while (maxSize * scale > fontSize + multiplier) {
1399
+ fontSize += multiplier;
1400
+ const lines = getLines({ context, font, fontSize, text, maxW });
1401
+ widestLine = lines.reduce((acc, line) => {
1402
+ if (line.metrics.width > acc) {
1403
+ acc = line.metrics.width;
1404
+ }
1405
+ return acc;
1406
+ }, 0);
1407
+ if (widestLine > maxW || lines.length * fontSize > maxH) {
1408
+ fontSize -= multiplier;
1409
+ break;
1410
+ }
1411
+ }
1412
+ } else {
1413
+ fontSize = parseFloat(font.match(fontSizeRegex)?.groups?.value ?? "0") * scale;
1414
+ }
1415
+ return fontSize;
1416
+ },
1417
+ {
1418
+ cacheKey: ([{ font, text, minSize, maxSize, scale, maxW, maxH }]) => `${font}_${text}_${minSize}_${maxSize}_${scale}_${maxW}_${maxH}`
1419
+ }
1420
+ );
1421
+
1422
+ const easingMap = {
1423
+ linear,
1424
+ easeIn,
1425
+ easeInOut,
1426
+ easeOut,
1427
+ circIn,
1428
+ circInOut,
1429
+ circOut,
1430
+ backIn,
1431
+ backInOut,
1432
+ backOut,
1433
+ anticipate,
1434
+ bounceIn,
1435
+ bounceInOut,
1436
+ bounceOut
1437
+ };
1438
+ memoize(
1439
+ (from, to, { clamp = true, ease = "easeIn", ...options } = {}) => {
1440
+ return interpolate(from, to, { ...options, clamp, ease: easingMap[ease] });
1441
+ },
1442
+ {
1443
+ cacheKey: ([from, to, options]) => JSON.stringify({ from, to, options })
1444
+ }
1445
+ );
1446
+ const fontSizeRegex = /(?<value>\d+\.?\d*)(?=px)/;
1447
+
1448
+ const getLines = memoize(
1449
+ ({ context, font, fontSize, text, maxW = Infinity }) => {
1450
+ try {
1451
+ context.save();
1452
+ context.font = font.replace(fontSizeRegex, fontSize.toString());
1453
+ const newLines = text.split("\n");
1454
+ return newLines.flatMap((line) => {
1455
+ const words = line.split(" ").filter(Boolean);
1456
+ if (!words.length) {
1457
+ return { text: "", metrics: context.measureText("") };
1458
+ }
1459
+ return words.slice(1).reduce(
1460
+ (acc, word) => {
1461
+ const prevLine = acc[acc.length - 1].text;
1462
+ const newLine = `${prevLine} ${word}`.trim();
1463
+ const newMetrics = context.measureText(newLine);
1464
+ if (newMetrics.width > maxW) {
1465
+ acc = [...acc, ...breakWord({ context, word, maxW })];
1466
+ } else {
1467
+ acc[acc.length - 1] = {
1468
+ text: newLine,
1469
+ metrics: newMetrics
1470
+ };
1471
+ }
1472
+ return acc;
1473
+ },
1474
+ breakWord({ context, word: words[0], maxW })
1475
+ );
1476
+ });
1477
+ } finally {
1478
+ context.restore();
1479
+ }
1480
+ },
1481
+ {
1482
+ cacheKey: ([{ font, fontSize, text, maxW }]) => `${font}_${fontSize}_${text}_${maxW}`
1483
+ }
1484
+ );
1485
+
1486
+ const template = {
1487
+ id: "046f363c-960a-449c-ae5e-984ac6ab58c2",
1488
+ version: "3",
1489
+ name: "None",
1490
+ entityId: "none",
1491
+ templateId: "a95e537e-fb4d-4d2f-9c72-86c0925c7176",
1492
+ layouts: [
1493
+ {
1494
+ name: "none",
1495
+ tree: `[
1496
+ {
1497
+ "width": "100%",
1498
+ "height": "100%",
1499
+ "node": {
1500
+ "type": "video",
1501
+ "format": {{ it.videoFormat }},
1502
+ "value": {
1503
+ "id": {{ it.id }},
1504
+ "key": {{ it.key }},
1505
+ "src": {{ it.src }},
1506
+ "playlist": {{ it.playlist }},
1507
+ "poster": {{ it.poster }},
1508
+ "captions": {{ it.captions }},
1509
+ "duration": {{ it.duration }},
1510
+ "startOffset": {{ it.startOffset }},
1511
+ "endOffset": {{ it.endOffset }},
1512
+ "crop": {
1513
+ "x": {{ it.crop?.x }},
1514
+ "y": {{ it.crop?.y }},
1515
+ "width": {{ it.crop?.width }},
1516
+ "height": {{ it.crop?.height }}
1517
+ }
1518
+ }
1519
+ }
1520
+ }
1521
+ ]`
1522
+ }
1523
+ ],
1524
+ content: [
1525
+ {
1526
+ scenes: [
1527
+ {
1528
+ layout: "none",
1529
+ data: `{
1530
+ "id": {{ it._root?.answer?.id }},
1531
+ "key": {{ it._root?.answer?.id + '-intro' }},
1532
+ "poster": {{ it._root?.answer?.media?.thumbnail }},
1533
+ "duration": {{ it._root?.answer?.metadata?.duration }},
1534
+ "startOffset": {{ it._root?.answer?.settings?.startOffset }},
1535
+ "endOffset": {{ it._root?.answer?.settings?.endOffset }},
1536
+ "crop": {
1537
+ "x": {{ it._root?.answer?.settings?.crop?.x }},
1538
+ "y": {{ it._root?.answer?.settings?.crop?.y }},
1539
+ "width": {{ it._root?.answer?.settings?.crop?.width }},
1540
+ "height": {{ it._root?.answer?.settings?.crop?.height }}
1541
+ }
1542
+ }`,
1543
+ derived: `{
1544
+ "src": {{ it._derived?.src }},
1545
+ "playlist": {{ it._derived?.playlist }},
1546
+ "captions": {{ it._derived?.captions }}
1547
+ }`
1548
+ }
1549
+ ],
1550
+ root: "{{ it.intro?.questions?.items }}"
1551
+ },
1552
+ {
1553
+ scenes: [
1554
+ {
1555
+ layout: "none",
1556
+ data: `{
1557
+ "id": {{ it._root?.answer?.id }},
1558
+ "key": {{ it._root?.answer?.id + '-' + it._index }},
1559
+ "poster": {{ it._root?.answer?.media?.thumbnail }},
1560
+ "duration": {{ it._root?.answer?.metadata?.duration }},
1561
+ "startOffset": {{ it._root?.answer?.settings?.startOffset }},
1562
+ "endOffset": {{ it._root?.answer?.settings?.endOffset }},
1563
+ "crop": {
1564
+ "x": {{ it._root?.answer?.settings?.crop?.x }},
1565
+ "y": {{ it._root?.answer?.settings?.crop?.y }},
1566
+ "width": {{ it._root?.answer?.settings?.crop?.width }},
1567
+ "height": {{ it._root?.answer?.settings?.crop?.height }}
1568
+ }
1569
+ }`,
1570
+ derived: `{
1571
+ "src": {{ it._derived?.src }},
1572
+ "playlist": {{ it._derived?.playlist }},
1573
+ "captions": {{ it._derived?.captions }}
1574
+ }`
1575
+ }
1576
+ ],
1577
+ root: "{{ it.questions?.items }}"
1578
+ },
1579
+ {
1580
+ scenes: [
1581
+ {
1582
+ layout: "none",
1583
+ data: `{
1584
+ "id": {{ it._root?.answer?.id }},
1585
+ "key": {{ it._root?.answer?.id + '-outro' }},
1586
+ "poster": {{ it._root?.answer?.media?.thumbnail }},
1587
+ "duration": {{ it._root?.answer?.metadata?.duration }},
1588
+ "startOffset": {{ it._root?.answer?.settings?.startOffset }},
1589
+ "endOffset": {{ it._root?.answer?.settings?.endOffset }},
1590
+ "crop": {
1591
+ "x": {{ it._root?.answer?.settings?.crop?.x }},
1592
+ "y": {{ it._root?.answer?.settings?.crop?.y }},
1593
+ "width": {{ it._root?.answer?.settings?.crop?.width }},
1594
+ "height": {{ it._root?.answer?.settings?.crop?.height }}
1595
+ }
1596
+ }`,
1597
+ derived: `{
1598
+ "src": {{ it._derived?.src }},
1599
+ "playlist": {{ it._derived?.playlist }},
1600
+ "captions": {{ it._derived?.captions }}
1601
+ }`
1602
+ }
1603
+ ],
1604
+ root: "{{ it.outro?.questions?.items }}"
1605
+ }
1606
+ ],
1607
+ system: true,
1608
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
1609
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
1610
+ };
1611
+ ({
1612
+ id: "073977ec-6384-4329-b7c5-8275fb513e74",
1613
+ name: "None",
1614
+ entityId: "none",
1615
+ templateId: "a95e537e-fb4d-4d2f-9c72-86c0925c7176",
1616
+ templates: [template],
1617
+ meta: {
1618
+ frameRate: 30,
1619
+ resolution: 720,
1620
+ transitionDuration: 1 / 3
1621
+ },
1622
+ system: true,
1623
+ default: 0,
1624
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
1625
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
1626
+ });
1627
+
1628
+ async function imageFactory() {
1629
+ if (typeof window === "undefined") {
1630
+ const skiaCanvas = await import('./browser-DfO9Pnu7.js').then(n => n.b);
1631
+ return new skiaCanvas.Image();
1632
+ }
1633
+ return new Image();
1634
+ }
1635
+ pMemoize(async function getImage2(src) {
1636
+ if (!src) {
1637
+ return null;
1638
+ }
1639
+ return new Promise((resolve, reject) => {
1640
+ imageFactory().then((image) => {
1641
+ image.onload = () => {
1642
+ resolve(image);
1643
+ };
1644
+ image.onerror = (e) => {
1645
+ reject(e);
1646
+ };
1647
+ image.src = src;
1648
+ });
1649
+ });
1650
+ });
1651
+ function isPlainObject(value) {
1652
+ if (value === null || typeof value !== "object") {
1653
+ return false;
1654
+ }
1655
+ if (Object.getPrototypeOf(value) === null) {
1656
+ return true;
1657
+ }
1658
+ let proto = value;
1659
+ while (Object.getPrototypeOf(proto) !== null) {
1660
+ proto = Object.getPrototypeOf(proto);
1661
+ }
1662
+ return Object.getPrototypeOf(value) === proto;
1663
+ }
1664
+ function sanitizeString(unsanitized) {
1665
+ return unsanitized.replace(/\\/g, "\\\\").replace(/\//g, "\\/").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t").replace(/\f/g, "\\f").replace(/"/g, '\\"');
1666
+ }
1667
+
1668
+ squirrelly_minExports.filters.define("parse", (data) => {
1669
+ if (typeof data === "undefined") {
1670
+ return null;
1671
+ }
1672
+ if (typeof data === "string") {
1673
+ return `"${sanitizeString(data)}"`;
1674
+ }
1675
+ if (isPlainObject(data) || Array.isArray(data)) {
1676
+ return JSON.stringify(data);
1677
+ }
1678
+ return data;
1679
+ });
1680
+
1681
+ const TEMPLATE_VERSION = "3";
1682
+
1683
+ const name = "@vouchfor/embeds";
1684
+ const version = "0.0.0-experiment.8cafed9";
1685
+ const license = "MIT";
1686
+ const author = "Aaron Williams";
1687
+ const main = "dist/es/embeds.js";
1688
+ const module = "dist/es/embeds.js";
1689
+ const type = "module";
1690
+ const types = "dist/es/src/index.d.ts";
1691
+ const exports = {
1692
+ ".": "./dist/es/embeds.js"
1693
+ };
1694
+ const files = [
1695
+ "dist",
1696
+ "src"
1697
+ ];
1698
+ const publishConfig = {
1699
+ tag: "experiment",
1700
+ access: "public"
1701
+ };
1702
+ const engines = {
1703
+ node: ">=18.18.0"
1704
+ };
1705
+ const scripts = {
1706
+ build: "rm -rf dist && tsc && yarn build:self",
1707
+ "build:deps": "yarn --cwd ../media-player build",
1708
+ "build:self": "vite build --mode iife && vite build --mode es && node scripts/build.cjs",
1709
+ "build:package": "yarn build",
1710
+ "build:storybook": "yarn prebuild && storybook build",
1711
+ "generate:manifest": "wca src --outFile custom-elements.json",
1712
+ lint: "eslint . --quiet",
1713
+ "lint:fix": "eslint . --fix",
1714
+ "lint:staged": "lint-staged",
1715
+ prepublishOnly: "yarn build",
1716
+ size: "size-limit",
1717
+ storybook: "yarn prebuild && storybook dev -p 6007",
1718
+ prebuild: "yarn build:deps && yarn generate:manifest",
1719
+ test: "rm -rf test/lib && yarn prebuild && vite build --mode test && web-test-runner",
1720
+ "test:ci": "yarn test --config web-test-runner.ci.config.js"
1721
+ };
1722
+ const dependencies = {
1723
+ "@a11y/focus-trap": "^1.0.5",
1724
+ "@lit/task": "^1.0.0",
1725
+ "@vouchfor/media-player": "0.0.0-experiment.8cafed9",
1726
+ uuid: "^9.0.1"
1727
+ };
1728
+ const peerDependencies = {
1729
+ lit: "^3.1.2"
1730
+ };
1731
+ const devDependencies = {
1732
+ "@esm-bundle/chai": "^4.3.4-fix.0",
1733
+ "@open-wc/testing": "^4.0.0",
1734
+ "@storybook/addon-essentials": "^8.0.2",
1735
+ "@storybook/addon-links": "^8.0.2",
1736
+ "@storybook/blocks": "^8.0.2",
1737
+ "@storybook/web-components": "^8.0.2",
1738
+ "@storybook/web-components-vite": "^8.0.2",
1739
+ "@svgr/core": "^8.1.0",
1740
+ "@types/flat": "^5.0.5",
1741
+ "@types/mocha": "^10.0.6",
1742
+ "@vouchfor/eslint-config": "^1.0.1",
1743
+ "@vouchfor/prettier-config": "^1.0.1",
1744
+ "@vouchfor/video-utils": "0.0.0-experiment.8cafed9",
1745
+ "@web/dev-server-esbuild": "^1.0.2",
1746
+ "@web/test-runner": "^0.18.1",
1747
+ "@web/test-runner-browserstack": "^0.7.1",
1748
+ "@web/test-runner-mocha": "^0.9.0",
1749
+ "@web/test-runner-playwright": "^0.11.0",
1750
+ glob: "^10.3.10",
1751
+ "lint-staged": "^15.2.2",
1752
+ lit: "^3.1.2",
1753
+ lodash: "^4.17.21",
1754
+ react: "^18.2.0",
1755
+ "react-dom": "^18.2.0",
1756
+ "rollup-plugin-internal": "^1.0.4",
1757
+ "rollup-plugin-tla": "^0.0.2",
1758
+ sinon: "^17.0.1",
1759
+ storybook: "^8.0.2",
1760
+ svgson: "^5.3.1",
1761
+ typescript: "^5.4.3",
1762
+ vite: "^5.2.2",
1763
+ "vite-plugin-commonjs": "^0.10.1",
1764
+ "vite-plugin-dts": "^3.7.3",
1765
+ "web-component-analyzer": "^2.0.0"
1766
+ };
1767
+ const packageJson = {
1768
+ name: name,
1769
+ version: version,
1770
+ license: license,
1771
+ author: author,
1772
+ main: main,
1773
+ module: module,
1774
+ type: type,
1775
+ types: types,
1776
+ exports: exports,
1777
+ files: files,
1778
+ publishConfig: publishConfig,
1779
+ engines: engines,
1780
+ scripts: scripts,
1781
+ "lint-staged": {
1782
+ "**/*.{ts,tsx,js}": "eslint --fix --quiet",
1783
+ "**/*.{md,json,yml}": "prettier --write"
1784
+ },
1785
+ dependencies: dependencies,
1786
+ peerDependencies: peerDependencies,
1787
+ devDependencies: devDependencies
1788
+ };
1789
+
1790
+ function createVisitor(env) {
1791
+ const { publicApiUrl } = getEnvUrls(env);
1792
+ const visitorId = v4();
1793
+ navigator.sendBeacon(`${publicApiUrl}/api/visitor`, JSON.stringify({ visitorId }));
1794
+ return visitorId;
1795
+ }
1796
+ function getUids(env) {
1797
+ if (typeof window === "undefined") {
1798
+ return {
1799
+ client: null,
1800
+ tab: null,
1801
+ request: v4()
1802
+ };
1803
+ }
1804
+ let visitorId = window.localStorage?.getItem?.("vouch-uid-visitor");
1805
+ let clientId = window.localStorage?.getItem?.("vouch-uid-client");
1806
+ let tabId = window.sessionStorage?.getItem?.("vouch-uid-tab");
1807
+ const requestId = v4();
1808
+ if (!visitorId) {
1809
+ visitorId = createVisitor(env);
1810
+ window.localStorage?.setItem?.("vouch-uid-visitor", visitorId);
1811
+ }
1812
+ if (!clientId) {
1813
+ clientId = v4();
1814
+ window.localStorage?.setItem?.("vouch-uid-client", clientId);
1815
+ }
1816
+ if (!tabId) {
1817
+ tabId = v4();
1818
+ window.sessionStorage?.setItem?.("vouch-uid-tab", tabId);
1819
+ }
1820
+ return {
1821
+ client: clientId,
1822
+ tab: tabId,
1823
+ request: requestId,
1824
+ visitor: visitorId
1825
+ };
1826
+ }
1827
+ function findVouchId(payload, vouch) {
1828
+ if (payload && "vouchId" in payload) {
1829
+ return payload.vouchId;
1830
+ }
1831
+ return vouch?.id ?? null;
1832
+ }
1833
+ function getReportingMetadata(source = "embedded_player") {
1834
+ const [country, region] = Intl.DateTimeFormat().resolvedOptions().timeZone?.split?.("/") ?? [];
1835
+ const utmParams = {};
1836
+ [...new URLSearchParams(location.search).entries()].forEach(([key, value]) => {
1837
+ if (/utm/.test(key)) {
1838
+ const param = key.toLowerCase().replace(/[-_][a-z0-9]/g, (group) => group.slice(-1).toUpperCase());
1839
+ utmParams[param] = value;
1840
+ }
1841
+ });
1842
+ return {
1843
+ source,
1844
+ time: /* @__PURE__ */ new Date(),
1845
+ region,
1846
+ country,
1847
+ screenHeight: window.screen.height,
1848
+ screenWidth: window.screen.width,
1849
+ referrer: document.referrer,
1850
+ currentUrl: location.href,
1851
+ embedType: "media-player-embed",
1852
+ embedVersion: packageJson.version,
1853
+ templateVersion: TEMPLATE_VERSION,
1854
+ ...utmParams
1855
+ };
1856
+ }
1857
+
1858
+ const MINIMUM_SEND_THRESHOLD = 1;
1859
+ class TrackingController {
1860
+ constructor(host) {
1861
+ this._batchedEvents = [];
1862
+ this._hasPlayed = false;
1863
+ this._hasLoaded = {};
1864
+ this._answersViewed = {};
1865
+ this._streamStartTime = {};
1866
+ this._streamLatestTime = {};
1867
+ this._currentlyPlayingVideo = null;
1868
+ this._createTrackingEvent = (event, payload) => {
1869
+ const vouchId = findVouchId(payload, this.host.vouch);
1870
+ if (!vouchId || this.host.disableTracking) {
1871
+ return;
1872
+ }
1873
+ this._batchedEvents.push({
1874
+ event,
1875
+ payload: {
1876
+ ...payload,
1877
+ vouchId,
1878
+ time: (/* @__PURE__ */ new Date()).toISOString()
1879
+ }
1880
+ });
1881
+ };
1882
+ this._sendTrackingEvent = () => {
1883
+ if (this._batchedEvents.length <= 0) {
1884
+ return;
1885
+ }
1886
+ const { publicApiUrl } = getEnvUrls(this.host.env);
1887
+ const { client, tab, request, visitor } = getUids(this.host.env);
1888
+ navigator.sendBeacon(
1889
+ `${publicApiUrl}/api/batchevents`,
1890
+ JSON.stringify({
1891
+ payload: {
1892
+ events: this._batchedEvents
1893
+ },
1894
+ context: {
1895
+ "x-uid-client": client,
1896
+ "x-uid-tab": tab,
1897
+ "x-uid-request": request,
1898
+ "x-uid-visitor": visitor,
1899
+ "x-reporting-metadata": getReportingMetadata(this.host.trackingSource)
1900
+ }
1901
+ })
1902
+ );
1903
+ this._batchedEvents = [];
1904
+ };
1905
+ this._streamEnded = () => {
1906
+ if (this._currentlyPlayingVideo) {
1907
+ const { id, key } = this._currentlyPlayingVideo;
1908
+ if (this._streamLatestTime[key] > this._streamStartTime[key] + MINIMUM_SEND_THRESHOLD) {
1909
+ this._createTrackingEvent("VIDEO_STREAMED", {
1910
+ answerId: id,
1911
+ streamStart: this._streamStartTime[key],
1912
+ streamEnd: this._streamLatestTime[key]
1913
+ });
1914
+ }
1915
+ delete this._streamStartTime[key];
1916
+ delete this._streamLatestTime[key];
1917
+ }
1918
+ };
1919
+ this._handleVouchLoaded = ({ detail: vouchId }) => {
1920
+ if (!vouchId) {
1921
+ return;
1922
+ }
1923
+ if (!this._hasLoaded[vouchId]) {
1924
+ this._createTrackingEvent("VOUCH_LOADED", { vouchId });
1925
+ this._hasLoaded[vouchId] = true;
1926
+ }
1927
+ };
1928
+ this._handlePlay = () => {
1929
+ if (!this._hasPlayed) {
1930
+ this._createTrackingEvent("VIDEO_PLAYED", {
1931
+ streamStart: this.host.currentTime
1932
+ });
1933
+ this._hasPlayed = true;
1934
+ }
1935
+ };
1936
+ this._handleVideoPlay = ({ detail: { id, key } }) => {
1937
+ if (!this._answersViewed[key]) {
1938
+ this._createTrackingEvent("VOUCH_RESPONSE_VIEWED", {
1939
+ answerId: id
1940
+ });
1941
+ this._answersViewed[key] = true;
1942
+ }
1943
+ };
1944
+ this._handleVideoTimeUpdate = ({ detail: { id, key, node } }) => {
1945
+ if (
1946
+ // We only want to count any time that the video is actually playing
1947
+ !this.host.paused && // Only update the latest time if this event fires for the currently active video
1948
+ id === this.host.scene?.video?.id
1949
+ ) {
1950
+ this._currentlyPlayingVideo = { id, key, node };
1951
+ this._streamLatestTime[key] = node.currentTime;
1952
+ if (!this._streamStartTime[key]) {
1953
+ this._streamStartTime[key] = node.currentTime;
1954
+ this._streamLatestTime[key] = node.currentTime;
1955
+ }
1956
+ }
1957
+ };
1958
+ this._handleVideoPause = ({ detail: { id, key } }) => {
1959
+ if (this._streamLatestTime[key] > this._streamStartTime[key] + MINIMUM_SEND_THRESHOLD) {
1960
+ this._createTrackingEvent("VIDEO_STREAMED", {
1961
+ answerId: id,
1962
+ streamStart: this._streamStartTime[key],
1963
+ streamEnd: this._streamLatestTime[key]
1964
+ });
1965
+ }
1966
+ delete this._streamStartTime[key];
1967
+ delete this._streamLatestTime[key];
1968
+ };
1969
+ this._pageUnloading = () => {
1970
+ this._streamEnded();
1971
+ this._sendTrackingEvent();
1972
+ };
1973
+ this._handleVisibilityChange = () => {
1974
+ if (document.visibilityState === "hidden") {
1975
+ this._pageUnloading();
1976
+ }
1977
+ };
1978
+ this._handlePageHide = () => {
1979
+ this._pageUnloading();
1980
+ };
1981
+ this.host = host;
1982
+ host.addController(this);
1983
+ }
1984
+ hostConnected() {
1985
+ requestAnimationFrame(() => {
1986
+ if ("onvisibilitychange" in document) {
1987
+ document.addEventListener("visibilitychange", this._handleVisibilityChange);
1988
+ } else {
1989
+ window.addEventListener("pagehide", this._handlePageHide);
1990
+ }
1991
+ this.host.addEventListener("vouch:loaded", this._handleVouchLoaded);
1992
+ this.host.mediaPlayer?.addEventListener("play", this._handlePlay);
1993
+ this.host.mediaPlayer?.addEventListener("video:play", this._handleVideoPlay);
1994
+ this.host.mediaPlayer?.addEventListener("video:pause", this._handleVideoPause);
1995
+ this.host.mediaPlayer?.addEventListener("video:timeupdate", this._handleVideoTimeUpdate);
1996
+ });
1997
+ }
1998
+ hostDisconnected() {
1999
+ this._pageUnloading();
2000
+ if ("onvisibilitychange" in document) {
2001
+ document.removeEventListener("visibilitychange", this._handleVisibilityChange);
2002
+ } else {
2003
+ window.removeEventListener("pagehide", this._handlePageHide);
2004
+ }
2005
+ this.host.removeEventListener("vouch:loaded", this._handleVouchLoaded);
2006
+ this.host.mediaPlayer?.removeEventListener("play", this._handlePlay);
2007
+ this.host.mediaPlayer?.removeEventListener("video:play", this._handleVideoPlay);
2008
+ this.host.mediaPlayer?.removeEventListener("video:pause", this._handleVideoPause);
2009
+ this.host.mediaPlayer?.removeEventListener("video:timeupdate", this._handleVideoTimeUpdate);
2010
+ }
2011
+ }
2012
+
2013
+ var __defProp$3 = Object.defineProperty;
2014
+ var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
2015
+ var __decorateClass$3 = (decorators, target, key, kind) => {
2016
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target;
2017
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
2018
+ if (decorator = decorators[i])
2019
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
2020
+ if (kind && result)
2021
+ __defProp$3(target, key, result);
2022
+ return result;
2023
+ };
2024
+ let PlayerEmbed = class extends LitElement {
2025
+ constructor() {
2026
+ super(...arguments);
2027
+ this.env = "prod";
2028
+ this.apiKey = "";
2029
+ this.disableTracking = false;
2030
+ this.trackingSource = "embedded_player";
2031
+ this.preload = "auto";
2032
+ this.autoplay = false;
2033
+ this.aspectRatio = 0;
2034
+ this.eventController = new EventForwardController(this, [
2035
+ "durationchange",
2036
+ "ended",
2037
+ "error",
2038
+ "loadeddata",
2039
+ "pause",
2040
+ "stalled",
2041
+ "play",
2042
+ "playing",
2043
+ "ratechange",
2044
+ "scenechange",
2045
+ "seeking",
2046
+ "seeked",
2047
+ "timeupdate",
2048
+ "volumechange",
2049
+ "waiting",
2050
+ "video:loadeddata",
2051
+ "video:seeking",
2052
+ "video:seeked",
2053
+ "video:play",
2054
+ "video:playing",
2055
+ "video:pause",
2056
+ "video:stalled",
2057
+ "video:timeupdate",
2058
+ "video:ended",
2059
+ "video:error"
2060
+ ]);
2061
+ this._fetcherController = new FetcherController(this);
2062
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2063
+ // @ts-ignore
2064
+ this._trackingController = new TrackingController(this);
2065
+ this._mediaPlayerRef = createRef();
2066
+ }
2067
+ get fetching() {
2068
+ return this._fetcherController.fetching;
2069
+ }
2070
+ get waiting() {
2071
+ return this._mediaPlayerRef.value?.waiting;
2072
+ }
2073
+ get initialised() {
2074
+ return this._mediaPlayerRef.value?.initialised;
2075
+ }
2076
+ get seeking() {
2077
+ return this._mediaPlayerRef.value?.seeking;
2078
+ }
2079
+ get paused() {
2080
+ return this._mediaPlayerRef.value?.paused;
2081
+ }
2082
+ get captions() {
2083
+ return this._mediaPlayerRef.value?.captions;
2084
+ }
2085
+ get fullscreen() {
2086
+ return this._mediaPlayerRef.value?.fullscreen;
2087
+ }
2088
+ get duration() {
2089
+ return this._mediaPlayerRef.value?.duration;
2090
+ }
2091
+ set currentTime(value) {
2092
+ if (this._mediaPlayerRef.value) {
2093
+ this._mediaPlayerRef.value.currentTime = value;
2094
+ }
2095
+ }
2096
+ get currentTime() {
2097
+ return this._mediaPlayerRef.value?.currentTime ?? 0;
2098
+ }
2099
+ set playbackRate(value) {
2100
+ if (this._mediaPlayerRef.value) {
2101
+ this._mediaPlayerRef.value.playbackRate = value;
2102
+ }
2103
+ }
2104
+ get playbackRate() {
2105
+ return this._mediaPlayerRef.value?.playbackRate ?? 1;
2106
+ }
2107
+ set volume(value) {
2108
+ if (this._mediaPlayerRef.value) {
2109
+ this._mediaPlayerRef.value.volume = value;
2110
+ }
2111
+ }
2112
+ get volume() {
2113
+ return this._mediaPlayerRef.value?.volume ?? 1;
2114
+ }
2115
+ set muted(value) {
2116
+ if (this._mediaPlayerRef.value) {
2117
+ this._mediaPlayerRef.value.muted = value;
2118
+ }
2119
+ }
2120
+ get muted() {
2121
+ return this._mediaPlayerRef.value?.muted ?? false;
2122
+ }
2123
+ get scene() {
2124
+ return this._mediaPlayerRef.value?.scene ?? null;
2125
+ }
2126
+ get scenes() {
2127
+ return this._mediaPlayerRef.value?.scenes ?? [];
2128
+ }
2129
+ get sceneConfig() {
2130
+ return this._mediaPlayerRef.value?.sceneConfig ?? null;
2131
+ }
2132
+ get videoState() {
2133
+ return this._mediaPlayerRef.value?.videoState;
2134
+ }
2135
+ get mediaPlayer() {
2136
+ return this._mediaPlayerRef.value;
2137
+ }
2138
+ play() {
2139
+ this._mediaPlayerRef.value?.play();
2140
+ }
2141
+ pause() {
2142
+ this._mediaPlayerRef.value?.pause();
2143
+ }
2144
+ reset(time = 0, play = false) {
2145
+ this._mediaPlayerRef.value?.reset(time, play);
2146
+ }
2147
+ setScene(index) {
2148
+ this._mediaPlayerRef.value?.setScene(index);
2149
+ }
2150
+ _renderStyles() {
2151
+ if (!this.aspectRatio) {
2152
+ return html`
2153
+ <style>
2154
+ :host {
2155
+ width: 100%;
2156
+ height: 100%;
2157
+ }
2158
+ </style>
2159
+ `;
2160
+ }
2161
+ if (typeof this.aspectRatio === "number") {
2162
+ return html`
2163
+ <style>
2164
+ :host {
2165
+ aspect-ratio: ${this.aspectRatio};
2166
+ }
2167
+ </style>
2168
+ `;
2169
+ }
2170
+ return null;
2171
+ }
2172
+ render() {
2173
+ return html`
2174
+ ${this._renderStyles()}
2175
+ <vmp-media-player
2176
+ ${ref(this._mediaPlayerRef)}
2177
+ ${this.eventController.register()}
2178
+ ?autoplay=${this.autoplay}
2179
+ ?loading=${this.fetching}
2180
+ .data=${this.vouch}
2181
+ .template=${this.template}
2182
+ aspectRatio=${ifDefined(this.aspectRatio)}
2183
+ preload=${ifDefined(this.preload)}
2184
+ .controls=${this.controls}
2185
+ ></vmp-media-player>
2186
+ `;
2187
+ }
2188
+ };
2189
+ PlayerEmbed.styles = [
2190
+ css`
2191
+ :host {
2192
+ display: flex;
2193
+ }
2194
+ `
2195
+ ];
2196
+ __decorateClass$3([
2197
+ property({ type: Object })
2198
+ ], PlayerEmbed.prototype, "data", 2);
2199
+ __decorateClass$3([
2200
+ property({ type: String })
2201
+ ], PlayerEmbed.prototype, "vouchId", 2);
2202
+ __decorateClass$3([
2203
+ property({ type: String })
2204
+ ], PlayerEmbed.prototype, "templateId", 2);
2205
+ __decorateClass$3([
2206
+ property({ type: Array })
2207
+ ], PlayerEmbed.prototype, "questions", 2);
2208
+ __decorateClass$3([
2209
+ property({ type: String })
2210
+ ], PlayerEmbed.prototype, "env", 2);
2211
+ __decorateClass$3([
2212
+ property({ type: String })
2213
+ ], PlayerEmbed.prototype, "apiKey", 2);
2214
+ __decorateClass$3([
2215
+ property({ type: Boolean })
2216
+ ], PlayerEmbed.prototype, "disableTracking", 2);
2217
+ __decorateClass$3([
2218
+ property({ type: String })
2219
+ ], PlayerEmbed.prototype, "trackingSource", 2);
2220
+ __decorateClass$3([
2221
+ property({ type: Array })
2222
+ ], PlayerEmbed.prototype, "controls", 2);
2223
+ __decorateClass$3([
2224
+ property({ type: String })
2225
+ ], PlayerEmbed.prototype, "preload", 2);
2226
+ __decorateClass$3([
2227
+ property({ type: Boolean })
2228
+ ], PlayerEmbed.prototype, "autoplay", 2);
2229
+ __decorateClass$3([
2230
+ property({ type: Number })
2231
+ ], PlayerEmbed.prototype, "aspectRatio", 2);
2232
+ __decorateClass$3([
2233
+ state()
2234
+ ], PlayerEmbed.prototype, "vouch", 2);
2235
+ __decorateClass$3([
2236
+ state()
2237
+ ], PlayerEmbed.prototype, "template", 2);
2238
+ PlayerEmbed = __decorateClass$3([
2239
+ customElement("vouch-embed-player")
2240
+ ], PlayerEmbed);
2241
+
2242
+ var __defProp$2 = Object.defineProperty;
2243
+ var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
2244
+ var __decorateClass$2 = (decorators, target, key, kind) => {
2245
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;
2246
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
2247
+ if (decorator = decorators[i])
2248
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
2249
+ if (kind && result)
2250
+ __defProp$2(target, key, result);
2251
+ return result;
2252
+ };
2253
+ let DialogOverlay = class extends LitElement {
2254
+ constructor() {
2255
+ super(...arguments);
2256
+ this.open = false;
2257
+ this.aspectRatio = 0;
2258
+ }
2259
+ render() {
2260
+ return html`
2261
+ <div
2262
+ class=${classMap({
2263
+ container: true,
2264
+ hidden: !this.open
2265
+ })}
2266
+ >
2267
+ <div
2268
+ class="background"
2269
+ @click=${() => this.dispatchEvent(new CustomEvent("overlay:click", { bubbles: true, composed: true }))}
2270
+ ></div>
2271
+ <focus-trap>
2272
+ <div
2273
+ class=${classMap({
2274
+ "video-frame": true,
2275
+ grow: this.aspectRatio === 0
2276
+ })}
2277
+ style=${styleMap({
2278
+ aspectRatio: this.aspectRatio
2279
+ })}
2280
+ >
2281
+ <slot></slot>
2282
+ <vmp-icon-button
2283
+ icon="close"
2284
+ rounded="full"
2285
+ weight="heavy"
2286
+ @click=${() => this.dispatchEvent(new CustomEvent("close:click", { bubbles: true, composed: true }))}
2287
+ ></vmp-icon-button>
2288
+ </div>
2289
+ </focus-trap>
2290
+ </div>
2291
+ `;
2292
+ }
2293
+ };
2294
+ DialogOverlay.styles = [
2295
+ css`
2296
+ :host {
2297
+ --vouch-media-player-border-radius: var(--vu-media-player-border-radius, 12px);
2298
+ --overlay-background-color: var(--vu-overlay-background-color, black);
2299
+ --overlay-background-opacity: var(--vu-overlay-background-opacity, 0.4);
2300
+
2301
+ --dialog-width: var(--vu-dialog-width, 890px);
2302
+ --dialog-height: var(--vu-dialog-height, 500px);
2303
+ }
2304
+
2305
+ .container {
2306
+ position: fixed;
2307
+ display: flex;
2308
+ inset: 0;
2309
+ opacity: 1;
2310
+ z-index: 2147483647;
2311
+ align-items: center;
2312
+ justify-content: center;
2313
+ transition: opacity 100ms ease-in;
2314
+ }
2315
+
2316
+ .hidden {
2317
+ opacity: 0;
2318
+ pointer-events: none;
2319
+ }
2320
+
2321
+ .background {
2322
+ position: absolute;
2323
+ inset: 0;
2324
+ opacity: var(--overlay-background-opacity);
2325
+ background-color: var(--overlay-background-color);
2326
+ }
2327
+
2328
+ focus-trap {
2329
+ display: flex;
2330
+ align-items: center;
2331
+ justify-content: center;
2332
+ margin: 40px;
2333
+ width: var(--dialog-width);
2334
+ height: var(--dialog-height);
2335
+ max-width: calc(100% - 80px);
2336
+ max-height: calc(100% - 80px);
2337
+ }
2338
+
2339
+ .video-frame {
2340
+ position: relative;
2341
+ display: flex;
2342
+ align-items: center;
2343
+ justify-content: center;
2344
+ max-width: 100%;
2345
+ max-height: 100%;
2346
+ }
2347
+
2348
+ .video-frame.grow {
2349
+ width: 100%;
2350
+ height: 100%;
2351
+ }
2352
+
2353
+ vmp-icon-button {
2354
+ position: absolute;
2355
+ top: 0;
2356
+ right: 0;
2357
+ margin: 10px;
2358
+ }
2359
+ `
2360
+ ];
2361
+ __decorateClass$2([
2362
+ property({ type: Boolean })
2363
+ ], DialogOverlay.prototype, "open", 2);
2364
+ __decorateClass$2([
2365
+ property({ type: Number })
2366
+ ], DialogOverlay.prototype, "aspectRatio", 2);
2367
+ DialogOverlay = __decorateClass$2([
2368
+ customElement("vouch-embed-dialog-overlay")
2369
+ ], DialogOverlay);
2370
+
2371
+ var __defProp$1 = Object.defineProperty;
2372
+ var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
2373
+ var __decorateClass$1 = (decorators, target, key, kind) => {
2374
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;
2375
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
2376
+ if (decorator = decorators[i])
2377
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
2378
+ if (kind && result)
2379
+ __defProp$1(target, key, result);
2380
+ return result;
2381
+ };
2382
+ let DialogPortal = class extends LitElement {
2383
+ constructor() {
2384
+ super(...arguments);
2385
+ this.env = "prod";
2386
+ this.apiKey = "";
2387
+ this.disableTracking = false;
2388
+ this.trackingSource = "embedded_player";
2389
+ this.preload = "none";
2390
+ this.disableAutoplay = false;
2391
+ this.aspectRatio = 0;
2392
+ this._mediaPlayerRef = createRef();
2393
+ this.open = false;
2394
+ this._handleToggle = ({ detail }) => {
2395
+ if (this.id === detail) {
2396
+ this.open = !this.open;
2397
+ if (this.open) {
2398
+ if (!this.disableAutoplay && this._mediaPlayerRef?.value) {
2399
+ this._mediaPlayerRef.value.muted = false;
2400
+ this._mediaPlayerRef.value.play();
2401
+ }
2402
+ } else {
2403
+ this._mediaPlayerRef?.value?.pause();
2404
+ }
2405
+ }
2406
+ };
2407
+ // We could do the same thing on close and check for the correct ID but it doesn't really matter
2408
+ this._handleClose = () => {
2409
+ this.open = false;
2410
+ this._mediaPlayerRef?.value?.pause();
2411
+ };
2412
+ this._handleDocumentKeyUp = (e) => {
2413
+ if (e.key === "Escape") {
2414
+ this._handleClose();
2415
+ }
2416
+ };
2417
+ }
2418
+ connectedCallback() {
2419
+ super.connectedCallback();
2420
+ document.addEventListener("dialogembed:click", this._handleToggle);
2421
+ document.addEventListener("keyup", this._handleDocumentKeyUp);
2422
+ document.addEventListener("close:click", this._handleClose);
2423
+ document.addEventListener("overlay:click", this._handleClose);
2424
+ }
2425
+ disconnectedCallback() {
2426
+ super.disconnectedCallback();
2427
+ document.removeEventListener("dialogembed:click", this._handleToggle);
2428
+ document.removeEventListener("keyup", this._handleDocumentKeyUp);
2429
+ document.removeEventListener("close:click", this._handleClose);
2430
+ document.removeEventListener("overlay:click", this._handleClose);
2431
+ }
2432
+ createRenderRoot() {
2433
+ const newNode = document.createElement("div");
2434
+ document.body.appendChild(newNode);
2435
+ return newNode;
2436
+ }
2437
+ render() {
2438
+ return html`
2439
+ <vouch-embed-dialog-overlay ?open=${this.open} aspectRatio=${this.aspectRatio}>
2440
+ <vouch-embed-player
2441
+ ${ref(this._mediaPlayerRef)}
2442
+ style=${styleMap({
2443
+ maxWidth: "100%",
2444
+ maxHeight: "100%"
2445
+ })}
2446
+ ?autoplay=${false}
2447
+ vouchId=${ifDefined(this.vouchId)}
2448
+ templateId=${ifDefined(this.templateId)}
2449
+ .questions=${this.questions}
2450
+ .controls=${this.controls}
2451
+ env=${ifDefined(this.env)}
2452
+ apiKey=${ifDefined(this.apiKey)}
2453
+ ?disableTracking=${this.disableTracking}
2454
+ trackingSource=${ifDefined(this.trackingSource)}
2455
+ preload=${ifDefined(this.preload)}
2456
+ aspectRatio=${this.aspectRatio}
2457
+ ></vouch-embed-player>
2458
+ </vouch-embed-dialog-overlay>
2459
+ `;
2460
+ }
2461
+ };
2462
+ __decorateClass$1([
2463
+ property({ type: String })
2464
+ ], DialogPortal.prototype, "vouchId", 2);
2465
+ __decorateClass$1([
2466
+ property({ type: String })
2467
+ ], DialogPortal.prototype, "templateId", 2);
2468
+ __decorateClass$1([
2469
+ property({ type: Array })
2470
+ ], DialogPortal.prototype, "questions", 2);
2471
+ __decorateClass$1([
2472
+ property({ type: String })
2473
+ ], DialogPortal.prototype, "env", 2);
2474
+ __decorateClass$1([
2475
+ property({ type: String })
2476
+ ], DialogPortal.prototype, "apiKey", 2);
2477
+ __decorateClass$1([
2478
+ property({ type: Boolean })
2479
+ ], DialogPortal.prototype, "disableTracking", 2);
2480
+ __decorateClass$1([
2481
+ property({ type: String })
2482
+ ], DialogPortal.prototype, "trackingSource", 2);
2483
+ __decorateClass$1([
2484
+ property({ type: Array })
2485
+ ], DialogPortal.prototype, "controls", 2);
2486
+ __decorateClass$1([
2487
+ property({ type: String })
2488
+ ], DialogPortal.prototype, "preload", 2);
2489
+ __decorateClass$1([
2490
+ property({ type: Boolean })
2491
+ ], DialogPortal.prototype, "disableAutoplay", 2);
2492
+ __decorateClass$1([
2493
+ property({ type: Number })
2494
+ ], DialogPortal.prototype, "aspectRatio", 2);
2495
+ __decorateClass$1([
2496
+ state()
2497
+ ], DialogPortal.prototype, "open", 2);
2498
+ DialogPortal = __decorateClass$1([
2499
+ customElement("vouch-embed-dialog-portal")
2500
+ ], DialogPortal);
2501
+
2502
+ var __defProp = Object.defineProperty;
2503
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
2504
+ var __decorateClass = (decorators, target, key, kind) => {
2505
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
2506
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
2507
+ if (decorator = decorators[i])
2508
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
2509
+ if (kind && result)
2510
+ __defProp(target, key, result);
2511
+ return result;
2512
+ };
2513
+ let DialogEmbed = class extends LitElement {
2514
+ constructor() {
2515
+ super(...arguments);
2516
+ this.env = "prod";
2517
+ this.apiKey = "";
2518
+ this.disableTracking = false;
2519
+ this.trackingSource = "embedded_player";
2520
+ this.preload = "none";
2521
+ this.disableAutoplay = false;
2522
+ this.aspectRatio = 0;
2523
+ this._id = v4();
2524
+ this._handleRootClick = () => {
2525
+ this.dispatchEvent(new CustomEvent("dialogembed:click", { detail: this._id, bubbles: true, composed: true }));
2526
+ };
2527
+ }
2528
+ connectedCallback() {
2529
+ super.connectedCallback();
2530
+ this.addEventListener("click", this._handleRootClick);
2531
+ }
2532
+ disconnectedCallback() {
2533
+ super.disconnectedCallback();
2534
+ this.removeEventListener("click", this._handleRootClick);
2535
+ }
2536
+ render() {
2537
+ return html`
2538
+ <slot>
2539
+ <vmp-button size="large">Play</vmp-button>
2540
+ </slot>
2541
+ <vouch-embed-dialog-portal
2542
+ id=${this._id}
2543
+ ?autoplay=${false}
2544
+ vouchId=${ifDefined(this.vouchId)}
2545
+ templateId=${ifDefined(this.templateId)}
2546
+ .questions=${this.questions}
2547
+ .controls=${this.controls}
2548
+ env=${ifDefined(this.env)}
2549
+ apiKey=${ifDefined(this.apiKey)}
2550
+ ?disableTracking=${this.disableTracking}
2551
+ trackingSource=${ifDefined(this.trackingSource)}
2552
+ preload=${ifDefined(this.preload)}
2553
+ aspectRatio=${this.aspectRatio}
2554
+ ></vouch-embed-dialog-portal>
2555
+ `;
2556
+ }
2557
+ };
2558
+ DialogEmbed.styles = [
2559
+ css`
2560
+ :host {
2561
+ --vu-button-padding: 10px 20px;
2562
+ --vu-button-background: #287179;
2563
+ --vu-button-background-hover: #4faab2;
2564
+
2565
+ display: flex;
2566
+ width: fit-content;
2567
+ height: fit-content;
2568
+ }
2569
+ `
2570
+ ];
2571
+ __decorateClass([
2572
+ property({ type: String })
2573
+ ], DialogEmbed.prototype, "vouchId", 2);
2574
+ __decorateClass([
2575
+ property({ type: String })
2576
+ ], DialogEmbed.prototype, "templateId", 2);
2577
+ __decorateClass([
2578
+ property({ type: Array })
2579
+ ], DialogEmbed.prototype, "questions", 2);
2580
+ __decorateClass([
2581
+ property({ type: String })
2582
+ ], DialogEmbed.prototype, "env", 2);
2583
+ __decorateClass([
2584
+ property({ type: String })
2585
+ ], DialogEmbed.prototype, "apiKey", 2);
2586
+ __decorateClass([
2587
+ property({ type: Boolean })
2588
+ ], DialogEmbed.prototype, "disableTracking", 2);
2589
+ __decorateClass([
2590
+ property({ type: String })
2591
+ ], DialogEmbed.prototype, "trackingSource", 2);
2592
+ __decorateClass([
2593
+ property({ type: Array })
2594
+ ], DialogEmbed.prototype, "controls", 2);
2595
+ __decorateClass([
2596
+ property({ type: String })
2597
+ ], DialogEmbed.prototype, "preload", 2);
2598
+ __decorateClass([
2599
+ property({ type: Boolean })
2600
+ ], DialogEmbed.prototype, "disableAutoplay", 2);
2601
+ __decorateClass([
2602
+ property({ type: Number })
2603
+ ], DialogEmbed.prototype, "aspectRatio", 2);
2604
+ DialogEmbed = __decorateClass([
2605
+ customElement("vouch-embed-dialog")
2606
+ ], DialogEmbed);
2607
+
2608
+ export { DialogEmbed as D, PlayerEmbed as P, commonjsGlobal as c, getDefaultExportFromCjs as g };
2609
+ //# sourceMappingURL=index-5G8orrrP.js.map