ctt-puro 0.54.0 → 0.55.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.
@@ -63,7 +63,9 @@ export class PuroScriptDirective {
63
63
  height_selector = slider?.find('.js-slider_fix-arrows-zone');
64
64
  }
65
65
  var height = height_selector?.offset()?.top -
66
- height_selector.parents('.relative').offset()?.top +
66
+ height_selector
67
+ .parents('.relative')
68
+ .offset()?.top +
67
69
  height_selector.outerHeight() / 2;
68
70
  arrows.css('top', height + 'px');
69
71
  }
@@ -75,15 +77,22 @@ export class PuroScriptDirective {
75
77
  })(document.querySelectorAll('.js-slider_fix-arrows'), jQuery);
76
78
  /* --- Accordion --- */
77
79
  (function (a, $) {
78
- if (a.length) {
79
- $('.js-accordion')
80
- .off('click')
81
- .on('click', function () {
82
- const tab = $(this);
83
- tab.parents('.faq__item').toggleClass('active');
84
- tab.next('.faq__content').slideToggle();
85
- });
86
- }
80
+ if (!a.length)
81
+ return;
82
+ $('.js-accordion')
83
+ .off('click')
84
+ .on('click', function () {
85
+ const tab = $(this);
86
+ const item = tab.closest('.faq__item');
87
+ const content = tab.next('.faq__content');
88
+ $('.faq__item.active')
89
+ .not(item)
90
+ .removeClass('active')
91
+ .find('.faq__content')
92
+ .slideUp();
93
+ item.toggleClass('active');
94
+ content.slideToggle();
95
+ });
87
96
  })(document.querySelectorAll('.js-accordion'), jQuery);
88
97
  /* --- Botones "Ver más / menos" --- */
89
98
  (function (a, $) {
@@ -91,7 +100,9 @@ export class PuroScriptDirective {
91
100
  $('.btn__moreLess')?.on('click', function (e) {
92
101
  e.stopImmediatePropagation();
93
102
  const button = $(this);
94
- const content = button?.closest('section')?.find('.more-content');
103
+ const content = button
104
+ ?.closest('section')
105
+ ?.find('.more-content');
95
106
  const section = button?.closest('section');
96
107
  content.slideToggle(() => {
97
108
  const isHidden = content.is(':hidden');
@@ -108,7 +119,8 @@ export class PuroScriptDirective {
108
119
  const bannerBottom = bannerTop + $banner.outerHeight();
109
120
  const viewportTop = $(window).scrollTop() ?? 0;
110
121
  const viewportBottom = viewportTop + $(window).height();
111
- if (bannerBottom <= viewportTop || bannerTop >= viewportBottom) {
122
+ if (bannerBottom <= viewportTop ||
123
+ bannerTop >= viewportBottom) {
112
124
  $('body').removeClass('t-offers toasts--open');
113
125
  }
114
126
  }
@@ -116,10 +128,14 @@ export class PuroScriptDirective {
116
128
  checkBannerVisibility();
117
129
  })(jQuery);
118
130
  /* --- Subcampos huéspedes --- */
119
- $('.js-personas-subfields').off('click').click(function () {
131
+ $('.js-personas-subfields')
132
+ .off('click')
133
+ .click(function () {
120
134
  $(this).next('.js-fieldSub').slideToggle();
121
135
  });
122
- $('.js-apply-guests').off('click').click(function () {
136
+ $('.js-apply-guests')
137
+ .off('click')
138
+ .click(function () {
123
139
  const e = $(this).parents('.banner__fieldSub'), r = parseInt($('#adult').val());
124
140
  const a = parseInt($('#child').val());
125
141
  const n = r + a;
@@ -128,7 +144,9 @@ export class PuroScriptDirective {
128
144
  .find('.banner__fieldControl')
129
145
  .text(n <= 9 ? '0' + n : n);
130
146
  });
131
- $('.js-apply-guests1').off('click').click(function () {
147
+ $('.js-apply-guests1')
148
+ .off('click')
149
+ .click(function () {
132
150
  const e = $(this).parents('.booking__fieldSub'), r = parseInt($('#adult1').val());
133
151
  const a = parseInt($('#child1').val());
134
152
  const n = r + a;
@@ -182,12 +200,19 @@ export class PuroScriptDirective {
182
200
  const viewportTop = $(window).scrollTop();
183
201
  const viewportHeight = $(window).height();
184
202
  const spaceAbove = inputOffset.top - viewportTop;
185
- const spaceBelow = viewportHeight - (spaceAbove + inputHeight);
203
+ const spaceBelow = viewportHeight -
204
+ (spaceAbove + inputHeight);
186
205
  const showAbove = spaceAbove > spaceBelow;
187
206
  $dpDiv.css({
188
207
  top: showAbove
189
- ? inputOffset.top - dpHeight - 8 + 'px'
190
- : inputOffset.top + inputHeight + 8 + 'px',
208
+ ? inputOffset.top -
209
+ dpHeight -
210
+ 8 +
211
+ 'px'
212
+ : inputOffset.top +
213
+ inputHeight +
214
+ 8 +
215
+ 'px',
191
216
  left: inputOffset.left + 'px',
192
217
  zIndex: 99999,
193
218
  });
@@ -219,12 +244,16 @@ export class PuroScriptDirective {
219
244
  });
220
245
  });
221
246
  /* --- Spotify Player --- */
222
- document.querySelectorAll('.spotifyPlayer__album').forEach((container) => {
247
+ document
248
+ .querySelectorAll('.spotifyPlayer__album')
249
+ .forEach((container) => {
223
250
  const audio = container.querySelector('.spotifyPlayer__mp3');
224
251
  const playPauseButton = container.querySelector('.spotifyPlayer__albumPlayPause');
225
252
  playPauseButton?.addEventListener('click', () => {
226
253
  if (audio?.paused) {
227
- document.querySelectorAll('.spotifyPlayer__mp3').forEach((other) => {
254
+ document
255
+ .querySelectorAll('.spotifyPlayer__mp3')
256
+ .forEach((other) => {
228
257
  if (other !== audio) {
229
258
  other.pause();
230
259
  const otherButton = other
@@ -257,4 +286,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
257
286
  type: Inject,
258
287
  args: [PLATFORM_ID]
259
288
  }] }] });
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1zY3JpcHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2RpcmVjdGl2ZXMvcHVyby1zY3JpcHQvcHVyby1zY3JpcHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQVMxRSxNQUFNLE9BQU8sbUJBQW1CO0lBRzVCLFlBQXlDLFVBQWtCO1FBQWxCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFGM0QsZUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztRQUduQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNyQjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFDaEQsSUFBSSxPQUFPLENBQUMsS0FBSyxXQUFXO1lBQUUsT0FBTztRQUVyQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osK0JBQStCO1lBQy9CLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJO2dCQUNBLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUMvQyxJQUFJLFFBQVE7b0JBQUUsV0FBVyxHQUFHLFFBQVEsQ0FBQztxQkFDaEMsSUFBSSxZQUFZLENBQUMs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OytHQWpSUSxtQkFBbUIsa0JBR1IsV0FBVzttR0FIdEIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7MEJBSWdCLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZWZmZWN0LCBpbnB1dCwgSW5qZWN0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0ZXBpY2tlckxvY2FsZVV0aWwgfSBmcm9tICcuLi8uLi91dGlscy9kYXRlcGlja2VyLWxvY2FsZS51dGlsJztcblxuZGVjbGFyZSB2YXIgJDogYW55O1xuZGVjbGFyZSB2YXIgalF1ZXJ5OiBhbnk7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3NjcmlwdExvYWRlcl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFB1cm9TY3JpcHREaXJlY3RpdmUge1xuICAgIGRhdGFMb2FkZWQgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFMb2FkZWQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZFNjcmlwdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsb2FkU2NyaXB0KCkge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiAkID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLyog8J+MkCBEZXRlY3RhciBpZGlvbWEgYWN0aXZvICovXG4gICAgICAgICAgICBsZXQgY3VycmVudExhbmcgPSAnZXMnO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYW5nQXR0ciA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nO1xuICAgICAgICAgICAgICAgIGlmIChsYW5nQXR0cikgY3VycmVudExhbmcgPSBsYW5nQXR0cjtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYW5nT2JqID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFuZ09iai5sb2NhdGUpIGN1cnJlbnRMYW5nID0gbGFuZ09iai5sb2NhdGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7fVxuXG4gICAgICAgICAgICAvLyDwn5SkIE5vcm1hbGl6YXIgY8OzZGlnbyBkZSBpZGlvbWEgKHNvcG9ydGUgZXMtRVMsIGVuLUdCLCBkZS1ERSlcbiAgICAgICAgICAgIGN1cnJlbnRMYW5nID0gKGN1cnJlbnRMYW5nLnNwbGl0KCctJylbMF0gfHwgJ2VzJykgYXMgJ2VzJyB8ICdlbicgfCAnZGUnO1xuXG4gICAgICAgICAgICAvLyDwn5eT77iPIFJlZ2lzdHJhciBsb2NhbGVzIHkgYXBsaWNhciBpZGlvbWFcbiAgICAgICAgICAgIERhdGVwaWNrZXJMb2NhbGVVdGlsLnNldExvY2FsZShEYXRlcGlja2VyTG9jYWxlVXRpbC5kZXRlY3RMYW5ndWFnZSgpKTtcblxuICAgICAgICAgICAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgICAgICAqICAgICBMw5NHSUNBIFBSSU5DSVBBTCBERSBTQ1JJUFRTXG4gICAgICAgICAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLyogLS0tIEFycm93cyBQb3NpdGlvbiBGaXggLS0tICovXG4gICAgICAgICAgICAgICAgKGZ1bmN0aW9uIChhLCAkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmpzLXNsaWRlcl9maXgtYXJyb3dzJyk/LmVhY2goZnVuY3Rpb24gKHRoaXM6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlciA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFycm93cyA9IHNsaWRlci5zaWJsaW5ncygnLmpzLXNsaWRlci1hcnJvd3MnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjYWxjX3Bvc2l0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0X3NlbGVjdG9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbmQoJy5qcy1zbGlkZXJfZml4LWFycm93cy16b25lJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lmhhc0NsYXNzKCdtb2JpbGUnKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmlubmVyV2lkdGggPD0gMTI3OVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodF9zZWxlY3RvciA9IHNsaWRlci5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuanMtc2xpZGVyX2ZpeC1hcnJvd3Mtem9uZS5tb2JpbGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maW5kKCcuanMtc2xpZGVyX2ZpeC1hcnJvd3Mtem9uZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5oYXNDbGFzcygnZGVza3RvcCcpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaW5uZXJXaWR0aCA+PSAxMjgwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0X3NlbGVjdG9yID0gc2xpZGVyPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuanMtc2xpZGVyX2ZpeC1hcnJvd3Mtem9uZS5kZXNrdG9wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodF9zZWxlY3RvciA9IHNsaWRlcj8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLmpzLXNsaWRlcl9maXgtYXJyb3dzLXpvbmUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0X3NlbGVjdG9yPy5vZmZzZXQoKT8udG9wIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodF9zZWxlY3Rvci5wYXJlbnRzKCcucmVsYXRpdmUnKS5vZmZzZXQoKT8udG9wICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodF9zZWxlY3Rvci5vdXRlckhlaWdodCgpIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dzLmNzcygndG9wJywgaGVpZ2h0ICsgJ3B4Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGNfcG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGNhbGNfcG9zaXRpb24sIDUwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh3aW5kb3cpLnNjcm9sbChjYWxjX3Bvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmpzLXNsaWRlcl9maXgtYXJyb3dzJyksIGpRdWVyeSk7XG5cbiAgICAgICAgICAgICAgICAvKiAtLS0gQWNjb3JkaW9uIC0tLSAqL1xuICAgICAgICAgICAgICAgIChmdW5jdGlvbiAoYSwgJCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5qcy1hY2NvcmRpb24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vZmYoJ2NsaWNrJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2NsaWNrJywgZnVuY3Rpb24gKHRoaXM6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYiA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYi5wYXJlbnRzKCcuZmFxX19pdGVtJykudG9nZ2xlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWIubmV4dCgnLmZhcV9fY29udGVudCcpLnNsaWRlVG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuanMtYWNjb3JkaW9uJyksIGpRdWVyeSk7XG5cblxuICAgICAgICAgICAgICAgIC8qIC0tLSBCb3RvbmVzIFwiVmVyIG3DoXMgLyBtZW5vc1wiIC0tLSAqL1xuICAgICAgICAgICAgICAgIChmdW5jdGlvbiAoYSwgJCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5idG5fX21vcmVMZXNzJyk/Lm9uKCdjbGljaycsIGZ1bmN0aW9uICh0aGlzOiBIVE1MRWxlbWVudCwgZTogRXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGJ1dHRvbj8uY2xvc2VzdCgnc2VjdGlvbicpPy5maW5kKCcubW9yZS1jb250ZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IGJ1dHRvbj8uY2xvc2VzdCgnc2VjdGlvbicpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC5zbGlkZVRvZ2dsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSGlkZGVuID0gY29udGVudC5pcygnOmhpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLnRvZ2dsZUNsYXNzKCdtb3JlTGVzcy0tYWN0aXZlJywgIWlzSGlkZGVuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmJ0bl9fbW9yZUxlc3MnKSwgalF1ZXJ5KTtcblxuICAgICAgICAgICAgICAgIC8qIC0tLSBPY3VsdGFyIHRvYXN0IGFsIGhhY2VyIHNjcm9sbCAtLS0gKi9cbiAgICAgICAgICAgICAgICAoZnVuY3Rpb24gKCQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGJhbm5lciA9ICQoJy5iYW5uZXInKTtcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tCYW5uZXJWaXNpYmlsaXR5KCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFubmVyVG9wID0gJGJhbm5lci5vZmZzZXQoKT8udG9wID8/IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYW5uZXJCb3R0b20gPSBiYW5uZXJUb3AgKyAoJGJhbm5lci5vdXRlckhlaWdodCgpIGFzIG51bWJlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydFRvcCA9ICQod2luZG93KS5zY3JvbGxUb3AoKSA/PyAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdmlld3BvcnRCb3R0b20gPSB2aWV3cG9ydFRvcCArICQod2luZG93KS5oZWlnaHQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhbm5lckJvdHRvbSA8PSB2aWV3cG9ydFRvcCB8fCBiYW5uZXJUb3AgPj0gdmlld3BvcnRCb3R0b20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdib2R5JykucmVtb3ZlQ2xhc3MoJ3Qtb2ZmZXJzIHRvYXN0cy0tb3BlbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICQod2luZG93KS5vbignc2Nyb2xsIHJlc2l6ZScsIGNoZWNrQmFubmVyVmlzaWJpbGl0eSk7XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrQmFubmVyVmlzaWJpbGl0eSgpO1xuICAgICAgICAgICAgICAgIH0pKGpRdWVyeSk7XG5cbiAgICAgICAgICAgICAgICAvKiAtLS0gU3ViY2FtcG9zIGh1w6lzcGVkZXMgLS0tICovXG4gICAgICAgICAgICAgICAgJCgnLmpzLXBlcnNvbmFzLXN1YmZpZWxkcycpLm9mZignY2xpY2snKS5jbGljayhmdW5jdGlvbiAodGhpczogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5uZXh0KCcuanMtZmllbGRTdWInKS5zbGlkZVRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgJCgnLmpzLWFwcGx5LWd1ZXN0cycpLm9mZignY2xpY2snKS5jbGljayhmdW5jdGlvbiAodGhpczogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9ICQodGhpcykucGFyZW50cygnLmJhbm5lcl9fZmllbGRTdWInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBwYXJzZUludCgkKCcjYWR1bHQnKS52YWwoKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBwYXJzZUludCgkKCcjY2hpbGQnKS52YWwoKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSByICsgYTtcbiAgICAgICAgICAgICAgICAgICAgZS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGUuc2libGluZ3MoJy5qcy1wZXJzb25hcy1zdWJmaWVsZHMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5iYW5uZXJfX2ZpZWxkQ29udHJvbCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAudGV4dChuIDw9IDkgPyAnMCcgKyBuIDogbik7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAkKCcuanMtYXBwbHktZ3Vlc3RzMScpLm9mZignY2xpY2snKS5jbGljayhmdW5jdGlvbiAodGhpczogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9ICQodGhpcykucGFyZW50cygnLmJvb2tpbmdfX2ZpZWxkU3ViJyksXG4gICAgICAgICAgICAgICAgICAgICAgICByID0gcGFyc2VJbnQoJCgnI2FkdWx0MScpLnZhbCgpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHBhcnNlSW50KCQoJyNjaGlsZDEnKS52YWwoKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSByICsgYTtcbiAgICAgICAgICAgICAgICAgICAgZS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGUuc2libGluZ3MoJy5qcy1wZXJzb25hcy1zdWJmaWVsZHMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5ib29raW5nX19maWVsZENvbnRyb2wnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQobiA8PSA5ID8gJzAnICsgbiA6IG4pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLyogLS0tIEFjdHVhbGl6YWNpw7NuIGRpbsOhbWljYSBkZSBsYWJlbHMgLS0tICovXG4gICAgICAgICAgICAgICAgJCgnLmJvb2tpbmdfX2ZpZWxkQ29udHJvbFt0eXBlPVwidGV4dFwiXScpLmVhY2goZnVuY3Rpb24gKHRoaXM6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0dmFsdWU6IGFueTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGZpZWxkSW5uZXIgPSAkKHRoaXMpLnBhcmVudHMoJy5ib29raW5nX19maWVsZElubmVyJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0dmFsdWUgPSAkZmllbGRJbm5lci5hdHRyKCdzdHlsZScpIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5vbigna2V5dXAnLCBmdW5jdGlvbiAodGhpczogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRMZW5ndGggPSAkKHRoaXMpLnZhbCgpLmxlbmd0aCAqIDEuMztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0TGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmllbGRJbm5lci5hdHRyKCdzdHlsZScsIGRlZmF1bHR2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZElubmVyLmNzcygnLS1sYWJlbExlZnRQb3NpdGlvbicsIHRleHRMZW5ndGggKyAncmVtJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAgICAgICAgICAgKiAgICAgICAgICBEQVRFUElDS0VSXG4gICAgICAgICAgICAgICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiAgICAgICAgICAgICAgICBjb25zdCBpbml0RGF0ZXBpY2tlciA9IChzZWxlY3Rvcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICQoc2VsZWN0b3IpLmVhY2goZnVuY3Rpb24gKHRoaXM6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBcGxpY2FyIGlkaW9tYSBhbnRlcyBkZSBpbmljaWFsaXphcsOnXG4gICAgICAgICAgICAgICAgICAgICAgICBEYXRlcGlja2VyTG9jYWxlVXRpbC5zZXRMb2NhbGUoRGF0ZXBpY2tlckxvY2FsZVV0aWwuZGV0ZWN0TGFuZ3VhZ2UoKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlc3RydWlyIGFudGVyaW9yIHNpIHlhIGV4aXN0w61hXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnaGFzRGF0ZXBpY2tlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5kYXRlcGlja2VyKCdkZXN0cm95Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluaWNpYWxpemFyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmRhdGVwaWNrZXIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBbmltOiAnZmFkZUluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VNb250aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VZZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dPdGhlck1vbnRoczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RPdGhlck1vbnRoczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVTaG93OiBmdW5jdGlvbiAoaW5wdXQ6IEhUTUxFbGVtZW50LCBpbnN0OiBhbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCAkaW5wdXQgPSAkKGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0T2Zmc2V0ID0gJGlucHV0Lm9mZnNldCgpITtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0SGVpZ2h0ID0gJGlucHV0Lm91dGVySGVpZ2h0KCkhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgJGRwRGl2ID0gaW5zdC5kcERpdjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZHBIZWlnaHQgPSAkZHBEaXYub3V0ZXJIZWlnaHQoKSB8fCAyNjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydFRvcCA9ICQod2luZG93KS5zY3JvbGxUb3AoKSE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKSE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFjZUFib3ZlID0gaW5wdXRPZmZzZXQudG9wIC0gdmlld3BvcnRUb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFjZUJlbG93ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydEhlaWdodCAtIChzcGFjZUFib3ZlICsgaW5wdXRIZWlnaHQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93QWJvdmUgPSBzcGFjZUFib3ZlID4gc3BhY2VCZWxvdztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRwRGl2LmNzcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBzaG93QWJvdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbnB1dE9mZnNldC50b3AgLSBkcEhlaWdodCAtIDggKyAncHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRPZmZzZXQudG9wICsgaW5wdXRIZWlnaHQgKyA4ICsgJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBpbnB1dE9mZnNldC5sZWZ0ICsgJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDk5OTk5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvLyBJbmljaWFsaXphciBkYXRlcGlja2Vyc1xuICAgICAgICAgICAgICAgIGluaXREYXRlcGlja2VyKCdbZGF0YS10b2dnbGU9XCJkYXRlcGlja2VyXCJdJyk7XG4gICAgICAgICAgICAgICAgaW5pdERhdGVwaWNrZXIoJ1tkYXRhLXRvZ2dsZT1cImRhdGVwaWNrZXIxXCJdJyk7XG5cbiAgICAgICAgICAgICAgICAvLyDwn5SBIFJlYXBsaWNhciBpZGlvbWEgY3VhbmRvIGNhbWJpZSBlbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnbGFuZ3VhZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGFuZyA9ICdlcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JqID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLmxvY2F0ZSkgbGFuZyA9IG9iai5sb2NhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmcgPSAobGFuZy5zcGxpdCgnLScpWzBdIHx8ICdlcycpIGFzICdlcycgfCAnZW4nIHwgJ2RlJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlcGlja2VyTG9jYWxlVXRpbC5zZXRMb2NhbGUoRGF0ZXBpY2tlckxvY2FsZVV0aWwuZGV0ZWN0TGFuZ3VhZ2UoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdERhdGVwaWNrZXIoJ1tkYXRhLXRvZ2dsZT1cImRhdGVwaWNrZXJcIl0nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0RGF0ZXBpY2tlcignW2RhdGEtdG9nZ2xlPVwiZGF0ZXBpY2tlcjFcIl0nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvKiAtLS0gU3BvdGlmeSBQbGF5ZXIgLS0tICovXG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc3BvdGlmeVBsYXllcl9fYWxidW0nKS5mb3JFYWNoKChjb250YWluZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhdWRpbyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuc3BvdGlmeVBsYXllcl9fbXAzJykgYXMgYW55O1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYXlQYXVzZUJ1dHRvbiA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAnLnNwb3RpZnlQbGF5ZXJfX2FsYnVtUGxheVBhdXNlJ1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBwbGF5UGF1c2VCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXVkaW8/LnBhdXNlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNwb3RpZnlQbGF5ZXJfX21wMycpLmZvckVhY2goKG90aGVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXIgIT09IGF1ZGlvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG90aGVyQnV0dG9uID0gb3RoZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuc3BvdGlmeVBsYXllcl9fYWxidW0nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5zcG90aWZ5UGxheWVyX19hbGJ1bVBsYXlQYXVzZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlckJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdwbGF5Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wbGF5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwbGF5UGF1c2VCdXR0b24uY2xhc3NMaXN0LmFkZCgncGxheScpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlQYXVzZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdwbGF5Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCAxMDApO1xuICAgIH1cbn1cbiJdfQ==
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1zY3JpcHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2RpcmVjdGl2ZXMvcHVyby1zY3JpcHQvcHVyby1zY3JpcHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQVMxRSxNQUFNLE9BQU8sbUJBQW1CO0lBRzVCLFlBQXlDLFVBQWtCO1FBQWxCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFGM0QsZUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztRQUduQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNyQjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFDaEQsSUFBSSxPQUFPLENBQUMsS0FBSyxXQUFXO1lBQUUsT0FBTztRQUVyQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osK0JBQStCO1lBQy9CLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJO2dCQUNBLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUMvQyxJQUFJLFFBQVE7b0JBQUUsV0FBVyxHQUFHLFFBQVEsQ0FBQztxQkFDaEMsSUFBSSxZQUFZLENBQUMs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LEVBQUUsQ0FBQzt3QkFDYixlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDekM7eUJBQU07d0JBQ0gsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUNkLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUM1QztnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQzsrR0F4VlEsbUJBQW1CLGtCQUdSLFdBQVc7bUdBSHRCLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OzBCQUlnQixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGVmZmVjdCwgaW5wdXQsIEluamVjdCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERhdGVwaWNrZXJMb2NhbGVVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGF0ZXBpY2tlci1sb2NhbGUudXRpbCc7XG5cbmRlY2xhcmUgdmFyICQ6IGFueTtcbmRlY2xhcmUgdmFyIGpRdWVyeTogYW55O1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tzY3JpcHRMb2FkZXJdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvU2NyaXB0RGlyZWN0aXZlIHtcbiAgICBkYXRhTG9hZGVkID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0KSB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhTG9hZGVkKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRTY3JpcHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbG9hZFNjcmlwdCgpIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgJCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIC8qIPCfjJAgRGV0ZWN0YXIgaWRpb21hIGFjdGl2byAqL1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRMYW5nID0gJ2VzJztcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFuZ0F0dHIgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZztcbiAgICAgICAgICAgICAgICBpZiAobGFuZ0F0dHIpIGN1cnJlbnRMYW5nID0gbGFuZ0F0dHI7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFuZ09iaiA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSFcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmdPYmoubG9jYXRlKSBjdXJyZW50TGFuZyA9IGxhbmdPYmoubG9jYXRlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2gge31cblxuICAgICAgICAgICAgLy8g8J+UpCBOb3JtYWxpemFyIGPDs2RpZ28gZGUgaWRpb21hIChzb3BvcnRlIGVzLUVTLCBlbi1HQiwgZGUtREUpXG4gICAgICAgICAgICBjdXJyZW50TGFuZyA9IChjdXJyZW50TGFuZy5zcGxpdCgnLScpWzBdIHx8ICdlcycpIGFzXG4gICAgICAgICAgICAgICAgfCAnZXMnXG4gICAgICAgICAgICAgICAgfCAnZW4nXG4gICAgICAgICAgICAgICAgfCAnZGUnO1xuXG4gICAgICAgICAgICAvLyDwn5eT77iPIFJlZ2lzdHJhciBsb2NhbGVzIHkgYXBsaWNhciBpZGlvbWFcbiAgICAgICAgICAgIERhdGVwaWNrZXJMb2NhbGVVdGlsLnNldExvY2FsZShcbiAgICAgICAgICAgICAgICBEYXRlcGlja2VyTG9jYWxlVXRpbC5kZXRlY3RMYW5ndWFnZSgpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAgICAgICogICAgIEzDk0dJQ0EgUFJJTkNJUEFMIERFIFNDUklQVFNcbiAgICAgICAgICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAvKiAtLS0gQXJyb3dzIFBvc2l0aW9uIEZpeCAtLS0gKi9cbiAgICAgICAgICAgICAgICAoZnVuY3Rpb24gKGEsICQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKCcuanMtc2xpZGVyX2ZpeC1hcnJvd3MnKT8uZWFjaChmdW5jdGlvbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpczogSFRNTEVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZXIgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhcnJvd3MgPSBzbGlkZXIuc2libGluZ3MoJy5qcy1zbGlkZXItYXJyb3dzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2FsY19wb3NpdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodF9zZWxlY3RvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maW5kKCcuanMtc2xpZGVyX2ZpeC1hcnJvd3Mtem9uZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5oYXNDbGFzcygnbW9iaWxlJykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5pbm5lcldpZHRoIDw9IDEyNzlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHRfc2VsZWN0b3IgPSBzbGlkZXIuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLmpzLXNsaWRlcl9maXgtYXJyb3dzLXpvbmUubW9iaWxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmluZCgnLmpzLXNsaWRlcl9maXgtYXJyb3dzLXpvbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uaGFzQ2xhc3MoJ2Rlc2t0b3AnKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmlubmVyV2lkdGggPj0gMTI4MFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodF9zZWxlY3RvciA9IHNsaWRlcj8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLmpzLXNsaWRlcl9maXgtYXJyb3dzLXpvbmUuZGVza3RvcCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHRfc2VsZWN0b3IgPSBzbGlkZXI/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5qcy1zbGlkZXJfZml4LWFycm93cy16b25lJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodF9zZWxlY3Rvcj8ub2Zmc2V0KCk/LnRvcCAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHRfc2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGFyZW50cygnLnJlbGF0aXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub2Zmc2V0KCk/LnRvcCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHRfc2VsZWN0b3Iub3V0ZXJIZWlnaHQoKSAvIDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycm93cy5jc3MoJ3RvcCcsIGhlaWdodCArICdweCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjX3Bvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChjYWxjX3Bvc2l0aW9uLCA1MDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQod2luZG93KS5zY3JvbGwoY2FsY19wb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5qcy1zbGlkZXJfZml4LWFycm93cycpLCBqUXVlcnkpO1xuXG4gICAgICAgICAgICAgICAgLyogLS0tIEFjY29yZGlvbiAtLS0gKi9cbiAgICAgICAgICAgICAgICAoZnVuY3Rpb24gKGE6IE5vZGVMaXN0T2Y8RWxlbWVudD4sICQ6IGFueSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWEubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAgICAgJCgnLmpzLWFjY29yZGlvbicpXG4gICAgICAgICAgICAgICAgICAgICAgICAub2ZmKCdjbGljaycpXG4gICAgICAgICAgICAgICAgICAgICAgICAub24oJ2NsaWNrJywgZnVuY3Rpb24gKHRoaXM6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFiID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gdGFiLmNsb3Nlc3QoJy5mYXFfX2l0ZW0nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gdGFiLm5leHQoJy5mYXFfX2NvbnRlbnQnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5mYXFfX2l0ZW0uYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5vdChpdGVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCcuZmFxX19jb250ZW50JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWRlVXAoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udG9nZ2xlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQuc2xpZGVUb2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5qcy1hY2NvcmRpb24nKSwgalF1ZXJ5KTtcblxuICAgICAgICAgICAgICAgIC8qIC0tLSBCb3RvbmVzIFwiVmVyIG3DoXMgLyBtZW5vc1wiIC0tLSAqL1xuICAgICAgICAgICAgICAgIChmdW5jdGlvbiAoYSwgJCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5idG5fX21vcmVMZXNzJyk/Lm9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGljaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHRoaXM6IEhUTUxFbGVtZW50LCBlOiBFdmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBidXR0b24gPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmNsb3Nlc3QoJ3NlY3Rpb24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maW5kKCcubW9yZS1jb250ZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlY3Rpb24gPSBidXR0b24/LmNsb3Nlc3QoJ3NlY3Rpb24nKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnNsaWRlVG9nZ2xlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSGlkZGVuID0gY29udGVudC5pcygnOmhpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi50b2dnbGVDbGFzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9yZUxlc3MtLWFjdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzSGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmJ0bl9fbW9yZUxlc3MnKSwgalF1ZXJ5KTtcblxuICAgICAgICAgICAgICAgIC8qIC0tLSBPY3VsdGFyIHRvYXN0IGFsIGhhY2VyIHNjcm9sbCAtLS0gKi9cbiAgICAgICAgICAgICAgICAoZnVuY3Rpb24gKCQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGJhbm5lciA9ICQoJy5iYW5uZXInKTtcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tCYW5uZXJWaXNpYmlsaXR5KCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFubmVyVG9wID0gJGJhbm5lci5vZmZzZXQoKT8udG9wID8/IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYW5uZXJCb3R0b20gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhbm5lclRvcCArICgkYmFubmVyLm91dGVySGVpZ2h0KCkgYXMgbnVtYmVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0VG9wID0gJCh3aW5kb3cpLnNjcm9sbFRvcCgpID8/IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydEJvdHRvbSA9IHZpZXdwb3J0VG9wICsgJCh3aW5kb3cpLmhlaWdodCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFubmVyQm90dG9tIDw9IHZpZXdwb3J0VG9wIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFubmVyVG9wID49IHZpZXdwb3J0Qm90dG9tXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdib2R5JykucmVtb3ZlQ2xhc3MoJ3Qtb2ZmZXJzIHRvYXN0cy0tb3BlbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICQod2luZG93KS5vbignc2Nyb2xsIHJlc2l6ZScsIGNoZWNrQmFubmVyVmlzaWJpbGl0eSk7XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrQmFubmVyVmlzaWJpbGl0eSgpO1xuICAgICAgICAgICAgICAgIH0pKGpRdWVyeSk7XG5cbiAgICAgICAgICAgICAgICAvKiAtLS0gU3ViY2FtcG9zIGh1w6lzcGVkZXMgLS0tICovXG4gICAgICAgICAgICAgICAgJCgnLmpzLXBlcnNvbmFzLXN1YmZpZWxkcycpXG4gICAgICAgICAgICAgICAgICAgIC5vZmYoJ2NsaWNrJylcbiAgICAgICAgICAgICAgICAgICAgLmNsaWNrKGZ1bmN0aW9uICh0aGlzOiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5uZXh0KCcuanMtZmllbGRTdWInKS5zbGlkZVRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICQoJy5qcy1hcHBseS1ndWVzdHMnKVxuICAgICAgICAgICAgICAgICAgICAub2ZmKCdjbGljaycpXG4gICAgICAgICAgICAgICAgICAgIC5jbGljayhmdW5jdGlvbiAodGhpczogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSAkKHRoaXMpLnBhcmVudHMoJy5iYW5uZXJfX2ZpZWxkU3ViJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHBhcnNlSW50KCQoJyNhZHVsdCcpLnZhbCgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBwYXJzZUludCgkKCcjY2hpbGQnKS52YWwoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gciArIGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc2libGluZ3MoJy5qcy1wZXJzb25hcy1zdWJmaWVsZHMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCcuYmFubmVyX19maWVsZENvbnRyb2wnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KG4gPD0gOSA/ICcwJyArIG4gOiBuKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAkKCcuanMtYXBwbHktZ3Vlc3RzMScpXG4gICAgICAgICAgICAgICAgICAgIC5vZmYoJ2NsaWNrJylcbiAgICAgICAgICAgICAgICAgICAgLmNsaWNrKGZ1bmN0aW9uICh0aGlzOiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9ICQodGhpcykucGFyZW50cygnLmJvb2tpbmdfX2ZpZWxkU3ViJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHBhcnNlSW50KCQoJyNhZHVsdDEnKS52YWwoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gcGFyc2VJbnQoJCgnI2NoaWxkMScpLnZhbCgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSByICsgYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5zaWJsaW5ncygnLmpzLXBlcnNvbmFzLXN1YmZpZWxkcycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5ib29raW5nX19maWVsZENvbnRyb2wnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KG4gPD0gOSA/ICcwJyArIG4gOiBuKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvKiAtLS0gQWN0dWFsaXphY2nDs24gZGluw6FtaWNhIGRlIGxhYmVscyAtLS0gKi9cbiAgICAgICAgICAgICAgICAkKCcuYm9va2luZ19fZmllbGRDb250cm9sW3R5cGU9XCJ0ZXh0XCJdJykuZWFjaChmdW5jdGlvbiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXM6IEhUTUxFbGVtZW50XG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0dmFsdWU6IGFueTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGZpZWxkSW5uZXIgPSAkKHRoaXMpLnBhcmVudHMoJy5ib29raW5nX19maWVsZElubmVyJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0dmFsdWUgPSAkZmllbGRJbm5lci5hdHRyKCdzdHlsZScpIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5vbigna2V5dXAnLCBmdW5jdGlvbiAodGhpczogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRMZW5ndGggPSAkKHRoaXMpLnZhbCgpLmxlbmd0aCAqIDEuMztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0TGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmllbGRJbm5lci5hdHRyKCdzdHlsZScsIGRlZmF1bHR2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZElubmVyLmNzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbGFiZWxMZWZ0UG9zaXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0TGVuZ3RoICsgJ3JlbSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgICAgICAgICAgICogICAgICAgICAgREFURVBJQ0tFUlxuICAgICAgICAgICAgICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4gICAgICAgICAgICAgICAgY29uc3QgaW5pdERhdGVwaWNrZXIgPSAoc2VsZWN0b3I6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAkKHNlbGVjdG9yKS5lYWNoKGZ1bmN0aW9uICh0aGlzOiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBsaWNhciBpZGlvbWEgYW50ZXMgZGUgaW5pY2lhbGl6YXLDp1xuICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZXBpY2tlckxvY2FsZVV0aWwuc2V0TG9jYWxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGVwaWNrZXJMb2NhbGVVdGlsLmRldGVjdExhbmd1YWdlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlc3RydWlyIGFudGVyaW9yIHNpIHlhIGV4aXN0w61hXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnaGFzRGF0ZXBpY2tlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5kYXRlcGlja2VyKCdkZXN0cm95Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluaWNpYWxpemFyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmRhdGVwaWNrZXIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBbmltOiAnZmFkZUluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VNb250aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VZZWFyOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dPdGhlck1vbnRoczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RPdGhlck1vbnRoczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVTaG93OiBmdW5jdGlvbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdDogYW55XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgJGlucHV0ID0gJChpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dE9mZnNldCA9ICRpbnB1dC5vZmZzZXQoKSE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dEhlaWdodCA9ICRpbnB1dC5vdXRlckhlaWdodCgpITtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0ICRkcERpdiA9IGluc3QuZHBEaXY7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRwSGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZHBEaXYub3V0ZXJIZWlnaHQoKSB8fCAyNjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydFRvcCA9ICQod2luZG93KS5zY3JvbGxUb3AoKSE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKSE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFjZUFib3ZlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dE9mZnNldC50b3AgLSB2aWV3cG9ydFRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwYWNlQmVsb3cgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdwb3J0SGVpZ2h0IC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BhY2VBYm92ZSArIGlucHV0SGVpZ2h0KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd0Fib3ZlID0gc3BhY2VBYm92ZSA+IHNwYWNlQmVsb3c7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkcERpdi5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogc2hvd0Fib3ZlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW5wdXRPZmZzZXQudG9wIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcEhlaWdodCAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0T2Zmc2V0LnRvcCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRIZWlnaHQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDggK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogaW5wdXRPZmZzZXQubGVmdCArICdweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgekluZGV4OiA5OTk5OSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgLy8gSW5pY2lhbGl6YXIgZGF0ZXBpY2tlcnNcbiAgICAgICAgICAgICAgICBpbml0RGF0ZXBpY2tlcignW2RhdGEtdG9nZ2xlPVwiZGF0ZXBpY2tlclwiXScpO1xuICAgICAgICAgICAgICAgIGluaXREYXRlcGlja2VyKCdbZGF0YS10b2dnbGU9XCJkYXRlcGlja2VyMVwiXScpO1xuXG4gICAgICAgICAgICAgICAgLy8g8J+UgSBSZWFwbGljYXIgaWRpb21hIGN1YW5kbyBjYW1iaWUgZW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ2xhbmd1YWdlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxhbmcgPSAnZXMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9iaiA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5sb2NhdGUpIGxhbmcgPSBvYmoubG9jYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nID0gKGxhbmcuc3BsaXQoJy0nKVswXSB8fCAnZXMnKSBhc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICdlcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnZW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJ2RlJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlcGlja2VyTG9jYWxlVXRpbC5zZXRMb2NhbGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGVwaWNrZXJMb2NhbGVVdGlsLmRldGVjdExhbmd1YWdlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXREYXRlcGlja2VyKCdbZGF0YS10b2dnbGU9XCJkYXRlcGlja2VyXCJdJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdERhdGVwaWNrZXIoJ1tkYXRhLXRvZ2dsZT1cImRhdGVwaWNrZXIxXCJdJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLyogLS0tIFNwb3RpZnkgUGxheWVyIC0tLSAqL1xuICAgICAgICAgICAgZG9jdW1lbnRcbiAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLnNwb3RpZnlQbGF5ZXJfX2FsYnVtJylcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoY29udGFpbmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1ZGlvID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnLnNwb3RpZnlQbGF5ZXJfX21wMydcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBhbnk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBsYXlQYXVzZUJ1dHRvbiA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgJy5zcG90aWZ5UGxheWVyX19hbGJ1bVBsYXlQYXVzZSdcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBwbGF5UGF1c2VCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1ZGlvPy5wYXVzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLnNwb3RpZnlQbGF5ZXJfX21wMycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChvdGhlcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXIgIT09IGF1ZGlvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIucGF1c2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvdGhlckJ1dHRvbiA9IG90aGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuc3BvdGlmeVBsYXllcl9fYWxidW0nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuc3BvdGlmeVBsYXllcl9fYWxidW1QbGF5UGF1c2UnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgncGxheScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wbGF5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheVBhdXNlQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ3BsYXknKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ucGF1c2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5UGF1c2VCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgncGxheScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG59XG4iXX0=
@@ -821,7 +821,9 @@ class PuroScriptDirective {
821
821
  height_selector = slider?.find('.js-slider_fix-arrows-zone');
822
822
  }
823
823
  var height = height_selector?.offset()?.top -
824
- height_selector.parents('.relative').offset()?.top +
824
+ height_selector
825
+ .parents('.relative')
826
+ .offset()?.top +
825
827
  height_selector.outerHeight() / 2;
826
828
  arrows.css('top', height + 'px');
827
829
  }
@@ -833,15 +835,22 @@ class PuroScriptDirective {
833
835
  })(document.querySelectorAll('.js-slider_fix-arrows'), jQuery);
834
836
  /* --- Accordion --- */
835
837
  (function (a, $) {
836
- if (a.length) {
837
- $('.js-accordion')
838
- .off('click')
839
- .on('click', function () {
840
- const tab = $(this);
841
- tab.parents('.faq__item').toggleClass('active');
842
- tab.next('.faq__content').slideToggle();
843
- });
844
- }
838
+ if (!a.length)
839
+ return;
840
+ $('.js-accordion')
841
+ .off('click')
842
+ .on('click', function () {
843
+ const tab = $(this);
844
+ const item = tab.closest('.faq__item');
845
+ const content = tab.next('.faq__content');
846
+ $('.faq__item.active')
847
+ .not(item)
848
+ .removeClass('active')
849
+ .find('.faq__content')
850
+ .slideUp();
851
+ item.toggleClass('active');
852
+ content.slideToggle();
853
+ });
845
854
  })(document.querySelectorAll('.js-accordion'), jQuery);
846
855
  /* --- Botones "Ver más / menos" --- */
847
856
  (function (a, $) {
@@ -849,7 +858,9 @@ class PuroScriptDirective {
849
858
  $('.btn__moreLess')?.on('click', function (e) {
850
859
  e.stopImmediatePropagation();
851
860
  const button = $(this);
852
- const content = button?.closest('section')?.find('.more-content');
861
+ const content = button
862
+ ?.closest('section')
863
+ ?.find('.more-content');
853
864
  const section = button?.closest('section');
854
865
  content.slideToggle(() => {
855
866
  const isHidden = content.is(':hidden');
@@ -866,7 +877,8 @@ class PuroScriptDirective {
866
877
  const bannerBottom = bannerTop + $banner.outerHeight();
867
878
  const viewportTop = $(window).scrollTop() ?? 0;
868
879
  const viewportBottom = viewportTop + $(window).height();
869
- if (bannerBottom <= viewportTop || bannerTop >= viewportBottom) {
880
+ if (bannerBottom <= viewportTop ||
881
+ bannerTop >= viewportBottom) {
870
882
  $('body').removeClass('t-offers toasts--open');
871
883
  }
872
884
  }
@@ -874,10 +886,14 @@ class PuroScriptDirective {
874
886
  checkBannerVisibility();
875
887
  })(jQuery);
876
888
  /* --- Subcampos huéspedes --- */
877
- $('.js-personas-subfields').off('click').click(function () {
889
+ $('.js-personas-subfields')
890
+ .off('click')
891
+ .click(function () {
878
892
  $(this).next('.js-fieldSub').slideToggle();
879
893
  });
880
- $('.js-apply-guests').off('click').click(function () {
894
+ $('.js-apply-guests')
895
+ .off('click')
896
+ .click(function () {
881
897
  const e = $(this).parents('.banner__fieldSub'), r = parseInt($('#adult').val());
882
898
  const a = parseInt($('#child').val());
883
899
  const n = r + a;
@@ -886,7 +902,9 @@ class PuroScriptDirective {
886
902
  .find('.banner__fieldControl')
887
903
  .text(n <= 9 ? '0' + n : n);
888
904
  });
889
- $('.js-apply-guests1').off('click').click(function () {
905
+ $('.js-apply-guests1')
906
+ .off('click')
907
+ .click(function () {
890
908
  const e = $(this).parents('.booking__fieldSub'), r = parseInt($('#adult1').val());
891
909
  const a = parseInt($('#child1').val());
892
910
  const n = r + a;
@@ -940,12 +958,19 @@ class PuroScriptDirective {
940
958
  const viewportTop = $(window).scrollTop();
941
959
  const viewportHeight = $(window).height();
942
960
  const spaceAbove = inputOffset.top - viewportTop;
943
- const spaceBelow = viewportHeight - (spaceAbove + inputHeight);
961
+ const spaceBelow = viewportHeight -
962
+ (spaceAbove + inputHeight);
944
963
  const showAbove = spaceAbove > spaceBelow;
945
964
  $dpDiv.css({
946
965
  top: showAbove
947
- ? inputOffset.top - dpHeight - 8 + 'px'
948
- : inputOffset.top + inputHeight + 8 + 'px',
966
+ ? inputOffset.top -
967
+ dpHeight -
968
+ 8 +
969
+ 'px'
970
+ : inputOffset.top +
971
+ inputHeight +
972
+ 8 +
973
+ 'px',
949
974
  left: inputOffset.left + 'px',
950
975
  zIndex: 99999,
951
976
  });
@@ -977,12 +1002,16 @@ class PuroScriptDirective {
977
1002
  });
978
1003
  });
979
1004
  /* --- Spotify Player --- */
980
- document.querySelectorAll('.spotifyPlayer__album').forEach((container) => {
1005
+ document
1006
+ .querySelectorAll('.spotifyPlayer__album')
1007
+ .forEach((container) => {
981
1008
  const audio = container.querySelector('.spotifyPlayer__mp3');
982
1009
  const playPauseButton = container.querySelector('.spotifyPlayer__albumPlayPause');
983
1010
  playPauseButton?.addEventListener('click', () => {
984
1011
  if (audio?.paused) {
985
- document.querySelectorAll('.spotifyPlayer__mp3').forEach((other) => {
1012
+ document
1013
+ .querySelectorAll('.spotifyPlayer__mp3')
1014
+ .forEach((other) => {
986
1015
  if (other !== audio) {
987
1016
  other.pause();
988
1017
  const otherButton = other