PageSourceSearch

https://eclinic-shinjuku.jp/wp-content/themes/eclinic-shinjuku/assets/js/base.js?ver=1772437711

js eclinic-shinjuku.jp collected 2026-10-07 03:23:37 UTC 73,639 bytes, 1,007 lines download raw bytes

1"use strict";
2
3// -------------------------------------------------------------------
4// common:電話番号リンクの制御(PCの場合はtelリンクを無効化)
5// jsTelLinkクラスを持つ、リンクタグ(aタグ)のみに有効
6// -------------------------------------------------------------------
7jQuery(document).ready(function ($) {
8  //判定モード
9  //・ユーザーエージェント判定:ua
10  //・画面幅判定:width(ua以外なら何でも)
11  var strMode = 'ua';
12  var switchTelLink = function switchTelLink() {
13    var bDisable = true;
14    switch (strMode) {
15      //ユーザーエージェント判定
16      case 'ua':
17        {
18          var ua = navigator.userAgent.toLowerCase();
19
20          //どれにも当てはまらなければ、PC(リンク無効)
21          bDisable = ua.indexOf('phone') == -1 &&
22          //iPhoneとWindows phone
23          ua.indexOf('ipad') == -1 &&
24          //iPad
25          ua.indexOf('android') == -1; //AndroidとAndroidタブレット
26
27          break;
28        }
29
30      //画面幅判定
31      default:
32        {
33          bDisable = $(window).width() > SP_MAX_WIDTH;
34          break;
35        }
36    }
37
38    //リンクを無効にする
39    if (bDisable) {
40      $('a.jsTelLink').each(function () {
41        var elmNew = $('<span/>', {
42          'class': $(this).attr('class')
43        });
44        elmNew.html($(this).html());
45        $(this).replaceWith(elmNew);
46      });
47    }
48    //リンクを有効にする
49    else {
50      $('span.jsTelLink').each(function () {
51        var elmNew = $('<a/>', {
52          'class': $(this).attr('class')
53        });
54        elmNew.html($(this).html());
55        $(this).replaceWith(elmNew);
56      });
57    }
58  };
59  switchTelLink();
60
61  //リサイズ時に実行
62  if (strMode != 'ua') {
63    $(window).on('resize', switchTelLink);
64  }
65
66});
67"use strict";
68
69function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
70function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
71function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
72function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
73function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
74function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
75// jQuery start
76jQuery(function ($) {
77  // SP 100vh(スクロールバー対策)
78  // $('.loadingLogo').css('height',$(window).height());
79
80  // Smooth scroll
81  // ページ内リンク
82  var width = $(window).width();
83  if (width <= 1023) {
84    var headerHight = 60; //ヘッダの高さ
85  } else {
86    var headerHight = 100; //ヘッダの高さ
87  }
88
89  if (!$('.single-menu').length) {
90    //あった場合の処理を書く
91
92    $('a[href^="#"]').click(function () {
93      var speed = 800;
94      var href = $(this).attr("href");
95      var target = $(href == "#" || href == "" ? 'html' : href);
96      var position = target.offset().top - headerHight;
97      $("html, body").animate({
98        scrollTop: position
99      }, speed, "swing");
100      return false;
101    });
102
103    // ページ外リンク
104    $(window).on('load', function () {
105      if (document.URL.match("#")) {
106        var str = location.href;
107        var cut_str = "#";
108        var index = str.indexOf(cut_str);
109        var href = str.slice(index);
110        var target = href;
111        var position = $(target).offset().top - headerHight;
112        $("html, body").scrollTop(position);
113        return false;
114      }
115    });
116  }
117
118  // loading Fast
119  $(document).ready(function () {
120    jQuery(".loading").addClass("active");
121  });
122
123  // loading Slow
124  // $(window).on('load', function () {
125  //   jQuery(".loading").addClass("active");
126  // });
127
128  // scroll class add
129  jQuery(window).on("load scroll resize", function () {
130    var st = jQuery(window).scrollTop();
131    var wh = jQuery(window).height();
132    var ww = jQuery(window).width();
133
134    // fast(<1) slow(>1)
135    jQuery(".fade, .fadeMask, .fadeUp, .fadeIn, fadeAnimation").each(function (i) {
136      var tg = jQuery(this).offset().top - wh * 0.9;
137      if (st > tg) {
138        jQuery(this).addClass("active");
139      }
140    });
141    jQuery(".fade-up-fast").each(function (i) {
142      var tg = jQuery(this).offset().top - wh * 0.8;
143      if (st > tg) {
144        jQuery(this).addClass("active");
145      }
146    });
147  }); // scroll class add END
148
149  // Procuct List Toggle
150  jQuery('.product__ttl').click(function () {
151    jQuery(this).delay(5000).toggleClass('open');
152    jQuery(this).next('.product__answer').slideToggle();
153  });
154  jQuery('.stockList__shop').click(function () {
155    jQuery(this).delay(5000).toggleClass('open');
156    jQuery(this).next('.stockList__info').slideToggle();
157  });
158
159  // ****************************************
160  // ハンバーガーメニュー
161  // ****************************************
162
163  jQuery(".navBar").click(function () {
164    jQuery(".navBar__line").toggleClass("active");
165    jQuery(".drawer").toggleClass("active");
166  });
167
168  // ********************************************
169  // フッター + ヘッダー アコーディオン
170  // ********************************************
171
172  if (width <= 767) {
173    jQuery(function ($) {
174      $(".footer__list").css("display", "none");
175      $(".footer__subTtl").click(function () {
176        $(".footer__subTtl").not(this).removeClass("open");
177        $(".footer__subTtl").not(this).next().slideUp(300);
178        $(this).toggleClass("open");
179        $(this).next(".footer__list").slideToggle(300);
180      });
181    });
182  }
183
184  // ****************************************
185  // トップへ戻る
186  // ****************************************
187
188  $(function () {
189    var pagetop = $(".pageTop");
190    pagetop.click(function () {
191      $("body, html").animate({
192        scrollTop: 0
193      }, 500);
194      return false;
195    });
196  });
197
198  // ****************************************
199  // stickyBtn表示
200  // ****************************************
201
202  // $(function () {
203  //   var stickyBtn = $('.stickyBtn-sp');
204  //   $(window).scroll(function () {
205  //     if ($(this).scrollTop() > 200) {
206  //       stickyBtn.addClass("active");
207  //     } else {
208  //       stickyBtn.removeClass("active");
209  //     }
210  //   });
211  // });
212
213  $('.stickyBtn-sp').addClass("active");
214
215  // ****************************************
216  // stickyMenu表示
217  // ****************************************
218
219  // $('.topKv__search').click(function () {
220  //   $('.stickyMenu').toggleClass("active");
221  // });
222
223  $(function () {
224    $('.topKv__search').click(function () {
225      $('.stickyMenu').addClass("active");
226    });
227    var pos = 0;
228    $(window).on('scroll', function () {
229      if ($(this).scrollTop() > pos) {
230        $('.stickyMenu').removeClass("active");
231      }
232      pos = $(this).scrollTop();
233    });
234  });
235
236  // ****************************************
237  // ヘッダー背景
238  // ****************************************
239
240  $(window).on("scroll", function () {
241    var scrollPosition = $(this).scrollTop();
242    var headerHeight = $(".header").innerHeight();
243    var kvHeight = $(".js-kv").outerHeight();
244
245    // if (scrollPosition > headerHeight + kvHeight) {
246    if (scrollPosition > 130) {
247      $(".header").addClass("active");
248    } else {
249      $(".header").removeClass("active");
250    }
251  });
252
253  // ****************************************
254  // 続きを読む
255  // ****************************************
256
257  $(function () {
258    var card = $(".card");
259    var textHeight = $('.card .wp-block-group').innerHeight();
260    var lineHeight = parseFloat($('.text').css('line-height'));
261    var lineNum = 4;
262    var textNewHeight = lineHeight * lineNum;
263    var windowWidthSp = $(window).width() * 400 / 375;
264    var windowWidthPc = 450;
265    var width = $(window).width();
266    console.log(textHeight);
267    console.log(card);
268
269    // card.each(function(){
270    //   if ($(this).innerHeight() > windowWidthSp){
271    //     $(this).addClass("hide");
272
273    //     $(this).click(function(){
274    //       $(this).toggleClass("is-show");
275    //     })
276    //   }
277    // })
278
279    if (width <= 1024) {
280      card.each(function () {
281        if ($(this).innerHeight() > windowWidthSp) {
282          $(this).addClass("hide");
283          $(this).click(function () {
284            $(this).toggleClass("is-show");
285          });
286        }
287      });
288    } else {
289      card.each(function () {
290        if ($(this).innerHeight() > windowWidthPc) {
291          $(this).addClass("hide");
292          $(this).click(function () {
293            $(this).toggleClass("is-show");
294          });
295        }
296      });
297    }
298
299    // if (textHeight > 350) {
300    //   // card.each(function(){
301    //   //   $(this).addClass("hide")
302    //   // })
303    //   // card.addClass("hide");
304    //   // $('.text').css({
305    //   //     'height': textNewHeight,
306    //   //     'overflow':'hidden'
307    //   //  });
308    //   // $('.readmore-btn').show();
309    //   $('.readmore-btn').click(function() {
310    //     $(this).hide();
311    //     $('.text').css({
312    //       'height': textHeight,
313    //       'overflow': 'visible'
314    //      });
315    //     return false;
316    //   });
317    // };
318  });
319
320  // ****************************************
321  // FAQのアコーディオン処理
322  // ****************************************
323
324  $(".qa__answer, .qaqnothing__answer").css("display", "none");
325  $(".qa__question, .qaqnothing__question").click(function () {
326    $(this).toggleClass("open");
327    $(this).next().slideToggle(300);
328  });
329
330  // ****************************************
331  // アコーディオン処理
332  // ****************************************
333
334  $(".js-accordion-item").css("display", "none");
335  $(".js-accordion-btn").click(function () {
336    $(this).toggleClass("open");
337    $(this).parent().toggleClass("brown");
338    $(this).parent().next().slideToggle(300);
339  });
340  $(function () {
341    //クリックで動く
342    $('.photosAll__wrapper').css("display", "none");
343    $('.photosAll__btn').click(function () {
344      $(this).toggleClass('open');
345      $(this).next('.photosAll__wrapper').slideToggle();
346    });
347  });
348
349  // ****************************************
350  // コラムカテゴリー
351  // ****************************************
352  $(function () {
353    var num = $('.columnCategory__list li').length;
354    if (num > 10) {
355      $('.columnCategory__content').addClass('hide');
356      $('.columnCategory__btn').addClass('active');
357    }
358    $('.columnCategory__btn').on('click', function () {
359      $('.columnCategory__content').toggleClass('hide');
360      $('.columnCategory__btn').toggleClass('close');
361      // $(this).find('span').toggleClass('hide');
362    });
363  });
364
365  // ****************************************
366  // photoSearch 空白削除
367  // ****************************************
368
369  $("option").html(function (i, html) {
370    return html.replace(/&nbsp;/g, '');
371  });
372  $('.photoSearch__select--category .feas_clevel_01').wrap('<span class="search-option"></span>');
373  $('.photoSearch__select--category .feas_clevel_03').wrap('<span class="search-option"></span>');
374  $("span:has(.feas_clevel_01)").addClass("no-display");
375  $("span:has(.feas_clevel_03)").addClass("no-display");
376
377  // ****************************************
378  // Slick
379  // ****************************************
380
381  // 当院推し症例写真スライダー処理
382
383  // function checkBreakPoint01() {
384  // 	let w = $(window).width();
385  // 	if (w <= 1024) {
386  // 		$('.topPicture__ranking').not('.slick-initialized').slick({
387  // 			slidesToShow: 1,
388  // 			slidesToScroll: 1,
389  // 			arrows: true,
390  // 			// autoplay: true,
391  // 			autoplaySpeed: 6000
392  // 		});
393  // 	} else {
394  // 		$('.topPicture__ranking.slick-initialized').slick('unslick');
395  // 	}
396  // }
397  // $(window).resize(function(){
398  // 	checkBreakPoint01();
399  // });
400
401  // checkBreakPoint01();
402
403  // function checkBreakPoint() {
404  // 	let w = $(window).width();
405  // 	if (w <= 1024) {
406  // 		$('.photosPickup__ranking').not('.slick-initialized').slick({
407  // 			slidesToShow: 1,
408  // 			slidesToScroll: 1,
409  // 			arrows: true,
410  // 			// autoplay: true,
411  // 			autoplaySpeed: 6000
412  // 		});
413  // 	} else {
414  // 		$('.photosPickup__ranking.slick-initialized').slick('unslick');
415  // 	}
416  // }
417  // $(window).resize(function(){
418  // 	checkBreakPoint();
419  // });
420
421  // checkBreakPoint();
422
423  // $(".topKv__slider").slick({
424  //   // autoplay: true,
425  //   autoplaySpeed: 3000,
426  //   speed: 1000,
427  //   infinite: true,
428  //   pauseOnHover: false,
429  //   slidesToShow: 5,
430  //   arrows: false,
431  //   centerMode: true,
432  //   centerPadding: "12%",
433
434  //   responsive: [
435  //     {
436  //       breakpoint: 1024, // 399px以下のサイズに適用
437
438  //       settings: {
439  //         centerPadding: "12%",
440  //         slidesToShow: 1,
441  //       },
442  //     },
443  //   ],
444  // })
445
446  // $('.topKv__slider').on('init', function(event, slick, currentSlide, nextSlide){
447  //   $('.slick-active').prev().addClass('prev');
448  //   $('.slick-active').next().addClass('next');
449  // })
450  // .on('beforeChange', function(event, slick, currentSlide, nextSlide){
451  //   // then let's do this before changing slides
452  //   $('.slick-slide').removeClass('prev next');
453  // })
454  // .on('afterChange', function(event, slick, currentSlide, nextSlide){
455  //   // finally let's do this after changing slides
456  //   $('.slick-active').prev().addClass('prev');
457  //   $('.slick-active').next().addClass('next');
458  // });
459
460  $(function () {
461    $(".topKv__slider").on("init", function (event, slick) {
462      $(this).append('<div class="topKv__numWrap"><div class="topKv__numBox"><span class="topKv__currentNum"></span><span class="topKv__allNum"></span></div></div>');
463      $(".topKv__currentNum").text("0".concat(slick.currentSlide + 1)); // 現在のスライド番号(+1が無いと0からスタートしてしまう)
464      $(".topKv__allNum").text("0".concat(slick.slideCount)); // スライドの総数
465    });
466
467    $(".topKv__slider").slick({
468      fade: true,
469      autoplay: true,
470      autoplaySpeed: 4000,
471      speed: 2500,
472      infinite: true,
473      pauseOnHover: false,
474      slidesToShow: 1,
475      arrows: true
476    }).on("beforeChange", function (event, slick, currentSlide, nextSlide) {
477      $(".topKv__currentNum").text("0".concat(nextSlide + 1)); // 現在のスライド番号の次のスライドになったら番号を+1
478    });
479  });
480
481  $(".js-kvSliderSp").slick({
482    autoplay: true,
483    autoplaySpeed: 6100,
484    speed: 1000,
485    infinite: true,
486    dots: false,
487    arrows: true,
488    centerMode: true,
489    centerPadding: '60px'
490  });
491  $(".js-kvSlider").slick({
492    autoplay: true,
493    autoplaySpeed: 6100,
494    speed: 1000,
495    infinite: true,
496    dots: false,
497    arrows: false,
498    centerMode: true,
499    centerPadding: "15%",
500    slidesToShow: 1,
501    asNavFor: ".js-kvSliderThumb",
502  });
503  $(".js-kvSliderThumb").slick({
504    autoplaySpeed: 3000,
505    speed: 1000,
506    infinite: true,
507    dots: false,
508    arrows: false,
509    slidesToShow: 15,
510    centerMode: true,
511    centerPadding: "0%",
512    asNavFor: ".js-kvSlider",
513    focusOnSelect: true,
514  });
515
516  $(".photosAll__slick").slick({
517    autoplay: true,
518    autoplaySpeed: 3000,
519    speed: 1000,
520    infinite: true,
521    pauseOnHover: false,
522    slidesToShow: 1
523  });
524  $(".slider-square").slick({
525    autoplay: true,
526    autoplaySpeed: 3000,
527    speed: 1000,
528    infinite: true,
529    pauseOnHover: false,
530    slidesToShow: 3,
531    responsive: [{
532      breakpoint: 1024,
533      // 399px以下のサイズに適用
534
535      settings: {
536        centerMode: true,
537        centerPadding: "12%",
538        arrows: false,
539        slidesToShow: 1
540      }
541    }]
542  });
543  $(".topPicture__ranking").slick({
544    autoplay: true,
545    autoplaySpeed: 3000,
546    speed: 1000,
547    infinite: true,
548    pauseOnHover: false,
549    slidesToShow: 1,
550    dots: false
551  });
552  $(".slider-basic").slick({
553    autoplay: true,
554    autoplaySpeed: 3000,
555    speed: 1000,
556    infinite: true,
557    pauseOnHover: false,
558    slidesToShow: 5,
559    // centerMode: true,
560    centerPadding: "5%",
561    dots: true,
562    responsive: [{
563      breakpoint: 1024,
564      settings: {
565        centerMode: true,
566        slidesToShow: 1,
567        centerPadding: '60px'
568      }
569    }]
570  });
571  $(".topCalendar__slick").slick({
572    autoplay: true,
573    autoplaySpeed: 3000,
574    speed: 1000,
575    infinite: true,
576    pauseOnHover: false,
577    slidesToShow: 3,
578    centerPadding: "5%",
579    dots: true,
580    responsive: [{
581      breakpoint: 1024,
582      settings: {
583        settings: "slick",
584        centerMode: false,
585        slidesToShow: 1
586      }
587    }]
588  });
589  // スライドの枚数を取得する
590  const slideLength = document.querySelectorAll('.topCalendar__slick-item').length;
591
592  // スライドが1枚だったら...
593  if (slideLength == 1) {
594    $('.topCalendar__slick').addClass('slide-one');
595  }
596  $(".others__slick").slick({
597    autoplay: true,
598    autoplaySpeed: 3000,
599    speed: 1000,
600    infinite: true,
601    slidesToShow: 1
602  });
603  $(".others__slick02").slick({
604    autoplay: true,
605    autoplaySpeed: 3000,
606    speed: 1000,
607    infinite: true,
608    slidesToShow: 1
609  });
610$(".sliderPhoto-block").slick({
611  autoplay: false,
612  autoplaySpeed: 3000,
613  speed: 1000,
614  infinite: true,
615  pauseOnHover: false,
616  slidesToShow: 3,
617  // centerMode: true,
618  // centerPadding: "5%",
619  dots: true,
620  responsive: [
621    // {
622    //   breakpoint: 1366, // 399px以下のサイズに適用
623
624    //   settings: {
625    //     slidesToShow: 3,
626    //   },
627    // },
628    {
629      breakpoint: 1024,
630      //
631
632      settings: {
633        centerMode: true,
634        slidesToShow: 1,
635        centerPadding: "10%"
636      }
637    }]
638});
639  $(function () {
640    function sliderSetting() {
641      var width = $(window).width();
642      if (width <= 1024) {
643        $('.topPicture__ranking').not('.slick-initialized').slick({
644          autoplay: true,
645          autoplaySpeed: 3000,
646          speed: 1000,
647          infinite: true,
648          pauseOnHover: false,
649          slidesToShow: 1,
650          dots: false
651        });
652      } else {
653        $('.topPicture__ranking.slick-initialized').slick('unslick');
654      }
655    }
656    sliderSetting();
657    $(window).resize(function () {
658      sliderSetting();
659    });
660  });
661
662$(".doctorPick__slider").slick({
663    autoplay: true,
664    autoplaySpeed: 3000,
665    speed: 1000,
666    infinite: true,
667    pauseOnHover: false,
668    slidesToShow: 3,
669    centerPadding: "5%",
670    dots: true,
671    responsive: [{
672      breakpoint: 1024,
673      settings: {
674        centerMode: true,
675        slidesToShow: 1,
676        centerPadding: '60px'
677      }
678    }]
679  });
680  var slideLengthDoc = document.querySelectorAll('.doctorPick__slider__item').length;
681
682  if (slideLengthDoc == 1) {
683    $('.doctorPick__slider').addClass('slide-one');
684  }
685  
686  //Instagram 続きを見る
687  // $(function () {
688  //   var min_height = 1000; //initial height.
689  //   var ani_duration = 500;
690  //   $('.topInstagram__content').each(function (index) {
691  //     if ($(this).height() > min_height + 500) {
692  //       $(this).height(min_height).append('<div class="show_more"></div>');
693  //     }
694  //   });
695
696  //   $('.show_more').click(function () {
697  //     var athis = $(this);
698  //     var show_text = athis.parent('.topInstagram__content');
699  //     var original_height = show_text.css({ height: 'auto' }).height();
700
701  //     if (show_text.hasClass('open')) {
702  //       //--CLOSE--
703  //       var scroll_offset = $("html,body").scrollTop() - original_height + min_height;
704
705  //       $("html,body").animate({ scrollTop: scroll_offset }, ani_duration);
706  //       show_text.animate({ height: min_height }, ani_duration, function () {
707  //       });
708  //       show_text.removeClass('active').removeClass('open');
709  //     } else {
710  //       //--OPEN--
711  //       show_text.height(min_height).animate({ height: original_height }, ani_duration, function () {
712  //         show_text.height('auto').addClass('open');
713  //       });
714  //       show_text.addClass('active');
715  //     }
716  //   });
717  // })
718
719  //症例写真ポップアップ
720  jQuery(function ($) {
721  const modal = $('#topPicture__modal');
722  const img = modal.find('img');
723
724  $('img.topPicture__popup').each(function (index) {
725    $(this).click(function () {
726      img.attr('src', $(this).attr('src'));
727      modal.show();
728    })
729  });
730
731  modal.click(function () {
732    $(this).hide();
733  });
734  });
735
736    // ****************************************
737  // テーブル
738  // ****************************************
739  $(function () {
740    var min_height = 200; //高さ調整
741    var ani_duration = 300; //アニメーション実行時間(ミリ秒)
742
743    $('.tb__box').each(function (index) {
744      if ($(this).height() > min_height + 230) {
745        //min_height + 50px以上になったら追加
746        $(this).height(min_height).append('<div class="tb__boxMore"></div>');
747      }
748    });
749    $('.tb__boxMore').click(function () {
750      var athis = $(this);
751      var show_text = athis.parent('.tb__box');
752      var original_height = show_text.css({
753        height: 'auto'
754      }).height();
755      if (show_text.hasClass('is-open')) {
756        //--CLOSE--
757        var scroll_offset = $("html,body").scrollTop() - original_height + min_height;
758        $("html,body").animate({
759          scrollTop: scroll_offset
760        }, ani_duration);
761        show_text.animate({
762          height: min_height
763        }, ani_duration, function () {});
764        show_text.removeClass('is-active').removeClass('is-open');
765      } else {
766        //--OPEN--
767        show_text.height(min_height).animate({
768          height: original_height
769        }, ani_duration, function () {
770          show_text.height('auto').addClass('is-open');
771        });
772        show_text.addClass('is-active');
773      }
774    });
775  });
776
777  // ****************************************
778  // TOP 施術カテゴリ アコーディオン
779  // ****************************************
780  $(function () {
781    /*タイトルをクリックすると*/
782    $(".topSearch__accordionTitle").on("click", function () {
783      /*クリックした隣の要素を開閉する*/
784      $(this).next().slideToggle(200);
785      /*タイトルにopenクラスの追加、削除を行って矢印の向きを変える*/
786      $(this).toggleClass("open", 200);
787    });
788  });
789
790  // ****************************************
791  // TOP アイコンhover
792  // ****************************************
793  document.querySelectorAll('.topInfo__link.-hover').forEach(el => {
794    const img = el.querySelector('img');
795    const defaultImg = el.dataset.default;
796    const hoverImg = el.dataset.hover;
797
798    el.addEventListener('mouseenter', () => {
799      img.src = hoverImg;
800    });
801
802    el.addEventListener('mouseleave', () => {
803      img.src = defaultImg;
804    });
805  });
806
807  const isTouch = window.matchMedia("(hover: none)").matches;
808
809  if (!isTouch) {
810    document.querySelectorAll('.topInfo__link.-hover').forEach(el => {
811      const img = el.querySelector('img');
812      const defaultImg = el.dataset.default;
813      const hoverImg = el.dataset.hover;
814
815      el.addEventListener('mouseenter', () => {
816        img.src = hoverImg;
817      });
818
819      el.addEventListener('mouseleave', () => {
820        img.src = defaultImg;
821      });
822    });
823  }
824
825});
826// jQuery End
827
828// ****************************************
829// タブ切り替え
830// ****************************************
831var TabChange = /*#__PURE__*/function () {
832  function TabChange(tab, content) {
833    _classCallCheck(this, TabChange);
834    this.tab = tab;
835    this.content = content;
836  }
837  _createClass(TabChange, [{
838    key: "tabClick",
839    value: function tabClick() {
840      var tabBtn = document.querySelectorAll(this.tab);
841      var tabContent = document.querySelectorAll(this.content);
842      for (var i = 0; i < tabBtn.length; i++) {
843        tabBtn[i].addEventListener("click", function () {
844          for (var _i = 0; _i < tabBtn.length; _i++) {
845            tabBtn[_i].classList.remove("active");
846          }
847          for (var _i2 = 0; _i2 < tabContent.length; _i2++) {
848            tabContent[_i2].classList.remove("active");
849          }
850          this.classList.add("active");
851          var arrayTabs = Array.prototype.slice.call(tabBtn);
852          var index = arrayTabs.indexOf(this);
853          tabContent[index].classList.add("active");
854        });
855      }
856    }
857  }]);
858  return TabChange;
859}();
860var topPhotoTabToggle = new TabChange(".topTreatment__btn", ".topTreatment__box");
861topPhotoTabToggle.tabClick();
862
863
864// **************
865// FullCalendar
866// **************
867document.addEventListener('DOMContentLoaded', function () {
868  // 当月
869  var calendarEl1 = document.getElementById('calendar1');
870  var calendar1 = new FullCalendar.Calendar(calendarEl1, {
871    initialView: 'dayGridMonth',
872    navLinks: false,
873    businessHours: false,
874    editable: false,
875    eventResizableFromStart: false, // イベントの開始日側のドラッグ移動を無効にする
876    eventResizableFromEnd: false, // イベントの終了日側のドラッグ移動を無効にする
877    locale: 'ja',
878    events: '[email protected]',
879    googleCalendarApiKey: 'AIzaSyD4l92kaP3fEoZbB2LB-lNJ3eiB98OqF7I',
880    eventTimeFormat: { hour: 'numeric', minute: '2-digit' },
881    eventClick: function (info) {
882      info.jsEvent.preventDefault();
883    },
884    eventDidMount: (e) => {
885      tippy(e.el, {
886        content: e.event.title,
887      });
888    },
889    // 条件によってクラス名を分岐させる場合
890    eventClassNames: function (data) {
891      if (data.event.title === '金沢本院') {
892        return ['kanazawa'];
893      } else if (data.event.title === '富山院') {
894        return ['toyama'];
895      } else if (data.event.title === '東京院') {
896        return ['tokyo'];
897      } else if (data.event.title === '大阪院') {
898        return ['osaka'];
899      }
900    },
901  });
902  calendar1.render();
903
904  // 翌月
905  var calendarEl2 = document.getElementById('calendar2');
906  var today = new Date;
907  var myYear = today.getFullYear();//年を取得
908  var myMonth = today.getMonth() + 1;//月を取得、1月が0から始まるからややこしい
909  var nextMonth = myMonth + 1;
910  if (nextMonth > 12) { nextMonth -= 12; myYear += 1; };
911  //10以下を二ケタに
912  if (nextMonth < 10) { nextMonth = "0" + nextMonth; };
913
914  //日付を出力
915  var dates1 = String(myYear) + "-" + String(nextMonth) + "-" + "01";
916  var calendar2 = new FullCalendar.Calendar(calendarEl2, {
917    initialView: 'dayGridMonth',
918    navLinks: false,
919    businessHours: false,
920    editable: false,
921    eventResizableFromStart: false, // イベントの開始日側のドラッグ移動を無効にする
922    eventResizableFromEnd: false, // イベントの終了日側のドラッグ移動を無効にする
923    locale: 'ja',
924    initialDate: dates1,
925    events: '[email protected]',
926    googleCalendarApiKey: 'AIzaSyD4l92kaP3fEoZbB2LB-lNJ3eiB98OqF7I',
927    eventTimeFormat: { hour: 'numeric', minute: '2-digit' },
928    eventClick: function (info) {
929      info.jsEvent.preventDefault();
930    },
931    eventDidMount: (e) => {
932      tippy(e.el, {
933        content: e.event.title,
934      });
935    },
936    // 条件によってクラス名を分岐させる場合
937    eventClassNames: function (data) {
938      if (data.event.title === '金沢本院') {
939        return ['kanazawa'];
940      } else if (data.event.title === '富山院') {
941        return ['toyama'];
942      } else if (data.event.title === '東京院') {
943        return ['tokyo'];
944      } else if (data.event.title === '大阪院') {
945        return ['osaka'];
946      }
947    }
948  });
949  calendar2.render();
950  // 翌々月
951  var next2Month = myMonth + 2;
952  if (next2Month > 12) {
953    next2Month -= 12;
954    if (nextMonth == 12) { myYear += 1; };
955  };
956  if (next2Month < 10) { next2Month = "0" + next2Month; };
957  var calendarEl3 = document.getElementById('calendar3');
958  var dates2 = String(myYear) + "-" + String(next2Month) + "-" + "01";
959  var calendar3 = new FullCalendar.Calendar(calendarEl3, {
960    initialView: 'dayGridMonth',
961    navLinks: false,
962    businessHours: false,
963    editable: false,
964    eventResizableFromStart: false, // イベントの開始日側のドラッグ移動を無効にする
965    eventResizableFromEnd: false, // イベントの終了日側のドラッグ移動を無効にする
966    locale: 'ja',
967    initialDate: dates2,
968    events: '[email protected]',
969    googleCalendarApiKey: 'AIzaSyD4l92kaP3fEoZbB2LB-lNJ3eiB98OqF7I',
970    eventTimeFormat: { hour: 'numeric', minute: '2-digit' },
971    eventClick: function (info) {
972      info.jsEvent.preventDefault();
973    },
974    eventDidMount: (e) => {
975      tippy(e.el, {
976        content: e.event.title,
977      });
978    },
979    // 条件によってクラス名を分岐させる場合
980    eventClassNames: function (data) {
981      if (data.event.title === '金沢本院') {
982        return ['kanazawa'];
983      } else if (data.event.title === '富山院') {
984        return ['toyama'];
985      } else if (data.event.title === '東京院') {
986        return ['tokyo'];
987      } else if (data.event.title === '大阪院') {
988        return ['osaka'];
989      }
990    }
991  });
992  calendar3.render();
993
994
995});
996
997// // scroll = class add
998// window.onscroll = function () {
999//   // go to top btn
1000//   var page_top = document.getElementById('pageTop');
1001//   if (window.pageYOffset > 800) {
1002//     page_top.classList.add("active");
1003//   } else {
1004//     page_top.classList.remove("active");
1005//   }
1006// }
1007//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9qc1RlbExpbmsuanMiLCJiYXNlLmpzIl0sIm5hbWVzIjpbImpRdWVyeSIsImRvY3VtZW50IiwicmVhZHkiLCIkIiwic3RyTW9kZSIsInN3aXRjaFRlbExpbmsiLCJiRGlzYWJsZSIsInVhIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidG9Mb3dlckNhc2UiLCJpbmRleE9mIiwid2luZG93Iiwid2lkdGgiLCJTUF9NQVhfV0lEVEgiLCJlYWNoIiwiZWxtTmV3IiwiYXR0ciIsImh0bWwiLCJyZXBsYWNlV2l0aCIsIm9uIiwiaGVhZGVySGlnaHQiLCJsZW5ndGgiLCJjbGljayIsInNwZWVkIiwiaHJlZiIsInRhcmdldCIsInBvc2l0aW9uIiwib2Zmc2V0IiwidG9wIiwiYW5pbWF0ZSIsInNjcm9sbFRvcCIsIlVSTCIsIm1hdGNoIiwic3RyIiwibG9jYXRpb24iLCJjdXRfc3RyIiwiaW5kZXgiLCJzbGljZSIsImFkZENsYXNzIiwic3QiLCJ3aCIsImhlaWdodCIsInd3IiwiaSIsInRnIiwiZGVsYXkiLCJ0b2dnbGVDbGFzcyIsIm5leHQiLCJzbGlkZVRvZ2dsZSIsImNzcyIsIm5vdCIsInJlbW92ZUNsYXNzIiwic2xpZGVVcCIsInBhZ2V0b3AiLCJzdGlja3lCdG4iLCJzY3JvbGwiLCJwb3MiLCJzY3JvbGxQb3NpdGlvbiIsImhlYWRlckhlaWdodCIsImlubmVySGVpZ2h0Iiwia3ZIZWlnaHQiLCJvdXRlckhlaWdodCIsImNhcmQiLCJ0ZXh0SGVpZ2h0IiwibGluZUhlaWdodCIsInBhcnNlRmxvYXQiLCJsaW5lTnVtIiwidGV4dE5ld0hlaWdodCIsIndpbmRvd1dpZHRoU3AiLCJ3aW5kb3dXaWR0aFBjIiwiY29uc29sZSIsImxvZyIsInBhcmVudCIsIm51bSIsInJlcGxhY2UiLCJ3cmFwIiwiZXZlbnQiLCJzbGljayIsImFwcGVuZCIsInRleHQiLCJ
1007jdXJyZW50U2xpZGUiLCJzbGlkZUNvdW50IiwiZmFkZSIsImF1dG9wbGF5IiwiYXV0b3BsYXlTcGVlZCIsImluZmluaXRlIiwicGF1c2VPbkhvdmVyIiwic2xpZGVzVG9TaG93IiwiYXJyb3dzIiwibmV4dFNsaWRlIiwicmVzcG9uc2l2ZSIsImJyZWFrcG9pbnQiLCJzZXR0aW5ncyIsImNlbnRlck1vZGUiLCJjZW50ZXJQYWRkaW5nIiwiZG90cyIsInNsaWRlclNldHRpbmciLCJyZXNpemUiLCJUYWJDaGFuZ2UiLCJ0YWIiLCJjb250ZW50IiwidGFiQnRuIiwicXVlcnlTZWxlY3RvckFsbCIsInRhYkNvbnRlbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwiYWRkIiwiYXJyYXlUYWJzIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJjYWxsIiwidG9wUGhvdG9UYWJUb2dnbGUiLCJ0YWJDbGljayJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBQSxNQUFNLENBQUNDLFFBQVEsQ0FBQyxDQUFDQyxLQUFLLENBQUMsVUFBU0MsQ0FBQyxFQUFDO0VBQ2pDO0VBQ0E7RUFDQTtFQUNBLElBQUlDLE9BQU8sR0FBRyxJQUFJO0VBR2xCLElBQUlDLGFBQWEsR0FBRyxTQUFoQkEsYUFBYSxHQUFhO0lBQzdCLElBQUlDLFFBQVEsR0FBRyxJQUFJO0lBQ25CLFFBQU9GLE9BQU87TUFDYjtNQUNBLEtBQUssSUFBSTtRQUFFO1VBQ1YsSUFBSUcsRUFBRSxHQUFHQyxTQUFTLENBQUNDLFNBQVMsQ0FBQ0MsV0FBVyxFQUFFOztVQUUxQztVQUNBSixRQUFRLEdBQUlDLEVBQUUsQ0FBQ0ksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztVQUFHO1VBQ3JDSixFQUFFLENBQUNJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7VUFBRztVQUMzQkosRUFBRSxDQUFDSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFFLENBQUMsQ0F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yxDQUFDQyxNQUFNLENBQUMsUUFBUSxDQUFDO1VBQzFDO1VBQ0EsSUFBSSxDQUFDRCxTQUFTLENBQUNFLEdBQUcsQ0FBQyxRQUFRLENBQUM7VUFDNUIsSUFBTUMsU0FBUyxHQUFHQyxLQUFLLENBQUNDLFNBQVMsQ0FBQ3pFLEtBQUssQ0FBQzBFLElBQUksQ0FBQ1YsTUFBTSxDQUFDO1VBQ3BELElBQU1qRSxLQUFLLEdBQUd3RSxTQUFTLENBQUNsRyxPQUFPLENBQUMsSUFBSSxDQUFDO1VBQ3JDNkYsVUFBVSxDQUFDbkUsS0FBSyxDQUFDLENBQUNxRSxTQUFTLENBQUNFLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDM0MsQ0FBQyxDQUFDO01BQ0o7SUFDRjtFQUFDO0VBQUE7QUFBQTtBQUdILElBQU1LLGlCQUFpQixHQUFHLElBQUlkLFNBQVMsQ0FDckMsb0JBQW9CLEVBQ3BCLG9CQUFvQixDQUNyQjtBQUVEYyxpQkFBaUIsQ0FBQ0MsUUFBUSxFQUFFOztBQUk1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJiYXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gY29tbW9u77ya6Zu76Kmx55Wq5Y+344Oq44Oz44Kv44Gu5Yi25b6hKFBD44Gu5aC05ZCI44GvdGVs44Oq44Oz44Kv44KS54Sh5Yq55YyWKVxuLy8ganNUZWxMaW5r44Kv44Op44K544KS5oyB44Gk44CB44Oq44Oz44Kv44K/44KwKGHjgr/jgrAp44Gu44G/44Gr5pyJ5Yq5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5qUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCQpe1xuXHQvL+WIpOWumuODouODvOODiVxuXHQvL+ODu+ODpuODvOOCtuODvOOCqOODvOOCuOOCp+ODs+ODiOWIpOWumu+8mnVhXG5cdC8v44O755S76Z2i5bmF5Yik5a6a77yad2lkdGgodWHku6XlpJbjgarjgonkvZXjgafjgoIpXG5cdHZhciBzdHJNb2RlID0gJ3VhJztcblxuXG5cdHZhciBzd2l0Y2hUZWxMaW5rID0gZnVuY3Rpb24oKXtcblx0XHR2YXIgYkRpc2FibGUgPSB0cnVlO1xuXHRcdHN3aXRjaChzdHJNb2RlKXtcblx0XHRcdC8v44Om44O844K244O844Ko44O844K444Kn44Oz44OI5Yik5a6aXG5cdFx0XHRjYXNlICd1YSc6IHtcblx0XHRcdFx0dmFyIHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xuXG5cdFx0XHRcdC8v44Gp44KM44Gr44KC5b2T44Gm44Gv44G+44KJ44Gq44GR44KM44Gw44CBUEMo44Oq44Oz44Kv54Sh5Yq5KVxuXHRcdFx0XHRiRGlzYWJsZSA9ICh1YS5pbmRleE9mKCdwaG9uZScpID09IC0xICYmLy9pUGhvbmXjgahXaW5kb3dzIHBob25lXG5cdFx0XHRcdFx0XHRcdHVhLmluZGV4T2YoJ2lwYWQnKSA9PSAtMSAmJi8vaVBhZFxuXHRcdFx0XHRcdFx0XHR1YS5pbmRleE9mKCdhbmRyb2lkJykgPT0gLTEpOyAvL0FuZHJvaWTjgahBbmRyb2lk44K/44OW44Os44OD44OIXG5cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdC8v55S76Z2i5bmF5Yik5a6aXG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdGJEaXNhYmxlID0gKCQod2luZG93KS53aWR0aCgpID4gU1BfTUFYX1dJRFRIKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly/jg6rjg7Pjgq/jgpLnhKHlirnjgavjgZnjgotcblx0XHRpZihiRGlzYWJsZSl7XG5cdFx0XHQkKCdhLmpzVGVsTGluaycpLmVhY2goZnVuY3Rpb24oKXtcblx0XHRcdFx0dmFyIGVsbU5ldyA9ICQoJzxzcGFuLz4nLCB7XG5cdFx0XHRcdFx0J2NsYXNzJzogJCh0aGlzKS5hdHRyKCdjbGFzcycpXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRlbG1OZXcuaHRtbCgkKHRoaXMpLmh0bWwoKSk7XG5cblx0XHRcdFx0JCh0aGlzKS5yZXBsYWNlV2l0aChlbG1OZXcpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdC8v44Oq44Oz44Kv44KS5pyJ5Yq544Gr44GZ44KLXG5cdFx0ZWxzZXtcblx0XHRcdCQoJ3NwYW4uanNUZWxMaW5rJykuZWFjaChmdW5jdGlvbigpe1xuXHRcdFx0XHR2YXIgZWxtTmV3ID0gJCgnPGEvPicsIHtcblx0XHRcdFx0XHQnY2xhc3MnOiAkKHRoaXMpLmF0dHIoJ2NsYXNzJylcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGVsbU5ldy5odG1sKCQodGhpcykuaHRtbCgpKTtcblxuXHRcdFx0XHQkKHRoaXMpLnJlcGxhY2VXaXRoKGVsbU5ldyk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH07XG5cdHN3aXRjaFRlb
1007ExpbmsoKTtcblxuXHQvL+ODquOCteOCpOOCuuaZguOBq+Wun+ihjFxuXHRpZihzdHJNb2RlICE9ICd1YScpe1xuXHRcdCQod2luZG93KS5vbigncmVzaXplJywgc3dpdGNoVGVsTGluayk7XG5cdH1cbn0pO1xuIiwiLy8galF1ZXJ5IHN0YXJ0XG5qUXVlcnkoZnVuY3Rpb24gKCQpIHtcblxuICAvLyBTUCAxMDB2aCjjgrnjgq/jg63jg7zjg6vjg5Djg7zlr77nrZYpXG4gIC8vICQoJy5sb2FkaW5nTG9nbycpLmNzcygnaGVpZ2h0JywkKHdpbmRvdykuaGVpZ2h0KCkpO1xuXG5cbiAgLy8gU21vb3RoIHNjcm9sbFxuICAvLyDjg5rjg7zjgrjlhoXjg6rjg7Pjgq9cbiAgdmFyIHdpZHRoID0gJCh3aW5kb3cpLndpZHRoKCk7XG4gIGlmICh3aWR0aCA8PSAxMDIzKSB7XG4gICAgdmFyIGhlYWRlckhpZ2h0ID0gNjA7IC8v44OY44OD44OA44Gu6auY44GVXG4gIH0gZWxzZSB7XG4gICAgdmFyIGhlYWRlckhpZ2h0ID0gMTAwOyAvL+ODmOODg+ODgOOBrumrmOOBlVxuICB9XG5cbiAgaWYoISQoJy5zaW5nbGUtbWVudScpLmxlbmd0aCApIHtcbiAgICAvL+OBguOBo+OBn+WgtOWQiOOBruWHpueQhuOCkuabuOOBj1xuXG4gICAgJCgnYVtocmVmXj1cIiNcIl0nKS5jbGljayhmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgc3BlZWQgPSA4MDA7XG4gICAgICB2YXIgaHJlZiA9ICQodGhpcykuYXR0cihcImhyZWZcIik7XG4gICAgICB2YXIgdGFyZ2V0ID0gJChocmVmID09IFwiI1wiIHx8IGhyZWYgPT0gXCJcIiA/ICdodG1sJyA6IGhyZWYpO1xuICAgICAgdmFyIHBvc2l0aW9uID0gdGFyZ2V0Lm9mZnNldCgpLnRvcCAtIGhlYWRlckhpZ2h0O1xuICAgICAgJChcImh0bWwsIGJvZHlcIikuYW5pbWF0ZSh7XG4gICAgICAgIHNjcm9sbFRvcDogcG9zaXRpb25cbiAgICAgIH0sIHNwZWVkLCBcInN3aW5nXCIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuXG4gICAgLy8g44Oa44O844K45aSW44Oq44Oz44KvXG4gICQod2luZG93KS5vbignbG9hZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZG9jdW1lbnQuVVJMLm1hdGNoKFwiI1wiKSkge1xuICAgICAgdmFyIHN0ciA9IGxvY2F0aW9uLmhyZWY7XG4gICAgICB2Y
1007XIgY3V0X3N0ciA9IFwiI1wiO1xuICAgICAgdmFyIGluZGV4ID0gc3RyLmluZGV4T2YoY3V0X3N0cik7XG4gICAgICB2YXIgaHJlZiA9IHN0ci5zbGljZShpbmRleCk7XG4gICAgICB2YXIgdGFyZ2V0ID0gaHJlZjtcbiAgICAgIHZhciBwb3NpdGlvbiA9ICQodGFyZ2V0KS5vZmZzZXQoKS50b3AgLSBoZWFkZXJIaWdodDtcbiAgICAgICQoXCJodG1sLCBib2R5XCIpLnNjcm9sbFRvcChwb3NpdGlvbik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9KTtcblxuICB9XG5cblxuXG5cblxuICAvLyBsb2FkaW5nIEZhc3RcbiAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICAgIGpRdWVyeShcIi5sb2FkaW5nXCIpLmFkZENsYXNzKFwiYWN0aXZlXCIpO1xuICB9KTtcblxuICAvLyBsb2FkaW5nIFNsb3dcbiAgLy8gJCh3aW5kb3cpLm9uKCdsb2FkJywgZnVuY3Rpb24gKCkge1xuICAvLyAgIGpRdWVyeShcIi5sb2FkaW5nXCIpLmFkZENsYXNzKFwiYWN0aXZlXCIpO1xuICAvLyB9KTtcblxuICAvLyBzY3JvbGwgY2xhc3MgYWRkXG4gIGpRdWVyeSh3aW5kb3cpLm9uKFwibG9hZCBzY3JvbGwgcmVzaXplXCIsIGZ1bmN0aW9uICgpIHtcblxuICAgIHZhciBzdCA9IGpRdWVyeSh3aW5kb3cpLnNjcm9sbFRvcCgpO1xuICAgIHZhciB3aCA9IGpRdWVyeSh3aW5kb3cpLmhlaWdodCgpO1xuICAgIHZhciB3dyA9IGpRdWVyeSh3aW5kb3cpLndpZHRoKCk7XG5cbiAgICAvLyBmYXN0KDwxKSBzbG93KD4xKVxuICAgIGpRdWVyeShcIi5mYWRlLCAuZmFkZU1hc2ssIC5mYWRlVXAsIC5mYWRlSW4sIGZhZGVBbmltYXRpb25cIikuZWFjaChmdW5jdGlvbiAoaSkge1xuICAgICAgdmFyIHRnID0galF1ZXJ5KHRoaXMpLm9mZnNldCgpLnRvcCAtIHdoICogMC45O1xuICAgICAgaWYgKHN0ID4gdGcpIHtcbiAgICAgICAgalF1ZXJ5KHRoaXMpLmFkZENsYXNzKFwiYWN0aXZlXCIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgalF1ZXJ5KFwiLmZhZGUtdXAtZmFzdFwiKS5lYWNoKGZ1bmN0aW9uIChpKSB7XG4gICAgICB2Y
1007XIgdGcgPSBqUXVlcnkodGhpcykub2Zmc2V0KCkudG9wIC0gd2ggKiAwLjg7XG4gICAgICBpZiAoc3QgPiB0Zykge1xuICAgICAgICBqUXVlcnkodGhpcykuYWRkQ2xhc3MoXCJhY3RpdmVcIik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgfSk7IC8vIHNjcm9sbCBjbGFzcyBhZGQgRU5EXG5cbiAgLy8gUHJvY3VjdCBMaXN0IFRvZ2dsZVxuICBqUXVlcnkoJy5wcm9kdWN0X190dGwnKS5jbGljayhmdW5jdGlvbiAoKSB7XG4gICAgalF1ZXJ5KHRoaXMpLmRlbGF5KDUwMDApLnRvZ2dsZUNsYXNzKCdvcGVuJyk7XG4gICAgalF1ZXJ5KHRoaXMpLm5leHQoJy5wcm9kdWN0X19hbnN3ZXInKS5zbGlkZVRvZ2dsZSgpO1xuICB9KTtcbiAgalF1ZXJ5KCcuc3RvY2tMaXN0X19zaG9wJykuY2xpY2soZnVuY3Rpb24gKCkge1xuICAgIGpRdWVyeSh0aGlzKS5kZWxheSg1MDAwKS50b2dnbGVDbGFzcygnb3BlbicpO1xuICAgIGpRdWVyeSh0aGlzKS5uZXh0KCcuc3RvY2tMaXN0X19pbmZvJykuc2xpZGVUb2dnbGUoKTtcbiAgfSk7XG5cblxuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgLy8g44OP44Oz44OQ44O844Ks44O844Oh44OL44Ol44O8XG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICBqUXVlcnkoXCIubmF2QmFyXCIpLmNsaWNrKGZ1bmN0aW9uICgpIHtcbiAgICBqUXVlcnkoXCIubmF2QmFyX19saW5lXCIpLnRvZ2dsZUNsYXNzKFwiYWN0aXZlXCIpO1xuICAgIGpRdWVyeShcIi5kcmF3ZXJcIikudG9nZ2xlQ2xhc3MoXCJhY3RpdmVcIik7XG4gIH0pO1xuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8g44OV44OD44K/44O8ICsg44OY44OD44OA44O8IOOCouOCs+ODvOODh+OCo+OCquODs1xuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuaWYgKHdpZHRoIDw9IDc2Nyl7XG5qUXVlcnkoZnVuY3Rpb24gKCQpIHtcbiAgJChcIi5mb290ZXJfX2xpc3RcIikuY3NzKFwiZGlzcGxheVwiLCBcIm5vbmVcIik7XG5cbiAgJChcIi5mb290ZXJfX3N1YlR0bFwiKS5jbGljayhmdW5jdGlvbiAoKSB7XG4gICAgJChcIi5mb290ZXJfX3N1YlR0bFwiKS5ub3QodGhpcykucmVtb3ZlQ2xhc3MoXCJvcGVuXCIpO1xuICAgICQoXCIuZm9vdGVyX19zdWJUdGxcIikubm90KHRoaXMpLm5leHQoKS5zbGlkZVVwKDMwMCk7XG4gICAgJCh0aGlzKS50b2dnbGVDbGFzcyhcIm9wZW5cIik7XG4gICAgJCh0aGlzKS5uZXh0KFwiLmZvb3Rlcl9fbGlzdFwiKS5zbGlkZVRvZ2dsZSgzMDApO1xuICB9KTtcbn0pO1xufVxuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyDjg4jjg4Pjg5fjgbjmiLvjgotcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuJChmdW5jdGlvbiAoKSB7XG4gIHZhciBwYWdldG9wID0gJChcIi5wYWdlVG9wXCIpO1xuICBwYWdldG9wLmNsaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAkKFwiYm9keSwgaHRtbFwiKS5hbmltYXRlKHtcbiAgICAgIHNjcm9sbFRvcDogMFxuICAgIH0sIDUwMCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9KTtcbn0pO1xuXG5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIHN0aWNreUJ0buihqOekulxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4kKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0aWNreUJ0biA9ICQoJy5zdGlja3lCdG4tc3AnKTtcbiAgJCh3aW5kb3cpLnNjcm9sbChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCQodGhpcykuc2Nyb2xsVG9wKCkgPiAyMDApIHtcbiAgICAgIHN0aWNreUJ0bi5hZGRDbGFzcyhcImFjdGl2ZVwiKVxuICAgIH0gZWxzZSB7XG4gICAgICBzdGlja3lCdG4ucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIilcbiAgICB9XG4gIH0pO1xufSk7XG5cblxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gc3RpY2t5TWVudeihqOekulxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4vLyAkKCcudG9wS3ZfX3NlYXJjaCcpLmNsaWNrKGZ1bmN0aW9uICgpIHtcbi8vICAgJCgnLnN0aWNreU1lbnUnKS50b2dnbGVDbGFzcyhcImFjdGl2ZVwiKTtcbi8vIH0pO1xuXG5cblxuXG5cblxuJChmdW5jdGlvbigpe1xuXG4gICQoJy50b3BLdl9fc2VhcmNoJykuY2xpY2soZnVuY3Rpb24gKCkge1xuICAgICQoJy5zdGlja3lNZW51JykuYWRkQ2xhc3MoXCJhY3RpdmVcIik7XG4gIH0pO1xuXG4gIHZhciBwb3MgPSAwO1xuICAkKHdpbmRvdykub24oJ3Njcm9sbCcsIGZ1bmN0aW9uKCl7XG4gICAgaWYoJCh0aGlzKS5zY3JvbGxUb3AoKSA+IHBvcyApe1xuICAgICAgJCgnLnN0aWNreU1lbnUnKS5yZW1vdmVDbGFzcyhcImFjdGl2ZVwiKTtcbiAgICB9XG4gICAgcG9zID0gJCh0aGlzKS5zY3JvbGxUb3AoKTtcbiAgfSk7XG5cbn0pO1xuXG5cblxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8g44OY44OD44OA44O86IOM5pmvXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiQod2luZG93KS5vbihcInNjcm9sbFwiLCBmdW5jdGlvbigpIHtcbiAgdmFyIHNjcm9sbFBvc2l0aW9uID0gJCh0aGlzKS5zY3JvbGxUb3AoKTtcbiAgdmFyIGhlYWRlckhlaWdodCA9ICQoXCIuaGVhZGVyXCIpLmlubmVySGVpZ2h0KCk7XG4gIHZhciBrdkhlaWdodCA9ICQoXCIuanMta3ZcIikub3V0ZXJIZWlnaHQoKTtcblxuICAvLyBpZiAoc2Nyb2xsUG9zaXRpb24gPiBoZWFkZXJIZWlnaHQgKyBrdkhlaWdodCkge1xuICBpZiAoc2Nyb2xsUG9zaXRpb24gPiAxMzApIHtcbiAgICAkKFwiLmhlYWRlclwiKS5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcbiAgfWVsc2V7XG4gICAgJChcIi5oZWFkZXJcIikucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIik7XG4gIH1cbn0pO1xuXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgLy8g57aa44GN44KS6Kqt44KAXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICAkKGZ1bmN0aW9uKCkge1xuICAgIGxldCBjYXJkID0gJ
1007ChcIi5jYXJkXCIpO1xuICAgIHZhciB0ZXh0SGVpZ2h0ID0gJCgnLmNhcmQgLndwLWJsb2NrLWdyb3VwJykuaW5uZXJIZWlnaHQoKTtcbiAgICB2YXIgbGluZUhlaWdodCA9IHBhcnNlRmxvYXQoJCgnLnRleHQnKS5jc3MoJ2xpbmUtaGVpZ2h0JykpO1xuICAgIHZhciBsaW5lTnVtID0gNDtcbiAgICB2YXIgdGV4dE5ld0hlaWdodCA9IGxpbmVIZWlnaHQgKiBsaW5lTnVtO1xuICAgIHZhciB3aW5kb3dXaWR0aFNwID0gJCh3aW5kb3cpLndpZHRoKCkgKiA0MDAgLyAzNzU7XG4gICAgdmFyIHdpbmRvd1dpZHRoUGMgPSA0NTA7XG4gICAgbGV0IHdpZHRoID0gJCh3aW5kb3cpLndpZHRoKCk7XG5cbiAgICBjb25zb2xlLmxvZyh0ZXh0SGVpZ2h0KVxuICAgIGNvbnNvbGUubG9nKGNhcmQpXG5cbiAgICAvLyBjYXJkLmVhY2goZnVuY3Rpb24oKXtcbiAgICAvLyAgIGlmICgkKHRoaXMpLmlubmVySGVpZ2h0KCkgPiB3aW5kb3dXaWR0aFNwKXtcbiAgICAvLyAgICAgJCh0aGlzKS5hZGRDbGFzcyhcImhpZGVcIik7XG5cbiAgICAvLyAgICAgJCh0aGlzKS5jbGljayhmdW5jdGlvbigpe1xuICAgIC8vICAgICAgICQodGhpcykudG9nZ2xlQ2xhc3MoXCJpcy1zaG93XCIpO1xuICAgIC8vICAgICB9KVxuICAgIC8vICAgfVxuICAgIC8vIH0pXG5cbiAgICBpZiAod2lkdGggPD0gMTAyNCkge1xuICAgICAgY2FyZC5lYWNoKGZ1bmN0aW9uKCl7XG4gICAgICAgIGlmICgkKHRoaXMpLmlubmVySGVpZ2h0KCkgPiB3aW5kb3dXaWR0aFNwKXtcbiAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKFwiaGlkZVwiKTtcblxuICAgICAgICAgICQodGhpcykuY2xpY2soZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICQodGhpcykudG9nZ2xlQ2xhc3MoXCJpcy1zaG93XCIpO1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcmQuZWFjaChmdW5jdGlvbigpe1xuICAgICAgICBpZiAoJCh0aGlzKS5pbm5lckhlaWdodCgpID4gd2luZG93V2lkdGhQYyl7XG4gICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcyhcImhpZGVcIik7XG5cbiAgICAgICAgICAkKHRoaXMpLmNsaWNrKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAkKHRoaXMpLnRvZ2dsZUNsYXNzKFwiaXMtc2hvd1wiKTtcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIGlmICh0ZXh0SGVpZ2h0ID4gMzUwKSB7XG4gICAgLy8gICAvLyBjYXJkLmVhY2goZnVuY3Rpb24oKXtcbiAgICAvLyAgIC8vICAgJCh0aGlzKS5hZGRDbGFzcyhcImhpZGVcIilcbiAgICAvLyAgIC8vIH0pXG4gICAgLy8gICAvLyBjYXJkLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAvLyAgIC8vICQoJy50ZXh0JykuY3NzKHtcbiAgICAvLyAgIC8vICAgICAnaGVpZ2h0JzogdGV4dE5ld0hlaWdodCxcbiAgICAvLyAgIC8vICAgICAnb3ZlcmZsb3cnOidoaWRkZW4nXG4gICAgLy8gICAvLyAgfSk7XG4gICAgLy8gICAvLyAkKCcucmVhZG1vcmUtYnRuJykuc2hvdygpO1xuICAgIC8vICAgJCgnLnJlYWRtb3JlLWJ0bicpLmNsaWNrKGZ1bmN0aW9uKCkge1xuICAgIC8vICAgICAkKHRoaXMpLmhpZGUoKTtcbiAgICAvLyAgICAgJCgnLnRleHQnKS5jc3Moe1xuICAgIC8vICAgICAgICdoZWlnaHQnOiB0ZXh0SGVpZ2h0LFxuICAgIC8vICAgICAgICdvdmVyZmxvdyc6ICd2aXNpYmxlJ1xuICAgIC8vICAgICAgfSk7XG4gICAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyAgIH0pO1xuICAgIC8vIH07XG4gIH0pO1xuXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgLy8gRkFR44Gu44Ki44Kz44O844OH44Kj44Kq44Oz5Yem55CGXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICAkKFwiLnFhX19hbnN3ZXJcIikuY3NzKFwiZGlzcGxheVwiLCBcIm5vbmVcIik7XG4gICQoXCIucWFfX3F1ZXN0aW9uXCIpLmNsaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAkKHRoaXMpLnRvZ2dsZUNsYXNzKFwib3BlblwiKTtcbiAgICAkKHRoaXMpLm5leHQoKS5zbGlkZVRvZ2dsZSgzMDApO1xuICB9KTtcblxuXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgLy8g44Ki44Kz44O844OH44Kj44Kq44Oz5Yem55CGXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICAkKFwiLmpzLWFjY29yZGlvbi1pdGVtXCIpLmNzcyhcImRpc3BsYXlcIiwgXCJub25lXCIpO1xuICAkKFwiLmpzLWFjY29yZGlvbi1idG5cIikuY2xpY2soZnVuY3Rpb24gKCkge1xuICAgICQodGhpcykudG9nZ2xlQ2xhc3MoXCJvcGVuXCIpO1xuICAgICQodGhpcykucGFyZW50KCkudG9nZ2xlQ2xhc3MoXCJicm93blwiKVxuICAgICQodGhpcykucGFyZW50KCkubmV4dCgpLnNsaWRlVG9nZ2xlKDMwMCk7XG4gIH0pO1xuXG4gICQoZnVuY3Rpb24oKXtcblx0XHQvL+OCr+ODquODg+OCr+OBp+WLleOBj1xuICAgICQoJy5waG90b3NBbGxfX3dyYXBwZXInKS5jc3MoXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcblxuXHRcdCQoJy5waG90b3NBbGxfX2J0bicpLmNsaWNrKGZ1bmN0aW9uKCl7XG5cdFx0XHQkKHRoaXMpLnRvZ2dsZUNsYXNzKCdvcGVuJyk7XG5cdFx0XHQkKHRoaXMpLm5leHQoJy5waG90b3NBbGxfX3dyYXBwZXInKS5zbGlkZVRvZ2dsZSgpO1xuXHRcdH0pO1xuXHR9KTtcblxuXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgLy8g44Kz44Op44Og44Kr44OG44K044Oq44O8XG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgJChmdW5jdGlvbigpIHtcbiAgICBsZXQgbnVtID0gJCgnLmNvbHVtbkNhdGVnb3J5X19saXN0IGxpJykubGVuZ3RoO1xuXG4gICAgaWYobnVtID4gMTApe1xuICAgICAgJCgnLmNvbHVtbkNhdGVnb3J5X19jb250ZW50JykuYWRkQ2xhc3MoJ2hpZGUnKTtcbiAgICAgICQoJy5jb2x1bW5DYXRlZ29yeV9fYnRuJykuYWRkQ2xhc3MoJ2FjdGl2ZScpO1xuICAgIH1cblxuICAgICQoJy5jb2x1bW5DYXRlZ29yeV9fYnRuJykub24oJ2NsaWNrJyxmdW5jdGlvbigpe1xuICAgICAgJCgnLmNvbHVtbkNhdGVnb3J5X19jb250ZW50JykudG9nZ2xlQ2xhc3MoJ2hpZGUnKTtcbiAgICAgICQoJy5jb2x1bW5DYXRlZ29yeV9fYnRuJykudG9nZ2xlQ2xhc3MoJ2Nsb3NlJyk7XG4gICAgICAvLyAkKHRoaXMpLmZpbmQoJ3NwYW4nKS50b2dnbGVDbGFzcygnaGlkZScpO1xuICAgIH0pO1xuICB9KTtcblxuICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAvLyBwaG90b1NlYXJjaCDnqbrnmb3liYrpmaRcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICQoXCJvcHRpb25cIikuaH
1007RtbChmdW5jdGlvbiAoaSwgaHRtbCkge1xuICAgIHJldHVybiBodG1sLnJlcGxhY2UoLyZuYnNwOy9nLCAnJyk7XG4gIH0pO1xuICAkKCcucGhvdG9TZWFyY2hfX3NlbGVjdC0tY2F0ZWdvcnkgLmZlYXNfY2xldmVsXzAxJykud3JhcCgnPHNwYW4gY2xhc3M9XCJzZWFyY2gtb3B0aW9uXCI+PC9zcGFuPicpO1xuICAkKCcucGhvdG9TZWFyY2hfX3NlbGVjdC0tY2F0ZWdvcnkgLmZlYXNfY2xldmVsXzAzJykud3JhcCgnPHNwYW4gY2xhc3M9XCJzZWFyY2gtb3B0aW9uXCI+PC9zcGFuPicpO1xuICAkKFwic3BhbjpoYXMoLmZlYXNfY2xldmVsXzAxKVwiKS5hZGRDbGFzcyhcIm5vLWRpc3BsYXlcIik7XG4gICQoXCJzcGFuOmhhcyguZmVhc19jbGV2ZWxfMDMpXCIpLmFkZENsYXNzKFwibm8tZGlzcGxheVwiKTtcblxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gU2xpY2tcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuLy8g5b2T6Zmi5o6o44GX55eH5L6L5YaZ55yf44K544Op44Kk44OA44O85Yem55CGXG5cbi8vIGZ1bmN0aW9uIGNoZWNrQnJlYWtQb2ludDAxKCkge1xuLy8gXHRsZXQgdyA9ICQod2luZG93KS53aWR0aCgpO1xuLy8gXHRpZiAodyA8PSAxMDI0KSB7XG4vLyBcdFx0JCgnLnRvcFBpY3R1cmVfX3JhbmtpbmcnKS5ub3QoJy5zbGljay1pbml0aWFsaXplZCcpLnNsaWNrKHtcbi8vIFx0XHRcdHNsaWRlc1RvU2hvdzogMSxcbi8vIFx0XHRcdHNsaWRlc1RvU2Nyb2xsOiAxLFxuLy8gXHRcdFx0YXJyb3dzOiB0cnVlLFxuLy8gXHRcdFx0Ly8gYXV0b3BsYXk6IHRydWUsXG4vLyBcdFx0XHRhdXRvcGxheVNwZWVkOiA2MDAwXG4vLyBcdFx0fSk7XG4vLyBcdH0gZWxzZSB7XG4vLyBcdFx0JCgnLnRvcFBpY3R1cmVfX3Jhbmtpbmcuc2xpY2staW5pdGlhbGl6ZWQnKS5zbGljaygndW5zbGljaycpO1xuLy8gXHR9XG4vLyB9XG4vLyAkKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uKCl7XG4vLyBcdGNoZWNrQnJlYWtQb2ludDAxKCk7XG4vLyB9KTtcblxuLy8gY2hlY2tCcmVha1BvaW50MDEoKTtcblxuLy8gZnVuY3Rpb24gY2hlY2tCcmVha1BvaW50KCkge1xuLy8gXHRsZXQgdyA9ICQod2luZG93KS53aWR0aCgpO1xuLy8gXHRpZiAodyA8PSAxMDI0KSB7XG4vLyBcdFx0JCgnLnBob3Rvc1BpY2t1cF9fcmFua2luZycpLm5vdCgnLnNsaWNrLWluaXRpYWxpemVkJykuc2xpY2soe1xuLy8gXHRcdFx0c2xpZGVzVG9TaG93OiAxLFxuLy8gXHRcdFx0c2xpZGVzVG9TY3JvbGw6IDEsXG4vLyBcdFx0XHRhcnJvd3M6IHRydWUsXG4vLyBcdFx0XHQvLyBhdXRvcGxheTogdHJ1ZSxcbi8vIFx0XHRcdGF1dG9wbGF5U3BlZWQ6IDYwMDBcbi8vIFx0XHR9KTtcbi8vIFx0fSBlbHNlIHtcbi8vIFx0XHQkKCcucGhvdG9zUGlja3VwX19yYW5raW5nLnNsaWNrLWluaXRpYWxpemVkJykuc2xpY2soJ3Vuc2xpY2snKTtcbi8vIFx0fVxuLy8gfVxuLy8gJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpe1xuLy8gXHRjaGVja0JyZWFrUG9pbnQoKTtcbi8vIH0pO1xuXG4vLyBjaGVja0JyZWFrUG9pbnQoKTtcblxuLy8gJChcIi50b3BLdl9fc2xpZGVyXCIpLnNsaWNrKHtcbi8vICAgLy8gYXV0b3BsYXk6IHRydWUsXG4vLyAgIGF1dG9wbGF5U3BlZWQ6IDMwMDAsXG4vLyAgIHNwZWVkOiAxMDAwLFxuLy8gICBpbmZpbml0ZTogdHJ1ZSxcbi8vICAgcGF1c2VPbkhvdmVyOiBmYWxzZSxcbi8vICAgc2xpZGVzVG9TaG93OiA1LFxuLy8gICBhcnJvd3M6IGZhbHNlLFxuLy8gICBjZW50ZXJNb2RlOiB0cnVlLFxuLy8gICBjZW50ZXJQYWRkaW5nOiBcIjEyJVwiLFxuXG4vLyAgIHJlc3BvbnNpdmU6IFtcbi8vICAgICB7XG4vLyAgICAgICBicmVha3BvaW50OiAxMDI0LCAvLyAzOTlweOS7peS4i+OBruOCteOCpOOCuuOBq+mBqeeUqFxuXG4vLyAgICAgICBzZXR0aW5nczoge1xuLy8gICAgICAgICBjZW50ZXJQYWRkaW5nOiBcIjEyJVwiLFxuLy8gICAgICAgICBzbGlkZXNUb1Nob3c6IDEsXG4vLyAgICAgICB9LFxuLy8gICAgIH0sXG4vLyAgIF0sXG4vLyB9KVxuXG5cbi8vICQoJy50b3BLdl9fc2xpZGVyJykub24oJ2luaXQnLCBmdW5jdGlvbihldmVudCwgc2xpY2ssIGN1cnJlbnRTbGlkZSwgbmV4dFNsaWRlKXtcbi8vICAgJCgnLnNsaWNrLWFjdGl2ZScpLnByZXYoKS5hZGRDbGFzcygncHJldicpO1xuLy8gICAkKCcuc2xpY2stYWN0aXZlJykubmV4dCgpLmFkZENsYXNzKCduZXh0Jyk7XG4vLyB9KVxuLy8gLm9uKCdiZWZvcmVDaGFuZ2UnLCBmdW5jdGlvbihldmVudCwgc2xpY2ssIGN1cnJlbnRTbGlkZSwgbmV4dFNsaWRlKXtcbi8vICAgLy8gdGhlbiBsZXQncyBkbyB0aGlzIGJlZm9yZSBjaGFuZ2luZyBzbGlkZXNcbi8vICAgJCgnLnNsaWNrLXNsaWRlJykucmVtb3ZlQ2xhc3MoJ3ByZXYgbmV4dCcpO1xuLy8gfSlcbi8vIC5vbignYWZ0ZXJDaGFuZ2UnLCBmdW5jdGlvbihldmVudCwgc2xpY2ssIGN1cnJlbnRTbGlkZSwgbmV4dFNsaWRlKXtcbi8vICAgLy8gZmluYWxseSBsZXQncyBkbyB0aGlzIGFmdGVyIGNoYW5naW5nIHNsaWRlc1xuLy8gICAkKCcuc2xpY2stYWN0aXZlJykucHJldigpLmFkZENsYXNzKCdwcmV2Jyk7XG4vLyAgICQoJy5zbGljay1hY3RpdmUnKS5uZXh0KCkuYWRkQ2xhc3MoJ25leHQnKTtcbi8vIH0pO1xuXG5cblxuJChmdW5jdGlvbiAoKSB7XG4gICQoXCIudG9wS3ZfX3NsaWRlclwiKVxuICAgIC5vbihcImluaXRcIiwgZnVuY3Rpb24gKGV2ZW50LCBzbGljaykge1xuICAgICAgJCh0aGlzKS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJ0b3BLdl9fbnVtV3JhcFwiPjxkaXYgY2xhc3M9XCJ0b3BLdl9fbnVtQm94XCI+PHNwYW4gY2xhc3M9XCJ0b3BLdl9fY3VycmVudE51bVwiPjwvc3Bhbj48c3BhbiBjbGFzcz1cInRvcEt2X19hbGxOdW1cIj48L3NwYW4+PC9kaXY+PC9kaXY+Jyk7XG4gICAgICAkKFwiLnRvcEt2X19jdXJyZW50TnVtXCIpLnRleHQoYDAke3NsaWNrLmN1cnJlbnRTbGlkZSArIDF9YCApOyAvLyDnj77lnKjjga7jgrnjg6njgqTjg4nnlarlj7coKzHjgYznhKHjgYTjgagw44GL44KJ44K544K/44O844OI44GX44Gm44GX44G+44GGKVxuICAgICAgJChcIi50b3BLdl9fYWxsTnVtXCIpLnRleHQoYDAke3NsaWNrLnNsaWRlQ291bnR9YCApOyAvLyDjgrnjg6njgqTjg4njga7nt4/mlbBcbiAgICB9KVxuXG4gICAgJChcIi50b3BLdl9fc2xpZGVyXCIpLnNsaWNrKHtcbiAgICAgIGZhZGU6IHRydWUsXG4gICAgICBhdXRvcGxheTogdHJ1ZSxcbiAgICAgIGF1dG9wbGF5U3BlZWQ6IDQwMDAsXG4gICAgICBzcGVlZDogMjUwMCxcbiAgICAgIGluZmluaXRlOiB0cnVlLFxuICAgICAgcGF1c2VPbkhvdmVyOiBmYWxzZSxcbiAgICAgIHNsaWRlc1RvU2hvdzogMSxcbiAgICAgIGFycm93czogdHJ1ZVxuICAgIH0pXG5cbiAgICAub24oXCJiZWZvcmVDaGFuZ2VcIiwgZnVuY3Rpb24gKGV2ZW50LCBzbGljaywgY3VycmVudFNsaWRlLCBuZXh0U2xpZGUpIHtcbiAgICAgICQoXCIudG9wS3ZfX2N1cnJlbnROdW1cIikudGV4dChgMCR7bmV4dFNsaWRlICsgMX1gKTsgLy8g54++5Zyo44Gu44K544Op44Kk44OJ55Wq5Y+344Gu5qyh44Gu44K544Op44Kk44OJ44Gr44Gq44Gj44Gf44KJ55Wq5Y+344KSKzFcbiAgICB9KTtcbn0pO1xuXG4kKFwiLnBob3Rvc0FsbF9fc2xpY2tcIikuc2xpY2soe1xuICBhdXRvcGxheTogdHJ1ZSxcbiAgYXV0b3BsYXlTcGVlZDogMzAwMCxcbiAgc3BlZWQ6IDEwMDAsXG4gIGluZmluaXRlOiB0cnVlLFxuICBwYXVzZU9uSG92ZXI6IGZhbHNlLFxuICBzbGlkZXNUb1Nob3c6IDEsXG59KTtcblxuJChcIi5zbGlkZXItc3F1YXJlXCIpLnNsaWNrKHtcbiAgYXV0b3BsYXk6IHRydWUsXG4gIGF1dG9wbGF5U3BlZWQ6IDMwMDAsXG4gIHNwZWVkOiAxMDAwLFxuICBpbmZpbml0ZTogdHJ1ZSxcbiAgcGF1c2VPbkhvdmVyOiBmYWxzZSxcbiAgc2xpZGVzVG9TaG93OiAzLFxuXG4gIHJlc3BvbnNpdmU6IFtcbiAgICB7XG4gICAgICBicmVha3BvaW50OiAxMDI0LCAvLyAzOTlweOS7peS4i+OBruOCteOCpOOCuuOBq+mBqeeUqFxuXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICBjZW50ZXJNb2RlOiB0cnVlLFxuICAgICAgICBjZW50ZXJQYWRkaW5nOiBcIjEyJVwiLFxuICAgICAgICBhcnJvd3M6IGZhbHNlLFxuICAgICAgICBzbGlkZXNUb1Nob3c6IDEsXG4gICAgICB9LFxuICAgIH0sXG4gIF0sXG59KTtcblxuJChcIi50b3BQaWN0dXJlX19yYW5raW5nXCIpLnNsaWNrKHtcbiAgYXV0b3BsYXk6IHRydWUsXG4gIGF1dG9wbGF5U3BlZWQ6IDMwMDAsXG4gIHNwZWVkOiAxMDAwLFxuICBpbmZpbml0ZTogdHJ1ZSxcbiAgcGF1c2VPbkhvdmVyOiBmYWxzZSxcbiAgc2xpZGVzVG9TaG93OiAxLFxuICBkb3RzOiBmYWxzZSxcbn0pO1xuXG4kKFwiLnNsaWRlci1iYXNpY1wiKS5zbGljayh7XG4gIGF1dG9wbGF5OiB0cnVlLFxuICBhdXRvcGxheVNwZWVkOiAzMDAwLFxuICBzcGVlZDogMTAwMCxcbiAgaW5maW5pdGU6IHRydWUsXG4gIHBhdXNlT25Ib3ZlcjogZmFsc2UsXG4gIHNsaWRlc1RvU2hvdzogNSxcbiAgLy8gY2VudGVyTW9kZTogdHJ1ZSxcbiAgY2VudGVyUGFkZGluZzogXCI1JVwiLFxuICBkb3RzOiB0cnVlLFxuXG4gIHJlc3BvbnNpdmU6IFtcbiAgICB7XG4gICAgICBicmVha3BvaW50OiAxMDI0LFxuXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICBjZW50ZXJNb2RlOiBmYWxzZSxcbiAgICAgICAgc2xpZGVzVG9TaG93OiAxLFxuICAgICAgfSxcbiAgICB9LFxuICBdLFxufSk7XG5cbiQoXCIub3RoZXJzX19zbGlja1wiKS5zbGljayh7XG4gIGF1dG9wbGF5OiB0cnVlLFxuICBhdXRvcGxheVNwZWVkOiAzMDAwLFxuICBzcGVlZDogMTAwMCxcbiAgaW5maW5pdGU6IHRydWUsXG4gIHNsaWRlc1RvU2hvdzogMSxcbn0pO1xuXG4kKGZ1bmN0aW9uKCl7XG4gIGZ1bmN0aW9uIHNsaWRlclNldHRpbmcoKXtcbiAgICBsZXQgd2lkdGggPSAkKHdpbmRvdykud2lkdGgoKTtcbiAgICAgIGlmKHdpZHRoIDw9IDEwMjQpe1xuICAgICAgICAgICQoJy50b3BQaWN0dXJlX19yYW5raW5nJykubm90KCcuc2xpY2staW5pdGlhbGl6ZWQnKS5zbGljayh7XG4gICAgICAgICAgICBhdXRvcGxheTogdHJ1ZSxcbiAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IDMwMDAsXG4gICAgICAgICAgICBzcGVlZDogMTAwMCxcbiAgICAgICAgICAgIGluZmluaXRlOiB0cnVlLFxuICAgICAgICAgICAgcGF1c2VPbkhvdmVyOiBmYWxzZSxcbiAgICAgICAgICAgI
1007HNsaWRlc1RvU2hvdzogMSxcbiAgICAgICAgICAgIGRvdHM6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAkKCcudG9wUGljdHVyZV9fcmFua2luZy5zbGljay1pbml0aWFsaXplZCcpLnNsaWNrKCd1bnNsaWNrJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHNsaWRlclNldHRpbmcoKTtcblxuICAgICQod2luZG93KS5yZXNpemUoIGZ1bmN0aW9uKCkge1xuICAgICAgICBzbGlkZXJTZXR0aW5nKCk7XG4gICAgfSk7XG59KTtcblxufSk7XG4vLyBqUXVlcnkgRW5kXG5cblxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8g44K/44OW5YiH44KK5pu/44GIXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbmNsYXNzIFRhYkNoYW5nZSB7XG4gIGNvbnN0cnVjdG9yKHRhYiwgY29udGVudCkge1xuICAgIHRoaXMudGFiID0gdGFiO1xuICAgIHRoaXMuY29udGVudCA9IGNvbnRlbnQ7XG4gIH1cbiAgdGFiQ2xpY2soKSB7XG4gICAgY29uc3QgdGFiQnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0aGlzLnRhYik7XG4gICAgY29uc3QgdGFiQ29udGVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5jb250ZW50KTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFiQnRuLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0YWJCdG5baV0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWJCdG4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0YWJCdG5baV0uY2xhc3NMaXN0LnJlbW92ZShcImFjdGl2ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYkNvbnRlbnQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0YWJDb250ZW50W2ldLmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlXCIpO1xuICAgICAgICBjb25zdCBhcnJheVRhYnMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0YWJCdG4pO1xuICAgICAgICBjb25zdCBpbmRleCA9IGFycmF5VGFicy5pbmRleE9mKHRoaXMpO1xuICAgICAgICB0YWJDb250ZW50W2luZGV4XS5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlXCIpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHRvcFBob3RvVGFiVG9nZ2xlID0gbmV3IFRhYkNoYW5nZShcbiAgXCIudG9wVHJlYXRtZW50X19idG5cIixcbiAgXCIudG9wVHJlYXRtZW50X19ib3hcIlxuKTtcblxudG9wUGhvdG9UYWJUb2dnbGUudGFiQ2xpY2soKTtcblxuXG5cbi8vIC8vIHNjcm9sbCA9IGNsYXNzIGFkZFxuLy8gd2luZG93Lm9uc2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuLy8gICAvLyBnbyB0byB0b3AgYnRuXG4vLyAgIHZhciBwYWdlX3RvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWdlVG9wJyk7XG4vLyAgIGlmICh3aW5kb3cucGFnZVlPZmZzZXQgPiA4MDApIHtcbi8vICAgICBwYWdlX3RvcC5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlXCIpO1xuLy8gICB9IGVsc2Uge1xuLy8gICAgIHBhZ2VfdG9wLmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVcIik7XG4vLyAgIH1cbi8vIH1cblxuXG4iXX0=

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.