@adobe/helix-rum-enhancer 2.36.2 → 2.36.4

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [2.36.4](https://github.com/adobe/helix-rum-enhancer/compare/v2.36.3...v2.36.4) (2025-06-18)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * check for OneTrust PC sdk if banner is not present ([#437](https://github.com/adobe/helix-rum-enhancer/issues/437)) ([6a63f79](https://github.com/adobe/helix-rum-enhancer/commit/6a63f79b10f2a983a8748bd9ffb14cafee16d3d7))
7
+
8
+ ## [2.36.3](https://github.com/adobe/helix-rum-enhancer/compare/v2.36.2...v2.36.3) (2025-06-16)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **consent:** check OneTrust banner div instead of consent div ([#434](https://github.com/adobe/helix-rum-enhancer/issues/434)) ([b71a242](https://github.com/adobe/helix-rum-enhancer/commit/b71a242bfe8e9eea2599be42689a4cfdebdb4a41))
14
+
1
15
  ## [2.36.2](https://github.com/adobe/helix-rum-enhancer/compare/v2.36.1...v2.36.2) (2025-06-13)
2
16
 
3
17
 
package/modules/index.js CHANGED
@@ -27,7 +27,7 @@ const createMO = (cb) => (window.MutationObserver ? new MutationObserver(cb)
27
27
  const [blocksMO, mediaMO] = [blocksMCB, mediaMCB].map(createMO);
28
28
 
29
29
  // Check for the presence of a given cookie
30
- const hasCookieKey = (key) => () => document.cookie.split(';').some((c) => c.trim().startsWith(`${key}=`));
30
+ const hasCookieKey = (key) => document.cookie.split(';').some((c) => c.trim().startsWith(`${key}=`));
31
31
 
32
32
  // Set the base path for the plugins
33
33
  const pluginBasePath = new URL(document.currentScript.src).href.replace(/index(\.map)?\.js/, 'plugins');
@@ -44,7 +44,15 @@ const PLUGINS = {
44
44
  },
45
45
  // Martech
46
46
  martech: { url: `${pluginBasePath}/martech.js`, when: ({ urlParameters }) => urlParameters.size > 0 },
47
- onetrust: { url: `${pluginBasePath}/onetrust.js`, when: () => (document.querySelector('#onetrust-consent-sdk') || hasCookieKey('OptanonAlertBoxClosed')), isBlockDependent: true },
47
+ onetrust: {
48
+ url: `${pluginBasePath}/onetrust.js`,
49
+ when: () => (hasCookieKey('OptanonAlertBoxClosed') || document.querySelector('#onetrust-consent-sdk')),
50
+ isBlockDependent: true,
51
+ mutationObserverParams: {
52
+ target: document.body,
53
+ options: { attributes: false, childList: true, subtree: false },
54
+ },
55
+ },
48
56
  // test: broken-plugin
49
57
  };
50
58
 
@@ -87,6 +95,10 @@ function loadPlugin(key, params) {
87
95
  const plugin = PLUGINS[key];
88
96
  const usp = new URLSearchParams(window.location.search);
89
97
  if (!pluginCache.has(key) && plugin.when && !plugin.when({ urlParameters: usp })) {
98
+ if (plugin.mutationObserverParams && !plugin.isBeingObserved) {
99
+ // eslint-disable-next-line no-use-before-define
100
+ createPluginMO(key, params, usp);
101
+ }
90
102
  return null;
91
103
  }
92
104
 
@@ -105,6 +117,26 @@ function loadPlugins(filter = () => true, params = PLUGIN_PARAMETERS) {
105
117
  .filter(([, plugin]) => filter(plugin))
106
118
  .map(([key]) => loadPlugin(key, params));
107
119
  }
120
+
121
+ function createPluginMO(key, params, usp) {
122
+ const plugin = PLUGINS[key];
123
+ const observer = createMO(() => {
124
+ if (plugin.when({ urlParameters: usp })) {
125
+ plugin.isBeingObserved = false;
126
+ observer.disconnect();
127
+ loadPlugin(key, params);
128
+ }
129
+ });
130
+
131
+ if (observer instanceof MutationObserver) {
132
+ plugin.isBeingObserved = true;
133
+ observer.observe(
134
+ plugin.mutationObserverParams.target,
135
+ plugin.mutationObserverParams.options,
136
+ );
137
+ }
138
+ }
139
+
108
140
  /**
109
141
  * Maximum number of events. The first call will be made by rum-js,
110
142
  * leaving 1023 events for the enhancer to track
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adobe/helix-rum-enhancer",
3
- "version": "2.36.2",
3
+ "version": "2.36.4",
4
4
  "description": "Helix RUM Enhancer",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -26,34 +26,19 @@ export default function addCookieConsentTracking({ sampleRUM }) {
26
26
  return;
27
27
  }
28
28
 
29
- let consentMO; // consent mutation observer
30
- const trackShowConsent = () => {
31
- const otsdk = document.querySelector('body > div#onetrust-consent-sdk');
32
- if (otsdk) {
33
- if (otsdk.checkVisibility && !otsdk.checkVisibility()) {
34
- sampleRUMOnce('consent', { source: 'onetrust', target: 'suppressed' });
35
- } else {
36
- sampleRUMOnce('consent', { source: 'onetrust', target: 'show' });
37
- }
38
- if (consentMO) {
39
- consentMO.disconnect();
40
- }
41
- return true;
42
- }
43
- return false;
44
- };
29
+ const bannersdk = document.querySelector('#onetrust-banner-sdk');
45
30
 
46
- if (!trackShowConsent()) {
47
- // eslint-disable-next-line max-len
48
- consentMO = window.MutationObserver
49
- ? new MutationObserver(trackShowConsent)
50
- : /* c8 ignore next */ null;
51
- if (consentMO) {
52
- consentMO.observe(
53
- document.body,
54
- // eslint-disable-next-line object-curly-newline
55
- { attributes: false, childList: true, subtree: false },
56
- );
57
- }
31
+ if (bannersdk && bannersdk.offsetHeight > 0) {
32
+ sampleRUMOnce('consent', { source: 'onetrust', target: 'show' });
33
+ return;
58
34
  }
35
+
36
+ const pcsdk = document.querySelector('#onetrust-pc-sdk');
37
+
38
+ if (pcsdk && pcsdk.offsetHeight > 0) {
39
+ sampleRUMOnce('consent', { source: 'onetrust', target: 'show' });
40
+ return;
41
+ }
42
+
43
+ sampleRUMOnce('consent', { source: 'onetrust', target: 'suppressed' });
59
44
  }
package/src/index.js CHANGED
@@ -125,7 +125,7 @@
125
125
  } = window.hlx && window.hlx.rum ? window.hlx.rum : {};
126
126
  const createMO = cb => window.MutationObserver ? new MutationObserver(cb) : {};
127
127
  const [blocksMO, mediaMO] = [blocksMCB, mediaMCB].map(createMO);
128
- const hasCookieKey = key => () => document.cookie.split(';').some(c => c.trim().startsWith(`${key}=`));
128
+ const hasCookieKey = key => document.cookie.split(';').some(c => c.trim().startsWith(`${key}=`));
129
129
  const pluginBasePath = new URL(document.currentScript.src).href.replace(/index(\.map)?\.js/, 'plugins');
130
130
  const PLUGINS = {
131
131
  cwv: `${pluginBasePath}/cwv.js`,
@@ -152,8 +152,16 @@
152
152
  },
153
153
  onetrust: {
154
154
  url: `${pluginBasePath}/onetrust.js`,
155
- when: () => document.querySelector('#onetrust-consent-sdk') || hasCookieKey('OptanonAlertBoxClosed'),
156
- isBlockDependent: true
155
+ when: () => hasCookieKey('OptanonAlertBoxClosed') || document.querySelector('#onetrust-consent-sdk'),
156
+ isBlockDependent: true,
157
+ mutationObserverParams: {
158
+ target: document.body,
159
+ options: {
160
+ attributes: false,
161
+ childList: true,
162
+ subtree: false
163
+ }
164
+ }
157
165
  }
158
166
  };
159
167
  function getIntersectionObserver(checkpoint) {
@@ -191,6 +199,9 @@
191
199
  if (!pluginCache.has(key) && plugin.when && !plugin.when({
192
200
  urlParameters: usp
193
201
  })) {
202
+ if (plugin.mutationObserverParams && !plugin.isBeingObserved) {
203
+ createPluginMO(key, params, usp);
204
+ }
194
205
  return null;
195
206
  }
196
207
  if (!pluginCache.has(key)) {
@@ -202,6 +213,22 @@
202
213
  function loadPlugins(filter = () => true, params = PLUGIN_PARAMETERS) {
203
214
  Object.entries(PLUGINS).filter(([, plugin]) => filter(plugin)).map(([key]) => loadPlugin(key, params));
204
215
  }
216
+ function createPluginMO(key, params, usp) {
217
+ const plugin = PLUGINS[key];
218
+ const observer = createMO(() => {
219
+ if (plugin.when({
220
+ urlParameters: usp
221
+ })) {
222
+ plugin.isBeingObserved = false;
223
+ observer.disconnect();
224
+ loadPlugin(key, params);
225
+ }
226
+ });
227
+ if (observer instanceof MutationObserver) {
228
+ plugin.isBeingObserved = true;
229
+ observer.observe(plugin.mutationObserverParams.target, plugin.mutationObserverParams.options);
230
+ }
231
+ }
205
232
  let maxEvents = 1023;
206
233
  function trackCheckpoint(checkpoint, data, t) {
207
234
  const {
package/src/index.md5 CHANGED
@@ -1 +1 @@
1
- dd6f6e32c1a7a15d64eefb25965ab28d
1
+ 553c68a2b55034ef8e3f0c52cd6ccb50
package/src/index.sri CHANGED
@@ -1 +1 @@
1
- sha384-wk5sWIzPnq//BRLJXkDj3XhdLKO34W6evs0lij8kkylC7YkhVCwDa5zB0LKeiNcN
1
+ sha384-CjLEkhzEseDSIYhgHR+ei0ZCRsITHEnViPh3w6rZZQKtbNW6hU7EY76328h4Ce/8
@@ -1 +1 @@
1
- 65c04c4661e32005cec85954ff308008
1
+ 866b5825b7bdb273170fbab6fa8099bb
@@ -27,38 +27,26 @@ function addCookieConsentTracking({
27
27
  });
28
28
  return;
29
29
  }
30
- let consentMO;
31
- const trackShowConsent = () => {
32
- const otsdk = document.querySelector('body > div#onetrust-consent-sdk');
33
- if (otsdk) {
34
- if (otsdk.checkVisibility && !otsdk.checkVisibility()) {
35
- sampleRUMOnce('consent', {
36
- source: 'onetrust',
37
- target: 'suppressed'
38
- });
39
- } else {
40
- sampleRUMOnce('consent', {
41
- source: 'onetrust',
42
- target: 'show'
43
- });
44
- }
45
- if (consentMO) {
46
- consentMO.disconnect();
47
- }
48
- return true;
49
- }
50
- return false;
51
- };
52
- if (!trackShowConsent()) {
53
- consentMO = window.MutationObserver ? new MutationObserver(trackShowConsent) : null;
54
- if (consentMO) {
55
- consentMO.observe(document.body, {
56
- attributes: false,
57
- childList: true,
58
- subtree: false
59
- });
60
- }
30
+ const bannersdk = document.querySelector('#onetrust-banner-sdk');
31
+ if (bannersdk && bannersdk.offsetHeight > 0) {
32
+ sampleRUMOnce('consent', {
33
+ source: 'onetrust',
34
+ target: 'show'
35
+ });
36
+ return;
37
+ }
38
+ const pcsdk = document.querySelector('#onetrust-pc-sdk');
39
+ if (pcsdk && pcsdk.offsetHeight > 0) {
40
+ sampleRUMOnce('consent', {
41
+ source: 'onetrust',
42
+ target: 'show'
43
+ });
44
+ return;
61
45
  }
46
+ sampleRUMOnce('consent', {
47
+ source: 'onetrust',
48
+ target: 'suppressed'
49
+ });
62
50
  }
63
51
 
64
52
  export { addCookieConsentTracking as default };
@@ -27,39 +27,27 @@ function addCookieConsentTracking({
27
27
  });
28
28
  return;
29
29
  }
30
- let consentMO;
31
- const trackShowConsent = () => {
32
- const otsdk = document.querySelector('body > div#onetrust-consent-sdk');
33
- if (otsdk) {
34
- if (otsdk.checkVisibility && !otsdk.checkVisibility()) {
35
- sampleRUMOnce('consent', {
36
- source: 'onetrust',
37
- target: 'suppressed'
38
- });
39
- } else {
40
- sampleRUMOnce('consent', {
41
- source: 'onetrust',
42
- target: 'show'
43
- });
44
- }
45
- if (consentMO) {
46
- consentMO.disconnect();
47
- }
48
- return true;
49
- }
50
- return false;
51
- };
52
- if (!trackShowConsent()) {
53
- consentMO = window.MutationObserver ? new MutationObserver(trackShowConsent) : null;
54
- if (consentMO) {
55
- consentMO.observe(document.body, {
56
- attributes: false,
57
- childList: true,
58
- subtree: false
59
- });
60
- }
30
+ const bannersdk = document.querySelector('#onetrust-banner-sdk');
31
+ if (bannersdk && bannersdk.offsetHeight > 0) {
32
+ sampleRUMOnce('consent', {
33
+ source: 'onetrust',
34
+ target: 'show'
35
+ });
36
+ return;
37
+ }
38
+ const pcsdk = document.querySelector('#onetrust-pc-sdk');
39
+ if (pcsdk && pcsdk.offsetHeight > 0) {
40
+ sampleRUMOnce('consent', {
41
+ source: 'onetrust',
42
+ target: 'show'
43
+ });
44
+ return;
61
45
  }
46
+ sampleRUMOnce('consent', {
47
+ source: 'onetrust',
48
+ target: 'suppressed'
49
+ });
62
50
  }
63
51
 
64
52
  export { addCookieConsentTracking as default };
65
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25ldHJ1c3QubWFwLmpzIiwic291cmNlcyI6WyIuLi8uLi9wbHVnaW5zL29uZXRydXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAyNCBBZG9iZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5XG4gKiBvZiB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyXG4gKiB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlNcbiAqIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZVxuICogZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xubGV0IGhhc1NlbnREYXRhID0gZmFsc2U7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRDb29raWVDb25zZW50VHJhY2tpbmcoeyBzYW1wbGVSVU0gfSkge1xuICBjb25zdCBzYW1wbGVSVU1PbmNlID0gKC4uLmFyZ3MpID0+IHtcbiAgICBpZiAoIWhhc1NlbnREYXRhKSB7XG4gICAgICBzYW1wbGVSVU0oLi4uYXJncyk7XG4gICAgICBoYXNTZW50RGF0YSA9IHRydWU7XG4gICAgfVxuICB9O1xuICBjb25zdCBjbXBDb29raWUgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKVxuICAgIC5tYXAoKGMpID0+IGMudHJpbSgpKVxuICAgIC5maW5kKChjb29raWUpID0+IGNvb2tpZS5zdGFydHNXaXRoKCdPcHRhbm9uQWxlcnRCb3hDbG9zZWQ9JykpO1xuXG4gIGlmIChjbXBDb29raWUpIHtcbiAgICBzYW1wbGVSVU1PbmNlKCdjb25zZW50JywgeyBzb3VyY2U6ICdvbmV0cnVzdCcsIHRhcmdldDogJ2hpZGRlbicgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IGNvbnNlbnRNTzsgLy8gY29uc2VudCBtdXRhdGlvbiBvYnNlcnZlclxuICBjb25zdCB0cmFja1Nob3dDb25zZW50ID0gKCkgPT4ge1xuICAgIGNvbnN0IG90c2RrID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keSA+IGRpdiNvbmV0cnVzdC1jb25zZW50LXNkaycpO1xuICAgIGlmIChvdHNkaykge1xuICAgICAgaWYgKG90c2RrLmNoZWNrVmlzaWJpbGl0eSAmJiAhb3RzZGsuY2hlY2tWaXNpYmlsaXR5KCkpIHtcbiAgICAgICAgc2FtcGxlUlVNT25jZSgnY29uc2VudCcsIHsgc291cmNlOiAnb25ldHJ1c3QnLCB0YXJnZXQ6ICdzdXBwcmVzc2VkJyB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNhbXBsZVJVTU9uY2UoJ2NvbnNlbnQnLCB7IHNvdXJjZTogJ29uZXRydXN0JywgdGFyZ2V0OiAnc2hvdycgfSk7XG4gICAgICB9XG4gICAgICBpZiAoY29uc2VudE1PKSB7XG4gICAgICAgIGNvbnNlbnRNTy5kaXNjb25uZWN0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIGlmICghdHJhY2tTaG93Q29uc2VudCgpKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICBjb25zZW50TU8gPSB3aW5kb3cuTXV0YXRpb25PYnNlcnZlclxuICAgICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcih0cmFja1Nob3dDb25zZW50KVxuICAgICAgOiAvKiBjOCBpZ25vcmUgbmV4dCAqLyBudWxsO1xuICAgIGlmIChjb25zZW50TU8pIHtcbiAgICAgIGNvbnNlbnRNTy5vYnNlcnZlKFxuICAgICAgICBkb2N1bWVudC5ib2R5LFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JqZWN0LWN1cmx5LW5ld2xpbmVcbiAgICAgICAgeyBhdHRyaWJ1dGVzOiBmYWxzZSwgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiBmYWxzZSB9LFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJoYXNTZW50RGF0YSIsImFkZENvb2tpZUNvbnNlbnRUcmFja2luZyIsInNhbXBsZVJVTSIsInNhbXBsZVJVTU9uY2UiLCJhcmdzIiwiY21wQ29va2llIiwiZG9jdW1lbnQiLCJjb29raWUiLCJzcGxpdCIsIm1hcCIsImMiLCJ0cmltIiwiZmluZCIsInN0YXJ0c1dpdGgiLCJzb3VyY2UiLCJ0YXJnZXQiLCJjb25zZW50TU8iLCJ0cmFja1Nob3dDb25zZW50Iiwib3RzZGsiLCJxdWVyeVNlbGVjdG9yIiwiY2hlY2tWaXNpYmlsaXR5IiwiZGlzY29ubmVjdCIsIndpbmRvdyIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJvYnNlcnZlIiwiYm9keSIsImF0dHJpYnV0ZXMiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVdBLElBQUlBLFdBQVcsR0FBRyxLQUFLO0FBQ1IsU0FBU0Msd0JBQXdCQSxDQUFDO0FBQUVDLEVBQUFBO0FBQVUsQ0FBQyxFQUFFO0FBQzlELEVBQUEsTUFBTUMsYUFBYSxHQUFHQSxDQUFDLEdBQUdDLElBQUksS0FBSztJQUNqQyxJQUFJLENBQUNKLFdBQVcsRUFBRTtNQUNoQkUsU0FBUyxDQUFDLEdBQUdFLElBQUksQ0FBQztBQUNsQkosTUFBQUEsV0FBVyxHQUFHLElBQUk7QUFDcEI7R0FDRDtBQUNELEVBQUEsTUFBTUssU0FBUyxHQUFHQyxRQUFRLENBQUNDLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUN6Q0MsR0FBRyxDQUFFQyxDQUFDLElBQUtBLENBQUMsQ0FBQ0MsSUFBSSxFQUFFLENBQUMsQ0FDcEJDLElBQUksQ0FBRUwsTUFBTSxJQUFLQSxNQUFNLENBQUNNLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBRWhFLEVBQUEsSUFBSVIsU0FBUyxFQUFFO0lBQ2JGLGFBQWEsQ0FBQyxTQUFTLEVBQUU7QUFBRVcsTUFBQUEsTUFBTSxFQUFFLFVBQVU7QUFBRUMsTUFBQUEsTUFBTSxFQUFFO0FBQVMsS0FBQyxDQUFDO0FBQ2xFLElBQUE7QUFDRjtBQUVBLEVBQUEsSUFBSUMsU0FBUztFQUNiLE1BQU1DLGdCQUFnQixHQUFHQSxNQUFNO0FBQzdCLElBQUEsTUFBTUMsS0FBSyxHQUFHWixRQUFRLENBQUNhLGFBQWEsQ0FBQyxpQ0FBaUMsQ0FBQztBQUN2RSxJQUFBLElBQUlELEtBQUssRUFBRTtNQUNULElBQUlBLEtBQUssQ0FBQ0UsZUFBZSxJQUFJLENBQUNGLEtBQUssQ0FBQ0UsZUFBZSxFQUFFLEVBQUU7UUFDckRqQixhQUFhLENBQUMsU0FBUyxFQUFFO0FBQUVXLFVBQUFBLE1BQU0sRUFBRSxVQUFVO0FBQUVDLFVBQUFBLE1BQU0sRUFBRTtBQUFhLFNBQUMsQ0FBQztBQUN4RSxPQUFDLE1BQU07UUFDTFosYUFBYSxDQUFDLFNBQVMsRUFBRTtBQUFFVyxVQUFBQSxNQUFNLEVBQUUsVUFBVTtBQUFFQyxVQUFBQSxNQUFNLEVBQUU7QUFBTyxTQUFDLENBQUM7QUFDbEU7QUFDQSxNQUFBLElBQUlDLFNBQVMsRUFBRTtRQUNiQSxTQUFTLENBQUNLLFVBQVUsRUFBRTtBQUN4QjtBQUNBLE1BQUEsT0FBTyxJQUFJO0FBQ2I7QUFDQSxJQUFBLE9BQU8sS0FBSztHQUNiO0FBRUQsRUFBQSxJQUFJLENBQUNKLGdCQUFnQixFQUFFLEVBQUU7SUFFdkJELFNBQVMsR0FBR00sTUFBTSxDQUFDQyxnQkFBZ0IsR0FDL0IsSUFBSUEsZ0JBQWdCLENBQUNOLGdCQUFnQixDQUFDLEdBQ2pCLElBQUk7QUFDN0IsSUFBQSxJQUFJRCxTQUFTLEVBQUU7QUFDYkEsTUFBQUEsU0FBUyxDQUFDUSxPQUFPLENBQ2ZsQixRQUFRLENBQUNtQixJQUFJLEVBRWI7QUFBRUMsUUFBQUEsVUFBVSxFQUFFLEtBQUs7QUFBRUMsUUFBQUEsU0FBUyxFQUFFLElBQUk7QUFBRUMsUUFBQUEsT0FBTyxFQUFFO0FBQU0sT0FDdkQsQ0FBQztBQUNIO0FBQ0Y7QUFDRjs7OzsifQ==
53
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25ldHJ1c3QubWFwLmpzIiwic291cmNlcyI6WyIuLi8uLi9wbHVnaW5zL29uZXRydXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAyNCBBZG9iZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5XG4gKiBvZiB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyXG4gKiB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlNcbiAqIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZVxuICogZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xubGV0IGhhc1NlbnREYXRhID0gZmFsc2U7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRDb29raWVDb25zZW50VHJhY2tpbmcoeyBzYW1wbGVSVU0gfSkge1xuICBjb25zdCBzYW1wbGVSVU1PbmNlID0gKC4uLmFyZ3MpID0+IHtcbiAgICBpZiAoIWhhc1NlbnREYXRhKSB7XG4gICAgICBzYW1wbGVSVU0oLi4uYXJncyk7XG4gICAgICBoYXNTZW50RGF0YSA9IHRydWU7XG4gICAgfVxuICB9O1xuICBjb25zdCBjbXBDb29raWUgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKVxuICAgIC5tYXAoKGMpID0+IGMudHJpbSgpKVxuICAgIC5maW5kKChjb29raWUpID0+IGNvb2tpZS5zdGFydHNXaXRoKCdPcHRhbm9uQWxlcnRCb3hDbG9zZWQ9JykpO1xuXG4gIGlmIChjbXBDb29raWUpIHtcbiAgICBzYW1wbGVSVU1PbmNlKCdjb25zZW50JywgeyBzb3VyY2U6ICdvbmV0cnVzdCcsIHRhcmdldDogJ2hpZGRlbicgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYmFubmVyc2RrID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI29uZXRydXN0LWJhbm5lci1zZGsnKTtcblxuICBpZiAoYmFubmVyc2RrICYmIGJhbm5lcnNkay5vZmZzZXRIZWlnaHQgPiAwKSB7XG4gICAgc2FtcGxlUlVNT25jZSgnY29uc2VudCcsIHsgc291cmNlOiAnb25ldHJ1c3QnLCB0YXJnZXQ6ICdzaG93JyB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwY3NkayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNvbmV0cnVzdC1wYy1zZGsnKTtcblxuICBpZiAocGNzZGsgJiYgcGNzZGsub2Zmc2V0SGVpZ2h0ID4gMCkge1xuICAgIHNhbXBsZVJVTU9uY2UoJ2NvbnNlbnQnLCB7IHNvdXJjZTogJ29uZXRydXN0JywgdGFyZ2V0OiAnc2hvdycgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc2FtcGxlUlVNT25jZSgnY29uc2VudCcsIHsgc291cmNlOiAnb25ldHJ1c3QnLCB0YXJnZXQ6ICdzdXBwcmVzc2VkJyB9KTtcbn1cbiJdLCJuYW1lcyI6WyJoYXNTZW50RGF0YSIsImFkZENvb2tpZUNvbnNlbnRUcmFja2luZyIsInNhbXBsZVJVTSIsInNhbXBsZVJVTU9uY2UiLCJhcmdzIiwiY21wQ29va2llIiwiZG9jdW1lbnQiLCJjb29raWUiLCJzcGxpdCIsIm1hcCIsImMiLCJ0cmltIiwiZmluZCIsInN0YXJ0c1dpdGgiLCJzb3VyY2UiLCJ0YXJnZXQiLCJiYW5uZXJzZGsiLCJxdWVyeVNlbGVjdG9yIiwib2Zmc2V0SGVpZ2h0IiwicGNzZGsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBV0EsSUFBSUEsV0FBVyxHQUFHLEtBQUs7QUFDUixTQUFTQyx3QkFBd0JBLENBQUM7QUFBRUMsRUFBQUE7QUFBVSxDQUFDLEVBQUU7QUFDOUQsRUFBQSxNQUFNQyxhQUFhLEdBQUdBLENBQUMsR0FBR0MsSUFBSSxLQUFLO0lBQ2pDLElBQUksQ0FBQ0osV0FBVyxFQUFFO01BQ2hCRSxTQUFTLENBQUMsR0FBR0UsSUFBSSxDQUFDO0FBQ2xCSixNQUFBQSxXQUFXLEdBQUcsSUFBSTtBQUNwQjtHQUNEO0FBQ0QsRUFBQSxNQUFNSyxTQUFTLEdBQUdDLFFBQVEsQ0FBQ0MsTUFBTSxDQUFDQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQ3pDQyxHQUFHLENBQUVDLENBQUMsSUFBS0EsQ0FBQyxDQUFDQyxJQUFJLEVBQUUsQ0FBQyxDQUNwQkMsSUFBSSxDQUFFTCxNQUFNLElBQUtBLE1BQU0sQ0FBQ00sVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFFaEUsRUFBQSxJQUFJUixTQUFTLEVBQUU7SUFDYkYsYUFBYSxDQUFDLFNBQVMsRUFBRTtBQUFFVyxNQUFBQSxNQUFNLEVBQUUsVUFBVTtBQUFFQyxNQUFBQSxNQUFNLEVBQUU7QUFBUyxLQUFDLENBQUM7QUFDbEUsSUFBQTtBQUNGO0FBRUEsRUFBQSxNQUFNQyxTQUFTLEdBQUdWLFFBQVEsQ0FBQ1csYUFBYSxDQUFDLHNCQUFzQixDQUFDO0FBRWhFLEVBQUEsSUFBSUQsU0FBUyxJQUFJQSxTQUFTLENBQUNFLFlBQVksR0FBRyxDQUFDLEVBQUU7SUFDM0NmLGFBQWEsQ0FBQyxTQUFTLEVBQUU7QUFBRVcsTUFBQUEsTUFBTSxFQUFFLFVBQVU7QUFBRUMsTUFBQUEsTUFBTSxFQUFFO0FBQU8sS0FBQyxDQUFDO0FBQ2hFLElBQUE7QUFDRjtBQUVBLEVBQUEsTUFBTUksS0FBSyxHQUFHYixRQUFRLENBQUNXLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQztBQUV4RCxFQUFBLElBQUlFLEtBQUssSUFBSUEsS0FBSyxDQUFDRCxZQUFZLEdBQUcsQ0FBQyxFQUFFO0lBQ25DZixhQUFhLENBQUMsU0FBUyxFQUFFO0FBQUVXLE1BQUFBLE1BQU0sRUFBRSxVQUFVO0FBQUVDLE1BQUFBLE1BQU0sRUFBRTtBQUFPLEtBQUMsQ0FBQztBQUNoRSxJQUFBO0FBQ0Y7RUFFQVosYUFBYSxDQUFDLFNBQVMsRUFBRTtBQUFFVyxJQUFBQSxNQUFNLEVBQUUsVUFBVTtBQUFFQyxJQUFBQSxNQUFNLEVBQUU7QUFBYSxHQUFDLENBQUM7QUFDeEU7Ozs7In0=
@@ -1 +1 @@
1
- 517639c5549d69645ca8d34d41e99914
1
+ 3c3c556e0a29b94c68e382ea3dc3b3b5
@@ -1 +1 @@
1
- 3476ee246a6b4c1599651d8a7580e2c7
1
+ 5bc383f4749e0b2deb261ec67635b63a