1(function ($$1,Modernizr,svg4everybody,Swiper) { 2 'use strict'; 3 4 $$1 = 'default' in $$1 ? $$1['default'] : $$1; 5 Modernizr = 'default' in Modernizr ? Modernizr['default'] : Modernizr; 6 svg4everybody = 'default' in svg4everybody ? svg4everybody['default'] : svg4everybody; 7 Swiper = 'default' in Swiper ? Swiper['default'] : Swiper; 8 9 /** 10 * Module containing polyfills initialization. 11 */ 12 13 /** 14 * Replaces SVG images with their PNG replacements. 15 * The idea is to basically provide PNG versions of the most essential images on 16 * the page e.g. main logo, navigation trigger etc. that sould be placed in the 17 * same directory as the SVG file and have the same name. 18 */ 19 var svgToPng = function svgToPng() { 20 var $svgImage; 21 $$1('img[src$=".svg"]').each(function () { 22 $svgImage = $$1(this); 23 $svgImage.attr('src', $svgImage.attr('src').replace('svg', 'png')); 24 }); 25 }; 26 27 /** 28 * Initializes all polyfills used on the page, can be used to load polyfills again 29 * when loading content dynamically. 30 */ 31 var init = function init() { 32 /** 33 * If SVG graphics are supported by the browser. 34 */ 35 if (Modernizr.svg) { 36 /** 37 * Polyfill using external SVGs if needed(scripts checks that). 38 */ 39 svg4everybody(); 40 } else { 41 /** 42 * Replace all references to SVG files with their PNG replacements. 43 */ 44 svgToPng(); 45 } 46 }; 47 48 var paper = $$1('.paper'); 49 var paperCard = $$1('.paper__card'); 50 var paperContent = $$1('.paper__content'); 51 52 var isOpen = false; 53 54 var whereIsIt = 0; 55 56 var open = function open() { 57 var margin = 30; 58 59 //if(!isOpen) { 60 whereIsIt = $$1(window).scrollTop(); 61 //} 62 63 paperCard.css('visibility', 'hidden'); 64 paperCard.css('display', 'block'); 65 66 var height = paperContent.outerHeight(); 67 68 var windowHeight = $$1(window).innerHeight(); 69 var bodyHeight = $$1('body').outerHeight(); 70 71 var paperHeight = windowHeight > height ? windowHeight : height; 72 var pixelsLeft = bodyHeight - whereIsIt; 73 var top = whereIsIt; 74 //if( pixelsLeft < height ) { 75 // top = bodyHeight - height; 76 // if(top<5) { 77 // top=5; 78 // } 79 //} 80 81 paperCard.css('height', paperHeight); 82 paperCard.css('top', top + margin); 83 paper.css('margin-top', -top); 84 paper.css('height', paperHeight + top + 2 * margin); 85 //paper.css( 'overflow', 'hidden' ); 86 paper.addClass('paper--active'); 87 paperCard.css('visibility', 'visible'); 88 89 isOpen = true; 90 $$1(window).scrollTop(0); 91 $$1('body').trigger('sectionsResize'); 92 }; 93 94 var close = function close() { 95 paperCard.hide(); 96 //paper.css( 'overflow', 'visible' ); 97 paper.css('height', 'auto'); 98 paper.css('margin-top', 0); 99 paper.removeClass('paper--active'); 100 isOpen = false; 101 $$1(window).scrollTop(whereIsIt); 102 $$1('body').trigger('sectionsResize'); 103 }; 104 105 var listen = function listen() { 106 $$1('.paper').on('showPaper', function (e, data, callbacks) { 107 if (isOpen) close(); 108 paperContent.html(data); 109 enableButton(callbacks.next, '.paper__button--next'); 110 enableButton(callbacks.prev, '.paper__button--prev'); 111 setTimeout(open, 10); //Leo why... this sux! 112 }); 113 $$1('.paper').on('hidePaper', function (e) { 114 close(); 115 }); 116 117 $$1('.paper__button--close').click(function () { 118 close(); 119 }); 120 121 $$1('body').keydown(function (e) { 122 if (isOpen && e.keyCode === 27) { 123 close(); 124 } 125 }); 126 127 $$1(document).bind("mouseup touchend", function (e) { 128 if (isOpen && !paperCard.is(e.target) // if the target of the click isn't the container... 129 && paperCard.has(e.target).length === 0) // ... nor a descendant of the container 130 { 131 close(); 132 } 133 }); 134 }; 135 136 var enableButton = function enableButton(callback, selector) { 137 var button = $$1(selector); 138 if (callback) { 139 button.click(callback); 140 button.css('visibility', 'visible'); 141 } else { 142 button.css('visibility', 'hidden'); 143 } 144 }; 145
146 var init$1 = function init() { 147 148 $$1('.schedule-item').on('hidePopups', function () { 149 setInactive($$1(this)); 150 }); 151 152 $$1('.schedule-item').on('showPopup', function () { 153 setActive($$1(this)); 154 }); 155 }; 156 157 var setInactive = function setInactive(element) { 158 element.children('.schedule-item__calendar').addClass('schedule-item__calendar--inactive'); 159 element.children('.schedule-item__button').addClass('schedule-item__button--inactive'); 160 element.children('.schedule-item__title').children('.subheadline').removeClass('subheadline--primary'); 161 }; 162 163 var setActive = function setActive(element) { 164 element.children('.schedule-item__calendar').removeClass('schedule-item__calendar--inactive'); 165 element.children('.schedule-item__button').removeClass('schedule-item__button--inactive'); 166 element.children('.schedule-item__title').children('.subheadline').addClass('subheadline--primary'); 167 }; 168 169 var hidePopups = function hidePopups(activeClass) { 170 171 $$1('.' + activeClass).each(function () { 172 hidePopup($$1(this), activeClass); 173 }); 174 }; 175 176 var expandable = function expandable(popUpSelector, activeClass, inactiveClass, wasInactiveClass, callbackOff, callbackOn) { 177 $$1(popUpSelector).click(function () { 178 var $this = $$1(this); 179 if ($this.hasClass(activeClass)) { 180 hidePopup($this, activeClass); 181 if ($$1.isFunction(callbackOff)) { 182 callbackOff($this); 183 } 184 } else { 185 $this.addClass(activeClass); 186 $this.parent().removeClass(wasInactiveClass); 187 188 $this.parent().siblings().each(function () { 189 hidePopup($$1(this).children(popUpSelector), activeClass); 190 $$1(this).addClass(inactiveClass); 191 }); 192 $this.children().trigger('showPopup'); 193 194 if ($$1.isFunction(callbackOn)) { 195 callbackOn($this); 196 } 197 } 198 }); 199 }; 200 201 var hidePopup = function hidePopup(element, activeClass) { 202 element.removeClass(activeClass); 203 element.children().trigger('hidePopups'); 204 }; 205 206 var inactiveHover = function inactiveHover(selector, inactiveClass, wasInactiveClass) { 207 $$1(selector).hover(function () { 208 if ($$1(this).hasClass(inactiveClass)) { 209 $$1(this).removeClass(inactiveClass); 210 $$1(this).addClass(wasInactiveClass); 211 } 212 }, function () { 213 if ($$1(this).hasClass(wasInactiveClass)) { 214 $$1(this).removeClass(wasInactiveClass); 215 $$1(this).addClass(inactiveClass); 216 } 217 }); 218 }; 219 220 var scheduleSwiper = undefined; 221 222 var activeClass = 'section-schedule__pop--active'; 223 var inactiveClass = 'section-schedule__item--inactive'; 224 var wasInactiveClass = 'section-schedule__item--wasInactive'; 225 var popUpSelector = '.section-schedule__pop'; 226 227 var init$2 = function init() { 228 initSwiper($('.section-schedule').data('first')); 229 inactiveHover('.section-schedule__item', inactiveClass, wasInactiveClass); 230 hidePopups(activeClass); 231 expandable(popUpSelector, activeClass, inactiveClass, wasInactiveClass, removeReducedOpacity); 232 }; 233 234 var initSwiper = function initSwiper(slide) { 235 scheduleSwiper = new Swiper('.section-schedule__container', { 236 // Optional parameters 237 //direction: 'vertical', 238 //loop: true, 239 // Navigation arrows 240 nextButton: '.section-schedule__button--next', 241 prevButton: '.section-schedule__button--prev', 242 slidesPerView: 4, 243 initialSlide: slide ? slide : 0 244 245 }); 246 }; 247 248 var removeReducedOpacity = function removeReducedOpacity() { 249 $('.' + inactiveClass).removeClass(inactiveClass); 250 }; 251 252 var newsInit = function init() { 253 254 $$1('.news').click(function () { 255 var source = $$1(this).data('news-source'); 256 var paper = $$1(this).data('paper'); 257 load(source, paper); 258 }); 259 260 $$1('.news__more').click(function (e) { 261 //e.preventDefault(); 262 //$( this).closest( '.news' ).trigger('click'); 263 }); 264 }; 265 266 var load = function load(source, paper) { 267 $$1.get(source, function (data) { 268 var callbacks = { 269 //'next': function() { 270 // load('/base.css', paper); 271 //}, 272 //'prev': function() { 273 // load('/base.css', paper); 274 //} 275 }; 276 $$1(paper).trigger('showPaper', [data.content, callbacks]); 277 }, 'json'); 278 }; 279
280 var init$3 = function init() { 281 var button = $$1('.section-news__more'); 282 var source = button.data('source'); 283 $$1(button.click(function () { 284 var count = $$1('.section-news__item').length; 285 $$1.post(source, { from: count }, function (data) { 286 $$1('.section-news__container').append(data); 287 if (data.length) { 288 if ($$1('.section-news__item').length % 4) { 289 button.hide(); 290 } 291 newsInit(); 292 $$1('body').trigger('sectionsResize'); 293 } else { 294 button.hide(); 295 } 296 }); 297 })); 298 }; 299 300 var isMenuOpen = false; 301 var targets = []; 302 var hamburgerHeight = 0; 303 var wasScroll = false; 304 305 var init$4 = function init() { 306 hamburgerHeight = $$1('.hamburger-box').offset().top; 307 /// /findTargetsForBackgroundChange(); 308 attachListnersForMenuButton(); 309 triggerBackgroundChangeEvent(); 310 $$1(window).scroll(triggerBackgroun
310dChangeEventLimiter); 311 312 $$1('body').on('sectionsResize', function () { 313 findTargetsForBackgroundChange(); 314 }); 315 316 setInterval(triggerBackgroundChangeEvent, 300); 317 318 $$1(window).load(findTargetsForBackgroundChange()); 319 }; 320 321 function findTargetsForBackgroundChange() { 322 targets = []; 323 $$1('.section-bio, .section-schedule, .recordings').each(function () { 324 targets.push({ 325 point: $$1(this).offset().top - hamburgerHeight, 326 dark: true 327 }); 328 }); 329 $$1('.section-news, .splash, .splash-newcd').each(function () { 330 targets.push({ 331 point: $$1(this).offset().top - hamburgerHeight, 332 dark: false 333 }); 334 }); 335 336 targets.sort(function (a, b) { 337 return a.point - b.point; 338 }); 339 } 340 341 function triggerBackgroundChangeEventLimiter() { 342 wasScroll = true; 343 } 344 345 function triggerBackgroundChangeEvent() { 346 if (wasScroll) { 347 wasScroll = false; 348 var top = $$1(window).scrollTop(); 349 350 for (var t = 0; t < targets.length; t = t + 1) { 351 if (top >= targets[t].point && (t + 1 === targets.length || top < targets[t + 1].point)) { 352 $$1('.menu').trigger('backgroudChange', targets[t].dark); 353 return; 354 } 355 } 356 } 357 } 358 359 function attachListnersForMenuButton() { 360 $$1('.menu__button, .menu__item').on('click', function () { 361 $$1('.menu__popup').toggleClass('menu__popup--active'); 362 $$1('.menu__button').toggleClass('is-active'); 363 $$1('.hamburger-label').toggle(); 364 $$1('.hamburger-inner').toggleClass('hamburger-inner--white-click'); 365 366 isMenuOpen = !isMenuOpen; 367 }); 368 369 $$1('.menu').on('backgroudChange', function (event, isDark) { 370 if (isMenuOpen === false) { 371 if (isDark) { 372 $$1('.hamburger-inner').addClass('hamburger-inner--white'); 373 $$1('.hamburger-label').addClass('hamburger-label--white'); 374 } else { 375 $$1('.hamburger-inner').removeClass('hamburger-inner--white'); 376 $$1('.hamburger-label').removeClass('hamburger-label--white'); 377 } 378 } 379 }); 380 } 381 382 var init$5 = function init() { 383 384 $$1('.section-bio__more-button').click(function () { 385 $$1('.section-bio__more').toggleClass('section-bio__more--hidden'); 386 $$1(this).hide(); 387 }); 388 }; 389 390 var flippedClass = 'picture-flip__side--flipped'; 391 392 var init$6 = function init() { 393 394 $$1('.picture-flip__container').on('click', function (e) { 395 if (!$$1(e.target).hasClass('button')) { 396 var that = $$1(this); 397 if (that.hasClass(flippedClass)) { 398 that.removeClass(flippedClass); 399 } else { 400 $$1('.picture-flip__container').trigger('turnTop', [that]); 401 that.addClass(flippedClass); 402 } 403 } 404 }); 405 406 $$1('.picture-flip__container').on('turnTop', function (e, except) { 407 //if($( this ) != except) 408 $$1(this).removeClass(flippedClass); 409 }); 410 }; 411 412 var elementName = 'stage-photos'; 413 414 var activeClass$1 = elementName + '__pop--active'; 415 var inactiveClass$1 = elementName + '__item--inactive'; 416 var wasInactiveClass$1 = elementName + '__item--wasInactive'; 417 var popUpSelector$1 = '.' + elementName + '__pop'; 418 419 var viewElementClass = 'stage-photos__view'; 420 var view = undefined; 421 var photosSwiper = undefined; 422 var galleryUrl = undefined; 423 424 var opened = false; 425 426 var init$7 = function init() { 427 initSwiper$1(); 428 view = $('.' + viewElementClass); 429 inactiveHover(popUpSelector$1, inactiveClass$1, wasInactiveClass$1); 430 //pop.hidePopups( activeClass ); 431 expandable(popUpSelector$1, activeClass$1, wasInactiveClass$1, null, closeGallery, clickGallery); 432 //attachClickGallery(); 433 galleryUrl = $('.' + elementName).data('album-source'); 434 }; 435 436 var initSwiper$1 = function initSwiper() { 437 var galeriesSwiper = new Swiper('.stage-photos__container', { 438 439 nextButton: '.stage-photos__button-list--prev', 440 prevButton: '.stage-photos__button-list--next', 441 slidesPerView: 4, 442 spaceBetween: 10 443 444 }); 445 446 photosSwiper = new Swiper('.stage-photos__view', { 447 nextButton: '.stage-photos__button-view--prev', 448 prevButton: '.stage-photos__button-view--next', 449 slidesPerView: 'auto', 450 spaceBetween: 10, 451 lazyLoading: true, 452 lazyLoadingInPrevNextAmount: 2 453 //centeredSlides: true 454 }); 455 }; 456 457 var loadGallery = function loadGallery(dir) { 458 $.get(galleryUrl + dir, function (data) { 459 $('.stage-photos__button-view').css('visibility', 'visible'); 460 opened = true; 461 if (photosSwiper) { 462 photosSwiper.removeAllSlides(); 463 photosSwiper.appendSlide(data); 464 view.addClass(viewElementClass + '--open'); 465 466 // Scroll when animation of height is over 467 setTimeout(scrollToSectionEnd, 1000); 468 469 $(view).imagesLoaded(function () { 470 if (photosSwiper) {
471 photosSwiper.update(); 472 } 473 }); 474 } 475 }); 476 }; 477 478 var scrollToSectionEnd = function scrollToSectionEnd() { 479 var section = $('.' + elementName); 480 $(window).scrollTo(section.offset().top + section.outerHeight() - $(window).innerHeight(), 500); 481 }; 482 483 var closeGallery = function closeGallery(that) { 484 $('.stage-photos__button-view').css('visibility', 'hidden'); 485 opened = false; 486 photosSwiper.removeAllSlides(); 487 view.removeClass(viewElementClass + '--open'); 488 }; 489 490 var clickGallery = function clickGallery(that) { 491 loadGallery(that.data('album')); 492 }; 493 494 var init$8 = function init() { 495 initSwiper$2(); 496 }; 497 var gallerySelector = '.portraits__gallery'; 498 var initSwiper$2 = function initSwiper() { 499 var portraitsSwiper = new Swiper(gallerySelector, { 500 nextButton: '.portraits__button--prev', 501 prevButton: '.portraits__button--next', 502 slidesPerView: 'auto', 503 lazyLoading: true, 504 lazyLoadingInPrevNextAmount: 2 505 }); 506 507 $(gallerySelector).imagesLoaded(function () { 508 if (portraitsSwiper) { 509 portraitsSwiper.update(); 510 } 511 }); 512 }; 513 514 var elementName$1 = 'video'; 515 516 var activeClass$2 = elementName$1 + '__pop--active'; 517 var inactiveClass$2 = elementName$1 + '__item--inactive'; 518 var wasInactiveClass$2 = elementName$1 + '__item--wasInactive'; 519 var popUpSelector$2 = '.' + elementName$1 + '__pop'; 520 521 var opened$1 = false; 522 523 var init$9 = function init() { 524 initSwiper$3(); 525 inactiveHover(popUpSelector$2, inactiveClass$2, wasInactiveClass$2); 526 //pop.hidePopups( activeClass ); 527 expandable(popUpSelector$2, activeClass$2, wasInactiveClass$2, null, hideVideo, showVideo); 528 }; 529 530 var initSwiper$3 = function initSwiper() { 531 var videosSwiper = new Swiper('.video__container', { 532 nextButton: '.video__button--prev', 533 prevButton: '.video__button--next', 534 slidesPerView: 4, 535 spaceBetween: 10 536 537 }); 538 }; 539 540 var showVideo = function showVideo(that) { 541 if (!opened$1) { 542 $$1('.video__view').addClass('video__view--open'); 543 } 544 opened$1 = true; 545 var video = that.data('video'); 546 video += '&autoplay=1'; 547 var wrapper = $$1('.video__iframe-wrapper'); 548 wrapper.html('<iframe class="video__iframe" src="' + video + '" frameborder="0" allowfullscreen></iframe>'); 549 $$1(window).scrollTo(wrapper.offset().top + wrapper.outerHeight() - $$1(window).innerHeight() + 10, 800); 550 }; 551 552 var hideVideo = function hideVideo() { 553 opened$1 = false; 554 $$1('.video__view').removeClass('video__view--open'); 555 $$1('.video__iframe-wrapper').html(''); 556 }; 557 558 init(); 559 listen(); 560 561 init$1(); 562 563 init$2(); 564 565 newsInit(); 566 567 init$3(); 568 569 init$4(); 570 571 init$5(); 572 573 init$6(); 574 575 init$7(); 576 577 init$8(); 578 579 init$9(); 580 581 /******************************************************************************/ 582 583 /******************************************************************************* 584 * Layouts 585 ******************************************************************************/ 586 587 /******************************************************************************/ 588 589}(jQuery,Modernizr,svg4everybody,Swiper)); 590 591//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZXMiOlsiY29tbW9ucy9fcG9seWZpbGxzLmpzIiwiY29tcG9uZW50cy9wYXBlci9fcGFwZXIuanMiLCJjb21wb25lbnRzL3NjaGVkdWxlLWl0ZW0vX3NjaGVkdWxlLWl0ZW0uanMiLCJjb21wb25lbnRzL3BvcC1pdGVtL19wb3AtaXRlbS5qcyIsImNvbXBvbmVudHMvc2VjdGlvbi1zY2hlZHVsZS9fc2VjdGlvbi1zY2hlZHVsZS5qcyIsImNvbXBvbmVudHMvbmV3cy9fbmV3cy5qcyIsImNvbXBvbmVudHMvc2VjdGlvbi1uZXdzL19zZWN0aW9uLW5ld3MuanMiLCJjb21wb25lbnRzL21lbnUvX21lbnUuanMiLCJjb21wb25lbnRzL3NlY3Rpb24tYmlvL19zZWN0aW9uLWJpby5qcyIsImNvbXBvbmVudHMvaW1hZ2UtZmxpcHBlZC9faW1hZ2UtZmxpcHBlZC5qcyIsImNvbXBvbmVudHMvc3RhZ2UtcGhvdG9zL19zdGFnZS1waG90b3MuanMiLCJjb21wb25lbnRzL3BvcnRyYWl0cy9fcG9ydHJhaXRzLmpzIiwiY29tcG9uZW50cy92aWRlby9fdmlkZW8uanMiLCJjb21wb25lbnRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pRdWVyeSc7XG5pbXBvcnQgTW9kZXJuaXpyIGZyb20gJ01vZGVybml6cic7XG5pbXBvcnQgc3ZnNGV2ZXJ5Ym9keSBmcm9tICdzdmc0ZXZlcnlib2R5Jztcbi8qKlxuICogTW9kdWxlIGNvbnRhaW5pbmcgcG9seWZpbGxzIGluaXRpYWxpemF0aW9uLlxuICovXG5cbi8qKlxuICogUmVwbGFjZXMgU1ZHIGltYWdlcyB3aXRoIHRoZWlyIFBORyByZXBsYWNlbWVudHMuXG4gKiBUaGUgaWRlYSBpcyB0byBiYXNpY2FsbHkgcHJvdmlkZSBQTkcgdmVyc2lvbnMgb2YgdGhlIG1vc3QgZXNzZW50aWFsIGltYWdlcyBvblxuICogdGhlIHBhZ2UgZS5nLiBtYWluIGxvZ28sIG5hdmlnYXRpb24gdHJpZ2dlciBldGMuIHRoYXQgc291bGQgYmUgcGxhY2VkIGluIHRoZVxuICogc2FtZSBkaXJlY3RvcnkgYXMgdGhlIFNWRyBmaWxlIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuXG4gKi9cbnZhciBzdmdUb1BuZyA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciAkc3ZnSW1hZ2U7XG4gICAgJCggJ2ltZ1tzcmMkPVwiLnN2Z1wiXScgKS5lYWNoKCBmdW5jdGlvbigpIHtcbiAgICAgICAgJHN2Z0ltYWdlID0gJCggdGhpcyApO1xuICAgICAgICAkc3ZnSW1hZ2UuYXR0ciggJ3NyYycsICRzdmdJbWFnZS5hdHRyKCAnc3JjJyApLnJlcGxhY2UoICdzdmcnLCAncG5nJyApICk7XG4gICAgfSApO1xufTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbGwgcG9seWZpbGxzIHVzZWQgb24gdGhlIHBhZ2UsIGNhbiBiZSB1c2VkIHRvIGxvYWQgcG9seWZpbGxzIGFnYWluXG4gKiB3aGVuIGxvYWRpbmcgY29udGVudCBkeW5hbWljYWxseS5cbiAqL1xudmFyIGluaXQgPSBmdW5jdGlvbigpIHtcbiAgICAvKipcbiAgICAgKiBJZiBTVkcgZ3JhcGhpY3MgYXJlIHN1cHBvcnRlZCBieSB0aGUgYnJvd3Nlci5cbiAgICAgKi9cbiAgICBpZiAoIE1vZGVybml6ci5zdmcgKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQb2x5ZmlsbCB1c2luZyBleHRlcm5hbCBTVkdzIGlmIG5lZWRlZChzY3JpcHRzIGNoZWNrcyB0aGF0KS5cbiAgICAgICAgICovXG4gICAgICAgI
591HN2ZzRldmVyeWJvZHkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvKipcbiAgICAgICAgICogUmVwbGFjZSBhbGwgcmVmZXJlbmNlcyB0byBTVkcgZmlsZXMgd2l0aCB0aGVpciBQTkcgcmVwbGFjZW1lbnRzLlxuICAgICAgICAgKi9cbiAgICAgICAgc3ZnVG9QbmcoKTtcbiAgICB9XG59O1xuXG5leHBvcnQgeyBpbml0IH07XG4iLCJpbXBvcnQgJCBmcm9tICdqUXVlcnknO1xuXG5sZXQgcGFwZXIgPSAkKCcucGFwZXInKTtcbmxldCBwYXBlckNhcmQgPSAkKCcucGFwZXJfX2NhcmQnKTtcbmxldCBwYXBlckNvbnRlbnQgPSAkKCcucGFwZXJfX2NvbnRlbnQnKTtcblxubGV0IGlzT3BlbiA9IGZhbHNlO1xuXG5sZXQgd2hlcmVJc0l0ID0gMDtcblxuXG5jb25zdCBvcGVuID0gZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgbWFyZ2luID0gMzA7XG5cbiAgICAvL2lmKCFpc09wZW4pIHtcbiAgICAgICAgd2hlcmVJc0l0ID0gJCggd2luZG93ICkuc2Nyb2xsVG9wKCk7XG4gICAgLy99XG5cbiAgICBwYXBlckNhcmQuY3NzKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpO1xuICAgIHBhcGVyQ2FyZC5jc3MoJ2Rpc3BsYXknLCAnYmxvY2snKTtcblxuICAgIGxldCBoZWlnaHQgPSBwYXBlckNvbnRlbnQub3V0ZXJIZWlnaHQoKTtcblxuICAgIGxldCB3aW5kb3dIZWlnaHQgPSAkKCB3aW5kb3cgKS5pbm5lckhlaWdodCgpO1xuICAgIGxldCBib2R5SGVpZ2h0ID0gJCggJ2JvZHknICkub3V0ZXJIZWlnaHQoKTtcblxuICAgIGxldCBwYXBlckhlaWdodCA9IHdpbmRvd0hlaWdodCA+IGhlaWdodCA/IHdpbmRvd0hlaWdodCA6IGhlaWdodDtcbiAgICBsZXQgcGl4ZWxzTGVmdCA9IGJvZHlIZWlnaHQgLSB3aGVyZUlzSXQ7XG4gICAgbGV0IHRvcCA9IHdoZXJlSXNJdDtcbiAgICAvL2lmKCBwaXhlbHNMZWZ0IDwgaGVpZ2h0ICkge1xuICAgIC8vICAgIHRvcCA9IGJvZHlIZWlnaHQgLSBoZWlnaHQ7XG4gICAgLy8gICAgaWYodG9wPDUpIHtcbiAgICAvLyAgICAgICAgdG9wPTU7XG4gICAgLy8gICAgfVxuICAgIC8vfVxuXG4gICAgcGFwZXJDYXJkLmNzcyggJ2hlaWdodCcsIHBhcGVySGVpZ2h0ICk7XG4gICAgcGFwZXJDYXJkLmNzcyggJ3RvcCcsIHRvcCArIG1hcmdpbiApO1xuICAgIHBhcGVyLmNzcyggJ21hcmdpbi10b3AnLCAtIHRvcCApO1xuICAgIHBhcGVyLmNzcyggJ2hlaWdodCcsIHBhcGVySGVpZ2h0ICsgdG9wICsgMiAqIG1hcmdpbiApO1xuICAgIC8vcGFwZXIuY3NzKCAnb3ZlcmZsb3cnLCAnaGlkZGVuJyApO1xuICAgIHBhcGVyLmFkZENsYXNzKCdwYXBlci0tYWN0aXZlJyk7XG4gICAgcGFwZXJDYXJkLmNzcyggJ3Zpc2liaWxpdHknLCAndmlzaWJsZScgKTtcblxuICAgIGlzT3BlbiA9IHRydWU7XG4gICAgJCggd2luZG93ICkuc2Nyb2xsVG9wKCAwICk7XG4gICAgJCggJ2JvZHknKS50cmlnZ2VyKCdzZWN0aW9uc1Jlc2l6ZScpO1xuXG59O1xuXG5jb25zdCBjbG9zZSA9IGZ1bmN0aW9uKCkge1xuICAgIHBhcGVyQ2FyZC5oaWRlKCk7XG4gICAgLy9wYXBlci5jc3MoICdvdmVyZmxvdycsICd2aXNpYmxlJyApO1xuICAgIHBhcGVyLmNzcyggJ2hlaWdodCcsICdhdXRvJyApO1xuICAgIHBhcGVyLmNzcyggJ21hcmdpbi10b3AnLCAwICk7XG4gICAgcGFwZXIucmVtb3ZlQ2xhc3MoJ3BhcGVyLS1hY3RpdmUnKTtcbiAgICBpc09wZW4gPSBmYWxzZTtcbiAgICAkKCB3aW5kb3cgKS5zY3JvbGxUb3AoIHdoZXJlSXNJdCApO1xuICAgICQoICdib2R5JykudHJpZ2dlcignc2VjdGlvbnNSZXNpemUnKTtcbn07XG5cbmNvbnN0IGxpc3RlbiA9IGZ1bmN0aW9uKCkge1xuICAgICQoJy5wYXBlcicpLm9uKCdzaG93UGFwZXInLCBmdW5jdGlvbihlLCBkYXRhLCBjYWxsYmFja3MpIHtcbiAgICAgICAgaWYoIGlzT3BlbiApIGNsb3NlKCk7XG4gICAgICAgIHBhcGVyQ29udGVudC5odG1sKGRhdGEpO1xuICAgICAgICBlbmFibGVCdXR0b24oY2FsbGJhY2tzLm5leHQsICcucGFwZXJfX2J1dHRvbi0tbmV4dCcpO1xuICAgICAgICBlbmFibGVCdXR0b24oY2FsbGJhY2tzLnByZXYsICcucGFwZXJfX2J1dHRvbi0tcHJldicpO1xuICAgICAgICBzZXRUaW1lb3V0KG9wZW4sIDEwKTsgLy9MZW8gd2h5Li4uIHRoaXMgc3V4IVxuICAgIH0pO1xuICAgICQoJy5wYXBlcicpLm9uKCdoaWRlUGFwZXInLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIGNsb3NlKCk7XG4gICAgfSk7XG5cbiAgICAkKCcucGFwZXJfX2J1dHRvbi0tY2xvc2UnKS5jbGljayhmdW5jdGlvbigpe1xuICAgICAgICBjbG9zZSgpO1xuICAgIH0pO1xuXG4gICAgJCggJ2JvZHknICkua2V5ZG93bihmdW5jdGlvbihlKSB7XG4gICAgICAgIGlmKCBpc09wZW4gJiYgZS5rZXlDb2RlID09PSAyNyApIHtcbiAgICAgICAgICAgIGNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgICQoZG9jdW1lbnQpLmJpbmQoIFwibW91c2V1cCB0b3VjaGVuZFwiLCBmdW5jdGlvbihlKXtcbiAgICAgICAgaWYgKGlzT3BlbiAmJiAhcGFwZXJDYXJkLmlzKGUudGFyZ2V0KSAvLyBpZiB0aGUgdGFyZ2V0IG9mIHRoZSBjbGljayBpc24ndCB0aGUgY29udGFpbmVyLi4uXG4gICAgICAgICAgICAmJiBwYXBlckNhcmQuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDApIC8vIC4uLiBub3IgYSBkZXNjZW5kYW50IG9mIHRoZSBjb250YWluZXJcbiAgICAgICAge1xuICAgICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuY29uc3QgZW5hYmxlQnV0dG9uID0gZnVuY3Rpb24oIGNhbGxiYWNrLCBzZWxlY3RvciApIHtcbiAgICBsZXQgYnV0dG9uID0gJCggc2VsZWN0b3IgKTtcbiAgICBpZihjYWxsYmFjaykge1xuICAgICAgICBidXR0b24uY2xpY2soIGNhbGxiYWNrICk7XG4gICAgICAgIGJ1dHRvbi5jc3MoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYnV0dG9uLmNzcygndmlzaWJpbGl0eScsJ2hpZGRlbicpO1xuICAgIH1cbn07XG5cbmV4cG9ydCB7IGxpc3RlbiB9OyIsIi8qKlxuICogQ29tcG9uZW50cyBzY3JpcHRzLlxuICovXG5cbi8qKlxuICogTGV0J3MgaW1wb3J0IGpRdWVyeSBmcm9tIGdsb2JhbCBuYW1lc3BhY2UuXG4gKi9cbmltcG9ydCAkIGZyb20gJ2pRdWVyeSc7XG52YXIgaW5pdCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgJCggJy5zY2hlZHVsZS1pdGVtJyApLm9uKCAnaGlkZVBvcHVwcycsIGZ1bmN0aW9uKCkge1xuICAgICAgICBzZXRJbmFjdGl2ZSggJCggdGhpcyApICk7XG4gICAgfSApO1xuXG4gICAgJCggJy5zY2hlZHVsZS1pdGVtJyApLm9uKCAnc2hvd1BvcHVwJywgZnVuY3Rpb24oKSB7XG4gICAgICAgI
591HNldEFjdGl2ZSggJCggdGhpcyApICk7XG4gICAgfSApO1xuXG59O1xuXG5cbnZhciBzZXRJbmFjdGl2ZSA9IGZ1bmN0aW9uKCBlbGVtZW50ICkge1xuICAgIGVsZW1lbnQuY2hpbGRyZW4oICcuc2NoZWR1bGUtaXRlbV9fY2FsZW5kYXInICkuYWRkQ2xhc3MoICdzY2hlZHVsZS1pdGVtX19jYWxlbmRhci0taW5hY3RpdmUnICk7XG4gICAgZWxlbWVudC5jaGlsZHJlbiggJy5zY2hlZHVsZS1pdGVtX19idXR0b24nICkuYWRkQ2xhc3MoICdzY2hlZHVsZS1pdGVtX19idXR0b24tLWluYWN0aXZlJyApO1xuICAgIGVsZW1lbnQuY2hpbGRyZW4oICcuc2NoZWR1bGUtaXRlbV9fdGl0bGUnICkuY2hpbGRyZW4oICcuc3ViaGVhZGxpbmUnICkucmVtb3ZlQ2xhc3MoICdzdWJoZWFkbGluZS0tcHJpbWFyeScgKTtcbn07XG5cbnZhciBzZXRBY3RpdmUgPSBmdW5jdGlvbiggZWxlbWVudCApIHtcbiAgICBlbGVtZW50LmNoaWxkcmVuKCAnLnNjaGVkdWxlLWl0ZW1fX2NhbGVuZGFyJyApLnJlbW92ZUNsYXNzKCAnc2NoZWR1bGUtaXRlbV9fY2FsZW5kYXItLWluYWN0aXZlJyApO1xuICAgIGVsZW1lbnQuY2hpbGRyZW4oICcuc2NoZWR1bGUtaXRlbV9fYnV0dG9uJyApLnJlbW92ZUNsYXNzKCAnc2NoZWR1bGUtaXRlbV9fYnV0dG9uLS1pbmFjdGl2ZScgKTtcbiAgICBlbGVtZW50LmNoaWxkcmVuKCAnLnNjaGVkdWxlLWl0ZW1fX3RpdGxlJyApLmNoaWxkcmVuKCAnLnN1YmhlYWRsaW5lJyApLmFkZENsYXNzKCAnc3ViaGVhZGxpbmUtLXByaW1hcnknICk7XG59O1xuXG5leHBvcnQgeyBpbml0IH07XG4iLCJpbXBvcnQgJCBmcm9tICdqUXVlcnknO1xuXG5cbmxldCBoaWRlUG9wdXBzID0gZnVuY3Rpb24oIGFjdGl2ZUNsYXNzICkge1xuXG4gICAgJCggJy4nICsgYWN0aXZlQ2xhc3MgKS5lYWNoKCBmdW5jdGlvbigpIHtcbiAgICAgICAgaGlkZVBvcHVwKCAkKCB0aGlzICksIGFjdGl2ZUNsYXNzICk7XG4gICAgfSApO1xufTtcblxuXG5sZXQgZXhwYW5kYWJsZSA9IGZ1bmN0aW9uKCBwb3BVcFNlbGVjdG9yLCBhY3RpdmVDbGFzcywgaW5hY3RpdmVDbGFzcywgd2FzSW5hY3RpdmVDbGFzcywgY2FsbGJhY2tPZmYsIGNhbGxiYWNrT24gKSB7XG4gICAgJCggcG9wVXBTZWxlY3RvciApLmNsaWNrKCBmdW5jdGlvbiggKSB7XG4gICAgICAgIGxldCAkdGhpcyA9ICQoIHRoaXMgKTtcbiAgICAgICAgaWYgKCAkdGhpcy5oYXNDbGFzcyggYWN0aXZlQ2xhc3MgKSApIHtcbiAgICAgICAgICAgIGhpZGVQb3B1cCggJHRoaXMsIGFjdGl2ZUNsYXNzICk7XG4gICAgICAgICAgICBpZiggJC5pc0Z1bmN0aW9uKCBjYWxsYmFja09mZiApICkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrT2ZmKCAkdGhpcyApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJHRoaXMuYWRkQ2xhc3MoYWN0aXZlQ2xhc3MpO1xuICAgICAgICAgICAgJHRoaXMucGFyZW50KCkucmVtb3ZlQ2xhc3Mod2FzSW5hY3RpdmVDbGFzcyk7XG5cbiAgICAgICAgICAgICR0aGlzLnBhcmVudCgpLnNpYmxpbmdzKCkuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaGlkZVBvcHVwKCAkKCB0aGlzICkuY2hpbGRyZW4ocG9wVXBTZWxlY3RvciksIGFjdGl2ZUNsYXNzICk7XG4gICAgICAgICAgICAgICAgJCggdGhpcyApLmFkZENsYXNzKGluYWN0aXZlQ2xhc3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAkdGhpcy5jaGlsZHJlbigpLnRyaWdnZXIoJ3Nob3dQb3B1cCcpO1xuXG4gICAgICAgICAgICBpZiggJC5pc0Z1bmN0aW9uKCBjYWxsYmFja09uICkgKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2tPbiggJHRoaXMgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gKTtcbn07XG5cbmxldCBoaWRlUG9wdXAgPSBmdW5jdGlvbiggZWxlbWVudCwgYWN0aXZlQ2xhc3MgKSB7XG4gICAgZWxlbWVudC5yZW1vdmVDbGFzcyggYWN0aXZlQ2xhc3MgKTtcbiAgICBlbGVtZW50LmNoaWxkcmVuKCkudHJpZ2dlciggJ2hpZGVQb3B1cHMnICk7XG59O1xuXG5sZXQgaW5hY3RpdmVIb3ZlciA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgaW5hY3RpdmVDbGFzcywgd2FzSW5hY3RpdmVDbGFzcyApIHtcbiAgICAkKCBzZWxlY3RvciApLmhvdmVyKFxuICAgICAgICBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmICggJCggdGhpcyApLmhhc0NsYXNzKCBpbmFjdGl2ZUNsYXNzICkgKSB7XG4gICAgICAgICAgICAgICAgJCggdGhpcyApLnJlbW92ZUNsYXNzKCBpbmFjdGl2ZUNsYXNzICk7XG4gICAgICAgICAgICAgICAgJCggdGhpcyApLmFkZENsYXNzKCB3YXNJbmFjdGl2ZUNsYXNzICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYgKCAkKCB0aGlzICkuaGFzQ2xhc3MoIHdhc0luYWN0aXZlQ2xhc3MgKSApIHtcbiAgICAgICAgICAgICAgICAkKCB0aGlzICkucmVtb3ZlQ2xhc3MoIHdhc0luYWN0aXZlQ2xhc3MgKTtcbiAgICAgICAgICAgICAgICAkKCB0aGlzICkuYWRkQ2xhc3MoIGluYWN0aXZlQ2xhc3MgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSApO1xufTtcblxuZXhwb3J0IHsgZXhwYW5kYWJsZSwgaGlkZVBvcHVwLCBoaWRlUG9wdXBzLCBpbmFjdGl2ZUhvdmVyIH07XG4iLCJpbXBvcnQgU3dpcGVyIGZyb20gJ1N3aXBlcic7XG5pbXBvcnQgKiBhcyBwb3AgZnJvbSAnLi4vcG9wLWl0ZW0vX3BvcC1pdGVtJztcblxubGV0IHNjaGVkdWxlU3dpcGVyO1xuXG5jb25zdCBhY3RpdmVDbGFzcyA9ICdzZWN0aW9uLXNjaGVkdWxlX19wb3AtLWFjdGl2ZSc7XG5jb25zdCBpbmFjdGl2ZUNsYXNzID0gJ3NlY3Rpb24tc2NoZWR1bGVfX2l0ZW0tLWluYWN0aXZlJztcbmNvbnN0IHdhc0luYWN0aXZlQ2xhc3MgPSAnc2VjdGlvbi1zY2hlZHVsZV9faXRlbS0td2FzSW5hY3RpdmUnO1xuY29uc3QgcG9wVXBTZWxlY3RvciA9ICcuc2VjdGlvbi1zY2hlZHVsZV9fcG9wJztcblxubGV0IGluaXQgPSBmdW5jdGlvbigpIHtcbiAgICBpbml0U3dpcGVyKCQoJy5zZWN0aW9uLXNjaGVkdWxlJykuZGF0YSgnZmlyc3QnKSk7XG4gICAgcG9wLmluYWN0aXZlSG92ZXIoICcuc2VjdGlvbi1zY2hlZHVsZV9faXRlbScsIGluYWN0aXZlQ2xhc3MsIHdhc0luYWN0aXZlQ2xhc3MgKTtcbiAgICBwb3AuaGlkZVBvcHVwcyggYWN0aXZlQ2xhc3MgKTtcbiAgICBwb3AuZXhwYW5kYWJsZSggcG9wVXBTZWxlY3RvciwgYWN0aXZlQ2xhc3MsIGluYWN0aXZlQ2xhc3MsIHdhc0luYWN0aXZlQ2xhc3MsIHJlbW92ZVJlZHVjZWRPcGFjaXR5ICk7XG5cbn07XG5cbnZhciBpbml0U3dpcGVyID0gZnVuY3Rpb24oc2xpZGUpIHtcbiAgICBzY2hlZHVsZVN3aXBlciA9IG5ldyBTd2lwZXIoICcuc2VjdGlvbi1zY2hlZHVsZV9fY29udGFpbmVyJywge1xuICAgICAgICAvLyBPcHRpb25hbCBwYXJhbWV0ZXJzXG4gICAgICAgIC8vZGlyZWN0aW9uOiAndmVydGljYWwnLFxuICAgICAgICAvL2xvb3A6IHRydWUsXG4gICAgICAgIC8vIE5hdmlnYXRpb24gYXJyb3dzXG4gICAgICAgIG5leHRCdXR0b246ICcuc2VjdGlvbi1zY2hlZHVsZV9fYnV0dG9uLS1uZXh0JyxcbiAgICAgICAgcHJldkJ1dHRvbjogJy5zZWN0aW9uLXNjaGVkdWxlX19idXR0b24tLXByZXYnLFxuICAgICAgICBzbGlkZXNQZXJWaWV3OiA0LFxuICAgICAgICBpbml0aWFsU2xpZGU6IHNsaWRlID8gc2xpZGUgO
591iAwXG5cbiAgICB9ICk7XG59O1xuXG52YXIgcmVtb3ZlUmVkdWNlZE9wYWNpdHkgPSBmdW5jdGlvbigpIHtcbiAgICAkKCAnLicraW5hY3RpdmVDbGFzcyApLnJlbW92ZUNsYXNzKCBpbmFjdGl2ZUNsYXNzICk7XG59O1xuXG5leHBvcnQgeyBpbml0IH07XG4iLCJpbXBvcnQgJCBmcm9tICdqUXVlcnknO1xuXG5jb25zdCBpbml0ID0gZnVuY3Rpb24oKSB7XG5cblxuICAgICQoICcubmV3cycgKS5jbGljayggZnVuY3Rpb24oKXtcbiAgICAgICAgbGV0IHNvdXJjZSA9ICQoIHRoaXMgKS5kYXRhKCduZXdzLXNvdXJjZScpO1xuICAgICAgICBsZXQgcGFwZXIgPSAkKCB0aGlzICkuZGF0YSgncGFwZXInKTtcbiAgICAgICAgbG9hZChzb3VyY2UsIHBhcGVyKTtcbiAgICB9KTtcblxuICAgICQoJy5uZXdzX19tb3JlJykuY2xpY2soIGZ1bmN0aW9uKGUpe1xuICAgICAgICAvL2UucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgLy8kKCB0aGlzKS5jbG9zZXN0KCAnLm5ld3MnICkudHJpZ2dlcignY2xpY2snKTtcbiAgICB9ICk7XG5cbn07XG5cbmNvbnN0IGxvYWQgPSBmdW5jdGlvbihzb3VyY2UsIHBhcGVyKSB7XG4gICAgJC5nZXQoc291cmNlLCBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgIGxldCBjYWxsYmFja3MgPSB7XG4gICAgICAgICAgICAvLyduZXh0JzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAvLyAgICBsb2FkKCcvYmFzZS5jc3MnLCBwYXBlcik7XG4gICAgICAgICAgICAvL30sXG4gICAgICAgICAgICAvLydwcmV2JzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAvLyAgICBsb2FkKCcvYmFzZS5jc3MnLCBwYXBlcik7XG4gICAgICAgICAgICAvL31cbiAgICAgICAgfTtcbiAgICAgICAgJCggcGFwZXIgKS50cmlnZ2VyKCdzaG93UGFwZXInLCBbIGRhdGEuY29udGVudCwgY2FsbGJhY2tzIF0pO1xuICAgIH0sICdqc29uJyk7XG59O1xuXG5leHBvcnQgeyBpbml0IH07IiwiaW1wb3J0ICQgZnJvbSAnalF1ZXJ5JztcbmltcG9ydCB7aW5pdCBhcyBuZXdzSW5pdH0gZnJvbSAnLi4vbmV3cy9fbmV3cyc7XG5cbnZhciBpbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgbGV0IGJ1dHRvbiA9ICQoICcuc2VjdGlvbi1uZXdzX19tb3JlJyApO1xuICAgIGxldCBzb3VyY2UgPSBidXR0b24uZGF0YSgnc291cmNlJyk7XG4gICAgJCggYnV0dG9uLmNsaWNrKCBmdW5jdGlvbigpIHtcbiAgICAgICAgbGV0IGNvdW50ID0gJCgnLnNlY3Rpb24tbmV3c19faXRlbScpLmxlbmd0aDtcbiAgICAgICAgJC5wb3N0KHNvdXJjZSwgeyBmcm9tOiBjb3VudCB9LCBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAkKCcuc2VjdGlvbi1uZXdzX19jb250YWluZXInKS5hcHBlbmQoZGF0YSk7XG4gICAgICAgICAgICBpZihkYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmKCQoJy5zZWN0aW9uLW5ld3NfX2l0ZW0nKS5sZW5ndGggJSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG5ld3NJbml0KCk7XG4gICAgICAgICAgICAgICAgJCggJ2JvZHknKS50cmlnZ2VyKCdzZWN0aW9uc1Jlc2l6ZScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBidXR0b24uaGlkZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9ICkgKTtcbn07XG5cblxuXG5leHBvcnQgeyBpbml0IH07XG4iLCIvKipcbiAqIENvbXBvbmVudHMgc2NyaXB0cy5cbiAqL1xuXG4vKipcbiAqIExldCdzIGltcG9ydCBqUXVlcnkgZnJvbSBnbG9iYWwgbmFtZXNwYWNlLlxuICovXG5pbXBvcnQgJCBmcm9tICdqUXVlcnknO1xuXG5sZXQgaXNNZW51T3BlbiA9IGZhbHNlO1xubGV0IHRhcmdldHMgPSBbXTtcbmxldCBoYW1idXJnZXJIZWlnaHQgPSAwO1xubGV0IHdhc1Njcm9sbCA9IGZhbHNlO1xuXG52YXIgaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICBoYW1idXJnZXJIZWlnaHQgPSAkKCAnLmhhbWJ1cmdlci1ib3gnICkub2Zmc2V0KCkudG9wO1xuICAgIC8vLyAvZmluZFRhcmdldHNGb3JCYWNrZ3JvdW5kQ2hhbmdlKCk7XG4gICAgYXR0YWNoTGlzdG5lcnNGb3JNZW51QnV0dG9uKCk7XG4gICAgdHJpZ2dlckJhY2tncm91bmRDaGFuZ2VFdmVudCgpO1xuICAgICQoIHdpbmRvdyApLnNjcm9sbCggdHJpZ2dlckJhY2tncm91bmRDaGFuZ2VFdmVudExpbWl0ZXIgKTtcblxuICAgICQoICdib2R5JyApLm9uKCdzZWN0aW9uc1Jlc2l6ZScsIGZ1bmN0aW9uKCkge1xuICAgICAgICBmaW5kVGFyZ2V0c0ZvckJhY2tncm91bmRDaGFuZ2UoKTtcbiAgICB9KTtcblxuICAgIHNldEludGVydmFsKHRyaWdnZXJCYWNrZ3JvdW5kQ2hhbmdlRXZlbnQsIDMwMCk7XG5cbiAgICAkKCB3aW5kb3cgKS5sb2FkKGZpbmRUYXJnZXRzRm9yQmFja2dyb3VuZENoYW5nZSgpKTtcbn07XG5cblxuZnVuY3Rpb24gZmluZFRhcmdldHNGb3JCYWNrZ3JvdW5kQ2hhbmdlKCkge1xuICAgIHRhcmdldHMgPSBbXTtcbiAgICAkKCAnLnNlY3Rpb24tYmlvLCAuc2VjdGlvbi1zY2hlZHVsZSwgLnJlY29yZGluZ3MnICkuZWFjaCggZnVuY3Rpb24gKCkge1xuICAgICAgICB0YXJnZXRzLnB1c2goIHtcbiAgICAgICAgICAgIHBvaW50OiAkKCB0aGlzICkub2Zmc2V0KCkudG9wIC0gaGFtYnVyZ2VySGVpZ2h0LFxuICAgICAgICAgICAgZGFyazogdHJ1ZVxuICAgICAgICB9ICk7XG4gICAgfSApO1xuICAgICQoICcuc2VjdGlvbi1uZXdzLCAuc3BsYXNoLCAuc3BsYXNoLW5ld2NkJyApLmVhY2goIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGFyZ2V0cy5wdXNoKCB7XG4gICAgICAgICAgICBwb2ludDogJCggdGhpcyApLm9mZnNldCgpLnRvcCAtIGhhbWJ1cmdlckhlaWdodCxcbiAgICAgICAgICAgIGRhcms6IGZhbHNlXG4gICAgICAgIH0gKTtcbiAgICB9ICk7XG5cbiAgICB0YXJnZXRzLnNvcnQoIGZ1bmN0aW9uICggYSwgYiApIHtcbiAgICAgICAgcmV0dXJuIGEucG9pbnQgLSBiLnBvaW50O1xuICAgIH0gKTtcblxufVxuXG5mdW5jdGlvbiB0cmlnZ2VyQmFja2dyb3VuZENoYW5nZUV2ZW50TGltaXRlcigpIHtcbiAgICB3YXNTY3JvbGwgPSB0cnVlO1xufVxuXG5mdW5jdGlvbiB0cmlnZ2VyQmFja2dyb3VuZENoYW5nZUV2ZW50KCkge1xuICAgIGlmKHdhc1Njcm9sbCkge1xuICAgICAgICB3YXNTY3JvbGwgP
591SBmYWxzZTtcbiAgICAgICAgbGV0IHRvcCA9ICQoIHdpbmRvdyApLnNjcm9sbFRvcCgpO1xuXG4gICAgICAgIGZvciAoIHZhciB0ID0gMDsgdCA8IHRhcmdldHMubGVuZ3RoOyB0ID0gdCArIDEgKSB7XG4gICAgICAgICAgICBpZiAoIHRvcCA+PSB0YXJnZXRzWyB0IF0ucG9pbnQgJiYgKCB0ICsgMSA9PT0gdGFyZ2V0cy5sZW5ndGggfHwgdG9wIDwgdGFyZ2V0c1sgdCArIDEgXS5wb2ludCApICkge1xuICAgICAgICAgICAgICAgICQoICcubWVudScgKS50cmlnZ2VyKCAnYmFja2dyb3VkQ2hhbmdlJywgdGFyZ2V0c1sgdCBdLmRhcmsgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGF0dGFjaExpc3RuZXJzRm9yTWVudUJ1dHRvbigpIHtcbiAgICAkKCAnLm1lbnVfX2J1dHRvbiwgLm1lbnVfX2l0ZW0nICkub24oICdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgJCggJy5tZW51X19wb3B1cCcgKS50b2dnbGVDbGFzcyggJ21lbnVfX3BvcHVwLS1hY3RpdmUnICk7XG4gICAgICAgICQoICcubWVudV9fYnV0dG9uJyApLnRvZ2dsZUNsYXNzKCAnaXMtYWN0aXZlJyApO1xuICAgICAgICAkKCAnLmhhbWJ1cmdlci1sYWJlbCcgKS50b2dnbGUoKTtcbiAgICAgICAgJCggJy5oYW1idXJnZXItaW5uZXInICkudG9nZ2xlQ2xhc3MoICdoYW1idXJnZXItaW5uZXItLXdoaXRlLWNsaWNrJyApO1xuXG5cbiAgICAgICAgaXNNZW51T3BlbiA9ICFpc01lbnVPcGVuO1xuICAgIH0gKTtcblxuICAgICQoICcubWVudScgKS5vbiggJ2JhY2tncm91ZENoYW5nZScsIGZ1bmN0aW9uICggZXZlbnQsIGlzRGFyayApIHtcbiAgICAgICAgaWYgKCBpc01lbnVPcGVuID09PSBmYWxzZSApIHtcbiAgICAgICAgICAgIGlmICggaXNEYXJrICkge1xuICAgICAgICAgICAgICAgICQoICcuaGFtYnVyZ2VyLWlubmVyJyApLmFkZENsYXNzKCAnaGFtYnVyZ2VyLWlubmVyLS13aGl0ZScgKTtcbiAgICAgICAgICAgICAgICAkKCAnLmhhbWJ1cmdlci1sYWJlbCcgKS5hZGRDbGFzcyggJ2hhbWJ1cmdlci1sYWJlbC0td2hpdGUnICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICQoICcuaGFtYnVyZ2VyLWlubmVyJyApLnJlbW92ZUNsYXNzKCAnaGFtYnVyZ2VyLWlubmVyLS13aGl0ZScgKTtcbiAgICAgICAgICAgICAgICAkKCAnLmhhbWJ1cmdlci1sYWJlbCcgKS5yZW1vdmVDbGFzcyggJ2hhbWJ1cmdlci1sYWJlbC0td2hpdGUnICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9ICk7XG59XG5cblxuZXhwb3J0IHsgaW5pdCB9O1xuIiwiaW1wb3J0ICQgZnJvbSAnalF1ZXJ5JztcblxudmFyIGluaXQgPSBmdW5jdGlvbigpIHtcblxuXG4gICAgJCggJy5zZWN0aW9uLWJpb19fbW9yZS1idXR0b24nICkuY2xpY2soIGZ1bmN0aW9uKCkge1xuICAgICAgICAkKCAnLnNlY3Rpb24tYmlvX19tb3JlJyApLnRvZ2dsZUNsYXNzKCAnc2VjdGlvbi1iaW9fX21vcmUtLWhpZGRlbicgKTtcbiAgICAgICAgJCggdGhpcyApLmhpZGUoKTtcbiAgICB9ICk7XG5cblxufTtcblxuXG5cbmV4cG9ydCB7IGluaXQgfTtcbiIsImltcG9ydCAkIGZyb20gJ2pRdWVyeSc7XG5cbmNvbnN0IGZsaXBwZWRDbGFzcyA9ICdwaWN0dXJlLWZsaXBfX3NpZGUtLWZsaXBwZWQnO1xuXG52YXIgaW5pdCA9IGZ1bmN0aW9uICgpIHtcblxuICAgICQoICcucGljdHVyZS1mbGlwX19jb250YWluZXInICkub24oICdjbGljaycsIGZ1bmN0aW9uKCBlICkge1xuICAgICAgICBpZiAoICEkKCBlLnRhcmdldCApLmhhc0NsYXNzKCAnYnV0dG9uJyApICkge1xuICAgICAgICAgICAgbGV0IHRoYXQgPSAkKCB0aGlzICk7XG4gICAgICAgICAgICBpZih0aGF0Lmhhc0NsYXNzKCBmbGlwcGVkQ2xhc3MgKSkge1xuICAgICAgICAgICAgICAgIHRoYXQucmVtb3ZlQ2xhc3MoIGZsaXBwZWRDbGFzcyApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKCAnLnBpY3R1cmUtZmxpcF9fY29udGFpbmVyJykudHJpZ2dlcigndHVyblRvcCcsIFsgdGhhdCBdKTtcbiAgICAgICAgICAgICAgICB0aGF0LmFkZENsYXNzKCBmbGlwcGVkQ2xhc3MgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gKTtcblxuICAgICQoICcucGljdHVyZS1mbGlwX19jb250YWluZXInKS5vbigndHVyblRvcCcsIGZ1bmN0aW9uKCBlLCBleGNlcHQgKSB7XG4gICAgICAgIC8vaWYoJCggdGhpcyApICE9IGV4Y2VwdClcbiAgICAgICAgICAgICQoIHRoaXMgKS5yZW1vdmVDbGFzcyggZmxpcHBlZENsYXNzICk7XG4gICAgfSlcblxufTtcblxuZXhwb3J0IHsgaW5pdCB9O1xuIiwiaW1wb3J0IFN3aXBlciBmcm9tICdTd2lwZXInO1xuaW1wb3J0ICogYXMgcG9wIGZyb20gJy4uL3BvcC1pdGVtL19wb3AtaXRlbSc7XG5cblxuY29uc3QgZWxlbWVudE5hbWUgPSAnc3RhZ2UtcGhvdG9zJztcblxuY29uc3QgYWN0aXZlQ2xhc3MgPSBlbGVtZW50TmFtZSArICdfX3BvcC0tYWN0aXZlJztcbmNvbnN0IGluYWN0aXZlQ2xhc3MgPSBlbGVtZW50TmFtZSArICdfX2l0ZW0tLWluYWN0aXZlJztcbmNvbnN0IHdhc0luYWN0aXZlQ2xhc3MgPSBlbGVtZW50TmFtZSArICdfX2l0ZW0tLXdhc0luYWN0aXZlJztcbmNvbnN0IHBvcFVwU2VsZWN0b3IgPSAnLicgKyBlbGVtZW50TmFtZSArICdfX3BvcCc7XG5cbmNvbnN0IHZpZXdFbGVtZW50Q2xhc3MgPSAnc3RhZ2UtcGhvdG9zX192aWV3JztcbmxldCB2aWV3O1xubGV0IHBob3Rvc1N3aXBlcjtcbmxldCBnYWxsZXJ5VXJsO1xuXG5sZXQgb3BlbmVkID0gZmFsc2U7XG5cbmxldCBpbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgaW5pdFN3aXBlcigpO1xuICAgIHZpZXcgPSAkKCAnLicgKyB2aWV3RWxlbWVudENsYXNzICk7XG4gICAgcG9wLmluYWN0aXZlSG92ZXIoIHBvcFVwU2VsZWN0b3IsIGluYWN0aXZlQ2xhc3MsIHdhc0luYWN0aXZlQ2xhc3MgKTtcbiAgICAvL3BvcC5oaWRlUG9wdXBzKCBhY3RpdmVDbGFzcyApO1xuICAgIHBvcC5leHBhbmRhYmxlKCBwb3BVcFNlbGVjdG9yLCBhY3RpdmVDbGFzcywgd2FzSW5hY3RpdmVDbGFzcywgbnVsbCwgY2xvc2VHYWxsZXJ5LCBjbGlja0dhbGxlcnkgKTtcbiAgICAvL2F0dGFjaENsaWNrR2FsbGVyeSgpO1xuICAgIGdhbGxlcnlVcmwgPSAkKCAnLicgKyBlbGVtZW50TmFtZSApLmRhdGEoICdhbGJ1bS1zb3VyY2UnICk7XG59O1xuXG52YXIgaW5pdFN3aXBlciA9IGZ1bmN0aW9uKCkge1xuICAgIGxldCBnYWxlcmllc1N3aXBlciA9IG5ldyBTd2lwZXIoICcuc3RhZ2UtcGhvdG9zX19jb250YWluZXInLCB7XG5cbiAgICAgICAgbmV4dEJ1dHRvbjogJy5zdGFnZS1waG90b3NfX2J1dHRvbi1saXN0LS1wcmV2JyxcbiAgICAgICAgcHJldkJ1dHRvbjogJy5zdGFnZS1waG90b3NfX2J1dHRvbi1saXN0LS1uZXh0JyxcbiAgICAgICAgc2xpZGVzUGVyVmlldzogNCxcbiAgICAgICAgc3B
591hY2VCZXR3ZWVuOiAxMFxuXG4gICAgfSApO1xuXG4gICAgcGhvdG9zU3dpcGVyID0gbmV3IFN3aXBlciggJy5zdGFnZS1waG90b3NfX3ZpZXcnLCB7XG4gICAgICAgIG5leHRCdXR0b246ICcuc3RhZ2UtcGhvdG9zX19idXR0b24tdmlldy0tcHJldicsXG4gICAgICAgIHByZXZCdXR0b246ICcuc3RhZ2UtcGhvdG9zX19idXR0b24tdmlldy0tbmV4dCcsXG4gICAgICAgIHNsaWRlc1BlclZpZXc6ICdhdXRvJyxcbiAgICAgICAgc3BhY2VCZXR3ZWVuOiAxMCxcbiAgICAgICAgbGF6eUxvYWRpbmc6IHRydWUsXG4gICAgICAgIGxhenlMb2FkaW5nSW5QcmV2TmV4dEFtb3VudDogMlxuICAgICAgICAvL2NlbnRlcmVkU2xpZGVzOiB0cnVlXG4gICAgfSApO1xufTtcblxuY29uc3QgbG9hZEdhbGxlcnkgPSBmdW5jdGlvbiggZGlyICkge1xuICAgICQuZ2V0KCBnYWxsZXJ5VXJsICsgZGlyLCBmdW5jdGlvbiggZGF0YSApIHtcbiAgICAgICAgJCggJy5zdGFnZS1waG90b3NfX2J1dHRvbi12aWV3JyApLmNzcygndmlzaWJpbGl0eScsICd2aXNpYmxlJyk7XG4gICAgICAgIG9wZW5lZCA9IHRydWU7XG4gICAgICAgIGlmKHBob3Rvc1N3aXBlcikge1xuICAgICAgICAgICAgcGhvdG9zU3dpcGVyLnJlbW92ZUFsbFNsaWRlcygpO1xuICAgICAgICAgICAgcGhvdG9zU3dpcGVyLmFwcGVuZFNsaWRlKGRhdGEpO1xuICAgICAgICAgICAgdmlldy5hZGRDbGFzcyh2aWV3RWxlbWVudENsYXNzICsgJy0tb3BlbicpO1xuXG4gICAgICAgICAgICAvLyBTY3JvbGwgd2hlbiBhbmltYXRpb24gb2YgaGVpZ2h0IGlzIG92ZXJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoIHNjcm9sbFRvU2VjdGlvbkVuZCwgMTAwMCApO1xuXG4gICAgICAgICAgICAkKCB2aWV3ICkuaW1hZ2VzTG9hZGVkKCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBpZiAocGhvdG9zU3dpcGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHBob3Rvc1N3aXBlci51cGRhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH1cbiAgICB9KVxufTtcblxuY29uc3Qgc2Nyb2xsVG9TZWN0aW9uRW5kID0gZnVuY3Rpb24oKSB7XG4gICAgbGV0IHNlY3Rpb24gPSAkKCAnLicgKyBlbGVtZW50TmFtZSApO1xuICAgICQoIHdpbmRvdyApLnNjcm9sbFRvKCBzZWN0aW9uLm9mZnNldCgpLnRvcCArIHNlY3Rpb24ub3V0ZXJIZWlnaHQoKSAtICQoIHdpbmRvdyApLmlubmVySGVpZ2h0KCksIDUwMCk7XG59XG5cbmNvbnN0IGNsb3NlR2FsbGVyeSA9IGZ1bmN0aW9uICggdGhhdCApIHtcbiAgICAkKCAnLnN0YWdlLXBob3Rvc19fYnV0dG9uLXZpZXcnICkuY3NzKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpO1xuICAgIG9wZW5lZCA9IGZhbHNlO1xuICAgIHBob3Rvc1N3aXBlci5yZW1vdmVBbGxTbGlkZXMoKTtcbiAgICB2aWV3LnJlbW92ZUNsYXNzKHZpZXdFbGVtZW50Q2xhc3MgKyAnLS1vcGVuJyk7XG59O1xuXG5jb25zdCBjbGlja0dhbGxlcnkgPSBmdW5jdGlvbiggdGhhdCApIHtcbiAgICBsb2FkR2FsbGVyeSggdGhhdC5kYXRhKCdhbGJ1bScpICk7XG59O1xuXG5cbmV4cG9ydCB7IGluaXQgfTtcbiIsIi8qanNoaW50IC1XMDMxICovXG5pbXBvcnQgU3dpcGVyIGZyb20gJ1N3aXBlcic7XG5cbmxldCBpbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgaW5pdFN3aXBlcigpO1xufTtcbmNvbnN0IGdhbGxlcnlTZWxlY3RvciA9ICcucG9ydHJhaXRzX19nYWxsZXJ5JztcbnZhciBpbml0U3dpcGVyID0gZnVuY3Rpb24oKSB7XG4gICAgbGV0IHBvcnRyYWl0c1N3aXBlciA9IG5ldyBTd2lwZXIoIGdhbGxlcnlTZWxlY3Rvciwge1xuICAgICAgICBuZXh0QnV0dG9uOiAnLnBvcnRyYWl0c19fYnV0dG9uLS1wcmV2JyxcbiAgICAgICAgcHJldkJ1dHRvbjogJy5wb3J0cmFpdHNfX2J1dHRvbi0tbmV4dCcsXG4gICAgICAgIHNsaWRlc1BlclZpZXc6ICdhdXRvJyxcbiAgICAgICAgbGF6eUxvYWRpbmc6IHRydWUsXG4gICAgICAgIGxhenlMb2FkaW5nSW5QcmV2TmV4dEFtb3VudDogMlxuICAgIH0gKTtcblxuICAgICQoIGdhbGxlcnlTZWxlY3RvcikuaW1hZ2VzTG9hZGVkKCBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYocG9ydHJhaXRzU3dpcGVyKSB7XG4gICAgICAgICAgICBwb3J0cmFpdHNTd2lwZXIudXBkYXRlKCk7XG4gICAgICAgIH1cbiAgICB9ICk7XG59O1xuXG5cbmV4cG9ydCB7IGluaXQgfTtcbiIsImltcG9ydCAkIGZyb20gJ2pRdWVyeSc7XG5pbXBvcnQgU3dpcGVyIGZyb20gJ1N3aXBlcic7XG5pbXBvcnQgKiBhcyBwb3AgZnJvbSAnLi4vcG9wLWl0ZW0vX3BvcC1pdGVtJztcblxuY29uc3QgZWxlbWVudE5hbWUgPSAndmlkZW8nO1xuXG5jb25zdCBhY3RpdmVDbGFzcyA9IGVsZW1lbnROYW1lICsgJ19fcG9wLS1hY3RpdmUnO1xuY29uc3QgaW5hY3RpdmVDbGFzcyA9IGVsZW1lbnROYW1lICsgJ19faXRlbS0taW5hY3RpdmUnO1xuY29uc3Qgd2FzSW5hY3RpdmVDbGFzcyA9IGVsZW1lbnROYW1lICsgJ19faXRlbS0td2FzSW5hY3RpdmUnO1xuY29uc3QgcG9wVXBTZWxlY3RvciA9ICcuJyArIGVsZW1lbnROYW1lICsgJ19fcG9wJztcblxudmFyIG9wZW5lZCA9IGZhbHNlO1xuXG5jb25zdCBpbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgaW5pdFN3aXBlcigpO1xuICAgIHBvcC5pbmFjdGl2ZUhvdmVyKCBwb3BVcFNlbGVjdG9yLCBpbmFjdGl2ZUNsYXNzLCB3YXNJbmFjdGl2ZUNsYXNzICk7XG4gICAgLy9wb3AuaGlkZVBvcHVwcyggYWN0aXZlQ2xhc3MgKTtcbiAgICBwb3AuZXhwYW5kYWJsZSggcG9wVXBTZWxlY3RvciwgYWN0aXZlQ2xhc3MsIHdhc0luYWN0aXZlQ2xhc3MsIG51bGwsIGhpZGVWaWRlbywgc2hvd1ZpZGVvICk7XG5cbn07XG5cbnZhciBpbml0U3dpcGVyID0gZnVuY3Rpb24oKSB7XG4gICAgbGV0IHZpZGVvc1N3aXBlciA9IG5ldyBTd2lwZXIoICcudmlkZW9fX2NvbnRhaW5lcicsIHtcbiAgICAgICAgbmV4dEJ1dHRvbjogJy52aWRlb19fYnV0dG9uLS1wcmV2JyxcbiAgICAgICAgcHJldkJ1dHRvbjogJy52aWRlb19fYnV0dG9uLS1uZXh0JyxcbiAgICAgICAgc2xpZGVzUGVyVmlldzogNCxcbiAgICAgICAgc3BhY2VCZXR3ZWVuOiAxMFxuXG4gICAgfSApO1xufTtcblxuY29uc3Qgc2hvd1ZpZGVvID0gZnVuY3Rpb24oIHRoYXQgKSB7XG4gICAgaWYoICFvcGVuZWQgKSB7XG4gICAgICAgICQoICcudmlkZW9fX3ZpZXcnICkuYWRk
591Q2xhc3MoICd2aWRlb19fdmlldy0tb3BlbicgKTtcbiAgICB9XG4gICAgb3BlbmVkID0gdHJ1ZTtcbiAgICBsZXQgdmlkZW8gPSB0aGF0LmRhdGEoJ3ZpZGVvJyk7XG4gICAgdmlkZW8gKz0gJyZhdXRvcGxheT0xJztcbiAgICBsZXQgd3JhcHBlciA9ICQoJy52aWRlb19faWZyYW1lLXdyYXBwZXInKTtcbiAgICB3cmFwcGVyLmh0bWwoJzxpZnJhbWUgY2xhc3M9XCJ2aWRlb19faWZyYW1lXCIgc3JjPVwiJyArIHZpZGVvICsgJ1wiIGZyYW1lYm9yZGVyPVwiMFwiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4nKTtcbiAgICAkKCB3aW5kb3cgKS5zY3JvbGxUbyggd3JhcHBlci5vZmZzZXQoKS50b3AgKyB3cmFwcGVyLm91dGVySGVpZ2h0KCkgLSAkKCB3aW5kb3cpLmlubmVySGVpZ2h0KCkgKyAxMCwgODAwKTtcbn07XG5cbmNvbnN0IGhpZGVWaWRlbyA9IGZ1bmN0aW9uKCkge1xuICAgIG9wZW5lZCA9IGZhbHNlO1xuICAgICQoICcudmlkZW9fX3ZpZXcnICkucmVtb3ZlQ2xhc3MoICd2aWRlb19fdmlldy0tb3BlbicgKTtcbiAgICAkKCcudmlkZW9fX2lmcmFtZS13cmFwcGVyJykuaHRtbCgnJyk7XG59XG5cbmV4cG9ydCB7IGluaXQgfTtcbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBDb21tb24gaGVscGVyc1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbmltcG9ydCB7IGluaXQgYXMgaW5pdFBvbHlmaWxscyB9IGZyb20gJy4vY29tbW9ucy9fcG9seWZpbGxzJztcbmluaXRQb2x5ZmlsbHMoKTtcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBDb21wb25lbnRzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgICogYXMgcGFwZXIgIGZyb20gJy4vY29tcG9uZW50cy9wYXBlci9fcGFwZXInO1xucGFwZXIubGlzdGVuKCk7XG5cbmltcG9ydCB7IGluaXQgYXMgaW5pdFNjaGVkdWxlSXRlbSB9IGZyb20gJy4vY29tcG9uZW50cy9zY2hlZHVsZS1pdGVtL19zY2hlZHVsZS1pdGVtJztcbmluaXRTY2hlZHVsZUl0ZW0oKTtcblxuaW1wb3J0IHsgaW5pdCBhcyBpbml0U2NoZWR1bGUgfSBmcm9tICcuL2NvbXBvbmVudHMvc2VjdGlvbi1zY2hlZHVsZS9fc2VjdGlvbi1zY2hlZHVsZSc7XG5pbml0U2NoZWR1bGUoKTtcblxuaW1wb3J0IHsgaW5pdCBhcyBpbml0TmV3cyB9IGZyb20gJy4vY29tcG9uZW50cy9uZXdzL19uZXdzJztcbmluaXROZXdzKCk7XG5cbmltcG9ydCB7IGluaXQgYXMgaW5pdE5ld3NNb3JlIH0gZnJvbSAnLi9jb21wb25lbnRzL3NlY3Rpb24tbmV3cy9fc2VjdGlvbi1uZXdzJztcbmluaXROZXdzTW9yZSgpO1xuXG5pbXBvcnQgeyBpbml0IGFzIGluaXRNZW51IH0gZnJvbSAnLi9jb21wb25lbnRzL21lbnUvX21lbnUnO1xuaW5pdE1lbnUoKTtcblxuaW1wb3J0IHsgaW5pdCBhcyBpbml0TW9yZSB9IGZyb20gJy4vY29tcG9uZW50cy9zZWN0aW9uLWJpby9fc2VjdGlvbi1iaW8nO1xuaW5pdE1vcmUoKTtcblxuaW1wb3J0IHsgaW5pdCBhcyBpbml0RmxpcENhcmQgfSBmcm9tICcuL2NvbXBvbmVudHMvaW1hZ2UtZmxpcHBlZC9faW1hZ2UtZmxpcHBlZCc7XG5pbml0RmxpcENhcmQoKTtcblxuaW1wb3J0IHsgaW5pdCBhcyBpbml0U3RhZ2VQaG90b3MgfSBmcm9tICcuL2NvbXBvbmVudHMvc3RhZ2UtcGhvdG9zL19zdGFnZS1waG90b3MnO1xuaW5pdFN0YWdlUGhvdG9zKCk7XG5cbmltcG9ydCB7IGluaXQgYXMgaW5pdFBvcnRyYWl0cyB9IGZyb20gJy4vY29tcG9uZW50cy9wb3J0cmFpdHMvX3BvcnRyYWl0cyc7XG5pbml0UG9ydHJhaXRzKCk7XG5cbmltcG9ydCB7IGluaXQgYXMgaW5pdFZpZGVvIH0gZnJvbSAnLi9jb21wb25lbnRzL3ZpZGVvL192aWRlbyc7XG5pbml0VmlkZW8oKTtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIExheW91dHNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4iXSwibmFtZXMiOlsiJCIsImluaXQiLCJhY3RpdmVDbGFzcyIsImluYWN0aXZlQ2xhc3MiLCJ3YXNJbmFjdGl2ZUNsYXNzIiwicG9wVXBTZWxlY3RvciIsImluaXRTd2lwZXIiLCJlbGVtZW50TmFtZSIsIm9wZW5lZCIsImluaXRQb2x5ZmlsbHMiLCJwYXBlci5saXN0ZW4iLCJpbml0U2NoZWR1bGVJdGVtIiwiaW5pdFNjaGVkdWxlIiwiaW5pdE5ld3MiLCJpbml0TmV3c01vcmUiLCJpbml0TWVudSIsImluaXRNb3JlIiwiaW5pdEZsaXBDYXJkIiwiaW5pdFN0YWdlUGhvdG9zIiwiaW5pdFBvcnRyYWl0cyIsImluaXRWaWRlbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYUEsRUFBQSxJQUFJLFdBQVcsU0FBWCxRQUFXLEdBQVc7QUFDdEIsRUFBQSxNQUFJLFNBQUosQ0FEc0I7QUFFdEIsRUFBQSxNQUFHLGtCQUFILEVBQXdCLElBQXhCLENBQThCLFlBQVc7QUFDckMsRUFBQSxnQkFBWUEsSUFBRyxJQUFILENBQVosQ0FEcUM7QUFFckMsRUFBQSxjQUFVLElBQVYsQ0FBZ0IsS0FBaEIsRUFBdUIsVUFBVSxJQUFWLENBQWdCLEtBQWhCLEVBQXdCLE9BQXhCLENBQWlDLEtBQWpDLEVBQXdDLEtBQXhDLENBQXZCLEVBRnFDO0tBQVgsQ0FBOUIsQ0FGc0I7R0FBWDs7Ozs7O0FBWWYsRUFBQSxJQUFJLE9BQU8sU0FBUCxJQUFPLEdBQVc7Ozs7QUFJbEIsRUFBQSxNQUFLLFVBQVUsR0FBVixFQUFnQjs7OztBQUlqQixFQUFBLG9CQUppQjtLQUFyQixNQUtPOzs7O0FBSUgsRUFBQSxlQUpHO0tBTFA7R0FKTzs7RUN2QlgsSUFBSSxRQUFRQSxJQUFFLFFBQUYsQ0FBUjtBQUNKLEVBQUEsSUFBSSxZQUFZQSxJQUFFLGNBQUYsQ0FBWjtBQUNKLEVBQUEsSUFBSSxlQUFlQSxJQUFFLGlCQUFGLENBQWY7O0FBRUosRUFBQSxJQUFJLFNBQVMsS0FBVDs7QUFFSixFQUFBLElBQUksWUFBWSxDQUFaOztBQUdKLEVBQUEsSUFBTSxPQUFPLFNBQVAsSUFBTyxHQUFXO0FBQ3BCLEVBQUEsUUFBTSxTQUFTLEVBQVQ7OztBQURjLEVBQUEsYUFJaEIsR0FBWUEsSUFBRyxNQUFILEVBQVksU0FBWixFQUFaOzs7QUFKZ0IsRUFBQSxhQU9wQixDQUFVLEdBQVYsQ0FBYyxZQUFkLEVBQTRCLFFBQTVCLEVBUG9CO0FBUXBCLEVBQUEsY0FBVSxHQUFWLENBQWMsU0FBZCxFQUF5QixPQUF6QixFQVJvQ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
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.