@pendo/agent 2.272.0 → 2.274.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -67,10 +67,7 @@ var sha1$1 = {exports: {}};
67
67
  (function() {
68
68
 
69
69
  var root = typeof window === 'object' ? window : {};
70
- var NODE_JS = !root.JS_SHA1_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
71
- if (NODE_JS) {
72
- root = commonjsGlobal;
73
- }
70
+
74
71
  var COMMON_JS = !root.JS_SHA1_NO_COMMON_JS && 'object' === 'object' && module.exports;
75
72
  var HEX_CHARS = '0123456789abcdef'.split('');
76
73
  var EXTRA = [-2147483648, 8388608, 32768, 128];
@@ -87,9 +84,7 @@ var sha1$1 = {exports: {}};
87
84
 
88
85
  var createMethod = function () {
89
86
  var method = createOutputMethod('hex');
90
- if (NODE_JS) {
91
- method = nodeWrap(method);
92
- }
87
+
93
88
  method.create = function () {
94
89
  return new Sha1();
95
90
  };
@@ -103,21 +98,7 @@ var sha1$1 = {exports: {}};
103
98
  return method;
104
99
  };
105
100
 
106
- var nodeWrap = function (method) {
107
- var crypto = eval("require('crypto')");
108
- var Buffer = eval("require('buffer').Buffer");
109
- var nodeMethod = function (message) {
110
- if (typeof message === 'string') {
111
- return crypto.createHash('sha1').update(message, 'utf8').digest('hex');
112
- } else if (message.constructor === ArrayBuffer) {
113
- message = new Uint8Array(message);
114
- } else if (message.length === undefined) {
115
- return method(message);
116
- }
117
- return crypto.createHash('sha1').update(new Buffer(message)).digest('hex');
118
- };
119
- return nodeMethod;
120
- };
101
+
121
102
 
122
103
  function Sha1(sharedMemory) {
123
104
  if (sharedMemory) {
@@ -3907,8 +3888,8 @@ var SERVER = '';
3907
3888
  var ASSET_HOST = '';
3908
3889
  var ASSET_PATH = '';
3909
3890
  var DESIGNER_ENV = '';
3910
- var VERSION = '2.272.0_';
3911
- var PACKAGE_VERSION = '2.272.0';
3891
+ var VERSION = '2.274.0_';
3892
+ var PACKAGE_VERSION = '2.274.0';
3912
3893
  var LOADER = 'xhr';
3913
3894
  /* eslint-enable agent-eslint-rules/no-gulp-env-references */
3914
3895
  /**
@@ -9116,20 +9097,7 @@ var ajax = (function () {
9116
9097
  else {
9117
9098
  request.send();
9118
9099
  }
9119
- return aliasFailToCatch(deferred.promise);
9120
- }
9121
- function aliasFailToCatch(promise) {
9122
- // Custom code written by pro services uses fail, so we need to support that.
9123
- var wrappedThen = promise.then;
9124
- var wrappedCatch = promise['catch'];
9125
- promise.then = function () {
9126
- return aliasFailToCatch(wrappedThen.apply(this, arguments));
9127
- };
9128
- promise['catch'] = function () {
9129
- return aliasFailToCatch(wrappedCatch.apply(this, arguments));
9130
- };
9131
- promise.fail = promise['catch'];
9132
- return promise;
9100
+ return deferred.promise;
9133
9101
  }
9134
9102
  function get(url, headers) {
9135
9103
  return ajax({
@@ -19906,10 +19874,10 @@ function PermalinkConstructor(findGuideById) {
19906
19874
  }
19907
19875
  function showPermalinkGuide(guide, step) {
19908
19876
  if (step) {
19909
- step.show('permalink');
19877
+ return step.show('permalink');
19910
19878
  }
19911
19879
  else {
19912
- guide.show('permalink');
19880
+ return guide.show('permalink');
19913
19881
  }
19914
19882
  }
19915
19883
  function shouldShowPermalinkGuide(guide) {
@@ -19921,14 +19889,17 @@ function PermalinkConstructor(findGuideById) {
19921
19889
  if (permalinkGuide && this.shouldShowPermalinkGuide(permalinkGuide)) {
19922
19890
  var step = this.getStepFromUrl(queryString, permalinkGuide);
19923
19891
  var once = queryString.pendo_once;
19924
- if (once) {
19925
- delete queryString.pendo_once;
19926
- delete queryString.pendo;
19927
- delete queryString.step;
19928
- delete queryString.c__pendo;
19929
- window.history.replaceState({}, document.title, window.location.pathname + '?' + objectToQueryString(queryString));
19930
- }
19931
- return this.showPermalinkGuide(permalinkGuide, step);
19892
+ return this.showPermalinkGuide(permalinkGuide, step)
19893
+ .then(function (result) {
19894
+ if (result && once) {
19895
+ delete queryString.pendo_once;
19896
+ delete queryString.pendo;
19897
+ delete queryString.step;
19898
+ delete queryString.c__pendo;
19899
+ window.history.replaceState({}, document.title, window.location.pathname + '?' + objectToQueryString(queryString));
19900
+ }
19901
+ return result;
19902
+ });
19932
19903
  }
19933
19904
  }
19934
19905
  }
@@ -22322,7 +22293,7 @@ var DesignerV2 = (function () {
22322
22293
  if (style) {
22323
22294
  setStyle(iframe, style);
22324
22295
  }
22325
- iframe.setAttribute('sandbox', 'allow-scripts allow-same-origin allow-top-navigation allow-forms allow-pointer-lock allow-popups');
22296
+ iframe.setAttribute('sandbox', 'allow-scripts allow-same-origin allow-top-navigation allow-forms allow-pointer-lock allow-popups allow-storage-access-by-user-activation');
22326
22297
  iframe.src = src;
22327
22298
  return iframe;
22328
22299
  }
@@ -23320,16 +23291,19 @@ function createCrossFrameChannel(store) {
23320
23291
  }
23321
23292
 
23322
23293
  function onTurbolinksPageLoad(document, onPageLoad) {
23323
- if (typeof Turbolinks !== 'undefined') {
23324
- // Special case guide reloading for troublesome Rails component:
23325
- // https://github.com/rails/turbolinks
23326
- /* global Turbolinks */
23327
- var turboLinksPageLoad = Turbolinks && Turbolinks.EVENTS && Turbolinks.EVENTS.LOAD;
23328
- if (turboLinksPageLoad) {
23329
- return attachEventInternal(document, turboLinksPageLoad, onPageLoad);
23330
- }
23294
+ var Turbolinks = window.Turbolinks, Turbo = window.Turbo;
23295
+ var turboLinksPageLoad;
23296
+ // Special case guide reloading for troublesome Rails component:
23297
+ // https://github.com/rails/turbolinks
23298
+ if (Turbolinks) {
23299
+ turboLinksPageLoad = Turbolinks.EVENTS && Turbolinks.EVENTS.LOAD;
23331
23300
  }
23332
- return function () { };
23301
+ // Updated version of Turbo library
23302
+ // https://turbo.hotwired.dev/reference/events
23303
+ if (Turbo && Turbo.visit) {
23304
+ turboLinksPageLoad = 'turbo:load';
23305
+ }
23306
+ return turboLinksPageLoad ? attachEventInternal(document, turboLinksPageLoad, onPageLoad) : function () { };
23333
23307
  }
23334
23308
 
23335
23309
  var EMPTY_ARRAY_JZB = 'eJwFwIEIAAAAwDDQd3-N1QABFQC5';
@@ -35770,14 +35744,16 @@ var DebuggerLauncher = (function () {
35770
35744
  if (store.getters['frames/isLeader']()) {
35771
35745
  startDebuggingModuleIfEnabled();
35772
35746
  }
35773
- registerMessageHandler('pendo-debugger::launch', function (data, msg) {
35774
- if (data.config.apiKey !== pendo.apiKey)
35775
- return;
35747
+ });
35748
+ registerMessageHandler('pendo-debugger::launch', function (data, msg) {
35749
+ if (data.config.apiKey !== pendo.apiKey)
35750
+ return;
35751
+ waitForLeader(Events, store, q).then(function () {
35776
35752
  msg.source.postMessage({
35777
35753
  'type': 'pendo-debugger::ready',
35778
35754
  'apiKey': pendo.apiKey
35779
35755
  }, msg.origin);
35780
- if (isDebuggingEnabled())
35756
+ if (isDebuggingEnabled() || !store.getters['frames/isLeader']())
35781
35757
  return;
35782
35758
  enableDebugging(false);
35783
35759
  });
@@ -35987,7 +35963,7 @@ var FrustrationEvent = (function () {
35987
35963
  */
35988
35964
  function addFrustrationType(event, type) {
35989
35965
  var _a = event.frustrationTypes, frustrationTypes = _a === void 0 ? [] : _a;
35990
- if (!frustrationTypes.includes(type)) {
35966
+ if (!_.contains(frustrationTypes, type)) {
35991
35967
  frustrationTypes.push(type);
35992
35968
  event.frustrationTypes = frustrationTypes;
35993
35969
  }
@@ -36032,7 +36008,7 @@ var FrustrationEvent = (function () {
36032
36008
  }
36033
36009
  function handleClickEvent(eventData, browserEvent) {
36034
36010
  var isHyperlinked = browserEvent.target && browserEvent.target.tagName === 'A' && browserEvent.target.hasAttribute('href');
36035
- var isDeadClickEligibleTag = browserEvent.target && !deadClickIneligibleTags.includes(browserEvent.target.tagName);
36011
+ var isDeadClickEligibleTag = browserEvent.target && !_.contains(deadClickIneligibleTags, browserEvent.target.tagName);
36036
36012
  if (canQueueDeadClicks && !hasHighlightedText && isDeadClickEligibleTag && !isHyperlinked) {
36037
36013
  queueDeadClick(eventData);
36038
36014
  }
@@ -36184,7 +36160,7 @@ var FrustrationEvent = (function () {
36184
36160
  if (eventData.type === 'submit' || eventData.type === 'change') {
36185
36161
  suspendDeadClickQueue();
36186
36162
  }
36187
- var isDeadClickIneligibleTag = _.has(browserEvent, 'target') && deadClickIneligibleTags.includes(browserEvent.target.tagName);
36163
+ var isDeadClickIneligibleTag = _.has(browserEvent, 'target') && _.contains(deadClickIneligibleTags, browserEvent.target.tagName);
36188
36164
  if (eventData.type === 'focus' && isDeadClickIneligibleTag) {
36189
36165
  suspendDeadClickQueue();
36190
36166
  }
@@ -36885,6 +36861,7 @@ var channels = [
36885
36861
  }]
36886
36862
  ];
36887
36863
  var WEB_ANALYTICS_STORAGE_KEY = 'utm';
36864
+ var CAPTURE_REFERRER_CONFIG_KEY = 'enableFullUtmReferrer';
36888
36865
  var WebAnalytics = /** @class */ (function () {
36889
36866
  function WebAnalytics() {
36890
36867
  this.name = 'WebAnalytics';
@@ -36892,6 +36869,11 @@ var WebAnalytics = /** @class */ (function () {
36892
36869
  WebAnalytics.prototype.initialize = function (pendo, PluginAPI) {
36893
36870
  this.pendo = pendo;
36894
36871
  this.api = PluginAPI;
36872
+ var ConfigReader = PluginAPI.ConfigReader;
36873
+ ConfigReader.addOption(CAPTURE_REFERRER_CONFIG_KEY, [
36874
+ ConfigReader.sources.SNIPPET_SRC,
36875
+ ConfigReader.sources.PENDO_CONFIG_SRC
36876
+ ], false);
36895
36877
  var bind = pendo._.bind;
36896
36878
  this.subscriptions = [
36897
36879
  PluginAPI.attachEvent(PluginAPI.Events, 'eventCaptured', bind(this.addUtmToEvent, this)),
@@ -36936,6 +36918,12 @@ var WebAnalytics = /** @class */ (function () {
36936
36918
  content: content
36937
36919
  };
36938
36920
  utm.channel = this.calculateUtmChannel({ referrerValue: referrerValue, utm: utm, gclid: gclid, fbclid: fbclid });
36921
+ if (referrer && this.api.ConfigReader.get(CAPTURE_REFERRER_CONFIG_KEY)) {
36922
+ utm.referrer = referrer;
36923
+ }
36924
+ else if (referrerValue !== 'direct') {
36925
+ utm.referrer = referrerValue;
36926
+ }
36939
36927
  return utm;
36940
36928
  }
36941
36929
  }
@@ -43841,14 +43829,20 @@ const testableMethods$1 = {
43841
43829
  MutationObserver: ["constructor"]
43842
43830
  };
43843
43831
  const untaintedBasePrototype$1 = {};
43844
- const isAngularZonePresent$1 = () => {
43845
- return !!globalThis.Zone;
43846
- };
43832
+ function angularZoneUnpatchedAlternative$1(key) {
43833
+ var _a2, _b;
43834
+ const angularUnpatchedVersionSymbol = (_b = (_a2 = globalThis == null ? void 0 : globalThis.Zone) == null ? void 0 : _a2.__symbol__) == null ? void 0 : _b.call(_a2, key);
43835
+ if (angularUnpatchedVersionSymbol && globalThis[angularUnpatchedVersionSymbol]) {
43836
+ return globalThis[angularUnpatchedVersionSymbol];
43837
+ } else {
43838
+ return void 0;
43839
+ }
43840
+ }
43847
43841
  function getUntaintedPrototype$1(key) {
43848
43842
  if (untaintedBasePrototype$1[key])
43849
43843
  return untaintedBasePrototype$1[key];
43850
- const defaultObj = globalThis[key];
43851
- const defaultPrototype = defaultObj.prototype;
43844
+ const candidate = angularZoneUnpatchedAlternative$1(key) || globalThis[key];
43845
+ const defaultPrototype = candidate.prototype;
43852
43846
  const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;
43853
43847
  const isUntaintedAccessors = Boolean(
43854
43848
  accessorNames && // @ts-expect-error 2345
@@ -43871,15 +43865,15 @@ function getUntaintedPrototype$1(key) {
43871
43865
  }
43872
43866
  )
43873
43867
  );
43874
- if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent$1()) {
43875
- untaintedBasePrototype$1[key] = defaultObj.prototype;
43876
- return defaultObj.prototype;
43868
+ if (isUntaintedAccessors && isUntaintedMethods) {
43869
+ untaintedBasePrototype$1[key] = candidate.prototype;
43870
+ return candidate.prototype;
43877
43871
  }
43878
43872
  try {
43879
43873
  const iframeEl = document.createElement("iframe");
43880
43874
  document.body.appendChild(iframeEl);
43881
43875
  const win = iframeEl.contentWindow;
43882
- if (!win) return defaultObj.prototype;
43876
+ if (!win) return candidate.prototype;
43883
43877
  const untaintedObject = win[key].prototype;
43884
43878
  document.body.removeChild(iframeEl);
43885
43879
  if (!untaintedObject) return defaultPrototype;
@@ -44045,6 +44039,7 @@ function stringifyStylesheet(s2) {
44045
44039
  }
44046
44040
  }
44047
44041
  function stringifyRule(rule, sheetHref) {
44042
+ var _a2;
44048
44043
  if (isCSSImportRule(rule)) {
44049
44044
  let importStringified;
44050
44045
  try {
@@ -44055,7 +44050,7 @@ function stringifyRule(rule, sheetHref) {
44055
44050
  } catch (error) {
44056
44051
  importStringified = rule.cssText;
44057
44052
  }
44058
- if (rule.styleSheet.href) {
44053
+ if ((_a2 = rule == null ? void 0 : rule.styleSheet) == null ? void 0 : _a2.href) {
44059
44054
  return absolutifyURLs(importStringified, rule.styleSheet.href);
44060
44055
  }
44061
44056
  return importStringified;
@@ -45261,14 +45256,20 @@ const testableMethods = {
45261
45256
  MutationObserver: ["constructor"]
45262
45257
  };
45263
45258
  const untaintedBasePrototype = {};
45264
- const isAngularZonePresent = () => {
45265
- return !!globalThis.Zone;
45266
- };
45259
+ function angularZoneUnpatchedAlternative(key) {
45260
+ var _a2, _b;
45261
+ const angularUnpatchedVersionSymbol = (_b = (_a2 = globalThis == null ? void 0 : globalThis.Zone) == null ? void 0 : _a2.__symbol__) == null ? void 0 : _b.call(_a2, key);
45262
+ if (angularUnpatchedVersionSymbol && globalThis[angularUnpatchedVersionSymbol]) {
45263
+ return globalThis[angularUnpatchedVersionSymbol];
45264
+ } else {
45265
+ return void 0;
45266
+ }
45267
+ }
45267
45268
  function getUntaintedPrototype(key) {
45268
45269
  if (untaintedBasePrototype[key])
45269
45270
  return untaintedBasePrototype[key];
45270
- const defaultObj = globalThis[key];
45271
- const defaultPrototype = defaultObj.prototype;
45271
+ const candidate = angularZoneUnpatchedAlternative(key) || globalThis[key];
45272
+ const defaultPrototype = candidate.prototype;
45272
45273
  const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;
45273
45274
  const isUntaintedAccessors = Boolean(
45274
45275
  accessorNames && // @ts-expect-error 2345
@@ -45291,15 +45292,15 @@ function getUntaintedPrototype(key) {
45291
45292
  }
45292
45293
  )
45293
45294
  );
45294
- if (isUntaintedAccessors && isUntaintedMethods && !isAngularZonePresent()) {
45295
- untaintedBasePrototype[key] = defaultObj.prototype;
45296
- return defaultObj.prototype;
45295
+ if (isUntaintedAccessors && isUntaintedMethods) {
45296
+ untaintedBasePrototype[key] = candidate.prototype;
45297
+ return candidate.prototype;
45297
45298
  }
45298
45299
  try {
45299
45300
  const iframeEl = document.createElement("iframe");
45300
45301
  document.body.appendChild(iframeEl);
45301
45302
  const win = iframeEl.contentWindow;
45302
- if (!win) return defaultObj.prototype;
45303
+ if (!win) return candidate.prototype;
45303
45304
  const untaintedObject = win[key].prototype;
45304
45305
  document.body.removeChild(iframeEl);
45305
45306
  if (!untaintedObject) return defaultPrototype;
@@ -46169,7 +46170,7 @@ class MutationBuffer {
46169
46170
  }
46170
46171
  const old = this.unattachedDoc.createElement("span");
46171
46172
  if (m.oldValue) {
46172
- old.setAttribute("style", m.oldValue);
46173
+ old.style.cssText = m.oldValue;
46173
46174
  }
46174
46175
  for (const pname of Array.from(target.style)) {
46175
46176
  const newValue = target.style.getPropertyValue(pname);
@@ -48123,8 +48124,8 @@ function initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {
48123
48124
  };
48124
48125
  }
48125
48126
  const encodedJs = "KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=";
48126
- const decodeBase64$1 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));
48127
- const blob = typeof window !== "undefined" && window.Blob && new Blob([decodeBase64$1(encodedJs)], { type: "text/javascript;charset=utf-8" });
48127
+ const decodeBase64 = (base64) => Uint8Array.from(atob(base64), (c2) => c2.charCodeAt(0));
48128
+ const blob = typeof window !== "undefined" && window.Blob && new Blob([decodeBase64(encodedJs)], { type: "text/javascript;charset=utf-8" });
48128
48129
  function WorkerWrapper(options) {
48129
48130
  let objURL;
48130
48131
  try {
@@ -50129,38 +50130,265 @@ function errorLogger(recorder) {
50129
50130
  return recorder;
50130
50131
  }
50131
50132
 
50132
- function decodeBase64(base64, enableUnicode) {
50133
- var binaryString = atob(base64);
50134
- if (enableUnicode) {
50135
- var binaryView = new Uint8Array(binaryString.length);
50136
- for (var i = 0, n = binaryString.length; i < n; ++i) {
50137
- binaryView[i] = binaryString.charCodeAt(i);
50138
- }
50139
- const decoder = new TextDecoder("utf-16le");
50140
- return decoder.decode(new Uint16Array(binaryView.buffer));
50133
+ function funcToSource(fn, sourcemapArg) {
50134
+ var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;
50135
+ var regex = /(['"])__worker_loader_strict__(['"])/g;
50136
+ var lines = [];
50137
+
50138
+ // instead of extracting the function source code, just return the function as if it's being evaluated
50139
+ // by the caller.
50140
+ var source = fn.toString();
50141
+ source = source.replace(regex, '$1use strict$2');
50142
+ lines.push('(' + source + ')()');
50143
+ if (sourcemap) {
50144
+ lines.push('\/\/# sourceMappingURL=' + sourcemap + '\n');
50141
50145
  }
50142
- return binaryString;
50146
+ return lines;
50143
50147
  }
50144
50148
 
50145
- function createURL(base64, sourcemapArg, enableUnicodeArg) {
50146
- var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;
50147
- var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;
50148
- var source = decodeBase64(base64, enableUnicode);
50149
- var start = source.indexOf('\n', 10) + 1;
50150
- var body = source.substring(start) + (sourcemap ? '\/\/# sourceMappingURL=' + sourcemap : '');
50151
- var blob = new Blob([body], { type: 'application/javascript' });
50149
+ function createURL(fn, sourcemapArg) {
50150
+ var lines = funcToSource(fn, sourcemapArg);
50151
+ var blob = new Blob(lines, { type: 'application/javascript' });
50152
50152
  return URL.createObjectURL(blob);
50153
50153
  }
50154
50154
 
50155
- function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {
50155
+ function createInlineWorkerFactory(fn, sourcemapArg) {
50156
50156
  var url;
50157
50157
  return function WorkerFactory(options) {
50158
- url = url || createURL(base64, sourcemapArg, enableUnicodeArg);
50158
+ url = url || createURL(fn, sourcemapArg);
50159
50159
  return new Worker(url, options);
50160
50160
  };
50161
50161
  }
50162
50162
 
50163
- var WorkerFactory = /*#__PURE__*/createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICB2YXIgYjY0ID0gKGZ1bmN0aW9uKCkgewoKICAgICAgICB2YXIgbG9va3VwID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV8nLnNwbGl0KCcnKTsKCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgJ3VpbnQ4VG9CYXNlNjQnOiB1aW50OFRvQmFzZTY0CiAgICAgICAgfTsKCiAgICAgICAgZnVuY3Rpb24gdWludDhUb0Jhc2U2NCh1aW50OCkgewogICAgICAgICAgICB2YXIgaSwKICAgICAgICAgICAgICAgIGV4dHJhQnl0ZXMgPSB1aW50OC5sZW5ndGggJSAzLCAvLyBpZiB3ZSBoYXZlIDEgYnl0ZSBsZWZ0LCBwYWQgMiBieXRlcwogICAgICAgICAgICAgICAgb3V0cHV0ID0gJycsCiAgICAgICAgICAgICAgICB0ZW1wLCBsZW5ndGg7CgogICAgICAgICAgICBmdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQobnVtKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbG9va3VwW251bSA+PiAxOCAmIDB4M0ZdICsgbG9va3VwW251bSA+PiAxMiAmIDB4M0ZdICsgbG9va3VwW251bSA+PiA2ICYgMHgzRl0gKyBsb29rdXBbbnVtICYgMHgzRl07CiAgICAgICAgICAgIH0KCiAgICAJCS8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXIKICAgICAgICAgICAgZm9yIChpID0gMCwgbGVuZ3RoID0gdWludDgubGVuZ3RoIC0gZXh0cmFCeXRlczsgaSA8IGxlbmd0aDsgaSArPSAzKSB7CiAgICAgICAgICAgICAgICB0ZW1wID0gKHVpbnQ4W2ldIDw8IDE2KSArICh1aW50OFtpICsgMV0gPDwgOCkgKyAodWludDhbaSArIDJdKTsKICAgICAgICAgICAgICAgIG91dHB1dCArPSB0cmlwbGV0VG9CYXNlNjQodGVtcCk7CiAgICAgICAgICAgIH0KCiAgICAJCS8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXMKICAgICAgICAgICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVmYXVsdC1jYXNlCiAgICAgICAgICAgIHN3aXRjaCAoZXh0cmFCeXRlcykgewogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICB0ZW1wID0gdWludDhbdWludDgubGVuZ3RoIC0gMV07CiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gbG9va3VwW3RlbXAgPj4gMl07CiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gbG9va3VwWyh0ZW1wIDw8IDQpICYgMHgzRl07CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgdGVtcCA9ICh1aW50OFt1aW50OC5sZW5ndGggLSAyXSA8PCA4KSArICh1aW50OFt1aW50OC5sZW5ndGggLSAxXSk7CiAgICAgICAgICAgICAgICBvdXRwdXQgKz0gbG9va3VwW3RlbXAgPj4gMTBdOwogICAgICAgICAgICAgICAgb3V0cHV0ICs9IGxvb2t1cFsodGVtcCA+PiA0KSAmIDB4M0ZdOwogICAgICAgICAgICAgICAgb3V0cHV0ICs9IGxvb2t1cFsodGVtcCA8PCAyKSAmIDB4M0ZdOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7CiAgICAgICAgfQogICAgfSkoKTsKCiAgICBmdW5jdGlvbiBnZXREZWZhdWx0RXhwb3J0RnJvbUNqcyAoeCkgewogICAgCXJldHVybiB4ICYmIHguX19lc01vZHVsZSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeCwgJ2RlZmF1bHQnKSA/IHhbJ2RlZmF1bHQnXSA6IHg7CiAgICB9CgogICAgdmFyIGRlZmxhdGVfbWluID0ge2V4cG9ydHM6IHt9fTsKCiAgICAvKgogICAgICogQGxpY2Vuc2UgemxpYi5qcyAyMDEyIC0gaW1heWEgWyBodHRwczovL2dpdGh1Yi5jb20vaW1heWEvemxpYi5qcyBdIFRoZSBNSVQgTGljZW5zZQogICAgICovCgogICAgKGZ1bmN0aW9uIChtb2R1bGUpIHsKICAgIAkoZnVuY3Rpb24oKSB7dmFyIG49dm9pZCAwLHc9ITAsYWE9dGhpcztmdW5jdGlvbiBiYShmLGQpe3ZhciBjPWYuc3BsaXQoIi4iKSxlPWFhOyEoY1swXWluIGUpJiZlLmV4ZWNTY3JpcHQmJmUuZXhlY1NjcmlwdCgidmFyICIrY1swXSk7Zm9yKHZhciBiO2MubGVuZ3RoJiYoYj1jLnNoaWZ0KCkpOykhYy5sZW5ndGgmJmQhPT1uP2VbYl09ZDplPWVbYl0/ZVtiXTplW2JdPXt9O312YXIgQz0idW5kZWZpbmVkIiE9PXR5cGVvZiBVaW50OEFycmF5JiYidW5kZWZpbmVkIiE9PXR5cGVvZiBVaW50MTZBcnJheSYmInVuZGVmaW5lZCIhPT10eXBlb2YgVWludDMyQXJyYXk7ZnVuY3Rpb24gSyhmLGQpe3RoaXMuaW5kZXg9Im51bWJlciI9PT10eXBlb2YgZD9kOjA7dGhpcy5lPTA7dGhpcy5idWZmZXI9ZiBpbnN0YW5jZW9mKEM/VWludDhBcnJheTpBcnJheSk/ZjpuZXcgKEM/VWludDhBcnJheTpBcnJheSkoMzI3NjgpO2lmKDIqdGhpcy5idWZmZXIubGVuZ3RoPD10aGlzLmluZGV4KXRocm93IEVycm9yKCJpbnZhbGlkIGluZGV4Iik7dGhpcy5idWZmZXIubGVuZ3RoPD10aGlzLmluZGV4JiZjYSh0aGlzKTt9ZnVuY3Rpb24gY2EoZil7dmFyIGQ9Zi5idWZmZXIsYyxlPWQubGVuZ3RoLGI9bmV3IChDP1VpbnQ4QXJyYXk6QXJyYXkpKGU8PDEpO2lmKEMpYi5zZXQoZCk7ZWxzZSBmb3IoYz0wO2M8ZTsrK2MpYltjXT1kW2NdO3JldHVybiBmLmJ1ZmZlcj1ifQogICAgCUsucHJvdG90eXBlLmI9ZnVuY3Rpb24oZixkLGMpe3ZhciBlPXRoaXMuYnVmZmVyLGI9dGhpcy5pbmRleCxhPXRoaXMuZSxnPWVbYl0sbTtjJiYxPGQmJihmPTg8ZD8oTFtmJjI1NV08PDI0fExbZj4+PjgmMjU1XTw8MTZ8TFtmPj4+MTYmMjU1XTw8OHxMW2Y+Pj4yNCYyNTVdKT4+MzItZDpMW2ZdPj44LWQpO2lmKDg+ZCthKWc9Zzw8ZHxmLGErPWQ7ZWxzZSBmb3IobT0wO208ZDsrK20pZz1nPDwxfGY+PmQtbS0xJjEsOD09PSsrYSYmKGE9MCxlW2IrK109TFtnXSxnPTAsYj09PWUubGVuZ3RoJiYoZT1jYSh0aGlzKSkpO2VbYl09Zzt0aGlzLmJ1ZmZlcj1lO3RoaXMuZT1hO3RoaXMuaW5kZXg9Yjt9O0sucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbigpe3ZhciBmPXRoaXMuYnVmZmVyLGQ9dGhpcy5pbmRleCxjOzA8dGhpcy5lJiYoZltkXTw8PTgtdGhpcy5lLGZbZF09TFtmW2RdXSxkKyspO0M/Yz1mLnN1YmFycmF5KDAsZCk6KGYubGVuZ3RoPWQsYz1mKTtyZXR1cm4gY307CiAgICAJdmFyIGRhPW5ldyAoQz9VaW50OEFycmF5OkFycmF5KSgyNTYpLE07Zm9yKE09MDsyNTY+TTsrK00pe2Zvcih2YXIgTj1NLFM9TixlYT03LE49Tj4+PjE7TjtOPj4+PTEpUzw8PTEsU3w9TiYxLC0tZWE7ZGFbTV09KFM8PGVhJjI1NSk+Pj4wO312YXIgTD1kYTtmdW5jdGlvbiBpYShmKXt0aGlzLmJ1ZmZlcj1uZXcgKEM/VWludDE2QXJyYXk6QXJyYXkpKDIqZik7dGhpcy5sZW5ndGg9MDt9aWEucHJvdG90eXBlLmdldFBhcmVudD1mdW5jdGlvbihmKXtyZXR1cm4gMiooKGYtMikvNHwwKX07aWEucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZixkKXt2YXIgYyxlLGI9dGhpcy5idWZmZXIsYTtjPXRoaXMubGVuZ3RoO2JbdGhpcy5sZW5ndGgrK109ZDtmb3IoYlt0aGlzLmxlbmd0aCsrXT1mOzA8YzspaWYoZT10aGlzLmdldFBhcmVudChjKSxiW2NdPmJbZV0pYT1iW2NdLGJbY109YltlXSxiW2VdPWEsYT1iW2MrMV0sYltjKzFdPWJbZSsxXSxiW2UrMV09YSxjPWU7ZWxzZSBicmVhaztyZXR1cm4gdGhpcy5sZW5ndGh9OwogICAgCWlhLnByb3RvdHlwZS5wb3A9ZnVuY3Rpb24oKXt2YXIgZixkLGM9dGhpcy5idWZmZXIsZSxiLGE7ZD1jWzBdO2Y9Y1sxXTt0aGlzLmxlbmd0aC09MjtjWzBdPWNbdGhpcy5sZW5ndGhdO2NbMV09Y1t0aGlzLmxlbmd0aCsxXTtmb3IoYT0wOzspe2I9MiphKzI7aWYoYj49dGhpcy5sZW5ndGgpYnJlYWs7YisyPHRoaXMubGVuZ3RoJiZjW2IrMl0+Y1tiXSYmKGIrPTIpO2lmKGNbYl0+Y1thXSllPWNbYV0sY1thXT1jW2JdLGNbYl09ZSxlPWNbYSsxXSxjW2ErMV09Y1tiKzFdLGNbYisxXT1lO2Vsc2UgYnJlYWs7YT1iO31yZXR1cm4ge2luZGV4OmYsdmFsdWU6ZCxsZW5ndGg6dGhpcy5sZW5ndGh9fTtmdW5jdGlvbiBrYShmLGQpe3RoaXMuZD1sYTt0aGlzLmk9MDt0aGlzLmlucHV0PUMmJmYgaW5zdGFuY2VvZiBBcnJheT9uZXcgVWludDhBcnJheShmKTpmO3RoaXMuYz0wO2QmJihkLmxhenkmJih0aGlzLmk9ZC5sYXp5KSwibnVtYmVyIj09PXR5cGVvZiBkLmNvbXByZXNzaW9uVHlwZSYmKHRoaXMuZD1kLmNvbXByZXNzaW9uVHlwZSksZC5vdXRwdXRCdWZmZXImJih0aGlzLmE9QyYmZC5vdXRwdXRCdWZmZXIgaW5zdGFuY2VvZiBBcnJheT9uZXcgVWludDhBcnJheShkLm91dHB1dEJ1ZmZlcik6ZC5vdXRwdXRCdWZmZXIpLCJudW1iZXIiPT09dHlwZW9mIGQub3V0cHV0SW5kZXgmJih0aGlzLmM9ZC5vdXRwdXRJbmRleCkpO3RoaXMuYXx8KHRoaXMuYT1uZXcgKEM/VWludDhBcnJheTpBcnJheSkoMzI3NjgpKTt9dmFyIGxhPTIsbmE9e05PTkU6MCxoOjEsZzpsYSxuOjN9LFQ9W10sVTsKICAgIAlmb3IoVT0wOzI4OD5VO1UrKylzd2l0Y2godyl7Y2FzZSAxNDM+PVU6VC5wdXNoKFtVKzQ4LDhdKTticmVhaztjYXNlIDI1NT49VTpULnB1c2goW1UtMTQ0KzQwMCw5XSk7YnJlYWs7Y2FzZSAyNzk+PVU6VC5wdXNoKFtVLTI1NiswLDddKTticmVhaztjYXNlIDI4Nz49VTpULnB1c2goW1UtMjgwKzE5Miw4XSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyAiaW52YWxpZCBsaXRlcmFsOiAiK1U7fQogICAgCWthLnByb3RvdHlwZS5mPWZ1bmN0aW9uKCl7dmFyIGYsZCxjLGUsYj10aGlzLmlucHV0O3N3aXRjaCh0aGlzLmQpe2Nhc2UgMDpjPTA7Zm9yKGU9Yi5sZW5ndGg7YzxlOyl7ZD1DP2Iuc3ViYXJyYXkoYyxjKzY1NTM1KTpiLnNsaWNlKGMsYys2NTUzNSk7Yys9ZC5sZW5ndGg7dmFyIGE9ZCxnPWM9PT1lLG09bixrPW4scD1uLHQ9bix1PW4sbD10aGlzLmEsaD10aGlzLmM7aWYoQyl7Zm9yKGw9bmV3IFVpbnQ4QXJyYXkodGhpcy5hLmJ1ZmZlcik7bC5sZW5ndGg8PWgrYS5sZW5ndGgrNTspbD1uZXcgVWludDhBcnJheShsLmxlbmd0aDw8MSk7bC5zZXQodGhpcy5hKTt9bT1nPzE6MDtsW2grK109bXwwO2s9YS5sZW5ndGg7cD1+ays2NTUzNiY2NTUzNTtsW2grK109ayYyNTU7bFtoKytdPWs+Pj44JjI1NTtsW2grK109cCYyNTU7bFtoKytdPXA+Pj44JjI1NTtpZihDKWwuc2V0KGEsaCksaCs9YS5sZW5ndGgsbD1sLnN1YmFycmF5KDAsaCk7ZWxzZSB7dD0wO2Zvcih1PWEubGVuZ3RoO3Q8dTsrK3QpbFtoKytdPQogICAgCWFbdF07bC5sZW5ndGg9aDt9dGhpcy5jPWg7dGhpcy5hPWw7fWJyZWFrO2Nhc2UgMTp2YXIgcT1uZXcgSyhDP25ldyBVaW50OEFycmF5KHRoaXMuYS5idWZmZXIpOnRoaXMuYSx0aGlzLmMpO3EuYigxLDEsdyk7cS5iKDEsMix3KTt2YXIgcz1vYSh0aGlzLGIpLHgsZmEsejt4PTA7Zm9yKGZhPXMubGVuZ3RoO3g8ZmE7eCsrKWlmKHo9c1t4XSxLLnByb3RvdHlwZS5iLmFwcGx5KHEsVFt6XSksMjU2PHopcS5iKHNbKyt4XSxzWysreF0sdykscS5iKHNbKyt4XSw1KSxxLmIoc1srK3hdLHNbKyt4XSx3KTtlbHNlIGlmKDI1Nj09PXopYnJlYWs7dGhpcy5hPXEuZmluaXNoKCk7dGhpcy5jPXRoaXMuYS5sZW5ndGg7YnJlYWs7Y2FzZSBsYTp2YXIgQj1uZXcgSyhDP25ldyBVaW50OEFycmF5KHRoaXMuYS5idWZmZXIpOnRoaXMuYSx0aGlzLmMpLHRhLEosTyxQLFEsTGE9WzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdLFgsdWEsWSx2YSxnYSxqYT1BcnJheSgxOSksCiAgICAJd2EsUixoYSx5LHhhO3RhPWxhO0IuYigxLDEsdyk7Qi5iKHRhLDIsdyk7Sj1vYSh0aGlzLGIpO1g9cGEodGhpcy5tLDE1KTt1YT1xYShYKTtZPXBhKHRoaXMubCw3KTt2YT1xYShZKTtmb3IoTz0yODY7MjU3PE8mJjA9PT1YW08tMV07Ty0tKTtmb3IoUD0zMDsxPFAmJjA9PT1ZW1AtMV07UC0tKTt2YXIgeWE9Tyx6YT1QLEY9bmV3IChDP1VpbnQzMkFycmF5OkFycmF5KSh5YSt6YSkscixHLHYsWixFPW5ldyAoQz9VaW50MzJBcnJheTpBcnJheSkoMzE2KSxELEEsSD1uZXcgKEM/VWludDhBcnJheTpBcnJheSkoMTkpO2ZvcihyPUc9MDtyPHlhO3IrKylGW0crK109WFtyXTtmb3Iocj0wO3I8emE7cisrKUZbRysrXT1ZW3JdO2lmKCFDKXtyPTA7Zm9yKFo9SC5sZW5ndGg7cjxaOysrcilIW3JdPTA7fXI9RD0wO2ZvcihaPUYubGVuZ3RoO3I8WjtyKz1HKXtmb3IoRz0xO3IrRzxaJiZGW3IrR109PT1GW3JdOysrRyk7dj1HO2lmKDA9PT1GW3JdKWlmKDM+dilmb3IoOzA8di0tOylFW0QrK109MCwKICAgIAlIWzBdKys7ZWxzZSBmb3IoOzA8djspQT0xMzg+dj92OjEzOCxBPnYtMyYmQTx2JiYoQT12LTMpLDEwPj1BPyhFW0QrK109MTcsRVtEKytdPUEtMyxIWzE3XSsrKTooRVtEKytdPTE4LEVbRCsrXT1BLTExLEhbMThdKyspLHYtPUE7ZWxzZSBpZihFW0QrK109RltyXSxIW0Zbcl1dKyssdi0tLDM+dilmb3IoOzA8di0tOylFW0QrK109RltyXSxIW0Zbcl1dKys7ZWxzZSBmb3IoOzA8djspQT02PnY/djo2LEE+di0zJiZBPHYmJihBPXYtMyksRVtEKytdPTE2LEVbRCsrXT1BLTMsSFsxNl0rKyx2LT1BO31mPUM/RS5zdWJhcnJheSgwLEQpOkUuc2xpY2UoMCxEKTtnYT1wYShILDcpO2Zvcih5PTA7MTk+eTt5KyspamFbeV09Z2FbTGFbeV1dO2ZvcihRPTE5OzQ8USYmMD09PWphW1EtMV07US0tKTt3YT1xYShnYSk7Qi5iKE8tMjU3LDUsdyk7Qi5iKFAtMSw1LHcpO0IuYihRLTQsNCx3KTtmb3IoeT0wO3k8UTt5KyspQi5iKGphW3ldLDMsdyk7eT0wO2Zvcih4YT1mLmxlbmd0aDt5PHhhO3krKylpZihSPQogICAgCWZbeV0sQi5iKHdhW1JdLGdhW1JdLHcpLDE2PD1SKXt5Kys7c3dpdGNoKFIpe2Nhc2UgMTY6aGE9MjticmVhaztjYXNlIDE3OmhhPTM7YnJlYWs7Y2FzZSAxODpoYT03O2JyZWFrO2RlZmF1bHQ6dGhyb3cgImludmFsaWQgY29kZTogIitSO31CLmIoZlt5XSxoYSx3KTt9dmFyIEFhPVt1YSxYXSxCYT1bdmEsWV0sSSxDYSwkLG1hLERhLEVhLEZhLEdhO0RhPUFhWzBdO0VhPUFhWzFdO0ZhPUJhWzBdO0dhPUJhWzFdO0k9MDtmb3IoQ2E9Si5sZW5ndGg7STxDYTsrK0kpaWYoJD1KW0ldLEIuYihEYVskXSxFYVskXSx3KSwyNTY8JClCLmIoSlsrK0ldLEpbKytJXSx3KSxtYT1KWysrSV0sQi5iKEZhW21hXSxHYVttYV0sdyksQi5iKEpbKytJXSxKWysrSV0sdyk7ZWxzZSBpZigyNTY9PT0kKWJyZWFrO3RoaXMuYT1CLmZpbmlzaCgpO3RoaXMuYz10aGlzLmEubGVuZ3RoO2JyZWFrO2RlZmF1bHQ6dGhyb3cgImludmFsaWQgY29tcHJlc3Npb24gdHlwZSI7fXJldHVybiB0aGlzLmF9OwogICAgCWZ1bmN0aW9uIHJhKGYsZCl7dGhpcy5sZW5ndGg9Zjt0aGlzLms9ZDt9CiAgICAJdmFyIHNhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZihiKXtzd2l0Y2godyl7Y2FzZSAzPT09YjpyZXR1cm4gWzI1NyxiLTMsMF07Y2FzZSA0PT09YjpyZXR1cm4gWzI1OCxiLTQsMF07Y2FzZSA1PT09YjpyZXR1cm4gWzI1OSxiLTUsMF07Y2FzZSA2PT09YjpyZXR1cm4gWzI2MCxiLTYsMF07Y2FzZSA3PT09YjpyZXR1cm4gWzI2MSxiLTcsMF07Y2FzZSA4PT09YjpyZXR1cm4gWzI2MixiLTgsMF07Y2FzZSA5PT09YjpyZXR1cm4gWzI2MyxiLTksMF07Y2FzZSAxMD09PWI6cmV0dXJuIFsyNjQsYi0xMCwwXTtjYXNlIDEyPj1iOnJldHVybiBbMjY1LGItMTEsMV07Y2FzZSAxND49YjpyZXR1cm4gWzI2NixiLTEzLDFdO2Nhc2UgMTY+PWI6cmV0dXJuIFsyNjcsYi0xNSwxXTtjYXNlIDE4Pj1iOnJldHVybiBbMjY4LGItMTcsMV07Y2FzZSAyMj49YjpyZXR1cm4gWzI2OSxiLTE5LDJdO2Nhc2UgMjY+PWI6cmV0dXJuIFsyNzAsYi0yMywyXTtjYXNlIDMwPj1iOnJldHVybiBbMjcxLGItMjcsMl07Y2FzZSAzND49YjpyZXR1cm4gWzI3MiwKICAgIAliLTMxLDJdO2Nhc2UgNDI+PWI6cmV0dXJuIFsyNzMsYi0zNSwzXTtjYXNlIDUwPj1iOnJldHVybiBbMjc0LGItNDMsM107Y2FzZSA1OD49YjpyZXR1cm4gWzI3NSxiLTUxLDNdO2Nhc2UgNjY+PWI6cmV0dXJuIFsyNzYsYi01OSwzXTtjYXNlIDgyPj1iOnJldHVybiBbMjc3LGItNjcsNF07Y2FzZSA5OD49YjpyZXR1cm4gWzI3OCxiLTgzLDRdO2Nhc2UgMTE0Pj1iOnJldHVybiBbMjc5LGItOTksNF07Y2FzZSAxMzA+PWI6cmV0dXJuIFsyODAsYi0xMTUsNF07Y2FzZSAxNjI+PWI6cmV0dXJuIFsyODEsYi0xMzEsNV07Y2FzZSAxOTQ+PWI6cmV0dXJuIFsyODIsYi0xNjMsNV07Y2FzZSAyMjY+PWI6cmV0dXJuIFsyODMsYi0xOTUsNV07Y2FzZSAyNTc+PWI6cmV0dXJuIFsyODQsYi0yMjcsNV07Y2FzZSAyNTg9PT1iOnJldHVybiBbMjg1LGItMjU4LDBdO2RlZmF1bHQ6dGhyb3cgImludmFsaWQgbGVuZ3RoOiAiK2I7fX12YXIgZD1bXSxjLGU7Zm9yKGM9MzsyNTg+PWM7YysrKWU9ZihjKSxkW2NdPWVbMl08PDI0fAogICAgCWVbMV08PDE2fGVbMF07cmV0dXJuIGR9KCksSGE9Qz9uZXcgVWludDMyQXJyYXkoc2EpOnNhOwogICAgCWZ1bmN0aW9uIG9hKGYsZCl7ZnVuY3Rpb24gYyhiLGMpe3ZhciBhPWIuayxkPVtdLGU9MCxmO2Y9SGFbYi5sZW5ndGhdO2RbZSsrXT1mJjY1NTM1O2RbZSsrXT1mPj4xNiYyNTU7ZFtlKytdPWY+PjI0O3ZhciBnO3N3aXRjaCh3KXtjYXNlIDE9PT1hOmc9WzAsYS0xLDBdO2JyZWFrO2Nhc2UgMj09PWE6Zz1bMSxhLTIsMF07YnJlYWs7Y2FzZSAzPT09YTpnPVsyLGEtMywwXTticmVhaztjYXNlIDQ9PT1hOmc9WzMsYS00LDBdO2JyZWFrO2Nhc2UgNj49YTpnPVs0LGEtNSwxXTticmVhaztjYXNlIDg+PWE6Zz1bNSxhLTcsMV07YnJlYWs7Y2FzZSAxMj49YTpnPVs2LGEtOSwyXTticmVhaztjYXNlIDE2Pj1hOmc9WzcsYS0xMywyXTticmVhaztjYXNlIDI0Pj1hOmc9WzgsYS0xNywzXTticmVhaztjYXNlIDMyPj1hOmc9WzksYS0yNSwzXTticmVhaztjYXNlIDQ4Pj1hOmc9WzEwLGEtMzMsNF07YnJlYWs7Y2FzZSA2ND49YTpnPVsxMSxhLTQ5LDRdO2JyZWFrO2Nhc2UgOTY+PWE6Zz1bMTIsYS0KICAgIAk2NSw1XTticmVhaztjYXNlIDEyOD49YTpnPVsxMyxhLTk3LDVdO2JyZWFrO2Nhc2UgMTkyPj1hOmc9WzE0LGEtMTI5LDZdO2JyZWFrO2Nhc2UgMjU2Pj1hOmc9WzE1LGEtMTkzLDZdO2JyZWFrO2Nhc2UgMzg0Pj1hOmc9WzE2LGEtMjU3LDddO2JyZWFrO2Nhc2UgNTEyPj1hOmc9WzE3LGEtMzg1LDddO2JyZWFrO2Nhc2UgNzY4Pj1hOmc9WzE4LGEtNTEzLDhdO2JyZWFrO2Nhc2UgMTAyND49YTpnPVsxOSxhLTc2OSw4XTticmVhaztjYXNlIDE1MzY+PWE6Zz1bMjAsYS0xMDI1LDldO2JyZWFrO2Nhc2UgMjA0OD49YTpnPVsyMSxhLTE1MzcsOV07YnJlYWs7Y2FzZSAzMDcyPj1hOmc9WzIyLGEtMjA0OSwxMF07YnJlYWs7Y2FzZSA0MDk2Pj1hOmc9WzIzLGEtMzA3MywxMF07YnJlYWs7Y2FzZSA2MTQ0Pj1hOmc9WzI0LGEtNDA5NywxMV07YnJlYWs7Y2FzZSA4MTkyPj1hOmc9WzI1LGEtNjE0NSwxMV07YnJlYWs7Y2FzZSAxMjI4OD49YTpnPVsyNixhLTgxOTMsMTJdO2JyZWFrO2Nhc2UgMTYzODQ+PQogICAgCWE6Zz1bMjcsYS0xMjI4OSwxMl07YnJlYWs7Y2FzZSAyNDU3Nj49YTpnPVsyOCxhLTE2Mzg1LDEzXTticmVhaztjYXNlIDMyNzY4Pj1hOmc9WzI5LGEtMjQ1NzcsMTNdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgImludmFsaWQgZGlzdGFuY2UiO31mPWc7ZFtlKytdPWZbMF07ZFtlKytdPWZbMV07ZFtlKytdPWZbMl07dmFyIGssbTtrPTA7Zm9yKG09ZC5sZW5ndGg7azxtOysraylsW2grK109ZFtrXTtzW2RbMF1dKys7eFtkWzNdXSsrO3E9Yi5sZW5ndGgrYy0xO3U9bnVsbDt9dmFyIGUsYixhLGcsbSxrPXt9LHAsdCx1LGw9Qz9uZXcgVWludDE2QXJyYXkoMipkLmxlbmd0aCk6W10saD0wLHE9MCxzPW5ldyAoQz9VaW50MzJBcnJheTpBcnJheSkoMjg2KSx4PW5ldyAoQz9VaW50MzJBcnJheTpBcnJheSkoMzApLGZhPWYuaSx6O2lmKCFDKXtmb3IoYT0wOzI4NT49YTspc1thKytdPTA7Zm9yKGE9MDsyOT49YTspeFthKytdPTA7fXNbMjU2XT0xO2U9MDtmb3IoYj1kLmxlbmd0aDtlPGI7KytlKXthPQogICAgCW09MDtmb3IoZz0zO2E8ZyYmZSthIT09YjsrK2EpbT1tPDw4fGRbZSthXTtrW21dPT09biYmKGtbbV09W10pO3A9a1ttXTtpZighKDA8cS0tKSl7Zm9yKDswPHAubGVuZ3RoJiYzMjc2ODxlLXBbMF07KXAuc2hpZnQoKTtpZihlKzM+PWIpe3UmJmModSwtMSk7YT0wO2ZvcihnPWItZTthPGc7KythKXo9ZFtlK2FdLGxbaCsrXT16LCsrc1t6XTticmVha30wPHAubGVuZ3RoPyh0PUlhKGQsZSxwKSx1P3UubGVuZ3RoPHQubGVuZ3RoPyh6PWRbZS0xXSxsW2grK109eiwrK3Nbel0sYyh0LDApKTpjKHUsLTEpOnQubGVuZ3RoPGZhP3U9dDpjKHQsMCkpOnU/Yyh1LC0xKTooej1kW2VdLGxbaCsrXT16LCsrc1t6XSk7fXAucHVzaChlKTt9bFtoKytdPTI1NjtzWzI1Nl0rKztmLm09cztmLmw9eDtyZXR1cm4gQz9sLnN1YmFycmF5KDAsaCk6bH0KICAgIAlmdW5jdGlvbiBJYShmLGQsYyl7dmFyIGUsYixhPTAsZyxtLGsscCx0PWYubGVuZ3RoO209MDtwPWMubGVuZ3RoO2E6Zm9yKDttPHA7bSsrKXtlPWNbcC1tLTFdO2c9MztpZigzPGEpe2ZvcihrPWE7MzxrO2stLSlpZihmW2Uray0xXSE9PWZbZCtrLTFdKWNvbnRpbnVlIGE7Zz1hO31mb3IoOzI1OD5nJiZkK2c8dCYmZltlK2ddPT09ZltkK2ddOykrK2c7Zz5hJiYoYj1lLGE9Zyk7aWYoMjU4PT09ZylicmVha31yZXR1cm4gbmV3IHJhKGEsZC1iKX0KICAgIAlmdW5jdGlvbiBwYShmLGQpe3ZhciBjPWYubGVuZ3RoLGU9bmV3IGlhKDU3MiksYj1uZXcgKEM/VWludDhBcnJheTpBcnJheSkoYyksYSxnLG0sayxwO2lmKCFDKWZvcihrPTA7azxjO2srKyliW2tdPTA7Zm9yKGs9MDtrPGM7KytrKTA8ZltrXSYmZS5wdXNoKGssZltrXSk7YT1BcnJheShlLmxlbmd0aC8yKTtnPW5ldyAoQz9VaW50MzJBcnJheTpBcnJheSkoZS5sZW5ndGgvMik7aWYoMT09PWEubGVuZ3RoKXJldHVybiBiW2UucG9wKCkuaW5kZXhdPTEsYjtrPTA7Zm9yKHA9ZS5sZW5ndGgvMjtrPHA7KytrKWFba109ZS5wb3AoKSxnW2tdPWFba10udmFsdWU7bT1KYShnLGcubGVuZ3RoLGQpO2s9MDtmb3IocD1hLmxlbmd0aDtrPHA7KytrKWJbYVtrXS5pbmRleF09bVtrXTtyZXR1cm4gYn0KICAgIAlmdW5jdGlvbiBKYShmLGQsYyl7ZnVuY3Rpb24gZShhKXt2YXIgYj1rW2FdW3BbYV1dO2I9PT1kPyhlKGErMSksZShhKzEpKTotLWdbYl07KytwW2FdO312YXIgYj1uZXcgKEM/VWludDE2QXJyYXk6QXJyYXkpKGMpLGE9bmV3IChDP1VpbnQ4QXJyYXk6QXJyYXkpKGMpLGc9bmV3IChDP1VpbnQ4QXJyYXk6QXJyYXkpKGQpLG09QXJyYXkoYyksaz1BcnJheShjKSxwPUFycmF5KGMpLHQ9KDE8PGMpLWQsdT0xPDxjLTEsbCxoLHEscyx4O2JbYy0xXT1kO2ZvcihoPTA7aDxjOysraCl0PHU/YVtoXT0wOihhW2hdPTEsdC09dSksdDw8PTEsYltjLTItaF09KGJbYy0xLWhdLzJ8MCkrZDtiWzBdPWFbMF07bVswXT1BcnJheShiWzBdKTtrWzBdPUFycmF5KGJbMF0pO2ZvcihoPTE7aDxjOysraCliW2hdPjIqYltoLTFdK2FbaF0mJihiW2hdPTIqYltoLTFdK2FbaF0pLG1baF09QXJyYXkoYltoXSksa1toXT1BcnJheShiW2hdKTtmb3IobD0wO2w8ZDsrK2wpZ1tsXT1jO2ZvcihxPTA7cTxiW2MtMV07KytxKW1bYy0KICAgIAkxXVtxXT1mW3FdLGtbYy0xXVtxXT1xO2ZvcihsPTA7bDxjOysrbClwW2xdPTA7MT09PWFbYy0xXSYmKC0tZ1swXSwrK3BbYy0xXSk7Zm9yKGg9Yy0yOzA8PWg7LS1oKXtzPWw9MDt4PXBbaCsxXTtmb3IocT0wO3E8YltoXTtxKyspcz1tW2grMV1beF0rbVtoKzFdW3grMV0scz5mW2xdPyhtW2hdW3FdPXMsa1toXVtxXT1kLHgrPTIpOihtW2hdW3FdPWZbbF0sa1toXVtxXT1sLCsrbCk7cFtoXT0wOzE9PT1hW2hdJiZlKGgpO31yZXR1cm4gZ30KICAgIAlmdW5jdGlvbiBxYShmKXt2YXIgZD1uZXcgKEM/VWludDE2QXJyYXk6QXJyYXkpKGYubGVuZ3RoKSxjPVtdLGU9W10sYj0wLGEsZyxtLGs7YT0wO2ZvcihnPWYubGVuZ3RoO2E8ZzthKyspY1tmW2FdXT0oY1tmW2FdXXwwKSsxO2E9MTtmb3IoZz0xNjthPD1nO2ErKyllW2FdPWIsYis9Y1thXXwwLGI8PD0xO2E9MDtmb3IoZz1mLmxlbmd0aDthPGc7YSsrKXtiPWVbZlthXV07ZVtmW2FdXSs9MTttPWRbYV09MDtmb3Ioaz1mW2FdO208azttKyspZFthXT1kW2FdPDwxfGImMSxiPj4+PTE7fXJldHVybiBkfWZ1bmN0aW9uIEthKGYsZCl7dGhpcy5pbnB1dD1mO3RoaXMuYT1uZXcgKEM/VWludDhBcnJheTpBcnJheSkoMzI3NjgpO3RoaXMuZD1WLmc7dmFyIGM9e30sZTtpZigoZHx8IShkPXt9KSkmJiJudW1iZXIiPT09dHlwZW9mIGQuY29tcHJlc3Npb25UeXBlKXRoaXMuZD1kLmNvbXByZXNzaW9uVHlwZTtmb3IoZSBpbiBkKWNbZV09ZFtlXTtjLm91dHB1dEJ1ZmZlcj10aGlzLmE7dGhpcy5qPW5ldyBrYSh0aGlzLmlucHV0LGMpO312YXIgVj1uYTsKICAgIAlLYS5wcm90b3R5cGUuZj1mdW5jdGlvbigpe3ZhciBmLGQsYyxlLGIsYSxnPTA7YT10aGlzLmE7c3dpdGNoKDgpe2Nhc2UgODpmPU1hdGguTE9HMkUqTWF0aC5sb2coMzI3NjgpLTg7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBjb21wcmVzc2lvbiBtZXRob2QiKTt9ZD1mPDw0fDg7YVtnKytdPWQ7c3dpdGNoKDgpe2Nhc2UgODpzd2l0Y2godGhpcy5kKXtjYXNlIFYuTk9ORTplPTA7YnJlYWs7Y2FzZSBWLmg6ZT0xO2JyZWFrO2Nhc2UgVi5nOmU9MjticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJ1bnN1cHBvcnRlZCBjb21wcmVzc2lvbiB0eXBlIik7fWJyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoImludmFsaWQgY29tcHJlc3Npb24gbWV0aG9kIik7fWM9ZTw8NnwwO2FbZysrXT1jfDMxLSgyNTYqZCtjKSUzMTt2YXIgbT10aGlzLmlucHV0O2lmKCJzdHJpbmciPT09dHlwZW9mIG0pe3ZhciBrPW0uc3BsaXQoIiIpLHAsdDtwPTA7Zm9yKHQ9ay5sZW5ndGg7cDx0O3ArKylrW3BdPQogICAgCShrW3BdLmNoYXJDb2RlQXQoMCkmMjU1KT4+PjA7bT1rO31mb3IodmFyIHU9MSxsPTAsaD1tLmxlbmd0aCxxLHM9MDswPGg7KXtxPTEwMjQ8aD8xMDI0Omg7aC09cTtkbyB1Kz1tW3MrK10sbCs9dTt3aGlsZSgtLXEpO3UlPTY1NTIxO2wlPTY1NTIxO31iPShsPDwxNnx1KT4+PjA7dGhpcy5qLmM9ZzthPXRoaXMuai5mKCk7Zz1hLmxlbmd0aDtDJiYoYT1uZXcgVWludDhBcnJheShhLmJ1ZmZlciksYS5sZW5ndGg8PWcrNCYmKHRoaXMuYT1uZXcgVWludDhBcnJheShhLmxlbmd0aCs0KSx0aGlzLmEuc2V0KGEpLGE9dGhpcy5hKSxhPWEuc3ViYXJyYXkoMCxnKzQpKTthW2crK109Yj4+MjQmMjU1O2FbZysrXT1iPj4xNiYyNTU7YVtnKytdPWI+PjgmMjU1O2FbZysrXT1iJjI1NTtyZXR1cm4gYX07YmEoIlpsaWIuRGVmbGF0ZSIsS2EpO2JhKCJabGliLkRlZmxhdGUuY29tcHJlc3MiLGZ1bmN0aW9uKGYsZCl7cmV0dXJuIChuZXcgS2EoZixkKSkuZigpfSk7YmEoIlpsaWIuRGVmbGF0ZS5wcm90b3R5cGUuY29tcHJlc3MiLEthLnByb3RvdHlwZS5mKTt2YXIgTWE9e05PTkU6Vi5OT05FLEZJWEVEOlYuaCxEWU5BTUlDOlYuZ30sTmEsT2EsVyxQYTtpZihPYmplY3Qua2V5cylOYT1PYmplY3Qua2V5cyhNYSk7ZWxzZSBmb3IoT2EgaW4gTmE9W10sVz0wLE1hKU5hW1crK109T2E7Vz0wO2ZvcihQYT1OYS5sZW5ndGg7VzxQYTsrK1cpT2E9TmFbV10sYmEoIlpsaWIuRGVmbGF0ZS5Db21wcmVzc2lvblR5cGUuIitPYSxNYVtPYV0pO30pLmNhbGwobW9kdWxlLmV4cG9ydHMpOyAKICAgIH0gKGRlZmxhdGVfbWluKSk7CgogICAgdmFyIGRlZmxhdGVfbWluRXhwb3J0cyA9IGRlZmxhdGVfbWluLmV4cG9ydHM7CiAgICB2YXIgWkxpYkRlZmxhdGUgPSAvKkBfX1BVUkVfXyovZ2V0RGVmYXVsdEV4cG9ydEZyb21DanMoZGVmbGF0ZV9taW5FeHBvcnRzKTsKCiAgICBmdW5jdGlvbiB0b1VURjhBcnJheShzdHIpIHsKICAgICAgICB2YXIgdXRmOCA9IFtdOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHZhciBjaGFyY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpOwogICAgICAgICAgICBpZiAoY2hhcmNvZGUgPCAweDgwKQogICAgICAgICAgICAgICAgdXRmOC5wdXNoKGNoYXJjb2RlKTsKICAgICAgICAgICAgZWxzZSBpZiAoY2hhcmNvZGUgPCAweDgwMCkgewogICAgICAgICAgICAgICAgdXRmOC5wdXNoKDB4YzAgfCAoY2hhcmNvZGUgPj4gNiksIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoY2hhcmNvZGUgPCAweGQ4MDAgfHwgY2hhcmNvZGUgPj0gMHhlMDAwKSB7CiAgICAgICAgICAgICAgICB1dGY4LnB1c2goMHhlMCB8IChjaGFyY29kZSA+PiAxMiksIDB4ODAgfCAoKGNoYXJjb2RlID4+IDYpICYgMHgzZiksIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBzdXJyb2dhdGUgcGFpcgogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgLy8gVVRGLTE2IGVuY29kZXMgMHgxMDAwMC0weDEwRkZGRiBieQogICAgICAgICAgICAgICAgLy8gc3VidHJhY3RpbmcgMHgxMDAwMCBhbmQgc3BsaXR0aW5nIHRoZQogICAgICAgICAgICAgICAgLy8gMjAgYml0cyBvZiAweDAtMHhGRkZGRiBpbnRvIHR3byBoYWx2ZXMKICAgICAgICAgICAgICAgIGNoYXJjb2RlID0gMHgxMDAwMCArICgoKGNoYXJjb2RlICYgMHgzZmYpIDw8IDEwKSB8CiAgICAgICAgICAgICAgICAgICAgKHN0ci5jaGFyQ29kZUF0KGkpICYgMHgzZmYpKTsKICAgICAgICAgICAgICAgIHV0ZjgucHVzaCgweGYwIHwgKGNoYXJjb2RlID4+IDE4KSwgMHg4MCB8ICgoY2hhcmNvZGUgPj4gMTIpICYgMHgzZiksIDB4ODAgfCAoKGNoYXJjb2RlID4+IDYpICYgMHgzZiksIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHV0Zjg7CiAgICB9CgogICAgdmFyIFpsaWIgPSB7CiAgICAgICAgJ0RlZmxhdGUnOiBaTGliRGVmbGF0ZS5abGliLkRlZmxhdGUKICAgIH07CiAgICB2YXIgRW5jb2RpbmcgPSB7CiAgICAgICAgJ2Jhc2U2NFVybCc6ICdiYXNlNjR1cmwnLAogICAgICAgICdiaW5hcnknOiAnYmluYXJ5JwogICAgfTsKICAgIGZ1bmN0aW9uIGNvbXByZXNzKGpzb25fb2JqLCBlbmNvZGluZykgewogICAgICAgIGlmICghZW5jb2RpbmcpIHsKICAgICAgICAgICAgZW5jb2RpbmcgPSBFbmNvZGluZy5iYXNlNjRVcmw7CiAgICAgICAgfQogICAgICAgIC8qIC0tIFRoaXMgaXMgWkxJQiAqLwogICAgICAgIHZhciBjb21wcmVzc0RhdGEgPSB0b1VURjhBcnJheSh0eXBlb2YganNvbl9vYmogPT09ICdzdHJpbmcnID8ganNvbl9vYmogOiBKU09OLnN0cmluZ2lmeShqc29uX29iaikpOwogICAgICAgIHZhciBkZWZsYXRlID0gbmV3IFpsaWIuRGVmbGF0ZShjb21wcmVzc0RhdGEpOwogICAgICAgIHZhciBjb21wcmVzc2VkQnl0ZXMgPSBkZWZsYXRlLmNvbXByZXNzKCk7CiAgICAgICAgaWYgKGVuY29kaW5nID09PSBFbmNvZGluZy5iYXNlNjRVcmwpIHsKICAgICAgICAgICAgcmV0dXJuIGI2NC51aW50OFRvQmFzZTY0KGNvbXByZXNzZWRCeXRlcyk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gY29tcHJlc3NlZEJ5dGVzOwogICAgICAgIH0KICAgIH0KCiAgICB2YXIgT05FX0hVTkRSRURfTUJfSU5fQllURVMgPSAxMDAgKiAxMDI0ICogMTAyNDsKICAgIGZ1bmN0aW9uIG1hdGNoSG9zdGVkUmVzb3VyY2VzKHJlY29yZGluZ0V2ZW50LCBzdHJpbmdpZmllZFJlY29yZGluZ1BheWxvYWQpIHsKICAgICAgICB2YXIgZm9udFVSTFJlZ2V4ID0gL2h0dHBzOlwvXC9bXlxzXSs/XC4od29mZnx3b2ZmMnx0dGZ8b3RmfGVvdClcYi9nOwogICAgICAgIHZhciBob3N0ZWRSZXNvdXJjZXMgPSBzdHJpbmdpZmllZFJlY29yZGluZ1BheWxvYWQubWF0Y2goZm9udFVSTFJlZ2V4KTsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICAndHlwZSc6ICdyZWNvcmRpbmcnLAogICAgICAgICAgICAndmlzaXRvcklkJzogcmVjb3JkaW5nRXZlbnQudmlzaXRvcklkLAogICAgICAgICAgICAnYWNjb3VudElkJzogcmVjb3JkaW5nRXZlbnQuYWNjb3VudElkLAogICAgICAgICAgICAna2V5RnJhbWUnOiBmYWxzZSwKICAgICAgICAgICAgJ2xhc3RLZXlGcmFtZSc6IHJlY29yZGluZ0V2ZW50Lmxhc3RLZXlGcmFtZSwKICAgICAgICAgICAgJ3JlY29yZGluZ0lkJzogcmVjb3JkaW5nRXZlbnQucmVjb3JkaW5nSWQsCiAgICAgICAgICAgICdyZWNvcmRpbmdTZXNzaW9uSWQnOiByZWNvcmRpbmdFdmVudC5yZWNvcmRpbmdTZXNzaW9uSWQsCiAgICAgICAgICAgICd1cmwnOiByZWNvcmRpbmdFdmVudC51cmwsCiAgICAgICAgICAgICdzdWJUeXBlJzogJ2hvc3RlZFJlc291cmNlcycsCiAgICAgICAgICAgICdyZWNvcmRpbmdQYXlsb2FkJzogW10sCiAgICAgICAgICAgICdyZWNvcmRpbmdQYXlsb2FkTWV0YWRhdGEnOiBbXSwKICAgICAgICAgICAgJ3NlcXVlbmNlJzogMCwKICAgICAgICAgICAgJ3JlY29yZGluZ1BheWxvYWRDb3VudCc6IDAsCiAgICAgICAgICAgICdob3N0ZWRSZXNvdXJjZXMnOiBob3N0ZWRSZXNvdXJjZXMgfHwgW10KICAgICAgICB9OwogICAgfQogICAgLy8ga2VlcCBpbiBtaW5kIGNoYW5nZXMgaGVyZSBtYXkgbmVlZCBhZGRyZXNzaW5nIGluIHRoZSBleHRlbnNpb24gd29ya2VyIHByb3h5IGFzIHdlbGwKICAgIHNlbGYub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoZS5kYXRhLnVybCAmJiBlLmRhdGEucGF5bG9hZCkgewogICAgICAgICAgICAgICAgdmFyIF9hID0gZS5kYXRhLCB1cmwgPSBfYS51cmwsIHBheWxvYWQgPSBfYS5wYXlsb2FkLCBzaG91bGRDYWNoZVJlc291cmNlcyA9IF9hLnNob3VsZENhY2hlUmVzb3VyY2VzOwogICAgICAgICAgICAgICAgdmFyIHNlcXVlbmNlXzEgPSBwYXlsb2FkLnNlcXVlbmNlOwogICAgICAgICAgICAgICAgdmFyIHN0cmluZ2lmaWVkUmVjb3JkaW5nUGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KHBheWxvYWQucmVjb3JkaW5nUGF5bG9hZCk7CiAgICAgICAgICAgICAgICAvLyBjYWxjdWxhdGUgYW5kIHBvc3QgYmFjayB0aGUgcmVjb3JkaW5nIHBheWxvYWQgc2l6ZSBiZWZvcmUgdGhlIHBheWxvYWQgaXMgY29tcHJlc3NlZAogICAgICAgICAgICAgICAgdmFyIHJlY29yZGluZ1BheWxvYWRTaXplID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHN0cmluZ2lmaWVkUmVjb3JkaW5nUGF5bG9hZCkubGVuZ3RoOwogICAgICAgICAgICAgICAgdmFyIGV4Y2VlZHNQYXlsb2FkU2l6ZUxpbWl0ID0gcmVjb3JkaW5nUGF5bG9hZFNpemUgPj0gT05FX0hVTkRSRURfTUJfSU5fQllURVM7CiAgICAgICAgICAgICAgICBwb3N0TWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAncmVjb3JkaW5nUGF5bG9hZFNpemUnLAogICAgICAgICAgICAgICAgICAgICdyZWNvcmRpbmdQYXlsb2FkU2l6ZSc6IHJlY29yZGluZ1BheWxvYWRTaXplLAogICAgICAgICAgICAgICAgICAgICdleGNlZWRzUGF5bG9hZFNpemVMaW1pdCc6IGV4Y2VlZHNQYXlsb2FkU2l6ZUxpbWl0CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIC8vIGRvbid0IGF0dGVtcHQgdG8gc2VuZCB0aGUgcGF5bG9hZCBpZiBpdCBleGNlZWRzIHRoZSBhbGxvd2VkIGxpbWl0CiAgICAgICAgICAgICAgICBpZiAoZXhjZWVkc1BheWxvYWRTaXplTGltaXQpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgaWYgKHNob3VsZENhY2hlUmVzb3VyY2VzKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGhvc3RlZFJlc291cmNlc0V2ZW50ID0gbWF0Y2hIb3N0ZWRSZXNvdXJjZXMocGF5bG9hZCwgc3RyaW5naWZpZWRSZWNvcmRpbmdQYXlsb2FkKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaG9zdGVkUmVzb3VyY2VzRXZlbnQuaG9zdGVkUmVzb3VyY2VzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICBwb3N0TWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdob3N0ZWRSZXNvdXJjZXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hvc3RlZFJlc291cmNlc0V2ZW50JzogaG9zdGVkUmVzb3VyY2VzRXZlbnQKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcGF5bG9hZC5yZWNvcmRpbmdTaXplID0gcmVjb3JkaW5nUGF5bG9hZFNpemU7CiAgICAgICAgICAgICAgICB2YXIgYm9keSA9IGNvbXByZXNzKHBheWxvYWQsICdiaW5hcnknKTsKICAgICAgICAgICAgICAgIC8vIHdlIHdhbnQgdG8gY2FsY3VsYXRlIGN0IChjdXJyZW50IHRpbWUpIGFzIGNsb3NlIGFzIHdlIGNhbiB0byB0aGUgYWN0dWFsIFBPU1QgcmVxdWVzdAogICAgICAgICAgICAgICAgLy8gc28gdGhhdCBpdCdzIGFzIGFjY3VyYXRlIGFzIHBvc3NpYmxlCiAgICAgICAgICAgICAgICB1cmwgPSAiIi5jb25jYXQodXJsLCAiJmN0PSIpLmNvbmNhdChuZXcgRGF0ZSgpLmdldFRpbWUoKSk7CiAgICAgICAgICAgICAgICBmZXRjaCh1cmwsIHsKICAgICAgICAgICAgICAgICAgICAnbWV0aG9kJzogJ1BPU1QnLAogICAgICAgICAgICAgICAgICAgICdib2R5JzogYm9keQogICAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzIDwgMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA+PSAzMDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2UoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yJzogbmV3IEVycm9yKCJyZWNlaXZlZCBzdGF0dXMgY29kZSAiLmNvbmNhdChyZXNwb25zZS5zdGF0dXMsICI6ICIpLmNvbmNhdChyZXNwb25zZS5zdGF0dXNUZXh0KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhdHVzJzogcmVzcG9uc2Uuc3RhdHVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2U6IHNlcXVlbmNlXzEKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwb3N0TWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZTogc2VxdWVuY2VfMQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yJzogZSwKICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2U6IHNlcXVlbmNlXzEKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7CiAgICAgICAgICAgIHBvc3RNZXNzYWdlKHsKICAgICAgICAgICAgICAgICdlcnJvcic6IGUKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfTsKCiAgICBleHBvcnRzLm1hdGNoSG9zdGVkUmVzb3VyY2VzID0gbWF0Y2hIb3N0ZWRSZXNvdXJjZXM7CgogICAgcmV0dXJuIGV4cG9ydHM7Cgp9KSh7fSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXdvcmtlci5qcy5tYXAKCg==', null, false);
50163
+ var WorkerFactory = /*#__PURE__*/createInlineWorkerFactory(/* rollup-plugin-web-worker-loader */function () {
50164
+ ((function (exports) {
50165
+ '__worker_loader_strict__';
50166
+
50167
+ var b64 = (function() {
50168
+
50169
+ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'.split('');
50170
+
50171
+ return {
50172
+ 'uint8ToBase64': uint8ToBase64
50173
+ };
50174
+
50175
+ function uint8ToBase64(uint8) {
50176
+ var i,
50177
+ extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
50178
+ output = '',
50179
+ temp, length;
50180
+
50181
+ function tripletToBase64(num) {
50182
+ return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];
50183
+ }
50184
+
50185
+ // go through the array every three bytes, we'll deal with trailing stuff later
50186
+ for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
50187
+ temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);
50188
+ output += tripletToBase64(temp);
50189
+ }
50190
+
50191
+ // pad the end with zeros, but make sure to not forget the extra bytes
50192
+ //eslint-disable-next-line default-case
50193
+ switch (extraBytes) {
50194
+ case 1:
50195
+ temp = uint8[uint8.length - 1];
50196
+ output += lookup[temp >> 2];
50197
+ output += lookup[(temp << 4) & 0x3F];
50198
+ break;
50199
+ case 2:
50200
+ temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]);
50201
+ output += lookup[temp >> 10];
50202
+ output += lookup[(temp >> 4) & 0x3F];
50203
+ output += lookup[(temp << 2) & 0x3F];
50204
+ break;
50205
+ }
50206
+
50207
+ return output;
50208
+ }
50209
+ })();
50210
+
50211
+ function getDefaultExportFromCjs (x) {
50212
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
50213
+ }
50214
+
50215
+ var deflate_min = {exports: {}};
50216
+
50217
+ /*
50218
+ * @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License
50219
+ */
50220
+
50221
+ (function (module) {
50222
+ (function() {var n=void 0,w=!0,aa=this;function ba(f,d){var c=f.split("."),e=aa;!(c[0]in e)&&e.execScript&&e.execScript("var "+c[0]);for(var b;c.length&&(b=c.shift());)!c.length&&d!==n?e[b]=d:e=e[b]?e[b]:e[b]={};}var C="undefined"!==typeof Uint8Array&&"undefined"!==typeof Uint16Array&&"undefined"!==typeof Uint32Array;function K(f,d){this.index="number"===typeof d?d:0;this.e=0;this.buffer=f instanceof(C?Uint8Array:Array)?f:new (C?Uint8Array:Array)(32768);if(2*this.buffer.length<=this.index)throw Error("invalid index");this.buffer.length<=this.index&&ca(this);}function ca(f){var d=f.buffer,c,e=d.length,b=new (C?Uint8Array:Array)(e<<1);if(C)b.set(d);else for(c=0;c<e;++c)b[c]=d[c];return f.buffer=b}
50223
+ K.prototype.b=function(f,d,c){var e=this.buffer,b=this.index,a=this.e,g=e[b],m;c&&1<d&&(f=8<d?(L[f&255]<<24|L[f>>>8&255]<<16|L[f>>>16&255]<<8|L[f>>>24&255])>>32-d:L[f]>>8-d);if(8>d+a)g=g<<d|f,a+=d;else for(m=0;m<d;++m)g=g<<1|f>>d-m-1&1,8===++a&&(a=0,e[b++]=L[g],g=0,b===e.length&&(e=ca(this)));e[b]=g;this.buffer=e;this.e=a;this.index=b;};K.prototype.finish=function(){var f=this.buffer,d=this.index,c;0<this.e&&(f[d]<<=8-this.e,f[d]=L[f[d]],d++);C?c=f.subarray(0,d):(f.length=d,c=f);return c};
50224
+ var da=new (C?Uint8Array:Array)(256),M;for(M=0;256>M;++M){for(var N=M,S=N,ea=7,N=N>>>1;N;N>>>=1)S<<=1,S|=N&1,--ea;da[M]=(S<<ea&255)>>>0;}var L=da;function ia(f){this.buffer=new (C?Uint16Array:Array)(2*f);this.length=0;}ia.prototype.getParent=function(f){return 2*((f-2)/4|0)};ia.prototype.push=function(f,d){var c,e,b=this.buffer,a;c=this.length;b[this.length++]=d;for(b[this.length++]=f;0<c;)if(e=this.getParent(c),b[c]>b[e])a=b[c],b[c]=b[e],b[e]=a,a=b[c+1],b[c+1]=b[e+1],b[e+1]=a,c=e;else break;return this.length};
50225
+ ia.prototype.pop=function(){var f,d,c=this.buffer,e,b,a;d=c[0];f=c[1];this.length-=2;c[0]=c[this.length];c[1]=c[this.length+1];for(a=0;;){b=2*a+2;if(b>=this.length)break;b+2<this.length&&c[b+2]>c[b]&&(b+=2);if(c[b]>c[a])e=c[a],c[a]=c[b],c[b]=e,e=c[a+1],c[a+1]=c[b+1],c[b+1]=e;else break;a=b;}return {index:f,value:d,length:this.length}};function ka(f,d){this.d=la;this.i=0;this.input=C&&f instanceof Array?new Uint8Array(f):f;this.c=0;d&&(d.lazy&&(this.i=d.lazy),"number"===typeof d.compressionType&&(this.d=d.compressionType),d.outputBuffer&&(this.a=C&&d.outputBuffer instanceof Array?new Uint8Array(d.outputBuffer):d.outputBuffer),"number"===typeof d.outputIndex&&(this.c=d.outputIndex));this.a||(this.a=new (C?Uint8Array:Array)(32768));}var la=2,na={NONE:0,h:1,g:la,n:3},T=[],U;
50226
+ for(U=0;288>U;U++)switch(w){case 143>=U:T.push([U+48,8]);break;case 255>=U:T.push([U-144+400,9]);break;case 279>=U:T.push([U-256+0,7]);break;case 287>=U:T.push([U-280+192,8]);break;default:throw "invalid literal: "+U;}
50227
+ ka.prototype.f=function(){var f,d,c,e,b=this.input;switch(this.d){case 0:c=0;for(e=b.length;c<e;){d=C?b.subarray(c,c+65535):b.slice(c,c+65535);c+=d.length;var a=d,g=c===e,m=n,k=n,p=n,t=n,u=n,l=this.a,h=this.c;if(C){for(l=new Uint8Array(this.a.buffer);l.length<=h+a.length+5;)l=new Uint8Array(l.length<<1);l.set(this.a);}m=g?1:0;l[h++]=m|0;k=a.length;p=~k+65536&65535;l[h++]=k&255;l[h++]=k>>>8&255;l[h++]=p&255;l[h++]=p>>>8&255;if(C)l.set(a,h),h+=a.length,l=l.subarray(0,h);else {t=0;for(u=a.length;t<u;++t)l[h++]=
50228
+ a[t];l.length=h;}this.c=h;this.a=l;}break;case 1:var q=new K(C?new Uint8Array(this.a.buffer):this.a,this.c);q.b(1,1,w);q.b(1,2,w);var s=oa(this,b),x,fa,z;x=0;for(fa=s.length;x<fa;x++)if(z=s[x],K.prototype.b.apply(q,T[z]),256<z)q.b(s[++x],s[++x],w),q.b(s[++x],5),q.b(s[++x],s[++x],w);else if(256===z)break;this.a=q.finish();this.c=this.a.length;break;case la:var B=new K(C?new Uint8Array(this.a.buffer):this.a,this.c),ta,J,O,P,Q,La=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],X,ua,Y,va,ga,ja=Array(19),
50229
+ wa,R,ha,y,xa;ta=la;B.b(1,1,w);B.b(ta,2,w);J=oa(this,b);X=pa(this.m,15);ua=qa(X);Y=pa(this.l,7);va=qa(Y);for(O=286;257<O&&0===X[O-1];O--);for(P=30;1<P&&0===Y[P-1];P--);var ya=O,za=P,F=new (C?Uint32Array:Array)(ya+za),r,G,v,Z,E=new (C?Uint32Array:Array)(316),D,A,H=new (C?Uint8Array:Array)(19);for(r=G=0;r<ya;r++)F[G++]=X[r];for(r=0;r<za;r++)F[G++]=Y[r];if(!C){r=0;for(Z=H.length;r<Z;++r)H[r]=0;}r=D=0;for(Z=F.length;r<Z;r+=G){for(G=1;r+G<Z&&F[r+G]===F[r];++G);v=G;if(0===F[r])if(3>v)for(;0<v--;)E[D++]=0,
50230
+ H[0]++;else for(;0<v;)A=138>v?v:138,A>v-3&&A<v&&(A=v-3),10>=A?(E[D++]=17,E[D++]=A-3,H[17]++):(E[D++]=18,E[D++]=A-11,H[18]++),v-=A;else if(E[D++]=F[r],H[F[r]]++,v--,3>v)for(;0<v--;)E[D++]=F[r],H[F[r]]++;else for(;0<v;)A=6>v?v:6,A>v-3&&A<v&&(A=v-3),E[D++]=16,E[D++]=A-3,H[16]++,v-=A;}f=C?E.subarray(0,D):E.slice(0,D);ga=pa(H,7);for(y=0;19>y;y++)ja[y]=ga[La[y]];for(Q=19;4<Q&&0===ja[Q-1];Q--);wa=qa(ga);B.b(O-257,5,w);B.b(P-1,5,w);B.b(Q-4,4,w);for(y=0;y<Q;y++)B.b(ja[y],3,w);y=0;for(xa=f.length;y<xa;y++)if(R=
50231
+ f[y],B.b(wa[R],ga[R],w),16<=R){y++;switch(R){case 16:ha=2;break;case 17:ha=3;break;case 18:ha=7;break;default:throw "invalid code: "+R;}B.b(f[y],ha,w);}var Aa=[ua,X],Ba=[va,Y],I,Ca,$,ma,Da,Ea,Fa,Ga;Da=Aa[0];Ea=Aa[1];Fa=Ba[0];Ga=Ba[1];I=0;for(Ca=J.length;I<Ca;++I)if($=J[I],B.b(Da[$],Ea[$],w),256<$)B.b(J[++I],J[++I],w),ma=J[++I],B.b(Fa[ma],Ga[ma],w),B.b(J[++I],J[++I],w);else if(256===$)break;this.a=B.finish();this.c=this.a.length;break;default:throw "invalid compression type";}return this.a};
50232
+ function ra(f,d){this.length=f;this.k=d;}
50233
+ var sa=function(){function f(b){switch(w){case 3===b:return [257,b-3,0];case 4===b:return [258,b-4,0];case 5===b:return [259,b-5,0];case 6===b:return [260,b-6,0];case 7===b:return [261,b-7,0];case 8===b:return [262,b-8,0];case 9===b:return [263,b-9,0];case 10===b:return [264,b-10,0];case 12>=b:return [265,b-11,1];case 14>=b:return [266,b-13,1];case 16>=b:return [267,b-15,1];case 18>=b:return [268,b-17,1];case 22>=b:return [269,b-19,2];case 26>=b:return [270,b-23,2];case 30>=b:return [271,b-27,2];case 34>=b:return [272,
50234
+ b-31,2];case 42>=b:return [273,b-35,3];case 50>=b:return [274,b-43,3];case 58>=b:return [275,b-51,3];case 66>=b:return [276,b-59,3];case 82>=b:return [277,b-67,4];case 98>=b:return [278,b-83,4];case 114>=b:return [279,b-99,4];case 130>=b:return [280,b-115,4];case 162>=b:return [281,b-131,5];case 194>=b:return [282,b-163,5];case 226>=b:return [283,b-195,5];case 257>=b:return [284,b-227,5];case 258===b:return [285,b-258,0];default:throw "invalid length: "+b;}}var d=[],c,e;for(c=3;258>=c;c++)e=f(c),d[c]=e[2]<<24|
50235
+ e[1]<<16|e[0];return d}(),Ha=C?new Uint32Array(sa):sa;
50236
+ function oa(f,d){function c(b,c){var a=b.k,d=[],e=0,f;f=Ha[b.length];d[e++]=f&65535;d[e++]=f>>16&255;d[e++]=f>>24;var g;switch(w){case 1===a:g=[0,a-1,0];break;case 2===a:g=[1,a-2,0];break;case 3===a:g=[2,a-3,0];break;case 4===a:g=[3,a-4,0];break;case 6>=a:g=[4,a-5,1];break;case 8>=a:g=[5,a-7,1];break;case 12>=a:g=[6,a-9,2];break;case 16>=a:g=[7,a-13,2];break;case 24>=a:g=[8,a-17,3];break;case 32>=a:g=[9,a-25,3];break;case 48>=a:g=[10,a-33,4];break;case 64>=a:g=[11,a-49,4];break;case 96>=a:g=[12,a-
50237
+ 65,5];break;case 128>=a:g=[13,a-97,5];break;case 192>=a:g=[14,a-129,6];break;case 256>=a:g=[15,a-193,6];break;case 384>=a:g=[16,a-257,7];break;case 512>=a:g=[17,a-385,7];break;case 768>=a:g=[18,a-513,8];break;case 1024>=a:g=[19,a-769,8];break;case 1536>=a:g=[20,a-1025,9];break;case 2048>=a:g=[21,a-1537,9];break;case 3072>=a:g=[22,a-2049,10];break;case 4096>=a:g=[23,a-3073,10];break;case 6144>=a:g=[24,a-4097,11];break;case 8192>=a:g=[25,a-6145,11];break;case 12288>=a:g=[26,a-8193,12];break;case 16384>=
50238
+ a:g=[27,a-12289,12];break;case 24576>=a:g=[28,a-16385,13];break;case 32768>=a:g=[29,a-24577,13];break;default:throw "invalid distance";}f=g;d[e++]=f[0];d[e++]=f[1];d[e++]=f[2];var k,m;k=0;for(m=d.length;k<m;++k)l[h++]=d[k];s[d[0]]++;x[d[3]]++;q=b.length+c-1;u=null;}var e,b,a,g,m,k={},p,t,u,l=C?new Uint16Array(2*d.length):[],h=0,q=0,s=new (C?Uint32Array:Array)(286),x=new (C?Uint32Array:Array)(30),fa=f.i,z;if(!C){for(a=0;285>=a;)s[a++]=0;for(a=0;29>=a;)x[a++]=0;}s[256]=1;e=0;for(b=d.length;e<b;++e){a=
50239
+ m=0;for(g=3;a<g&&e+a!==b;++a)m=m<<8|d[e+a];k[m]===n&&(k[m]=[]);p=k[m];if(!(0<q--)){for(;0<p.length&&32768<e-p[0];)p.shift();if(e+3>=b){u&&c(u,-1);a=0;for(g=b-e;a<g;++a)z=d[e+a],l[h++]=z,++s[z];break}0<p.length?(t=Ia(d,e,p),u?u.length<t.length?(z=d[e-1],l[h++]=z,++s[z],c(t,0)):c(u,-1):t.length<fa?u=t:c(t,0)):u?c(u,-1):(z=d[e],l[h++]=z,++s[z]);}p.push(e);}l[h++]=256;s[256]++;f.m=s;f.l=x;return C?l.subarray(0,h):l}
50240
+ function Ia(f,d,c){var e,b,a=0,g,m,k,p,t=f.length;m=0;p=c.length;a:for(;m<p;m++){e=c[p-m-1];g=3;if(3<a){for(k=a;3<k;k--)if(f[e+k-1]!==f[d+k-1])continue a;g=a;}for(;258>g&&d+g<t&&f[e+g]===f[d+g];)++g;g>a&&(b=e,a=g);if(258===g)break}return new ra(a,d-b)}
50241
+ function pa(f,d){var c=f.length,e=new ia(572),b=new (C?Uint8Array:Array)(c),a,g,m,k,p;if(!C)for(k=0;k<c;k++)b[k]=0;for(k=0;k<c;++k)0<f[k]&&e.push(k,f[k]);a=Array(e.length/2);g=new (C?Uint32Array:Array)(e.length/2);if(1===a.length)return b[e.pop().index]=1,b;k=0;for(p=e.length/2;k<p;++k)a[k]=e.pop(),g[k]=a[k].value;m=Ja(g,g.length,d);k=0;for(p=a.length;k<p;++k)b[a[k].index]=m[k];return b}
50242
+ function Ja(f,d,c){function e(a){var b=k[a][p[a]];b===d?(e(a+1),e(a+1)):--g[b];++p[a];}var b=new (C?Uint16Array:Array)(c),a=new (C?Uint8Array:Array)(c),g=new (C?Uint8Array:Array)(d),m=Array(c),k=Array(c),p=Array(c),t=(1<<c)-d,u=1<<c-1,l,h,q,s,x;b[c-1]=d;for(h=0;h<c;++h)t<u?a[h]=0:(a[h]=1,t-=u),t<<=1,b[c-2-h]=(b[c-1-h]/2|0)+d;b[0]=a[0];m[0]=Array(b[0]);k[0]=Array(b[0]);for(h=1;h<c;++h)b[h]>2*b[h-1]+a[h]&&(b[h]=2*b[h-1]+a[h]),m[h]=Array(b[h]),k[h]=Array(b[h]);for(l=0;l<d;++l)g[l]=c;for(q=0;q<b[c-1];++q)m[c-
50243
+ 1][q]=f[q],k[c-1][q]=q;for(l=0;l<c;++l)p[l]=0;1===a[c-1]&&(--g[0],++p[c-1]);for(h=c-2;0<=h;--h){s=l=0;x=p[h+1];for(q=0;q<b[h];q++)s=m[h+1][x]+m[h+1][x+1],s>f[l]?(m[h][q]=s,k[h][q]=d,x+=2):(m[h][q]=f[l],k[h][q]=l,++l);p[h]=0;1===a[h]&&e(h);}return g}
50244
+ function qa(f){var d=new (C?Uint16Array:Array)(f.length),c=[],e=[],b=0,a,g,m,k;a=0;for(g=f.length;a<g;a++)c[f[a]]=(c[f[a]]|0)+1;a=1;for(g=16;a<=g;a++)e[a]=b,b+=c[a]|0,b<<=1;a=0;for(g=f.length;a<g;a++){b=e[f[a]];e[f[a]]+=1;m=d[a]=0;for(k=f[a];m<k;m++)d[a]=d[a]<<1|b&1,b>>>=1;}return d}function Ka(f,d){this.input=f;this.a=new (C?Uint8Array:Array)(32768);this.d=V.g;var c={},e;if((d||!(d={}))&&"number"===typeof d.compressionType)this.d=d.compressionType;for(e in d)c[e]=d[e];c.outputBuffer=this.a;this.j=new ka(this.input,c);}var V=na;
50245
+ Ka.prototype.f=function(){var f,d,c,e,b,a,g=0;a=this.a;switch(8){case 8:f=Math.LOG2E*Math.log(32768)-8;break;default:throw Error("invalid compression method");}d=f<<4|8;a[g++]=d;switch(8){case 8:switch(this.d){case V.NONE:e=0;break;case V.h:e=1;break;case V.g:e=2;break;default:throw Error("unsupported compression type");}break;default:throw Error("invalid compression method");}c=e<<6|0;a[g++]=c|31-(256*d+c)%31;var m=this.input;if("string"===typeof m){var k=m.split(""),p,t;p=0;for(t=k.length;p<t;p++)k[p]=
50246
+ (k[p].charCodeAt(0)&255)>>>0;m=k;}for(var u=1,l=0,h=m.length,q,s=0;0<h;){q=1024<h?1024:h;h-=q;do u+=m[s++],l+=u;while(--q);u%=65521;l%=65521;}b=(l<<16|u)>>>0;this.j.c=g;a=this.j.f();g=a.length;C&&(a=new Uint8Array(a.buffer),a.length<=g+4&&(this.a=new Uint8Array(a.length+4),this.a.set(a),a=this.a),a=a.subarray(0,g+4));a[g++]=b>>24&255;a[g++]=b>>16&255;a[g++]=b>>8&255;a[g++]=b&255;return a};ba("Zlib.Deflate",Ka);ba("Zlib.Deflate.compress",function(f,d){return (new Ka(f,d)).f()});ba("Zlib.Deflate.prototype.compress",Ka.prototype.f);var Ma={NONE:V.NONE,FIXED:V.h,DYNAMIC:V.g},Na,Oa,W,Pa;if(Object.keys)Na=Object.keys(Ma);else for(Oa in Na=[],W=0,Ma)Na[W++]=Oa;W=0;for(Pa=Na.length;W<Pa;++W)Oa=Na[W],ba("Zlib.Deflate.CompressionType."+Oa,Ma[Oa]);}).call(module.exports);
50247
+ } (deflate_min));
50248
+
50249
+ var deflate_minExports = deflate_min.exports;
50250
+ var ZLibDeflate = /*@__PURE__*/getDefaultExportFromCjs(deflate_minExports);
50251
+
50252
+ function toUTF8Array(str) {
50253
+ var utf8 = [];
50254
+ for (var i = 0; i < str.length; i++) {
50255
+ var charcode = str.charCodeAt(i);
50256
+ if (charcode < 0x80)
50257
+ utf8.push(charcode);
50258
+ else if (charcode < 0x800) {
50259
+ utf8.push(0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f));
50260
+ }
50261
+ else if (charcode < 0xd800 || charcode >= 0xe000) {
50262
+ utf8.push(0xe0 | (charcode >> 12), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));
50263
+ }
50264
+ else {
50265
+ // surrogate pair
50266
+ i++;
50267
+ // UTF-16 encodes 0x10000-0x10FFFF by
50268
+ // subtracting 0x10000 and splitting the
50269
+ // 20 bits of 0x0-0xFFFFF into two halves
50270
+ charcode = 0x10000 + (((charcode & 0x3ff) << 10) |
50271
+ (str.charCodeAt(i) & 0x3ff));
50272
+ utf8.push(0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));
50273
+ }
50274
+ }
50275
+ return utf8;
50276
+ }
50277
+
50278
+ var Zlib = {
50279
+ 'Deflate': ZLibDeflate.Zlib.Deflate
50280
+ };
50281
+ var Encoding = {
50282
+ 'base64Url': 'base64url',
50283
+ 'binary': 'binary'
50284
+ };
50285
+ function compress(json_obj, encoding) {
50286
+ if (!encoding) {
50287
+ encoding = Encoding.base64Url;
50288
+ }
50289
+ /* -- This is ZLIB */
50290
+ var compressData = toUTF8Array(typeof json_obj === 'string' ? json_obj : JSON.stringify(json_obj));
50291
+ var deflate = new Zlib.Deflate(compressData);
50292
+ var compressedBytes = deflate.compress();
50293
+ if (encoding === Encoding.base64Url) {
50294
+ return b64.uint8ToBase64(compressedBytes);
50295
+ }
50296
+ else {
50297
+ return compressedBytes;
50298
+ }
50299
+ }
50300
+
50301
+ var ONE_HUNDRED_MB_IN_BYTES = 100 * 1024 * 1024;
50302
+ function matchHostedResources(recordingEvent, stringifiedRecordingPayload) {
50303
+ var fontURLRegex = /https:\/\/[^\s]+?\.(woff|woff2|ttf|otf|eot)\b/g;
50304
+ var hostedResources = stringifiedRecordingPayload.match(fontURLRegex);
50305
+ return {
50306
+ 'type': 'recording',
50307
+ 'visitorId': recordingEvent.visitorId,
50308
+ 'accountId': recordingEvent.accountId,
50309
+ 'keyFrame': false,
50310
+ 'lastKeyFrame': recordingEvent.lastKeyFrame,
50311
+ 'recordingId': recordingEvent.recordingId,
50312
+ 'recordingSessionId': recordingEvent.recordingSessionId,
50313
+ 'url': recordingEvent.url,
50314
+ 'subType': 'hostedResources',
50315
+ 'recordingPayload': [],
50316
+ 'recordingPayloadMetadata': [],
50317
+ 'sequence': 0,
50318
+ 'recordingPayloadCount': 0,
50319
+ 'hostedResources': hostedResources || []
50320
+ };
50321
+ }
50322
+ // keep in mind changes here may need addressing in the extension worker proxy as well
50323
+ self.onmessage = function (e) {
50324
+ try {
50325
+ if (e.data.url && e.data.payload) {
50326
+ var _a = e.data, url = _a.url, payload = _a.payload, shouldCacheResources = _a.shouldCacheResources;
50327
+ var sequence_1 = payload.sequence;
50328
+ var stringifiedRecordingPayload = JSON.stringify(payload.recordingPayload);
50329
+ // calculate and post back the recording payload size before the payload is compressed
50330
+ var recordingPayloadSize = new TextEncoder().encode(stringifiedRecordingPayload).length;
50331
+ var exceedsPayloadSizeLimit = recordingPayloadSize >= ONE_HUNDRED_MB_IN_BYTES;
50332
+ postMessage({
50333
+ 'type': 'recordingPayloadSize',
50334
+ 'recordingPayloadSize': recordingPayloadSize,
50335
+ 'exceedsPayloadSizeLimit': exceedsPayloadSizeLimit
50336
+ });
50337
+ // don't attempt to send the payload if it exceeds the allowed limit
50338
+ if (exceedsPayloadSizeLimit)
50339
+ return;
50340
+ if (shouldCacheResources) {
50341
+ var hostedResourcesEvent = matchHostedResources(payload, stringifiedRecordingPayload);
50342
+ if (hostedResourcesEvent.hostedResources.length) {
50343
+ postMessage({
50344
+ 'type': 'hostedResources',
50345
+ 'hostedResourcesEvent': hostedResourcesEvent
50346
+ });
50347
+ }
50348
+ }
50349
+ payload.recordingSize = recordingPayloadSize;
50350
+ var body = compress(payload, 'binary');
50351
+ // we want to calculate ct (current time) as close as we can to the actual POST request
50352
+ // so that it's as accurate as possible
50353
+ url = "".concat(url, "&ct=").concat(new Date().getTime());
50354
+ fetch(url, {
50355
+ 'method': 'POST',
50356
+ 'body': body
50357
+ }).then(function (response) {
50358
+ if (response.status < 200 || response.status >= 300) {
50359
+ postMessage({
50360
+ 'error': new Error("received status code ".concat(response.status, ": ").concat(response.statusText)),
50361
+ 'status': response.status,
50362
+ sequence: sequence_1
50363
+ });
50364
+ }
50365
+ else {
50366
+ postMessage({
50367
+ sequence: sequence_1
50368
+ });
50369
+ }
50370
+ })['catch'](function (e) {
50371
+ postMessage({
50372
+ 'error': e,
50373
+ sequence: sequence_1
50374
+ });
50375
+ });
50376
+ }
50377
+ }
50378
+ catch (e) {
50379
+ postMessage({
50380
+ 'error': e
50381
+ });
50382
+ }
50383
+ };
50384
+
50385
+ exports.matchHostedResources = matchHostedResources;
50386
+
50387
+ return exports;
50388
+
50389
+ }))({});
50390
+
50391
+ }, null);
50164
50392
  /* eslint-enable */
50165
50393
 
50166
50394
  function createReplayPlugin() {