PageSourceSearch

https://www.synergos.org/sites/default/files/js/js_l2RgAHI7fEuAILRbazF-9CpOLWLO-cfIpneRP8Fc9JM.js

js synergos.org collected 2026-10-02 08:03:32 UTC 50,655 bytes, 1,150 lines download raw bytes

1/**
2* DO NOT EDIT THIS FILE.
3* See the following change record for more information,
4* https://www.drupal.org/node/2815083
5* @preserve
6**/
7(function ($, Drupal, _ref) {
8  var isTabbable = _ref.isTabbable;
9  $.extend($.expr[':'], {
10    tabbable: function tabbable(element) {
11      Drupal.deprecationError({
12        message: 'The :tabbable selector is deprecated in Drupal 9.2.0 and will be removed in Drupal 11.0.0. Use the core/tabbable library instead. See https://www.drupal.org/node/3183730'
13      });
14      if (element.tagName === 'SUMMARY' || element.tagName === 'DETAILS') {
15        var tabIndex = element.getAttribute('tabIndex');
16        if (tabIndex === null || tabIndex < 0) {
17          return false;
18        }
19      }
20      return isTabbable(element);
21    }
22  });
23})(jQuery, Drupal, window.tabbable);;
24/**
25* DO NOT EDIT THIS FILE.
26* See the following change record for more information,
27* https://www.drupal.org/node/2815083
28* @preserve
29**/
30(function ($) {
31  var cachedScrollbarWidth = null;
32  var max = Math.max,
33    abs = Math.abs;
34  var regexHorizontal = /left|center|right/;
35  var regexVertical = /top|center|bottom/;
36  var regexOffset = /[+-]\d+(\.[\d]+)?%?/;
37  var regexPosition = /^\w+/;
38  var regexPercent = /%$/;
39  var _position = $.fn.position;
40  function getOffsets(offsets, width, height) {
41    return [parseFloat(offsets[0]) * (regexPercent.test(offsets[0]) ? width / 100 : 1), parseFloat(offsets[1]) * (regexPercent.test(offsets[1]) ? height / 100 : 1)];
42  }
43  function parseCss(element, property) {
44    return parseInt($.css(element, property), 10) || 0;
45  }
46  function getDimensions(elem) {
47    var raw = elem[0];
48    if (raw.nodeType === 9) {
49      return {
50        width: elem.width(),
51        height: elem.height(),
52        offset: {
53          top: 0,
54          left: 0
55        }
56      };
57    }
58    if ($.isWindow(raw)) {
59      return {
60        width: elem.width(),
61        height: elem.height(),
62        offset: {
63          top: elem.scrollTop(),
64          left: elem.scrollLeft()
65        }
66      };
67    }
68    if (raw.preventDefault) {
69      return {
70        width: 0,
71        height: 0,
72        offset: {
73          top: raw.pageY,
74          left: raw.pageX
75        }
76      };
77    }
78    return {
79      width: elem.outerWidth(),
80      height: elem.outerHeight(),
81      offset: elem.offset()
82    };
83  }
84  var collisions = {
85    fit: {
86      left: function left(position, data) {
87        var within = data.within;
88        var withinOffset = within.isWindow ? within.scrollLeft : within.offset.left;
89        var outerWidth = within.width;
90        var collisionPosLeft = position.left - data.collisionPosition.marginLeft;
91        var overLeft = withinOffset - collisionPosLeft;
92        var overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset;
93        var newOverRight;
94        if (data.collisionWidth > outerWidth) {
95          if (overLeft > 0 && overRight <= 0) {
96            newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;
97            position.left += overLeft - newOverRight;
98          } else if (overRight > 0 && overLeft <= 0) {
99            position.left = withinOffset;
100          } else if (overLeft > overRight) {
101            position.left = withinOffset + outerWidth - data.collisionWidth;
102          } else {
103            position.left = withinOffset;
104          }
105        } else if (overLeft > 0) {
106          position.left += overLeft;
107        } else if (overRight > 0) {
108          position.left -= overRight;
109        } else {
110          position.left = max(position.left - collisionPosLeft, position.left);
111        }
112      },
113      top: function top(position, data) {
114        var within = data.within;
115        var withinOffset = within.isWindow ? within.scrollTop : within.offset.top;
116        var outerHeight = data.within.height;
117        var collisionPosTop = position.top - data.collisionPosition.marginTop;
118        var overTop = withinOffset - collisionPosTop;
119        var overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset;
120        var newOverBottom;
121        if (data.collisionHeight > outerHeight) {
122          if (overTop > 0 && overBottom <= 0) {
123            newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;
124            position.top += overTop - newOverBottom;
125          } else if (overBottom > 0 && overTop <= 0) {
126            position.top = withinOffset;
127          } else if (overTop > overBottom) {
128            position.top = withinOffset + outerHeight - data.collisionHeight;
129          } else {
130            position.top = withinOffset;
131          }
132        } else if (overTop > 0) {
133          position.top += overTop;
134        } else if (overBottom > 0) {
135          position.top -= overBottom;
136        } else {
137          position.top = max(position.top - collisionPosTop, position.top);
138        }
139      }
140    },
141    flip: {
142      left: function left(position, data) {
143        var within = data.within;
144        var withinOffset = within.offset.left + within.scrollLeft;
145        var outerWidth = within.width;
146        var offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left;
147        var collisionPosLeft = position.left - data.collisionPosition.marginLeft;
148        var overLeft = collisionPosLeft - offsetLeft;
149        var overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft;
150        var myOffset = data.my[0] === 'left' ? -data.elemWidth : data.my[0] === 'right' ? data.elemWidth : 0;
151        var atOffset = data.at[0] === 'left' ? data.targetWidth : data.at[0] === 'right' ? -data.targetWidth : 0;
152        var offset = -2 * data.offset[0];
153        var newOverRight;
154        var newOverLeft;
155        if (overLeft < 0) {
156          newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;
157          if (newOverRight < 0 || newOverRight < abs(overLeft)) {
158            position.left += myOffset + atOffset + offset;
159          }
160        } else if (overRight > 0) {
161          newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;
162          if (newOverLeft > 0 || abs(newOverLeft) < overRight) {
163            position.left += myOffset + atOffset + offset;
164          }
165        }
166      },
167      top: function top(position, data) {
168        var within = data.within;
169        var withinOffset = within.offset.top + within.scrollTop;
170        var outerHeight = within.height;
171        var offsetTop = within.isWindow ? within.scrollTop : within.offset.top;
172        var collisionPosTop = position.top - data.collisionPosition.marginTop;
173        var overTop = collisionPosTop - offsetTop;
174        var overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop;
175        var top = data.my[1] === 'top';
176        var myOffset = top ? -data.elemHeight : data.my[1] === 'bottom' ? data.elemHeight : 0;
177        var atOffset = data.at[1] === 'top' ? data.targetHeight : data.at[1] === 'bottom' ? -data.targetHeight : 0;
178        var offset = -2 * data.offset[1];
179        var newOverTop;
180        var newOverBottom;
181        if (overTop < 0) {
182          newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;
183          if (newOverBottom < 0 || newOverBottom < abs(overTop)) {
184            position.top += myOffset + atOffset + offset;
185          }
186        } else if (overBottom > 0) {
187          newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;
188          if (newOverTop > 0 || abs(newOverTop) < overBottom) {
189            position.top += myOffset + atOffset + offset;
190          }
191        }
192      }
193    },
194    flipfit: {
195      left: function left() {
196        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
197          args[_key] = arguments[_key];
198        }
199        collisions.flip.left.apply(this, args);
200        collisions.fit.left.apply(this, args);
201      },
202      top: function top() {
203        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
204          args[_key2] = arguments[_key2];
205        }
206        collisions.flip.top.apply(this, args);
207        collisions.fit.top.apply(this, args);
208      }
209    }
210  };
211  $.position = {
212    scrollbarWidth: function scrollbarWidth() {
213      if (cachedScrollbarWidth !== undefined) {
214        return cachedScrollbarWidth;
215      }
216      var div = $('<div ' + "style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" + "<div style='height:100px;width:auto;'></div></div>");
217      var innerDiv = div.children()[0];
218      $('body').append(div);
219      var w1 = innerDiv.offsetWidth;
220      div.css('overflow', 'scroll');
221      var w2 = innerDiv.offsetWidth;
222      if (w1 === w2) {
223        w2 = div[0].clientWidth;
224      }
225      div.remove();
226      cachedScrollbarWidth = w1 - w2;
227      return cachedScrollbarWidth;
228    },
229    getScrollInfo: function getScrollInfo(within) {
230      var overflowX = within.isWindow || within.isDocument ? '' : within.element.css('overflow-x');
231      var overflowY = within.isWindow || within.isDocument ? '' : within.element.css('overflow-y');
232      var hasOverflowX = overflowX === 'scroll' || overflowX === 'auto' && within.width < within.element[0].scrollWidth;
233      var hasOverflowY = overflowY === 'scroll' || overflowY === 'auto' && within.height < within.element[0].scrollHeight;
234      return {
235        width: hasOverflowY ? $.position.scrollbarWidth() : 0,
236        height: hasOverflowX ? $.position.scrollbarWidth() : 0
237      };
238    },
239    getWithinInfo: function getWithinInfo(element) {
240      var withinElement = $(element || window);
241      var isWindow = $.isWindow(withinElement[0]);
242      var isDocument = !!withinElement[0] && withinElement[0].nodeType === 9;
243      var hasOffset = !isWindow && !isDocument;
244      return {
245        element: withinElement,
246        isWindow: isWindow,
247        isDocument: isDocument,
248        offset: hasOffset ? $(element).offset() : {
249          left: 0,
250          top: 0
251        },
252        scrollLeft: withinElement.scrollLeft(),
253        scrollTop: withinElement.scrollTop(),
254        width: withinElement.outerWidth(),
255        height: withinElement.outerHeight()
256      };
257    }
258  };
259  $.fn.position = function (options) {
260    if (!options || !options.of) {
261      return _position.apply(this, arguments);
262    }
263    options = $.extend({}, options);
264    var within = $.position.getWithinInfo(options.within);
265    var scrollInfo = $.position.getScrollInfo(within);
266    var collision = (options.collision || 'flip').split(' ');
267    var offsets = {};
268    var target = typeof options.of === 'string' ? $(document).find(options.of) : $(options.of);
269    var dimensions = getDimensions(target);
270    var targetWidth = dimensions.width;
271    var targetHeight = dimensions.height;
272    var targetOffset = dimensions.offset;
273    if (target[0].preventDefault) {
274      options.at = 'left top';
275    }
276    var basePosition = $.extend({}, targetOffset);
277    $.each(['my', 'at'], function () {
278      var pos = (options[this] || '').split(' ');
279      if (pos.length === 1) {
280        pos = regexHorizontal.test(pos[0]) ? pos.concat(['center']) : regexVertical.test(pos[0]) ? ['center'].concat(pos) : ['center', 'center'];
281      }
282      pos[0] = regexHorizontal.test(pos[0]) ? pos[0] : 'center';
283      pos[1] = regexVertical.test(pos[1]) ? pos[1] : 'center';
284      var horizontalOffset = regexOffset.exec(pos[0]);
285      var verticalOffset = regexOffset.exec(pos[1]);
286      offsets[this] = [horizontalOffset ? horizontalOffset[0] : 0, verticalOffset ? verticalOffset[0] : 0];
287      options[this] = [regexPosition.exec(pos[0])[0], regexPosition.exec(pos[1])[0]];
288    });
289    if (collision.length === 1) {
290      collision[1] = collision[0];
291    }
292    if (options.at[0] === 'right') {
293      basePosition.left += targetWidth;
294    } else if (options.at[0] === 'center') {
295      basePosition.left += targetWidth / 2;
296    }
297    if (options.at[1] === 'bottom') {
298      basePosition.top += targetHeight;
299    } else if (options.at[1] === 'center') {
300      basePosition.top += targetHeight / 2;
301    }
302    var atOffset = getOffsets(offsets.at, targetWidth, targetHeight);
303    basePosition.left += atOffset[0];
304    basePosition.top += atOffset[1];
305    return this.each(function () {
306      var using;
307      var elem = $(this);
308      var elemWidth = elem.outerWidth();
309      var elemHeight = elem.outerHeight();
310      var marginLeft = parseCss(this, 'marginLeft');
311      var marginTop = parseCss(this, 'marginTop');
312      var collisionWidth = elemWidth + marginLeft + parseCss(this, 'marginRight') + scrollInfo.width;
313      var collisionHeight = elemHeight + marginTop + parseCss(this, 'marginBottom') + scrollInfo.height;
314      var position = $.extend({}, basePosition);
315      var myOffset = getOffsets(offsets.my, elem.outerWidth(), elem.outerHeight());
316      if (options.my[0] === 'right') {
317        position.left -= elemWidth;
318      } else if (options.my[0] === 'center') {
319        position.left -= elemWidth / 2;
320      }
321      if (options.my[1] === 'bottom') {
322        position.top -= elemHeight;
323      } else if (options.my[1] === 'center') {
324        position.top -= elemHeight / 2;
325      }
326      position.left += myOffset[0];
327      position.top += myOffset[1];
328      var collisionPosition = {
329        marginLeft: marginLeft,
330        marginTop: marginTop
331      };
332      $.each(['left', 'top'], function (i, dir) {
333        if (collisions[collision[i]]) {
334          collisions[collision[i]][dir](position, {
335            targetWidth: targetWidth,
336            targetHeight: targetHeight,
337            elemWidth: elemWidth,
338            elemHeight: elemHeight,
339            collisionPosition: collisionPosition,
340            collisionWidth: collisionWidth,
341            collisionHeight: collisionHeight,
342            offset: [atOffset[0] + myOffset[0], atOffset[1] + myOffset[1]],
343            my: options.my,
344            at: options.at,
345            within: within,
346            elem: elem
347          });
348        }
349      });
350      if (options.using) {
351        using = function using(props) {
352          var left = targetOffset.left - position.left;
353          var right = left + targetWidth - elemWidth;
354          var top = targetOffset.top - position.top;
355          var bottom = top + targetHeight - elemHeight;
356          var feedback = {
357            target: {
358              element: target,
359              left: targetOffset.left,
360              top: targetOffset.top,
361              width: targetWidth,
362              height: targetHeight
363            },
364            element: {
365              element: elem,
366              left: position.left,
367              top: position.top,
368              width: elemWidth,
369              height: elemHeight
370            },
371            horizontal: right < 0 ? 'left' : left > 0 ? 'right' : 'center',
372            vertical: bottom < 0 ? 'top' : top > 0 ? 'bottom' : 'middle'
373          };
374          if (targetWidth < elemWidth && abs(left + right) < targetWidth) {
375            feedback.horizontal = 'center';
376          }
377          if (targetHeight < elemHeight && abs(top + bottom) < targetHeight) {
378            feedback.vertical = 'middle';
379          }
380          if (max(abs(left), abs(right)) > max(abs(top), abs(bottom))) {
381            feedback.important = 'horizontal';
382          } else {
383            feedback.important = 'vertical';
384          }
385          options.using.call(this, props, feedback);
386        };
387      }
388      elem.offset($.extend(position, {
389        using: using
390      }));
391    });
392  };
393  if (!$.hasOwnProperty('ui')) {
394    $.ui = {};
395  }
396  $.ui.position = collisions;
397})(jQuery);;
398/**
399* DO NOT EDIT THIS FILE.
400* See the following change record for more information,
401* https://www.drupal.org/node/2815083
402* @preserve
403**/
404(function ($, Drupal) {
405  Drupal.theme.progressBar = function (id) {
406    return "<div id=\"".concat(id, "\" class=\"progress\" aria-live=\"polite\">") + '<div class="progress__label">&nbsp;</div>' + '<div class="progress__track"><div class="progress__bar"></div></div>' + '<div class="progress__percentage"></div>' + '<div class="progress__description">&nbsp;</div>' + '</div>';
407  };
408  Drupal.ProgressBar = function (id, updateCallback, method, errorCallback) {
409    this.id = id;
410    this.method = method || 'GET';
411    this.updateCallback = updateCallback;
412    this.errorCallback = errorCallback;
413    this.element = $(Drupal.theme('progressBar', id));
414  };
415  $.extend(Drupal.ProgressBar.prototype, {
416    setProgress: function setProgress(percentage, message, label) {
417      if (percentage >= 0 && percentage <= 100) {
418        $(this.element).find('div.progress__bar').css('width', "".concat(percentage, "%"));
419        $(this.element).find('div.progress__percentage').html("".concat(percentage, "%"));
420      }
421      $('div.progress__description', this.element).html(message);
422      $('div.progress__label', this.element).html(label);
423      if (this.updateCallback) {
424        this.updateCallback(percentage, message, this);
425      }
426    },
427    startMonitoring: function startMonitoring(uri, delay) {
428      this.delay = delay;
429      this.uri = uri;
430      this.sendPing();
431    },
432    stopMonitoring: function stopMonitoring() {
433      clearTimeout(this.timer);
434      this.uri = null;
435    },
436    sendPing: function sendPing() {
437      if (this.timer) {
438        clearTimeout(this.timer);
439      }
440      if (this.uri) {
441        var pb = this;
442        var uri = this.uri;
443        if (uri.indexOf('?') === -1) {
444          uri += '?';
445        } else {
446          uri += '&';
447        }
448        uri += '_format=json';
449        $.ajax({
450          type: this.method,
451          url: uri,
452          data: '',
453          dataType: 'json',
454          success: function success(progress) {
455            if (progress.status === 0) {
456              pb.displayError(progress.data);
457              return;
458            }
459            pb.setProgress(progress.percentage, progress.message, progress.label);
460            pb.timer = setTimeout(function () {
461              pb.sendPing();
462            }, pb.delay);
463          },
464          error: function error(xmlhttp) {
465            var e = new Drupal.AjaxError(xmlhttp, pb.uri);
466            pb.displayError("<pre>".concat(e.message, "</pre>"));
467          }
468        });
469      }
470    },
471    displayError: function displayError(string) {
472      var error = $('<div class="messages messages--error"></div>').html(string);
473      $(this.element).before(error).hide();
474      if (this.errorCallback) {
475        this.errorCallback(this);
476      }
477    }
478  });
479})(jQuery, Drupal);;
480loadjs=function(){var h=function(){},c={},u={},f={};function o(e,n){if(e){var r=f[e];if(u[e]=n,r)for(;r.length;)r[0](e,n),r.splice(0,1)}}function l(e,n){e.call&&(e={success:e}),n.length?(e.error||h)(n):(e.success||h)(e)}function d(r,t,s,i){var c,o,e=document,n=s.async,u=(s.numRetries||0)+1,f=s.before||h,l=r.replace(/[\?|#].*$/,""),a=r.replace(/^(css|img)!/,"");i=i||0,/(^css!|\.css$)/.test(l)?((o=e.createElement("link")).rel="stylesheet",o.href=a,(c="hideFocus"in o)&&o.relList&&(c=0,o.rel="preload",o.as="style")):/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(l)?(o=e.createElement("img")).src=a:((o=e.createElement("script")).src=r,o.async=void 0===n||n),!(o.onload=o.onerror=o.onbeforeload=function(e){var n=e.type[0];if(c)try{o.sheet.cssText.length||(n="e")}catch(e){18!=e.code&&(n="e")}if("e"==n){if((i+=1)<u)return d(r,t,s,i)}else if("preload"==o.rel&&"style"==o.as)return o.rel="stylesheet";t(r,n,e.defaultPrevented)})!==f(r,o)&&e.head.appendChild(o)}function r(e,n,r){var t,s;if(n&&n.trim&&(t=n),s=(t?r:n)||{},t){if(t in c)throw"LoadJS";c[t]=!0}function i(n,r){!function(e,t,n){var r,s,i=(e=e.push?e:[e]).length,c=i,o=[];for(r=function(e,n,r){if("e"==n&&o.push(e),"b"==n){if(!r)return;o.push(e)}--i||t(o)},s=0;s<c;s++)d(e[s],r,n)}(e,function(e){l(s,e),n&&l({success:n,error:r},e),o(t,e)},s)}if(s.returnPromise)return new Promise(i);i()}return r.ready=function(e,n){return function(e,r){e=e.push?e:[e];var n,t,s,i=[],c=e.length,o=c;
480for(n=function(e,n){n.length&&i.push(e),--o||r(i)};c--;)t=e[c],(s=u[t])?n(t,s):(f[t]=f[t]||[]).push(n)}(e,function(e){l(n,e)}),r},r.done=function(e){o(e,[])},r.reset=function(){c={},u={},f={}},r.isDefined=function(e){return e in c},r}();;
481/**
482* DO NOT EDIT THIS FILE.
483* See the following change record for more information,
484* https://www.drupal.org/node/2815083
485* @preserve
486**/
487(function (Drupal) {
488  Drupal.behaviors.responsiveImageAJAX = {
489    attach: function attach() {
490      if (window.picturefill) {
491        window.picturefill();
492      }
493    }
494  };
495})(Drupal);;
496/**
497* DO NOT EDIT THIS FILE.
498* See the following change record for more information,
499* https://www.drupal.org/node/2815083
500* @preserve
501**/
502function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
503function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
504function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
505function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
506function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
507function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
508(function ($, window, Drupal, drupalSettings, loadjs, _ref) {
509  var isFocusable = _ref.isFocusable,
510    tabbable = _ref.tabbable;
511  Drupal.behaviors.AJAX = {
512    attach: function attach(context, settings) {
513      function loadAjaxBehavior(base) {
514        var elementSettings = settings.ajax[base];
515        if (typeof elementSettings.selector === 'undefined') {
516          elementSettings.selector = "#".concat(base);
517        }
518        once('drupal-ajax', $(elementSettings.selector)).forEach(function (el) {
519          elementSettings.element = el;
520          elementSettings.base = base;
521          Drupal.ajax(elementSettings);
522        });
523      }
524      Object.keys(settings.ajax || {}).forEach(function (base) {
525        return loadAjaxBehavior(base);
526      });
527      Drupal.ajax.bindAjaxLinks(document.body);
528      once('ajax', '.use-ajax-submit').forEach(function (el) {
529        var elementSettings = {};
530        elementSettings.url = $(el.form).attr('action');
531        elementSettings.setClick = true;
532        elementSettings.event = 'click';
533        elementSettings.progress = {
534          type: 'throbber'
535        };
536        elementSettings.base = el.id;
537        elementSettings.element = el;
538        Drupal.ajax(elementSettings);
539      });
540    },
541    detach: function detach(context, settings, trigger) {
542      if (trigger === 'unload') {
543        Drupal.ajax.expired().forEach(function (instance) {
544          Drupal.ajax.instances[instance.instanceIndex] = null;
545        });
546      }
547    }
548  };
549  Drupal.AjaxError = function (xmlhttp, uri, customMessage) {
550    var statusCode;
551    var statusText;
552    var responseText;
553    if (xmlhttp.status) {
554      statusCode = "\n".concat(Drupal.t('An AJAX HTTP error occurred.'), "\n").concat(Drupal.t('HTTP Result Code: !status', {
555        '!status': xmlhttp.status
556      }));
557    } else {
558      statusCode = "\n".concat(Drupal.t('An AJAX HTTP request terminated abnormally.'));
559    }
560    statusCode += "\n".concat(Drupal.t('Debugging information follows.'));
561    var pathText = "\n".concat(Drupal.t('Path: !uri', {
562      '!uri': uri
563    }));
564    statusText = '';
565    try {
566      statusText = "\n".concat(Drupal.t('StatusText: !statusText', {
567        '!statusText': xmlhttp.statusText.trim()
568      }));
569    } catch (e) {}
570    responseText = '';
571    try {
572      responseText = "\n".concat(Drupal.t('ResponseText: !responseText', {
573        '!responseText': xmlhttp.responseText.trim()
574      }));
575    } catch (e) {}
576    responseText = responseText.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi, '');
577    responseText = responseText.replace(/[\n]+\s+/g, '\n');
578    var readyStateText = xmlhttp.status === 0 ? "\n".concat(Drupal.t('ReadyState: !readyState', {
579      '!readyState': xmlhttp.readyState
580    })) : '';
581    customMessage = customMessage ? "\n".concat(Drupal.t('CustomMessage: !customMessage', {
582      '!customMessage': customMessage
583    })) : '';
584    this.message = statusCode + pathText + statusText + customMessage + responseText + readyStateText;
585    this.name = 'AjaxError';
586  };
587  Drupal.AjaxError.prototype = new Error();
588  Drupal.AjaxError.prototype.constructor = Drupal.AjaxError;
589  Drupal.ajax = function (settings) {
590    if (arguments.length !== 1) {
591      throw new Error('Drupal.ajax() function must be called with one configuration object only');
592    }
593    var base = settings.base || false;
594    var element = settings.element || false;
595    delete settings.base;
596    delete settings.element;
597    if (!settings.progress && !element) {
598      settings.progress = false;
599    }
600    var ajax = new Drupal.Ajax(base, element, settings);
601    ajax.instanceIndex = Drupal.ajax.instances.length;
602    Drupal.ajax.instances.push(ajax);
603    return ajax;
604  };
605  Drupal.ajax.instances = [];
606  Drupal.ajax.expired = function () {
607    return Drupal.ajax.instances.filter(function (instance) {
608      return instance && instance.element !== false && !document.body.contains(instance.element);
609    });
610  };
611  Drupal.ajax.bindAjaxLinks = function (element) {
612    once('ajax', '.use-ajax', element).forEach(function (ajaxLink) {
613      var $linkElement = $(ajaxLink);
614      var elementSettings = {
615        progress: {
616          type: 'throbber'
617        },
618        dialogType: $linkElement.data('dialog-type'),
619        dialog: $linkElement.data('dialog-options'),
620        dialogRenderer: $linkElement.data('dialog-renderer'),
621        base: $linkElement.attr('id'),
622        element: ajaxLink
623      };
624      var href = $linkElement.attr('href');
625      if (href) {
626        elementSettings.url = href;
627        elementSettings.event = 'click';
628      }
629      Drupal.ajax(elementSettings);
630    });
631  };
632  Drupal.Ajax = function (base, element, elementSettings) {
633    var defaults = {
634      event: element ? 'mousedown' : null,
635      keypress: true,
636      selector: base ? "#".concat(base) : null,
637      effect: 'none',
638      speed: 'none',
639      method: 'replaceWith',
640      progress: {
641        type: 'throbber',
642        message: Drupal.t('Please wait...')
643      },
644      submit: {
645        js: true
646      }
647    };
648    $.extend(this, defaults, elementSettings);
649    this.commands = new Drupal.AjaxCommands();
650    this.instanceIndex = false;
651    if (this.wrapper) {
652      this.wrapper = "#".concat(this.wrapper);
653    }
654    this.element = element;
655    this.element_settings = elementSettings;
656    this.elementSettings = elementSettings;
657    if (this.element && this.element.form) {
658      this.$form = $(this.element.form);
659    }
660    if (!this.url) {
661      var $element = $(this.element);
662      if ($element.is('a')) {
663        this.url = $element.attr('href');
664      } else if (this.element && element.form) {
665        this.url = this.$form.attr('action');
666      }
667    }
668    var originalUrl = this.url;
669    this.url = this.url.replace(/\/nojs(\/|$|\?|#)/, '/ajax$1');
670    if (drupalSettings.ajaxTrustedUrl[originalUrl]) {
671      drupalSettings.ajaxTrustedUrl[this.url] = true;
672    }
673    var ajax = this;
674    ajax.options = {
675      url: ajax.url,
676      data: ajax.submit,
677      isInProgress: function isInProgress() {
678        return ajax.ajaxing;
679      },
680      beforeSerialize: function beforeSerialize(elementSettings, options) {
681        return ajax.beforeSerialize(elementSettings, options);
682      },
683      beforeSubmit: function beforeSubmit(formValues, elementSettings, options) {
684        ajax.ajaxing = true;
685        return ajax.beforeSubmit(formValues, elementSettings, options);
686      },
687      beforeSend: function beforeSend(xmlhttprequest, options) {
688        ajax.ajaxing = true;
689        return ajax.beforeSend(xmlhttprequest, options);
690      },
691      success: function success(response, status, xmlhttprequest) {
692        var _this = this;
693        if (typeof response === 'string') {
694          response = $.parseJSON(response);
695        }
696        if (response !== null && !drupalSettings.ajaxTrustedUrl[ajax.url]) {
697          if (xmlhttprequest.getResponseHeader('X-Drupal-Ajax-Token') !== '1') {
698            var customMessage = Drupal.t('The response failed verification so will not be processed.');
699            return ajax.error(xmlhttprequest, ajax.url, customMessage);
700          }
701        }
702        return Promise.resolve(ajax.success(response, status)).then(function () {
703          ajax.ajaxing = false;
704          $(document).trigger('ajaxSuccess', [xmlhttprequest, _this]);
705          $(document).trigger('ajaxComplete', [xmlhttprequest, _this]);
706          if (--$.active === 0) {
707            $(document).trigger('ajaxStop');
708          }
709        });
710      },
711      error: function error(xmlhttprequest, status, _error) {
712        ajax.ajaxing = false;
713      },
714      complete: function complete(xmlhttprequest, status) {
715        if (status === 'error' || status === 'parsererror') {
716          return ajax.error(xmlhttprequest, ajax.url);
717        }
718      },
719      dataType: 'json',
720      jsonp: false,
721      type: 'POST'
722    };
723    if (elementSettings.dialog) {
724      ajax.options.data.dialogOptions = elementSettings.dialog;
725    }
726    if (ajax.options.url.indexOf('?') === -1) {
727      ajax.options.url += '?';
728    } else {
729      ajax.options.url += '&';
730    }
731    var wrapper = "drupal_".concat(elementSettings.dialogType || 'ajax');
732    if (elementSettings.dialogRenderer) {
733      wrapper += ".".concat(elementSettings.dialogRenderer);
734    }
735    ajax.options.url += "".concat(Drupal.ajax.WRAPPER_FORMAT, "=").concat(wrapper);
736    $(ajax.element).on(elementSettings.event, function (event) {
737      if (!drupalSettings.ajaxTrustedUrl[ajax.url] && !Drupal.url.isLocal(ajax.url)) {
738        throw new Error(Drupal.t('The callback URL is not local and n
738ot trusted: !url', {
739          '!url': ajax.url
740        }));
741      }
742      return ajax.eventResponse(this, event);
743    });
744    if (elementSettings.keypress) {
745      $(ajax.element).on('keypress', function (event) {
746        return ajax.keypressResponse(this, event);
747      });
748    }
749    if (elementSettings.prevent) {
750      $(ajax.element).on(elementSettings.prevent, false);
751    }
752  };
753  Drupal.ajax.WRAPPER_FORMAT = '_wrapper_format';
754  Drupal.Ajax.AJAX_REQUEST_PARAMETER = '_drupal_ajax';
755  Drupal.Ajax.prototype.execute = function () {
756    if (this.ajaxing) {
757      return;
758    }
759    try {
760      this.beforeSerialize(this.element, this.options);
761      return $.ajax(this.options);
762    } catch (e) {
763      this.ajaxing = false;
764      window.alert("An error occurred while attempting to process ".concat(this.options.url, ": ").concat(e.message));
765      return $.Deferred().reject();
766    }
767  };
768  Drupal.Ajax.prototype.keypressResponse = function (element, event) {
769    var ajax = this;
770    if (event.which === 13 || event.which === 32 && element.type !== 'text' && element.type !== 'textarea' && element.type !== 'tel' && element.type !== 'number') {
771      event.preventDefault();
772      event.stopPropagation();
773      $(element).trigger(ajax.elementSettings.event);
774    }
775  };
776  Drupal.Ajax.prototype.eventResponse = function (element, event) {
777    event.preventDefault();
778    event.stopPropagation();
779    var ajax = this;
780    if (ajax.ajaxing) {
781      return;
782    }
783    try {
784      if (ajax.$form) {
785        if (ajax.setClick) {
786          element.form.clk = element;
787        }
788        ajax.$form.ajaxSubmit(ajax.options);
789      } else {
790        ajax.beforeSerialize(ajax.element, ajax.options);
791        $.ajax(ajax.options);
792      }
793    } catch (e) {
794      ajax.ajaxing = false;
795      window.alert("An error occurred while attempting to process ".concat(ajax.options.url, ": ").concat(e.message));
796    }
797  };
798  Drupal.Ajax.prototype.beforeSerialize = function (element, options) {
799    if (this.$form && document.body.contains(this.$form.get(0))) {
800      var settings = this.settings || drupalSettings;
801      Drupal.detachBehaviors(this.$form.get(0), settings, 'serialize');
802    }
803    options.data[Drupal.Ajax.AJAX_REQUEST_PARAMETER] = 1;
804    var pageState = drupalSettings.ajaxPageState;
805    options.data['ajax_page_state[theme]'] = pageState.theme;
806    options.data['ajax_page_state[theme_token]'] = pageState.theme_token;
807    options.data['ajax_page_state[libraries]'] = pageState.libraries;
808  };
809  Drupal.Ajax.prototype.beforeSubmit = function (formValues, element, options) {};
810  Drupal.Ajax.prototype.beforeSend = function (xmlhttprequest, options) {
811    if (this.$form) {
812      options.extraData = options.extraData || {};
813      options.extraData.ajax_iframe_upload = '1';
814      var v = $.fieldValue(this.element);
815      if (v !== null) {
816        options.extraData[this.element.name] = v;
817      }
818    }
819    $(this.element).prop('disabled', true);
820    if (!this.progress || !this.progress.type) {
821      return;
822    }
823    var progressIndicatorMethod = "setProgressIndicator".concat(this.progress.type.slice(0, 1).toUpperCase()).concat(this.progress.type.slice(1).toLowerCase());
824    if (progressIndicatorMethod in this && typeof this[progressIndicatorMethod] === 'function') {
825      this[progressIndicatorMethod].call(this);
826    }
827  };
828  Drupal.theme.ajaxProgressThrobber = function (message) {
829    var messageMarkup = typeof message === 'string' ? Drupal.theme('ajaxProgressMessage', message) : '';
830    var throbber = '<div class="throbber">&nbsp;</div>';
831    return "<div class=\"ajax-progress ajax-progress-throbber\">".concat(throbber).concat(messageMarkup, "</div>");
832  };
833  Drupal.theme.ajaxProgressIndicatorFullscreen = function () {
834    return '<div class="ajax-progress ajax-progress-fullscreen">&nbsp;</div>';
835  };
836  Drupal.theme.ajaxProgressMessage = function (message) {
837    return "<div class=\"message\">".concat(message, "</div>");
838  };
839  Drupal.theme.ajaxProgressBar = function ($element) {
840    return $('<div class="ajax-progress ajax-progress-bar"></div>').append($element);
841  };
842  Drupal.Ajax.prototype.setProgressIndicatorBar = function () {
843    var progressBar = new Drupal.ProgressBar("ajax-progress-".concat(this.element.i
843d), $.noop, this.progress.method, $.noop);
844    if (this.progress.message) {
845      progressBar.setProgress(-1, this.progress.message);
846    }
847    if (this.progress.url) {
848      progressBar.startMonitoring(this.progress.url, this.progress.interval || 1500);
849    }
850    this.progress.element = $(Drupal.theme('ajaxProgressBar', progressBar.element));
851    this.progress.object = progressBar;
852    $(this.element).after(this.progress.element);
853  };
854  Drupal.Ajax.prototype.setProgressIndicatorThrobber = function () {
855    this.progress.element = $(Drupal.theme('ajaxProgressThrobber', this.progress.message));
856    $(this.element).after(this.progress.element);
857  };
858  Drupal.Ajax.prototype.setProgressIndicatorFullscreen = function () {
859    this.progress.element = $(Drupal.theme('ajaxProgressIndicatorFullscreen'));
860    $('body').append(this.progress.element);
861  };
862  Drupal.Ajax.prototype.commandExecutionQueue = function (response, status) {
863    var _this2 = this;
864    var ajaxCommands = this.commands;
865    return Object.keys(response || {}).reduce(function (executionQueue, key) {
866      return executionQueue.then(function () {
867        var command = response[key].command;
868        if (command && ajaxCommands[command]) {
869          return ajaxCommands[command](_this2, response[key], status);
870        }
871      });
872    }, Promise.resolve());
873  };
874  Drupal.Ajax.prototype.success = function (response, status) {
875    var _this3 = this;
876    if (this.progress.element) {
877      $(this.progress.element).remove();
878    }
879    if (this.progress.object) {
880      this.progress.object.stopMonitoring();
881    }
882    $(this.element).prop('disabled', false);
883    var elementParents = $(this.element).parents('[data-drupal-selector]').addBack().toArray();
884    var focusChanged = Object.keys(response || {}).some(function (key) {
885      var _response$key = response[key],
886        command = _response$key.command,
887        method = _response$key.method;
888      return command === 'focusFirst' || command === 'invoke' && method === 'focus';
889    });
890    return this.commandExecutionQueue(response, status).then(function () {
891      if (!focusChanged && _this3.element && !$(_this3.element).data('disable-refocus')) {
892        var target = false;
893        for (var n = elementParents.length - 1; !target && n >= 0; n--) {
894          target = document.querySelector("[data-drupal-selector=\"".concat(elementParents[n].getAttribute('data-drupal-selector'), "\"]"));
895        }
896        if (target) {
897          $(target).trigger('focus');
898        }
899      }
900      if (_this3.$form && document.body.contains(_this3.$form.get(0))) {
901        var settings = _this3.settings || drupalSettings;
902        Drupal.attachBehaviors(_this3.$form.get(0), settings);
903      }
904      _this3.settings = null;
905    }).catch(function (error) {
906      return console.error(Drupal.t('An error occurred during the execution of the Ajax response: !error', {
907        '!error': error
908      }));
909    });
910  };
911  Drupal.Ajax.prototype.getEffect = function (response) {
912    var type = response.effect || this.effect;
913    var speed = response.speed || this.speed;
914    var effect = {};
915    if (type === 'none') {
916      effect.showEffect = 'show';
917      effect.hideEffect = 'hide';
918      effect.showSpeed = '';
919    } else if (type === 'fade') {
920      effect.showEffect = 'fadeIn';
921      effect.hideEffect = 'fadeOut';
922      effect.showSpeed = speed;
923    } else {
924      effect.showEffect = "".concat(type, "Toggle");
925      effect.hideEffect = "".concat(type, "Toggle");
926      effect.showSpeed = speed;
927    }
928    return effect;
929  };
930  Drupal.Ajax.prototype.error = function (xmlhttprequest, uri, customMessage) {
931    if (this.progress.element) {
932      $(this.progress.element).remove();
933    }
934    if (this.progress.object) {
935      this.progress.object.stopMonitoring();
936    }
937    $(this.wrapper).show();
938    $(this.element).prop('disabled', false);
939    if (this.$form && document.body.contains(this.$form.get(0))) {
940      var settings = this.settings || drupalSettings;
941      Drupal.attachBehaviors(this.$form.get(0), settings);
942    }
943    throw new Drupal.AjaxError(xmlhttprequest, uri, customMessage);
944  };
945  Drupal.theme.ajaxWrapperNewContent = function ($newContent, ajax, response) {
946    return (response.effect || ajax.effect) !== 'none' && $newContent.filter(function (i) {
947      return !($newContent[i].nodeName === '#comment' || $newContent[i].nodeName === '#text' && /^(\s|\n|\r)*$/.test($newContent[i].textContent));
948    }).length > 1 ? Drupal.theme('ajaxWrapperMultipleRootElements', $newContent) : $newContent;
949  };
950  Drupal.theme.ajaxWrapperMultipleRootElements = function ($elements) {
951    return $('<div></div>').append($elements);
952  };
953  Drupal.AjaxCommands = function () {};
954  Drupal.AjaxCommands.prototype = {
955    insert: function insert(ajax, response) {
956      var $wrapper = response.selector ? $(response.selector) : $(ajax.wrapper);
957      var method = response.method || ajax.method;
958      var effect = ajax.getEffect(response);
959      var settings = response.settings || ajax.settings || drupalSettings;
960      var $newContent = $($.parseHTML(response.data, document, true));
961      $newContent = Drupal.theme('ajaxWrapperNewContent', $newContent, ajax, response);
962      switch (method) {
963        case 'html':
964        case 'replaceWith':
965        case 'replaceAll':
966        case 'empty':
967        case 'remove':
968          Drupal.detachBehaviors($wrapper.get(0), settings);
969          break;
970        default:
971          break;
972      }
973      $wrapper[method]($newContent);
974      if (effect.showEffect !== 'show') {
975        $newContent.hide();
976      }
977      var $ajaxNewContent = $newContent.find('.ajax-new-content');
978      if ($ajaxNewContent.length) {
979        $ajaxNewContent.hide();
980        $newContent.show();
981        $ajaxNewContent[effect.showEffect](effect.showSpeed);
982      } else if (effect.showEffect !== 'show') {
983        $newContent[effect.showEffect](effect.showSpeed);
984      }
985      if ($newContent.parents('html').length) {
986        $newContent.each(function (index, element) {
987          if (element.nodeType === Node.ELEMENT_NODE) {
988            Drupal.attachBehaviors(element, settings);
989          }
990        });
991      }
992    },
993    remove: function remove(ajax, response, status) {
994      var settings = response.settings || ajax.settings || drupalSettings;
995      $(response.selector).each(function () {
996        Drupal.detachBehaviors(this, settings);
997      }).remove();
998    },
999    changed: function changed(ajax, response, status) {
1000      var $element = $(response.selector);
1001      if (!$element.hasClass('ajax-changed')) {
1002        $element.addClass('ajax-changed');
1003        if (response.asterisk) {
1004          $element.find(response.asterisk).append(" <abbr class=\"ajax-changed\" title=\"".concat(Drupal.t('Changed'), "\">*</abbr> "));
1005        }
1006      }
1007    },
1008    alert: function alert(ajax, response, status) {
1009      window.alert(response.text);
1010    },
1011    announce: function announce(ajax, response) {
1012      if (response.priority) {
1013        Drupal.announce(response.text, response.priority);
1014      } else {
1015        Drupal.announce(response.text);
1016      }
1017    },
1018    redirect: function redirect(ajax, response, status) {
1019      window.location = response.url;
1020    },
1021    css: function css(ajax, response, status) {
1022      $(response.selector).css(response.argument);
1023    },
1024    settings: function settings(ajax, response, status) {
1025      var ajaxSettings = drupalSettings.ajax;
1026      if (ajaxSettings) {
1027        Drupal.ajax.expired().forEach(function (instance) {
1028          if (instance.selector) {
1029            var selector = instance.selector.replace('#', '');
1030            if (selector in ajaxSettings) {
1031              delete ajaxSettings[selector];
1032            }
1033          }
1034        });
1035      }
1036      if (response.merge) {
1037        $.extend(true, drupalSettings, response.settings);
1038      } else {
1039        ajax.settings = response.settings;
1040      }
1041    },
1042    data: function data(ajax, response, status) {
1043      $(response.selector).data(response.name, response.value);
1044    },
1045    focusFirst: function focusFirst(ajax, response, status) {
1046      var focusChanged = false;
1047      var container = document.querySelector(response.selector);
1048      if (container) {
1049        var tabbableElements = tabbable(container);
1050        if (tabbableElements.length) {
1051          tabbableElements[0].focus();
1052          focusChanged = true;
1053        } else if (isFocusable(container)) {
1054          container.focus();
1055          focusChanged = true;
1056        }
1057      }
1058      if (ajax.hasOwnProperty('element') && !focusChanged) {
1059        ajax.element.focus();
1060      }
1061    },
1062    invoke: function invoke(ajax, response, status) {
1063      var $element = $(response.selector);
1064      $element[response.method].apply($element, _toConsumableArray(response.args));
1065    },
1066    restripe: function restripe(ajax, response, status) {
1067      $(response.selector).find('> tbody > tr:visible, > tr:visible').removeClass('odd even').filter(':even').addClass('odd').end().filter(':odd').addClass('even');
1068    },
1069    update_build_id: function update_build_id(ajax, response, status) {
1070      document.querySelectorAll("input[name=\"form_build_id\"][value=\"".concat(response.old, "\"]")).forEach(function (item) {
1071        item.value = response.new;
1072      });
1073    },
1074    add_css: function add_css(ajax, response, status) {
1075      $('head').prepend(response.data);
1076    },
1077    message: function message(ajax, response) {
1078      var messages = new Drupal.Message(document.querySelector(response.messageWrapperQuerySelector));
1079      if (response.clearPrevious) {
1080        messages.clear();
1081      }
1082      messages.add(response.message, response.messageOptions);
1083    },
1084    add_js: function add_js(ajax, response, status) {
1085      var parentEl = document.querySelector(response.selector || 'body');
1086      var settings = ajax.settings || drupalSettings;
1087      var allUniqueBundleIds = response.data.map(function (script) {
1088        var uniqueBundleId = script.src + ajax.instanceIndex;
1089        loadjs(script.src, uniqueBundleId, {
1090          async: false,
1091          before: function before(path, scriptEl) {
1092            Object.keys(script).forEach(function (attributeKey) {
1093              scriptEl.setAttribute(attributeKey, script[attributeKey]);
1094            });
1095            parentEl.appendChild(scriptEl);
1096            return false;
1097          }
1098        });
1099        return uniqueBundleId;
1100      });
1101      return new Promise(function (resolve, reject) {
1102        loadjs.ready(allUniqueBundleIds, {
1103          success: function success() {
1104            Drupal.attachBehaviors(parentEl, settings);
1105            resolve();
1106          },
1107          error: function error(depsNotFound) {
1108            var message = Drupal.t("The following files could not be loaded: @dependencies", {
1109              '@dependencies': depsNotFound.join(', ')
1110            });
1111            reject(message);
1112          }
1113        });
1114      });
1115    }
1116  };
1117  var stopEvent = function stopEvent(xhr, settings) {
1118    return xhr.getResponseHeader('X-Drupal-Ajax-Token') === '1' && settings.isInProgress && settings.isInProgress();
1119  };
1120  $.extend(true, $.event.special, {
1121    ajaxSuccess: {
1122      trigger: function trigger(event, xhr, settings) {
1123        if (stopEvent(xhr, settings)) {
1124          return false;
1125        }
1126      }
1127    },
1128    ajaxComplete: {
1129      trigger: function trigger(event, xhr, settings) {
1130        if (stopEvent(xhr, settings)) {
1131          $.active++;
1132          return false;
1133        }
1134      }
1135    }
1136  });
1137})(jQuery, window, Drupal, drupalSettings, loadjs, window.tabbable);;
1138/**
1139* DO NOT EDIT THIS FILE.
1140* See the following change record for more information,
1141* https://www.drupal.org/node/2815083
1142* @preserve
1143**/
1144(function (Drupal) {
1145  Drupal.theme.ajaxProgressBar = function ($element) {
1146    return $element.addClass('ajax-progress ajax-progress-bar');
1147  };
1148})(Drupal);;
1149!function(e,i,o,l){"use strict";var a=void 0,n=void 0,t="ultimenu",s="is-"+t,r=s+"-canvas",c=r+"--active",u=r+"--hiding",d=s+"-expanded",f=s+"-item-expanded",m=s+"-active",v="data-ultiajax-hit",h="hidden",C="is-flyout-expanded",y=t+"__link",g="."+t+"__ajax",p="data-ultiajax-trigger",b=r+"-off",S=r+"-on",$=r+"-backdrop",q="[data-"+t+"-button]",k=l.body;e.ultimenu={documentWidth:0,$backdrop:null,$hamburger:null,$offCanvas:null,context:function(e){return(e="length"in(e=e||document)?e[0]:e)instanceof HTMLDocument?e:document},once:function(e){var t,s=!1;return function(){return s||(s=!0,t=e.apply(this,arguments),e=null),t}},isBlazy:"dBlazy"in window,forEach:function(e,t,s){return this.isBlazy?window.dBlazy.forEac
1149h(e,t,s):e.forEach(t)},closest:function(e,t){return this.isBlazy?window.dBlazy.closest(e,t):e.closest(t)},addRemoveClass:function(t,e,s){var a=s.split(" ");e&&(e.length?this.forEach(e,function(e){e.classList[t].apply(e.classList,a)}):e.classList&&e.classList[t].apply(e.classList,a))},addClass:function(e,t){this.addRemoveClass("add",e,t)},removeClass:function(e,t){this.addRemoveClass("remove",e,t)},toggleClass:function(e,t){e&&e.classList.toggle(t)},slideToggle:function(e,t){e&&this[0===e.clientHeight?"addClass":"removeClass"](e,t)},doResizeMain:function(){function e(){t.removeClass(k,d+" "+c),t.closeFlyout()}var t=this,s=o.innerWidth||l.body.clientWidth;t.isHidden(l.querySelector(q))?e():t.addClass(k,c),s===t.documentWidth&&(t.isHidden(l.querySelector(q))?e():s!==t.documentWidth&&(t.addClass(k,d),t.isHidden(l.querySelector(q))||t.addClass(k,c)),t.documentWidth=s)},executeAjax:function(e){function t(){e.removeAttribute(p)}var s=this,a=s.closest(e,"li"),i=a.querySelector(g);i?(i.hasAttribute(v)||(i.click(),i.setAttribute(v,1),s.addClass(i,h)),o.clearTimeout(n),n=o.setTimeout(function(){(i=a.querySelector(g))?(s.removeClass(i,h),i.click()):t()},1500)):t()},triggerAjax:function(e){e.stopPropagation();e=e.target.classList.contains("caret")?this.closest(e.target,"."+y):e.target;e.hasAttribute(p)&&this.executeAjax(e)},triggerClickHamburger:function(e){e.preventDefault(),this.$hamburger&&this.$hamburger.click()},doClickHamburger:function(e){var t=this;e.preventDefault(),e.stopPropagation();var s=e.target,e=k.classList.contains(d);t[e?"removeClass":"addClass"](k,d),t[e?"removeClass":"addClass"](s,"is-ultimenu-button-active"),t.closeFlyout(),e||(o.clearTimeout(a),t.addClass(k,u),a=o.setTimeout(function(){t.removeClass(k,u)},400)),t.$backdrop&&o.scroll({top:t.$backdrop.offsetTop,behavior:"smooth"})},closeFlyout:function(){var e=l.querySelectorAll("."+m),t=l.querySelectorAll("."+f),s=l.querySelectorAll("."+C);this.removeClass(e,m),this.removeClass(t,f),this.removeClass(s,C)},isHidden:function(e){var t=!!e&&o.getComputedStyle(e);return e&&("none"===t.display||"invisible"===t.visibility)},doClickCaret:function(e){var t=this;e.preventDefault(),e.stopPropagation();var s=e.target,a=t.closest(s,"."+y),i=t.closest(a,"li"),e=a.nextElementSibling;t.isHidden(t.$hamburger)&&t.closeFlyout(),e&&e.classList.contains("ultimenu__flyout")&&(t[(s=0===e.clientHeight)?"addClass":"removeClass"](i,f),t[s?"addClass":"removeClass"](a,m),t.slideToggle(e,C))},onResize:function(e,t){return o.onresize=function(){o.clearTimeout(t),t=o.setTimeout(e,200)},e},prepare:function(){var e,t=this,s=i.ultimenu||{},a='[data-ultimenu-button="#ultimenu-main"]';k=l.body,t.$offCanvas=l.querySelector("."+b),t.$hamburger=l.querySelector(q),t.$backdrop=l.querySelector("."+$),s&&s.canvasOff&&s.canvasOn&&(null===t.$offCanvas&&(t.$offCanvas=l.querySelector(s.canvasOff),t.addClass(t.$offCanvas,b)),null===l.querySelector("."+S)&&(s=l.querySelectorAll(s.canvasOn),t.addClass(s,S))),null!==l.querySelector("body > "+a)||(e=l.querySelector(a))&&l.body.appendChild(e),null===t.$backdrop&&t.$offCanvas&&(a=t.$offCanvas.parentNode,(e=l.createElement("div")).className=$,a.insertBefore(e,a.firstElementChild||null),t.$backdrop=l.querySelector("."+$))}}}(Drupal,drupalSettings,this,this.document);
1150;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.